PageSourceSearch

https://kotlinlang.org/_next/static/chunks/pages/index-109bcdce3a71e560.js

js kotlinlang.org collected 2026-09-24 07:05:02 UTC 42,839 bytes, 1 lines download raw bytes

1(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[5405],{79544:function(e,t,n){"use strict";n.d(t,{OP:function(){return a},Yp:function(){return i},lM:function(){return o}});let i="Kotlin Benchmark",a="/benchmark/",o="/benchmark/methodology/"},54032:function(e,t,n){"use strict";n.d(t,{A:function(){return u}});var i=n(67294),a=n(9008),o=n.n(a),r=n(11163),s=n(97462),l=n.n(s),c=n(35225),d=n(94184),h=n.n(d),m=n(85893);let u=({title:e,ogImageName:t,description:n,children:a,darkTheme:s,canonical:d,className:u})=>{let p=(0,r.useRouter)(),g=(0,c.$)(),_=(0,i.useMemo)(()=>`${g}/assets/images/open-graph/${t||"general.png"}`,[t,g]),b=(0,i.useMemo)(()=>t?_:`${g}/assets/images/twitter/general.png`,[t,_,g]),x=(0,i.useMemo)(()=>d||(0,c.Z)(p.pathname),[d,p.pathname]);return(0,m.jsxs)(m.Fragment,{children:[(0,m.jsxs)(o(),{children:[(0,m.jsx)("title",{children:e}),(0,m.jsx)("meta",{property:"og:title",content:e}),(0,m.jsx)("meta",{property:"og:type",content:"website"}),(0,m.jsx)("meta",{property:"og:url",content:g+p.pathname}),(0,m.jsx)("meta",{property:"og:image",content:_}),n&&(0,m.jsx)("meta",{property:"og:description",content:n}),n&&(0,m.jsx)("meta",{name:"description",content:n}),(0,m.jsx)("meta",{property:"og:site_name",content:"Kotlin"}),(0,m.jsx)("meta",{name:"twitter:card",content:"summary_large_image"}),(0,m.jsx)("meta",{name:"twitter:site",content:"@kotlin"}),(0,m.jsx)("meta",{name:"twitter:title",content:e}),n&&(0,m.jsx)("meta",{name:"twitter:description",content:n}),(0,m.jsx)("link",{rel:"canonical",href:x}),(0,m.jsx)("meta",{name:"twitter:image:src",content:b}),(0,m.jsx)("link",{rel:"preconnect",href:"https://fonts.googleapis.com"}),(0,m.jsx)("link",{href:"https://fonts.googleapis.com/css2?family=JetBrains+Mono&display=swap",rel:"stylesheet"})]}),(0,m.jsx)("div",{className:h()(l().wrapper,u||void 0),children:a})]})}},6863:function(e,t,n){"use strict";n.d(t,{M:function(){return r}}),n(67294);var i=n(87460),a=n.n(i),o=n(85893);let r=({children:e})=>(0,o.jsx)("div",{className:a().stickyHeader,children:e})},90737:function(e,t,n){"use strict";n.r(t),n.d(t,{__N_SSG:function(){return eQ},default:function(){return eY}});var i=n(67294),a=n(41664),o=n.n(a),r=n(27519),s=n(19095);n(98930);var l=n(45345),c=n(33663),d=n(88062),h=n(75629),m=n(75375),u=n(54032),p=n(8307),g=n(94184),_=n.n(g),b=n(5152),x=n.n(b),f=n(25675),w=n.n(f),v=n(44814),j=n(10722),k=n(97281),y=n.n(k),A=JSON.parse('[{"title":"Kotlin 2.4.20 Released","date":"Mon, 07 Sep 2026 11:30:57 +0000","link":"https://blog.jetbrains.com/kotlin/2026/09/kotlin-2-4-20-released/","image":"latest-news/news-0.png","description":"The Kotlin 2.4.20 release is out! Here are the main highlights: For the complete list of changes, see What’s new in Kotlin 2.4.20 or the release notes on GitHub. How to install Kotlin 2.4.20 The latest version of Kotlin is included in the latest versions of IntelliJ IDEA and Android Studio. To update to the […]"},{"title":"Kotlin Toolchain 0.12: Multiplatform Library Publishing, Wasm Apps, and More","date":"Thu, 03 Sep 2026 10:40:05 +0000","link":"https://blog.jetbrains.com/kotlin/2026/09/kotlin-toolchain-0-12-multiplatform-library-publishing-wasm-apps-and-more/","image":"latest-news/news-1.png","description":"Kotlin Toolchain 0.12.0 is out. This release brings some long-awaited features: multiplatform libraries publication, a preview of Wasm application support, Compose Hot Reload from the command line, and more.\xa0 Read on for the details, and check the release notes for the full list of changes and bug fixes. Additionally, klibs.io now uses the Kotlin Toolchain […]"},{"title":"Compose Multiplatform 1.12.0 Released","date":"Wed, 26 Aug 2026 13:28:41 +0000","link":"https://blog.jetbrains.com/kotlin/2026/08/compose-multiplatform-1-12-0/","image":"latest-news/news-2.png","description":"Compose Multiplatform 1.12.0 is out! This version brings new tooling for AI assistants, improvements to web resource management, and finer control over desktop window states. Here are the highlights of this release: For a complete overview of the changes, check out What’s new in Compose Multiplatform 1.12.0 or the release notes on GitHub. Get Started […]"},{"title":"Signatures, be true: domain errors and functional handling in Kotlin","date":"Wed, 19 Aug 2026 15:52:05 +0000","link":"https://blog.jetbrains.com/kotlin/2026/08/signatures-be-true-domain-errors-and-functional-handling-in-kotlin/","image":"latest-news/news-3.png","description":"Here’s a function that signs a document: In Kotlin, Unit means the function completes without returning a meaningful value – roughly equivalent to void in Java. Got it? Now, tell me what could go wrong. You can’t.\xa0 Yet, the code might be invalid. The signing window might have closed. The database might be down. The […]"}]'),N=n(85893);function O(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);t&&(i=i.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,i)}return n}let S=x()(()=>
1Promise.all([n.e(7058),n.e(1584)]).then(n.bind(n,41584)),{loading:()=>null,ssr:!1,loadableGenerated:{webpack:()=>[41584]}}),C=[{src:"/_next/static/media/news-0.3c57ce69.png",height:720,width:1280,blurDataURL:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAgAAAAFCAIAAAD38zoCAAAAiElEQVR42mOQl9DVkExiYChhYEhlYGhlYJiozD1FmmEKg7KMuShDblpCb1vzirbmzbERixgY+sW5uhi0lHwZGPJmzlhz5szNc+euT5ywjYGh30J2J4OsYICeeJkOQyIDQw8DQ7soQ5eB8EZbjmsMEsK2Ouz5qTbZKSk9oY5zA926VUWXBzBcBgCH0CU38z52/wAAAABJRU5ErkJggg==",blurWidth:8,blurHeight:5},{src:"/_next/static/media/news-1.7b163ed8.png",height:720,width:1280,blurDataURL:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAgAAAAFCAIAAAD38zoCAAAAhElEQVR42mPwdA0PDogO9C4L9e0L9ZsbFrhQX2WqCMNEhoK88rqa1qa6BQ3V6wO954UHzjfSnCYElNDTsDXSiDRX61YTn8LA0AtEggwTJZknMihJmmsIZSkxtAkwTJTjnKDANVGOeZIYUIeGrI+eZJW2WLUiW78sw2R5hklyDJOlGCYDAHR7IoSboQAxAAAAAElFTkSuQmCC",blurWidth:8,blurHeight:5},{src:"/_next/static/media/news-2.d7ea5f34.png",height:720,width:1280,blurDataURL:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAgAAAAFCAIAAAD38zoCAAAAiElEQVR42gF9AIL/AHWD+niF+nWD+19481x292Rw+ntj8jxL6wCDj/mbpPtmffFUcfFmc/uDZO95WdhdNd8AXnD6OV72AETuADr3UwDwRADEAABpNwCsAFls+RhS+ABO8zs/9GIJ3yUfgislAB8WWwBaa/coUfYASegHPeE/H9gwAKwWEEoVAWuODDem6V5pbwAAAABJRU5ErkJggg==",blurWidth:8,blurHeight:5},{src:"/_next/static/media/news-3.32c2e220.png",height:720,width:1280,blurDataURL:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAgAAAAFCAIAAAD38zoCAAAAdUlEQVR42mNwdvT19w2zt7ezsbGxtbX19PT08/MXEhJiyMupa2/rrq9rrq2tbWioT0tL8/X1FRcXZ4gIqS4qrM1Iz8vLLQkNDWGAA06GDC6GOAYGdR4GQwYw4OHhBVGSHKXaUnkq4lHqiuYSwhoMIMDEwMAAAAd7GdBWlzIzAAAAAElFTkSuQmCC",blurWidth:8,blurHeight:5}];function P({title:e,date:t,link:n,description:i,position:a}){let o=(0,v.Ke)();return(0,N.jsxs)("a",{href:n,className:y().item,target:"_blank",rel:"noopener noreferrer",style:{"--ktl-news-position":a+1,"--ktl-news-grid-line":Math.floor(a/2)+1},children:[(0,N.jsx)("div",{className:y().image,children:(0,N.jsx)(w(),{className:_()(y().imageSrc),src:C[a],alt:e,sizes:"(max-width: 374px) 272px, (max-width: 472px) 328px, (max-width: 616px) 424px, (max-width: 808px) 280px, (max-width: 1000px) 248px, (max-width: 1190px) 312px, 280px"})}),(0,N.jsx)("p",{className:_()(y().date,o("rs-text-3")),children:new Date(t).toLocaleDateString("en-US",{year:"numeric",month:"long",day:"numeric"})}),(0,N.jsx)("h3",{className:_()(y().title,o("rs-h4")),children:e}),(0,N.jsx)("div",{className:_()(y().text,o("rs-text-3")),children:(0,N.jsx)("p",{className:y().description,children:i})})]},n)}function B(){let e=(0,v.Ke)(),t=(0,l.$9)();return(0,N.jsxs)("section",{className:y().latestNews,children:[(0,N.jsx)("h2",{className:_()(y().h,e(t?"rs-h3":"rs-h2")),children:"Latest news"}),(0,N.jsx)(S,{className:y().animation}),(0,N.jsx)("div",{className:y().news,children:A.map((e,t)=>(0,N.jsx)(P,function(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?O(Object(n),!0).forEach(function(t){(0,p.Z)(e,t,n[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):O(Object(n)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))})}return e}({position:t},e),e.link))}),(0,N.jsx)(s.z,{className:y().blog,href:"https://blog.jetbrains.com/kotlin/",mode:"outline",icon:(0,N.jsx)(j.Z,{}),iconPosition:"right",size:"l",children:"Kotlin blog"})]})}var M=n(81456),K=n(2536),I=n.n(K),E=n(37342);function W(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);t&&(i=i.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,i)}return n}function D(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?W(Object(n),!0).forEach(function(t){(0,p.Z)(e,t,n[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):W(Object(n)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))})}return e}let T=({title:e,items:t})=>{let n=_()((0,M.WD)({paddings:16,isClickable:!0}),I().card),i=(0,v.Ke)(),a=(0,l.$9)(),o=(0,l.ik)(),r=a?t.slice(0,4):t,c=o?"rs-text-3":"rs-text-2",d=D({},E.um.filledLight);return(0,N.jsxs)("div",{className:I().kotlinUsageHighlights,children:[(0,N.jsx)("h2",{className:_()(i(a?"rs-h3":"rs-h2"),I().title),children:e}),(0,N.jsx)("div",{className:I().container,children:r.map(e=>(0,N.jsx)("a",{href:e.url,target:"_blank",rel:"noreferrer noopener",className:n,children:(0,N.jsxs)("div",{className:I().cardContent,children:[(0,N.jsx)("div",{className:I().logoWrapper,children:(0,N.jsx)("img",{src:e.logo.src,alt:e.company,className:I().logo})}),(0,N.jsx)("span",{className:_()(i(c,{hardness:"hard"}),I().text),children:e.text}),(0,N.jsx)("span",{className:I().tag,children:(0,N.jsx)(E.Vp,D(D({},d),{},{children:e.tag}))})]})},e.company))}),(0,N.jsxs)("div",{className:I().buttonWrapper,children:[(0,N.jsx)(s.z,{href:"/case-studies/",size:"l",mode:"rock",theme:"light",className:I().primaryButton,children:"See all case studies"}),(0,N.jsx)(s.z,{href:"/lp/enterprise-playbook/",size:"l",mode:"outline",theme:"light",className:I().secondaryButton,children:"Enterprise playbook"})]})]})};var L=n(55093),z=n.n(L);let H=({title:e,text:t,button:n,media:i})=>{let a=(0,v.Ke)(),o=(0,l.$9)();return(0,N.jsxs)("div",{className:z().container,children:[(0,N.jsxs)("div",{className:_()(z().item,z().content),children:[(0,N.jsx)("h2",{className:_()(a(o?"rs-h3":"rs-h2"),z().title),children:e}),(0,N.jsx)("div",{className:_()(a(o?"rs-text-3":"rs-text-2",{hardness:"hard"}),z().text),children:t}),n]}),(0,N.jsx)("div",{className:_()(z().item,z().media),children:i})]})};var U=n(17118),R=n.n(U);let G=()=>(0,N.jsx)("div",{className:R().divider});var J=n(17983),Z=n.n(J),F={src:"/_next/static/media/foundation-preview.e6a84919.png",height:320,width:434,blurDataURL:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAgAAAAGCAIAAABxZ0isAAAAoUlEQVR42gGWAGn/AIeCnikAcl48s0MmgRQBDyQNNy8US0EdZACMf8A5AJJUOJVtQsdGKH8TBCcoFVUvGVwA3t3jdFfAOgCIWDycbULEYDqtUTKTDwAnAOzt6dTR32pEvTgAllM4nGlDv3BGx29GwQDm5ufs7ena2OKRfstUFLVVJLN6TtKQX+0A6Ojo5ubn6+vp6enoxL3ck33PdU3JdErJBNFG3dr6H0kAAAAASUVORK5CYII=",blurWidth:8,blurHeight:6};let V=({title:e,description:t,button:n,companies:i})=>{let a=(0,v.Ke)();return(0,N.jsxs)("div",{className:Z().foundationPreview,children:[(0,N.jsx)(w(),{src:F,width:434,height:320,alt:"",className:Z().foundationPreviewImage}),(0,N.jsx)("h2",{className:_()(a("rs-h2"),Z().title),children:e}),(0,N.jsx)("div",{className:_()(a("rs-text-2",{hardness:"hard"}),Z().description),children:t}),(0,N.jsxs)("div",{className:Z().secondBlock,children:[(0,N.jsx)("div",{className:Z().companies,children:i.map(e=>(0,N.jsx)("img",{src:e.logo.src,alt:`${e.name} logo`,className:_()(Z().companyLogo,Z()[`${e.name.toLowerCase()}Logo`])},e.name))}),(0,N.jsx)("div",{className:Z().buttonWrap,children:n})]})]})},Q=()=>(0,N.jsx)(s.z,{href:"https://kotlinfoundation.org/",size:"l",mode:"rock",theme:"light",icon:(0,N.jsx)(j.Z,{}),iconPosition:"right",children:(0,N.jsxs)("span",{children:[(0,N.jsx)("span",{className:Z().responsiveHidden,children:"Learn\xa0"}),(0,N.jsx)("span",{className:Z().responsiveCapitalized,children:"more"})]})});var Y=n(6863),$=n(72210),q=n.n($),X=n(92790),ee=n(40927),et=n(97998),en=n(35586),ei=n.n(en);n(89342);var ea=n(38794),eo=n.n(ea);let er=({children:e,testId:t})=>(0,N.jsx)(r.f6,{theme:"dark",children:(0,N.jsxs)("section",{className:_()(eo().heroSection),"data-testid":t,children:[(0,N.jsx)("img",{className:eo().backgroundImg,src:"/_next/static/media/hero-3600.6cf6f4d9.webp",width:1786,height:1786,alt:"Hero Image"}),(0,N.jsx)("div",{className:_()("ktl-layout","ktl-layout--center"),children:(0,N.jsx)("div",{className:eo().content,children:e})})]})});var es=n(7614),el=n.n(es);let ec=()=>{let e=(0,v.Vh)("dark");return(0,N.jsx)("div",{className:el().developer,children:(0,N.jsxs)("div",{className:el().developerContent,children:[(0,N.jsx)("div",{className:_()(e("rs-text-2",{hardness:"hard"}),el().developerCaption),children:"Developed by"}),(0,N.jsxs)("a",{href:"https://www.jetbrains.com/",target:"_blank",rel:"noreferrer noopener","data-testid":"hero-jetbrains-link",children:[(0,N.jsx)("img",{src:"/_next/static/media/jetbrains-logo.ade06696.svg",alt:"JetBrains logo",className:el().developerL
1ogo})," "]})]})})};var ed=n(4730),eh=n(77821),em=n(43180),eu=n(32469),ep=n(13063),eg=n(33577),e_=n(44674),eb=n.n(e_),ex=n(96224);function ef(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);t&&(i=i.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,i)}return n}function ew(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?ef(Object(n),!0).forEach(function(t){(0,p.Z)(e,t,n[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):ef(Object(n)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))})}return e}let ev=x()(()=>Promise.all([n.e(8780),n.e(3995)]).then(n.bind(n,13995)).then(),{loading:()=>null,ssr:!1,loadableGenerated:{webpack:()=>[null]}}),ej=(0,i.forwardRef)(({children:e,targetPlatform:t},n)=>{let{0:a,1:o}=(0,i.useState)(null),{0:l,1:c}=(0,i.useState)(!1),{0:d,1:h}=(0,i.useState)(!1),m=(0,i.createRef)();(0,i.useImperativeHandle)(n,()=>({runInstance(){(0,ex.L)({eventCategory:"kotlin-playground",eventAction:"Playground Run",eventLabel:d?"changed":"unchanged"}),null==a||a.execute()},scrollResultsToView(){var e;if(null!=a&&null!==(e=a.nodes)&&void 0!==e&&e.length){let e=a.nodes[0].querySelector(".output-wrapper");e.getBoundingClientRect().bottom>window.innerHeight&&e.scrollIntoView({behavior:"smooth",block:"end",inline:"nearest"})}}}));let u=()=>{c(!0)},p=()=>{c(!1)},g=e=>{27===e.keyCode&&l&&m.current&&m.current.focus()};return(0,i.useEffect)(()=>{let e=null==a?void 0:a.codemirror;e&&(e.setOption("tabindex","-1"),e.on("focus",(e,t)=>{u()}),e.on("blur",(e,t)=>{p()}),e.on("change",(e,t)=>{h(!0)}))},[a]),(0,i.useEffect)(()=>{if("undefined"!=typeof document)return document.addEventListener("keydown",g),()=>{document.removeEventListener("keydown",g)}},[g]),(0,N.jsxs)("div",{className:eb().codeBlockContainer,tabIndex:-1,children:[(0,N.jsx)("pre",{className:eb().code,children:e}),(0,N.jsx)("div",{className:eb().buttonWrapper,children:(0,N.jsx)(r.f6,{theme:"light",children:(0,N.jsx)(s.z,{className:eb().editButton,mode:"rock",onClick:()=>{null==a||a.codemirror.focus()},ref:m,size:"l",children:"Edit code example"})})}),(0,N.jsx)("div",{children:(0,N.jsx)(ev,ew(ew({theme:"darcula",autoIndent:!1,getInstance:e=>{o(e)}},t&&{targetPlatform:t}),{},{className:eb().codeBlockWrapper,children:e}))})]})});ej.displayName="CodeBlock";var ek=n(63555),ey=n.n(ek);n(29339);var eA=n(96537);function eN(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);t&&(i=i.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,i)}return n}function eO(e,t){window.optimizely=window.optimizely||[],window.optimizely.push(function(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?eN(Object(n),!0).forEach(function(t){(0,p.Z)(e,t,n[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):eN(Object(n)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))})}return e}({type:"event",eventName:e},t&&{properties:t}))}let eS=["codeExample","children"],eC=({index:e,children:t})=>t[e],eP=({})=>{let{0:e,1:t}=(0,i.useState)(0),{0:n,1:a}=(0,i.useState)(!1);(0,v.Ke)();let o=(0,v.Vh)("dark"),c=(0,l.$9)(),d=[{children:"Simple",codeExample:'fun main() {\n    val name = "stranger"        // Declare your first variable\n    println("Hi, $name!")        // ...and use it!\n    print("Current count:")\n    for (i in 0..10) {           // Loop over a range from 0 to 10\n        print(" $i")\n    }\n}'},{children:"Asynchronous",codeExample:'import kotlinx.coroutines.*\n\nsuspend fun main() {                                // A function that can be suspended and resumed later\n    val start = System.currentTimeMillis()\n    coroutineScope {                                // Create a scope for starting coroutines\n        for (i in 1..10) {\n            launch {                                // Start 10 concurrent tasks\n                delay(3000L - i * 300)              // Pause their execution\n                log(start, "Countdown: $i")\n            }\n        }\n    }\n    // Execution continues when all coroutines in the scope have finished\n    log(start, "Liftoff!")\n}\n\nfun log(start: Long, msg: String) {\n    println("$msg " +\n            "(on ${Thread.currentThread().name}) " +\n            "after ${(System.currentTimeMillis() - start)/1000F}s")\n}'},{children:"Object-oriented",codeExample:'abstract class Person(val name: String) {\n    abstract fun greet()\n}\n\ninterface FoodConsumer {\n    fun eat()\n    fun pay(amount: Int) = println("Delicious! Here\'s $amount bucks!")\n}\n\nclass RestaurantCustomer(name: String, val dish: String) : Person(name), FoodConsumer {\n    fun order() = println("$dish, please!")\n    override fun eat() = println("*Eats $dish*")\n    override fun greet() = println("It\'s me, $name.")\n}\n\nfun main() {\n    val sam = RestaurantCustomer("Sam", "Mixed salad")\n    sam.greet() // An implementation of an abstract function\n    sam.order() // A member function\n    sam.eat()   // An implementation of an interface function\n    sam.pay(10) // A default implementation in an interface\n}'},{children:"Functional",codeExample:'fun main() {\n    // Who sent the most messages?\n    val frequentSender = messages\n        .groupBy(Message::sender)\n        .maxByOrNull { (_, messages) -> messages.size }\n        ?.key                                                 // Get their names\n    println(frequentSender) // [Ma]\n\n    // Who are the senders?\n    val senders = messages\n        .asSequence()                                         // Make operations lazy (for a long c
1all chain)\n        .filter { it.body.isNotBlank() && !it.isRead }        // Use lambdas...\n        .map(Message::sender)                                 // ...or member references\n        .distinct()\n        .sorted()\n        .toList()                                             // Convert sequence back to a list to get a result\n    println(senders) // [Adam, Ma]\n}\n\ndata class Message(                                           // Create a data class\n    val sender: String,\n    val body: String,\n    val isRead: Boolean = false,                              // Provide a default value for the argument\n)\n\nval messages = listOf(                                        // Create a list\n    Message("Ma", "Hey! Where are you?"),\n    Message("Adam", "Everything going according to plan today?"),\n    Message("Ma", "Please reply. I\'ve lost you!"),\n)'},{children:"Ideal for tests",codeExample:'import kotlin.test.*                    // The following example works for JVM only\n\nclass SampleTest {\n    @Test\n    fun `test sum`() {                  // Write test names with whitespaces in backticks\n        val a = 1\n        val b = 41\n        assertEquals(42, sum(a, b), "Wrong result for sum($a, $b)")\n    }\n\n    @Test\n    fun `test computation`() {\n        assertTrue("Computation failed") {\n            setup()                     // Use lambda returning the test subject\n            compute()\n        }\n    }\n}\n\nfun sum(a: Int, b: Int) = a + b         // Sources\nfun setup() {}\nfun compute() = true',targetPlatform:"junit"}],h=[...d,{children:"Open in Playground",codeExample:null}],m=(0,i.createRef)(),u=(0,i.useCallback)(()=>{var e,t;null==m||null===(e=m.current)||void 0===e||e.runInstance(),null==m||null===(t=m.current)||void 0===t||t.scrollResultsToView(),eO("opt_main-page_run")},[m]),p=d[e],{codeExample:g,children:b}=p,x=(0,ed.Z)(p,eS),f=(0,i.useCallback)(()=>{let e=(0,eA.generateCrosslink)(g,x);eO("opt_main-page_open_in_playground"),window.open(e,"_blank")},[e]),w=(e,n)=>{eO("opt_main-page_tab_click",{tab:n}),t(e)},j=(0,i.useCallback)(e=>{e===h.length-1?f():(t(e),a(!1))},[e]),k=(0,i.useCallback)(()=>{a(!n)},[]);return(0,N.jsx)(r.f6,{theme:"dark",children:(0,N.jsxs)("section",{className:ey().whyKotlin,"data-testid":"why-kotlin-block",children:[(0,N.jsx)("div",{className:_()("ktl-layout","ktl-layout--center"),children:(0,N.jsx)("div",{className:_()(o(c?"rs-h3":"rs-h2"),ey().sectionTitle),children:"Why Kotlin?"})}),(0,N.jsx)("div",{className:ey().whyKotlinMobileWrapper,children:(0,N.jsxs)("div",{className:_()("ktl-layout","ktl-layout--center"),children:[(0,N.jsxs)("div",{className:ey().codeExamples,children:[(0,N.jsxs)("div",{className:ey().navigationBar,children:[(0,N.jsxs)("div",{className:ey().mobileMenuButton,children:[(0,N.jsx)(ep.Z,{icon:(0,N.jsx)(eh.Z,{}),iconPosition:"right",onClick:k,children:b}),(0,N.jsx)(eg.w,{before:(0,N.jsx)(eg.X,{children:(0,N.jsx)("div",{className:o("rs-text-2",{hardness:"hard"}),children:"Code examples"})}),isOpen:n,items:h,activeIndex:e,onClose:()=>a(!1),onItemClick:(e,t)=>j(t)})]}),(0,N.jsx)("div",{className:ey().tabList,children:d.map((t,n)=>(0,N.jsx)(ep.Z,{onClick:()=>w(n,t.children),active:e===n,children:t.children},n))}),(0,N.jsxs)("div",{className:ey().controlButtons,children:[(0,N.jsx)("div",{className:ey().openInPlaygoundButton,children:(0,N.jsx)(ep.Z,{onClick:f,icon:(0,N.jsx)(em.Z,{}),children:"Open in Playground"})}),(0,N.jsx)(ep.Z,{icon:(0,N.jsx)(eu.Z,{}),onClick:u,children:"Run"})]})]}),(0,N.jsx)("div",{className:"tab-content kotlin-code-examples-section",children:(0,N.jsx)(eC,{index:e,children:d.map((e,t)=>(0,N.jsx)("div",{className:ey().tab,children:(0,N.jsx)(ej,{ref:m,targetPlatform:e.targetPlatform,children:e.codeExample})},t))})})]}),(0,N.jsx)(s.z,{mode:"outline",size:"l",className:ey().getStartedButton,href:"docs/getting-started.html",children:"Get started"})]})})]})})},eB=({})=>{let e=(0,v.Vh)("dark");return(0,N.jsxs)(er,{testId:"hero-block-main-page",children:[(0,N.jsxs)("div",{className:ei().grid,children:[(0,N.jsxs)("div",{className:ei().heading,children:[(0,N.jsx)("h1",{className:_()(e("rs-super-hero"),ei().heroText),children:"Kotlin"}),(0,N.jsx)("p",{className:_()(e("rs-subtitle-1"),ei().subtitle),children:"Concise. Multiplatform. Fun."}),(0,N.jsx)(ec,{}),(0,N.jsx)(s.z,{href:"/docs/getting-started.html",size:"l",theme:"light","data-testid":"hero-get-started-button",className:ei().heroButton,children:"Get started"})]}),(0,N.jsxs)("div",{className:ei().navItems,children:[(0,N.jsxs)(o(),{prefetch:!1,className:ei().navItem,href:"/multiplatform/",children:[(0,N.jsx)("img",{src:"/_next/static/media/multiplatform.4464a18f.svg",className:_()(ei().navIcon,ei().navIconKmp),alt:"KMP icon"}),(0,N.jsx)("p",{className:e("rs-text-2"),children:"Multiplatform"}),(0,N.jsx)(et.Z,{className:ei().navArrow})]}),(0,N.jsxs)(o(),{prefetch:!1,className:ei().navItem,href:"/backend/",children:[(0,N.jsx)("img",{src:"/_next/static/media/backend.abd17592.svg",className:ei().navIcon,alt:"Backend icon"}),(0,N.jsx)("p",{className:e("rs-text-2"),children:"Backend"}),(0,N.jsx)(et.Z,{className:ei().navArrow})]}),(0,N.jsxs)("a",{className:ei().navItem,href:"/docs/kotlin-with-ai.html",children:[(0,N.jsx)("img",{src:"/_next/static/media/ai.c49fd0c1.svg",className:ei().navIcon,alt:"AI icon"}),(0,N.jsx)("p",{className:e("rs-text-2"),children:"AI"}),(0,N.jsx)(et.Z,{className:ei().navArrow})]}),(0,N.jsxs)("a",{className:ei().navItem,href:"/docs/android-overview.html",children:[(0,N.jsx)("img",{src:"/_next/static/media/android.979c080f.svg",className:ei().navIcon,alt:"Android icon"}),(0,N.jsx)("p",{className:e("rs-text-2"),children:"Android"}),(0,N.jsx)(et.Z,{className:ei().navArrow})]}),(0,N.jsxs)("a",{className:ei().navItem,href:"/docs/kotlin-tour-welcome.html",children:[(0,N.jsx)("img",{src:"/_next/static/media/Kotlin.8c9411f1.svg",className:ei().navIcon,alt:"Kotlin icon"}),(0,N.jsx)("p",{className:e("rs-text-2"),children:"Kotlin tour"}),(0,N.jsx)(et.Z,{className:ei().navArrow})]})]})]}),(0,N.jsx)(eP,{})]})};var eM=n(16008),eK=n.n(eM),eI="/_next/static/media/wide.dfe2b7a2.jpg";let eE=()=>(0,N.jsx)("div",{className:_()("ktl-layout","ktl-layout--center",eK().wrapper),children:(0,N.jsx)("a",{href:"/lp/kotlin-for-business/",className:eK().link,
1children:(0,N.jsxs)("picture",{children:[(0,N.jsx)("source",{media:"(max-width: 616px)",srcSet:"/_next/static/media/mobile.fc4db07d.jpg 1x, /_next/static/media/[email protected] 2x"}),(0,N.jsx)("source",{media:"(min-width: 617px) and (max-width: 808px)",srcSet:"/_next/static/media/tablet.4653f31a.jpg 1x, /_next/static/media/[email protected] 2x"}),(0,N.jsx)("source",{media:"(min-width: 809px)",srcSet:`${eI} 1x, /_next/static/media/[email protected] 2x`}),(0,N.jsx)("img",{className:eK().image,src:eI,alt:"KotlinConf banner"})]})})});var eW=n(5752),eD=n.n(eW),eT="/_next/static/media/desktop_l.620e25c9.jpg";let eL=()=>(0,N.jsx)("div",{className:_()("ktl-layout","ktl-layout--center",eD().wrapper),children:(0,N.jsx)(o(),{href:"/kotlin-effect/",className:eD().link,children:(0,N.jsxs)("picture",{children:[(0,N.jsx)("source",{media:"(max-width: 472px)",srcSet:"/_next/static/media/mobile.3baa9477.jpg 1x, /_next/static/media/[email protected] 2x"}),(0,N.jsx)("source",{media:"(min-width: 473px) and (max-width: 616px)",srcSet:"/_next/static/media/mobile_l.965e4576.jpg 1x, /_next/static/media/[email protected] 2x"}),(0,N.jsx)("source",{media:"(min-width: 617px) and (max-width: 808px)",srcSet:"/_next/static/media/tablet_s.e2ccd5a4.jpg 1x, /_next/static/media/[email protected] 2x"}),(0,N.jsx)("source",{media:"(min-width: 809px) and (max-width: 1000px)",srcSet:"/_next/static/media/tablet_l.383e94d5.jpg 1x, /_next/static/media/[email protected] 2x"}),(0,N.jsx)("source",{media:"(min-width: 1001px)",srcSet:`${eT} 1x, /_next/static/media/[email protected] 2x`}),(0,N.jsx)("img",{className:eD().image,src:eT,alt:"Kotlin Effect banner"})]})})});var ez=n(98867),eH=n(79544),eU=n(90385),eR=n.n(eU);function eG(){let e=(0,v.Ke)(),t=(0,l.$9)(),n=t?"m":"l";return(0,N.jsxs)("section",{className:eR().banner,"data-testid":"kotlin-ai-banner-block",children:[(0,N.jsxs)("h2",{className:_()(e("rs-h2"),eR().title),children:["Kotlin,",(0,N.jsx)("br",{className:eR().titleBreak})," Built for the AI Era"]}),(0,N.jsxs)("p",{className:_()(e("rs-text-1",{hardness:"hard"}),eR().text),children:["Null safety and concise syntax already make Kotlin a language AI gets right.",(0,N.jsx)("br",{className:eR().sentenceBreak})," We’re making it even better with open benchmarks and agent-ready tooling."]}),(0,N.jsxs)("div",{className:eR().buttons,children:[(0,N.jsx)(s.z,{mode:"rock",size:n,href:eH.OP,icon:(0,N.jsx)(ez.Z,{size:n}),iconPosition:"right",allowMultiline:t,children:"Explore the Kotlin Benchmark"}),(0,N.jsx)(s.z,{mode:"outline",size:n,href:"/docs/kotlin-ai-apps-development-overview.html",icon:(0,N.jsx)(ez.Z,{size:n}),iconPosition:"right",allowMultiline:t,children:"Build AI apps with Kotlin"})]})]})}function eJ(){return(0,N.jsx)(r.f6,{theme:"dark",children:(0,N.jsx)(eG,{})})}let eZ=ee.Z,eF=[{company:"McDonald's",url:"https://medium.com/mcdonalds-technical-blog/mobile-multiplatform-development-at-mcdonalds-3b72c8d44ebc",text:"McDonald's leverages Kotlin Multiplatform (KMP) for their global mobile app, enabling them to build a codebase that can be shared across platforms, removing the need for codebase redundancies.",tag:"Kotlin Multiplatform",logo:{src:"/_next/static/media/mcdonalds.9891b5c5.svg",height:48,width:64,blurWidth:0,blurHeight:0}},{company:"AWS",url:"https://open.spotify.com/episode/3jtfD8a5vwutOrfHZMqAj1",text:"AWS opted for Kotlin over Java for Amazon Quantum Ledger Database (QLDB) thanks to its expressiveness and structured concurrency. They rewrote QLDB in Kotlin, enhancing the user experience, benefiting from its development workflow, and adopting it fully for server-side development.",tag:"Backend",logo:{src:"/_next/static/media/aws.e4348ad0.svg",height:44,width:76,blurWidth:0,blurHeight:0}},{company:"Philips",url:"https://www.youtube.com/watch?v=hZPL8QqiLi8&ab_channel=Touchlab",text:"Philips utilizes Kotlin Multiplatform in its HealthSuite digital platform mobile SDK. With KMP, they accelerated the implementation of new features and fostered increased collaboration between Android and iOS developers.",tag:"Kotlin Multiplatform",logo:{src:"/_next/static/media/philips.5771b25b.svg",height:24,width:121,blurWidth:0,blurHeight:0}},{company:"Adobe",url:"https://medium.com/adobetech/streamlining-server-side-app-development-with-kotlin-be8cf9d8b61a",text:"Adobe Experience Platform chose Kotlin for server-side development because of its concise syntax, async capabilities, and interoperability with Java. This shift boosted productivity and improved the developer experience, replacing Java for real-time services.",tag:"Backend",logo:{src:"/_next/static/media/adobe.78135128.svg",height:52,width:47,blurWidth:0,blurHeight:0}},{company:"Forbes",url:"https://www.forbes.com/sites/forbes-engineering/2023/11/13/forbes-mobile-app-shifts-to-kotlin-multiplatform/",text:"By sharing over 80% of logic across iOS and Android, Forbes now rolls out new features simultaneously on both platforms, keeping the flexibility to withhold or customize features based on the specific platform.",tag:"Kotlin Multiplatform",logo:{src:"/_next/static/media/forbes.7e28cc60.svg",height:28,width:110,blurWidth:0,blurHeight:0}},{company:"Atlassian",url:"https://www.youtube.com/watch?v=4GkoB4hZUnw",text:"Atlassian adopted Kotlin for the Jira Software cloud, leveraging its Java compatibility for seamless integration and minimizing migration challenges. Kotlin's ease of use improved developer productivity and boosted team satisfaction and efficie
1ncy.",tag:"Backend",logo:{src:"/_next/static/media/atlassian.a8047872.svg",height:24,width:192,blurWidth:0,blurHeight:0}}],eV=[{name:"JetBrains",logo:{src:"/_next/static/media/jetbrains-logo-dark.2f80b903.svg",height:32,width:149,blurWidth:0,blurHeight:0},link:"https://www.jetbrains.com/"},{name:"Google",logo:{src:"/_next/static/media/google.0a1b2288.svg",height:52,width:125,blurWidth:0,blurHeight:0},link:"https://about.google/"},{name:"Meta",logo:{src:"/_next/static/media/meta.306e91f2.svg",height:48,width:129,blurWidth:0,blurHeight:0},link:"https://www.meta.com/"},{name:"Gradle",logo:{src:"/_next/static/media/gradle-logo.de8a1cfc.png",height:200,width:878,blurDataURL:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAgAAAACCAYAAABllJ3tAAAASUlEQVR4nGPUW3nYnoOL2fBcevCvP8+eczMws9xm+PuHl4GBQR+I7zGabzp0l5WdeeURd+sdTGIS8v/evPrL8O8fD1DyMxCLAAArSxfa+3qmvQAAAABJRU5ErkJggg==",blurWidth:8,blurHeight:2},link:"https://gradle.org/"},{name:"Touchlab",logo:{src:"/_next/static/media/touchlab.b081c9c6.svg",height:48,width:126,blurWidth:0,blurHeight:0},link:"https://touchlab.co/"},{name:"Uber",logo:{src:"/_next/static/media/uber.aede9b73.svg",height:48,width:77,blurWidth:0,blurHeight:0},link:"https://www.uber.com/"},{name:"Kotzilla",logo:{src:"/_next/static/media/kotzilla-logo.4f40ed27.svg",height:32,width:137,blurWidth:0,blurHeight:0},link:"https://kotzilla.io/"},{name:"Block",logo:{src:"/_next/static/media/block.ae87db9b.svg",height:48,width:115,blurWidth:0,blurHeight:0},link:"https://block.xyz/"}];var eQ=!0,eY=function(){let e=(0,l.$9)();return(0,N.jsxs)(u.A,{title:"Kotlin Programming Language",ogImageName:"general.png",description:"Kotlin is a concise and multiplatform programming language by JetBrains. Enjoy coding and build backend, mobile, web, and desktop applications efficiently.",className:_()(q().mainPage,"ktl-layout-to-2"),children:[(0,N.jsxs)(r.f6,{theme:"dark",children:[(0,N.jsx)(Y.M,{children:(0,N.jsx)(c.ZP,{productWebUrl:eZ.latest.url,hasSearch:!0,searchConfig:X,darkHeader:!0})}),(0,N.jsx)(eB,{}),(0,N.jsxs)("div",{className:"ktl-layout ktl-layout--center",children:[(0,N.jsx)(eL,{}),(0,N.jsx)(eJ,{}),(0,N.jsx)(B,{})]})]}),(0,N.jsx)(r.f6,{theme:"light",children:(0,N.jsxs)("div",{className:q().evenSection,"data-testid":"highlighted-cases-section",children:[(0,N.jsxs)("div",{className:"ktl-layout ktl-layout--center",children:[(0,N.jsx)(T,{title:"Kotlin in action",items:eF}),(0,N.jsx)(eE,{}),(0,N.jsx)(H,{title:(0,N.jsx)(N.Fragment,{children:"Share code on\xa0your terms and\xa0for different platforms"}),text:(0,N.jsx)(N.Fragment,{children:"Simplify the development of cross-platform projects with Kotlin Multiplatform. It reduces time spent writing and maintaining the same code for different platforms while retaining the flexibility and benefits of native programming. Kotlin applications will work on different operating systems, such as iOS, Android, macOS, Windows, Linux, watchOS, and others."}),button:(0,N.jsx)(s.z,{href:"/multiplatform/",size:"l",mode:"rock",theme:"light",children:e?"Learn more":"Learn about Kotlin Multiplatform"}),media:(0,N.jsx)("img",{src:"/_next/static/media/multiplatform-preview.40b9466f.svg",alt:""})}),(0,N.jsx)(H,{title:"Big, friendly and helpful community",text:(0,N.jsx)(N.Fragment,{children:"Kotlin has great support and many contributors in its fast-growing global community. Enjoy the benefits of a rich ecosystem with a wide range of community libraries. Help is never far away — consult extensive community resources or ask the Kotlin team directly."}),button:(0,N.jsx)(o(),{href:"community",children:(0,N.jsx)(s.z,{size:"l",mode:"rock",theme:"light",children:"Join the community"})}),media:(0,N.jsx)("div",{className:q().videoWrapper,children:(0,N.jsx)(h.Z,{playButtonMode:3,id:"JGvk4M0Rfxo",className:q().videoPlayer})})}),(0,N.jsx)(G,{}),(0,N.jsx)(V,{title:"Kotlin Foundation",description:"Actively supports community efforts in developing the Kotlin ecosystem.",button:(0,N.jsx)(Q,{}),companies:eV})]}),(0,N.jsx)(d.P,{className:q().ctaBlock,mainTitle:(0,N.jsxs)(N.Fragment,{children:["Start using",e&&(0,N.jsx)("br",{})," Kotlin today!"]}),buttons:(0,N.jsx)(s.z,{href:"/docs/getting-started.html",size:"l",mode:"rock",theme:"light","data-testid":"cta-get-started-button",children:"Get started"})})]})}),(0,N.jsx)(r.f6,{theme:"dark",children:(0,N.jsx)("div",{"data-testid":"footer",children:(0,N.jsx)(m.Z,{})})})]})}},96224:function(e,t,n){"use strict";n.d(t,{L:function(){return o}});var i=n(8307);function a(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);t&&(i=i.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,i)}return n}function o(e){window.dataLayer=window.dataLayer||[],window.dataLayer.push(function(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};
1t%2?a(Object(n),!0).forEach(function(t){(0,i.Z)(e,t,n[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):a(Object(n)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))})}return e}({event:"GAEvent"},e))}},35225:function(e,t,n){"use strict";n.d(t,{$:function(){return a},Z:function(){return o}});var i=n(34155);function a(){return i.env.NEXT_PUBLIC_SITE_URL||"https://kotlinlang.org"}function o(e){let t=a(),n=e.endsWith("/")?e:`${e}/`;return`${t}${n}`}},48312:function(e,t,n){(window.__NEXT_P=window.__NEXT_P||[]).push(["/",function(){return n(90737)}])},29339:function(){},17118:function(e){e.exports={divider:"divider-line_divider__ke_OJ"}},17983:function(e){e.exports={foundationPreview:"foundation-preview_foundationPreview__7TrlB",foundationPreviewImage:"foundation-preview_foundationPreviewImage__Mn1TX",title:"foundation-preview_title__4dAIQ",description:"foundation-preview_description__bFnDH",secondBlock:"foundation-preview_secondBlock__npr_1",companies:"foundation-preview_companies__AnbeL",buttonWrap:"foundation-preview_buttonWrap__r7QM3",companyLogo:"foundation-preview_companyLogo__miayx",responsiveHidden:"foundation-preview_responsiveHidden__7GjSl",responsiveCapitalized:"foundation-preview_responsiveCapitalized__80rVj",gradleLogo:"foundation-preview_gradleLogo__Z8uae"}},7614:function(e){e.exports={developer:"developer_developer__fuqLM",developerContent:"developer_developerContent__xjQbb",developerLogo:"developer_developerLogo__H1UYd",developerCaption:"developer_developerCaption__Tyw4Y"}},38794:function(e){e.exports={heroSection:"layout_heroSection__MIxi2",content:"layout_content__IoFKf",backgroundImg:"layout_backgroundImg__uR7dp"}},35586:function(e){e.exports={heroText:"hero-block_heroText__biMBM",subtitle:"hero-block_subtitle__ybYeC",heroButton:"hero-block_heroButton__aDJzB",heroPlatforms:"hero-block_heroPlatforms__W5Pfk",kotlinTour:"hero-block_kotlinTour__9nTTm",kotlinTourTitle:"hero-block_kotlinTourTitle__y2dG_",navItems:"hero-block_navItems__7Gb_y",navItem:"hero-block_navItem__J3zlf",navIcon:"hero-block_navIcon__VPKf8",navIconKmp:"hero-block_navIconKmp___bGLZ",navArrow:"hero-block_navArrow__FgsAd",grid:"hero-block_grid__lU2Ef"}},55093:function(e){e.exports={container:"info-block_container__1_jl6",item:"info-block_item__lGaST",content:"info-block_content__4THgE",media:"info-block_media__7luO_",title:"info-block_title__HaYDK",text:"info-block_text__AszQr"}},90385:function(e){e.exports={banner:"kotlin-ai-banner_banner__MJiDm",title:"kotlin-ai-banner_title__utFVY",text:"kotlin-ai-banner_text__s2Px8",sentenceBreak:"kotlin-ai-banner_sentenceBreak__WfUAj",titleBreak:"kotlin-ai-banner_titleBreak__CtqzO",buttons:"kotlin-ai-banner_buttons__LyZcJ"}},5752:function(e){e.exports={wrapper:"kotlin-effect-banner_wrapper__HgxrJ",link:"kotlin-effect-banner_link__74FMS",image:"kotlin-effect-banner_image__yWUmG"}},2536:function(e){e.exports={kotlinUsageHighlights:"kotlin-usage-highlights_kotlinUsageHighlights__QSJy7",container:"kotlin-usage-highlights_container__B55Mi",title:"kotlin-usage-highlights_title__LNYUd",card:"kotlin-usage-highlights_card__PsU0z",cardContent:"kotlin-usage-highlights_cardContent__54kf1",logoWrapper:"kotlin-usage-highlights_logoWrapper___n53u",logo:"kotlin-usage-highlights_logo__rton8",text:"kotlin-usage-highlights_text__GGMbl",tag:"kotlin-usage-highlights_tag__swMJw",buttonWrapper:"kotlin-usage-highlights_buttonWrapper__VsHk7",primaryButton:"kotlin-usage-highlights_primaryButton__A6U1y",secondaryButton:"kotlin-usage-highlights_secondaryButton__WngCI"}},97281:function(e){e.exports={news:"latest-news_news__RGdws",item:"latest-news_item__3ilvX",image:"latest-news_image__jLyHP",title:"latest-news_title__pylH_",text:"latest-news_text__MK5XJ",date:"latest-news_date__ST8lF",imageSrc:"latest-news_imageSrc___YbmI",latestNews:"latest-news_latestNews__YIp7L",h:"latest-news_h__Q6ZWC",blog:"latest-news_blog__XuZEc",description:"latest-news_description__JdSQE"}},16008:function(e){e.exports={wrapper:"promo-banner_wrapper__bo5eI",link:"promo-banner_link__06pNE",image:"promo-banner_image__BvjYN"}},63555:function(e){e.exports={"kotlin-code-examples-section":"why-kotlin_kotlin-code-examples-section__JVYs4",CodeMirror:"why-kotlin_CodeMirror__mi2ab","CodeMirror-code":"why-kotlin_CodeMirror-code__CzD1M","CodeMirror-line":"why-kotlin_CodeMirror-line__NiCEV","CodeMirror-scroll":"why-kotlin_CodeMirror-scroll__EXmU2","CodeMirror-hint":"why-kotlin_CodeMirror-hint__buwdB","CodeMirror-lines":"why-kotlin_CodeMirror-lines__0eFjt","CodeMirror-line-like":"why-kotlin_CodeMirror-line-like__V78mr","CodeMirror-gutters":"why-kotlin_CodeMirror-gutters__vkSNF","executable-fragment-wrapper":"why-kotlin_executable-fragment-wrapper___p77W","executable-fragment":"why-kotlin_executable-fragment__pOYxK",darcula:"why-kotlin_darcula__UPfMn",sample:"why-kotlin_sample__Ikq66","cm-s-darcula":"why-kotlin_cm-s-darcula__qpqZe","output-wrapper":"why-kotlin_output-wrapper__4aKQt","code-area":"why-kotlin_code-area__N3aNf","code-output":"why-kotlin_code-output__Qh0Qj","console-close":"why-kotlin_console-close__LIAxL","compiler-info":"why-kotlin_compiler-info__oOh2K","js-code-output-executor":"why-kotlin_js-code-output-executor__xZZvh","run-button":"why-kotlin_run-button__qFiPS",whyKotlin:"why-kotlin_whyKotlin__bkFU_",whyKotlinMobileWrapper:"why-kotlin_whyKotlinMobileWrapper__VqydL",sectionTitle:"why-kotlin_sectionTitle__N_wt2",getStartedButton:"why-kotlin_getStartedButton__3KRyj",navigationBar:"why-kotlin_navigationBar__pFSuQ",tabList:"why-kotlin_tabList__jiaTT",codeExamples:"why-kotlin_codeExamples__R3vHx",controlButtons:"why-kotlin_controlButtons__Iu3rI",openInPlaygoundButton:"why-kotlin_openInPlaygoundButton__dclFO",mobileMenuButton:"why-kotlin_mobileMenuButton__8sNkM"}},44674:function(e){e.exports={code:"code-block_code__4nlla",codeBlockContainer:"code-block_codeBlockContainer__QP9mu",buttonWrapper:"code-block_buttonWrapper__4oKUk",codeBlockWrapper:"code-block_codeBlockWrapper__yFCga"}},97462:function(e){e.exports={layout:"layout_layout__LgRTl",darkTheme:"layout_darkTheme__xcaFu",wrapper:"layout_wrapper__8bogK"}},87460:function(e){e.exports={stickyHeader:"sticky-header_stickyHeader__8qmss"}},72210:function(e){e.exports={mainPage:"index_mainPage__7b182",evenSection:"index_evenSection__xNO9T",videoPlayer:"index_videoPlayer__DZXpM",videoWrapper:"index_videoWrapper__pTclA",ctaBlock:"index_ctaBlock__uYv5X"}},40927:function(e,t){"use strict";t.Z={url:"https://github.com/JetBrains/kotlin/releases",latest:{version:"2.4.20",url:"https://github.com/JetBrains/kotlin/releases/tag/v2.4.20"}}},92790:function(e){"use strict";e.exports=JSON.parse('{"searchAlgoliaId":"7961PKYRXV","searchAlgoliaApiKey":"1bfad5fdbae302b33d844ed1b43ec4d5","searchAlgoliaIndexName":"prod_KOTL
1INLANG_WEBHELP"}')}},function(e){e.O(0,[55,1664,5675,7420,1456,8768,256,2888,9774,179],function(){return e(e.s=48312)}),_N_E=e.O()}]);

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.