{"version":3,"file":"static/js/main.b5e6db22.js","mappings":"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AAA,GAAAC,WAAAA,GACL,CAAKH,GAAI,MAAJC,KAAAA,EAAAC,KAAAA,EAAAC,WAAAA,GACL,CAAKH,GAAI,MAAJC,KAAAA,EAAAC,KAAAA,GAAAC,WAAAA,GACL,CAAKH,GAAI,MAAJC,KAAAA,EAAAC,KAAAA,GAAAC,WAAAA,GACL,CAAKH,GAAI,MAAJC,KAAAA,GAAAC,KAAAA,GAAAC,WAAAA,GACL,CAAKH,GAAI,MAAJC,KAAAA,GAAAC,KAAAA,GAAAC,WAAAA,GACL,CAAKH,GAAI,KAAJC,KAAAA,GAAAC,KAAAA,GAAAC,WAAAA,GACL,CAAKH,GAAI,KAAJC,KAAAA,GAAAC,KAAAA,GAAAC,WAAAA,GACL,CAAKH,GAAI,KAAJC,KAAAA,GAAAC,KAAAA,GAAAC,WAAAA,GACL,CAAKH,GAAI,MAAJC,KAAAA,GAAAC,KAAAA,GAAAC,WAAAA,GACL,CAAKH,GAAI,MAAJC,KAAAA,GAAAC,KAAAA,GAAAC,WAAAA,GACL,CAAKH,GAAI,MAAJC,KAAAA,GAAAC,KAAAA,GAAAC,WAAAA,GACL,CAAKH,GAAI,MAAJC,KAAAA,GAAAC,KAAAA,GAAAC,WAAAA,GACL,CAAKH,GAAI,MAAJC,KAAAA,GAAAC,KAAAA,GAAAC,WAAAA,GACL,CAAKH,GAAI,MAAJC,KAAAA,GAAAC,KAAAA,GAAAC,WAAAA,GACL,CAAKH,GAAI,MAAJC,KAAAA,GAAAC,KAAAA,GAAAC,WAAAA,GACL,CAAKH,GAAI,MAAJC,KAAAA,GAAAC,KAAAA,GAAAC,WAAAA,GACL,CAAKH,GAAI,KAAJC,KAAAA,GAAAC,KAAAA,GAAAC,WAAAA,GACL,CAAKH,GAAI,KAAJC,KAAAA,GAAAC,KAAAA,GAAAC,WAAAA,GACL,CAAKH,GAAI,KAAJC,KAAAA,GAAAC,KAAAA,GAAAC,WAAAA,GACL,CAAKH,GAAI,KAAJC,KAAAA,GAAAC,KAAAA,GAAAC,WAAAA,GACL,CAAKH,GAAI,KAAJC,KAAAA,GAAAC,KAAAA,GAAAC,WAAAA,GACL,CAAKH,GAAI,KAAJC,KAAAA,GAAAC,KAAAA,GAAAC,WAAAA,GACL,CAAKH,GAAI,KAAJC,KAAAA,GAAAC,KAAAA,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AAQ1+D,UAAUk/D,WAAa,SAAUj+C,EAAQ/I,EAAQ1Z,GACvE,kCAKAu/D,EAAKC,SAASU,QAAQ1+D,UAAUqX,OAAS,SAAU4J,EAAQ/I,EAAQ1Z,EAAQmgE,GAG3E,MAAI,QAAJ,EAAI,EAAJ,GAAI,EAAJ,GAAI,EAAJ,GAiBA,GAfA,yBACA,eAGA,yBACA,iBAGA,uDACA,iBAEA,YACA,YAGA,SAFA31C,EAAAA,KAAAA,OAAAA,SAGA,mCAKA,IAFAA,EAAAA,KAAAA,OAAAA,QAEA,yBACA,UACA,WACA,8CACA,MACA,WACA,6FACA,WACA,2DACA,MACA,WACA,uCACA,MACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,eACA,MACA,WACA,mBACA,MACA,QACA,cACA,iEAIAA,EAAAA,KAAAA,OAAAA,QAGA,oBACA,4DAGA,6BACAA,EAAAA,KAAAA,OAAAA,QAEA,GACA,iBACA,UACA,WACA,8CACA,MACA,WACA,6FACA,WACA,2DACA,MACA,WACA,uCACA,MACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,eACA,MACA,WACA,mBACA,MACA,QACA,cACA,wEAIAA,EAAAA,KAAAA,OAAAA,QAoCA,OAjCA,oCACA,sCAEA,gBACA,qDAGA,iBACA,cAEA,gBAGA,4BACA,+BACA,mCAEA,kBACA,kBACA,6BACA,6BACA,6BAEA,2BACA,2BACA,gCAGA,4BACA,4BACA,+BAGA,gBACA,OACA,2BACA,MACA,OACA,2BACA,MACA,OACA,2BACA,MACA,OACA,2BACA,MACA,OACA,2BACA,MACA,OACA,2BACA,MACA,QACA,2BAOA,IAHA,oCACA,6CAEA,IAAmBvqB,EAAAA,KAAAA,QAAkBA,GAAAA,EACrC0gE,EAAAA,KAAAA,UAAAA,GAAAA,YACA,gEACA,iEACA,0DACA,0DASA,IANA,0BACA,0BACA,8FAEAC,GAAAA,IAEA,CAIA,IAHAC,EAAAA,GAAAA,EACAp5D,EAAAA,GAAAA,EAEA,IAAuBxH,EAAAA,GAAQA,GAAAA,EAC/B6gE,EAAAA,GAAAA,GAAAA,KAAAA,UAAAA,EAGA,6BAGA,IAFAt2C,EAAAA,KAAAA,WAAAA,EAAAA,EAAAA,GAEA,iDACA,eACAA,EAAAA,KAAAA,WAAAA,EAAAA,EAAAA,GAGA,MAGA,QAA4Bu2C,EAAAA,KAAAA,kBAC5B,qBACAv2C,EAAAA,KAAAA,WAAAA,EAAAA,EAAAA,GACA,eAEA,OAL2Du2C,GAAAA,GAmB3D,GATA,QACA,sBACAv2C,EAAAA,MAAAA,KAAAA,OACA,oBAEAA,EAAAA,KAAAA,OAAAA,WAIA,4CACAA,GAAAA,EAAAA,SAAAA,QAAAA,oBACA,MAIA,mBACA,kBACAA,EAAAA,KAAAA,OAAAA,eAEKA,QAAAA,GAAAA,KAAAA,KAAAA,KAAAA,MAAAA,KAAAA,KAAAA,KAAAA,MAAAA,IAAAA,GAEL,wBAKA+0C,EAAKC,SAASU,QAAQ1+D,UAAUw/D,WAAa,SAAUC,EAAMJ,EAAMp5D,GACnE,uBACA,yBACK,gBACL,uBAEA,GAMA83D,EAAKC,SAASU,QAAQ1+D,UAAU0/D,QAAU,SAAUC,GACpD,6BAKA5B,EAAKC,SAASU,QAAQ1+D,UAAU4/D,QAAU,SAAUD,GACpD,6BAKA5B,EAAKC,SAASU,QAAQ1+D,UAAU6/D,QAAU,SAAUF,GACpD,8BAKA5B,EAAKC,SAASU,QAAQ1+D,UAAU8/D,QAAU,SAAUH,GACpD,wEAKA5B,EAAKC,SAASU,QAAQ1+D,UAAU+/D,QAAU,SAAUJ,GACpD,6EAKA5B,EAAKC,SAASU,QAAQ1+D,UAAUggE,QAAU,SAAUL,GACpD,6EAKA5B,EAAKC,SAASU,QAAQ1+D,UAAUigE,QAAU,SAAUN,GACpD,qDAKA5B,EAAKC,SAASU,QAAQ1+D,UAAUkgE,UAAY,SAAUT,EAAMJ,EAAMp5D,GAGlE,oBAMA,IAJAw5D,EAAAA,GAAAA,KAAAA,SAAAA,GACAA,EAAAA,GAAAA,KAAAA,SAAAA,GACAA,EAAAA,GAAAA,KAAAA,SAAAA,GAEA,IAAkBU,EAAAA,KAAAA,QAAqBA,GAAAA,EAIvC,IAHAC,EAAAA,KAAAA,KAAAA,GACAC,EAAAA,KAAAA,MAAAA,GACAC,EAAAA,KAAAA,MAAAA,GACA,IAAmB7hE,EAAAA,KAAAA,OAAAA,GAAuBA,GAAAA,EAAA,CAC1C,QAAuBkY,EAAAA,KAAAA,YAAAA,OAA6BA,GAAAA,EACpD,sBAKA,IAFA3V,EAAAA,KAAAA,gBAAAA,EAAAA,EAAAA,KAEA,MACA,SAMA,IAHAy+D,EAAAA,GAAAA,KAAAA,YAAAA,GAAAA,EAAAA,GAAAA,KAAAA,KAAAA,EAAAA,EAAAA,EAAAA,GACA,0BAEA,IAAuB/oD,EAAAA,GAAQA,GAAAA,EAAA,CAG/B,IAFA1V,EAAAA,KAAAA,gBAAAA,EAAAA,EAAAA,KAEA,MACA,SAKA,GAFA0V,GAAAA,GAAAA,EAEA,YACA,YACA,WAGA,2EAMA,UAKAqnD,EAAKC,SAASU,QAAQ1+D,UAAUugE,aAAe,SAAUd,EAAMJ,EAAMp5D,GAGrE,YASA,IAPA,iBACA,mBACAw5D,EAAAA,GAAAA,GAAAA,KAAAA,MAAAA,UAAAA,GAEAA,EAAAA,GAAAA,KAAAA,WAGA,IAAehhE,EAAAA,KAAAA,OAAAA,GAAoBA,GAAAA,EAAA,CAEnC,IADAuC,EAAAA,KAAAA,gBAAAA,KAAAA,MAAAA,GAAAA,EAAAA,KACA,MACA,SAMA,IAFAw/D,GADAn9D,EAAAA,KAAAA,KAAAA,EAAAA,EAAAA,EAAAA,KACAm9D,IAEA,kFACA,SAGAf,EAAAA,IAAAA,EAGA,UAoCA1B,EAAKC,SAASU,QAAQ1+D,UAAUygE,gBAAkB,SAAUC,EAAOrB,EAAMp5D,GAGzE,QAmBA,GAhBA,QACAo5D,EAAAA,KAAAA,EAEA,OADA78B,EAAAA,KAAAA,OAAAA,UAEA,+BACA,kBACA,qBAGA68B,EAAAA,IAAAA,GAEAp5D,EAAAA,IAAAA,EAKA,MAFAuQ,EAAAA,EAAAA,EAAAA,IAAAA,EAAAA,KAEA,yBACA,wBAEA,OADA,mBACA,kBAGA6oD,EAAAA,IAxBAsB,OAwBAtB,GAAAA,EAAAA,GACAA,EAAAA,KAAAA,EAGA,OAFA78B,EAAAA,KAAAA,OAAAA,UAGA,+BACA,kBACA,qBAIA68B,EAAAA,IAAAA,EACA7oD,EAAAA,EAAAA,KAAAA,IAAAA,IAAAA,EAAAA,IAAAA,EAAAA,KACAvQ,EAAAA,IAAAA,EAKA,GAFAA,EAAAA,IAAAA,GAAAA,GAAAA,GAEA,OACA,6EAGA,8BACA,mBACA,oBAGAo5D,EAAAA,IAnDAsB,OAmDAtB,GAAAA,EAAAA,GACA,QAKAtB,EAAKC,SAASU,QAAQ1+D,UAAU4gE,KAAO,SAAUC,EAAMx9D,EAAGg8D,EAAMp5D,GAGhE,QAKA,SACA,SAGA,UACA,gBACA,MAEA,MAMA,GAFAA,EAAAA,IAAAA,EAEA,SACA,8CAEA,OADA,oBACA,sBAGA3F,EAAAA,EAAAA,IAAAA,EAAAA,GACA++D,EAAAA,IAvBAsB,OAuBAtB,GAAAA,EAAAA,OACK,CAcL,GAbAA,EAAAA,KAAAA,EAGA,OAFA78B,EAAAA,KAAAA,OAAAA,UAGA,+BACA,kBACA,qBAIA68B,EAAAA,IAAAA,EACAp5D,EAAAA,IAAAA,EAEA,QACA,wBAEA,OADA,oBACA,sBAGAo5D,EAAAA,KAAAA,EAGA,OAFA78B,EAAAA,KAAAA,OAAAA,UAGA,+BACA,kBACA,qBAIA68B,EAAAA,IAAAA,EACAp5D,EAAAA,IAAAA,EAGA,UACA,4CAGA,yBAEA,OADA,oBACA,sBAGA3F,EAAAA,EAAAA,IAAAA,EAAAA,GACA++D,EAAAA,IApEAsB,OAoEAtB,GAAAA,EAAAA,GAOA,OAJA,EAzEAyB,GAyEA,MACAxgE,GAAAA,IAzEAygE,GAyEAzgE,IAGA,GAKAy9D,EAAKC,SAASU,QAAQ1+D,UAAUghE,aAAe,SAAUrB,GAGzD,mBACA,+CACK,YACL,qBAEA,2BAMA5B,EAAKC,SAASU,QAAQ1+D,UAAUihE,cAAgB,SAAUtB,GAG1D,gCACA,mDAEA,sBAMA5B,EAAKC,SAASU,QAAQ1+D,UAAUkhE,aAAe,SAAUvB,GAGzD,mBACA,iDAEA,sBAMA5B,EAAKC,SAASU,QAAQ1+D,UAAUmhE,YAAc,WAC9C,yDAKApD,EAAKC,SAASU,QAAQ1+D,UAAUohE,aAAe,SAAUP,GACzD,2CACA,0DAEA,aAEA,uBACA,aACA,eAOA9C,EAAKC,SAASU,QAAQ1+D,UAAUqhE,UAAY,SAAUR,GACtD,oCAEA,2CACA,sBACA,sBACA,sBAEA,aAEA,uBACA,aACA,eAOA9C,EAAKC,SAASU,QAAQ1+D,UAAUshE,WAAa,SAAUr7D,EAAOuL,GAC9D,oCAKAusD,EAAKC,SAASU,QAAQ1+D,UAAUuhE,WAAa,SAAUt7D,GACvD,yCAKA83D,EAAKC,SAASU,QAAQ1+D,UAAUwhE,UAAY,SAAUv7D,EAAOuL,GAC7D,8BAKAusD,EAAKC,SAASU,QAAQ1+D,UAAUyhE,UAAY,SAAUx7D,GACtD,mCAKA83D,EAAKC,SAASU,QAAQ1+D,UAAU0hE,YAAc,SAAUz7D,EAAOuL,EAAKmuD,GACpE,mCAKA5B,EAAKC,SAASU,QAAQ1+D,UAAU2hE,YAAc,SAAU17D,EAAO05D,GAC/D,wCAKA5B,EAAKC,SAASU,QAAQ1+D,UAAU4hE,QAAU,WAC1C,QAAI,EAAJ,oBAGA,IAFA7tC,GAAAA,EAEA,KACA,mBACAA,GAAAA,EAGA,UAKAgqC,EAAKC,SAASU,QAAQ1+D,UAAU6hE,YAAc,WAC9C,IAAI,EAAJ,KAAI,EAAJ,EAKA,IAHArjE,EAAAA,KAAAA,OAAAA,QACAu1B,GAAAA,EAEA,KACA+tC,GAAAA,KAAAA,OAAAA,OACA/tC,GAAAA,EAGA,UAKAgqC,EAAKC,SAASU,QAAQ1+D,UAAU+hE,WAAa,WAG7C,OAFA,oBAGA,6EAGA,4BAQA,qBADwB3jE,GACxB,YACAA,EAAAA,QAAAA,EAAAA,SAAAA,qGCrxBA,IAAI2/D,EAAOA,GAAQ,GACnBA,EAAKC,SAAWD,EAAKC,UAAY,GACjCD,EAAKC,SAASC,cAAgBF,EAAKC,SAASC,eAAqDloD,EAAQ,iEACzGgoD,EAAKC,SAASE,WAAaH,EAAKC,SAASE,YAAkDnoD,EAAQ,8DAInGgoD,EAAKC,SAASQ,YAAcT,EAAKC,SAASQ,aAAe,WACzD,mBACA,YACA,YACA,eACA,kBAOAT,EAAKC,SAASQ,YAAYx+D,UAAUu3B,KAAO,SAAUnc,GAGrD,IAAI,QAAJ,IAgBA,IAdA5c,EAAAA,EAAAA,QACAu1B,GAAAA,EAEA,wBACAA,GAAAA,EAEA,oBACAA,GAAAA,EAEA,oBACAA,GAAAA,EAEA,sBACAA,GAAAA,EACA,IAAet1B,GAAAA,KAAAA,QAAmBA,GAAAA,EAAA,CAClC,OACA,6CAMA,GAHAsgB,EAAAA,EAAAA,QACAgV,GAAAA,IAEA,EACA,qDAGAsrC,EAAAA,EAAAA,OACAtrC,GAAAA,EAEA,qBACA,iDAGA,8BACA,8BACA,0CACAA,GAAAA,EAGA,SACA,yDAGA,UAOA,qBADwB31B,GACxB,YACAA,EAAAA,QAAAA,EAAAA,SAAAA,0GC3EA,IAAI2/D,EAAOA,GAAQ,GACnBA,EAAKC,SAAWD,EAAKC,UAAY,GACjCD,EAAKC,SAASE,WAAaH,EAAKC,SAASE,YAAkDnoD,EAAQ,8DACnGgoD,EAAKC,SAASS,MAAQV,EAAKC,SAASS,OAA6C1oD,EAAQ,wDAIzFgoD,EAAKC,SAASK,aAAeN,EAAKC,SAASK,cAAgB,WAC3D,4CACA,WACA,gDACA,0CAEA,gBACA,gBACA,gBACA,gBACA,gBACA,gBACA,gBACA,gBACA,aACA,aACA,aACA,cAOAN,EAAKC,SAASK,aAAaU,IAAM,WAKjChB,EAAKC,SAASK,aAAar+D,UAAUu3B,KAAO,SAA5CwmC,EAAAA,GAGA,IAAI,YAAJ,IAKA,IAHAv/D,EAAAA,EAAAA,QACAu1B,GAAAA,EAEA,MAIA,GAFAA,GAAAA,GACApb,EAAAA,IAFA0mD,EAAAA,EAAAA,SAGA,EACA,+CAIA,IADAtgD,EAAAA,GAAAA,GACA,EACA,2DAMA,IAHA,aACA,gBAEA,IAAmBtgB,EAAAA,GAAQA,GAAAA,EAC3B,yBACAs1B,GAAAA,EAGA,QAAmBt1B,EAAAA,GAAQA,GAAAA,EAC3B,QAAuBiY,EAAAA,KAAAA,EAAAA,GAAAA,GAAAA,GAAqBA,GAAAA,EAAA,CAC5C,OACA,gEAGA,4BACAqd,GAAAA,GAKA,SACA,iEAGA,QAAet1B,EAAAA,EAAOA,GAAAA,EACtB,QAAmBiY,EAAAA,EAAOA,GAAAA,EAC1B,mBACA,uDAKA,UAYAqnD,EAAKC,SAASK,aAAar+D,UAAUgiE,eAAiB,SAAtDjE,EAAAA,EAAAA,GAGA,cAIA,IAFApnD,EAAAA,EAEA,IAAelY,EAAAA,EAAOA,GAAAA,EACtB,QAAmBiY,EAAAA,EAAAA,GAAUA,GAAAA,EAC7B,QAAuBrT,EALvBg8D,KAKuBh8D,EAAAA,EAAuBA,GAAAA,EAC9C4+D,EAAAA,GAAAA,EAAAA,GAAAA,GAAAA,EAAAA,GAAAA,EACAtrD,GAAAA,EAKA,QAAeA,EAAAA,IAASlY,GAAAA,EAAAA,GAAAA,EACxBwjE,EAAAA,GAAAA,EAAAA,EAAAA,SAAAA,aAAAA,IAMA,IAHAC,EAAAA,EACAvrD,EAAAA,EAEA,IAAelY,EAAAA,GAAQA,GAAAA,EACvB,QAAmBiY,EAAAA,EAAAA,GAAUA,GAAAA,EAAA,CAC7B,QAAuBrT,EArBvBg8D,KAqBuBh8D,EAAAA,EAAuBA,GAAAA,EAC9C4+D,EAAAA,IAAAA,EAAAA,GAAAA,EAAAA,GAAAA,GAAAA,EAAAA,GAAAA,EACAtrD,GAAAA,EAGA,WACA,SACA,kDAGAA,EAAAA,EACAurD,GAAAA,KAUA,qBADwB9jE,GACxB,YACAA,EAAAA,QAAAA,EAAAA,SAAAA,kGClLA,IAAI2/D,EAAOA,GAAQ,GACnBA,EAAKC,SAAWD,EAAKC,UAAY,GACjCD,EAAKC,SAASC,cAAgBF,EAAKC,SAASC,eAAqDloD,EAAQ,iEACzGgoD,EAAKC,SAASE,WAAaH,EAAKC,SAASE,YAAkDnoD,EAAQ,8DACnGgoD,EAAKC,SAASU,QAAUX,EAAKC,SAASU,SAA+C3oD,EAAQ,0DAC7FgoD,EAAKC,SAASQ,YAAcT,EAAKC,SAASQ,aAAmDzoD,EAAQ,+DACrGgoD,EAAKC,SAASK,aAAeN,EAAKC,SAASK,cAAoDtoD,EAAQ,gEACvGgoD,EAAKC,SAASM,kBAAoBP,EAAKC,SAASM,mBAAyDvoD,EAAQ,qEACjHgoD,EAAKC,SAASmE,cAAgBpE,EAAKC,SAASmE,eAAqDpsD,EAAQ,iEACzGgoD,EAAKC,SAASO,WAAaR,EAAKC,SAASO,YAAkDxoD,EAAQ,8DACnGgoD,EAAKC,SAASS,MAAQV,EAAKC,SAASS,OAA6C1oD,EAAQ,wDAKzF,qBADwB3X,GACxB,YACAA,EAAAA,QAAAA,qGCcA,IAAI2/D,EAAOA,GAAQ,GACnBA,EAAKC,SAAWD,EAAKC,UAAY,GACjCD,EAAKC,SAASE,WAAaH,EAAKC,SAASE,YAAkDnoD,EAAQ,8DACnGgoD,EAAKC,SAASS,MAAQV,EAAKC,SAASS,OAA6C1oD,EAAQ,wDAIzFgoD,EAAKC,SAASM,kBAAoBP,EAAKC,SAASM,mBAAqB,WACrE,kBACA,WACA,oDAEA,aACA,aACA,aACA,cAOAP,EAAKC,SAASM,kBAAkB8D,yBAA2B,SAA3DrE,EAAAA,GAGA,MAEA,QAAet/D,EAAAA,EAAOA,GAAAA,EACtB2hE,EAAAA,EAAAA,EAAAA,KAAAA,GACAA,EAAAA,EAAAA,GAAAA,KAAAA,GACAA,EAAAA,EAAAA,GAAAA,KAAAA,IACAA,EAAAA,EAAAA,GAAAA,KAAAA,GACAA,EAAAA,EAAAA,GAAAA,KAAAA,GACAA,EAAAA,EAAAA,EAAAA,KAAAA,IACAA,EAAAA,EAAAA,GAAAA,KAAAA,GACAA,EAAAA,EAAAA,GAAAA,KAAAA,IAGA,QAAe3hE,EAAAA,EAAOA,GAAAA,EACtB2hE,EAAAA,EAAAA,EAAAA,EAAAA,KAAAA,GACAA,EAAAA,EAAAA,EAAAA,EAAAA,KAAAA,GACAA,EAAAA,EAAAA,EAAAA,EAAAA,KAAAA,IACAA,EAAAA,EAAAA,EAAAA,EAAAA,KAAAA,GACAA,EAAAA,EAAAA,EAAAA,EAAAA,KAAAA,GACAA,EAAAA,EAAAA,EAAAA,EAAAA,KAAAA,IACAA,EAAAA,EAAAA,EAAAA,EAAAA,KAAAA,GACAA,EAAAA,EAAAA,EAAAA,EAAAA,KAAAA,IAGA,QAAe3hE,EAAAA,GAAQA,GAAAA,EACvB2hE,EAAAA,KAAAA,GAOArC,EAAKC,SAASM,kBAAkBt+D,UAAUu3B,KAAO,SAAUnc,EAAMslD,GAGjE,IAAI,QAAJ,IAKA,IAHAliE,EAAAA,EAAAA,QACAu1B,GAAAA,EAEA,MAKA,GAHAA,GAAAA,GACApb,EAAAA,IAFA0mD,EAAAA,EAAAA,SAIA,EACA,oDAKA,GAFA,uBAEA,sBACA,wBACS,0BAGT,6DAFA,qBAOA,GAFA,aAEA,uBACA,QAAuB5gE,EAAAA,GAAQA,GAAAA,EAAA,CAC/B,OACA,0DAGA,gCACAs1B,GAAAA,EAGAgqC,EAAAA,SAAAA,kBAAAA,yBAAAA,KAAAA,YAAAA,GAAAA,OACS,CACT,QAAuBt/D,EAAAA,GAAQA,GAAAA,EAAA,CAC/B,OACA,0DAGA,iCACAs1B,GAAAA,EAGAgqC,EAAAA,SAAAA,kBAAAA,yBAAAA,KAAAA,YAAAA,GAAAA,IAIA,SACA,+DAGA,UAQA,qBADwB3/D,GACxB,YACAA,EAAAA,QAAAA,EAAAA,SAAAA,iHC5HA,IAAI2/D,EAAOA,GAAQ,GACnBA,EAAKC,SAAWD,EAAKC,UAAY,GAIjCD,EAAKC,SAASmE,cAAgBpE,EAAKC,SAASmE,eAAiB,WAC7D,gBACA,gBACA,oBAQA,qBADwB/jE,GACxB,YACAA,EAAAA,QAAAA,EAAAA,SAAAA,0GCjBA,IAAI2/D,EAAOA,GAAQ,GACnBA,EAAKC,SAAWD,EAAKC,UAAY,GACjCD,EAAKC,SAASE,WAAaH,EAAKC,SAASE,YAAkDnoD,EAAQ,8DACnGgoD,EAAKC,SAASmE,cAAgBpE,EAAKC,SAASmE,eAAqDpsD,EAAQ,iEAIzGgoD,EAAKC,SAASO,WAAaR,EAAKC,SAASO,YAAc,WACvD,UACA,UACA,eACA,iBACA,mBACA,oBAMAR,EAAKC,SAASO,WAAWv+D,UAAUu3B,KAAO,SAA1CwmC,GAGA,IAAI,MAAJ,IAQA,IANAv/D,EAAAA,EAAAA,QACAu1B,GAAAA,EAEA,sBACAA,GAAAA,EAEA,IAAet1B,EAAAA,KAAAA,QAAkBA,GAAAA,EAAA,CAGjC,GAFA,gDAEA,IACA,mDAGA,wCACAs1B,GAAAA,EAEAsrC,EAAAA,EAAAA,OACAtrC,GAAAA,EAEA,iCACA,iCAcA,GAXA,wBACAA,GAAAA,EAEA,0BACAA,GAAAA,EAEAsrC,EAAAA,EAAAA,OACA,aACA,cACAtrC,GAAAA,KAEA,EACA,+DAGA,UAQA,qBADwB31B,GACxB,YACAA,EAAAA,QAAAA,EAAAA,SAAAA,iGCvEA,IAAI2/D,EAAOA,GAAQ,GACnBA,EAAKC,SAAWD,EAAKC,UAAY,GAIjCD,EAAKC,SAASS,MAAQV,EAAKC,SAASS,OAAS,GAM7CV,EAAKC,SAASS,MAAM4D,YAAc,SAAU7jE,GAC5C,sBACAC,EAAAA,EAEA,sBAEA,IADA,8CACA,KAAAH,EAAAA,EAAAA,EAAAA,GAAAA,EAAAA,SAAAA,MAAAA,YAAAA,MAAAA,KAAAA,GAGA,UAKAy/D,EAAKC,SAASS,MAAM6D,aAAe,WAGnC,IAFA,MACA,KACA,IAAiBj/D,EAAAA,IAASA,IAAA,CAC1B0b,EAAAA,EACA,YAAqBpI,EAAAA,EAAOA,IAC5BoI,EAAAA,EAAAA,EAAAA,WAAAA,IAAAA,EAAAA,IAAAA,EAEAwjD,EAAAA,GAAAA,EAEA,UAGAxE,EAAKC,SAASS,MAAM+D,MAAQ,SAA5BzE,GAIA,IAHA,6FACA,KAEA,IAAmBt/D,EAAAA,EAAAA,WAAyBA,IAC5CgkE,EAAAA,IAAAA,EAAAA,EAAAA,KAAAA,EAAAA,EAAAA,SAAAA,KAGA,kBAOA,qBADwBrkE,GACxB,YACAA,EAAAA,QAAAA,EAAAA,SAAAA,4ECpEAA,EAAOC,QAbP,SAAa,GACb,YACA,EAEA,MACA,EAEA,yECZAD,EAAOC,QAAU2T,KAAK0wD,8FCAtB,IAAIC,EAAQ5sD,EAAS,0CAgCrB3X,EAAOC,QApBP,SAAc,GAKd,IAJA,IACA,EADA,KAIA,KAIA03B,GAHAla,EAAAA,EAAAA,MACAC,EAAAA,EAAAA,IAEAia,IAAAA,EAEAA,IAAAA,EAGA,oGC1BA,IAAI6sC,EAAO7sD,EAAS,kDAChB8sD,EAAO9sD,EAAS,kDAChB+sD,EAAM/sD,EAAS,wCACf4sD,EAAQ5sD,EAAS,0CACjBgtD,EAAOhtD,EAAS,sDAChBitD,EAAOjtD,EAAS,qDAChBktD,EAASltD,EAAS,mDAClBmtD,EAAOntD,EAAS,4DAChBotD,EAAQptD,EAAS,6DA4GrB3X,EAAOC,QA3FP,SAAsB,GACtB,MACA,EACA,EACA,EACA,EACA,EACA,EASA,GALA8pB,EADA,aACAA,IAEAA,IAGA,aAIA,UAFAi7C,EAAAA,EAAAA,IAAAA,KACArtC,EAAAA,EAAAA,IAAAA,KAIA,SAIA,UAFAqtC,EAAAA,EAAAA,IAAAA,KACArtC,EAAAA,IAAAA,EAAAA,IAAAA,KAIA,SAIA,UAFAqtC,EAAAA,EAAAA,IAAAA,KACArtC,EAAAA,EAAAA,IAAAA,KAgBA,GAPAnoB,GANAkO,EAAAA,EAAAA,KAGAzY,EAAAA,EAAAA,IAMAA,EAAAA,EAAAA,GACAuK,EAAAA,EAAAA,GAGA,EAEAw1D,EAAAA,EAAAA,OAAAA,MACE,CAEF,QAAc3kE,EAAAA,EAAAA,OAAcA,IAC5B,eACA4kE,EAAAA,EAAAA,EACA,MAIAD,GAAAA,EAwBA,OArBArtC,EAAAA,EAAAA,EACA,KAEA,IA/EW,MAiFXstC,EAAAA,KAGAttC,EAAAA,EAAAA,UAAAA,IAGAA,EAAAA,EAAAA,UAAAA,GAGAqtC,EAAAA,EAAAA,EA1FW,KAiGX,GANAA,EAAAA,EAAAA,EAAAA,EAAAA,OAGArtC,EAAAA,EAAAA,EAAAA,GAAAA,KAAAA,UAAAA,EAAAA,gGC1DA33B,EAAOC,QApCP,SAAe,GACf,MACA,EACA,EACA,EAGA,GADA03B,EAAAA,GACA,MACA,SAKA,IAHArf,EAvBe,IA0Bf,IAAajY,EA1BE,OA2Bfod,EAAAA,EAAAA,IACA,GACAC,EAAAA,EAAAA,EACAia,GAAAA,IA9Be,MA+Bf,IACArf,EAAAA,KAGAoF,EAAAA,EACAia,GAAAA,OAGA,WAtCe,KAyBYt3B,KAiB3B,iFC3CAL,EAAOC,QAAU2T,KAAK2wD,kFCQtB,IAAIW,EAAQA,GAAS,GACrBA,EAAMC,OAASD,EAAMC,QAA8CxtD,EAAQ,gDAC3EutD,EAAME,OAASF,EAAME,QAA8CztD,EAAQ,gDAC3EutD,EAAM7E,MAAQ6E,EAAM7E,OAA6C1oD,EAAQ,mDAEzE,IAAI0tD,EAAOA,GAA4C1tD,EAAQ,gCAW/DutD,EAAMI,SAAW,SAAUtoD,GAC3B,YAOA,OAJAuoD,GADA7mC,EAAAA,IAAAA,SAAAA,IACA6mC,SAAAA,EAAAA,OAAAA,uBACAC,EAAAA,EAAAA,SAAAA,EAAAA,OAAAA,sBAAAA,GACAC,EAAAA,EAAAA,SAAAA,EAAAA,OAAAA,sBAAAA,KAEA,4DACAA,IAAAA,EAAAA,OAAAA,aAAAA,KASAP,EAAMQ,SAAW,SAAU1oD,GAC3B,YAOA,OAJAuoD,GADA7mC,EAAAA,IAAAA,SAAAA,IACA6mC,SAAAA,EAAAA,OAAAA,uBACAC,EAAAA,EAAAA,SAAAA,EAAAA,OAAAA,sBAAAA,GACAC,EAAAA,EAAAA,SAAAA,EAAAA,OAAAA,sBAAAA,KAEA,4DACAA,IAAAA,EAAAA,OAAAA,aAAAA,KAUAP,EAAMS,QAAU,SAAU3oD,GAC1B,qCAUAkoD,EAAMU,aAAe,SAAU5oD,GAC/B,UAEA,MAMA,GAHA6oD,GAFAnnC,EAAAA,IAAAA,SAAAA,IAEAmnC,SAAAA,GACAC,EAAAA,EAAAA,SAAAA,GAEA,iCACA,SAGA,oCACA,SAIA,UAUAZ,EAAMpE,WAAa,SAAU9jD,GAC7B,4BAUAkoD,EAAMa,WAAa,SAAU/oD,GAC7B,WAkBA,OAhBA,oBACAA,EAAAA,EAAAA,WAAAA,IAGA,cACAgpD,EAAAA,IAAAA,EAAAA,OACK,gBACLA,EAAAA,IAAAA,EAAAA,QAGA,EACAA,EAAAA,WAAAA,GAEA5gD,QAAAA,MAAAA,0CAGA,GAUA8/C,EAAMe,aAAe,SAAUD,GAC/B,8BAWAd,EAAMgB,UAAY,SAAUF,EAAQhpD,GACpC,mBACAmpD,EAAAA,EACAC,EAAAA,EAEA,YACAD,EAAAA,EAAAA,KAAAA,IAGA,YACAC,EAAAA,EAAAA,KAAAA,IAGA,8DACA,uBAWAlB,EAAMmB,cAAgB,SAAUL,EAAQhpD,GACxC,+BACAid,EAAAA,EAAAA,cAEA,uBAWAirC,EAAMoB,kBAAoB,SAAUN,EAAQhpD,GAC5C,+BACAid,EAAAA,EAAAA,cAEA,2BAOA,qBADwBj6B,GACxB,YACAA,EAAAA,QAAAA,gFCxMA,IAAIklE,EAAQA,GAAS,GACrBA,EAAM7E,MAAQ6E,EAAM7E,OAA6C1oD,EAAQ,mDAiDzEutD,EAAMC,OAASD,EAAMC,QAAU,WAC/B,qBACA,gBACA,aACA,iBACA,iBACA,iBACA,mBACA,oBACA,uBACA,mBACA,iBACA,kBACA,gBACA,kBACA,iBACA,iBACA,kBACA,eACA,eACA,sBACA,eACA,oBACA,iBACA,oBACA,kBACA,kBACA,iBACA,iBACA,iBACA,iBACA,iBACA,iBACA,sDACA,aACA,cACA,6BACA,qBACA,sBAQAD,EAAMC,OAAOoB,UAAbrB,EACAA,EAAMC,OAAOqB,YAAbtB,EACAA,EAAMC,OAAOsB,WAAbvB,EACAA,EAAMC,OAAOuB,WAAbxB,EACAA,EAAMC,OAAOwB,WAAbzB,EACAA,EAAMC,OAAOyB,aAAb1B,GACAA,EAAMC,OAAO0B,eAAb3B,GACAA,EAAMC,OAAO2B,aAAb5B,GACAA,EAAMC,OAAO4B,WAAb7B,IACAA,EAAMC,OAAO6B,UAAb9B,IACAA,EAAMC,OAAO8B,YAAb/B,IACAA,EAAMC,OAAO+B,YAAbhC,IACAA,EAAMC,OAAOgC,WAAbjC,KACAA,EAAMC,OAAOiC,YAAblC,KACAA,EAAMC,OAAOkC,cAAbnC,KACAA,EAAMC,OAAOmC,gBAAbpC,KACAA,EAAMC,OAAOoC,gBAAbrC,KAGAA,EAAMC,OAAOqC,cAAbtC,EACAA,EAAMC,OAAOsC,mBAAbvC,EACAA,EAAMC,OAAOuC,mBAAbxC,EACAA,EAAMC,OAAOwC,gBAAbzC,EACAA,EAAMC,OAAOyC,cAAb1C,EAGAA,EAAMC,OAAO0C,mBAAqB,EAClC3C,EAAMC,OAAO2C,oBAAsB,GACnC5C,EAAMC,OAAO4C,cAAb7C,EACAA,EAAMC,OAAO6C,YAAb9C,EACAA,EAAMC,OAAO8C,SAAb/C,EACAA,EAAMC,OAAO+C,aAAbhD,EACAA,EAAMC,OAAOgD,UAAbjD,EACAA,EAAMC,OAAOiD,WAAblD,GACAA,EAAMC,OAAOkD,WAAbnD,GACAA,EAAMC,OAAOmD,SAAbpD,GACAA,EAAMC,OAAOoD,UAAbrD,GACAA,EAAMC,OAAOqD,WAAbtD,GAGAA,EAAMC,OAAOsD,aAAe,IAC5BvD,EAAMC,OAAOuD,sBAAwB,IACrCxD,EAAMC,OAAOwD,aAAe,CAAC,IAAM,GAAM,IACzCzD,EAAMC,OAAOyD,cAAgB,CAAC,IAAM,IAAM,IAC1C1D,EAAMC,OAAO0D,sBAAwB,EASrC3D,EAAMC,OAAOvjE,UAAUmkE,WAAa,SAAU/oD,GAC9C,IAEA8rD,EACAC,EACAC,EACAnhE,EALA,kBACAohE,EAAAA,EAAAA,MAAAA,SAAAA,EAAAA,EAAAA,KAAAA,cAWA,GALA,4BACA,qBACAA,EAAAA,EAAAA,MAAAA,SAAAA,EAAAA,EAAAA,KAAAA,eAGA,0BACA,4DAKA,IAFA,sCAEA,IAAiBH,EAAAA,EAASA,GAAAA,EAC1BjhE,EAAAA,GAAAA,EAAAA,EACA,uDAaA,IAVA,0DACA,0DACA,0DACA,4DAEA,6DACA,gEAEA,4DAEA,IAAiBihE,EAAAA,EAASA,GAAAA,EAC1BjhE,EAAAA,GAAAA,EAAAA,EACA,0DAgCA,IA7BA,4DAEA,2DACA,2DAEA,2DACA,yCAEA,yCAEA,yDACA,yDAEA,gEACA,yDAEA,gDACA,6CAEA,4DACA,4DAEA,2DACA,2DACA,2DACA,2DACA,2DACA,2DAEA,IAAoBkhE,EAAAA,EAAYA,GAAAA,EAChC,QAAuBC,EAAAA,EAAWA,GAAAA,EAClCnhE,EAAAA,IAAAA,GAAAA,EAAAA,EAAAA,GACA,4DAIA,oBACA,oBACA,oBACA,oBAEA,gDACA,0CAEA,+CAEA,qCACA,+CACA,+CACA,+CACA,+CAEA,wBACA,4CACA,+CAUAq9D,EAAMC,OAAOvjE,UAAUsnE,kBAAoB,WAC3C,2BACA1iB,EAAAA,GAgFA,OA9EAA,GAAAA,cAAAA,KAAAA,SAAAA,KAEAA,GAAAA,2BACA,kBACA,kBACA,kBACA,kBACA,kBACA,kBACA,kBACA,kBAEAA,GAAAA,4BACA,oBACA,oBACA,oBAEAA,GAAAA,iBAAAA,KAAAA,YAAAA,KACAA,GAAAA,cAAAA,KAAAA,aAAAA,KAAAA,KAAAA,sBAAAA,KAAAA,cAAAA,MACAA,GAAAA,oBAAAA,KAAAA,gBAAAA,KACAA,GAAAA,iBAAAA,KAAAA,YAAAA,KACAA,GAAAA,2BACA2iB,EAAAA,KAAAA,QAAAA,IAAA,KACAA,EAAAA,KAAAA,QAAAA,IAAA,KACAA,EAAAA,KAAAA,QAAAA,IAAA,KACAA,EAAAA,KAAAA,QAAAA,IAAA,KACAA,EAAAA,KAAAA,QAAAA,IAAA,KACAA,EAAAA,KAAAA,QAAAA,IAAA,KACAA,EAAAA,KAAAA,QAAAA,IAAA,KACAA,EAAAA,KAAAA,QAAAA,IAAA,KAEA3iB,GAAAA,kBAAAA,KAAAA,WAAAA,KACAA,GAAAA,wBAAAA,EAAAA,KAAAA,WAAAA,iBAAAA,EAAAA,KAAAA,WAAAA,KACAA,GAAAA,eAAAA,KAAAA,UAAAA,KACAA,GAAAA,gBAAAA,KAAAA,WAAAA,KACAA,GAAAA,gBAAAA,KAAAA,WAAAA,KAAAA,KAAAA,mBAAAA,EAAAA,OAAAA,mBAAAA,KAAAA,YAAAA,KAAAA,KAAAA,mBAAAA,EAAAA,OAAAA,oBAAAA,KAAAA,YAAAA,MACAA,GAAAA,yBAAAA,EAAAA,KAAAA,SAAAA,WAAAA,EAAAA,KAAAA,SAAAA,KACAA,GAAAA,oBAAAA,KAAAA,eAAAA,KACAA,GAAAA,qBAAAA,KAAAA,QAAAA,KACAA,GAAAA,iBAAAA,KAAAA,YAAAA,MACAA,GAAAA,oBAAAA,KAAAA,SAAAA,MACAA,GAAAA,iBAAAA,KAAAA,WAAAA,KAAAA,KAAAA,uBAAAA,KAAAA,YAAAA,MACAA,GAAAA,iBAAAA,KAAAA,WAAAA,KAAAA,KAAAA,uBAAAA,KAAAA,YAAAA,MACAA,GAAAA,+BACA2iB,EAAAA,KAAAA,WADA3iB,SAEA2iB,EAAAA,KAAAA,WAFA3iB,SAGA2iB,EAAAA,KAAAA,WAAA,KAEA3iB,GAAAA,4BACA,eADAA,SAEA,eAFAA,SAGA,oBAEAA,GAAAA,wBACA2iB,EAAAA,KAAAA,OAAAA,GAAAA,IAAA,KACAA,EAAAA,KAAAA,OAAAA,GAAAA,IAAA,KACAA,EAAAA,KAAAA,OAAAA,GAAAA,IAAA,KACAA,EAAAA,KAAAA,OAAAA,GAAAA,IAAA,KAEA3iB,GAAAA,wBACA2iB,EAAAA,KAAAA,OAAAA,GAAAA,IAAA,KACAA,EAAAA,KAAAA,OAAAA,GAAAA,IAAA,KACAA,EAAAA,KAAAA,OAAAA,GAAAA,IAAA,KACAA,EAAAA,KAAAA,OAAAA,GAAAA,IAAA,KAEA3iB,GAAAA,wBACA2iB,EAAAA,KAAAA,OAAAA,GAAAA,IAAA,KACAA,EAAAA,KAAAA,OAAAA,GAAAA,IAAA,KACAA,EAAAA,KAAAA,OAAAA,GAAAA,IAAA,KACAA,EAAAA,KAAAA,OAAAA,GAAAA,IAAA,KAEA3iB,GAAAA,iBAAAA,KAAAA,YAAAA,MAEA,wBACAA,GAAAA,qBAAAA,KAAAA,cAAAA,YAAAA,KAAAA,cAAAA,MAIA,GASA0e,EAAMC,OAAOvjE,UAAUwnE,sBAAwB,SAAUhxD,GACzD,+BACA,0BACK,wBACL,wBACK,wBACL,wBACK,0BACL,eACK,0BACL,eACK,wBACL,MACK,uBACL,wBACK,yBACL,0BACK,yBACL,0BACK,wBACL,wBACK,yBACL,0BAEA,WAUA8sD,EAAMC,OAAOvjE,UAAUynE,uBAAyB,SAAUjxD,GAC1D,uCACA,UACK,gCACL,UACK,6BACL,YACK,2BACL,MAEA,WAUA8sD,EAAMC,OAAOvjE,UAAU0nE,mBAAqB,SAAUlxD,GACtD,gCACA,SACK,sBACL,cACK,0BACL,UACK,uBACL,UACK,wBACL,eACK,wBACL,eACK,sBACL,KACK,uBACL,MACK,wBACL,OAEA,WASA8sD,EAAMC,OAAOvjE,UAAU2nE,YAAc,WACrC,sGACA,gGAmBArE,EAAMC,OAAOvjE,UAAU4nE,8BAAgC,SAAUC,EAAIr/B,EAAIs/B,EAAIC,EAAIC,EAAIC,EAAIC,EAAIC,EAAIC,EACjGC,GACA,IACA3+C,EAIA4+C,EACAC,EACAC,EAPA,4CAEA3lD,EAAAA,EACA9D,EAAAA,EACA4K,EAAAA,EA+CA,OAzCAtN,EAAAA,GAAAA,GAAAA,EAAAA,GAAAA,GAAAA,EAAAA,GAAAA,GAAAA,EACAA,EAAAA,GAAAA,GAAAA,GAGAqN,EAAAA,GAAAA,EAAAA,EAAAA,EAAAA,EAAAA,EAAAA,IACA,MAGA7G,GADA6G,EAAAA,EAAAA,KAAAA,KAAAA,EAAAA,EAAAA,EAAAA,EAAAA,EAAAA,GAEA3K,GAAAA,EACA4K,GAAAA,EACAD,EAAAA,GAGAA,EAAAA,KAAAA,KAAAA,GAIA4+C,EAAAA,EAAAA,EAAAA,EAAAA,EACAC,EAAAA,EAAAA,EAAAA,EAAAA,EACAC,EAAAA,EAAAA,EAAAA,EAAAA,EAEA,MACAA,GAAAA,GAGAnsD,EAAAA,GAAAA,IAAAA,EAAAA,EAAAA,EAAAA,EAAAA,EAAAA,EAAAA,EAAAA,GAAAA,EACAA,EAAAA,GAAAA,GAAAA,GAAAA,EAAAA,EAAAA,EAAAA,GAAAA,EACAA,EAAAA,GAAAA,GAAAA,GAAAA,EAAAA,EAAAA,EAAAA,GAAAA,EACAA,EAAAA,GAAAA,GAAAA,GAAAA,EAAAA,EAAAA,EAAAA,GAAAA,EACAA,EAAAA,GAAAA,IAAAA,EAAAA,EAAAA,EAAAA,EAAAA,EAAAA,EAAAA,EAAAA,GAAAA,EACAA,EAAAA,GAAAA,GAAAA,GAAAA,EAAAA,EAAAA,EAAAA,GAAAA,EACAA,EAAAA,GAAAA,GAAAA,GAAAA,EAAAA,EAAAA,EAAAA,GAAAA,EACAA,EAAAA,GAAAA,GAAAA,GAAAA,EAAAA,EAAAA,EAAAA,GAAAA,EACAA,EAAAA,GAAAA,IAAAA,EAAAA,EAAAA,EAAAA,EAAAA,EAAAA,EAAAA,EAAAA,GAAAA,EAGAA,EAAAA,GAAAA,GAAAA,EACAA,EAAAA,GAAAA,GAAAA,EACAA,EAAAA,GAAAA,GAAAA,EAEA,GAUAinD,EAAMC,OAAOvjE,UAAUyoE,wBAA0B,SAAUpsD,GAC3D,kDACAK,EAAAgsD,EAAAh+B,EAAAC,EAAAg+B,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EA8BA,GA7BAryD,EAAAA,EAEA+zB,EAAAA,CAAAA,CAAAA,EAAAA,EAAAA,GAAAA,CAAAA,EAAAA,EAAAA,GAAAA,CAAAA,EAAAA,EAAAA,IACAC,EAAAA,CAAAA,CAAAA,EAAAA,EAAAA,GAAAA,CAAAA,EAAAA,EAAAA,GAAAA,CAAAA,EAAAA,EAAAA,IAUAsN,EAAAA,EAAAA,GAAAA,GACAgxB,EAAAA,EAAAA,GAAAA,GACAC,EAAAA,EAAAA,GAAAA,GAEAhxB,EAAAA,EAAAA,GAAAA,GACAixB,EAAAA,EAAAA,GAAAA,GACAC,EAAAA,EAAAA,GAAAA,GAEAjxB,EAAAA,EAAAA,GAAAA,GACAuB,EAAAA,EAAAA,GAAAA,GACA2vB,EAAAA,EAAAA,GAAAA,GAMA,KADA73D,EAAAA,KAAAA,KAAAA,EAAAA,EAAAA,EAAAA,EAAAA,EAAAA,IAEA,YASA,GANAymC,GAAAA,EACAC,GAAAA,EACAC,GAAAA,EAIA,KADA3mC,EAAAA,KAAAA,KAAAA,EAAAA,EAAAA,EAAAA,EAAAA,EAAAA,IAEA,YASA,GADAA,EAAAA,GALAy3D,GAAAA,GAKAz3D,GAJA23D,GAAAA,GAIA33D,GAHAkoC,GAAAA,GAIA,kBAKA,GAJAuvB,GAAAA,EAAAA,EACAE,GAAAA,EAAAA,EACAzvB,GAAAA,EAAAA,EAEA,KADAloC,EAAAA,KAAAA,KAAAA,EAAAA,EAAAA,EAAAA,EAAAA,EAAAA,IAEA,YAEAy3D,GAAAA,EACAE,GAAAA,EACAzvB,GAAAA,EAiBA,GAZA,KADAloC,EAAAA,KAAAA,KAAAA,EAAAA,EAAAA,EAAAA,EAAAA,EAAAA,KAEA03D,EAAAA,EAAAA,EAAAA,EAAAA,EACAE,EAAAA,EAAAA,EAAAA,EAAAA,EACAC,EAAAA,EAAAA,EAAAA,EAAAA,IAEAH,GAAAA,EACAE,GAAAA,EACAC,GAAAA,GAIA73D,EAAAA,EAAAA,EAAAA,EAAAA,EAAAA,EAAAA,EACA,kBAKA,GAJA03D,GAAAA,EAAAA,EACAE,GAAAA,EAAAA,EACAC,GAAAA,EAAAA,EAEA,KADA73D,EAAAA,KAAAA,KAAAA,EAAAA,EAAAA,EAAAA,EAAAA,EAAAA,IAEA,YAEA03D,GAAAA,EACAE,GAAAA,EACAC,GAAAA,EAKA,GADA73D,EAAAA,EAAAA,EAAAA,EAAAA,EAAAA,EAAAA,EACA,kBAKA,GAJA03D,GAAAA,EAAAA,EACAE,GAAAA,EAAAA,EACAC,GAAAA,EAAAA,EAEA,KADA73D,EAAAA,KAAAA,KAAAA,EAAAA,EAAAA,EAAAA,EAAAA,EAAAA,IAEA,YAEA03D,GAAAA,EACAE,GAAAA,EACAC,GAAAA,EAgBA,GAbA3+B,EAAAA,GAAAA,GAAAA,EACAA,EAAAA,GAAAA,GAAAA,EACAA,EAAAA,GAAAA,GAAAA,EACAA,EAAAA,GAAAA,GAAAA,EACAA,EAAAA,GAAAA,GAAAA,EACAA,EAAAA,GAAAA,GAAAA,EACAA,EAAAA,GAAAA,GAAAA,EACAA,EAAAA,GAAAA,GAAAA,EACAA,EAAAA,GAAAA,GAAAA,EAKA,KADA4+B,EAAAA,KAAAA,mBAAAA,IAEA,YAeA,IALAZ,GAAAA,IACAa,EAAAA,EAAAA,EAAAA,EAAAA,EACAC,EAAAA,EACAC,EAAAA,EAEA,IAAehrE,GAAAA,EAAQA,GAAAA,EACvB,QAAmBiY,GAAAA,EAAQA,GAAAA,EAC3B,SACA,QAA2BC,GAAAA,EAAQA,GAAAA,EACnC,gBAEA,IADAg0B,EAAAA,GAAAA,GAAAA,EAAAA,GAAAA,GAAAA,EAAAA,GAAAA,GAAAA,EAAAA,GAAAA,GAAAA,EAAAA,GAAAA,GAAAA,EAAAA,GAAAA,GAAAA,EAAAA,GAAAA,GAAAA,EAAAA,GAAAA,GAAAA,EAAAA,GAAAA,GAAAA,EACA,KAAoC9nC,GAAAA,EAAQA,GAAAA,EAC5C,SAAwC+V,GAAAA,EAAQA,GAAAA,EAChD,SAA4CnB,GAAAA,EAAQA,GAAAA,EACpDkzB,EAAAA,GAAAA,EAAAA,GAAAA,EACAA,EAAAA,GAAAA,EAAAA,GAAAA,EACAA,EAAAA,GAAAA,EAAAA,GAAAA,EACA++B,KAAAA,mBAAAA,GACA,MAMAl4D,GALAkL,EAAAA,KAAAA,gBAAAA,EAAAA,IAKAlL,GAAAA,GAAAA,EAAAA,GAAAA,GAAAA,EAAAA,GAAAA,IACA,IACAk3D,EAAAA,EACAa,EAAAA,EACAC,EAAAA,EACAC,EAAAA,EACAE,EAAAA,EACAC,EAAAA,EACAC,EAAAA,GA4BA,OAFAlB,EAAAA,EAAAA,EAAAA,EAAAA,EAAAA,EAAAA,EAEA,KACA,OACAA,EAAAA,IACAG,EAAAA,IACA,MACA,OACAH,EAAAA,IACAG,EAAAA,IACA,MACA,OACAH,EAAAA,IACAG,EAAAA,IACA,MACA,OACAH,EAAAA,IACAG,EAAAA,IACA,MACA,OACAH,EAAAA,IACAG,EAAAA,IACA,MACA,OACAH,EAAAA,IACAG,EAAAA,IAIA,YACA,OACAF,EAAAA,IACAG,EAAAA,IACA,MACA,OACAH,EAAAA,IACAG,EAAAA,IACA,MACA,OACAH,EAAAA,IACAG,EAAAA,IACA,MACA,OACAH,EAAAA,IACAG,EAAAA,IACA,MACA,OACAH,EAAAA,IACAG,EAAAA,IACA,MACA,OACAH,EAAAA,IACAG,EAAAA,IAIA,YACA,OACAF,EAAAA,IACAG,EAAAA,IACA,MACA,OACAH,EAAAA,IACAG,EAAAA,IACA,MACA,OACAH,EAAAA,IACAG,EAAAA,IACA,MACA,OACAH,EAAAA,IACAG,EAAAA,IACA,MACA,OACAH,EAAAA,IACAG,EAAAA,IACA,MACA,OACAH,EAAAA,IACAG,EAAAA,IAIA,oBAKA1F,EAAMC,OAAOvjE,UAAU8pE,gBAAkB,SAAU7+B,EAAGzuB,GACtD,IACA/d,EACAiY,EAFA,4BAIA,QAAejY,EAAAA,EAAOA,GAAAA,EACtB,QAAmBiY,EAAAA,EAAOA,GAAAA,EAC1B+F,EAAAA,GAAAA,GAAAA,EAAAA,GAAAA,GAAAA,EAAAA,GAAAA,GAAAA,EAAAA,GAAAA,GAAAA,EAAAA,GAAAA,GAAAA,EAAAA,GAAAA,GAAAA,EAAAA,GAAAA,GAIA,UAKA6mD,EAAMC,OAAOvjE,UAAU+pE,mBAAqB,SAAU1tD,GACtD,sBAYA,OAVA2tD,EAAAA,EAAAA,GAAAA,GACAC,EAAAA,EAAAA,GAAAA,GACAC,EAAAA,EAAAA,GAAAA,GACAC,EAAAA,EAAAA,GAAAA,GACAC,EAAAA,EAAAA,GAAAA,GACAC,EAAAA,EAAAA,GAAAA,GACAC,EAAAA,EAAAA,GAAAA,GACAC,EAAAA,EAAAA,GAAAA,GAGA,KAFAC,EAAAA,EAAAA,GAAAA,IAEA,+BAQAlH,EAAMC,OAAOvjE,UAAUyqE,qBAAuB,WAC9C,gCASAnH,EAAMC,OAAOvjE,UAAU0qE,iBAAmB,SAA1CpH,GACA,0EAUAA,EAAMC,OAAOvjE,UAAU2qE,iBAAmB,SAA1CrH,GACA,4EAQA,qBADwBllE,GACxB,YACAA,EAAAA,QAAAA,EAAAA,qFCv1BA,IAAIklE,EAAQA,GAAS,GACrBA,EAAM7E,MAAQ6E,EAAM7E,OAA6C1oD,EAAQ,mDACzEutD,EAAMC,OAASD,EAAMC,QAA8CxtD,EAAQ,gDA6C3EutD,EAAME,OAASF,EAAME,QAAU,WAC/B,qBACA,gBACA,aACA,iBACA,iBACA,iBACA,mBACA,oBACA,uBACA,mBACA,iBACA,kBACA,gBACA,kBACA,iBACA,iBACA,kBACA,eACA,eACA,sBACA,eACA,oBACA,iBACA,oBACA,kBACA,kBACA,iBACA,iBACA,iBACA,iBACA,iBACA,iBACA,sDACA,aACA,8BAOAF,EAAME,OAAOqD,aAAe,IAC5BvD,EAAME,OAAOsD,sBAAwB,EACrCxD,EAAME,OAAOuD,aAAe,CAAC,IAAM,GAAM,GAAM,EAAG,GAAM,GAAM,GAAM,IAUpEzD,EAAME,OAAOxjE,UAAUmkE,WAAa,SAAU/oD,GAC9C,IAEA8rD,EACAC,EACAC,EACAnhE,EALA,kBACAohE,EAAAA,EAAAA,MAAAA,SAAAA,EAAAA,EAAAA,KAAAA,cAYA,GALA,4BACA,qBACAA,EAAAA,EAAAA,MAAAA,SAAAA,EAAAA,EAAAA,KAAAA,eAGA,0BACA,4DAMA,IAHA,6DACA,gEAEA,IAAiBH,EAAAA,EAASA,GAAAA,EAC1BjhE,EAAAA,GAAAA,EAAAA,EACA,sDAOA,IAJA,2DACA,2DACA,2DAEA,IAAiBihE,EAAAA,EAASA,GAAAA,EAC1BjhE,EAAAA,IAAAA,EAAAA,EACA,2DA+BA,IA5BA,2DAEA,4DACA,4DAEA,0DACA,0DAEA,iEAEA,0DAEA,4DACA,0DAEA,gDACA,6CAEA,0DACA,0DAEA,4DACA,4DACA,4DACA,4DACA,4DACA,4DAEA,IAAoBkhE,EAAAA,EAAYA,GAAAA,EAChC,QAAuBC,EAAAA,EAAWA,GAAAA,EAClCnhE,EAAAA,IAAAA,GAAAA,EAAAA,EAAAA,GACA,6DAIA,oBACA,oBACA,oBACA,oBAEA,0DACA,0DACA,2DACA,gDAEA,uCAEA,qCACA,+CACA,+CACA,+CACA,+CAEA,wBACA,4CACA,+CAWAq9D,EAAME,OAAOxjE,UAAUsnE,kBAAoB,WAC3C,2BACA1iB,EAAAA,GA2EA,OAzEAA,GAAAA,gBAAAA,KAAAA,aAAAA,KAAAA,KAAAA,sBAAAA,KAAAA,cAAAA,MACAA,GAAAA,uBAAAA,KAAAA,gBAAAA,KACAA,GAAAA,2BACA,kBACA,kBACA,kBACA,kBACA,kBACA,kBACA,kBACA,kBAEAA,GAAAA,4BACA,oBACA,oBACA,oBAEAA,GAAAA,2BACA2iB,EAAAA,KAAAA,QAAAA,IAAA,KACAA,EAAAA,KAAAA,QAAAA,IAAA,KACAA,EAAAA,KAAAA,QAAAA,IAAA,KACAA,EAAAA,KAAAA,QAAAA,IAAA,KACAA,EAAAA,KAAAA,QAAAA,IAAA,KACAA,EAAAA,KAAAA,QAAAA,IAAA,KACAA,EAAAA,KAAAA,QAAAA,IAAA,KACAA,EAAAA,KAAAA,QAAAA,IAAA,KAEA3iB,GAAAA,kBAAAA,KAAAA,WAAAA,KACAA,GAAAA,wBAAAA,EAAAA,KAAAA,WAAAA,iBAAAA,EAAAA,KAAAA,WAAAA,KACAA,GAAAA,yBAAAA,EAAAA,KAAAA,SAAAA,WAAAA,EAAAA,KAAAA,SAAAA,KACAA,GAAAA,oBAAAA,KAAAA,eAAAA,KACAA,GAAAA,qBAAAA,KAAAA,QAAAA,KACAA,GAAAA,iBAAAA,KAAAA,YAAAA,KACAA,GAAAA,eAAAA,KAAAA,UAAAA,KACAA,GAAAA,iBAAAA,KAAAA,YAAAA,MACAA,GAAAA,oBAAAA,KAAAA,SAAAA,MACAA,GAAAA,iBAAAA,KAAAA,WAAAA,KAAAA,KAAAA,uBAAAA,KAAAA,YAAAA,MACAA,GAAAA,iBAAAA,KAAAA,WAAAA,KAAAA,KAAAA,uBAAAA,KAAAA,YAAAA,MACAA,GAAAA,+BACA2iB,EAAAA,KAAAA,WADA3iB,SAEA2iB,EAAAA,KAAAA,WAFA3iB,SAGA2iB,EAAAA,KAAAA,WAAA,KAEA3iB,GAAAA,4BACA,eADAA,SAEA,eAFAA,SAGA,oBAEAA,GAAAA,wBACA2iB,EAAAA,KAAAA,OAAAA,GAAAA,IAAA,KACAA,EAAAA,KAAAA,OAAAA,GAAAA,IAAA,KACAA,EAAAA,KAAAA,OAAAA,GAAAA,IAAA,KACAA,EAAAA,KAAAA,OAAAA,GAAAA,IAAA,KAEA3iB,GAAAA,wBACA2iB,EAAAA,KAAAA,OAAAA,GAAAA,IAAA,KACAA,EAAAA,KAAAA,OAAAA,GAAAA,IAAA,KACAA,EAAAA,KAAAA,OAAAA,GAAAA,IAAA,KACAA,EAAAA,KAAAA,OAAAA,GAAAA,IAAA,KAEA3iB,GAAAA,wBACA2iB,EAAAA,KAAAA,OAAAA,GAAAA,IAAA,KACAA,EAAAA,KAAAA,OAAAA,GAAAA,IAAA,KACAA,EAAAA,KAAAA,OAAAA,GAAAA,IAAA,KACAA,EAAAA,KAAAA,OAAAA,GAAAA,IAAA,KAEA3iB,GAAAA,gBAAAA,KAAAA,WAAAA,KACAA,GAAAA,gBAAAA,KAAAA,WAAAA,KAAAA,KAAAA,mBAAAA,EAAAA,OAAAA,mBAAAA,KAAAA,YAAAA,KAAAA,KAAAA,mBAAAA,EAAAA,OAAAA,oBAAAA,KAAAA,YAAAA,MACAA,GAAAA,iBAAAA,KAAAA,YAAAA,KACAA,GAAAA,iBAAAA,KAAAA,YAAAA,MAEAA,GAAAA,cAAAA,KAAAA,SAAAA,MAWA0e,EAAME,OAAOxjE,UAAUyqE,qBAAuB,WAC9C,gCAUAnH,EAAME,OAAOxjE,UAAU0qE,iBAAmBpH,EAAMC,OAAOvjE,UAAU0qE,iBASjEpH,EAAME,OAAOxjE,UAAU2qE,iBAAmBrH,EAAMC,OAAOvjE,UAAU2qE,iBASjErH,EAAME,OAAOxjE,UAAUwnE,sBAAwBlE,EAAMC,OAAOvjE,UAAUwnE,sBAStElE,EAAME,OAAOxjE,UAAUynE,uBAAyBnE,EAAMC,OAAOvjE,UAAUynE,uBASvEnE,EAAME,OAAOxjE,UAAU0nE,mBAAqBpE,EAAMC,OAAOvjE,UAAU0nE,mBAQnEpE,EAAME,OAAOxjE,UAAU2nE,YAAcrE,EAAMC,OAAOvjE,UAAU2nE,YAkB5DrE,EAAME,OAAOxjE,UAAU4nE,8BAAgCtE,EAAMC,OAAOvjE,UAAU4nE,8BAS9EtE,EAAME,OAAOxjE,UAAUyoE,wBAA0BnF,EAAMC,OAAOvjE,UAAUyoE,wBAIxEnF,EAAME,OAAOxjE,UAAU8pE,gBAAkBxG,EAAMC,OAAOvjE,UAAU8pE,gBAIhExG,EAAME,OAAOxjE,UAAU+pE,mBAAqBzG,EAAMC,OAAOvjE,UAAU+pE,mBAOnE,qBADwB3rE,GACxB,YACAA,EAAAA,QAAAA,EAAAA,wFClYA,IAAIklE,EAAQA,GAAS,GACrBA,EAAM7E,MAAQ6E,EAAM7E,OAAS,GAM7B6E,EAAM7E,MAAM8D,SAAW,KACvBe,EAAM7E,MAAMmM,qBAAuB,GACnCtH,EAAM7E,MAAMoM,qBAAuB,IAMnCvH,EAAM7E,MAAMqM,YAAc,SAAU1vD,EAAMpG,EAAOjB,GACjD,IAAI,IAAJ,KAEA,QAAqBmzD,EAAAA,EAAWA,GAAAA,EAGhC,KAFAlrC,EAAAA,EAAAA,SAAAA,MAGAjG,GAAAA,OAAAA,aAAAA,IAIA,UAKAutC,EAAM7E,MAAMsM,UAAY,SAAU3vD,EAAMpG,GACxC,qBAKAsuD,EAAM7E,MAAMuM,WAAa,SAAU5vD,EAAMpG,EAAOi2D,GAChD,wBAKA3H,EAAM7E,MAAMyM,SAAW,SAAU9vD,EAAMpG,EAAOi2D,GAC9C,wBAKA3H,EAAM7E,MAAM0M,WAAa,SAAU/vD,EAAMpG,EAAOi2D,GAChD,0BAKA3H,EAAM7E,MAAM2M,YAAc,SAAUhwD,EAAMpG,EAAOi2D,GACjD,0BAKA3H,EAAM7E,MAAM4M,UAAY,SAAUjwD,EAAMpG,EAAOi2D,GAC/C,MAAI,EAAJ,GAAI,EAAJ,EAEA,QAAiB/D,EAAAA,EAASA,GAAAA,EAC1BtyD,EAAAA,GAAAA,EAAAA,MAAAA,UAAAA,EAAAA,EAAAA,EAAAA,GAGA,iBAAgCsyD,GAAAA,EAAUA,IAC1ClmE,EAAAA,IAAAA,EAAAA,EAAAA,GAGA,UAKAsiE,EAAM7E,MAAM6M,cAAgB,SAAUrqD,GACtC,UAIA,IAFAmvB,EAAAA,IAAAA,YAAAA,EAAAA,QACAm7B,EAAAA,IAAAA,WAAAA,GACA,IAAe9sE,EAAAA,EAAAA,OAAmBA,GAAAA,EAClC8sE,EAAAA,GAAAA,EAAAA,GAEA,UAKAjI,EAAM7E,MAAM+M,SAAW,SAAUzqE,GACjC,gDAIAuiE,EAAM7E,MAAMgN,aAAe,SAAUC,EAAKC,GAC1C,QAcA,OAXAn6D,EADA,oBACAA,OAAAA,GAEAA,EAIAA,EADA,EACAA,EAAAA,YAAAA,GAEAA,EAAAA,YAAAA,GAGA,eAMA8xD,EAAM7E,MAAM6D,aAAe,WAG3B,IAFA,MACA,KACA,IAAiBj/D,EAAAA,IAASA,IAAA,CAC1B0b,EAAAA,EACA,YAAqBpI,EAAAA,EAAOA,IAC5BoI,EAAAA,EAAAA,EAAAA,WAAAA,IAAAA,EAAAA,IAAAA,EAEAwjD,EAAAA,GAAAA,EAEA,UAKAe,EAAM7E,MAAM+D,MAAQ,SAApBc,GAIA,IAHA,kEACA,KAEA,IAAmB7kE,EAAAA,EAAAA,WAAyBA,IAC5CgkE,EAAAA,IAAAA,EAAAA,EAAAA,KAAAA,EAAAA,EAAAA,SAAAA,KAGA,kBAQA,qBADwBrkE,GACxB,YACAA,EAAAA,QAAAA,EAAAA,uIC3JA,IAAIg5B,EAASrhB,EAAQ,mCAEjB61D,EAAkB,kBAClBC,EAAc,cACdC,EAAS,uBACTC,EAAiB,oBA+VrB,SAASC,EAAe/hD,EAAMjpB,EAAOirE,EAAWC,GAChD,MA0O6B3sC,EAzO7B,GAyO6BA,EAzO7B,KA2OA,OAEA,EA5OA,UAEA,WACA,aACA,WACA,cACA,MAEA,cACA,aACA,kBACA,YACAjyB,EAAAA,EAAAA,KAAAA,EACA,MAEA,gBACA,eACA,eACA,gBACA,qBACA8pB,EAAAA,iBAAAA,GAAAA,aAAAA,OAAAA,SAAAA,EAAAA,sCACA9pB,EAAAA,EAAAA,KAAAA,EACA,MAEA,UACA,UACA,aACA,aACA8pB,EAAAA,iBAAAA,GAAAA,aAAAA,OAAAA,SAAAA,EAAAA,6BACA9pB,EAAAA,EAAAA,KAAAA,EACA,MAEA,kBACA8pB,EAAAA,EAAAA,SAAAA,EAAAA,SAAAA,EAAAA,+DACAp2B,EAAAA,SAAAA,SAAAA,GAAsCo2B,EAAAA,iBAAAA,GAAAA,aAAAA,OAAAA,SAAAA,EAAAA,oCACtC9pB,EAAAA,EAAAA,MAAAA,EAAAA,KAAAA,KAAAA,IACA,MAEA,aACA,YACA,iBACA8pB,OAAAA,IAAAA,EAAAA,QAAAA,EAAAA,QAAAA,EAAAA,SAAAA,EAAAA,yDACAp2B,EAAAA,SAAAA,SAAAA,GAAsCo2B,EAAAA,iBAAAA,GAAAA,aAAAA,OAAAA,SAAAA,EAAAA,oCACtC9pB,EAAAA,EAAAA,KAAAA,EAAAA,IAAAA,GAAAA,KAAAA,KACA,MAEA,YAMA,eACA,kBACA,eACA,eACA8pB,OAAAA,IAAAA,EAAAA,QAAAA,EAAAA,QAAAA,EAAAA,SAAAA,EAAAA,yDACAp2B,EAAAA,SAAAA,SAAAA,GAAsCo2B,EAAAA,iBAAAA,GAAAA,aAAAA,OAAAA,SAAAA,EAAAA,oCACtC9pB,EAAAA,EAAAA,KAAAA,EAAAA,KAAAA,KACA,MAEA,sBACA8pB,OAAAA,IAAAA,EAAAA,QAAAA,EAAAA,SAAAA,EAAAA,SAAAA,EAAAA,yDACAp2B,EAAAA,SAAAA,SAAAA,GACAo2B,EAAAA,OAAAA,QAAAA,IAAAA,EAAAA,QAAAA,EAAAA,SAAAA,EAAAA,yBAAAA,EAAAA,8DACA,iCAAwDA,EAAAA,iBAAAA,GAAAA,aAAAA,OAAAA,yBAAAA,EAAAA,sCAExD9pB,EAAAA,EAAAA,KAAAA,EAAAA,KAAAA,SAAAA,GAA0D,8CAA8DsC,KAAA,KACxH,MAEA,uBACAwnB,OAAAA,IAAAA,EAAAA,QAAAA,EAAAA,SAAAA,EAAAA,SAAAA,EAAAA,+DACAp2B,EAAAA,SAAAA,SAAAA,GACAo2B,EAAAA,OAAAA,QAAAA,IAAAA,EAAAA,QAAAA,EAAAA,SAAAA,EAAAA,yBAAAA,EAAAA,8DACA,iCAAwDA,EAAAA,iBAAAA,GAAAA,aAAAA,OAAAA,yBAAAA,EAAAA,sCAExD9pB,EAAAA,EAAAA,KAAAA,EAAAA,KAAAA,SAAAA,GAA0D,8CAA8DsC,KAAA,KACxH,MAEA,WAIA,eAIA,aACAwnB,EAAAA,iBAAAA,GAAAA,aAAAA,OAAAA,SAAAA,EAAAA,6BACA9pB,EAAAA,EAAAA,KAAAA,EACA,MACA,eACA,kCAGAA,EAAAA,EAAAA,KAoVA,SAA+B6+D,GAC/B,2CACA,SACK,kDACL,mBACA,qDAEA,wCAGA,kDA9VA7+D,CAAAA,IAEA,MACA,cAIA,YACA8pB,OAAAA,IAAAA,EAAAA,QAAAA,EAAAA,QAAAA,EAAAA,SAAAA,EAAAA,yDACA9pB,EAAAA,EAAAA,KAAAA,EAAAA,IAAAA,GAAAA,KAAAA,KACA,MAEA,QACAkW,QAAAA,KAAAA,4BAAAA,EAAAA,eAEA,SAIA,SAAS4oD,EAAWC,EAAY9sE,GAChC,UAEA,cACA,aACA,kBACA,MAEA,gBACA,gBACA,eACA,eACA,qBACAA,EAAAA,EAAAA,GACA,MAEA,UACA,UACA,aACA,aACAA,EAAAA,EAAAA,GACA,MAEA,kBACAA,EAAAA,EAAAA,GACA,MAEA,aACA,YACA,iBACAA,EAAAA,EAAAA,EAAAA,GACA,MAEA,YACAA,EAAAA,EAAAA,EAAAA,GACA,MAEA,eACA,kBACA,eACA,eACAA,EAAAA,EAAAA,EAAAA,GACA,MAEA,sBACA,uBACAA,EAAAA,EAAAA,EAAAA,GACA,MAEA,WACAA,EAAAA,EAAAA,GACA,MACA,eACAA,EAAAA,EAAAA,GACA,MACA,aACAA,EAAAA,EAAAA,GACA,MACA,eACAA,EA8OA,SAA2B4sE,GAC3B,gBACA,SACA,kBACA,CACA9a,OAAAA,EAAAA,UAAAA,EAAAA,EAAAA,OACA9rC,IAAAA,EAAAA,EAAAA,IACAE,IAAAA,EAAAA,EAAAA,IACA6mD,KAAAA,EAAAA,EAAAA,IACAC,OAAAA,EAAAA,EAAAA,KAGA,CACAlb,OAAAA,EAAAA,UAAAA,EAAAA,EAAAA,OACA9rC,IAAAA,EAAAA,EAAAA,IACAE,IAAAA,EAAAA,EAAAA,IACA6mD,KAAAA,EAAAA,EAAAA,KAIA,EAlQA/sE,CAAAA,GACA,MACA,cACAA,EAAAA,EAAAA,EAAAA,GACA,MACA,YACAA,EAAAA,EAAAA,EAAAA,GACA,MACA,YACAA,EAiLA,SAAwBitE,GACxB,wBACA,8BACA,UACA,gCACA,6BACA,UACA,+BACA,8BACA,UACA,gCACA,mCACA,WACA,qCACA,kCACA,WACA,oCACA,mCACA,WACA,qCACA,kBACA,oBACA,uBACA,yBACA,sBACA,wBACA,qBACA,uBACA,2BACA,6BACA,0BACA,4BACA,QAEA,OADAhpD,QAAAA,KAAAA,uBAAAA,GACA,GAnNAjkB,CAAAA,GACA,MAEA,QACAikB,QAAAA,KAAAA,4BAAAA,GAEA,SAthBAplB,EAAOC,QAAQouE,UAAY,SAAUC,GACrC,MAAI,IAA2CziD,EAAA0iD,EAAAC,EAAAC,EAAAC,EAAAx/D,EAAA82D,EAA3C,EAAJ,EAAI,EAAJ,GAA+C2I,EAAAA,GAG/C,WACAC,EAAAA,GAAAA,EAAAA,GAKA,oBACA,iDAyBA,QAxBK,kBACLA,EAAAA,UAAAA,EAAAA,MAAAA,QAEA,4BACAL,EAAAA,OACK,6BACLA,EAAAA,QACK,6BACLA,EAAAA,QACK,8BACLA,EAAAA,SACK,6BACLA,EAAAA,QACK,8BACLA,EAAAA,SAKK,+BACLA,EAAAA,QACK,iCACLA,EAAAA,eAEA,uBACAK,EAAAA,KAAAA,MACK,oBACL,sEACK,qDACLA,EAAAA,KAAAA,EAAAA,EAAAA,YAEA,eACAA,EAAAA,SAAAA,OACK,6DACLA,EAAAA,SAAAA,EAAAA,EAAAA,WAEA,8EACAA,EAAAA,OAAAA,EACK,sEACLA,EAAAA,YAAAA,GACK,yDACLA,EAAAA,OAAAA,EAAAA,EAAAA,SAIA,aACA,6BACAd,EAAAA,EAAAA,oBACK,oBACL,gBACA,8BACA,UAGA,6BACA,UAGA,8BACA,UAeA,kBAMA,sBAGA,qBACAA,EAAAA,EACA,MAvBA,mCACA,WAGA,kCACA,WAGA,mCACA,WAMA,uBASA,2BAGA,0BACAA,EAAAA,EACA,MACA,QACA1oD,QAAAA,KAAAA,uBAAAA,EAAAA,OAQA,IAHAypD,EAAAA,GAGA,IAAYxuE,EAAAA,EAAAA,MAAAA,OAAqBA,IAAA,CACjC,sFACAyuE,GAAAA,EAAAA,MAAAA,GAEA,WACA,mBACA,mDAEK,aACL,uBAEAN,EADA,sCACAA,EAAAA,UAEAA,EAAAA,EAAAA,MAEA,yBACA,mDAGK,eAGL,0DAIA,UACA,mBACA,UAEAC,EADA,uBACAA,EAAAA,KAAAA,OAAAA,MAAAA,EAAAA,KAAAA,WAAAA,EAAAA,KAAAA,WAAAA,EAAAA,KAAAA,YACa,aACbA,EAAAA,EAAAA,EAAAA,KAAAA,EAAAA,OACAA,OAAAA,MAAAA,EAAAA,WAAAA,EAAAA,WAAAA,EAAAA,YA0+BA,SAA2BzxD,EAAM9P,EAAM6hE,GACvC,MAAI,MAAJ,KAAI,EAAJ,4BACA,UACA,UACAC,GAAAA,EACA,MACA,aACAA,GAAAA,EACA,MACA,QAEA,YADA5pD,QAAAA,KAAAA,wCAAAA,GAIA,OADA+nD,EAAAA,IAAAA,SAAAA,GACA,GACA,WACA,QAAgB9sE,EAAAA,EAAAA,OAAeA,IAC/B8sE,EAAAA,QAAAA,EAAAA,EAAAA,GAAAA,GAEA,SACA,YACA,QAAgB9sE,EAAAA,EAAAA,OAAeA,IAC/B8sE,EAAAA,SAAAA,EAAAA,EAAAA,GAAAA,GAEA,SACA,YACA,QAAgB9sE,EAAAA,EAAAA,OAAeA,IAC/B8sE,EAAAA,SAAAA,EAAAA,EAAAA,EAAAA,GAAAA,GAEA,SACA,aACA,QAAgB9sE,EAAAA,EAAAA,OAAeA,IAC/B8sE,EAAAA,UAAAA,EAAAA,EAAAA,EAAAA,GAAAA,GAEA,SACA,YACA,QAAgB9sE,EAAAA,EAAAA,OAAeA,IAC/B8sE,EAAAA,SAAAA,EAAAA,EAAAA,EAAAA,GAAAA,GAEA,SACA,aACA,QAAgB9sE,EAAAA,EAAAA,OAAeA,IAC/B8sE,EAAAA,UAAAA,EAAAA,EAAAA,EAAAA,GAAAA,GAEA,SAWA,YACA,QAAgB9sE,EAAAA,EAAAA,OAAeA,IAC/B8sE,EAAAA,WAAAA,EAAAA,EAAAA,EAAAA,GAAAA,GAEA,SACA,aACA,QAAgB9sE,EAAAA,EAAAA,OAAeA,IAC/B8sE,EAAAA,WAAAA,EAAAA,EAAAA,EAAAA,GAAAA,GAEA,SACA,QAEA,YADA/nD,QAAAA,KAAAA,+BAAAA,EAAAA,MA1iCAqpD,CAAAA,EAAAA,KAAAA,EAAAA,KAAAA,EAAAA,QAEA,MACA,YAEAA,EADA,UACAA,EAAAA,EAAAA,MAEAA,EAAAA,EAAAA,EAAAA,KAAAA,EAAAA,OAEA,MACA,QACA,+DAEK,WACLA,EAAAA,EAAAA,QAIAE,EAAAA,KAAAA,YACAA,EAAAA,KAAAA,0BAGA,6CACA,QAAYtuE,EAAAA,EAAAA,OAAqBA,SAEjC,MADAwrB,EAAAA,EAAAA,UAGA,KADA3c,EAAAA,EAAAA,EAAAA,EAAAA,GAAAA,EAAAA,UAAAA,KACA,UAIA,gBACA,WACA,sBAEA,KADAA,EAAAA,EAAAA,EAAAA,EAAAA,GAAAA,EAAAA,UAAAA,KACA,WAIA,2BACA,6FACAy/D,EAAAA,KAAAA,EAAAA,KAAAA,EAAAA,GAgJA,0CAnIA,GATA,+BACAA,EAAAA,KAAAA,mBACApuE,MAAAA,UAAAA,KAAAA,MAAAA,EAAAA,EAAAA,WACK,sDACLouE,EAAAA,KAAAA,mBAAAA,EAAAA,SAAAA,QACApuE,MAAAA,UAAAA,KAAAA,MAAAA,EAAAA,EAAAA,SAAAA,QAIA,sBAMA,IALAouE,EAAAA,KAAAA,IACAA,EAAAA,KAAAA,IACA3I,EAAAA,EAAAA,KAAAA,MACAnjD,EAAAA,IAAAA,YAAAA,EAAAA,OAAAA,EAAAA,YACA3iB,EAAAA,IAAAA,WAAAA,GACA,IAAgBG,EAAAA,EAAAA,OAAiBA,IACjCH,EAAAA,GAAAA,EAAAA,WAAAA,GAEAwuE,EAAAA,IAAAA,WAAAA,GACAxuE,EAAAA,IAAAA,EAAAA,EAAAA,aAMA,IAJAyuE,EAAAA,KAAAA,IACA3I,EAAAA,EAAAA,KAAAA,MACAnjD,EAAAA,IAAAA,YAAAA,EAAAA,QACA3iB,EAAAA,IAAAA,WAAAA,GACA,IAAgBG,EAAAA,EAAAA,OAAiBA,IACjCH,EAAAA,GAAAA,EAAAA,WAAAA,GAIA,UAIAF,EAAOC,QAAQ6a,MAAQ,SAAU+H,GACjC,MAAI,IACJ8rD,EAAArb,EAAA2b,EAqV6B9tC,EAtVzB,EAAJ,CAAqCnkB,UAAM/G,EAAN4M,YAAAA,EAAA9Q,KAAAA,GAA0FmJ,aAAAA,GAE/Hg0D,EAAAA,IAAAA,WAAAA,GAUA,IAPA,2BAMA7uE,EAAAA,EACA,YACA,aACA,uCACA8uE,EAAAA,EAAAA,EACA,MAEA9uE,SAES,SACTA,IAEAA,GAAAA,EAiBA,QAZA,MACA2lE,EAAAA,OAAAA,aAAAA,MAAAA,KAAAA,IAEAA,EAAAA,OAAAA,aAAAA,MAAAA,KAAAA,EAAAA,SAAAA,EAAAA,IACAltC,EAAAA,OAAAA,EAAAA,MAAAA,IAOA61C,GADAA,EAAAA,EAAAA,MAAAA,IACAA,QAAAA,SAAAA,GAAuC,iCACvC,aACA,6CAQA,IANA71C,EAAAA,QAAAA,SAAAA,EAAAA,GAAAA,UAAAA,EAAAA,GAAAA,IACA,aACA1T,QAAAA,KAAAA,6EAIA,IAAY/kB,EAAAA,EAAAA,OAAgBA,IAE5B,GADAizD,EAAAA,EAAAA,KAAAA,EAAAA,IAKA,cACAA,EAAAA,IAgSAnyB,GAF6BA,EA9R7BmyB,EAAAA,IAgSAnyB,iBAEA,OAEA,EAnSA,mBACA8tC,EAAAA,EAAAA,KAAAA,EAAAA,MAGA,kBACAn2C,EAAAA,EAAAA,IAAAA,CACAs2C,MAAAA,EAAAA,MAAAA,EAAAA,GACAjB,OAAAA,EAAAA,EAAAA,KAGAr1C,EAAAA,EAAAA,IAAAA,EAAAA,MAAAA,EAAAA,GAEA61C,EAAAA,OAAAA,GAEA71C,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAAA,EAAAA,QAES,eAGT,+CAFAA,EAAAA,KAAAA,EAAAA,IAAAA,EAAAA,GAmCA,mBACA,YAAqB,gCACrBtnB,KAAA,WA3DA4T,QAAAA,KAAAA,qCAAAA,EAAAA,IAgCA,GAHAypD,EAAAA,GAGA,eACAzpD,QAAAA,KAAAA,0CAEA,mBACA,UACA0T,EAAAA,KAyiBA,SAA0BjW,EAAQ3V,EAAMmiE,EAAOhmE,GAC/C,MAAI,MAAJ,EACA,QAAYhJ,EAAAA,EAAAA,OAAgBA,IAAA,CAC5B,gFACAyuE,GAAAA,EAAAA,GAEA,cAEA,gCACK,sCACL,UACA,WAEA,OADAQ,EAAAA,GACA,4BACA,YAEA,OADAA,EAAAA,GACA,6BACA,YAEA,OADAA,EAAAA,GACA,+BACA,aAEA,OADAA,EAAAA,GACA,gCACA,YAEA,OADAA,EAAAA,GACA,+BACA,aAEA,OADAA,EAAAA,GACA,gCAOA,YAEA,OADAA,EAAAA,GACA,iCACA,aAEA,OADAA,EAAAA,GACA,iCACA,QAEA,YADAlqD,QAAAA,KAAAA,0BAAAA,EAAAA,+BAGK,CACL,iBACA,UAGA,aAEA,MACA,QAEA,YADAA,QAAAA,KAAAA,wCAAAA,EAAAA,QAIA,OADA+nD,EAAAA,IAAAA,SAAAA,GACA,GACA,WAEA,IADAjtE,EAAAA,IAAAA,UAAAA,GACA,IAAoBG,EAAAA,EAAYA,IAChCH,EAAAA,GAAAA,EAAAA,QAAAA,GAEA,SACA,YAEA,IADAA,EAAAA,IAAAA,WAAAA,GACA,IAAoBG,EAAAA,EAAYA,IAChCH,EAAAA,GAAAA,EAAAA,SAAAA,GAEA,SACA,YAEA,IADAA,EAAAA,IAAAA,WAAAA,GACA,IAAoBG,EAAAA,EAAYA,IAChCH,EAAAA,GAAAA,EAAAA,SAAAA,EAAAA,GAEA,SACA,aAEA,IADAA,EAAAA,IAAAA,YAAAA,GACA,IAAoBG,EAAAA,EAAYA,IAChCH,EAAAA,GAAAA,EAAAA,UAAAA,EAAAA,GAEA,SACA,YAEA,IADAA,EAAAA,IAAAA,WAAAA,GACA,IAAoBG,EAAAA,EAAYA,IAChCH,EAAAA,GAAAA,EAAAA,SAAAA,EAAAA,GAEA,SACA,aAEA,IADAA,EAAAA,IAAAA,YAAAA,GACA,IAAoBG,EAAAA,EAAYA,IAChCH,EAAAA,GAAAA,EAAAA,UAAAA,EAAAA,GAEA,SAaA,YAEA,IADAA,EAAAA,IAAAA,aAAAA,GACA,IAAoBG,EAAAA,EAAYA,IAChCH,EAAAA,GAAAA,EAAAA,WAAAA,EAAAA,GAEA,SACA,aAEA,IADAA,EAAAA,IAAAA,aAAAA,GACA,IAAoBG,EAAAA,EAAYA,IAChCH,EAAAA,GAAAA,EAAAA,WAAAA,EAAAA,GAEA,SACA,QAEA,YADAklB,QAAAA,KAAAA,0BAAAA,EAAAA,4BAIA,cACA,gFAtqBA0T,CAAAA,EAAAA,OAAAA,EAAAA,KAAAA,EAAAA,MAAAA,CACAi2C,OAAAA,EAAAA,OAAAQ,UAAAA,EAAAA,YAEA,MACA,YACAz2C,EAAAA,KAsqBA,SAA2BjW,EAAQ3V,EAAMmiE,GACzC,MAAI,MAAJ,EACA,QAAYhvE,EAAAA,EAAAA,OAAgBA,IAAA,CAC5B,gFACAyuE,GAAAA,EAAAA,GAKA,GAHAI,EAAAA,IAAAA,WAAAA,IAEAM,EADA73C,OAAAA,aAAAA,MAAAA,KAAAA,GACA63C,MAAAA,IACA,SACA,iDAKA,OAJK,aACL,0BACAA,EAAAA,EAAAA,MAAAA,EAAAA,IAEA,GACA,WACA,+BACA,YACA,gCACA,YACA,gCACA,aACA,iCACA,YACA,gCACA,aACA,iCAKA,YACA,kCACA,aACA,kCACA,QAEA,YADApqD,QAAAA,KAAAA,0BAAAA,EAAAA,MA3sBA0T,CAAAA,EAAAA,OAAAA,EAAAA,KAAAA,EAAAA,OACA,MACA,QACA1T,QAAAA,KAAAA,8BAAAA,EAAAA,UAIA,UAiNA,IAAIqqD,EAA4B,CAChC,yBACA,sBACA,mBACA,gBACA,mBACA,gBACA,uBACA,oBACA,uBACA,oBACA,uBACA,oBACA,6BACA,0BACA,uBACA,uBACA,kBACA,qBACA,mCACA,2BACA,6BACA,qCACA,wCAEIC,EAA4B,WAChC,WACA,WACAz7C,EAAAA,EAAAA,IAAAA,EAEA,SALgC,GAsBhC,SAAS07C,EAAiBh4C,GAC1B,qBACA,iEACA,SAGA,SAASi4C,EAAej4C,GAExB,IADAA,EAAAA,EAAAA,eACA,6BACA,mCACA,kCACA,oBACA,+DACA,SAGA,SAASk4C,EAAgBl4C,GACzB,yBACA,4FACA,uCAGA,SAASm4C,EAAsBn4C,GAC/B,2CACA,kDAEA,wCAGA,SAASo4C,EAA0Bp4C,GACnC,mCAGA,IAAIq4C,EAA0B,SAC9B,SAASC,EAAiCt4C,EAAKu4C,GAC/C,yBAGA,SAASC,EAAchvE,GACvB,wBACA,kBACA,WACA,aACA,aACA,YACA,oBACA,YACA,cACA,cACA,YACA,gBACA,mBACA,uBACA,YACA,cACA,cACA,aACA,qBACA,yBACA,aACA,eACA,eACA,UACA,iBACA,YACA,cACA,cACA,WACA,mBACA,aACA,eACA,eACA,eACA,gBACA,oBACA,uBACA,2BACA,YACA,cACA,cACA,gBACA,yBACA,6BACA,aACA,eACA,eACA,YACA,cACA,aACA,eACA,YACA,cACA,QAEA,OADAikB,QAAAA,KAAAA,2BAAAA,GACA,GAIA,SAASgrD,EAAkBjqB,GAC3B,wBACA,UACA,YACA,UACA,WACA,YACA,cACA,UACA,YACA,SACA,WACA,aACA,UACA,YACA,cACA,QAEA,OADA/gC,QAAAA,KAAAA,+BAAAA,GACA,GA0CA,SAASirD,EAAgBtB,GACzB,wBACA,aACA,eACA,UACA,YACA,QAEA,OADA3pD,QAAAA,KAAAA,iCAAAA,GACA,GAKA,IAAIkrD,EAAmB,uCAuCvB,SAASC,EAAgBC,GACzB,wBACA,WACA,aACA,WACA,aACA,UACA,WACA,YACA,QAEA,OADAprD,QAAAA,KAAAA,6BAAAA,GACA,GAIA,IAAIqrD,EAAY,CAChB,gBACA,cACA,YACA,YACA,cACA,gBACA,sCACA,gBACA,YACA,gBACA,kBACA,sBACA,oBACA,wBACA,wBACA,wBACA,oBACA,0BACA,sBACA,0BACA,sBACA,sBACA,wBACA,4CACA,0DACA,wBACA,sCACA,4CACA,0DACA,wBACA,sCACA,WACA,WAEA,SAASC,EAAcC,GACvB,sBACA,oBACAvrD,QAAAA,KAAAA,2BAAAA,GACA,GAGA,SAASwrD,EAAsBtlD,GAC/B,wBAGA,IAAIulD,EAAmB,WACvB,yBACAC,EAAAA,IAAAA,YAAAA,GACAC,EAAAA,IAAAA,WAAAA,GAEA,OADAD,EAAAA,GAAAA,SACA,mCACA,MACK,mCACL,cAEA1rD,QAAAA,KAAAA,mCAVuB,GA+InB4rD,EAAqC,iBA4CzC,SAASC,EAAgB/jE,GACzB,UACA,WAEA,YACA,SACA,YAEA,aACA,SACA,YAEA,aAMA,YACA,SALA,YAEA,aAIA,aACA,SACA,QACA,0DAIA,SAAS2hE,EAAU/1C,GAEnB,wBACA,qDACK,mBACL,gDACK,uBACL,oDACK,oBACL,iDAIA,qDACAA,SAAAA,EAAAA,eAAAA,IAAAA,EAAAA,OACA,sDACK,yCACL,oDAIA,mBACA,+CACK,+BACL,oFACK,8CACL,uFACK,oDACL,0FACK,8CACL,wFACK,8CACL,wFACK,4CACL,sFACK,0CACL,qFACK,wCACL,oFACK,wCACL,oFAMA,2GACA,kEAIA,SAASo4C,EAAel0D,EAAM9P,GAC9B,UACA,WACA,wBACA,YACA,yBACA,YACA,yBACA,aACA,0BACA,YACA,yBACA,aACA,0BAKA,YACA,2BACA,aACA,2BACA,QACA,iDA2EA,SAASikE,EAAsBn0D,GAC/B,MAAI,QAAJ,oBACA,QAAY3c,EAAAA,EAAAA,OAAeA,IAC3B+wE,EAAAA,GAAAA,GAAAA,EAAAA,GAKA,IAHAz5C,EAAAA,EAAAA,KAAAA,KACA9U,EAAAA,IAAAA,YAAAA,EAAAA,QACA3iB,EAAAA,IAAAA,WAAAA,GACA,IAAYG,EAAAA,EAAAA,OAAcA,IAC1BH,EAAAA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BACtB,CAAC,mBAAqB,oBACtB,CAAC,mBAAqB,oBACtB,CAAC,mBAAqB,oBACtB,CAAC,mBAAqB,oBACtB,CAAC,mBAAqB,oBACtB,CAAC,mBAAqB,oBACtB,CAAC,mBAAqB,oBACtB,CAAC,mBAAqB,oBACtB,CAAC,mBAAqB,oBACtB,CAAC,mBAAqB,oBACtB,CAAC,mBAAqB,oBACtB,CAAC,mBAAqB,oBACtB,CAAC,mBAAqB,oBACtB,CAAC,mBAAqB,oBACtB,CAAC,kBAAoB,mBACrB,CAAC,kBAAoB,mBACrB,CAAC,mBAAqB,oBACtB,CAAC,mBAAqB,oBACtB,CAAC,kBAAoB,mBACrB,CAAC,kBAAoB,mBACrB,CAAC,mBAAqB,oBACtB,CAAC,mBAAqB,oBACtB,CAAC,mBAAqB,oBACtB,CAAC,mBAAqB,oBACtB,CAAC,kBAAoB,mBACrB,CAAC,kBAAoB,mBACrB,CAAC,mBAAqB,oBACtB,CAAC,mBAAqB,oBACtB,CAAC,mBAAqB,oBACtB,CAAC,GAAK,IACN,CAAC,mBAAqB,oBACtB,CAAC,mBAAqB,oBACtB,CAAC,mBAAqB,oBACtB,CAAC,mBAAqB,oBACtB,CAAC,kBAAoB,mBACrB,CAAC,kBAAoB,mBACrB,CAAC,mBAAqB,oBACtB,CAAC,mBAAqB,oBACtB,CAAC,mBAAqB,oBACtB,CAAC,mBAAqB,oBACtB,CAAC,mBAAqB,oBACtB,CAAC,mBAAqB,oBACtB,CAAC,mBAAqB,oBACtB,CAAC,kBAAoB,mBACrB,CAAC,mBAAqB,oBACtB,CAAC,kBAAoB,mBACrB,CAAC,mBAAqB,oBACtB,CAAC,mBAAqB,oBACtB,CAAC,mBAAqB,oBACtB,CAAC,kBAAoB,mBACrB,CAAC,kBAAoB,mBACrB,CAAC,mBAAqB,oBACtB,CAAC,kBAAoB,mBACrB,CAAC,mBAAqB,oBACtB,CAAC,kBAAoB,mBACrB,CAAC,mBAAqB,oBACtB,CAAC,kBAAoB,mBACrB,CAAC,mBAAqB,oBACtB,CAAC,kBAAoB,mBACrB,CAAC,kBAAoB,mBACrB,CAAC,kBAAoB,mBACrB,CAAC,kBAAoB,mBACrB,CAAC,mBAAqB,oBACtB,CAAC,kBAAoB,mBACrB,CAAC,mBAAqB,oBACtB,CAAC,kBAAoB,mBACrB,CAAC,mBAAqB,oBACtB,CAAC,mBAAqB,oBACtB,CAAC,mBAAqB,oBACtB,CAAC,kBAAoB,mBACrB,CAAC,kBAAoB,mBACrB,CAAC,mBAAqB,oBACtB,CAAC,kBAAoB,mBACrB,CAAC,mBAAqB,oBACtB,CAAC,kBAAoB,mBACrB,CAAC,kBAAoB,mBACrB,CAAC,kBAAoB,mBACrB,CAAC,mBAAqB,oBACtB,CAAC,mBAAqB,oBACtB,CAAC,iBAAmB,kBACpB,CAAC,GAAK,IACN,CAAC,iBAAmB,kBACpB,CAAC,mBAAqB,oBACtB,CAAC,kBAAoB,mBACrB,CAAC,mBAAqB,oBACtB,CAAC,kBAAoB,mBACrB,CAAC,kBAAoB,mBACrB,CAAC,mBAAqB,oBACtB,CAAC,mBAAqB,oBACtB,CAAC,mBAAqB,oBACtB,CAAC,kBAAoB,mBACrB,CAAC,mBAAqB,oBACtB,CAAC,kBAAoB,mBACrB,CAAC,mBAAqB,oBACtB,CAAC,kBAAoB,mBACrB,CAAC,kBAAoB,mBACrB,CAAC,kBAAoB,mBACrB,CAAC,kBAAoB,mBACrB,CAAC,mBAAqB,oBACtB,CAAC,kBAAoB,mBACrB,CAAC,mBAAqB,oBACtB,CAAC,kBAAoB,mBACrB,CAAC,mBAAqB,oBACtB,CAAC,mBAAqB,oBACtB,CAAC,mBAAqB,oBACtB,CAAC,kBAAoB,mBACrB,CAAC,kBAAoB,mBACrB,CAAC,kBAAoB,mBACrB,CAAC,kBAAoB,mBACrB,CAAC,kBAAoB,mBACrB,CAAC,kBAAoB,mBACrB,CAAC,kBAAoB,mBACrB,CAAC,kBAAoB,mBACrB,CAAC,kBAAoB,mBACrB,CAAC,kBAAoB,mBACrB,CAAC,kBAAoB,mBACrB,CAAC,kBAAoB,mBACrB,CAAC,kBAAoB,mBACrB,CAAC,kBAAoB,mBACrB,CAAC,kBAAoB,mBACrB,CAAC,kBAAoB,mBACrB,CAAC,kBAAoB,mBACrB,CAAC,kBAAoB,mBACrB,CAAC,kBAAoB,mBACrB,CAAC,kBAAoB,mBACrB,CAAC,kBAAoB,mBACrB,CAAC,kBAAoB,mBACrB,CAAC,kBAAoB,mBACrB,CAAC,kBAAoB,mBACrB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,GAAK,IACN,CAAC,kBAAoB,mBACrB,CAAC,kBAAoB,mBACrB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,kBAAoB,mBACrB,CAAC,kBAAoB,mBACrB,CAAC,kBAAoB,mBACrB,CAAC,kBAAoB,mBACrB,CAAC,kBAAoB,mBACrB,CAAC,kBAAoB,mBACrB,CAAC,kBAAoB,mBACrB,CAAC,kBAAoB,mBACrB,CAAC,kBAAoB,mBACrB,CAAC,kBAAoB,mBACrB,CAAC,kBAAoB,mBACrB,CAAC,kBAAoB,mBACrB,CAAC,kBAAoB,mBACrB,CAAC,kBAAoB,mBACrB,CAAC,kBAAoB,mBACrB,CAAC,kBAAoB,mBACrB,CAAC,kBAAoB,mBACrB,CAAC,kBAAoB,mBACrB,CAAC,kBAAoB,mBACrB,CAAC,kBAAoB,mBACrB,CAAC,kBAAoB,mBACrB,CAAC,kBAAoB,mBACrB,CAAC,kBAAoB,mBACrB,CAAC,kBAAoB,mBACrB,CAAC,kBAAoB,mBACrB,CAAC,kBAAoB,mBACrB,CAAC,kBAAoB,mBACrB,CAAC,kBAAoB,mBACrB,CAAC,kBAAoB,mBACrB,CAAC,kBAAoB,mBACrB,CAAC,kBAAoB,mBACrB,CAAC,kBAAoB,mBACrB,CAAC,kBAAoB,mBACrB,CAAC,kBAAoB,mBACrB,CAAC,kBAAoB,mBACrB,CAAC,kBAAoB,mBACrB,CAAC,kBAAoB,mBACrB,CAAC,kBAAoB,mBACrB,CAAC,kBAAoB,mBACrB,CAAC,kBAAoB,mBACrB,CAAC,kBAAoB,mBACrB,CAAC,kBAAoB,mBACrB,CAAC,kBAAoB,mBACrB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,GAAK,IACN,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,kBAAoB,mBACrB,CAAC,kBAAoB,mBACrB,CAAC,kBAAoB,mBACrB,CAAC,kBAAoB,mBACrB,CAAC,kBAAoB,mBACrB,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,EAAG,EAAG,EAAG,EAAG,IAChC4gI,WAAW5gI,KAAK,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,IAChC4gI,WAAW5gI,KAAK,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,IAChC4gI,WAAW5gI,KAAK,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,IAChC4gI,WAAW5gI,KAAK,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,IAChC4gI,WAAW5gI,KAAK,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,IAChC4gI,WAAW5gI,KAAK,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,IAChC4gI,WAAW5gI,KAAK,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,IAChC4gI,WAAW5gI,KAAK,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,IAChC4gI,WAAW5gI,KAAK,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,IAChC4gI,WAAW5gI,KAAK,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,IAChC4gI,WAAW5gI,KAAK,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,IAChC4gI,WAAW5gI,KAAK,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,IAChC4gI,WAAW5gI,KAAK,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,IAChC4gI,WAAW5gI,KAAK,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,IAChC4gI,WAAW5gI,KAAK,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,IAChC4gI,WAAW5gI,KAAK,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,IAChC4gI,WAAW5gI,KAAK,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,IAChC4gI,WAAW5gI,KAAK,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,IAChC4gI,WAAW5gI,KAAK,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,IAChC4gI,WAAW5gI,KAAK,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,IAChC4gI,WAAW5gI,KAAK,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,IAChC4gI,WAAW5gI,KAAK,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,IAChC4gI,WAAW5gI,KAAK,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,IAChC4gI,WAAW5gI,KAAK,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,IAChC4gI,WAAW5gI,KAAK,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,IAChC4gI,WAAW5gI,KAAK,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,IAChC4gI,WAAW5gI,KAAK,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,IAChC4gI,WAAW5gI,KAAK,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,IAChC4gI,WAAW5gI,KAAK,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,IAChC4gI,WAAW5gI,KAAK,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,IAChC4gI,WAAW5gI,KAAK,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,IAChC4gI,WAAW5gI,KAAK,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,IAChC4gI,WAAW5gI,KAAK,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,IAChC4gI,WAAW5gI,KAAK,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,IAChC4gI,WAAW5gI,KAAK,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,IAChC4gI,WAAW5gI,KAAK,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,IAChC4gI,WAAW5gI,KAAK,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,IAChC4gI,WAAW5gI,KAAK,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,IAChC4gI,WAAW5gI,KAAK,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,IAChC4gI,WAAW5gI,KAAK,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,IAChC4gI,WAAW5gI,KAAK,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,IAChC4gI,WAAW5gI,KAAK,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,IAChC4gI,WAAW5gI,KAAK,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,IAChC4gI,WAAW5gI,KAAK,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,IAChC4gI,WAAW5gI,KAAK,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,IAChC4gI,WAAW5gI,KAAK,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,IAChC4gI,WAAW5gI,KAAK,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,IAChC4gI,WAAW5gI,KAAK,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,IAChC4gI,WAAW5gI,KAAK,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,IAChC4gI,WAAW5gI,KAAK,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,IAChC4gI,WAAW5gI,KAAK,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,IAChC4gI,WAAW5gI,KAAK,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,IAChC4gI,WAAW5gI,KAAK,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,IAChC4gI,WAAW5gI,KAAK,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,IAChC4gI,WAAW5gI,KAAK,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,IAChC4gI,WAAW5gI,KAAK,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,IAChC4gI,WAAW5gI,KAAK,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,IAChC4gI,WAAW5gI,KAAK,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,IAChC4gI,WAAW5gI,KAAK,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,IAChC4gI,WAAW5gI,KAAK,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,IAChC4gI,WAAW5gI,KAAK,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,IAChC4gI,WAAW5gI,KAAK,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,IAChC4gI,WAAW5gI,KAAK,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,IAChC4gI,WAAW5gI,KAAK,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,IAChC4gI,WAAW5gI,KAAK,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,IAChC4gI,WAAW5gI,KAAK,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,IAChC4gI,WAAW5gI,KAAK,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,IAChC4gI,WAAW5gI,KAAK,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,IAChC4gI,WAAW5gI,KAAK,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,IAChC4gI,WAAW5gI,KAAK,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,IAChC4gI,WAAW5gI,KAAK,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,IAChC4gI,WAAW5gI,KAAK,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,IAChC4gI,WAAW5gI,KAAK,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,IAChC4gI,WAAW5gI,KAAK,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,IAChC4gI,WAAW5gI,KAAK,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,IAChC4gI,WAAW5gI,KAAK,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,IAChC4gI,WAAW5gI,KAAK,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,IAChC4gI,WAAW5gI,KAAK,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,IAChC4gI,WAAW5gI,KAAK,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,IAChC4gI,WAAW5gI,KAAK,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,IAChC4gI,WAAW5gI,KAAK,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,IAChC4gI,WAAW5gI,KAAK,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,IAChC4gI,WAAW5gI,KAAK,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,IAChC4gI,WAAW5gI,KAAK,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,IAChC4gI,WAAW5gI,KAAK,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,IAChC4gI,WAAW5gI,KAAK,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,IAChC4gI,WAAW5gI,KAAK,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,IAChC4gI,WAAW5gI,KAAK,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,IAChC4gI,WAAW5gI,KAAK,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,IAChC4gI,WAAW5gI,KAAK,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,IAChC4gI,WAAW5gI,KAAK,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,IAChC4gI,WAAW5gI,KAAK,CAAC,EAAG,EAAG,EAAG,EAAG,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MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MACnG,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MACnG,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MACnG,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MACnG,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MACnG,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MACnG,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MACnG,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MACnG,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MACnG,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MACnG,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MACnG,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MACnG,MAAS,MAAS,MAAS,MAAS,KAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MACnG,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MACnG,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MACnG,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MACnG,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MACnG,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MACnG,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MACnG,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MACnG,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MACnG,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MACnG,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MACnG,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MACnG,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MACnG,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MACnG,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MACnG,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MACnG,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MACnG,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MACnG,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MACnG,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MACnG,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MACnG,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MACnG,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MACnG,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MACnG,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MACnG,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MACnG,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MACnG,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MACnG,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MACnG,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MACnG,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MACnG,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MACnG,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MACnG,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MACnG,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MACnG,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MACnG,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MACnG,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MACnG,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MACnG,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MACnG,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MACnG,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MACnG,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MACnG,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MACnG,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MACnG,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MACnG,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MACnG,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MACnG,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MACnG,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MACnG,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MACnG,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MACnG,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MACnG,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,KAAS,MAAS,MAAS,MAAS,MAAS,MACnG,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MACnG,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MACnG,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MACnG,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MACnG,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MACnG,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MACnG,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MACnG,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MACnG,MAAS,MAAS,KAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MACnG,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MACnG,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,KAAS,MAAS,MACnG,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MACnG,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MACnG,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MACnG,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MACnG,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MACnG,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MACnG,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MACnG,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MACnG,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MACnG,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MACnG,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MACnG,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MACnG,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MACnG,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MACnG,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MACnG,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MACnG,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MACnG,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MACnG,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MACnG,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MACnG,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MACnG,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MACnG,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MACnG,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MACnG,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MACnG,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MACnG,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MACnG,IAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OACnG,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OACnG,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OACnG,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OACnG,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OACnG,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OACnG,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OACnG,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OACnG,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OACnG,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OACnG,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OACnG,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OACnG,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OACnG,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OACnG,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OACnG,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OACnG,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OACnG,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OACnG,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OACnG,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OACnG,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OACnG,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OACnG,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OACnG,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OACnG,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OACnG,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OACnG,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OACnG,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OACnG,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OACnG,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OACnG,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OACnG,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OACnG,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OACnG,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OACnG,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OACnG,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OACnG,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OACnG,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OACnG,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OACnG,OAAS,OAAS,OAAS,MAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OACnG,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OACnG,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OACnG,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OACnG,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OACnG,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OACnG,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OACnG,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OACnG,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OACnG,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OACnG,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OACnG,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OACnG,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OACnG,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OACnG,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OACnG,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OACnG,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OACnG,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OACnG,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OACnG,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OACnG,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OACnG,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OACnG,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OACnG,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OACnG,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OACnG,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OACnG,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OACnG,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OACnG,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OACnG,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OACnG,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OACnG,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OACnG,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OACnG,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OACnG,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OACnG,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OACnG,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OACnG,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OACnG,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OACnG,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OACnG,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OACnG,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OACnG,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OACnG,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OACnG,OAAS,OAAS,OAAS,OAAS,MAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OACnG,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OACnG,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OACnG,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OACnG,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OACnG,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OACnG,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OACnG,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OACnG,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OACnG,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OACnG,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OACnG,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OACnG,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OACnG,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OACnG,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OACnG,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OACnG,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,MAAS,OAAS,OAAS,OACnG,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OACnG,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OACnG,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OACnG,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OACnG,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OACnG,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OACnG,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OACnG,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OACnG,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OACnG,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OACnG,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OACnG,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OACnG,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OACnG,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OACnG,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OACnG,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OACnG,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OACnG,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OACnG,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OACnG,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OACnG,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OACnG,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OACnG,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OACnG,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OACnG,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OACnG,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OACnG,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OACnG,OAAS,OAAS,SAKtB8omB,EAAaS,eAAiB3oe,WAAW5gI,KAAK,CAC1C,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KAC3G,IAAK,IAAK,KAAM,IAAK,KAAM,IAAK,KAAM,IAAK,IAAK,IAAK,KAAM,KAAM,IAAK,IAAK,IAAK,KAAM,IAAK,KAAM,IAAK,KAAM,IAC5G,IAAK,IAAK,IAAK,KAAM,IAAK,IAAK,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KACvG,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,IAAK,IAAK,IAAK,IAAK,IAAK,KAAM,IAAK,IAC5G,KAAM,IAAK,IAAK,IAAK,KAAM,IAAK,KAAM,IAAK,IAAK,IAAK,IAAK,KAAM,KAAM,IAAK,IAAK,KAAM,IAAK,KAAM,IAAK,KAAM,IAC5G,IAAK,IAAK,KAAM,IAAK,IAAK,KAAM,KAAM,KAAM,KAAM,IAAK,IAAK,KAAM,IAAK,KAAM,IAAK,KAAM,KAAM,IAAK,IAAK,IAAK,IAC7G,KAAM,IAAK,KAAM,IAAK,IAAK,IAAK,KAAM,KAAM,KAAM,KAAM,IAAK,KAAM,KAAM,KAAM,KAAM,KAAM,IAAK,IAAK,IAAK,IAC1G,KAAM,KAAM,KAAM,IAAK,IAAK,IAAK,IAAK,KAAM,IAAK,IAAK,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,IAAK,IAAK,IAAK,IACzG,KAAM,IAAK,KAAM,IAAK,IAAK,IAAK,IAAK,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KACvG,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,IAC5G,IAAK,IAAK,IAAK,IAAK,KAAM,KAAM,IAAK,IAAK,IAAK,KAAM,IAAK,KAAM,IAAK,IAAK,IAAK,IAAK,KAAM,KAAM,IAAK,KAAM,IAC3G,KAAM,IAAK,KAAM,IAAK,IAAK,IAAK,KAAM,IAAK,IAAK,KAAM,KAAM,KAAM,KAAM,IAAK,KAAM,IAAK,KAAM,KAAM,IAAK,IACzG,KAAM,IAAK,KAAM,IAAK,IAAK,IAAK,KAAM,KAAM,KAAM,IAAK,KAAM,KAAM,IAAK,IAAK,KAAM,IAAK,KAAM,IAAK,KAAM,KACzG,KAAM,IAAK,IAAK,IAAK,KAAM,IAAK,KAAM,IAAK,KAAM,IAAK,IAAK,IAAK,KAAM,KAAM,KAAM,KAAM,KAAM,IAAK,KAAM,IACzG,KAAM,KAAM,KAAM,KAAM,KAAM,IAAK,KAAM,KAAM,IAAK,IAAK,IAAK,IAAK,KAAM,KAAM,KAAM,IAAK,IAAK,IAAK,KAAM,IAC1G,IAAK,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,IAAK,IAAK,IAAK,KAAM,IAAK,KAAM,IAAK,IAAK,IAAK,IAAK,KAAM,KAAM,KACzG,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,IAAK,IAAK,KAAM,IAAK,KAAM,IAAK,KAAM,IAAK,IAAK,IAAK,KAAM,IAAK,IAAK,KACzG,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,IAAK,IAAK,IAC1G,IAAK,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,IAAK,IAAK,IAAK,KAAM,IAAK,IAAK,KAAM,KAAM,KAC5G,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAC5G,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,IAAK,KAAM,IAAK,IAAK,IAAK,KACxG,IAAK,KAAM,IAAK,KAAM,KAAM,IAAK,KAAM,IAAK,KAAM,IAAK,KAAM,IAAK,IAAK,IAAK,KAAM,KAAM,KAAM,KAAM,KAAM,IAC1G,IAAK,KAAM,IAAK,KAAM,KAAM,IAAK,IAAK,IAAK,KAAM,IAAK,KAAM,IAAK,IAAK,IAAK,KAAM,KAAM,KAAM,KAAM,KAAM,KACzG,IAAK,KAAM,KAAM,KAAM,IAAK,KAAM,IAAK,KAAM,IAAK,KAAM,IAAK,IAAK,KAAM,KAAM,KAAM,KAAM,IAAK,KAAM,IAAK,KAC1G,KAAM,KAAM,KAAM,IAAK,KAAM,IAAK,KAAM,KAAM,KAAM,KAAM,IAAK,IAAK,KAAM,IAAK,KAAM,IAAK,KAAM,IAAM,IAAK,IAC3G,IAAK,KAAM,IAAK,KAAM,KAAM,KAAM,KAAM,KAAM,IAAK,KAAM,IAAK,KAAM,KAAM,KAAM,KAAM,IAAK,KAAM,KAAM,KACvG,KAAM,KAAM,IAAK,IAAK,KAAM,KAAM,KAAM,IAAK,IAAK,IAAK,KAAM,IAAK,KAAM,KAAM,KAAM,KAAM,KAAM,IAAK,IAAK,IAC1G,KAAM,IAAK,KAAM,IAAK,IAAK,IAAK,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,IAAK,KAAM,IAAK,KAAM,IAAK,KAC3G,IAAK,IAAK,IAAK,KAAM,IAAK,IAAK,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,IAC7G,IAAK,KAAM,IAAK,KAAM,IAAK,KAAM,KAAM,IAAK,IAAK,IAAK,KAAM,IAAK,KAAM,IAAK,IAAK,KAAM,KAAM,KAAM,KAAM,IACzG,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,IAAK,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,IAAK,IAAK,IACzG,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,IAAK,IAAK,KAAM,IAAK,IAAK,KAAM,KAAM,KAAM,KAAM,KACxG,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,IAAK,IAAK,KAAM,IAAK,KAAM,IAAK,IAAK,IAAK,KAAM,KAC5G,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAC5G,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAC5G,IAAK,IAAK,IAAK,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KACzG,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,IAAK,KAAM,IAAK,KAAM,IAAK,IACzG,IAAK,KAAM,IAAK,KAAM,IAAK,KAAM,IAAK,IAAK,IAAK,KAAM,KAAM,KAAM,KAAM,IAAK,IAAK,KAAM,IAAK,KAAM,IAAK,KACxG,KAAM,IAAK,IAAK,IAAK,IAAK,KAAM,IAAK,KAAM,IAAK,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,GAAI,GAAI,KAAM,GAAI,KAAM,GAC5G,KAAM,KAAM,KAAM,GAAI,GAAI,GAAI,KAAM,GAAI,KAAM,GAAI,KAAM,GAAI,GAAI,GAAI,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,IACxG,KAAM,KAAM,KAAM,KAAM,GAAI,GAAI,KAAM,GAAI,KAAM,KAAM,KAAM,KAAM,GAAI,KAAM,GAAI,KAAM,GAAI,KAAM,KAAM,GAAI,GAC1G,KAAM,GAAI,KAAM,KAAM,KAAM,KAAM,GAAI,KAAM,GAAI,KAAM,GAAI,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,GAAI,GAAI,KAAM,KAC5G,KAAM,KAAM,GAAI,KAAM,GAAI,KAAM,KAAM,KAAM,GAAI,KAAM,GAAI,KAAM,GAAI,KAAM,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,IAC3G,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,KAAM,KAAM,KAAM,KAAM,KAAM,IAAK,IAAK,IAAK,KAAM,KAAM,KAAM,KAAM,KAAM,KACxG,IAAK,IAAK,IAAK,KAAM,IAAK,KAAM,IAAK,IAAK,IAAK,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,IAAK,IAC1G,IAAK,KAAM,IAAK,KAAM,IAAK,KAAM,IAAK,IAAK,IAAK,IAAK,KAAM,IAAK,IAAK,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KACzG,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,IAAK,KAAM,IAAK,KAAM,IAAK,KAAM,KAAM,IAAK,IAAK,KAAM,IAAK,KAAM,IAAK,IAC3G,IAAK,KAAM,KAAM,KAAM,KAAM,IAAK,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,IAAK,KAAM,IACzG,KAAM,IAAK,KAAM,KAAM,KAAM,IAAK,IAAK,KAAM,IAAK,KAAM,IAAK,KAAM,IAAK,IAAK,IAAK,KAAM,KAAM,KAAM,KAAM,IAC1G,KAAM,IAAK,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,IAC3G,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,IAAK,IAAK,IAAK,IAAK,KAAM,IAAK,IAAK,KAAM,KAAM,KAC5G,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,IAAK,IAAK,KAAM,IAAK,KAAM,IAAK,IAAK,IAC7G,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,IAC5G,IAAK,KAAM,IAAK,KAAM,IAAK,KAAM,IAAK,IAAK,KAAM,IAAK,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAC5G,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,IAAK,IAAK,KAAM,KAC1G,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,IAAK,IAAK,IAAK,IAAK,KACxG,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,IAC5G,IAAK,IAAK,KAAM,IAAK,IAAK,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KACxG,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAC5G,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAC5G,KAAM,KAAM,KAAM,KAAM,IAAK,IAAK,KAAM,IAAK,IAAK,IAAK,KAAM,KAAM,IAAK,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAC5G,KAAM,KAAM,IAAK,IAAK,IAAK,KAAM,IAAK,IAAK,IAAK,KAAM,KAAM,IAAK,IAAK,KAAM,IAAK,IAAK,KAAM,KAAM,KAAM,KACxG,IAAK,IAAK,IAAK,IAAK,KAAM,IAAK,KAAM,IAAK,IAAK,IAAK,KAAM,KAA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KAAM,IAAK,KAAM,IACzG,KAAM,KAAM,IAAK,IAAK,IAAK,IAAK,KAAM,IAAK,KAAM,IAAK,KAAM,IAAK,IAAK,IAAK,KAAM,KAAM,KAAM,IAAK,IAAK,IAAK,KAC5G,IAAK,KAAM,IAAK,KAAM,KAAM,IAAK,KAAM,IAAK,IAAK,KAAM,KAAM,KAAM,KAAM,KAAM,IAAK,KAAM,IAAK,KAAM,IAAK,KAC1G,KAAM,KAAM,IAAK,IAAK,KAAM,IAAK,IAAK,KAAM,KAAM,KAAM,KAAM,IAAK,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KACvG,KAAM,IAAK,IAAK,IAAK,IAAK,IAAK,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,IAAK,IAAK,IAAK,IAAK,KAAM,IAAK,IAAK,KACvG,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,IAAK,IAAK,IAAK,KAAM,IAAK,IAAK,IAAK,KAAM,KAAM,KAAM,KAAM,KAC5G,KAAM,KAAM,KAAM,KAAM,IAAK,IAAK,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,IAAK,IAAK,IAAK,KAAM,KAAM,KAAM,KACvG,KAAM,KAAM,KAAM,KAAM,IAAK,IAAK,IAAK,IAAK,IAAK,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KACvG,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,IAAK,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAC3G,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,IAAK,IAAK,KAAM,KAC1G,KAAM,KAAM,IAAK,KAAM,KAAM,KAAM,KAAM,IAAK,KAAM,KAAM,KAAM,IAAK,IAAK,KAAM,IAAK,IAAK,KAAM,KAAM,KAAM,IAC5G,KAAM,KAAM,IAAK,IAAK,KAAM,KAAM,KAAM,KAAM,IAAK,IAAK,IAAK,KAAM,KAAM,KAAM,IAAK,KAAM,KAAM,KAAM,IAAK,IAC3G,IAAK,KAAM,KAAM,KAAM,KAAM,KAAM,IAAK,KAAM,IAAK,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,IAAK,IAAK,IAA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","sources":["../node_modules/@babel/runtime/helpers/arrayLikeToArray.js","../node_modules/@babel/runtime/helpers/arrayWithoutHoles.js","../node_modules/@babel/runtime/helpers/assertThisInitialized.js","../node_modules/@babel/runtime/helpers/classCallCheck.js","../node_modules/@babel/runtime/helpers/createClass.js","../node_modules/@babel/runtime/helpers/createSuper.js","../node_modules/@babel/runtime/helpers/defineProperty.js","../node_modules/@babel/runtime/helpers/get.js","../node_modules/@babel/runtime/helpers/getPrototypeOf.js","../node_modules/@babel/runtime/helpers/inherits.js","../node_modules/@babel/runtime/helpers/isNativeReflectConstruct.js","../node_modules/@babel/runtime/helpers/iterableToArray.js","../node_modules/@babel/runtime/helpers/nonIterableSpread.js","../node_modules/@babel/runtime/helpers/possibleConstructorReturn.js","../node_modules/@babel/runtime/helpers/setPrototypeOf.js","../node_modules/@babel/runtime/helpers/superPropBase.js","../node_modules/@babel/runtime/helpers/toConsumableArray.js","../node_modules/@babel/runtime/helpers/typeof.js","../node_modules/@babel/runtime/helpers/unsupportedIterableToArray.js","../node_modules/@babel/runtime/regenerator/index.js","../node_modules/@sentry/src/hub.ts","../node_modules/@sentry/src/scope.ts","../node_modules/@sentry/src/session.ts","../node_modules/src/errors.ts","../node_modules/src/hubextensions.ts","../node_modules/src/idletransaction.ts","../node_modules/src/utils.ts","../node_modules/@sentry/src/baggage.ts","../node_modules/@sentry/src/browser.ts","../node_modules/@sentry/src/buildPolyfills/_nullishCoalesce.ts","../node_modules/@sentry/src/global.ts","../node_modules/@sentry/src/instrument.ts","../node_modules/@sentry/src/is.ts","../node_modules/@sentry/src/logger.ts","../node_modules/@sentry/src/misc.ts","../node_modules/@sentry/src/node.ts","../node_modules/@sentry/src/env.ts","../node_modules/@sentry/src/object.ts","../node_modules/@sentry/src/stacktrace.ts","../node_modules/@sentry/src/string.ts","../node_modules/@sentry/src/supports.ts","../node_modules/@sentry/src/syncpromise.ts","../node_modules/@sentry/src/time.ts","../node_modules/abstract-leveldown/abstract-chained-batch.js","../node_modules/abstract-leveldown/abstract-iterator.js","../node_modules/abstract-leveldown/abstract-leveldown.js","../node_modules/abstract-leveldown/node_modules/xtend/index.js","../AMI/webpack/universalModuleDefinition","../AMI/webpack/bootstrap","../AMI/external/scripts/jpeg.js","../AMI/external/scripts/jpx.js","../AMI/node_modules/OpenJPEG.js/dist/openJPEG-DynamicMemory-browser.js","../AMI/node_modules/assert/assert.js","../AMI/node_modules/base64-js/index.js","../AMI/node_modules/buffer/index.js","../AMI/node_modules/const-ninf-float32/lib/index.js","../AMI/node_modules/const-pinf-float32/lib/index.js","../AMI/node_modules/dicom-parser/dist/dicomParser.min.js","../AMI/node_modules/events/events.js","../AMI/node_modules/ieee754/index.js","../AMI/node_modules/inherits/inherits_browser.js","../AMI/node_modules/isarray/index.js","../AMI/node_modules/jpeg-lossless-decoder-js/src/component-spec.js","../AMI/node_modules/jpeg-lossless-decoder-js/src/data-stream.js","../AMI/node_modules/jpeg-lossless-decoder-js/src/decoder.js","../AMI/node_modules/jpeg-lossless-decoder-js/src/frame-header.js","../AMI/node_modules/jpeg-lossless-decoder-js/src/huffman-table.js","../AMI/node_modules/jpeg-lossless-decoder-js/src/main.js","../AMI/node_modules/jpeg-lossless-decoder-js/src/quantization-table.js","../AMI/node_modules/jpeg-lossless-decoder-js/src/scan-component.js","../AMI/node_modules/jpeg-lossless-decoder-js/src/scan-header.js","../AMI/node_modules/jpeg-lossless-decoder-js/src/utils.js","../AMI/node_modules/math-abs/lib/index.js","../AMI/node_modules/math-ceil/lib/index.js","../AMI/node_modules/math-float32-to-binary-string/lib/div2.js","../AMI/node_modules/math-float32-to-binary-string/lib/index.js","../AMI/node_modules/math-float32-to-binary-string/lib/mult2.js","../AMI/node_modules/math-floor/lib/index.js","../AMI/node_modules/nifti-reader-js/src/nifti.js","../AMI/node_modules/nifti-reader-js/src/nifti1.js","../AMI/node_modules/nifti-reader-js/src/nifti2.js","../AMI/node_modules/nifti-reader-js/src/utilities.js","../AMI/node_modules/nrrd-js/nrrd.js","../AMI/node_modules/pako/index.js","../AMI/node_modules/pako/lib/deflate.js","../AMI/node_modules/pako/lib/inflate.js","../AMI/node_modules/pako/lib/utils/common.js","../AMI/node_modules/pako/lib/utils/strings.js","../AMI/node_modules/pako/lib/zlib/adler32.js","../AMI/node_modules/pako/lib/zlib/constants.js","../AMI/node_modules/pako/lib/zlib/crc32.js","../AMI/node_modules/pako/lib/zlib/deflate.js","../AMI/node_modules/pako/lib/zlib/gzheader.js","../AMI/node_modules/pako/lib/zlib/inffast.js","../AMI/node_modules/pako/lib/zlib/inflate.js","../AMI/node_modules/pako/lib/zlib/inftrees.js","../AMI/node_modules/pako/lib/zlib/messages.js","../AMI/node_modules/pako/lib/zlib/trees.js","../AMI/node_modules/pako/lib/zlib/zstream.js","../AMI/node_modules/path-browserify/index.js","../AMI/node_modules/process/browser.js","../AMI/node_modules/three/src/constants.js","../AMI/node_modules/three/src/core/Raycaster.js","../AMI/node_modules/three/src/math/Box3.js","../AMI/node_modules/three/src/math/Math.js","../AMI/node_modules/three/src/math/Matrix4.js","../AMI/node_modules/three/src/math/Quaternion.js","../AMI/node_modules/three/src/math/Ray.js","../AMI/node_modules/three/src/math/Sphere.js","../AMI/node_modules/three/src/math/Triangle.js","../AMI/node_modules/three/src/math/Vector2.js","../AMI/node_modules/three/src/math/Vector3.js","../AMI/node_modules/util/support/isBufferBrowser.js","../AMI/node_modules/util/util.js","../AMI/node_modules/utils-left-pad-string/lib/index.js","../AMI/node_modules/utils-repeat-string/lib/index.js","../AMI/node_modules/utils-right-pad-string/lib/index.js","../AMI/node_modules/validate.io-integer/lib/index.js","../AMI/node_modules/validate.io-nonnegative-integer/lib/index.js","../AMI/node_modules/validate.io-number/lib/index.js","../AMI/node_modules/validate.io-string-primitive/lib/index.js","../AMI/(webpack)/buildin/global.js","../AMI/src/ami.ts","../AMI/src/cameras/cameras.js","../AMI/src/cameras/cameras.orthographic.js","../AMI/src/controls/controls.js","../AMI/src/controls/controls.orbit.js","../AMI/src/controls/controls.trackball.js","../AMI/src/controls/controls.trackballortho.js","../AMI/src/core/core.colors.ts","../AMI/src/core/core.intersections.js","../AMI/src/core/core.js","../AMI/src/core/core.utils.js","../AMI/src/core/core.validators.js","../AMI/src/decoders/decoders.rle.js","../AMI/src/geometries/geometries.js","../AMI/src/geometries/geometries.slice.js","../AMI/src/geometries/geometries.voxel.js","../AMI/src/helpers/helpers.border.js","../AMI/src/helpers/helpers.boundingbox.js","../AMI/src/helpers/helpers.contour.js","../AMI/src/helpers/helpers.js","../AMI/src/helpers/helpers.localizer.js","../AMI/src/helpers/helpers.lut.js","../AMI/src/helpers/helpers.material.mixin.js","../AMI/src/helpers/helpers.progressbar.eventbased.js","../AMI/src/helpers/helpers.progressbar.js","../AMI/src/helpers/helpers.segmentationlut.js","../AMI/src/helpers/helpers.slice.js","../AMI/src/helpers/helpers.stack.js","../AMI/src/helpers/helpers.volumerendering.js","../AMI/src/loaders/loaders.base.js","../AMI/src/loaders/loaders.js","../AMI/src/loaders/loaders.volume.js","../AMI/src/models/models.base.js","../AMI/src/models/models.frame.js","../AMI/src/models/models.js","../AMI/src/models/models.series.js","../AMI/src/models/models.stack.js","../AMI/src/models/models.voxel.js","../AMI/src/parsers/parsers.dicom.js","../AMI/src/parsers/parsers.js","../AMI/src/parsers/parsers.mgh.js","../AMI/src/parsers/parsers.mhd.js","../AMI/src/parsers/parsers.nifti.js","../AMI/src/parsers/parsers.nrrd.js","../AMI/src/parsers/parsers.volume.js","../AMI/src/presets/presets.js","../AMI/src/presets/presets.segmentation.freesurfer.js","../AMI/src/presets/presets.segmentation.js","../AMI/src/shaders/helpers/shaders.helpers.intersectBox.js","../AMI/src/shaders/helpers/shaders.helpers.texture3d.js","../AMI/src/shaders/helpers/shaders.helpers.unpack.js","../AMI/src/shaders/interpolation/shaders.interpolation.identity.js","../AMI/src/shaders/interpolation/shaders.interpolation.js","../AMI/src/shaders/interpolation/shaders.interpolation.trilinear.js","../AMI/src/shaders/shaders.base.js","../AMI/src/shaders/shaders.contour.fragment.js","../AMI/src/shaders/shaders.contour.uniform.js","../AMI/src/shaders/shaders.contour.vertex.js","../AMI/src/shaders/shaders.data.fragment.js","../AMI/src/shaders/shaders.data.uniform.js","../AMI/src/shaders/shaders.data.vertex.js","../AMI/src/shaders/shaders.js","../AMI/src/shaders/shaders.layer.fragment.js","../AMI/src/shaders/shaders.layer.uniform.js","../AMI/src/shaders/shaders.layer.vertex.js","../AMI/src/shaders/shaders.localizer.fragment.js","../AMI/src/shaders/shaders.localizer.uniform.js","../AMI/src/shaders/shaders.localizer.vertex.js","../AMI/src/shaders/shaders.vr.fragment.js","../AMI/src/shaders/shaders.vr.uniform.js","../AMI/src/shaders/shaders.vr.vertex.js","../AMI/src/widgets/widgets.angle.js","../AMI/src/widgets/widgets.annotation.js","../AMI/src/widgets/widgets.base.ts","../AMI/src/widgets/widgets.biruler.js","../AMI/src/widgets/widgets.crossRuler.js","../AMI/src/widgets/widgets.css.js","../AMI/src/widgets/widgets.ellipse.js","../AMI/src/widgets/widgets.freehand.js","../AMI/src/widgets/widgets.handle.js","../AMI/src/widgets/widgets.js","../AMI/src/widgets/widgets.peakVelocity.js","../AMI/src/widgets/widgets.polygon.js","../AMI/src/widgets/widgets.pressureHalfTime.js","../AMI/src/widgets/widgets.rectangle.js","../AMI/src/widgets/widgets.ruler.js","../AMI/src/widgets/widgets.velocityTimeIntegral.js","../AMI/src/widgets/widgets.voxelProbe.js","../node_modules/assign-symbols/index.js","../node_modules/attr-accept/dist/es/index.js","../node_modules/base64-js/index.js","../node_modules/bl/bl.js","../node_modules/bl/node_modules/isarray/index.js","../node_modules/bl/node_modules/readable-stream/lib/_stream_duplex.js","../node_modules/bl/node_modules/readable-stream/lib/_stream_passthrough.js","../node_modules/bl/node_modules/readable-stream/lib/_stream_readable.js","../node_modules/bl/node_modules/readable-stream/lib/_stream_transform.js","../node_modules/bl/node_modules/readable-stream/lib/_stream_writable.js","../node_modules/bl/node_modules/readable-stream/readable.js","../node_modules/bl/node_modules/string_decoder/index.js","../node_modules/browserify-fs/index.js","../node_modules/buffer-from/index.js","../node_modules/buffer/index.js","../node_modules/call-bind/callBound.js","../node_modules/call-bind/index.js","../node_modules/classnames/index.js","../node_modules/clone/clone.js","../node_modules/clsx/dist/clsx.m.js","../node_modules/concat-stream/index.js","../node_modules/cookie/index.js","../node_modules/core-util-is/lib/util.js","../node_modules/debounce/index.js","../node_modules/deferred-leveldown/deferred-leveldown.js","../node_modules/dotenv/lib/main.js","../node_modules/errno/custom.js","../node_modules/errno/errno.js","../node_modules/errno/node_modules/prr/prr.js","../node_modules/eventemitter3/index.js","../node_modules/events/events.js","../node_modules/extend-shallow/index.js","../node_modules/fast-deep-equal/index.js","../node_modules/for-in/index.js","../node_modules/foreach/index.js","../node_modules/function-bind/implementation.js","../node_modules/function-bind/index.js","../node_modules/fwd-stream/index.js","../node_modules/fwd-stream/node_modules/isarray/index.js","../node_modules/fwd-stream/node_modules/readable-stream/duplex.js","../node_modules/fwd-stream/node_modules/readable-stream/lib/_stream_duplex.js","../node_modules/fwd-stream/node_modules/readable-stream/lib/_stream_passthrough.js","../node_modules/fwd-stream/node_modules/readable-stream/lib/_stream_readable.js","../node_modules/fwd-stream/node_modules/readable-stream/lib/_stream_transform.js","../node_modules/fwd-stream/node_modules/readable-stream/lib/_stream_writable.js","../node_modules/fwd-stream/node_modules/readable-stream/readable.js","../node_modules/fwd-stream/node_modules/readable-stream/writable.js","../node_modules/fwd-stream/node_modules/string_decoder/index.js","../node_modules/get-intrinsic/index.js","../node_modules/get-value/index.js","../node_modules/has-symbols/index.js","../node_modules/has-symbols/shams.js","../node_modules/has-tostringtag/shams.js","../node_modules/has/src/index.js","../node_modules/idb-wrapper/idbstore.js","../node_modules/ieee754/index.js","../node_modules/immutability-helper/index.js","../node_modules/inherits/inherits_browser.js","../node_modules/is-arguments/index.js","../node_modules/is-extendable/index.js","../node_modules/is-generator-function/index.js","../node_modules/is-plain-object/index.js","../node_modules/is-typed-array/index.js","../node_modules/is/index.js","../node_modules/isarray/index.js","../node_modules/isbuffer/index.js","../node_modules/isobject/index.js","../node_modules/level-blobs/index.js","../node_modules/level-blobs/node_modules/isarray/index.js","../node_modules/level-blobs/node_modules/readable-stream/lib/_stream_duplex.js","../node_modules/level-blobs/node_modules/readable-stream/lib/_stream_passthrough.js","../node_modules/level-blobs/node_modules/readable-stream/lib/_stream_readable.js","../node_modules/level-blobs/node_modules/readable-stream/lib/_stream_transform.js","../node_modules/level-blobs/node_modules/readable-stream/lib/_stream_writable.js","../node_modules/level-blobs/node_modules/readable-stream/readable.js","../node_modules/level-blobs/node_modules/readable-stream/writable.js","../node_modules/level-blobs/node_modules/string_decoder/index.js","../node_modules/level-filesystem/errno.js","../node_modules/level-filesystem/index.js","../node_modules/level-filesystem/node_modules/xtend/has-keys.js","../node_modules/level-filesystem/node_modules/xtend/index.js","../node_modules/level-filesystem/paths.js","../node_modules/level-filesystem/stat.js","../node_modules/level-filesystem/watchers.js","../node_modules/level-fix-range/index.js","../node_modules/level-hooks/index.js","../node_modules/level-js/index.js","../node_modules/level-js/iterator.js","../node_modules/level-js/node_modules/object-keys/foreach.js","../node_modules/level-js/node_modules/object-keys/index.js","../node_modules/level-js/node_modules/object-keys/isArguments.js","../node_modules/level-js/node_modules/object-keys/shim.js","../node_modules/level-js/node_modules/typedarray-to-buffer/index.js","../node_modules/level-js/node_modules/xtend/has-keys.js","../node_modules/level-js/node_modules/xtend/index.js","../node_modules/level-peek/index.js","../node_modules/level-peek/node_modules/level-fix-range/index.js","../node_modules/level-sublevel/batch.js","../node_modules/level-sublevel/index.js","../node_modules/level-sublevel/node_modules/object-keys/index.js","../node_modules/level-sublevel/node_modules/object-keys/shim.js","../node_modules/level-sublevel/node_modules/xtend/has-keys.js","../node_modules/level-sublevel/node_modules/xtend/index.js","../node_modules/level-sublevel/sub.js","../node_modules/levelup/lib/batch.js","../node_modules/levelup/lib/errors.js","../node_modules/levelup/lib/levelup.js","../node_modules/levelup/lib/read-stream.js","../node_modules/levelup/lib/util.js","../node_modules/levelup/lib/write-stream.js","../node_modules/levelup/node_modules/isarray/index.js","../node_modules/levelup/node_modules/readable-stream/lib/_stream_duplex.js","../node_modules/levelup/node_modules/readable-stream/lib/_stream_passthrough.js","../node_modules/levelup/node_modules/readable-stream/lib/_stream_readable.js","../node_modules/levelup/node_modules/readable-stream/lib/_stream_transform.js","../node_modules/levelup/node_modules/readable-stream/lib/_stream_writable.js","../node_modules/levelup/node_modules/readable-stream/readable.js","../node_modules/levelup/node_modules/string_decoder/index.js","../node_modules/levelup/node_modules/xtend/index.js","../node_modules/linkify-it/index.js","../node_modules/linkify-it/lib/re.js","../node_modules/ltgt/index.js","../node_modules/markdown-it/index.js","../node_modules/markdown-it/lib/common/entities.js","../node_modules/markdown-it/lib/common/html_blocks.js","../node_modules/markdown-it/lib/common/html_re.js","../node_modules/markdown-it/lib/common/utils.js","../node_modules/markdown-it/lib/helpers/index.js","../node_modules/markdown-it/lib/helpers/parse_link_destination.js","../node_modules/markdown-it/lib/helpers/parse_link_label.js","../node_modules/markdown-it/lib/helpers/parse_link_title.js","../node_modules/markdown-it/lib/index.js","../node_modules/markdown-it/lib/parser_block.js","../node_modules/markdown-it/lib/parser_core.js","../node_modules/markdown-it/lib/parser_inline.js","../node_modules/markdown-it/lib/presets/commonmark.js","../node_modules/markdown-it/lib/presets/default.js","../node_modules/markdown-it/lib/presets/zero.js","../node_modules/markdown-it/lib/renderer.js","../node_modules/markdown-it/lib/ruler.js","../node_modules/markdown-it/lib/rules_block/blockquote.js","../node_modules/markdown-it/lib/rules_block/code.js","../node_modules/markdown-it/lib/rules_block/fence.js","../node_modules/markdown-it/lib/rules_block/heading.js","../node_modules/markdown-it/lib/rules_block/hr.js","../node_modules/markdown-it/lib/rules_block/html_block.js","../node_modules/markdown-it/lib/rules_block/lheading.js","../node_modules/markdown-it/lib/rules_block/list.js","../node_modules/markdown-it/lib/rules_block/paragraph.js","../node_modules/markdown-it/lib/rules_block/reference.js","../node_modules/markdown-it/lib/rules_block/state_block.js","../node_modules/markdown-it/lib/rules_block/table.js","../node_modules/markdown-it/lib/rules_core/block.js","../node_modules/markdown-it/lib/rules_core/inline.js","../node_modules/markdown-it/lib/rules_core/linkify.js","../node_modules/markdown-it/lib/rules_core/normalize.js","../node_modules/markdown-it/lib/rules_core/replacements.js","../node_modules/markdown-it/lib/rules_core/smartquotes.js","../node_modules/markdown-it/lib/rules_core/state_core.js","../node_modules/markdown-it/lib/rules_core/text_join.js","../node_modules/markdown-it/lib/rules_inline/autolink.js","../node_modules/markdown-it/lib/rules_inline/backticks.js","../node_modules/markdown-it/lib/rules_inline/balance_pairs.js","../node_modules/markdown-it/lib/rules_inline/emphasis.js","../node_modules/markdown-it/lib/rules_inline/entity.js","../node_modules/markdown-it/lib/rules_inline/escape.js","../node_modules/markdown-it/lib/rules_inline/fragments_join.js","../node_modules/markdown-it/lib/rules_inline/html_inline.js","../node_modules/markdown-it/lib/rules_inline/image.js","../node_modules/markdown-it/lib/rules_inline/link.js","../node_modules/markdown-it/lib/rules_inline/linkify.js","../node_modules/markdown-it/lib/rules_inline/newline.js","../node_modules/markdown-it/lib/rules_inline/state_inline.js","../node_modules/markdown-it/lib/rules_inline/strikethrough.js","../node_modules/markdown-it/lib/rules_inline/text.js","../node_modules/markdown-it/lib/token.js","../node_modules/mdurl/decode.js","../node_modules/mdurl/encode.js","../node_modules/mdurl/format.js","../node_modules/mdurl/index.js","../node_modules/mdurl/parse.js","../node_modules/merge-value/index.js","../node_modules/merge-value/node_modules/is-extendable/index.js","../node_modules/mixin-deep/index.js","../node_modules/mixin-deep/node_modules/is-extendable/index.js","../node_modules/moment/locale/de.js","../node_modules/moment/moment.js","../node_modules/object-inspect/index.js","../node_modules/octal/index.js","../node_modules/once/once.js","../node_modules/os-browserify/main.js","../node_modules/path-browserify/index.js","../node_modules/process-nextick-args/index.js","../node_modules/process/browser.js","../node_modules/prop-types/factoryWithThrowingShims.js","../node_modules/prop-types/index.js","../node_modules/prop-types/lib/ReactPropTypesSecret.js","../node_modules/prr/prr.js","../node_modules/punycode/punycode.es6.js","../node_modules/qs/lib/formats.js","../node_modules/qs/lib/index.js","../node_modules/qs/lib/parse.js","../node_modules/qs/lib/stringify.js","../node_modules/qs/lib/utils.js","../Datetime/webpack/bootstrap","../Datetime/external \"react\"","../Datetime/external \"moment\"","../Datetime/node_modules/prop-types/index.js","../Datetime/external \"react-dom\"","../Datetime/node_modules/prop-types/factoryWithThrowingShims.js","../Datetime/node_modules/prop-types/lib/ReactPropTypesSecret.js","../Datetime/src/parts/ViewNavigation.js","../Datetime/src/views/DaysView.js","../Datetime/src/views/MonthsView.js","../Datetime/src/views/YearsView.js","../Datetime/src/views/TimeView.js","../Datetime/node_modules/react-onclickoutside/dist/react-onclickoutside.es.js","../Datetime/src/DateTime.js","../node_modules/react-device-detect/dist/lib.js","../node_modules/react-dom/cjs/react-dom.production.min.js","../node_modules/react-dom/client.js","../node_modules/react-dom/index.js","../node_modules/react-dom/node_modules/scheduler/cjs/scheduler.production.min.js","../node_modules/react-dom/node_modules/scheduler/index.js","../node_modules/react-draggable/build/cjs/Draggable.js","../node_modules/react-draggable/build/cjs/DraggableCore.js","../node_modules/react-draggable/build/cjs/cjs.js","../node_modules/react-draggable/build/cjs/utils/domFns.js","../node_modules/react-draggable/build/cjs/utils/getPrefix.js","../node_modules/react-draggable/build/cjs/utils/log.js","../node_modules/react-draggable/build/cjs/utils/positionFns.js","../node_modules/react-draggable/build/cjs/utils/shims.js","../node_modules/react-reconciler/cjs/react-reconciler-constants.production.min.js","../node_modules/react-reconciler/cjs/react-reconciler.production.min.js","../node_modules/react-reconciler/constants.js","../node_modules/react-reconciler/index.js","../node_modules/react-to-print/lib/index.js","../Webcam/webpack/universalModuleDefinition","../Webcam/webpack/bootstrap","../Webcam/src/react-webcam.tsx","../Webcam/external {\"root\":\"React\",\"commonjs2\":\"react\",\"commonjs\":\"react\",\"amd\":\"react\"}","../node_modules/react/cjs/react-jsx-runtime.production.min.js","../node_modules/react/cjs/react.production.min.js","../node_modules/react/index.js","../node_modules/react/jsx-runtime.js","../node_modules/readable-stream/lib/_stream_duplex.js","../node_modules/readable-stream/lib/_stream_passthrough.js","../node_modules/readable-stream/lib/_stream_readable.js","../node_modules/readable-stream/lib/_stream_transform.js","../node_modules/readable-stream/lib/_stream_writable.js","../node_modules/readable-stream/lib/internal/streams/BufferList.js","../node_modules/readable-stream/lib/internal/streams/destroy.js","../node_modules/readable-stream/lib/internal/streams/stream-browser.js","../node_modules/readable-stream/node_modules/safe-buffer/index.js","../node_modules/readable-stream/node_modules/string_decoder/lib/string_decoder.js","../node_modules/readable-stream/readable-browser.js","../node_modules/regenerator-runtime/runtime.js","../node_modules/safe-buffer/index.js","../node_modules/scheduler/cjs/scheduler.production.min.js","../node_modules/scheduler/index.js","../node_modules/set-value/index.js","../node_modules/side-channel/index.js","../node_modules/split-string/index.js","../node_modules/split-string/node_modules/extend-shallow/index.js","../node_modules/split-string/node_modules/is-extendable/index.js","../node_modules/stream-browserify/index.js","../node_modules/stream-browserify/node_modules/readable-stream/errors-browser.js","../node_modules/stream-browserify/node_modules/readable-stream/lib/_stream_duplex.js","../node_modules/stream-browserify/node_modules/readable-stream/lib/_stream_passthrough.js","../node_modules/stream-browserify/node_modules/readable-stream/lib/_stream_readable.js","../node_modules/stream-browserify/node_modules/readable-stream/lib/_stream_transform.js","../node_modules/stream-browserify/node_modules/readable-stream/lib/_stream_writable.js","../node_modules/stream-browserify/node_modules/readable-stream/lib/internal/streams/async_iterator.js","../node_modules/stream-browserify/node_modules/readable-stream/lib/internal/streams/buffer_list.js","../node_modules/stream-browserify/node_modules/readable-stream/lib/internal/streams/destroy.js","../node_modules/stream-browserify/node_modules/readable-stream/lib/internal/streams/end-of-stream.js","../node_modules/stream-browserify/node_modules/readable-stream/lib/internal/streams/from-browser.js","../node_modules/stream-browserify/node_modules/readable-stream/lib/internal/streams/pipeline.js","../node_modules/stream-browserify/node_modules/readable-stream/lib/internal/streams/state.js","../node_modules/stream-browserify/node_modules/readable-stream/lib/internal/streams/stream-browser.js","../node_modules/string-range/index.js","../node_modules/string_decoder/lib/string_decoder.js","../node_modules/typedarray/index.js","../node_modules/ua-parser-js/dist/ua-parser.min.js","../node_modules/uc.micro/categories/Cc/regex.js","../node_modules/uc.micro/categories/Cf/regex.js","../node_modules/uc.micro/categories/P/regex.js","../node_modules/uc.micro/categories/Z/regex.js","../node_modules/uc.micro/index.js","../node_modules/uc.micro/properties/Any/regex.js","../node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.production.min.js","../node_modules/use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.production.min.js","../node_modules/use-sync-external-store/shim/index.js","../node_modules/use-sync-external-store/shim/with-selector.js","../node_modules/util-deprecate/browser.js","../node_modules/util/support/isBufferBrowser.js","../node_modules/util/support/types.js","../node_modules/util/util.js","../node_modules/which-typed-array/index.js","../node_modules/wrappy/wrappy.js","../node_modules/available-typed-arrays/index.js","../node_modules/es-abstract/helpers/getOwnPropertyDescriptor.js","../node_modules/@babel/runtime/helpers/esm/arrayLikeToArray.js","../node_modules/@babel/runtime/helpers/esm/arrayWithHoles.js","../node_modules/@babel/runtime/helpers/esm/assertThisInitialized.js","../node_modules/@babel/runtime/helpers/esm/classCallCheck.js","../node_modules/@babel/runtime/helpers/esm/createClass.js","../node_modules/@babel/runtime/helpers/esm/createForOfIteratorHelper.js","../node_modules/@babel/runtime/helpers/esm/createSuper.js","../node_modules/@babel/runtime/helpers/esm/defineProperty.js","../node_modules/@babel/runtime/helpers/esm/superPropBase.js","../node_modules/@babel/runtime/helpers/esm/get.js","../node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js","../node_modules/@babel/runtime/helpers/esm/inherits.js","../node_modules/@babel/runtime/helpers/esm/isNativeReflectConstruct.js","../node_modules/@babel/runtime/helpers/esm/iterableToArray.js","../node_modules/@babel/runtime/helpers/esm/nonIterableRest.js","../node_modules/@babel/runtime/helpers/esm/objectSpread2.js","../node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js","../node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","../node_modules/@babel/runtime/helpers/esm/slicedToArray.js","../node_modules/@babel/runtime/helpers/esm/iterableToArrayLimit.js","../node_modules/@babel/runtime/helpers/esm/toConsumableArray.js","../node_modules/@babel/runtime/helpers/esm/arrayWithoutHoles.js","../node_modules/@babel/runtime/helpers/esm/nonIterableSpread.js","../node_modules/@babel/runtime/helpers/esm/typeof.js","../node_modules/@babel/runtime/helpers/esm/unsupportedIterableToArray.js","../webpack/bootstrap","../webpack/runtime/amd options","../webpack/runtime/compat get default export","../webpack/runtime/create fake namespace object","../webpack/runtime/define property getters","../webpack/runtime/global","../webpack/runtime/harmony module decorator","../webpack/runtime/hasOwnProperty shorthand","../webpack/runtime/make namespace object","../webpack/runtime/node module decorator","../webpack/runtime/publicPath","../node_modules/@sentry/src/integration.ts","../node_modules/@sentry/src/sdk.ts","../node_modules/@sentry/src/integrations/inboundfilters.ts","../node_modules/@sentry/src/integrations/functiontostring.ts","../node_modules/@sentry/src/api.ts","../node_modules/@sentry/src/buildPolyfills/_optionalChain.ts","../node_modules/@babel/runtime/helpers/esm/construct.js","../node_modules/@babel/runtime/helpers/esm/wrapNativeSuper.js","../node_modules/@babel/runtime/helpers/esm/isNativeFunction.js","../node_modules/@sentry/src/error.ts","../node_modules/@sentry/src/dsn.ts","../node_modules/@sentry/src/envelope.ts","../node_modules/@sentry/src/memo.ts","../node_modules/@sentry/src/normalize.ts","../node_modules/@sentry/src/baseclient.ts","../node_modules/src/eventbuilder.ts","../node_modules/@sentry/src/severity.ts","../node_modules/src/integrations/breadcrumbs.ts","../node_modules/src/transports/utils.ts","../node_modules/src/client.ts","../node_modules/@sentry/src/clientreport.ts","../node_modules/src/stack-parsers.ts","../node_modules/@sentry/src/exports.ts","../node_modules/src/helpers.ts","../node_modules/src/integrations/trycatch.ts","../node_modules/src/integrations/globalhandlers.ts","../node_modules/src/integrations/linkederrors.ts","../node_modules/src/integrations/dedupe.ts","../node_modules/src/integrations/httpcontext.ts","../node_modules/@sentry/src/promisebuffer.ts","../node_modules/@sentry/src/ratelimit.ts","../node_modules/@sentry/src/transports/base.ts","../node_modules/src/transports/fetch.ts","../node_modules/src/transports/xhr.ts","../node_modules/src/sdk.ts","../node_modules/@sentry/src/tracing.ts","../node_modules/src/browser/backgroundtab.ts","../node_modules/src/browser/web-vitals/lib/bindReporter.ts","../node_modules/src/browser/web-vitals/lib/generateUniqueID.ts","../node_modules/src/browser/web-vitals/lib/observe.ts","../node_modules/src/browser/web-vitals/lib/onHidden.ts","../node_modules/src/browser/web-vitals/lib/getVisibilityWatcher.ts","../node_modules/src/browser/web-vitals/getLCP.ts","../node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js","../node_modules/@babel/runtime/helpers/esm/objectWithoutProperties.js","../node_modules/src/browser/metrics/utils.ts","../node_modules/src/browser/metrics/index.ts","../node_modules/src/browser/web-vitals/getCLS.ts","../node_modules/src/browser/web-vitals/getFID.ts","../node_modules/src/browser/request.ts","../node_modules/src/browser/router.ts","../node_modules/src/browser/browsertracing.ts","../node_modules/src/index.ts","../node_modules/@babel/runtime/helpers/esm/extends.js","../../packages/react-router/lib/context.ts","../../packages/react-router/lib/router.ts","../../packages/react-router/lib/hooks.tsx","../../packages/react-router/lib/components.tsx","../node_modules/@babel/runtime/helpers/esm/inheritsLoose.js","../node_modules/dom-helpers/esm/removeClass.js","../node_modules/react-transition-group/esm/config.js","../node_modules/react-transition-group/esm/TransitionGroupContext.js","../node_modules/react-transition-group/esm/Transition.js","../node_modules/react-transition-group/esm/CSSTransition.js","../node_modules/dom-helpers/esm/addClass.js","../node_modules/dom-helpers/esm/hasClass.js","../node_modules/react-i18next/dist/es/context.js","../node_modules/react-i18next/dist/es/utils.js","../node_modules/react-i18next/dist/es/useTranslation.js","../node_modules/react-use/esm/misc/util.js","../node_modules/react-use/esm/useEvent.js","../node_modules/react-use/esm/useKey.js","../node_modules/react-use/esm/useKeyPress.js","../node_modules/react-use/esm/useUpdateEffect.js","../node_modules/react-use/esm/useFirstMountState.js","../node_modules/react-use/esm/useKeyPressEvent.js","../node_modules/zustand/esm/vanilla.js","../node_modules/zustand/esm/index.js","components/button/button.tsx","components/alert/deletionConfirmationAlert.tsx","utils/history.ts","../node_modules/@babel/runtime/helpers/esm/toArray.js","../node_modules/i18next/dist/esm/i18next.js","utils/translation.ts","state/stores/cameraSettingsStore.ts","state/stores/errorStore.tsx","components/alert/alert.tsx","../node_modules/zustand/esm/middleware.js","../node_modules/@babel/runtime/helpers/esm/asyncToGenerator.js","../node_modules/@daily-co/daily-js/dist/daily-iframe-esm.js","state/stores/communicationStore.ts","state/stores/settingsStore.ts","components/input/select.tsx","components/cameraSettings/cameraSettings.tsx","components/alert/cameraSettingsOverlay.tsx","../node_modules/swr/dist/index.mjs","constants/constants.ts","utils/formatUrl.ts","network/fetch.ts","../node_modules/universal-cookie/es6/utils.js","../node_modules/three/build/three.module.js","../node_modules/universal-cookie/es6/Cookies.js","../node_modules/react-cookie/es6/Cookies.js","utils/persistCookie.ts","state/stores/authStore.ts","state/stores/previewStore.ts","components/preview/preview.tsx","../node_modules/nanoid/index.browser.js","../node_modules/@react-three/fiber/node_modules/zustand/esm/index.js","../node_modules/suspend-react/dist/index.js","../node_modules/@react-three/fiber/dist/index-f1b43982.esm.js","../node_modules/react-use-measure/dist/web.js","../node_modules/@react-three/fiber/dist/react-three-fiber.esm.js","../node_modules/qrcode.react/lib/esm/index.js","state/stores/patientStore.ts","components/progressBar/progressBar.ts","state/stores/sensorStore.ts","utils/math.ts","components/ami/context.tsx","components/frameLimiter/frameLimiter.tsx","components/patient/user/loading.tsx","components/ami/amiView.tsx","assets/images/checkBox.svg","assets/images/checkBoxSelected.svg","components/checkBox/checkBox.tsx","components/optionsSidebar/optionsSidebar.tsx","components/segmentedControl/segmentedControl.tsx","network/auth.ts","../node_modules/engine.io-parser/build/esm/commons.js","../node_modules/engine.io-parser/build/esm/contrib/base64-arraybuffer.js","../node_modules/engine.io-parser/build/esm/encodePacket.browser.js","../node_modules/engine.io-parser/build/esm/decodePacket.browser.js","../node_modules/engine.io-parser/build/esm/index.js","../node_modules/@socket.io/component-emitter/index.mjs","../node_modules/engine.io-client/build/esm/globalThis.browser.js","../node_modules/engine.io-client/build/esm/util.js","../node_modules/engine.io-client/build/esm/contrib/yeast.js","../node_modules/engine.io-client/build/esm/transport.js","../node_modules/engine.io-client/build/esm/contrib/parseqs.js","../node_modules/engine.io-client/build/esm/contrib/has-cors.js","../node_modules/engine.io-client/build/esm/transports/xmlhttprequest.browser.js","../node_modules/engine.io-client/build/esm/transports/polling.js","../node_modules/engine.io-client/build/esm/transports/websocket-constructor.browser.js","../node_modules/engine.io-client/build/esm/transports/websocket.js","../node_modules/engine.io-client/build/esm/transports/index.js","../node_modules/engine.io-client/build/esm/contrib/parseuri.js","../node_modules/engine.io-client/build/esm/socket.js","../node_modules/engine.io-client/build/esm/index.js","../node_modules/socket.io-parser/build/esm/is-binary.js","../node_modules/socket.io-parser/build/esm/binary.js","../node_modules/socket.io-parser/build/esm/index.js","../node_modules/socket.io-client/build/esm/on.js","../node_modules/socket.io-client/build/esm/socket.js","../node_modules/socket.io-client/build/esm/contrib/backo2.js","../node_modules/socket.io-client/build/esm/manager.js","../node_modules/socket.io-client/build/esm/index.js","../node_modules/socket.io-client/build/esm/url.js","state/stores/chatStore.ts","state/stores/socketStore.ts","state/stores/laserStore.ts","state/stores/mediaStore.ts","state/stores/moderatorStore.ts","state/stores/quizStore.ts","state/stores/sceneStore.ts","routes/test/volume.tsx","components/privateRoute/privateRoute.tsx","routes/404/404.tsx","assets/images/resetRotation.svg","../node_modules/react-div-100vh/dist/esm/index.js","assets/images/fullscreen.svg","assets/images/fullscreenClose.svg","state/stores/fullscreenStore.ts","components/button/fullscreenButton.tsx","components/button/languageButton.tsx","assets/images/sonoFun.svg","components/logos/logos.tsx","components/header/header.tsx","components/body/body.tsx","routes/connection/connection.tsx","assets/images/waitingNo.svg","assets/images/waitingYes.svg","routes/practinar/tutorial/check.tsx","routes/hardwareTest.tsx","components/input/input.tsx","hooks/useHandleChange.ts","routes/join/join.tsx","routes/moderator/activate/activate.tsx","../../packages/react-router-dom/index.tsx","components/sidebar/sidebarIcons.tsx","components/sidebar/navigationPoint.tsx","components/sidebar/sidebar.tsx","components/dashboardBody/dashboardBody.tsx","components/dashboardHeader/dashboardHeader.tsx","assets/images/add.svg","assets/images/move.svg","assets/images/preview.svg","assets/images/trash.svg","components/iconImage/iconImage.tsx","assets/images/image.svg","assets/images/video.svg","components/list/list.tsx","routes/moderator/case/cases.tsx","../node_modules/redux/es/redux.js","../node_modules/@react-dnd/invariant/src/index.ts","../node_modules/dnd-core/src/utils/js_utils.ts","../node_modules/dnd-core/src/actions/dragDrop/types.ts","../node_modules/dnd-core/src/actions/dragDrop/local/setClientOffset.ts","../node_modules/dnd-core/src/actions/dragDrop/beginDrag.ts","../node_modules/dnd-core/src/actions/dragDrop/drop.ts","../node_modules/dnd-core/src/actions/dragDrop/endDrag.ts","../node_modules/dnd-core/src/utils/matchesType.ts","../node_modules/dnd-core/src/actions/dragDrop/hover.ts","../node_modules/dnd-core/src/actions/dragDrop/publishDragSource.ts","../node_modules/dnd-core/src/classes/DragDropManagerImpl.ts","../node_modules/dnd-core/src/actions/dragDrop/index.ts","../node_modules/dnd-core/src/utils/coords.ts","../node_modules/dnd-core/src/utils/dirtiness.ts","../node_modules/dnd-core/src/classes/DragDropMonitorImpl.ts","../node_modules/@react-dnd/asap/src/makeRequestCall.ts","../node_modules/@react-dnd/asap/src/AsapQueue.ts","../node_modules/@react-dnd/asap/src/RawTask.ts","../node_modules/@react-dnd/asap/src/TaskFactory.ts","../node_modules/@react-dnd/asap/src/asap.ts","../node_modules/dnd-core/src/actions/registry.ts","../node_modules/dnd-core/src/interfaces.ts","../node_modules/dnd-core/src/contracts.ts","../node_modules/dnd-core/src/utils/getNextUniqueId.ts","../node_modules/dnd-core/src/classes/HandlerRegistryImpl.ts","../node_modules/dnd-core/src/utils/equality.ts","../node_modules/dnd-core/src/reducers/dirtyHandlerIds.ts","../node_modules/dnd-core/src/reducers/dragOffset.ts","../node_modules/dnd-core/src/reducers/dragOperation.ts","../node_modules/dnd-core/src/reducers/refCount.ts","../node_modules/dnd-core/src/reducers/stateId.ts","../node_modules/dnd-core/src/reducers/index.ts","../node_modules/dnd-core/src/createDragDropManager.ts","../node_modules/react-dnd/src/core/DndContext.ts","../node_modules/react-dnd/src/core/DndProvider.tsx","../node_modules/react-dnd-html5-backend/src/utils/js_utils.ts","../node_modules/react-dnd-html5-backend/src/EnterLeaveCounter.ts","../node_modules/react-dnd-html5-backend/src/NativeDragSources/NativeDragSource.ts","../node_modules/react-dnd-html5-backend/src/NativeTypes.ts","../node_modules/react-dnd-html5-backend/src/NativeDragSources/getDataFromDataTransfer.ts","../node_modules/react-dnd-html5-backend/src/NativeDragSources/nativeTypesConfig.ts","../node_modules/react-dnd-html5-backend/src/NativeDragSources/index.ts","../node_modules/react-dnd-html5-backend/src/BrowserDetector.ts","../node_modules/react-dnd-html5-backend/src/MonotonicInterpolant.ts","../node_modules/react-dnd-html5-backend/src/OffsetUtils.ts","../node_modules/react-dnd-html5-backend/src/OptionsReader.ts","../node_modules/react-dnd-html5-backend/src/HTML5BackendImpl.ts","../node_modules/react-dnd-html5-backend/src/index.ts","../node_modules/react-use/esm/useLocation.js","assets/images/sidebarCase.svg","assets/images/sidebarMedia.svg","assets/images/sidebarPatient.svg","assets/images/sidebarPresentation.svg","assets/images/sidebarQuiz.svg","components/addSchedule/addSchedule.tsx","components/dndContainer/dndContainer.tsx","components/number/number.tsx","../node_modules/react-dnd/src/hooks/useIsomorphicLayoutEffect.ts","../node_modules/react-dnd/src/hooks/useMonitorOutput.ts","../node_modules/react-dnd/src/hooks/useCollector.ts","../node_modules/react-dnd/src/hooks/useCollectedProps.ts","../node_modules/react-dnd/src/hooks/useOptionalFactory.ts","../node_modules/react-dnd/src/hooks/useDrop/connectors.ts","../node_modules/@react-dnd/shallowequal/src/index.ts","../node_modules/react-dnd/src/internals/isRef.ts","../node_modules/react-dnd/src/internals/wrapConnectorHooks.ts","../node_modules/react-dnd/src/internals/TargetConnector.ts","../node_modules/react-dnd/src/hooks/useDragDropManager.ts","../node_modules/react-dnd/src/internals/DropTargetMonitorImpl.ts","../node_modules/react-dnd/src/hooks/useDrop/DropTargetImpl.ts","../node_modules/react-dnd/src/hooks/useDrop/useRegisteredDropTarget.ts","../node_modules/react-dnd/src/hooks/useDrop/useDropTarget.ts","../node_modules/react-dnd/src/hooks/useDrop/useAccept.ts","../node_modules/react-dnd/src/internals/registration.ts","../node_modules/react-dnd/src/hooks/useDrop/useDrop.ts","../node_modules/react-dnd/src/hooks/useDrop/useDropTargetMonitor.ts","../node_modules/react-dnd/src/hooks/useDrop/useDropTargetConnector.ts","../node_modules/react-dnd/src/hooks/useDrag/connectors.ts","../node_modules/react-dnd/src/internals/SourceConnector.ts","../node_modules/react-dnd/src/internals/DragSourceMonitorImpl.ts","../node_modules/react-dnd/src/hooks/useDrag/DragSourceImpl.ts","../node_modules/react-dnd/src/hooks/useDrag/useRegisteredDragSource.ts","../node_modules/react-dnd/src/hooks/useDrag/useDragSource.ts","../node_modules/react-dnd/src/hooks/useDrag/useDragType.ts","../node_modules/react-dnd/src/hooks/useDrag/useDrag.ts","../node_modules/react-dnd/src/hooks/useDrag/useDragSourceMonitor.ts","../node_modules/react-dnd/src/hooks/useDrag/useDragSourceConnector.ts","hooks/useDnd.ts","components/scheduleItem/scheduleItem.tsx","components/scheduleItemView/scheduleItemView.tsx","components/scheduleItemView/mediaView.tsx","components/scheduleItemView/patientView.tsx","components/scheduleItemView/quizView.tsx","utils/formatName.ts","routes/moderator/case/create/createCase.tsx","../node_modules/react-markdown-editor-lite/esm/components/Icon/index.js","../node_modules/react-markdown-editor-lite/esm/components/NavigationBar/index.js","../node_modules/react-markdown-editor-lite/esm/components/ToolBar/index.js","../node_modules/react-markdown-editor-lite/esm/share/emitter.js","../node_modules/react-markdown-editor-lite/esm/i18n/lang/en-US.js","../node_modules/react-markdown-editor-lite/esm/i18n/lang/zh-CN.js","../node_modules/react-markdown-editor-lite/esm/i18n/index.js","../node_modules/react-markdown-editor-lite/esm/plugins/Plugin.js","../node_modules/react-markdown-editor-lite/esm/plugins/divider/index.js","../node_modules/react-markdown-editor-lite/esm/share/var.js","../node_modules/react-markdown-editor-lite/esm/utils/tool.js","../node_modules/react-markdown-editor-lite/esm/utils/decorate.js","../node_modules/uuid/dist/esm-browser/rng.js","../node_modules/react-markdown-editor-lite/esm/utils/mergeConfig.js","../node_modules/uuid/dist/esm-browser/regex.js","../node_modules/uuid/dist/esm-browser/stringify.js","../node_modules/uuid/dist/esm-browser/validate.js","../node_modules/uuid/dist/esm-browser/v4.js","../node_modules/react-markdown-editor-lite/esm/utils/uploadPlaceholder.js","../node_modules/react-markdown-editor-lite/esm/editor/defaultConfig.js","../node_modules/react-markdown-editor-lite/esm/editor/preview.js","../node_modules/react-markdown-editor-lite/esm/editor/index.js","../node_modules/react-markdown-editor-lite/esm/plugins/autoResize.js","../node_modules/react-markdown-editor-lite/esm/plugins/block/code-block.js","../node_modules/react-markdown-editor-lite/esm/plugins/block/code-inline.js","../node_modules/react-markdown-editor-lite/esm/plugins/block/quote.js","../node_modules/react-markdown-editor-lite/esm/plugins/block/wrap.js","../node_modules/react-markdown-editor-lite/esm/plugins/clear.js","../node_modules/react-markdown-editor-lite/esm/plugins/font/bold.js","../node_modules/react-markdown-editor-lite/esm/plugins/font/italic.js","../node_modules/react-markdown-editor-lite/esm/plugins/font/strikethrough.js","../node_modules/react-markdown-editor-lite/esm/plugins/font/underline.js","../node_modules/react-markdown-editor-lite/esm/plugins/fullScreen.js","../node_modules/react-markdown-editor-lite/esm/components/DropList/index.js","../node_modules/react-markdown-editor-lite/esm/plugins/header/HeaderList.js","../node_modules/react-markdown-editor-lite/esm/plugins/header/index.js","../node_modules/react-markdown-editor-lite/esm/plugins/Image/inputFile.js","../node_modules/react-markdown-editor-lite/esm/plugins/Image/index.js","../node_modules/react-markdown-editor-lite/esm/plugins/link.js","../node_modules/react-markdown-editor-lite/esm/plugins/list/ordered.js","../node_modules/react-markdown-editor-lite/esm/plugins/list/unordered.js","../node_modules/react-markdown-editor-lite/esm/plugins/logger/logger.js","../node_modules/react-markdown-editor-lite/esm/plugins/modeToggle.js","../node_modules/react-markdown-editor-lite/esm/plugins/logger/index.js","../node_modules/react-markdown-editor-lite/esm/plugins/table/table.js","../node_modules/react-markdown-editor-lite/esm/plugins/table/index.js","../node_modules/react-markdown-editor-lite/esm/plugins/tabInsert/TabMapList.js","../node_modules/react-markdown-editor-lite/esm/plugins/tabInsert/index.js","../node_modules/react-markdown-editor-lite/esm/index.js","components/upload/upload.tsx","components/editor/editor.tsx","routes/moderator/config/config.tsx","routes/moderator/login/login.tsx","../node_modules/three-stdlib/libs/MeshoptDecoder.js","routes/moderator/media/create/createMedia.tsx","components/list/groupedMediaList.tsx","components/list/listSwitch.tsx","routes/moderator/media/medias.tsx","../node_modules/three-stdlib/loaders/DRACOLoader.js","../node_modules/three-stdlib/loaders/GLTFLoader.js","../node_modules/@react-three/drei/core/useGLTF.js","assets/models/body.tsx","../node_modules/three/examples/jsm/loaders/RGBELoader.js","hooks/useEquirectangularHDR.ts","components/environment/environment.tsx","../node_modules/@react-three/drei/web/Html.js","utils/vector.ts","components/selectPosition/anchorPoint.tsx","components/models/selectPath.tsx","components/selectPosition/selectPosition.tsx","routes/moderator/patient/create/createPatient.tsx","routes/moderator/patient/patients.tsx","components/addItem/addItem.tsx","components/answer/answer.tsx","routes/moderator/quiz/create/createQuiz.tsx","routes/moderator/quiz/quizzes.tsx","routes/moderator/user/create/createUser.tsx","routes/moderator/user/users.tsx","components/scheduleItemView/caseView.tsx","routes/moderator/webinar/create/createWebinar.tsx","assets/images/sendArrow.svg","components/linkify/processString.ts","components/linkify/linkify.tsx","assets/images/clap.svg","assets/images/clapSmall.svg","assets/images/no.svg","assets/images/noSmall.svg","assets/images/question.svg","assets/images/questionSmall.svg","assets/images/raiseHand.svg","assets/images/raiseHandSmall.svg","assets/images/slower.svg","assets/images/slowerSmall.svg","assets/images/yes.svg","assets/images/yesSmall.svg","utils/iconForEmote.ts","components/chat/emotes.tsx","components/chat/chat.tsx","../node_modules/@bedrock-layout/use-stateful-ref/lib/index.m.js","../node_modules/@bedrock-layout/use-forwarded-ref/lib/index.m.js","components/responsiveImage/responsiveImage.tsx","assets/images/pause.svg","assets/images/play.svg","components/media/moderator/media.tsx","components/videoPlayer/videoPlayer.tsx","assets/images/camera.svg","assets/images/cameraOff.svg","assets/images/microphone.svg","assets/images/microphoneOff.svg","assets/images/settings.svg","components/video/mediaStream.tsx","components/controls/controls.tsx","components/miniCam/miniCam.tsx","assets/images/speakerOff.svg","assets/images/speakerOn.svg","components/expire/expire.tsx","components/participant/participant.tsx","components/participants/participants.tsx","components/patient/moderator/patient.tsx","utils/formatQuiz.ts","components/quiz/moderator/quiz.tsx","components/sendoff/moderator/sendoff.tsx","routes/moderator/webinar/live/live.tsx","assets/images/logoBw.svg","routes/moderator/webinar/schedule/schedule.tsx","hooks/useQuery.ts","routes/moderator/webinar/webinars.tsx","routes/moderator/webinar/webinarsRunning.tsx","components/laser/laser.tsx","components/responsiveImage/responsiveVideo.tsx","components/media/user/media.tsx","../node_modules/@radix-ui/react-compose-refs/dist/packages/react/compose-refs/src/composeRefs.tsx","../node_modules/@radix-ui/react-slot/dist/packages/react/slot/src/Slot.tsx","../node_modules/@radix-ui/react-portal/node_modules/@radix-ui/react-primitive/dist/packages/react/primitive/src/Primitive.tsx","../node_modules/@radix-ui/react-use-layout-effect/dist/packages/react/use-layout-effect/src/useLayoutEffect.tsx","../node_modules/@radix-ui/react-portal/dist/packages/react/portal/src/Portal.tsx","../node_modules/dequal/lite/index.mjs","../node_modules/leva/node_modules/zustand/esm/shallow.js","../node_modules/v8n/dist/v8n.esm.js","../node_modules/@stitches/react/dist/index.mjs","../node_modules/@use-gesture/core/dist/maths-b2a210f4.esm.js","../node_modules/@use-gesture/core/dist/actions-8e12537b.esm.js","../node_modules/@use-gesture/core/dist/use-gesture-core.esm.js","../node_modules/@use-gesture/react/dist/use-gesture-react.esm.js","../node_modules/@radix-ui/react-id/dist/packages/react/id/src/id.tsx","../node_modules/@radix-ui/rect/dist/packages/core/rect/src/observeElementRect.ts","../node_modules/@radix-ui/react-primitive/dist/packages/react/primitive/src/Primitive.tsx","../node_modules/@radix-ui/react-visually-hidden/dist/packages/react/visually-hidden/src/VisuallyHidden.tsx","../node_modules/@radix-ui/react-tooltip/node_modules/@radix-ui/react-portal/dist/packages/react/portal/src/Portal.tsx","../node_modules/@radix-ui/react-arrow/dist/packages/react/arrow/src/Arrow.tsx","../node_modules/@radix-ui/react-use-size/dist/packages/react/use-size/src/useSize.tsx","../node_modules/@radix-ui/react-use-rect/dist/packages/react/use-rect/src/useRect.tsx","../node_modules/@radix-ui/react-context/dist/packages/react/context/src/createContext.tsx","../node_modules/@radix-ui/popper/dist/packages/core/popper/src/popper.ts","../node_modules/@radix-ui/react-popper/dist/packages/react/popper/src/Popper.tsx","../node_modules/@radix-ui/react-presence/dist/packages/react/presence/src/Presence.tsx","../node_modules/@radix-ui/react-presence/dist/packages/react/presence/src/useStateMachine.tsx","../node_modules/@radix-ui/react-use-previous/dist/packages/react/use-previous/src/usePrevious.tsx","../node_modules/@radix-ui/react-use-callback-ref/dist/packages/react/use-callback-ref/src/useCallbackRef.tsx","../node_modules/@radix-ui/primitive/dist/packages/core/primitive/src/primitive.tsx","../node_modules/@radix-ui/react-tooltip/dist/packages/react/tooltip/src/Tooltip.tsx","../node_modules/@radix-ui/react-use-escape-keydown/dist/packages/react/use-escape-keydown/src/useEscapeKeydown.tsx","../node_modules/leva/dist/vector-plugin-a53011d9.esm.js","../node_modules/@radix-ui/react-use-controllable-state/dist/packages/react/use-controllable-state/src/useControllableState.tsx","../node_modules/colord/index.mjs","../node_modules/react-colorful/src/hooks/useEventCallback.ts","../node_modules/react-colorful/src/utils/clamp.ts","../node_modules/react-colorful/src/components/common/Interactive.tsx","../node_modules/react-colorful/src/utils/format.ts","../node_modules/react-colorful/src/components/common/Pointer.tsx","../node_modules/react-colorful/src/utils/round.ts","../node_modules/react-colorful/src/utils/convert.ts","../node_modules/react-colorful/src/components/common/Hue.tsx","../node_modules/react-colorful/src/components/common/Saturation.tsx","../node_modules/react-colorful/src/utils/compare.ts","../node_modules/react-colorful/src/hooks/useColorManipulation.ts","../node_modules/react-colorful/src/utils/nonce.ts","../node_modules/react-colorful/src/hooks/useIsomorphicLayoutEffect.ts","../node_modules/react-colorful/src/hooks/useStyleSheet.ts","../node_modules/react-colorful/src/components/common/ColorPicker.tsx","../node_modules/react-colorful/src/components/common/Alpha.tsx","../node_modules/react-colorful/src/components/common/AlphaColorPicker.tsx","../node_modules/react-colorful/src/components/RgbaColorPicker.tsx","../node_modules/react-colorful/src/components/RgbColorPicker.tsx","../node_modules/tslib/tslib.es6.js","../node_modules/file-selector/src/file.ts","../node_modules/file-selector/src/file-selector.ts","../node_modules/react-dropzone/dist/es/utils/index.js","../node_modules/react-dropzone/dist/es/index.js","../node_modules/leva/node_modules/zustand/esm/index.js","../node_modules/leva/node_modules/zustand/esm/middleware.js","../node_modules/leva/dist/leva.esm.js","../node_modules/colord/plugins/names.mjs","components/mirrorOptions/mirrorOptions.tsx","components/patientInformation/patientInformation.tsx","assets/models/controller.tsx","components/models/controller.tsx","components/patientLocation/patientLocation.tsx","components/patient/user/patient.tsx","components/waiting/waiting.tsx","components/presentation/user/presentation.tsx","components/quiz/user/quiz.tsx","components/sendoff/user/sendoff.tsx","assets/images/arrowRight.svg","components/cameraPermission/cameraPermission.tsx","components/step/step.tsx","routes/practinar/tutorial/chat.tsx","assets/images/tutorialChat.svg","assets/images/tutorialContent.svg","assets/images/tutorialVideo.svg","../node_modules/react-qr-reader/node_modules/ts-custom-error/dist/custom-error.mjs","../node_modules/react-qr-reader/node_modules/@zxing/library/esm/core/DecodeHintType.js","routes/practinar/tutorial/explanation.tsx","routes/practinar/tutorial/scanVideo.tsx","routes/practinar/tutorial/tutorial.tsx","routes/practinar/practinar.tsx","../node_modules/react-qr-reader/node_modules/@zxing/library/esm/core/Exception.js","../node_modules/react-qr-reader/node_modules/@zxing/library/esm/core/ArgumentException.js","../node_modules/react-qr-reader/node_modules/@zxing/library/esm/core/IllegalArgumentException.js","../node_modules/react-qr-reader/node_modules/@zxing/library/esm/core/BinaryBitmap.js","../node_modules/react-qr-reader/node_modules/@zxing/library/esm/core/ChecksumException.js","../node_modules/react-qr-reader/node_modules/@zxing/library/esm/core/Binarizer.js","../node_modules/react-qr-reader/node_modules/@zxing/library/esm/core/util/System.js","../node_modules/react-qr-reader/node_modules/@zxing/library/esm/core/IndexOutOfBoundsException.js","../node_modules/react-qr-reader/node_modules/@zxing/library/esm/core/ArrayIndexOutOfBoundsException.js","../node_modules/react-qr-reader/node_modules/@zxing/library/esm/core/util/Arrays.js","../node_modules/react-qr-reader/node_modules/@zxing/library/esm/core/util/Integer.js","../node_modules/react-qr-reader/node_modules/@zxing/library/esm/core/common/BitArray.js","../node_modules/react-qr-reader/node_modules/@zxing/library/esm/core/common/CharacterSetECI.js","../node_modules/react-qr-reader/node_modules/@zxing/library/esm/core/FormatException.js","../node_modules/react-qr-reader/node_modules/@zxing/library/esm/core/BarcodeFormat.js","../node_modules/react-qr-reader/node_modules/@zxing/library/esm/core/UnsupportedOperationException.js","../node_modules/react-qr-reader/node_modules/@zxing/library/esm/core/util/StringEncoding.js","../node_modules/react-qr-reader/node_modules/@zxing/library/esm/core/common/StringUtils.js","../node_modules/react-qr-reader/node_modules/@zxing/library/esm/core/util/StringBuilder.js","../node_modules/react-qr-reader/node_modules/@zxing/library/esm/core/common/BitMatrix.js","../node_modules/react-qr-reader/node_modules/@zxing/library/esm/core/NotFoundException.js","../node_modules/react-qr-reader/node_modules/@zxing/library/esm/core/common/GlobalHistogramBinarizer.js","../node_modules/react-qr-reader/node_modules/@zxing/library/esm/core/common/HybridBinarizer.js","../node_modules/react-qr-reader/node_modules/@zxing/library/esm/core/LuminanceSource.js","../node_modules/react-qr-reader/node_modules/@zxing/library/esm/core/InvertedLuminanceSource.js","../node_modules/react-qr-reader/node_modules/@zxing/library/esm/browser/HTMLCanvasElementLuminanceSource.js","../node_modules/react-qr-reader/node_modules/@zxing/library/esm/browser/VideoInputDevice.js","../node_modules/react-qr-reader/node_modules/@zxing/library/esm/browser/BrowserCodeReader.js","../node_modules/react-qr-reader/node_modules/@zxing/library/esm/core/Result.js","../node_modules/react-qr-reader/node_modules/@zxing/library/esm/core/ResultMetadataType.js","../node_modules/react-qr-reader/node_modules/@zxing/library/esm/core/aztec/decoder/Decoder.js","../node_modules/react-qr-reader/node_modules/@zxing/library/esm/core/common/DecoderResult.js","../node_modules/react-qr-reader/node_modules/@zxing/library/esm/core/common/reedsolomon/AbstractGenericGF.js","../node_modules/react-qr-reader/node_modules/@zxing/library/esm/core/common/reedsolomon/GenericGFPoly.js","../node_modules/react-qr-reader/node_modules/@zxing/library/esm/core/ArithmeticException.js","../node_modules/react-qr-reader/node_modules/@zxing/library/esm/core/common/reedsolomon/GenericGF.js","../node_modules/react-qr-reader/node_modules/@zxing/library/esm/core/ReedSolomonException.js","../node_modules/react-qr-reader/node_modules/@zxing/library/esm/core/IllegalStateException.js","../node_modules/react-qr-reader/node_modules/@zxing/library/esm/core/common/reedsolomon/ReedSolomonDecoder.js","../node_modules/react-qr-reader/node_modules/@zxing/library/esm/core/common/detector/MathUtils.js","../node_modules/react-qr-reader/node_modules/@zxing/library/esm/core/util/Float.js","../node_modules/react-qr-reader/node_modules/@zxing/library/esm/core/ResultPoint.js","../node_modules/react-qr-reader/node_modules/@zxing/library/esm/core/common/DetectorResult.js","../node_modules/react-qr-reader/node_modules/@zxing/library/esm/core/aztec/AztecDetectorResult.js","../node_modules/react-qr-reader/node_modules/@zxing/library/esm/core/common/detector/WhiteRectangleDetector.js","../node_modules/react-qr-reader/node_modules/@zxing/library/esm/core/common/GridSampler.js","../node_modules/react-qr-reader/node_modules/@zxing/library/esm/core/common/PerspectiveTransform.js","../node_modules/react-qr-reader/node_modules/@zxing/library/esm/core/common/DefaultGridSampler.js","../node_modules/react-qr-reader/node_modules/@zxing/library/esm/core/common/GridSamplerInstance.js","../node_modules/react-qr-reader/node_modules/@zxing/library/esm/core/aztec/detector/Detector.js","../node_modules/react-qr-reader/node_modules/@zxing/library/esm/core/aztec/AztecReader.js","../node_modules/react-qr-reader/node_modules/@zxing/library/esm/browser/BrowserAztecCodeReader.js","../node_modules/react-qr-reader/node_modules/@zxing/library/esm/core/oned/OneDReader.js","../node_modules/react-qr-reader/node_modules/@zxing/library/esm/core/oned/Code128Reader.js","../node_modules/react-qr-reader/node_modules/@zxing/library/esm/core/oned/Code39Reader.js","../node_modules/react-qr-reader/node_modules/@zxing/library/esm/core/oned/ITFReader.js","../node_modules/react-qr-reader/node_modules/@zxing/library/esm/core/oned/AbstractUPCEANReader.js","../node_modules/react-qr-reader/node_modules/@zxing/library/esm/core/oned/UPCEANExtension5Support.js","../node_modules/react-qr-reader/node_modules/@zxing/library/esm/core/oned/UPCEANExtension2Support.js","../node_modules/react-qr-reader/node_modules/@zxing/library/esm/core/oned/UPCEANExtensionSupport.js","../node_modules/react-qr-reader/node_modules/@zxing/library/esm/core/oned/UPCEANReader.js","../node_modules/react-qr-reader/node_modules/@zxing/library/esm/core/oned/EAN13Reader.js","../node_modules/react-qr-reader/node_modules/@zxing/library/esm/core/oned/EAN8Reader.js","../node_modules/react-qr-reader/node_modules/@zxing/library/esm/core/oned/UPCAReader.js","../node_modules/react-qr-reader/node_modules/@zxing/library/esm/core/oned/UPCEReader.js","../node_modules/react-qr-reader/node_modules/@zxing/library/esm/core/oned/MultiFormatUPCEANReader.js","../node_modules/react-qr-reader/node_modules/@zxing/library/esm/core/oned/rss/AbstractRSSReader.js","../node_modules/react-qr-reader/node_modules/@zxing/library/esm/core/oned/rss/DataCharacter.js","../node_modules/react-qr-reader/node_modules/@zxing/library/esm/core/oned/rss/FinderPattern.js","../node_modules/react-qr-reader/node_modules/@zxing/library/esm/core/oned/rss/RSSUtils.js","../node_modules/react-qr-reader/node_modules/@zxing/library/esm/core/oned/rss/expanded/BitArrayBuilder.js","../node_modules/react-qr-reader/node_modules/@zxing/library/esm/core/oned/rss/expanded/decoders/BlockParsedResult.js","../node_modules/react-qr-reader/node_modules/@zxing/library/esm/core/oned/rss/expanded/decoders/DecodedObject.js","../node_modules/react-qr-reader/node_modules/@zxing/library/esm/core/oned/rss/expanded/decoders/DecodedChar.js","../node_modules/react-qr-reader/node_modules/@zxing/library/esm/core/oned/rss/expanded/decoders/DecodedInformation.js","../node_modules/react-qr-reader/node_modules/@zxing/library/esm/core/oned/rss/expanded/decoders/DecodedNumeric.js","../node_modules/react-qr-reader/node_modules/@zxing/library/esm/core/oned/rss/expanded/decoders/FieldParser.js","../node_modules/react-qr-reader/node_modules/@zxing/library/esm/core/oned/rss/expanded/decoders/GeneralAppIdDecoder.js","../node_modules/react-qr-reader/node_modules/@zxing/library/esm/core/oned/rss/expanded/decoders/AbstractExpandedDecoder.js","../node_modules/react-qr-reader/node_modules/@zxing/library/esm/core/oned/rss/expanded/decoders/AI01decoder.js","../node_modules/react-qr-reader/node_modules/@zxing/library/esm/core/oned/rss/expanded/decoders/AI01AndOtherAIs.js","../node_modules/react-qr-reader/node_modules/@zxing/library/esm/core/oned/rss/expanded/decoders/AnyAIDecoder.js","../node_modules/react-qr-reader/node_modules/@zxing/library/esm/core/oned/rss/expanded/decoders/AI01weightDecoder.js","../node_modules/react-qr-reader/node_modules/@zxing/library/esm/core/oned/rss/expanded/decoders/AI013x0xDecoder.js","../node_modules/react-qr-reader/node_modules/@zxing/library/esm/core/oned/rss/expanded/decoders/AI013103decoder.js","../node_modules/react-qr-reader/node_modules/@zxing/library/esm/core/oned/rss/expanded/decoders/AI01320xDecoder.js","../node_modules/react-qr-reader/node_modules/@zxing/library/esm/core/oned/rss/expanded/decoders/AI01392xDecoder.js","../node_modules/react-qr-reader/node_modules/@zxing/library/esm/core/oned/rss/expanded/decoders/AI01393xDecoder.js","../node_modules/react-qr-reader/node_modules/@zxing/library/esm/core/oned/rss/expanded/decoders/AI013x0x1xDecoder.js","../node_modules/react-qr-reader/node_modules/@zxing/library/esm/core/oned/rss/expanded/ExpandedPair.js","../node_modules/react-qr-reader/node_modules/@zxing/library/esm/core/oned/rss/expanded/ExpandedRow.js","../node_modules/react-qr-reader/node_modules/@zxing/library/esm/core/oned/rss/expanded/RSSExpandedReader.js","../node_modules/react-qr-reader/node_modules/@zxing/library/esm/core/oned/rss/expanded/decoders/AbstractExpandedDecoderComplement.js","../node_modules/react-qr-reader/node_modules/@zxing/library/esm/core/oned/rss/Pair.js","../node_modules/react-qr-reader/node_modules/@zxing/library/esm/core/oned/rss/RSS14Reader.js","../node_modules/react-qr-reader/node_modules/@zxing/library/esm/core/oned/MultiFormatOneDReader.js","../node_modules/react-qr-reader/node_modules/@zxing/library/esm/browser/BrowserBarcodeReader.js","../node_modules/react-qr-reader/node_modules/@zxing/library/esm/core/datamatrix/decoder/Version.js","../node_modules/react-qr-reader/node_modules/@zxing/library/esm/core/datamatrix/decoder/DecodedBitStreamParser.js","../node_modules/react-qr-reader/node_modules/@zxing/library/esm/core/datamatrix/decoder/BitMatrixParser.js","../node_modules/react-qr-reader/node_modules/@zxing/library/esm/core/datamatrix/decoder/DataBlock.js","../node_modules/react-qr-reader/node_modules/@zxing/library/esm/core/common/BitSource.js","../node_modules/react-qr-reader/node_modules/@zxing/library/esm/core/qrcode/decoder/ErrorCorrectionLevel.js","../node_modules/react-qr-reader/node_modules/@zxing/library/esm/core/datamatrix/decoder/Decoder.js","../node_modules/react-qr-reader/node_modules/@zxing/library/esm/core/datamatrix/detector/Detector.js","../node_modules/react-qr-reader/node_modules/@zxing/library/esm/core/datamatrix/DataMatrixReader.js","../node_modules/react-qr-reader/node_modules/@zxing/library/esm/browser/BrowserDatamatrixCodeReader.js","../node_modules/react-qr-reader/node_modules/@zxing/library/esm/core/qrcode/decoder/DataMask.js","../node_modules/react-qr-reader/node_modules/@zxing/library/esm/core/qrcode/decoder/FormatInformation.js","../node_modules/react-qr-reader/node_modules/@zxing/library/esm/core/qrcode/decoder/ECBlocks.js","../node_modules/react-qr-reader/node_modules/@zxing/library/esm/core/qrcode/decoder/ECB.js","../node_modules/react-qr-reader/node_modules/@zxing/library/esm/core/qrcode/decoder/Version.js","../node_modules/react-qr-reader/node_modules/@zxing/library/esm/core/qrcode/decoder/Mode.js","../node_modules/react-qr-reader/node_modules/@zxing/library/esm/core/qrcode/decoder/BitMatrixParser.js","../node_modules/react-qr-reader/node_modules/@zxing/library/esm/core/qrcode/decoder/DataBlock.js","../node_modules/react-qr-reader/node_modules/@zxing/library/esm/core/pdf417/decoder/DecodedBitStreamParser.js","../node_modules/react-qr-reader/node_modules/@zxing/library/esm/core/qrcode/decoder/DecodedBitStreamParser.js","../node_modules/react-qr-reader/node_modules/@zxing/library/esm/core/qrcode/decoder/QRCodeDecoderMetaData.js","../node_modules/react-qr-reader/node_modules/@zxing/library/esm/core/qrcode/decoder/Decoder.js","../node_modules/react-qr-reader/node_modules/@zxing/library/esm/core/qrcode/detector/AlignmentPattern.js","../node_modules/react-qr-reader/node_modules/@zxing/library/esm/core/qrcode/detector/AlignmentPatternFinder.js","../node_modules/react-qr-reader/node_modules/@zxing/library/esm/core/qrcode/detector/FinderPattern.js","../node_modules/react-qr-reader/node_modules/@zxing/library/esm/core/qrcode/detector/FinderPatternInfo.js","../node_modules/react-qr-reader/node_modules/@zxing/library/esm/core/qrcode/detector/FinderPatternFinder.js","../node_modules/react-qr-reader/node_modules/@zxing/library/esm/core/qrcode/detector/Detector.js","../node_modules/react-qr-reader/node_modules/@zxing/library/esm/core/qrcode/QRCodeReader.js","../node_modules/react-qr-reader/node_modules/@zxing/library/esm/core/pdf417/PDF417Common.js","../node_modules/react-qr-reader/node_modules/@zxing/library/esm/core/pdf417/detector/PDF417DetectorResult.js","../node_modules/react-qr-reader/node_modules/@zxing/library/esm/core/pdf417/detector/Detector.js","../node_modules/react-qr-reader/node_modules/@zxing/library/esm/core/pdf417/decoder/ec/ModulusPoly.js","../node_modules/react-qr-reader/node_modules/@zxing/library/esm/core/pdf417/decoder/ec/ModulusBase.js","../node_modules/react-qr-reader/node_modules/@zxing/library/esm/core/pdf417/decoder/ec/ModulusGF.js","../node_modules/react-qr-reader/node_modules/@zxing/library/esm/core/pdf417/decoder/ec/ErrorCorrection.js","../node_modules/react-qr-reader/node_modules/@zxing/library/esm/core/pdf417/decoder/BoundingBox.js","../node_modules/react-qr-reader/node_modules/@zxing/library/esm/core/pdf417/decoder/BarcodeMetadata.js","../node_modules/react-qr-reader/node_modules/@zxing/library/esm/core/util/Formatter.js","../node_modules/react-qr-reader/node_modules/@zxing/library/esm/core/pdf417/decoder/DetectionResultColumn.js","../node_modules/react-qr-reader/node_modules/@zxing/library/esm/core/pdf417/decoder/BarcodeValue.js","../node_modules/react-qr-reader/node_modules/@zxing/library/esm/core/pdf417/decoder/DetectionResultRowIndicatorColumn.js","../node_modules/react-qr-reader/node_modules/@zxing/library/esm/core/pdf417/decoder/DetectionResult.js","../node_modules/react-qr-reader/node_modules/@zxing/library/esm/core/pdf417/decoder/Codeword.js","../node_modules/react-qr-reader/node_modules/@zxing/library/esm/core/pdf417/decoder/PDF417CodewordDecoder.js","../node_modules/react-qr-reader/node_modules/@zxing/library/esm/core/pdf417/PDF417ResultMetadata.js","../node_modules/react-qr-reader/node_modules/@zxing/library/esm/core/util/Long.js","../node_modules/react-qr-reader/node_modules/@zxing/library/esm/core/NullPointerException.js","../node_modules/react-qr-reader/node_modules/@zxing/library/esm/core/util/OutputStream.js","../node_modules/react-qr-reader/node_modules/@zxing/library/esm/core/OutOfMemoryError.js","../node_modules/react-qr-reader/node_modules/@zxing/library/esm/core/util/ByteArrayOutputStream.js","../node_modules/react-qr-reader/node_modules/@zxing/library/esm/core/pdf417/decoder/PDF417ScanningDecoder.js","../node_modules/react-qr-reader/node_modules/@zxing/library/esm/core/pdf417/PDF417Reader.js","../node_modules/react-qr-reader/node_modules/@zxing/library/esm/core/ReaderException.js","../node_modules/react-qr-reader/node_modules/@zxing/library/esm/core/MultiFormatReader.js","../node_modules/react-qr-reader/node_modules/@zxing/library/esm/browser/BrowserMultiFormatReader.js","../node_modules/react-qr-reader/node_modules/@zxing/library/esm/browser/BrowserPDF417Reader.js","../node_modules/react-qr-reader/node_modules/@zxing/library/esm/browser/BrowserQRCodeReader.js","../node_modules/react-qr-reader/node_modules/@zxing/library/esm/core/EncodeHintType.js","../node_modules/react-qr-reader/node_modules/@zxing/library/esm/core/common/reedsolomon/ReedSolomonEncoder.js","../node_modules/react-qr-reader/node_modules/@zxing/library/esm/core/qrcode/encoder/MaskUtil.js","../node_modules/react-qr-reader/node_modules/@zxing/library/esm/core/qrcode/encoder/ByteMatrix.js","../node_modules/react-qr-reader/node_modules/@zxing/library/esm/core/qrcode/encoder/QRCode.js","../node_modules/react-qr-reader/node_modules/@zxing/library/esm/core/WriterException.js","../node_modules/react-qr-reader/node_modules/@zxing/library/esm/core/qrcode/encoder/MatrixUtil.js","../node_modules/react-qr-reader/node_modules/@zxing/library/esm/core/qrcode/encoder/BlockPair.js","../node_modules/react-qr-reader/node_modules/@zxing/library/esm/core/qrcode/encoder/Encoder.js","../node_modules/react-qr-reader/node_modules/@zxing/library/esm/core/PlanarYUVLuminanceSource.js","../node_modules/react-qr-reader/node_modules/@zxing/library/esm/core/RGBLuminanceSource.js","../node_modules/react-qr-reader/node_modules/@zxing/library/esm/core/util/Charset.js","../node_modules/react-qr-reader/node_modules/@zxing/library/esm/core/aztec/encoder/Token.js","../node_modules/react-qr-reader/node_modules/@zxing/library/esm/core/aztec/encoder/SimpleToken.js","../node_modules/react-qr-reader/node_modules/@zxing/library/esm/core/aztec/encoder/BinaryShiftToken.js","../node_modules/react-qr-reader/node_modules/@zxing/library/esm/core/aztec/encoder/EncoderConstants.js","../node_modules/react-qr-reader/node_modules/@zxing/library/esm/core/aztec/encoder/ShiftTable.js","../node_modules/react-qr-reader/node_modules/@zxing/library/esm/core/aztec/encoder/CharMap.js","../node_modules/react-qr-reader/node_modules/@zxing/browser/esm/common/HTMLCanvasElementLuminanceSource.js","../node_modules/react-qr-reader/node_modules/@zxing/browser/esm/common/navigator-utils.js","../node_modules/react-qr-reader/node_modules/@zxing/browser/esm/readers/BrowserCodeReader.js","../node_modules/react-qr-reader/node_modules/@zxing/browser/esm/readers/BrowserAztecCodeReader.js","../node_modules/react-qr-reader/node_modules/@zxing/browser/esm/readers/BrowserMultiFormatOneDReader.js","../node_modules/react-qr-reader/node_modules/@zxing/browser/esm/readers/BrowserDatamatrixCodeReader.js","../node_modules/react-qr-reader/node_modules/@zxing/browser/esm/readers/BrowserMultiFormatReader.js","../node_modules/react-qr-reader/node_modules/@zxing/browser/esm/readers/BrowserPDF417Reader.js","../node_modules/react-qr-reader/node_modules/@zxing/browser/esm/readers/BrowserQRCodeReader.js","../node_modules/react-qr-reader/src/QrReader/utils.ts","../node_modules/react-qr-reader/node_modules/tslib/tslib.es6.js","../node_modules/react-qr-reader/src/QrReader/styles.ts","../node_modules/react-qr-reader/src/QrReader/index.tsx","../node_modules/react-qr-reader/src/QrReader/hooks.ts","routes/scan/scan.tsx","routes/test/5d.tsx","utils/historyRouter.tsx","App.tsx","index.js"],"sourcesContent":["function _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n\n for (var i = 0, arr2 = new Array(len); i < len; i++) {\n arr2[i] = arr[i];\n }\n\n return arr2;\n}\n\nmodule.exports = _arrayLikeToArray, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var arrayLikeToArray = require(\"./arrayLikeToArray.js\");\n\nfunction _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) return arrayLikeToArray(arr);\n}\n\nmodule.exports = _arrayWithoutHoles, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return self;\n}\n\nmodule.exports = _assertThisInitialized, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\n\nmodule.exports = _classCallCheck, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\n\nfunction _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n Object.defineProperty(Constructor, \"prototype\", {\n writable: false\n });\n return Constructor;\n}\n\nmodule.exports = _createClass, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var getPrototypeOf = require(\"./getPrototypeOf.js\");\n\nvar isNativeReflectConstruct = require(\"./isNativeReflectConstruct.js\");\n\nvar possibleConstructorReturn = require(\"./possibleConstructorReturn.js\");\n\nfunction _createSuper(Derived) {\n var hasNativeReflectConstruct = isNativeReflectConstruct();\n return function _createSuperInternal() {\n var Super = getPrototypeOf(Derived),\n result;\n\n if (hasNativeReflectConstruct) {\n var NewTarget = getPrototypeOf(this).constructor;\n result = Reflect.construct(Super, arguments, NewTarget);\n } else {\n result = Super.apply(this, arguments);\n }\n\n return possibleConstructorReturn(this, result);\n };\n}\n\nmodule.exports = _createSuper, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n\nmodule.exports = _defineProperty, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var superPropBase = require(\"./superPropBase.js\");\n\nfunction _get() {\n if (typeof Reflect !== \"undefined\" && Reflect.get) {\n module.exports = _get = Reflect.get, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n } else {\n module.exports = _get = function _get(target, property, receiver) {\n var base = superPropBase(target, property);\n if (!base) return;\n var desc = Object.getOwnPropertyDescriptor(base, property);\n\n if (desc.get) {\n return desc.get.call(arguments.length < 3 ? target : receiver);\n }\n\n return desc.value;\n }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n }\n\n return _get.apply(this, arguments);\n}\n\nmodule.exports = _get, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _getPrototypeOf(o) {\n module.exports = _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n return _getPrototypeOf(o);\n}\n\nmodule.exports = _getPrototypeOf, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var setPrototypeOf = require(\"./setPrototypeOf.js\");\n\nfunction _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n Object.defineProperty(subClass, \"prototype\", {\n writable: false\n });\n if (superClass) setPrototypeOf(subClass, superClass);\n}\n\nmodule.exports = _inherits, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _isNativeReflectConstruct() {\n if (typeof Reflect === \"undefined\" || !Reflect.construct) return false;\n if (Reflect.construct.sham) return false;\n if (typeof Proxy === \"function\") return true;\n\n try {\n Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {}));\n return true;\n } catch (e) {\n return false;\n }\n}\n\nmodule.exports = _isNativeReflectConstruct, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _iterableToArray(iter) {\n if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter);\n}\n\nmodule.exports = _iterableToArray, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\n\nmodule.exports = _nonIterableSpread, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var _typeof = require(\"./typeof.js\")[\"default\"];\n\nvar assertThisInitialized = require(\"./assertThisInitialized.js\");\n\nfunction _possibleConstructorReturn(self, call) {\n if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) {\n return call;\n } else if (call !== void 0) {\n throw new TypeError(\"Derived constructors may only return object or undefined\");\n }\n\n return assertThisInitialized(self);\n}\n\nmodule.exports = _possibleConstructorReturn, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _setPrototypeOf(o, p) {\n module.exports = _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n return _setPrototypeOf(o, p);\n}\n\nmodule.exports = _setPrototypeOf, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var getPrototypeOf = require(\"./getPrototypeOf.js\");\n\nfunction _superPropBase(object, property) {\n while (!Object.prototype.hasOwnProperty.call(object, property)) {\n object = getPrototypeOf(object);\n if (object === null) break;\n }\n\n return object;\n}\n\nmodule.exports = _superPropBase, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var arrayWithoutHoles = require(\"./arrayWithoutHoles.js\");\n\nvar iterableToArray = require(\"./iterableToArray.js\");\n\nvar unsupportedIterableToArray = require(\"./unsupportedIterableToArray.js\");\n\nvar nonIterableSpread = require(\"./nonIterableSpread.js\");\n\nfunction _toConsumableArray(arr) {\n return arrayWithoutHoles(arr) || iterableToArray(arr) || unsupportedIterableToArray(arr) || nonIterableSpread();\n}\n\nmodule.exports = _toConsumableArray, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n return (module.exports = _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) {\n return typeof obj;\n } : function (obj) {\n return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports), _typeof(obj);\n}\n\nmodule.exports = _typeof, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var arrayLikeToArray = require(\"./arrayLikeToArray.js\");\n\nfunction _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return arrayLikeToArray(o, minLen);\n}\n\nmodule.exports = _unsupportedIterableToArray, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","module.exports = require(\"regenerator-runtime\");\n","/* eslint-disable max-lines */\nimport {\n Breadcrumb,\n BreadcrumbHint,\n Client,\n CustomSamplingContext,\n Event,\n EventHint,\n Extra,\n Extras,\n Hub as HubInterface,\n Integration,\n IntegrationClass,\n Primitive,\n Session,\n SessionContext,\n Severity,\n SeverityLevel,\n Transaction,\n TransactionContext,\n User,\n} from '@sentry/types';\nimport {\n consoleSandbox,\n dateTimestampInSeconds,\n getGlobalObject,\n getGlobalSingleton,\n isNodeEnv,\n logger,\n uuid4,\n} from '@sentry/utils';\n\nimport { Scope } from './scope';\nimport { closeSession, makeSession, updateSession } from './session';\n\n/**\n * API compatibility version of this hub.\n *\n * WARNING: This number should only be increased when the global interface\n * changes and new methods are introduced.\n *\n * @hidden\n */\nexport const API_VERSION = 4;\n\n/**\n * Default maximum number of breadcrumbs added to an event. Can be overwritten\n * with {@link Options.maxBreadcrumbs}.\n */\nconst DEFAULT_BREADCRUMBS = 100;\n\n/**\n * A layer in the process stack.\n * @hidden\n */\nexport interface Layer {\n client?: Client;\n scope?: Scope;\n}\n\n/**\n * An object that contains a hub and maintains a scope stack.\n * @hidden\n */\nexport interface Carrier {\n __SENTRY__?: {\n hub?: Hub;\n /**\n * Extra Hub properties injected by various SDKs\n */\n integrations?: Integration[];\n extensions?: {\n /** Hack to prevent bundlers from breaking our usage of the domain package in the cross-platform Hub package */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n domain?: { [key: string]: any };\n } & {\n /** Extension methods for the hub, which are bound to the current Hub instance */\n // eslint-disable-next-line @typescript-eslint/ban-types\n [key: string]: Function;\n };\n };\n}\n\n/**\n * @inheritDoc\n */\nexport class Hub implements HubInterface {\n /** Is a {@link Layer}[] containing the client and scope */\n private readonly _stack: Layer[] = [{}];\n\n /** Contains the last event id of a captured event. */\n private _lastEventId?: string;\n\n /**\n * Creates a new instance of the hub, will push one {@link Layer} into the\n * internal stack on creation.\n *\n * @param client bound to the hub.\n * @param scope bound to the hub.\n * @param version number, higher number means higher priority.\n */\n public constructor(client?: Client, scope: Scope = new Scope(), private readonly _version: number = API_VERSION) {\n this.getStackTop().scope = scope;\n if (client) {\n this.bindClient(client);\n }\n }\n\n /**\n * @inheritDoc\n */\n public isOlderThan(version: number): boolean {\n return this._version < version;\n }\n\n /**\n * @inheritDoc\n */\n public bindClient(client?: Client): void {\n const top = this.getStackTop();\n top.client = client;\n if (client && client.setupIntegrations) {\n client.setupIntegrations();\n }\n }\n\n /**\n * @inheritDoc\n */\n public pushScope(): Scope {\n // We want to clone the content of prev scope\n const scope = Scope.clone(this.getScope());\n this.getStack().push({\n client: this.getClient(),\n scope,\n });\n return scope;\n }\n\n /**\n * @inheritDoc\n */\n public popScope(): boolean {\n if (this.getStack().length <= 1) return false;\n return !!this.getStack().pop();\n }\n\n /**\n * @inheritDoc\n */\n public withScope(callback: (scope: Scope) => void): void {\n const scope = this.pushScope();\n try {\n callback(scope);\n } finally {\n this.popScope();\n }\n }\n\n /**\n * @inheritDoc\n */\n public getClient(): C | undefined {\n return this.getStackTop().client as C;\n }\n\n /** Returns the scope of the top stack. */\n public getScope(): Scope | undefined {\n return this.getStackTop().scope;\n }\n\n /** Returns the scope stack for domains or the process. */\n public getStack(): Layer[] {\n return this._stack;\n }\n\n /** Returns the topmost scope layer in the order domain > local > process. */\n public getStackTop(): Layer {\n return this._stack[this._stack.length - 1];\n }\n\n /**\n * @inheritDoc\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/explicit-module-boundary-types\n public captureException(exception: any, hint?: EventHint): string {\n const eventId = (this._lastEventId = hint && hint.event_id ? hint.event_id : uuid4());\n const syntheticException = new Error('Sentry syntheticException');\n this._withClient((client, scope) => {\n client.captureException(\n exception,\n {\n originalException: exception,\n syntheticException,\n ...hint,\n event_id: eventId,\n },\n scope,\n );\n });\n return eventId;\n }\n\n /**\n * @inheritDoc\n */\n public captureMessage(\n message: string,\n // eslint-disable-next-line deprecation/deprecation\n level?: Severity | SeverityLevel,\n hint?: EventHint,\n ): string {\n const eventId = (this._lastEventId = hint && hint.event_id ? hint.event_id : uuid4());\n const syntheticException = new Error(message);\n this._withClient((client, scope) => {\n client.captureMessage(\n message,\n level,\n {\n originalException: message,\n syntheticException,\n ...hint,\n event_id: eventId,\n },\n scope,\n );\n });\n return eventId;\n }\n\n /**\n * @inheritDoc\n */\n public captureEvent(event: Event, hint?: EventHint): string {\n const eventId = hint && hint.event_id ? hint.event_id : uuid4();\n if (event.type !== 'transaction') {\n this._lastEventId = eventId;\n }\n\n this._withClient((client, scope) => {\n client.captureEvent(event, { ...hint, event_id: eventId }, scope);\n });\n return eventId;\n }\n\n /**\n * @inheritDoc\n */\n public lastEventId(): string | undefined {\n return this._lastEventId;\n }\n\n /**\n * @inheritDoc\n */\n public addBreadcrumb(breadcrumb: Breadcrumb, hint?: BreadcrumbHint): void {\n const { scope, client } = this.getStackTop();\n\n if (!scope || !client) return;\n\n // eslint-disable-next-line @typescript-eslint/unbound-method\n const { beforeBreadcrumb = null, maxBreadcrumbs = DEFAULT_BREADCRUMBS } =\n (client.getOptions && client.getOptions()) || {};\n\n if (maxBreadcrumbs <= 0) return;\n\n const timestamp = dateTimestampInSeconds();\n const mergedBreadcrumb = { timestamp, ...breadcrumb };\n const finalBreadcrumb = beforeBreadcrumb\n ? (consoleSandbox(() => beforeBreadcrumb(mergedBreadcrumb, hint)) as Breadcrumb | null)\n : mergedBreadcrumb;\n\n if (finalBreadcrumb === null) return;\n\n scope.addBreadcrumb(finalBreadcrumb, maxBreadcrumbs);\n }\n\n /**\n * @inheritDoc\n */\n public setUser(user: User | null): void {\n const scope = this.getScope();\n if (scope) scope.setUser(user);\n }\n\n /**\n * @inheritDoc\n */\n public setTags(tags: { [key: string]: Primitive }): void {\n const scope = this.getScope();\n if (scope) scope.setTags(tags);\n }\n\n /**\n * @inheritDoc\n */\n public setExtras(extras: Extras): void {\n const scope = this.getScope();\n if (scope) scope.setExtras(extras);\n }\n\n /**\n * @inheritDoc\n */\n public setTag(key: string, value: Primitive): void {\n const scope = this.getScope();\n if (scope) scope.setTag(key, value);\n }\n\n /**\n * @inheritDoc\n */\n public setExtra(key: string, extra: Extra): void {\n const scope = this.getScope();\n if (scope) scope.setExtra(key, extra);\n }\n\n /**\n * @inheritDoc\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n public setContext(name: string, context: { [key: string]: any } | null): void {\n const scope = this.getScope();\n if (scope) scope.setContext(name, context);\n }\n\n /**\n * @inheritDoc\n */\n public configureScope(callback: (scope: Scope) => void): void {\n const { scope, client } = this.getStackTop();\n if (scope && client) {\n callback(scope);\n }\n }\n\n /**\n * @inheritDoc\n */\n public run(callback: (hub: Hub) => void): void {\n const oldHub = makeMain(this);\n try {\n callback(this);\n } finally {\n makeMain(oldHub);\n }\n }\n\n /**\n * @inheritDoc\n */\n public getIntegration(integration: IntegrationClass): T | null {\n const client = this.getClient();\n if (!client) return null;\n try {\n return client.getIntegration(integration);\n } catch (_oO) {\n __DEBUG_BUILD__ && logger.warn(`Cannot retrieve integration ${integration.id} from the current Hub`);\n return null;\n }\n }\n\n /**\n * @inheritDoc\n */\n public startTransaction(context: TransactionContext, customSamplingContext?: CustomSamplingContext): Transaction {\n return this._callExtensionMethod('startTransaction', context, customSamplingContext);\n }\n\n /**\n * @inheritDoc\n */\n public traceHeaders(): { [key: string]: string } {\n return this._callExtensionMethod<{ [key: string]: string }>('traceHeaders');\n }\n\n /**\n * @inheritDoc\n */\n public captureSession(endSession: boolean = false): void {\n // both send the update and pull the session from the scope\n if (endSession) {\n return this.endSession();\n }\n\n // only send the update\n this._sendSessionUpdate();\n }\n\n /**\n * @inheritDoc\n */\n public endSession(): void {\n const layer = this.getStackTop();\n const scope = layer && layer.scope;\n const session = scope && scope.getSession();\n if (session) {\n closeSession(session);\n }\n this._sendSessionUpdate();\n\n // the session is over; take it off of the scope\n if (scope) {\n scope.setSession();\n }\n }\n\n /**\n * @inheritDoc\n */\n public startSession(context?: SessionContext): Session {\n const { scope, client } = this.getStackTop();\n const { release, environment } = (client && client.getOptions()) || {};\n\n // Will fetch userAgent if called from browser sdk\n const global = getGlobalObject<{ navigator?: { userAgent?: string } }>();\n const { userAgent } = global.navigator || {};\n\n const session = makeSession({\n release,\n environment,\n ...(scope && { user: scope.getUser() }),\n ...(userAgent && { userAgent }),\n ...context,\n });\n\n if (scope) {\n // End existing session if there's one\n const currentSession = scope.getSession && scope.getSession();\n if (currentSession && currentSession.status === 'ok') {\n updateSession(currentSession, { status: 'exited' });\n }\n this.endSession();\n\n // Afterwards we set the new session on the scope\n scope.setSession(session);\n }\n\n return session;\n }\n\n /**\n * Sends the current Session on the scope\n */\n private _sendSessionUpdate(): void {\n const { scope, client } = this.getStackTop();\n if (!scope) return;\n\n const session = scope.getSession();\n if (session) {\n if (client && client.captureSession) {\n client.captureSession(session);\n }\n }\n }\n\n /**\n * Internal helper function to call a method on the top client if it exists.\n *\n * @param method The method to call on the client.\n * @param args Arguments to pass to the client function.\n */\n private _withClient(callback: (client: Client, scope: Scope | undefined) => void): void {\n const { scope, client } = this.getStackTop();\n if (client) {\n callback(client, scope);\n }\n }\n\n /**\n * Calls global extension method and binding current instance to the function call\n */\n // @ts-ignore Function lacks ending return statement and return type does not include 'undefined'. ts(2366)\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n private _callExtensionMethod(method: string, ...args: any[]): T {\n const carrier = getMainCarrier();\n const sentry = carrier.__SENTRY__;\n if (sentry && sentry.extensions && typeof sentry.extensions[method] === 'function') {\n return sentry.extensions[method].apply(this, args);\n }\n __DEBUG_BUILD__ && logger.warn(`Extension method ${method} couldn't be found, doing nothing.`);\n }\n}\n\n/**\n * Returns the global shim registry.\n *\n * FIXME: This function is problematic, because despite always returning a valid Carrier,\n * it has an optional `__SENTRY__` property, which then in turn requires us to always perform an unnecessary check\n * at the call-site. We always access the carrier through this function, so we can guarantee that `__SENTRY__` is there.\n **/\nexport function getMainCarrier(): Carrier {\n const carrier = getGlobalObject();\n carrier.__SENTRY__ = carrier.__SENTRY__ || {\n extensions: {},\n hub: undefined,\n };\n return carrier;\n}\n\n/**\n * Replaces the current main hub with the passed one on the global object\n *\n * @returns The old replaced hub\n */\nexport function makeMain(hub: Hub): Hub {\n const registry = getMainCarrier();\n const oldHub = getHubFromCarrier(registry);\n setHubOnCarrier(registry, hub);\n return oldHub;\n}\n\n/**\n * Returns the default hub instance.\n *\n * If a hub is already registered in the global carrier but this module\n * contains a more recent version, it replaces the registered version.\n * Otherwise, the currently registered hub will be returned.\n */\nexport function getCurrentHub(): Hub {\n // Get main carrier (global for every environment)\n const registry = getMainCarrier();\n\n // If there's no hub, or its an old API, assign a new one\n if (!hasHubOnCarrier(registry) || getHubFromCarrier(registry).isOlderThan(API_VERSION)) {\n setHubOnCarrier(registry, new Hub());\n }\n\n // Prefer domains over global if they are there (applicable only to Node environment)\n if (isNodeEnv()) {\n return getHubFromActiveDomain(registry);\n }\n // Return hub that lives on a global object\n return getHubFromCarrier(registry);\n}\n\n/**\n * Try to read the hub from an active domain, and fallback to the registry if one doesn't exist\n * @returns discovered hub\n */\nfunction getHubFromActiveDomain(registry: Carrier): Hub {\n try {\n const sentry = getMainCarrier().__SENTRY__;\n const activeDomain = sentry && sentry.extensions && sentry.extensions.domain && sentry.extensions.domain.active;\n\n // If there's no active domain, just return global hub\n if (!activeDomain) {\n return getHubFromCarrier(registry);\n }\n\n // If there's no hub on current domain, or it's an old API, assign a new one\n if (!hasHubOnCarrier(activeDomain) || getHubFromCarrier(activeDomain).isOlderThan(API_VERSION)) {\n const registryHubTopStack = getHubFromCarrier(registry).getStackTop();\n setHubOnCarrier(activeDomain, new Hub(registryHubTopStack.client, Scope.clone(registryHubTopStack.scope)));\n }\n\n // Return hub that lives on a domain\n return getHubFromCarrier(activeDomain);\n } catch (_Oo) {\n // Return hub that lives on a global object\n return getHubFromCarrier(registry);\n }\n}\n\n/**\n * This will tell whether a carrier has a hub on it or not\n * @param carrier object\n */\nfunction hasHubOnCarrier(carrier: Carrier): boolean {\n return !!(carrier && carrier.__SENTRY__ && carrier.__SENTRY__.hub);\n}\n\n/**\n * This will create a new {@link Hub} and add to the passed object on\n * __SENTRY__.hub.\n * @param carrier object\n * @hidden\n */\nexport function getHubFromCarrier(carrier: Carrier): Hub {\n return getGlobalSingleton('hub', () => new Hub(), carrier);\n}\n\n/**\n * This will set passed {@link Hub} on the passed object's __SENTRY__.hub attribute\n * @param carrier object\n * @param hub Hub\n * @returns A boolean indicating success or failure\n */\nexport function setHubOnCarrier(carrier: Carrier, hub: Hub): boolean {\n if (!carrier) return false;\n const __SENTRY__ = (carrier.__SENTRY__ = carrier.__SENTRY__ || {});\n __SENTRY__.hub = hub;\n return true;\n}\n","/* eslint-disable max-lines */\nimport {\n Attachment,\n Breadcrumb,\n CaptureContext,\n Context,\n Contexts,\n Event,\n EventHint,\n EventProcessor,\n Extra,\n Extras,\n Primitive,\n RequestSession,\n Scope as ScopeInterface,\n ScopeContext,\n Session,\n Severity,\n SeverityLevel,\n Span,\n Transaction,\n User,\n} from '@sentry/types';\nimport {\n dateTimestampInSeconds,\n getGlobalSingleton,\n isPlainObject,\n isThenable,\n logger,\n SyncPromise,\n} from '@sentry/utils';\n\nimport { updateSession } from './session';\n\n/**\n * Absolute maximum number of breadcrumbs added to an event.\n * The `maxBreadcrumbs` option cannot be higher than this value.\n */\nconst MAX_BREADCRUMBS = 100;\n\n/**\n * Holds additional event information. {@link Scope.applyToEvent} will be\n * called by the client before an event will be sent.\n */\nexport class Scope implements ScopeInterface {\n /** Flag if notifying is happening. */\n protected _notifyingListeners: boolean = false;\n\n /** Callback for client to receive scope changes. */\n protected _scopeListeners: Array<(scope: Scope) => void> = [];\n\n /** Callback list that will be called after {@link applyToEvent}. */\n protected _eventProcessors: EventProcessor[] = [];\n\n /** Array of breadcrumbs. */\n protected _breadcrumbs: Breadcrumb[] = [];\n\n /** User */\n protected _user: User = {};\n\n /** Tags */\n protected _tags: { [key: string]: Primitive } = {};\n\n /** Extra */\n protected _extra: Extras = {};\n\n /** Contexts */\n protected _contexts: Contexts = {};\n\n /** Fingerprint */\n protected _fingerprint?: string[];\n\n /** Severity */\n // eslint-disable-next-line deprecation/deprecation\n protected _level?: Severity | SeverityLevel;\n\n /** Transaction Name */\n protected _transactionName?: string;\n\n /** Span */\n protected _span?: Span;\n\n /** Session */\n protected _session?: Session;\n\n /** Request Mode Session Status */\n protected _requestSession?: RequestSession;\n\n /** Attachments */\n protected _attachments: Attachment[] = [];\n\n /**\n * A place to stash data which is needed at some point in the SDK's event processing pipeline but which shouldn't get\n * sent to Sentry\n */\n protected _sdkProcessingMetadata?: { [key: string]: unknown } = {};\n\n /**\n * Inherit values from the parent scope.\n * @param scope to clone.\n */\n public static clone(scope?: Scope): Scope {\n const newScope = new Scope();\n if (scope) {\n newScope._breadcrumbs = [...scope._breadcrumbs];\n newScope._tags = { ...scope._tags };\n newScope._extra = { ...scope._extra };\n newScope._contexts = { ...scope._contexts };\n newScope._user = scope._user;\n newScope._level = scope._level;\n newScope._span = scope._span;\n newScope._session = scope._session;\n newScope._transactionName = scope._transactionName;\n newScope._fingerprint = scope._fingerprint;\n newScope._eventProcessors = [...scope._eventProcessors];\n newScope._requestSession = scope._requestSession;\n newScope._attachments = [...scope._attachments];\n }\n return newScope;\n }\n\n /**\n * Add internal on change listener. Used for sub SDKs that need to store the scope.\n * @hidden\n */\n public addScopeListener(callback: (scope: Scope) => void): void {\n this._scopeListeners.push(callback);\n }\n\n /**\n * @inheritDoc\n */\n public addEventProcessor(callback: EventProcessor): this {\n this._eventProcessors.push(callback);\n return this;\n }\n\n /**\n * @inheritDoc\n */\n public setUser(user: User | null): this {\n this._user = user || {};\n if (this._session) {\n updateSession(this._session, { user });\n }\n this._notifyScopeListeners();\n return this;\n }\n\n /**\n * @inheritDoc\n */\n public getUser(): User | undefined {\n return this._user;\n }\n\n /**\n * @inheritDoc\n */\n public getRequestSession(): RequestSession | undefined {\n return this._requestSession;\n }\n\n /**\n * @inheritDoc\n */\n public setRequestSession(requestSession?: RequestSession): this {\n this._requestSession = requestSession;\n return this;\n }\n\n /**\n * @inheritDoc\n */\n public setTags(tags: { [key: string]: Primitive }): this {\n this._tags = {\n ...this._tags,\n ...tags,\n };\n this._notifyScopeListeners();\n return this;\n }\n\n /**\n * @inheritDoc\n */\n public setTag(key: string, value: Primitive): this {\n this._tags = { ...this._tags, [key]: value };\n this._notifyScopeListeners();\n return this;\n }\n\n /**\n * @inheritDoc\n */\n public setExtras(extras: Extras): this {\n this._extra = {\n ...this._extra,\n ...extras,\n };\n this._notifyScopeListeners();\n return this;\n }\n\n /**\n * @inheritDoc\n */\n public setExtra(key: string, extra: Extra): this {\n this._extra = { ...this._extra, [key]: extra };\n this._notifyScopeListeners();\n return this;\n }\n\n /**\n * @inheritDoc\n */\n public setFingerprint(fingerprint: string[]): this {\n this._fingerprint = fingerprint;\n this._notifyScopeListeners();\n return this;\n }\n\n /**\n * @inheritDoc\n */\n public setLevel(\n // eslint-disable-next-line deprecation/deprecation\n level: Severity | SeverityLevel,\n ): this {\n this._level = level;\n this._notifyScopeListeners();\n return this;\n }\n\n /**\n * @inheritDoc\n */\n public setTransactionName(name?: string): this {\n this._transactionName = name;\n this._notifyScopeListeners();\n return this;\n }\n\n /**\n * @inheritDoc\n */\n public setContext(key: string, context: Context | null): this {\n if (context === null) {\n // eslint-disable-next-line @typescript-eslint/no-dynamic-delete\n delete this._contexts[key];\n } else {\n this._contexts = { ...this._contexts, [key]: context };\n }\n\n this._notifyScopeListeners();\n return this;\n }\n\n /**\n * @inheritDoc\n */\n public setSpan(span?: Span): this {\n this._span = span;\n this._notifyScopeListeners();\n return this;\n }\n\n /**\n * @inheritDoc\n */\n public getSpan(): Span | undefined {\n return this._span;\n }\n\n /**\n * @inheritDoc\n */\n public getTransaction(): Transaction | undefined {\n // Often, this span (if it exists at all) will be a transaction, but it's not guaranteed to be. Regardless, it will\n // have a pointer to the currently-active transaction.\n const span = this.getSpan();\n return span && span.transaction;\n }\n\n /**\n * @inheritDoc\n */\n public setSession(session?: Session): this {\n if (!session) {\n delete this._session;\n } else {\n this._session = session;\n }\n this._notifyScopeListeners();\n return this;\n }\n\n /**\n * @inheritDoc\n */\n public getSession(): Session | undefined {\n return this._session;\n }\n\n /**\n * @inheritDoc\n */\n public update(captureContext?: CaptureContext): this {\n if (!captureContext) {\n return this;\n }\n\n if (typeof captureContext === 'function') {\n const updatedScope = (captureContext as (scope: T) => T)(this);\n return updatedScope instanceof Scope ? updatedScope : this;\n }\n\n if (captureContext instanceof Scope) {\n this._tags = { ...this._tags, ...captureContext._tags };\n this._extra = { ...this._extra, ...captureContext._extra };\n this._contexts = { ...this._contexts, ...captureContext._contexts };\n if (captureContext._user && Object.keys(captureContext._user).length) {\n this._user = captureContext._user;\n }\n if (captureContext._level) {\n this._level = captureContext._level;\n }\n if (captureContext._fingerprint) {\n this._fingerprint = captureContext._fingerprint;\n }\n if (captureContext._requestSession) {\n this._requestSession = captureContext._requestSession;\n }\n } else if (isPlainObject(captureContext)) {\n // eslint-disable-next-line no-param-reassign\n captureContext = captureContext as ScopeContext;\n this._tags = { ...this._tags, ...captureContext.tags };\n this._extra = { ...this._extra, ...captureContext.extra };\n this._contexts = { ...this._contexts, ...captureContext.contexts };\n if (captureContext.user) {\n this._user = captureContext.user;\n }\n if (captureContext.level) {\n this._level = captureContext.level;\n }\n if (captureContext.fingerprint) {\n this._fingerprint = captureContext.fingerprint;\n }\n if (captureContext.requestSession) {\n this._requestSession = captureContext.requestSession;\n }\n }\n\n return this;\n }\n\n /**\n * @inheritDoc\n */\n public clear(): this {\n this._breadcrumbs = [];\n this._tags = {};\n this._extra = {};\n this._user = {};\n this._contexts = {};\n this._level = undefined;\n this._transactionName = undefined;\n this._fingerprint = undefined;\n this._requestSession = undefined;\n this._span = undefined;\n this._session = undefined;\n this._notifyScopeListeners();\n this._attachments = [];\n return this;\n }\n\n /**\n * @inheritDoc\n */\n public addBreadcrumb(breadcrumb: Breadcrumb, maxBreadcrumbs?: number): this {\n const maxCrumbs = typeof maxBreadcrumbs === 'number' ? Math.min(maxBreadcrumbs, MAX_BREADCRUMBS) : MAX_BREADCRUMBS;\n\n // No data has been changed, so don't notify scope listeners\n if (maxCrumbs <= 0) {\n return this;\n }\n\n const mergedBreadcrumb = {\n timestamp: dateTimestampInSeconds(),\n ...breadcrumb,\n };\n this._breadcrumbs = [...this._breadcrumbs, mergedBreadcrumb].slice(-maxCrumbs);\n this._notifyScopeListeners();\n\n return this;\n }\n\n /**\n * @inheritDoc\n */\n public clearBreadcrumbs(): this {\n this._breadcrumbs = [];\n this._notifyScopeListeners();\n return this;\n }\n\n /**\n * @inheritDoc\n */\n public addAttachment(attachment: Attachment): this {\n this._attachments.push(attachment);\n return this;\n }\n\n /**\n * @inheritDoc\n */\n public getAttachments(): Attachment[] {\n return this._attachments;\n }\n\n /**\n * @inheritDoc\n */\n public clearAttachments(): this {\n this._attachments = [];\n return this;\n }\n\n /**\n * Applies the current context and fingerprint to the event.\n * Note that breadcrumbs will be added by the client.\n * Also if the event has already breadcrumbs on it, we do not merge them.\n * @param event Event\n * @param hint May contain additional information about the original exception.\n * @hidden\n */\n public applyToEvent(event: Event, hint: EventHint = {}): PromiseLike {\n if (this._extra && Object.keys(this._extra).length) {\n event.extra = { ...this._extra, ...event.extra };\n }\n if (this._tags && Object.keys(this._tags).length) {\n event.tags = { ...this._tags, ...event.tags };\n }\n if (this._user && Object.keys(this._user).length) {\n event.user = { ...this._user, ...event.user };\n }\n if (this._contexts && Object.keys(this._contexts).length) {\n event.contexts = { ...this._contexts, ...event.contexts };\n }\n if (this._level) {\n event.level = this._level;\n }\n if (this._transactionName) {\n event.transaction = this._transactionName;\n }\n // We want to set the trace context for normal events only if there isn't already\n // a trace context on the event. There is a product feature in place where we link\n // errors with transaction and it relies on that.\n if (this._span) {\n event.contexts = { trace: this._span.getTraceContext(), ...event.contexts };\n const transactionName = this._span.transaction && this._span.transaction.name;\n if (transactionName) {\n event.tags = { transaction: transactionName, ...event.tags };\n }\n }\n\n this._applyFingerprint(event);\n\n event.breadcrumbs = [...(event.breadcrumbs || []), ...this._breadcrumbs];\n event.breadcrumbs = event.breadcrumbs.length > 0 ? event.breadcrumbs : undefined;\n\n event.sdkProcessingMetadata = this._sdkProcessingMetadata;\n\n return this._notifyEventProcessors([...getGlobalEventProcessors(), ...this._eventProcessors], event, hint);\n }\n\n /**\n * Add data which will be accessible during event processing but won't get sent to Sentry\n */\n public setSDKProcessingMetadata(newData: { [key: string]: unknown }): this {\n this._sdkProcessingMetadata = { ...this._sdkProcessingMetadata, ...newData };\n\n return this;\n }\n\n /**\n * This will be called after {@link applyToEvent} is finished.\n */\n protected _notifyEventProcessors(\n processors: EventProcessor[],\n event: Event | null,\n hint: EventHint,\n index: number = 0,\n ): PromiseLike {\n return new SyncPromise((resolve, reject) => {\n const processor = processors[index];\n if (event === null || typeof processor !== 'function') {\n resolve(event);\n } else {\n const result = processor({ ...event }, hint) as Event | null;\n\n __DEBUG_BUILD__ &&\n processor.id &&\n result === null &&\n logger.log(`Event processor \"${processor.id}\" dropped event`);\n\n if (isThenable(result)) {\n void result\n .then(final => this._notifyEventProcessors(processors, final, hint, index + 1).then(resolve))\n .then(null, reject);\n } else {\n void this._notifyEventProcessors(processors, result, hint, index + 1)\n .then(resolve)\n .then(null, reject);\n }\n }\n });\n }\n\n /**\n * This will be called on every set call.\n */\n protected _notifyScopeListeners(): void {\n // We need this check for this._notifyingListeners to be able to work on scope during updates\n // If this check is not here we'll produce endless recursion when something is done with the scope\n // during the callback.\n if (!this._notifyingListeners) {\n this._notifyingListeners = true;\n this._scopeListeners.forEach(callback => {\n callback(this);\n });\n this._notifyingListeners = false;\n }\n }\n\n /**\n * Applies fingerprint from the scope to the event if there's one,\n * uses message if there's one instead or get rid of empty fingerprint\n */\n private _applyFingerprint(event: Event): void {\n // Make sure it's an array first and we actually have something in place\n event.fingerprint = event.fingerprint\n ? Array.isArray(event.fingerprint)\n ? event.fingerprint\n : [event.fingerprint]\n : [];\n\n // If we have something on the scope, then merge it with event\n if (this._fingerprint) {\n event.fingerprint = event.fingerprint.concat(this._fingerprint);\n }\n\n // If we have no data at all, remove empty array default\n if (event.fingerprint && !event.fingerprint.length) {\n delete event.fingerprint;\n }\n }\n}\n\n/**\n * Returns the global event processors.\n */\nfunction getGlobalEventProcessors(): EventProcessor[] {\n return getGlobalSingleton('globalEventProcessors', () => []);\n}\n\n/**\n * Add a EventProcessor to be kept globally.\n * @param callback EventProcessor to add\n */\nexport function addGlobalEventProcessor(callback: EventProcessor): void {\n getGlobalEventProcessors().push(callback);\n}\n","import { SerializedSession, Session, SessionContext, SessionStatus } from '@sentry/types';\nimport { dropUndefinedKeys, timestampInSeconds, uuid4 } from '@sentry/utils';\n\n/**\n * Creates a new `Session` object by setting certain default parameters. If optional @param context\n * is passed, the passed properties are applied to the session object.\n *\n * @param context (optional) additional properties to be applied to the returned session object\n *\n * @returns a new `Session` object\n */\nexport function makeSession(context?: Omit): Session {\n // Both timestamp and started are in seconds since the UNIX epoch.\n const startingTime = timestampInSeconds();\n\n const session: Session = {\n sid: uuid4(),\n init: true,\n timestamp: startingTime,\n started: startingTime,\n duration: 0,\n status: 'ok',\n errors: 0,\n ignoreDuration: false,\n toJSON: () => sessionToJSON(session),\n };\n\n if (context) {\n updateSession(session, context);\n }\n\n return session;\n}\n\n/**\n * Updates a session object with the properties passed in the context.\n *\n * Note that this function mutates the passed object and returns void.\n * (Had to do this instead of returning a new and updated session because closing and sending a session\n * makes an update to the session after it was passed to the sending logic.\n * @see BaseClient.captureSession )\n *\n * @param session the `Session` to update\n * @param context the `SessionContext` holding the properties that should be updated in @param session\n */\n// eslint-disable-next-line complexity\nexport function updateSession(session: Session, context: SessionContext = {}): void {\n if (context.user) {\n if (!session.ipAddress && context.user.ip_address) {\n session.ipAddress = context.user.ip_address;\n }\n\n if (!session.did && !context.did) {\n session.did = context.user.id || context.user.email || context.user.username;\n }\n }\n\n session.timestamp = context.timestamp || timestampInSeconds();\n\n if (context.ignoreDuration) {\n session.ignoreDuration = context.ignoreDuration;\n }\n if (context.sid) {\n // Good enough uuid validation. — Kamil\n session.sid = context.sid.length === 32 ? context.sid : uuid4();\n }\n if (context.init !== undefined) {\n session.init = context.init;\n }\n if (!session.did && context.did) {\n session.did = `${context.did}`;\n }\n if (typeof context.started === 'number') {\n session.started = context.started;\n }\n if (session.ignoreDuration) {\n session.duration = undefined;\n } else if (typeof context.duration === 'number') {\n session.duration = context.duration;\n } else {\n const duration = session.timestamp - session.started;\n session.duration = duration >= 0 ? duration : 0;\n }\n if (context.release) {\n session.release = context.release;\n }\n if (context.environment) {\n session.environment = context.environment;\n }\n if (!session.ipAddress && context.ipAddress) {\n session.ipAddress = context.ipAddress;\n }\n if (!session.userAgent && context.userAgent) {\n session.userAgent = context.userAgent;\n }\n if (typeof context.errors === 'number') {\n session.errors = context.errors;\n }\n if (context.status) {\n session.status = context.status;\n }\n}\n\n/**\n * Closes a session by setting its status and updating the session object with it.\n * Internally calls `updateSession` to update the passed session object.\n *\n * Note that this function mutates the passed session (@see updateSession for explanation).\n *\n * @param session the `Session` object to be closed\n * @param status the `SessionStatus` with which the session was closed. If you don't pass a status,\n * this function will keep the previously set status, unless it was `'ok'` in which case\n * it is changed to `'exited'`.\n */\nexport function closeSession(session: Session, status?: Exclude): void {\n let context = {};\n if (status) {\n context = { status };\n } else if (session.status === 'ok') {\n context = { status: 'exited' };\n }\n\n updateSession(session, context);\n}\n\n/**\n * Serializes a passed session object to a JSON object with a slightly different structure.\n * This is necessary because the Sentry backend requires a slightly different schema of a session\n * than the one the JS SDKs use internally.\n *\n * @param session the session to be converted\n *\n * @returns a JSON object of the passed session\n */\nfunction sessionToJSON(session: Session): SerializedSession {\n return dropUndefinedKeys({\n sid: `${session.sid}`,\n init: session.init,\n // Make sure that sec is converted to ms for date constructor\n started: new Date(session.started * 1000).toISOString(),\n timestamp: new Date(session.timestamp * 1000).toISOString(),\n status: session.status,\n errors: session.errors,\n did: typeof session.did === 'number' || typeof session.did === 'string' ? `${session.did}` : undefined,\n duration: session.duration,\n attrs: {\n release: session.release,\n environment: session.environment,\n ip_address: session.ipAddress,\n user_agent: session.userAgent,\n },\n });\n}\n","import { addInstrumentationHandler, logger } from '@sentry/utils';\n\nimport { SpanStatusType } from './span';\nimport { getActiveTransaction } from './utils';\n\n/**\n * Configures global error listeners\n */\nexport function registerErrorInstrumentation(): void {\n addInstrumentationHandler('error', errorCallback);\n addInstrumentationHandler('unhandledrejection', errorCallback);\n}\n\n/**\n * If an error or unhandled promise occurs, we mark the active transaction as failed\n */\nfunction errorCallback(): void {\n const activeTransaction = getActiveTransaction();\n if (activeTransaction) {\n const status: SpanStatusType = 'internal_error';\n __DEBUG_BUILD__ && logger.log(`[Tracing] Transaction: ${status} -> Global error occured`);\n activeTransaction.setStatus(status);\n }\n}\n","/* eslint-disable max-lines */\nimport { getMainCarrier, Hub } from '@sentry/hub';\nimport {\n ClientOptions,\n CustomSamplingContext,\n Integration,\n IntegrationClass,\n Options,\n SamplingContext,\n TransactionContext,\n} from '@sentry/types';\nimport { dynamicRequire, isNaN, isNodeEnv, loadModule, logger } from '@sentry/utils';\n\nimport { registerErrorInstrumentation } from './errors';\nimport { IdleTransaction } from './idletransaction';\nimport { Transaction } from './transaction';\nimport { hasTracingEnabled } from './utils';\n\n/** Returns all trace headers that are currently on the top scope. */\nfunction traceHeaders(this: Hub): { [key: string]: string } {\n const scope = this.getScope();\n if (scope) {\n const span = scope.getSpan();\n if (span) {\n return {\n 'sentry-trace': span.toTraceparent(),\n };\n }\n }\n return {};\n}\n\n/**\n * Makes a sampling decision for the given transaction and stores it on the transaction.\n *\n * Called every time a transaction is created. Only transactions which emerge with a `sampled` value of `true` will be\n * sent to Sentry.\n *\n * @param transaction: The transaction needing a sampling decision\n * @param options: The current client's options, so we can access `tracesSampleRate` and/or `tracesSampler`\n * @param samplingContext: Default and user-provided data which may be used to help make the decision\n *\n * @returns The given transaction with its `sampled` value set\n */\nfunction sample(\n transaction: T,\n options: Pick,\n samplingContext: SamplingContext,\n): T {\n // nothing to do if tracing is not enabled\n if (!hasTracingEnabled(options)) {\n transaction.sampled = false;\n return transaction;\n }\n\n // if the user has forced a sampling decision by passing a `sampled` value in their transaction context, go with that\n if (transaction.sampled !== undefined) {\n transaction.setMetadata({\n transactionSampling: { method: 'explicitly_set' },\n });\n return transaction;\n }\n\n // we would have bailed already if neither `tracesSampler` nor `tracesSampleRate` were defined, so one of these should\n // work; prefer the hook if so\n let sampleRate;\n if (typeof options.tracesSampler === 'function') {\n sampleRate = options.tracesSampler(samplingContext);\n transaction.setMetadata({\n transactionSampling: {\n method: 'client_sampler',\n // cast to number in case it's a boolean\n rate: Number(sampleRate),\n },\n });\n } else if (samplingContext.parentSampled !== undefined) {\n sampleRate = samplingContext.parentSampled;\n transaction.setMetadata({\n transactionSampling: { method: 'inheritance' },\n });\n } else {\n sampleRate = options.tracesSampleRate;\n transaction.setMetadata({\n transactionSampling: {\n method: 'client_rate',\n // cast to number in case it's a boolean\n rate: Number(sampleRate),\n },\n });\n }\n\n // Since this is coming from the user (or from a function provided by the user), who knows what we might get. (The\n // only valid values are booleans or numbers between 0 and 1.)\n if (!isValidSampleRate(sampleRate)) {\n __DEBUG_BUILD__ && logger.warn('[Tracing] Discarding transaction because of invalid sample rate.');\n transaction.sampled = false;\n return transaction;\n }\n\n // if the function returned 0 (or false), or if `tracesSampleRate` is 0, it's a sign the transaction should be dropped\n if (!sampleRate) {\n __DEBUG_BUILD__ &&\n logger.log(\n `[Tracing] Discarding transaction because ${\n typeof options.tracesSampler === 'function'\n ? 'tracesSampler returned 0 or false'\n : 'a negative sampling decision was inherited or tracesSampleRate is set to 0'\n }`,\n );\n transaction.sampled = false;\n return transaction;\n }\n\n // Now we roll the dice. Math.random is inclusive of 0, but not of 1, so strict < is safe here. In case sampleRate is\n // a boolean, the < comparison will cause it to be automatically cast to 1 if it's true and 0 if it's false.\n transaction.sampled = Math.random() < (sampleRate as number | boolean);\n\n // if we're not going to keep it, we're done\n if (!transaction.sampled) {\n __DEBUG_BUILD__ &&\n logger.log(\n `[Tracing] Discarding transaction because it's not included in the random sample (sampling rate = ${Number(\n sampleRate,\n )})`,\n );\n return transaction;\n }\n\n __DEBUG_BUILD__ && logger.log(`[Tracing] starting ${transaction.op} transaction - ${transaction.name}`);\n return transaction;\n}\n\n/**\n * Checks the given sample rate to make sure it is valid type and value (a boolean, or a number between 0 and 1).\n */\nfunction isValidSampleRate(rate: unknown): boolean {\n // we need to check NaN explicitly because it's of type 'number' and therefore wouldn't get caught by this typecheck\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (isNaN(rate) || !(typeof rate === 'number' || typeof rate === 'boolean')) {\n __DEBUG_BUILD__ &&\n logger.warn(\n `[Tracing] Given sample rate is invalid. Sample rate must be a boolean or a number between 0 and 1. Got ${JSON.stringify(\n rate,\n )} of type ${JSON.stringify(typeof rate)}.`,\n );\n return false;\n }\n\n // in case sampleRate is a boolean, it will get automatically cast to 1 if it's true and 0 if it's false\n if (rate < 0 || rate > 1) {\n __DEBUG_BUILD__ &&\n logger.warn(`[Tracing] Given sample rate is invalid. Sample rate must be between 0 and 1. Got ${rate}.`);\n return false;\n }\n return true;\n}\n\n/**\n * Creates a new transaction and adds a sampling decision if it doesn't yet have one.\n *\n * The Hub.startTransaction method delegates to this method to do its work, passing the Hub instance in as `this`, as if\n * it had been called on the hub directly. Exists as a separate function so that it can be injected into the class as an\n * \"extension method.\"\n *\n * @param this: The Hub starting the transaction\n * @param transactionContext: Data used to configure the transaction\n * @param CustomSamplingContext: Optional data to be provided to the `tracesSampler` function (if any)\n *\n * @returns The new transaction\n *\n * @see {@link Hub.startTransaction}\n */\nfunction _startTransaction(\n this: Hub,\n transactionContext: TransactionContext,\n customSamplingContext?: CustomSamplingContext,\n): Transaction {\n const client = this.getClient();\n const options: Partial = (client && client.getOptions()) || {};\n\n let transaction = new Transaction(transactionContext, this);\n transaction = sample(transaction, options, {\n parentSampled: transactionContext.parentSampled,\n transactionContext,\n ...customSamplingContext,\n });\n if (transaction.sampled) {\n transaction.initSpanRecorder(options._experiments && (options._experiments.maxSpans as number));\n }\n return transaction;\n}\n\n/**\n * Create new idle transaction.\n */\nexport function startIdleTransaction(\n hub: Hub,\n transactionContext: TransactionContext,\n idleTimeout: number,\n finalTimeout: number,\n onScope?: boolean,\n customSamplingContext?: CustomSamplingContext,\n): IdleTransaction {\n const client = hub.getClient();\n const options: Partial = (client && client.getOptions()) || {};\n\n let transaction = new IdleTransaction(transactionContext, hub, idleTimeout, finalTimeout, onScope);\n transaction = sample(transaction, options, {\n parentSampled: transactionContext.parentSampled,\n transactionContext,\n ...customSamplingContext,\n });\n if (transaction.sampled) {\n transaction.initSpanRecorder(options._experiments && (options._experiments.maxSpans as number));\n }\n return transaction;\n}\n\n/**\n * @private\n */\nexport function _addTracingExtensions(): void {\n const carrier = getMainCarrier();\n if (!carrier.__SENTRY__) {\n return;\n }\n carrier.__SENTRY__.extensions = carrier.__SENTRY__.extensions || {};\n if (!carrier.__SENTRY__.extensions.startTransaction) {\n carrier.__SENTRY__.extensions.startTransaction = _startTransaction;\n }\n if (!carrier.__SENTRY__.extensions.traceHeaders) {\n carrier.__SENTRY__.extensions.traceHeaders = traceHeaders;\n }\n}\n\n/**\n * @private\n */\nfunction _autoloadDatabaseIntegrations(): void {\n const carrier = getMainCarrier();\n if (!carrier.__SENTRY__) {\n return;\n }\n\n const packageToIntegrationMapping: Record Integration> = {\n mongodb() {\n const integration = dynamicRequire(module, './integrations/node/mongo') as {\n Mongo: IntegrationClass;\n };\n return new integration.Mongo();\n },\n mongoose() {\n const integration = dynamicRequire(module, './integrations/node/mongo') as {\n Mongo: IntegrationClass;\n };\n return new integration.Mongo({ mongoose: true });\n },\n mysql() {\n const integration = dynamicRequire(module, './integrations/node/mysql') as {\n Mysql: IntegrationClass;\n };\n return new integration.Mysql();\n },\n pg() {\n const integration = dynamicRequire(module, './integrations/node/postgres') as {\n Postgres: IntegrationClass;\n };\n return new integration.Postgres();\n },\n };\n\n const mappedPackages = Object.keys(packageToIntegrationMapping)\n .filter(moduleName => !!loadModule(moduleName))\n .map(pkg => {\n try {\n return packageToIntegrationMapping[pkg]();\n } catch (e) {\n return undefined;\n }\n })\n .filter(p => p) as Integration[];\n\n if (mappedPackages.length > 0) {\n carrier.__SENTRY__.integrations = [...(carrier.__SENTRY__.integrations || []), ...mappedPackages];\n }\n}\n\n/**\n * This patches the global object and injects the Tracing extensions methods\n */\nexport function addExtensionMethods(): void {\n _addTracingExtensions();\n\n // Detect and automatically load specified integrations.\n if (isNodeEnv()) {\n _autoloadDatabaseIntegrations();\n }\n\n // If an error happens globally, we should make sure transaction status is set to error.\n registerErrorInstrumentation();\n}\n","/* eslint-disable max-lines */\nimport { Hub } from '@sentry/hub';\nimport { TransactionContext } from '@sentry/types';\nimport { logger, timestampWithMs } from '@sentry/utils';\n\nimport { Span, SpanRecorder } from './span';\nimport { Transaction } from './transaction';\n\nexport const DEFAULT_IDLE_TIMEOUT = 1000;\nexport const DEFAULT_FINAL_TIMEOUT = 30000;\nexport const HEARTBEAT_INTERVAL = 5000;\n\n/**\n * @inheritDoc\n */\nexport class IdleTransactionSpanRecorder extends SpanRecorder {\n public constructor(\n private readonly _pushActivity: (id: string) => void,\n private readonly _popActivity: (id: string) => void,\n public transactionSpanId: string,\n maxlen?: number,\n ) {\n super(maxlen);\n }\n\n /**\n * @inheritDoc\n */\n public add(span: Span): void {\n // We should make sure we do not push and pop activities for\n // the transaction that this span recorder belongs to.\n if (span.spanId !== this.transactionSpanId) {\n // We patch span.finish() to pop an activity after setting an endTimestamp.\n span.finish = (endTimestamp?: number) => {\n span.endTimestamp = typeof endTimestamp === 'number' ? endTimestamp : timestampWithMs();\n this._popActivity(span.spanId);\n };\n\n // We should only push new activities if the span does not have an end timestamp.\n if (span.endTimestamp === undefined) {\n this._pushActivity(span.spanId);\n }\n }\n\n super.add(span);\n }\n}\n\nexport type BeforeFinishCallback = (transactionSpan: IdleTransaction, endTimestamp: number) => void;\n\n/**\n * An IdleTransaction is a transaction that automatically finishes. It does this by tracking child spans as activities.\n * You can have multiple IdleTransactions active, but if the `onScope` option is specified, the idle transaction will\n * put itself on the scope on creation.\n */\nexport class IdleTransaction extends Transaction {\n // Activities store a list of active spans\n public activities: Record = {};\n\n // Track state of activities in previous heartbeat\n private _prevHeartbeatString: string | undefined;\n\n // Amount of times heartbeat has counted. Will cause transaction to finish after 3 beats.\n private _heartbeatCounter: number = 0;\n\n // We should not use heartbeat if we finished a transaction\n private _finished: boolean = false;\n\n private readonly _beforeFinishCallbacks: BeforeFinishCallback[] = [];\n\n /**\n * Timer that tracks Transaction idleTimeout\n */\n private _idleTimeoutID: ReturnType | undefined;\n\n public constructor(\n transactionContext: TransactionContext,\n private readonly _idleHub: Hub,\n /**\n * The time to wait in ms until the idle transaction will be finished. This timer is started each time\n * there are no active spans on this transaction.\n */\n private readonly _idleTimeout: number = DEFAULT_IDLE_TIMEOUT,\n /**\n * The final value in ms that a transaction cannot exceed\n */\n private readonly _finalTimeout: number = DEFAULT_FINAL_TIMEOUT,\n // Whether or not the transaction should put itself on the scope when it starts and pop itself off when it ends\n private readonly _onScope: boolean = false,\n ) {\n super(transactionContext, _idleHub);\n\n if (_onScope) {\n // There should only be one active transaction on the scope\n clearActiveTransaction(_idleHub);\n\n // We set the transaction here on the scope so error events pick up the trace\n // context and attach it to the error.\n __DEBUG_BUILD__ && logger.log(`Setting idle transaction on scope. Span ID: ${this.spanId}`);\n _idleHub.configureScope(scope => scope.setSpan(this));\n }\n\n this._startIdleTimeout();\n setTimeout(() => {\n if (!this._finished) {\n this.setStatus('deadline_exceeded');\n this.finish();\n }\n }, this._finalTimeout);\n }\n\n /** {@inheritDoc} */\n public finish(endTimestamp: number = timestampWithMs()): string | undefined {\n this._finished = true;\n this.activities = {};\n\n if (this.spanRecorder) {\n __DEBUG_BUILD__ &&\n logger.log('[Tracing] finishing IdleTransaction', new Date(endTimestamp * 1000).toISOString(), this.op);\n\n for (const callback of this._beforeFinishCallbacks) {\n callback(this, endTimestamp);\n }\n\n this.spanRecorder.spans = this.spanRecorder.spans.filter((span: Span) => {\n // If we are dealing with the transaction itself, we just return it\n if (span.spanId === this.spanId) {\n return true;\n }\n\n // We cancel all pending spans with status \"cancelled\" to indicate the idle transaction was finished early\n if (!span.endTimestamp) {\n span.endTimestamp = endTimestamp;\n span.setStatus('cancelled');\n __DEBUG_BUILD__ &&\n logger.log('[Tracing] cancelling span since transaction ended early', JSON.stringify(span, undefined, 2));\n }\n\n const keepSpan = span.startTimestamp < endTimestamp;\n if (!keepSpan) {\n __DEBUG_BUILD__ &&\n logger.log(\n '[Tracing] discarding Span since it happened after Transaction was finished',\n JSON.stringify(span, undefined, 2),\n );\n }\n return keepSpan;\n });\n\n __DEBUG_BUILD__ && logger.log('[Tracing] flushing IdleTransaction');\n } else {\n __DEBUG_BUILD__ && logger.log('[Tracing] No active IdleTransaction');\n }\n\n // if `this._onScope` is `true`, the transaction put itself on the scope when it started\n if (this._onScope) {\n clearActiveTransaction(this._idleHub);\n }\n\n return super.finish(endTimestamp);\n }\n\n /**\n * Register a callback function that gets excecuted before the transaction finishes.\n * Useful for cleanup or if you want to add any additional spans based on current context.\n *\n * This is exposed because users have no other way of running something before an idle transaction\n * finishes.\n */\n public registerBeforeFinishCallback(callback: BeforeFinishCallback): void {\n this._beforeFinishCallbacks.push(callback);\n }\n\n /**\n * @inheritDoc\n */\n public initSpanRecorder(maxlen?: number): void {\n if (!this.spanRecorder) {\n const pushActivity = (id: string): void => {\n if (this._finished) {\n return;\n }\n this._pushActivity(id);\n };\n const popActivity = (id: string): void => {\n if (this._finished) {\n return;\n }\n this._popActivity(id);\n };\n\n this.spanRecorder = new IdleTransactionSpanRecorder(pushActivity, popActivity, this.spanId, maxlen);\n\n // Start heartbeat so that transactions do not run forever.\n __DEBUG_BUILD__ && logger.log('Starting heartbeat');\n this._pingHeartbeat();\n }\n this.spanRecorder.add(this);\n }\n\n /**\n * Cancels the existing idletimeout, if there is one\n */\n private _cancelIdleTimeout(): void {\n if (this._idleTimeoutID) {\n clearTimeout(this._idleTimeoutID);\n this._idleTimeoutID = undefined;\n }\n }\n\n /**\n * Creates an idletimeout\n */\n private _startIdleTimeout(endTimestamp?: Parameters[0]): void {\n this._cancelIdleTimeout();\n this._idleTimeoutID = setTimeout(() => {\n if (!this._finished && Object.keys(this.activities).length === 0) {\n this.finish(endTimestamp);\n }\n }, this._idleTimeout);\n }\n\n /**\n * Start tracking a specific activity.\n * @param spanId The span id that represents the activity\n */\n private _pushActivity(spanId: string): void {\n this._cancelIdleTimeout();\n __DEBUG_BUILD__ && logger.log(`[Tracing] pushActivity: ${spanId}`);\n this.activities[spanId] = true;\n __DEBUG_BUILD__ && logger.log('[Tracing] new activities count', Object.keys(this.activities).length);\n }\n\n /**\n * Remove an activity from usage\n * @param spanId The span id that represents the activity\n */\n private _popActivity(spanId: string): void {\n if (this.activities[spanId]) {\n __DEBUG_BUILD__ && logger.log(`[Tracing] popActivity ${spanId}`);\n // eslint-disable-next-line @typescript-eslint/no-dynamic-delete\n delete this.activities[spanId];\n __DEBUG_BUILD__ && logger.log('[Tracing] new activities count', Object.keys(this.activities).length);\n }\n\n if (Object.keys(this.activities).length === 0) {\n // We need to add the timeout here to have the real endtimestamp of the transaction\n // Remember timestampWithMs is in seconds, timeout is in ms\n const endTimestamp = timestampWithMs() + this._idleTimeout / 1000;\n this._startIdleTimeout(endTimestamp);\n }\n }\n\n /**\n * Checks when entries of this.activities are not changing for 3 beats.\n * If this occurs we finish the transaction.\n */\n private _beat(): void {\n // We should not be running heartbeat if the idle transaction is finished.\n if (this._finished) {\n return;\n }\n\n const heartbeatString = Object.keys(this.activities).join('');\n\n if (heartbeatString === this._prevHeartbeatString) {\n this._heartbeatCounter += 1;\n } else {\n this._heartbeatCounter = 1;\n }\n\n this._prevHeartbeatString = heartbeatString;\n\n if (this._heartbeatCounter >= 3) {\n __DEBUG_BUILD__ && logger.log('[Tracing] Transaction finished because of no change for 3 heart beats');\n this.setStatus('deadline_exceeded');\n this.finish();\n } else {\n this._pingHeartbeat();\n }\n }\n\n /**\n * Pings the heartbeat\n */\n private _pingHeartbeat(): void {\n __DEBUG_BUILD__ && logger.log(`pinging Heartbeat -> current counter: ${this._heartbeatCounter}`);\n setTimeout(() => {\n this._beat();\n }, HEARTBEAT_INTERVAL);\n }\n}\n\n/**\n * Reset transaction on scope to `undefined`\n */\nfunction clearActiveTransaction(hub: Hub): void {\n const scope = hub.getScope();\n if (scope) {\n const transaction = scope.getTransaction();\n if (transaction) {\n scope.setSpan(undefined);\n }\n }\n}\n","import { getCurrentHub, Hub } from '@sentry/hub';\nimport { Options, Transaction } from '@sentry/types';\n\n/**\n * The `extractTraceparentData` function and `TRACEPARENT_REGEXP` constant used\n * to be declared in this file. It was later moved into `@sentry/utils` as part of a\n * move to remove `@sentry/tracing` dependencies from `@sentry/node` (`extractTraceparentData`\n * is the only tracing function used by `@sentry/node`).\n *\n * These exports are kept here for backwards compatability's sake.\n *\n * TODO(v7): Reorganize these exports\n *\n * See https://github.com/getsentry/sentry-javascript/issues/4642 for more details.\n */\nexport { TRACEPARENT_REGEXP, extractTraceparentData } from '@sentry/utils';\n\n/**\n * Determines if tracing is currently enabled.\n *\n * Tracing is enabled when at least one of `tracesSampleRate` and `tracesSampler` is defined in the SDK config.\n */\nexport function hasTracingEnabled(\n maybeOptions?: Pick | undefined,\n): boolean {\n const client = getCurrentHub().getClient();\n const options = maybeOptions || (client && client.getOptions());\n return !!options && ('tracesSampleRate' in options || 'tracesSampler' in options);\n}\n\n/** Grabs active transaction off scope, if any */\nexport function getActiveTransaction(maybeHub?: Hub): T | undefined {\n const hub = maybeHub || getCurrentHub();\n const scope = hub.getScope();\n return scope && (scope.getTransaction() as T | undefined);\n}\n\n/**\n * Converts from milliseconds to seconds\n * @param time time in ms\n */\nexport function msToSec(time: number): number {\n return time / 1000;\n}\n\n/**\n * Converts from seconds to milliseconds\n * @param time time in seconds\n */\nexport function secToMs(time: number): number {\n return time * 1000;\n}\n\n// so it can be used in manual instrumentation without necessitating a hard dependency on @sentry/utils\nexport { stripUrlQueryAndFragment } from '@sentry/utils';\n","import { Baggage, BaggageObj } from '@sentry/types';\n\nimport { logger } from './logger';\n\nexport const BAGGAGE_HEADER_NAME = 'baggage';\n\nexport const SENTRY_BAGGAGE_KEY_PREFIX = 'sentry-';\n\nexport const SENTRY_BAGGAGE_KEY_PREFIX_REGEX = /^sentry-/;\n\n/**\n * Max length of a serialized baggage string\n *\n * https://www.w3.org/TR/baggage/#limits\n */\nexport const MAX_BAGGAGE_STRING_LENGTH = 8192;\n\n/** Create an instance of Baggage */\nexport function createBaggage(initItems: BaggageObj, baggageString: string = ''): Baggage {\n return [{ ...initItems }, baggageString];\n}\n\n/** Get a value from baggage */\nexport function getBaggageValue(baggage: Baggage, key: keyof BaggageObj): BaggageObj[keyof BaggageObj] {\n return baggage[0][key];\n}\n\n/** Add a value to baggage */\nexport function setBaggageValue(baggage: Baggage, key: keyof BaggageObj, value: BaggageObj[keyof BaggageObj]): void {\n baggage[0][key] = value;\n}\n\n/** Check if the Sentry part of the passed baggage (i.e. the first element in the tuple) is empty */\nexport function isSentryBaggageEmpty(baggage: Baggage): boolean {\n return Object.keys(baggage[0]).length === 0;\n}\n\n/** Check if the Sentry part of the passed baggage (i.e. the first element in the tuple) is empty */\nexport function isBaggageEmpty(baggage: Baggage): boolean {\n const thirdPartyBaggage = getThirdPartyBaggage(baggage);\n return isSentryBaggageEmpty(baggage) && (thirdPartyBaggage == undefined || thirdPartyBaggage.length === 0);\n}\n\n/** Returns Sentry specific baggage values */\nexport function getSentryBaggageItems(baggage: Baggage): BaggageObj {\n return baggage[0];\n}\n\n/**\n * Returns 3rd party baggage string of @param baggage\n * @param baggage\n */\nexport function getThirdPartyBaggage(baggage: Baggage): string {\n return baggage[1];\n}\n\n/** Serialize a baggage object */\nexport function serializeBaggage(baggage: Baggage): string {\n return Object.keys(baggage[0]).reduce((prev, key: keyof BaggageObj) => {\n const val = baggage[0][key] as string;\n const baggageEntry = `${SENTRY_BAGGAGE_KEY_PREFIX}${encodeURIComponent(key)}=${encodeURIComponent(val)}`;\n const newVal = prev === '' ? baggageEntry : `${prev},${baggageEntry}`;\n if (newVal.length > MAX_BAGGAGE_STRING_LENGTH) {\n __DEBUG_BUILD__ &&\n logger.warn(`Not adding key: ${key} with val: ${val} to baggage due to exceeding baggage size limits.`);\n return prev;\n } else {\n return newVal;\n }\n }, baggage[1]);\n}\n\n/** Parse a baggage header to a string */\nexport function parseBaggageString(inputBaggageString: string): Baggage {\n return inputBaggageString.split(',').reduce(\n ([baggageObj, baggageString], curr) => {\n const [key, val] = curr.split('=');\n if (SENTRY_BAGGAGE_KEY_PREFIX_REGEX.test(key)) {\n const baggageKey = decodeURIComponent(key.split('-')[1]);\n return [\n {\n ...baggageObj,\n [baggageKey]: decodeURIComponent(val),\n },\n baggageString,\n ];\n } else {\n return [baggageObj, baggageString === '' ? curr : `${baggageString},${curr}`];\n }\n },\n [{}, ''],\n );\n}\n\n/**\n * Merges the baggage header we saved from the incoming request (or meta tag) with\n * a possibly created or modified baggage header by a third party that's been added\n * to the outgoing request header.\n *\n * In case @param headerBaggageString exists, we can safely add the the 3rd party part of @param headerBaggage\n * with our @param incomingBaggage. This is possible because if we modified anything beforehand,\n * it would only affect parts of the sentry baggage (@see Baggage interface).\n *\n * @param incomingBaggage the baggage header of the incoming request that might contain sentry entries\n * @param headerBaggageString possibly existing baggage header string added from a third party to request headers\n *\n * @return a merged and serialized baggage string to be propagated with the outgoing request\n */\nexport function mergeAndSerializeBaggage(incomingBaggage?: Baggage, headerBaggageString?: string): string {\n if (!incomingBaggage && !headerBaggageString) {\n return '';\n }\n\n const headerBaggage = (headerBaggageString && parseBaggageString(headerBaggageString)) || undefined;\n const thirdPartyHeaderBaggage = headerBaggage && getThirdPartyBaggage(headerBaggage);\n\n const finalBaggage = createBaggage(\n (incomingBaggage && incomingBaggage[0]) || {},\n thirdPartyHeaderBaggage || (incomingBaggage && incomingBaggage[1]) || '',\n );\n return serializeBaggage(finalBaggage);\n}\n","import { getGlobalObject } from './global';\nimport { isString } from './is';\n\n/**\n * Given a child DOM element, returns a query-selector statement describing that\n * and its ancestors\n * e.g. [HTMLElement] => body > div > input#foo.btn[name=baz]\n * @returns generated DOM path\n */\nexport function htmlTreeAsString(elem: unknown, keyAttrs?: string[]): string {\n type SimpleNode = {\n parentNode: SimpleNode;\n } | null;\n\n // try/catch both:\n // - accessing event.target (see getsentry/raven-js#838, #768)\n // - `htmlTreeAsString` because it's complex, and just accessing the DOM incorrectly\n // - can throw an exception in some circumstances.\n try {\n let currentElem = elem as SimpleNode;\n const MAX_TRAVERSE_HEIGHT = 5;\n const MAX_OUTPUT_LEN = 80;\n const out = [];\n let height = 0;\n let len = 0;\n const separator = ' > ';\n const sepLength = separator.length;\n let nextStr;\n\n // eslint-disable-next-line no-plusplus\n while (currentElem && height++ < MAX_TRAVERSE_HEIGHT) {\n nextStr = _htmlElementAsString(currentElem, keyAttrs);\n // bail out if\n // - nextStr is the 'html' element\n // - the length of the string that would be created exceeds MAX_OUTPUT_LEN\n // (ignore this limit if we are on the first iteration)\n if (nextStr === 'html' || (height > 1 && len + out.length * sepLength + nextStr.length >= MAX_OUTPUT_LEN)) {\n break;\n }\n\n out.push(nextStr);\n\n len += nextStr.length;\n currentElem = currentElem.parentNode;\n }\n\n return out.reverse().join(separator);\n } catch (_oO) {\n return '';\n }\n}\n\n/**\n * Returns a simple, query-selector representation of a DOM element\n * e.g. [HTMLElement] => input#foo.btn[name=baz]\n * @returns generated DOM path\n */\nfunction _htmlElementAsString(el: unknown, keyAttrs?: string[]): string {\n const elem = el as {\n tagName?: string;\n id?: string;\n className?: string;\n getAttribute(key: string): string;\n };\n\n const out = [];\n let className;\n let classes;\n let key;\n let attr;\n let i;\n\n if (!elem || !elem.tagName) {\n return '';\n }\n\n out.push(elem.tagName.toLowerCase());\n\n // Pairs of attribute keys defined in `serializeAttribute` and their values on element.\n const keyAttrPairs =\n keyAttrs && keyAttrs.length\n ? keyAttrs.filter(keyAttr => elem.getAttribute(keyAttr)).map(keyAttr => [keyAttr, elem.getAttribute(keyAttr)])\n : null;\n\n if (keyAttrPairs && keyAttrPairs.length) {\n keyAttrPairs.forEach(keyAttrPair => {\n out.push(`[${keyAttrPair[0]}=\"${keyAttrPair[1]}\"]`);\n });\n } else {\n if (elem.id) {\n out.push(`#${elem.id}`);\n }\n\n // eslint-disable-next-line prefer-const\n className = elem.className;\n if (className && isString(className)) {\n classes = className.split(/\\s+/);\n for (i = 0; i < classes.length; i++) {\n out.push(`.${classes[i]}`);\n }\n }\n }\n const allowedAttrs = ['type', 'name', 'title', 'alt'];\n for (i = 0; i < allowedAttrs.length; i++) {\n key = allowedAttrs[i];\n attr = elem.getAttribute(key);\n if (attr) {\n out.push(`[${key}=\"${attr}\"]`);\n }\n }\n return out.join('');\n}\n\n/**\n * A safe form of location.href\n */\nexport function getLocationHref(): string {\n const global = getGlobalObject();\n try {\n return global.document.location.href;\n } catch (oO) {\n return '';\n }\n}\n","/**\n * Polyfill for the nullish coalescing operator (`??`).\n *\n * Note that the RHS is wrapped in a function so that if it's a computed value, that evaluation won't happen unless the\n * LHS evaluates to a nullish value, to mimic the operator's short-circuiting behavior.\n *\n * Adapted from Sucrase (https://github.com/alangpierce/sucrase)\n *\n * @param lhs The value of the expression to the left of the `??`\n * @param rhsFn A function returning the value of the expression to the right of the `??`\n * @returns The LHS value, unless it's `null` or `undefined`, in which case, the RHS value\n */\nexport function _nullishCoalesce(lhs: unknown, rhsFn: () => unknown): unknown {\n // by checking for loose equality to `null`, we catch both `null` and `undefined`\n return lhs != null ? lhs : rhsFn();\n}\n\n// Sucrase version:\n// function _nullishCoalesce(lhs, rhsFn) {\n// if (lhs != null) {\n// return lhs;\n// } else {\n// return rhsFn();\n// }\n// }\n","/**\n * NOTE: In order to avoid circular dependencies, if you add a function to this module and it needs to print something,\n * you must either a) use `console.log` rather than the logger, or b) put your function elsewhere.\n */\n\n/* eslint-disable @typescript-eslint/no-explicit-any */\n\nimport { Integration } from '@sentry/types';\n\nimport { isNodeEnv } from './node';\n\n/** Internal */\ninterface SentryGlobal {\n Sentry?: {\n Integrations?: Integration[];\n };\n SENTRY_ENVIRONMENT?: string;\n SENTRY_DSN?: string;\n SENTRY_RELEASE?: {\n id?: string;\n };\n __SENTRY__: {\n globalEventProcessors: any;\n hub: any;\n logger: any;\n };\n}\n\nconst fallbackGlobalObject = {};\n\n/**\n * Safely get global scope object\n *\n * @returns Global scope object\n */\nexport function getGlobalObject(): T & SentryGlobal {\n return (\n isNodeEnv()\n ? global\n : typeof window !== 'undefined' // eslint-disable-line no-restricted-globals\n ? window // eslint-disable-line no-restricted-globals\n : typeof self !== 'undefined'\n ? self\n : fallbackGlobalObject\n ) as T & SentryGlobal;\n}\n\n/**\n * Returns a global singleton contained in the global `__SENTRY__` object.\n *\n * If the singleton doesn't already exist in `__SENTRY__`, it will be created using the given factory\n * function and added to the `__SENTRY__` object.\n *\n * @param name name of the global singleton on __SENTRY__\n * @param creator creator Factory function to create the singleton if it doesn't already exist on `__SENTRY__`\n * @param obj (Optional) The global object on which to look for `__SENTRY__`, if not `getGlobalObject`'s return value\n * @returns the singleton\n */\nexport function getGlobalSingleton(name: keyof SentryGlobal['__SENTRY__'], creator: () => T, obj?: unknown): T {\n const global = (obj || getGlobalObject()) as SentryGlobal;\n const __SENTRY__ = (global.__SENTRY__ = global.__SENTRY__ || {});\n const singleton = __SENTRY__[name] || (__SENTRY__[name] = creator());\n return singleton;\n}\n","/* eslint-disable max-lines */\n/* eslint-disable @typescript-eslint/no-explicit-any */\n/* eslint-disable @typescript-eslint/ban-types */\nimport { WrappedFunction } from '@sentry/types';\n\nimport { getGlobalObject } from './global';\nimport { isInstanceOf, isString } from './is';\nimport { CONSOLE_LEVELS, logger } from './logger';\nimport { fill } from './object';\nimport { getFunctionName } from './stacktrace';\nimport { supportsHistory, supportsNativeFetch } from './supports';\n\nconst global = getGlobalObject();\n\nexport type InstrumentHandlerType =\n | 'console'\n | 'dom'\n | 'fetch'\n | 'history'\n | 'sentry'\n | 'xhr'\n | 'error'\n | 'unhandledrejection';\nexport type InstrumentHandlerCallback = (data: any) => void;\n\n/**\n * Instrument native APIs to call handlers that can be used to create breadcrumbs, APM spans etc.\n * - Console API\n * - Fetch API\n * - XHR API\n * - History API\n * - DOM API (click/typing)\n * - Error API\n * - UnhandledRejection API\n */\n\nconst handlers: { [key in InstrumentHandlerType]?: InstrumentHandlerCallback[] } = {};\nconst instrumented: { [key in InstrumentHandlerType]?: boolean } = {};\n\n/** Instruments given API */\nfunction instrument(type: InstrumentHandlerType): void {\n if (instrumented[type]) {\n return;\n }\n\n instrumented[type] = true;\n\n switch (type) {\n case 'console':\n instrumentConsole();\n break;\n case 'dom':\n instrumentDOM();\n break;\n case 'xhr':\n instrumentXHR();\n break;\n case 'fetch':\n instrumentFetch();\n break;\n case 'history':\n instrumentHistory();\n break;\n case 'error':\n instrumentError();\n break;\n case 'unhandledrejection':\n instrumentUnhandledRejection();\n break;\n default:\n __DEBUG_BUILD__ && logger.warn('unknown instrumentation type:', type);\n return;\n }\n}\n\n/**\n * Add handler that will be called when given type of instrumentation triggers.\n * Use at your own risk, this might break without changelog notice, only used internally.\n * @hidden\n */\nexport function addInstrumentationHandler(type: InstrumentHandlerType, callback: InstrumentHandlerCallback): void {\n handlers[type] = handlers[type] || [];\n (handlers[type] as InstrumentHandlerCallback[]).push(callback);\n instrument(type);\n}\n\n/** JSDoc */\nfunction triggerHandlers(type: InstrumentHandlerType, data: any): void {\n if (!type || !handlers[type]) {\n return;\n }\n\n for (const handler of handlers[type] || []) {\n try {\n handler(data);\n } catch (e) {\n __DEBUG_BUILD__ &&\n logger.error(\n `Error while triggering instrumentation handler.\\nType: ${type}\\nName: ${getFunctionName(handler)}\\nError:`,\n e,\n );\n }\n }\n}\n\n/** JSDoc */\nfunction instrumentConsole(): void {\n if (!('console' in global)) {\n return;\n }\n\n CONSOLE_LEVELS.forEach(function (level: string): void {\n if (!(level in global.console)) {\n return;\n }\n\n fill(global.console, level, function (originalConsoleMethod: () => any): Function {\n return function (...args: any[]): void {\n triggerHandlers('console', { args, level });\n\n // this fails for some browsers. :(\n if (originalConsoleMethod) {\n originalConsoleMethod.apply(global.console, args);\n }\n };\n });\n });\n}\n\n/** JSDoc */\nfunction instrumentFetch(): void {\n if (!supportsNativeFetch()) {\n return;\n }\n\n fill(global, 'fetch', function (originalFetch: () => void): () => void {\n return function (...args: any[]): void {\n const handlerData = {\n args,\n fetchData: {\n method: getFetchMethod(args),\n url: getFetchUrl(args),\n },\n startTimestamp: Date.now(),\n };\n\n triggerHandlers('fetch', {\n ...handlerData,\n });\n\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n return originalFetch.apply(global, args).then(\n (response: Response) => {\n triggerHandlers('fetch', {\n ...handlerData,\n endTimestamp: Date.now(),\n response,\n });\n return response;\n },\n (error: Error) => {\n triggerHandlers('fetch', {\n ...handlerData,\n endTimestamp: Date.now(),\n error,\n });\n // NOTE: If you are a Sentry user, and you are seeing this stack frame,\n // it means the sentry.javascript SDK caught an error invoking your application code.\n // This is expected behavior and NOT indicative of a bug with sentry.javascript.\n throw error;\n },\n );\n };\n });\n}\n\ntype XHRSendInput = null | Blob | BufferSource | FormData | URLSearchParams | string;\n\n/** JSDoc */\ninterface SentryWrappedXMLHttpRequest extends XMLHttpRequest {\n [key: string]: any;\n __sentry_xhr__?: {\n method?: string;\n url?: string;\n status_code?: number;\n body?: XHRSendInput;\n };\n}\n\n/* eslint-disable @typescript-eslint/no-unsafe-member-access */\n/** Extract `method` from fetch call arguments */\nfunction getFetchMethod(fetchArgs: any[] = []): string {\n if ('Request' in global && isInstanceOf(fetchArgs[0], Request) && fetchArgs[0].method) {\n return String(fetchArgs[0].method).toUpperCase();\n }\n if (fetchArgs[1] && fetchArgs[1].method) {\n return String(fetchArgs[1].method).toUpperCase();\n }\n return 'GET';\n}\n\n/** Extract `url` from fetch call arguments */\nfunction getFetchUrl(fetchArgs: any[] = []): string {\n if (typeof fetchArgs[0] === 'string') {\n return fetchArgs[0];\n }\n if ('Request' in global && isInstanceOf(fetchArgs[0], Request)) {\n return fetchArgs[0].url;\n }\n return String(fetchArgs[0]);\n}\n/* eslint-enable @typescript-eslint/no-unsafe-member-access */\n\n/** JSDoc */\nfunction instrumentXHR(): void {\n if (!('XMLHttpRequest' in global)) {\n return;\n }\n\n const xhrproto = XMLHttpRequest.prototype;\n\n fill(xhrproto, 'open', function (originalOpen: () => void): () => void {\n return function (this: SentryWrappedXMLHttpRequest, ...args: any[]): void {\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n const xhr = this;\n const url = args[1];\n const xhrInfo: SentryWrappedXMLHttpRequest['__sentry_xhr__'] = (xhr.__sentry_xhr__ = {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n method: isString(args[0]) ? args[0].toUpperCase() : args[0],\n url: args[1],\n });\n\n // if Sentry key appears in URL, don't capture it as a request\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n if (isString(url) && xhrInfo.method === 'POST' && url.match(/sentry_key/)) {\n xhr.__sentry_own_request__ = true;\n }\n\n const onreadystatechangeHandler = function (): void {\n if (xhr.readyState === 4) {\n try {\n // touching statusCode in some platforms throws\n // an exception\n xhrInfo.status_code = xhr.status;\n } catch (e) {\n /* do nothing */\n }\n\n triggerHandlers('xhr', {\n args,\n endTimestamp: Date.now(),\n startTimestamp: Date.now(),\n xhr,\n });\n }\n };\n\n if ('onreadystatechange' in xhr && typeof xhr.onreadystatechange === 'function') {\n fill(xhr, 'onreadystatechange', function (original: WrappedFunction): Function {\n return function (...readyStateArgs: any[]): void {\n onreadystatechangeHandler();\n return original.apply(xhr, readyStateArgs);\n };\n });\n } else {\n xhr.addEventListener('readystatechange', onreadystatechangeHandler);\n }\n\n return originalOpen.apply(xhr, args);\n };\n });\n\n fill(xhrproto, 'send', function (originalSend: () => void): () => void {\n return function (this: SentryWrappedXMLHttpRequest, ...args: any[]): void {\n if (this.__sentry_xhr__ && args[0] !== undefined) {\n this.__sentry_xhr__.body = args[0];\n }\n\n triggerHandlers('xhr', {\n args,\n startTimestamp: Date.now(),\n xhr: this,\n });\n\n return originalSend.apply(this, args);\n };\n });\n}\n\nlet lastHref: string;\n\n/** JSDoc */\nfunction instrumentHistory(): void {\n if (!supportsHistory()) {\n return;\n }\n\n const oldOnPopState = global.onpopstate;\n global.onpopstate = function (this: WindowEventHandlers, ...args: any[]): any {\n const to = global.location.href;\n // keep track of the current URL state, as we always receive only the updated state\n const from = lastHref;\n lastHref = to;\n triggerHandlers('history', {\n from,\n to,\n });\n if (oldOnPopState) {\n // Apparently this can throw in Firefox when incorrectly implemented plugin is installed.\n // https://github.com/getsentry/sentry-javascript/issues/3344\n // https://github.com/bugsnag/bugsnag-js/issues/469\n try {\n return oldOnPopState.apply(this, args);\n } catch (_oO) {\n // no-empty\n }\n }\n };\n\n /** @hidden */\n function historyReplacementFunction(originalHistoryFunction: () => void): () => void {\n return function (this: History, ...args: any[]): void {\n const url = args.length > 2 ? args[2] : undefined;\n if (url) {\n // coerce to string (this is what pushState does)\n const from = lastHref;\n const to = String(url);\n // keep track of the current URL state, as we always receive only the updated state\n lastHref = to;\n triggerHandlers('history', {\n from,\n to,\n });\n }\n return originalHistoryFunction.apply(this, args);\n };\n }\n\n fill(global.history, 'pushState', historyReplacementFunction);\n fill(global.history, 'replaceState', historyReplacementFunction);\n}\n\nconst debounceDuration = 1000;\nlet debounceTimerID: number | undefined;\nlet lastCapturedEvent: Event | undefined;\n\n/**\n * Decide whether the current event should finish the debounce of previously captured one.\n * @param previous previously captured event\n * @param current event to be captured\n */\nfunction shouldShortcircuitPreviousDebounce(previous: Event | undefined, current: Event): boolean {\n // If there was no previous event, it should always be swapped for the new one.\n if (!previous) {\n return true;\n }\n\n // If both events have different type, then user definitely performed two separate actions. e.g. click + keypress.\n if (previous.type !== current.type) {\n return true;\n }\n\n try {\n // If both events have the same type, it's still possible that actions were performed on different targets.\n // e.g. 2 clicks on different buttons.\n if (previous.target !== current.target) {\n return true;\n }\n } catch (e) {\n // just accessing `target` property can throw an exception in some rare circumstances\n // see: https://github.com/getsentry/sentry-javascript/issues/838\n }\n\n // If both events have the same type _and_ same `target` (an element which triggered an event, _not necessarily_\n // to which an event listener was attached), we treat them as the same action, as we want to capture\n // only one breadcrumb. e.g. multiple clicks on the same button, or typing inside a user input box.\n return false;\n}\n\n/**\n * Decide whether an event should be captured.\n * @param event event to be captured\n */\nfunction shouldSkipDOMEvent(event: Event): boolean {\n // We are only interested in filtering `keypress` events for now.\n if (event.type !== 'keypress') {\n return false;\n }\n\n try {\n const target = event.target as HTMLElement;\n\n if (!target || !target.tagName) {\n return true;\n }\n\n // Only consider keypress events on actual input elements. This will disregard keypresses targeting body\n // e.g.tabbing through elements, hotkeys, etc.\n if (target.tagName === 'INPUT' || target.tagName === 'TEXTAREA' || target.isContentEditable) {\n return false;\n }\n } catch (e) {\n // just accessing `target` property can throw an exception in some rare circumstances\n // see: https://github.com/getsentry/sentry-javascript/issues/838\n }\n\n return true;\n}\n\n/**\n * Wraps addEventListener to capture UI breadcrumbs\n * @param handler function that will be triggered\n * @param globalListener indicates whether event was captured by the global event listener\n * @returns wrapped breadcrumb events handler\n * @hidden\n */\nfunction makeDOMEventHandler(handler: Function, globalListener: boolean = false): (event: Event) => void {\n return (event: Event): void => {\n // It's possible this handler might trigger multiple times for the same\n // event (e.g. event propagation through node ancestors).\n // Ignore if we've already captured that event.\n if (!event || lastCapturedEvent === event) {\n return;\n }\n\n // We always want to skip _some_ events.\n if (shouldSkipDOMEvent(event)) {\n return;\n }\n\n const name = event.type === 'keypress' ? 'input' : event.type;\n\n // If there is no debounce timer, it means that we can safely capture the new event and store it for future comparisons.\n if (debounceTimerID === undefined) {\n handler({\n event: event,\n name,\n global: globalListener,\n });\n lastCapturedEvent = event;\n }\n // If there is a debounce awaiting, see if the new event is different enough to treat it as a unique one.\n // If that's the case, emit the previous event and store locally the newly-captured DOM event.\n else if (shouldShortcircuitPreviousDebounce(lastCapturedEvent, event)) {\n handler({\n event: event,\n name,\n global: globalListener,\n });\n lastCapturedEvent = event;\n }\n\n // Start a new debounce timer that will prevent us from capturing multiple events that should be grouped together.\n clearTimeout(debounceTimerID);\n debounceTimerID = global.setTimeout(() => {\n debounceTimerID = undefined;\n }, debounceDuration);\n };\n}\n\ntype AddEventListener = (\n type: string,\n listener: EventListenerOrEventListenerObject,\n options?: boolean | AddEventListenerOptions,\n) => void;\ntype RemoveEventListener = (\n type: string,\n listener: EventListenerOrEventListenerObject,\n options?: boolean | EventListenerOptions,\n) => void;\n\ntype InstrumentedElement = Element & {\n __sentry_instrumentation_handlers__?: {\n [key in 'click' | 'keypress']?: {\n handler?: Function;\n /** The number of custom listeners attached to this element */\n refCount: number;\n };\n };\n};\n\n/** JSDoc */\nfunction instrumentDOM(): void {\n if (!('document' in global)) {\n return;\n }\n\n // Make it so that any click or keypress that is unhandled / bubbled up all the way to the document triggers our dom\n // handlers. (Normally we have only one, which captures a breadcrumb for each click or keypress.) Do this before\n // we instrument `addEventListener` so that we don't end up attaching this handler twice.\n const triggerDOMHandler = triggerHandlers.bind(null, 'dom');\n const globalDOMEventHandler = makeDOMEventHandler(triggerDOMHandler, true);\n global.document.addEventListener('click', globalDOMEventHandler, false);\n global.document.addEventListener('keypress', globalDOMEventHandler, false);\n\n // After hooking into click and keypress events bubbled up to `document`, we also hook into user-handled\n // clicks & keypresses, by adding an event listener of our own to any element to which they add a listener. That\n // way, whenever one of their handlers is triggered, ours will be, too. (This is needed because their handler\n // could potentially prevent the event from bubbling up to our global listeners. This way, our handler are still\n // guaranteed to fire at least once.)\n ['EventTarget', 'Node'].forEach((target: string) => {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n const proto = (global as any)[target] && (global as any)[target].prototype;\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access, no-prototype-builtins\n if (!proto || !proto.hasOwnProperty || !proto.hasOwnProperty('addEventListener')) {\n return;\n }\n\n fill(proto, 'addEventListener', function (originalAddEventListener: AddEventListener): AddEventListener {\n return function (\n this: Element,\n type: string,\n listener: EventListenerOrEventListenerObject,\n options?: boolean | AddEventListenerOptions,\n ): AddEventListener {\n if (type === 'click' || type == 'keypress') {\n try {\n const el = this as InstrumentedElement;\n const handlers = (el.__sentry_instrumentation_handlers__ = el.__sentry_instrumentation_handlers__ || {});\n const handlerForType = (handlers[type] = handlers[type] || { refCount: 0 });\n\n if (!handlerForType.handler) {\n const handler = makeDOMEventHandler(triggerDOMHandler);\n handlerForType.handler = handler;\n originalAddEventListener.call(this, type, handler, options);\n }\n\n handlerForType.refCount += 1;\n } catch (e) {\n // Accessing dom properties is always fragile.\n // Also allows us to skip `addEventListenrs` calls with no proper `this` context.\n }\n }\n\n return originalAddEventListener.call(this, type, listener, options);\n };\n });\n\n fill(\n proto,\n 'removeEventListener',\n function (originalRemoveEventListener: RemoveEventListener): RemoveEventListener {\n return function (\n this: Element,\n type: string,\n listener: EventListenerOrEventListenerObject,\n options?: boolean | EventListenerOptions,\n ): () => void {\n if (type === 'click' || type == 'keypress') {\n try {\n const el = this as InstrumentedElement;\n const handlers = el.__sentry_instrumentation_handlers__ || {};\n const handlerForType = handlers[type];\n\n if (handlerForType) {\n handlerForType.refCount -= 1;\n // If there are no longer any custom handlers of the current type on this element, we can remove ours, too.\n if (handlerForType.refCount <= 0) {\n originalRemoveEventListener.call(this, type, handlerForType.handler, options);\n handlerForType.handler = undefined;\n delete handlers[type]; // eslint-disable-line @typescript-eslint/no-dynamic-delete\n }\n\n // If there are no longer any custom handlers of any type on this element, cleanup everything.\n if (Object.keys(handlers).length === 0) {\n delete el.__sentry_instrumentation_handlers__;\n }\n }\n } catch (e) {\n // Accessing dom properties is always fragile.\n // Also allows us to skip `addEventListenrs` calls with no proper `this` context.\n }\n }\n\n return originalRemoveEventListener.call(this, type, listener, options);\n };\n },\n );\n });\n}\n\nlet _oldOnErrorHandler: OnErrorEventHandler = null;\n/** JSDoc */\nfunction instrumentError(): void {\n _oldOnErrorHandler = global.onerror;\n\n global.onerror = function (msg: any, url: any, line: any, column: any, error: any): boolean {\n triggerHandlers('error', {\n column,\n error,\n line,\n msg,\n url,\n });\n\n if (_oldOnErrorHandler) {\n // eslint-disable-next-line prefer-rest-params\n return _oldOnErrorHandler.apply(this, arguments);\n }\n\n return false;\n };\n}\n\nlet _oldOnUnhandledRejectionHandler: ((e: any) => void) | null = null;\n/** JSDoc */\nfunction instrumentUnhandledRejection(): void {\n _oldOnUnhandledRejectionHandler = global.onunhandledrejection;\n\n global.onunhandledrejection = function (e: any): boolean {\n triggerHandlers('unhandledrejection', e);\n\n if (_oldOnUnhandledRejectionHandler) {\n // eslint-disable-next-line prefer-rest-params\n return _oldOnUnhandledRejectionHandler.apply(this, arguments);\n }\n\n return true;\n };\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\n/* eslint-disable @typescript-eslint/explicit-module-boundary-types */\n\nimport { PolymorphicEvent, Primitive } from '@sentry/types';\n\n// eslint-disable-next-line @typescript-eslint/unbound-method\nconst objectToString = Object.prototype.toString;\n\n/**\n * Checks whether given value's type is one of a few Error or Error-like\n * {@link isError}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nexport function isError(wat: unknown): wat is Error {\n switch (objectToString.call(wat)) {\n case '[object Error]':\n case '[object Exception]':\n case '[object DOMException]':\n return true;\n default:\n return isInstanceOf(wat, Error);\n }\n}\n\nfunction isBuiltin(wat: unknown, ty: string): boolean {\n return objectToString.call(wat) === `[object ${ty}]`;\n}\n\n/**\n * Checks whether given value's type is ErrorEvent\n * {@link isErrorEvent}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nexport function isErrorEvent(wat: unknown): boolean {\n return isBuiltin(wat, 'ErrorEvent');\n}\n\n/**\n * Checks whether given value's type is DOMError\n * {@link isDOMError}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nexport function isDOMError(wat: unknown): boolean {\n return isBuiltin(wat, 'DOMError');\n}\n\n/**\n * Checks whether given value's type is DOMException\n * {@link isDOMException}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nexport function isDOMException(wat: unknown): boolean {\n return isBuiltin(wat, 'DOMException');\n}\n\n/**\n * Checks whether given value's type is a string\n * {@link isString}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nexport function isString(wat: unknown): wat is string {\n return isBuiltin(wat, 'String');\n}\n\n/**\n * Checks whether given value is a primitive (undefined, null, number, boolean, string, bigint, symbol)\n * {@link isPrimitive}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nexport function isPrimitive(wat: unknown): wat is Primitive {\n return wat === null || (typeof wat !== 'object' && typeof wat !== 'function');\n}\n\n/**\n * Checks whether given value's type is an object literal\n * {@link isPlainObject}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nexport function isPlainObject(wat: unknown): wat is Record {\n return isBuiltin(wat, 'Object');\n}\n\n/**\n * Checks whether given value's type is an Event instance\n * {@link isEvent}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nexport function isEvent(wat: unknown): wat is PolymorphicEvent {\n return typeof Event !== 'undefined' && isInstanceOf(wat, Event);\n}\n\n/**\n * Checks whether given value's type is an Element instance\n * {@link isElement}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nexport function isElement(wat: unknown): boolean {\n return typeof Element !== 'undefined' && isInstanceOf(wat, Element);\n}\n\n/**\n * Checks whether given value's type is an regexp\n * {@link isRegExp}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nexport function isRegExp(wat: unknown): wat is RegExp {\n return isBuiltin(wat, 'RegExp');\n}\n\n/**\n * Checks whether given value has a then function.\n * @param wat A value to be checked.\n */\nexport function isThenable(wat: any): wat is PromiseLike {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n return Boolean(wat && wat.then && typeof wat.then === 'function');\n}\n\n/**\n * Checks whether given value's type is a SyntheticEvent\n * {@link isSyntheticEvent}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nexport function isSyntheticEvent(wat: unknown): boolean {\n return isPlainObject(wat) && 'nativeEvent' in wat && 'preventDefault' in wat && 'stopPropagation' in wat;\n}\n\n/**\n * Checks whether given value is NaN\n * {@link isNaN}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nexport function isNaN(wat: unknown): boolean {\n return typeof wat === 'number' && wat !== wat;\n}\n\n/**\n * Checks whether given value's type is an instance of provided constructor.\n * {@link isInstanceOf}.\n *\n * @param wat A value to be checked.\n * @param base A constructor to be used in a check.\n * @returns A boolean representing the result.\n */\nexport function isInstanceOf(wat: any, base: any): boolean {\n try {\n return wat instanceof base;\n } catch (_e) {\n return false;\n }\n}\n","import { WrappedFunction } from '@sentry/types';\n\nimport { getGlobalObject, getGlobalSingleton } from './global';\n\n// TODO: Implement different loggers for different environments\nconst global = getGlobalObject();\n\n/** Prefix for logging strings */\nconst PREFIX = 'Sentry Logger ';\n\nexport const CONSOLE_LEVELS = ['debug', 'info', 'warn', 'error', 'log', 'assert'] as const;\n\ntype LoggerMethod = (...args: unknown[]) => void;\ntype LoggerConsoleMethods = Record;\n\n/** JSDoc */\ninterface Logger extends LoggerConsoleMethods {\n disable(): void;\n enable(): void;\n}\n\n/**\n * Temporarily disable sentry console instrumentations.\n *\n * @param callback The function to run against the original `console` messages\n * @returns The results of the callback\n */\nexport function consoleSandbox(callback: () => T): T {\n const global = getGlobalObject();\n\n if (!('console' in global)) {\n return callback();\n }\n\n const originalConsole = global.console as Console & Record;\n const wrappedLevels: Partial = {};\n\n // Restore all wrapped console methods\n CONSOLE_LEVELS.forEach(level => {\n // TODO(v7): Remove this check as it's only needed for Node 6\n const originalWrappedFunc =\n originalConsole[level] && (originalConsole[level] as WrappedFunction).__sentry_original__;\n if (level in global.console && originalWrappedFunc) {\n wrappedLevels[level] = originalConsole[level] as LoggerConsoleMethods[typeof level];\n originalConsole[level] = originalWrappedFunc as Console[typeof level];\n }\n });\n\n try {\n return callback();\n } finally {\n // Revert restoration to wrapped state\n Object.keys(wrappedLevels).forEach(level => {\n originalConsole[level] = wrappedLevels[level as typeof CONSOLE_LEVELS[number]];\n });\n }\n}\n\nfunction makeLogger(): Logger {\n let enabled = false;\n const logger: Partial = {\n enable: () => {\n enabled = true;\n },\n disable: () => {\n enabled = false;\n },\n };\n\n if (__DEBUG_BUILD__) {\n CONSOLE_LEVELS.forEach(name => {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n logger[name] = (...args: any[]) => {\n if (enabled) {\n consoleSandbox(() => {\n global.console[name](`${PREFIX}[${name}]:`, ...args);\n });\n }\n };\n });\n } else {\n CONSOLE_LEVELS.forEach(name => {\n logger[name] = () => undefined;\n });\n }\n\n return logger as Logger;\n}\n\n// Ensure we only have a single logger instance, even if multiple versions of @sentry/utils are being used\nlet logger: Logger;\nif (__DEBUG_BUILD__) {\n logger = getGlobalSingleton('logger', makeLogger);\n} else {\n logger = makeLogger();\n}\n\nexport { logger };\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { Event, Exception, Mechanism, StackFrame } from '@sentry/types';\n\nimport { getGlobalObject } from './global';\nimport { addNonEnumerableProperty } from './object';\nimport { snipLine } from './string';\n\n/**\n * Extended Window interface that allows for Crypto API usage in IE browsers\n */\ninterface MsCryptoWindow extends Window {\n msCrypto?: Crypto;\n}\n\n/**\n * UUID4 generator\n *\n * @returns string Generated UUID4.\n */\nexport function uuid4(): string {\n const global = getGlobalObject() as MsCryptoWindow;\n const crypto = global.crypto || global.msCrypto;\n\n if (!(crypto === void 0) && crypto.getRandomValues) {\n // Use window.crypto API if available\n const arr = new Uint16Array(8);\n crypto.getRandomValues(arr);\n\n // set 4 in byte 7\n // eslint-disable-next-line no-bitwise\n arr[3] = (arr[3] & 0xfff) | 0x4000;\n // set 2 most significant bits of byte 9 to '10'\n // eslint-disable-next-line no-bitwise\n arr[4] = (arr[4] & 0x3fff) | 0x8000;\n\n const pad = (num: number): string => {\n let v = num.toString(16);\n while (v.length < 4) {\n v = `0${v}`;\n }\n return v;\n };\n\n return (\n pad(arr[0]) + pad(arr[1]) + pad(arr[2]) + pad(arr[3]) + pad(arr[4]) + pad(arr[5]) + pad(arr[6]) + pad(arr[7])\n );\n }\n // http://stackoverflow.com/questions/105034/how-to-create-a-guid-uuid-in-javascript/2117523#2117523\n return 'xxxxxxxxxxxx4xxxyxxxxxxxxxxxxxxx'.replace(/[xy]/g, c => {\n // eslint-disable-next-line no-bitwise\n const r = (Math.random() * 16) | 0;\n // eslint-disable-next-line no-bitwise\n const v = c === 'x' ? r : (r & 0x3) | 0x8;\n return v.toString(16);\n });\n}\n\n/**\n * Parses string form of URL into an object\n * // borrowed from https://tools.ietf.org/html/rfc3986#appendix-B\n * // intentionally using regex and not href parsing trick because React Native and other\n * // environments where DOM might not be available\n * @returns parsed URL object\n */\nexport function parseUrl(url: string): {\n host?: string;\n path?: string;\n protocol?: string;\n relative?: string;\n} {\n if (!url) {\n return {};\n }\n\n const match = url.match(/^(([^:/?#]+):)?(\\/\\/([^/?#]*))?([^?#]*)(\\?([^#]*))?(#(.*))?$/);\n\n if (!match) {\n return {};\n }\n\n // coerce to undefined values to empty string so we don't get 'undefined'\n const query = match[6] || '';\n const fragment = match[8] || '';\n return {\n host: match[4],\n path: match[5],\n protocol: match[2],\n relative: match[5] + query + fragment, // everything minus origin\n };\n}\n\nfunction getFirstException(event: Event): Exception | undefined {\n return event.exception && event.exception.values ? event.exception.values[0] : undefined;\n}\n\n/**\n * Extracts either message or type+value from an event that can be used for user-facing logs\n * @returns event's description\n */\nexport function getEventDescription(event: Event): string {\n const { message, event_id: eventId } = event;\n if (message) {\n return message;\n }\n\n const firstException = getFirstException(event);\n if (firstException) {\n if (firstException.type && firstException.value) {\n return `${firstException.type}: ${firstException.value}`;\n }\n return firstException.type || firstException.value || eventId || '';\n }\n return eventId || '';\n}\n\n/**\n * Adds exception values, type and value to an synthetic Exception.\n * @param event The event to modify.\n * @param value Value of the exception.\n * @param type Type of the exception.\n * @hidden\n */\nexport function addExceptionTypeValue(event: Event, value?: string, type?: string): void {\n const exception = (event.exception = event.exception || {});\n const values = (exception.values = exception.values || []);\n const firstException = (values[0] = values[0] || {});\n if (!firstException.value) {\n firstException.value = value || '';\n }\n if (!firstException.type) {\n firstException.type = type || 'Error';\n }\n}\n\n/**\n * Adds exception mechanism data to a given event. Uses defaults if the second parameter is not passed.\n *\n * @param event The event to modify.\n * @param newMechanism Mechanism data to add to the event.\n * @hidden\n */\nexport function addExceptionMechanism(event: Event, newMechanism?: Partial): void {\n const firstException = getFirstException(event);\n if (!firstException) {\n return;\n }\n\n const defaultMechanism = { type: 'generic', handled: true };\n const currentMechanism = firstException.mechanism;\n firstException.mechanism = { ...defaultMechanism, ...currentMechanism, ...newMechanism };\n\n if (newMechanism && 'data' in newMechanism) {\n const mergedData = { ...(currentMechanism && currentMechanism.data), ...newMechanism.data };\n firstException.mechanism.data = mergedData;\n }\n}\n\n// https://semver.org/#is-there-a-suggested-regular-expression-regex-to-check-a-semver-string\nconst SEMVER_REGEXP =\n /^(0|[1-9]\\d*)\\.(0|[1-9]\\d*)\\.(0|[1-9]\\d*)(?:-((?:0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\\.(?:0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?(?:\\+([0-9a-zA-Z-]+(?:\\.[0-9a-zA-Z-]+)*))?$/;\n\n/**\n * Represents Semantic Versioning object\n */\ninterface SemVer {\n major?: number;\n minor?: number;\n patch?: number;\n prerelease?: string;\n buildmetadata?: string;\n}\n\n/**\n * Parses input into a SemVer interface\n * @param input string representation of a semver version\n */\nexport function parseSemver(input: string): SemVer {\n const match = input.match(SEMVER_REGEXP) || [];\n const major = parseInt(match[1], 10);\n const minor = parseInt(match[2], 10);\n const patch = parseInt(match[3], 10);\n return {\n buildmetadata: match[5],\n major: isNaN(major) ? undefined : major,\n minor: isNaN(minor) ? undefined : minor,\n patch: isNaN(patch) ? undefined : patch,\n prerelease: match[4],\n };\n}\n\n/**\n * This function adds context (pre/post/line) lines to the provided frame\n *\n * @param lines string[] containing all lines\n * @param frame StackFrame that will be mutated\n * @param linesOfContext number of context lines we want to add pre/post\n */\nexport function addContextToFrame(lines: string[], frame: StackFrame, linesOfContext: number = 5): void {\n const lineno = frame.lineno || 0;\n const maxLines = lines.length;\n const sourceLine = Math.max(Math.min(maxLines, lineno - 1), 0);\n\n frame.pre_context = lines\n .slice(Math.max(0, sourceLine - linesOfContext), sourceLine)\n .map((line: string) => snipLine(line, 0));\n\n frame.context_line = snipLine(lines[Math.min(maxLines - 1, sourceLine)], frame.colno || 0);\n\n frame.post_context = lines\n .slice(Math.min(sourceLine + 1, maxLines), sourceLine + 1 + linesOfContext)\n .map((line: string) => snipLine(line, 0));\n}\n\n/**\n * Strip the query string and fragment off of a given URL or path (if present)\n *\n * @param urlPath Full URL or path, including possible query string and/or fragment\n * @returns URL or path without query string or fragment\n */\nexport function stripUrlQueryAndFragment(urlPath: string): string {\n // eslint-disable-next-line no-useless-escape\n return urlPath.split(/[\\?#]/, 1)[0];\n}\n\n/**\n * Checks whether or not we've already captured the given exception (note: not an identical exception - the very object\n * in question), and marks it captured if not.\n *\n * This is useful because it's possible for an error to get captured by more than one mechanism. After we intercept and\n * record an error, we rethrow it (assuming we've intercepted it before it's reached the top-level global handlers), so\n * that we don't interfere with whatever effects the error might have had were the SDK not there. At that point, because\n * the error has been rethrown, it's possible for it to bubble up to some other code we've instrumented. If it's not\n * caught after that, it will bubble all the way up to the global handlers (which of course we also instrument). This\n * function helps us ensure that even if we encounter the same error more than once, we only record it the first time we\n * see it.\n *\n * Note: It will ignore primitives (always return `false` and not mark them as seen), as properties can't be set on\n * them. {@link: Object.objectify} can be used on exceptions to convert any that are primitives into their equivalent\n * object wrapper forms so that this check will always work. However, because we need to flag the exact object which\n * will get rethrown, and because that rethrowing happens outside of the event processing pipeline, the objectification\n * must be done before the exception captured.\n *\n * @param A thrown exception to check or flag as having been seen\n * @returns `true` if the exception has already been captured, `false` if not (with the side effect of marking it seen)\n */\nexport function checkOrSetAlreadyCaught(exception: unknown): boolean {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n if (exception && (exception as any).__sentry_captured__) {\n return true;\n }\n\n try {\n // set it this way rather than by assignment so that it's not ennumerable and therefore isn't recorded by the\n // `ExtraErrorData` integration\n addNonEnumerableProperty(exception as { [key: string]: unknown }, '__sentry_captured__', true);\n } catch (err) {\n // `exception` is a primitive, so we can't mark it seen\n }\n\n return false;\n}\n","/**\n * NOTE: In order to avoid circular dependencies, if you add a function to this module and it needs to print something,\n * you must either a) use `console.log` rather than the logger, or b) put your function elsewhere.\n */\n\nimport { isBrowserBundle } from './env';\n\n/**\n * Checks whether we're in the Node.js or Browser environment\n *\n * @returns Answer to given question\n */\nexport function isNodeEnv(): boolean {\n // explicitly check for browser bundles as those can be optimized statically\n // by terser/rollup.\n return (\n !isBrowserBundle() &&\n Object.prototype.toString.call(typeof process !== 'undefined' ? process : 0) === '[object process]'\n );\n}\n\n/**\n * Requires a module which is protected against bundler minification.\n *\n * @param request The module path to resolve\n */\n// eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types, @typescript-eslint/no-explicit-any\nexport function dynamicRequire(mod: any, request: string): any {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n return mod.require(request);\n}\n\n/**\n * Helper for dynamically loading module that should work with linked dependencies.\n * The problem is that we _should_ be using `require(require.resolve(moduleName, { paths: [cwd()] }))`\n * However it's _not possible_ to do that with Webpack, as it has to know all the dependencies during\n * build time. `require.resolve` is also not available in any other way, so we cannot create,\n * a fake helper like we do with `dynamicRequire`.\n *\n * We always prefer to use local package, thus the value is not returned early from each `try/catch` block.\n * That is to mimic the behavior of `require.resolve` exactly.\n *\n * @param moduleName module name to require\n * @returns possibly required module\n */\nexport function loadModule(moduleName: string): T | undefined {\n let mod: T | undefined;\n\n try {\n mod = dynamicRequire(module, moduleName);\n } catch (e) {\n // no-empty\n }\n\n try {\n const { cwd } = dynamicRequire(module, 'process');\n mod = dynamicRequire(module, `${cwd()}/node_modules/${moduleName}`) as T;\n } catch (e) {\n // no-empty\n }\n\n return mod;\n}\n","/*\n * This module exists for optimizations in the build process through rollup and terser. We define some global\n * constants, which can be overridden during build. By guarding certain pieces of code with functions that return these\n * constants, we can control whether or not they appear in the final bundle. (Any code guarded by a false condition will\n * never run, and will hence be dropped during treeshaking.) The two primary uses for this are stripping out calls to\n * `logger` and preventing node-related code from appearing in browser bundles.\n *\n * Attention:\n * This file should not be used to define constants/flags that are intended to be used for tree-shaking conducted by\n * users. These fags should live in their respective packages, as we identified user tooling (specifically webpack)\n * having issues tree-shaking these constants across package boundaries.\n * An example for this is the __SENTRY_DEBUG__ constant. It is declared in each package individually because we want\n * users to be able to shake away expressions that it guards.\n */\n\ndeclare const __SENTRY_BROWSER_BUNDLE__: boolean | undefined;\n\n/**\n * Figures out if we're building a browser bundle.\n *\n * @returns true if this is a browser bundle build.\n */\nexport function isBrowserBundle(): boolean {\n return typeof __SENTRY_BROWSER_BUNDLE__ !== 'undefined' && !!__SENTRY_BROWSER_BUNDLE__;\n}\n","/* eslint-disable max-lines */\n/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { WrappedFunction } from '@sentry/types';\n\nimport { htmlTreeAsString } from './browser';\nimport { isElement, isError, isEvent, isInstanceOf, isPlainObject, isPrimitive } from './is';\nimport { truncate } from './string';\n\n/**\n * Replace a method in an object with a wrapped version of itself.\n *\n * @param source An object that contains a method to be wrapped.\n * @param name The name of the method to be wrapped.\n * @param replacementFactory A higher-order function that takes the original version of the given method and returns a\n * wrapped version. Note: The function returned by `replacementFactory` needs to be a non-arrow function, in order to\n * preserve the correct value of `this`, and the original method must be called using `origMethod.call(this, )` or `origMethod.apply(this, [])` (rather than being called directly), again to preserve `this`.\n * @returns void\n */\nexport function fill(source: { [key: string]: any }, name: string, replacementFactory: (...args: any[]) => any): void {\n if (!(name in source)) {\n return;\n }\n\n const original = source[name] as () => any;\n const wrapped = replacementFactory(original) as WrappedFunction;\n\n // Make sure it's a function first, as we need to attach an empty prototype for `defineProperties` to work\n // otherwise it'll throw \"TypeError: Object.defineProperties called on non-object\"\n if (typeof wrapped === 'function') {\n try {\n markFunctionWrapped(wrapped, original);\n } catch (_Oo) {\n // This can throw if multiple fill happens on a global object like XMLHttpRequest\n // Fixes https://github.com/getsentry/sentry-javascript/issues/2043\n }\n }\n\n source[name] = wrapped;\n}\n\n/**\n * Defines a non-enumerable property on the given object.\n *\n * @param obj The object on which to set the property\n * @param name The name of the property to be set\n * @param value The value to which to set the property\n */\nexport function addNonEnumerableProperty(obj: { [key: string]: unknown }, name: string, value: unknown): void {\n Object.defineProperty(obj, name, {\n // enumerable: false, // the default, so we can save on bundle size by not explicitly setting it\n value: value,\n writable: true,\n configurable: true,\n });\n}\n\n/**\n * Remembers the original function on the wrapped function and\n * patches up the prototype.\n *\n * @param wrapped the wrapper function\n * @param original the original function that gets wrapped\n */\nexport function markFunctionWrapped(wrapped: WrappedFunction, original: WrappedFunction): void {\n const proto = original.prototype || {};\n wrapped.prototype = original.prototype = proto;\n addNonEnumerableProperty(wrapped, '__sentry_original__', original);\n}\n\n/**\n * This extracts the original function if available. See\n * `markFunctionWrapped` for more information.\n *\n * @param func the function to unwrap\n * @returns the unwrapped version of the function if available.\n */\nexport function getOriginalFunction(func: WrappedFunction): WrappedFunction | undefined {\n return func.__sentry_original__;\n}\n\n/**\n * Encodes given object into url-friendly format\n *\n * @param object An object that contains serializable values\n * @returns string Encoded\n */\nexport function urlEncode(object: { [key: string]: any }): string {\n return Object.keys(object)\n .map(key => `${encodeURIComponent(key)}=${encodeURIComponent(object[key])}`)\n .join('&');\n}\n\n/**\n * Transforms any `Error` or `Event` into a plain object with all of their enumerable properties, and some of their\n * non-enumerable properties attached.\n *\n * @param value Initial source that we have to transform in order for it to be usable by the serializer\n * @returns An Event or Error turned into an object - or the value argurment itself, when value is neither an Event nor\n * an Error.\n */\nexport function convertToPlainObject(\n value: V,\n):\n | {\n [ownProps: string]: unknown;\n type: string;\n target: string;\n currentTarget: string;\n detail?: unknown;\n }\n | {\n [ownProps: string]: unknown;\n message: string;\n name: string;\n stack?: string;\n }\n | V {\n if (isError(value)) {\n return {\n message: value.message,\n name: value.name,\n stack: value.stack,\n ...getOwnProperties(value),\n };\n } else if (isEvent(value)) {\n const newObj: {\n [ownProps: string]: unknown;\n type: string;\n target: string;\n currentTarget: string;\n detail?: unknown;\n } = {\n type: value.type,\n target: serializeEventTarget(value.target),\n currentTarget: serializeEventTarget(value.currentTarget),\n ...getOwnProperties(value),\n };\n\n if (typeof CustomEvent !== 'undefined' && isInstanceOf(value, CustomEvent)) {\n newObj.detail = value.detail;\n }\n\n return newObj;\n } else {\n return value;\n }\n}\n\n/** Creates a string representation of the target of an `Event` object */\nfunction serializeEventTarget(target: unknown): string {\n try {\n return isElement(target) ? htmlTreeAsString(target) : Object.prototype.toString.call(target);\n } catch (_oO) {\n return '';\n }\n}\n\n/** Filters out all but an object's own properties */\nfunction getOwnProperties(obj: unknown): { [key: string]: unknown } {\n if (typeof obj === 'object' && obj !== null) {\n const extractedProps: { [key: string]: unknown } = {};\n for (const property in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, property)) {\n extractedProps[property] = (obj as Record)[property];\n }\n }\n return extractedProps;\n } else {\n return {};\n }\n}\n\n/**\n * Given any captured exception, extract its keys and create a sorted\n * and truncated list that will be used inside the event message.\n * eg. `Non-error exception captured with keys: foo, bar, baz`\n */\nexport function extractExceptionKeysForMessage(exception: Record, maxLength: number = 40): string {\n const keys = Object.keys(convertToPlainObject(exception));\n keys.sort();\n\n if (!keys.length) {\n return '[object has no keys]';\n }\n\n if (keys[0].length >= maxLength) {\n return truncate(keys[0], maxLength);\n }\n\n for (let includedKeys = keys.length; includedKeys > 0; includedKeys--) {\n const serialized = keys.slice(0, includedKeys).join(', ');\n if (serialized.length > maxLength) {\n continue;\n }\n if (includedKeys === keys.length) {\n return serialized;\n }\n return truncate(serialized, maxLength);\n }\n\n return '';\n}\n\n/**\n * Given any object, return a new object having removed all fields whose value was `undefined`.\n * Works recursively on objects and arrays.\n *\n * Attention: This function keeps circular references in the returned object.\n */\nexport function dropUndefinedKeys(inputValue: T): T {\n // This map keeps track of what already visited nodes map to.\n // Our Set - based memoBuilder doesn't work here because we want to the output object to have the same circular\n // references as the input object.\n const memoizationMap = new Map();\n\n // This function just proxies `_dropUndefinedKeys` to keep the `memoBuilder` out of this function's API\n return _dropUndefinedKeys(inputValue, memoizationMap);\n}\n\nfunction _dropUndefinedKeys(inputValue: T, memoizationMap: Map): T {\n if (isPlainObject(inputValue)) {\n // If this node has already been visited due to a circular reference, return the object it was mapped to in the new object\n const memoVal = memoizationMap.get(inputValue);\n if (memoVal !== undefined) {\n return memoVal as T;\n }\n\n const returnValue: { [key: string]: any } = {};\n // Store the mapping of this value in case we visit it again, in case of circular data\n memoizationMap.set(inputValue, returnValue);\n\n for (const key of Object.keys(inputValue)) {\n if (typeof inputValue[key] !== 'undefined') {\n returnValue[key] = _dropUndefinedKeys(inputValue[key], memoizationMap);\n }\n }\n\n return returnValue as T;\n }\n\n if (Array.isArray(inputValue)) {\n // If this node has already been visited due to a circular reference, return the array it was mapped to in the new object\n const memoVal = memoizationMap.get(inputValue);\n if (memoVal !== undefined) {\n return memoVal as T;\n }\n\n const returnValue: unknown[] = [];\n // Store the mapping of this value in case we visit it again, in case of circular data\n memoizationMap.set(inputValue, returnValue);\n\n inputValue.forEach((item: unknown) => {\n returnValue.push(_dropUndefinedKeys(item, memoizationMap));\n });\n\n return returnValue as unknown as T;\n }\n\n return inputValue;\n}\n\n/**\n * Ensure that something is an object.\n *\n * Turns `undefined` and `null` into `String`s and all other primitives into instances of their respective wrapper\n * classes (String, Boolean, Number, etc.). Acts as the identity function on non-primitives.\n *\n * @param wat The subject of the objectification\n * @returns A version of `wat` which can safely be used with `Object` class methods\n */\nexport function objectify(wat: unknown): typeof Object {\n let objectified;\n switch (true) {\n case wat === undefined || wat === null:\n objectified = new String(wat);\n break;\n\n // Though symbols and bigints do have wrapper classes (`Symbol` and `BigInt`, respectively), for whatever reason\n // those classes don't have constructors which can be used with the `new` keyword. We therefore need to cast each as\n // an object in order to wrap it.\n case typeof wat === 'symbol' || typeof wat === 'bigint':\n objectified = Object(wat);\n break;\n\n // this will catch the remaining primitives: `String`, `Number`, and `Boolean`\n case isPrimitive(wat):\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n objectified = new (wat as any).constructor(wat);\n break;\n\n // by process of elimination, at this point we know that `wat` must already be an object\n default:\n objectified = wat;\n break;\n }\n return objectified;\n}\n","import { StackFrame, StackLineParser, StackParser } from '@sentry/types';\n\nconst STACKTRACE_LIMIT = 50;\n\n/**\n * Creates a stack parser with the supplied line parsers\n *\n * StackFrames are returned in the correct order for Sentry Exception\n * frames and with Sentry SDK internal frames removed from the top and bottom\n *\n */\nexport function createStackParser(...parsers: StackLineParser[]): StackParser {\n const sortedParsers = parsers.sort((a, b) => a[0] - b[0]).map(p => p[1]);\n\n return (stack: string, skipFirst: number = 0): StackFrame[] => {\n const frames: StackFrame[] = [];\n\n for (const line of stack.split('\\n').slice(skipFirst)) {\n for (const parser of sortedParsers) {\n const frame = parser(line);\n\n if (frame) {\n frames.push(frame);\n break;\n }\n }\n }\n\n return stripSentryFramesAndReverse(frames);\n };\n}\n\n/**\n * Gets a stack parser implementation from Options.stackParser\n * @see Options\n *\n * If options contains an array of line parsers, it is converted into a parser\n */\nexport function stackParserFromStackParserOptions(stackParser: StackParser | StackLineParser[]): StackParser {\n if (Array.isArray(stackParser)) {\n return createStackParser(...stackParser);\n }\n return stackParser;\n}\n\n/**\n * @hidden\n */\nexport function stripSentryFramesAndReverse(stack: StackFrame[]): StackFrame[] {\n if (!stack.length) {\n return [];\n }\n\n let localStack = stack;\n\n const firstFrameFunction = localStack[0].function || '';\n const lastFrameFunction = localStack[localStack.length - 1].function || '';\n\n // If stack starts with one of our API calls, remove it (starts, meaning it's the top of the stack - aka last call)\n if (firstFrameFunction.indexOf('captureMessage') !== -1 || firstFrameFunction.indexOf('captureException') !== -1) {\n localStack = localStack.slice(1);\n }\n\n // If stack ends with one of our internal API calls, remove it (ends, meaning it's the bottom of the stack - aka top-most call)\n if (lastFrameFunction.indexOf('sentryWrapped') !== -1) {\n localStack = localStack.slice(0, -1);\n }\n\n // The frame where the crash happened, should be the last entry in the array\n return localStack\n .slice(0, STACKTRACE_LIMIT)\n .map(frame => ({\n ...frame,\n filename: frame.filename || localStack[0].filename,\n function: frame.function || '?',\n }))\n .reverse();\n}\n\nconst defaultFunctionName = '';\n\n/**\n * Safely extract function name from itself\n */\nexport function getFunctionName(fn: unknown): string {\n try {\n if (!fn || typeof fn !== 'function') {\n return defaultFunctionName;\n }\n return fn.name || defaultFunctionName;\n } catch (e) {\n // Just accessing custom props in some Selenium environments\n // can cause a \"Permission denied\" exception (see raven-js#495).\n return defaultFunctionName;\n }\n}\n","import { isRegExp, isString } from './is';\n\n/**\n * Truncates given string to the maximum characters count\n *\n * @param str An object that contains serializable values\n * @param max Maximum number of characters in truncated string (0 = unlimited)\n * @returns string Encoded\n */\nexport function truncate(str: string, max: number = 0): string {\n if (typeof str !== 'string' || max === 0) {\n return str;\n }\n return str.length <= max ? str : `${str.substr(0, max)}...`;\n}\n\n/**\n * This is basically just `trim_line` from\n * https://github.com/getsentry/sentry/blob/master/src/sentry/lang/javascript/processor.py#L67\n *\n * @param str An object that contains serializable values\n * @param max Maximum number of characters in truncated string\n * @returns string Encoded\n */\nexport function snipLine(line: string, colno: number): string {\n let newLine = line;\n const lineLength = newLine.length;\n if (lineLength <= 150) {\n return newLine;\n }\n if (colno > lineLength) {\n // eslint-disable-next-line no-param-reassign\n colno = lineLength;\n }\n\n let start = Math.max(colno - 60, 0);\n if (start < 5) {\n start = 0;\n }\n\n let end = Math.min(start + 140, lineLength);\n if (end > lineLength - 5) {\n end = lineLength;\n }\n if (end === lineLength) {\n start = Math.max(end - 140, 0);\n }\n\n newLine = newLine.slice(start, end);\n if (start > 0) {\n newLine = `'{snip} ${newLine}`;\n }\n if (end < lineLength) {\n newLine += ' {snip}';\n }\n\n return newLine;\n}\n\n/**\n * Join values in array\n * @param input array of values to be joined together\n * @param delimiter string to be placed in-between values\n * @returns Joined values\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function safeJoin(input: any[], delimiter?: string): string {\n if (!Array.isArray(input)) {\n return '';\n }\n\n const output = [];\n // eslint-disable-next-line @typescript-eslint/prefer-for-of\n for (let i = 0; i < input.length; i++) {\n const value = input[i];\n try {\n output.push(String(value));\n } catch (e) {\n output.push('[value cannot be serialized]');\n }\n }\n\n return output.join(delimiter);\n}\n\n/**\n * Checks if the value matches a regex or includes the string\n * @param value The string value to be checked against\n * @param pattern Either a regex or a string that must be contained in value\n */\nexport function isMatchingPattern(value: string, pattern: RegExp | string): boolean {\n if (!isString(value)) {\n return false;\n }\n\n if (isRegExp(pattern)) {\n return pattern.test(value);\n }\n if (typeof pattern === 'string') {\n return value.indexOf(pattern) !== -1;\n }\n return false;\n}\n\n/**\n * Given a string, escape characters which have meaning in the regex grammar, such that the result is safe to feed to\n * `new RegExp()`.\n *\n * Based on https://github.com/sindresorhus/escape-string-regexp. Vendored to a) reduce the size by skipping the runtime\n * type-checking, and b) ensure it gets down-compiled for old versions of Node (the published package only supports Node\n * 12+).\n *\n * @param regexString The string to escape\n * @returns An version of the string with all special regex characters escaped\n */\nexport function escapeStringForRegex(regexString: string): string {\n // escape the hyphen separately so we can also replace it with a unicode literal hyphen, to avoid the problems\n // discussed in https://github.com/sindresorhus/escape-string-regexp/issues/20.\n return regexString.replace(/[|\\\\{}()[\\]^$+*?.]/g, '\\\\$&').replace(/-/g, '\\\\x2d');\n}\n","import { getGlobalObject } from './global';\nimport { logger } from './logger';\n\n/**\n * Tells whether current environment supports ErrorEvent objects\n * {@link supportsErrorEvent}.\n *\n * @returns Answer to the given question.\n */\nexport function supportsErrorEvent(): boolean {\n try {\n new ErrorEvent('');\n return true;\n } catch (e) {\n return false;\n }\n}\n\n/**\n * Tells whether current environment supports DOMError objects\n * {@link supportsDOMError}.\n *\n * @returns Answer to the given question.\n */\nexport function supportsDOMError(): boolean {\n try {\n // Chrome: VM89:1 Uncaught TypeError: Failed to construct 'DOMError':\n // 1 argument required, but only 0 present.\n // @ts-ignore It really needs 1 argument, not 0.\n new DOMError('');\n return true;\n } catch (e) {\n return false;\n }\n}\n\n/**\n * Tells whether current environment supports DOMException objects\n * {@link supportsDOMException}.\n *\n * @returns Answer to the given question.\n */\nexport function supportsDOMException(): boolean {\n try {\n new DOMException('');\n return true;\n } catch (e) {\n return false;\n }\n}\n\n/**\n * Tells whether current environment supports Fetch API\n * {@link supportsFetch}.\n *\n * @returns Answer to the given question.\n */\nexport function supportsFetch(): boolean {\n if (!('fetch' in getGlobalObject())) {\n return false;\n }\n\n try {\n new Headers();\n new Request('');\n new Response();\n return true;\n } catch (e) {\n return false;\n }\n}\n/**\n * isNativeFetch checks if the given function is a native implementation of fetch()\n */\n// eslint-disable-next-line @typescript-eslint/ban-types\nexport function isNativeFetch(func: Function): boolean {\n return func && /^function fetch\\(\\)\\s+\\{\\s+\\[native code\\]\\s+\\}$/.test(func.toString());\n}\n\n/**\n * Tells whether current environment supports Fetch API natively\n * {@link supportsNativeFetch}.\n *\n * @returns true if `window.fetch` is natively implemented, false otherwise\n */\nexport function supportsNativeFetch(): boolean {\n if (!supportsFetch()) {\n return false;\n }\n\n const global = getGlobalObject();\n\n // Fast path to avoid DOM I/O\n // eslint-disable-next-line @typescript-eslint/unbound-method\n if (isNativeFetch(global.fetch)) {\n return true;\n }\n\n // window.fetch is implemented, but is polyfilled or already wrapped (e.g: by a chrome extension)\n // so create a \"pure\" iframe to see if that has native fetch\n let result = false;\n const doc = global.document;\n // eslint-disable-next-line deprecation/deprecation\n if (doc && typeof (doc.createElement as unknown) === 'function') {\n try {\n const sandbox = doc.createElement('iframe');\n sandbox.hidden = true;\n doc.head.appendChild(sandbox);\n if (sandbox.contentWindow && sandbox.contentWindow.fetch) {\n // eslint-disable-next-line @typescript-eslint/unbound-method\n result = isNativeFetch(sandbox.contentWindow.fetch);\n }\n doc.head.removeChild(sandbox);\n } catch (err) {\n __DEBUG_BUILD__ &&\n logger.warn('Could not create sandbox iframe for pure fetch check, bailing to window.fetch: ', err);\n }\n }\n\n return result;\n}\n\n/**\n * Tells whether current environment supports ReportingObserver API\n * {@link supportsReportingObserver}.\n *\n * @returns Answer to the given question.\n */\nexport function supportsReportingObserver(): boolean {\n return 'ReportingObserver' in getGlobalObject();\n}\n\n/**\n * Tells whether current environment supports Referrer Policy API\n * {@link supportsReferrerPolicy}.\n *\n * @returns Answer to the given question.\n */\nexport function supportsReferrerPolicy(): boolean {\n // Despite all stars in the sky saying that Edge supports old draft syntax, aka 'never', 'always', 'origin' and 'default'\n // (see https://caniuse.com/#feat=referrer-policy),\n // it doesn't. And it throws an exception instead of ignoring this parameter...\n // REF: https://github.com/getsentry/raven-js/issues/1233\n\n if (!supportsFetch()) {\n return false;\n }\n\n try {\n new Request('_', {\n referrerPolicy: 'origin' as ReferrerPolicy,\n });\n return true;\n } catch (e) {\n return false;\n }\n}\n\n/**\n * Tells whether current environment supports History API\n * {@link supportsHistory}.\n *\n * @returns Answer to the given question.\n */\nexport function supportsHistory(): boolean {\n // NOTE: in Chrome App environment, touching history.pushState, *even inside\n // a try/catch block*, will cause Chrome to output an error to console.error\n // borrowed from: https://github.com/angular/angular.js/pull/13945/files\n const global = getGlobalObject();\n /* eslint-disable @typescript-eslint/no-unsafe-member-access */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const chrome = (global as any).chrome;\n const isChromePackagedApp = chrome && chrome.app && chrome.app.runtime;\n /* eslint-enable @typescript-eslint/no-unsafe-member-access */\n const hasHistoryApi = 'history' in global && !!global.history.pushState && !!global.history.replaceState;\n\n return !isChromePackagedApp && hasHistoryApi;\n}\n","/* eslint-disable @typescript-eslint/explicit-function-return-type */\n/* eslint-disable @typescript-eslint/typedef */\n/* eslint-disable @typescript-eslint/explicit-module-boundary-types */\n/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { isThenable } from './is';\n\n/** SyncPromise internal states */\nconst enum States {\n /** Pending */\n PENDING = 0,\n /** Resolved / OK */\n RESOLVED = 1,\n /** Rejected / Error */\n REJECTED = 2,\n}\n\n// Overloads so we can call resolvedSyncPromise without arguments and generic argument\nexport function resolvedSyncPromise(): PromiseLike;\nexport function resolvedSyncPromise(value: T | PromiseLike): PromiseLike;\n\n/**\n * Creates a resolved sync promise.\n *\n * @param value the value to resolve the promise with\n * @returns the resolved sync promise\n */\nexport function resolvedSyncPromise(value?: T | PromiseLike): PromiseLike {\n return new SyncPromise(resolve => {\n resolve(value);\n });\n}\n\n/**\n * Creates a rejected sync promise.\n *\n * @param value the value to reject the promise with\n * @returns the rejected sync promise\n */\nexport function rejectedSyncPromise(reason?: any): PromiseLike {\n return new SyncPromise((_, reject) => {\n reject(reason);\n });\n}\n\n/**\n * Thenable class that behaves like a Promise and follows it's interface\n * but is not async internally\n */\nclass SyncPromise implements PromiseLike {\n private _state: States = States.PENDING;\n private _handlers: Array<[boolean, (value: T) => void, (reason: any) => any]> = [];\n private _value: any;\n\n public constructor(\n executor: (resolve: (value?: T | PromiseLike | null) => void, reject: (reason?: any) => void) => void,\n ) {\n try {\n executor(this._resolve, this._reject);\n } catch (e) {\n this._reject(e);\n }\n }\n\n /** JSDoc */\n public then(\n onfulfilled?: ((value: T) => TResult1 | PromiseLike) | null,\n onrejected?: ((reason: any) => TResult2 | PromiseLike) | null,\n ): PromiseLike {\n return new SyncPromise((resolve, reject) => {\n this._handlers.push([\n false,\n result => {\n if (!onfulfilled) {\n // TODO: ¯\\_(ツ)_/¯\n // TODO: FIXME\n resolve(result as any);\n } else {\n try {\n resolve(onfulfilled(result));\n } catch (e) {\n reject(e);\n }\n }\n },\n reason => {\n if (!onrejected) {\n reject(reason);\n } else {\n try {\n resolve(onrejected(reason));\n } catch (e) {\n reject(e);\n }\n }\n },\n ]);\n this._executeHandlers();\n });\n }\n\n /** JSDoc */\n public catch(\n onrejected?: ((reason: any) => TResult | PromiseLike) | null,\n ): PromiseLike {\n return this.then(val => val, onrejected);\n }\n\n /** JSDoc */\n public finally(onfinally?: (() => void) | null): PromiseLike {\n return new SyncPromise((resolve, reject) => {\n let val: TResult | any;\n let isRejected: boolean;\n\n return this.then(\n value => {\n isRejected = false;\n val = value;\n if (onfinally) {\n onfinally();\n }\n },\n reason => {\n isRejected = true;\n val = reason;\n if (onfinally) {\n onfinally();\n }\n },\n ).then(() => {\n if (isRejected) {\n reject(val);\n return;\n }\n\n resolve(val as unknown as any);\n });\n });\n }\n\n /** JSDoc */\n private readonly _resolve = (value?: T | PromiseLike | null) => {\n this._setResult(States.RESOLVED, value);\n };\n\n /** JSDoc */\n private readonly _reject = (reason?: any) => {\n this._setResult(States.REJECTED, reason);\n };\n\n /** JSDoc */\n private readonly _setResult = (state: States, value?: T | PromiseLike | any) => {\n if (this._state !== States.PENDING) {\n return;\n }\n\n if (isThenable(value)) {\n void (value as PromiseLike).then(this._resolve, this._reject);\n return;\n }\n\n this._state = state;\n this._value = value;\n\n this._executeHandlers();\n };\n\n /** JSDoc */\n private readonly _executeHandlers = () => {\n if (this._state === States.PENDING) {\n return;\n }\n\n const cachedHandlers = this._handlers.slice();\n this._handlers = [];\n\n cachedHandlers.forEach(handler => {\n if (handler[0]) {\n return;\n }\n\n if (this._state === States.RESOLVED) {\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n handler[1](this._value as unknown as any);\n }\n\n if (this._state === States.REJECTED) {\n handler[2](this._value);\n }\n\n handler[0] = true;\n });\n };\n}\n\nexport { SyncPromise };\n","import { getGlobalObject } from './global';\nimport { dynamicRequire, isNodeEnv } from './node';\n\n/**\n * An object that can return the current timestamp in seconds since the UNIX epoch.\n */\ninterface TimestampSource {\n nowSeconds(): number;\n}\n\n/**\n * A TimestampSource implementation for environments that do not support the Performance Web API natively.\n *\n * Note that this TimestampSource does not use a monotonic clock. A call to `nowSeconds` may return a timestamp earlier\n * than a previously returned value. We do not try to emulate a monotonic behavior in order to facilitate debugging. It\n * is more obvious to explain \"why does my span have negative duration\" than \"why my spans have zero duration\".\n */\nconst dateTimestampSource: TimestampSource = {\n nowSeconds: () => Date.now() / 1000,\n};\n\n/**\n * A partial definition of the [Performance Web API]{@link https://developer.mozilla.org/en-US/docs/Web/API/Performance}\n * for accessing a high-resolution monotonic clock.\n */\ninterface Performance {\n /**\n * The millisecond timestamp at which measurement began, measured in Unix time.\n */\n timeOrigin: number;\n /**\n * Returns the current millisecond timestamp, where 0 represents the start of measurement.\n */\n now(): number;\n}\n\n/**\n * Returns a wrapper around the native Performance API browser implementation, or undefined for browsers that do not\n * support the API.\n *\n * Wrapping the native API works around differences in behavior from different browsers.\n */\nfunction getBrowserPerformance(): Performance | undefined {\n const { performance } = getGlobalObject();\n if (!performance || !performance.now) {\n return undefined;\n }\n\n // Replace performance.timeOrigin with our own timeOrigin based on Date.now().\n //\n // This is a partial workaround for browsers reporting performance.timeOrigin such that performance.timeOrigin +\n // performance.now() gives a date arbitrarily in the past.\n //\n // Additionally, computing timeOrigin in this way fills the gap for browsers where performance.timeOrigin is\n // undefined.\n //\n // The assumption that performance.timeOrigin + performance.now() ~= Date.now() is flawed, but we depend on it to\n // interact with data coming out of performance entries.\n //\n // Note that despite recommendations against it in the spec, browsers implement the Performance API with a clock that\n // might stop when the computer is asleep (and perhaps under other circumstances). Such behavior causes\n // performance.timeOrigin + performance.now() to have an arbitrary skew over Date.now(). In laptop computers, we have\n // observed skews that can be as long as days, weeks or months.\n //\n // See https://github.com/getsentry/sentry-javascript/issues/2590.\n //\n // BUG: despite our best intentions, this workaround has its limitations. It mostly addresses timings of pageload\n // transactions, but ignores the skew built up over time that can aversely affect timestamps of navigation\n // transactions of long-lived web pages.\n const timeOrigin = Date.now() - performance.now();\n\n return {\n now: () => performance.now(),\n timeOrigin,\n };\n}\n\n/**\n * Returns the native Performance API implementation from Node.js. Returns undefined in old Node.js versions that don't\n * implement the API.\n */\nfunction getNodePerformance(): Performance | undefined {\n try {\n const perfHooks = dynamicRequire(module, 'perf_hooks') as { performance: Performance };\n return perfHooks.performance;\n } catch (_) {\n return undefined;\n }\n}\n\n/**\n * The Performance API implementation for the current platform, if available.\n */\nconst platformPerformance: Performance | undefined = isNodeEnv() ? getNodePerformance() : getBrowserPerformance();\n\nconst timestampSource: TimestampSource =\n platformPerformance === undefined\n ? dateTimestampSource\n : {\n nowSeconds: () => (platformPerformance.timeOrigin + platformPerformance.now()) / 1000,\n };\n\n/**\n * Returns a timestamp in seconds since the UNIX epoch using the Date API.\n */\nexport const dateTimestampInSeconds: () => number = dateTimestampSource.nowSeconds.bind(dateTimestampSource);\n\n/**\n * Returns a timestamp in seconds since the UNIX epoch using either the Performance or Date APIs, depending on the\n * availability of the Performance API.\n *\n * See `usingPerformanceAPI` to test whether the Performance API is used.\n *\n * BUG: Note that because of how browsers implement the Performance API, the clock might stop when the computer is\n * asleep. This creates a skew between `dateTimestampInSeconds` and `timestampInSeconds`. The\n * skew can grow to arbitrary amounts like days, weeks or months.\n * See https://github.com/getsentry/sentry-javascript/issues/2590.\n */\nexport const timestampInSeconds: () => number = timestampSource.nowSeconds.bind(timestampSource);\n\n// Re-exported with an old name for backwards-compatibility.\nexport const timestampWithMs = timestampInSeconds;\n\n/**\n * A boolean that is true when timestampInSeconds uses the Performance API to produce monotonic timestamps.\n */\nexport const usingPerformanceAPI = platformPerformance !== undefined;\n\n/**\n * Internal helper to store what is the source of browserPerformanceTimeOrigin below. For debugging only.\n */\nexport let _browserPerformanceTimeOriginMode: string;\n\n/**\n * The number of milliseconds since the UNIX epoch. This value is only usable in a browser, and only when the\n * performance API is available.\n */\nexport const browserPerformanceTimeOrigin = ((): number | undefined => {\n // Unfortunately browsers may report an inaccurate time origin data, through either performance.timeOrigin or\n // performance.timing.navigationStart, which results in poor results in performance data. We only treat time origin\n // data as reliable if they are within a reasonable threshold of the current time.\n\n const { performance } = getGlobalObject();\n if (!performance || !performance.now) {\n _browserPerformanceTimeOriginMode = 'none';\n return undefined;\n }\n\n const threshold = 3600 * 1000;\n const performanceNow = performance.now();\n const dateNow = Date.now();\n\n // if timeOrigin isn't available set delta to threshold so it isn't used\n const timeOriginDelta = performance.timeOrigin\n ? Math.abs(performance.timeOrigin + performanceNow - dateNow)\n : threshold;\n const timeOriginIsReliable = timeOriginDelta < threshold;\n\n // While performance.timing.navigationStart is deprecated in favor of performance.timeOrigin, performance.timeOrigin\n // is not as widely supported. Namely, performance.timeOrigin is undefined in Safari as of writing.\n // Also as of writing, performance.timing is not available in Web Workers in mainstream browsers, so it is not always\n // a valid fallback. In the absence of an initial time provided by the browser, fallback to the current time from the\n // Date API.\n // eslint-disable-next-line deprecation/deprecation\n const navigationStart = performance.timing && performance.timing.navigationStart;\n const hasNavigationStart = typeof navigationStart === 'number';\n // if navigationStart isn't available set delta to threshold so it isn't used\n const navigationStartDelta = hasNavigationStart ? Math.abs(navigationStart + performanceNow - dateNow) : threshold;\n const navigationStartIsReliable = navigationStartDelta < threshold;\n\n if (timeOriginIsReliable || navigationStartIsReliable) {\n // Use the more reliable time origin\n if (timeOriginDelta <= navigationStartDelta) {\n _browserPerformanceTimeOriginMode = 'timeOrigin';\n return performance.timeOrigin;\n } else {\n _browserPerformanceTimeOriginMode = 'navigationStart';\n return navigationStart;\n }\n }\n\n // Either both timeOrigin and navigationStart are skewed or neither is available, fallback to Date.\n _browserPerformanceTimeOriginMode = 'dateNow';\n return dateNow;\n})();\n","/* Copyright (c) 2013 Rod Vagg, MIT License */\n\nfunction AbstractChainedBatch (db) {\n this._db = db\n this._operations = []\n this._written = false\n}\n\nAbstractChainedBatch.prototype._checkWritten = function () {\n if (this._written)\n throw new Error('write() already called on this batch')\n}\n\nAbstractChainedBatch.prototype.put = function (key, value) {\n this._checkWritten()\n\n var err = this._db._checkKeyValue(key, 'key', this._db._isBuffer)\n if (err) throw err\n err = this._db._checkKeyValue(value, 'value', this._db._isBuffer)\n if (err) throw err\n\n if (!this._db._isBuffer(key)) key = String(key)\n if (!this._db._isBuffer(value)) value = String(value)\n\n if (typeof this._put == 'function' )\n this._put(key, value)\n else\n this._operations.push({ type: 'put', key: key, value: value })\n\n return this\n}\n\nAbstractChainedBatch.prototype.del = function (key) {\n this._checkWritten()\n\n var err = this._db._checkKeyValue(key, 'key', this._db._isBuffer)\n if (err) throw err\n\n if (!this._db._isBuffer(key)) key = String(key)\n\n if (typeof this._del == 'function' )\n this._del(key)\n else\n this._operations.push({ type: 'del', key: key })\n\n return this\n}\n\nAbstractChainedBatch.prototype.clear = function () {\n this._checkWritten()\n\n this._operations = []\n\n if (typeof this._clear == 'function' )\n this._clear()\n\n return this\n}\n\nAbstractChainedBatch.prototype.write = function (options, callback) {\n this._checkWritten()\n\n if (typeof options == 'function')\n callback = options\n if (typeof callback != 'function')\n throw new Error('write() requires a callback argument')\n if (typeof options != 'object')\n options = {}\n\n this._written = true\n\n if (typeof this._write == 'function' )\n return this._write(callback)\n\n if (typeof this._db._batch == 'function')\n return this._db._batch(this._operations, options, callback)\n\n process.nextTick(callback)\n}\n\nmodule.exports = AbstractChainedBatch","/* Copyright (c) 2013 Rod Vagg, MIT License */\n\nfunction AbstractIterator (db) {\n this.db = db\n this._ended = false\n this._nexting = false\n}\n\nAbstractIterator.prototype.next = function (callback) {\n var self = this\n\n if (typeof callback != 'function')\n throw new Error('next() requires a callback argument')\n\n if (self._ended)\n return callback(new Error('cannot call next() after end()'))\n if (self._nexting)\n return callback(new Error('cannot call next() before previous next() has completed'))\n\n self._nexting = true\n if (typeof self._next == 'function') {\n return self._next(function () {\n self._nexting = false\n callback.apply(null, arguments)\n })\n }\n\n process.nextTick(function () {\n self._nexting = false\n callback()\n })\n}\n\nAbstractIterator.prototype.end = function (callback) {\n if (typeof callback != 'function')\n throw new Error('end() requires a callback argument')\n\n if (this._ended)\n return callback(new Error('end() already called on iterator'))\n\n this._ended = true\n\n if (typeof this._end == 'function')\n return this._end(callback)\n\n process.nextTick(callback)\n}\n\nmodule.exports = AbstractIterator\n","/* Copyright (c) 2013 Rod Vagg, MIT License */\n\nvar xtend = require('xtend')\n , AbstractIterator = require('./abstract-iterator')\n , AbstractChainedBatch = require('./abstract-chained-batch')\n\nfunction AbstractLevelDOWN (location) {\n if (!arguments.length || location === undefined)\n throw new Error('constructor requires at least a location argument')\n\n if (typeof location != 'string')\n throw new Error('constructor requires a location string argument')\n\n this.location = location\n}\n\nAbstractLevelDOWN.prototype.open = function (options, callback) {\n if (typeof options == 'function')\n callback = options\n\n if (typeof callback != 'function')\n throw new Error('open() requires a callback argument')\n\n if (typeof options != 'object')\n options = {}\n\n if (typeof this._open == 'function')\n return this._open(options, callback)\n\n process.nextTick(callback)\n}\n\nAbstractLevelDOWN.prototype.close = function (callback) {\n if (typeof callback != 'function')\n throw new Error('close() requires a callback argument')\n\n if (typeof this._close == 'function')\n return this._close(callback)\n\n process.nextTick(callback)\n}\n\nAbstractLevelDOWN.prototype.get = function (key, options, callback) {\n var err\n\n if (typeof options == 'function')\n callback = options\n\n if (typeof callback != 'function')\n throw new Error('get() requires a callback argument')\n\n if (err = this._checkKeyValue(key, 'key', this._isBuffer))\n return callback(err)\n\n if (!this._isBuffer(key))\n key = String(key)\n\n if (typeof options != 'object')\n options = {}\n\n if (typeof this._get == 'function')\n return this._get(key, options, callback)\n\n process.nextTick(function () { callback(new Error('NotFound')) })\n}\n\nAbstractLevelDOWN.prototype.put = function (key, value, options, callback) {\n var err\n\n if (typeof options == 'function')\n callback = options\n\n if (typeof callback != 'function')\n throw new Error('put() requires a callback argument')\n\n if (err = this._checkKeyValue(key, 'key', this._isBuffer))\n return callback(err)\n\n if (err = this._checkKeyValue(value, 'value', this._isBuffer))\n return callback(err)\n\n if (!this._isBuffer(key))\n key = String(key)\n\n // coerce value to string in node, don't touch it in browser\n // (indexeddb can store any JS type)\n if (!this._isBuffer(value) && !process.browser)\n value = String(value)\n\n if (typeof options != 'object')\n options = {}\n\n if (typeof this._put == 'function')\n return this._put(key, value, options, callback)\n\n process.nextTick(callback)\n}\n\nAbstractLevelDOWN.prototype.del = function (key, options, callback) {\n var err\n\n if (typeof options == 'function')\n callback = options\n\n if (typeof callback != 'function')\n throw new Error('del() requires a callback argument')\n\n if (err = this._checkKeyValue(key, 'key', this._isBuffer))\n return callback(err)\n\n if (!this._isBuffer(key))\n key = String(key)\n\n if (typeof options != 'object')\n options = {}\n\n if (typeof this._del == 'function')\n return this._del(key, options, callback)\n\n process.nextTick(callback)\n}\n\nAbstractLevelDOWN.prototype.batch = function (array, options, callback) {\n if (!arguments.length)\n return this._chainedBatch()\n\n if (typeof options == 'function')\n callback = options\n\n if (typeof callback != 'function')\n throw new Error('batch(array) requires a callback argument')\n\n if (!Array.isArray(array))\n return callback(new Error('batch(array) requires an array argument'))\n\n if (typeof options != 'object')\n options = {}\n\n var i = 0\n , l = array.length\n , e\n , err\n\n for (; i < l; i++) {\n e = array[i]\n if (typeof e != 'object')\n continue\n\n if (err = this._checkKeyValue(e.type, 'type', this._isBuffer))\n return callback(err)\n\n if (err = this._checkKeyValue(e.key, 'key', this._isBuffer))\n return callback(err)\n\n if (e.type == 'put') {\n if (err = this._checkKeyValue(e.value, 'value', this._isBuffer))\n return callback(err)\n }\n }\n\n if (typeof this._batch == 'function')\n return this._batch(array, options, callback)\n\n process.nextTick(callback)\n}\n\n//TODO: remove from here, not a necessary primitive\nAbstractLevelDOWN.prototype.approximateSize = function (start, end, callback) {\n if ( start == null\n || end == null\n || typeof start == 'function'\n || typeof end == 'function') {\n throw new Error('approximateSize() requires valid `start`, `end` and `callback` arguments')\n }\n\n if (typeof callback != 'function')\n throw new Error('approximateSize() requires a callback argument')\n\n if (!this._isBuffer(start))\n start = String(start)\n\n if (!this._isBuffer(end))\n end = String(end)\n\n if (typeof this._approximateSize == 'function')\n return this._approximateSize(start, end, callback)\n\n process.nextTick(function () {\n callback(null, 0)\n })\n}\n\nAbstractLevelDOWN.prototype._setupIteratorOptions = function (options) {\n var self = this\n\n options = xtend(options)\n\n ;[ 'start', 'end', 'gt', 'gte', 'lt', 'lte' ].forEach(function (o) {\n if (options[o] && self._isBuffer(options[o]) && options[o].length === 0)\n delete options[o]\n })\n\n options.reverse = !!options.reverse\n\n // fix `start` so it takes into account gt, gte, lt, lte as appropriate\n if (options.reverse && options.lt)\n options.start = options.lt\n if (options.reverse && options.lte)\n options.start = options.lte\n if (!options.reverse && options.gt)\n options.start = options.gt\n if (!options.reverse && options.gte)\n options.start = options.gte\n\n if ((options.reverse && options.lt && !options.lte)\n || (!options.reverse && options.gt && !options.gte))\n options.exclusiveStart = true // start should *not* include matching key\n\n return options\n}\n\nAbstractLevelDOWN.prototype.iterator = function (options) {\n if (typeof options != 'object')\n options = {}\n\n options = this._setupIteratorOptions(options)\n\n if (typeof this._iterator == 'function')\n return this._iterator(options)\n\n return new AbstractIterator(this)\n}\n\nAbstractLevelDOWN.prototype._chainedBatch = function () {\n return new AbstractChainedBatch(this)\n}\n\nAbstractLevelDOWN.prototype._isBuffer = function (obj) {\n return Buffer.isBuffer(obj)\n}\n\nAbstractLevelDOWN.prototype._checkKeyValue = function (obj, type) {\n\n if (obj === null || obj === undefined)\n return new Error(type + ' cannot be `null` or `undefined`')\n\n if (this._isBuffer(obj)) {\n if (obj.length === 0)\n return new Error(type + ' cannot be an empty Buffer')\n } else if (String(obj) === '')\n return new Error(type + ' cannot be an empty String')\n}\n\nmodule.exports.AbstractLevelDOWN = AbstractLevelDOWN\nmodule.exports.AbstractIterator = AbstractIterator\nmodule.exports.AbstractChainedBatch = AbstractChainedBatch\n","module.exports = extend\n\nfunction extend() {\n var target = {}\n\n for (var i = 0; i < arguments.length; i++) {\n var source = arguments[i]\n\n for (var key in source) {\n if (source.hasOwnProperty(key)) {\n target[key] = source[key]\n }\n }\n }\n\n return target\n}\n","(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine(\"AMI\", [], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"AMI\"] = factory();\n\telse\n\t\troot[\"AMI\"] = factory();\n})(window, function() {\nreturn "," \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 0);\n","// jshint ignore: start\n\n/* -*- Mode: Java; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- /\n /* vim: set shiftwidth=2 tabstop=2 autoindent cindent expandtab: */\n/*\n Copyright 2011 notmasteryet\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n */\n\n// - The JPEG specification can be found in the ITU CCITT Recommendation T.81\n// (www.w3.org/Graphics/JPEG/itu-t81.pdf)\n// - The JFIF specification can be found in the JPEG File Interchange Format\n// (www.w3.org/Graphics/JPEG/jfif3.pdf)\n// - The Adobe Application-Specific JPEG markers in the Supporting the DCT Filters\n// in PostScript Level 2, Technical Note #5116\n// (partners.adobe.com/public/developer/en/ps/sdk/5116.DCT_Filter.pdf)\n\nvar ColorSpace = {Unkown: 0, Grayscale: 1, AdobeRGB: 2, RGB: 3, CYMK: 4};\nvar JpegImage = (function jpegImage() {\n \"use strict\";\n var dctZigZag = new Int32Array([\n 0,\n 1, 8,\n 16, 9, 2,\n 3, 10, 17, 24,\n 32, 25, 18, 11, 4,\n 5, 12, 19, 26, 33, 40,\n 48, 41, 34, 27, 20, 13, 6,\n 7, 14, 21, 28, 35, 42, 49, 56,\n 57, 50, 43, 36, 29, 22, 15,\n 23, 30, 37, 44, 51, 58,\n 59, 52, 45, 38, 31,\n 39, 46, 53, 60,\n 61, 54, 47,\n 55, 62,\n 63\n ]);\n\n var dctCos1 = 4017; // cos(pi/16)\n var dctSin1 = 799; // sin(pi/16)\n var dctCos3 = 3406; // cos(3*pi/16)\n var dctSin3 = 2276; // sin(3*pi/16)\n var dctCos6 = 1567; // cos(6*pi/16)\n var dctSin6 = 3784; // sin(6*pi/16)\n var dctSqrt2 = 5793; // sqrt(2)\n var dctSqrt1d2 = 2896; // sqrt(2) / 2\n\n function constructor() {\n }\n\n function buildHuffmanTable(codeLengths, values) {\n var k = 0, code = [], i, j, length = 16;\n while (length > 0 && !codeLengths[length - 1])\n length--;\n code.push({children: [], index: 0});\n var p = code[0], q;\n for (i = 0; i < length; i++) {\n for (j = 0; j < codeLengths[i]; j++) {\n p = code.pop();\n p.children[p.index] = values[k];\n while (p.index > 0) {\n p = code.pop();\n }\n p.index++;\n code.push(p);\n while (code.length <= i) {\n code.push(q = {children: [], index: 0});\n p.children[p.index] = q.children;\n p = q;\n }\n k++;\n }\n if (i + 1 < length) {\n // p here points to last code\n code.push(q = {children: [], index: 0});\n p.children[p.index] = q.children;\n p = q;\n }\n }\n return code[0].children;\n }\n\n function getBlockBufferOffset(component, row, col) {\n return 64 * ((component.blocksPerLine + 1) * row + col);\n }\n\n function decodeScan(data, offset,\n frame, components, resetInterval,\n spectralStart, spectralEnd,\n successivePrev, successive) {\n var precision = frame.precision;\n var samplesPerLine = frame.samplesPerLine;\n var scanLines = frame.scanLines;\n var mcusPerLine = frame.mcusPerLine;\n var progressive = frame.progressive;\n var maxH = frame.maxH, maxV = frame.maxV;\n\n var startOffset = offset, bitsData = 0, bitsCount = 0;\n\n function readBit() {\n if (bitsCount > 0) {\n bitsCount--;\n return (bitsData >> bitsCount) & 1;\n }\n bitsData = data[offset++];\n if (bitsData == 0xFF) {\n var nextByte = data[offset++];\n if (nextByte) {\n throw \"unexpected marker: \" + ((bitsData << 8) | nextByte).toString(16);\n }\n // unstuff 0\n }\n bitsCount = 7;\n return bitsData >>> 7;\n }\n\n function decodeHuffman(tree) {\n var node = tree;\n var bit;\n while ((bit = readBit()) !== null) {\n node = node[bit];\n if (typeof node === 'number')\n return node;\n if (typeof node !== 'object')\n throw \"invalid huffman sequence\";\n }\n return null;\n }\n\n function receive(length) {\n var n = 0;\n while (length > 0) {\n var bit = readBit();\n if (bit === null)\n return;\n n = (n << 1) | bit;\n length--;\n }\n return n;\n }\n\n function receiveAndExtend(length) {\n var n = receive(length);\n if (n >= 1 << (length - 1))\n return n;\n return n + (-1 << length) + 1;\n }\n\n function decodeBaseline(component, offset) {\n var t = decodeHuffman(component.huffmanTableDC);\n var diff = t === 0 ? 0 : receiveAndExtend(t);\n component.blockData[offset] = (component.pred += diff);\n var k = 1;\n while (k < 64) {\n var rs = decodeHuffman(component.huffmanTableAC);\n var s = rs & 15, r = rs >> 4;\n if (s === 0) {\n if (r < 15)\n break;\n k += 16;\n continue;\n }\n k += r;\n var z = dctZigZag[k];\n component.blockData[offset + z] = receiveAndExtend(s);\n k++;\n }\n }\n\n function decodeDCFirst(component, offset) {\n var t = decodeHuffman(component.huffmanTableDC);\n var diff = t === 0 ? 0 : (receiveAndExtend(t) << successive);\n component.blockData[offset] = (component.pred += diff);\n }\n\n function decodeDCSuccessive(component, offset) {\n component.blockData[offset] |= readBit() << successive;\n }\n\n var eobrun = 0;\n function decodeACFirst(component, offset) {\n if (eobrun > 0) {\n eobrun--;\n return;\n }\n var k = spectralStart, e = spectralEnd;\n while (k <= e) {\n var rs = decodeHuffman(component.huffmanTableAC);\n var s = rs & 15, r = rs >> 4;\n if (s === 0) {\n if (r < 15) {\n eobrun = receive(r) + (1 << r) - 1;\n break;\n }\n k += 16;\n continue;\n }\n k += r;\n var z = dctZigZag[k];\n component.blockData[offset + z] = receiveAndExtend(s) * (1 << successive);\n k++;\n }\n }\n\n var successiveACState = 0, successiveACNextValue;\n function decodeACSuccessive(component, offset) {\n var k = spectralStart, e = spectralEnd, r = 0;\n while (k <= e) {\n var z = dctZigZag[k];\n switch (successiveACState) {\n case 0: // initial state\n var rs = decodeHuffman(component.huffmanTableAC);\n var s = rs & 15;\n r = rs >> 4;\n if (s === 0) {\n if (r < 15) {\n eobrun = receive(r) + (1 << r);\n successiveACState = 4;\n } else {\n r = 16;\n successiveACState = 1;\n }\n } else {\n if (s !== 1)\n throw \"invalid ACn encoding\";\n successiveACNextValue = receiveAndExtend(s);\n successiveACState = r ? 2 : 3;\n }\n continue;\n case 1: // skipping r zero items\n case 2:\n if (component.blockData[offset + z]) {\n component.blockData[offset + z] += (readBit() << successive);\n } else {\n r--;\n if (r === 0)\n successiveACState = successiveACState == 2 ? 3 : 0;\n }\n break;\n case 3: // set value for a zero item\n if (component.blockData[offset + z]) {\n component.blockData[offset + z] += (readBit() << successive);\n } else {\n component.blockData[offset + z] = successiveACNextValue << successive;\n successiveACState = 0;\n }\n break;\n case 4: // eob\n if (component.blockData[offset + z]) {\n component.blockData[offset + z] += (readBit() << successive);\n }\n break;\n }\n k++;\n }\n if (successiveACState === 4) {\n eobrun--;\n if (eobrun === 0)\n successiveACState = 0;\n }\n }\n\n function decodeMcu(component, decode, mcu, row, col) {\n var mcuRow = (mcu / mcusPerLine) | 0;\n var mcuCol = mcu % mcusPerLine;\n var blockRow = mcuRow * component.v + row;\n var blockCol = mcuCol * component.h + col;\n var offset = getBlockBufferOffset(component, blockRow, blockCol);\n decode(component, offset);\n }\n\n function decodeBlock(component, decode, mcu) {\n var blockRow = (mcu / component.blocksPerLine) | 0;\n var blockCol = mcu % component.blocksPerLine;\n var offset = getBlockBufferOffset(component, blockRow, blockCol);\n decode(component, offset);\n }\n\n var componentsLength = components.length;\n var component, i, j, k, n;\n var decodeFn;\n if (progressive) {\n if (spectralStart === 0)\n decodeFn = successivePrev === 0 ? decodeDCFirst : decodeDCSuccessive;\n else\n decodeFn = successivePrev === 0 ? decodeACFirst : decodeACSuccessive;\n } else {\n decodeFn = decodeBaseline;\n }\n\n var mcu = 0, marker;\n var mcuExpected;\n if (componentsLength == 1) {\n mcuExpected = components[0].blocksPerLine * components[0].blocksPerColumn;\n } else {\n mcuExpected = mcusPerLine * frame.mcusPerColumn;\n }\n if (!resetInterval) {\n resetInterval = mcuExpected;\n }\n\n var h, v;\n while (mcu < mcuExpected) {\n // reset interval stuff\n for (i = 0; i < componentsLength; i++) {\n components[i].pred = 0;\n }\n eobrun = 0;\n\n if (componentsLength == 1) {\n component = components[0];\n for (n = 0; n < resetInterval; n++) {\n decodeBlock(component, decodeFn, mcu);\n mcu++;\n }\n } else {\n for (n = 0; n < resetInterval; n++) {\n for (i = 0; i < componentsLength; i++) {\n component = components[i];\n h = component.h;\n v = component.v;\n for (j = 0; j < v; j++) {\n for (k = 0; k < h; k++) {\n decodeMcu(component, decodeFn, mcu, j, k);\n }\n }\n }\n mcu++;\n }\n }\n\n // find marker\n bitsCount = 0;\n marker = (data[offset] << 8) | data[offset + 1];\n if (marker <= 0xFF00) {\n throw \"marker was not found\";\n }\n\n if (marker >= 0xFFD0 && marker <= 0xFFD7) { // RSTx\n offset += 2;\n } else {\n break;\n }\n }\n\n return offset - startOffset;\n }\n\n // A port of poppler's IDCT method which in turn is taken from:\n // Christoph Loeffler, Adriaan Ligtenberg, George S. Moschytz,\n // \"Practical Fast 1-D DCT Algorithms with 11 Multiplications\",\n // IEEE Intl. Conf. on Acoustics, Speech & Signal Processing, 1989,\n // 988-991.\n function quantizeAndInverse(component, blockBufferOffset, p) {\n var qt = component.quantizationTable;\n var v0, v1, v2, v3, v4, v5, v6, v7, t;\n var i;\n\n // dequant\n for (i = 0; i < 64; i++) {\n p[i] = component.blockData[blockBufferOffset + i] * qt[i];\n }\n\n // inverse DCT on rows\n for (i = 0; i < 8; ++i) {\n var row = 8 * i;\n\n // check for all-zero AC coefficients\n if (p[1 + row] === 0 && p[2 + row] === 0 && p[3 + row] === 0 &&\n p[4 + row] === 0 && p[5 + row] === 0 && p[6 + row] === 0 &&\n p[7 + row] === 0) {\n t = (dctSqrt2 * p[0 + row] + 512) >> 10;\n p[0 + row] = t;\n p[1 + row] = t;\n p[2 + row] = t;\n p[3 + row] = t;\n p[4 + row] = t;\n p[5 + row] = t;\n p[6 + row] = t;\n p[7 + row] = t;\n continue;\n }\n\n // stage 4\n v0 = (dctSqrt2 * p[0 + row] + 128) >> 8;\n v1 = (dctSqrt2 * p[4 + row] + 128) >> 8;\n v2 = p[2 + row];\n v3 = p[6 + row];\n v4 = (dctSqrt1d2 * (p[1 + row] - p[7 + row]) + 128) >> 8;\n v7 = (dctSqrt1d2 * (p[1 + row] + p[7 + row]) + 128) >> 8;\n v5 = p[3 + row] << 4;\n v6 = p[5 + row] << 4;\n\n // stage 3\n t = (v0 - v1 + 1) >> 1;\n v0 = (v0 + v1 + 1) >> 1;\n v1 = t;\n t = (v2 * dctSin6 + v3 * dctCos6 + 128) >> 8;\n v2 = (v2 * dctCos6 - v3 * dctSin6 + 128) >> 8;\n v3 = t;\n t = (v4 - v6 + 1) >> 1;\n v4 = (v4 + v6 + 1) >> 1;\n v6 = t;\n t = (v7 + v5 + 1) >> 1;\n v5 = (v7 - v5 + 1) >> 1;\n v7 = t;\n\n // stage 2\n t = (v0 - v3 + 1) >> 1;\n v0 = (v0 + v3 + 1) >> 1;\n v3 = t;\n t = (v1 - v2 + 1) >> 1;\n v1 = (v1 + v2 + 1) >> 1;\n v2 = t;\n t = (v4 * dctSin3 + v7 * dctCos3 + 2048) >> 12;\n v4 = (v4 * dctCos3 - v7 * dctSin3 + 2048) >> 12;\n v7 = t;\n t = (v5 * dctSin1 + v6 * dctCos1 + 2048) >> 12;\n v5 = (v5 * dctCos1 - v6 * dctSin1 + 2048) >> 12;\n v6 = t;\n\n // stage 1\n p[0 + row] = v0 + v7;\n p[7 + row] = v0 - v7;\n p[1 + row] = v1 + v6;\n p[6 + row] = v1 - v6;\n p[2 + row] = v2 + v5;\n p[5 + row] = v2 - v5;\n p[3 + row] = v3 + v4;\n p[4 + row] = v3 - v4;\n }\n\n // inverse DCT on columns\n for (i = 0; i < 8; ++i) {\n var col = i;\n\n // check for all-zero AC coefficients\n if (p[1 * 8 + col] === 0 && p[2 * 8 + col] === 0 && p[3 * 8 + col] === 0 &&\n p[4 * 8 + col] === 0 && p[5 * 8 + col] === 0 && p[6 * 8 + col] === 0 &&\n p[7 * 8 + col] === 0) {\n t = (dctSqrt2 * p[i + 0] + 8192) >> 14;\n p[0 * 8 + col] = t;\n p[1 * 8 + col] = t;\n p[2 * 8 + col] = t;\n p[3 * 8 + col] = t;\n p[4 * 8 + col] = t;\n p[5 * 8 + col] = t;\n p[6 * 8 + col] = t;\n p[7 * 8 + col] = t;\n continue;\n }\n\n // stage 4\n v0 = (dctSqrt2 * p[0 * 8 + col] + 2048) >> 12;\n v1 = (dctSqrt2 * p[4 * 8 + col] + 2048) >> 12;\n v2 = p[2 * 8 + col];\n v3 = p[6 * 8 + col];\n v4 = (dctSqrt1d2 * (p[1 * 8 + col] - p[7 * 8 + col]) + 2048) >> 12;\n v7 = (dctSqrt1d2 * (p[1 * 8 + col] + p[7 * 8 + col]) + 2048) >> 12;\n v5 = p[3 * 8 + col];\n v6 = p[5 * 8 + col];\n\n // stage 3\n t = (v0 - v1 + 1) >> 1;\n v0 = (v0 + v1 + 1) >> 1;\n v1 = t;\n t = (v2 * dctSin6 + v3 * dctCos6 + 2048) >> 12;\n v2 = (v2 * dctCos6 - v3 * dctSin6 + 2048) >> 12;\n v3 = t;\n t = (v4 - v6 + 1) >> 1;\n v4 = (v4 + v6 + 1) >> 1;\n v6 = t;\n t = (v7 + v5 + 1) >> 1;\n v5 = (v7 - v5 + 1) >> 1;\n v7 = t;\n\n // stage 2\n t = (v0 - v3 + 1) >> 1;\n v0 = (v0 + v3 + 1) >> 1;\n v3 = t;\n t = (v1 - v2 + 1) >> 1;\n v1 = (v1 + v2 + 1) >> 1;\n v2 = t;\n t = (v4 * dctSin3 + v7 * dctCos3 + 2048) >> 12;\n v4 = (v4 * dctCos3 - v7 * dctSin3 + 2048) >> 12;\n v7 = t;\n t = (v5 * dctSin1 + v6 * dctCos1 + 2048) >> 12;\n v5 = (v5 * dctCos1 - v6 * dctSin1 + 2048) >> 12;\n v6 = t;\n\n // stage 1\n p[0 * 8 + col] = v0 + v7;\n p[7 * 8 + col] = v0 - v7;\n p[1 * 8 + col] = v1 + v6;\n p[6 * 8 + col] = v1 - v6;\n p[2 * 8 + col] = v2 + v5;\n p[5 * 8 + col] = v2 - v5;\n p[3 * 8 + col] = v3 + v4;\n p[4 * 8 + col] = v3 - v4;\n }\n\n // convert to 8-bit integers\n for (i = 0; i < 64; ++i) {\n var index = blockBufferOffset + i;\n var q = p[i];\n q = (q <= -2056 / component.bitConversion) ? 0 :\n (q >= 2024 / component.bitConversion) ? 255 / component.bitConversion :\n (q + 2056 / component.bitConversion) >> 4;\n component.blockData[index] = q;\n }\n }\n\n function buildComponentData(frame, component) {\n var lines = [];\n var blocksPerLine = component.blocksPerLine;\n var blocksPerColumn = component.blocksPerColumn;\n var samplesPerLine = blocksPerLine << 3;\n var computationBuffer = new Int32Array(64);\n\n var i, j, ll = 0;\n for (var blockRow = 0; blockRow < blocksPerColumn; blockRow++) {\n for (var blockCol = 0; blockCol < blocksPerLine; blockCol++) {\n var offset = getBlockBufferOffset(component, blockRow, blockCol);\n quantizeAndInverse(component, offset, computationBuffer);\n }\n }\n return component.blockData;\n }\n\n function clampToUint8(a) {\n return a <= 0 ? 0 : a >= 255 ? 255 : a | 0;\n }\n\n constructor.prototype = {\n load: function load(path) {\n var handleData = (function (data) {\n this.parse(data);\n if (this.onload)\n this.onload();\n }).bind(this);\n\n if (path.indexOf(\"data:\") > -1) {\n var offset = path.indexOf(\"base64,\") + 7;\n var data = atob(path.substring(offset));\n var arr = new Uint8Array(data.length);\n for (var i = data.length - 1; i >= 0; i--) {\n arr[i] = data.charCodeAt(i);\n }\n handleData(data);\n } else {\n var xhr = new XMLHttpRequest();\n xhr.open(\"GET\", path, true);\n xhr.responseType = \"arraybuffer\";\n xhr.onload = (function () {\n // TODO catch parse error\n var data = new Uint8Array(xhr.response);\n handleData(data);\n }).bind(this);\n xhr.send(null);\n }\n },\n parse: function parse(data) {\n\n function readUint16() {\n var value = (data[offset] << 8) | data[offset + 1];\n offset += 2;\n return value;\n }\n\n function readDataBlock() {\n var length = readUint16();\n var array = data.subarray(offset, offset + length - 2);\n offset += array.length;\n return array;\n }\n\n function prepareComponents(frame) {\n var mcusPerLine = Math.ceil(frame.samplesPerLine / 8 / frame.maxH);\n var mcusPerColumn = Math.ceil(frame.scanLines / 8 / frame.maxV);\n for (var i = 0; i < frame.components.length; i++) {\n component = frame.components[i];\n var blocksPerLine = Math.ceil(Math.ceil(frame.samplesPerLine / 8) * component.h / frame.maxH);\n var blocksPerColumn = Math.ceil(Math.ceil(frame.scanLines / 8) * component.v / frame.maxV);\n var blocksPerLineForMcu = mcusPerLine * component.h;\n var blocksPerColumnForMcu = mcusPerColumn * component.v;\n\n var blocksBufferSize = 64 * blocksPerColumnForMcu * (blocksPerLineForMcu + 1);\n component.blockData = new Int16Array(blocksBufferSize);\n component.blocksPerLine = blocksPerLine;\n component.blocksPerColumn = blocksPerColumn;\n }\n frame.mcusPerLine = mcusPerLine;\n frame.mcusPerColumn = mcusPerColumn;\n }\n\n var offset = 0, length = data.length;\n var jfif = null;\n var adobe = null;\n var pixels = null;\n var frame, resetInterval;\n var quantizationTables = [];\n var huffmanTablesAC = [], huffmanTablesDC = [];\n var fileMarker = readUint16();\n if (fileMarker != 0xFFD8) { // SOI (Start of Image)\n throw \"SOI not found\";\n }\n\n fileMarker = readUint16();\n while (fileMarker != 0xFFD9) { // EOI (End of image)\n var i, j, l;\n switch (fileMarker) {\n case 0xFFE0: // APP0 (Application Specific)\n case 0xFFE1: // APP1\n case 0xFFE2: // APP2\n case 0xFFE3: // APP3\n case 0xFFE4: // APP4\n case 0xFFE5: // APP5\n case 0xFFE6: // APP6\n case 0xFFE7: // APP7\n case 0xFFE8: // APP8\n case 0xFFE9: // APP9\n case 0xFFEA: // APP10\n case 0xFFEB: // APP11\n case 0xFFEC: // APP12\n case 0xFFED: // APP13\n case 0xFFEE: // APP14\n case 0xFFEF: // APP15\n case 0xFFFE: // COM (Comment)\n var appData = readDataBlock();\n\n if (fileMarker === 0xFFE0) {\n if (appData[0] === 0x4A && appData[1] === 0x46 && appData[2] === 0x49 &&\n appData[3] === 0x46 && appData[4] === 0) { // 'JFIF\\x00'\n jfif = {\n version: {major: appData[5], minor: appData[6]},\n densityUnits: appData[7],\n xDensity: (appData[8] << 8) | appData[9],\n yDensity: (appData[10] << 8) | appData[11],\n thumbWidth: appData[12],\n thumbHeight: appData[13],\n thumbData: appData.subarray(14, 14 + 3 * appData[12] * appData[13])\n };\n }\n }\n // TODO APP1 - Exif\n if (fileMarker === 0xFFEE) {\n if (appData[0] === 0x41 && appData[1] === 0x64 && appData[2] === 0x6F &&\n appData[3] === 0x62 && appData[4] === 0x65 && appData[5] === 0) { // 'Adobe\\x00'\n adobe = {\n version: appData[6],\n flags0: (appData[7] << 8) | appData[8],\n flags1: (appData[9] << 8) | appData[10],\n transformCode: appData[11]\n };\n }\n }\n break;\n\n case 0xFFDB: // DQT (Define Quantization Tables)\n var quantizationTablesLength = readUint16();\n var quantizationTablesEnd = quantizationTablesLength + offset - 2;\n while (offset < quantizationTablesEnd) {\n var quantizationTableSpec = data[offset++];\n var tableData = new Int32Array(64);\n if ((quantizationTableSpec >> 4) === 0) { // 8 bit values\n for (j = 0; j < 64; j++) {\n var z = dctZigZag[j];\n tableData[z] = data[offset++];\n }\n } else if ((quantizationTableSpec >> 4) === 1) { //16 bit\n for (j = 0; j < 64; j++) {\n var zz = dctZigZag[j];\n tableData[zz] = readUint16();\n }\n } else\n throw \"DQT: invalid table spec\";\n quantizationTables[quantizationTableSpec & 15] = tableData;\n }\n break;\n\n case 0xFFC0: // SOF0 (Start of Frame, Baseline DCT)\n case 0xFFC1: // SOF1 (Start of Frame, Extended DCT)\n case 0xFFC2: // SOF2 (Start of Frame, Progressive DCT)\n if (frame) {\n throw \"Only single frame JPEGs supported\";\n }\n readUint16(); // skip data length\n frame = {};\n frame.extended = (fileMarker === 0xFFC1);\n frame.progressive = (fileMarker === 0xFFC2);\n frame.precision = data[offset++];\n frame.scanLines = readUint16();\n frame.samplesPerLine = readUint16();\n frame.components = [];\n frame.componentIds = {};\n var componentsCount = data[offset++], componentId;\n var maxH = 0, maxV = 0;\n for (i = 0; i < componentsCount; i++) {\n componentId = data[offset];\n var h = data[offset + 1] >> 4;\n var v = data[offset + 1] & 15;\n if (maxH < h)\n maxH = h;\n if (maxV < v)\n maxV = v;\n var qId = data[offset + 2];\n l = frame.components.push({\n h: h,\n v: v,\n quantizationTable: quantizationTables[qId],\n quantizationTableId: qId,\n bitConversion: 255 / ((1 << frame.precision) - 1)\n });\n frame.componentIds[componentId] = l - 1;\n offset += 3;\n }\n frame.maxH = maxH;\n frame.maxV = maxV;\n prepareComponents(frame);\n break;\n\n case 0xFFC4: // DHT (Define Huffman Tables)\n var huffmanLength = readUint16();\n for (i = 2; i < huffmanLength; ) {\n var huffmanTableSpec = data[offset++];\n var codeLengths = new Uint8Array(16);\n var codeLengthSum = 0;\n for (j = 0; j < 16; j++, offset++)\n codeLengthSum += (codeLengths[j] = data[offset]);\n var huffmanValues = new Uint8Array(codeLengthSum);\n for (j = 0; j < codeLengthSum; j++, offset++)\n huffmanValues[j] = data[offset];\n i += 17 + codeLengthSum;\n\n ((huffmanTableSpec >> 4) === 0 ?\n huffmanTablesDC : huffmanTablesAC)[huffmanTableSpec & 15] =\n buildHuffmanTable(codeLengths, huffmanValues);\n }\n break;\n\n case 0xFFDD: // DRI (Define Restart Interval)\n readUint16(); // skip data length\n resetInterval = readUint16();\n break;\n\n case 0xFFDA: // SOS (Start of Scan)\n var scanLength = readUint16();\n var selectorsCount = data[offset++];\n var components = [], component;\n for (i = 0; i < selectorsCount; i++) {\n var componentIndex = frame.componentIds[data[offset++]];\n component = frame.components[componentIndex];\n var tableSpec = data[offset++];\n component.huffmanTableDC = huffmanTablesDC[tableSpec >> 4];\n component.huffmanTableAC = huffmanTablesAC[tableSpec & 15];\n components.push(component);\n }\n var spectralStart = data[offset++];\n var spectralEnd = data[offset++];\n var successiveApproximation = data[offset++];\n var processed = decodeScan(data, offset,\n frame, components, resetInterval,\n spectralStart, spectralEnd,\n successiveApproximation >> 4, successiveApproximation & 15);\n offset += processed;\n break;\n default:\n if (data[offset - 3] == 0xFF &&\n data[offset - 2] >= 0xC0 && data[offset - 2] <= 0xFE) {\n // could be incorrect encoding -- last 0xFF byte of the previous\n // block was eaten by the encoder\n offset -= 3;\n break;\n }\n throw \"unknown JPEG marker \" + fileMarker.toString(16);\n }\n fileMarker = readUint16();\n }\n\n this.width = frame.samplesPerLine;\n this.height = frame.scanLines;\n this.jfif = jfif;\n this.adobe = adobe;\n this.components = [];\n switch (frame.components.length)\n {\n case 1:\n this.colorspace = ColorSpace.Grayscale;\n break;\n case 3:\n if (this.adobe)\n this.colorspace = ColorSpace.AdobeRGB;\n else\n this.colorspace = ColorSpace.RGB;\n break;\n case 4:\n this.colorspace = ColorSpace.CYMK;\n break;\n default:\n this.colorspace = ColorSpace.Unknown;\n }\n for (var i = 0; i < frame.components.length; i++) {\n var component = frame.components[i];\n if (!component.quantizationTable && component.quantizationTableId !== null)\n component.quantizationTable = quantizationTables[component.quantizationTableId];\n this.components.push({\n output: buildComponentData(frame, component),\n scaleX: component.h / frame.maxH,\n scaleY: component.v / frame.maxV,\n blocksPerLine: component.blocksPerLine,\n blocksPerColumn: component.blocksPerColumn,\n bitConversion: component.bitConversion\n });\n }\n },\n getData16: function getData16(width, height) {\n if (this.components.length !== 1)\n throw 'Unsupported color mode';\n var scaleX = this.width / width, scaleY = this.height / height;\n\n var component, componentScaleX, componentScaleY;\n var x, y, i;\n var offset = 0;\n var numComponents = this.components.length;\n var dataLength = width * height * numComponents;\n var data = new Uint16Array(dataLength);\n var componentLine;\n\n // lineData is reused for all components. Assume first component is\n // the biggest\n var lineData = new Uint16Array((this.components[0].blocksPerLine << 3) *\n this.components[0].blocksPerColumn * 8);\n\n // First construct image data ...\n for (i = 0; i < numComponents; i++) {\n component = this.components[i];\n var blocksPerLine = component.blocksPerLine;\n var blocksPerColumn = component.blocksPerColumn;\n var samplesPerLine = blocksPerLine << 3;\n\n var j, k, ll = 0;\n var lineOffset = 0;\n for (var blockRow = 0; blockRow < blocksPerColumn; blockRow++) {\n var scanLine = blockRow << 3;\n for (var blockCol = 0; blockCol < blocksPerLine; blockCol++) {\n var bufferOffset = getBlockBufferOffset(component, blockRow, blockCol);\n var offset = 0, sample = blockCol << 3;\n for (j = 0; j < 8; j++) {\n var lineOffset = (scanLine + j) * samplesPerLine;\n for (k = 0; k < 8; k++) {\n lineData[lineOffset + sample + k] =\n component.output[bufferOffset + offset++];\n }\n }\n }\n }\n\n componentScaleX = component.scaleX * scaleX;\n componentScaleY = component.scaleY * scaleY;\n offset = i;\n\n var cx, cy;\n var index;\n for (y = 0; y < height; y++) {\n for (x = 0; x < width; x++) {\n cy = 0 | (y * componentScaleY);\n cx = 0 | (x * componentScaleX);\n index = cy * samplesPerLine + cx;\n data[offset] = lineData[index];\n offset += numComponents;\n }\n }\n }\n return data;\n },\n getData: function getData(width, height) {\n var scaleX = this.width / width, scaleY = this.height / height;\n\n var component, componentScaleX, componentScaleY;\n var x, y, i;\n var offset = 0;\n var Y, Cb, Cr, K, C, M, Ye, R, G, B;\n var colorTransform;\n var numComponents = this.components.length;\n var dataLength = width * height * numComponents;\n var data = new Uint8Array(dataLength);\n var componentLine;\n\n // lineData is reused for all components. Assume first component is\n // the biggest\n var lineData = new Uint8Array((this.components[0].blocksPerLine << 3) *\n this.components[0].blocksPerColumn * 8);\n\n // First construct image data ...\n for (i = 0; i < numComponents; i++) {\n component = this.components[i];\n var blocksPerLine = component.blocksPerLine;\n var blocksPerColumn = component.blocksPerColumn;\n var samplesPerLine = blocksPerLine << 3;\n\n var j, k, ll = 0;\n var lineOffset = 0;\n for (var blockRow = 0; blockRow < blocksPerColumn; blockRow++) {\n var scanLine = blockRow << 3;\n for (var blockCol = 0; blockCol < blocksPerLine; blockCol++) {\n var bufferOffset = getBlockBufferOffset(component, blockRow, blockCol);\n var offset = 0, sample = blockCol << 3;\n for (j = 0; j < 8; j++) {\n var lineOffset = (scanLine + j) * samplesPerLine;\n for (k = 0; k < 8; k++) {\n lineData[lineOffset + sample + k] =\n component.output[bufferOffset + offset++] * component.bitConversion;\n }\n }\n }\n }\n\n componentScaleX = component.scaleX * scaleX;\n componentScaleY = component.scaleY * scaleY;\n offset = i;\n\n var cx, cy;\n var index;\n for (y = 0; y < height; y++) {\n for (x = 0; x < width; x++) {\n cy = 0 | (y * componentScaleY);\n cx = 0 | (x * componentScaleX);\n index = cy * samplesPerLine + cx;\n data[offset] = lineData[index];\n offset += numComponents;\n }\n }\n }\n\n // ... then transform colors, if necessary\n switch (numComponents) {\n case 1:\n case 2:\n break;\n // no color conversion for one or two compoenents\n\n case 3:\n // The default transform for three components is true\n colorTransform = true;\n // The adobe transform marker overrides any previous setting\n if (this.adobe && this.adobe.transformCode)\n colorTransform = true;\n else if (typeof this.colorTransform !== 'undefined')\n colorTransform = !!this.colorTransform;\n\n if (colorTransform) {\n for (i = 0; i < dataLength; i += numComponents) {\n Y = data[i ];\n Cb = data[i + 1];\n Cr = data[i + 2];\n\n R = clampToUint8(Y - 179.456 + 1.402 * Cr);\n G = clampToUint8(Y + 135.459 - 0.344 * Cb - 0.714 * Cr);\n B = clampToUint8(Y - 226.816 + 1.772 * Cb);\n\n data[i ] = R;\n data[i + 1] = G;\n data[i + 2] = B;\n }\n }\n break;\n case 4:\n if (!this.adobe)\n throw 'Unsupported color mode (4 components)';\n // The default transform for four components is false\n colorTransform = false;\n // The adobe transform marker overrides any previous setting\n if (this.adobe && this.adobe.transformCode)\n colorTransform = true;\n else if (typeof this.colorTransform !== 'undefined')\n colorTransform = !!this.colorTransform;\n\n if (colorTransform) {\n for (i = 0; i < dataLength; i += numComponents) {\n Y = data[i];\n Cb = data[i + 1];\n Cr = data[i + 2];\n\n C = clampToUint8(434.456 - Y - 1.402 * Cr);\n M = clampToUint8(119.541 - Y + 0.344 * Cb + 0.714 * Cr);\n Y = clampToUint8(481.816 - Y - 1.772 * Cb);\n\n data[i ] = C;\n data[i + 1] = M;\n data[i + 2] = Y;\n // K is unchanged\n }\n }\n break;\n default:\n throw 'Unsupported color mode';\n }\n return data;\n }\n };\n\n return constructor;\n})();\n\nvar moduleType = typeof module;\nif ((moduleType !== 'undefined') && module.exports) {\n module.exports = JpegImage;\n}","/*! image-JPEG2000 - v0.3.1 - 2015-08-26 | https://github.com/OHIF/image-JPEG2000 */\n/* -*- Mode: Java; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */\n/* vim: set shiftwidth=2 tabstop=2 autoindent cindent expandtab: */\n/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/* globals ArithmeticDecoder, globalScope, log2, readUint16, readUint32,\n info, warn */\n\n'use strict';\n\nvar JpxImage = (function JpxImageClosure() {\n // Table E.1\n var SubbandsGainLog2 = {\n 'LL': 0,\n 'LH': 1,\n 'HL': 1,\n 'HH': 2\n };\n function JpxImage() {\n this.failOnCorruptedImage = false;\n }\n JpxImage.prototype = {\n parse: function JpxImage_parse(data) {\n\n var head = readUint16(data, 0);\n // No box header, immediate start of codestream (SOC)\n if (head === 0xFF4F) {\n this.parseCodestream(data, 0, data.length);\n return;\n }\n\n var position = 0, length = data.length;\n while (position < length) {\n var headerSize = 8;\n var lbox = readUint32(data, position);\n var tbox = readUint32(data, position + 4);\n position += headerSize;\n if (lbox === 1) {\n // XLBox: read UInt64 according to spec.\n // JavaScript's int precision of 53 bit should be sufficient here.\n lbox = readUint32(data, position) * 4294967296 +\n readUint32(data, position + 4);\n position += 8;\n headerSize += 8;\n }\n if (lbox === 0) {\n lbox = length - position + headerSize;\n }\n if (lbox < headerSize) {\n throw new Error('JPX Error: Invalid box field size');\n }\n var dataLength = lbox - headerSize;\n var jumpDataLength = true;\n switch (tbox) {\n case 0x6A703268: // 'jp2h'\n jumpDataLength = false; // parsing child boxes\n break;\n case 0x636F6C72: // 'colr'\n // Colorspaces are not used, the CS from the PDF is used.\n var method = data[position];\n var precedence = data[position + 1];\n var approximation = data[position + 2];\n if (method === 1) {\n // enumerated colorspace\n var colorspace = readUint32(data, position + 3);\n switch (colorspace) {\n case 16: // this indicates a sRGB colorspace\n case 17: // this indicates a grayscale colorspace\n case 18: // this indicates a YUV colorspace\n break;\n default:\n warn('Unknown colorspace ' + colorspace);\n break;\n }\n } else if (method === 2) {\n info('ICC profile not supported');\n }\n break;\n case 0x6A703263: // 'jp2c'\n this.parseCodestream(data, position, position + dataLength);\n break;\n case 0x6A502020: // 'jP\\024\\024'\n if (0x0d0a870a !== readUint32(data, position)) {\n warn('Invalid JP2 signature');\n }\n break;\n // The following header types are valid but currently not used:\n case 0x6A501A1A: // 'jP\\032\\032'\n case 0x66747970: // 'ftyp'\n case 0x72726571: // 'rreq'\n case 0x72657320: // 'res '\n case 0x69686472: // 'ihdr'\n break;\n default:\n var headerType = String.fromCharCode((tbox >> 24) & 0xFF,\n (tbox >> 16) & 0xFF,\n (tbox >> 8) & 0xFF,\n tbox & 0xFF);\n warn('Unsupported header type ' + tbox + ' (' + headerType + ')');\n break;\n }\n if (jumpDataLength) {\n position += dataLength;\n }\n }\n },\n parseImageProperties: function JpxImage_parseImageProperties(stream) {\n var newByte = stream.getByte();\n while (newByte >= 0) {\n var oldByte = newByte;\n newByte = stream.getByte();\n var code = (oldByte << 8) | newByte;\n // Image and tile size (SIZ)\n if (code === 0xFF51) {\n stream.skip(4);\n var Xsiz = stream.getInt32() >>> 0; // Byte 4\n var Ysiz = stream.getInt32() >>> 0; // Byte 8\n var XOsiz = stream.getInt32() >>> 0; // Byte 12\n var YOsiz = stream.getInt32() >>> 0; // Byte 16\n stream.skip(16);\n var Csiz = stream.getUint16(); // Byte 36\n this.width = Xsiz - XOsiz;\n this.height = Ysiz - YOsiz;\n this.componentsCount = Csiz;\n // Results are always returned as Uint8Arrays\n this.bitsPerComponent = 8;\n return;\n }\n }\n throw new Error('JPX Error: No size marker found in JPX stream');\n },\n parseCodestream: function JpxImage_parseCodestream(data, start, end) {\n var context = {};\n try {\n var doNotRecover = false;\n var position = start;\n while (position + 1 < end) {\n var code = readUint16(data, position);\n position += 2;\n\n var length = 0, j, sqcd, spqcds, spqcdSize, scalarExpounded, tile;\n switch (code) {\n case 0xFF4F: // Start of codestream (SOC)\n context.mainHeader = true;\n break;\n case 0xFFD9: // End of codestream (EOC)\n break;\n case 0xFF51: // Image and tile size (SIZ)\n length = readUint16(data, position);\n var siz = {};\n siz.Xsiz = readUint32(data, position + 4);\n siz.Ysiz = readUint32(data, position + 8);\n siz.XOsiz = readUint32(data, position + 12);\n siz.YOsiz = readUint32(data, position + 16);\n siz.XTsiz = readUint32(data, position + 20);\n siz.YTsiz = readUint32(data, position + 24);\n siz.XTOsiz = readUint32(data, position + 28);\n siz.YTOsiz = readUint32(data, position + 32);\n var componentsCount = readUint16(data, position + 36);\n siz.Csiz = componentsCount;\n var components = [];\n j = position + 38;\n for (var i = 0; i < componentsCount; i++) {\n var component = {\n precision: (data[j] & 0x7F) + 1,\n isSigned: !!(data[j] & 0x80),\n XRsiz: data[j + 1],\n YRsiz: data[j + 1]\n };\n calculateComponentDimensions(component, siz);\n components.push(component);\n }\n context.SIZ = siz;\n context.components = components;\n calculateTileGrids(context, components);\n context.QCC = [];\n context.COC = [];\n break;\n case 0xFF5C: // Quantization default (QCD)\n length = readUint16(data, position);\n var qcd = {};\n j = position + 2;\n sqcd = data[j++];\n switch (sqcd & 0x1F) {\n case 0:\n spqcdSize = 8;\n scalarExpounded = true;\n break;\n case 1:\n spqcdSize = 16;\n scalarExpounded = false;\n break;\n case 2:\n spqcdSize = 16;\n scalarExpounded = true;\n break;\n default:\n throw new Error('JPX Error: Invalid SQcd value ' + sqcd);\n }\n qcd.noQuantization = (spqcdSize === 8);\n qcd.scalarExpounded = scalarExpounded;\n qcd.guardBits = sqcd >> 5;\n spqcds = [];\n while (j < length + position) {\n var spqcd = {};\n if (spqcdSize === 8) {\n spqcd.epsilon = data[j++] >> 3;\n spqcd.mu = 0;\n } else {\n spqcd.epsilon = data[j] >> 3;\n spqcd.mu = ((data[j] & 0x7) << 8) | data[j + 1];\n j += 2;\n }\n spqcds.push(spqcd);\n }\n qcd.SPqcds = spqcds;\n if (context.mainHeader) {\n context.QCD = qcd;\n } else {\n context.currentTile.QCD = qcd;\n context.currentTile.QCC = [];\n }\n break;\n case 0xFF5D: // Quantization component (QCC)\n length = readUint16(data, position);\n var qcc = {};\n j = position + 2;\n var cqcc;\n if (context.SIZ.Csiz < 257) {\n cqcc = data[j++];\n } else {\n cqcc = readUint16(data, j);\n j += 2;\n }\n sqcd = data[j++];\n switch (sqcd & 0x1F) {\n case 0:\n spqcdSize = 8;\n scalarExpounded = true;\n break;\n case 1:\n spqcdSize = 16;\n scalarExpounded = false;\n break;\n case 2:\n spqcdSize = 16;\n scalarExpounded = true;\n break;\n default:\n throw new Error('JPX Error: Invalid SQcd value ' + sqcd);\n }\n qcc.noQuantization = (spqcdSize === 8);\n qcc.scalarExpounded = scalarExpounded;\n qcc.guardBits = sqcd >> 5;\n spqcds = [];\n while (j < (length + position)) {\n spqcd = {};\n if (spqcdSize === 8) {\n spqcd.epsilon = data[j++] >> 3;\n spqcd.mu = 0;\n } else {\n spqcd.epsilon = data[j] >> 3;\n spqcd.mu = ((data[j] & 0x7) << 8) | data[j + 1];\n j += 2;\n }\n spqcds.push(spqcd);\n }\n qcc.SPqcds = spqcds;\n if (context.mainHeader) {\n context.QCC[cqcc] = qcc;\n } else {\n context.currentTile.QCC[cqcc] = qcc;\n }\n break;\n case 0xFF52: // Coding style default (COD)\n length = readUint16(data, position);\n var cod = {};\n j = position + 2;\n var scod = data[j++];\n cod.entropyCoderWithCustomPrecincts = !!(scod & 1);\n cod.sopMarkerUsed = !!(scod & 2);\n cod.ephMarkerUsed = !!(scod & 4);\n cod.progressionOrder = data[j++];\n cod.layersCount = readUint16(data, j);\n j += 2;\n cod.multipleComponentTransform = data[j++];\n\n cod.decompositionLevelsCount = data[j++];\n cod.xcb = (data[j++] & 0xF) + 2;\n cod.ycb = (data[j++] & 0xF) + 2;\n var blockStyle = data[j++];\n cod.selectiveArithmeticCodingBypass = !!(blockStyle & 1);\n cod.resetContextProbabilities = !!(blockStyle & 2);\n cod.terminationOnEachCodingPass = !!(blockStyle & 4);\n cod.verticalyStripe = !!(blockStyle & 8);\n cod.predictableTermination = !!(blockStyle & 16);\n cod.segmentationSymbolUsed = !!(blockStyle & 32);\n cod.reversibleTransformation = data[j++];\n if (cod.entropyCoderWithCustomPrecincts) {\n var precinctsSizes = [];\n while (j < length + position) {\n var precinctsSize = data[j++];\n precinctsSizes.push({\n PPx: precinctsSize & 0xF,\n PPy: precinctsSize >> 4\n });\n }\n cod.precinctsSizes = precinctsSizes;\n }\n var unsupported = [];\n if (cod.selectiveArithmeticCodingBypass) {\n unsupported.push('selectiveArithmeticCodingBypass');\n }\n if (cod.resetContextProbabilities) {\n unsupported.push('resetContextProbabilities');\n }\n if (cod.terminationOnEachCodingPass) {\n unsupported.push('terminationOnEachCodingPass');\n }\n if (cod.verticalyStripe) {\n unsupported.push('verticalyStripe');\n }\n if (cod.predictableTermination) {\n unsupported.push('predictableTermination');\n }\n if (unsupported.length > 0) {\n doNotRecover = true;\n throw new Error('JPX Error: Unsupported COD options (' +\n unsupported.join(', ') + ')');\n }\n if (context.mainHeader) {\n context.COD = cod;\n } else {\n context.currentTile.COD = cod;\n context.currentTile.COC = [];\n }\n break;\n case 0xFF90: // Start of tile-part (SOT)\n length = readUint16(data, position);\n tile = {};\n tile.index = readUint16(data, position + 2);\n tile.length = readUint32(data, position + 4);\n tile.dataEnd = tile.length + position - 2;\n tile.partIndex = data[position + 8];\n tile.partsCount = data[position + 9];\n\n context.mainHeader = false;\n if (tile.partIndex === 0) {\n // reset component specific settings\n tile.COD = context.COD;\n tile.COC = context.COC.slice(0); // clone of the global COC\n tile.QCD = context.QCD;\n tile.QCC = context.QCC.slice(0); // clone of the global COC\n }\n context.currentTile = tile;\n break;\n case 0xFF93: // Start of data (SOD)\n tile = context.currentTile;\n if (tile.partIndex === 0) {\n initializeTile(context, tile.index);\n buildPackets(context);\n }\n\n // moving to the end of the data\n length = tile.dataEnd - position;\n parseTilePackets(context, data, position, length);\n break;\n case 0xFF55: // Tile-part lengths, main header (TLM)\n case 0xFF57: // Packet length, main header (PLM)\n case 0xFF58: // Packet length, tile-part header (PLT)\n case 0xFF64: // Comment (COM)\n length = readUint16(data, position);\n // skipping content\n break;\n case 0xFF53: // Coding style component (COC)\n throw new Error('JPX Error: Codestream code 0xFF53 (COC) is ' +\n 'not implemented');\n default:\n throw new Error('JPX Error: Unknown codestream code: ' +\n code.toString(16));\n }\n position += length;\n }\n } catch (e) {\n if (doNotRecover || this.failOnCorruptedImage) {\n throw e;\n } else {\n warn('Trying to recover from ' + e.message);\n }\n }\n this.tiles = transformComponents(context);\n this.width = context.SIZ.Xsiz - context.SIZ.XOsiz;\n this.height = context.SIZ.Ysiz - context.SIZ.YOsiz;\n this.componentsCount = context.SIZ.Csiz;\n }\n };\n function calculateComponentDimensions(component, siz) {\n // Section B.2 Component mapping\n component.x0 = Math.ceil(siz.XOsiz / component.XRsiz);\n component.x1 = Math.ceil(siz.Xsiz / component.XRsiz);\n component.y0 = Math.ceil(siz.YOsiz / component.YRsiz);\n component.y1 = Math.ceil(siz.Ysiz / component.YRsiz);\n component.width = component.x1 - component.x0;\n component.height = component.y1 - component.y0;\n }\n function calculateTileGrids(context, components) {\n var siz = context.SIZ;\n // Section B.3 Division into tile and tile-components\n var tile, tiles = [];\n var numXtiles = Math.ceil((siz.Xsiz - siz.XTOsiz) / siz.XTsiz);\n var numYtiles = Math.ceil((siz.Ysiz - siz.YTOsiz) / siz.YTsiz);\n for (var q = 0; q < numYtiles; q++) {\n for (var p = 0; p < numXtiles; p++) {\n tile = {};\n tile.tx0 = Math.max(siz.XTOsiz + p * siz.XTsiz, siz.XOsiz);\n tile.ty0 = Math.max(siz.YTOsiz + q * siz.YTsiz, siz.YOsiz);\n tile.tx1 = Math.min(siz.XTOsiz + (p + 1) * siz.XTsiz, siz.Xsiz);\n tile.ty1 = Math.min(siz.YTOsiz + (q + 1) * siz.YTsiz, siz.Ysiz);\n tile.width = tile.tx1 - tile.tx0;\n tile.height = tile.ty1 - tile.ty0;\n tile.components = [];\n tiles.push(tile);\n }\n }\n context.tiles = tiles;\n\n var componentsCount = siz.Csiz;\n for (var i = 0, ii = componentsCount; i < ii; i++) {\n var component = components[i];\n for (var j = 0, jj = tiles.length; j < jj; j++) {\n var tileComponent = {};\n tile = tiles[j];\n tileComponent.tcx0 = Math.ceil(tile.tx0 / component.XRsiz);\n tileComponent.tcy0 = Math.ceil(tile.ty0 / component.YRsiz);\n tileComponent.tcx1 = Math.ceil(tile.tx1 / component.XRsiz);\n tileComponent.tcy1 = Math.ceil(tile.ty1 / component.YRsiz);\n tileComponent.width = tileComponent.tcx1 - tileComponent.tcx0;\n tileComponent.height = tileComponent.tcy1 - tileComponent.tcy0;\n tile.components[i] = tileComponent;\n }\n }\n }\n function getBlocksDimensions(context, component, r) {\n var codOrCoc = component.codingStyleParameters;\n var result = {};\n if (!codOrCoc.entropyCoderWithCustomPrecincts) {\n result.PPx = 15;\n result.PPy = 15;\n } else {\n result.PPx = codOrCoc.precinctsSizes[r].PPx;\n result.PPy = codOrCoc.precinctsSizes[r].PPy;\n }\n // calculate codeblock size as described in section B.7\n result.xcb_ = (r > 0 ? Math.min(codOrCoc.xcb, result.PPx - 1) :\n Math.min(codOrCoc.xcb, result.PPx));\n result.ycb_ = (r > 0 ? Math.min(codOrCoc.ycb, result.PPy - 1) :\n Math.min(codOrCoc.ycb, result.PPy));\n return result;\n }\n function buildPrecincts(context, resolution, dimensions) {\n // Section B.6 Division resolution to precincts\n var precinctWidth = 1 << dimensions.PPx;\n var precinctHeight = 1 << dimensions.PPy;\n // Jasper introduces codeblock groups for mapping each subband codeblocks\n // to precincts. Precinct partition divides a resolution according to width\n // and height parameters. The subband that belongs to the resolution level\n // has a different size than the level, unless it is the zero resolution.\n\n // From Jasper documentation: jpeg2000.pdf, section K: Tier-2 coding:\n // The precinct partitioning for a particular subband is derived from a\n // partitioning of its parent LL band (i.e., the LL band at the next higher\n // resolution level)... The LL band associated with each resolution level is\n // divided into precincts... Each of the resulting precinct regions is then\n // mapped into its child subbands (if any) at the next lower resolution\n // level. This is accomplished by using the coordinate transformation\n // (u, v) = (ceil(x/2), ceil(y/2)) where (x, y) and (u, v) are the\n // coordinates of a point in the LL band and child subband, respectively.\n var isZeroRes = resolution.resLevel === 0;\n var precinctWidthInSubband = 1 << (dimensions.PPx + (isZeroRes ? 0 : -1));\n var precinctHeightInSubband = 1 << (dimensions.PPy + (isZeroRes ? 0 : -1));\n var numprecinctswide = (resolution.trx1 > resolution.trx0 ?\n Math.ceil(resolution.trx1 / precinctWidth) -\n Math.floor(resolution.trx0 / precinctWidth) : 0);\n var numprecinctshigh = (resolution.try1 > resolution.try0 ?\n Math.ceil(resolution.try1 / precinctHeight) -\n Math.floor(resolution.try0 / precinctHeight) : 0);\n var numprecincts = numprecinctswide * numprecinctshigh;\n\n resolution.precinctParameters = {\n precinctWidth: precinctWidth,\n precinctHeight: precinctHeight,\n numprecinctswide: numprecinctswide,\n numprecinctshigh: numprecinctshigh,\n numprecincts: numprecincts,\n precinctWidthInSubband: precinctWidthInSubband,\n precinctHeightInSubband: precinctHeightInSubband\n };\n }\n function buildCodeblocks(context, subband, dimensions) {\n // Section B.7 Division sub-band into code-blocks\n var xcb_ = dimensions.xcb_;\n var ycb_ = dimensions.ycb_;\n var codeblockWidth = 1 << xcb_;\n var codeblockHeight = 1 << ycb_;\n var cbx0 = subband.tbx0 >> xcb_;\n var cby0 = subband.tby0 >> ycb_;\n var cbx1 = (subband.tbx1 + codeblockWidth - 1) >> xcb_;\n var cby1 = (subband.tby1 + codeblockHeight - 1) >> ycb_;\n var precinctParameters = subband.resolution.precinctParameters;\n var codeblocks = [];\n var precincts = [];\n var i, j, codeblock, precinctNumber;\n for (j = cby0; j < cby1; j++) {\n for (i = cbx0; i < cbx1; i++) {\n codeblock = {\n cbx: i,\n cby: j,\n tbx0: codeblockWidth * i,\n tby0: codeblockHeight * j,\n tbx1: codeblockWidth * (i + 1),\n tby1: codeblockHeight * (j + 1)\n };\n\n codeblock.tbx0_ = Math.max(subband.tbx0, codeblock.tbx0);\n codeblock.tby0_ = Math.max(subband.tby0, codeblock.tby0);\n codeblock.tbx1_ = Math.min(subband.tbx1, codeblock.tbx1);\n codeblock.tby1_ = Math.min(subband.tby1, codeblock.tby1);\n\n // Calculate precinct number for this codeblock, codeblock position\n // should be relative to its subband, use actual dimension and position\n // See comment about codeblock group width and height\n var pi = Math.floor((codeblock.tbx0_ - subband.tbx0) /\n precinctParameters.precinctWidthInSubband);\n var pj = Math.floor((codeblock.tby0_ - subband.tby0) /\n precinctParameters.precinctHeightInSubband);\n precinctNumber = pi + (pj * precinctParameters.numprecinctswide);\n\n codeblock.precinctNumber = precinctNumber;\n codeblock.subbandType = subband.type;\n codeblock.Lblock = 3;\n\n if (codeblock.tbx1_ <= codeblock.tbx0_ ||\n codeblock.tby1_ <= codeblock.tby0_) {\n continue;\n }\n codeblocks.push(codeblock);\n // building precinct for the sub-band\n var precinct = precincts[precinctNumber];\n if (precinct !== undefined) {\n if (i < precinct.cbxMin) {\n precinct.cbxMin = i;\n } else if (i > precinct.cbxMax) {\n precinct.cbxMax = i;\n }\n if (j < precinct.cbyMin) {\n precinct.cbxMin = j;\n } else if (j > precinct.cbyMax) {\n precinct.cbyMax = j;\n }\n } else {\n precincts[precinctNumber] = precinct = {\n cbxMin: i,\n cbyMin: j,\n cbxMax: i,\n cbyMax: j\n };\n }\n codeblock.precinct = precinct;\n }\n }\n subband.codeblockParameters = {\n codeblockWidth: xcb_,\n codeblockHeight: ycb_,\n numcodeblockwide: cbx1 - cbx0 + 1,\n numcodeblockhigh: cby1 - cby0 + 1\n };\n subband.codeblocks = codeblocks;\n subband.precincts = precincts;\n }\n function createPacket(resolution, precinctNumber, layerNumber) {\n var precinctCodeblocks = [];\n // Section B.10.8 Order of info in packet\n var subbands = resolution.subbands;\n // sub-bands already ordered in 'LL', 'HL', 'LH', and 'HH' sequence\n for (var i = 0, ii = subbands.length; i < ii; i++) {\n var subband = subbands[i];\n var codeblocks = subband.codeblocks;\n for (var j = 0, jj = codeblocks.length; j < jj; j++) {\n var codeblock = codeblocks[j];\n if (codeblock.precinctNumber !== precinctNumber) {\n continue;\n }\n precinctCodeblocks.push(codeblock);\n }\n }\n return {\n layerNumber: layerNumber,\n codeblocks: precinctCodeblocks\n };\n }\n function LayerResolutionComponentPositionIterator(context) {\n var siz = context.SIZ;\n var tileIndex = context.currentTile.index;\n var tile = context.tiles[tileIndex];\n var layersCount = tile.codingStyleDefaultParameters.layersCount;\n var componentsCount = siz.Csiz;\n var maxDecompositionLevelsCount = 0;\n for (var q = 0; q < componentsCount; q++) {\n maxDecompositionLevelsCount = Math.max(maxDecompositionLevelsCount,\n tile.components[q].codingStyleParameters.decompositionLevelsCount);\n }\n\n var l = 0, r = 0, i = 0, k = 0;\n\n this.nextPacket = function JpxImage_nextPacket() {\n // Section B.12.1.1 Layer-resolution-component-position\n for (; l < layersCount; l++) {\n for (; r <= maxDecompositionLevelsCount; r++) {\n for (; i < componentsCount; i++) {\n var component = tile.components[i];\n if (r > component.codingStyleParameters.decompositionLevelsCount) {\n continue;\n }\n\n var resolution = component.resolutions[r];\n var numprecincts = resolution.precinctParameters.numprecincts;\n for (; k < numprecincts;) {\n var packet = createPacket(resolution, k, l);\n k++;\n return packet;\n }\n k = 0;\n }\n i = 0;\n }\n r = 0;\n }\n };\n }\n function ResolutionLayerComponentPositionIterator(context) {\n var siz = context.SIZ;\n var tileIndex = context.currentTile.index;\n var tile = context.tiles[tileIndex];\n var layersCount = tile.codingStyleDefaultParameters.layersCount;\n var componentsCount = siz.Csiz;\n var maxDecompositionLevelsCount = 0;\n for (var q = 0; q < componentsCount; q++) {\n maxDecompositionLevelsCount = Math.max(maxDecompositionLevelsCount,\n tile.components[q].codingStyleParameters.decompositionLevelsCount);\n }\n\n var r = 0, l = 0, i = 0, k = 0;\n\n this.nextPacket = function JpxImage_nextPacket() {\n // Section B.12.1.2 Resolution-layer-component-position\n for (; r <= maxDecompositionLevelsCount; r++) {\n for (; l < layersCount; l++) {\n for (; i < componentsCount; i++) {\n var component = tile.components[i];\n if (r > component.codingStyleParameters.decompositionLevelsCount) {\n continue;\n }\n\n var resolution = component.resolutions[r];\n var numprecincts = resolution.precinctParameters.numprecincts;\n for (; k < numprecincts;) {\n var packet = createPacket(resolution, k, l);\n k++;\n return packet;\n }\n k = 0;\n }\n i = 0;\n }\n l = 0;\n }\n };\n }\n function ResolutionPositionComponentLayerIterator(context) {\n var siz = context.SIZ;\n var tileIndex = context.currentTile.index;\n var tile = context.tiles[tileIndex];\n var layersCount = tile.codingStyleDefaultParameters.layersCount;\n var componentsCount = siz.Csiz;\n var l, r, c, p;\n var maxDecompositionLevelsCount = 0;\n for (c = 0; c < componentsCount; c++) {\n var component = tile.components[c];\n maxDecompositionLevelsCount = Math.max(maxDecompositionLevelsCount,\n component.codingStyleParameters.decompositionLevelsCount);\n }\n var maxNumPrecinctsInLevel = new Int32Array(\n maxDecompositionLevelsCount + 1);\n for (r = 0; r <= maxDecompositionLevelsCount; ++r) {\n var maxNumPrecincts = 0;\n for (c = 0; c < componentsCount; ++c) {\n var resolutions = tile.components[c].resolutions;\n if (r < resolutions.length) {\n maxNumPrecincts = Math.max(maxNumPrecincts,\n resolutions[r].precinctParameters.numprecincts);\n }\n }\n maxNumPrecinctsInLevel[r] = maxNumPrecincts;\n }\n l = 0;\n r = 0;\n c = 0;\n p = 0;\n\n this.nextPacket = function JpxImage_nextPacket() {\n // Section B.12.1.3 Resolution-position-component-layer\n for (; r <= maxDecompositionLevelsCount; r++) {\n for (; p < maxNumPrecinctsInLevel[r]; p++) {\n for (; c < componentsCount; c++) {\n var component = tile.components[c];\n if (r > component.codingStyleParameters.decompositionLevelsCount) {\n continue;\n }\n var resolution = component.resolutions[r];\n var numprecincts = resolution.precinctParameters.numprecincts;\n if (p >= numprecincts) {\n continue;\n }\n for (; l < layersCount;) {\n var packet = createPacket(resolution, p, l);\n l++;\n return packet;\n }\n l = 0;\n }\n c = 0;\n }\n p = 0;\n }\n };\n }\n function PositionComponentResolutionLayerIterator(context) {\n var siz = context.SIZ;\n var tileIndex = context.currentTile.index;\n var tile = context.tiles[tileIndex];\n var layersCount = tile.codingStyleDefaultParameters.layersCount;\n var componentsCount = siz.Csiz;\n var precinctsSizes = getPrecinctSizesInImageScale(tile);\n var precinctsIterationSizes = precinctsSizes;\n var l = 0, r = 0, c = 0, px = 0, py = 0;\n\n this.nextPacket = function JpxImage_nextPacket() {\n // Section B.12.1.4 Position-component-resolution-layer\n for (; py < precinctsIterationSizes.maxNumHigh; py++) {\n for (; px < precinctsIterationSizes.maxNumWide; px++) {\n for (; c < componentsCount; c++) {\n var component = tile.components[c];\n var decompositionLevelsCount =\n component.codingStyleParameters.decompositionLevelsCount;\n for (; r <= decompositionLevelsCount; r++) {\n var resolution = component.resolutions[r];\n var sizeInImageScale =\n precinctsSizes.components[c].resolutions[r];\n var k = getPrecinctIndexIfExist(\n px,\n py,\n sizeInImageScale,\n precinctsIterationSizes,\n resolution);\n if (k === null) {\n continue;\n }\n for (; l < layersCount;) {\n var packet = createPacket(resolution, k, l);\n l++;\n return packet;\n }\n l = 0;\n }\n r = 0;\n }\n c = 0;\n }\n px = 0;\n }\n };\n }\n function ComponentPositionResolutionLayerIterator(context) {\n var siz = context.SIZ;\n var tileIndex = context.currentTile.index;\n var tile = context.tiles[tileIndex];\n var layersCount = tile.codingStyleDefaultParameters.layersCount;\n var componentsCount = siz.Csiz;\n var precinctsSizes = getPrecinctSizesInImageScale(tile);\n var l = 0, r = 0, c = 0, px = 0, py = 0;\n\n this.nextPacket = function JpxImage_nextPacket() {\n // Section B.12.1.5 Component-position-resolution-layer\n for (; c < componentsCount; ++c) {\n var component = tile.components[c];\n var precinctsIterationSizes = precinctsSizes.components[c];\n var decompositionLevelsCount =\n component.codingStyleParameters.decompositionLevelsCount;\n for (; py < precinctsIterationSizes.maxNumHigh; py++) {\n for (; px < precinctsIterationSizes.maxNumWide; px++) {\n for (; r <= decompositionLevelsCount; r++) {\n var resolution = component.resolutions[r];\n var sizeInImageScale = precinctsIterationSizes.resolutions[r];\n var k = getPrecinctIndexIfExist(\n px,\n py,\n sizeInImageScale,\n precinctsIterationSizes,\n resolution);\n if (k === null) {\n continue;\n }\n for (; l < layersCount;) {\n var packet = createPacket(resolution, k, l);\n l++;\n return packet;\n }\n l = 0;\n }\n r = 0;\n }\n px = 0;\n }\n py = 0;\n }\n };\n }\n function getPrecinctIndexIfExist(\n pxIndex, pyIndex, sizeInImageScale, precinctIterationSizes, resolution) {\n var posX = pxIndex * precinctIterationSizes.minWidth;\n var posY = pyIndex * precinctIterationSizes.minHeight;\n if (posX % sizeInImageScale.width !== 0 ||\n posY % sizeInImageScale.height !== 0) {\n return null;\n }\n var startPrecinctRowIndex =\n (posY / sizeInImageScale.width) *\n resolution.precinctParameters.numprecinctswide;\n return (posX / sizeInImageScale.height) + startPrecinctRowIndex;\n }\n function getPrecinctSizesInImageScale(tile) {\n var componentsCount = tile.components.length;\n var minWidth = Number.MAX_VALUE;\n var minHeight = Number.MAX_VALUE;\n var maxNumWide = 0;\n var maxNumHigh = 0;\n var sizePerComponent = new Array(componentsCount);\n for (var c = 0; c < componentsCount; c++) {\n var component = tile.components[c];\n var decompositionLevelsCount =\n component.codingStyleParameters.decompositionLevelsCount;\n var sizePerResolution = new Array(decompositionLevelsCount + 1);\n var minWidthCurrentComponent = Number.MAX_VALUE;\n var minHeightCurrentComponent = Number.MAX_VALUE;\n var maxNumWideCurrentComponent = 0;\n var maxNumHighCurrentComponent = 0;\n var scale = 1;\n for (var r = decompositionLevelsCount; r >= 0; --r) {\n var resolution = component.resolutions[r];\n var widthCurrentResolution =\n scale * resolution.precinctParameters.precinctWidth;\n var heightCurrentResolution =\n scale * resolution.precinctParameters.precinctHeight;\n minWidthCurrentComponent = Math.min(\n minWidthCurrentComponent,\n widthCurrentResolution);\n minHeightCurrentComponent = Math.min(\n minHeightCurrentComponent,\n heightCurrentResolution);\n maxNumWideCurrentComponent = Math.max(maxNumWideCurrentComponent,\n resolution.precinctParameters.numprecinctswide);\n maxNumHighCurrentComponent = Math.max(maxNumHighCurrentComponent,\n resolution.precinctParameters.numprecinctshigh);\n sizePerResolution[r] = {\n width: widthCurrentResolution,\n height: heightCurrentResolution\n };\n scale <<= 1;\n }\n minWidth = Math.min(minWidth, minWidthCurrentComponent);\n minHeight = Math.min(minHeight, minHeightCurrentComponent);\n maxNumWide = Math.max(maxNumWide, maxNumWideCurrentComponent);\n maxNumHigh = Math.max(maxNumHigh, maxNumHighCurrentComponent);\n sizePerComponent[c] = {\n resolutions: sizePerResolution,\n minWidth: minWidthCurrentComponent,\n minHeight: minHeightCurrentComponent,\n maxNumWide: maxNumWideCurrentComponent,\n maxNumHigh: maxNumHighCurrentComponent\n };\n }\n return {\n components: sizePerComponent,\n minWidth: minWidth,\n minHeight: minHeight,\n maxNumWide: maxNumWide,\n maxNumHigh: maxNumHigh\n };\n }\n function buildPackets(context) {\n var siz = context.SIZ;\n var tileIndex = context.currentTile.index;\n var tile = context.tiles[tileIndex];\n var componentsCount = siz.Csiz;\n // Creating resolutions and sub-bands for each component\n for (var c = 0; c < componentsCount; c++) {\n var component = tile.components[c];\n var decompositionLevelsCount =\n component.codingStyleParameters.decompositionLevelsCount;\n // Section B.5 Resolution levels and sub-bands\n var resolutions = [];\n var subbands = [];\n for (var r = 0; r <= decompositionLevelsCount; r++) {\n var blocksDimensions = getBlocksDimensions(context, component, r);\n var resolution = {};\n var scale = 1 << (decompositionLevelsCount - r);\n resolution.trx0 = Math.ceil(component.tcx0 / scale);\n resolution.try0 = Math.ceil(component.tcy0 / scale);\n resolution.trx1 = Math.ceil(component.tcx1 / scale);\n resolution.try1 = Math.ceil(component.tcy1 / scale);\n resolution.resLevel = r;\n buildPrecincts(context, resolution, blocksDimensions);\n resolutions.push(resolution);\n\n var subband;\n if (r === 0) {\n // one sub-band (LL) with last decomposition\n subband = {};\n subband.type = 'LL';\n subband.tbx0 = Math.ceil(component.tcx0 / scale);\n subband.tby0 = Math.ceil(component.tcy0 / scale);\n subband.tbx1 = Math.ceil(component.tcx1 / scale);\n subband.tby1 = Math.ceil(component.tcy1 / scale);\n subband.resolution = resolution;\n buildCodeblocks(context, subband, blocksDimensions);\n subbands.push(subband);\n resolution.subbands = [subband];\n } else {\n var bscale = 1 << (decompositionLevelsCount - r + 1);\n var resolutionSubbands = [];\n // three sub-bands (HL, LH and HH) with rest of decompositions\n subband = {};\n subband.type = 'HL';\n subband.tbx0 = Math.ceil(component.tcx0 / bscale - 0.5);\n subband.tby0 = Math.ceil(component.tcy0 / bscale);\n subband.tbx1 = Math.ceil(component.tcx1 / bscale - 0.5);\n subband.tby1 = Math.ceil(component.tcy1 / bscale);\n subband.resolution = resolution;\n buildCodeblocks(context, subband, blocksDimensions);\n subbands.push(subband);\n resolutionSubbands.push(subband);\n\n subband = {};\n subband.type = 'LH';\n subband.tbx0 = Math.ceil(component.tcx0 / bscale);\n subband.tby0 = Math.ceil(component.tcy0 / bscale - 0.5);\n subband.tbx1 = Math.ceil(component.tcx1 / bscale);\n subband.tby1 = Math.ceil(component.tcy1 / bscale - 0.5);\n subband.resolution = resolution;\n buildCodeblocks(context, subband, blocksDimensions);\n subbands.push(subband);\n resolutionSubbands.push(subband);\n\n subband = {};\n subband.type = 'HH';\n subband.tbx0 = Math.ceil(component.tcx0 / bscale - 0.5);\n subband.tby0 = Math.ceil(component.tcy0 / bscale - 0.5);\n subband.tbx1 = Math.ceil(component.tcx1 / bscale - 0.5);\n subband.tby1 = Math.ceil(component.tcy1 / bscale - 0.5);\n subband.resolution = resolution;\n buildCodeblocks(context, subband, blocksDimensions);\n subbands.push(subband);\n resolutionSubbands.push(subband);\n\n resolution.subbands = resolutionSubbands;\n }\n }\n component.resolutions = resolutions;\n component.subbands = subbands;\n }\n // Generate the packets sequence\n var progressionOrder = tile.codingStyleDefaultParameters.progressionOrder;\n switch (progressionOrder) {\n case 0:\n tile.packetsIterator =\n new LayerResolutionComponentPositionIterator(context);\n break;\n case 1:\n tile.packetsIterator =\n new ResolutionLayerComponentPositionIterator(context);\n break;\n case 2:\n tile.packetsIterator =\n new ResolutionPositionComponentLayerIterator(context);\n break;\n case 3:\n tile.packetsIterator =\n new PositionComponentResolutionLayerIterator(context);\n break;\n case 4:\n tile.packetsIterator =\n new ComponentPositionResolutionLayerIterator(context);\n break;\n default:\n throw new Error('JPX Error: Unsupported progression order ' +\n progressionOrder);\n }\n }\n function parseTilePackets(context, data, offset, dataLength) {\n var position = 0;\n var buffer, bufferSize = 0, skipNextBit = false;\n function readBits(count) {\n while (bufferSize < count) {\n if(offset + position >= data.length){\n throw new Error(\"Unexpected EOF\");\n }\n var b = data[offset + position];\n position++;\n if (skipNextBit) {\n buffer = (buffer << 7) | b;\n bufferSize += 7;\n skipNextBit = false;\n } else {\n buffer = (buffer << 8) | b;\n bufferSize += 8;\n }\n if (b === 0xFF) {\n skipNextBit = true;\n }\n }\n bufferSize -= count;\n return (buffer >>> bufferSize) & ((1 << count) - 1);\n }\n function skipMarkerIfEqual(value) {\n if (data[offset + position - 1] === 0xFF &&\n data[offset + position] === value) {\n skipBytes(1);\n return true;\n } else if (data[offset + position] === 0xFF &&\n data[offset + position + 1] === value) {\n skipBytes(2);\n return true;\n }\n return false;\n }\n function skipBytes(count) {\n position += count;\n }\n function alignToByte() {\n bufferSize = 0;\n if (skipNextBit) {\n position++;\n skipNextBit = false;\n }\n }\n function readCodingpasses() {\n if (readBits(1) === 0) {\n return 1;\n }\n if (readBits(1) === 0) {\n return 2;\n }\n var value = readBits(2);\n if (value < 3) {\n return value + 3;\n }\n value = readBits(5);\n if (value < 31) {\n return value + 6;\n }\n value = readBits(7);\n return value + 37;\n }\n var tileIndex = context.currentTile.index;\n var tile = context.tiles[tileIndex];\n var sopMarkerUsed = context.COD.sopMarkerUsed;\n var ephMarkerUsed = context.COD.ephMarkerUsed;\n var packetsIterator = tile.packetsIterator;\n while (position < dataLength) {\n try{\n alignToByte();\n if (sopMarkerUsed && skipMarkerIfEqual(0x91)) {\n // Skip also marker segment length and packet sequence ID\n skipBytes(4);\n }\n var packet = packetsIterator.nextPacket();\n if (packet === undefined) {\n //No more packets. Stream is probably truncated.\n return;\n }\n if (!readBits(1)) {\n continue;\n }\n var layerNumber = packet.layerNumber;\n var queue = [], codeblock;\n for (var i = 0, ii = packet.codeblocks.length; i < ii; i++) {\n codeblock = packet.codeblocks[i];\n var precinct = codeblock.precinct;\n var codeblockColumn = codeblock.cbx - precinct.cbxMin;\n var codeblockRow = codeblock.cby - precinct.cbyMin;\n var codeblockIncluded = false;\n var firstTimeInclusion = false;\n var valueReady;\n if (codeblock['included'] !== undefined) {\n codeblockIncluded = !!readBits(1);\n } else {\n // reading inclusion tree\n precinct = codeblock.precinct;\n var inclusionTree, zeroBitPlanesTree;\n if (precinct['inclusionTree'] !== undefined) {\n inclusionTree = precinct.inclusionTree;\n } else {\n // building inclusion and zero bit-planes trees\n var width = precinct.cbxMax - precinct.cbxMin + 1;\n var height = precinct.cbyMax - precinct.cbyMin + 1;\n inclusionTree = new InclusionTree(width, height);\n zeroBitPlanesTree = new TagTree(width, height);\n precinct.inclusionTree = inclusionTree;\n precinct.zeroBitPlanesTree = zeroBitPlanesTree;\n }\n\n inclusionTree.reset(codeblockColumn, codeblockRow, layerNumber);\n while (true) {\n if (position >= data.length) {\n return;\n }\n if (inclusionTree.isAboveThreshold()){\n break;\n }\n if (inclusionTree.isKnown()) {\n inclusionTree.nextLevel();\n continue;\n }\n if (readBits(1)) {\n inclusionTree.setKnown();\n if (inclusionTree.isLeaf()) {\n codeblock.included = true;\n codeblockIncluded = firstTimeInclusion = true;\n break;\n } else {\n inclusionTree.nextLevel();\n }\n } else {\n inclusionTree.incrementValue();\n }\n }\n }\n if (!codeblockIncluded) {\n continue;\n }\n if (firstTimeInclusion) {\n zeroBitPlanesTree = precinct.zeroBitPlanesTree;\n zeroBitPlanesTree.reset(codeblockColumn, codeblockRow);\n while (true) {\n if (position >= data.length) {\n return;\n }\n if (readBits(1)) {\n valueReady = !zeroBitPlanesTree.nextLevel();\n if (valueReady) {\n break;\n }\n } else {\n zeroBitPlanesTree.incrementValue();\n }\n }\n codeblock.zeroBitPlanes = zeroBitPlanesTree.value;\n }\n var codingpasses = readCodingpasses();\n while (readBits(1)) {\n codeblock.Lblock++;\n }\n var codingpassesLog2 = log2(codingpasses);\n // rounding down log2\n var bits = ((codingpasses < (1 << codingpassesLog2)) ?\n codingpassesLog2 - 1 : codingpassesLog2) + codeblock.Lblock;\n var codedDataLength = readBits(bits);\n queue.push({\n codeblock: codeblock,\n codingpasses: codingpasses,\n dataLength: codedDataLength\n });\n }\n alignToByte();\n if (ephMarkerUsed) {\n skipMarkerIfEqual(0x92);\n }\n while (queue.length > 0) {\n var packetItem = queue.shift();\n codeblock = packetItem.codeblock;\n if (codeblock['data'] === undefined) {\n codeblock.data = [];\n }\n codeblock.data.push({\n data: data,\n start: offset + position,\n end: offset + position + packetItem.dataLength,\n codingpasses: packetItem.codingpasses\n });\n position += packetItem.dataLength;\n }\n } catch (e) {\n return;\n }\n }\n return position;\n }\n function copyCoefficients(coefficients, levelWidth, levelHeight, subband,\n delta, mb, reversible, segmentationSymbolUsed) {\n var x0 = subband.tbx0;\n var y0 = subband.tby0;\n var width = subband.tbx1 - subband.tbx0;\n var codeblocks = subband.codeblocks;\n var right = subband.type.charAt(0) === 'H' ? 1 : 0;\n var bottom = subband.type.charAt(1) === 'H' ? levelWidth : 0;\n\n for (var i = 0, ii = codeblocks.length; i < ii; ++i) {\n var codeblock = codeblocks[i];\n var blockWidth = codeblock.tbx1_ - codeblock.tbx0_;\n var blockHeight = codeblock.tby1_ - codeblock.tby0_;\n if (blockWidth === 0 || blockHeight === 0) {\n continue;\n }\n if (codeblock['data'] === undefined) {\n continue;\n }\n\n var bitModel, currentCodingpassType;\n bitModel = new BitModel(blockWidth, blockHeight, codeblock.subbandType,\n codeblock.zeroBitPlanes, mb);\n currentCodingpassType = 2; // first bit plane starts from cleanup\n\n // collect data\n var data = codeblock.data, totalLength = 0, codingpasses = 0;\n var j, jj, dataItem;\n for (j = 0, jj = data.length; j < jj; j++) {\n dataItem = data[j];\n totalLength += dataItem.end - dataItem.start;\n codingpasses += dataItem.codingpasses;\n }\n var encodedData = new Int16Array(totalLength);\n var position = 0;\n for (j = 0, jj = data.length; j < jj; j++) {\n dataItem = data[j];\n var chunk = dataItem.data.subarray(dataItem.start, dataItem.end);\n encodedData.set(chunk, position);\n position += chunk.length;\n }\n // decoding the item\n var decoder = new ArithmeticDecoder(encodedData, 0, totalLength);\n bitModel.setDecoder(decoder);\n\n for (j = 0; j < codingpasses; j++) {\n switch (currentCodingpassType) {\n case 0:\n bitModel.runSignificancePropogationPass();\n break;\n case 1:\n bitModel.runMagnitudeRefinementPass();\n break;\n case 2:\n bitModel.runCleanupPass();\n if (segmentationSymbolUsed) {\n bitModel.checkSegmentationSymbol();\n }\n break;\n }\n currentCodingpassType = (currentCodingpassType + 1) % 3;\n }\n\n var offset = (codeblock.tbx0_ - x0) + (codeblock.tby0_ - y0) * width;\n var sign = bitModel.coefficentsSign;\n var magnitude = bitModel.coefficentsMagnitude;\n var bitsDecoded = bitModel.bitsDecoded;\n var magnitudeCorrection = reversible ? 0 : 0.5;\n var k, n, nb;\n position = 0;\n // Do the interleaving of Section F.3.3 here, so we do not need\n // to copy later. LL level is not interleaved, just copied.\n var interleave = (subband.type !== 'LL');\n for (j = 0; j < blockHeight; j++) {\n var row = (offset / width) | 0; // row in the non-interleaved subband\n var levelOffset = 2 * row * (levelWidth - width) + right + bottom;\n for (k = 0; k < blockWidth; k++) {\n n = magnitude[position];\n if (n !== 0) {\n n = (n + magnitudeCorrection) * delta;\n if (sign[position] !== 0) {\n n = -n;\n }\n nb = bitsDecoded[position];\n var pos = interleave ? (levelOffset + (offset << 1)) : offset;\n if (reversible && (nb >= mb)) {\n coefficients[pos] = n;\n } else {\n coefficients[pos] = n * (1 << (mb - nb));\n }\n }\n offset++;\n position++;\n }\n offset += width - blockWidth;\n }\n }\n }\n function transformTile(context, tile, c) {\n var component = tile.components[c];\n var codingStyleParameters = component.codingStyleParameters;\n var quantizationParameters = component.quantizationParameters;\n var decompositionLevelsCount =\n codingStyleParameters.decompositionLevelsCount;\n var spqcds = quantizationParameters.SPqcds;\n var scalarExpounded = quantizationParameters.scalarExpounded;\n var guardBits = quantizationParameters.guardBits;\n var segmentationSymbolUsed = codingStyleParameters.segmentationSymbolUsed;\n var precision = context.components[c].precision;\n\n var reversible = codingStyleParameters.reversibleTransformation;\n var transform = (reversible ? new ReversibleTransform() :\n new IrreversibleTransform());\n\n var subbandCoefficients = [];\n var b = 0;\n for (var i = 0; i <= decompositionLevelsCount; i++) {\n var resolution = component.resolutions[i];\n\n var width = resolution.trx1 - resolution.trx0;\n var height = resolution.try1 - resolution.try0;\n // Allocate space for the whole sublevel.\n var coefficients = new Float32Array(width * height);\n\n for (var j = 0, jj = resolution.subbands.length; j < jj; j++) {\n var mu, epsilon;\n if (!scalarExpounded) {\n // formula E-5\n mu = spqcds[0].mu;\n epsilon = spqcds[0].epsilon + (i > 0 ? 1 - i : 0);\n } else {\n mu = spqcds[b].mu;\n epsilon = spqcds[b].epsilon;\n b++;\n }\n\n var subband = resolution.subbands[j];\n var gainLog2 = SubbandsGainLog2[subband.type];\n\n // calulate quantization coefficient (Section E.1.1.1)\n var delta = (reversible ? 1 :\n Math.pow(2, precision + gainLog2 - epsilon) * (1 + mu / 2048));\n var mb = (guardBits + epsilon - 1);\n\n // In the first resolution level, copyCoefficients will fill the\n // whole array with coefficients. In the succeding passes,\n // copyCoefficients will consecutively fill in the values that belong\n // to the interleaved positions of the HL, LH, and HH coefficients.\n // The LL coefficients will then be interleaved in Transform.iterate().\n copyCoefficients(coefficients, width, height, subband, delta, mb,\n reversible, segmentationSymbolUsed);\n }\n subbandCoefficients.push({\n width: width,\n height: height,\n items: coefficients\n });\n }\n\n var result = transform.calculate(subbandCoefficients,\n component.tcx0, component.tcy0);\n return {\n left: component.tcx0,\n top: component.tcy0,\n width: result.width,\n height: result.height,\n items: result.items\n };\n }\n function transformComponents(context) {\n var siz = context.SIZ;\n var components = context.components;\n var componentsCount = siz.Csiz;\n var resultImages = [];\n for (var i = 0, ii = context.tiles.length; i < ii; i++) {\n var tile = context.tiles[i];\n var transformedTiles = [];\n var c;\n for (c = 0; c < componentsCount; c++) {\n transformedTiles[c] = transformTile(context, tile, c);\n }\n var tile0 = transformedTiles[0];\n var isSigned = components[0].isSigned;\n if (isSigned) {\n var out = new Int16Array(tile0.items.length * componentsCount);\n } else {\n var out = new Uint16Array(tile0.items.length * componentsCount);\n }\n var result = {\n left: tile0.left,\n top: tile0.top,\n width: tile0.width,\n height: tile0.height,\n items: out\n };\n\n // Section G.2.2 Inverse multi component transform\n var shift, offset, max, min, maxK;\n var pos = 0, j, jj, y0, y1, y2, r, g, b, k, val;\n if (tile.codingStyleDefaultParameters.multipleComponentTransform) {\n var fourComponents = componentsCount === 4;\n var y0items = transformedTiles[0].items;\n var y1items = transformedTiles[1].items;\n var y2items = transformedTiles[2].items;\n var y3items = fourComponents ? transformedTiles[3].items : null;\n\n // HACK: The multiple component transform formulas below assume that\n // all components have the same precision. With this in mind, we\n // compute shift and offset only once.\n shift = components[0].precision - 8;\n offset = (128 << shift) + 0.5;\n max = 255 * (1 << shift);\n maxK = max * 0.5;\n min = -maxK;\n\n var component0 = tile.components[0];\n var alpha01 = componentsCount - 3;\n jj = y0items.length;\n if (!component0.codingStyleParameters.reversibleTransformation) {\n // inverse irreversible multiple component transform\n for (j = 0; j < jj; j++, pos += alpha01) {\n y0 = y0items[j] + offset;\n y1 = y1items[j];\n y2 = y2items[j];\n r = y0 + 1.402 * y2;\n g = y0 - 0.34413 * y1 - 0.71414 * y2;\n b = y0 + 1.772 * y1;\n out[pos++] = r <= 0 ? 0 : r >= max ? 255 : r >> shift;\n out[pos++] = g <= 0 ? 0 : g >= max ? 255 : g >> shift;\n out[pos++] = b <= 0 ? 0 : b >= max ? 255 : b >> shift;\n }\n } else {\n // inverse reversible multiple component transform\n for (j = 0; j < jj; j++, pos += alpha01) {\n y0 = y0items[j] + offset;\n y1 = y1items[j];\n y2 = y2items[j];\n g = y0 - ((y2 + y1) >> 2);\n r = g + y2;\n b = g + y1;\n out[pos++] = r <= 0 ? 0 : r >= max ? 255 : r >> shift;\n out[pos++] = g <= 0 ? 0 : g >= max ? 255 : g >> shift;\n out[pos++] = b <= 0 ? 0 : b >= max ? 255 : b >> shift;\n }\n }\n if (fourComponents) {\n for (j = 0, pos = 3; j < jj; j++, pos += 4) {\n k = y3items[j];\n out[pos] = k <= min ? 0 : k >= maxK ? 255 : (k + offset) >> shift;\n }\n }\n } else { // no multi-component transform\n for (c = 0; c < componentsCount; c++) {\n if (components[c].precision === 8){\n var items = transformedTiles[c].items;\n shift = components[c].precision - 8;\n offset = (128 << shift) + 0.5;\n max = (127.5 * (1 << shift));\n min = -max;\n for (pos = c, j = 0, jj = items.length; j < jj; j++) {\n val = items[j];\n out[pos] = val <= min ? 0 :\n val >= max ? 255 : (val + offset) >> shift;\n pos += componentsCount;\n }\n }else{\n var isSigned = components[c].isSigned;\n var items = transformedTiles[c].items;\n\n if(isSigned){\n for (pos = c, j = 0, jj = items.length; j < jj; j++) {\n out[pos] = items[j];\n pos += componentsCount;\n }\n }else{\n shift = components[c].precision - 8;\n offset = (128 << shift) + 0.5;\n var precisionMax = Math.pow(2,components[c].precision)-1;\n for (pos = c, j = 0, jj = items.length; j < jj; j++) {\n val = items[j];\n out[pos] = Math.max(Math.min((val + offset),precisionMax),0);\n pos += componentsCount;\n }\n }\n }\n }\n }\n resultImages.push(result);\n }\n return resultImages;\n }\n function initializeTile(context, tileIndex) {\n var siz = context.SIZ;\n var componentsCount = siz.Csiz;\n var tile = context.tiles[tileIndex];\n for (var c = 0; c < componentsCount; c++) {\n var component = tile.components[c];\n var qcdOrQcc = (context.currentTile.QCC[c] !== undefined ?\n context.currentTile.QCC[c] : context.currentTile.QCD);\n component.quantizationParameters = qcdOrQcc;\n var codOrCoc = (context.currentTile.COC[c] !== undefined ?\n context.currentTile.COC[c] : context.currentTile.COD);\n component.codingStyleParameters = codOrCoc;\n }\n tile.codingStyleDefaultParameters = context.currentTile.COD;\n }\n\n // Section B.10.2 Tag trees\n var TagTree = (function TagTreeClosure() {\n function TagTree(width, height) {\n var levelsLength = log2(Math.max(width, height)) + 1;\n this.levels = [];\n for (var i = 0; i < levelsLength; i++) {\n var level = {\n width: width,\n height: height,\n items: []\n };\n this.levels.push(level);\n width = Math.ceil(width / 2);\n height = Math.ceil(height / 2);\n }\n }\n TagTree.prototype = {\n reset: function TagTree_reset(i, j) {\n var currentLevel = 0, value = 0, level;\n while (currentLevel < this.levels.length) {\n level = this.levels[currentLevel];\n var index = i + j * level.width;\n if (level.items[index] !== undefined) {\n value = level.items[index];\n break;\n }\n level.index = index;\n i >>= 1;\n j >>= 1;\n currentLevel++;\n }\n currentLevel--;\n level = this.levels[currentLevel];\n level.items[level.index] = value;\n this.currentLevel = currentLevel;\n delete this.value;\n },\n incrementValue: function TagTree_incrementValue() {\n var level = this.levels[this.currentLevel];\n level.items[level.index]++;\n },\n nextLevel: function TagTree_nextLevel() {\n var currentLevel = this.currentLevel;\n var level = this.levels[currentLevel];\n var value = level.items[level.index];\n currentLevel--;\n if (currentLevel < 0) {\n this.value = value;\n return false;\n }\n\n this.currentLevel = currentLevel;\n level = this.levels[currentLevel];\n level.items[level.index] = value;\n return true;\n }\n };\n return TagTree;\n })();\n\n var InclusionTree = (function InclusionTreeClosure() {\n function InclusionTree(width, height) {\n var levelsLength = log2(Math.max(width, height)) + 1;\n this.levels = [];\n for (var i = 0; i < levelsLength; i++) {\n var items = new Uint8Array(width * height);\n var status = new Uint8Array(width * height);\n for (var j = 0, jj = items.length; j < jj; j++) {\n items[j] = 0;\n status[j] = 0;\n }\n\n var level = {\n width: width,\n height: height,\n items: items,\n status: status\n };\n this.levels.push(level);\n\n width = Math.ceil(width / 2);\n height = Math.ceil(height / 2);\n }\n }\n InclusionTree.prototype = {\n reset: function InclusionTree_reset(i, j, stopValue) {\n this.currentStopValue = stopValue;\n var currentLevel = 0;\n while (currentLevel < this.levels.length) {\n var level = this.levels[currentLevel];\n var index = i + j * level.width;\n level.index = index;\n\n i >>= 1;\n j >>= 1;\n currentLevel++;\n }\n\n this.currentLevel = this.levels.length - 1;\n this.minValue =this.levels[this.currentLevel].items[0];\n return;\n },\n incrementValue: function InclusionTree_incrementValue() {\n var level = this.levels[this.currentLevel];\n level.items[level.index] = level.items[level.index] + 1;\n if(level.items[level.index] > this.minValue) {\n this.minValue = level.items[level.index];\n }\n },\n nextLevel: function InclusionTree_nextLevel() {\n var currentLevel = this.currentLevel;\n currentLevel--;\n if (currentLevel < 0) {\n return false;\n } else {\n this.currentLevel = currentLevel;\n var level = this.levels[currentLevel];\n if(level.items[level.index] < this.minValue) {\n level.items[level.index] = this.minValue;\n }else if (level.items[level.index] > this.minValue) {\n this.minValue = level.items[level.index];\n }\n return true;\n }\n },\n isLeaf: function InclusionTree_isLeaf(){\n return (this.currentLevel === 0);\n },\n isAboveThreshold: function InclusionTree_isAboveThreshold(){\n var levelindex = this.currentLevel;\n var level = this.levels[levelindex];\n return (level.items[level.index] > this.currentStopValue);\n },\n isKnown: function InclusionTree_isKnown(){\n var levelindex = this.currentLevel;\n var level = this.levels[levelindex];\n return (level.status[level.index] > 0);\n },\n setKnown: function InclusionTree_setKnown(){\n var levelindex = this.currentLevel;\n var level = this.levels[levelindex];\n level.status[level.index] = 1;\n return;\n }\n\n };\n return InclusionTree;\n })();\n\n // Section D. Coefficient bit modeling\n var BitModel = (function BitModelClosure() {\n var UNIFORM_CONTEXT = 17;\n var RUNLENGTH_CONTEXT = 18;\n // Table D-1\n // The index is binary presentation: 0dddvvhh, ddd - sum of Di (0..4),\n // vv - sum of Vi (0..2), and hh - sum of Hi (0..2)\n var LLAndLHContextsLabel = new Uint8Array([\n 0, 5, 8, 0, 3, 7, 8, 0, 4, 7, 8, 0, 0, 0, 0, 0, 1, 6, 8, 0, 3, 7, 8, 0, 4,\n 7, 8, 0, 0, 0, 0, 0, 2, 6, 8, 0, 3, 7, 8, 0, 4, 7, 8, 0, 0, 0, 0, 0, 2, 6,\n 8, 0, 3, 7, 8, 0, 4, 7, 8, 0, 0, 0, 0, 0, 2, 6, 8, 0, 3, 7, 8, 0, 4, 7, 8\n ]);\n var HLContextLabel = new Uint8Array([\n 0, 3, 4, 0, 5, 7, 7, 0, 8, 8, 8, 0, 0, 0, 0, 0, 1, 3, 4, 0, 6, 7, 7, 0, 8,\n 8, 8, 0, 0, 0, 0, 0, 2, 3, 4, 0, 6, 7, 7, 0, 8, 8, 8, 0, 0, 0, 0, 0, 2, 3,\n 4, 0, 6, 7, 7, 0, 8, 8, 8, 0, 0, 0, 0, 0, 2, 3, 4, 0, 6, 7, 7, 0, 8, 8, 8\n ]);\n var HHContextLabel = new Uint8Array([\n 0, 1, 2, 0, 1, 2, 2, 0, 2, 2, 2, 0, 0, 0, 0, 0, 3, 4, 5, 0, 4, 5, 5, 0, 5,\n 5, 5, 0, 0, 0, 0, 0, 6, 7, 7, 0, 7, 7, 7, 0, 7, 7, 7, 0, 0, 0, 0, 0, 8, 8,\n 8, 0, 8, 8, 8, 0, 8, 8, 8, 0, 0, 0, 0, 0, 8, 8, 8, 0, 8, 8, 8, 0, 8, 8, 8\n ]);\n\n function BitModel(width, height, subband, zeroBitPlanes, mb) {\n this.width = width;\n this.height = height;\n\n this.contextLabelTable = (subband === 'HH' ? HHContextLabel :\n (subband === 'HL' ? HLContextLabel : LLAndLHContextsLabel));\n\n var coefficientCount = width * height;\n\n // coefficients outside the encoding region treated as insignificant\n // add border state cells for significanceState\n this.neighborsSignificance = new Uint8Array(coefficientCount);\n this.coefficentsSign = new Uint8Array(coefficientCount);\n this.coefficentsMagnitude = mb > 14 ? new Uint32Array(coefficientCount) :\n mb > 6 ? new Uint16Array(coefficientCount) :\n new Uint8Array(coefficientCount);\n this.processingFlags = new Uint8Array(coefficientCount);\n\n var bitsDecoded = new Uint8Array(coefficientCount);\n if (zeroBitPlanes !== 0) {\n for (var i = 0; i < coefficientCount; i++) {\n bitsDecoded[i] = zeroBitPlanes;\n }\n }\n this.bitsDecoded = bitsDecoded;\n\n this.reset();\n }\n\n BitModel.prototype = {\n setDecoder: function BitModel_setDecoder(decoder) {\n this.decoder = decoder;\n },\n reset: function BitModel_reset() {\n // We have 17 contexts that are accessed via context labels,\n // plus the uniform and runlength context.\n this.contexts = new Int8Array(19);\n\n // Contexts are packed into 1 byte:\n // highest 7 bits carry the index, lowest bit carries mps\n this.contexts[0] = (4 << 1) | 0;\n this.contexts[UNIFORM_CONTEXT] = (46 << 1) | 0;\n this.contexts[RUNLENGTH_CONTEXT] = (3 << 1) | 0;\n },\n setNeighborsSignificance:\n function BitModel_setNeighborsSignificance(row, column, index) {\n var neighborsSignificance = this.neighborsSignificance;\n var width = this.width, height = this.height;\n var left = (column > 0);\n var right = (column + 1 < width);\n var i;\n\n if (row > 0) {\n i = index - width;\n if (left) {\n neighborsSignificance[i - 1] += 0x10;\n }\n if (right) {\n neighborsSignificance[i + 1] += 0x10;\n }\n neighborsSignificance[i] += 0x04;\n }\n\n if (row + 1 < height) {\n i = index + width;\n if (left) {\n neighborsSignificance[i - 1] += 0x10;\n }\n if (right) {\n neighborsSignificance[i + 1] += 0x10;\n }\n neighborsSignificance[i] += 0x04;\n }\n\n if (left) {\n neighborsSignificance[index - 1] += 0x01;\n }\n if (right) {\n neighborsSignificance[index + 1] += 0x01;\n }\n neighborsSignificance[index] |= 0x80;\n },\n runSignificancePropogationPass:\n function BitModel_runSignificancePropogationPass() {\n var decoder = this.decoder;\n var width = this.width, height = this.height;\n var coefficentsMagnitude = this.coefficentsMagnitude;\n var coefficentsSign = this.coefficentsSign;\n var neighborsSignificance = this.neighborsSignificance;\n var processingFlags = this.processingFlags;\n var contexts = this.contexts;\n var labels = this.contextLabelTable;\n var bitsDecoded = this.bitsDecoded;\n var processedInverseMask = ~1;\n var processedMask = 1;\n var firstMagnitudeBitMask = 2;\n\n for (var i0 = 0; i0 < height; i0 += 4) {\n for (var j = 0; j < width; j++) {\n var index = i0 * width + j;\n for (var i1 = 0; i1 < 4; i1++, index += width) {\n var i = i0 + i1;\n if (i >= height) {\n break;\n }\n // clear processed flag first\n processingFlags[index] &= processedInverseMask;\n\n if (coefficentsMagnitude[index] ||\n !neighborsSignificance[index]) {\n continue;\n }\n\n var contextLabel = labels[neighborsSignificance[index]];\n var decision = decoder.readBit(contexts, contextLabel);\n if (decision) {\n var sign = this.decodeSignBit(i, j, index);\n coefficentsSign[index] = sign;\n coefficentsMagnitude[index] = 1;\n this.setNeighborsSignificance(i, j, index);\n processingFlags[index] |= firstMagnitudeBitMask;\n }\n bitsDecoded[index]++;\n processingFlags[index] |= processedMask;\n }\n }\n }\n },\n decodeSignBit: function BitModel_decodeSignBit(row, column, index) {\n var width = this.width, height = this.height;\n var coefficentsMagnitude = this.coefficentsMagnitude;\n var coefficentsSign = this.coefficentsSign;\n var contribution, sign0, sign1, significance1;\n var contextLabel, decoded;\n\n // calculate horizontal contribution\n significance1 = (column > 0 && coefficentsMagnitude[index - 1] !== 0);\n if (column + 1 < width && coefficentsMagnitude[index + 1] !== 0) {\n sign1 = coefficentsSign[index + 1];\n if (significance1) {\n sign0 = coefficentsSign[index - 1];\n contribution = 1 - sign1 - sign0;\n } else {\n contribution = 1 - sign1 - sign1;\n }\n } else if (significance1) {\n sign0 = coefficentsSign[index - 1];\n contribution = 1 - sign0 - sign0;\n } else {\n contribution = 0;\n }\n var horizontalContribution = 3 * contribution;\n\n // calculate vertical contribution and combine with the horizontal\n significance1 = (row > 0 && coefficentsMagnitude[index - width] !== 0);\n if (row + 1 < height && coefficentsMagnitude[index + width] !== 0) {\n sign1 = coefficentsSign[index + width];\n if (significance1) {\n sign0 = coefficentsSign[index - width];\n contribution = 1 - sign1 - sign0 + horizontalContribution;\n } else {\n contribution = 1 - sign1 - sign1 + horizontalContribution;\n }\n } else if (significance1) {\n sign0 = coefficentsSign[index - width];\n contribution = 1 - sign0 - sign0 + horizontalContribution;\n } else {\n contribution = horizontalContribution;\n }\n\n if (contribution >= 0) {\n contextLabel = 9 + contribution;\n decoded = this.decoder.readBit(this.contexts, contextLabel);\n } else {\n contextLabel = 9 - contribution;\n decoded = this.decoder.readBit(this.contexts, contextLabel) ^ 1;\n }\n return decoded;\n },\n runMagnitudeRefinementPass:\n function BitModel_runMagnitudeRefinementPass() {\n var decoder = this.decoder;\n var width = this.width, height = this.height;\n var coefficentsMagnitude = this.coefficentsMagnitude;\n var neighborsSignificance = this.neighborsSignificance;\n var contexts = this.contexts;\n var bitsDecoded = this.bitsDecoded;\n var processingFlags = this.processingFlags;\n var processedMask = 1;\n var firstMagnitudeBitMask = 2;\n var length = width * height;\n var width4 = width * 4;\n\n for (var index0 = 0, indexNext; index0 < length; index0 = indexNext) {\n indexNext = Math.min(length, index0 + width4);\n for (var j = 0; j < width; j++) {\n for (var index = index0 + j; index < indexNext; index += width) {\n\n // significant but not those that have just become\n if (!coefficentsMagnitude[index] ||\n (processingFlags[index] & processedMask) !== 0) {\n continue;\n }\n\n var contextLabel = 16;\n if ((processingFlags[index] & firstMagnitudeBitMask) !== 0) {\n processingFlags[index] ^= firstMagnitudeBitMask;\n // first refinement\n var significance = neighborsSignificance[index] & 127;\n contextLabel = significance === 0 ? 15 : 14;\n }\n\n var bit = decoder.readBit(contexts, contextLabel);\n coefficentsMagnitude[index] =\n (coefficentsMagnitude[index] << 1) | bit;\n bitsDecoded[index]++;\n processingFlags[index] |= processedMask;\n }\n }\n }\n },\n runCleanupPass: function BitModel_runCleanupPass() {\n var decoder = this.decoder;\n var width = this.width, height = this.height;\n var neighborsSignificance = this.neighborsSignificance;\n var coefficentsMagnitude = this.coefficentsMagnitude;\n var coefficentsSign = this.coefficentsSign;\n var contexts = this.contexts;\n var labels = this.contextLabelTable;\n var bitsDecoded = this.bitsDecoded;\n var processingFlags = this.processingFlags;\n var processedMask = 1;\n var firstMagnitudeBitMask = 2;\n var oneRowDown = width;\n var twoRowsDown = width * 2;\n var threeRowsDown = width * 3;\n var iNext;\n for (var i0 = 0; i0 < height; i0 = iNext) {\n iNext = Math.min(i0 + 4, height);\n var indexBase = i0 * width;\n var checkAllEmpty = i0 + 3 < height;\n for (var j = 0; j < width; j++) {\n var index0 = indexBase + j;\n // using the property: labels[neighborsSignificance[index]] === 0\n // when neighborsSignificance[index] === 0\n var allEmpty = (checkAllEmpty &&\n processingFlags[index0] === 0 &&\n processingFlags[index0 + oneRowDown] === 0 &&\n processingFlags[index0 + twoRowsDown] === 0 &&\n processingFlags[index0 + threeRowsDown] === 0 &&\n neighborsSignificance[index0] === 0 &&\n neighborsSignificance[index0 + oneRowDown] === 0 &&\n neighborsSignificance[index0 + twoRowsDown] === 0 &&\n neighborsSignificance[index0 + threeRowsDown] === 0);\n var i1 = 0, index = index0;\n var i = i0, sign;\n if (allEmpty) {\n var hasSignificantCoefficent =\n decoder.readBit(contexts, RUNLENGTH_CONTEXT);\n if (!hasSignificantCoefficent) {\n bitsDecoded[index0]++;\n bitsDecoded[index0 + oneRowDown]++;\n bitsDecoded[index0 + twoRowsDown]++;\n bitsDecoded[index0 + threeRowsDown]++;\n continue; // next column\n }\n i1 = (decoder.readBit(contexts, UNIFORM_CONTEXT) << 1) |\n decoder.readBit(contexts, UNIFORM_CONTEXT);\n if (i1 !== 0) {\n i = i0 + i1;\n index += i1 * width;\n }\n\n sign = this.decodeSignBit(i, j, index);\n coefficentsSign[index] = sign;\n coefficentsMagnitude[index] = 1;\n this.setNeighborsSignificance(i, j, index);\n processingFlags[index] |= firstMagnitudeBitMask;\n\n index = index0;\n for (var i2 = i0; i2 <= i; i2++, index += width) {\n bitsDecoded[index]++;\n }\n\n i1++;\n }\n for (i = i0 + i1; i < iNext; i++, index += width) {\n if (coefficentsMagnitude[index] ||\n (processingFlags[index] & processedMask) !== 0) {\n continue;\n }\n\n var contextLabel = labels[neighborsSignificance[index]];\n var decision = decoder.readBit(contexts, contextLabel);\n if (decision === 1) {\n sign = this.decodeSignBit(i, j, index);\n coefficentsSign[index] = sign;\n coefficentsMagnitude[index] = 1;\n this.setNeighborsSignificance(i, j, index);\n processingFlags[index] |= firstMagnitudeBitMask;\n }\n bitsDecoded[index]++;\n }\n }\n }\n },\n checkSegmentationSymbol: function BitModel_checkSegmentationSymbol() {\n var decoder = this.decoder;\n var contexts = this.contexts;\n var symbol = (decoder.readBit(contexts, UNIFORM_CONTEXT) << 3) |\n (decoder.readBit(contexts, UNIFORM_CONTEXT) << 2) |\n (decoder.readBit(contexts, UNIFORM_CONTEXT) << 1) |\n decoder.readBit(contexts, UNIFORM_CONTEXT);\n if (symbol !== 0xA) {\n throw new Error('JPX Error: Invalid segmentation symbol');\n }\n }\n };\n\n return BitModel;\n })();\n\n // Section F, Discrete wavelet transformation\n var Transform = (function TransformClosure() {\n function Transform() {}\n\n Transform.prototype.calculate =\n function transformCalculate(subbands, u0, v0) {\n var ll = subbands[0];\n for (var i = 1, ii = subbands.length; i < ii; i++) {\n ll = this.iterate(ll, subbands[i], u0, v0);\n }\n return ll;\n };\n Transform.prototype.extend = function extend(buffer, offset, size) {\n // Section F.3.7 extending... using max extension of 4\n var i1 = offset - 1, j1 = offset + 1;\n var i2 = offset + size - 2, j2 = offset + size;\n buffer[i1--] = buffer[j1++];\n buffer[j2++] = buffer[i2--];\n buffer[i1--] = buffer[j1++];\n buffer[j2++] = buffer[i2--];\n buffer[i1--] = buffer[j1++];\n buffer[j2++] = buffer[i2--];\n buffer[i1] = buffer[j1];\n buffer[j2] = buffer[i2];\n };\n Transform.prototype.iterate = function Transform_iterate(ll, hl_lh_hh,\n u0, v0) {\n var llWidth = ll.width, llHeight = ll.height, llItems = ll.items;\n var width = hl_lh_hh.width;\n var height = hl_lh_hh.height;\n var items = hl_lh_hh.items;\n var i, j, k, l, u, v;\n\n // Interleave LL according to Section F.3.3\n for (k = 0, i = 0; i < llHeight; i++) {\n l = i * 2 * width;\n for (j = 0; j < llWidth; j++, k++, l += 2) {\n items[l] = llItems[k];\n }\n }\n // The LL band is not needed anymore.\n llItems = ll.items = null;\n\n var bufferPadding = 4;\n var rowBuffer = new Float32Array(width + 2 * bufferPadding);\n\n // Section F.3.4 HOR_SR\n if (width === 1) {\n // if width = 1, when u0 even keep items as is, when odd divide by 2\n if ((u0 & 1) !== 0) {\n for (v = 0, k = 0; v < height; v++, k += width) {\n items[k] *= 0.5;\n }\n }\n } else {\n for (v = 0, k = 0; v < height; v++, k += width) {\n rowBuffer.set(items.subarray(k, k + width), bufferPadding);\n\n this.extend(rowBuffer, bufferPadding, width);\n this.filter(rowBuffer, bufferPadding, width);\n\n items.set(\n rowBuffer.subarray(bufferPadding, bufferPadding + width),\n k);\n }\n }\n\n // Accesses to the items array can take long, because it may not fit into\n // CPU cache and has to be fetched from main memory. Since subsequent\n // accesses to the items array are not local when reading columns, we\n // have a cache miss every time. To reduce cache misses, get up to\n // 'numBuffers' items at a time and store them into the individual\n // buffers. The colBuffers should be small enough to fit into CPU cache.\n var numBuffers = 16;\n var colBuffers = [];\n for (i = 0; i < numBuffers; i++) {\n colBuffers.push(new Float32Array(height + 2 * bufferPadding));\n }\n var b, currentBuffer = 0;\n ll = bufferPadding + height;\n\n // Section F.3.5 VER_SR\n if (height === 1) {\n // if height = 1, when v0 even keep items as is, when odd divide by 2\n if ((v0 & 1) !== 0) {\n for (u = 0; u < width; u++) {\n items[u] *= 0.5;\n }\n }\n } else {\n for (u = 0; u < width; u++) {\n // if we ran out of buffers, copy several image columns at once\n if (currentBuffer === 0) {\n numBuffers = Math.min(width - u, numBuffers);\n for (k = u, l = bufferPadding; l < ll; k += width, l++) {\n for (b = 0; b < numBuffers; b++) {\n colBuffers[b][l] = items[k + b];\n }\n }\n currentBuffer = numBuffers;\n }\n\n currentBuffer--;\n var buffer = colBuffers[currentBuffer];\n this.extend(buffer, bufferPadding, height);\n this.filter(buffer, bufferPadding, height);\n\n // If this is last buffer in this group of buffers, flush all buffers.\n if (currentBuffer === 0) {\n k = u - numBuffers + 1;\n for (l = bufferPadding; l < ll; k += width, l++) {\n for (b = 0; b < numBuffers; b++) {\n items[k + b] = colBuffers[b][l];\n }\n }\n }\n }\n }\n\n return {\n width: width,\n height: height,\n items: items\n };\n };\n return Transform;\n })();\n\n // Section 3.8.2 Irreversible 9-7 filter\n var IrreversibleTransform = (function IrreversibleTransformClosure() {\n function IrreversibleTransform() {\n Transform.call(this);\n }\n\n IrreversibleTransform.prototype = Object.create(Transform.prototype);\n IrreversibleTransform.prototype.filter =\n function irreversibleTransformFilter(x, offset, length) {\n var len = length >> 1;\n offset = offset | 0;\n var j, n, current, next;\n\n var alpha = -1.586134342059924;\n var beta = -0.052980118572961;\n var gamma = 0.882911075530934;\n var delta = 0.443506852043971;\n var K = 1.230174104914001;\n var K_ = 1 / K;\n\n // step 1 is combined with step 3\n\n // step 2\n j = offset - 3;\n for (n = len + 4; n--; j += 2) {\n x[j] *= K_;\n }\n\n // step 1 & 3\n j = offset - 2;\n current = delta * x[j -1];\n for (n = len + 3; n--; j += 2) {\n next = delta * x[j + 1];\n x[j] = K * x[j] - current - next;\n if (n--) {\n j += 2;\n current = delta * x[j + 1];\n x[j] = K * x[j] - current - next;\n } else {\n break;\n }\n }\n\n // step 4\n j = offset - 1;\n current = gamma * x[j - 1];\n for (n = len + 2; n--; j += 2) {\n next = gamma * x[j + 1];\n x[j] -= current + next;\n if (n--) {\n j += 2;\n current = gamma * x[j + 1];\n x[j] -= current + next;\n } else {\n break;\n }\n }\n\n // step 5\n j = offset;\n current = beta * x[j - 1];\n for (n = len + 1; n--; j += 2) {\n next = beta * x[j + 1];\n x[j] -= current + next;\n if (n--) {\n j += 2;\n current = beta * x[j + 1];\n x[j] -= current + next;\n } else {\n break;\n }\n }\n\n // step 6\n if (len !== 0) {\n j = offset + 1;\n current = alpha * x[j - 1];\n for (n = len; n--; j += 2) {\n next = alpha * x[j + 1];\n x[j] -= current + next;\n if (n--) {\n j += 2;\n current = alpha * x[j + 1];\n x[j] -= current + next;\n } else {\n break;\n }\n }\n }\n };\n\n return IrreversibleTransform;\n })();\n\n // Section 3.8.1 Reversible 5-3 filter\n var ReversibleTransform = (function ReversibleTransformClosure() {\n function ReversibleTransform() {\n Transform.call(this);\n }\n\n ReversibleTransform.prototype = Object.create(Transform.prototype);\n ReversibleTransform.prototype.filter =\n function reversibleTransformFilter(x, offset, length) {\n var len = length >> 1;\n offset = offset | 0;\n var j, n;\n\n for (j = offset, n = len + 1; n--; j += 2) {\n x[j] -= (x[j - 1] + x[j + 1] + 2) >> 2;\n }\n\n for (j = offset + 1, n = len; n--; j += 2) {\n x[j] += (x[j - 1] + x[j + 1]) >> 1;\n }\n };\n\n return ReversibleTransform;\n })();\n\n return JpxImage;\n})();\n\n\n/* -*- Mode: Java; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */\n/* vim: set shiftwidth=2 tabstop=2 autoindent cindent expandtab: */\n/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n'use strict';\n\n/* This class implements the QM Coder decoding as defined in\n * JPEG 2000 Part I Final Committee Draft Version 1.0\n * Annex C.3 Arithmetic decoding procedure \n * available at http://www.jpeg.org/public/fcd15444-1.pdf\n * \n * The arithmetic decoder is used in conjunction with context models to decode\n * JPEG2000 and JBIG2 streams.\n */\nvar ArithmeticDecoder = (function ArithmeticDecoderClosure() {\n // Table C-2\n var QeTable = [\n {qe: 0x5601, nmps: 1, nlps: 1, switchFlag: 1},\n {qe: 0x3401, nmps: 2, nlps: 6, switchFlag: 0},\n {qe: 0x1801, nmps: 3, nlps: 9, switchFlag: 0},\n {qe: 0x0AC1, nmps: 4, nlps: 12, switchFlag: 0},\n {qe: 0x0521, nmps: 5, nlps: 29, switchFlag: 0},\n {qe: 0x0221, nmps: 38, nlps: 33, switchFlag: 0},\n {qe: 0x5601, nmps: 7, nlps: 6, switchFlag: 1},\n {qe: 0x5401, nmps: 8, nlps: 14, switchFlag: 0},\n {qe: 0x4801, nmps: 9, nlps: 14, switchFlag: 0},\n {qe: 0x3801, nmps: 10, nlps: 14, switchFlag: 0},\n {qe: 0x3001, nmps: 11, nlps: 17, switchFlag: 0},\n {qe: 0x2401, nmps: 12, nlps: 18, switchFlag: 0},\n {qe: 0x1C01, nmps: 13, nlps: 20, switchFlag: 0},\n {qe: 0x1601, nmps: 29, nlps: 21, switchFlag: 0},\n {qe: 0x5601, nmps: 15, nlps: 14, switchFlag: 1},\n {qe: 0x5401, nmps: 16, nlps: 14, switchFlag: 0},\n {qe: 0x5101, nmps: 17, nlps: 15, switchFlag: 0},\n {qe: 0x4801, nmps: 18, nlps: 16, switchFlag: 0},\n {qe: 0x3801, nmps: 19, nlps: 17, switchFlag: 0},\n {qe: 0x3401, nmps: 20, nlps: 18, switchFlag: 0},\n {qe: 0x3001, nmps: 21, nlps: 19, switchFlag: 0},\n {qe: 0x2801, nmps: 22, nlps: 19, switchFlag: 0},\n {qe: 0x2401, nmps: 23, nlps: 20, switchFlag: 0},\n {qe: 0x2201, nmps: 24, nlps: 21, switchFlag: 0},\n {qe: 0x1C01, nmps: 25, nlps: 22, switchFlag: 0},\n {qe: 0x1801, nmps: 26, nlps: 23, switchFlag: 0},\n {qe: 0x1601, nmps: 27, nlps: 24, switchFlag: 0},\n {qe: 0x1401, nmps: 28, nlps: 25, switchFlag: 0},\n {qe: 0x1201, nmps: 29, nlps: 26, switchFlag: 0},\n {qe: 0x1101, nmps: 30, nlps: 27, switchFlag: 0},\n {qe: 0x0AC1, nmps: 31, nlps: 28, switchFlag: 0},\n {qe: 0x09C1, nmps: 32, nlps: 29, switchFlag: 0},\n {qe: 0x08A1, nmps: 33, nlps: 30, switchFlag: 0},\n {qe: 0x0521, nmps: 34, nlps: 31, switchFlag: 0},\n {qe: 0x0441, nmps: 35, nlps: 32, switchFlag: 0},\n {qe: 0x02A1, nmps: 36, nlps: 33, switchFlag: 0},\n {qe: 0x0221, nmps: 37, nlps: 34, switchFlag: 0},\n {qe: 0x0141, nmps: 38, nlps: 35, switchFlag: 0},\n {qe: 0x0111, nmps: 39, nlps: 36, switchFlag: 0},\n {qe: 0x0085, nmps: 40, nlps: 37, switchFlag: 0},\n {qe: 0x0049, nmps: 41, nlps: 38, switchFlag: 0},\n {qe: 0x0025, nmps: 42, nlps: 39, switchFlag: 0},\n {qe: 0x0015, nmps: 43, nlps: 40, switchFlag: 0},\n {qe: 0x0009, nmps: 44, nlps: 41, switchFlag: 0},\n {qe: 0x0005, nmps: 45, nlps: 42, switchFlag: 0},\n {qe: 0x0001, nmps: 45, nlps: 43, switchFlag: 0},\n {qe: 0x5601, nmps: 46, nlps: 46, switchFlag: 0}\n ];\n\n // C.3.5 Initialisation of the decoder (INITDEC)\n function ArithmeticDecoder(data, start, end) {\n this.data = data;\n this.bp = start;\n this.dataEnd = end;\n\n this.chigh = data[start];\n this.clow = 0;\n\n this.byteIn();\n\n this.chigh = ((this.chigh << 7) & 0xFFFF) | ((this.clow >> 9) & 0x7F);\n this.clow = (this.clow << 7) & 0xFFFF;\n this.ct -= 7;\n this.a = 0x8000;\n }\n\n ArithmeticDecoder.prototype = {\n // C.3.4 Compressed data input (BYTEIN)\n byteIn: function ArithmeticDecoder_byteIn() {\n var data = this.data;\n var bp = this.bp;\n if (data[bp] === 0xFF) {\n var b1 = data[bp + 1];\n if (b1 > 0x8F) {\n this.clow += 0xFF00;\n this.ct = 8;\n } else {\n bp++;\n this.clow += (data[bp] << 9);\n this.ct = 7;\n this.bp = bp;\n }\n } else {\n bp++;\n this.clow += bp < this.dataEnd ? (data[bp] << 8) : 0xFF00;\n this.ct = 8;\n this.bp = bp;\n }\n if (this.clow > 0xFFFF) {\n this.chigh += (this.clow >> 16);\n this.clow &= 0xFFFF;\n }\n },\n // C.3.2 Decoding a decision (DECODE)\n readBit: function ArithmeticDecoder_readBit(contexts, pos) {\n // contexts are packed into 1 byte:\n // highest 7 bits carry cx.index, lowest bit carries cx.mps\n var cx_index = contexts[pos] >> 1, cx_mps = contexts[pos] & 1;\n var qeTableIcx = QeTable[cx_index];\n var qeIcx = qeTableIcx.qe;\n var d;\n var a = this.a - qeIcx;\n\n if (this.chigh < qeIcx) {\n // exchangeLps\n if (a < qeIcx) {\n a = qeIcx;\n d = cx_mps;\n cx_index = qeTableIcx.nmps;\n } else {\n a = qeIcx;\n d = 1 ^ cx_mps;\n if (qeTableIcx.switchFlag === 1) {\n cx_mps = d;\n }\n cx_index = qeTableIcx.nlps;\n }\n } else {\n this.chigh -= qeIcx;\n if ((a & 0x8000) !== 0) {\n this.a = a;\n return cx_mps;\n }\n // exchangeMps\n if (a < qeIcx) {\n d = 1 ^ cx_mps;\n if (qeTableIcx.switchFlag === 1) {\n cx_mps = d;\n }\n cx_index = qeTableIcx.nlps;\n } else {\n d = cx_mps;\n cx_index = qeTableIcx.nmps;\n }\n }\n // C.3.3 renormD;\n do {\n if (this.ct === 0) {\n this.byteIn();\n }\n\n a <<= 1;\n this.chigh = ((this.chigh << 1) & 0xFFFF) | ((this.clow >> 15) & 1);\n this.clow = (this.clow << 1) & 0xFFFF;\n this.ct--;\n } while ((a & 0x8000) === 0);\n this.a = a;\n\n contexts[pos] = cx_index << 1 | cx_mps;\n return d;\n }\n };\n\n return ArithmeticDecoder;\n})();\n\n/* -*- Mode: Java; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */\n/* vim: set shiftwidth=2 tabstop=2 autoindent cindent expandtab: */\n/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/* globals Cmd, ColorSpace, Dict, MozBlobBuilder, Name, PDFJS, Ref, URL,\n Promise */\n\n'use strict';\n\nvar globalScope = (typeof window === 'undefined') ? this : window;\n\nvar isWorker = (typeof window === 'undefined');\n\nvar FONT_IDENTITY_MATRIX = [0.001, 0, 0, 0.001, 0, 0];\n\nvar TextRenderingMode = {\n FILL: 0,\n STROKE: 1,\n FILL_STROKE: 2,\n INVISIBLE: 3,\n FILL_ADD_TO_PATH: 4,\n STROKE_ADD_TO_PATH: 5,\n FILL_STROKE_ADD_TO_PATH: 6,\n ADD_TO_PATH: 7,\n FILL_STROKE_MASK: 3,\n ADD_TO_PATH_FLAG: 4\n};\n\nvar ImageKind = {\n GRAYSCALE_1BPP: 1,\n RGB_24BPP: 2,\n RGBA_32BPP: 3\n};\n\nvar AnnotationType = {\n WIDGET: 1,\n TEXT: 2,\n LINK: 3\n};\n\nvar StreamType = {\n UNKNOWN: 0,\n FLATE: 1,\n LZW: 2,\n DCT: 3,\n JPX: 4,\n JBIG: 5,\n A85: 6,\n AHX: 7,\n CCF: 8,\n RL: 9\n};\n\nvar FontType = {\n UNKNOWN: 0,\n TYPE1: 1,\n TYPE1C: 2,\n CIDFONTTYPE0: 3,\n CIDFONTTYPE0C: 4,\n TRUETYPE: 5,\n CIDFONTTYPE2: 6,\n TYPE3: 7,\n OPENTYPE: 8,\n TYPE0: 9,\n MMTYPE1: 10\n};\n\n// The global PDFJS object exposes the API\n// In production, it will be declared outside a global wrapper\n// In development, it will be declared here\nif (!globalScope.PDFJS) {\n globalScope.PDFJS = {};\n}\n\nglobalScope.PDFJS.pdfBug = false;\n\nPDFJS.VERBOSITY_LEVELS = {\n errors: 0,\n warnings: 1,\n infos: 5\n};\n\n// All the possible operations for an operator list.\nvar OPS = PDFJS.OPS = {\n // Intentionally start from 1 so it is easy to spot bad operators that will be\n // 0's.\n dependency: 1,\n setLineWidth: 2,\n setLineCap: 3,\n setLineJoin: 4,\n setMiterLimit: 5,\n setDash: 6,\n setRenderingIntent: 7,\n setFlatness: 8,\n setGState: 9,\n save: 10,\n restore: 11,\n transform: 12,\n moveTo: 13,\n lineTo: 14,\n curveTo: 15,\n curveTo2: 16,\n curveTo3: 17,\n closePath: 18,\n rectangle: 19,\n stroke: 20,\n closeStroke: 21,\n fill: 22,\n eoFill: 23,\n fillStroke: 24,\n eoFillStroke: 25,\n closeFillStroke: 26,\n closeEOFillStroke: 27,\n endPath: 28,\n clip: 29,\n eoClip: 30,\n beginText: 31,\n endText: 32,\n setCharSpacing: 33,\n setWordSpacing: 34,\n setHScale: 35,\n setLeading: 36,\n setFont: 37,\n setTextRenderingMode: 38,\n setTextRise: 39,\n moveText: 40,\n setLeadingMoveText: 41,\n setTextMatrix: 42,\n nextLine: 43,\n showText: 44,\n showSpacedText: 45,\n nextLineShowText: 46,\n nextLineSetSpacingShowText: 47,\n setCharWidth: 48,\n setCharWidthAndBounds: 49,\n setStrokeColorSpace: 50,\n setFillColorSpace: 51,\n setStrokeColor: 52,\n setStrokeColorN: 53,\n setFillColor: 54,\n setFillColorN: 55,\n setStrokeGray: 56,\n setFillGray: 57,\n setStrokeRGBColor: 58,\n setFillRGBColor: 59,\n setStrokeCMYKColor: 60,\n setFillCMYKColor: 61,\n shadingFill: 62,\n beginInlineImage: 63,\n beginImageData: 64,\n endInlineImage: 65,\n paintXObject: 66,\n markPoint: 67,\n markPointProps: 68,\n beginMarkedContent: 69,\n beginMarkedContentProps: 70,\n endMarkedContent: 71,\n beginCompat: 72,\n endCompat: 73,\n paintFormXObjectBegin: 74,\n paintFormXObjectEnd: 75,\n beginGroup: 76,\n endGroup: 77,\n beginAnnotations: 78,\n endAnnotations: 79,\n beginAnnotation: 80,\n endAnnotation: 81,\n paintJpegXObject: 82,\n paintImageMaskXObject: 83,\n paintImageMaskXObjectGroup: 84,\n paintImageXObject: 85,\n paintInlineImageXObject: 86,\n paintInlineImageXObjectGroup: 87,\n paintImageXObjectRepeat: 88,\n paintImageMaskXObjectRepeat: 89,\n paintSolidColorImageMask: 90,\n constructPath: 91\n};\n\n// A notice for devs. These are good for things that are helpful to devs, such\n// as warning that Workers were disabled, which is important to devs but not\n// end users.\nfunction info(msg) {\n if (PDFJS.verbosity >= PDFJS.VERBOSITY_LEVELS.infos) {\n console.log('Info: ' + msg);\n }\n}\n\n// Non-fatal warnings.\nfunction warn(msg) {\n if (PDFJS.verbosity >= PDFJS.VERBOSITY_LEVELS.warnings) {\n console.log('Warning: ' + msg);\n }\n}\n\n// Fatal errors that should trigger the fallback UI and halt execution by\n// throwing an exception.\nfunction error(msg) {\n // If multiple arguments were passed, pass them all to the log function.\n if (arguments.length > 1) {\n var logArguments = ['Error:'];\n logArguments.push.apply(logArguments, arguments);\n console.log.apply(console, logArguments);\n // Join the arguments into a single string for the lines below.\n msg = [].join.call(arguments, ' ');\n } else {\n console.log('Error: ' + msg);\n }\n console.log(backtrace());\n UnsupportedManager.notify(UNSUPPORTED_FEATURES.unknown);\n throw new Error(msg);\n}\n\nfunction backtrace() {\n try {\n throw new Error();\n } catch (e) {\n return e.stack ? e.stack.split('\\n').slice(2).join('\\n') : '';\n }\n}\n\nfunction assert(cond, msg) {\n if (!cond) {\n error(msg);\n }\n}\n\nvar UNSUPPORTED_FEATURES = PDFJS.UNSUPPORTED_FEATURES = {\n unknown: 'unknown',\n forms: 'forms',\n javaScript: 'javaScript',\n smask: 'smask',\n shadingPattern: 'shadingPattern',\n font: 'font'\n};\n\nvar UnsupportedManager = PDFJS.UnsupportedManager =\n (function UnsupportedManagerClosure() {\n var listeners = [];\n return {\n listen: function (cb) {\n listeners.push(cb);\n },\n notify: function (featureId) {\n warn('Unsupported feature \"' + featureId + '\"');\n for (var i = 0, ii = listeners.length; i < ii; i++) {\n listeners[i](featureId);\n }\n }\n };\n})();\n\n// Combines two URLs. The baseUrl shall be absolute URL. If the url is an\n// absolute URL, it will be returned as is.\nfunction combineUrl(baseUrl, url) {\n if (!url) {\n return baseUrl;\n }\n if (/^[a-z][a-z0-9+\\-.]*:/i.test(url)) {\n return url;\n }\n var i;\n if (url.charAt(0) === '/') {\n // absolute path\n i = baseUrl.indexOf('://');\n if (url.charAt(1) === '/') {\n ++i;\n } else {\n i = baseUrl.indexOf('/', i + 3);\n }\n return baseUrl.substring(0, i) + url;\n } else {\n // relative path\n var pathLength = baseUrl.length;\n i = baseUrl.lastIndexOf('#');\n pathLength = i >= 0 ? i : pathLength;\n i = baseUrl.lastIndexOf('?', pathLength);\n pathLength = i >= 0 ? i : pathLength;\n var prefixLength = baseUrl.lastIndexOf('/', pathLength);\n return baseUrl.substring(0, prefixLength + 1) + url;\n }\n}\n\n// Validates if URL is safe and allowed, e.g. to avoid XSS.\nfunction isValidUrl(url, allowRelative) {\n if (!url) {\n return false;\n }\n // RFC 3986 (http://tools.ietf.org/html/rfc3986#section-3.1)\n // scheme = ALPHA *( ALPHA / DIGIT / \"+\" / \"-\" / \".\" )\n var protocol = /^[a-z][a-z0-9+\\-.]*(?=:)/i.exec(url);\n if (!protocol) {\n return allowRelative;\n }\n protocol = protocol[0].toLowerCase();\n switch (protocol) {\n case 'http':\n case 'https':\n case 'ftp':\n case 'mailto':\n case 'tel':\n return true;\n default:\n return false;\n }\n}\nPDFJS.isValidUrl = isValidUrl;\n\nfunction shadow(obj, prop, value) {\n Object.defineProperty(obj, prop, { value: value,\n enumerable: true,\n configurable: true,\n writable: false });\n return value;\n}\nPDFJS.shadow = shadow;\n\nvar PasswordResponses = PDFJS.PasswordResponses = {\n NEED_PASSWORD: 1,\n INCORRECT_PASSWORD: 2\n};\n\nvar PasswordException = (function PasswordExceptionClosure() {\n function PasswordException(msg, code) {\n this.name = 'PasswordException';\n this.message = msg;\n this.code = code;\n }\n\n PasswordException.prototype = new Error();\n PasswordException.constructor = PasswordException;\n\n return PasswordException;\n})();\nPDFJS.PasswordException = PasswordException;\n\nvar UnknownErrorException = (function UnknownErrorExceptionClosure() {\n function UnknownErrorException(msg, details) {\n this.name = 'UnknownErrorException';\n this.message = msg;\n this.details = details;\n }\n\n UnknownErrorException.prototype = new Error();\n UnknownErrorException.constructor = UnknownErrorException;\n\n return UnknownErrorException;\n})();\nPDFJS.UnknownErrorException = UnknownErrorException;\n\nvar InvalidPDFException = (function InvalidPDFExceptionClosure() {\n function InvalidPDFException(msg) {\n this.name = 'InvalidPDFException';\n this.message = msg;\n }\n\n InvalidPDFException.prototype = new Error();\n InvalidPDFException.constructor = InvalidPDFException;\n\n return InvalidPDFException;\n})();\nPDFJS.InvalidPDFException = InvalidPDFException;\n\nvar MissingPDFException = (function MissingPDFExceptionClosure() {\n function MissingPDFException(msg) {\n this.name = 'MissingPDFException';\n this.message = msg;\n }\n\n MissingPDFException.prototype = new Error();\n MissingPDFException.constructor = MissingPDFException;\n\n return MissingPDFException;\n})();\nPDFJS.MissingPDFException = MissingPDFException;\n\nvar UnexpectedResponseException =\n (function UnexpectedResponseExceptionClosure() {\n function UnexpectedResponseException(msg, status) {\n this.name = 'UnexpectedResponseException';\n this.message = msg;\n this.status = status;\n }\n\n UnexpectedResponseException.prototype = new Error();\n UnexpectedResponseException.constructor = UnexpectedResponseException;\n\n return UnexpectedResponseException;\n})();\nPDFJS.UnexpectedResponseException = UnexpectedResponseException;\n\nvar NotImplementedException = (function NotImplementedExceptionClosure() {\n function NotImplementedException(msg) {\n this.message = msg;\n }\n\n NotImplementedException.prototype = new Error();\n NotImplementedException.prototype.name = 'NotImplementedException';\n NotImplementedException.constructor = NotImplementedException;\n\n return NotImplementedException;\n})();\n\nvar MissingDataException = (function MissingDataExceptionClosure() {\n function MissingDataException(begin, end) {\n this.begin = begin;\n this.end = end;\n this.message = 'Missing data [' + begin + ', ' + end + ')';\n }\n\n MissingDataException.prototype = new Error();\n MissingDataException.prototype.name = 'MissingDataException';\n MissingDataException.constructor = MissingDataException;\n\n return MissingDataException;\n})();\n\nvar XRefParseException = (function XRefParseExceptionClosure() {\n function XRefParseException(msg) {\n this.message = msg;\n }\n\n XRefParseException.prototype = new Error();\n XRefParseException.prototype.name = 'XRefParseException';\n XRefParseException.constructor = XRefParseException;\n\n return XRefParseException;\n})();\n\n\nfunction bytesToString(bytes) {\n assert(bytes !== null && typeof bytes === 'object' &&\n bytes.length !== undefined, 'Invalid argument for bytesToString');\n var length = bytes.length;\n var MAX_ARGUMENT_COUNT = 8192;\n if (length < MAX_ARGUMENT_COUNT) {\n return String.fromCharCode.apply(null, bytes);\n }\n var strBuf = [];\n for (var i = 0; i < length; i += MAX_ARGUMENT_COUNT) {\n var chunkEnd = Math.min(i + MAX_ARGUMENT_COUNT, length);\n var chunk = bytes.subarray(i, chunkEnd);\n strBuf.push(String.fromCharCode.apply(null, chunk));\n }\n return strBuf.join('');\n}\n\nfunction stringToBytes(str) {\n assert(typeof str === 'string', 'Invalid argument for stringToBytes');\n var length = str.length;\n var bytes = new Uint8Array(length);\n for (var i = 0; i < length; ++i) {\n bytes[i] = str.charCodeAt(i) & 0xFF;\n }\n return bytes;\n}\n\nfunction string32(value) {\n return String.fromCharCode((value >> 24) & 0xff, (value >> 16) & 0xff,\n (value >> 8) & 0xff, value & 0xff);\n}\n\nfunction log2(x) {\n var n = 1, i = 0;\n while (x > n) {\n n <<= 1;\n i++;\n }\n return i;\n}\n\nfunction readInt8(data, start) {\n return (data[start] << 24) >> 24;\n}\n\nfunction readUint16(data, offset) {\n return (data[offset] << 8) | data[offset + 1];\n}\n\nfunction readUint32(data, offset) {\n return ((data[offset] << 24) | (data[offset + 1] << 16) |\n (data[offset + 2] << 8) | data[offset + 3]) >>> 0;\n}\n\n// Lazy test the endianness of the platform\n// NOTE: This will be 'true' for simulated TypedArrays\nfunction isLittleEndian() {\n var buffer8 = new Uint8Array(2);\n buffer8[0] = 1;\n var buffer16 = new Uint16Array(buffer8.buffer);\n return (buffer16[0] === 1);\n}\n\nObject.defineProperty(PDFJS, 'isLittleEndian', {\n configurable: true,\n get: function PDFJS_isLittleEndian() {\n return shadow(PDFJS, 'isLittleEndian', isLittleEndian());\n }\n});\n\n//#if !(FIREFOX || MOZCENTRAL || B2G || CHROME)\n//// Lazy test if the userAgant support CanvasTypedArrays\nfunction hasCanvasTypedArrays() {\n var canvas = document.createElement('canvas');\n canvas.width = canvas.height = 1;\n var ctx = canvas.getContext('2d');\n var imageData = ctx.createImageData(1, 1);\n return (typeof imageData.data.buffer !== 'undefined');\n}\n\nObject.defineProperty(PDFJS, 'hasCanvasTypedArrays', {\n configurable: true,\n get: function PDFJS_hasCanvasTypedArrays() {\n return shadow(PDFJS, 'hasCanvasTypedArrays', hasCanvasTypedArrays());\n }\n});\n\nvar Uint32ArrayView = (function Uint32ArrayViewClosure() {\n\n function Uint32ArrayView(buffer, length) {\n this.buffer = buffer;\n this.byteLength = buffer.length;\n this.length = length === undefined ? (this.byteLength >> 2) : length;\n ensureUint32ArrayViewProps(this.length);\n }\n Uint32ArrayView.prototype = Object.create(null);\n\n var uint32ArrayViewSetters = 0;\n function createUint32ArrayProp(index) {\n return {\n get: function () {\n var buffer = this.buffer, offset = index << 2;\n return (buffer[offset] | (buffer[offset + 1] << 8) |\n (buffer[offset + 2] << 16) | (buffer[offset + 3] << 24)) >>> 0;\n },\n set: function (value) {\n var buffer = this.buffer, offset = index << 2;\n buffer[offset] = value & 255;\n buffer[offset + 1] = (value >> 8) & 255;\n buffer[offset + 2] = (value >> 16) & 255;\n buffer[offset + 3] = (value >>> 24) & 255;\n }\n };\n }\n\n function ensureUint32ArrayViewProps(length) {\n while (uint32ArrayViewSetters < length) {\n Object.defineProperty(Uint32ArrayView.prototype,\n uint32ArrayViewSetters,\n createUint32ArrayProp(uint32ArrayViewSetters));\n uint32ArrayViewSetters++;\n }\n }\n\n return Uint32ArrayView;\n})();\n//#else\n//PDFJS.hasCanvasTypedArrays = true;\n//#endif\n\nvar IDENTITY_MATRIX = [1, 0, 0, 1, 0, 0];\n\nvar Util = PDFJS.Util = (function UtilClosure() {\n function Util() {}\n\n var rgbBuf = ['rgb(', 0, ',', 0, ',', 0, ')'];\n\n // makeCssRgb() can be called thousands of times. Using |rgbBuf| avoids\n // creating many intermediate strings.\n Util.makeCssRgb = function Util_makeCssRgb(r, g, b) {\n rgbBuf[1] = r;\n rgbBuf[3] = g;\n rgbBuf[5] = b;\n return rgbBuf.join('');\n };\n\n // Concatenates two transformation matrices together and returns the result.\n Util.transform = function Util_transform(m1, m2) {\n return [\n m1[0] * m2[0] + m1[2] * m2[1],\n m1[1] * m2[0] + m1[3] * m2[1],\n m1[0] * m2[2] + m1[2] * m2[3],\n m1[1] * m2[2] + m1[3] * m2[3],\n m1[0] * m2[4] + m1[2] * m2[5] + m1[4],\n m1[1] * m2[4] + m1[3] * m2[5] + m1[5]\n ];\n };\n\n // For 2d affine transforms\n Util.applyTransform = function Util_applyTransform(p, m) {\n var xt = p[0] * m[0] + p[1] * m[2] + m[4];\n var yt = p[0] * m[1] + p[1] * m[3] + m[5];\n return [xt, yt];\n };\n\n Util.applyInverseTransform = function Util_applyInverseTransform(p, m) {\n var d = m[0] * m[3] - m[1] * m[2];\n var xt = (p[0] * m[3] - p[1] * m[2] + m[2] * m[5] - m[4] * m[3]) / d;\n var yt = (-p[0] * m[1] + p[1] * m[0] + m[4] * m[1] - m[5] * m[0]) / d;\n return [xt, yt];\n };\n\n // Applies the transform to the rectangle and finds the minimum axially\n // aligned bounding box.\n Util.getAxialAlignedBoundingBox =\n function Util_getAxialAlignedBoundingBox(r, m) {\n\n var p1 = Util.applyTransform(r, m);\n var p2 = Util.applyTransform(r.slice(2, 4), m);\n var p3 = Util.applyTransform([r[0], r[3]], m);\n var p4 = Util.applyTransform([r[2], r[1]], m);\n return [\n Math.min(p1[0], p2[0], p3[0], p4[0]),\n Math.min(p1[1], p2[1], p3[1], p4[1]),\n Math.max(p1[0], p2[0], p3[0], p4[0]),\n Math.max(p1[1], p2[1], p3[1], p4[1])\n ];\n };\n\n Util.inverseTransform = function Util_inverseTransform(m) {\n var d = m[0] * m[3] - m[1] * m[2];\n return [m[3] / d, -m[1] / d, -m[2] / d, m[0] / d,\n (m[2] * m[5] - m[4] * m[3]) / d, (m[4] * m[1] - m[5] * m[0]) / d];\n };\n\n // Apply a generic 3d matrix M on a 3-vector v:\n // | a b c | | X |\n // | d e f | x | Y |\n // | g h i | | Z |\n // M is assumed to be serialized as [a,b,c,d,e,f,g,h,i],\n // with v as [X,Y,Z]\n Util.apply3dTransform = function Util_apply3dTransform(m, v) {\n return [\n m[0] * v[0] + m[1] * v[1] + m[2] * v[2],\n m[3] * v[0] + m[4] * v[1] + m[5] * v[2],\n m[6] * v[0] + m[7] * v[1] + m[8] * v[2]\n ];\n };\n\n // This calculation uses Singular Value Decomposition.\n // The SVD can be represented with formula A = USV. We are interested in the\n // matrix S here because it represents the scale values.\n Util.singularValueDecompose2dScale =\n function Util_singularValueDecompose2dScale(m) {\n\n var transpose = [m[0], m[2], m[1], m[3]];\n\n // Multiply matrix m with its transpose.\n var a = m[0] * transpose[0] + m[1] * transpose[2];\n var b = m[0] * transpose[1] + m[1] * transpose[3];\n var c = m[2] * transpose[0] + m[3] * transpose[2];\n var d = m[2] * transpose[1] + m[3] * transpose[3];\n\n // Solve the second degree polynomial to get roots.\n var first = (a + d) / 2;\n var second = Math.sqrt((a + d) * (a + d) - 4 * (a * d - c * b)) / 2;\n var sx = first + second || 1;\n var sy = first - second || 1;\n\n // Scale values are the square roots of the eigenvalues.\n return [Math.sqrt(sx), Math.sqrt(sy)];\n };\n\n // Normalize rectangle rect=[x1, y1, x2, y2] so that (x1,y1) < (x2,y2)\n // For coordinate systems whose origin lies in the bottom-left, this\n // means normalization to (BL,TR) ordering. For systems with origin in the\n // top-left, this means (TL,BR) ordering.\n Util.normalizeRect = function Util_normalizeRect(rect) {\n var r = rect.slice(0); // clone rect\n if (rect[0] > rect[2]) {\n r[0] = rect[2];\n r[2] = rect[0];\n }\n if (rect[1] > rect[3]) {\n r[1] = rect[3];\n r[3] = rect[1];\n }\n return r;\n };\n\n // Returns a rectangle [x1, y1, x2, y2] corresponding to the\n // intersection of rect1 and rect2. If no intersection, returns 'false'\n // The rectangle coordinates of rect1, rect2 should be [x1, y1, x2, y2]\n Util.intersect = function Util_intersect(rect1, rect2) {\n function compare(a, b) {\n return a - b;\n }\n\n // Order points along the axes\n var orderedX = [rect1[0], rect1[2], rect2[0], rect2[2]].sort(compare),\n orderedY = [rect1[1], rect1[3], rect2[1], rect2[3]].sort(compare),\n result = [];\n\n rect1 = Util.normalizeRect(rect1);\n rect2 = Util.normalizeRect(rect2);\n\n // X: first and second points belong to different rectangles?\n if ((orderedX[0] === rect1[0] && orderedX[1] === rect2[0]) ||\n (orderedX[0] === rect2[0] && orderedX[1] === rect1[0])) {\n // Intersection must be between second and third points\n result[0] = orderedX[1];\n result[2] = orderedX[2];\n } else {\n return false;\n }\n\n // Y: first and second points belong to different rectangles?\n if ((orderedY[0] === rect1[1] && orderedY[1] === rect2[1]) ||\n (orderedY[0] === rect2[1] && orderedY[1] === rect1[1])) {\n // Intersection must be between second and third points\n result[1] = orderedY[1];\n result[3] = orderedY[2];\n } else {\n return false;\n }\n\n return result;\n };\n\n Util.sign = function Util_sign(num) {\n return num < 0 ? -1 : 1;\n };\n\n Util.appendToArray = function Util_appendToArray(arr1, arr2) {\n Array.prototype.push.apply(arr1, arr2);\n };\n\n Util.prependToArray = function Util_prependToArray(arr1, arr2) {\n Array.prototype.unshift.apply(arr1, arr2);\n };\n\n Util.extendObj = function extendObj(obj1, obj2) {\n for (var key in obj2) {\n obj1[key] = obj2[key];\n }\n };\n\n Util.getInheritableProperty = function Util_getInheritableProperty(dict,\n name) {\n while (dict && !dict.has(name)) {\n dict = dict.get('Parent');\n }\n if (!dict) {\n return null;\n }\n return dict.get(name);\n };\n\n Util.inherit = function Util_inherit(sub, base, prototype) {\n sub.prototype = Object.create(base.prototype);\n sub.prototype.constructor = sub;\n for (var prop in prototype) {\n sub.prototype[prop] = prototype[prop];\n }\n };\n\n Util.loadScript = function Util_loadScript(src, callback) {\n var script = document.createElement('script');\n var loaded = false;\n script.setAttribute('src', src);\n if (callback) {\n script.onload = function() {\n if (!loaded) {\n callback();\n }\n loaded = true;\n };\n }\n document.getElementsByTagName('head')[0].appendChild(script);\n };\n\n return Util;\n})();\n\n/**\n * PDF page viewport created based on scale, rotation and offset.\n * @class\n * @alias PDFJS.PageViewport\n */\nvar PageViewport = PDFJS.PageViewport = (function PageViewportClosure() {\n /**\n * @constructor\n * @private\n * @param viewBox {Array} xMin, yMin, xMax and yMax coordinates.\n * @param scale {number} scale of the viewport.\n * @param rotation {number} rotations of the viewport in degrees.\n * @param offsetX {number} offset X\n * @param offsetY {number} offset Y\n * @param dontFlip {boolean} if true, axis Y will not be flipped.\n */\n function PageViewport(viewBox, scale, rotation, offsetX, offsetY, dontFlip) {\n this.viewBox = viewBox;\n this.scale = scale;\n this.rotation = rotation;\n this.offsetX = offsetX;\n this.offsetY = offsetY;\n\n // creating transform to convert pdf coordinate system to the normal\n // canvas like coordinates taking in account scale and rotation\n var centerX = (viewBox[2] + viewBox[0]) / 2;\n var centerY = (viewBox[3] + viewBox[1]) / 2;\n var rotateA, rotateB, rotateC, rotateD;\n rotation = rotation % 360;\n rotation = rotation < 0 ? rotation + 360 : rotation;\n switch (rotation) {\n case 180:\n rotateA = -1; rotateB = 0; rotateC = 0; rotateD = 1;\n break;\n case 90:\n rotateA = 0; rotateB = 1; rotateC = 1; rotateD = 0;\n break;\n case 270:\n rotateA = 0; rotateB = -1; rotateC = -1; rotateD = 0;\n break;\n //case 0:\n default:\n rotateA = 1; rotateB = 0; rotateC = 0; rotateD = -1;\n break;\n }\n\n if (dontFlip) {\n rotateC = -rotateC; rotateD = -rotateD;\n }\n\n var offsetCanvasX, offsetCanvasY;\n var width, height;\n if (rotateA === 0) {\n offsetCanvasX = Math.abs(centerY - viewBox[1]) * scale + offsetX;\n offsetCanvasY = Math.abs(centerX - viewBox[0]) * scale + offsetY;\n width = Math.abs(viewBox[3] - viewBox[1]) * scale;\n height = Math.abs(viewBox[2] - viewBox[0]) * scale;\n } else {\n offsetCanvasX = Math.abs(centerX - viewBox[0]) * scale + offsetX;\n offsetCanvasY = Math.abs(centerY - viewBox[1]) * scale + offsetY;\n width = Math.abs(viewBox[2] - viewBox[0]) * scale;\n height = Math.abs(viewBox[3] - viewBox[1]) * scale;\n }\n // creating transform for the following operations:\n // translate(-centerX, -centerY), rotate and flip vertically,\n // scale, and translate(offsetCanvasX, offsetCanvasY)\n this.transform = [\n rotateA * scale,\n rotateB * scale,\n rotateC * scale,\n rotateD * scale,\n offsetCanvasX - rotateA * scale * centerX - rotateC * scale * centerY,\n offsetCanvasY - rotateB * scale * centerX - rotateD * scale * centerY\n ];\n\n this.width = width;\n this.height = height;\n this.fontScale = scale;\n }\n PageViewport.prototype = /** @lends PDFJS.PageViewport.prototype */ {\n /**\n * Clones viewport with additional properties.\n * @param args {Object} (optional) If specified, may contain the 'scale' or\n * 'rotation' properties to override the corresponding properties in\n * the cloned viewport.\n * @returns {PDFJS.PageViewport} Cloned viewport.\n */\n clone: function PageViewPort_clone(args) {\n args = args || {};\n var scale = 'scale' in args ? args.scale : this.scale;\n var rotation = 'rotation' in args ? args.rotation : this.rotation;\n return new PageViewport(this.viewBox.slice(), scale, rotation,\n this.offsetX, this.offsetY, args.dontFlip);\n },\n /**\n * Converts PDF point to the viewport coordinates. For examples, useful for\n * converting PDF location into canvas pixel coordinates.\n * @param x {number} X coordinate.\n * @param y {number} Y coordinate.\n * @returns {Object} Object that contains 'x' and 'y' properties of the\n * point in the viewport coordinate space.\n * @see {@link convertToPdfPoint}\n * @see {@link convertToViewportRectangle}\n */\n convertToViewportPoint: function PageViewport_convertToViewportPoint(x, y) {\n return Util.applyTransform([x, y], this.transform);\n },\n /**\n * Converts PDF rectangle to the viewport coordinates.\n * @param rect {Array} xMin, yMin, xMax and yMax coordinates.\n * @returns {Array} Contains corresponding coordinates of the rectangle\n * in the viewport coordinate space.\n * @see {@link convertToViewportPoint}\n */\n convertToViewportRectangle:\n function PageViewport_convertToViewportRectangle(rect) {\n var tl = Util.applyTransform([rect[0], rect[1]], this.transform);\n var br = Util.applyTransform([rect[2], rect[3]], this.transform);\n return [tl[0], tl[1], br[0], br[1]];\n },\n /**\n * Converts viewport coordinates to the PDF location. For examples, useful\n * for converting canvas pixel location into PDF one.\n * @param x {number} X coordinate.\n * @param y {number} Y coordinate.\n * @returns {Object} Object that contains 'x' and 'y' properties of the\n * point in the PDF coordinate space.\n * @see {@link convertToViewportPoint}\n */\n convertToPdfPoint: function PageViewport_convertToPdfPoint(x, y) {\n return Util.applyInverseTransform([x, y], this.transform);\n }\n };\n return PageViewport;\n})();\n\nvar PDFStringTranslateTable = [\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0x2D8, 0x2C7, 0x2C6, 0x2D9, 0x2DD, 0x2DB, 0x2DA, 0x2DC, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x2022, 0x2020, 0x2021, 0x2026, 0x2014,\n 0x2013, 0x192, 0x2044, 0x2039, 0x203A, 0x2212, 0x2030, 0x201E, 0x201C,\n 0x201D, 0x2018, 0x2019, 0x201A, 0x2122, 0xFB01, 0xFB02, 0x141, 0x152, 0x160,\n 0x178, 0x17D, 0x131, 0x142, 0x153, 0x161, 0x17E, 0, 0x20AC\n];\n\nfunction stringToPDFString(str) {\n var i, n = str.length, strBuf = [];\n if (str[0] === '\\xFE' && str[1] === '\\xFF') {\n // UTF16BE BOM\n for (i = 2; i < n; i += 2) {\n strBuf.push(String.fromCharCode(\n (str.charCodeAt(i) << 8) | str.charCodeAt(i + 1)));\n }\n } else {\n for (i = 0; i < n; ++i) {\n var code = PDFStringTranslateTable[str.charCodeAt(i)];\n strBuf.push(code ? String.fromCharCode(code) : str.charAt(i));\n }\n }\n return strBuf.join('');\n}\n\nfunction stringToUTF8String(str) {\n return decodeURIComponent(escape(str));\n}\n\nfunction isEmptyObj(obj) {\n for (var key in obj) {\n return false;\n }\n return true;\n}\n\nfunction isBool(v) {\n return typeof v === 'boolean';\n}\n\nfunction isInt(v) {\n return typeof v === 'number' && ((v | 0) === v);\n}\n\nfunction isNum(v) {\n return typeof v === 'number';\n}\n\nfunction isString(v) {\n return typeof v === 'string';\n}\n\nfunction isNull(v) {\n return v === null;\n}\n\nfunction isName(v) {\n return v instanceof Name;\n}\n\nfunction isCmd(v, cmd) {\n return v instanceof Cmd && (cmd === undefined || v.cmd === cmd);\n}\n\nfunction isDict(v, type) {\n if (!(v instanceof Dict)) {\n return false;\n }\n if (!type) {\n return true;\n }\n var dictType = v.get('Type');\n return isName(dictType) && dictType.name === type;\n}\n\nfunction isArray(v) {\n return v instanceof Array;\n}\n\nfunction isStream(v) {\n return typeof v === 'object' && v !== null && v.getBytes !== undefined;\n}\n\nfunction isArrayBuffer(v) {\n return typeof v === 'object' && v !== null && v.byteLength !== undefined;\n}\n\nfunction isRef(v) {\n return v instanceof Ref;\n}\n\n/**\n * Promise Capability object.\n *\n * @typedef {Object} PromiseCapability\n * @property {Promise} promise - A promise object.\n * @property {function} resolve - Fullfills the promise.\n * @property {function} reject - Rejects the promise.\n */\n\n/**\n * Creates a promise capability object.\n * @alias PDFJS.createPromiseCapability\n *\n * @return {PromiseCapability} A capability object contains:\n * - a Promise, resolve and reject methods.\n */\nfunction createPromiseCapability() {\n var capability = {};\n capability.promise = new Promise(function (resolve, reject) {\n capability.resolve = resolve;\n capability.reject = reject;\n });\n return capability;\n}\n\nPDFJS.createPromiseCapability = createPromiseCapability;\n\n/**\n * Polyfill for Promises:\n * The following promise implementation tries to generally implement the\n * Promise/A+ spec. Some notable differences from other promise libaries are:\n * - There currently isn't a seperate deferred and promise object.\n * - Unhandled rejections eventually show an error if they aren't handled.\n *\n * Based off of the work in:\n * https://bugzilla.mozilla.org/show_bug.cgi?id=810490\n */\n(function PromiseClosure() {\n if (globalScope.Promise) {\n // Promises existing in the DOM/Worker, checking presence of all/resolve\n if (typeof globalScope.Promise.all !== 'function') {\n globalScope.Promise.all = function (iterable) {\n var count = 0, results = [], resolve, reject;\n var promise = new globalScope.Promise(function (resolve_, reject_) {\n resolve = resolve_;\n reject = reject_;\n });\n iterable.forEach(function (p, i) {\n count++;\n p.then(function (result) {\n results[i] = result;\n count--;\n if (count === 0) {\n resolve(results);\n }\n }, reject);\n });\n if (count === 0) {\n resolve(results);\n }\n return promise;\n };\n }\n if (typeof globalScope.Promise.resolve !== 'function') {\n globalScope.Promise.resolve = function (value) {\n return new globalScope.Promise(function (resolve) { resolve(value); });\n };\n }\n if (typeof globalScope.Promise.reject !== 'function') {\n globalScope.Promise.reject = function (reason) {\n return new globalScope.Promise(function (resolve, reject) {\n reject(reason);\n });\n };\n }\n if (typeof globalScope.Promise.prototype.catch !== 'function') {\n globalScope.Promise.prototype.catch = function (onReject) {\n return globalScope.Promise.prototype.then(undefined, onReject);\n };\n }\n return;\n }\n//#if !MOZCENTRAL\n var STATUS_PENDING = 0;\n var STATUS_RESOLVED = 1;\n var STATUS_REJECTED = 2;\n\n // In an attempt to avoid silent exceptions, unhandled rejections are\n // tracked and if they aren't handled in a certain amount of time an\n // error is logged.\n var REJECTION_TIMEOUT = 500;\n\n var HandlerManager = {\n handlers: [],\n running: false,\n unhandledRejections: [],\n pendingRejectionCheck: false,\n\n scheduleHandlers: function scheduleHandlers(promise) {\n if (promise._status === STATUS_PENDING) {\n return;\n }\n\n this.handlers = this.handlers.concat(promise._handlers);\n promise._handlers = [];\n\n if (this.running) {\n return;\n }\n this.running = true;\n\n setTimeout(this.runHandlers.bind(this), 0);\n },\n\n runHandlers: function runHandlers() {\n var RUN_TIMEOUT = 1; // ms\n var timeoutAt = Date.now() + RUN_TIMEOUT;\n while (this.handlers.length > 0) {\n var handler = this.handlers.shift();\n\n var nextStatus = handler.thisPromise._status;\n var nextValue = handler.thisPromise._value;\n\n try {\n if (nextStatus === STATUS_RESOLVED) {\n if (typeof handler.onResolve === 'function') {\n nextValue = handler.onResolve(nextValue);\n }\n } else if (typeof handler.onReject === 'function') {\n nextValue = handler.onReject(nextValue);\n nextStatus = STATUS_RESOLVED;\n\n if (handler.thisPromise._unhandledRejection) {\n this.removeUnhandeledRejection(handler.thisPromise);\n }\n }\n } catch (ex) {\n nextStatus = STATUS_REJECTED;\n nextValue = ex;\n }\n\n handler.nextPromise._updateStatus(nextStatus, nextValue);\n if (Date.now() >= timeoutAt) {\n break;\n }\n }\n\n if (this.handlers.length > 0) {\n setTimeout(this.runHandlers.bind(this), 0);\n return;\n }\n\n this.running = false;\n },\n\n addUnhandledRejection: function addUnhandledRejection(promise) {\n this.unhandledRejections.push({\n promise: promise,\n time: Date.now()\n });\n this.scheduleRejectionCheck();\n },\n\n removeUnhandeledRejection: function removeUnhandeledRejection(promise) {\n promise._unhandledRejection = false;\n for (var i = 0; i < this.unhandledRejections.length; i++) {\n if (this.unhandledRejections[i].promise === promise) {\n this.unhandledRejections.splice(i);\n i--;\n }\n }\n },\n\n scheduleRejectionCheck: function scheduleRejectionCheck() {\n if (this.pendingRejectionCheck) {\n return;\n }\n this.pendingRejectionCheck = true;\n setTimeout(function rejectionCheck() {\n this.pendingRejectionCheck = false;\n var now = Date.now();\n for (var i = 0; i < this.unhandledRejections.length; i++) {\n if (now - this.unhandledRejections[i].time > REJECTION_TIMEOUT) {\n var unhandled = this.unhandledRejections[i].promise._value;\n var msg = 'Unhandled rejection: ' + unhandled;\n if (unhandled.stack) {\n msg += '\\n' + unhandled.stack;\n }\n warn(msg);\n this.unhandledRejections.splice(i);\n i--;\n }\n }\n if (this.unhandledRejections.length) {\n this.scheduleRejectionCheck();\n }\n }.bind(this), REJECTION_TIMEOUT);\n }\n };\n\n function Promise(resolver) {\n this._status = STATUS_PENDING;\n this._handlers = [];\n try {\n resolver.call(this, this._resolve.bind(this), this._reject.bind(this));\n } catch (e) {\n this._reject(e);\n }\n }\n /**\n * Builds a promise that is resolved when all the passed in promises are\n * resolved.\n * @param {array} array of data and/or promises to wait for.\n * @return {Promise} New dependant promise.\n */\n Promise.all = function Promise_all(promises) {\n var resolveAll, rejectAll;\n var deferred = new Promise(function (resolve, reject) {\n resolveAll = resolve;\n rejectAll = reject;\n });\n var unresolved = promises.length;\n var results = [];\n if (unresolved === 0) {\n resolveAll(results);\n return deferred;\n }\n function reject(reason) {\n if (deferred._status === STATUS_REJECTED) {\n return;\n }\n results = [];\n rejectAll(reason);\n }\n for (var i = 0, ii = promises.length; i < ii; ++i) {\n var promise = promises[i];\n var resolve = (function(i) {\n return function(value) {\n if (deferred._status === STATUS_REJECTED) {\n return;\n }\n results[i] = value;\n unresolved--;\n if (unresolved === 0) {\n resolveAll(results);\n }\n };\n })(i);\n if (Promise.isPromise(promise)) {\n promise.then(resolve, reject);\n } else {\n resolve(promise);\n }\n }\n return deferred;\n };\n\n /**\n * Checks if the value is likely a promise (has a 'then' function).\n * @return {boolean} true if value is thenable\n */\n Promise.isPromise = function Promise_isPromise(value) {\n return value && typeof value.then === 'function';\n };\n\n /**\n * Creates resolved promise\n * @param value resolve value\n * @returns {Promise}\n */\n Promise.resolve = function Promise_resolve(value) {\n return new Promise(function (resolve) { resolve(value); });\n };\n\n /**\n * Creates rejected promise\n * @param reason rejection value\n * @returns {Promise}\n */\n Promise.reject = function Promise_reject(reason) {\n return new Promise(function (resolve, reject) { reject(reason); });\n };\n\n Promise.prototype = {\n _status: null,\n _value: null,\n _handlers: null,\n _unhandledRejection: null,\n\n _updateStatus: function Promise__updateStatus(status, value) {\n if (this._status === STATUS_RESOLVED ||\n this._status === STATUS_REJECTED) {\n return;\n }\n\n if (status === STATUS_RESOLVED &&\n Promise.isPromise(value)) {\n value.then(this._updateStatus.bind(this, STATUS_RESOLVED),\n this._updateStatus.bind(this, STATUS_REJECTED));\n return;\n }\n\n this._status = status;\n this._value = value;\n\n if (status === STATUS_REJECTED && this._handlers.length === 0) {\n this._unhandledRejection = true;\n HandlerManager.addUnhandledRejection(this);\n }\n\n HandlerManager.scheduleHandlers(this);\n },\n\n _resolve: function Promise_resolve(value) {\n this._updateStatus(STATUS_RESOLVED, value);\n },\n\n _reject: function Promise_reject(reason) {\n this._updateStatus(STATUS_REJECTED, reason);\n },\n\n then: function Promise_then(onResolve, onReject) {\n var nextPromise = new Promise(function (resolve, reject) {\n this.resolve = resolve;\n this.reject = reject;\n });\n this._handlers.push({\n thisPromise: this,\n onResolve: onResolve,\n onReject: onReject,\n nextPromise: nextPromise\n });\n HandlerManager.scheduleHandlers(this);\n return nextPromise;\n },\n\n catch: function Promise_catch(onReject) {\n return this.then(undefined, onReject);\n }\n };\n\n globalScope.Promise = Promise;\n//#else\n//throw new Error('DOM Promise is not present');\n//#endif\n})();\n\nvar StatTimer = (function StatTimerClosure() {\n function rpad(str, pad, length) {\n while (str.length < length) {\n str += pad;\n }\n return str;\n }\n function StatTimer() {\n this.started = {};\n this.times = [];\n this.enabled = true;\n }\n StatTimer.prototype = {\n time: function StatTimer_time(name) {\n if (!this.enabled) {\n return;\n }\n if (name in this.started) {\n warn('Timer is already running for ' + name);\n }\n this.started[name] = Date.now();\n },\n timeEnd: function StatTimer_timeEnd(name) {\n if (!this.enabled) {\n return;\n }\n if (!(name in this.started)) {\n warn('Timer has not been started for ' + name);\n }\n this.times.push({\n 'name': name,\n 'start': this.started[name],\n 'end': Date.now()\n });\n // Remove timer from started so it can be called again.\n delete this.started[name];\n },\n toString: function StatTimer_toString() {\n var i, ii;\n var times = this.times;\n var out = '';\n // Find the longest name for padding purposes.\n var longest = 0;\n for (i = 0, ii = times.length; i < ii; ++i) {\n var name = times[i]['name'];\n if (name.length > longest) {\n longest = name.length;\n }\n }\n for (i = 0, ii = times.length; i < ii; ++i) {\n var span = times[i];\n var duration = span.end - span.start;\n out += rpad(span['name'], ' ', longest) + ' ' + duration + 'ms\\n';\n }\n return out;\n }\n };\n return StatTimer;\n})();\n\nPDFJS.createBlob = function createBlob(data, contentType) {\n if (typeof Blob !== 'undefined') {\n return new Blob([data], { type: contentType });\n }\n // Blob builder is deprecated in FF14 and removed in FF18.\n var bb = new MozBlobBuilder();\n bb.append(data);\n return bb.getBlob(contentType);\n};\n\nPDFJS.createObjectURL = (function createObjectURLClosure() {\n // Blob/createObjectURL is not available, falling back to data schema.\n var digits =\n 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';\n\n return function createObjectURL(data, contentType) {\n if (!PDFJS.disableCreateObjectURL &&\n typeof URL !== 'undefined' && URL.createObjectURL) {\n var blob = PDFJS.createBlob(data, contentType);\n return URL.createObjectURL(blob);\n }\n\n var buffer = 'data:' + contentType + ';base64,';\n for (var i = 0, ii = data.length; i < ii; i += 3) {\n var b1 = data[i] & 0xFF;\n var b2 = data[i + 1] & 0xFF;\n var b3 = data[i + 2] & 0xFF;\n var d1 = b1 >> 2, d2 = ((b1 & 3) << 4) | (b2 >> 4);\n var d3 = i + 1 < ii ? ((b2 & 0xF) << 2) | (b3 >> 6) : 64;\n var d4 = i + 2 < ii ? (b3 & 0x3F) : 64;\n buffer += digits[d1] + digits[d2] + digits[d3] + digits[d4];\n }\n return buffer;\n };\n})();\n\nfunction MessageHandler(name, comObj) {\n this.name = name;\n this.comObj = comObj;\n this.callbackIndex = 1;\n this.postMessageTransfers = true;\n var callbacksCapabilities = this.callbacksCapabilities = {};\n var ah = this.actionHandler = {};\n\n ah['console_log'] = [function ahConsoleLog(data) {\n console.log.apply(console, data);\n }];\n ah['console_error'] = [function ahConsoleError(data) {\n console.error.apply(console, data);\n }];\n ah['_unsupported_feature'] = [function ah_unsupportedFeature(data) {\n UnsupportedManager.notify(data);\n }];\n\n comObj.onmessage = function messageHandlerComObjOnMessage(event) {\n var data = event.data;\n if (data.isReply) {\n var callbackId = data.callbackId;\n if (data.callbackId in callbacksCapabilities) {\n var callback = callbacksCapabilities[callbackId];\n delete callbacksCapabilities[callbackId];\n if ('error' in data) {\n callback.reject(data.error);\n } else {\n callback.resolve(data.data);\n }\n } else {\n error('Cannot resolve callback ' + callbackId);\n }\n } else if (data.action in ah) {\n var action = ah[data.action];\n if (data.callbackId) {\n Promise.resolve().then(function () {\n return action[0].call(action[1], data.data);\n }).then(function (result) {\n comObj.postMessage({\n isReply: true,\n callbackId: data.callbackId,\n data: result\n });\n }, function (reason) {\n comObj.postMessage({\n isReply: true,\n callbackId: data.callbackId,\n error: reason\n });\n });\n } else {\n action[0].call(action[1], data.data);\n }\n } else {\n error('Unknown action from worker: ' + data.action);\n }\n };\n}\n\nMessageHandler.prototype = {\n on: function messageHandlerOn(actionName, handler, scope) {\n var ah = this.actionHandler;\n if (ah[actionName]) {\n error('There is already an actionName called \"' + actionName + '\"');\n }\n ah[actionName] = [handler, scope];\n },\n /**\n * Sends a message to the comObj to invoke the action with the supplied data.\n * @param {String} actionName Action to call.\n * @param {JSON} data JSON data to send.\n * @param {Array} [transfers] Optional list of transfers/ArrayBuffers\n */\n send: function messageHandlerSend(actionName, data, transfers) {\n var message = {\n action: actionName,\n data: data\n };\n this.postMessage(message, transfers);\n },\n /**\n * Sends a message to the comObj to invoke the action with the supplied data.\n * Expects that other side will callback with the response.\n * @param {String} actionName Action to call.\n * @param {JSON} data JSON data to send.\n * @param {Array} [transfers] Optional list of transfers/ArrayBuffers.\n * @returns {Promise} Promise to be resolved with response data.\n */\n sendWithPromise:\n function messageHandlerSendWithPromise(actionName, data, transfers) {\n var callbackId = this.callbackIndex++;\n var message = {\n action: actionName,\n data: data,\n callbackId: callbackId\n };\n var capability = createPromiseCapability();\n this.callbacksCapabilities[callbackId] = capability;\n try {\n this.postMessage(message, transfers);\n } catch (e) {\n capability.reject(e);\n }\n return capability.promise;\n },\n /**\n * Sends raw message to the comObj.\n * @private\n * @param message {Object} Raw message.\n * @param transfers List of transfers/ArrayBuffers, or undefined.\n */\n postMessage: function (message, transfers) {\n if (transfers && this.postMessageTransfers) {\n this.comObj.postMessage(message, transfers);\n } else {\n this.comObj.postMessage(message);\n }\n }\n};\n\nvar moduleType = typeof module;\nif ((moduleType !== 'undefined') && module.exports) {\n module.exports = JpxImage;\n}\n\nfunction loadJpegStream(id, imageUrl, objs) {\n var img = new Image();\n img.onload = (function loadJpegStream_onloadClosure() {\n objs.resolve(id, img);\n });\n img.onerror = (function loadJpegStream_onerrorClosure() {\n objs.resolve(id, null);\n warn('Error during JPEG image loading');\n });\n img.src = imageUrl;\n}","/*! OpenJPEG.js - v0.10.1 - 2018-03-13 | (c) 2016 Chris Hafey | https://github.com/chafey/openjpeg */\nvar OpenJPEG = function(OpenJPEG) {\n OpenJPEG = OpenJPEG || {};\n\nvar Module=typeof OpenJPEG!==\"undefined\"?OpenJPEG:{};var moduleOverrides={};var key;for(key in Module){if(Module.hasOwnProperty(key)){moduleOverrides[key]=Module[key]}}Module[\"arguments\"]=[];Module[\"thisProgram\"]=\"./this.program\";Module[\"quit\"]=(function(status,toThrow){throw toThrow});Module[\"preRun\"]=[];Module[\"postRun\"]=[];var ENVIRONMENT_IS_WEB=false;var ENVIRONMENT_IS_WORKER=false;var ENVIRONMENT_IS_NODE=false;var ENVIRONMENT_IS_SHELL=false;if(Module[\"ENVIRONMENT\"]){if(Module[\"ENVIRONMENT\"]===\"WEB\"){ENVIRONMENT_IS_WEB=true}else if(Module[\"ENVIRONMENT\"]===\"WORKER\"){ENVIRONMENT_IS_WORKER=true}else if(Module[\"ENVIRONMENT\"]===\"NODE\"){ENVIRONMENT_IS_NODE=true}else if(Module[\"ENVIRONMENT\"]===\"SHELL\"){ENVIRONMENT_IS_SHELL=true}else{throw new Error(\"Module['ENVIRONMENT'] value is not valid. must be one of: WEB|WORKER|NODE|SHELL.\")}}else{ENVIRONMENT_IS_WEB=typeof window===\"object\";ENVIRONMENT_IS_WORKER=typeof importScripts===\"function\";ENVIRONMENT_IS_NODE=typeof process===\"object\"&&typeof require===\"function\"&&!ENVIRONMENT_IS_WEB&&!ENVIRONMENT_IS_WORKER;ENVIRONMENT_IS_SHELL=!ENVIRONMENT_IS_WEB&&!ENVIRONMENT_IS_NODE&&!ENVIRONMENT_IS_WORKER}if(ENVIRONMENT_IS_NODE){var nodeFS;var nodePath;Module[\"read\"]=function shell_read(filename,binary){var ret;ret=tryParseAsDataURI(filename);if(!ret){if(!nodeFS)nodeFS=require(\"fs\");if(!nodePath)nodePath=require(\"path\");filename=nodePath[\"normalize\"](filename);ret=nodeFS[\"readFileSync\"](filename)}return binary?ret:ret.toString()};Module[\"readBinary\"]=function readBinary(filename){var ret=Module[\"read\"](filename,true);if(!ret.buffer){ret=new Uint8Array(ret)}assert(ret.buffer);return ret};if(process[\"argv\"].length>1){Module[\"thisProgram\"]=process[\"argv\"][1].replace(/\\\\/g,\"/\")}Module[\"arguments\"]=process[\"argv\"].slice(2);process[\"on\"](\"uncaughtException\",(function(ex){if(!(ex instanceof ExitStatus)){throw ex}}));process[\"on\"](\"unhandledRejection\",(function(reason,p){process[\"exit\"](1)}));Module[\"inspect\"]=(function(){return\"[Emscripten Module object]\"})}else if(ENVIRONMENT_IS_SHELL){if(typeof read!=\"undefined\"){Module[\"read\"]=function shell_read(f){var data=tryParseAsDataURI(f);if(data){return intArrayToString(data)}return read(f)}}Module[\"readBinary\"]=function readBinary(f){var data;data=tryParseAsDataURI(f);if(data){return data}if(typeof readbuffer===\"function\"){return new Uint8Array(readbuffer(f))}data=read(f,\"binary\");assert(typeof data===\"object\");return data};if(typeof scriptArgs!=\"undefined\"){Module[\"arguments\"]=scriptArgs}else if(typeof arguments!=\"undefined\"){Module[\"arguments\"]=arguments}if(typeof quit===\"function\"){Module[\"quit\"]=(function(status,toThrow){quit(status)})}}else if(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER){Module[\"read\"]=function shell_read(url){try{var xhr=new XMLHttpRequest;xhr.open(\"GET\",url,false);xhr.send(null);return xhr.responseText}catch(err){var data=tryParseAsDataURI(url);if(data){return intArrayToString(data)}throw err}};if(ENVIRONMENT_IS_WORKER){Module[\"readBinary\"]=function readBinary(url){try{var xhr=new XMLHttpRequest;xhr.open(\"GET\",url,false);xhr.responseType=\"arraybuffer\";xhr.send(null);return new Uint8Array(xhr.response)}catch(err){var data=tryParseAsDataURI(url);if(data){return data}throw err}}}Module[\"readAsync\"]=function readAsync(url,onload,onerror){var xhr=new XMLHttpRequest;xhr.open(\"GET\",url,true);xhr.responseType=\"arraybuffer\";xhr.onload=function xhr_onload(){if(xhr.status==200||xhr.status==0&&xhr.response){onload(xhr.response);return}var data=tryParseAsDataURI(url);if(data){onload(data.buffer);return}onerror()};xhr.onerror=onerror;xhr.send(null)};if(typeof arguments!=\"undefined\"){Module[\"arguments\"]=arguments}Module[\"setWindowTitle\"]=(function(title){document.title=title})}Module[\"print\"]=typeof console!==\"undefined\"?console.log.bind(console):typeof print!==\"undefined\"?print:null;Module[\"printErr\"]=typeof printErr!==\"undefined\"?printErr:typeof console!==\"undefined\"&&console.warn.bind(console)||Module[\"print\"];Module.print=Module[\"print\"];Module.printErr=Module[\"printErr\"];for(key in moduleOverrides){if(moduleOverrides.hasOwnProperty(key)){Module[key]=moduleOverrides[key]}}moduleOverrides=undefined;var STACK_ALIGN=16;function staticAlloc(size){assert(!staticSealed);var ret=STATICTOP;STATICTOP=STATICTOP+size+15&-16;return ret}function dynamicAlloc(size){assert(DYNAMICTOP_PTR);var ret=HEAP32[DYNAMICTOP_PTR>>2];var end=ret+size+15&-16;HEAP32[DYNAMICTOP_PTR>>2]=end;if(end>=TOTAL_MEMORY){var success=enlargeMemory();if(!success){HEAP32[DYNAMICTOP_PTR>>2]=ret;return 0}}return ret}function alignMemory(size,factor){if(!factor)factor=STACK_ALIGN;var ret=size=Math.ceil(size/factor)*factor;return ret}function getNativeTypeSize(type){switch(type){case\"i1\":case\"i8\":return 1;case\"i16\":return 2;case\"i32\":return 4;case\"i64\":return 8;case\"float\":return 4;case\"double\":return 8;default:{if(type[type.length-1]===\"*\"){return 4}else if(type[0]===\"i\"){var bits=parseInt(type.substr(1));assert(bits%8===0);return bits/8}else{return 0}}}}function warnOnce(text){if(!warnOnce.shown)warnOnce.shown={};if(!warnOnce.shown[text]){warnOnce.shown[text]=1;Module.printErr(text)}}var jsCallStartIndex=1;var functionPointers=new Array(0);var funcWrappers={};function dynCall(sig,ptr,args){if(args&&args.length){return Module[\"dynCall_\"+sig].apply(null,[ptr].concat(args))}else{return Module[\"dynCall_\"+sig].call(null,ptr)}}var GLOBAL_BASE=8;var ABORT=0;var EXITSTATUS=0;function assert(condition,text){if(!condition){abort(\"Assertion failed: \"+text)}}function getCFunc(ident){var func=Module[\"_\"+ident];assert(func,\"Cannot call unknown function \"+ident+\", make sure it is exported\");return func}var JSfuncs={\"stackSave\":(function(){stackSave()}),\"stackRestore\":(function(){stackRestore()}),\"arrayToC\":(function(arr){var ret=stackAlloc(arr.length);writeArrayToMemory(arr,ret);return ret}),\"stringToC\":(function(str){var ret=0;if(str!==null&&str!==undefined&&str!==0){var len=(str.length<<2)+1;ret=stackAlloc(len);stringToUTF8(str,ret,len)}return ret})};var toC={\"string\":JSfuncs[\"stringToC\"],\"array\":JSfuncs[\"arrayToC\"]};function ccall(ident,returnType,argTypes,args,opts){var func=getCFunc(ident);var cArgs=[];var stack=0;if(args){for(var i=0;i>0]=value;break;case\"i8\":HEAP8[ptr>>0]=value;break;case\"i16\":HEAP16[ptr>>1]=value;break;case\"i32\":HEAP32[ptr>>2]=value;break;case\"i64\":tempI64=[value>>>0,(tempDouble=value,+Math_abs(tempDouble)>=+1?tempDouble>+0?(Math_min(+Math_floor(tempDouble/+4294967296),+4294967295)|0)>>>0:~~+Math_ceil((tempDouble- +(~~tempDouble>>>0))/+4294967296)>>>0:0)],HEAP32[ptr>>2]=tempI64[0],HEAP32[ptr+4>>2]=tempI64[1];break;case\"float\":HEAPF32[ptr>>2]=value;break;case\"double\":HEAPF64[ptr>>3]=value;break;default:abort(\"invalid type for setValue: \"+type)}}function getValue(ptr,type,noSafe){type=type||\"i8\";if(type.charAt(type.length-1)===\"*\")type=\"i32\";switch(type){case\"i1\":return HEAP8[ptr>>0];case\"i8\":return HEAP8[ptr>>0];case\"i16\":return HEAP16[ptr>>1];case\"i32\":return HEAP32[ptr>>2];case\"i64\":return HEAP32[ptr>>2];case\"float\":return HEAPF32[ptr>>2];case\"double\":return HEAPF64[ptr>>3];default:abort(\"invalid type for getValue: \"+type)}return null}var ALLOC_STATIC=2;var ALLOC_NONE=4;function allocate(slab,types,allocator,ptr){var zeroinit,size;if(typeof slab===\"number\"){zeroinit=true;size=slab}else{zeroinit=false;size=slab.length}var singleType=typeof types===\"string\"?types:null;var ret;if(allocator==ALLOC_NONE){ret=ptr}else{ret=[typeof _malloc===\"function\"?_malloc:staticAlloc,stackAlloc,staticAlloc,dynamicAlloc][allocator===undefined?ALLOC_STATIC:allocator](Math.max(size,singleType?1:types.length))}if(zeroinit){var stop;ptr=ret;assert((ret&3)==0);stop=ret+(size&~3);for(;ptr>2]=0}stop=ret+size;while(ptr>0]=0}return ret}if(singleType===\"i8\"){if(slab.subarray||slab.slice){HEAPU8.set(slab,ret)}else{HEAPU8.set(new Uint8Array(slab),ret)}return ret}var i=0,type,typeSize,previousType;while(i>0];hasUtf|=t;if(t==0&&!length)break;i++;if(length&&i==length)break}if(!length)length=i;var ret=\"\";if(hasUtf<128){var MAX_CHUNK=1024;var curr;while(length>0){curr=String.fromCharCode.apply(String,HEAPU8.subarray(ptr,ptr+Math.min(length,MAX_CHUNK)));ret=ret?ret+curr:curr;ptr+=MAX_CHUNK;length-=MAX_CHUNK}return ret}return UTF8ToString(ptr)}var UTF8Decoder=typeof TextDecoder!==\"undefined\"?new TextDecoder(\"utf8\"):undefined;function UTF8ArrayToString(u8Array,idx){var endPtr=idx;while(u8Array[endPtr])++endPtr;if(endPtr-idx>16&&u8Array.subarray&&UTF8Decoder){return UTF8Decoder.decode(u8Array.subarray(idx,endPtr))}else{var u0,u1,u2,u3,u4,u5;var str=\"\";while(1){u0=u8Array[idx++];if(!u0)return str;if(!(u0&128)){str+=String.fromCharCode(u0);continue}u1=u8Array[idx++]&63;if((u0&224)==192){str+=String.fromCharCode((u0&31)<<6|u1);continue}u2=u8Array[idx++]&63;if((u0&240)==224){u0=(u0&15)<<12|u1<<6|u2}else{u3=u8Array[idx++]&63;if((u0&248)==240){u0=(u0&7)<<18|u1<<12|u2<<6|u3}else{u4=u8Array[idx++]&63;if((u0&252)==248){u0=(u0&3)<<24|u1<<18|u2<<12|u3<<6|u4}else{u5=u8Array[idx++]&63;u0=(u0&1)<<30|u1<<24|u2<<18|u3<<12|u4<<6|u5}}}if(u0<65536){str+=String.fromCharCode(u0)}else{var ch=u0-65536;str+=String.fromCharCode(55296|ch>>10,56320|ch&1023)}}}}function UTF8ToString(ptr){return UTF8ArrayToString(HEAPU8,ptr)}function stringToUTF8Array(str,outU8Array,outIdx,maxBytesToWrite){if(!(maxBytesToWrite>0))return 0;var startIdx=outIdx;var endIdx=outIdx+maxBytesToWrite-1;for(var i=0;i=55296&&u<=57343)u=65536+((u&1023)<<10)|str.charCodeAt(++i)&1023;if(u<=127){if(outIdx>=endIdx)break;outU8Array[outIdx++]=u}else if(u<=2047){if(outIdx+1>=endIdx)break;outU8Array[outIdx++]=192|u>>6;outU8Array[outIdx++]=128|u&63}else if(u<=65535){if(outIdx+2>=endIdx)break;outU8Array[outIdx++]=224|u>>12;outU8Array[outIdx++]=128|u>>6&63;outU8Array[outIdx++]=128|u&63}else if(u<=2097151){if(outIdx+3>=endIdx)break;outU8Array[outIdx++]=240|u>>18;outU8Array[outIdx++]=128|u>>12&63;outU8Array[outIdx++]=128|u>>6&63;outU8Array[outIdx++]=128|u&63}else if(u<=67108863){if(outIdx+4>=endIdx)break;outU8Array[outIdx++]=248|u>>24;outU8Array[outIdx++]=128|u>>18&63;outU8Array[outIdx++]=128|u>>12&63;outU8Array[outIdx++]=128|u>>6&63;outU8Array[outIdx++]=128|u&63}else{if(outIdx+5>=endIdx)break;outU8Array[outIdx++]=252|u>>30;outU8Array[outIdx++]=128|u>>24&63;outU8Array[outIdx++]=128|u>>18&63;outU8Array[outIdx++]=128|u>>12&63;outU8Array[outIdx++]=128|u>>6&63;outU8Array[outIdx++]=128|u&63}}outU8Array[outIdx]=0;return outIdx-startIdx}function stringToUTF8(str,outPtr,maxBytesToWrite){return stringToUTF8Array(str,HEAPU8,outPtr,maxBytesToWrite)}function lengthBytesUTF8(str){var len=0;for(var i=0;i=55296&&u<=57343)u=65536+((u&1023)<<10)|str.charCodeAt(++i)&1023;if(u<=127){++len}else if(u<=2047){len+=2}else if(u<=65535){len+=3}else if(u<=2097151){len+=4}else if(u<=67108863){len+=5}else{len+=6}}return len}var UTF16Decoder=typeof TextDecoder!==\"undefined\"?new TextDecoder(\"utf-16le\"):undefined;function demangle(func){return func}function demangleAll(text){var regex=/__Z[\\w\\d_]+/g;return text.replace(regex,(function(x){var y=demangle(x);return x===y?x:x+\" [\"+y+\"]\"}))}function jsStackTrace(){var err=new Error;if(!err.stack){try{throw new Error(0)}catch(e){err=e}if(!err.stack){return\"(no stack trace available)\"}}return err.stack.toString()}var WASM_PAGE_SIZE=65536;var ASMJS_PAGE_SIZE=16777216;var MIN_TOTAL_MEMORY=16777216;function alignUp(x,multiple){if(x%multiple>0){x+=multiple-x%multiple}return x}var buffer,HEAP8,HEAPU8,HEAP16,HEAPU16,HEAP32,HEAPU32,HEAPF32,HEAPF64;function updateGlobalBuffer(buf){Module[\"buffer\"]=buffer=buf}function updateGlobalBufferViews(){Module[\"HEAP8\"]=HEAP8=new Int8Array(buffer);Module[\"HEAP16\"]=HEAP16=new Int16Array(buffer);Module[\"HEAP32\"]=HEAP32=new Int32Array(buffer);Module[\"HEAPU8\"]=HEAPU8=new Uint8Array(buffer);Module[\"HEAPU16\"]=HEAPU16=new Uint16Array(buffer);Module[\"HEAPU32\"]=HEAPU32=new Uint32Array(buffer);Module[\"HEAPF32\"]=HEAPF32=new Float32Array(buffer);Module[\"HEAPF64\"]=HEAPF64=new Float64Array(buffer)}var STATIC_BASE,STATICTOP,staticSealed;var STACK_BASE,STACKTOP,STACK_MAX;var DYNAMIC_BASE,DYNAMICTOP_PTR;STATIC_BASE=STATICTOP=STACK_BASE=STACKTOP=STACK_MAX=DYNAMIC_BASE=DYNAMICTOP_PTR=0;staticSealed=false;function abortOnCannotGrowMemory(){abort(\"Cannot enlarge memory arrays. Either (1) compile with -s TOTAL_MEMORY=X with X higher than the current value \"+TOTAL_MEMORY+\", (2) compile with -s ALLOW_MEMORY_GROWTH=1 which allows increasing the size at runtime but prevents some optimizations, (3) set Module.TOTAL_MEMORY to a higher value before the program runs, or (4) if you want malloc to return NULL (0) instead of this abort, compile with -s ABORTING_MALLOC=0 \")}if(!Module[\"reallocBuffer\"])Module[\"reallocBuffer\"]=(function(size){var ret;try{if(ArrayBuffer.transfer){ret=ArrayBuffer.transfer(buffer,size)}else{var oldHEAP8=HEAP8;ret=new ArrayBuffer(size);var temp=new Int8Array(ret);temp.set(oldHEAP8)}}catch(e){return false}var success=_emscripten_replace_memory(ret);if(!success)return false;return ret});function enlargeMemory(){var PAGE_MULTIPLE=Module[\"usingWasm\"]?WASM_PAGE_SIZE:ASMJS_PAGE_SIZE;var LIMIT=2147483648-PAGE_MULTIPLE;if(HEAP32[DYNAMICTOP_PTR>>2]>LIMIT){return false}var OLD_TOTAL_MEMORY=TOTAL_MEMORY;TOTAL_MEMORY=Math.max(TOTAL_MEMORY,MIN_TOTAL_MEMORY);while(TOTAL_MEMORY>2]){if(TOTAL_MEMORY<=536870912){TOTAL_MEMORY=alignUp(2*TOTAL_MEMORY,PAGE_MULTIPLE)}else{TOTAL_MEMORY=Math.min(alignUp((3*TOTAL_MEMORY+2147483648)/4,PAGE_MULTIPLE),LIMIT)}}var replacement=Module[\"reallocBuffer\"](TOTAL_MEMORY);if(!replacement||replacement.byteLength!=TOTAL_MEMORY){TOTAL_MEMORY=OLD_TOTAL_MEMORY;return false}updateGlobalBuffer(replacement);updateGlobalBufferViews();return true}var byteLength;try{byteLength=Function.prototype.call.bind(Object.getOwnPropertyDescriptor(ArrayBuffer.prototype,\"byteLength\").get);byteLength(new ArrayBuffer(4))}catch(e){byteLength=(function(buffer){return buffer.byteLength})}var TOTAL_STACK=Module[\"TOTAL_STACK\"]||5242880;var TOTAL_MEMORY=Module[\"TOTAL_MEMORY\"]||16777216;if(TOTAL_MEMORY0){var callback=callbacks.shift();if(typeof callback==\"function\"){callback();continue}var func=callback.func;if(typeof func===\"number\"){if(callback.arg===undefined){Module[\"dynCall_v\"](func)}else{Module[\"dynCall_vi\"](func,callback.arg)}}else{func(callback.arg===undefined?null:callback.arg)}}}var __ATPRERUN__=[];var __ATINIT__=[];var __ATMAIN__=[];var __ATEXIT__=[];var __ATPOSTRUN__=[];var runtimeInitialized=false;var runtimeExited=false;function preRun(){if(Module[\"preRun\"]){if(typeof Module[\"preRun\"]==\"function\")Module[\"preRun\"]=[Module[\"preRun\"]];while(Module[\"preRun\"].length){addOnPreRun(Module[\"preRun\"].shift())}}callRuntimeCallbacks(__ATPRERUN__)}function ensureInitRuntime(){if(runtimeInitialized)return;runtimeInitialized=true;callRuntimeCallbacks(__ATINIT__)}function preMain(){callRuntimeCallbacks(__ATMAIN__)}function exitRuntime(){callRuntimeCallbacks(__ATEXIT__);runtimeExited=true}function postRun(){if(Module[\"postRun\"]){if(typeof Module[\"postRun\"]==\"function\")Module[\"postRun\"]=[Module[\"postRun\"]];while(Module[\"postRun\"].length){addOnPostRun(Module[\"postRun\"].shift())}}callRuntimeCallbacks(__ATPOSTRUN__)}function addOnPreRun(cb){__ATPRERUN__.unshift(cb)}function addOnPostRun(cb){__ATPOSTRUN__.unshift(cb)}function writeArrayToMemory(array,buffer){HEAP8.set(array,buffer)}function writeAsciiToMemory(str,buffer,dontAddNull){for(var i=0;i>0]=str.charCodeAt(i)}if(!dontAddNull)HEAP8[buffer>>0]=0}var Math_abs=Math.abs;var Math_cos=Math.cos;var Math_sin=Math.sin;var Math_tan=Math.tan;var Math_acos=Math.acos;var Math_asin=Math.asin;var Math_atan=Math.atan;var Math_atan2=Math.atan2;var Math_exp=Math.exp;var Math_log=Math.log;var Math_sqrt=Math.sqrt;var Math_ceil=Math.ceil;var Math_floor=Math.floor;var Math_pow=Math.pow;var Math_imul=Math.imul;var Math_fround=Math.fround;var Math_round=Math.round;var Math_min=Math.min;var Math_max=Math.max;var Math_clz32=Math.clz32;var Math_trunc=Math.trunc;var runDependencies=0;var runDependencyWatcher=null;var dependenciesFulfilled=null;function addRunDependency(id){runDependencies++;if(Module[\"monitorRunDependencies\"]){Module[\"monitorRunDependencies\"](runDependencies)}}function removeRunDependency(id){runDependencies--;if(Module[\"monitorRunDependencies\"]){Module[\"monitorRunDependencies\"](runDependencies)}if(runDependencies==0){if(runDependencyWatcher!==null){clearInterval(runDependencyWatcher);runDependencyWatcher=null}if(dependenciesFulfilled){var callback=dependenciesFulfilled;dependenciesFulfilled=null;callback()}}}Module[\"preloadedImages\"]={};Module[\"preloadedAudios\"]={};var memoryInitializer=null;var dataURIPrefix=\"data:application/octet-stream;base64,\";function isDataURI(filename){return String.prototype.startsWith?filename.startsWith(dataURIPrefix):filename.indexOf(dataURIPrefix)===0}STATIC_BASE=GLOBAL_BASE;STATICTOP=STATIC_BASE+26352;__ATINIT__.push();memoryInitializer=\"data:application/octet-stream;base64,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ciBoYW5kbGVyLgoAQ29kZWMgcHJvdmlkZWQgdG8gdGhlIG9wal9yZWFkX2hlYWRlciBmdW5jdGlvbiBpcyBub3QgYSBkZWNvbXByZXNzb3IgaGFuZGxlci4KAEludmFsaWQgbnVtYmVyIG9mIHJlc29sdXRpb25zIDogJWQgbm90IGluIHJhbmdlIFsxLCVkXQoARGVwcmVjYXRlZCBmaWVsZHMgY3BfY2luZW1hIG9yIGNwX3JzaXogYXJlIHVzZWQKUGxlYXNlIGNvbnNpZGVyIHVzaW5nIG9ubHkgdGhlIHJzaXogZmllbGQKU2VlIG9wZW5qcGVnLmggZG9jdW1lbnRhdGlvbiBmb3IgbW9yZSBkZXRhaWxzCgBUaGUgZGVzaXJlZCBtYXhpbXVtIGNvZGVzdHJlYW0gc2l6ZSBoYXMgbGltaXRlZAphdCBsZWFzdCBvbmUgb2YgdGhlIGRlc2lyZWQgcXVhbGl0eSBsYXllcnMKAEpQRUcgMjAwMCBTY2FsYWJsZSBEaWdpdGFsIENpbmVtYSBwcm9maWxlcyBub3QgeWV0IHN1cHBvcnRlZAoASlBFRyAyMDAwIFByb2ZpbGUtMyBhbmQgNCAoMmsvNGsgZGMgcHJvZmlsZSkgcmVxdWlyZXM6CjEgc2luZ2xlIHF1YWxpdHkgbGF5ZXItPiBOdW1iZXIgb2YgbGF5ZXJzIGZvcmNlZCB0byAxIChyYXRoZXIgdGhhbiAlZCkKLT4gUmF0ZSBvZiB0aGUgbGFzdCBsYXllciAoJTMuMWYpIHdpbGwgYmUgdXNlZABKUEVHIDIwMDAgUHJvZmlsZS0zICgyayBkYyBwcm9maWxlKSByZXF1aXJlczoKTnVtYmVyIG9mIGRlY29tcG9zaXRpb24gbGV2ZWxzIDw9IDUKLT4gTnVtYmVyIG9mIGRlY29tcG9zaXRpb24gbGV2ZWxzIGZvcmNlZCB0byA1IChyYXRoZXIgdGhhbiAlZCkKAEpQRUcgMjAwMCBQcm9maWxlLTQgKDRrIGRjIHByb2ZpbGUpIHJlcXVpcmVzOgpOdW1iZXIgb2YgZGVjb21wb3NpdGlvbiBsZXZlbHMgPj0gMSAmJiA8PSA2Ci0+IE51bWJlciBvZiBkZWNvbXBvc2l0aW9uIGxldmVscyBmb3JjZWQgdG8gMSAocmF0aGVyIHRoYW4gJWQpCgBKUEVHIDIwMDAgUHJvZmlsZS00ICg0ayBkYyBwcm9maWxlKSByZXF1aXJlczoKTnVtYmVyIG9mIGRlY29tcG9zaXRpb24gbGV2ZWxzID49IDEgJiYgPD0gNgotPiBOdW1iZXIgb2YgZGVjb21wb3NpdGlvbiBsZXZlbHMgZm9yY2VkIHRvIDYgKHJhdGhlciB0aGFuICVkKQoASlBFRyAyMDAwIFByb2ZpbGUtMyBhbmQgNCAoMmsvNGsgZGMgcHJvZmlsZSkgcmVxdWlyZXM6Ck1heGltdW0gMTMwMjA4MyBjb21wcmVzc2VkIGJ5dGVzIEAgMjRmcHMKQXMgbm8gcmF0ZSBoYXMgYmVlbiBnaXZlbiwgdGhpcyBsaW1pdCB3aWxsIGJlIHVzZWQuCgBKUEVHIDIwMDAgUHJvZmlsZS0zIGFuZCA0ICgyay80ayBkYyBwcm9maWxlKSByZXF1aXJlczoKTWF4aW11bSAxMzAyMDgzIGNvbXByZXNzZWQgYnl0ZXMgQCAyNGZwcwotPiBTcGVjaWZpZWQgcmF0ZSBleGNlZWRzIHRoaXMgbGltaXQuIFJhdGUgd2lsbCBiZSBmb3JjZWQgdG8gMTMwMjA4MyBieXRlcy4KAEpQRUcgMjAwMCBQcm9maWxlLTMgYW5kIDQgKDJrLzRrIGRjIHByb2ZpbGUpIHJlcXVpcmVzOgpNYXhpbXVtIDEwNDE2NjYgY29tcHJlc3NlZCBieXRlcyBAIDI0ZnBzCkFzIG5vIHJhdGUgaGFzIGJlZW4gZ2l2ZW4sIHRoaXMgbGltaXQgd2lsbCBiZSB1c2VkLgoASlBFRyAyMDAwIFByb2ZpbGUtMyBhbmQgNCAoMmsvNGsgZGMgcHJvZmlsZSkgcmVxdWlyZXM6Ck1heGltdW0gMTA0MTY2NiBjb21wcmVzc2VkIGJ5dGVzIEAgMjRmcHMKLT4gU3BlY2lmaWVkIHJhdGUgZXhjZWVkcyB0aGlzIGxpbWl0LiBSYXRlIHdpbGwgYmUgZm9yY2VkIHRvIDEwNDE2NjYgYnl0ZXMuCgBKUEVHIDIwMDAgUHJvZmlsZS0zICgyayBkYyBwcm9maWxlKSByZXF1aXJlczoKMyBjb21wb25lbnRzLT4gTnVtYmVyIG9mIGNvbXBvbmVudHMgb2YgaW5wdXQgaW1hZ2UgKCVkKSBpcyBub3QgY29tcGxpYW50Ci0+IE5vbi1wcm9maWxlLTMgY29kZXN0cmVhbSB3aWxsIGJlIGdlbmVyYXRlZAoAc2lnbmVkAHVuc2lnbmVkAEpQRUcgMjAwMCBQcm9maWxlLTMgKDJrIGRjIHByb2ZpbGUpIHJlcXVpcmVzOgpQcmVjaXNpb24gb2YgZWFjaCBjb21wb25lbnQgc2hhbGwgYmUgMTIgYml0cyB1bnNpZ25lZC0+IEF0IGxlYXN0IGNvbXBvbmVudCAlZCBvZiBpbnB1dCBpbWFnZSAoJWQgYml0cywgJXMpIGlzIG5vdCBjb21wbGlhbnQKLT4gTm9uLXByb2ZpbGUtMyBjb2Rlc3RyZWFtIHdpbGwgYmUgZ2VuZXJhdGVkCgBKUEVHIDIwMDAgUHJvZmlsZS0zICgyayBkYyBwcm9maWxlKSByZXF1aXJlczoKd2lkdGggPD0gMjA0OCBhbmQgaGVpZ2h0IDw9IDEwODAKLT4gSW5wdXQgaW1hZ2Ugc2l6ZSAlZCB4ICVkIGlzIG5vdCBjb21wbGlhbnQKLT4gTm9uLXByb2ZpbGUtMyBjb2Rlc3RyZWFtIHdpbGwgYmUgZ2VuZXJhdGVkCgBKUEVHIDIwMDAgUHJvZmlsZS00ICg0ayBkYyBwcm9maWxlKSByZXF1aXJlczoKd2lkdGggPD0gNDA5NiBhbmQgaGVpZ2h0IDw9IDIxNjAKLT4gSW1hZ2Ugc2l6ZSAlZCB4ICVkIGlzIG5vdCBjb21wbGlhbnQKLT4gTm9uLXByb2ZpbGUtNCBjb2Rlc3RyZWFtIHdpbGwgYmUgZ2VuZXJhdGVkCgBKUEVHIDIwMDAgTG9uZyBUZXJtIFN0b3JhZ2UgcHJvZmlsZSBub3QgeWV0IHN1cHBvcnRlZAoASlBFRyAyMDAwIEJyb2FkY2FzdCBwcm9maWxlcyBub3QgeWV0IHN1cHBvcnRlZAoASlBFRyAyMDAwIElNRiBwcm9maWxlcyBub3QgeWV0IHN1cHBvcnRlZAoASlBFRyAyMDAwIFBhcnQtMiBwcm9maWxlIGRlZmluZWQKYnV0IG5vIFBhcnQtMiBleHRlbnNpb24gZW5hYmxlZC4KUHJvZmlsZSBzZXQgdG8gTk9ORS4KAFVuc3VwcG9ydGVkIFBhcnQtMiBleHRlbnNpb24gZW5hYmxlZApQcm9maWxlIHNldCB0byBOT05FLgoATm90IGVub3VnaCBtZW1vcnkgdG8gYWxsb2NhdGUgY29weSBvZiB1c2VyIGVuY29kaW5nIHBhcmFtZXRlcnMgbWF0cml4IAoATm90IGVub3VnaCBtZW1vcnkgdG8gYWxsb2NhdGUgY29weSBvZiBjb21tZW50IHN0cmluZwoATm90IGVub3VnaCBtZW1vcnkgdG8gYWxsb2NhdGUgY29tbWVudCBzdHJpbmcKACVzJXMAQ3JlYXRlZCBieSBPcGVuSlBFRyB2ZXJzaW9uIABOb3QgZW5vdWdoIG1lbW9yeSB0byBhbGxvY2F0ZSB0aWxlIGNvZGluZyBwYXJhbWV0ZXJzCgBOb3QgZW5vdWdoIG1lbW9yeSBmb3IgY2hlY2tpbmcgdGhlIHBvYyB2YWx1ZXMuCgBNaXNzaW5nIHBhY2tldHMgcG9zc2libGUgbG9zcyBvZiBkYXRhCgBOb3QgZW5vdWdoIG1lbW9yeSB0byBhbGxvY2F0ZSB0aWxlIGNvbXBvbmVudCBjb2RpbmcgcGFyYW1ldGVycwoATm90IGVub3VnaCBtZW1vcnkgdG8gYWxsb2NhdGUgdGVtcCBidWZmZXIKAE5vdCBlbm91Z2ggbWVtb3J5IHRvIGFsbG9jYXRlIGVuY29kZXIgTUNUIGNvZGluZyBtYXRyaXggCgBOb3QgZW5vdWdoIG1lbW9yeSB0byBhbGxvY2F0ZSBlbmNvZGVyIE1DVCBkZWNvZGluZyBtYXRyaXggCgBGYWlsZWQgdG8gaW52ZXJzZSBlbmNvZGVyIE1DVCBkZWNvZGluZyBtYXRyaXggCgBOb3QgZW5vdWdoIG1lbW9yeSB0byBhbGxvY2F0ZSBlbmNvZGVyIE1DVCBub3JtcyAKAEZhaWxlZCB0byBzZXR1cCBqMmsgbWN0IGVuY29kaW5nCgBDYW5ub3QgcGVyZm9ybSBNQ1Qgb24gY29tcG9uZW50cyB3aXRoIGRpZmZlcmVudCBzaXplcy4gRGlzYWJsaW5nIE1DVC4KAENhbm5vdCBkZWNvZGUgdGlsZSwgbWVtb3J5IGVycm9yCgBTdGFydCB0byByZWFkIGoyayBtYWluIGhlYWRlciAoJWQpLgoATm90IGVub3VnaCBtZW1vcnkgdG8gYWRkIG1oIG1hcmtlcgoARXhwZWN0ZWQgYSBTT0MgbWFya2VyIAoAU3RyZWFtIHRvbyBzaG9ydAoAQSBtYXJrZXIgSUQgd2FzIGV4cGVjdGVkICgweGZmLS0pIGluc3RlYWQgb2YgJS44eAoAVW5rbm93biBtYXJrZXIKAE1hcmtlciBpcyBub3QgY29tcGxpYW50IHdpdGggaXRzIHBvc2l0aW9uCgBVbmtub3cgbWFya2VyIGhhdmUgYmVlbiBkZXRlY3RlZCBhbmQgZ2VuZXJhdGVkIGVycm9yLgoATm90IGVub3VnaCBtZW1vcnkgdG8gcmVhZCBoZWFkZXIKAE1hcmtlciBoYW5kbGVyIGZ1bmN0aW9uIGZhaWxlZCB0byByZWFkIHRoZSBtYXJrZXIgc2VnbWVudAoAcmVxdWlyZWQgU0laIG1hcmtlciBub3QgZm91bmQgaW4gbWFpbiBoZWFkZXIKAHJlcXVpcmVkIENPRCBtYXJrZXIgbm90IGZvdW5kIGluIG1haW4gaGVhZGVyCgByZXF1aXJlZCBRQ0QgbWFya2VyIG5vdCBmb3VuZCBpbiBtYWluIGhlYWRlcgoATm90IGVub3VnaCBieXRlcyB0byByZWFkIE5wcG0KAENvcnJ1cHRlZCBQUE0gbWFya2VycwoATm90IGVub3VnaCBtZW1vcnkgdG8gcmVhZCBQUE0gbWFya2VyCgBGYWlsZWQgdG8gbWVyZ2UgUFBNIGRhdGEKAE1haW4gaGVhZGVyIGhhcyBiZWVuIGNvcnJlY3RseSBkZWNvZGVkLgoARXJyb3IgcmVhZGluZyBNQ08gbWFya2VyCgBDYW5ub3QgdGFrZSBpbiBjaGFyZ2UgbXVsdGlwbGUgdHJhbnNmb3JtYXRpb24gc3RhZ2VzLgoARXJyb3IgcmVhZGluZyBNQ0MgbWFya2VyCgBDYW5ub3QgdGFrZSBpbiBjaGFyZ2UgbXVsdGlwbGUgZGF0YSBzcGFubmluZwoATm90IGVub3VnaCBtZW1vcnkgdG8gcmVhZCBNQ0MgbWFya2VyCgBDYW5ub3QgdGFrZSBpbiBjaGFyZ2UgbXVsdGlwbGUgY29sbGVjdGlvbnMKAENhbm5vdCB0YWtlIGluIGNoYXJnZSBjb2xsZWN0aW9ucyBvdGhlciB0aGFuIGFycmF5IGRlY29ycmVsYXRpb24KAENhbm5vdCB0YWtlIGluIGNoYXJnZSBjb2xsZWN0aW9ucyB3aXRoIGluZGl4IHNodWZmbGUKAENhbm5vdCB0YWtlIGluIGNoYXJnZSBjb2xsZWN0aW9ucyB3aXRob3V0IHNhbWUgbnVtYmVyIG9mIGluZGl4ZXMKAENycm9yIHJlYWRpbmcgQ0JEIG1hcmtlcgoARXJyb3IgcmVhZGluZyBNQ1QgbWFya2VyCgBDYW5ub3QgdGFrZSBpbiBjaGFyZ2UgbWN0IGRhdGEgd2l0aGluIG11bHRpcGxlIE1DVCByZWNvcmRzCgBOb3QgZW5vdWdoIG1lbW9yeSB0byByZWFkIE1DVCBtYXJrZXIKAENhbm5vdCB0YWtlIGluIGNoYXJnZSBtdWx0aXBsZSBNQ1QgbWFya2VycwoARXJyb3IgcmVhZGluZyBDUkcgbWFya2VyCgBFcnJvciByZWFkaW5nIFBQVCBtYXJrZXIKAEVycm9yIHJlYWRpbmcgUFBUIG1hcmtlcjogcGFja2V0IGhlYWRlciBoYXZlIGJlZW4gcHJldmlvdXNseSBmb3VuZCBpbiB0aGUgbWFpbiBoZWFkZXIgKFBQTSBtYXJrZXIpLgoATm90IGVub3VnaCBtZW1vcnkgdG8gcmVhZCBQUFQgbWFya2VyCgBacHB0ICV1IGFscmVhZHkgcmVhZAoARXJyb3IgcmVhZGluZyBQUE0gbWFya2VyCgBacHBtICV1IGFscmVhZHkgcmVhZAoARXJyb3IgcmVhZGluZyBQTFQgbWFya2VyCgBFcnJvciByZWFkaW5nIFBMTSBtYXJrZXIKAEVycm9yIHJlYWRpbmcgVExNIG1hcmtlcgoARXJyb3Igd2l0aCBTSVogbWFya2VyIHNpemUKAEVycm9yIHdpdGggU0laIG1hcmtlcjogbnVtYmVyIG9mIGNvbXBvbmVudCBpcyBpbGxlZ2FsIC0+ICVkCgBFcnJvciB3aXRoIFNJWiBtYXJrZXI6IG51bWJlciBvZiBjb21wb25lbnQgaXMgbm90IGNvbXBhdGlibGUgd2l0aCB0aGUgcmVtYWluaW5nIG51bWJlciBvZiBwYXJhbWV0ZXJzICggJWQgdnMgJWQpCgBFcnJvciB3aXRoIFNJWiBtYXJrZXI6IG5lZ2F0aXZlIG9yIHplcm8gaW1hZ2Ugc2l6ZSAoJWxsZCB4ICVsbGQpCgBFcnJvciB3aXRoIFNJWiBtYXJrZXI6IGludmFsaWQgdGlsZSBzaXplICh0ZHg6ICVkLCB0ZHk6ICVkKQoAUHJldmVudCBidWZmZXIgb3ZlcmZsb3cgKHgxOiAlZCwgeTE6ICVkKQoARXJyb3Igd2l0aCBTSVogbWFya2VyOiBpbGxlZ2FsIHRpbGUgb2Zmc2V0CgBOb3QgZW5vdWdoIG1lbW9yeSB0byB0YWtlIGluIGNoYXJnZSBTSVogbWFya2VyCgBJbnZhbGlkIHZhbHVlcyBmb3IgY29tcCA9ICVkIDogZHg9JXUgZHk9JXUgKHNob3VsZCBiZSBiZXR3ZWVuIDEgYW5kIDI1NSBhY2NvcmRpbmcgdG8gdGhlIEpQRUcyMDAwIG5vcm0pCgBJbnZhbGlkIHZhbHVlcyBmb3IgY29tcCA9ICVkIDogcHJlYz0ldSAoc2hvdWxkIGJlIGJldHdlZW4gMSBhbmQgMzggYWNjb3JkaW5nIHRvIHRoZSBKUEVHMjAwMCBub3JtKQoASW52YWxpZCBudW1iZXIgb2YgdGlsZXMgOiAldSB4ICV1IChtYXhpbXVtIGZpeGVkIGJ5IGpwZWcyMDAwIG5vcm0gaXMgNjU1MzUgdGlsZXMpCgBFcnJvciByZWFkaW5nIFBPQyBtYXJrZXIKAFRvbyBtYW55IFBPQ3MgJWQKAEVycm9yIHJlYWRpbmcgUUNDIG1hcmtlcgoASW52YWxpZCBjb21wb25lbnQgbnVtYmVyOiAlZCwgcmVnYXJkaW5nIHRoZSBudW1iZXIgb2YgY29tcG9uZW50cyAlZAoARXJyb3IgcmVhZGluZyBTUWNkIG9yIFNRY2MgZWxlbWVudAoAV2hpbGUgcmVhZGluZyBDQ1BfUU5UU1RZIGVsZW1lbnQgaW5zaWRlIFFDRCBvciBRQ0MgbWFya2VyIHNlZ21lbnQsIG51bWJlciBvZiBzdWJiYW5kcyAoJWQpIGlzIGdyZWF0ZXIgdG8gT1BKX0oyS19NQVhCQU5EUyAoJWQpLiBTbyB3ZSBsaW1pdCB0aGUgbnVtYmVyIG9mIGVsZW1lbnRzIHN0b3JlZCB0byBPUEpfSjJLX01BWEJBTkRTICglZCkgYW5kIHNraXAgdGhlIHJlc3QuIAoARXJyb3IgcmVhZGluZyBRQ0QgbWFya2VyCgBFcnJvciByZWFkaW5nIFJHTiBtYXJrZXIKAGJhZCBjb21wb25lbnQgbnVtYmVyIGluIFJHTiAoJWQgd2hlbiB0aGVyZSBhcmUgb25seSAlZCkKAEVycm9yIHJlYWRpbmcgQ09DIG1hcmtlcgoARXJyb3IgcmVhZGluZyBDT0MgbWFya2VyIChiYWQgbnVtYmVyIG9mIGNvbXBvbmVudHMpCgBFcnJvciByZWFkaW5nIFNQQ29kIFNQQ29jIGVsZW1lbnQKAEludmFsaWQgdmFsdWUgZm9yIG51bXJlc29sdXRpb25zIDogJWQsIG1heCB2YWx1ZSBpcyBzZXQgaW4gb3BlbmpwZWcuaCBhdCAlZAoARXJyb3IgZGVjb2RpbmcgY29tcG9uZW50ICVkLgpUaGUgbnVtYmVyIG9mIHJlc29sdXRpb25zIHRvIHJlbW92ZSBpcyBoaWdoZXIgdGhhbiB0aGUgbnVtYmVyIG9mIHJlc29sdXRpb25zIG9mIHRoaXMgY29tcG9uZW50Ck1vZGlmeSB0aGUgY3BfcmVkdWNlIHBhcmFtZXRlci4KCgBFcnJvciByZWFkaW5nIFNQQ29kIFNQQ29jIGVsZW1lbnQsIEludmFsaWQgY2Jsa3cvY2Jsa2ggY29tYmluYXRpb24KAEVycm9yIHJlYWRpbmcgU1BDb2QgU1BDb2MgZWxlbWVudCwgSW52YWxpZCBjb2RlLWJsb2NrIHN0eWxlIGZvdW5kCgBJbnZhbGlkIHByZWNpbmN0IHNpemUKAENPRCBtYXJrZXIgYWxyZWFkeSByZWFkLiBObyBtb3JlIHRoYW4gb25lIENPRCBtYXJrZXIgcGVyIHRpbGUuCgBFcnJvciByZWFkaW5nIENPRCBtYXJrZXIKAFVua25vd24gU2NvZCB2YWx1ZSBpbiBDT0QgbWFya2VyCgBVbmtub3duIHByb2dyZXNzaW9uIG9yZGVyIGluIENPRCBtYXJrZXIKAEludmFsaWQgbnVtYmVyIG9mIGxheWVycyBpbiBDT0QgbWFya2VyIDogJWQgbm90IGluIHJhbmdlIFsxLTY1NTM1XQoARXJyb3IgcmVhZGluZyBTT1QgbWFya2VyCgBJbnZhbGlkIHRpbGUgbnVtYmVyICVkCgBFbXB0eSBTT1QgbWFya2VyIGRldGVjdGVkOiBQc290PSVkLgoAUHNvdCB2YWx1ZSBpcyBub3QgY29ycmVjdCByZWdhcmRzIHRvIHRoZSBKUEVHMjAwMCBub3JtOiAlZC4KAFBzb3QgdmFsdWUgb2YgdGhlIGN1cnJlbnQgdGlsZS1wYXJ0IGlzIGVxdWFsIHRvIHplcm8sIHdlIGFzc3VtaW5nIGl0IGlzIHRoZSBsYXN0IHRpbGUtcGFydCBvZiB0aGUgY29kZXN0cmVhbS4KAEluIFNPVCBtYXJrZXIsIFRQU290ICglZCkgaXMgbm90IHZhbGlkIHJlZ2FyZHMgdG8gdGhlIGN1cnJlbnQgbnVtYmVyIG9mIHRpbGUtcGFydCAoJWQpLCBnaXZpbmcgdXAKAEluIFNPVCBtYXJrZXIsIFRQU290ICglZCkgaXMgbm90IHZhbGlkIHJlZ2FyZHMgdG8gdGhlIGN1cnJlbnQgbnVtYmVyIG9mIHRpbGUtcGFydCAoaGVhZGVyKSAoJWQpLCBnaXZpbmcgdXAKAE5vdCBlbm91Z2ggbWVtb3J5IHRvIHJlYWQgU09UIG1hcmtlci4gVGlsZSBpbmRleCBhbGxvY2F0aW9uIGZhaWxlZAoASW5jb25zaXN0ZW50IG1hcmtlciBzaXplCgBNYXJrZXIgc2l6ZSBpbmNvbnNpc3RlbnQgd2l0aCBzdHJlYW0gbGVuZ3RoCgBOb3Qgc3VyZSBob3cgdGhhdCBoYXBwZW5lZC4KAEZhaWwgdG8gcmVhZCB0aGUgY3VycmVudCBtYXJrZXIgc2VnbWVudCAoJSN4KQoATm90IGVub3VnaCBtZW1vcnkgdG8gYWRkIHRsIG1hcmtlcgoAVGlsZSBwYXJ0IGxlbmd0aCBzaXplIGluY29uc2lzdGVudCB3aXRoIHN0cmVhbSBsZW5ndGgKAE5vdCBlbm91Z2ggbWVtb3J5IHRvIGRlY29kZSB0aWxlCgBvcGpfajJrX2FwcGx5X25iX3RpbGVfcGFydHNfY29ycmVjdGlvbiBlcnJvcgoATm9uIGNvbmZvcm1hbnQgY29kZXN0cmVhbSBUUHNvdD09VE5zb3QuCgBGYWlsZWQgdG8gbWVyZ2UgUFBUIGRhdGEKAEhlYWRlciBvZiB0aWxlICVkIC8gJWQgaGFzIGJlZW4gcmVhZC4KAEZhaWxlZCB0byBkZWNvZGUuCgBObyBFT0MgbWFya2VyLiBQb3NzaWJseSBhIHRydW5jYXRlZCBzdHJlYW0KAFN0cmVhbSBkb2VzIG5vdCBlbmQgd2l0aCBFT0MKAFN0cmVhbSB0b28gc2hvcnQsIGV4cGVjdGVkIFNPVAoATmVlZCB0byBkZWNvZGUgdGhlIG1haW4gaGVhZGVyIGJlZm9yZSBiZWdpbiB0byBkZWNvZGUgdGhlIHJlbWFpbmluZyBjb2Rlc3RyZWFtAE5vIGRlY29kZWQgYXJlYSBwYXJhbWV0ZXJzLCBzZXQgdGhlIGRlY29kZWQgYXJlYSB0byB0aGUgd2hvbGUgaW1hZ2UKAExlZnQgcG9zaXRpb24gb2YgdGhlIGRlY29kZWQgYXJlYSAocmVnaW9uX3gwPSVkKSBpcyBvdXRzaWRlIHRoZSBpbWFnZSBhcmVhIChYc2l6PSVkKS4KAExlZnQgcG9zaXRpb24gb2YgdGhlIGRlY29kZWQgYXJlYSAocmVnaW9uX3gwPSVkKSBpcyBvdXRzaWRlIHRoZSBpbWFnZSBhcmVhIChYT3Npej0lZCkuCgBVcCBwb3NpdGlvbiBvZiB0aGUgZGVjb2RlZCBhcmVhIChyZWdpb25feTA9JWQpIGlzIG91dHNpZGUgdGhlIGltYWdlIGFyZWEgKFlzaXo9JWQpLgoAVXAgcG9zaXRpb24gb2YgdGhlIGRlY29kZWQgYXJlYSAocmVnaW9uX3kwPSVkKSBpcyBvdXRzaWRlIHRoZSBpbWFnZSBhcmVhIChZT3Npej0lZCkuCgBSaWdodCBwb3NpdGlvbiBvZiB0aGUgZGVjb2RlZCBhcmVhIChyZWdpb25feDE9JWQpIGlzIG91dHNpZGUgdGhlIGltYWdlIGFyZWEgKFhPc2l6PSVkKS4KAFJpZ2h0IHBvc2l0aW9uIG9mIHRoZSBkZWNvZGVkIGFyZWEgKHJlZ2lvbl94MT0lZCkgaXMgb3V0c2lkZSB0aGUgaW1hZ2UgYXJlYSAoWHNpej0lZCkuCgBCb3R0b20gcG9zaXRpb24gb2YgdGhlIGRlY29kZWQgYXJlYSAocmVnaW9uX3kxPSVkKSBpcyBvdXRzaWRlIHRoZSBpbWFnZSBhcmVhIChZT3Npej0lZCkuCgBCb3R0b20gcG9zaXRpb24gb2YgdGhlIGRlY29kZWQgYXJlYSAocmVnaW9uX3kxPSVkKSBpcyBvdXRzaWRlIHRoZSBpbWFnZSBhcmVhIChZc2l6PSVkKS4KAFNpemUgeCBvZiB0aGUgZGVjb2RlZCBjb21wb25lbnQgaW1hZ2UgaXMgaW5jb3JyZWN0IChjb21wWyVkXS53PSVkKS4KAFNpemUgeSBvZiB0aGUgZGVjb2RlZCBjb21wb25lbnQgaW1hZ2UgaXMgaW5jb3JyZWN0IChjb21wWyVkXS5oPSVkKS4KAFNldHRpbmcgZGVjb2RpbmcgYXJlYSB0byAlZCwlZCwlZCwlZAoAV3JvbmcgZmxhZwoAQ29kZXN0cmVhbSBpbmZvIGZyb20gbWFpbiBoZWFkZXI6IHsKAAkgdHgwPSVkLCB0eTA9JWQKAAkgdGR4PSVkLCB0ZHk9JWQKAAkgdHc9JWQsIHRoPSVkCgB9CgBDb2Rlc3RyZWFtIGluZGV4IGZyb20gbWFpbiBoZWFkZXI6IHsKAAkgTWFpbiBoZWFkZXIgc3RhcnQgcG9zaXRpb249JWxsaQoJIE1haW4gaGVhZGVyIGVuZCBwb3NpdGlvbj0lbGxpCgAJIE1hcmtlciBsaXN0OiB7CgAJCSB0eXBlPSUjeCwgcG9zPSVsbGksIGxlbj0lZAoACSB9CgAJIFRpbGUgaW5kZXg6IHsKAAkJIG5iIG9mIHRpbGUtcGFydCBpbiB0aWxlIFslZF09JWQKAAkJCSB0aWxlLXBhcnRbJWRdOiBzdGFyX3Bvcz0lbGxpLCBlbmRfaGVhZGVyPSVsbGksIGVuZF9wb3M9JWxsaS4KAAkgZGVmYXVsdCB0aWxlIHsKAAkJIGNzdHk9JSN4CgAJCSBwcmc9JSN4CgAJCSBudW1sYXllcnM9JWQKAAkJIG1jdD0leAoACQkgY29tcCAlZCB7CgAJCQkgY3N0eT0lI3gKAAkJCSBudW1yZXNvbHV0aW9ucz0lZAoACQkJIGNibGt3PTJeJWQKAAkJCSBjYmxraD0yXiVkCgAJCQkgY2Jsa3N0eT0lI3gKAAkJCSBxbWZiaWQ9JWQKAAkJCSBwcmVjY2ludHNpemUgKHcsaCk9ACglZCwlZCkgAAkJCSBxbnRzdHk9JWQKAAkJCSBudW1nYml0cz0lZAoACQkJIHN0ZXBzaXplcyAobSxlKT0ACQkJIHJvaXNoaWZ0PSVkCgAJCSB9CgBbREVWXSBEdW1wIGFuIGltYWdlX2hlYWRlciBzdHJ1Y3QgewoASW1hZ2UgaW5mbyB7CgAlcyB4MD0lZCwgeTA9JWQKACVzIHgxPSVkLCB5MT0lZAoAJXMgbnVtY29tcHM9JWQKACVzCSBjb21wb25lbnQgJWQgewoAJXN9CgBbREVWXSBEdW1wIGFuIGltYWdlX2NvbXBfaGVhZGVyIHN0cnVjdCB7CgAlcyBkeD0lZCwgZHk9JWQKACVzIHByZWM9JWQKACVzIHNnbmQ9JWQKAE5vdCBlbm91Z2ggbWVtb3J5IHRvIGRlY29kZSB0aWxlcwoATm90IGVub3VnaCBtZW1vcnkgdG8gZGVjb2RlIHRpbGUgJWQvJWQKAEZhaWxlZCB0byBkZWNvZGUgdGlsZSAlZC8lZAoAVGlsZSAlZC8lZCBoYXMgYmVlbiBkZWNvZGVkLgoASW1hZ2UgZGF0YSBoYXMgYmVlbiB1cGRhdGVkIHdpdGggdGlsZSAlZC4KCgBXZSBuZWVkIGFuIGltYWdlIHByZXZpb3VzbHkgY3JlYXRlZC4KAFRpbGUgaW5kZXggcHJvdmlkZWQgYnkgdGhlIHVzZXIgaXMgaW5jb3JyZWN0ICVkIChtYXggPSAlZCkgCgBOb3QgZW5vdWdoIG1lbW9yeSB0byBkZWNvZGUgb25lIHRpbGUKAFByb2JsZW0gd2l0aCBzZWVrIGZ1bmN0aW9uCgBUaWxlIHJlYWQsIGRlY29kZWQgYW5kIHVwZGF0ZWQgaXMgbm90IHRoZSBkZXNpcmVkIG9uZSAoJWQgdnMgJWQpLgoAUmVzb2x1dGlvbiBmYWN0b3IgaXMgZ3JlYXRlciB0aGFuIHRoZSBtYXhpbXVtIHJlc29sdXRpb24gaW4gdGhlIGNvbXBvbmVudC4KAFRoZSBnaXZlbiB0aWxlIGluZGV4IGRvZXMgbm90IG1hdGNoLgB0aWxlIG51bWJlciAlZCAvICVkCgBFcnJvciBhbGxvY2F0aW5nIHRpbGUgY29tcG9uZW50IGRhdGEuAE5vdCBlbm91Z2ggbWVtb3J5IHRvIGVuY29kZSBhbGwgdGlsZXMKAFNpemUgbWlzbWF0Y2ggYmV0d2VlbiB0aWxlIGRhdGEgYW5kIHNlbnQgZGF0YS4AQ2Fubm90IGVuY29kZSB0aWxlCgBGYWlsZWQgdG8gYWxsb2NhdGUgaW1hZ2UgaGVhZGVyLgBOb3QgZW5vdWdoIG1lbW9yeSB0byBjcmVhdGUgVGlsZSBDb2RlcgoATm90IGVub3VnaCBtZW1vcnkgdG8gd3JpdGUgQ0JEIG1hcmtlcgoATm90IGVub3VnaCBtZW1vcnkgdG8gd3JpdGUgTUNUIG1hcmtlcgoATm90IGVub3VnaCBtZW1vcnkgdG8gd3JpdGUgTUNDIG1hcmtlcgoATm90IGVub3VnaCBtZW1vcnkgdG8gd3JpdGUgTUNPIG1hcmtlcgoATm90IGVub3VnaCBtZW1vcnkgdG8gd3JpdGUgdGhlIENPTSBtYXJrZXIKAE5vdCBlbm91Z2ggbWVtb3J5IHRvIHdyaXRlIFBPQyBtYXJrZXIKAE5vdCBlbm91Z2ggbWVtb3J5IHRvIHdyaXRlIFRMTSBtYXJrZXIKAE5vdCBlbm91Z2ggbWVtb3J5IHRvIHdyaXRlIFFDQyBtYXJrZXIKAEVycm9yIHdyaXRpbmcgU1FjZCBTUWNjIGVsZW1lbnQKAE5vdCBlbm91Z2ggbWVtb3J5IHRvIHdyaXRlIENPQyBtYXJrZXIKAEVycm9yIHdyaXRpbmcgU1BDb2QgU1BDb2MgZWxlbWVudAoATm90IGVub3VnaCBtZW1vcnkgdG8gd3JpdGUgUUNEIG1hcmtlcgoARXJyb3Igd3JpdGluZyBRQ0QgbWFya2VyCgBOb3QgZW5vdWdoIG1lbW9yeSB0byB3cml0ZSBDT0QgbWFya2VyCgBFcnJvciB3cml0aW5nIENPRCBtYXJrZXIKAE5vdCBlbm91Z2ggbWVtb3J5IGZvciB0aGUgU0laIG1hcmtlcgoATnVtYmVyIG9mIHJlc29sdXRpb25zIGlzIHRvbyBoaWdoIGluIGNvbXBhcmlzb24gdG8gdGhlIHNpemUgb2YgdGlsZXMKAEVycm9yIHdoaWxlIG9wal9qMmtfcHJlX3dyaXRlX3RpbGUgd2l0aCB0aWxlIGluZGV4ID0gJWQKAEVycm9yIHdoaWxlIG9wal9qMmtfcG9zdF93cml0ZV90aWxlIHdpdGggdGlsZSBpbmRleCA9ICVkCgBGYWlsZWQgdG8gZGVjb2RlIHRoZSBjb2Rlc3RyZWFtIGluIHRoZSBKUDIgZmlsZQoAb3BqX2pwMl9hcHBseV9jZGVmOiBjbj0lZCwgbnVtY29tcHM9JWQKAG9wal9qcDJfYXBwbHlfY2RlZjogYWNuPSVkLCBudW1jb21wcz0lZAoASW52YWxpZCBjb21wb25lbnQgaW5kZXggJWQgKD49ICVkKS4KAEluY29tcGxldGUgY2hhbm5lbCBkZWZpbml0aW9ucy4KAFVuZXhwZWN0ZWQgT09NLgoASW52YWxpZCBjb21wb25lbnQvcGFsZXR0ZSBpbmRleCBmb3IgZGlyZWN0IG1hcHBpbmcgJWQuCgBDb21wb25lbnQgJWQgaXMgbWFwcGVkIHR3aWNlLgoARGlyZWN0IHVzZSBhdCAjJWQgaG93ZXZlciBwY29sPSVkLgoAQ29tcG9uZW50ICVkIGRvZXNuJ3QgaGF2ZSBhIG1hcHBpbmcuCgBDb21wb25lbnQgbWFwcGluZyBzZWVtcyB3cm9uZy4gVHJ5aW5nIHRvIGNvcnJlY3QuCgBJbnZhbGlkIG51bWJlciBvZiBjb21wb25lbnRzIHNwZWNpZmllZCB3aGlsZSBzZXR0aW5nIHVwIEpQMiBlbmNvZGVyCgBOb3QgZW5vdWdoIG1lbW9yeSB3aGVuIHNldHVwIHRoZSBKUDIgZW5jb2RlcgoAQWxwaGEgY2hhbm5lbCBzcGVjaWZpZWQgYnV0IHVua25vd24gZW51bWNzLiBObyBjZGVmIGJveCB3aWxsIGJlIGNyZWF0ZWQuCgBBbHBoYSBjaGFubmVsIHNwZWNpZmllZCBidXQgbm90IGVub3VnaCBpbWFnZSBjb21wb25lbnRzIGZvciBhbiBhdXRvbWF0aWMgY2RlZiBib3ggY3JlYXRpb24uCgBBbHBoYSBjaGFubmVsIHBvc2l0aW9uIGNvbmZsaWN0cyB3aXRoIGNvbG9yIGNoYW5uZWwuIE5vIGNkZWYgYm94IHdpbGwgYmUgY3JlYXRlZC4KAE11bHRpcGxlIGFscGhhIGNoYW5uZWxzIHNwZWNpZmllZC4gTm8gY2RlZiBib3ggd2lsbCBiZSBjcmVhdGVkLgoATm90IGVub3VnaCBtZW1vcnkgdG8gc2V0dXAgdGhlIEpQMiBlbmNvZGVyCgBOb3QgZW5vdWdoIG1lbW9yeSB0byBoYW5kbGUganBlZzIwMDAgZmlsZSBoZWFkZXIKAENhbm5vdCBoYW5kbGUgYm94IHNpemVzIGhpZ2hlciB0aGFuIDJeMzIKAGJhZCBwbGFjZWQganBlZyBjb2Rlc3RyZWFtCgBDYW5ub3QgaGFuZGxlIGJveCBvZiB1bmRlZmluZWQgc2l6ZXMKAGludmFsaWQgYm94IHNpemUgJWQgKCV4KQoARm91bmQgYSBtaXNwbGFjZWQgJyVjJWMlYyVjJyBib3ggb3V0c2lkZSBqcDJoIGJveAoASlBFRzIwMDAgSGVhZGVyIGJveCBub3QgcmVhZCB5ZXQsICclYyVjJWMlYycgYm94IHdpbGwgYmUgaWdub3JlZAoAUHJvYmxlbSB3aXRoIHNraXBwaW5nIEpQRUcyMDAwIGJveCwgc3RyZWFtIGVycm9yCgBJbnZhbGlkIGJveCBzaXplICVkIGZvciBib3ggJyVjJWMlYyVjJy4gTmVlZCAlZCBieXRlcywgJWQgYnl0ZXMgcmVtYWluaW5nIAoATm90IGVub3VnaCBtZW1vcnkgdG8gaGFuZGxlIGpwZWcyMDAwIGJveAoAUHJvYmxlbSB3aXRoIHJlYWRpbmcgSlBFRzIwMDAgYm94LCBzdHJlYW0gZXJyb3IKAE1hbGZvcm1lZCBKUDIgZmlsZSBmb3JtYXQ6IGZpcnN0IGJveCBtdXN0IGJlIEpQRUcgMjAwMCBzaWduYXR1cmUgYm94CgBNYWxmb3JtZWQgSlAyIGZpbGUgZm9ybWF0OiBzZWNvbmQgYm94IG11c3QgYmUgZmlsZSB0eXBlIGJveAoASW5zdWZmaWNpZW50IGRhdGEgZm9yIENERUYgYm94LgoATnVtYmVyIG9mIGNoYW5uZWwgZGVzY3JpcHRpb24gaXMgZXF1YWwgdG8gemVybyBpbiBDREVGIGJveC4KAE5lZWQgdG8gcmVhZCBhIFBDTFIgYm94IGJlZm9yZSB0aGUgQ01BUCBib3guCgBPbmx5IG9uZSBDTUFQIGJveCBpcyBhbGxvd2VkLgoASW5zdWZmaWNpZW50IGRhdGEgZm9yIENNQVAgYm94LgoASW52YWxpZCBQQ0xSIGJveC4gUmVwb3J0cyAlZCBlbnRyaWVzCgBJbnZhbGlkIFBDTFIgYm94LiBSZXBvcnRzIDAgcGFsZXR0ZSBjb2x1bW5zCgBBIEJQQ0MgaGVhZGVyIGJveCBpcyBhdmFpbGFibGUgYWx0aG91Z2ggQlBDIGdpdmVuIGJ5IHRoZSBJSERSIGJveCAoJWQpIGluZGljYXRlIGNvbXBvbmVudHMgYml0IGRlcHRoIGlzIGNvbnN0YW50CgBCYWQgQlBDQyBoZWFkZXIgYm94IChiYWQgc2l6ZSkKAEJhZCBDT0xSIGhlYWRlciBib3ggKGJhZCBzaXplKQoAQSBjb25mb3JtaW5nIEpQMiByZWFkZXIgc2hhbGwgaWdub3JlIGFsbCBDb2xvdXIgU3BlY2lmaWNhdGlvbiBib3hlcyBhZnRlciB0aGUgZmlyc3QsIHNvIHdlIGlnbm9yZSB0aGlzIG9uZS4KAEJhZCBDT0xSIGhlYWRlciBib3ggKGJhZCBzaXplOiAlZCkKAE5vdCBlbm91Z2ggbWVtb3J5IGZvciBjaWVsYWIKAEJhZCBDT0xSIGhlYWRlciBib3ggKENJRUxhYiwgYmFkIHNpemU6ICVkKQoAQ09MUiBCT1ggbWV0aCB2YWx1ZSBpcyBub3QgYSByZWd1bGFyIHZhbHVlICglZCksIHNvIHdlIHdpbGwgaWdub3JlIHRoZSBlbnRpcmUgQ29sb3VyIFNwZWNpZmljYXRpb24gYm94LiAKAElnbm9yaW5nIGloZHIgYm94LiBGaXJzdCBpaGRyIGJveCBhbHJlYWR5IHJlYWQKAEJhZCBpbWFnZSBoZWFkZXIgYm94IChiYWQgc2l6ZSkKAEludmFsaWQgbnVtYmVyIG9mIGNvbXBvbmVudHMgKGloZHIpCgBOb3QgZW5vdWdoIG1lbW9yeSB0byBoYW5kbGUgaW1hZ2UgaGVhZGVyIChpaGRyKQoASlAyIElIRFIgYm94OiBjb21wcmVzc2lvbiB0eXBlIGluZGljYXRlIHRoYXQgdGhlIGZpbGUgaXMgbm90IGEgY29uZm9ybWluZyBKUDIgZmlsZSAoJWQpIAoAVGhlICBib3ggbXVzdCBiZSB0aGUgZmlyc3QgYm94IGluIHRoZSBmaWxlLgoAQ2Fubm90IGhhbmRsZSBib3ggb2YgbGVzcyB0aGFuIDggYnl0ZXMKAENhbm5vdCBoYW5kbGUgWEwgYm94IG9mIGxlc3MgdGhhbiAxNiBieXRlcwoAQm94IGxlbmd0aCBpcyBpbmNvbnNpc3RlbnQuCgBTdHJlYW0gZXJyb3Igd2hpbGUgcmVhZGluZyBKUDIgSGVhZGVyIGJveAoAU3RyZWFtIGVycm9yIHdoaWxlIHJlYWRpbmcgSlAyIEhlYWRlciBib3g6IGJveCBsZW5ndGggaXMgaW5jb25zaXN0ZW50LgoAU3RyZWFtIGVycm9yIHdoaWxlIHJlYWRpbmcgSlAyIEhlYWRlciBib3g6IG5vICdpaGRyJyBib3guCgBUaGUgZnR5cCBib3ggbXVzdCBiZSB0aGUgc2Vjb25kIGJveCBpbiB0aGUgZmlsZS4KAEVycm9yIHdpdGggRlRZUCBzaWduYXR1cmUgQm94IHNpemUKAE5vdCBlbm91Z2ggbWVtb3J5IHdpdGggRlRZUCBCb3gKAFRoZSBzaWduYXR1cmUgYm94IG11c3QgYmUgdGhlIGZpcnN0IGJveCBpbiB0aGUgZmlsZS4KAEVycm9yIHdpdGggSlAgc2lnbmF0dXJlIEJveCBzaXplCgBFcnJvciB3aXRoIEpQIFNpZ25hdHVyZSA6IGJhZCBtYWdpYyBudW1iZXIKAEZhaWxlZCB0byBzZWVrIGluIHRoZSBzdHJlYW0uCgBOb3QgZW5vdWdoIG1lbW9yeSB0byBob2xkIEpQMiBIZWFkZXIgZGF0YQoAU3RyZWFtIGVycm9yIHdoaWxlIHdyaXRpbmcgSlAyIEhlYWRlciBib3gKAE5vdCBlbm91Z2ggbWVtb3J5IHRvIGhhbmRsZSBmdHlwIGRhdGEKAEVycm9yIHdoaWxlIHdyaXRpbmcgZnR5cCBkYXRhIHRvIHN0cmVhbQoASlAyIGJveCB3aGljaCBhcmUgYWZ0ZXIgdGhlIGNvZGVzdHJlYW0gd2lsbCBub3QgYmUgcmVhZCBieSB0aGlzIGZ1bmN0aW9uLgoAVGlsZSBYIGNvb3JkaW5hdGVzIGFyZSBub3Qgc3VwcG9ydGVkCgBUaWxlIFkgY29vcmRpbmF0ZXMgYXJlIG5vdCBzdXBwb3J0ZWQKAHRpbGVzIHJlcXVpcmUgYXQgbGVhc3Qgb25lIHJlc29sdXRpb24KAE5vdCBlbm91Z2ggbWVtb3J5IGZvciB0aWxlIGRhdGEKAE5vdCBlbm91Z2ggbWVtb3J5IGZvciB0aWxlIHJlc29sdXRpb25zCgBOb3QgZW5vdWdoIG1lbW9yeSB0byBoYW5kbGUgYmFuZCBwcmVjaW50cwoATm90IGVub3VnaCBtZW1vcnkgZm9yIGN1cnJlbnQgcHJlY2luY3QgY29kZWJsb2NrIGVsZW1lbnQKAE5vIGluY2x0cmVlIGNyZWF0ZWQuCgBObyBpbXNidHJlZSBjcmVhdGVkLgoAVGlsZXMgZG9uJ3QgYWxsIGhhdmUgdGhlIHNhbWUgZGltZW5zaW9uLiBTa2lwIHRoZSBNQ1Qgc3RlcC4KAE51bWJlciBvZiBjb21wb25lbnRzICglZCkgaXMgaW5jb25zaXN0ZW50IHdpdGggYSBNQ1QuIFNraXAgdGhlIE1DVCBzdGVwLgoATm90IGVub3VnaCBtZW1vcnkgdG8gY3JlYXRlIFRhZy10cmVlCgB0Z3RfY3JlYXRlIHRyZWUtPm51bW5vZGVzID09IDAsIG5vIHRyZWUgY3JlYXRlZC4KAE5vdCBlbm91Z2ggbWVtb3J5IHRvIGNyZWF0ZSBUYWctdHJlZSBub2RlcwoATm90IGVub3VnaCBtZW1vcnkgdG8gcmVpbml0aWFsaXplIHRoZSB0YWcgdHJlZQoATm90IGVub3VnaCBtZW1vcnkgdG8gYWRkIGEgbmV3IHZhbGlkYXRpb24gcHJvY2VkdXJlCgAAAQECAQICAgECAgICAgICAwMDAwMDAwMDAwMDAwMDAwUGBgYGBgYGBgYGBgYGBgYHBwcHBwcHBwcHBwcHBwcHAwMDAwMDAwMDAwMDAwMDAwQEBAQEBAQEBAQEBAQEBAQHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwUGBgYGBgYGBgYGBgYGBgYHBwcHBwcHBwcHBwcHBwcHCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAAEBAgECAgIBAgICAgICAgUGBgYGBgYGBgYGBgYGBgYDAwMDAwMDAwMDAwMDAwMDBwcHBwcHBwcHBwcHBwcHBwUGBgYGBgYGBgYGBgYGBgYICAgICAgICAgICAgICAgIBwcHBwcHBwcHBwcHBwcHBwgICAgICAgICAgICAgICAgDAwMDAwMDAwMDAwMDAwMDBwcHBwcHBwcHBwcHBwcHBwQEBAQEBAQEBAQEBAQEBAQHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwgICAgICAgICAgICAgICAgHBwcHBwcHBwcHBwcHBwcHCAgICAgICAgICAgICAgICAABAQIBAgICAQICAgICAgIDAwMDAwMDAwMDAwMDAwMDBQYGBgYGBgYGBgYGBgYGBgcHBwcHBwcHBwcHBwcHBwcDAwMDAwMDAwMDAwMDAwMDBAQEBAQEBAQEBAQEBAQEBAcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBQYGBgYGBgYGBgYGBgYGBgcHBwcHBwcHBwcHBwcHBwcICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgAAwMGAwYGCAMGBggGCAgIAQQEBwQHBwgEBwcIBwgICAEEBAcEBwcIBAcHCAcICAgCBQUHBQcHCAUHBwgHCAgIAQQEBwQHBwgEBwcIBwgICAIFBQcFBwcIBQcHCAcICAgCBQUHBQcHCAUHBwgHCAgIAgUFBwUHBwgFBwcIBwgICAEEBAcEBwcIBAcHCAcICAgCBQUHBQcHCAUHBwgHCAgIAgUFBwUHBwgFBwcIBwgICAIFBQcFBwcIBQcHCAcICAgCBQUHBQcHCAUHBwgHCAgIAgUFBwUHBwgFBwcIBwgICAIFBQcFBwcIBQcHCAcICAgCBQUHBQcHCAUHBwgHCAgICQoMDQoKDQ0MDQwNDQ0NDQkKDAsKCQ0MDAsMCw0MDQwJCgwLCgoLCwwNCQoNDQoKCQoMDQoJCwwMCwkKDQwKCQkKDA0KCQsMDA0MDQsMCwwJCgwLCgoLCwwLDAsLCwsLCQoMCwoJDQwMDQkKCwwKCQkKDA0KCg0NDAsJCgsLCgoJCgwNCgoNDQwLCQoLCwoKCQoMCwoJDQwMDQkKCwwKCQkKDAsKCgsLDAsMCwsLCwsJCgwNCgkLDAwNDA0LDAsMCQoMDQoJCwwMCwkKDQwKCQkKDAsKCgsLDA0JCg0NCgoJCgwL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ZHJlc3MgaW4gdXNlAEJyb2tlbiBwaXBlAEkvTyBlcnJvcgBObyBzdWNoIGRldmljZSBvciBhZGRyZXNzAEJsb2NrIGRldmljZSByZXF1aXJlZABObyBzdWNoIGRldmljZQBOb3QgYSBkaXJlY3RvcnkASXMgYSBkaXJlY3RvcnkAVGV4dCBmaWxlIGJ1c3kARXhlYyBmb3JtYXQgZXJyb3IASW52YWxpZCBhcmd1bWVudABBcmd1bWVudCBsaXN0IHRvbyBsb25nAFN5bWJvbGljIGxpbmsgbG9vcABGaWxlbmFtZSB0b28gbG9uZwBUb28gbWFueSBvcGVuIGZpbGVzIGluIHN5c3RlbQBObyBmaWxlIGRlc2NyaXB0b3JzIGF2YWlsYWJsZQBCYWQgZmlsZSBkZXNjcmlwdG9yAE5vIGNoaWxkIHByb2Nlc3MAQmFkIGFkZHJlc3MARmlsZSB0b28gbGFyZ2UAVG9vIG1hbnkgbGlua3MATm8gbG9ja3MgYXZhaWxhYmxlAFJlc291cmNlIGRlYWRsb2NrIHdvdWxkIG9jY3VyAFN0YXRlIG5vdCByZWNvdmVyYWJsZQBQcmV2aW91cyBvd25lciBkaWVkAE9wZXJhdGlvbiBjYW5jZWxlZABGdW5jdGlvbiBub3QgaW1wbGVtZW50ZWQATm8gbWVzc2FnZSBvZiBkZXNpcmVkIHR5cGUASWRlbnRpZmllciByZW1vdmVkAERldmljZSBub3QgYSBzdHJlYW0ATm8gZGF0YSBhdmFpbGFibGUARGV2aWNlIHRpbWVvdXQAT3V0IG9mIHN0cmVhbXMgcmVzb3VyY2VzAExpbmsgaGFzIGJlZW4gc2V2ZXJlZABQcm90b2NvbCBlcnJvcgBCYWQgbWVzc2FnZQBGaWxlIGRlc2NyaXB0b3IgaW4gYmFkIHN0YXRlAE5vdCBhIHNvY2tldABEZXN0aW5hdGlvbiBhZGRyZXNzIHJlcXVpcmVkAE1lc3NhZ2UgdG9vIGxhcmdlAFByb3RvY29sIHdyb25nIHR5cGUgZm9yIHNvY2tldABQcm90b2NvbCBub3QgYXZhaWxhYmxlAFByb3RvY29sIG5vdCBzdXBwb3J0ZWQAU29ja2V0IHR5cGUgbm90IHN1cHBvcnRlZABOb3Qgc3VwcG9ydGVkAFByb3RvY29sIGZhbWlseSBub3Qgc3VwcG9ydGVkAEFkZHJlc3MgZmFtaWx5IG5vdCBzdXBwb3J0ZWQgYnkgcHJvdG9jb2wAQWRkcmVzcyBub3QgYXZhaWxhYmxlAE5ldHdvcmsgaXMgZG93bgBOZXR3b3JrIHVucmVhY2hhYmxlAENvbm5lY3Rpb24gcmVzZXQgYnkgbmV0d29yawBDb25uZWN0aW9uIGFib3J0ZWQATm8gYnVmZmVyIHNwYWNlIGF2YWlsYWJsZQBTb2NrZXQgaXMgY29ubmVjdGVkAFNvY2tldCBub3QgY29ubmVjdGVkAENhbm5vdCBzZW5kIGFmdGVyIHNvY2tldCBzaHV0ZG93bgBPcGVyYXRpb24gYWxyZWFkeSBpbiBwcm9ncmVzcwBPcGVyYXRpb24gaW4gcHJvZ3Jlc3MAU3RhbGUgZmlsZSBoYW5kbGUAUmVtb3RlIEkvTyBlcnJvcgBRdW90YSBleGNlZWRlZABObyBtZWRpdW0gZm91bmQAV3JvbmcgbWVkaXVtIHR5cGUATm8gZXJyb3IgaW5mb3JtYXRpb24=\";var tempDoublePtr=STATICTOP;STATICTOP+=16;function ___lock(){}var SYSCALLS={varargs:0,get:(function(varargs){SYSCALLS.varargs+=4;var ret=HEAP32[SYSCALLS.varargs-4>>2];return ret}),getStr:(function(){var ret=Pointer_stringify(SYSCALLS.get());return ret}),get64:(function(){var low=SYSCALLS.get(),high=SYSCALLS.get();if(low>=0)assert(high===0);else assert(high===-1);return low}),getZero:(function(){assert(SYSCALLS.get()===0)})};function ___syscall140(which,varargs){SYSCALLS.varargs=varargs;try{var stream=SYSCALLS.getStreamFromFD(),offset_high=SYSCALLS.get(),offset_low=SYSCALLS.get(),result=SYSCALLS.get(),whence=SYSCALLS.get();var offset=offset_low;FS.llseek(stream,offset,whence);HEAP32[result>>2]=stream.position;if(stream.getdents&&offset===0&&whence===0)stream.getdents=null;return 0}catch(e){if(typeof FS===\"undefined\"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}function ___syscall145(which,varargs){SYSCALLS.varargs=varargs;try{var stream=SYSCALLS.getStreamFromFD(),iov=SYSCALLS.get(),iovcnt=SYSCALLS.get();return SYSCALLS.doReadv(stream,iov,iovcnt)}catch(e){if(typeof FS===\"undefined\"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}function flush_NO_FILESYSTEM(){var fflush=Module[\"_fflush\"];if(fflush)fflush(0);var printChar=___syscall146.printChar;if(!printChar)return;var buffers=___syscall146.buffers;if(buffers[1].length)printChar(1,10);if(buffers[2].length)printChar(2,10)}function ___syscall146(which,varargs){SYSCALLS.varargs=varargs;try{var stream=SYSCALLS.get(),iov=SYSCALLS.get(),iovcnt=SYSCALLS.get();var ret=0;if(!___syscall146.buffers){___syscall146.buffers=[null,[],[]];___syscall146.printChar=(function(stream,curr){var buffer=___syscall146.buffers[stream];assert(buffer);if(curr===0||curr===10){(stream===1?Module[\"print\"]:Module[\"printErr\"])(UTF8ArrayToString(buffer,0));buffer.length=0}else{buffer.push(curr)}})}for(var i=0;i>2];var len=HEAP32[iov+(i*8+4)>>2];for(var j=0;j>2]=value;return value}function ___syscall221(which,varargs){SYSCALLS.varargs=varargs;try{return 0}catch(e){if(typeof FS===\"undefined\"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}function ___syscall5(which,varargs){SYSCALLS.varargs=varargs;try{var pathname=SYSCALLS.getStr(),flags=SYSCALLS.get(),mode=SYSCALLS.get();var stream=FS.open(pathname,flags,mode);return stream.fd}catch(e){if(typeof FS===\"undefined\"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}function ___syscall54(which,varargs){SYSCALLS.varargs=varargs;try{return 0}catch(e){if(typeof FS===\"undefined\"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}function ___syscall6(which,varargs){SYSCALLS.varargs=varargs;try{var stream=SYSCALLS.getStreamFromFD();FS.close(stream);return 0}catch(e){if(typeof FS===\"undefined\"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}var cttz_i8=allocate([8,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,5,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,6,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,5,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,7,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,5,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,6,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,5,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0],\"i8\",ALLOC_STATIC);function ___unlock(){}var _llvm_ceil_f32=Math_ceil;var _llvm_floor_f32=Math_floor;var _llvm_floor_f64=Math_floor;var _llvm_pow_f64=Math_pow;function _emscripten_memcpy_big(dest,src,num){HEAPU8.set(HEAPU8.subarray(src,src+num),dest);return dest}DYNAMICTOP_PTR=staticAlloc(4);STACK_BASE=STACKTOP=alignMemory(STATICTOP);STACK_MAX=STACK_BASE+TOTAL_STACK;DYNAMIC_BASE=alignMemory(STACK_MAX);HEAP32[DYNAMICTOP_PTR>>2]=DYNAMIC_BASE;staticSealed=true;var ASSERTIONS=false;function intArrayToString(array){var ret=[];for(var i=0;i255){if(ASSERTIONS){assert(false,\"Character code \"+chr+\" (\"+String.fromCharCode(chr)+\") at offset \"+i+\" not in 0x00-0xFF.\")}chr&=255}ret.push(String.fromCharCode(chr))}return ret.join(\"\")}var decodeBase64=typeof atob===\"function\"?atob:(function(input){var keyStr=\"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\";var output=\"\";var chr1,chr2,chr3;var enc1,enc2,enc3,enc4;var i=0;input=input.replace(/[^A-Za-z0-9\\+\\/\\=]/g,\"\");do{enc1=keyStr.indexOf(input.charAt(i++));enc2=keyStr.indexOf(input.charAt(i++));enc3=keyStr.indexOf(input.charAt(i++));enc4=keyStr.indexOf(input.charAt(i++));chr1=enc1<<2|enc2>>4;chr2=(enc2&15)<<4|enc3>>2;chr3=(enc3&3)<<6|enc4;output=output+String.fromCharCode(chr1);if(enc3!==64){output=output+String.fromCharCode(chr2)}if(enc4!==64){output=output+String.fromCharCode(chr3)}}while(i2147483648)return false;b=new a(newBuffer);d=new c(newBuffer);f=new e(newBuffer);h=new g(newBuffer);j=new i(newBuffer);l=new k(newBuffer);n=new m(newBuffer);p=new o(newBuffer);buffer=newBuffer;return true}\n// EMSCRIPTEN_START_FUNCS\nfunction Wa(a){a=a|0;var b=0;b=u;u=u+a|0;u=u+15&-16;return b|0}function Xa(){return u|0}function Ya(a){a=a|0;u=a}function Za(a,b){a=a|0;b=b|0;u=a;v=b}function _a(a,b){a=a|0;b=b|0;if(!x){x=a;y=b}}function $a(a){a=a|0;I=a}function ab(){return I|0}function bb(a,b,c,d,e,g,h,i,j,k,l){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;l=l|0;var m=0,n=0,o=0,p=0,q=0;p=u;u=u+8272|0;q=p+16|0;n=p+12|0;m=p;f[n>>2]=0;o=Wb((f[a>>2]|0)==1375686655?0:2)|0;pc(o,1,0)|0;qc(o,2,0)|0;oc(o,3,0)|0;mc(q);f[m>>2]=a;f[m+4>>2]=a;f[m+8>>2]=b;m=uc(m,1)|0;if(!(rc(o,q)|0)){Si(4211)|0;jb(m);Zb(o);q=1;u=p;return q|0}if(!(hc(m,o,n)|0)){Si(4263)|0;jb(m);Zb(o);Qb(f[n>>2]|0);q=1;u=p;return q|0}if(!(Xb(o,m,f[n>>2]|0)|0)){Si(4313)|0;Zb(o);jb(m);Qb(f[n>>2]|0);q=1;u=p;return q|0}a=f[n>>2]|0;f[e>>2]=f[a+8>>2];f[g>>2]=f[a+12>>2];f[h>>2]=f[a+16>>2];b=a+24|0;q=f[b>>2]|0;f[j>>2]=f[q+24>>2];f[k>>2]=f[q+32>>2];f[i>>2]=f[q+28>>2];f[l>>2]=f[a+20>>2];a=X(X(f[e>>2]<<2,f[g>>2]|0)|0,f[h>>2]|0)|0;f[d>>2]=a;k=sh(a)|0;f[c>>2]=k;switch(f[h>>2]|0){case 1:{hj(k|0,f[(f[b>>2]|0)+44>>2]|0,a|0)|0;break}case 3:{j=X(f[g>>2]|0,f[e>>2]|0)|0;if((j|0)>0){i=f[b>>2]|0;b=f[i+44>>2]|0;l=f[i+96>>2]|0;i=f[i+148>>2]|0;a=0;do{q=a*3|0;f[k+(q<<2)>>2]=f[b+(a<<2)>>2];f[k+(q+1<<2)>>2]=f[l+(a<<2)>>2];f[k+(q+2<<2)>>2]=f[i+(a<<2)>>2];a=a+1|0}while((a|0)<(j|0))}break}default:{}}jb(m);Zb(o);Qb(f[n>>2]|0);q=0;u=p;return q|0}function cb(a,b,c,d,e,g,i,k,l,m){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;g=g|0;i=i|0;k=k|0;l=l|0;m=m|0;var o=0,p=0,q=0,r=0,s=0,t=0,v=0,w=0,x=0,y=0;w=u;u=u+18880|0;t=w+160|0;o=w+16|0;v=w;nc(t);f[t+18200>>2]=0;f[t+4788>>2]=1;f[t+20>>2]=1;a:do if(!e)switch(d|0){case 0:case 100:{n[t+4792>>2]=0.0;break a}default:{n[t+5192>>2]=+(d|0);f[t+28>>2]=1;break a}}else n[t+4792>>2]=+(e|0);while(0);f[o+24>>2]=c;f[o+28>>2]=c;f[o+32>>2]=0;f[o>>2]=1;f[o+4>>2]=1;f[o+8>>2]=a;f[o+12>>2]=b;f[o+60>>2]=c;f[o+64>>2]=c;f[o+68>>2]=0;f[o+36>>2]=1;f[o+40>>2]=1;f[o+44>>2]=a;f[o+48>>2]=b;f[o+96>>2]=c;f[o+100>>2]=c;f[o+104>>2]=0;f[o+72>>2]=1;f[o+76>>2]=1;f[o+80>>2]=a;f[o+84>>2]=b;f[o+132>>2]=c;f[o+136>>2]=c;f[o+140>>2]=0;f[o+108>>2]=1;f[o+112>>2]=1;f[o+116>>2]=a;f[o+120>>2]=b;s=Pb(4,o,1)|0;if(!s){m=0;u=w;return m|0}if((c|0)==16){if((b|0)>0&(a|0)>0){q=f[s+24>>2]|0;e=f[q+200>>2]|0;c=f[q+44>>2]|0;p=f[q+96>>2]|0;q=f[q+148>>2]|0;o=0;do{r=X(o,a)|0;d=0;do{x=d+r|0;y=x<<2;f[c+(x<<2)>>2]=j[g+(y<<1)>>1];f[p+(x<<2)>>2]=j[g+((y|1)<<1)>>1];f[q+(x<<2)>>2]=j[g+((y|2)<<1)>>1];f[e+(x<<2)>>2]=j[g+((y|3)<<1)>>1];d=d+1|0}while((d|0)!=(a|0));o=o+1|0}while((o|0)!=(b|0))}}else if((b|0)>0&(a|0)>0){q=f[s+24>>2]|0;e=f[q+200>>2]|0;c=f[q+44>>2]|0;p=f[q+96>>2]|0;q=f[q+148>>2]|0;o=0;do{r=X(o,a)|0;d=0;do{y=d+r|0;x=y<<2;f[c+(y<<2)>>2]=h[g+x>>0];f[p+(y<<2)>>2]=h[g+(x|1)>>0];f[q+(y<<2)>>2]=h[g+(x|2)>>0];f[e+(y<<2)>>2]=h[g+(x|3)>>0];d=d+1|0}while((d|0)!=(a|0));o=o+1|0}while((o|0)!=(b|0))}f[s>>2]=0;f[s+4>>2]=0;f[s+8>>2]=a;f[s+12>>2]=b;if((k|0)>0){f[s+28>>2]=i;f[s+32>>2]=k}pc(0,1,0)|0;qc(0,2,0)|0;oc(0,3,0)|0;e=Vb(2)|0;pc(e,1,0)|0;qc(e,2,0)|0;oc(e,3,0)|0;sc(e,t,s)|0;d=sh(67108864)|0;f[v>>2]=d;o=v+4|0;f[o>>2]=d;f[v+8>>2]=67108864;d=uc(v,0)|0;if(!d){y=0;u=w;return y|0}if(!(tc(e,s,d)|0)){jb(d);Zb(e);Qb(s);y=0;u=w;return y|0}if(!(bc(e,d)|0)){jb(d);Zb(e);Qb(s);y=0;u=w;return y|0}if(!(cc(e,d)|0)){jb(d);Zb(e);Qb(s);y=0;u=w;return y|0}else{x=f[v>>2]|0;y=(f[o>>2]|0)-x|0;v=sh(y)|0;f[l>>2]=v;hj(v|0,x|0,y|0)|0;f[m>>2]=y;jb(d);Zb(e);Qb(s);y=1;u=w;return y|0}return 0}function db(){return xc()|0}function eb(a,b){a=a|0;b=b|0;return}function fb(a,b){a=a|0;b=b|0;return}function gb(a,b){a=a|0;b=b|0;var c=0;b=u;u=u+16|0;c=b;f[c>>2]=a;Pi(4200,c)|0;u=b;return}function hb(a,b){a=a|0;b=b|0;var c=0;c=Ic(1,72)|0;if(!c){c=0;return c|0}f[c+64>>2]=a;a=Hc(a)|0;f[c+32>>2]=a;if(!a){Mc(c);c=0;return c|0}else{f[c+36>>2]=a;b=(b|0)==0;a=c+68|0;f[a>>2]=f[a>>2]|(b?1:2);f[c+40>>2]=b?29:30;f[c+44>>2]=b?31:32;f[c+16>>2]=4;f[c+20>>2]=5;f[c+24>>2]=6;f[c+28>>2]=7;return c|0}return 0}function ib(a){a=a|0;var b=0,c=0;b=Ic(1,72)|0;if(!b){c=0;return c|0}f[b+64>>2]=1048576;c=Hc(1048576)|0;f[b+32>>2]=c;if(!c){Mc(b);c=0;return c|0}else{f[b+36>>2]=c;c=(a|0)==0;a=b+68|0;f[a>>2]=f[a>>2]|(c?1:2);f[b+40>>2]=c?29:30;f[b+44>>2]=c?31:32;f[b+16>>2]=4;f[b+20>>2]=5;f[b+24>>2]=6;f[b+28>>2]=7;c=b;return c|0}return 0}function jb(a){a=a|0;var b=0;if(!a)return;b=f[a+4>>2]|0;if(b|0)Sa[b&7](f[a>>2]|0);b=a+32|0;Mc(f[b>>2]|0);f[b>>2]=0;Mc(a);return}function kb(a,b){a=a|0;b=b|0;if(!a)return;if(!(f[a+68>>2]&2))return;f[a+16>>2]=b;return}function lb(a,b){a=a|0;b=b|0;if(!a)return;f[a+28>>2]=b;return}function mb(a,b){a=a|0;b=b|0;if(!a)return;f[a+24>>2]=b;return}function nb(a,b,c){a=a|0;b=b|0;c=c|0;if(!a)return;f[a>>2]=b;f[a+4>>2]=c;return}function ob(a,b,c){a=a|0;b=b|0;c=c|0;if(!a)return;a=a+8|0;f[a>>2]=b;f[a+4>>2]=c;return}function pb(a,b){a=a|0;b=b|0;if(!a)return;if(!(f[a+68>>2]&1))return;f[a+20>>2]=b;return}function qb(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;p=u;u=u+16|0;o=p+8|0;k=p;n=a+68|0;if(f[n>>2]&8|0){o=-1;a=-1;I=o;u=p;return a|0}j=a+32|0;e=f[j>>2]|0;m=a+36|0;f[m>>2]=e;h=a+48|0;g=f[h>>2]|0;do if(g){i=a+20|0;while(1){g=Ma[f[i>>2]&63](e,g,f[a>>2]|0)|0;if((g|0)==-1)break;e=(f[m>>2]|0)+g|0;f[m>>2]=e;g=(f[h>>2]|0)-g|0;f[h>>2]=g;if(!g){l=6;break}}if((l|0)==6){e=f[j>>2]|0;break}f[n>>2]=f[n>>2]|8;Mb(d,4,4360,k)|0;f[n>>2]=f[n>>2]|8;f[h>>2]=0;o=-1;a=-1;I=o;u=p;return a|0}while(0);f[m>>2]=e;a:do if((c|0)>0|(c|0)==0&b>>>0>0){j=a+24|0;g=0;e=0;while(1){h=Ma[f[j>>2]&63](b,c,f[a>>2]|0)|0;i=I;if((h|0)==-1&(i|0)==-1)break;b=_i(b|0,c|0,h|0,i|0)|0;c=I;g=Zi(h|0,i|0,g|0,e|0)|0;e=I;if(!((c|0)>0|(c|0)==0&b>>>0>0))break a}Mb(d,4,4412,o)|0;f[n>>2]=f[n>>2]|8;a=a+56|0;o=a;o=Zi(f[o>>2]|0,f[o+4>>2]|0,g|0,e|0)|0;f[a>>2]=o;f[a+4>>2]=I;a=(g|0)!=0|(e|0)!=0;o=a?e:-1;a=a?g:-1;I=o;u=p;return a|0}else{g=0;e=0}while(0);o=a+56|0;a=o;a=Zi(f[a>>2]|0,f[a+4>>2]|0,g|0,e|0)|0;f[o>>2]=a;f[o+4>>2]=I;o=e;a=g;I=o;u=p;return a|0}function rb(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;m=u;u=u+16|0;l=m;e=a+48|0;g=f[e>>2]|0;if(g>>>0>=b>>>0){l=a+36|0;f[l>>2]=(f[l>>2]|0)+b;f[e>>2]=g-b;l=a+56|0;a=l;a=Zi(f[a>>2]|0,f[a+4>>2]|0,b|0,c|0)|0;f[l>>2]=a;f[l+4>>2]=I;l=c;a=b;I=l;u=m;return a|0}k=a+68|0;if(f[k>>2]&4|0){l=a+36|0;f[l>>2]=(f[l>>2]|0)+g;f[e>>2]=0;a=a+56|0;l=a;l=Zi(f[l>>2]|0,f[l+4>>2]|0,g|0,0)|0;f[a>>2]=l;f[a+4>>2]=I;a=(g|0)!=0;l=a?0:-1;a=a?g:-1;I=l;u=m;return a|0}if(!g){g=0;e=0}else{f[a+36>>2]=f[a+32>>2];b=_i(b|0,c|0,g|0,0)|0;f[e>>2]=0;e=0;c=I}a:do if((c|0)>0|(c|0)==0&b>>>0>0){j=a+24|0;while(1){h=Ma[f[j>>2]&63](b,c,f[a>>2]|0)|0;i=I;if((h|0)==-1&(i|0)==-1)break;b=_i(b|0,c|0,h|0,i|0)|0;c=I;g=Zi(h|0,i|0,g|0,e|0)|0;e=I;if(!((c|0)>0|(c|0)==0&b>>>0>0))break a}Mb(d,4,4386,l)|0;f[k>>2]=f[k>>2]|4;a=a+56|0;l=a;l=Zi(f[l>>2]|0,f[l+4>>2]|0,g|0,e|0)|0;f[a>>2]=l;f[a+4>>2]=I;a=(g|0)!=0|(e|0)!=0;l=a?e:-1;a=a?g:-1;I=l;u=m;return a|0}while(0);l=a+56|0;a=l;a=Zi(f[a>>2]|0,f[a+4>>2]|0,g|0,e|0)|0;f[l>>2]=a;f[l+4>>2]=I;l=e;a=g;I=l;u=m;return a|0}function sb(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0;n=u;u=u+16|0;i=n;k=a+32|0;e=f[k>>2]|0;l=a+36|0;f[l>>2]=e;m=a+48|0;g=f[m>>2]|0;do if(!g)g=a;else{h=a+20|0;while(1){g=Ma[f[h>>2]&63](e,g,f[a>>2]|0)|0;if((g|0)==-1)break;e=(f[l>>2]|0)+g|0;f[l>>2]=e;g=(f[m>>2]|0)-g|0;f[m>>2]=g;if(!g){j=6;break}}if((j|0)==6){g=a;e=f[k>>2]|0;break}m=a+68|0;f[m>>2]=f[m>>2]|8;Mb(d,4,4360,i)|0;f[m>>2]=f[m>>2]|8;m=0;u=n;return m|0}while(0);f[l>>2]=e;f[m>>2]=0;if(!(Ma[f[a+28>>2]&63](b,c,f[g>>2]|0)|0)){m=a+68|0;f[m>>2]=f[m>>2]|8;m=0;u=n;return m|0}else{m=a+56|0;f[m>>2]=b;f[m+4>>2]=c;m=1;u=n;return m|0}return 0}function tb(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,g=0;f[a+36>>2]=f[a+32>>2];f[a+48>>2]=0;g=(Ma[f[a+28>>2]&63](b,c,f[a>>2]|0)|0)==0;d=a+68|0;e=f[d>>2]|0;if(g){f[d>>2]=e|4;g=0;return g|0}else{f[d>>2]=e&-5;g=a+56|0;f[g>>2]=b;f[g+4>>2]=c;g=1;return g|0}return 0}function ub(a,b,c){a=a|0;b=b|0;c=c|0;return -1}function vb(a,b,c){a=a|0;b=b|0;c=c|0;return -1}function wb(a,b,c){a=a|0;b=b|0;c=c|0;I=-1;return -1}function xb(a,b,c){a=a|0;b=b|0;c=c|0;return 0}function yb(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,g=0,h=0;h=u;u=u+16|0;e=h;f[e>>2]=c;if(!d){u=h;return}g=0;c=e+d|0;while(1){c=c+-1|0;b[a>>0]=b[c>>0]|0;g=g+1|0;if((g|0)==(d|0))break;else a=a+1|0}u=h;return}function zb(a,c,d){a=a|0;c=c|0;d=d|0;var e=0;f[c>>2]=0;if(!d)return;e=c+d|0;c=a;a=0;while(1){e=e+-1|0;b[e>>0]=b[c>>0]|0;a=a+1|0;if((a|0)==(d|0))break;else c=c+1|0}return}function Ab(a,c){a=a|0;c=+c;var d=0,e=0,g=0;p[s>>3]=c;d=f[s>>2]|0;e=f[s+4>>2]|0;g=ej(d|0,e|0,56)|0;b[a>>0]=g;g=ej(d|0,e|0,48)|0;b[a+1>>0]=g;g=ej(d|0,e|0,40)|0;b[a+2>>0]=g;b[a+3>>0]=e;g=ej(d|0,e|0,24)|0;b[a+4>>0]=g;g=ej(d|0,e|0,16)|0;b[a+5>>0]=g;e=ej(d|0,e|0,8)|0;b[a+6>>0]=e;b[a+7>>0]=d;return}function Bb(a,c){a=a|0;c=c|0;var d=0;d=c+8|0;b[d+-1>>0]=b[a>>0]|0;b[d+-2>>0]=b[a+1>>0]|0;b[d+-3>>0]=b[a+2>>0]|0;b[d+-4>>0]=b[a+3>>0]|0;b[d+-5>>0]=b[a+4>>0]|0;b[d+-6>>0]=b[a+5>>0]|0;b[d+-7>>0]=b[a+6>>0]|0;b[c>>0]=b[a+7>>0]|0;return}function Cb(a,c){a=a|0;c=+c;var d=0;d=(n[s>>2]=c,f[s>>2]|0);b[a>>0]=d>>>24;b[a+1>>0]=d>>>16;b[a+2>>0]=d>>>8;b[a+3>>0]=d;return}function Db(a,c){a=a|0;c=c|0;var d=0;d=c+4|0;b[d+-1>>0]=b[a>>0]|0;b[d+-2>>0]=b[a+1>>0]|0;b[d+-3>>0]=b[a+2>>0]|0;b[c>>0]=b[a+3>>0]|0;return}function Eb(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;s=u;u=u+16|0;r=s+8|0;q=s;p=a+48|0;e=f[p>>2]|0;if(e>>>0>=c>>>0){r=a+36|0;hj(b|0,f[r>>2]|0,c|0)|0;f[r>>2]=(f[r>>2]|0)+c;f[p>>2]=(f[p>>2]|0)-c;r=a+56|0;q=r;q=Zi(f[q>>2]|0,f[q+4>>2]|0,c|0,0)|0;f[r>>2]=q;f[r+4>>2]=I;r=c;u=s;return r|0}o=a+68|0;if(f[o>>2]&4|0){r=a+36|0;hj(b|0,f[r>>2]|0,e|0)|0;q=f[p>>2]|0;f[r>>2]=(f[r>>2]|0)+q;r=a+56|0;d=r;q=Zi(f[d>>2]|0,f[d+4>>2]|0,q|0,0)|0;f[r>>2]=q;f[r+4>>2]=I;f[p>>2]=0;r=e|0?e:-1;u=s;return r|0}if(!e){n=a+32|0;g=f[n>>2]|0;m=a+36|0;f[m>>2]=g;e=0}else{m=a+36|0;hj(b|0,f[m>>2]|0,e|0)|0;n=a+32|0;g=f[n>>2]|0;f[m>>2]=g;l=f[p>>2]|0;k=a+56|0;j=k;j=Zi(f[j>>2]|0,f[j+4>>2]|0,l|0,0)|0;f[k>>2]=j;f[k+4>>2]=I;f[p>>2]=0;c=c-l|0;b=b+l|0}k=a+64|0;l=a+16|0;j=a+56|0;while(1){h=f[k>>2]|0;i=f[l>>2]|0;if(c>>>0>=h>>>0){h=Ma[i&63](b,c,f[a>>2]|0)|0;f[p>>2]=h;if((h|0)==-1){g=16;break}e=h+e|0;if(h>>>0>>0)g=h;else{g=19;break}}else{g=Ma[i&63](g,h,f[a>>2]|0)|0;f[p>>2]=g;if((g|0)==-1){g=11;break}if(g>>>0>=c>>>0){g=14;break}hj(b|0,f[m>>2]|0,g|0)|0;e=g+e|0;g=f[p>>2]|0}i=f[n>>2]|0;f[m>>2]=i;t=j;t=Zi(f[t>>2]|0,f[t+4>>2]|0,g|0,0)|0;h=j;f[h>>2]=t;f[h+4>>2]=I;f[p>>2]=0;c=c-g|0;b=b+g|0;g=i}if((g|0)==11){Mb(d,4,4386,q)|0;f[p>>2]=0;f[o>>2]=f[o>>2]|4;t=e|0?e:-1;u=s;return t|0}else if((g|0)==14){hj(b|0,f[m>>2]|0,c|0)|0;f[m>>2]=(f[m>>2]|0)+c;f[p>>2]=(f[p>>2]|0)-c;t=a+56|0;r=t;r=Zi(f[r>>2]|0,f[r+4>>2]|0,c|0,0)|0;f[t>>2]=r;f[t+4>>2]=I;t=e+c|0;u=s;return t|0}else if((g|0)==16){Mb(d,4,4386,r)|0;f[p>>2]=0;f[o>>2]=f[o>>2]|4;t=e|0?e:-1;u=s;return t|0}else if((g|0)==19){t=a+56|0;r=t;r=Zi(f[r>>2]|0,f[r+4>>2]|0,h|0,0)|0;f[t>>2]=r;f[t+4>>2]=I;f[m>>2]=f[n>>2];f[p>>2]=0;t=e;u=s;return t|0}return 0}function Fb(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0;s=u;u=u+16|0;p=s;n=a+68|0;if(f[n>>2]&8|0){r=-1;u=s;return r|0}o=a+64|0;r=a+48|0;j=f[r>>2]|0;e=(f[o>>2]|0)-j|0;do if(e>>>0>>0){l=a+32|0;g=a+36|0;m=a+20|0;h=a+56|0;i=0;k=e;a:while(1){if(!k)e=f[l>>2]|0;else{hj(f[g>>2]|0,b|0,k|0)|0;e=f[l>>2]|0;f[g>>2]=e;j=(f[r>>2]|0)+k|0;f[r>>2]=j;v=h;v=Zi(f[v>>2]|0,f[v+4>>2]|0,k|0,0)|0;t=h;f[t>>2]=v;f[t+4>>2]=I;i=k+i|0;c=c-k|0;b=b+k|0}f[g>>2]=e;if(j){do{j=Ma[f[m>>2]&63](e,j,f[a>>2]|0)|0;if((j|0)==-1)break a;e=(f[g>>2]|0)+j|0;f[g>>2]=e;j=(f[r>>2]|0)-j|0;f[r>>2]=j}while((j|0)!=0);e=f[l>>2]|0}f[g>>2]=e;k=f[o>>2]|0;if(c>>>0<=k>>>0){q=5;break}else j=0}if((q|0)==5)break;f[n>>2]=f[n>>2]|8;Mb(d,4,4360,p)|0;v=-1;u=s;return v|0}else{e=a+36|0;i=0;h=a+56|0;g=e;e=f[e>>2]|0}while(0);hj(e|0,b|0,c|0)|0;f[g>>2]=(f[g>>2]|0)+c;f[r>>2]=(f[r>>2]|0)+c;t=h;t=Zi(f[t>>2]|0,f[t+4>>2]|0,c|0,0)|0;v=h;f[v>>2]=t;f[v+4>>2]=I;v=i+c|0;u=s;return v|0}function Gb(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0;l=u;u=u+16|0;i=l;e=a+32|0;c=f[e>>2]|0;k=a+36|0;f[k>>2]=c;g=a+48|0;d=f[g>>2]|0;do if(d){h=a+20|0;while(1){d=Ma[f[h>>2]&63](c,d,f[a>>2]|0)|0;if((d|0)==-1)break;c=(f[k>>2]|0)+d|0;f[k>>2]=c;d=(f[g>>2]|0)-d|0;f[g>>2]=d;if(!d){j=6;break}}if((j|0)==6){c=f[e>>2]|0;break}k=a+68|0;f[k>>2]=f[k>>2]|8;Mb(b,4,4360,i)|0;k=0;u=l;return k|0}while(0);f[k>>2]=c;k=1;u=l;return k|0}function Hb(a){a=a|0;a=a+56|0;I=f[a+4>>2]|0;return f[a>>2]|0}function Ib(a){a=a|0;var b=0,c=0;c=a+8|0;b=f[c>>2]|0;c=f[c+4>>2]|0;if((b|0)==0&(c|0)==0){b=0;c=0;I=b;return c|0}a=a+56|0;c=_i(b|0,c|0,f[a>>2]|0,f[a+4>>2]|0)|0;b=I;I=b;return c|0}function Jb(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;d=Na[f[a+40>>2]&63](a,b,c,d)|0;return d|0}function Kb(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return Na[f[a+44>>2]&63](a,b,c,d)|0}function Lb(a){a=a|0;return (f[a+28>>2]|0)!=7|0}function Mb(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,g=0,h=0,i=0;i=u;u=u+528|0;g=i;h=i+16|0;a:do if(a){switch(b|0){case 1:{b=a+12|0;break}case 2:{b=a+16|0;a=a+4|0;break}case 4:{b=a+20|0;a=a+8|0;break}default:{b=0;break a}}e=f[b>>2]|0;b=f[a>>2]|0;if(e)if(!c)b=1;else{ij(h|0,0,512)|0;f[g>>2]=d;Hi(h,512,c,g)|0;Ta[e&7](h,b);b=1}else b=0}else b=0;while(0);u=i;return b|0}function Nb(a){a=a|0;f[a>>2]=0;f[a+4>>2]=0;f[a+8>>2]=0;f[a+12>>2]=4;f[a+20>>2]=4;f[a+16>>2]=4;return}function Ob(a,b){a=a|0;b=b|0;return}function Pb(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,g=0,h=0,i=0,j=0,k=0;d=Ic(1,36)|0;if(!d){i=d;return i|0}f[d+20>>2]=c;h=d+16|0;f[h>>2]=a;e=Ic(1,a*52|0)|0;i=d+24|0;f[i>>2]=e;if(!e){c=f[d+28>>2]|0;if(c|0)Mc(c);Mc(d);i=0;return i|0}if(!a){i=d;return i|0}c=0;while(1){f[e+(c*52|0)>>2]=f[b+(c*36|0)>>2];f[e+(c*52|0)+4>>2]=f[b+(c*36|0)+4>>2];j=f[b+(c*36|0)+8>>2]|0;f[e+(c*52|0)+8>>2]=j;k=f[b+(c*36|0)+12>>2]|0;f[e+(c*52|0)+12>>2]=k;f[e+(c*52|0)+16>>2]=f[b+(c*36|0)+16>>2];f[e+(c*52|0)+20>>2]=f[b+(c*36|0)+20>>2];f[e+(c*52|0)+24>>2]=f[b+(c*36|0)+24>>2];f[e+(c*52|0)+28>>2]=f[b+(c*36|0)+28>>2];f[e+(c*52|0)+32>>2]=f[b+(c*36|0)+32>>2];j=Ic(X(k,j)|0,4)|0;f[e+(c*52|0)+44>>2]=j;c=c+1|0;if(!j)break;if(c>>>0>=a>>>0){g=22;break}e=f[i>>2]|0}if((g|0)==22)return d|0;c=f[i>>2]|0;if(c|0){e=f[h>>2]|0;if(e){a=0;while(1){c=f[c+(a*52|0)+44>>2]|0;if(c){Mc(c);e=f[h>>2]|0}c=a+1|0;if(c>>>0>=e>>>0)break;a=c;c=f[i>>2]|0}c=f[i>>2]|0}Mc(c)}c=f[d+28>>2]|0;if(c|0)Mc(c);Mc(d);k=0;return k|0}function Qb(a){a=a|0;var b=0,c=0,d=0,e=0,g=0;if(!a)return;e=a+24|0;b=f[e>>2]|0;if(b|0){g=a+16|0;c=f[g>>2]|0;if(c){d=0;while(1){b=f[b+(d*52|0)+44>>2]|0;if(b){Mc(b);c=f[g>>2]|0}b=d+1|0;if(b>>>0>=c>>>0)break;d=b;b=f[e>>2]|0}b=f[e>>2]|0}Mc(b)}b=f[a+28>>2]|0;if(b|0)Mc(b);Mc(a);return}function Rb(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0;d=Ic(1,36)|0;if(!d){b=d;return b|0}f[d+20>>2]=c;f[d+16>>2]=a;e=Ic(a,52)|0;f[d+24>>2]=e;if(!e){c=f[d+28>>2]|0;if(c|0)Mc(c);Mc(d);b=0;return b|0}else{if(!a){b=d;return b|0}else c=0;do{f[e+(c*52|0)>>2]=f[b+(c*36|0)>>2];f[e+(c*52|0)+4>>2]=f[b+(c*36|0)+4>>2];f[e+(c*52|0)+8>>2]=f[b+(c*36|0)+8>>2];f[e+(c*52|0)+12>>2]=f[b+(c*36|0)+12>>2];f[e+(c*52|0)+16>>2]=f[b+(c*36|0)+16>>2];f[e+(c*52|0)+20>>2]=f[b+(c*36|0)+20>>2];f[e+(c*52|0)+24>>2]=f[b+(c*36|0)+24>>2];f[e+(c*52|0)+32>>2]=f[b+(c*36|0)+32>>2];f[e+(c*52|0)+44>>2]=0;c=c+1|0}while((c|0)!=(a|0));return d|0}return 0}function Sb(){return Ic(1,36)|0}function Tb(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;c=f[b+4>>2]|0;d=f[a>>2]|0;g=f[b+8>>2]|0;h=f[a+4>>2]|0;e=f[b+12>>2]|0;l=(X((f[b+24>>2]|0)+-1|0,e)|0)+c|0;i=f[b+16>>2]|0;j=(X((f[b+28>>2]|0)+-1|0,i)|0)+g|0;b=Zi(l|0,0,e|0,0)|0;b=0-I|b;e=f[a+8>>2]|0;i=Zi(j|0,0,i|0,0)|0;i=0-I|i;j=f[a+12>>2]|0;l=f[a+16>>2]|0;if(!l)return;k=(c>>>0>d>>>0?c:d)+-1|0;g=(g>>>0>h>>>0?g:h)+-1|0;e=(b>>>0>>0?b:e)+-1|0;d=(i>>>0>>0?i:j)+-1|0;c=0;b=f[a+24>>2]|0;while(1){h=f[b>>2]|0;j=((k+h|0)>>>0)/(h>>>0)|0;o=f[b+4>>2]|0;a=((g+o|0)>>>0)/(o>>>0)|0;i=f[b+40>>2]|0;n=fj(1,0,i|0)|0;m=I;h=Zi((((e+h|0)>>>0)/(h>>>0)|0)-j|0,0,-1,-1)|0;h=Zi(h|0,I|0,n|0,m|0)|0;h=ej(h|0,I|0,i|0)|0;o=Zi((((d+o|0)>>>0)/(o>>>0)|0)-a|0,0,-1,-1)|0;m=Zi(o|0,I|0,n|0,m|0)|0;i=ej(m|0,I|0,i|0)|0;f[b+8>>2]=h;f[b+12>>2]=i;f[b+16>>2]=j;f[b+20>>2]=a;c=c+1|0;if(c>>>0>=l>>>0)break;else b=b+52|0}return}function Ub(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,g=0,h=0,i=0,j=0;f[b>>2]=f[a>>2];f[b+4>>2]=f[a+4>>2];f[b+8>>2]=f[a+8>>2];f[b+12>>2]=f[a+12>>2];j=b+24|0;d=f[j>>2]|0;i=b+16|0;if(!d)c=j;else{e=f[i>>2]|0;if(!e)c=j;else{c=0;while(1){d=f[d+(c*52|0)+44>>2]|0;if(d){Mc(d);e=f[i>>2]|0}c=c+1|0;if(c>>>0>=e>>>0)break;d=f[j>>2]|0}c=j;d=f[j>>2]|0}Mc(d);f[j>>2]=0}d=f[a+16>>2]|0;f[i>>2]=d;d=Hc(d*52|0)|0;f[c>>2]=d;if(!d){f[j>>2]=0;f[i>>2]=0;return}if(f[i>>2]|0){h=a+24|0;g=0;c=d;do{c=c+(g*52|0)|0;d=(f[h>>2]|0)+(g*52|0)|0;e=c+52|0;do{f[c>>2]=f[d>>2];c=c+4|0;d=d+4|0}while((c|0)<(e|0));c=f[j>>2]|0;f[c+(g*52|0)+44>>2]=0;g=g+1|0}while(g>>>0<(f[i>>2]|0)>>>0)}f[b+20>>2]=f[a+20>>2];e=a+32|0;c=f[e>>2]|0;g=b+32|0;f[g>>2]=c;if(!c){f[b+28>>2]=0;return}d=Hc(c)|0;c=b+28|0;f[c>>2]=d;if(!d){f[c>>2]=0;f[g>>2]=0;return}else{hj(d|0,f[a+28>>2]|0,f[e>>2]|0)|0;return}}function Vb(a){a=a|0;var b=0;b=Ic(1,84)|0;if(!b){b=0;return b|0}f[b+68>>2]=0;switch(a|0){case 0:{f[b+4>>2]=8;f[b+12>>2]=9;f[b>>2]=33;f[b+8>>2]=1;f[b+16>>2]=1;f[b+20>>2]=34;a=Pc()|0;f[b+40>>2]=a;if(!a){Mc(b);b=0;return b|0}break}case 2:{f[b+4>>2]=10;f[b+12>>2]=11;f[b>>2]=35;f[b+8>>2]=2;f[b+16>>2]=2;f[b+20>>2]=36;a=nf(0)|0;f[b+40>>2]=a;if(!a){Mc(b);b=0;return b|0}break}default:{Mc(b);b=0;return b|0}}Nb(b+44|0);return b|0}function Wb(a){a=a|0;var b=0;b=Ic(1,84)|0;if(!b){b=0;return b|0}f[b+68>>2]=1;switch(a|0){case 0:{f[b+72>>2]=13;f[b+76>>2]=2;f[b+80>>2]=3;f[b+4>>2]=37;f[b+16>>2]=12;f[b>>2]=38;f[b+20>>2]=1;f[b+24>>2]=5;f[b+8>>2]=1;f[b+12>>2]=3;f[b+28>>2]=1;f[b+32>>2]=1;f[b+36>>2]=13;a=Jd()|0;f[b+40>>2]=a;if(!a){Mc(b);b=0;return b|0}break}case 2:{f[b+72>>2]=14;f[b+76>>2]=4;f[b+80>>2]=5;f[b+4>>2]=39;f[b+16>>2]=14;f[b>>2]=40;f[b+8>>2]=2;f[b+12>>2]=4;f[b+20>>2]=2;f[b+24>>2]=6;f[b+28>>2]=2;f[b+32>>2]=2;f[b+36>>2]=15;a=nf(1)|0;f[b+40>>2]=a;if(!a){Mc(b);b=0;return b|0}break}default:{Mc(b);b=0;return b|0}}Nb(b+44|0);return b|0}function Xb(a,b,c){a=a|0;b=b|0;c=c|0;if(!((a|0)!=0&(b|0)!=0)){c=0;return c|0}if(!(f[a+68>>2]|0)){c=0;return c|0}c=Na[f[a+4>>2]&63](f[a+40>>2]|0,b,c,a+44|0)|0;return c|0}function Yb(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;if(!((a|0)!=0&(c|0)!=0&(e|0)!=0)){e=0;return e|0}if(!(f[a+68>>2]|0)){e=0;return e|0}e=Pa[f[a+12>>2]&7](f[a+40>>2]|0,b,c,d,e,a+44|0)|0;return e|0}function Zb(a){a=a|0;var b=0;if(!a)return;if(!(f[a+68>>2]|0)){b=a+40|0;Sa[f[a+16>>2]&7](f[b>>2]|0)}else{b=a+40|0;Sa[f[a+20>>2]&7](f[b>>2]|0)}f[b>>2]=0;Mc(a);return}function _b(a){a=a|0;var b=0;b=f[a>>2]|0;if(!b)return;Sc(b);f[a>>2]=0;return}function $b(a){a=a|0;var b=0,c=0;if(!a)return;b=f[a>>2]|0;c=f[b+48>>2]|0;if(c){Mc(c);b=f[a>>2]|0}Mc(b);f[a>>2]=0;return}function ac(a,b,c){a=a|0;b=b|0;c=c|0;if(!a)return;Ua[f[a+72>>2]&15](f[a+40>>2]|0,b,c);return}function bc(a,b){a=a|0;b=b|0;if(!((a|0)!=0&(b|0)!=0)){b=0;return b|0}if(f[a+68>>2]|0){b=0;return b|0}b=Ma[f[a+4>>2]&63](f[a+40>>2]|0,b,a+44|0)|0;return b|0}function cc(a,b){a=a|0;b=b|0;if(!((a|0)!=0&(b|0)!=0)){b=0;return b|0}if(f[a+68>>2]|0){b=0;return b|0}b=Ma[f[a+12>>2]&63](f[a+40>>2]|0,b,a+44|0)|0;return b|0}function dc(a,b){a=a|0;b=b|0;if(!((a|0)!=0&(b|0)!=0)){b=0;return b|0}if(!(f[a+68>>2]|0)){b=0;return b|0}b=Ma[f[a+16>>2]&63](f[a+40>>2]|0,b,a+44|0)|0;return b|0}function ec(a){a=a|0;if(!a){a=0;return a|0}a=Ka[f[a+80>>2]&15](f[a+40>>2]|0)|0;return a|0}function fc(a){a=a|0;if(!a){a=0;return a|0}a=Ka[f[a+76>>2]&15](f[a+40>>2]|0)|0;return a|0}function gc(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;if(!((a|0)!=0&(b|0)!=0)){d=0;return d|0}if(!(f[a+68>>2]|0)){d=0;return d|0}d=Oa[f[a+32>>2]&3](f[a+40>>2]|0,b,c,a+44|0,d)|0;return d|0}function hc(a,b,c){a=a|0;b=b|0;c=c|0;var d=0;d=u;u=u+16|0;if(!((a|0)!=0&(b|0)!=0)){c=0;u=d;return c|0}if(!(f[b+68>>2]|0)){Mb(b+44|0,1,4520,d)|0;c=0;u=d;return c|0}else{c=Na[f[b>>2]&63](a,f[b+40>>2]|0,c,b+44|0)|0;u=d;return c|0}return 0}function ic(a,b,c,d,e,g,h,i,j,k){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;if(!((c|0)!=0&((a|0)!=0&(b|0)!=0&(d|0)!=0))){k=0;return k|0}if(!(f[a+68>>2]|0)){k=0;return k|0}k=Ra[f[a+8>>2]&3](f[a+40>>2]|0,c,d,e,g,h,i,j,k,b,a+44|0)|0;return k|0}function jc(a,c,e,g){a=a|0;c=c|0;e=e|0;g=g|0;var h=0,i=0,k=0;k=g<<2;i=X(k,g)|0;h=a+18704|0;g=j[h>>1]|0;d[h>>1]=(g&32768|0)==0?-32512:(g|256)&65535;f[a+5608>>2]=1;b[a+18690>>0]=2;h=Hc(i+k|0)|0;g=a+18696|0;f[g>>2]=h;if(!h){k=0;return k|0}hj(h|0,c|0,i|0)|0;hj((f[g>>2]|0)+i|0,e|0,k|0)|0;k=1;return k|0}function kc(a,b,c,d,e,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;g=g|0;if(!a){g=0;return g|0}if(!(f[a+68>>2]|0)){g=0;return g|0}g=Qa[f[a+28>>2]&3](f[a+40>>2]|0,b,c,d,e,g,a+44|0)|0;return g|0}function lc(a,b){a=a|0;b=b|0;if(!a){b=0;return b|0}b=Ma[f[a+36>>2]&63](f[a+40>>2]|0,b,a+44|0)|0;return b|0}function mc(a){a=a|0;if(!a)return;ij(a|0,0,8248)|0;f[a+8200>>2]=-1;f[a+8204>>2]=-1;f[a+8248>>2]=0;return}function nc(a){a=a|0;if(!a)return;ij(a|0,0,18708)|0;f[a+5592>>2]=6;f[a+18684>>2]=0;f[a+5596>>2]=64;f[a+5600>>2]=64;f[a+44>>2]=0;f[a+5612>>2]=-1;f[a+18188>>2]=1;f[a+18192>>2]=1;b[a+18688>>0]=0;f[a+18196>>2]=-1;f[a+18200>>2]=-1;n[a+4792>>2]=0.0;f[a+4788>>2]=0;f[a+20>>2]=0;f[a+24>>2]=0;f[a+28>>2]=0;f[a+18692>>2]=0;return}function oc(a,b,c){a=a|0;b=b|0;c=c|0;if(!a){c=0;return c|0}f[a+56>>2]=b;f[a+44>>2]=c;c=1;return c|0}function pc(a,b,c){a=a|0;b=b|0;c=c|0;if(!a){c=0;return c|0}f[a+64>>2]=b;f[a+52>>2]=c;c=1;return c|0}function qc(a,b,c){a=a|0;b=b|0;c=c|0;if(!a){c=0;return c|0}f[a+60>>2]=b;f[a+48>>2]=c;c=1;return c|0}function rc(a,b){a=a|0;b=b|0;var c=0;c=u;u=u+16|0;if(!((a|0)!=0&(b|0)!=0)){b=0;u=c;return b|0}if(!(f[a+68>>2]|0)){Mb(a+44|0,1,4439,c)|0;b=0;u=c;return b|0}else{Ta[f[a+24>>2]&7](f[a+40>>2]|0,b);b=1;u=c;return b|0}return 0}function sc(a,b,c){a=a|0;b=b|0;c=c|0;if(!((a|0)!=0&(b|0)!=0&(c|0)!=0)){c=0;return c|0}if(f[a+68>>2]|0){c=0;return c|0}c=Na[f[a+20>>2]&63](f[a+40>>2]|0,b,c,a+44|0)|0;return c|0}function tc(a,b,c){a=a|0;b=b|0;c=c|0;if(!((a|0)!=0&(c|0)!=0)){c=0;return c|0}if(f[a+68>>2]|0){c=0;return c|0}c=Na[f[a>>2]&63](f[a+40>>2]|0,c,b,a+44|0)|0;return c|0}function uc(a,b){a=a|0;b=b|0;var c=0;if(!a){c=0;return c|0}c=ib(b)|0;if(!c){c=0;return c|0}nb(c,a,0);ob(c,f[a+8>>2]|0,0);if(!b)pb(c,17);else kb(c,16);mb(c,18);lb(c,19);return c|0}function vc(a,b){a=a|0;b=b|0;return wc(a,1048576,b)|0}function wc(a,b,c){a=a|0;b=b|0;c=c|0;var d=0;if(!a){d=0;return d|0}d=Xh(a,(c|0)==0?4433:4436)|0;if(!d){d=0;return d|0}a=hb(b,c)|0;if(!a){ei(d)|0;d=0;return d|0}else{nb(a,d,6);ji(d,0,2)|0;c=Vi(d)|0;ji(d,0,0)|0;ob(a,c,((c|0)<0)<<31>>31);kb(a,20);pb(a,21);mb(a,22);lb(a,23);d=a;return d|0}return 0}function xc(){return 4427}function yc(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;if(!((c|0)!=0&((a|0)!=0&(e|0)!=0))){e=0;return e|0}if(f[a+68>>2]|0){e=0;return e|0}e=Pa[f[a+8>>2]&7](f[a+40>>2]|0,b,c,d,e,a+44|0)|0;return e|0}function zc(a,b,c){a=a|0;b=b|0;c=c|0;c=Qi(a,1,b,c)|0;return (c|0?c:-1)|0}function Ac(a,b,c){a=a|0;b=b|0;c=c|0;return Mh(a,1,b,c)|0}function Bc(a,b,c){a=a|0;b=b|0;c=c|0;c=(ji(c,a,1)|0)==0;I=c?b:-1;return (c?a:-1)|0}function Cc(a,b,c){a=a|0;b=b|0;c=c|0;return (ji(c,a,0)|0)==0|0}function Dc(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0;d=c+4|0;e=f[d>>2]|0;c=(f[c>>2]|0)+(f[c+8>>2]|0)-e|0;if(!c){e=-1;return e|0}b=c>>>0>b>>>0?b:c;hj(a|0,e|0,b|0)|0;f[d>>2]=(f[d>>2]|0)+b;e=b;return e|0}function Ec(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,g=0,h=0,i=0,j=0;j=c+4|0;d=f[j>>2]|0;h=c+8|0;e=f[h>>2]|0;i=d-(f[c>>2]|0)|0;g=(e|0)==0?1:e;while(1)if((g-i|0)>>>0>>0)g=g<<1;else break;if((g|0)!=(e|0)){d=Hc(g)|0;if(!d){j=-1;return j|0}e=f[c>>2]|0;if(e|0){hj(d|0,e|0,i|0)|0;Mc(f[c>>2]|0)}f[c>>2]=d;d=d+i|0;f[j>>2]=d;f[h>>2]=g}hj(d|0,a|0,b|0)|0;f[j>>2]=(f[j>>2]|0)+b;j=b;return j|0}function Fc(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,g=0,h=0;e=c+4|0;g=f[e>>2]|0;c=(f[c>>2]|0)+(f[c+8>>2]|0)-g|0;d=((c|0)<0)<<31>>31;if(!c){e=-1;g=-1;I=e;return g|0}h=(d|0)>(b|0)|(d|0)==(b|0)&c>>>0>a>>>0;f[e>>2]=g+a;e=h?b:d;g=h?a:c;I=e;return g|0}function Gc(a,b,c){a=a|0;b=b|0;c=c|0;var d=0;d=f[c+8>>2]|0;f[c+4>>2]=(f[c>>2]|0)+(0>(b|0)|0==(b|0)&d>>>0>a>>>0?a:d);return 1}function Hc(a){a=a|0;if(!a)a=0;else a=sh(a)|0;return a|0}function Ic(a,b){a=a|0;b=b|0;if((a|0)==0|(b|0)==0){b=0;return b|0}b=uh(a,b)|0;return b|0}function Jc(a){a=a|0;var b=0,c=0;c=u;u=u+16|0;b=c;do if(a)if(!(zh(b,16,a)|0)){a=f[b>>2]|0;break}else{f[b>>2]=0;a=0;break}else a=0;while(0);u=c;return a|0}function Kc(a){a=a|0;th(a);return}function Lc(a,b){a=a|0;b=b|0;if(!b)a=0;else a=vh(a,b)|0;return a|0}function Mc(a){a=a|0;th(a);return}function Nc(a){a=a|0;var b=0,c=0;b=696;while(1){c=f[b>>2]|0;if((c|0)==-1|(c|0)==(a|0))break;else b=b+12|0}return b+4|0}function Oc(a,b){a=a|0;b=b|0;if(!((a|0)!=0&(b|0)!=0))return;f[a+172>>2]=f[b+4>>2];f[a+168>>2]=f[b>>2];return}function Pc(){var a=0,c=0;a=Ic(1,208)|0;if(!a){a=0;return a|0}f[a>>2]=0;c=a+184|0;b[c>>0]=b[c>>0]&-3;c=Hc(1e3)|0;f[a+44>>2]=c;if(!c){Qc(a);c=0;return c|0}f[a+48>>2]=1e3;c=ig()|0;f[a+192>>2]=c;if(!c){Qc(a);c=0;return c|0}c=ig()|0;f[a+188>>2]=c;if(c|0){c=a;return c|0}Qc(a);c=0;return c|0}function Qc(a){a=a|0;var c=0,d=0,e=0,g=0,h=0,i=0;if(!a)return;if(!(f[a>>2]|0)){c=a+36|0;d=f[c>>2]|0;if(d|0){Mc(d);f[c>>2]=0}c=a+24|0;d=f[c>>2]|0;if(d|0){Mc(d);f[c>>2]=0;f[a+28>>2]=0}c=a+44|0;d=f[c>>2]|0;if(d|0){Mc(d);f[c>>2]=0;f[a+48>>2]=0}}else{c=a+12|0;d=f[c>>2]|0;if(d|0){Rc(d);Mc(f[c>>2]|0);f[c>>2]=0}c=a+16|0;d=f[c>>2]|0;if(d|0){Mc(d);f[c>>2]=0;f[a+20>>2]=0}}Qf(f[a+204>>2]|0);c=a+88|0;h=a+164|0;d=f[h>>2]|0;if(d|0){g=X(f[a+112>>2]|0,f[a+116>>2]|0)|0;if(g){e=0;while(1){Rc(d);e=e+1|0;if((e|0)==(g|0))break;else d=d+5640|0}d=f[h>>2]|0}Mc(d);f[h>>2]=0}h=a+124|0;d=f[h>>2]|0;if(d|0){i=a+120|0;e=f[i>>2]|0;if(e){g=0;while(1){d=f[d+(g<<3)>>2]|0;if(d){Mc(d);e=f[i>>2]|0}d=g+1|0;if(d>>>0>=e>>>0)break;g=d;d=f[h>>2]|0}d=f[h>>2]|0}f[i>>2]=0;Mc(d);f[h>>2]=0}i=a+144|0;Mc(f[i>>2]|0);f[i>>2]=0;f[a+128>>2]=0;i=a+108|0;Mc(f[i>>2]|0);f[i>>2]=0;if(!(b[a+184>>0]&2)){i=a+176|0;Mc(f[i>>2]|0);f[i>>2]=0}d=c+100|0;do{f[c>>2]=0;c=c+4|0}while((c|0)<(d|0));i=a+188|0;jg(f[i>>2]|0);f[i>>2]=0;jg(f[a+192>>2]|0);f[i>>2]=0;i=a+196|0;Sc(f[i>>2]|0);f[i>>2]=0;i=a+80|0;Qb(f[i>>2]|0);f[i>>2]=0;i=a+84|0;Qb(f[i>>2]|0);f[i>>2]=0;Mc(a);return}function Rc(a){a=a|0;var b=0,c=0,d=0,e=0,g=0,h=0,i=0;if(!a)return;e=a+5164|0;b=f[e>>2]|0;if(b|0){g=a+5160|0;c=f[g>>2]|0;if(c){d=0;while(1){b=f[b+(d<<3)>>2]|0;if(b){Mc(b);c=f[g>>2]|0}b=d+1|0;if(b>>>0>=c>>>0)break;d=b;b=f[e>>2]|0}b=f[e>>2]|0}f[g>>2]=0;Mc(b);f[e>>2]=0}b=a+5172|0;c=f[b>>2]|0;if(c|0){Mc(c);f[b>>2]=0}b=a+5584|0;c=f[b>>2]|0;if(c|0){Mc(c);f[b>>2]=0}b=a+5608|0;c=f[b>>2]|0;if(c|0){Mc(c);f[b>>2]=0}b=a+5604|0;c=f[b>>2]|0;if(c|0){Mc(c);f[b>>2]=0}b=a+5624|0;c=f[b>>2]|0;if(c|0){Mc(c);f[b>>2]=0;f[a+5632>>2]=0;f[a+5628>>2]=0}i=a+5612|0;b=f[i>>2]|0;if(b|0){h=a+5616|0;c=f[h>>2]|0;if(c){g=0;while(1){d=b+12|0;e=f[d>>2]|0;if(e){Mc(e);f[d>>2]=0;c=f[h>>2]|0}g=g+1|0;if(g>>>0>=c>>>0)break;else b=b+20|0}b=f[i>>2]|0}Mc(b);f[i>>2]=0}b=a+5600|0;c=f[b>>2]|0;if(c|0){Mc(c);f[b>>2]=0}b=a+5592|0;c=f[b>>2]|0;if(!c)return;Mc(c);f[b>>2]=0;f[a+5596>>2]=0;return}function Sc(a){a=a|0;var b=0,c=0,d=0,e=0,g=0;if(!a)return;b=a+28|0;c=f[b>>2]|0;if(c|0){Mc(c);f[b>>2]=0}g=a+40|0;b=f[g>>2]|0;if(b|0){e=a+36|0;if(f[e>>2]|0){d=0;do{c=f[b+(d*40|0)+36>>2]|0;if(c){Mc(c);b=f[g>>2]|0;f[b+(d*40|0)+36>>2]=0}c=f[b+(d*40|0)+16>>2]|0;if(c){Mc(c);b=f[g>>2]|0;f[b+(d*40|0)+16>>2]=0}c=f[b+(d*40|0)+24>>2]|0;if(c){Mc(c);b=f[g>>2]|0;f[b+(d*40|0)+24>>2]=0}d=d+1|0}while(d>>>0<(f[e>>2]|0)>>>0)}Mc(b);f[g>>2]=0}Mc(a);return}function Tc(a,c,e,g){a=a|0;c=c|0;e=e|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,o=0,q=0.0,r=0,s=0,t=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0.0;ia=u;u=u+320|0;ha=ia+296|0;ga=ia+288|0;fa=ia+280|0;ea=ia+272|0;da=ia+264|0;ca=ia+256|0;ba=ia+248|0;aa=ia+240|0;V=ia+232|0;U=ia+224|0;T=ia+216|0;S=ia+208|0;R=ia+200|0;Q=ia+192|0;P=ia+184|0;v=ia+176|0;t=ia+168|0;s=ia+160|0;r=ia+152|0;o=ia+144|0;I=ia+136|0;H=ia+128|0;N=ia+112|0;G=ia+104|0;F=ia+96|0;E=ia+88|0;D=ia+80|0;C=ia+72|0;A=ia+64|0;z=ia+56|0;y=ia+48|0;x=ia+32|0;w=ia+24|0;m=ia+16|0;k=ia+8|0;i=ia;L=ia+309|0;M=ia+300|0;if(!((a|0)!=0&(c|0)!=0&(e|0)!=0)){ha=0;u=ia;return ha|0}$=c+5592|0;h=f[$>>2]|0;if((h+-1|0)>>>0>32){f[i>>2]=h;f[i+4>>2]=33;Mb(g,1,4599,i)|0;ha=0;u=ia;return ha|0}Z=a+112|0;f[Z>>2]=1;_=a+116|0;f[_>>2]=1;K=c+18704|0;do if(!(d[K>>1]|0)){switch(f[c+18676>>2]|0){case 1:{h=1041666;i=1302083;j=3;Y=8;break}case 2:{h=520833;i=651041;j=3;Y=8;break}case 3:{h=1041666;i=1302083;j=4;Y=8;break}default:i=0}if((Y|0)==8){d[K>>1]=j;f[c+18700>>2]=i;f[c+18680>>2]=h;i=1}h=f[c+18684>>2]|0;a:do if((h|0)<4){switch(h|0){case 3:break;default:{Y=13;break a}}h=3;Y=12}else{if((h|0)<33024)switch(h|0){case 4:{h=4;Y=12;break a}default:{Y=13;break a}}switch(h|0){case 33024:break;default:{Y=13;break a}}h=-32512;Y=12}while(0);if((Y|0)==12)d[K>>1]=h;else if((Y|0)==13?(i|0)==0:0)break;Mb(g,2,4655,k)|0}while(0);B=c+18700|0;h=f[B>>2]|0;do if((h|0)<1){q=+n[c+4792+((f[c+4788>>2]|0)+-1<<2)>>2];if(q>0.0){W=f[e+24>>2]|0;m=X(f[W+8>>2]|0,f[e+16>>2]|0)|0;m=X(m,f[W+12>>2]|0)|0;ja=+((X(m,f[W+24>>2]|0)|0)>>>0);W=~~+J(+(ja/(q*8.0*+((f[W>>2]|0)>>>0)*+((f[W+4>>2]|0)>>>0))));f[B>>2]=W;break}else{f[B>>2]=0;break}}else{l=f[e+24>>2]|0;W=X(f[l+8>>2]|0,f[e+16>>2]|0)|0;W=X(W,f[l+12>>2]|0)|0;q=+((X(W,f[l+24>>2]|0)|0)>>>0);h=X(h<<3,f[l>>2]|0)|0;q=q/+((X(h,f[l+4>>2]|0)|0)>>>0);l=c+4788|0;h=f[l>>2]|0;if(h|0){k=0;i=0;do{j=c+4792+(k<<2)|0;if(+n[j>>2]>2]=q;i=1;h=f[l>>2]|0}k=k+1|0}while(k>>>0>>0);if(i|0)Mb(g,2,4792,m)|0}}while(0);h=d[K>>1]|0;b:do if((h+-3&65535)>=4){if(h<<16>>16==7){Mb(g,2,6952,o)|0;d[K>>1]=0;break}if((h+-256&65535)<524){Mb(g,2,7007,r)|0;d[K>>1]=0;break}if((h+-1024&65535)<1180){Mb(g,2,7055,s)|0;d[K>>1]=0;break}if(h<<16>>16<=-1)switch(h<<16>>16){case -32512:break b;case -32768:{Mb(g,2,7097,t)|0;d[K>>1]=0;break b}default:{Mb(g,2,7185,v)|0;d[K>>1]=0;break b}}}else{if((h+-5&65535)<2){Mb(g,2,4884,w)|0;d[K>>1]=0;break}f[c>>2]=0;f[c+12>>2]=1;f[c+16>>2]=1;b[c+18689>>0]=67;b[c+18688>>0]=1;f[c+4>>2]=0;f[c+8>>2]=0;f[c+18180>>2]=0;f[c+18184>>2]=0;f[c+5596>>2]=32;f[c+5600>>2]=32;f[c+5604>>2]=0;f[c+5612>>2]=-1;f[c+18188>>2]=1;f[c+18192>>2]=1;f[c+5608>>2]=1;i=c+4788|0;j=f[i>>2]|0;if((j|0)>1){ja=+n[c+4792+(j+-1<<2)>>2];f[x>>2]=j;p[x+8>>3]=ja;Mb(g,2,4946,x)|0;f[c+4792>>2]=f[c+4792+((f[i>>2]|0)+-1<<2)>>2];f[i>>2]=1;h=d[K>>1]|0}c:do switch(h<<16>>16){case 3:{h=f[$>>2]|0;if((h|0)>6){f[y>>2]=h+1;Mb(g,2,5119,y)|0;f[$>>2]=6;h=6}break}case 4:{h=f[$>>2]|0;if((h|0)<2){f[z>>2]=h+1;Mb(g,2,5265,z)|0;f[$>>2]=1;h=1;break c}if((h|0)>7){f[A>>2]=h+1;Mb(g,2,5419,A)|0;f[$>>2]=7;h=7}break}default:h=f[$>>2]|0}while(0);i=c+40|0;f[i>>2]=f[i>>2]|1;i=c+5620|0;f[i>>2]=h+-1;if((h|0)>1){h=0;do{f[c+5624+(h<<2)>>2]=256;f[c+5756+(h<<2)>>2]=256;h=h+1|0}while((h|0)<(f[i>>2]|0))}f[c+44>>2]=4;if((d[K>>1]|0)==4){h=f[$>>2]|0;f[c+96>>2]=1;f[c+48>>2]=0;f[c+52>>2]=0;f[c+56>>2]=1;W=h+-1|0;f[c+60>>2]=W;f[c+64>>2]=3;f[c+80>>2]=4;f[c+244>>2]=1;f[c+196>>2]=W;f[c+200>>2]=0;f[c+204>>2]=1;f[c+208>>2]=h;f[c+212>>2]=3;f[c+228>>2]=4;h=2}else h=0;f[c+4784>>2]=h;f[c+20>>2]=1;h=f[B>>2]|0;if((h|0)>=1){if((h|0)>1302083){Mb(g,2,5722,D)|0;f[B>>2]=1302083}}else{f[B>>2]=1302083;Mb(g,2,5573,C)|0}h=c+18680|0;i=f[h>>2]|0;if((i|0)>=1){if((i|0)>1041666){Mb(g,2,6044,F)|0;f[h>>2]=1041666}}else{f[h>>2]=1041666;Mb(g,2,5895,E)|0}h=f[e+16>>2]|0;i=f[e+24>>2]|0;k=f[i+8>>2]|0;j=X(k,h)|0;m=f[i+12>>2]|0;j=X(j,m)|0;ja=+((X(j,f[i+24>>2]|0)|0)>>>0);j=X(f[B>>2]<<3,f[i>>2]|0)|0;ja=ja/+((X(j,f[i+4>>2]|0)|0)>>>0);n[c+4792>>2]=ja;j=d[K>>1]|0;d:do if((h|0)==3){h=f[i+28>>2]|0;l=f[i+32>>2]|0;if(!(l|(h|0)!=12)){h=f[i+80>>2]|0;l=f[i+84>>2]|0;if(!(l|(h|0)!=12)){h=f[i+132>>2]|0;i=f[i+136>>2]|0;if(!(i|(h|0)!=12))switch(j<<16>>16){case 3:{if(!(k>>>0>2048|m>>>0>1080))break b;f[H>>2]=k;f[H+4>>2]=m;Mb(g,2,6616,H)|0;break d}case 4:{if(!(k>>>0>4096|m>>>0>2160))break b;f[I>>2]=k;f[I+4>>2]=m;Mb(g,2,6787,I)|0;break d}default:break b}else{m=2;l=i}}else m=1}else m=0;b[L>>0]=b[6383]|0;b[L+1>>0]=b[6384]|0;b[L+2>>0]=b[6385]|0;b[L+3>>0]=b[6386]|0;b[L+4>>0]=b[6387]|0;b[L+5>>0]=b[6388]|0;b[L+6>>0]=b[6389]|0;i=M;j=6390;k=i+9|0;do{b[i>>0]=b[j>>0]|0;i=i+1|0;j=j+1|0}while((i|0)<(k|0));f[N>>2]=m;f[N+4>>2]=h;f[N+8>>2]=l|0?L:M;Mb(g,2,6399,N)|0}else{f[G>>2]=h;Mb(g,2,6217,G)|0}while(0);d[K>>1]=0}while(0);f[a+168>>2]=f[c+18680>>2];W=a+88|0;d[W>>1]=d[K>>1]|0;N=a+181|0;L=b[N>>0]&-2|f[c+20>>2]&1;b[N>>0]=L;M=c+24|0;L=(f[M>>2]&255)<<1&2|L&-3;b[N>>0]=L;b[N>>0]=L&-5|(f[c+28>>2]&255)<<2&4;do if(f[M>>2]|0?(O=c+32|0,f[O>>2]|0):0){h=X((f[c+4788>>2]|0)*12|0,f[$>>2]|0)|0;i=Hc(h)|0;f[a+176>>2]=i;if(i|0){hj(i|0,f[O>>2]|0,h|0)|0;break}Mb(g,1,7244,P)|0;ha=0;u=ia;return ha|0}while(0);k=a+100|0;f[k>>2]=f[c+12>>2];l=a+104|0;f[l>>2]=f[c+16>>2];j=a+92|0;f[j>>2]=f[c+4>>2];m=a+96|0;f[m>>2]=f[c+8>>2];i=c+36|0;h=f[i>>2]|0;do if(!h){h=xc()|0;i=Hc((Kh(h)|0)+29|0)|0;f[a+108>>2]=i;if(i|0){f[S>>2]=7421;f[S+4>>2]=h;Li(i,7416,S)|0;break}Mb(g,1,7370,R)|0;ha=0;u=ia;return ha|0}else{h=Hc((Kh(h)|0)+1|0)|0;f[a+108>>2]=h;if(h|0){Ji(h,f[i>>2]|0)|0;break}Mb(g,1,7316,Q)|0;ha=0;u=ia;return ha|0}while(0);h=(f[e+8>>2]|0)-(f[j>>2]|0)|0;if(!(f[c>>2]|0)){f[k>>2]=h;f[l>>2]=(f[e+12>>2]|0)-(f[m>>2]|0)}else{S=f[k>>2]|0;f[Z>>2]=(h+-1+S|0)/(S|0)|0;S=f[l>>2]|0;f[_>>2]=((f[e+12>>2]|0)+-1-(f[m>>2]|0)+S|0)/(S|0)|0}if(b[c+18688>>0]|0){b[a+180>>0]=b[c+18689>>0]|0;b[N>>0]=b[N>>0]|8}S=Ic(X(f[_>>2]|0,f[Z>>2]|0)|0,5640)|0;M=a+164|0;f[M>>2]=S;if(!S){Mb(g,1,7450,T)|0;ha=0;u=ia;return ha|0}L=c+4784|0;A=f[L>>2]|0;do if(A|0){w=c+48|0;B=f[$>>2]|0;C=f[e+16>>2]|0;D=f[c+4788>>2]|0;E=X(C,B)|0;F=Ic(X(E,D)|0,4)|0;if(!F){Mb(g,1,7504,U)|0;break}h=f[w>>2]|0;r=c+60|0;j=f[r>>2]|0;if(h>>>0>>0){o=X(h,C)|0;s=c+52|0;t=c+64|0;v=c+56|0;i=f[t>>2]|0;while(1){k=f[s>>2]|0;if(k>>>0>>0){m=k+o|0;j=f[v>>2]|0;while(1){if(!j)j=0;else{i=m;l=0;while(1){f[F+(i<<2)>>2]=1;l=l+1|0;j=f[v>>2]|0;if(l>>>0>=j>>>0)break;else i=i+E|0}i=f[t>>2]|0}k=k+1|0;if(k>>>0>=i>>>0)break;else m=m+1|0}j=f[r>>2]|0}h=h+1|0;if(h>>>0>=j>>>0)break;else o=o+C|0}}if(A>>>0>1){t=1;do{h=w;w=w+148|0;x=f[h+8>>2]|0;v=h+156|0;l=f[v>>2]|0;x=l>>>0>x>>>0?x:0;i=f[w>>2]|0;y=h+160|0;j=f[y>>2]|0;if(i>>>0>>0){o=X(i,C)|0;z=h+152|0;r=h+164|0;s=X(x,E)|0;h=f[r>>2]|0;while(1){k=f[z>>2]|0;if(k>>>0>>0){m=k+o|0;while(1){if(x>>>0>>0){h=m+s|0;j=x;while(1){f[F+(h<<2)>>2]=1;j=j+1|0;l=f[v>>2]|0;if(j>>>0>=l>>>0)break;else h=h+E|0}h=f[r>>2]|0}k=k+1|0;if(k>>>0>=h>>>0)break;else m=m+1|0}j=f[y>>2]|0}i=i+1|0;if(i>>>0>=j>>>0)break;else o=o+C|0}}t=t+1|0}while((t|0)!=(A|0))}if(!((D|0)==0|(B|0)==0|(C|0)==0)){h=0;m=0;o=0;while(1){j=0;l=m;while(1){k=0;i=l;while(1){h=h|(f[F+(i<<2)>>2]|0)!=1;k=k+1|0;if((k|0)==(C|0))break;else i=i+1|0}j=j+1|0;if((j|0)==(B|0))break;else l=l+C|0}o=o+1|0;if((o|0)==(D|0))break;else m=m+E|0}if(h|0)Mb(g,1,7552,V)|0}Mc(F)}while(0);e:do if(X(f[_>>2]|0,f[Z>>2]|0)|0){x=c+4788|0;y=c+40|0;z=c+44|0;A=c+18690|0;B=e+16|0;i=c+18696|0;C=e+24|0;D=c+5596|0;E=c+5600|0;F=c+5604|0;G=c+5608|0;H=c+5612|0;I=c+5616|0;K=c+5620|0;w=0;f:while(1){o=f[M>>2]|0;r=o+(w*5640|0)|0;V=f[x>>2]|0;j=o+(w*5640|0)+8|0;f[j>>2]=V;g:do if(V|0){if(((d[W>>1]|0)+-3&65535)<4)h=0;else{h=0;while(1){V=(b[N>>0]&4)==0;f[(V?o+(w*5640|0)+20+(h<<2)|0:o+(w*5640|0)+5184+(h<<2)|0)>>2]=f[(V?c+4792+(h<<2)|0:c+5192+(h<<2)|0)>>2];h=h+1|0;if(h>>>0>=(f[j>>2]|0)>>>0)break g}}do{if(b[N>>0]&4)f[o+(w*5640|0)+5184+(h<<2)>>2]=f[c+5192+(h<<2)>>2];f[o+(w*5640|0)+20+(h<<2)>>2]=f[c+4792+(h<<2)>>2];h=h+1|0}while(h>>>0<(f[j>>2]|0)>>>0)}while(0);f[r>>2]=f[y>>2];f[o+(w*5640|0)+4>>2]=f[z>>2];m=o+(w*5640|0)+16|0;f[m>>2]=b[A>>0];h=o+(w*5640|0)+5636|0;j=b[h>>0]|0;b[h>>0]=j&-5;if(!(f[L>>2]|0))h=0;else{b[h>>0]=j|4;k=f[L>>2]|0;if(!k)h=0;else{l=w+1|0;h=0;j=0;do{if((l|0)==(f[c+48+(j*148|0)+48>>2]|0)){f[o+(w*5640|0)+424+(h*148|0)>>2]=f[c+48+(h*148|0)>>2];f[o+(w*5640|0)+424+(h*148|0)+4>>2]=f[c+48+(h*148|0)+4>>2];f[o+(w*5640|0)+424+(h*148|0)+8>>2]=f[c+48+(h*148|0)+8>>2];f[o+(w*5640|0)+424+(h*148|0)+12>>2]=f[c+48+(h*148|0)+12>>2];f[o+(w*5640|0)+424+(h*148|0)+16>>2]=f[c+48+(h*148|0)+16>>2];f[o+(w*5640|0)+424+(h*148|0)+32>>2]=f[c+48+(h*148|0)+32>>2];f[o+(w*5640|0)+424+(h*148|0)+48>>2]=f[c+48+(h*148|0)+48>>2];h=h+1|0}j=j+1|0}while(j>>>0>>0)}h=h+-1|0}f[o+(w*5640|0)+420>>2]=h;V=Ic(f[B>>2]|0,1080)|0;v=o+(w*5640|0)+5584|0;f[v>>2]=V;if(!V){Y=141;break}do if(f[i>>2]|0){j=f[B>>2]|0;j=X(j<<2,j)|0;k=Hc(j)|0;l=(f[i>>2]|0)+j|0;if(!k){Y=144;break f}f[m>>2]=2;h=Hc(j)|0;f[o+(w*5640|0)+5608>>2]=h;if(!h){Y=146;break f}hj(h|0,f[i>>2]|0,j|0)|0;hj(k|0,f[i>>2]|0,j|0)|0;h=Hc(j)|0;j=o+(w*5640|0)+5604|0;f[j>>2]=h;if(!h){Y=148;break f}if(!(Ng(k,h,f[B>>2]|0)|0)){Y=150;break f}h=Hc(f[B>>2]<<3)|0;f[o+(w*5640|0)+5600>>2]=h;if(!h){Y=152;break f}Af(h,f[B>>2]|0,f[j>>2]|0);Mc(k);j=f[B>>2]|0;if(j|0){k=f[v>>2]|0;h=0;do{f[k+(h*1080|0)+1076>>2]=f[l+(h<<2)>>2];h=h+1|0}while(h>>>0>>0)}if(!(Uc(r,e)|0)){Y=158;break f}if(f[B>>2]|0){r=0;Y=172}}else{h:do if((f[m>>2]|0)==1){h=f[B>>2]|0;if(h>>>0<=2){k=h;break}j=f[C>>2]|0;h=f[j>>2]|0;do if((h|0)==(f[j+52>>2]|0)){if((h|0)!=(f[j+104>>2]|0))break;h=f[j+4>>2]|0;if((h|0)!=(f[j+56>>2]|0))break;if((h|0)==(f[j+108>>2]|0)){Y=166;break h}}while(0);Mb(g,2,7948,ha)|0;f[m>>2]=0;Y=166}else Y=166;while(0);if((Y|0)==166){Y=0;k=f[B>>2]|0}if(!k)break;j=f[C>>2]|0;h=0;do{if(!(f[j+(h*52|0)+32>>2]|0))f[(f[v>>2]|0)+(h*1080|0)+1076>>2]=1<<(f[j+(h*52|0)+24>>2]|0)+-1;h=h+1|0}while(h>>>0>>0);r=0;Y=172}while(0);if((Y|0)==172)while(1){Y=0;s=f[v>>2]|0;t=s+(r*1080|0)|0;k=f[y>>2]&1;f[t>>2]=k;l=f[$>>2]|0;m=s+(r*1080|0)+4|0;f[m>>2]=l;h=f[D>>2]|0;if((h|0)>1){j=h;h=0;while(1){h=h+1|0;if(j>>>0>3)j=j>>>1;else break}}else h=0;f[s+(r*1080|0)+8>>2]=h;h=f[E>>2]|0;if((h|0)>1){j=h;h=0;while(1){h=h+1|0;if(j>>>0>3)j=j>>>1;else break}}else h=0;f[s+(r*1080|0)+12>>2]=h;f[s+(r*1080|0)+16>>2]=f[F>>2];V=f[G>>2]|0;f[s+(r*1080|0)+20>>2]=(V|0)==0&1;f[s+(r*1080|0)+24>>2]=V|0?2:0;f[s+(r*1080|0)+804>>2]=2;if((r|0)==(f[H>>2]|0))h=f[I>>2]|0;else h=0;f[s+(r*1080|0)+808>>2]=h;do if(!k){if(!l)break;else h=0;do{f[s+(r*1080|0)+812+(h<<2)>>2]=15;f[s+(r*1080|0)+944+(h<<2)>>2]=15;h=h+1|0}while(h>>>0<(f[m>>2]|0)>>>0)}else{if((l|0)>0)o=0;else break;while(1){m=l;l=l+-1|0;h=f[K>>2]|0;do if((o|0)<(h|0)){h=f[c+5624+(o<<2)>>2]|0;do if((h|0)<1)h=1;else{if((h|0)==1){h=0;break}else{j=h;h=0}while(1){h=h+1|0;if(j>>>0>3)j=j>>>1;else break}}while(0);f[s+(r*1080|0)+812+(l<<2)>>2]=h;h=f[c+5756+(o<<2)>>2]|0;if((h|0)<1){h=1;break}if((h|0)==1){h=0;break}else{j=h;h=0}while(1){h=h+1|0;if(j>>>0>3)j=j>>>1;else break}}else{V=h+-1|0;j=o-V|0;h=f[c+5624+(V<<2)>>2]>>j;j=f[c+5756+(V<<2)>>2]>>j;do if((h|0)<1)h=1;else{if((h|0)==1){h=0;break}else{k=h;h=0}while(1){h=h+1|0;if(k>>>0>3)k=k>>>1;else break}}while(0);f[s+(r*1080|0)+812+(l<<2)>>2]=h;if((j|0)<1){h=1;break}if((j|0)==1){h=0;break}else h=0;while(1){h=h+1|0;if(j>>>0>3)j=j>>>1;else break}}while(0);f[s+(r*1080|0)+944+(l<<2)>>2]=h;if((m|0)<=1)break;else o=o+1|0}}while(0);Ig(t,f[(f[C>>2]|0)+(r*52|0)+24>>2]|0);r=r+1|0;if(r>>>0>=(f[B>>2]|0)>>>0)break;else Y=172}w=w+1|0;if(w>>>0>=(X(f[_>>2]|0,f[Z>>2]|0)|0)>>>0)break e}if((Y|0)==141){Mb(g,1,7591,aa)|0;ha=0;u=ia;return ha|0}else if((Y|0)==144){Mb(g,1,7655,ba)|0;ha=0;u=ia;return ha|0}else if((Y|0)==146){Mc(k);Mb(g,1,7698,ca)|0;ha=0;u=ia;return ha|0}else if((Y|0)==148){Mc(k);Mb(g,1,7756,da)|0;ha=0;u=ia;return ha|0}else if((Y|0)==150){Mc(k);Mb(g,1,7816,ea)|0;ha=0;u=ia;return ha|0}else if((Y|0)==152){Mc(k);Mb(g,1,7864,fa)|0;ha=0;u=ia;return ha|0}else if((Y|0)==158){Mb(g,1,7914,ga)|0;ha=0;u=ia;return ha|0}}else i=c+18696|0;while(0);h=f[i>>2]|0;if(!h){ha=1;u=ia;return ha|0}Mc(h);f[i>>2]=0;ha=1;u=ia;return ha|0}function Uc(a,c){a=a|0;c=c|0;var d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,o=0,p=0,q=0,r=0;if((f[a+16>>2]|0)!=2){a=1;return a|0}l=a+5604|0;r=a+5616|0;e=f[r>>2]|0;m=a+5620|0;do if(f[l>>2]|0){do if((e|0)==(f[m>>2]|0)){e=e+10|0;f[m>>2]=e;d=a+5612|0;e=Lc(f[d>>2]|0,e*20|0)|0;if(e|0){f[d>>2]=e;q=f[r>>2]|0;ij(e+(q*20|0)|0,0,((f[m>>2]|0)-q|0)*20|0)|0;e=f[r>>2]|0;break}Mc(f[d>>2]|0);f[d>>2]=0;f[m>>2]=0;f[r>>2]=0;a=0;return a|0}else d=a+5612|0;while(0);j=f[d>>2]|0;g=j+(e*20|0)|0;k=j+(e*20|0)+12|0;d=f[k>>2]|0;if(d|0){Mc(d);f[k>>2]=0}f[j+(e*20|0)+8>>2]=1;f[j+(e*20|0)+4>>2]=1;f[g>>2]=2;d=f[c+16>>2]|0;d=X(d,d)|0;h=d<<2;i=Hc(h)|0;f[k>>2]=i;if(!i){a=0;return a|0}else{Ua[f[768+(f[g>>2]<<2)>>2]&15](f[l>>2]|0,i,d);f[j+(e*20|0)+16>>2]=h;e=(f[r>>2]|0)+1|0;f[r>>2]=e;h=2;break}}else{h=1;g=0}while(0);do if((e|0)==(f[m>>2]|0)){e=e+10|0;f[m>>2]=e;d=a+5612|0;e=Lc(f[d>>2]|0,e*20|0)|0;if(e|0){f[d>>2]=e;q=f[r>>2]|0;e=e+(q*20|0)|0;ij(e|0,0,((f[m>>2]|0)-q|0)*20|0)|0;g=(g|0)==0?0:e+-20|0;e=f[r>>2]|0;break}Mc(f[d>>2]|0);f[d>>2]=0;f[m>>2]=0;f[r>>2]=0;a=0;return a|0}else d=a+5612|0;while(0);m=f[d>>2]|0;q=m+(e*20|0)|0;o=m+(e*20|0)+12|0;d=f[o>>2]|0;if(d|0){Mc(d);f[o>>2]=0}p=h+1|0;f[m+(e*20|0)+8>>2]=h;f[m+(e*20|0)+4>>2]=2;f[q>>2]=2;c=c+16|0;j=f[c>>2]|0;k=j<<2;l=Hc(k)|0;f[o>>2]=l;if(!l){a=0;return a|0}l=Hc(k)|0;if(!l){Mc(f[o>>2]|0);f[o>>2]=0;a=0;return a|0}if(j|0){d=0;h=f[a+5584>>2]|0;i=l;while(1){n[i>>2]=+(f[h+1076>>2]|0);d=d+1|0;if((d|0)==(j|0))break;else{h=h+1080|0;i=i+4|0}}}Ua[f[768+(f[q>>2]<<2)>>2]&15](l,f[o>>2]|0,j);Mc(l);f[m+(e*20|0)+16>>2]=k;f[r>>2]=(f[r>>2]|0)+1;i=a+5628|0;d=f[i>>2]|0;h=a+5632|0;do if((d|0)==(f[h>>2]|0)){d=d+10|0;f[h>>2]=d;e=a+5624|0;d=Lc(f[e>>2]|0,d*20|0)|0;if(d|0){f[e>>2]=d;a=f[i>>2]|0;ij(d+(a*20|0)|0,0,((f[h>>2]|0)-a|0)*20|0)|0;d=f[i>>2]|0;break}Mc(f[e>>2]|0);f[e>>2]=0;f[h>>2]=0;f[i>>2]=0;a=0;return a|0}else e=a+5624|0;while(0);a=f[e>>2]|0;f[a+(d*20|0)+8>>2]=g;r=a+(d*20|0)+16|0;b[r>>0]=b[r>>0]|1;f[a+(d*20|0)+4>>2]=f[c>>2];f[a+(d*20|0)>>2]=p;f[a+(d*20|0)+12>>2]=q;f[i>>2]=(f[i>>2]|0)+1;a=1;return a|0}function Vc(a,b,c){a=a|0;b=b|0;c=c|0;var d=0;if(!c)return;d=0;while(1){yb(b,~~+n[a>>2]>>>0,2);d=d+1|0;if((d|0)==(c|0))break;else{a=a+4|0;b=b+2|0}}return}function Wc(a,b,c){a=a|0;b=b|0;c=c|0;var d=0;if(!c)return;d=0;while(1){yb(b,~~+n[a>>2]>>>0,4);d=d+1|0;if((d|0)==(c|0))break;else{a=a+4|0;b=b+4|0}}return}function Xc(a,b,c){a=a|0;b=b|0;c=c|0;var d=0;if(!c)return;d=0;while(1){Cb(b,+n[a>>2]);d=d+1|0;if((d|0)==(c|0))break;else{a=a+4|0;b=b+4|0}}return}function Yc(a,b,c){a=a|0;b=b|0;c=c|0;var d=0;if(!c)return;d=0;while(1){Ab(b,+n[a>>2]);d=d+1|0;if((d|0)==(c|0))break;else{a=a+4|0;b=b+8|0}}return}function Zc(a,b,c){a=a|0;b=b|0;c=c|0;return 1}function _c(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,g=0,h=0,i=0,j=0,k=0;j=Sb()|0;k=b+80|0;f[k>>2]=j;if(!j){k=0;return k|0}e=b+192|0;if(kg(f[e>>2]|0,24,d)|0?kg(f[e>>2]|0,25,d)|0:0){i=f[e>>2]|0;j=lg(i)|0;e=mg(i)|0;if(j){g=1;h=0;while(1){if(!g)g=0;else g=(Ma[f[e>>2]&63](b,a,d)|0)!=0;h=h+1|0;if((h|0)==(j|0))break;else{e=e+4|0;g=g&1}}ng(i);if(!g){Qb(f[k>>2]|0);f[k>>2]=0;k=0;return k|0}}else ng(i);e=b+188|0;if(kg(f[e>>2]|0,26,d)|0?kg(f[e>>2]|0,27,d)|0:0){i=f[e>>2]|0;j=lg(i)|0;e=mg(i)|0;if(j){g=1;h=0;while(1){if(!g)g=0;else g=(Ma[f[e>>2]&63](b,a,d)|0)!=0;h=h+1|0;if((h|0)==(j|0))break;else{e=e+4|0;g=g&1}}ng(i);if(!g){Qb(f[k>>2]|0);f[k>>2]=0;k=0;return k|0}}else ng(i);e=Sb()|0;f[c>>2]=e;if(!e){k=0;return k|0}Ub(f[k>>2]|0,e);g=X(f[b+116>>2]|0,f[b+112>>2]|0)|0;i=b+196|0;f[(f[i>>2]|0)+36>>2]=g;g=Ic(g,40)|0;e=f[i>>2]|0;f[e+40>>2]=g;if(!g){k=0;return k|0}if(!(f[e+36>>2]|0)){k=1;return k|0}h=0;while(1){f[g+(h*40|0)+28>>2]=100;f[g+(h*40|0)+20>>2]=0;k=Ic(100,24)|0;e=f[i>>2]|0;g=f[e+40>>2]|0;f[g+(h*40|0)+24>>2]=k;h=h+1|0;if(!k){e=0;g=30;break}if(h>>>0>=(f[e+36>>2]|0)>>>0){e=1;g=30;break}}if((g|0)==30)return e|0}Qb(f[k>>2]|0);f[k>>2]=0;k=0;return k|0}Qb(f[k>>2]|0);f[k>>2]=0;k=0;return k|0}function $c(a,b,c){a=a|0;b=b|0;c=c|0;return 1}function ad(a,b,c){a=a|0;b=b|0;c=c|0;return (f[a+8>>2]|0)==0&(f[a+188>>2]|0)!=0&(f[a+192>>2]|0)!=0&1|0}function bd(a,c,e){a=a|0;c=c|0;e=e|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0;X=u;u=u+224|0;W=X+200|0;T=X+192|0;S=X+184|0;P=X+176|0;O=X+168|0;N=X+160|0;M=X+152|0;L=X+144|0;K=X+136|0;H=X+128|0;G=X+120|0;F=X+112|0;E=X+104|0;D=X+96|0;C=X+88|0;B=X+80|0;A=X+72|0;z=X+64|0;y=X+56|0;x=X+48|0;w=X+40|0;J=X+32|0;o=X+24|0;n=X+16|0;m=X+8|0;R=X;g=X+216|0;h=X+212|0;t=X+208|0;v=X+204|0;V=a+8|0;f[V>>2]=1;a:do if((Eb(c,g,2,e)|0)==2?(zb(g,h,2),(f[h>>2]|0)==65359):0){f[V>>2]=2;l=Hb(c)|0;l=Zi(l|0,I|0,-2,-1)|0;k=I;U=a+196|0;h=f[U>>2]|0;f[h>>2]=l;f[h+4>>2]=k;h=R;f[h>>2]=l;f[h+4>>2]=k;Mb(e,4,8053,R)|0;h=f[U>>2]|0;k=f[h>>2]|0;l=h+24|0;g=f[l>>2]|0;j=h+32|0;i=f[j>>2]|0;do if((g+1|0)>>>0>i>>>0){s=~~(+(i>>>0)+100.0)>>>0;f[j>>2]=s;g=h+28|0;h=Lc(f[g>>2]|0,s*24|0)|0;if(!h){Mc(f[g>>2]|0);f[g>>2]=0;f[j>>2]=0;f[l>>2]=0;Mb(e,1,8090,m)|0;break a}else{f[g>>2]=h;g=f[l>>2]|0;break}}else h=f[h+28>>2]|0;while(0);d[h+(g*24|0)>>1]=-177;r=dj(0,k|0,32)|0;s=h+(g*24|0)+8|0;f[s>>2]=r;f[s+4>>2]=I;f[h+(g*24|0)+16>>2]=2;f[l>>2]=g+1;s=a+16|0;if((Eb(c,f[s>>2]|0,2,e)|0)!=2){Mb(e,1,8150,o)|0;W=0;u=X;return W|0}zb(f[s>>2]|0,t,2);j=f[t>>2]|0;if((j|0)!=65424){r=a+20|0;i=0;h=0;g=0;b:do{if(j>>>0<65280){Q=14;break}else k=784;while(1){l=f[k>>2]|0;m=(l|0)==0;if(m|(l|0)==(j|0))break;else k=k+12|0}if(m){Mb(e,2,8219,w)|0;q=2;c:while(1){while(1){if((Eb(c,f[s>>2]|0,2,e)|0)!=2){Q=20;break b}zb(f[s>>2]|0,R,2);j=f[R>>2]|0;if(j>>>0>=65280){p=784;break}}while(1){k=f[p>>2]|0;if((k|0)==0|(k|0)==(j|0))break;else p=p+12|0}if(!(f[p+4>>2]&f[V>>2])){Q=24;break b}if((k|0)>=65424){Q=99;break}switch(k|0){case 0:break;default:break c}q=q+2|0}if((Q|0)==99){Q=0;switch(k|0){case 65424:{Q=26;break b}default:{}}}k=f[U>>2]|0;n=Hb(c)|0;n=n-q|0;o=k+24|0;j=f[o>>2]|0;m=k+32|0;l=f[m>>2]|0;if((j+1|0)>>>0>l>>>0){l=~~(+(l>>>0)+100.0)>>>0;f[m>>2]=l;j=k+28|0;k=Lc(f[j>>2]|0,l*24|0)|0;if(!k){Q=31;break}f[j>>2]=k;j=f[o>>2]|0}else k=f[k+28>>2]|0;d[k+(j*24|0)>>1]=0;m=k+(j*24|0)+8|0;f[m>>2]=n;f[m+4>>2]=((n|0)<0)<<31>>31;f[k+(j*24|0)+16>>2]=q;f[o>>2]=j+1;k=f[p>>2]|0;f[t>>2]=k;if((k|0)==65424)break;else j=784;while(1){l=f[j>>2]|0;if((l|0)==0|(l|0)==(k|0)){m=j;break}else j=j+12|0}}else m=k;g=(l|0)==65361?1:g;h=(l|0)==65362?1:h;i=(l|0)==65372?1:i;if(!(f[m+4>>2]&f[V>>2])){Q=37;break}if((Eb(c,f[s>>2]|0,2,e)|0)!=2){Q=39;break}zb(f[s>>2]|0,v,2);k=(f[v>>2]|0)+-2|0;f[v>>2]=k;j=f[s>>2]|0;if(k>>>0>(f[r>>2]|0)>>>0){j=Lc(j,k)|0;if(!j){Q=42;break}f[s>>2]=j;k=f[v>>2]|0;f[r>>2]=k}j=Eb(c,j,k,e)|0;if((j|0)!=(f[v>>2]|0)){Q=45;break}if(!(Na[f[m+8>>2]&63](a,f[s>>2]|0,j,e)|0)){Q=47;break}l=f[U>>2]|0;n=f[m>>2]|0;o=Hb(c)|0;p=f[v>>2]|0;o=-4-p+o|0;p=p+4|0;q=l+24|0;j=f[q>>2]|0;m=l+32|0;k=f[m>>2]|0;if((j+1|0)>>>0>k>>>0){k=~~(+(k>>>0)+100.0)>>>0;f[m>>2]=k;j=l+28|0;k=Lc(f[j>>2]|0,k*24|0)|0;if(!k){Q=52;break}f[j>>2]=k;j=f[q>>2]|0}else k=f[l+28>>2]|0;d[k+(j*24|0)>>1]=n;n=k+(j*24|0)+8|0;f[n>>2]=o;f[n+4>>2]=((o|0)<0)<<31>>31;f[k+(j*24|0)+16>>2]=p;f[q>>2]=j+1;if((Eb(c,f[s>>2]|0,2,e)|0)!=2){Q=54;break}zb(f[s>>2]|0,t,2);j=f[t>>2]|0}while((j|0)!=65424);switch(Q|0){case 14:{f[J>>2]=j;Mb(e,1,8168,J)|0;W=0;u=X;return W|0}case 20:{Mb(e,1,8150,x)|0;Q=33;break}case 24:{Mb(e,1,8235,y)|0;Q=33;break}case 26:{f[t>>2]=65424;break}case 31:{Mc(f[j>>2]|0);f[j>>2]=0;f[m>>2]=0;f[o>>2]=0;Mb(e,1,8090,z)|0;Q=33;break}case 37:{Mb(e,1,8235,B)|0;W=0;u=X;return W|0}case 39:{Mb(e,1,8150,C)|0;W=0;u=X;return W|0}case 42:{Mc(f[s>>2]|0);f[s>>2]=0;f[r>>2]=0;Mb(e,1,8333,D)|0;W=0;u=X;return W|0}case 45:{Mb(e,1,8150,E)|0;W=0;u=X;return W|0}case 47:{Mb(e,1,8367,F)|0;W=0;u=X;return W|0}case 52:{Mc(f[j>>2]|0);f[j>>2]=0;f[m>>2]=0;f[q>>2]=0;Mb(e,1,8090,G)|0;W=0;u=X;return W|0}case 54:{Mb(e,1,8150,H)|0;W=0;u=X;return W|0}}if((Q|0)==33){Mb(e,1,8278,A)|0;W=0;u=X;return W|0}if(g|0){if(!h){Mb(e,1,8472,L)|0;W=0;u=X;return W|0}if(!i){Mb(e,1,8518,M)|0;W=0;u=X;return W|0}d:do if(b[a+184>>0]&1){r=a+120|0;g=f[r>>2]|0;do if(g){o=a+124|0;m=0;h=0;n=0;e:while(1){i=f[o>>2]|0;k=f[i+(n<<3)>>2]|0;if(!k)i=m;else{i=f[i+(n<<3)+4>>2]|0;j=m>>>0>>0;l=i-m|0;i=j?0:m-i|0;if(!((l|0)==0|j^1)){g=j?k+m|0:k;while(1){if(l>>>0<4){Q=72;break e}zb(g,R,4);g=g+4|0;M=l+-4|0;j=f[R>>2]|0;h=j+h|0;k=M>>>0>>0;i=k?j-M|0:i;l=k?0:M-j|0;if(!l)break;else g=k?g:g+j|0}g=f[r>>2]|0}}n=n+1|0;if(n>>>0>=g>>>0)break;else m=i}if((Q|0)==72){Mb(e,1,8564,N)|0;break}if(!i)Q=76;else Mb(e,1,8595,O)|0}else{h=0;Q=76}while(0);f:do if((Q|0)==76){i=Hc(h)|0;o=a+144|0;f[o>>2]=i;if(!i){Mb(e,1,8618,P)|0;break}p=a+132|0;f[p>>2]=h;j=f[r>>2]|0;q=a+124|0;do if(j){g=f[q>>2]|0;n=0;k=0;m=0;h=g;g:while(1){l=f[h+(n<<3)>>2]|0;if(!l)i=m;else{h=f[h+(n<<3)+4>>2]|0;g=(f[o>>2]|0)+k|0;h:do if(m>>>0>>0){hj(g|0,l|0,m|0)|0;i=h-m|0;g=k+m|0;if(!i){i=0;break}h=l+m|0;while(1){if(i>>>0<4){Q=91;break g}zb(h,R,4);k=h+4|0;j=i+-4|0;h=f[R>>2]|0;i=(f[o>>2]|0)+g|0;if(j>>>0>>0)break;hj(i|0,k|0,h|0)|0;h=f[R>>2]|0;i=j-h|0;g=h+g|0;if(!i){i=0;break h}else h=k+h|0}hj(i|0,k|0,j|0)|0;i=(f[R>>2]|0)-j|0;g=j+g|0}else{hj(g|0,l|0,h|0)|0;i=m-h|0;g=h+k|0}while(0);Mc(f[(f[q>>2]|0)+(n<<3)>>2]|0);h=f[q>>2]|0;f[h+(n<<3)>>2]=0;f[h+(n<<3)+4>>2]=0;k=g;j=f[r>>2]|0;g=h}n=n+1|0;if(n>>>0>=j>>>0){Q=93;break}else m=i}if((Q|0)==91){Mb(e,1,8564,S)|0;break f}else if((Q|0)==93){i=f[o>>2]|0;h=f[p>>2]|0;break}}else g=f[q>>2]|0;while(0);f[a+128>>2]=i;f[a+152>>2]=h;f[r>>2]=0;Mc(g);f[q>>2]=0;break d}while(0);Mb(e,1,8656,T)|0;W=0;u=X;return W|0}while(0);Mb(e,4,8682,W)|0;e=Hb(c)|0;W=(f[U>>2]|0)+8|0;f[W>>2]=e+-2;f[W+4>>2]=0;f[V>>2]=8;W=1;u=X;return W|0}}Mb(e,1,8426,K)|0;W=0;u=X;return W|0}while(0);Mb(e,1,8126,n)|0;W=0;u=X;return W|0}function cd(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0;G=u;u=u+16|0;F=G;D=f[a+80>>2]|0;E=a+88|0;p=X(f[a+112>>2]|0,f[a+116>>2]|0)|0;s=f[D+16>>2]|0;q=s*1080|0;r=f[a+12>>2]|0;s=X(s<<2,s)|0;a:do if(p|0){t=r+5604|0;v=r+5620|0;w=r+5612|0;x=r+5616|0;y=r+5632|0;z=r+5624|0;A=r+5584|0;n=f[a+164>>2]|0;o=0;b:while(1){j=n+5584|0;B=f[j>>2]|0;hj(n|0,r|0,5640)|0;c=n+5636|0;b[c>>0]=b[c>>0]&-4;f[n+5168>>2]=0;c=n+5604|0;f[c>>2]=0;k=n+5620|0;f[k>>2]=0;C=n+5612|0;f[C>>2]=0;l=n+5632|0;f[l>>2]=0;m=n+5624|0;f[m>>2]=0;f[j>>2]=B;if(f[t>>2]|0){e=Hc(s)|0;f[c>>2]=e;if(!e){c=0;e=25;break}hj(e|0,f[t>>2]|0,s|0)|0}c=(f[v>>2]|0)*20|0;e=Hc(c)|0;f[C>>2]=e;if(!e){c=0;e=25;break}hj(e|0,f[w>>2]|0,c|0)|0;c=f[x>>2]|0;if(c|0){h=f[C>>2]|0;i=f[w>>2]|0;j=0;while(1){g=i+12|0;if(f[g>>2]|0){c=i+16|0;e=Hc(f[c>>2]|0)|0;f[h+12>>2]=e;if(!e){c=0;e=25;break b}hj(e|0,f[g>>2]|0,f[c>>2]|0)|0;c=f[x>>2]|0}f[k>>2]=(f[k>>2]|0)+1;j=j+1|0;if(j>>>0>=c>>>0)break;else{h=h+20|0;i=i+20|0}}}c=(f[y>>2]|0)*20|0;e=Hc(c)|0;f[m>>2]=e;if(!e){c=0;e=25;break}hj(e|0,f[z>>2]|0,c|0)|0;f[l>>2]=f[y>>2];i=f[y>>2]|0;if(i|0){h=f[z>>2]|0;e=f[m>>2]|0;g=0;while(1){c=f[h+8>>2]|0;if(c|0)f[e+8>>2]=(f[C>>2]|0)+(((c-(f[w>>2]|0)|0)/20|0)*20|0);c=f[h+12>>2]|0;if(c|0)f[e+12>>2]=(f[C>>2]|0)+(((c-(f[w>>2]|0)|0)/20|0)*20|0);g=g+1|0;if(g>>>0>=i>>>0)break;else{h=h+20|0;e=e+20|0}}}hj(B|0,f[A>>2]|0,q|0)|0;o=o+1|0;if(o>>>0>=p>>>0)break a;else n=n+5640|0}if((e|0)==25){u=G;return c|0}}while(0);e=Lf(1)|0;c=a+204|0;f[c>>2]=e;if(!e){d=0;u=G;return d|0}if(Pf(e,D,E)|0){d=1;u=G;return d|0}Qf(f[c>>2]|0);f[c>>2]=0;Mb(d,1,8019,F)|0;d=0;u=G;return d|0}function dd(a,c,d,e){a=a|0;c=c|0;d=d|0;e=e|0;var g=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0;B=u;u=u+112|0;z=B+88|0;w=B+80|0;x=B+72|0;v=B+64|0;r=B+56|0;q=B+48|0;m=B+40|0;k=B+32|0;j=B+24|0;g=B+16|0;s=B+100|0;t=B+96|0;y=B+92|0;f[t>>2]=0;A=a+200|0;if((d|0)!=8){Mb(e,1,11669,B)|0;Mb(e,1,11669,B+8|0)|0;A=0;u=B;return A|0}zb(c,A,2);zb(c+2|0,s,4);zb(c+6|0,y,1);zb(c+7|0,t,1);l=f[A>>2]|0;c=f[a+112>>2]|0;if(l>>>0>=(X(f[a+116>>2]|0,c)|0)>>>0){f[g>>2]=l;Mb(e,1,11695,g)|0;A=0;u=B;return A|0}d=f[a+164>>2]|0;p=(l>>>0)%(c>>>0)|0;o=(l>>>0)/(c>>>0)|0;c=f[s>>2]|0;do if((c+-1|0)>>>0<13){if((c|0)==12){f[j>>2]=12;Mb(e,2,11719,j)|0;c=f[s>>2]|0;break}f[k>>2]=c;Mb(e,1,11756,k)|0;A=0;u=B;return A|0}while(0);if(!c){Mb(e,4,11817,m)|0;f[a+72>>2]=1}c=f[t>>2]|0;do if(!c){c=f[d+(l*5640|0)+5588>>2]|0;if(c|0){i=c;n=18}}else{i=c+((h[a+76>>0]|0)>>>4&1)|0;f[t>>2]=i;d=d+(l*5640|0)+5588|0;g=f[d>>2]|0;c=f[y>>2]|0;if((g+-1|0)>>>0>>0){f[q>>2]=c;f[q+4>>2]=g;Mb(e,1,11928,q)|0;f[a+72>>2]=1;A=0;u=B;return A|0}if(c>>>0>>0){f[d>>2]=i;n=18;break}f[r>>2]=c;f[r+4>>2]=i;Mb(e,1,12027,r)|0;f[a+72>>2]=1;A=0;u=B;return A|0}while(0);if((n|0)==18?(i|0)==((f[y>>2]|0)+1|0):0){r=a+76|0;b[r>>0]=b[r>>0]|1}f[a+24>>2]=(f[a+72>>2]|0)==0?(f[s>>2]|0)+-12|0:0;f[a+8>>2]=16;c=f[a+60>>2]|0;if((c|0)==-1)if((p>>>0>=(f[a+28>>2]|0)>>>0?p>>>0<(f[a+36>>2]|0)>>>0:0)?o>>>0>=(f[a+32>>2]|0)>>>0:0)c=(o>>>0>=(f[a+40>>2]|0)>>>0&1)<<2&255;else c=4;else c=((f[A>>2]|0)!=(c|0)&1)<<2&255;j=a+76|0;b[j>>0]=b[j>>0]&-5|c;j=a+196|0;c=f[j>>2]|0;if(!c){A=1;u=B;return A|0}i=f[A>>2]|0;c=f[c+40>>2]|0;f[c+(i*40|0)>>2]=i;g=f[y>>2]|0;f[c+(i*40|0)+12>>2]=g;d=f[t>>2]|0;if(d|0){f[c+(i*40|0)+4>>2]=d;f[c+(i*40|0)+8>>2]=d;c=f[c+(i*40|0)+16>>2]|0;if(!c){z=Ic(d,24)|0;f[(f[(f[j>>2]|0)+40>>2]|0)+((f[A>>2]|0)*40|0)+16>>2]=z;if(z|0){A=1;u=B;return A|0}Mb(e,1,12135,v)|0;A=0;u=B;return A|0}c=Lc(c,d*24|0)|0;d=(f[(f[j>>2]|0)+40>>2]|0)+((f[A>>2]|0)*40|0)+16|0;if(!c){Mc(f[d>>2]|0);f[(f[(f[j>>2]|0)+40>>2]|0)+((f[A>>2]|0)*40|0)+16>>2]=0;Mb(e,1,12135,x)|0;A=0;u=B;return A|0}else{f[d>>2]=c;A=1;u=B;return A|0}}do if(!(f[c+(i*40|0)+16>>2]|0)){f[c+(i*40|0)+8>>2]=10;x=Ic(10,24)|0;c=f[(f[j>>2]|0)+40>>2]|0;d=f[A>>2]|0;f[c+(d*40|0)+16>>2]=x;if(x|0){i=d;g=f[y>>2]|0;break}f[c+(d*40|0)+8>>2]=0;Mb(e,1,12135,w)|0;A=0;u=B;return A|0}while(0);d=c+(i*40|0)+8|0;if(g>>>0<(f[d>>2]|0)>>>0){A=1;u=B;return A|0}y=g+1|0;f[d>>2]=y;c=Lc(f[c+(i*40|0)+16>>2]|0,y*24|0)|0;d=(f[(f[j>>2]|0)+40>>2]|0)+((f[A>>2]|0)*40|0)+16|0;if(!c){Mc(f[d>>2]|0);y=f[(f[j>>2]|0)+40>>2]|0;A=f[A>>2]|0;f[y+(A*40|0)+16>>2]=0;f[y+(A*40|0)+8>>2]=0;Mb(e,1,12135,z)|0;A=0;u=B;return A|0}else{f[d>>2]=c;A=1;u=B;return A|0}return 0}function ed(a,c,d,e){a=a|0;c=c|0;d=d|0;e=e|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;r=u;u=u+64|0;o=r+48|0;p=r+40|0;j=r+32|0;m=r+52|0;i=r+56|0;f[m>>2]=d;q=a+80|0;k=f[q>>2]|0;n=a+8|0;if((f[n>>2]|0)==16)l=(f[a+164>>2]|0)+((f[a+200>>2]|0)*5640|0)|0;else l=f[a+12>>2]|0;g=l+5636|0;h=b[g>>0]|0;if(h&1){Mb(e,1,11436,r)|0;q=0;u=r;return q|0}b[g>>0]=h|1;if(d>>>0<5){Mb(e,1,11500,r+8|0)|0;q=0;u=r;return q|0}zb(c,l,1);if((f[l>>2]|0)>>>0>7){Mb(e,1,11526,r+16|0)|0;q=0;u=r;return q|0}zb(c+1|0,i,1);i=f[i>>2]|0;g=l+4|0;f[g>>2]=i;if((i|0)>4){Mb(e,1,11560,r+24|0)|0;f[g>>2]=-1}g=l+8|0;zb(c+2|0,g,2);g=f[g>>2]|0;if((g+-1|0)>>>0>65534){f[j>>2]=g;Mb(e,1,11601,j)|0;q=0;u=r;return q|0}j=f[a+172>>2]|0;f[l+12>>2]=(j|0)==0?g:j;zb(c+4|0,l+16|0,1);j=c+5|0;f[m>>2]=d+-5;i=f[k+16>>2]|0;if(i|0){c=f[l>>2]&1;h=f[l+5584>>2]|0;g=0;do{f[h+(g*1080|0)>>2]=c;g=g+1|0}while(g>>>0>>0)}if(!(Fd(a,0,j,m,e)|0)){Mb(e,1,11500,p)|0;q=0;u=r;return q|0}if(f[m>>2]|0){Mb(e,1,11500,o)|0;q=0;u=r;return q|0}if((f[n>>2]|0)==16)g=(f[a+164>>2]|0)+((f[a+200>>2]|0)*5640|0)|0;else g=f[a+12>>2]|0;g=f[g+5584>>2]|0;k=g+4|0;h=f[k>>2]|0;l=h<<2;if((f[(f[q>>2]|0)+16>>2]|0)>>>0<=1){q=1;u=r;return q|0}a=g+8|0;e=g+12|0;m=g+16|0;n=g+20|0;o=g+812|0;p=g+944|0;f[g+1084>>2]=h;i=f[a>>2]|0;f[g+1088>>2]=i;c=f[e>>2]|0;f[g+1092>>2]=c;j=f[m>>2]|0;f[g+1096>>2]=j;d=f[n>>2]|0;f[g+1100>>2]=d;hj(g+1892|0,o|0,l|0)|0;hj(g+2024|0,p|0,l|0)|0;if((f[(f[q>>2]|0)+16>>2]|0)>>>0<=2){q=1;u=r;return q|0}f[g+2164>>2]=h;f[g+2168>>2]=i;f[g+2172>>2]=c;f[g+2176>>2]=j;f[g+2180>>2]=d;hj(g+2972|0,o|0,l|0)|0;hj(g+3104|0,p|0,l|0)|0;if((f[(f[q>>2]|0)+16>>2]|0)>>>0>3)h=3;else{q=1;u=r;return q|0}while(1){i=f[a>>2]|0;c=f[e>>2]|0;j=f[m>>2]|0;d=f[n>>2]|0;f[g+3244>>2]=f[k>>2];f[g+3248>>2]=i;f[g+3252>>2]=c;f[g+3256>>2]=j;f[g+3260>>2]=d;hj(g+4052|0,o|0,l|0)|0;hj(g+4184|0,p|0,l|0)|0;h=h+1|0;if(h>>>0>=(f[(f[q>>2]|0)+16>>2]|0)>>>0){g=1;break}else g=g+1080|0}u=r;return g|0}function fd(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,g=0,h=0,i=0,j=0,k=0;k=u;u=u+48|0;i=k+28|0;j=k+32|0;f[i>>2]=c;if((f[a+8>>2]|0)==16)h=(f[a+164>>2]|0)+((f[a+200>>2]|0)*5640|0)|0;else h=f[a+12>>2]|0;g=(f[a+80>>2]|0)+16|0;e=(f[g>>2]|0)>>>0<257?1:2;if(e>>>0>=c>>>0){Mb(d,1,10929,k)|0;j=0;u=k;return j|0}f[i>>2]=c+-1-e;zb(b,j,e);b=b+e|0;c=f[j>>2]|0;if(c>>>0>=(f[g>>2]|0)>>>0){Mb(d,1,10955,k+8|0)|0;j=0;u=k;return j|0}zb(b,(f[h+5584>>2]|0)+(c*1080|0)|0,1);if(!(Fd(a,f[j>>2]|0,b+1|0,i,d)|0)){Mb(d,1,10929,k+16|0)|0;j=0;u=k;return j|0}if(!(f[i>>2]|0)){j=1;u=k;return j|0}Mb(d,1,10929,k+24|0)|0;j=0;u=k;return j|0}function gd(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,g=0,h=0,i=0,j=0,k=0;k=u;u=u+32|0;j=k+8|0;h=k+20|0;i=f[(f[a+80>>2]|0)+16>>2]|0;e=i>>>0<257?1:2;if((e+2|0)!=(c|0)){Mb(d,1,10846,k)|0;j=0;u=k;return j|0}if((f[a+8>>2]|0)==16)g=(f[a+164>>2]|0)+((f[a+200>>2]|0)*5640|0)|0;else g=f[a+12>>2]|0;zb(b,h,e);c=b+e|0;zb(c,k+16|0,1);a=f[h>>2]|0;if(a>>>0>>0){zb(c+1|0,(f[g+5584>>2]|0)+(a*1080|0)+808|0,1);j=1;u=k;return j|0}else{f[j>>2]=a;f[j+4>>2]=i;Mb(d,1,10872,j)|0;j=0;u=k;return j|0}return 0}function hd(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,g=0,h=0;h=u;u=u+16|0;e=h+12|0;f[e>>2]=c;if(!(Ed(a,0,b,e,d)|0)){Mb(d,1,10820,h)|0;g=0;u=h;return g|0}if(f[e>>2]|0){Mb(d,1,10820,h+8|0)|0;g=0;u=h;return g|0}if((f[a+8>>2]|0)==16)b=(f[a+164>>2]|0)+((f[a+200>>2]|0)*5640|0)|0;else b=f[a+12>>2]|0;b=f[b+5584>>2]|0;d=a+80|0;if((f[(f[d>>2]|0)+16>>2]|0)>>>0<=1){g=1;u=h;return g|0}e=b+24|0;a=b+804|0;g=b+28|0;c=1;while(1){f[b+1104>>2]=f[e>>2];f[b+1884>>2]=f[a>>2];hj(b+1108|0,g|0,776)|0;c=c+1|0;if(c>>>0>=(f[(f[d>>2]|0)+16>>2]|0)>>>0){b=1;break}else b=b+1080|0}u=h;return b|0}function id(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;o=u;u=u+48|0;n=o+32|0;m=o+24|0;l=o+16|0;g=o+8|0;e=o;k=o+36|0;i=o+40|0;f[k>>2]=c;j=a+80|0;do if((f[(f[j>>2]|0)+16>>2]|0)>>>0<257){if(c|0){zb(b,i,1);e=-1;h=1;break}Mb(d,1,10473,e)|0;n=0;u=o;return n|0}else{if(c>>>0>=2){zb(b,i,2);e=-2;h=2;break}Mb(d,1,10473,g)|0;n=0;u=o;return n|0}while(0);f[k>>2]=e+c;g=f[i>>2]|0;e=f[(f[j>>2]|0)+16>>2]|0;if(g>>>0>=e>>>0){f[l>>2]=g;f[l+4>>2]=e;Mb(d,1,10499,l)|0;n=0;u=o;return n|0}if(!(Ed(a,g,b+h|0,k,d)|0)){Mb(d,1,10473,m)|0;n=0;u=o;return n|0}if(!(f[k>>2]|0)){n=1;u=o;return n|0}Mb(d,1,10473,n)|0;n=0;u=o;return n|0}function jd(a,c,d,e){a=a|0;c=c|0;d=d|0;e=e|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;p=u;u=u+16|0;i=p+8|0;n=p+12|0;o=f[(f[a+80>>2]|0)+16>>2]|0;m=o>>>0<257?1:2;g=(m<<1)+5|0;if(((d>>>0)%(g>>>0)|0|0)!=0|g>>>0>d>>>0){Mb(e,1,10429,p)|0;o=0;u=p;return o|0}if((f[a+8>>2]|0)==16)l=(f[a+164>>2]|0)+((f[a+200>>2]|0)*5640|0)|0;else l=f[a+12>>2]|0;a=l+5636|0;h=b[a>>0]|0;if(!(h&4))k=0;else k=(f[l+420>>2]|0)+1|0;j=k+((d>>>0)/(g>>>0)|0)|0;if(j>>>0>31){f[i>>2]=j;Mb(e,1,10455,i)|0;o=0;u=p;return o|0}b[a>>0]=h|4;if(k>>>0>>0){h=l+8|0;a=c;d=k;g=l+424+(k*148|0)|0;while(1){zb(a,g,1);a=a+1|0;zb(a,g+4|0,m);a=a+m|0;k=g+8|0;zb(a,k,2);i=f[k>>2]|0;c=f[h>>2]|0;f[k>>2]=i>>>0>>0?i:c;a=a+2|0;zb(a,g+12|0,1);a=a+1|0;k=g+16|0;zb(a,k,m);a=a+m|0;zb(a,n,1);f[g+36>>2]=f[n>>2];c=f[k>>2]|0;f[k>>2]=c>>>0>>0?c:o;d=d+1|0;if(d>>>0>=j>>>0)break;else{a=a+1|0;g=g+148|0}}}f[l+420>>2]=j+-1;o=1;u=p;return o|0}function kd(a,c,e,g){a=a|0;c=c|0;e=e|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,J=0,K=0,L=0,M=0,N=0;N=u;u=u+160|0;M=N+144|0;H=N+136|0;G=N+128|0;F=N+120|0;E=N+112|0;D=N+104|0;z=N+96|0;y=N+80|0;s=N+72|0;p=N+64|0;o=N+56|0;r=N+48|0;q=N+32|0;k=N+24|0;j=N+16|0;h=N+152|0;w=N+148|0;K=f[a+80>>2]|0;L=a+88|0;if(e>>>0<36){Mb(g,1,9677,N)|0;g=0;u=N;return g|0}J=e+-36|0;n=(J>>>0)/3|0;if((J>>>0)%3|0|0){Mb(g,1,9677,N+8|0)|0;g=0;u=N;return g|0}zb(c,h,2);d[L>>1]=f[h>>2];x=K+8|0;zb(c+2|0,x,4);C=K+12|0;zb(c+6|0,C,4);zb(c+10|0,K,4);m=K+4|0;zb(c+14|0,m,4);v=a+100|0;zb(c+18|0,v,4);B=a+104|0;zb(c+22|0,B,4);t=a+92|0;zb(c+26|0,t,4);A=a+96|0;zb(c+30|0,A,4);zb(c+34|0,h,2);i=c+36|0;e=f[h>>2]|0;if(e>>>0>=16385){f[j>>2]=e;Mb(g,1,9705,j)|0;g=0;u=N;return g|0}e=e&65535;J=K+16|0;f[J>>2]=e;if((e|0)!=(n|0)){f[k>>2]=e;f[k+4>>2]=n;Mb(g,1,9766,k)|0;g=0;u=N;return g|0}k=f[K>>2]|0;l=f[x>>2]|0;if(k>>>0>>0){j=f[m>>2]|0;c=f[C>>2]|0;if(j>>>0>>0){h=f[v>>2]|0;e=f[B>>2]|0;if(h)if(!e)e=0;else{if((4294967295/(l>>>0)|0)>>>0>>0){f[o>>2]=l;f[o+4>>2]=c;Mb(g,1,10007,o)|0;g=0;u=N;return g|0}l=f[t>>2]|0;q=Zi(l|0,0,h|0,0)|0;o=I;m=f[A>>2]|0;r=Zi(m|0,0,e|0,0)|0;if(l>>>0<=k>>>0?m>>>0<=j>>>0&(0-o|q)>>>0>k>>>0&(0-I|r)>>>0>j>>>0:0){e=Ic(n,52)|0;n=K+24|0;f[n>>2]=e;if(!e){f[J>>2]=0;Mb(g,1,10093,s)|0;g=0;u=N;return g|0}a:do if(f[J>>2]|0){l=a+168|0;k=e;j=0;while(1){zb(i,w,1);c=f[w>>2]|0;e=k+24|0;f[e>>2]=(c&127)+1;f[k+32>>2]=c>>>7;zb(i+1|0,w,1);f[k>>2]=f[w>>2];zb(i+2|0,w,1);c=f[w>>2]|0;f[k+4>>2]=c;h=f[k>>2]|0;if((c+-1|0)>>>0>254|(h+-1|0)>>>0>254){e=26;break}c=f[e>>2]|0;if(c>>>0>38){e=28;break}f[k+36>>2]=0;f[k+40>>2]=f[l>>2];e=j+1|0;if(e>>>0<(f[J>>2]|0)>>>0){k=k+52|0;i=i+3|0;j=e}else break a}if((e|0)==26){f[y>>2]=j;f[y+4>>2]=h;f[y+8>>2]=c;Mb(g,1,10141,y)|0}else if((e|0)==28){f[z>>2]=j;f[z+4>>2]=c;Mb(g,1,10246,z)|0}g=0;u=N;return g|0}while(0);l=f[t>>2]|0;k=f[v>>2]|0;i=((f[x>>2]|0)+-1-l+k|0)/(k|0)|0;f[a+112>>2]=i;j=f[A>>2]|0;h=f[B>>2]|0;e=((f[C>>2]|0)+-1-j+h|0)/(h|0)|0;f[a+116>>2]=e;if(!((e|0)==0|(i|0)==0)?i>>>0<=(65535/(e>>>0)|0)>>>0:0){m=X(i,e)|0;c=a+28|0;if(!(b[a+76>>0]&2)){f[c>>2]=0;f[a+32>>2]=0;f[a+36>>2]=i;c=a+40|0}else{f[c>>2]=(((f[c>>2]|0)-l|0)>>>0)/(k>>>0)|0;e=a+32|0;f[e>>2]=(((f[e>>2]|0)-j|0)>>>0)/(h>>>0)|0;e=a+36|0;f[e>>2]=((f[e>>2]|0)+-1-l+k|0)/(k|0)|0;e=a+40|0;c=e;e=((f[e>>2]|0)+-1-j+h|0)/(h|0)|0}f[c>>2]=e;D=Ic(m,5640)|0;j=a+164|0;f[j>>2]=D;if(!D){Mb(g,1,10093,E)|0;g=0;u=N;return g|0}E=Ic(f[J>>2]|0,1080)|0;i=a+12|0;f[(f[i>>2]|0)+5584>>2]=E;if(!(f[(f[i>>2]|0)+5584>>2]|0)){Mb(g,1,10093,F)|0;g=0;u=N;return g|0}e=Ic(10,20)|0;f[(f[i>>2]|0)+5612>>2]=e;e=f[i>>2]|0;if(!(f[e+5612>>2]|0)){Mb(g,1,10093,G)|0;g=0;u=N;return g|0}f[e+5620>>2]=10;e=Ic(10,20)|0;f[(f[i>>2]|0)+5624>>2]=e;e=f[i>>2]|0;if(!(f[e+5624>>2]|0)){Mb(g,1,10093,H)|0;g=0;u=N;return g|0}f[e+5632>>2]=10;h=f[J>>2]|0;if(h|0){c=f[n>>2]|0;e=0;do{if(!(f[c+(e*52|0)+32>>2]|0))f[(f[(f[i>>2]|0)+5584>>2]|0)+(e*1080|0)+1076>>2]=1<<(f[c+(e*52|0)+24>>2]|0)+-1;e=e+1|0}while(e>>>0>>0)}b:do if(m|0){e=f[j>>2]|0;H=Ic(h,1080)|0;f[e+5584>>2]=H;if(H|0){c=0;while(1){c=c+1|0;if(c>>>0>=m>>>0)break b;H=Ic(f[J>>2]|0,1080)|0;f[e+11224>>2]=H;if(!H)break;else e=e+5640|0}}Mb(g,1,10093,M)|0;g=0;u=N;return g|0}while(0);f[a+8>>2]=4;Tb(K,L);g=1;u=N;return g|0}f[D>>2]=i;f[D+4>>2]=e;Mb(g,1,10346,D)|0;g=0;u=N;return g|0}Mb(g,1,10049,p)|0;g=0;u=N;return g|0}f[r>>2]=h;f[r+4>>2]=e;Mb(g,1,9946,r)|0;g=0;u=N;return g|0}else e=j}else{c=f[C>>2]|0;e=f[m>>2]|0}a=_i(l|0,0,k|0,0)|0;K=I;L=_i(c|0,0,e|0,0)|0;M=q;f[M>>2]=a;f[M+4>>2]=K;M=q+8|0;f[M>>2]=L;f[M+4>>2]=I;Mb(g,1,9880,q)|0;g=0;u=N;return g|0}function ld(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0;e=u;u=u+32|0;a=e+12|0;if(c>>>0<2){Mb(d,1,9651,e)|0;d=0;u=e;return d|0}zb(b,e+16|0,1);zb(b+1|0,a,1);b=f[a>>2]|0;if(!(((c+-2|0)>>>0)%(((b>>>5&2)+2+(b>>>4&3)|0)>>>0)|0)){d=1;u=e;return d|0}Mb(d,1,9651,e+8|0)|0;d=0;u=e;return d|0}function md(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;b=u;u=u+16|0;if(!c){Mb(d,1,9625,b)|0;a=0}else a=1;u=b;return a|0}function nd(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,g=0,h=0,i=0,j=0;j=u;u=u+32|0;i=j+8|0;h=j+12|0;if(!c){Mb(d,1,9599,j)|0;d=0;u=j;return d|0}zb(b,j+16|0,1);g=c+-1|0;if(!g){d=1;u=j;return d|0}else{e=0;a=b;c=0}do{a=a+1|0;zb(a,h,1);b=f[h>>2]|0;e=(b&128|0)==0?0:(b&127|e)<<7;c=c+1|0}while((c|0)!=(g|0));if(!e){d=1;u=j;return d|0}Mb(d,1,9599,i)|0;d=0;u=j;return d|0}function od(a,c,d,e){a=a|0;c=c|0;d=d|0;e=e|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;o=u;u=u+48|0;n=o+32|0;j=o+24|0;h=o+16|0;g=o+8|0;l=o+36|0;if(d>>>0<2){Mb(e,1,9551,o)|0;n=0;u=o;return n|0}m=a+184|0;b[m>>0]=b[m>>0]|1;zb(c,l,1);m=c+1|0;k=d+-1|0;i=a+124|0;d=f[i>>2]|0;do if(d){g=a+120|0;c=f[l>>2]|0;if((f[g>>2]|0)>>>0<=c>>>0){a=c+1|0;c=Lc(d,a<<3)|0;if(c|0){f[i>>2]=c;d=f[g>>2]|0;ij(c+(d<<3)|0,0,a-d<<3|0)|0;f[g>>2]=a;d=f[i>>2]|0;break}Mb(e,1,8618,h)|0;n=0;u=o;return n|0}}else{c=(f[l>>2]|0)+1|0;d=Ic(c,8)|0;f[i>>2]=d;if(d|0){f[a+120>>2]=c;break}Mb(e,1,8618,g)|0;n=0;u=o;return n|0}while(0);c=f[l>>2]|0;if(f[d+(c<<3)>>2]|0){f[j>>2]=c;Mb(e,1,9577,j)|0;n=0;u=o;return n|0}a=Hc(k)|0;d=f[i>>2]|0;c=f[l>>2]|0;f[d+(c<<3)>>2]=a;if(!a){Mb(e,1,8618,n)|0;n=0;u=o;return n|0}else{f[d+(c<<3)+4>>2]=k;hj(a|0,m|0,k|0)|0;n=1;u=o;return n|0}return 0}function pd(a,c,d,e){a=a|0;c=c|0;d=d|0;e=e|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;q=u;u=u+48|0;p=q+40|0;m=q+32|0;j=q+24|0;i=q+16|0;o=q+44|0;if(d>>>0<2){Mb(e,1,9364,q)|0;p=0;u=q;return p|0}if(b[a+184>>0]&1){Mb(e,1,9390,q+8|0)|0;p=0;u=q;return p|0}h=f[a+164>>2]|0;g=f[a+200>>2]|0;n=h+(g*5640|0)+5636|0;b[n>>0]=b[n>>0]|2;zb(c,o,1);n=c+1|0;l=d+-1|0;k=h+(g*5640|0)+5164|0;c=f[k>>2]|0;do if(c){g=h+(g*5640|0)+5160|0;a=f[o>>2]|0;if((f[g>>2]|0)>>>0<=a>>>0){d=a+1|0;a=Lc(c,d<<3)|0;if(a|0){f[k>>2]=a;c=f[g>>2]|0;ij(a+(c<<3)|0,0,d-c<<3|0)|0;f[g>>2]=d;c=f[k>>2]|0;break}Mb(e,1,9491,j)|0;p=0;u=q;return p|0}}else{a=(f[o>>2]|0)+1|0;c=Ic(a,8)|0;f[k>>2]=c;if(c|0){f[h+(g*5640|0)+5160>>2]=a;break}Mb(e,1,9491,i)|0;p=0;u=q;return p|0}while(0);a=f[o>>2]|0;if(f[c+(a<<3)>>2]|0){f[m>>2]=a;Mb(e,1,9529,m)|0;p=0;u=q;return p|0}d=Hc(l)|0;c=f[k>>2]|0;a=f[o>>2]|0;f[c+(a<<3)>>2]=d;if(!d){Mb(e,1,9491,p)|0;p=0;u=q;return p|0}else{f[c+(a<<3)+4>>2]=l;hj(d|0,n|0,l|0)|0;p=1;u=q;return p|0}return 0}function qd(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;b=u;u=u+16|0;if((f[(f[a+80>>2]|0)+16>>2]<<2|0)==(c|0)){d=1;u=b;return d|0}Mb(d,1,9338,b)|0;d=0;u=b;return d|0}function rd(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return 1}function sd(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;r=u;u=u+48|0;q=r+40|0;p=r+32|0;k=r+24|0;o=r+44|0;if((f[a+8>>2]|0)==16)i=(f[a+164>>2]|0)+((f[a+200>>2]|0)*5640|0)|0;else i=f[a+12>>2]|0;if(c>>>0<2){Mb(d,1,9170,r)|0;q=0;u=r;return q|0}zb(b,o,2);if(f[o>>2]|0){Mb(d,2,9196,r+8|0)|0;q=1;u=r;return q|0}if(c>>>0<7){Mb(d,1,9170,r+16|0)|0;q=0;u=r;return q|0}zb(b+2|0,o,2);m=b+4|0;n=f[o>>2]&255;j=i+5612|0;e=f[j>>2]|0;l=i+5616|0;a=f[l>>2]|0;a:do if(!a){g=e;h=0}else{g=e;h=0;do{if((f[g+8>>2]|0)==(n|0))break a;g=g+20|0;h=h+1|0}while(h>>>0>>0)}while(0);if((h|0)==(a|0)){g=i+5620|0;do if((a|0)==(f[g>>2]|0)){a=a+10|0;f[g>>2]=a;a=Lc(e,a*20|0)|0;if(a|0){f[j>>2]=a;e=f[l>>2]|0;ij(a+(e*20|0)|0,0,((f[g>>2]|0)-e|0)*20|0)|0;e=f[j>>2]|0;a=f[l>>2]|0;break}Mc(f[j>>2]|0);f[j>>2]=0;f[g>>2]=0;f[l>>2]=0;Mb(d,1,9256,k)|0;q=0;u=r;return q|0}while(0);f[l>>2]=a+1;g=e+(a*20|0)|0}h=g+12|0;a=f[h>>2]|0;if(a|0){Mc(a);f[h>>2]=0}f[g+8>>2]=n;n=f[o>>2]|0;f[g+4>>2]=n>>>8&3;f[g>>2]=n>>>10&3;zb(m,o,2);if(f[o>>2]|0){Mb(d,2,9294,p)|0;q=1;u=r;return q|0}a=c+-6|0;e=Hc(a)|0;f[h>>2]=e;if(!e){Mb(d,1,9170,q)|0;q=0;u=r;return q|0}else{hj(e|0,b+6|0,a|0)|0;f[g+16>>2]=a;q=1;u=r;return q|0}return 0}function td(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,g=0,h=0,i=0;i=u;u=u+32|0;e=i+16|0;h=i+12|0;a=a+80|0;g=f[(f[a>>2]|0)+16>>2]|0;if((g+2|0)!=(c|0)){Mb(d,1,9144,i)|0;h=0;u=i;return h|0}zb(b,e,2);if((f[e>>2]|0)!=(g|0)){Mb(d,1,9144,i+8|0)|0;h=0;u=i;return h|0}if(!g){h=1;u=i;return h|0}d=0;c=b+2|0;a=f[(f[a>>2]|0)+24>>2]|0;while(1){zb(c,h,1);b=f[h>>2]|0;f[a+32>>2]=b>>>7&1;f[a+24>>2]=(b&127)+1;d=d+1|0;if((d|0)==(g|0)){a=1;break}else{c=c+1|0;a=a+52|0}}u=i;return a|0}function ud(a,c,d,e){a=a|0;c=c|0;d=d|0;e=e|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0;K=u;u=u+144|0;J=K+120|0;I=K+112|0;H=K+104|0;G=K+96|0;F=K+88|0;E=K+80|0;D=K+72|0;C=K+64|0;B=K+56|0;A=K+48|0;o=K+40|0;n=K+32|0;l=K+24|0;v=K+136|0;w=K+132|0;x=K+128|0;y=K+124|0;if((f[a+8>>2]|0)==16)p=(f[a+164>>2]|0)+((f[a+200>>2]|0)*5640|0)|0;else p=f[a+12>>2]|0;if(d>>>0<2){Mb(e,1,8804,K)|0;J=0;u=K;return J|0}zb(c,v,2);if(f[v>>2]|0){Mb(e,2,8830,K+8|0)|0;J=1;u=K;return J|0}if(d>>>0<7){Mb(e,1,8804,K+16|0)|0;J=0;u=K;return J|0}zb(c+2|0,w,1);m=c+3|0;k=p+5624|0;g=f[k>>2]|0;z=p+5628|0;a=f[z>>2]|0;a:do if(!a){i=g;h=0}else{j=f[w>>2]|0;i=g;h=0;do{if((f[i>>2]|0)==(j|0))break a;i=i+20|0;h=h+1|0}while(h>>>0>>0)}while(0);if((h|0)==(a|0)){h=p+5632|0;do if((a|0)==(f[h>>2]|0)){a=a+10|0;f[h>>2]=a;a=Lc(g,a*20|0)|0;if(a|0){f[k>>2]=a;g=f[z>>2]|0;ij(a+(g*20|0)|0,0,((f[h>>2]|0)-g|0)*20|0)|0;g=f[k>>2]|0;a=f[z>>2]|0;break}Mc(f[k>>2]|0);f[k>>2]=0;f[h>>2]=0;f[z>>2]=0;Mb(e,1,8876,l)|0;J=0;u=K;return J|0}while(0);t=1;h=g+(a*20|0)|0}else{t=0;h=i}f[h>>2]=f[w>>2];zb(m,v,2);if(f[v>>2]|0){Mb(e,2,8830,n)|0;J=1;u=K;return J|0}zb(c+5|0,x,2);g=f[x>>2]|0;if(g>>>0>1){Mb(e,2,8914,o)|0;J=1;u=K;return J|0}a=d+-7|0;b:do if(g){q=h+4|0;r=h+16|0;s=h+8|0;d=h+12|0;o=p+5612|0;n=p+5616|0;l=c+7|0;m=0;c:while(1){if(a>>>0<3){g=27;break}zb(l,v,1);if((f[v>>2]|0)!=1){g=29;break}zb(l+1|0,y,2);g=a+-3|0;i=f[y>>2]|0;j=(i>>>15)+1|0;i=i&32767;f[q>>2]=i;h=(X(j,i)|0)+2|0;if(g>>>0>>0){g=31;break}a=l+3|0;k=g-h|0;if(i){g=0;do{zb(a,v,j);if((f[v>>2]|0)!=(g|0)){g=34;break c}a=a+j|0;g=g+1|0}while(g>>>0<(f[q>>2]|0)>>>0)}zb(a,y,2);g=a+2|0;h=f[y>>2]|0;i=(h>>>15)+1|0;h=h&32767;f[y>>2]=h;if((h|0)!=(f[q>>2]|0)){g=37;break}a=(X(i,h)|0)+3|0;if(k>>>0>>0){g=39;break}a=k-a|0;if(h){h=0;do{zb(g,v,i);if((f[v>>2]|0)!=(h|0)){g=42;break c}g=g+i|0;h=h+1|0}while(h>>>0<(f[q>>2]|0)>>>0)}zb(g,v,3);l=g+3|0;i=f[v>>2]|0;b[r>>0]=(i>>>16^1)&1|b[r>>0]&-2;f[s>>2]=0;f[d>>2]=0;j=i&255;f[w>>2]=j;if(j|0){k=f[n>>2]|0;if(!k){g=50;break}g=f[o>>2]|0;h=0;while(1){if((f[g+8>>2]|0)==(j|0))break;h=h+1|0;if(h>>>0>=k>>>0){g=50;break c}else g=g+20|0}f[s>>2]=g}i=i>>>8&255;f[w>>2]=i;if(i|0){j=f[n>>2]|0;if(!j){g=57;break}g=f[o>>2]|0;h=0;while(1){if((f[g+8>>2]|0)==(i|0))break;h=h+1|0;if(h>>>0>=j>>>0){g=57;break c}else g=g+20|0}f[d>>2]=g}m=m+1|0;if(m>>>0>=(f[x>>2]|0)>>>0)break b}if((g|0)==27){Mb(e,1,8804,A)|0;J=0;u=K;return J|0}else if((g|0)==29){Mb(e,2,8958,B)|0;J=1;u=K;return J|0}else if((g|0)==31){Mb(e,1,8804,C)|0;J=0;u=K;return J|0}else if((g|0)==34){Mb(e,2,9024,D)|0;J=1;u=K;return J|0}else if((g|0)==37){Mb(e,2,9078,E)|0;J=1;u=K;return J|0}else if((g|0)==39){Mb(e,1,8804,F)|0;J=0;u=K;return J|0}else if((g|0)==42){Mb(e,2,9024,G)|0;J=1;u=K;return J|0}else if((g|0)==50){Mb(e,1,8804,H)|0;J=0;u=K;return J|0}else if((g|0)==57){Mb(e,1,8804,I)|0;J=0;u=K;return J|0}}while(0);if(a|0){Mb(e,1,8804,J)|0;J=0;u=K;return J|0}if(!t){J=1;u=K;return J|0}f[z>>2]=(f[z>>2]|0)+1;J=1;u=K;return J|0}function vd(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;r=u;u=u+32|0;m=r+24|0;p=r+20|0;q=a+80|0;e=f[q>>2]|0;if((f[a+8>>2]|0)==16)g=(f[a+164>>2]|0)+((f[a+200>>2]|0)*5640|0)|0;else g=f[a+12>>2]|0;if(!c){Mb(d,1,8723,r)|0;q=0;u=r;return q|0}zb(b,p,1);a=f[p>>2]|0;if(a>>>0>1){Mb(d,2,8749,r+8|0)|0;q=1;u=r;return q|0}if((a+1|0)!=(c|0)){Mb(d,2,8723,r+16|0)|0;q=0;u=r;return q|0}l=g+5584|0;e=f[e+16>>2]|0;if(e|0){c=f[l>>2]|0;d=0;while(1){f[c+1076>>2]=0;d=d+1|0;if(d>>>0>=e>>>0)break;else c=c+1080|0}}k=g+5604|0;c=f[k>>2]|0;if(c){Mc(c);f[k>>2]=0;a=f[p>>2]|0}if(!a){q=1;u=r;return q|0}j=g+5624|0;i=g+5628|0;h=0;while(1){b=b+1|0;zb(b,m,1);a=f[q>>2]|0;e=f[j>>2]|0;if((f[i>>2]|0?(f[e>>2]|0)==(f[m>>2]|0):0)?(n=f[e+4>>2]|0,o=a+16|0,(n|0)==(f[o>>2]|0)):0){a=f[e+8>>2]|0;if(a|0){c=X(n,n)|0;g=X(f[1036+(f[a>>2]<<2)>>2]|0,c)|0;if((f[a+16>>2]|0)!=(g|0)){a=0;c=32;break}d=Hc(c<<2)|0;f[k>>2]=d;if(!d){a=0;c=32;break}Ua[f[1052+(f[a>>2]<<2)>>2]&15](f[a+12>>2]|0,d,c)}a=f[e+12>>2]|0;if(a|0){c=f[o>>2]|0;g=X(c,f[1036+(f[a>>2]<<2)>>2]|0)|0;if((f[a+16>>2]|0)!=(g|0)){a=0;c=32;break}g=Hc(c<<2)|0;if(!g){a=0;c=32;break}Ua[f[1068+(f[a>>2]<<2)>>2]&15](f[a+12>>2]|0,g,c);e=f[o>>2]|0;if(e|0){a=g;c=f[l>>2]|0;d=0;while(1){f[c+1076>>2]=f[a>>2];d=d+1|0;if((d|0)==(e|0))break;else{a=a+4|0;c=c+1080|0}}}Mc(g)}}h=h+1|0;if(h>>>0>=(f[p>>2]|0)>>>0){a=1;c=32;break}}if((c|0)==32){u=r;return a|0}return 0}function wd(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,g=0;g=u;u=u+16|0;e=g;if(!c){u=g;return}d=0;while(1){zb(a,e,2);f[b>>2]=f[e>>2];d=d+1|0;if((d|0)==(c|0))break;else{b=b+4|0;a=a+2|0}}u=g;return}function xd(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,g=0;g=u;u=u+16|0;e=g;if(!c){u=g;return}d=0;while(1){zb(a,e,4);f[b>>2]=f[e>>2];d=d+1|0;if((d|0)==(c|0))break;else{b=b+4|0;a=a+4|0}}u=g;return}function yd(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,g=0;g=u;u=u+16|0;e=g;if(!c){u=g;return}d=0;while(1){Db(a,e);f[b>>2]=~~+n[e>>2];d=d+1|0;if((d|0)==(c|0))break;else{b=b+4|0;a=a+4|0}}u=g;return}function zd(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,g=0;g=u;u=u+16|0;e=g;if(!c){u=g;return}d=0;while(1){Bb(a,e);f[b>>2]=~~+p[e>>3];d=d+1|0;if((d|0)==(c|0))break;else{b=b+4|0;a=a+8|0}}u=g;return}function Ad(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,g=0;g=u;u=u+16|0;e=g;if(!c){u=g;return}d=0;while(1){zb(a,e,2);n[b>>2]=+((f[e>>2]|0)>>>0);d=d+1|0;if((d|0)==(c|0))break;else{b=b+4|0;a=a+2|0}}u=g;return}function Bd(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,g=0;g=u;u=u+16|0;e=g;if(!c){u=g;return}d=0;while(1){zb(a,e,4);n[b>>2]=+((f[e>>2]|0)>>>0);d=d+1|0;if((d|0)==(c|0))break;else{b=b+4|0;a=a+4|0}}u=g;return}function Cd(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,g=0;g=u;u=u+16|0;e=g;if(!c){u=g;return}d=0;while(1){Db(a,e);f[b>>2]=f[e>>2];d=d+1|0;if((d|0)==(c|0))break;else{b=b+4|0;a=a+4|0}}u=g;return}function Dd(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0;f=u;u=u+16|0;e=f;if(!c){u=f;return}d=0;while(1){Bb(a,e);n[b>>2]=+p[e>>3];d=d+1|0;if((d|0)==(c|0))break;else{b=b+4|0;a=a+8|0}}u=f;return}function Ed(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0;m=u;u=u+32|0;h=m+8|0;j=m+20|0;if((f[a+8>>2]|0)==16)a=(f[a+164>>2]|0)+((f[a+200>>2]|0)*5640|0)|0;else a=f[a+12>>2]|0;l=f[a+5584>>2]|0;a=f[d>>2]|0;if(!a){Mb(e,1,10568,m)|0;b=0;u=m;return b|0}f[d>>2]=a+-1;zb(c,j,1);c=c+1|0;a=f[j>>2]|0;g=a&31;i=l+(b*1080|0)+24|0;f[i>>2]=g;f[l+(b*1080|0)+804>>2]=a>>>5;do if((g|0)==1){a=1;k=8}else{a=(f[d>>2]|0)>>>((g|0)!=0&1);if(a>>>0>97){f[h>>2]=a;f[h+4>>2]=97;f[h+8>>2]=97;Mb(e,2,10604,h)|0;g=f[i>>2]|0}e=(a|0)==0;if(g|0)if(e){a=0;k=20;break}else{k=8;break}if(!e){g=0;while(1){zb(c,j,1);if(g>>>0<97){f[l+(b*1080|0)+28+(g<<3)>>2]=(f[j>>2]|0)>>>3;f[l+(b*1080|0)+28+(g<<3)+4>>2]=0}g=g+1|0;if((g|0)==(a|0))break;else c=c+1|0}}a=(f[d>>2]|0)-a|0}while(0);if((k|0)==8){g=0;while(1){zb(c,j,2);if(g>>>0<97){k=f[j>>2]|0;f[l+(b*1080|0)+28+(g<<3)>>2]=k>>>11;f[l+(b*1080|0)+28+(g<<3)+4>>2]=k&2047}g=g+1|0;if((g|0)==(a|0)){k=20;break}else c=c+2|0}}if((k|0)==20)a=(f[d>>2]|0)-(a<<1)|0;f[d>>2]=a;if((f[i>>2]|0)!=1){b=1;u=m;return b|0}c=l+(b*1080|0)+28|0;g=l+(b*1080|0)+32|0;a=1;do{d=(f[c>>2]|0)-(((a+-1|0)>>>0)/3|0)|0;f[l+(b*1080|0)+28+(a<<3)>>2]=(d|0)>0?d:0;f[l+(b*1080|0)+28+(a<<3)+4>>2]=f[g>>2];a=a+1|0}while((a|0)!=97);a=1;u=m;return a|0}function Fd(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;q=u;u=u+64|0;o=q+48|0;k=q+40|0;j=q+16|0;i=q+8|0;n=q+52|0;h=a+8|0;if((f[h>>2]|0)==16)g=(f[a+164>>2]|0)+((f[a+200>>2]|0)*5640|0)|0;else g=f[a+12>>2]|0;l=f[g+5584>>2]|0;if((f[d>>2]|0)>>>0<5){Mb(e,1,11008,q)|0;d=0;u=q;return d|0}m=l+(b*1080|0)+4|0;zb(c,m,1);g=(f[m>>2]|0)+1|0;f[m>>2]=g;if(g>>>0>33){f[i>>2]=g;f[i+4>>2]=33;Mb(e,1,11043,i)|0;d=0;u=q;return d|0}if((f[a+168>>2]|0)>>>0>=g>>>0){f[j>>2]=b;Mb(e,1,11120,j)|0;f[h>>2]=f[h>>2]|32768;d=0;u=q;return d|0}i=l+(b*1080|0)+8|0;zb(c+1|0,i,1);f[i>>2]=(f[i>>2]|0)+2;h=l+(b*1080|0)+12|0;zb(c+2|0,h,1);j=(f[h>>2]|0)+2|0;f[h>>2]=j;i=f[i>>2]|0;if(j>>>0>10|i>>>0>10|(i+j|0)>>>0>12){Mb(e,1,11278,q+24|0)|0;d=0;u=q;return d|0}j=l+(b*1080|0)+16|0;zb(c+3|0,j,1);if(f[j>>2]&192|0){Mb(e,1,11346,q+32|0)|0;d=0;u=q;return d|0}zb(c+4|0,l+(b*1080|0)+20|0,1);g=(f[d>>2]|0)+-5|0;f[d>>2]=g;a=f[m>>2]|0;if(!(f[l+(b*1080|0)>>2]&1)){if(!a){d=1;u=q;return d|0}else g=0;do{f[l+(b*1080|0)+812+(g<<2)>>2]=15;f[l+(b*1080|0)+944+(g<<2)>>2]=15;g=g+1|0}while(g>>>0<(f[m>>2]|0)>>>0);g=1;u=q;return g|0}if(g>>>0>>0){Mb(e,1,11008,k)|0;d=0;u=q;return d|0}do if(!a)a=0;else{i=0;h=c+5|0;while(1){zb(h,n,1);h=h+1|0;g=f[n>>2]|0;if(i|0?g>>>0<16|(g&15|0)==0:0)break;f[l+(b*1080|0)+812+(i<<2)>>2]=g&15;f[l+(b*1080|0)+944+(i<<2)>>2]=g>>>4;i=i+1|0;a=f[m>>2]|0;if(i>>>0>=a>>>0){p=24;break}}if((p|0)==24){g=f[d>>2]|0;break}Mb(e,1,11413,o)|0;d=0;u=q;return d|0}while(0);f[d>>2]=g-a;d=1;u=q;return d|0}function Gd(a,c,e,g,h,i,j,k,l,m,n){a=a|0;c=c|0;e=e|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;l=l|0;m=m|0;n=n|0;var o=0,p=0,q=0,r=0,s=0,t=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0,ta=0,ua=0,va=0,wa=0,xa=0,ya=0,za=0,Aa=0,Ba=0,Ca=0,Da=0;Ca=u;u=u+256|0;Ba=Ca+200|0;Aa=Ca+192|0;ya=Ca+184|0;xa=Ca+176|0;ta=Ca+168|0;sa=Ca+160|0;ra=Ca+152|0;qa=Ca+144|0;pa=Ca+136|0;oa=Ca+128|0;ma=Ca+120|0;la=Ca+112|0;ka=Ca+104|0;ja=Ca+96|0;ia=Ca+88|0;ha=Ca+80|0;ga=Ca+72|0;fa=Ca+64|0;ea=Ca+56|0;da=Ca+48|0;wa=Ca+40|0;va=Ca+32|0;ua=Ca+24|0;na=Ca+16|0;ca=Ca+8|0;ba=Ca;C=Ca+240|0;D=Ca+236|0;E=Ca+232|0;F=Ca+228|0;H=Ca+224|0;J=Ca+220|0;K=Ca+216|0;L=Ca+212|0;M=Ca+208|0;f[L>>2]=65424;za=a+8|0;switch(f[za>>2]|0){case 256:{f[L>>2]=65497;o=a+76|0;break}case 8:{o=a+76|0;if(!(b[o>>0]&1)){N=a+164|0;O=a+200|0;P=a+72|0;Q=a+24|0;R=a+196|0;S=a+112|0;V=a+116|0;W=C+2|0;Y=C+6|0;Z=C+7|0;_=a+16|0;$=a+20|0;aa=a+64|0;p=65424;a:do{b:do if((p|0)!=65427){while(1){A=Ib(m)|0;if((A|0)==0&(I|0)==0){B=50;break}if((Eb(m,f[_>>2]|0,2,n)|0)!=2){B=8;break a}zb(f[_>>2]|0,M,2);if((f[M>>2]|0)>>>0<2){B=10;break a}if((f[L>>2]|0)==32896?(A=Ib(m)|0,(A|0)==0&(I|0)==0):0){B=50;break}r=f[za>>2]|0;p=f[M>>2]|0;if(r&16|0)f[Q>>2]=-2-p+(f[Q>>2]|0);q=p+-2|0;f[M>>2]=q;p=f[L>>2]|0;z=784;while(1){A=f[z>>2]|0;if((A|0)==0|(A|0)==(p|0))break;else z=z+12|0}if(!(f[z+4>>2]&r)){B=18;break a}if(q>>>0>(f[$>>2]|0)>>>0){A=Ib(m)|0;y=I;if((y|0)<0|(y|0)==0&A>>>0>>0){B=22;break a}p=Lc(f[_>>2]|0,f[M>>2]|0)|0;if(!p){B=24;break a}f[_>>2]=p;q=f[M>>2]|0;f[$>>2]=q}else p=f[_>>2]|0;p=Eb(m,p,q,n)|0;if((p|0)!=(f[M>>2]|0)){B=27;break a}q=f[z+8>>2]|0;if(!q){B=29;break a}if(!(Na[q&63](a,f[_>>2]|0,p,n)|0)){B=31;break a}v=f[O>>2]|0;t=f[R>>2]|0;w=f[z>>2]|0;x=Hb(m)|0;y=f[M>>2]|0;x=x-y+-4|0;y=y+4|0;t=t+40|0;s=f[t>>2]|0;p=f[s+(v*40|0)+20>>2]|0;q=s+(v*40|0)+28|0;r=f[q>>2]|0;if((p+1|0)>>>0>r>>>0){r=~~(+(r>>>0)+100.0)>>>0;f[q>>2]=r;q=Lc(f[s+(v*40|0)+24>>2]|0,r*24|0)|0;r=f[t>>2]|0;p=r+(v*40|0)+24|0;if(!q){B=39;break a}f[p>>2]=q;t=r;p=f[r+(v*40|0)+20>>2]|0}else{t=s;q=f[s+(v*40|0)+24>>2]|0}d[q+(p*24|0)>>1]=w;A=q+(p*24|0)+8|0;f[A>>2]=x;f[A+4>>2]=((x|0)<0)<<31>>31;f[q+(p*24|0)+16>>2]=y;f[t+(v*40|0)+20>>2]=p+1;if((w|0)==65424?(G=f[t+(v*40|0)+16>>2]|0,G|0):0){A=G+((f[t+(v*40|0)+12>>2]|0)*24|0)|0;f[A>>2]=x;f[A+4>>2]=0}do if((f[z>>2]|0)==65424){p=Hb(m)|0;p=-4-(f[M>>2]|0)+p|0;A=aa;z=f[A+4>>2]|0;if(!((z|0)<0|((z|0)==0?(f[A>>2]|0)>>>0

>>0:0)))break;A=aa;f[A>>2]=p;f[A+4>>2]=0}while(0);if(b[o>>0]&4)break;if((Eb(m,f[_>>2]|0,2,n)|0)!=2){B=48;break a}zb(f[_>>2]|0,L,2);if((f[L>>2]|0)==65427)break b}if((B|0)==50){B=0;f[za>>2]=64;break}A=Jb(m,f[Q>>2]|0,0,n)|0;if(!((I|0)==0?(A|0)==(f[Q>>2]|0):0)){B=45;break a}f[L>>2]=65427}while(0);A=Ib(m)|0;if((A|0)==0&(I|0)==0?(f[za>>2]|0)==64:0){B=114;break}p=b[o>>0]|0;if(!(p&4)){q=f[N>>2]|0;r=f[O>>2]|0;if(!(f[P>>2]|0)){p=f[Q>>2]|0;if(p>>>0>1){p=p+-2|0;B=57}}else{p=Ib(m)|0;p=Zi(p|0,I|0,-2,0)|0;B=57}if((B|0)==57){B=0;f[Q>>2]=p}A=q+(r*5640|0)+5592|0;z=q+(r*5640|0)+5596|0;do if(!p)x=1;else{y=Ib(m)|0;x=I;if((x|0)<0|(x|0)==0&y>>>0

>>0)Mb(n,2,12386,ia)|0;p=f[A>>2]|0;if(!p){y=Hc(f[Q>>2]|0)|0;f[A>>2]=y;if(!y){B=66;break a}else{x=0;break}}p=Lc(p,(f[Q>>2]|0)+(f[z>>2]|0)|0)|0;if(!p){B=64;break a}f[A>>2]=p;x=0}while(0);p=f[R>>2]|0;if(p|0){Da=Hb(m)|0;r=I;y=Zi(Da|0,r|0,-2,-1)|0;t=p+40|0;s=f[t>>2]|0;v=f[O>>2]|0;w=f[s+(v*40|0)+12>>2]|0;q=f[s+(v*40|0)+16>>2]|0;p=q+(w*24|0)+8|0;f[p>>2]=y;f[p+4>>2]=I;p=Zi(Da|0,r|0,f[Q>>2]|0,0)|0;w=q+(w*24|0)+16|0;f[w>>2]=p;f[w+4>>2]=I;w=(f[Q>>2]|0)+2|0;p=f[s+(v*40|0)+20>>2]|0;q=s+(v*40|0)+28|0;r=f[q>>2]|0;if((p+1|0)>>>0>r>>>0){r=~~(+(r>>>0)+100.0)>>>0;f[q>>2]=r;q=Lc(f[s+(v*40|0)+24>>2]|0,r*24|0)|0;r=f[t>>2]|0;p=r+(v*40|0)+24|0;if(!q){B=73;break}f[p>>2]=q;t=r;p=f[r+(v*40|0)+20>>2]|0}else{t=s;q=f[s+(v*40|0)+24>>2]|0}d[q+(p*24|0)>>1]=-109;y=dj(0,y|0,32)|0;Da=q+(p*24|0)+8|0;f[Da>>2]=y;f[Da+4>>2]=I;f[q+(p*24|0)+16>>2]=w;f[t+(v*40|0)+20>>2]=p+1}if(!x)p=Eb(m,(f[A>>2]|0)+(f[z>>2]|0)|0,f[Q>>2]|0,n)|0;else p=0;f[za>>2]=(p|0)!=(f[Q>>2]|0)?64:8;f[z>>2]=(f[z>>2]|0)+p;p=b[o>>0]|0;if((p&9)==1){b[o>>0]=p|8;q=f[O>>2]|0;do if((Lb(m)|0)!=0?(T=Hb(m)|0,U=I,!((T|0)==-1&(U|0)==-1)):0){while(1){if((Eb(m,C,2,n)|0)!=2){B=80;break}zb(C,D,2);if((f[D>>2]|0)!=65424){B=82;break}if((Eb(m,C,2,n)|0)!=2){B=84;break}zb(C,E,2);if((f[E>>2]|0)!=10){B=86;break}f[E>>2]=8;p=Eb(m,C,8,n)|0;if((p|0)!=(f[E>>2]|0)){B=88;break}if((p|0)!=8){B=90;break}zb(C,F,2);zb(W,H,4);zb(Y,J,1);zb(Z,K,1);if((f[F>>2]|0)==(q|0)){B=96;break}p=f[H>>2]|0;if(p>>>0<14){B=93;break}Da=p+-12|0;f[H>>2]=Da;Da=Jb(m,Da,0,n)|0;if(!((I|0)==0?(Da|0)==(f[H>>2]|0):0)){B=95;break}}if((B|0)==80){B=0;p=(Kb(m,T,U,n)|0)!=0;q=0;break}else if((B|0)==82){B=0;p=(Kb(m,T,U,n)|0)!=0;q=0;break}else if((B|0)==84){B=0;Mb(n,1,8150,la)|0;p=0;q=0;break}else if((B|0)==86){B=0;Mb(n,1,12203,ma)|0;p=0;q=0;break}else if((B|0)==88){B=0;Mb(n,1,8150,oa)|0;p=0;q=0;break}else if((B|0)==90){B=0;Mb(n,1,11669,pa)|0;p=0;q=0;break}else if((B|0)==93){B=0;p=(Kb(m,T,U,n)|0)!=0;q=0;break}else if((B|0)==95){B=0;p=(Kb(m,T,U,n)|0)!=0;q=0;break}else if((B|0)==96){B=0;q=(f[J>>2]|0)==(f[K>>2]|0)&1;p=(Kb(m,T,U,n)|0)!=0;break}}else{p=1;q=0}while(0);if(!p){B=98;break}if(q|0){q=X(f[V>>2]|0,f[S>>2]|0)|0;b[o>>0]=b[o>>0]&-18|16;if(q|0){r=f[N>>2]|0;p=0;do{s=r+(p*5640|0)+5588|0;t=f[s>>2]|0;if(t|0)f[s>>2]=t+1;p=p+1|0}while((p|0)!=(q|0))}Mb(n,2,12521,ra)|0}}if(!(b[o>>0]&1)){if((Eb(m,f[_>>2]|0,2,n)|0)!=2){B=108;break}zb(f[_>>2]|0,L,2)}}else{b[o>>0]=p&-6;f[za>>2]=8;if((Eb(m,f[_>>2]|0,2,n)|0)!=2){B=112;break}zb(f[_>>2]|0,L,2)}p=f[L>>2]|0}while((p|0)!=65497&(b[o>>0]&1)==0);switch(B|0){case 8:{Mb(n,1,8150,ba)|0;Da=0;u=Ca;return Da|0}case 10:{Mb(n,1,12203,ca)|0;Da=0;u=Ca;return Da|0}case 18:{Mb(n,1,8235,na)|0;Da=0;u=Ca;return Da|0}case 22:{Mb(n,1,12229,ua)|0;Da=0;u=Ca;return Da|0}case 24:{Mc(f[_>>2]|0);f[_>>2]=0;f[$>>2]=0;Mb(n,1,8333,va)|0;Da=0;u=Ca;return Da|0}case 27:{Mb(n,1,8150,wa)|0;Da=0;u=Ca;return Da|0}case 29:{Mb(n,1,12274,da)|0;Da=0;u=Ca;return Da|0}case 31:{f[ea>>2]=f[L>>2];Mb(n,1,12303,ea)|0;Da=0;u=Ca;return Da|0}case 39:{Mc(f[p>>2]|0);Da=f[t>>2]|0;f[Da+(v*40|0)+24>>2]=0;f[Da+(v*40|0)+28>>2]=0;f[Da+(v*40|0)+20>>2]=0;Mb(n,1,12350,fa)|0;Da=0;u=Ca;return Da|0}case 45:{Mb(n,1,8150,ga)|0;Da=0;u=Ca;return Da|0}case 48:{Mb(n,1,8150,ha)|0;Da=0;u=Ca;return Da|0}case 64:{Mc(f[A>>2]|0);f[A>>2]=0;B=66;break}case 73:{Mc(f[p>>2]|0);Da=f[t>>2]|0;f[Da+(v*40|0)+24>>2]=0;f[Da+(v*40|0)+28>>2]=0;f[Da+(v*40|0)+20>>2]=0;Mb(n,1,12350,ka)|0;Da=0;u=Ca;return Da|0}case 98:{Mb(n,1,12475,qa)|0;Da=0;u=Ca;return Da|0}case 108:{Mb(n,1,8150,sa)|0;Da=0;u=Ca;return Da|0}case 112:{Mb(n,1,8150,ta)|0;Da=0;u=Ca;return Da|0}case 114:{p=f[L>>2]|0;break}}if((B|0)==66){Mb(n,1,12441,ja)|0;Da=0;u=Ca;return Da|0}if((p|0)==65497?(f[za>>2]|0)!=256:0){f[a+200>>2]=0;f[za>>2]=256}}break}default:{Da=0;u=Ca;return Da|0}}if(!(b[o>>0]&1)){q=X(f[a+112>>2]|0,f[a+116>>2]|0)|0;s=f[a+164>>2]|0;r=a+200|0;o=f[r>>2]|0;c:do if(o>>>0>>0){p=s+(o*5640|0)|0;while(1){if(f[p+5592>>2]|0)break c;o=o+1|0;f[r>>2]=o;if(o>>>0>>0)p=p+5640|0;else break}}while(0);if((o|0)==(q|0)){f[l>>2]=0;Da=1;u=Ca;return Da|0}}else{o=a+200|0;r=o;s=f[a+164>>2]|0;o=f[o>>2]|0}if(b[s+(o*5640|0)+5636>>0]&2){B=s+(o*5640|0)+5160|0;t=f[B>>2]|0;if(!t)p=0;else{v=f[s+(o*5640|0)+5164>>2]|0;q=0;p=0;do{p=(f[v+(q<<3)+4>>2]|0)+p|0;q=q+1|0}while((q|0)!=(t|0))}Da=Hc(p)|0;A=s+(o*5640|0)+5172|0;f[A>>2]=Da;if(!Da){Mb(n,1,9491,xa)|0;Mb(n,1,12562,ya)|0;Da=0;u=Ca;return Da|0}z=s+(o*5640|0)+5180|0;f[z>>2]=p;q=f[B>>2]|0;y=s+(o*5640|0)+5164|0;if(!q)p=f[y>>2]|0;else{p=f[y>>2]|0;x=0;v=0;w=p;while(1){t=f[w+(x<<3)>>2]|0;if(!t)t=w;else{hj((f[A>>2]|0)+v|0,t|0,f[w+(x<<3)+4>>2]|0)|0;t=f[y>>2]|0;v=(f[t+(x<<3)+4>>2]|0)+v|0;Mc(f[t+(x<<3)>>2]|0);t=f[y>>2]|0;f[t+(x<<3)>>2]=0;f[t+(x<<3)+4>>2]=0;q=f[B>>2]|0;p=t}x=x+1|0;if(x>>>0>=q>>>0)break;else w=t}}f[B>>2]=0;Mc(p);f[y>>2]=0;f[s+(o*5640|0)+5168>>2]=f[A>>2];f[s+(o*5640|0)+5176>>2]=f[z>>2]}o=a+204|0;if(!(Wf(f[o>>2]|0,f[r>>2]|0,n)|0)){Mb(n,1,8019,Aa)|0;Da=0;u=Ca;return Da|0}else{Da=X(f[a+112>>2]|0,f[a+116>>2]|0)|0;f[Ba>>2]=(f[r>>2]|0)+1;f[Ba+4>>2]=Da;Mb(n,4,12588,Ba)|0;f[c>>2]=f[r>>2];f[l>>2]=1;Da=Xf(f[o>>2]|0)|0;f[e>>2]=Da;Da=f[f[(f[o>>2]|0)+20>>2]>>2]|0;f[g>>2]=f[Da>>2];f[h>>2]=f[Da+4>>2];f[i>>2]=f[Da+8>>2];f[j>>2]=f[Da+12>>2];f[k>>2]=f[Da+16>>2];f[za>>2]=f[za>>2]|128;Da=1;u=Ca;return Da|0}return 0}function Hd(a,c,d,e,g,h){a=a|0;c=c|0;d=d|0;e=e|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;s=u;u=u+48|0;p=s+28|0;q=s+32|0;r=a+8|0;if(!(f[r>>2]&128)){r=0;u=s;return r|0}n=a+200|0;if((f[n>>2]|0)!=(c|0)){r=0;u=s;return r|0}i=f[a+164>>2]|0;j=i+(c*5640|0)|0;o=i+(c*5640|0)+5592|0;k=f[o>>2]|0;if(!k){Rc(j);r=0;u=s;return r|0}l=a+204|0;m=i+(c*5640|0)+5596|0;if(!(Zf(f[l>>2]|0,k,f[m>>2]|0,c,f[a+196>>2]|0,h)|0)){Rc(j);f[r>>2]=f[r>>2]|32768;Mb(h,1,12627,s)|0;r=0;u=s;return r|0}if(!(_f(f[l>>2]|0,d,e)|0)){r=0;u=s;return r|0}i=f[o>>2]|0;if(i|0){Mc(i);f[o>>2]=0;f[m>>2]=0}a=a+76|0;b[a>>0]=b[a>>0]&-2;f[r>>2]=f[r>>2]&-129;a=Ib(g)|0;o=f[r>>2]|0;if((o|0)==256|(a|0)==0&(I|0)==0&(o|0)==64){r=1;u=s;return r|0}if((Eb(g,q,2,h)|0)!=2){Mb(h,2,12646,s+8|0)|0;r=1;u=s;return r|0}zb(q,p,2);switch(f[p>>2]|0){case 65497:{f[n>>2]=0;f[r>>2]=256;r=1;u=s;return r|0}case 65424:{r=1;u=s;return r|0}default:if((Ib(g)|0)==0&(I|0)==0){f[r>>2]=64;Mb(h,2,12690,s+16|0)|0;r=1;u=s;return r|0}else{Mb(h,1,12720,s+24|0)|0;r=0;u=s;return r|0}}return 0}function Id(a,c,d,e,g,h,i){a=a|0;c=c|0;d=d|0;e=e|0;g=g|0;h=h|0;i=i|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0,w=0,x=0,y=0,z=0;z=u;u=u+112|0;y=z+96|0;x=z+88|0;w=z+80|0;v=z+72|0;t=z+64|0;s=z+56|0;q=z+48|0;n=z+40|0;m=z+32|0;l=z+24|0;k=z+16|0;p=f[a+80>>2]|0;if((f[a+8>>2]|0)!=8){Mb(i,1,12752,z)|0;y=0;u=z;return y|0}if(!(e|d|g|h)){Mb(i,4,12831,z+8|0)|0;f[a+28>>2]=0;f[a+32>>2]=0;f[a+36>>2]=f[a+112>>2];f[a+40>>2]=f[a+116>>2];y=1;u=z;return y|0}r=p+8|0;j=f[r>>2]|0;if(j>>>0>>0){f[k>>2]=d;f[k+4>>2]=j;Mb(i,1,12900,k)|0;y=0;u=z;return y|0}j=f[p>>2]|0;if(j>>>0>d>>>0){f[l>>2]=d;f[l+4>>2]=j;Mb(i,2,12987,l)|0;f[a+28>>2]=0;d=f[p>>2]|0}else f[a+28>>2]=((d-(f[a+92>>2]|0)|0)>>>0)/((f[a+100>>2]|0)>>>0)|0;f[c>>2]=d;o=p+12|0;d=f[o>>2]|0;if(d>>>0>>0){f[m>>2]=e;f[m+4>>2]=d;Mb(i,1,13075,m)|0;y=0;u=z;return y|0}k=p+4|0;d=f[k>>2]|0;if(d>>>0>e>>>0){f[n>>2]=e;f[n+4>>2]=d;Mb(i,2,13160,n)|0;f[a+32>>2]=0;d=f[k>>2]|0}else{f[a+32>>2]=((e-(f[a+96>>2]|0)|0)>>>0)/((f[a+104>>2]|0)>>>0)|0;d=e}l=c+4|0;f[l>>2]=d;d=f[p>>2]|0;if(d>>>0>g>>>0){f[q>>2]=g;f[q+4>>2]=d;Mb(i,1,13246,q)|0;y=0;u=z;return y|0}d=f[r>>2]|0;if(d>>>0>>0){f[s>>2]=g;f[s+4>>2]=d;Mb(i,2,13335,s)|0;f[a+36>>2]=f[a+112>>2];g=f[r>>2]|0}else{s=f[a+100>>2]|0;f[a+36>>2]=(g+-1-(f[a+92>>2]|0)+s|0)/(s|0)|0}j=c+8|0;f[j>>2]=g;g=f[k>>2]|0;if(g>>>0>h>>>0){f[t>>2]=h;f[t+4>>2]=g;Mb(i,1,13423,t)|0;y=0;u=z;return y|0}g=f[o>>2]|0;if(g>>>0>>0){f[v>>2]=h;f[v+4>>2]=g;Mb(i,2,13513,v)|0;f[a+40>>2]=f[a+116>>2];h=f[o>>2]|0}else{v=f[a+104>>2]|0;f[a+40>>2]=(h+-1-(f[a+96>>2]|0)+v|0)/(v|0)|0}v=c+12|0;f[v>>2]=h;t=a+76|0;b[t>>0]=b[t>>0]|2;t=f[c+16>>2]|0;a=f[c>>2]|0;a:do if(t){d=f[l>>2]|0;s=d+-1|0;g=f[j>>2]|0;q=g+-1|0;r=a+-1|0;p=0;o=f[c+24>>2]|0;while(1){c=f[o>>2]|0;n=(r+c|0)/(c|0)|0;f[o+16>>2]=n;j=f[o+4>>2]|0;k=(s+j|0)/(j|0)|0;f[o+20>>2]=k;c=(q+c|0)/(c|0)|0;l=f[o+40>>2]|0;m=fj(1,0,l|0)|0;e=I;c=Zi(c|0,((c|0)<0)<<31>>31|0,-1,-1)|0;c=Zi(c|0,I|0,m|0,e|0)|0;c=dj(c|0,I|0,l|0)|0;n=Zi(n|0,((n|0)<0)<<31>>31|0,-1,-1)|0;n=Zi(n|0,I|0,m|0,e|0)|0;n=dj(n|0,I|0,l|0)|0;n=c-n|0;if((n|0)<0){j=29;break}h=f[v>>2]|0;c=(j+-1+h|0)/(j|0)|0;f[o+8>>2]=n;c=Zi(c|0,((c|0)<0)<<31>>31|0,-1,-1)|0;c=Zi(c|0,I|0,m|0,e|0)|0;c=dj(c|0,I|0,l|0)|0;k=Zi(k|0,((k|0)<0)<<31>>31|0,-1,-1)|0;k=Zi(k|0,I|0,m|0,e|0)|0;k=dj(k|0,I|0,l|0)|0;k=c-k|0;if((k|0)<0){j=31;break}f[o+12>>2]=k;j=p+1|0;if(j>>>0>>0){p=j;o=o+52|0}else break a}if((j|0)==29){f[w>>2]=p;f[w+4>>2]=n;Mb(i,1,13602,w)|0;y=0;u=z;return y|0}else if((j|0)==31){f[x>>2]=p;f[x+4>>2]=k;Mb(i,1,13671,x)|0;y=0;u=z;return y|0}}else{d=f[l>>2]|0;g=f[j>>2]|0;h=f[v>>2]|0}while(0);f[y>>2]=a;f[y+4>>2]=d;f[y+8>>2]=g;f[y+12>>2]=h;Mb(i,4,13740,y)|0;y=1;u=z;return y|0}function Jd(){var a=0,c=0,d=0;a=Ic(1,208)|0;if(!a){c=0;return c|0}f[a>>2]=1;c=a+184|0;b[c>>0]=b[c>>0]|2;c=Ic(1,5640)|0;f[a+12>>2]=c;if(!c){Qc(a);c=0;return c|0}c=Ic(1,1e3)|0;f[a+16>>2]=c;if(!c){Qc(a);c=0;return c|0}f[a+20>>2]=1e3;f[a+60>>2]=-1;c=a+64|0;f[c>>2]=0;f[c+4>>2]=0;c=Ic(1,48)|0;do if(c|0){f[c+32>>2]=100;f[c+24>>2]=0;d=Ic(100,24)|0;f[c+28>>2]=d;if(!d){Mc(c);break}f[c+40>>2]=0;f[a+196>>2]=c;d=ig()|0;f[a+192>>2]=d;if(!d){Qc(a);d=0;return d|0}d=ig()|0;f[a+188>>2]=d;if(d|0){d=a;return d|0}Qc(a);d=0;return d|0}while(0);f[a+196>>2]=0;Qc(a);d=0;return d|0}function Kd(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,g=0,h=0,i=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0,w=0,x=0;x=u;u=u+128|0;w=x+104|0;v=x+72|0;t=x+64|0;q=x+40|0;o=x+24|0;l=x+16|0;k=x+8|0;i=x;if(b&384|0){Mh(13778,11,1,c)|0;u=x;return}if(b&1|0?(h=f[a+80>>2]|0,h|0):0)Ld(h,0,c);if(b&2|0?(e=a+80|0,f[e>>2]|0):0){Mh(13790,36,1,c)|0;h=f[a+96>>2]|0;f[i>>2]=f[a+92>>2];f[i+4>>2]=h;ki(c,13827,i)|0;i=f[a+104>>2]|0;f[k>>2]=f[a+100>>2];f[k+4>>2]=i;ki(c,13845,k)|0;k=f[a+116>>2]|0;f[l>>2]=f[a+112>>2];f[l+4>>2]=k;ki(c,13863,l)|0;Md(f[a+12>>2]|0,f[(f[e>>2]|0)+16>>2]|0,c);Mh(13879,2,1,c)|0}if((b&8|0?(m=X(f[a+112>>2]|0,f[a+116>>2]|0)|0,n=a+80|0,g=f[n>>2]|0,!((g|0)==0|(m|0)==0)):0)?(d=f[a+164>>2]|0,Md(d,f[g+16>>2]|0,c),(m|0)!=1):0){e=1;do{d=d+5640|0;Md(d,f[(f[n>>2]|0)+16>>2]|0,c);e=e+1|0}while((e|0)!=(m|0))}if(!(b&16)){u=x;return}h=f[a+196>>2]|0;Mh(13882,37,1,c)|0;b=h;m=f[b+4>>2]|0;e=h+8|0;n=f[e>>2]|0;e=f[e+4>>2]|0;g=o;f[g>>2]=f[b>>2];f[g+4>>2]=m;g=o+8|0;f[g>>2]=n;f[g+4>>2]=e;ki(c,13920,o)|0;Mh(13987,17,1,c)|0;g=h+28|0;e=f[g>>2]|0;a:do if(e|0?(p=h+24|0,f[p>>2]|0):0){d=0;while(1){m=e+(d*24|0)+8|0;b=f[m>>2]|0;m=f[m+4>>2]|0;o=f[e+(d*24|0)+16>>2]|0;f[q>>2]=j[e+(d*24|0)>>1];n=q+8|0;f[n>>2]=b;f[n+4>>2]=m;f[q+16>>2]=o;ki(c,14005,q)|0;d=d+1|0;if(d>>>0>=(f[p>>2]|0)>>>0)break a;e=f[g>>2]|0}}while(0);Mh(14036,4,1,c)|0;k=h+40|0;g=f[k>>2]|0;if(g|0?(s=h+36|0,r=f[s>>2]|0,r|0):0){d=0;e=0;do{d=(f[g+(e*40|0)+4>>2]|0)+d|0;e=e+1|0}while((e|0)!=(r|0));if(d|0){Mh(14041,16,1,c)|0;if(f[s>>2]|0){i=0;d=f[k>>2]|0;do{h=f[d+(i*40|0)+4>>2]|0;f[t>>2]=i;f[t+4>>2]=h;ki(c,14058,t)|0;d=f[k>>2]|0;g=f[d+(i*40|0)+16>>2]|0;b:do if((h|0)!=0&(g|0)!=0){e=0;d=g;while(1){n=d+(e*24|0)|0;m=f[n>>2]|0;n=f[n+4>>2]|0;p=d+(e*24|0)+8|0;o=f[p>>2]|0;p=f[p+4>>2]|0;r=d+(e*24|0)+16|0;q=f[r>>2]|0;r=f[r+4>>2]|0;f[v>>2]=e;d=v+8|0;f[d>>2]=m;f[d+4>>2]=n;d=v+16|0;f[d>>2]=o;f[d+4>>2]=p;d=v+24|0;f[d>>2]=q;f[d+4>>2]=r;ki(c,14094,v)|0;e=e+1|0;d=f[k>>2]|0;if((e|0)==(h|0))break b;d=f[d+(i*40|0)+16>>2]|0}}while(0);g=f[d+(i*40|0)+24>>2]|0;c:do if((g|0)!=0?(f[d+(i*40|0)+20>>2]|0)!=0:0){e=0;d=g;while(1){q=d+(e*24|0)+8|0;p=f[q>>2]|0;q=f[q+4>>2]|0;r=f[d+(e*24|0)+16>>2]|0;f[w>>2]=j[d+(e*24|0)>>1];d=w+8|0;f[d>>2]=p;f[d+4>>2]=q;f[w+16>>2]=r;ki(c,14005,w)|0;e=e+1|0;d=f[k>>2]|0;if(e>>>0>=(f[d+(i*40|0)+20>>2]|0)>>>0)break c;d=f[d+(i*40|0)+24>>2]|0}}while(0);i=i+1|0}while(i>>>0<(f[s>>2]|0)>>>0)}Mh(14036,4,1,c)|0}}Mh(13879,2,1,c)|0;u=x;return}function Ld(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0;m=u;u=u+64|0;l=m+48|0;k=m+40|0;i=m+32|0;h=m+16|0;g=m;j=m+52|0;if(!c){Mh(14492,13,1,d)|0;b[j>>0]=9;e=1}else{Mh(14455,36,1,f[665]|0)|0;e=0}b[j+e>>0]=0;n=f[a>>2]|0;e=f[a+4>>2]|0;f[g>>2]=j;f[g+4>>2]=n;f[g+8>>2]=e;ki(d,14506,g)|0;e=f[a+8>>2]|0;g=f[a+12>>2]|0;f[h>>2]=j;f[h+4>>2]=e;f[h+8>>2]=g;ki(d,14523,h)|0;h=a+16|0;g=f[h>>2]|0;f[i>>2]=j;f[i+4>>2]=g;ki(d,14540,i)|0;g=a+24|0;if(!(f[g>>2]|0)){Mh(13879,2,1,d)|0;u=m;return}if(!(f[h>>2]|0)){Mh(13879,2,1,d)|0;u=m;return}else e=0;do{f[k>>2]=j;f[k+4>>2]=e;ki(d,14556,k)|0;Nd((f[g>>2]|0)+(e*52|0)|0,c,d);f[l>>2]=j;ki(d,14576,l)|0;e=e+1|0}while(e>>>0<(f[h>>2]|0)>>>0);Mh(13879,2,1,d)|0;u=m;return}function Md(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0,w=0,x=0;w=u;u=u+128|0;t=w+120|0;s=w+112|0;r=w+104|0;q=w+96|0;p=w+88|0;o=w+80|0;n=w+72|0;m=w+64|0;l=w+56|0;k=w+48|0;j=w+40|0;i=w+32|0;h=w+24|0;g=w+16|0;e=w+8|0;d=w;if(!a){u=w;return}Mh(14160,17,1,c)|0;f[d>>2]=f[a>>2];ki(c,14178,d)|0;f[e>>2]=f[a+4>>2];ki(c,14191,e)|0;f[g>>2]=f[a+8>>2];ki(c,14203,g)|0;f[h>>2]=f[a+16>>2];ki(c,14220,h)|0;if((b|0)>0){g=a+5584|0;e=0;do{h=f[g>>2]|0;f[i>>2]=e;ki(c,14231,i)|0;f[j>>2]=f[h+(e*1080|0)>>2];ki(c,14245,j)|0;d=h+(e*1080|0)+4|0;f[k>>2]=f[d>>2];ki(c,14259,k)|0;f[l>>2]=f[h+(e*1080|0)+8>>2];ki(c,14282,l)|0;f[m>>2]=f[h+(e*1080|0)+12>>2];ki(c,14298,m)|0;f[n>>2]=f[h+(e*1080|0)+16>>2];ki(c,14314,n)|0;f[o>>2]=f[h+(e*1080|0)+20>>2];ki(c,14331,o)|0;Mh(14346,23,1,c)|0;if(f[d>>2]|0){a=0;do{x=f[h+(e*1080|0)+944+(a<<2)>>2]|0;f[p>>2]=f[h+(e*1080|0)+812+(a<<2)>>2];f[p+4>>2]=x;ki(c,14370,p)|0;a=a+1|0}while(a>>>0<(f[d>>2]|0)>>>0)}Ri(10,c)|0;x=h+(e*1080|0)+24|0;f[q>>2]=f[x>>2];ki(c,14379,q)|0;f[r>>2]=f[h+(e*1080|0)+804>>2];ki(c,14394,r)|0;Mh(14411,20,1,c)|0;if((f[x>>2]|0)!=1){a=(f[d>>2]|0)*3|0;if((a|0)>2){d=a+-2|0;v=8}}else{d=1;v=8}if((v|0)==8){v=0;a=0;do{x=f[h+(e*1080|0)+28+(a<<3)>>2]|0;f[s>>2]=f[h+(e*1080|0)+28+(a<<3)+4>>2];f[s+4>>2]=x;ki(c,14370,s)|0;a=a+1|0}while((a|0)!=(d|0))}Ri(10,c)|0;f[t>>2]=f[h+(e*1080|0)+808>>2];ki(c,14432,t)|0;Mh(14449,5,1,c)|0;e=e+1|0}while((e|0)!=(b|0))}Mh(14036,4,1,c)|0;u=w;return}function Nd(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,g=0,h=0,i=0,j=0,k=0,l=0;k=u;u=u+48|0;j=k+24|0;i=k+16|0;h=k;g=k+32|0;e=(c|0)!=0;if(e){Mh(14581,41,1,f[665]|0)|0;c=0}else{b[g>>0]=9;b[g+1>>0]=9;c=2}b[g+c>>0]=0;l=f[a>>2]|0;c=f[a+4>>2]|0;f[h>>2]=g;f[h+4>>2]=l;f[h+8>>2]=c;ki(d,14623,h)|0;h=f[a+24>>2]|0;f[i>>2]=g;f[i+4>>2]=h;ki(d,14640,i)|0;i=f[a+32>>2]|0;f[j>>2]=g;f[j+4>>2]=i;ki(d,14652,j)|0;if(!e){u=k;return}Mh(13879,2,1,d)|0;u=k;return}function Od(a){a=a|0;var b=0,c=0,d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0;l=u;u=u+16|0;d=l;c=a+80|0;j=f[(f[c>>2]|0)+16>>2]|0;b=Ic(1,56)|0;f[d>>2]=b;if(!b){k=0;u=l;return k|0}c=f[(f[c>>2]|0)+16>>2]|0;f[b+24>>2]=c;f[b>>2]=f[a+92>>2];f[b+4>>2]=f[a+96>>2];f[b+8>>2]=f[a+100>>2];f[b+12>>2]=f[a+104>>2];f[b+16>>2]=f[a+112>>2];f[b+20>>2]=f[a+116>>2];f[b+52>>2]=0;a=f[a+12>>2]|0;f[b+32>>2]=f[a>>2];f[b+36>>2]=f[a+4>>2];f[b+40>>2]=f[a+8>>2];f[b+44>>2]=f[a+16>>2];c=Ic(c,1080)|0;i=b+48|0;f[i>>2]=c;if(!c){$b(d);k=0;u=l;return k|0}if(!j){k=b;u=l;return k|0}h=a+5584|0;a=0;while(1){g=f[h>>2]|0;f[c+(a*1080|0)+4>>2]=f[g+(a*1080|0)>>2];d=g+(a*1080|0)+4|0;e=f[d>>2]|0;f[c+(a*1080|0)+8>>2]=e;f[c+(a*1080|0)+12>>2]=f[g+(a*1080|0)+8>>2];f[c+(a*1080|0)+16>>2]=f[g+(a*1080|0)+12>>2];f[c+(a*1080|0)+20>>2]=f[g+(a*1080|0)+16>>2];f[c+(a*1080|0)+24>>2]=f[g+(a*1080|0)+20>>2];if(e>>>0<33){hj(c+(a*1080|0)+948|0,g+(a*1080|0)+944|0,e|0)|0;hj(c+(a*1080|0)+816|0,g+(a*1080|0)+812|0,f[d>>2]|0)|0}e=f[g+(a*1080|0)+24>>2]|0;f[c+(a*1080|0)+28>>2]=e;f[c+(a*1080|0)+808>>2]=f[g+(a*1080|0)+804>>2];if((e|0)!=1){d=(f[d>>2]|0)*3|0;if((d+-3|0)>>>0<96){e=d+-2|0;k=10}}else{e=1;k=10}if((k|0)==10){k=0;d=0;do{f[c+(a*1080|0)+32+(d<<2)>>2]=f[g+(a*1080|0)+28+(d<<3)+4>>2];f[c+(a*1080|0)+420+(d<<2)>>2]=f[g+(a*1080|0)+28+(d<<3)>>2];d=d+1|0}while((d|0)!=(e|0))}f[c+(a*1080|0)+812>>2]=f[g+(a*1080|0)+808>>2];a=a+1|0;if((a|0)==(j|0))break;c=f[i>>2]|0}u=l;return b|0}function Pd(a){a=a|0;var b=0,c=0,d=0,e=0,g=0,h=0,i=0,j=0,k=0;b=Ic(1,48)|0;if(!b){k=0;return k|0}h=a+196|0;c=f[h>>2]|0;j=c;k=f[j+4>>2]|0;a=b;f[a>>2]=f[j>>2];f[a+4>>2]=k;a=c+8|0;k=f[a+4>>2]|0;j=b+8|0;f[j>>2]=f[a>>2];f[j+4>>2]=k;j=c+16|0;k=f[j+4>>2]|0;a=b+16|0;f[a>>2]=f[j>>2];f[a+4>>2]=k;c=f[c+24>>2]|0;a=b+24|0;f[a>>2]=c;c=Hc(c*24|0)|0;k=b+28|0;f[k>>2]=c;if(!c){Mc(b);k=0;return k|0}d=f[(f[h>>2]|0)+28>>2]|0;if(!d){Mc(c);f[k>>2]=0}else hj(c|0,d|0,(f[a>>2]|0)*24|0)|0;a=f[(f[h>>2]|0)+36>>2]|0;g=b+36|0;f[g>>2]=a;a=Ic(a,40)|0;j=b+40|0;f[j>>2]=a;if(!a){Mc(f[k>>2]|0);Mc(b);k=0;return k|0}c=f[(f[h>>2]|0)+40>>2]|0;if(!c){Mc(a);f[j>>2]=0;k=b;return k|0}if(!(f[g>>2]|0)){k=b;return k|0}c=f[c+20>>2]|0;f[a+20>>2]=c;c=Hc(c*24|0)|0;a=f[j>>2]|0;f[a+24>>2]=c;a:do if(!c)d=0;else{d=0;while(1){e=f[(f[(f[h>>2]|0)+40>>2]|0)+(d*40|0)+24>>2]|0;if(!e){Mc(c);a=f[j>>2]|0;f[a+(d*40|0)+24>>2]=0}else{hj(c|0,e|0,(f[a+(d*40|0)+20>>2]|0)*24|0)|0;a=f[j>>2]|0}c=f[(f[(f[h>>2]|0)+40>>2]|0)+(d*40|0)+4>>2]|0;f[a+(d*40|0)+4>>2]=c;c=Hc(c*24|0)|0;a=f[j>>2]|0;f[a+(d*40|0)+16>>2]=c;if(!c)break;e=f[(f[(f[h>>2]|0)+40>>2]|0)+(d*40|0)+16>>2]|0;if(!e){Mc(c);a=f[j>>2]|0;f[a+(d*40|0)+16>>2]=0}else{hj(c|0,e|0,(f[a+(d*40|0)+4>>2]|0)*24|0)|0;a=f[j>>2]|0}f[a+(d*40|0)+32>>2]=0;f[a+(d*40|0)+36>>2]=0;d=d+1|0;if(d>>>0>=(f[g>>2]|0)>>>0){i=28;break}c=f[(f[(f[h>>2]|0)+40>>2]|0)+(d*40|0)+20>>2]|0;f[a+(d*40|0)+20>>2]=c;c=Hc(c*24|0)|0;a=f[j>>2]|0;f[a+(d*40|0)+24>>2]=c;if(!c)break a}if((i|0)==28)return b|0;if(d){c=0;do{Mc(f[a+(c*40|0)+24>>2]|0);Mc(f[(f[j>>2]|0)+(c*40|0)+16>>2]|0);c=c+1|0;a=f[j>>2]|0}while((c|0)!=(d|0))}Mc(a);Mc(f[k>>2]|0);Mc(b);k=0;return k|0}while(0);if(d){c=0;do{Mc(f[a+(c*40|0)+24>>2]|0);c=c+1|0;a=f[j>>2]|0}while((c|0)!=(d|0))}Mc(a);Mc(f[k>>2]|0);Mc(b);k=0;return k|0}function Qd(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,g=0,h=0,i=0,j=0,k=0;if(!c){c=0;return c|0}e=Sb()|0;k=a+84|0;f[k>>2]=e;if(!e){c=0;return c|0}Ub(c,e);i=a+188|0;kg(f[i>>2]|0,28,d)|0;i=f[i>>2]|0;j=lg(i)|0;e=mg(i)|0;if(j){g=1;h=0;while(1){if(!g)g=0;else g=(Ma[f[e>>2]&63](a,b,d)|0)!=0;h=h+1|0;if((h|0)==(j|0))break;else{e=e+4|0;g=g&1}}ng(i);if(!g){c=a+80|0;Qb(f[c>>2]|0);f[c>>2]=0;c=0;return c|0}}else ng(i);i=f[c+16>>2]|0;if(!i){c=1;return c|0}h=f[(f[k>>2]|0)+24>>2]|0;g=f[c+24>>2]|0;e=0;do{f[g+(e*52|0)+36>>2]=f[h+(e*52|0)+36>>2];c=h+(e*52|0)+44|0;f[g+(e*52|0)+44>>2]=f[c>>2];f[c>>2]=0;e=e+1|0}while(e>>>0>>0);e=1;return e|0}function Rd(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0;C=u;u=u+80|0;v=C+32|0;w=C+24|0;B=C+16|0;A=C+8|0;o=C+64|0;z=C+60|0;p=C+56|0;q=C+52|0;r=C+48|0;s=C+44|0;t=C+40|0;k=C+36|0;f[o>>2]=1;d=Hc(1e3)|0;if(!d){Mb(c,1,14664,C)|0;B=0;u=C;return B|0}x=a+116|0;y=a+112|0;l=a+204|0;m=a+84|0;n=a+8|0;j=0;e=1e3;while(1){if(!(Gd(a,z,p,q,r,s,t,k,o,b,c)|0)){e=5;break}if(!(f[o>>2]|0)){e=17;break}i=f[p>>2]|0;if(i>>>0>e>>>0){e=Lc(d,i)|0;if(!e){e=9;break}else{d=e;h=i}}else h=e;g=f[z>>2]|0;if(!(Hd(a,g,d,i,b,c)|0)){e=11;break}e=g+1|0;i=X(f[y>>2]|0,f[x>>2]|0)|0;f[w>>2]=e;f[w+4>>2]=i;Mb(c,4,14768,w)|0;i=f[l>>2]|0;if(!(Sd(f[(f[f[i+20>>2]>>2]|0)+20>>2]|0,f[i+24>>2]|0,d,f[(f[m>>2]|0)+24>>2]|0)|0)){e=13;break}f[v>>2]=e;Mb(c,4,14798,v)|0;i=Ib(b)|0;if((i|0)==0&(I|0)==0?(f[n>>2]|0)==64:0){e=17;break}j=j+1|0;if((j|0)==(X(f[y>>2]|0,f[x>>2]|0)|0)){e=17;break}else e=h}if((e|0)==5){Mc(d);B=0;u=C;return B|0}else if((e|0)==9){Mc(d);B=X(f[y>>2]|0,f[x>>2]|0)|0;f[A>>2]=(f[z>>2]|0)+1;f[A+4>>2]=B;Mb(c,1,14699,A)|0;B=0;u=C;return B|0}else if((e|0)==11){Mc(d);A=X(f[y>>2]|0,f[x>>2]|0)|0;f[B>>2]=g+1;f[B+4>>2]=A;Mb(c,1,14739,B)|0;B=0;u=C;return B|0}else if((e|0)==13){Mc(d);B=0;u=C;return B|0}else if((e|0)==17){Mc(d);B=1;u=C;return B|0}return 0}function Sd(a,c,e,g){a=a|0;c=c|0;e=e|0;g=g|0;var i=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0;E=c+16|0;if(!(f[E>>2]|0)){E=1;return E|0}D=0;C=f[c+24>>2]|0;while(1){l=g+44|0;c=f[l>>2]|0;m=g+8|0;if(!c){c=f[m>>2]|0;k=g+12|0;i=f[k>>2]|0;if(!i){e=0;a=66;break}if(c>>>0>(4294967295/(i>>>0)|0)>>>0){e=0;a=66;break}c=Ic(X(i,c)|0,4)|0;f[l>>2]=c;if(!c){e=0;a=66;break}}else k=g+12|0;o=C+36|0;f[g+36>>2]=f[o>>2];v=f[C+24>>2]|0;t=f[a+24>>2]|0;o=f[o>>2]|0;v=(v>>>3)+((v&7|0)!=0&1)|0;w=(v|0)==3;n=f[t+(o*136|0)+8>>2]|0;i=f[t+(o*136|0)>>2]|0;y=n-i|0;s=f[t+(o*136|0)+12>>2]|0;o=f[t+(o*136|0)+4>>2]|0;t=s-o|0;l=f[g+16>>2]|0;p=f[g+40>>2]|0;q=fj(1,0,p|0)|0;B=I;l=Zi(l|0,0,-1,-1)|0;l=Zi(l|0,I|0,q|0,B|0)|0;l=ej(l|0,I|0,p|0)|0;A=Zi(f[g+20>>2]|0,0,-1,-1)|0;B=Zi(A|0,I|0,q|0,B|0)|0;p=ej(B|0,I|0,p|0)|0;B=f[m>>2]|0;m=B+l|0;k=f[k>>2]|0;q=k+p|0;do if(i>>>0<=l>>>0){i=l-i|0;if(n>>>0>m>>>0){A=B;x=i;r=0;u=n-m|0;break}else{A=y-i|0;x=i;r=0;u=0;break}}else{z=n>>>0>m>>>0;u=m-i|0;A=z?u:y;x=0;r=i-l|0;u=z?y-u|0:0}while(0);do if(o>>>0<=p>>>0){i=p-o|0;if(s>>>0>q>>>0){z=k;n=i;l=0;i=s-q|0;break}else{z=t-i|0;n=i;l=0;i=0;break}}else{s=s>>>0>q>>>0;i=q-o|0;z=s?i:t;n=0;l=o-p|0;i=s?t-i|0:0}while(0);if((x|u|A|i|n|z|0)<0){e=0;a=66;break}m=X(n,y)|0;k=m+x|0;p=x+u|0;q=(X(i,y)|0)-x|0;l=c+((X(B,l)|0)+r<<2)|0;switch((w?4:v)&1073741823|0){case 1:{i=e+k|0;c=(z|0)!=0;do if(!(f[C+32>>2]|0))if(c){if(!A){e=e+(u+m+(X(p,z+-1|0)|0)+(x<<1))|0;break}o=A+u+m+(X(A+x+u|0,z+-1|0)|0)+(x<<1)|0;n=0;c=i;while(1){m=c+A|0;k=0;i=l;while(1){f[i>>2]=h[c>>0];k=k+1|0;if((k|0)==(A|0))break;else{c=c+1|0;i=i+4|0}}n=n+1|0;if((n|0)==(z|0))break;else{c=m+p|0;l=l+(B<<2)|0}}e=e+o|0}else e=i;else if(c){if(!A){e=e+(u+m+(X(p,z+-1|0)|0)+(x<<1))|0;break}o=A+u+m+(X(A+x+u|0,z+-1|0)|0)+(x<<1)|0;c=i;k=0;while(1){n=c+A|0;m=0;i=l;while(1){f[i>>2]=b[c>>0];m=m+1|0;if((m|0)==(A|0))break;else{c=c+1|0;i=i+4|0}}k=k+1|0;if((k|0)==(z|0))break;else{c=n+p|0;l=l+(B<<2)|0}}e=e+o|0}else e=i;while(0);e=e+q|0;break}case 2:{c=e+(k<<1)|0;i=(z|0)!=0;do if(!(f[C+32>>2]|0))if(i){if(!A){e=e+((X(n<<1,y)|0)+(X(p<<1,z+-1|0)|0)+(x<<2)+(u<<1))|0;break}e=e+((X(A+p<<1,z+-1|0)|0)+(x<<2)+(A+u+m<<1))|0;n=0;while(1){m=c+(A<<1)|0;k=0;i=l;while(1){f[i>>2]=j[c>>1];k=k+1|0;if((k|0)==(A|0))break;else{c=c+2|0;i=i+4|0}}n=n+1|0;if((n|0)==(z|0))break;else{c=m+(p<<1)|0;l=l+(B<<2)|0}}}else e=c;else if(i){if(!A){e=e+((X(n<<1,y)|0)+(X(p<<1,z+-1|0)|0)+(x<<2)+(u<<1))|0;break}e=e+((X(A+p<<1,z+-1|0)|0)+(x<<2)+(A+u+m<<1))|0;n=0;while(1){m=c+(A<<1)|0;i=0;k=l;while(1){f[k>>2]=d[c>>1];i=i+1|0;if((i|0)==(A|0))break;else{c=c+2|0;k=k+4|0}}n=n+1|0;if((n|0)==(z|0))break;else{c=m+(p<<1)|0;l=l+(B<<2)|0}}}else e=c;while(0);e=e+(q<<1)|0;break}case 4:{c=e+(k<<2)|0;do if(!z)e=c;else{if(!A){e=e+((X(n<<2,y)|0)+(X(p<<2,z+-1|0)|0)+(x<<3)+(u<<2))|0;break}e=e+((X(A+p<<2,z+-1|0)|0)+(x<<3)+(A+u+m<<2))|0;n=0;while(1){m=c+(A<<2)|0;i=0;k=l;while(1){f[k>>2]=f[c>>2];i=i+1|0;if((i|0)==(A|0))break;else{c=c+4|0;k=k+4|0}}n=n+1|0;if((n|0)==(z|0))break;else{c=m+(p<<2)|0;l=l+(B<<2)|0}}}while(0);e=e+(q<<2)|0;break}default:{}}D=D+1|0;if(D>>>0>=(f[E>>2]|0)>>>0){e=1;a=66;break}else{a=a+52|0;g=g+52|0;C=C+52|0}}if((a|0)==66)return e|0;return 0}function Td(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0,w=0,x=0,y=0,z=0;s=u;u=u+16|0;i=s+8|0;if(!c){Mb(d,1,14842,s)|0;r=0;u=s;return r|0}h=f[a+112>>2]|0;g=X(f[a+116>>2]|0,h)|0;if(g>>>0<=e>>>0){f[i>>2]=e;f[i+4>>2]=g+-1;Mb(d,1,14880,i)|0;r=0;u=s;return r|0}r=(e>>>0)%(h>>>0)|0;q=(e>>>0)/(h>>>0)|0;h=a+100|0;g=X(f[h>>2]|0,r)|0;i=a+92|0;g=g+(f[i>>2]|0)|0;f[c>>2]=g;p=a+80|0;j=f[f[p>>2]>>2]|0;g=g>>>0>>0?j:g;f[c>>2]=g;r=X(f[h>>2]|0,r+1|0)|0;i=r+(f[i>>2]|0)|0;r=c+8|0;f[r>>2]=i;h=f[(f[p>>2]|0)+8>>2]|0;i=i>>>0>h>>>0?h:i;f[r>>2]=i;r=a+104|0;h=X(f[r>>2]|0,q)|0;j=a+96|0;h=h+(f[j>>2]|0)|0;n=c+4|0;f[n>>2]=h;o=f[(f[p>>2]|0)+4>>2]|0;h=h>>>0>>0?o:h;f[n>>2]=h;q=X(f[r>>2]|0,q+1|0)|0;j=q+(f[j>>2]|0)|0;q=c+12|0;f[q>>2]=j;r=f[(f[p>>2]|0)+12>>2]|0;j=j>>>0>r>>>0?r:j;f[q>>2]=j;q=c+24|0;r=c+16|0;n=f[r>>2]|0;if(n|0){o=f[(f[p>>2]|0)+24>>2]|0;m=g+-1|0;l=h+-1|0;k=i+-1|0;i=j+-1|0;g=0;h=f[q>>2]|0;while(1){j=f[o+(g*52|0)+40>>2]|0;f[h+40>>2]=j;z=f[h>>2]|0;y=(m+z|0)/(z|0)|0;f[h+16>>2]=y;t=f[h+4>>2]|0;x=(l+t|0)/(t|0)|0;f[h+20>>2]=x;z=(k+z|0)/(z|0)|0;t=(i+t|0)/(t|0)|0;w=fj(1,0,j|0)|0;v=I;z=Zi(z|0,((z|0)<0)<<31>>31|0,-1,-1)|0;z=Zi(z|0,I|0,w|0,v|0)|0;z=dj(z|0,I|0,j|0)|0;y=Zi(y|0,((y|0)<0)<<31>>31|0,-1,-1)|0;y=Zi(y|0,I|0,w|0,v|0)|0;y=dj(y|0,I|0,j|0)|0;f[h+8>>2]=z-y;t=Zi(t|0,((t|0)<0)<<31>>31|0,-1,-1)|0;t=Zi(t|0,I|0,w|0,v|0)|0;t=dj(t|0,I|0,j|0)|0;x=Zi(x|0,((x|0)<0)<<31>>31|0,-1,-1)|0;v=Zi(x|0,I|0,w|0,v|0)|0;j=dj(v|0,I|0,j|0)|0;f[h+12>>2]=t-j;g=g+1|0;if(g>>>0>=n>>>0)break;else h=h+52|0}}l=a+84|0;g=f[l>>2]|0;if(g|0)Qb(g);g=Sb()|0;f[l>>2]=g;if(!g){z=0;u=s;return z|0}Ub(c,g);f[a+60>>2]=e;j=a+188|0;kg(f[j>>2]|0,29,d)|0;j=f[j>>2]|0;k=lg(j)|0;g=mg(j)|0;if(k){h=1;i=0;while(1){if(!h)h=0;else h=(Ma[f[g>>2]&63](a,b,d)|0)!=0;i=i+1|0;if((i|0)==(k|0))break;else{g=g+4|0;h=h&1}}ng(j);if(!h){Qb(f[p>>2]|0);f[p>>2]=0;z=0;u=s;return z|0}}else ng(j);g=f[r>>2]|0;if(!g){z=1;u=s;return z|0}k=0;j=f[(f[l>>2]|0)+24>>2]|0;i=f[q>>2]|0;while(1){f[i+(k*52|0)+36>>2]=f[j+(k*52|0)+36>>2];h=f[i+(k*52|0)+44>>2]|0;if(!h)h=j;else{Mc(h);h=f[(f[l>>2]|0)+24>>2]|0;i=f[q>>2]|0;g=f[r>>2]|0}z=h+(k*52|0)+44|0;f[i+(k*52|0)+44>>2]=f[z>>2];f[z>>2]=0;k=k+1|0;if(k>>>0>=g>>>0){g=1;break}else j=h}u=s;return g|0}function Ud(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0;E=u;u=u+96|0;A=E+56|0;z=E+48|0;y=E+40|0;C=E+32|0;B=E+24|0;j=E+16|0;i=E+8|0;q=E+92|0;r=E+88|0;s=E+84|0;t=E+80|0;v=E+76|0;w=E+72|0;x=E+68|0;o=E+64|0;f[q>>2]=1;d=Hc(1e3)|0;if(!d){Mb(c,1,14941,E)|0;D=0;u=E;return D|0}p=a+196|0;e=f[p>>2]|0;g=f[e+40>>2]|0;a:do if(!g){g=X(f[a+116>>2]|0,f[a+112>>2]|0)|0;f[e+36>>2]=g;g=Ic(g,40)|0;e=f[p>>2]|0;f[e+40>>2]=g;b:do if(g|0){if(f[e+36>>2]|0){h=0;do{f[g+(h*40|0)+28>>2]=100;f[g+(h*40|0)+20>>2]=0;n=Ic(100,24)|0;e=f[p>>2]|0;g=f[e+40>>2]|0;f[g+(h*40|0)+24>>2]=n;h=h+1|0;if(!n)break b}while(h>>>0<(f[e+36>>2]|0)>>>0)}e=f[a+60>>2]|0;if(!g)break a;else{h=e;D=11;break a}}while(0);Mc(d);D=0;u=E;return D|0}else{h=f[a+60>>2]|0;D=11}while(0);if((D|0)==11)if(f[g+16>>2]|0){if(!(f[g+(h*40|0)+4>>2]|0)){n=a+64|0;n=Zi(f[n>>2]|0,f[n+4>>2]|0,2,0)|0;if(!(tb(b,n,I,c)|0)){Mb(c,1,14979,i)|0;Mc(d);D=0;u=E;return D|0}}else{n=f[g+(h*40|0)+16>>2]|0;n=Zi(f[n>>2]|0,f[n+4>>2]|0,2,0)|0;if(!(tb(b,n,I,c)|0)){Mb(c,1,14979,j)|0;Mc(d);D=0;u=E;return D|0}}e=a+8|0;if((f[e>>2]|0)==256){f[e>>2]=8;e=h}else e=h}else e=h;c:do if(Gd(a,r,s,t,v,w,x,o,q,b,c)|0){j=a+116|0;k=a+112|0;l=a+204|0;m=a+84|0;n=e+1|0;g=1e3;while(1){if(!(f[q>>2]|0))break;h=f[s>>2]|0;if(h>>>0>g>>>0){g=Lc(d,h)|0;if(!g){D=25;break}else{d=g;g=h}}i=f[r>>2]|0;if(!(Hd(a,i,d,h,b,c)|0)){D=27;break}h=i+1|0;F=X(f[k>>2]|0,f[j>>2]|0)|0;f[C>>2]=h;f[C+4>>2]=F;Mb(c,4,14768,C)|0;F=f[l>>2]|0;if(!(Sd(f[(f[f[F+20>>2]>>2]|0)+20>>2]|0,f[F+24>>2]|0,d,f[(f[m>>2]|0)+24>>2]|0)|0)){D=29;break}f[y>>2]=h;Mb(c,4,14798,y)|0;if((i|0)==(e|0)){D=31;break}f[A>>2]=h;f[A+4>>2]=n;Mb(c,2,15007,A)|0;if(!(Gd(a,r,s,t,v,w,x,o,q,b,c)|0))break c}if((D|0)==25){Mc(d);F=X(f[k>>2]|0,f[j>>2]|0)|0;f[B>>2]=(f[r>>2]|0)+1;f[B+4>>2]=F;Mb(c,1,14699,B)|0;F=0;u=E;return F|0}else if((D|0)==27){Mc(d);F=0;u=E;return F|0}else if((D|0)==29){Mc(d);F=0;u=E;return F|0}else if((D|0)==31){F=(f[p>>2]|0)+8|0;F=Zi(f[F>>2]|0,f[F+4>>2]|0,2,0)|0;if(!(tb(b,F,I,c)|0)){Mb(c,1,14979,z)|0;Mc(d);F=0;u=E;return F|0}}Mc(d);F=1;u=E;return F|0}while(0);Mc(d);F=0;u=E;return F|0}function Vd(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,g=0,h=0,i=0,j=0,k=0;k=u;u=u+16|0;j=k;f[a+168>>2]=b;e=f[a+80>>2]|0;a:do if((((e|0)!=0?(i=f[e+24>>2]|0,(i|0)!=0):0)?(h=a+12|0,d=f[h>>2]|0,(d|0)!=0):0)?(g=f[d+5584>>2]|0,(g|0)!=0):0){d=f[e+16>>2]|0;if(!d)a=1;else{if((f[g+4>>2]|0)>>>0>b>>>0){a=0;do{f[i+(a*52|0)+40>>2]=b;a=a+1|0;if(a>>>0>=d>>>0){a=1;break a}}while((f[(f[(f[h>>2]|0)+5584>>2]|0)+(a*1080|0)+4>>2]|0)>>>0>b>>>0)}Mb(c,1,15074,j)|0;a=0}}else a=0;while(0);u=k;return a|0}function Wd(a,c,e){a=a|0;c=c|0;e=e|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0;Q=u;u=u+48|0;O=Q+32|0;N=Q+24|0;M=Q+16|0;L=Q+8|0;K=Q;G=a+204|0;g=f[G>>2]|0;H=a+116|0;I=a+112|0;J=X(f[I>>2]|0,f[H>>2]|0)|0;A=(J|0)==1;if(!J){P=1;u=Q;return P|0}B=a+200|0;C=a+12|0;D=a+164|0;E=a+8|0;F=g+20|0;z=g+24|0;y=0;m=0;g=0;a:while(1){if((f[B>>2]|0)!=(y|0)){P=5;break}w=y;y=y+1|0;x=X(f[H>>2]|0,f[I>>2]|0)|0;f[L>>2]=y;f[L+4>>2]=x;Mb(e,4,15187,L)|0;f[C>>2]=0;x=f[G>>2]|0;f[x+12>>2]=f[(f[D>>2]|0)+(w*5640|0)+5588>>2];f[E>>2]=0;if(!(Uf(x,f[B>>2]|0,e)|0))break;h=f[G>>2]|0;l=f[(f[h+24>>2]|0)+16>>2]|0;if(l)if(A){j=f[(f[f[F>>2]>>2]|0)+20>>2]|0;k=f[(f[z>>2]|0)+24>>2]|0;i=0;do{f[j+(i*52|0)+32>>2]=f[k+(i*52|0)+44>>2];f[j+(i*52|0)+36>>2]=0;i=i+1|0}while(i>>>0>>0)}else{i=0;do{if(!(Tf((f[(f[f[F>>2]>>2]|0)+20>>2]|0)+(i*52|0)|0)|0)){P=14;break a}i=i+1|0;h=f[G>>2]|0}while(i>>>0<(f[(f[h+24>>2]|0)+16>>2]|0)>>>0)}x=$f(h)|0;if(!A){if(x>>>0>g>>>0){g=Lc(m,x)|0;if(!g){P=20;break}else{h=g;g=x}}else h=m;i=f[G>>2]|0;w=i+24|0;j=f[w>>2]|0;if(f[j+16>>2]|0){v=i+20|0;i=h;t=0;do{p=f[(f[f[v>>2]>>2]|0)+20>>2]|0;n=f[j+24>>2]|0;R=f[n+(t*52|0)+24>>2]|0;R=(R>>>3)+((R&7|0)!=0&1)|0;l=f[p+(t*52|0)+8>>2]|0;m=f[p+(t*52|0)>>2]|0;r=l-m|0;o=f[p+(t*52|0)+12>>2]|0;p=f[p+(t*52|0)+4>>2]|0;s=o-p|0;T=f[j>>2]|0;S=f[n+(t*52|0)>>2]|0;k=f[n+(t*52|0)+4>>2]|0;q=(S+~T+(f[j+8>>2]|0)|0)/(S|0)|0;k=m-((T+-1+S|0)/(S|0)|0)+(X(q,p-(((f[j+4>>2]|0)+-1+k|0)/(k|0)|0)|0)|0)|0;k=(f[n+(t*52|0)+44>>2]|0)+(k<<2)|0;b:do switch(((R|0)==3?4:R)&1073741823|0){case 1:{j=(r|0)==0|(s|0)==0;if(!(f[n+(t*52|0)+32>>2]|0)){if(j)break b;p=o+-1-p|0;n=0;o=i;while(1){j=0;l=o;m=k;while(1){b[l>>0]=f[m>>2];j=j+1|0;if((j|0)==(r|0))break;else{l=l+1|0;m=m+4|0}}n=n+1|0;if((n|0)==(s|0))break;else{o=o+r|0;k=k+(q<<2)|0}}i=i+(r+(X(p,r)|0))|0;break b}else{if(j)break b;p=o+-1-p|0;o=i;j=k;k=0;while(1){l=0;m=o;n=j;while(1){b[m>>0]=f[n>>2];l=l+1|0;if((l|0)==(r|0))break;else{m=m+1|0;n=n+4|0}}k=k+1|0;if((k|0)==(s|0))break;else{o=o+r|0;j=j+(q<<2)|0}}i=i+(r+(X(p,r)|0))|0;break b}}case 2:{j=(r|0)==0|(s|0)==0;if(!(f[n+(t*52|0)+32>>2]|0)){if(j)break b;n=l-m<<1;p=n+(X(o+-1-p|0,n)|0)|0;n=i;o=0;while(1){j=0;l=n;m=k;while(1){d[l>>1]=f[m>>2];j=j+1|0;if((j|0)==(r|0))break;else{l=l+2|0;m=m+4|0}}o=o+1|0;if((o|0)==(s|0))break;else{n=n+(r<<1)|0;k=k+(q<<2)|0}}i=i+p|0;break b}else{if(j)break b;n=l-m<<1;p=n+(X(o+-1-p|0,n)|0)|0;n=i;o=0;while(1){j=n;l=0;m=k;while(1){d[j>>1]=f[m>>2];l=l+1|0;if((l|0)==(r|0))break;else{j=j+2|0;m=m+4|0}}o=o+1|0;if((o|0)==(s|0))break;else{n=n+(r<<1)|0;k=k+(q<<2)|0}}i=i+p|0;break b}}case 4:{if(!((r|0)==0|(s|0)==0)){n=l-m<<2;p=n+(X(o+-1-p|0,n)|0)|0;n=i;o=0;while(1){j=n;l=0;m=k;while(1){f[j>>2]=f[m>>2];l=l+1|0;if((l|0)==(r|0))break;else{j=j+4|0;m=m+4|0}}o=o+1|0;if((o|0)==(s|0))break;else{n=n+(r<<2)|0;k=k+(q<<2)|0}}i=i+p|0}break}default:{}}while(0);t=t+1|0;j=f[w>>2]|0}while(t>>>0<(f[j+16>>2]|0)>>>0);i=f[G>>2]|0}if(!(ag(i,h,x)|0)){P=61;break}}else h=m;if(!(Xd(a,c,e)|0)){P=63;break}if(y>>>0>=J>>>0){P=65;break}else m=h}if((P|0)==5)Mb(e,1,15150,K)|0;else if((P|0)==14){Mb(e,1,15208,M)|0;if(!m){T=0;u=Q;return T|0}Mc(m);T=0;u=Q;return T|0}else if((P|0)==20){if(m|0)Mc(m);Mb(e,1,15246,N)|0;T=0;u=Q;return T|0}else if((P|0)==61){Mb(e,1,15285,O)|0;Mc(h);T=0;u=Q;return T|0}else if((P|0)==63){if(!h){T=0;u=Q;return T|0}Mc(h);T=0;u=Q;return T|0}else if((P|0)==65){if(!h){T=1;u=Q;return T|0}Mc(h);T=1;u=Q;return T|0}if(!m){T=0;u=Q;return T|0}Mc(m);T=0;u=Q;return T|0}function Xd(a,b,c){a=a|0;b=b|0;c=c|0;var e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0;H=u;u=u+32|0;D=H+16|0;s=H+8|0;k=H;C=H+20|0;F=f[a+40>>2]|0;G=a+36|0;m=f[G>>2]|0;n=a+204|0;j=f[n>>2]|0;f[j+16>>2]=0;z=a+8|0;f[z>>2]=0;yb(m,65424,2);yb(m+2|0,10,2);E=a+200|0;yb(m+4|0,f[E>>2]|0,2);A=a+12|0;yb(m+10|0,f[A>>2]|0,1);B=a+164|0;yb(m+11|0,f[(f[B>>2]|0)+((f[E>>2]|0)*5640|0)+5588>>2]|0,1);f[C>>2]=12;g=m+12|0;e=F+-12|0;l=a+88|0;if(((d[l>>1]|0)+-3&65535)>=4?(h=f[B>>2]|0,i=f[E>>2]|0,(f[h+(i*5640|0)+420>>2]|0)!=0):0){f[C>>2]=0;Yd(f[(f[a+80>>2]|0)+16>>2]|0,h,i,g,C);y=f[C>>2]|0;h=y+12|0;g=g+y|0;e=e-y|0}else h=12;f[C>>2]=0;yb(g,65427,2);f[j+4>>2]=f[z>>2];f[j+8>>2]=f[A>>2];if(!(f[A>>2]|0))f[(f[f[j+20>>2]>>2]|0)+840>>2]=0;f[C>>2]=0;if(!(Yf(j,f[E>>2]|0,g+2|0,C,e+-4|0,0)|0)){Mb(c,1,15332,k)|0;G=0;u=H;return G|0}e=(f[C>>2]|0)+2|0;f[C>>2]=e;e=e+h|0;yb(m+6|0,e,4);if(((d[l>>1]|0)+-3&65535)<4){y=a+28|0;yb(f[y>>2]|0,f[E>>2]|0,1);x=(f[y>>2]|0)+1|0;f[y>>2]=x;yb(x,e,4);f[y>>2]=(f[y>>2]|0)+4}h=m+e|0;y=F-e|0;v=f[n>>2]|0;w=a+88|0;q=f[B>>2]|0;r=f[E>>2]|0;l=Zd(w,0,r)|0;x=a+8|0;f[A>>2]=(f[A>>2]|0)+1;a:do if(l>>>0>1){m=v+4|0;n=v+8|0;o=v+20|0;p=a+28|0;j=h;g=y;e=0;k=1;while(1){f[x>>2]=k;f[C>>2]=0;yb(j,65424,2);yb(j+2|0,10,2);yb(j+4|0,f[E>>2]|0,2);yb(j+10|0,f[A>>2]|0,1);yb(j+11|0,f[(f[B>>2]|0)+((f[E>>2]|0)*5640|0)+5588>>2]|0,1);h=j+12|0;f[C>>2]=0;yb(h,65427,2);f[m>>2]=f[z>>2];f[n>>2]=f[A>>2];if(!(f[A>>2]|0))f[(f[f[o>>2]>>2]|0)+840>>2]=0;f[C>>2]=0;if(!(Yf(v,f[E>>2]|0,j+14|0,C,g+-16|0,0)|0))break;i=f[C>>2]|0;I=i+2|0;f[C>>2]=I;h=h+I|0;e=e+12+I|0;g=g+-12+(-2-i)|0;i=i+14|0;yb(j+6|0,i,4);if(((d[w>>1]|0)+-3&65535)<4){yb(f[p>>2]|0,f[E>>2]|0,1);I=(f[p>>2]|0)+1|0;f[p>>2]=I;yb(I,i,4);f[p>>2]=(f[p>>2]|0)+4}f[A>>2]=(f[A>>2]|0)+1;k=k+1|0;if(k>>>0>=l>>>0){t=12;break a}else j=h}Mb(c,1,15332,s)|0}else{g=y;e=0;t=12}while(0);b:do if((t|0)==12){o=q+(r*5640|0)+420|0;c:do if(f[o>>2]|0){p=v+16|0;q=v+4|0;r=v+8|0;s=v+20|0;n=a+28|0;m=1;d:while(1){f[p>>2]=m;l=Zd(w,m,f[E>>2]|0)|0;if(l){k=0;while(1){f[x>>2]=k;f[C>>2]=0;yb(h,65424,2);yb(h+2|0,10,2);yb(h+4|0,f[E>>2]|0,2);yb(h+10|0,f[A>>2]|0,1);yb(h+11|0,f[(f[B>>2]|0)+((f[E>>2]|0)*5640|0)+5588>>2]|0,1);i=h+12|0;f[C>>2]=0;yb(i,65427,2);f[q>>2]=f[z>>2];f[r>>2]=f[A>>2];if(!(f[A>>2]|0))f[(f[f[s>>2]>>2]|0)+840>>2]=0;f[C>>2]=0;if(!(Yf(v,f[E>>2]|0,h+14|0,C,g+-16|0,0)|0))break d;I=f[C>>2]|0;j=I+2|0;f[C>>2]=j;e=e+12+j|0;j=i+j|0;g=g+-12+(-2-I)|0;i=I+14|0;yb(h+6|0,i,4);if(((d[w>>1]|0)+-3&65535)<4){yb(f[n>>2]|0,f[E>>2]|0,1);I=(f[n>>2]|0)+1|0;f[n>>2]=I;yb(I,i,4);f[n>>2]=(f[n>>2]|0)+4}f[A>>2]=(f[A>>2]|0)+1;k=k+1|0;if(k>>>0>=l>>>0){h=j;break}else h=j}}m=m+1|0;if(m>>>0>(f[o>>2]|0)>>>0)break c}Mb(c,1,15332,D)|0;break b}while(0);I=e-y+F|0;if((Fb(b,f[G>>2]|0,I,c)|0)!=(I|0)){I=0;u=H;return I|0}f[E>>2]=(f[E>>2]|0)+1;I=1;u=H;return I|0}while(0);I=0;u=H;return I|0}function Yd(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;g=f[b+(c*5640|0)+5584>>2]|0;l=(f[b+(c*5640|0)+420>>2]|0)+1|0;i=a>>>0<257?1:2;k=X(l,(i<<1)+5|0)|0;j=k+4|0;yb(d,65375,2);yb(d+2|0,k+2|0,2);if(!l){f[e>>2]=j;return}k=b+(c*5640|0)+8|0;h=g+4|0;b=b+(c*5640|0)+424|0;c=0;g=d+4|0;while(1){yb(g,f[b>>2]|0,1);g=g+1|0;yb(g,f[b+4>>2]|0,i);g=g+i|0;o=b+8|0;yb(g,f[o>>2]|0,2);g=g+2|0;m=b+12|0;yb(g,f[m>>2]|0,1);g=g+1|0;d=b+16|0;yb(g,f[d>>2]|0,i);g=g+i|0;yb(g,f[b+36>>2]|0,1);p=f[o>>2]|0;n=f[k>>2]|0;f[o>>2]=(p|0)<(n|0)?p:n;o=f[m>>2]|0;n=f[h>>2]|0;f[m>>2]=(o|0)<(n|0)?o:n;m=f[d>>2]|0;f[d>>2]=(m|0)<(a|0)?m:a;c=c+1|0;if((c|0)==(l|0))break;else{b=b+148|0;g=g+1|0}}f[e>>2]=j;return}function Zd(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,g=0,i=0,j=0,k=0,l=0,m=0,n=0;i=f[a+76>>2]|0;e=f[i+(d*5640|0)+4>>2]|0;j=696;while(1){m=f[j>>2]|0;if((m|0)==-1|(m|0)==(e|0))break;else j=j+12|0}if(!(b[a+93>>0]&8)){a=1;return a|0}m=h[a+92>>0]|0;g=i+(d*5640|0)+424+(c*148|0)+92|0;k=i+(d*5640|0)+424+(c*148|0)+88|0;l=i+(d*5640|0)+424+(c*148|0)+96|0;i=i+(d*5640|0)+424+(c*148|0)+84|0;c=b[j+4>>0]|0;switch(c|0){case 67:{e=g;n=8;break}case 82:{e=k;n=8;break}case 80:{e=l;n=8;break}case 76:{e=i;n=8;break}default:e=1}if((n|0)==8)e=f[e>>2]|0;if((m|0)!=(c|0)){d=b[j+5>>0]|0;switch(d|0){case 67:{c=g;n=16;break}case 82:{c=k;n=16;break}case 80:{c=l;n=16;break}case 76:{c=i;n=16;break}default:{}}if((n|0)==16)e=X(f[c>>2]|0,e)|0;if((m|0)!=(d|0)){d=b[j+6>>0]|0;switch(d|0){case 67:{c=g;n=22;break}case 82:{c=k;n=22;break}case 80:{c=l;n=22;break}case 76:{c=i;n=22;break}default:{}}if((n|0)==22)e=X(f[c>>2]|0,e)|0;if((m|0)!=(d|0)){c=b[j+7>>0]|0;switch(c|0){case 67:{n=28;break}case 82:{g=k;n=28;break}case 80:{g=l;n=28;break}case 76:{g=i;n=28;break}default:{}}if((n|0)==28)e=X(f[g>>2]|0,e)|0;if((m|0)==(c|0))g=3;else{a=e;return a|0}}else g=2}else g=1}else g=0;f[a+84>>2]=g;a=e;return a|0}function _d(a,b,c){a=a|0;b=b|0;c=c|0;var e=0,g=0,h=0,i=0,j=0;e=a+188|0;if(!(kg(f[e>>2]|0,30,c)|0)){j=0;return j|0}if(((d[a+88>>1]|0)+-3&65535)<4?(kg(f[e>>2]|0,31,c)|0)==0:0){j=0;return j|0}if(!(kg(f[e>>2]|0,32,c)|0)){j=0;return j|0}if(!(kg(f[e>>2]|0,33,c)|0)){j=0;return j|0}if(!(kg(f[e>>2]|0,34,c)|0)){j=0;return j|0}j=f[e>>2]|0;i=lg(j)|0;e=mg(j)|0;if(!i)e=1;else{g=e;e=1;h=0;while(1){if(!e)e=0;else e=(Ma[f[g>>2]&63](a,b,c)|0)!=0;e=e&1;h=h+1|0;if((h|0)==(i|0))break;else g=g+4|0}}ng(j);j=e;return j|0}function $d(a,b,c){a=a|0;b=b|0;c=c|0;a=a+44|0;yb(f[a>>2]|0,65497,2);if((Fb(b,f[a>>2]|0,2,c)|0)!=2){c=0;return c|0}c=(Gb(b,c)|0)!=0&1;return c|0}function ae(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,g=0,h=0,i=0;g=(f[a+32>>2]|0)*5|0;i=a+16|0;i=Zi(f[i>>2]|0,f[i+4>>2]|0,6,0)|0;h=I;d=Hb(b)|0;e=I;if(!(Kb(b,i,h,c)|0)){i=0;return i|0}if((Fb(b,f[a+24>>2]|0,g,c)|0)!=(g|0)){i=0;return i|0}i=(Kb(b,d,e,c)|0)!=0&1;return i|0}function be(a,b,c){a=a|0;b=b|0;c=c|0;a=f[a+196>>2]|0;if(!a)return 1;b=Hb(b)|0;c=a;c=_i(b|0,I|0,f[c>>2]|0,f[c+4>>2]|0)|0;b=a+16|0;f[b>>2]=c;f[b+4>>2]=I;return 1}function ce(a,b,c){a=a|0;b=b|0;c=c|0;b=a+204|0;Qf(f[b>>2]|0);f[b>>2]=0;b=a+24|0;c=f[b>>2]|0;if(c|0){Mc(c);f[b>>2]=0;f[a+28>>2]=0}c=a+36|0;b=f[c>>2]|0;if(!b){a=a+40|0;f[a>>2]=0;return 1}Mc(b);f[c>>2]=0;a=a+40|0;f[a>>2]=0;return 1}function de(a,b,c){a=a|0;b=b|0;c=c|0;b=a+44|0;c=f[b>>2]|0;if(c|0){Mc(c);f[b>>2]=0}f[a+48>>2]=0;return 1}function ee(a,b,c,e){a=a|0;b=b|0;c=c|0;e=e|0;var g=0,h=0,i=0,j=0,k=0,l=0;l=u;u=u+16|0;g=Sb()|0;k=a+80|0;f[k>>2]=g;if(!g){Mb(e,1,15352,l)|0;e=0;u=l;return e|0}Ub(c,g);i=f[c+24>>2]|0;if(i|0?(j=f[c+16>>2]|0,j|0):0){g=0;do{c=i+(g*52|0)+44|0;h=f[c>>2]|0;if(h|0){f[(f[(f[k>>2]|0)+24>>2]|0)+(g*52|0)+44>>2]=h;f[c>>2]=0}g=g+1|0}while(g>>>0>>0)}g=a+192|0;if(!(kg(f[g>>2]|0,35,e)|0)){e=0;u=l;return e|0}if(!(kg(f[g>>2]|0,36,e)|0)){e=0;u=l;return e|0}if(!(kg(f[g>>2]|0,37,e)|0)){e=0;u=l;return e|0}i=f[g>>2]|0;j=lg(i)|0;g=mg(i)|0;if(j){c=1;h=0;while(1){if(!c)c=0;else c=(Ma[f[g>>2]&63](a,b,e)|0)!=0;h=h+1|0;if((h|0)==(j|0))break;else{g=g+4|0;c=c&1}}ng(i);if(!c){e=0;u=l;return e|0}}else ng(i);g=a+188|0;if(!(kg(f[g>>2]|0,38,e)|0)){e=0;u=l;return e|0}if(!(kg(f[g>>2]|0,39,e)|0)){e=0;u=l;return e|0}if(!(kg(f[g>>2]|0,40,e)|0)){e=0;u=l;return e|0}if(!(kg(f[g>>2]|0,41,e)|0)){e=0;u=l;return e|0}if(!(kg(f[g>>2]|0,42,e)|0)){e=0;u=l;return e|0}if(!(kg(f[g>>2]|0,43,e)|0)){e=0;u=l;return e|0}if(!(kg(f[g>>2]|0,44,e)|0)){e=0;u=l;return e|0}c=a+88|0;if(((d[c>>1]|0)+-3&65535)<4){if(!(kg(f[g>>2]|0,45,e)|0)){e=0;u=l;return e|0}if((d[c>>1]|0)==4?(kg(f[g>>2]|0,46,e)|0)==0:0){e=0;u=l;return e|0}}if(!(kg(f[g>>2]|0,47,e)|0)){e=0;u=l;return e|0}if(f[a+108>>2]|0?(kg(f[g>>2]|0,48,e)|0)==0:0){e=0;u=l;return e|0}if(d[c>>1]&256?(kg(f[g>>2]|0,49,e)|0)==0:0){e=0;u=l;return e|0}if(f[a+196>>2]|0?(kg(f[g>>2]|0,50,e)|0)==0:0){e=0;u=l;return e|0}if(!(kg(f[g>>2]|0,51,e)|0)){e=0;u=l;return e|0}if(!(kg(f[g>>2]|0,52,e)|0)){e=0;u=l;return e|0}j=f[g>>2]|0;i=lg(j)|0;g=mg(j)|0;if(!i)g=1;else{c=g;g=1;h=0;while(1){if(!g)g=0;else g=(Ma[f[c>>2]&63](a,b,e)|0)!=0;g=g&1;h=h+1|0;if((h|0)==(i|0))break;else c=c+4|0}}ng(j);e=g;u=l;return e|0}function fe(a,b,c){a=a|0;b=b|0;c=c|0;return 1}function ge(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0;e=u;u=u+32|0;d=(f[a+8>>2]|0)==0&(f[a+188>>2]|0)!=0&(f[a+192>>2]|0)!=0&1;b=(f[(f[(f[a+164>>2]|0)+5584>>2]|0)+4>>2]|0)+-1|0;if(b>>>0>31){Mb(c,1,16016,e)|0;c=0;u=e;return c|0}b=1<>2]|0)>>>0>>0){Mb(c,1,16016,e+8|0)|0;c=0;u=e;return c|0}if((f[a+104>>2]|0)>>>0>=b>>>0){c=d;u=e;return c|0}Mb(c,1,16016,e+16|0)|0;c=0;u=e;return c|0}function he(a,b,c){a=a|0;b=b|0;c=c|0;var e=0,g=0,h=0,i=0,j=0;if((d[a+88>>1]&-32256)<<16>>16!=-32256){j=1;return j|0}i=X(f[a+112>>2]|0,f[a+116>>2]|0)|0;if(!i){j=1;return j|0}j=a+80|0;g=f[a+164>>2]|0;b=1;h=0;while(1){if((f[g+16>>2]|0)==2){b=b&(f[g+5608>>2]|0)!=0;e=f[(f[j>>2]|0)+16>>2]|0;if(e){c=0;a=f[g+5584>>2]|0;while(1){b=(f[a+20>>2]&1^1)&b;c=c+1|0;if(c>>>0>=e>>>0)break;else a=a+1080|0}}}h=h+1|0;if((h|0)==(i|0))break;else g=g+5640|0}return b|0}function ie(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,g=0,h=0,i=0,j=0,k=0;h=a+88|0;i=a+32|0;j=f[a+80>>2]|0;g=X(f[a+116>>2]|0,f[a+112>>2]|0)|0;f[i>>2]=0;if(!g)return 1;a=f[a+164>>2]|0;d=0;while(1){Jf(j,h,d);e=a+420|0;b=0;c=0;do{k=Zd(h,b,d)|0;f[i>>2]=(f[i>>2]|0)+k;c=k+c|0;b=b+1|0}while(b>>>0<=(f[e>>2]|0)>>>0);f[a+5588>>2]=c;d=d+1|0;if((d|0)==(g|0))break;else a=a+5640|0}return 1}function je(a,b,c){a=a|0;b=b|0;c=c|0;a=f[a+44>>2]|0;yb(a,65359,2);return (Fb(b,a,2,c)|0)==2|0}function ke(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,g=0,h=0,i=0,k=0,l=0,m=0,n=0,o=0;o=u;u=u+16|0;h=o;i=f[a+80>>2]|0;m=i+16|0;k=(f[m>>2]|0)*3|0;n=k+40|0;g=f[i+24>>2]|0;e=a+48|0;l=a+44|0;d=f[l>>2]|0;do if(n>>>0>(f[e>>2]|0)>>>0){d=Lc(d,n)|0;if(d|0){f[l>>2]=d;f[e>>2]=n;break}Mc(f[l>>2]|0);f[l>>2]=0;f[e>>2]=0;Mb(c,1,15978,h)|0;n=0;u=o;return n|0}while(0);yb(d,65361,2);yb(d+2|0,k+38|0,2);yb(d+4|0,j[a+88>>1]|0,2);yb(d+6|0,f[i+8>>2]|0,4);yb(d+10|0,f[i+12>>2]|0,4);yb(d+14|0,f[i>>2]|0,4);yb(d+18|0,f[i+4>>2]|0,4);yb(d+22|0,f[a+100>>2]|0,4);yb(d+26|0,f[a+104>>2]|0,4);yb(d+30|0,f[a+92>>2]|0,4);yb(d+34|0,f[a+96>>2]|0,4);yb(d+38|0,f[m>>2]|0,2);if(f[m>>2]|0){d=d+40|0;e=0;while(1){yb(d,(f[g+24>>2]|0)+-1+(f[g+32>>2]<<7)|0,1);yb(d+1|0,f[g>>2]|0,1);yb(d+2|0,f[g+4>>2]|0,1);e=e+1|0;if(e>>>0>=(f[m>>2]|0)>>>0)break;else{g=g+52|0;d=d+3|0}}}n=(Fb(b,f[l>>2]|0,n,c)|0)==(n|0)&1;u=o;return n|0}function le(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;q=u;u=u+32|0;p=q+16|0;o=q+8|0;i=q;j=q+20|0;k=a+164|0;l=f[k>>2]|0;m=a+200|0;n=f[m>>2]|0;d=f[l+(n*5640|0)+5584>>2]|0;if(!(f[d>>2]&1))g=5;else g=(f[d+4>>2]|0)+5|0;h=g+9|0;f[j>>2]=h;e=a+48|0;a=a+44|0;d=f[a>>2]|0;do if(h>>>0>(f[e>>2]|0)>>>0){d=Lc(d,h)|0;if(d|0){f[a>>2]=d;f[e>>2]=h;break}Mc(f[a>>2]|0);f[a>>2]=0;f[e>>2]=0;Mb(c,1,15913,i)|0;p=0;u=q;return p|0}while(0);yb(d,65362,2);yb(d+2|0,g+7|0,2);yb(d+4|0,f[l+(n*5640|0)>>2]|0,1);yb(d+5|0,f[l+(n*5640|0)+4>>2]|0,1);yb(d+6|0,f[l+(n*5640|0)+8>>2]|0,2);yb(d+8|0,f[l+(n*5640|0)+16>>2]|0,1);f[j>>2]=g;if(!(Ae(f[k>>2]|0,f[m>>2]|0,d+9|0,j,c)|0)){Mb(c,1,15952,o)|0;p=0;u=q;return p|0}if(!(f[j>>2]|0)){p=(Fb(b,f[a>>2]|0,h,c)|0)==(h|0)&1;u=q;return p|0}else{Mb(c,1,15952,p)|0;p=0;u=q;return p|0}return 0}function me(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;o=u;u=u+32|0;n=o+16|0;m=o+8|0;i=o;k=o+20|0;l=a+200|0;j=a+164|0;d=f[(f[j>>2]|0)+((f[l>>2]|0)*5640|0)+5584>>2]|0;e=f[d+24>>2]|0;if((e|0)==1)d=1;else d=((f[d+4>>2]|0)*3|0)+-2|0;g=(e|0)==0?d+1|0:d<<1|1;h=g+4|0;f[k>>2]=h;e=a+48|0;a=a+44|0;d=f[a>>2]|0;do if(h>>>0>(f[e>>2]|0)>>>0){d=Lc(d,h)|0;if(d|0){f[a>>2]=d;f[e>>2]=h;break}Mc(f[a>>2]|0);f[a>>2]=0;f[e>>2]=0;Mb(c,1,15848,i)|0;n=0;u=o;return n|0}while(0);yb(d,65372,2);yb(d+2|0,g+2|0,2);f[k>>2]=g;if(!(ze(f[j>>2]|0,f[l>>2]|0,0,d+4|0,k,c)|0)){Mb(c,1,15887,m)|0;n=0;u=o;return n|0}if(!(f[k>>2]|0)){n=(Fb(b,f[a>>2]|0,h,c)|0)==(h|0)&1;u=o;return n|0}else{Mb(c,1,15887,n)|0;n=0;u=o;return n|0}return 0}function ne(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0,w=0;w=u;u=u+16|0;t=w;q=w+4|0;r=a+80|0;d=f[(f[r>>2]|0)+16>>2]|0;if(d>>>0<=1){v=1;u=w;return v|0}n=a+164|0;o=a+200|0;s=a+48|0;m=a+44|0;l=1;a=d;while(1){e=f[n>>2]|0;h=f[o>>2]|0;g=f[e+(h*5640|0)+5584>>2]|0;i=f[g+(l*1080|0)>>2]|0;a:do if((((((f[g>>2]|0)==(i|0)?(p=f[g+4>>2]|0,(p|0)==(f[g+(l*1080|0)+4>>2]|0)):0)?(f[g+8>>2]|0)==(f[g+(l*1080|0)+8>>2]|0):0)?(f[g+12>>2]|0)==(f[g+(l*1080|0)+12>>2]|0):0)?(f[g+16>>2]|0)==(f[g+(l*1080|0)+16>>2]|0):0)?(f[g+20>>2]|0)==(f[g+(l*1080|0)+20>>2]|0):0){if(p){d=0;do{if((f[g+812+(d<<2)>>2]|0)!=(f[g+(l*1080|0)+812+(d<<2)>>2]|0)){v=13;break a}if((f[g+944+(d<<2)>>2]|0)!=(f[g+(l*1080|0)+944+(d<<2)>>2]|0)){v=13;break a}d=d+1|0}while(d>>>0

>>0)}}else v=13;while(0);if((v|0)==13){v=0;if(!(i&1))d=5;else d=(f[g+(l*1080|0)+4>>2]|0)+5|0;k=d+(a>>>0<257?6:7)|0;d=f[m>>2]|0;if(k>>>0>(f[s>>2]|0)>>>0){d=Lc(d,k)|0;if(!d){v=17;break}f[m>>2]=d;f[s>>2]=k;j=f[n>>2]|0;h=f[o>>2]|0;g=f[j+(h*5640|0)+5584>>2]|0;a=f[(f[r>>2]|0)+16>>2]|0;i=f[g+(l*1080|0)>>2]|0}else j=e;e=a>>>0<257?1:2;if(!(i&1))a=5;else a=(f[g+(l*1080|0)+4>>2]|0)+5|0;yb(d,65363,2);yb(d+2|0,e+3+a|0,2);i=d+4|0;yb(i,l,e);i=i+e|0;yb(i,f[(f[j+(h*5640|0)+5584>>2]|0)+(l*1080|0)>>2]|0,1);f[q>>2]=a;Ae(f[n>>2]|0,f[o>>2]|0,i+1|0,q,c)|0;if((Fb(b,f[m>>2]|0,k,c)|0)!=(k|0)){a=0;v=24;break}a=f[(f[r>>2]|0)+16>>2]|0}l=l+1|0;if(l>>>0>=a>>>0){a=1;v=24;break}}if((v|0)==17){Mc(f[m>>2]|0);f[m>>2]=0;f[s>>2]=0;Mb(c,1,15774,t)|0;v=0;u=w;return v|0}else if((v|0)==24){u=w;return a|0}return 0}\nfunction oe(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;t=u;u=u+16|0;r=t;o=t+4|0;p=a+80|0;d=f[(f[p>>2]|0)+16>>2]|0;if(d>>>0<=1){s=1;u=t;return s|0}m=a+164|0;n=a+200|0;q=a+48|0;l=a+44|0;k=1;a=d;while(1){i=f[(f[m>>2]|0)+((f[n>>2]|0)*5640|0)+5584>>2]|0;g=f[i+24>>2]|0;h=f[i+(k*1080|0)+24>>2]|0;a:do if((g|0)==(h|0)?(f[i+804>>2]|0)==(f[i+(k*1080|0)+804>>2]|0):0){if((g|0)!=1){j=(f[i+4>>2]|0)*3|0;d=j+-2|0;if((j|0)!=((f[i+(k*1080|0)+4>>2]|0)*3|0)){s=14;break}if(!d)break;else e=d}else e=1;d=0;do{if((f[i+28+(d<<3)>>2]|0)!=(f[i+(k*1080|0)+28+(d<<3)>>2]|0)){s=14;break a}d=d+1|0}while(d>>>0>>0);if(g){d=0;do{if((f[i+28+(d<<3)+4>>2]|0)!=(f[i+(k*1080|0)+28+(d<<3)+4>>2]|0)){s=14;break a}d=d+1|0}while(d>>>0>>0)}}else s=14;while(0);if((s|0)==14){s=0;if((h|0)==1)d=1;else d=((f[i+(k*1080|0)+4>>2]|0)*3|0)+-2|0;j=((h|0)==0?d+1|0:d<<1|1)+5+(a>>>0>256&1)|0;a=f[l>>2]|0;if(j>>>0>(f[q>>2]|0)>>>0){a=Lc(a,j)|0;if(!a){s=18;break}f[l>>2]=a;f[q>>2]=j;d=f[(f[m>>2]|0)+((f[n>>2]|0)*5640|0)+5584>>2]|0;e=f[d+(k*1080|0)+24>>2]|0;g=a}else{e=h;d=i;g=a}if((e|0)==1)a=1;else a=((f[d+(k*1080|0)+4>>2]|0)*3|0)+-2|0;d=(e|0)==0?a+1|0:a<<1|1;f[o>>2]=d+6;yb(g,65373,2);a=g+2|0;if((f[(f[p>>2]|0)+16>>2]|0)>>>0<257){yb(a,d+3|0,2);yb(g+4|0,k,1);a=5}else{yb(a,d+4|0,2);yb(g+4|0,k,2);a=6}f[o>>2]=d;ze(f[m>>2]|0,f[n>>2]|0,k,g+a|0,o,c)|0;if((Fb(b,f[l>>2]|0,j,c)|0)!=(j|0)){a=0;s=28;break}a=f[(f[p>>2]|0)+16>>2]|0}k=k+1|0;if(k>>>0>=a>>>0){a=1;s=28;break}}if((s|0)==18){Mc(f[l>>2]|0);f[l>>2]=0;f[q>>2]=0;Mb(c,1,15702,r)|0;s=0;u=t;return s|0}else if((s|0)==28){u=t;return a|0}return 0}function pe(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,g=0,h=0,i=0,j=0,k=0;k=u;u=u+16|0;g=k;i=(f[a+32>>2]|0)*5|0;j=i+6|0;e=a+48|0;h=a+44|0;d=f[h>>2]|0;do if(j>>>0>(f[e>>2]|0)>>>0){d=Lc(d,j)|0;if(d|0){f[h>>2]=d;f[e>>2]=j;break}Mc(f[h>>2]|0);f[h>>2]=0;f[e>>2]=0;Mb(c,1,15663,g)|0;j=0;u=k;return j|0}while(0);g=Hb(b)|0;a=a+16|0;f[a>>2]=g;f[a+4>>2]=I;yb(d,65365,2);yb(d+2|0,i+4|0,2);yb(d+4|0,0,1);yb(d+5|0,80,1);j=(Fb(b,f[h>>2]|0,j,c)|0)==(j|0)&1;u=k;return j|0}function qe(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;p=u;u=u+16|0;j=p;o=p+4|0;f[o>>2]=0;k=a+164|0;e=f[k>>2]|0;l=a+200|0;d=f[l>>2]|0;i=a+80|0;g=f[(f[i>>2]|0)+16>>2]|0;n=(X(g>>>0<257?7:9,(f[e+(d*5640|0)+420>>2]|0)+1|0)|0)+4|0;h=a+48|0;m=a+44|0;a=f[m>>2]|0;do if(n>>>0>(f[h>>2]|0)>>>0){a=Lc(a,n)|0;if(a|0){f[m>>2]=a;f[h>>2]=n;g=f[(f[i>>2]|0)+16>>2]|0;e=f[k>>2]|0;d=f[l>>2]|0;break}Mc(f[m>>2]|0);f[m>>2]=0;f[h>>2]=0;Mb(c,1,15624,j)|0;o=0;u=p;return o|0}while(0);Yd(g,e,d,a,o);o=(Fb(b,f[m>>2]|0,n,c)|0)==(n|0)&1;u=p;return o|0}function re(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0;j=a+164|0;k=a+80|0;e=f[k>>2]|0;d=f[e+16>>2]|0;if(!d){k=1;return k|0}i=a+44|0;g=0;h=f[(f[j>>2]|0)+5584>>2]|0;a=e;while(1){if(f[h+808>>2]|0){a=f[(f[j>>2]|0)+5584>>2]|0;d=d>>>0<257?1:2;e=d+6|0;l=f[i>>2]|0;yb(l,65374,2);yb(l+2|0,d|4,2);l=l+4|0;yb(l,g,d);d=l+d|0;yb(d,0,1);yb(d+1|0,f[a+(g*1080|0)+808>>2]|0,1);if((Fb(b,f[i>>2]|0,e,c)|0)!=(e|0)){a=0;d=7;break}a=f[k>>2]|0}g=g+1|0;d=f[a+16>>2]|0;if(g>>>0>=d>>>0){a=1;d=7;break}else h=h+1080|0}if((d|0)==7)return a|0;return 0}function se(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,g=0,h=0,i=0,j=0,k=0;k=u;u=u+16|0;g=k;h=f[a+108>>2]|0;i=Kh(h)|0;j=i+6|0;e=a+48|0;d=a+44|0;a=f[d>>2]|0;do if(j>>>0>(f[e>>2]|0)>>>0){a=Lc(a,j)|0;if(a|0){f[d>>2]=a;f[e>>2]=j;break}Mc(f[d>>2]|0);f[d>>2]=0;f[e>>2]=0;Mb(c,1,15581,g)|0;j=0;u=k;return j|0}while(0);yb(a,65380,2);yb(a+2|0,i+4|0,2);yb(a+4|0,1,2);hj(a+6|0,h|0,i|0)|0;j=(Fb(b,f[d>>2]|0,j,c)|0)==(j|0)&1;u=k;return j|0}function te(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0,w=0,x=0;x=u;u=u+32|0;v=x+24|0;r=x+16|0;n=x+8|0;g=x;h=f[a+80>>2]|0;j=h+16|0;i=f[j>>2]|0;k=i+6|0;t=a+48|0;w=a+44|0;e=f[w>>2]|0;do if(k>>>0>(f[t>>2]|0)>>>0){e=Lc(e,k)|0;if(e|0){f[w>>2]=e;f[t>>2]=k;break}Mc(f[w>>2]|0);f[w>>2]=0;f[t>>2]=0;Mb(d,1,15425,g)|0;d=0;u=x;return d|0}while(0);yb(e,65400,2);yb(e+2|0,i+4|0,2);yb(e+4|0,f[j>>2]|0,2);if(f[j>>2]|0){h=f[h+24>>2]|0;e=e+6|0;g=0;while(1){yb(e,(f[h+24>>2]|0)+-1|f[h+32>>2]<<7,1);g=g+1|0;if(g>>>0>=(f[j>>2]|0)>>>0)break;else{h=h+52|0;e=e+1|0}}}if((Fb(c,f[w>>2]|0,k,d)|0)!=(k|0)){d=0;u=x;return d|0}o=a+164|0;m=f[o>>2]|0;p=a+200|0;l=f[p>>2]|0;i=m+(l*5640|0)+5616|0;a:do if(f[i>>2]|0){g=f[m+(l*5640|0)+5612>>2]|0;h=0;while(1){j=g+16|0;k=f[j>>2]|0;a=k+10|0;e=f[w>>2]|0;if(a>>>0>(f[t>>2]|0)>>>0){e=Lc(e,a)|0;if(!e)break;f[w>>2]=e;f[t>>2]=a}yb(e,65396,2);yb(e+2|0,k+8|0,2);yb(e+4|0,0,2);yb(e+6|0,f[g+4>>2]<<8|f[g+8>>2]&255|f[g>>2]<<10,2);yb(e+8|0,0,2);hj(e+10|0,f[g+12>>2]|0,f[j>>2]|0)|0;if((Fb(c,f[w>>2]|0,a,d)|0)!=(a|0)){q=0;s=41;break}h=h+1|0;if(h>>>0>=(f[i>>2]|0)>>>0)break a;else g=g+20|0}if((s|0)==41){u=x;return q|0}Mc(f[w>>2]|0);f[w>>2]=0;f[t>>2]=0;Mb(d,1,15464,n)|0;d=0;u=x;return d|0}while(0);n=m+(l*5640|0)+5628|0;b:do if(f[n>>2]|0){a=f[m+(l*5640|0)+5624>>2]|0;l=0;while(1){k=a+4|0;g=f[k>>2]|0;i=g>>>0>255;j=i?2:1;i=i?32768:0;g=X(j,g<<1)|0;m=g+19|0;e=f[w>>2]|0;if(m>>>0>(f[t>>2]|0)>>>0){e=Lc(e,m)|0;if(!e)break;f[w>>2]=e;f[t>>2]=m}yb(e,65397,2);yb(e+2|0,g+17|0,2);yb(e+4|0,0,2);yb(e+6|0,f[a>>2]|0,1);yb(e+7|0,0,2);yb(e+9|0,1,2);yb(e+11|0,1,1);yb(e+12|0,f[k>>2]|i,2);e=e+14|0;if(!(f[k>>2]|0))g=0;else{h=0;do{yb(e,h,j);e=e+j|0;h=h+1|0;g=f[k>>2]|0}while(h>>>0>>0)}yb(e,g|i,2);e=e+2|0;if(!(f[k>>2]|0))h=e;else{g=0;do{yb(e,g,j);e=e+j|0;g=g+1|0}while(g>>>0<(f[k>>2]|0)>>>0);h=e}e=((b[a+16>>0]&1^1)&255)<<16;g=f[a+8>>2]|0;if(g)e=f[g+8>>2]|e;g=f[a+12>>2]|0;if(g)e=f[g+8>>2]<<8|e;yb(h,e,3);if((Fb(c,f[w>>2]|0,m,d)|0)!=(m|0)){q=0;s=41;break}l=l+1|0;if(l>>>0>=(f[n>>2]|0)>>>0)break b;else a=a+20|0}if((s|0)==41){u=x;return q|0}Mc(f[w>>2]|0);f[w>>2]=0;f[t>>2]=0;Mb(d,1,15503,r)|0;d=0;u=x;return d|0}while(0);j=f[o>>2]|0;i=f[p>>2]|0;k=j+(i*5640|0)+5628|0;g=f[k>>2]|0;a=g+5|0;e=f[w>>2]|0;do if(a>>>0>(f[t>>2]|0)>>>0){e=Lc(e,a)|0;if(e|0){f[w>>2]=e;f[t>>2]=a;break}Mc(f[w>>2]|0);f[w>>2]=0;f[t>>2]=0;Mb(d,1,15542,v)|0;d=0;u=x;return d|0}while(0);yb(e,65399,2);yb(e+2|0,g+3|0,2);yb(e+4|0,f[k>>2]|0,1);if(f[k>>2]|0){h=0;g=f[j+(i*5640|0)+5624>>2]|0;e=e+5|0;while(1){yb(e,f[g>>2]|0,1);h=h+1|0;if(h>>>0>=(f[k>>2]|0)>>>0)break;else{g=g+20|0;e=e+1|0}}}d=(Fb(c,f[w>>2]|0,a,d)|0)==(a|0)&1;u=x;return d|0}function ue(a,b,c){a=a|0;b=b|0;c=c|0;b=Hb(b)|0;c=(f[a+196>>2]|0)+8|0;f[c>>2]=b;f[c+4>>2]=I;return 1}function ve(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0;e=u;u=u+16|0;b=Lf(0)|0;d=a+204|0;f[d>>2]=b;if(!b){Mb(c,1,15385,e)|0;c=0;u=e;return c|0}if(Pf(b,f[a+80>>2]|0,a+88|0)|0){c=1;u=e;return c|0}Qf(f[d>>2]|0);f[d>>2]=0;c=0;u=e;return c|0}function we(a,c,e){a=a|0;c=c|0;e=e|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0.0,o=0,p=0,q=0,r=0,s=0,t=0.0,u=0,v=0.0,w=0.0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0.0,G=0,H=0,J=0.0,K=0.0,L=0.0,M=0.0,N=0,O=0,P=0,Q=0,R=0,S=0;P=a+80|0;E=f[P>>2]|0;S=a+164|0;h=f[S>>2]|0;O=E+24|0;D=f[O>>2]|0;g=f[D>>2]|0;e=f[D+4>>2]|0;G=E+16|0;D=X(f[D+24>>2]|0,f[G>>2]|0)|0;C=Hb(c)|0;Q=a+116|0;c=f[Q>>2]|0;R=a+112|0;i=f[R>>2]|0;F=(+(C>>>0)+4294967296.0*+(I|0))/+((X(i,c)|0)>>>0);C=(b[a+181>>0]&8)==0?1:2;if(c|0){s=a+92|0;u=a+100|0;x=a+96|0;y=a+104|0;z=E+4|0;A=E+8|0;B=E+12|0;w=+((X(g<<3,e)|0)>>>0);p=0;g=i;e=i;while(1){o=p;p=p+1|0;if(!e){r=c;q=g;e=0}else{l=0;do{v=+Ja[C&3](h);k=f[h+8>>2]|0;v=v/+(k>>>0);r=f[s>>2]|0;g=f[u>>2]|0;j=(X(g,l)|0)+r|0;e=f[E>>2]|0;e=(j|0)>(e|0)?j:e;j=f[x>>2]|0;i=f[y>>2]|0;q=(X(i,o)|0)+j|0;c=f[z>>2]|0;c=(q|0)>(c|0)?q:c;l=l+1|0;r=(X(g,l)|0)+r|0;g=f[A>>2]|0;g=(r|0)<(g|0)?r:g;j=(X(i,p)|0)+j|0;i=f[B>>2]|0;i=(j|0)<(i|0)?j:i;j=h+20|0;m=+n[j>>2];if(m>0.0){t=+((X(X(g-e|0,D)|0,i-c|0)|0)>>>0)/(m*w)-v;n[j>>2]=t}if(k>>>0>1){m=+((X(X(g-e|0,D)|0,i-c|0)|0)>>>0);e=h+24|0;c=1;while(1){t=+n[e>>2];if(t>0.0)n[e>>2]=m/(t*w)-v;c=c+1|0;if(c>>>0>=k>>>0)break;else e=e+4|0}}h=h+5640|0;e=f[R>>2]|0}while(l>>>0>>0);r=f[Q>>2]|0;q=e}if(p>>>0>=r>>>0)break;else{g=q;c=r}}if(r|0?(K=F+2.0,q|0):0){l=0;e=f[S>>2]|0;while(1){o=0;p=e;k=e+16|0;while(1){e=p+20|0;m=+n[e>>2];if(m>0.0?(w=m-F,n[e>>2]=w,w<30.0):0)n[e>>2]=30.0;c=p+24|0;e=f[p+8>>2]|0;j=e+-1|0;m=+n[c>>2];h=m>0.0;if(j>>>0>1){i=k+(e<<2)|0;g=1;e=h;do{if(e?(w=m-F,n[c>>2]=w,M=+n[c+-4>>2],w>2]=M+20.0;c=c+4|0;g=g+1|0;m=+n[c>>2];e=m>0.0}while((g|0)!=(j|0));if(e){H=i;J=m;N=25}}else if(h){H=c;J=m;N=25}if((N|0)==25?(N=0,w=J-K,n[H>>2]=w,L=+n[H+-4>>2],w>2]=L+20.0;p=p+5640|0;o=o+1|0;if(o>>>0>=q>>>0)break;else k=k+5640|0}l=l+1|0;if(l>>>0>=r>>>0)break;else e=p}}}h=f[G>>2]|0;if(!h)u=0;else{i=(f[a+100>>2]|0)+-1|0;j=(f[a+104>>2]|0)+-1|0;g=0;e=f[O>>2]|0;c=0;while(1){O=f[e>>2]|0;N=f[e+4>>2]|0;O=X(((j+N|0)>>>0)/(N>>>0)|0,((i+O|0)>>>0)/(O>>>0)|0)|0;g=(X(O,f[e+24>>2]|0)|0)+g|0;c=c+1|0;if(c>>>0>=h>>>0)break;else e=e+52|0}u=~~(+(g>>>0)*.1625)>>>0}o=f[(f[P>>2]|0)+16>>2]|0;r=o+-1|0;e=f[S>>2]|0;s=X(f[Q>>2]|0,f[R>>2]|0)|0;p=(s|0)==0;if(p)h=0;else{c=0;g=0;h=e;while(1){S=f[h+5588>>2]|0;c=c>>>0>S>>>0?c:S;g=g+1|0;if((g|0)==(s|0))break;else h=h+5640|0}h=c*12|0}q=a+88|0;if(((d[q>>1]|0)+-3&65535)>=4){if((o|0)==0|p){g=6;c=6}else{i=0;c=0;do{k=f[e+(i*5640|0)+5584>>2]|0;j=0;do{if(!(f[k+(j*1080|0)>>2]&1))g=5;else g=(f[k+(j*1080|0)+4>>2]|0)+5|0;c=c>>>0>g>>>0?c:g;j=j+1|0}while((j|0)!=(o|0));i=i+1|0}while((i|0)!=(s|0));c=c+6|0;j=0;g=0;do{l=f[e+(j*5640|0)+5584>>2]|0;k=0;do{if(!(f[l+(k*1080|0)>>2]&1))i=5;else i=(f[l+(k*1080|0)+4>>2]|0)+5|0;g=g>>>0>i>>>0?g:i;k=k+1|0}while((k|0)!=(o|0));j=j+1|0}while((j|0)!=(s|0));g=g+6|0}h=(X(g+c|0,r)|0)+h|0}if(p)e=13;else{g=0;c=0;while(1){S=f[e+420>>2]|0;g=g>>>0>S>>>0?g:S;c=c+1|0;if((c|0)==(s|0))break;else e=e+5640|0}e=(g*9|0)+13|0}S=h+u+e|0;f[a+40>>2]=S;S=Hc(S)|0;f[a+36>>2]=S;if(!S){a=0;return a|0}if(((d[q>>1]|0)+-3&65535)>=4){a=1;return a|0}e=Hc((f[a+32>>2]|0)*5|0)|0;f[a+24>>2]=e;if(!e){a=0;return a|0}f[a+28>>2]=e;a=1;return a|0}function xe(a){a=a|0;return 0.0}function ye(a){a=a|0;return +(+((((f[a+5588>>2]|0)*14|0)+-14|0)>>>0))}function ze(a,b,c,d,e,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0;m=u;u=u+16|0;j=m+8|0;i=m;k=f[a+(b*5640|0)+5584>>2]|0;b=f[k+(c*1080|0)+24>>2]|0;do if((b|0)!=1){a=(f[k+(c*1080|0)+4>>2]|0)*3|0;h=a+-2|0;if(!b){a=a+-1|0;if((f[e>>2]|0)>>>0>>0){Mb(g,1,15741,i)|0;e=0;u=m;return e|0}else{yb(d,f[k+(c*1080|0)+804>>2]<<5,1);if(!h)break;else b=0;do{d=d+1|0;yb(d,f[k+(c*1080|0)+28+(b<<3)>>2]<<3,1);b=b+1|0}while((b|0)!=(h|0))}}else l=7}else{h=1;b=1;l=7}while(0);if((l|0)==7){a=h<<1|1;if((f[e>>2]|0)>>>0>>0){Mb(g,1,15741,j)|0;e=0;u=m;return e|0}yb(d,(f[k+(c*1080|0)+804>>2]<<5)+b|0,1);if(h){d=d+1|0;b=0;while(1){yb(d,(f[k+(c*1080|0)+28+(b<<3)>>2]<<11)+(f[k+(c*1080|0)+28+(b<<3)+4>>2]|0)|0,2);b=b+1|0;if((b|0)==(h|0))break;else d=d+2|0}}}f[e>>2]=(f[e>>2]|0)-a;e=1;u=m;return e|0}function Ae(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var g=0,h=0,i=0;i=u;u=u+16|0;g=f[a+(b*5640|0)+5584>>2]|0;if((f[d>>2]|0)>>>0<5){Mb(e,1,15813,i)|0;d=0;u=i;return d|0}h=g+4|0;yb(c,(f[h>>2]|0)+-1|0,1);yb(c+1|0,(f[g+8>>2]|0)+-2|0,1);yb(c+2|0,(f[g+12>>2]|0)+-2|0,1);yb(c+3|0,f[g+16>>2]|0,1);yb(c+4|0,f[g+20>>2]|0,1);a=(f[d>>2]|0)+-5|0;f[d>>2]=a;if(!(f[g>>2]&1)){d=1;u=i;return d|0}b=f[h>>2]|0;if(a>>>0>>0){Mb(e,1,15813,i+8|0)|0;d=0;u=i;return d|0}if(!b)b=0;else{a=c+5|0;c=0;while(1){yb(a,(f[g+944+(c<<2)>>2]<<4)+(f[g+812+(c<<2)>>2]|0)|0,1);c=c+1|0;b=f[h>>2]|0;if(c>>>0>=b>>>0)break;else a=a+1|0}a=f[d>>2]|0}f[d>>2]=a-b;d=1;u=i;return d|0}function Be(a,b,c,d,e,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;o=u;u=u+48|0;m=o+40|0;n=o+32|0;l=o+24|0;j=o+16|0;h=o+8|0;i=a+200|0;if((f[i>>2]|0)!=(b|0)){Mb(g,1,15150,o)|0;f[j>>2]=b;Mb(g,1,16086,j)|0;u=o;return 0}k=X(f[a+116>>2]|0,f[a+112>>2]|0)|0;f[h>>2]=b+1;f[h+4>>2]=k;Mb(g,4,15187,h)|0;f[a+12>>2]=0;k=a+204|0;h=f[k>>2]|0;f[h+12>>2]=f[(f[a+164>>2]|0)+(b*5640|0)+5588>>2];f[a+8>>2]=0;if(!(Uf(h,f[i>>2]|0,g)|0)){f[j>>2]=b;Mb(g,1,16086,j)|0;u=o;return 0}h=f[k>>2]|0;a:do if(f[(f[h+24>>2]|0)+16>>2]|0){i=0;while(1){if(!(Tf((f[(f[f[h+20>>2]>>2]|0)+20>>2]|0)+(i*52|0)|0)|0))break;i=i+1|0;h=f[k>>2]|0;if(i>>>0>=(f[(f[h+24>>2]|0)+16>>2]|0)>>>0)break a}Mb(g,1,15208,l)|0;n=0;u=o;return n|0}while(0);if(!(ag(h,c,d)|0)){Mb(g,1,15285,n)|0;n=0;u=o;return n|0}if(Xd(a,e,g)|0){n=1;u=o;return n|0}f[m>>2]=b;Mb(g,1,16143,m)|0;n=0;u=o;return n|0}function Ce(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,g=0,h=0,i=0;i=u;u=u+16|0;if(!c){c=0;u=i;return c|0}if(!(Qd(f[a>>2]|0,b,c,d)|0)){Mb(d,1,16201,i)|0;c=0;u=i;return c|0}if(f[a+128>>2]|0){c=1;u=i;return c|0}h=a+108|0;if(!(De(c,h,d)|0)){c=0;u=i;return c|0}b=f[a+48>>2]|0;switch(b|0){case 16:{f[c+20>>2]=1;break}case 17:{f[c+20>>2]=2;break}case 18:{f[c+20>>2]=3;break}case 24:{f[c+20>>2]=4;break}default:f[c+20>>2]=(b|0)==12?5:-1}g=a+120|0;b=f[g>>2]|0;do if(b|0){if(f[b+12>>2]|0){Ee(c,h);break}Mc(f[b+4>>2]|0);Mc(f[(f[g>>2]|0)+8>>2]|0);Mc(f[f[g>>2]>>2]|0);b=f[g>>2]|0;e=f[b+12>>2]|0;if(e){Mc(e);b=f[g>>2]|0}Mc(b);f[g>>2]=0}while(0);if(f[a+116>>2]|0)Fe(c,h,d);b=f[h>>2]|0;if(!b){c=1;u=i;return c|0}f[c+28>>2]=b;f[c+32>>2]=f[a+112>>2];f[h>>2]=0;c=1;u=i;return c|0}function De(a,c,e){a=a|0;c=c|0;e=e|0;var g=0,i=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0;B=u;u=u+80|0;A=B+72|0;z=B+64|0;y=B+56|0;x=B+48|0;w=B+40|0;v=B+32|0;t=B+24|0;q=B+16|0;n=B+8|0;m=B;g=f[c+8>>2]|0;a:do if(!g)g=f[c+12>>2]|0;else{p=f[g>>2]|0;o=d[g+4>>1]|0;i=f[a+16>>2]|0;g=f[c+12>>2]|0;if((g|0)!=0?(f[g+12>>2]|0)!=0:0)i=h[g+18>>0]|0;b:do if(!(o<<16>>16)){if(!i)break a}else{l=0;c:while(1){c=l&65535;k=j[p+(c*6|0)>>1]|0;if(i>>>0<=k>>>0){l=14;break}c=d[p+(c*6|0)+4>>1]|0;switch(c<<16>>16){case 0:case -1:break;default:{c=(c&65535)+-1|0;if(c>>>0>=i>>>0){l=17;break c}}}l=l+1<<16>>16;if((l&65535)>=(o&65535)){l=8;break}}if((l|0)==8)while(1){i=i+-1|0;c=0;do{if((i|0)==(j[p+((c&65535)*6|0)>>1]|0))break;c=c+1<<16>>16}while((c&65535)<(o&65535));if(c<<16>>16==o<<16>>16)break b;if(!i)break a;else l=8}else if((l|0)==14){f[m>>2]=k;f[m+4>>2]=i;Mb(e,1,16331,m)|0;A=0;u=B;return A|0}else if((l|0)==17){f[n>>2]=c;f[n+4>>2]=i;Mb(e,1,16331,n)|0;A=0;u=B;return A|0}}while(0);Mb(e,1,16368,q)|0;A=0;u=B;return A|0}while(0);if(!g){A=1;u=B;return A|0}s=f[g+12>>2]|0;if(!s){A=1;u=B;return A|0}o=b[g+18>>0]|0;r=o&255;q=o<<24>>24==0;if(q)g=1;else{l=a+16|0;g=1;k=0;c=0;do{c=j[s+(c<<2)>>1]|0;i=f[l>>2]|0;if(i>>>0<=c>>>0){f[t>>2]=c;f[t+4>>2]=i;Mb(e,1,16331,t)|0;g=0}k=k+1<<16>>16;c=k&65535}while(c>>>0>>0)}p=Ic(r,4)|0;if(!p){Mb(e,1,16401,v)|0;A=0;u=B;return A|0}if(!q){m=0;n=0;do{i=b[s+(n<<2)+3>>0]|0;k=i&255;do if((i&255)<(o&255)){l=p+(k<<2)|0;c=b[s+(n<<2)+2>>0]|0;if((f[l>>2]|0)!=0&c<<24>>24==1){f[x>>2]=k;Mb(e,1,16474,x)|0;g=0;break}if(c<<24>>24!=0|i<<24>>24==0){f[l>>2]=1;break}else{f[y>>2]=n;f[y+4>>2]=k;Mb(e,1,16505,y)|0;g=0;break}}else{f[w>>2]=k;Mb(e,1,16418,w)|0;g=0}while(0);m=m+1<<16>>16;n=m&65535}while(n>>>0>>0);if(!q){i=0;c=0;do{if((f[p+(c<<2)>>2]|0)==0?(b[s+(c<<2)+2>>0]|0)!=0:0){f[z>>2]=c;Mb(e,1,16541,z)|0;g=0}i=i+1<<16>>16;c=i&65535}while(c>>>0>>0)}}if(!g){Mc(p);A=0;u=B;return A|0}d:do if(!((f[a+16>>2]|0)!=1|q)){c=0;g=0;while(1){c=c+1<<16>>16;if(!(f[p+(g<<2)>>2]|0))break;g=c&65535;if(g>>>0>=r>>>0)break d}f[A>>2]=g;Mb(e,2,16579,A)|0;g=0;c=0;do{b[s+(c<<2)+2>>0]=1;b[s+(c<<2)+3>>0]=g;g=g+1<<16>>16;c=g&65535}while(c>>>0>>0)}while(0);Mc(p);A=1;u=B;return A|0}function Ee(a,c){a=a|0;c=c|0;var e=0,g=0,i=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0;w=c+12|0;c=f[w>>2]|0;m=f[c+8>>2]|0;n=f[c+4>>2]|0;r=f[c>>2]|0;q=f[c+12>>2]|0;c=b[c+18>>0]|0;s=a+24|0;t=f[s>>2]|0;u=c&255;v=Hc(u*52|0)|0;if(!v)return;o=c<<24>>24==0;if(!o){k=0;l=0;do{c=d[q+(l<<2)>>1]|0;if(!(b[q+(l<<2)+2>>0]|0)){c=c&65535;e=v+(l*52|0)|0;g=t+(c*52|0)|0;i=e+52|0;do{f[e>>2]=f[g>>2];e=e+4|0;g=g+4|0}while((e|0)<(i|0))}else{c=c&65535;e=v+((h[q+(l<<2)+3>>0]|0)*52|0)|0;g=t+(c*52|0)|0;i=e+52|0;do{f[e>>2]=f[g>>2];e=e+4|0;g=g+4|0}while((e|0)<(i|0))}i=Hc(X(f[t+(c*52|0)+8>>2]<<2,f[t+(c*52|0)+12>>2]|0)|0)|0;f[v+(l*52|0)+44>>2]=i;if(!i){p=7;break}f[v+(l*52|0)+24>>2]=h[m+l>>0];f[v+(l*52|0)+32>>2]=h[n+l>>0];k=k+1<<16>>16;l=k&65535}while(l>>>0>>0);if((p|0)==7){Mc(v);return}m=j[(f[w>>2]|0)+16>>1]|0;n=m+-1|0;if(!o){i=0;c=0;do{k=f[t+((j[q+(c<<2)>>1]|0)*52|0)+44>>2]|0;g=h[q+(c<<2)+3>>0]|0;l=X(f[v+(g*52|0)+12>>2]|0,f[v+(g*52|0)+8>>2]|0)|0;if(!(b[q+(c<<2)+2>>0]|0)){e=f[v+(c*52|0)+44>>2]|0;if(l|0){c=0;do{f[e+(c<<2)>>2]=f[k+(c<<2)>>2];c=c+1|0}while((c|0)!=(l|0))}}else{e=f[v+(g*52|0)+44>>2]|0;if(l|0){c=0;do{p=f[k+(c<<2)>>2]|0;p=r+((X((p|0)<0?0:(p|0)<(m|0)?p:n,u)|0)+g<<2)|0;f[e+(c<<2)>>2]=f[p>>2];c=c+1|0}while((c|0)!=(l|0))}}i=i+1<<16>>16;c=i&65535}while(c>>>0>>0)}}g=a+16|0;i=f[g>>2]|0;if(i|0){e=0;c=0;do{c=f[t+(c*52|0)+44>>2]|0;if(c|0)Mc(c);e=e+1<<16>>16;c=e&65535}while(i>>>0>c>>>0)}Mc(t);f[s>>2]=v;f[g>>2]=u;Mc(f[(f[w>>2]|0)+4>>2]|0);Mc(f[(f[w>>2]|0)+8>>2]|0);Mc(f[f[w>>2]>>2]|0);c=f[w>>2]|0;e=f[c+12>>2]|0;if(e){Mc(e);c=f[w>>2]|0}Mc(c);f[w>>2]=0;return}function Fe(a,b,c){a=a|0;b=b|0;c=c|0;var e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0;B=u;u=u+80|0;y=B+8|0;x=B;w=B+16|0;A=b+8|0;e=f[A>>2]|0;b=f[e>>2]|0;v=d[e+4>>1]|0;if(v<<16>>16){t=a+16|0;m=a+24|0;s=v&65535;q=1;r=0;while(1){n=d[b+(r*6|0)>>1]|0;o=n&65535;a=f[t>>2]|0;a:do if(a>>>0>o>>>0){e=d[b+(r*6|0)+4>>1]|0;switch(e<<16>>16){case -1:case 0:{d[(f[m>>2]|0)+(o*52|0)+48>>1]=d[b+(r*6|0)+2>>1]|0;break a}default:{}}p=(e&65535)+65535&65535;l=e+-1<<16>>16;j=l&65535;if(a>>>0<=j>>>0){f[y>>2]=j;f[y+4>>2]=a;Mb(c,2,16290,y)|0;break}k=b+(r*6|0)+2|0;if(n<<16>>16!=l<<16>>16?(d[k>>1]|0)==0:0){e=f[m>>2]|0;a=e+(o*52|0)|0;g=w;h=a;i=g+52|0;do{f[g>>2]=f[h>>2];g=g+4|0;h=h+4|0}while((g|0)<(i|0));g=a;h=e+(j*52|0)|0;i=g+52|0;do{f[g>>2]=f[h>>2];g=g+4|0;h=h+4|0}while((g|0)<(i|0));g=(f[m>>2]|0)+(j*52|0)|0;h=w;i=g+52|0;do{f[g>>2]=f[h>>2];g=g+4|0;h=h+4|0}while((g|0)<(i|0));if((v&65535)>(r+1&65535)){g=q;do{a=b+(g*6|0)|0;e=d[a>>1]|0;if(e<<16>>16!=n<<16>>16){if(e<<16>>16==l<<16>>16){e=n;z=14}}else{e=p;z=14}if((z|0)==14){z=0;d[a>>1]=e}g=g+1|0}while(v<<16>>16!=(g&65535)<<16>>16)}}d[(f[m>>2]|0)+(o*52|0)+48>>1]=d[k>>1]|0}else{f[x>>2]=o;f[x+4>>2]=a;Mb(c,2,16250,x)|0}while(0);r=r+1|0;if((r|0)==(s|0))break;else q=q+1|0}b=f[A>>2]|0;e=b;b=f[b>>2]|0}if(!b){z=e;Mc(z);f[A>>2]=0;u=B;return}else{Mc(b);z=f[A>>2]|0;Mc(z);f[A>>2]=0;u=B;return}}function Ge(a,c){a=a|0;c=c|0;Oc(f[a>>2]|0,c);b[a+124>>0]=0;f[a+128>>2]=f[c+8248>>2]&1;return}function He(a,c,e,g){a=a|0;c=c|0;e=e|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0,w=0,x=0;x=u;u=u+80|0;v=x+64|0;s=x+56|0;o=x+48|0;r=x+40|0;q=x+32|0;p=x+24|0;if(!((a|0)!=0&(c|0)!=0&(e|0)!=0)){c=0;u=x;return c|0}t=e+16|0;if(((f[t>>2]|0)+-1|0)>>>0>16383){Mb(g,1,16630,x)|0;c=0;u=x;return c|0}if(!(Tc(f[a>>2]|0,c,e,g)|0)){c=0;u=x;return c|0}f[a+56>>2]=1785737760;f[a+60>>2]=0;f[a+64>>2]=1;h=Hc(4)|0;f[a+68>>2]=h;if(!h){Mb(g,1,16699,x+8|0)|0;c=0;u=x;return c|0}f[h>>2]=1785737760;m=f[t>>2]|0;f[a+20>>2]=m;m=Hc(m*12|0)|0;f[a+72>>2]=m;if(!m){Mb(g,1,16699,x+16|0)|0;c=0;u=x;return c|0}f[a+16>>2]=(f[e+12>>2]|0)-(f[e+4>>2]|0);f[a+12>>2]=(f[e+8>>2]|0)-(f[e>>2]|0);w=e+24|0;n=f[w>>2]|0;i=f[n+24>>2]|0;j=f[n+32>>2]|0;k=a+24|0;f[k>>2]=i+-1+(j<<7);l=f[t>>2]|0;if(l>>>0>1){h=1;do{if((i|0)!=(f[n+(h*52|0)+24>>2]|0))f[k>>2]=255;h=h+1|0}while(h>>>0>>0)}f[a+28>>2]=7;f[a+32>>2]=0;f[a+36>>2]=0;if(l|0?(f[m+8>>2]=i+-1+(j<<7),(l|0)!=1):0){h=1;do{f[m+(h*12|0)+8>>2]=(f[n+(h*52|0)+24>>2]|0)+-1+(f[n+(h*52|0)+32>>2]<<7);h=h+1|0}while(h>>>0>>0)}h=e+32|0;i=f[h>>2]|0;j=a+40|0;a:do if(!i){f[j>>2]=1;switch(f[e+20>>2]|0){case 1:{f[a+48>>2]=16;break a}case 2:{f[a+48>>2]=17;break a}case 3:{f[a+48>>2]=18;break a}default:break a}}else{f[j>>2]=2;f[a+48>>2]=0;f[a+112>>2]=i;l=Ic(1,i)|0;f[a+108>>2]=l;hj(l|0,f[e+28>>2]|0,f[h>>2]|0)|0;b[a+124>>0]=1;l=f[t>>2]|0}while(0);b:do if(l|0){j=f[w>>2]|0;k=0;h=0;i=0;do{e=(d[j+(i*52|0)+48>>1]|0)==0;h=h+((e^1)&1)|0;k=e?k:i;i=i+1|0}while(i>>>0>>0);switch(h|0){case 0:break b;case 1:break;default:{Mb(g,2,16995,o)|0;break b}}switch(f[a+48>>2]|0){case 18:case 16:{h=3;break}case 17:{h=1;break}default:{Mb(g,2,16745,p)|0;break b}}if(l>>>0<=h>>>0){Mb(g,2,16819,q)|0;break}if(k>>>0>>0){Mb(g,2,16912,r)|0;break}r=Hc(8)|0;i=a+116|0;f[i>>2]=r;if(!r){Mb(g,1,17060,s)|0;c=0;u=x;return c|0}k=Hc((f[t>>2]|0)*6|0)|0;i=f[i>>2]|0;f[i>>2]=k;if(!k){Mb(g,1,17060,v)|0;c=0;u=x;return c|0}j=f[t>>2]|0;d[i+4>>1]=j;i=0;do{d[k+(i*6|0)>>1]=i;d[k+(i*6|0)+2>>1]=0;v=i;i=i+1|0;d[k+(v*6|0)+4>>1]=i}while((i|0)!=(h|0));if(h>>>0>>0){i=f[w>>2]|0;do{w=(d[i+(h*52|0)+48>>1]|0)==0;d[k+(h*6|0)>>1]=h;d[k+(h*6|0)+2>>1]=w?-1:1;d[k+(h*6|0)+4>>1]=w<<31>>31;h=h+1|0}while(h>>>0>>0)}}while(0);f[a+52>>2]=0;f[a+44>>2]=0;f[a+96>>2]=f[c+18692>>2];c=1;u=x;return c|0}function Ie(a,b,c){a=a|0;b=b|0;c=c|0;return Wd(f[a>>2]|0,b,c)|0}function Je(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,g=0,h=0,i=0;d=a+8|0;if(!(kg(f[d>>2]|0,53,c)|0)){c=0;return c|0}h=f[d>>2]|0;i=lg(h)|0;d=mg(h)|0;if(i){e=1;g=0;while(1){if(!e)e=0;else e=(Ma[f[d>>2]&63](a,b,c)|0)!=0;g=g+1|0;if((g|0)==(i|0))break;else{d=d+4|0;e=e&1}}ng(h);if(!e){c=0;return c|0}}else ng(h);c=Zc(f[a>>2]|0,b,c)|0;return c|0}function Ke(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,J=0;J=u;u=u+192|0;D=J+152|0;C=J+144|0;B=J+136|0;A=J+128|0;z=J+120|0;x=J+88|0;w=J+80|0;v=J+64|0;t=J+48|0;F=J+40|0;E=J+32|0;H=J+24|0;y=J+16|0;s=J+8|0;n=J+176|0;o=J+168|0;p=J+156|0;d=Ic(1,1024)|0;if(!d){Mb(c,1,17104,J)|0;H=0;u=J;return H|0}q=n+4|0;r=p+4|0;G=a+100|0;l=d;k=1024;a:while(1){if((Eb(b,n,8,c)|0)!=8)break;b:while(1){zb(n,p,4);zb(q,r,4);switch(f[p>>2]|0){case 0:{d=Ib(b)|0;m=I;if((m|0)>0|(m|0)==0&d>>>0>4294967287){m=6;break a}f[p>>2]=d+8;h=8;break}case 1:{if((Eb(b,n,8,c)|0)!=8){m=12;break a}zb(n,o,4);if(f[o>>2]|0){m=10;break a}zb(q,p,4);h=16;break}default:h=8}g=f[r>>2]|0;if((g|0)==1785737827){m=14;break a}i=f[p>>2]|0;if(!i){m=18;break a}if(i>>>0>>0){m=20;break a}c:do if((g|0)<1718909296)if((g|0)<1668112752)if((g|0)<1667523942){switch(g|0){case 1651532643:break;default:{m=43;break c}}e=1124;m=30;break}else{switch(g|0){case 1667523942:break;default:{m=43;break c}}e=1148;m=30;break}else if((g|0)<1668246642){switch(g|0){case 1668112752:break;default:{m=43;break c}}e=1140;m=30;break}else{switch(g|0){case 1668246642:break;default:{m=43;break c}}e=1116;m=30;break}else{if((g|0)<1783636e3)if((g|0)<1768449138)switch(g|0){case 1718909296:{m=27;break b}default:{m=43;break c}}else switch(g|0){case 1768449138:{e=1108;m=30;break c}default:{m=43;break c}}if((g|0)<1785737832)switch(g|0){case 1783636e3:{d=1084;m=29;break b}default:{m=43;break c}}if((g|0)<1885564018)switch(g|0){case 1785737832:{m=28;break b}default:{m=43;break c}}switch(g|0){case 1885564018:break;default:{m=43;break c}}e=1132;m=30}while(0);if((m|0)==30){m=0;d=i-h|0;f[t>>2]=g>>>24;f[t+4>>2]=g>>>16&255;f[t+8>>2]=g>>>8&255;f[t+12>>2]=g&255;Mb(c,2,17288,t)|0;if(f[G>>2]&4|0){j=e;g=d;break}j=f[r>>2]|0;f[v>>2]=j>>>24;f[v+4>>2]=j>>>16&255;f[v+8>>2]=j>>>8&255;f[v+12>>2]=j&255;Mb(c,2,17339,v)|0;f[G>>2]=f[G>>2]|2147483647;j=Jb(b,d,0,c)|0;if(!((j|0)==(d|0)&(I|0)==0)){m=32;break a}}else if((m|0)==43){m=0;d=i-h|0;e=f[G>>2]|0;if(!(e&1)){m=44;break a}if(!(e&2)){m=46;break a}f[G>>2]=e|2147483647;j=Jb(b,d,0,c)|0;if(!((j|0)==(d|0)&(I|0)==0)){m=49;break a}}if((Eb(b,n,8,c)|0)!=8)break a}if((m|0)==27){d=1092;m=29}else if((m|0)==28){d=1100;m=29}if((m|0)==29){m=0;j=d;g=i-h|0}i=Ib(b)|0;h=I;if((h|0)<0|(h|0)==0&i>>>0>>0){m=34;break}if(g>>>0>k>>>0){d=Lc(l,g)|0;if(!d){m=37;break}else e=g}else{d=l;e=k}if((Eb(b,d,g,c)|0)!=(g|0)){m=39;break}if(!(Na[f[j+4>>2]&63](a,d,g,c)|0)){m=42;break}else{l=d;k=e}}switch(m|0){case 6:{Mb(c,1,17154,s)|0;break}case 10:{Mb(c,1,17154,y)|0;break}case 12:break;case 14:{d=f[G>>2]|0;if(!(d&4)){Mb(c,1,17196,H)|0;Mc(l);H=0;u=J;return H|0}else{f[G>>2]=d|8;Mc(l);H=1;u=J;return H|0}}case 18:{Mb(c,1,17224,E)|0;Mc(l);H=0;u=J;return H|0}case 20:{f[F>>2]=i;f[F+4>>2]=g;Mb(c,1,17262,F)|0;Mc(l);H=0;u=J;return H|0}case 32:{Mb(c,1,17405,w)|0;Mc(l);H=0;u=J;return H|0}case 34:{F=f[p>>2]|0;G=f[r>>2]|0;H=Ib(b)|0;f[x>>2]=F;f[x+4>>2]=G>>>24;f[x+8>>2]=G>>>16&255;f[x+12>>2]=G>>>8&255;f[x+16>>2]=G&255;f[x+20>>2]=g;f[x+24>>2]=H;Mb(c,1,17455,x)|0;Mc(l);H=0;u=J;return H|0}case 37:{Mc(l);Mb(c,1,17531,z)|0;H=0;u=J;return H|0}case 39:{Mb(c,1,17573,A)|0;Mc(d);H=0;u=J;return H|0}case 42:{Mc(d);H=0;u=J;return H|0}case 44:{Mb(c,1,17622,B)|0;Mc(l);H=0;u=J;return H|0}case 46:{Mb(c,1,17692,C)|0;Mc(l);H=0;u=J;return H|0}case 49:{Mb(c,1,17405,D)|0;Mc(l);H=0;u=J;return H|0}}Mc(l);H=1;u=J;return H|0}function Le(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,g=0,h=0;h=u;u=u+48|0;g=h+32|0;e=a+72|0;if(f[e>>2]|0){Mb(d,2,18543,h)|0;g=1;u=h;return g|0}if((c|0)!=14){Mb(d,1,18591,h+8|0)|0;g=0;u=h;return g|0}zb(b,a+16|0,4);zb(b+4|0,a+12|0,4);c=a+20|0;zb(b+8|0,c,2);c=f[c>>2]|0;if((c+-1|0)>>>0>16383){Mb(d,1,18624,h+16|0)|0;g=0;u=h;return g|0}c=Ic(c,12)|0;f[e>>2]=c;if(!c){Mb(d,1,18661,h+24|0)|0;g=0;u=h;return g|0}zb(b+10|0,a+24|0,1);c=a+28|0;zb(b+11|0,c,1);c=f[c>>2]|0;if((c|0)!=7){f[g>>2]=c;Mb(d,4,18710,g)|0}zb(b+12|0,a+32|0,1);zb(b+13|0,a+36|0,1);g=1;u=h;return g|0}function Me(a,c,d,e){a=a|0;c=c|0;d=d|0;e=e|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0,w=0,x=0,y=0;y=u;u=u+96|0;i=y+48|0;o=y+40|0;l=y+32|0;k=y+24|0;j=y+16|0;m=y+80|0;n=y+76|0;r=y+72|0;p=y+68|0;s=y+64|0;q=y+60|0;t=y+56|0;v=y+52|0;if(d>>>0<3){Mb(e,1,18186,y)|0;x=0;u=y;return x|0}w=a+108|0;x=a+124|0;if(b[x>>0]|0){Mb(e,4,18218,y+8|0)|0;x=1;u=y;return x|0}h=a+40|0;zb(c,h,1);zb(c+1|0,a+52|0,1);zb(c+2|0,a+44|0,1);g=c+3|0;h=f[h>>2]|0;switch(h|0){case 1:{if(d>>>0<7){f[j>>2]=d;Mb(e,1,18327,j)|0;x=0;u=y;return x|0}h=a+48|0;if((d|0)!=7?(f[h>>2]|0)!=14:0){f[k>>2]=d;Mb(e,2,18327,k)|0}zb(g,h,4);i=c+7|0;if((f[h>>2]|0)==14){m=Hc(36)|0;if(!m){Mb(e,1,18363,l)|0;x=0;u=y;return x|0}f[m>>2]=14;f[t>>2]=0;f[s>>2]=0;f[r>>2]=0;f[q>>2]=0;f[p>>2]=0;f[n>>2]=0;f[v>>2]=4470064;g=m+4|0;f[g>>2]=1145390592;switch(d|0){case 35:{zb(i,n,4);zb(c+11|0,r,4);zb(c+15|0,p,4);zb(c+19|0,s,4);zb(c+23|0,q,4);zb(c+27|0,t,4);zb(c+31|0,v,4);f[g>>2]=0;c=f[n>>2]|0;l=f[p>>2]|0;k=f[q>>2]|0;j=f[r>>2]|0;i=f[s>>2]|0;h=f[t>>2]|0;g=f[v>>2]|0;break}case 7:{c=0;l=0;k=0;j=0;i=0;h=0;g=4470064;break}default:{f[o>>2]=d;Mb(e,2,18393,o)|0;c=0;l=0;k=0;j=0;i=0;h=0;g=4470064}}f[m+8>>2]=c;f[m+16>>2]=l;f[m+24>>2]=k;f[m+12>>2]=j;f[m+20>>2]=i;f[m+28>>2]=h;f[m+32>>2]=g;f[w>>2]=m;f[a+112>>2]=0}b[x>>0]=1;x=1;u=y;return x|0}case 2:{i=d+-3|0;h=a+112|0;f[h>>2]=i;a=Ic(1,i)|0;f[w>>2]=a;if(!a){f[h>>2]=0;x=0;u=y;return x|0}if((d|0)>3){h=0;while(1){zb(g,m,1);b[(f[w>>2]|0)+h>>0]=f[m>>2];h=h+1|0;if((h|0)==(i|0))break;else g=g+1|0}}b[x>>0]=1;x=1;u=y;return x|0}default:{if(h>>>0<=2){x=1;u=y;return x|0}f[i>>2]=h;Mb(e,4,18437,i)|0;x=1;u=y;return x|0}}return 0}function Ne(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,g=0,h=0,i=0;i=u;u=u+16|0;g=i;e=f[a+24>>2]|0;if((e|0)!=255){f[g>>2]=e;Mb(d,2,18040,g)|0}h=a+20|0;if((f[h>>2]|0)!=(c|0)){Mb(d,1,18154,i+8|0)|0;h=0;u=i;return h|0}if(!c){h=1;u=i;return h|0}g=a+72|0;e=0;while(1){zb(b,(f[g>>2]|0)+(e*12|0)+8|0,1);e=e+1|0;if(e>>>0>=(f[h>>2]|0)>>>0){b=1;break}else b=b+1|0}u=i;return b|0}function Oe(a,c,e,g){a=a|0;c=c|0;e=e|0;g=g|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;r=u;u=u+16|0;i=r;q=r+12|0;j=a+120|0;if(e>>>0<3|(f[j>>2]|0)!=0){q=0;u=r;return q|0}zb(c,q,2);k=f[q>>2]|0;p=k&65535;if((p+-1|0)>>>0>1023){f[i>>2]=p;Mb(g,1,17957,i)|0;q=0;u=r;return q|0}zb(c+2|0,q,1);o=f[q>>2]&65535;if(!o){Mb(g,1,17995,r+8|0)|0;q=0;u=r;return q|0}if((o+3|0)>>>0>e>>>0){q=0;u=r;return q|0}m=Hc(X(p<<2,o)|0)|0;if(!m){q=0;u=r;return q|0}n=Hc(o)|0;if(!n){Mc(m);q=0;u=r;return q|0}l=Hc(o)|0;if(!l){Mc(m);Mc(n);q=0;u=r;return q|0}a=Hc(20)|0;if(!a){Mc(m);Mc(n);Mc(l);q=0;u=r;return q|0}f[a+4>>2]=l;f[a+8>>2]=n;f[a>>2]=m;d[a+16>>1]=k;b[a+18>>0]=f[q>>2];f[a+12>>2]=0;f[j>>2]=a;a=0;g=c+3|0;i=0;do{zb(g,q,1);g=g+1|0;b[n+i>>0]=(f[q>>2]&127)+1;b[l+i>>0]=(f[q>>2]|0)>>>7&1;a=a+1<<16>>16;i=a&65535}while(o>>>0>i>>>0);if(!p){q=1;u=r;return q|0}l=c;k=0;i=m;a=g;a:while(1){j=0;g=a;a=0;do{a=((h[n+a>>0]|0)+7|0)>>>3;a=a>>>0<4?a:4;if((g-l+a|0)>(e|0)){a=0;i=22;break a}zb(g,q,a);g=g+a|0;f[i>>2]=f[q>>2];i=i+4|0;j=j+1<<16>>16;a=j&65535}while(o>>>0>a>>>0);k=k+1<<16>>16;if(p>>>0<=(k&65535)>>>0){a=1;i=22;break}else a=g}if((i|0)==22){u=r;return a|0}return 0}function Pe(a,c,e,g){a=a|0;c=c|0;e=e|0;g=g|0;var h=0,i=0,j=0,k=0,l=0;l=u;u=u+32|0;k=l+20|0;j=a+120|0;a=f[j>>2]|0;if(!a){Mb(g,1,17847,l)|0;k=0;u=l;return k|0}if(f[a+12>>2]|0){Mb(g,1,17893,l+8|0)|0;k=0;u=l;return k|0}h=b[a+18>>0]|0;i=h&255;a=i<<2;if(a>>>0>e>>>0){Mb(g,1,17924,l+16|0)|0;k=0;u=l;return k|0}e=Hc(a)|0;if(!e){k=0;u=l;return k|0}if(h<<24>>24){a=c;h=0;while(1){zb(a,k,2);d[e+(h<<2)>>1]=f[k>>2];zb(a+2|0,k,1);b[e+(h<<2)+2>>0]=f[k>>2];zb(a+3|0,k,1);b[e+(h<<2)+3>>0]=f[k>>2];h=h+1|0;if((h|0)==(i|0))break;else a=a+4|0}}f[(f[j>>2]|0)+12>>2]=e;k=1;u=l;return k|0}function Qe(a,b,c,e){a=a|0;b=b|0;c=c|0;e=e|0;var g=0,h=0,i=0,k=0;k=u;u=u+32|0;i=k+20|0;h=a+116|0;if(f[h>>2]|0){i=0;u=k;return i|0}if(c>>>0<2){Mb(e,1,17753,k)|0;i=0;u=k;return i|0}zb(b,i,2);g=f[i>>2]|0;a=g&65535;if(!a){Mb(e,1,17786,k+8|0)|0;i=0;u=k;return i|0}if(((a*6|0)+2|0)>>>0>c>>>0){Mb(e,1,17753,k+16|0)|0;i=0;u=k;return i|0}g=Hc(g*6|0)|0;if(!g){i=0;u=k;return i|0}a=Hc(8)|0;f[h>>2]=a;if(!a){Mc(g);i=0;u=k;return i|0}f[a>>2]=g;e=f[i>>2]&65535;d[a+4>>1]=e;if(!(e<<16>>16)){i=1;u=k;return i|0}else a=0;do{e=a&65535;zb(b+2|0,i,2);d[g+(e*6|0)>>1]=f[i>>2];zb(b+4|0,i,2);b=b+6|0;d[g+(e*6|0)+2>>1]=f[i>>2];zb(b,i,2);d[g+(e*6|0)+4>>1]=f[i>>2];a=a+1<<16>>16}while((a&65535)<(j[(f[h>>2]|0)+4>>1]|0));b=1;u=k;return b|0}function Re(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,g=0;g=u;u=u+32|0;e=g+20|0;a=a+100|0;if(f[a>>2]|0){Mb(d,1,19251,g)|0;e=0;u=g;return e|0}if((c|0)!=4){Mb(d,1,19305,g+8|0)|0;e=0;u=g;return e|0}zb(b,e,4);if((f[e>>2]|0)==218793738){f[a>>2]=f[a>>2]|1;e=1;u=g;return e|0}else{Mb(d,1,19339,g+16|0)|0;e=0;u=g;return e|0}return 0}function Se(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,g=0,h=0,i=0;i=u;u=u+32|0;g=i+24|0;h=a+100|0;if((f[h>>2]|0)!=1){Mb(d,1,19132,i)|0;h=0;u=i;return h|0}if(c>>>0<8){Mb(d,1,19182,i+8|0)|0;h=0;u=i;return h|0}zb(b,a+56|0,4);zb(b+4|0,a+60|0,4);b=b+8|0;c=c+-8|0;if(c&3|0){Mb(d,1,19182,i+16|0)|0;h=0;u=i;return h|0}c=c>>>2;e=a+64|0;f[e>>2]=c;if(c|0){c=Ic(c,4)|0;f[a+68>>2]=c;if(!c){Mb(d,1,19218,g)|0;h=0;u=i;return h|0}if(f[e>>2]|0){a=a+68|0;c=0;while(1){zb(b,(f[a>>2]|0)+(c<<2)|0,4);c=c+1|0;if(c>>>0>=(f[e>>2]|0)>>>0)break;else b=b+4|0}}}f[h>>2]=f[h>>2]|2;h=1;u=i;return h|0}function Te(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0,w=0,x=0,y=0,z=0;z=u;u=u+96|0;t=z+72|0;s=z+64|0;r=z+56|0;q=z+48|0;y=z+40|0;x=z+32|0;w=z+24|0;v=z+16|0;p=z+8|0;m=z+80|0;n=z+76|0;o=a+100|0;if(!(f[o>>2]&2)){Mb(d,1,18800,z)|0;y=0;u=z;return y|0}l=a+104|0;f[l>>2]=0;do if(c|0){i=0;a:while(1){if(c>>>0<8){h=6;break}zb(b,m,4);e=f[m>>2]|0;zb(b+4|0,m,4);k=f[m>>2]|0;switch(e|0){case 0:{h=15;break a}case 1:{if(c>>>0<16){h=9;break a}zb(b+8|0,n,4);if(f[n>>2]|0){h=11;break a}zb(b+12|0,m,4);e=f[m>>2]|0;if(!e){h=13;break a}j=16;break}default:j=8}if(e>>>0>>0){h=17;break}if(c>>>0>>0){h=20;break}b:do if((k|0)<1668246642){if((k|0)<1667523942){switch(k|0){case 1651532643:break;default:{h=28;break b}}g=1124;h=27;break}if((k|0)<1668112752){switch(k|0){case 1667523942:break;default:{h=28;break b}}g=1148;h=27;break}else{switch(k|0){case 1668112752:break;default:{h=28;break b}}g=1140;h=27;break}}else{if((k|0)<1768449138){switch(k|0){case 1668246642:break;default:{h=28;break b}}g=1116;h=27;break}if((k|0)<1885564018)switch(k|0){case 1768449138:{g=1108;h=27;break b}default:{h=28;break b}}switch(k|0){case 1885564018:break;default:{h=28;break b}}g=1132;h=27}while(0);if((h|0)==27){if(!(Na[f[g+4>>2]&63](a,b+j|0,e-j|0,d)|0)){b=0;h=33;break}}else if((h|0)==28)f[l>>2]=f[l>>2]|2147483647;i=(k|0)==1768449138?1:i;c=c-e|0;if(!c){h=30;break}else b=b+e|0}if((h|0)==6)Mb(d,1,18845,p)|0;else if((h|0)==9)Mb(d,1,18885,v)|0;else if((h|0)==11)Mb(d,1,17154,w)|0;else if((h|0)==13)Mb(d,1,17224,x)|0;else if((h|0)==15)Mb(d,1,17224,y)|0;else if((h|0)==17)Mb(d,1,18929,q)|0;else if((h|0)==20){Mb(d,1,19001,s)|0;y=0;u=z;return y|0}else if((h|0)==30){if(!i)break;f[o>>2]=f[o>>2]|4;y=1;u=z;return y|0}else if((h|0)==33){u=z;return b|0}Mb(d,1,18958,r)|0;y=0;u=z;return y|0}while(0);Mb(d,1,19073,t)|0;y=0;u=z;return y|0}function Ue(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,g=0,h=0,i=0;d=a+8|0;if(!(kg(f[d>>2]|0,54,c)|0)){i=0;return i|0}if(!(_d(f[a>>2]|0,b,c)|0)){i=0;return i|0}i=f[d>>2]|0;h=lg(i)|0;d=mg(i)|0;if(!h)d=1;else{e=d;d=1;g=0;while(1){if(!d)d=0;else d=(Ma[f[e>>2]&63](a,b,c)|0)!=0;d=d&1;g=g+1|0;if((g|0)==(h|0))break;else e=e+4|0}}ng(i);i=d;return i|0}function Ve(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,g=0,h=0,i=0;h=u;u=u+32|0;d=h+24|0;e=Hb(b)|0;g=I;a=a+80|0;i=a;i=_i(e|0,g|0,f[i>>2]|0,f[i+4>>2]|0)|0;yb(d,i,4);yb(d+4|0,1785737827,4);if(!(Kb(b,f[a>>2]|0,f[a+4>>2]|0,c)|0)){Mb(c,1,19383,h)|0;i=0;u=h;return i|0}if((Fb(b,d,8,c)|0)!=8){Mb(c,1,19383,h+8|0)|0;i=0;u=h;return i|0}if(Kb(b,e,g,c)|0){i=1;u=h;return i|0}Mb(c,1,19383,h+16|0)|0;i=0;u=h;return i|0}function We(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,g=0,h=0,i=0,j=0;e=a+4|0;if(!(kg(f[e>>2]|0,55,d)|0)){d=0;return d|0}i=f[e>>2]|0;j=lg(i)|0;e=mg(i)|0;if(j){g=1;h=0;while(1){if(!g)g=0;else g=(Ma[f[e>>2]&63](a,b,d)|0)!=0;h=h+1|0;if((h|0)==(j|0))break;else{e=e+4|0;g=g&1}}ng(i);if(!g){d=0;return d|0}}else ng(i);e=a+8|0;if(!(kg(f[e>>2]|0,56,d)|0)){d=0;return d|0}if(!(kg(f[e>>2]|0,57,d)|0)){d=0;return d|0}if(!(kg(f[e>>2]|0,58,d)|0)){d=0;return d|0}if(f[a+96>>2]|0?(kg(f[e>>2]|0,59,d)|0)==0:0){d=0;return d|0}if(!(kg(f[e>>2]|0,60,d)|0)){d=0;return d|0}i=f[e>>2]|0;j=lg(i)|0;e=mg(i)|0;if(j){g=1;h=0;while(1){if(!g)g=0;else g=(Ma[f[e>>2]&63](a,b,d)|0)!=0;h=h+1|0;if((h|0)==(j|0))break;else{e=e+4|0;g=g&1}}ng(i);if(!g){d=0;return d|0}}else ng(i);d=ee(f[a>>2]|0,b,c,d)|0;return d|0}function Xe(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,g=0;c=(f[a>>2]|0?(f[a+104>>2]|f[a+100>>2]|0)==0:0)&(f[a+8>>2]|0)!=0&(f[a+4>>2]|0)!=0&(f[a+64>>2]|0)!=0&(f[a+16>>2]|0)!=0&(f[a+12>>2]|0)!=0&1;e=f[a+20>>2]|0;if(!e){g=c;a=a+40|0;a=f[a>>2]|0;a=a+-1|0;a=a>>>0<2;a=a&1;b=Lb(b)|0;b=b&g;b=b&a;return b|0}g=f[a+72>>2]|0;d=0;do{c=c&(f[g+(d*12|0)+8>>2]&126)>>>0<38;d=d+1|0}while(d>>>0>>0);a=a+40|0;a=f[a>>2]|0;a=a+-1|0;a=a>>>0<2;a=a&1;b=Lb(b)|0;b=b&c;b=b&a;return b|0}function Ye(a,b,c){a=a|0;b=b|0;c=c|0;var d=0;a=u;u=u+16|0;d=a;yb(d,12,4);yb(d+4|0,1783636e3,4);yb(d+8|0,218793738,4);c=(Fb(b,d,12,c)|0)==12&1;u=a;return c|0}function Ze(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,g=0,h=0,i=0,j=0,k=0;k=u;u=u+16|0;j=k+8|0;g=a+64|0;h=(f[g>>2]<<2)+16|0;i=Ic(1,h)|0;if(!i){Mb(c,1,19500,k)|0;j=0;u=k;return j|0}yb(i,h,4);yb(i+4|0,1718909296,4);yb(i+8|0,f[a+56>>2]|0,4);yb(i+12|0,f[a+60>>2]|0,4);e=i+16|0;if(f[g>>2]|0){d=a+68|0;a=0;do{yb(e,f[(f[d>>2]|0)+(a<<2)>>2]|0,4);a=a+1|0}while(a>>>0<(f[g>>2]|0)>>>0)}a=(Fb(b,i,h,c)|0)==(h|0);if(!a)Mb(c,1,19539,j)|0;Mc(i);j=a&1;u=k;return j|0}function _e(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;p=u;u=u+80|0;n=p+16|0;l=p+8|0;k=p;e=p+24|0;j=p+72|0;d=e;g=d+48|0;do{f[d>>2]=0;d=d+4|0}while((d|0)<(g|0));if((f[a+24>>2]|0)==255){f[e>>2]=1;d=3;g=2;h=1;i=4}else{d=2;g=1;h=0;i=1}f[e+(h*12|0)>>2]=i;f[e+(g*12|0)>>2]=2;if(!(f[a+116>>2]|0))o=d;else{f[e+(d*12|0)>>2]=3;o=d+1|0}yb(j+4|0,1785737832,4);d=8;g=0;h=e;while(1){i=h+8|0;q=La[f[h>>2]&7](a,i)|0;f[h+4>>2]=q;if(!q){m=7;break}d=(f[i>>2]|0)+d|0;g=g+1|0;if((g|0)>=(o|0))break;else h=h+12|0}if((m|0)==7){Mb(c,1,19414,k)|0;g=0;d=e;while(1){e=f[d+4>>2]|0;if(e|0)Mc(e);g=g+1|0;if((g|0)>=(o|0)){d=0;break}else d=d+12|0}u=p;return d|0}yb(j,d,4);a:do if((Fb(b,j,8,c)|0)==8){d=0;g=e;while(1){q=g+8|0;m=Fb(b,f[g+4>>2]|0,f[q>>2]|0,c)|0;if((m|0)!=(f[q>>2]|0))break;d=d+1|0;if((d|0)>=(o|0)){d=1;break a}else g=g+12|0}Mb(c,1,19457,n)|0;d=0}else{Mb(c,1,19457,l)|0;d=0}while(0);g=0;while(1){h=f[e+4>>2]|0;if(h|0)Mc(h);g=g+1|0;if((g|0)>=(o|0))break;else e=e+12|0}u=p;return d|0}function $e(a,b,c){a=a|0;b=b|0;c=c|0;var d=0;d=Hb(b)|0;a=a+88|0;f[a>>2]=d;f[a+4>>2]=I;c=Jb(b,24,0,c)|0;return (c|0)==24&(I|0)==0&1|0}function af(a,b,c){a=a|0;b=b|0;c=c|0;var d=0;d=Hb(b)|0;a=a+80|0;f[a>>2]=d;f[a+4>>2]=I;c=Jb(b,8,0,c)|0;return (c|0)==8&(I|0)==0&1|0}function bf(a,b){a=a|0;b=b|0;var c=0;c=Ic(1,22)|0;if(!c){c=0;return c|0}yb(c,22,4);yb(c+4|0,1768449138,4);yb(c+8|0,f[a+16>>2]|0,4);yb(c+12|0,f[a+12>>2]|0,4);yb(c+16|0,f[a+20>>2]|0,2);yb(c+18|0,f[a+24>>2]|0,1);yb(c+19|0,f[a+28>>2]|0,1);yb(c+20|0,f[a+32>>2]|0,1);yb(c+21|0,f[a+36>>2]|0,1);f[b>>2]=22;return c|0}function cf(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,g=0,h=0;e=a+20|0;g=(f[e>>2]|0)+8|0;h=Ic(1,g)|0;if(!h){h=0;return h|0}yb(h,g,4);yb(h+4|0,1651532643,4);if(f[e>>2]|0){d=a+72|0;a=0;c=h+8|0;while(1){yb(c,f[(f[d>>2]|0)+(a*12|0)+8>>2]|0,1);a=a+1|0;if(a>>>0>=(f[e>>2]|0)>>>0)break;else c=c+1|0}}f[b>>2]=g;return h|0}function df(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,g=0,i=0,j=0;c=a+40|0;switch(f[c>>2]|0){case 1:{i=15;break}case 2:{i=(f[a+112>>2]|0)+11|0;break}default:{j=0;return j|0}}j=Ic(1,i)|0;if(!j){j=0;return j|0}yb(j,i,4);yb(j+4|0,1668246642,4);yb(j+8|0,f[c>>2]|0,1);yb(j+9|0,f[a+52>>2]|0,1);yb(j+10|0,f[a+44>>2]|0,1);d=j+11|0;switch(f[c>>2]|0){case 1:{yb(d,f[a+48>>2]|0,4);break}case 2:{g=a+112|0;if(f[g>>2]|0){e=a+108|0;c=d;a=0;while(1){yb(c,h[(f[e>>2]|0)+a>>0]|0,1);a=a+1|0;if(a>>>0>=(f[g>>2]|0)>>>0)break;else c=c+1|0}}break}default:{}}f[b>>2]=i;return j|0}function ef(a,b){a=a|0;b=b|0;var c=0,e=0,g=0,h=0,i=0,k=0;h=a+116|0;i=((j[(f[h>>2]|0)+4>>1]|0)*6|0)+10|0;k=Hc(i)|0;if(!k){b=0;return b|0}yb(k,i,4);yb(k+4|0,1667523942,4);yb(k+8|0,j[(f[h>>2]|0)+4>>1]|0,2);a=f[h>>2]|0;if(d[a+4>>1]|0){e=k+10|0;g=0;c=0;while(1){yb(e,j[(f[a>>2]|0)+(c*6|0)>>1]|0,2);yb(e+2|0,j[(f[f[h>>2]>>2]|0)+(c*6|0)+2>>1]|0,2);yb(e+4|0,j[(f[f[h>>2]>>2]|0)+(c*6|0)+4>>1]|0,2);c=g+1<<16>>16;a=f[h>>2]|0;if((c&65535)>=(j[a+4>>1]|0))break;else{e=e+6|0;g=c;c=c&65535}}}f[b>>2]=i;b=k;return b|0}function ff(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,g=0,h=0,i=0,j=0,k=0;i=b+8|0;if(!(kg(f[i>>2]|0,53,d)|0)){d=0;return d|0}j=f[b+4>>2]|0;k=lg(j)|0;e=mg(j)|0;if(k){g=1;h=0;while(1){if(!g)g=0;else g=(Ma[f[e>>2]&63](b,a,d)|0)!=0;h=h+1|0;if((h|0)==(k|0))break;else{e=e+4|0;g=g&1}}ng(j);if(!g){d=0;return d|0}}else ng(j);i=f[i>>2]|0;j=lg(i)|0;e=mg(i)|0;if(j){g=1;h=0;while(1){if(!g)g=0;else g=(Ma[f[e>>2]&63](b,a,d)|0)!=0;h=h+1|0;if((h|0)==(j|0))break;else{e=e+4|0;g=g&1}}ng(i);if(!g){d=0;return d|0}}else ng(i);d=_c(a,f[b>>2]|0,c,d)|0;return d|0}function gf(a,b,c,d,e,g,h,i,j,k,l){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;l=l|0;return Gd(f[a>>2]|0,b,c,d,e,g,h,i,j,k,l)|0}function hf(a,b,c,d,e,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;g=g|0;return Be(f[a>>2]|0,b,c,d,e,g)|0}function jf(a,b,c,d,e,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;g=g|0;return Hd(f[a>>2]|0,b,c,d,e,g)|0}function kf(a){a=a|0;var b=0,c=0,d=0;if(!a)return;Qc(f[a>>2]|0);f[a>>2]=0;b=a+72|0;c=f[b>>2]|0;if(c|0){Mc(c);f[b>>2]=0}b=a+68|0;c=f[b>>2]|0;if(c|0){Mc(c);f[b>>2]=0}c=a+108|0;b=f[c>>2]|0;if(b|0){Mc(b);f[c>>2]=0}d=a+116|0;b=f[d>>2]|0;if(b|0){c=f[b>>2]|0;if(c){Mc(c);b=f[d>>2]|0;f[b>>2]=0}Mc(b);f[d>>2]=0}d=a+120|0;b=f[d>>2]|0;if(b|0){c=f[b+12>>2]|0;if(c){Mc(c);b=f[d>>2]|0;f[b+12>>2]=0}c=f[b+4>>2]|0;if(c){Mc(c);b=f[d>>2]|0;f[b+4>>2]=0}c=f[b+8>>2]|0;if(c){Mc(c);b=f[d>>2]|0;f[b+8>>2]=0}c=f[b>>2]|0;if(c){Mc(c);b=f[d>>2]|0;f[b>>2]=0}Mc(b);f[d>>2]=0}b=a+4|0;c=f[b>>2]|0;if(c|0){jg(c);f[b>>2]=0}b=a+8|0;c=f[b>>2]|0;if(c|0){jg(c);f[b>>2]=0}Mc(a);return}function lf(a,b,c,d,e,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;g=g|0;h=h|0;return Id(f[a>>2]|0,b,c,d,e,g,h)|0}function mf(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var g=0,h=0,i=0;i=u;u=u+16|0;if(!c){c=0;u=i;return c|0}Mb(d,2,19580,i)|0;if(!(Td(f[a>>2]|0,b,c,d,e)|0)){Mb(d,1,16201,i+8|0)|0;c=0;u=i;return c|0}h=a+108|0;if(!(De(c,h,d)|0)){c=0;u=i;return c|0}b=f[a+48>>2]|0;switch(b|0){case 16:{f[c+20>>2]=1;break}case 17:{f[c+20>>2]=2;break}case 18:{f[c+20>>2]=3;break}case 24:{f[c+20>>2]=4;break}default:f[c+20>>2]=(b|0)==12?5:-1}g=a+120|0;b=f[g>>2]|0;do if(b|0){if(f[b+12>>2]|0){Ee(c,h);break}Mc(f[b+4>>2]|0);Mc(f[(f[g>>2]|0)+8>>2]|0);Mc(f[f[g>>2]>>2]|0);b=f[g>>2]|0;e=f[b+12>>2]|0;if(e){Mc(e);b=f[g>>2]|0}Mc(b);f[g>>2]=0}while(0);if(f[a+116>>2]|0)Fe(c,h,d);b=f[h>>2]|0;if(!b){c=1;u=i;return c|0}f[c+28>>2]=b;f[c+32>>2]=f[a+112>>2];f[h>>2]=0;c=1;u=i;return c|0}function nf(a){a=a|0;var c=0;c=Ic(1,136)|0;if(!c)return c|0;if(!a)a=Pc()|0;else a=Jd()|0;f[c>>2]=a;if(!a){kf(c);c=0;return c|0}a=c+108|0;f[a>>2]=0;f[a+4>>2]=0;f[a+8>>2]=0;f[a+12>>2]=0;b[a+16>>0]=0;a=ig()|0;f[c+4>>2]=a;if(!a){kf(c);c=0;return c|0}a=ig()|0;f[c+8>>2]=a;if(a|0)return c|0;kf(c);c=0;return c|0}function of(a,b,c){a=a|0;b=b|0;c=c|0;Kd(f[a>>2]|0,b,c);return}function pf(a){a=a|0;return Pd(f[a>>2]|0)|0}function qf(a){a=a|0;return Od(f[a>>2]|0)|0}function rf(a,b,c){a=a|0;b=b|0;c=c|0;return Vd(f[a>>2]|0,b,c)|0}function sf(){return 8}function tf(){return 32}function uf(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,g=0,h=0,i=0,j=0,k=0,l=0;if(!d)return;else e=0;do{l=a+(e<<2)|0;i=f[l>>2]|0;j=b+(e<<2)|0;h=f[j>>2]|0;g=c+(e<<2)|0;k=f[g>>2]|0;f[l>>2]=(h<<1)+i+k>>2;f[j>>2]=k-h;f[g>>2]=i-h;e=e+1|0}while((e|0)!=(d|0));return}function vf(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,g=0,h=0,i=0,j=0,k=0,l=0;if(!d)return;else e=0;do{k=a+(e<<2)|0;j=b+(e<<2)|0;h=f[j>>2]|0;g=c+(e<<2)|0;l=f[g>>2]|0;i=(f[k>>2]|0)-(l+h>>2)|0;f[k>>2]=i+l;f[j>>2]=i;f[g>>2]=i+h;e=e+1|0}while((e|0)!=(d|0));return}function wf(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0;if(!d)return;else e=0;do{o=a+(e<<2)|0;u=f[o>>2]|0;k=b+(e<<2)|0;t=f[k>>2]|0;g=c+(e<<2)|0;s=f[g>>2]|0;j=((u|0)<0)<<31>>31;q=Yi(u|0,j|0,2449,0)|0;q=Zi(q|0,I|0,4096,0)|0;q=ej(q|0,I|0,13)|0;i=((t|0)<0)<<31>>31;r=Yi(t|0,i|0,4809,0)|0;r=Zi(r|0,I|0,4096,0)|0;r=ej(r|0,I|0,13)|0;h=((s|0)<0)<<31>>31;p=Yi(s|0,h|0,934,0)|0;p=Zi(p|0,I|0,4096,0)|0;p=ej(p|0,I|0,13)|0;l=Yi(u|0,j|0,1382,0)|0;l=Zi(l|0,I|0,4096,0)|0;l=ej(l|0,I|0,13)|0;m=Yi(t|0,i|0,2714,0)|0;m=Zi(m|0,I|0,4096,0)|0;m=ej(m|0,I|0,13)|0;n=fj(s|0,h|0,12)|0;n=Zi(n|0,I|0,4096,0)|0;n=ej(n|0,I|0,13)|0;j=fj(u|0,j|0,12)|0;j=Zi(j|0,I|0,4096,0)|0;j=ej(j|0,I|0,13)|0;i=Yi(t|0,i|0,3430,0)|0;i=Zi(i|0,I|0,4096,0)|0;i=ej(i|0,I|0,13)|0;h=Yi(s|0,h|0,666,0)|0;h=Zi(h|0,I|0,4096,0)|0;h=ej(h|0,I|0,13)|0;f[o>>2]=r+q+p;f[k>>2]=n-(m+l);f[g>>2]=j-i-h;e=e+1|0}while((e|0)!=(d|0));return}function xf(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0.0,h=0.0,i=0,j=0.0,k=0;if(!d)return;else e=0;do{k=a+(e<<2)|0;h=+n[k>>2];i=b+(e<<2)|0;g=+n[i>>2];f=c+(e<<2)|0;j=+n[f>>2];n[k>>2]=h+j*1.4019999504089355;n[i>>2]=h-g*.3441300094127655-j*.714139997959137;n[f>>2]=h+g*1.7719999551773071;e=e+1|0}while((e|0)!=(d|0));return}function yf(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,o=0,p=0,q=0;g=X(d,d)|0;o=Hc(g+d<<2)|0;if(!o){b=0;return b|0}m=o+(d<<2)|0;if(g|0){e=a;a=0;while(1){f[m+(a<<2)>>2]=~~(+n[e>>2]*8192.0);a=a+1|0;if((a|0)==(g|0))break;else e=e+4|0}}a:do if(b|0){if(!d){e=0;while(1){e=e+1|0;if((e|0)==(b|0))break a}}else l=0;do{e=0;do{f[o+(e<<2)>>2]=f[f[c+(e<<2)>>2]>>2];e=e+1|0}while((e|0)!=(d|0));a=m;g=0;while(1){i=c+(g<<2)|0;j=f[i>>2]|0;f[j>>2]=0;e=0;h=a;k=0;while(1){p=f[h>>2]|0;q=f[o+(e<<2)>>2]|0;p=Yi(q|0,((q|0)<0)<<31>>31|0,p|0,((p|0)<0)<<31>>31|0)|0;p=Zi(p|0,I|0,4096,0)|0;p=ej(p|0,I|0,13)|0;k=k+p|0;f[j>>2]=k;e=e+1|0;if((e|0)==(d|0))break;else h=h+4|0}f[i>>2]=j+4;g=g+1|0;if((g|0)==(d|0))break;else a=a+(d<<2)|0}l=l+1|0}while((l|0)!=(b|0))}while(0);Mc(o);q=1;return q|0}function zf(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var g=0,h=0,i=0,j=0,k=0.0,l=0,m=0,o=0;o=Hc(d<<3)|0;if(!o){b=0;return b|0}m=o+(d<<2)|0;a:do if(b|0){if(!d){e=0;while(1){e=e+1|0;if((e|0)==(b|0))break a}}else l=0;do{e=0;do{f[o+(e<<2)>>2]=f[f[c+(e<<2)>>2]>>2];e=e+1|0}while((e|0)!=(d|0));g=a;i=0;while(1){j=m+(i<<2)|0;n[j>>2]=0.0;e=0;h=g;k=0.0;while(1){k=k+ +n[h>>2]*+n[o+(e<<2)>>2];n[j>>2]=k;e=e+1|0;if((e|0)==(d|0))break;else h=h+4|0}h=c+(i<<2)|0;j=f[h>>2]|0;f[h>>2]=j+4;n[j>>2]=k;i=i+1|0;if((i|0)==(d|0))break;else g=g+(d<<2)|0}l=l+1|0}while((l|0)!=(b|0))}while(0);Mc(o);b=1;return b|0}function Af(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0.0,h=0,i=0.0;if(!b)return;else f=0;do{h=a+(f<<3)|0;p[h>>3]=0.0;d=0;e=f;g=0.0;while(1){i=+n[c+(e<<2)>>2];g=g+i*i;d=d+1|0;if((d|0)==(b|0))break;else e=e+b|0}i=+L(+g);p[h>>3]=i;f=f+1|0}while((f|0)!=(b|0));return}function Bf(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0;G=u;u=u+32|0;n=G+28|0;k=G+24|0;o=G+20|0;q=G+16|0;p=G+12|0;r=G+8|0;l=G+4|0;j=G;e=c+76|0;E=f[e>>2]|0;A=E+(d*5640|0)+420|0;F=(f[A>>2]|0)+1|0;m=a+16|0;B=Hc((f[m>>2]|0)*528|0)|0;if(!B){F=0;u=G;return F|0}C=Hc(f[m>>2]<<2)|0;if(!C){Mc(B);F=0;u=G;return F|0}e=Cf(a,f[e>>2]|0,d)|0;if(!e){Mc(B);Mc(C);F=0;u=G;return F|0}i=f[m>>2]|0;if(i|0){g=B;h=0;while(1){f[C+(h<<2)>>2]=g;h=h+1|0;if(h>>>0>=i>>>0)break;else g=g+528|0}}Df(a,c,d,o,q,p,r,l,j,k,n,C);D=f[k>>2]|0;x=X(f[m>>2]|0,D)|0;z=f[n>>2]|0;w=X(z,x)|0;h=e+4|0;f[h>>2]=0;y=E+(d*5640|0)+8|0;g=(f[y>>2]|0)+1|0;if(w>>>0<=(4294967295/(g>>>0)|0)>>>0?(v=Ic(X(g,w)|0,2)|0,f[h>>2]=v,v|0):0){g=f[e+196>>2]|0;v=f[a+24>>2]|0;t=f[o>>2]|0;f[e+200>>2]=t;s=f[p>>2]|0;f[e+204>>2]=s;p=f[q>>2]|0;f[e+208>>2]=p;o=f[r>>2]|0;f[e+212>>2]=o;f[e+20>>2]=1;f[e+16>>2]=D;f[e+12>>2]=x;f[e+8>>2]=w;m=f[e+192>>2]|0;if(m|0){l=v;c=g;j=0;while(1){g=f[c+12>>2]|0;h=f[C+(j<<2)>>2]|0;f[c>>2]=f[l>>2];f[c+4>>2]=f[l+4>>2];k=f[c+8>>2]|0;if(k|0){i=0;while(1){f[g>>2]=f[h>>2];f[g+4>>2]=f[h+4>>2];f[g+8>>2]=f[h+8>>2];f[g+12>>2]=f[h+12>>2];i=i+1|0;if(i>>>0>=k>>>0)break;else{g=g+16|0;h=h+16|0}}}j=j+1|0;if(j>>>0>=m>>>0)break;else{l=l+52|0;c=c+16|0}}}if(F>>>0>1){l=1;n=e;do{g=f[n+428>>2]|0;f[n+432>>2]=t;f[n+436>>2]=s;f[n+440>>2]=p;f[n+444>>2]=o;f[n+252>>2]=1;f[n+248>>2]=D;f[n+244>>2]=x;f[n+240>>2]=w;a=f[n+424>>2]|0;if(a|0){m=v;j=0;while(1){h=f[g+12>>2]|0;i=f[C+(j<<2)>>2]|0;f[g>>2]=f[m>>2];f[g+4>>2]=f[m+4>>2];k=f[g+8>>2]|0;if(k|0){c=0;while(1){f[h>>2]=f[i>>2];f[h+4>>2]=f[i+4>>2];f[h+8>>2]=f[i+8>>2];f[h+12>>2]=f[i+12>>2];c=c+1|0;if(c>>>0>=k>>>0)break;else{h=h+16|0;i=i+16|0}}}j=j+1|0;if(j>>>0>=a>>>0)break;else{m=m+52|0;g=g+16|0}}}f[n+236>>2]=f[n+4>>2];n=n+232|0;l=l+1|0}while((l|0)!=(F|0))}Mc(B);Mc(C);j=(f[A>>2]|0)+1|0;g=(j|0)==0;if(!(b[E+(d*5640|0)+5636>>0]&4)){if(g){F=e;u=G;return F|0}c=f[E+(d*5640|0)+4>>2]|0;i=f[y>>2]|0;g=0;h=e;while(1){f[h+80>>2]=c;f[h+40>>2]=1;f[h+44>>2]=0;f[h+48>>2]=0;f[h+64>>2]=0;f[h+68>>2]=0;f[h+56>>2]=z;f[h+60>>2]=f[h+192>>2];f[h+52>>2]=i;f[h+72>>2]=D;g=g+1|0;if((g|0)==(j|0))break;else h=h+232|0}u=G;return e|0}else{if(g){F=e;u=G;return F|0}g=E+(d*5640|0)+424|0;h=e;i=0;while(1){f[h+80>>2]=f[g+36>>2];f[h+40>>2]=1;f[h+44>>2]=f[g>>2];f[h+48>>2]=f[g+4>>2];f[h+64>>2]=0;f[h+68>>2]=0;f[h+56>>2]=f[g+12>>2];f[h+60>>2]=f[g+16>>2];f[h+52>>2]=f[g+8>>2];f[h+72>>2]=D;i=i+1|0;if((i|0)==(j|0))break;else{g=g+148|0;h=h+232|0}}u=G;return e|0}}Mc(B);Mc(C);g=f[h>>2]|0;if(g|0){Mc(g);f[h>>2]=0}if(F|0){l=e;m=0;while(1){n=l+196|0;g=f[n>>2]|0;if(g|0){k=l+192|0;h=f[k>>2]|0;if(h){j=0;while(1){i=g+12|0;c=f[i>>2]|0;if(c){Mc(c);f[i>>2]=0;h=f[k>>2]|0}j=j+1|0;if(j>>>0>=h>>>0)break;else g=g+16|0}g=f[n>>2]|0}Mc(g);f[n>>2]=0}m=m+1|0;if((m|0)==(F|0))break;else l=l+232|0}}Mc(e);F=0;u=G;return F|0}function Cf(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0;l=(f[b+(c*5640|0)+420>>2]|0)+1|0;d=Ic(l,232)|0;if(!d){l=0;return l|0}if(!l){l=d;return l|0}j=a+16|0;i=b+(c*5640|0)+5584|0;g=d;h=0;a=f[j>>2]|0;a:while(1){b=Ic(a,16)|0;e=g+196|0;f[e>>2]=b;if(!b){a=5;break}k=f[j>>2]|0;f[g+192>>2]=k;b:do if(!k)a=0;else{a=(f[i>>2]|0)+4|0;k=Ic(f[a>>2]|0,16)|0;f[b+12>>2]=k;if(!k){a=19;break a}c=0;while(1){f[b+(c<<4)+8>>2]=f[a>>2];c=c+1|0;a=f[j>>2]|0;if(c>>>0>=a>>>0)break b;b=f[e>>2]|0;a=(f[i>>2]|0)+(c*1080|0)+4|0;k=Ic(f[a>>2]|0,16)|0;f[b+(c<<4)+12>>2]=k;if(!k){a=19;break a}}}while(0);h=h+1|0;if(h>>>0>=l>>>0){a=33;break}else g=g+232|0}if((a|0)==5){a=d+4|0;b=f[a>>2]|0;if(!b){i=d;j=0}else{Mc(b);f[a>>2]=0;i=d;j=0}while(1){k=i+196|0;a=f[k>>2]|0;if(a|0){h=i+192|0;b=f[h>>2]|0;if(b){g=0;while(1){c=a+12|0;e=f[c>>2]|0;if(e){Mc(e);f[c>>2]=0;b=f[h>>2]|0}g=g+1|0;if(g>>>0>=b>>>0)break;else a=a+16|0}a=f[k>>2]|0}Mc(a);f[k>>2]=0}j=j+1|0;if((j|0)==(l|0))break;else i=i+232|0}Mc(d);l=0;return l|0}else if((a|0)==19){a=d+4|0;b=f[a>>2]|0;if(!b){i=d;j=0}else{Mc(b);f[a>>2]=0;i=d;j=0}while(1){k=i+196|0;a=f[k>>2]|0;if(a|0){h=i+192|0;b=f[h>>2]|0;if(b){g=0;while(1){c=a+12|0;e=f[c>>2]|0;if(e){Mc(e);f[c>>2]=0;b=f[h>>2]|0}g=g+1|0;if(g>>>0>=b>>>0)break;else a=a+16|0}a=f[k>>2]|0}Mc(a);f[k>>2]=0}j=j+1|0;if((j|0)==(l|0))break;else i=i+232|0}Mc(d);l=0;return l|0}else if((a|0)==33)return d|0;return 0}function Df(a,b,c,d,e,g,h,i,j,k,l,m){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;l=l|0;m=m|0;var n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,J=0,K=0,L=0;n=f[(f[b+76>>2]|0)+(c*5640|0)+5584>>2]|0;o=f[a+24>>2]|0;B=f[b+24>>2]|0;C=b+12|0;A=(X(f[C>>2]|0,(c>>>0)%(B>>>0)|0)|0)+(f[b+4>>2]|0)|0;z=f[a>>2]|0;f[d>>2]=A>>>0>z>>>0?A:z;A=Zi(f[C>>2]|0,0,A|0,0)|0;A=0-I|A;C=f[a+8>>2]|0;f[e>>2]=A>>>0>>0?A:C;C=b+16|0;B=(X(f[C>>2]|0,(c>>>0)/(B>>>0)|0)|0)+(f[b+8>>2]|0)|0;A=f[a+4>>2]|0;f[g>>2]=B>>>0>A>>>0?B:A;B=Zi(f[C>>2]|0,0,B|0,0)|0;B=0-I|B;C=f[a+12>>2]|0;f[h>>2]=B>>>0>>0?B:C;f[k>>2]=0;f[l>>2]=0;f[i>>2]=2147483647;f[j>>2]=2147483647;C=a+16|0;if(!(f[C>>2]|0))return;else z=0;while(1){u=f[m+(z<<2)>>2]|0;p=f[o>>2]|0;b=((f[d>>2]|0)+-1+p|0)/(p|0)|0;A=o+4|0;q=f[A>>2]|0;c=((f[g>>2]|0)+-1+q|0)/(q|0)|0;p=(p+-1+(f[e>>2]|0)|0)/(p|0)|0;q=(q+-1+(f[h>>2]|0)|0)/(q|0)|0;B=n+4|0;a=f[B>>2]|0;if(a>>>0>(f[l>>2]|0)>>>0){f[l>>2]=a;a=f[B>>2]|0}if(a|0){x=Zi(b|0,((b|0)<0)<<31>>31|0,-1,-1)|0;y=I;v=Zi(c|0,((c|0)<0)<<31>>31|0,-1,-1)|0;w=I;t=Zi(p|0,((p|0)<0)<<31>>31|0,-1,-1)|0;s=I;q=Zi(q|0,((q|0)<0)<<31>>31|0,-1,-1)|0;r=I;p=0;c=u;while(1){a=a+-1|0;b=f[n+812+(p<<2)>>2]|0;u=f[n+944+(p<<2)>>2]|0;f[c>>2]=b;f[c+4>>2]=u;F=f[o>>2]<>2]<>2]|0;f[i>>2]=(G|0)<(F|0)?G:F;F=f[j>>2]|0;f[j>>2]=(F|0)<(K|0)?F:K;K=fj(1,0,a|0)|0;F=I;G=Zi(x|0,y|0,K|0,F|0)|0;G=dj(G|0,I|0,a|0)|0;D=Zi(v|0,w|0,K|0,F|0)|0;D=dj(D|0,I|0,a|0)|0;J=Zi(t|0,s|0,K|0,F|0)|0;J=dj(J|0,I|0,a|0)|0;F=Zi(q|0,r|0,K|0,F|0)|0;F=dj(F|0,I|0,a|0)|0;K=fj(1,0,b|0)|0;H=I;E=Zi(J|0,((J|0)<0)<<31>>31|0,-1,-1)|0;H=Zi(E|0,I|0,K|0,H|0)|0;H=dj(H|0,I|0,b|0)|0;K=fj(1,0,u|0)|0;E=I;L=Zi(F|0,((F|0)<0)<<31>>31|0,-1,-1)|0;E=Zi(L|0,I|0,K|0,E|0)|0;E=dj(E|0,I|0,u|0)|0;b=(G|0)==(J|0)?0:(H<>b<>b;u=(D|0)==(F|0)?0:(E<>u<>u;f[c+8>>2]=b;f[c+12>>2]=u;b=X(u,b)|0;if(b>>>0>(f[k>>2]|0)>>>0)f[k>>2]=b;p=p+1|0;if(p>>>0>=(f[B>>2]|0)>>>0)break;else c=c+16|0}}z=z+1|0;if(z>>>0>=(f[C>>2]|0)>>>0)break;else{n=n+1080|0;o=o+52|0}}return}function Ef(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0;if(!a)return;c=a+4|0;d=f[c>>2]|0;if(d|0){Mc(d);f[c>>2]=0}if(b|0){j=a;k=0;while(1){l=j+196|0;c=f[l>>2]|0;if(c|0){i=j+192|0;d=f[i>>2]|0;if(d){h=0;while(1){e=c+12|0;g=f[e>>2]|0;if(g){Mc(g);f[e>>2]=0;d=f[i>>2]|0}h=h+1|0;if(h>>>0>=d>>>0)break;else c=c+16|0}c=f[l>>2]|0}Mc(c);f[l>>2]=0}k=k+1|0;if((k|0)==(b|0))break;else j=j+232|0}}Mc(a);return}function Ff(a,c,e,g){a=a|0;c=c|0;e=e|0;g=g|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0;L=u;u=u+32|0;n=L+28|0;m=L+24|0;o=L+20|0;q=L+16|0;p=L+12|0;r=L+8|0;s=L+4|0;t=L;H=c+76|0;C=f[H>>2]|0;K=(f[C+(e*5640|0)+420>>2]|0)+1|0;G=a+16|0;D=Hc((f[G>>2]|0)*528|0)|0;if(!D){K=0;u=L;return K|0}E=Hc(f[G>>2]<<2)|0;if(!E){Mc(D);K=0;u=L;return K|0}i=Cf(a,f[H>>2]|0,e)|0;if(!i){Mc(D);Mc(E);K=0;u=L;return K|0}l=f[G>>2]|0;if(l|0){j=D;k=0;while(1){f[E+(k<<2)>>2]=j;k=k+1|0;if(k>>>0>=l>>>0)break;else j=j+528|0}}Df(a,c,e,o,q,p,r,s,t,m,n,E);J=f[m>>2]|0;x=X(f[G>>2]|0,J)|0;I=f[n>>2]|0;w=X(I,x)|0;b[i>>0]=(h[c+93>>0]|0)>>>3&1;F=Ic(X(f[C+(e*5640|0)+8>>2]|0,w)|0,2)|0;k=i+4|0;f[k>>2]=F;if(!F){Mc(D);Mc(E);j=f[k>>2]|0;if(j|0){Mc(j);f[k>>2]=0}if(K|0){o=i;p=0;while(1){q=o+196|0;j=f[q>>2]|0;if(j|0){a=o+192|0;k=f[a>>2]|0;if(k){n=0;while(1){l=j+12|0;m=f[l>>2]|0;if(m){Mc(m);f[l>>2]=0;k=f[a>>2]|0}n=n+1|0;if(n>>>0>=k>>>0)break;else j=j+16|0}j=f[q>>2]|0}Mc(j);f[q>>2]=0}p=p+1|0;if((p|0)==(K|0))break;else o=o+232|0}}Mc(i);K=0;u=L;return K|0}m=f[i+196>>2]|0;v=f[a+24>>2]|0;F=f[o>>2]|0;f[i+200>>2]=F;B=f[p>>2]|0;f[i+204>>2]=B;A=f[q>>2]|0;f[i+208>>2]=A;z=f[r>>2]|0;f[i+212>>2]=z;y=f[s>>2]|0;f[i+224>>2]=y;s=f[t>>2]|0;f[i+228>>2]=s;f[i+20>>2]=1;f[i+16>>2]=J;f[i+12>>2]=x;f[i+8>>2]=w;p=f[i+192>>2]|0;if(p|0){o=v;n=0;while(1){j=f[m+12>>2]|0;k=f[E+(n<<2)>>2]|0;f[m>>2]=f[o>>2];f[m+4>>2]=f[o+4>>2];a=f[m+8>>2]|0;if(a|0){l=0;while(1){f[j>>2]=f[k>>2];f[j+4>>2]=f[k+4>>2];f[j+8>>2]=f[k+8>>2];f[j+12>>2]=f[k+12>>2];l=l+1|0;if(l>>>0>=a>>>0)break;else{j=j+16|0;k=k+16|0}}}n=n+1|0;if(n>>>0>=p>>>0)break;else{o=o+52|0;m=m+16|0}}}if(K>>>0>1){o=1;q=i;do{j=f[q+428>>2]|0;f[q+432>>2]=F;f[q+436>>2]=B;f[q+440>>2]=A;f[q+444>>2]=z;f[q+456>>2]=y;f[q+460>>2]=s;f[q+252>>2]=1;f[q+248>>2]=J;f[q+244>>2]=x;f[q+240>>2]=w;r=f[q+424>>2]|0;if(r|0){p=v;n=0;while(1){k=f[j+12>>2]|0;l=f[E+(n<<2)>>2]|0;f[j>>2]=f[p>>2];f[j+4>>2]=f[p+4>>2];a=f[j+8>>2]|0;if(a|0){m=0;while(1){f[k>>2]=f[l>>2];f[k+4>>2]=f[l+4>>2];f[k+8>>2]=f[l+8>>2];f[k+12>>2]=f[l+12>>2];m=m+1|0;if(m>>>0>=a>>>0)break;else{k=k+16|0;l=l+16|0}}}n=n+1|0;if(n>>>0>=r>>>0)break;else{p=p+52|0;j=j+16|0}}}f[q+236>>2]=f[q+4>>2];q=q+232|0;o=o+1|0}while((o|0)!=(K|0))}Mc(D);Mc(E);do if(b[C+(e*5640|0)+5636>>0]&4){j=d[c>>1]|0;if((j&65535)>2){if(!((g|0)==1|(j&65535)<7))break}else if((g|0)!=1)break;Gf(f[H>>2]|0,e,F,A,B,z,J,y,s);K=i;u=L;return K|0}while(0);a=f[G>>2]|0;j=f[H>>2]|0;l=(f[j+(e*5640|0)+420>>2]|0)+1|0;if(!l){K=i;u=L;return K|0}m=f[j+(e*5640|0)+8>>2]|0;n=f[j+(e*5640|0)+4>>2]|0;k=0;j=j+(e*5640|0)+424|0;while(1){f[j+76>>2]=0;f[j+92>>2]=a;f[j+72>>2]=0;f[j+88>>2]=I;f[j+68>>2]=0;f[j+84>>2]=m;f[j+36>>2]=n;f[j+80>>2]=0;f[j+96>>2]=J;f[j+100>>2]=F;f[j+104>>2]=A;f[j+108>>2]=B;f[j+112>>2]=z;f[j+116>>2]=y;f[j+120>>2]=s;k=k+1|0;if((k|0)==(l|0))break;else j=j+148|0}u=L;return i|0}function Gf(a,b,c,d,e,g,h,i,j){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;g=g|0;h=h|0;i=i|0;j=j|0;var k=0,l=0;l=(f[a+(b*5640|0)+420>>2]|0)+1|0;f[a+(b*5640|0)+500>>2]=f[a+(b*5640|0)+428>>2];f[a+(b*5640|0)+516>>2]=f[a+(b*5640|0)+440>>2];f[a+(b*5640|0)+496>>2]=f[a+(b*5640|0)+424>>2];f[a+(b*5640|0)+512>>2]=f[a+(b*5640|0)+436>>2];f[a+(b*5640|0)+508>>2]=f[a+(b*5640|0)+432>>2];f[a+(b*5640|0)+492>>2]=0;f[a+(b*5640|0)+460>>2]=f[a+(b*5640|0)+456>>2];f[a+(b*5640|0)+504>>2]=0;f[a+(b*5640|0)+520>>2]=h;f[a+(b*5640|0)+524>>2]=c;f[a+(b*5640|0)+528>>2]=d;f[a+(b*5640|0)+532>>2]=e;f[a+(b*5640|0)+536>>2]=g;f[a+(b*5640|0)+540>>2]=i;f[a+(b*5640|0)+544>>2]=j;if(l>>>0<=1)return;k=1;a=a+(b*5640|0)+572|0;while(1){f[a+76>>2]=f[a+4>>2];f[a+92>>2]=f[a+16>>2];f[a+72>>2]=f[a>>2];f[a+88>>2]=f[a+12>>2];b=f[a+8>>2]|0;f[a+84>>2]=b;f[a+36>>2]=f[a+32>>2];f[a+80>>2]=0;f[a+68>>2]=b>>>0>(f[a+-64>>2]|0)>>>0?b:0;f[a+96>>2]=h;f[a+100>>2]=c;f[a+104>>2]=d;f[a+108>>2]=e;f[a+112>>2]=g;f[a+116>>2]=i;f[a+120>>2]=j;k=k+1|0;if((k|0)==(l|0))break;else a=a+148|0}return}function Hf(a,c,e,g,h,i,j){a=a|0;c=c|0;e=e|0;g=g|0;h=h|0;i=i|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0;V=f[c+76>>2]|0;Y=V+(e*5640|0)+424+(g*148|0)+36|0;W=Nc(f[Y>>2]|0)|0;f[a+(g*232|0)+40>>2]=1;X=a+(g*232|0)+44|0;f[a+(g*232|0)+80>>2]=f[Y>>2];do if(b[c+93>>0]&8){k=d[c>>1]|0;if((k&65535)>2){if(!((j|0)==1&(k&65535)>6|(k+-3&65535)<4))break}else if(!((j|0)==1|(k+-3&65535)<4))break;a:do if((i|0)<3){p=V+(e*5640|0)+424+(g*148|0)+72|0;q=V+(e*5640|0)+424+(g*148|0)+88|0;r=a+(g*232|0)+56|0;s=V+(e*5640|0)+424+(g*148|0)+76|0;t=a+(g*232|0)+48|0;u=V+(e*5640|0)+424+(g*148|0)+92|0;v=a+(g*232|0)+60|0;w=V+(e*5640|0)+424+(g*148|0)+68|0;x=a+(g*232|0)+64|0;y=V+(e*5640|0)+424+(g*148|0)+84|0;z=a+(g*232|0)+52|0;A=V+(e*5640|0)+424+(g*148|0)+80|0;B=a+(g*232|0)+68|0;C=V+(e*5640|0)+424+(g*148|0)+96|0;D=a+(g*232|0)+72|0;E=V+(e*5640|0)+424+(g*148|0)+100|0;F=a+(g*232|0)+96|0;G=V+(e*5640|0)+424+(g*148|0)+108|0;H=a+(g*232|0)+104|0;I=V+(e*5640|0)+424+(g*148|0)+104|0;J=a+(g*232|0)+100|0;K=V+(e*5640|0)+424+(g*148|0)+112|0;L=a+(g*232|0)+108|0;k=i;while(1){j=k;k=k+1|0;switch(b[W+k>>0]|0){case 82:{l=r;m=q;n=X;o=p;U=10;break}case 67:{l=v;m=u;n=t;o=s;U=10;break}case 76:{l=z;m=y;n=x;o=w;U=10;break}case 80:{if((f[Y>>2]|0)>>>0<2){l=D;m=C;n=B;o=A;U=10}else{f[F>>2]=f[E>>2];f[H>>2]=f[G>>2];l=L;m=K;n=J;o=I;U=10}break}default:{}}if((U|0)==10){U=0;f[n>>2]=f[o>>2];f[l>>2]=f[m>>2]}if((j|0)>=2)break a}}while(0);k=(i|0)>-1;if(!h){if(!k)return;m=V+(e*5640|0)+424+(g*148|0)+76|0;n=V+(e*5640|0)+424+(g*148|0)+132|0;o=a+(g*232|0)+48|0;p=a+(g*232|0)+60|0;q=V+(e*5640|0)+424+(g*148|0)+72|0;r=V+(e*5640|0)+424+(g*148|0)+128|0;s=a+(g*232|0)+56|0;t=V+(e*5640|0)+424+(g*148|0)+68|0;u=V+(e*5640|0)+424+(g*148|0)+124|0;v=a+(g*232|0)+64|0;w=a+(g*232|0)+52|0;x=V+(e*5640|0)+424+(g*148|0)+80|0;y=V+(e*5640|0)+424+(g*148|0)+136|0;z=a+(g*232|0)+68|0;A=a+(g*232|0)+72|0;B=V+(e*5640|0)+424+(g*148|0)+100|0;C=V+(e*5640|0)+424+(g*148|0)+140|0;D=V+(e*5640|0)+424+(g*148|0)+108|0;E=V+(e*5640|0)+424+(g*148|0)+144|0;F=a+(g*232|0)+96|0;G=V+(e*5640|0)+424+(g*148|0)+116|0;H=a+(g*232|0)+100|0;I=a+(g*232|0)+104|0;l=V+(e*5640|0)+424+(g*148|0)+120|0;j=a+(g*232|0)+108|0;k=i;while(1){b:do switch(b[W+k>>0]|0){case 67:{g=f[m>>2]|0;f[o>>2]=g;g=g+1|0;f[p>>2]=g;f[n>>2]=g;break}case 82:{g=f[q>>2]|0;f[X>>2]=g;g=g+1|0;f[s>>2]=g;f[r>>2]=g;break}case 76:{g=f[t>>2]|0;f[v>>2]=g;g=g+1|0;f[w>>2]=g;f[u>>2]=g;break}case 80:if((f[Y>>2]|0)>>>0<2){g=f[x>>2]|0;f[z>>2]=g;g=g+1|0;f[A>>2]=g;f[y>>2]=g;break b}else{g=f[B>>2]|0;i=f[D>>2]|0;f[F>>2]=g;e=f[G>>2]|0;e=e+g-((g>>>0)%(e>>>0)|0)|0;f[H>>2]=e;f[I>>2]=i;g=f[l>>2]|0;g=g+i-((i>>>0)%(g>>>0)|0)|0;f[j>>2]=g;f[C>>2]=e;f[E>>2]=g;break b}default:{}}while(0);if((k|0)>0)k=k+-1|0;else break}return}if(!k)return;P=V+(e*5640|0)+424+(g*148|0)+128|0;Q=V+(e*5640|0)+424+(g*148|0)+88|0;R=V+(e*5640|0)+424+(g*148|0)+72|0;S=a+(g*232|0)+56|0;T=V+(e*5640|0)+424+(g*148|0)+132|0;t=V+(e*5640|0)+424+(g*148|0)+92|0;u=V+(e*5640|0)+424+(g*148|0)+76|0;v=a+(g*232|0)+48|0;w=a+(g*232|0)+60|0;x=V+(e*5640|0)+424+(g*148|0)+124|0;y=V+(e*5640|0)+424+(g*148|0)+84|0;z=V+(e*5640|0)+424+(g*148|0)+68|0;A=a+(g*232|0)+64|0;B=a+(g*232|0)+52|0;C=V+(e*5640|0)+424+(g*148|0)+136|0;D=V+(e*5640|0)+424+(g*148|0)+96|0;E=V+(e*5640|0)+424+(g*148|0)+80|0;F=a+(g*232|0)+68|0;G=a+(g*232|0)+72|0;H=V+(e*5640|0)+424+(g*148|0)+140|0;I=V+(e*5640|0)+424+(g*148|0)+104|0;J=a+(g*232|0)+96|0;K=V+(e*5640|0)+424+(g*148|0)+116|0;L=a+(g*232|0)+100|0;h=V+(e*5640|0)+424+(g*148|0)+144|0;M=V+(e*5640|0)+424+(g*148|0)+112|0;N=a+(g*232|0)+104|0;O=V+(e*5640|0)+424+(g*148|0)+120|0;r=a+(g*232|0)+108|0;s=V+(e*5640|0)+424+(g*148|0)+100|0;q=V+(e*5640|0)+424+(g*148|0)+108|0;k=1;p=i;while(1){o=W+p|0;c:do switch(b[o>>0]|0){case 67:{j=w;l=T;m=(f[T>>2]|0)+-1|0;n=v;U=35;break}case 82:{j=S;l=P;m=(f[P>>2]|0)+-1|0;n=X;U=35;break}case 76:{j=B;l=x;m=(f[x>>2]|0)+-1|0;n=A;U=35;break}case 80:if((f[Y>>2]|0)>>>0<2){j=G;l=C;m=(f[C>>2]|0)+-1|0;n=F;U=35;break c}else{n=f[H>>2]|0;m=f[K>>2]|0;f[J>>2]=n-m-((n>>>0)%(m>>>0)|0);f[L>>2]=n;n=f[h>>2]|0;m=f[O>>2]|0;j=r;l=h;m=n-m-((n>>>0)%(m>>>0)|0)|0;n=N;U=35;break c}default:{}}while(0);if((U|0)==35){U=0;f[n>>2]=m;f[j>>2]=f[l>>2]}d:do if((k|0)==1)switch(b[o>>0]|0){case 82:{k=f[P>>2]|0;if((k|0)!=(f[Q>>2]|0)){f[X>>2]=k;k=k+1|0;f[S>>2]=k;f[P>>2]=k;k=0;break d}if(!(If(p+-1|0,c,e,g,W)|0)){k=0;break d}k=f[R>>2]|0;f[X>>2]=k;k=k+1|0;f[S>>2]=k;f[P>>2]=k;k=1;break d}case 67:{k=f[T>>2]|0;if((k|0)!=(f[t>>2]|0)){f[v>>2]=k;k=k+1|0;f[w>>2]=k;f[T>>2]=k;k=0;break d}if(!(If(p+-1|0,c,e,g,W)|0)){k=0;break d}k=f[u>>2]|0;f[v>>2]=k;k=k+1|0;f[w>>2]=k;f[T>>2]=k;k=1;break d}case 76:{k=f[x>>2]|0;if((k|0)!=(f[y>>2]|0)){f[A>>2]=k;k=k+1|0;f[B>>2]=k;f[x>>2]=k;k=0;break d}if(!(If(p+-1|0,c,e,g,W)|0)){k=0;break d}k=f[z>>2]|0;f[A>>2]=k;k=k+1|0;f[B>>2]=k;f[x>>2]=k;k=1;break d}case 80:{if((f[Y>>2]|0)>>>0<2){k=f[C>>2]|0;if((k|0)!=(f[D>>2]|0)){f[F>>2]=k;k=k+1|0;f[G>>2]=k;f[C>>2]=k;k=0;break d}if(!(If(p+-1|0,c,e,g,W)|0)){k=0;break d}k=f[E>>2]|0;f[F>>2]=k;k=k+1|0;f[G>>2]=k;f[C>>2]=k;k=1;break d}k=f[H>>2]|0;if(k>>>0<(f[I>>2]|0)>>>0){f[J>>2]=k;i=f[K>>2]|0;k=i+k-((k>>>0)%(i>>>0)|0)|0;f[L>>2]=k;f[H>>2]=k;k=0;break d}j=f[h>>2]|0;if(j>>>0<(f[M>>2]|0)>>>0){f[N>>2]=j;i=f[O>>2]|0;k=0;l=i+j|0;j=(j>>>0)%(i>>>0)|0}else{if(!(If(p+-1|0,c,e,g,W)|0)){k=0;break d}i=f[q>>2]|0;f[h>>2]=i;f[N>>2]=i;j=f[O>>2]|0;k=1;l=j+i|0;j=(i>>>0)%(j>>>0)|0}V=l-j|0;f[r>>2]=V;f[h>>2]=V;V=f[s>>2]|0;f[J>>2]=V;i=f[K>>2]|0;i=i+V-((V>>>0)%(i>>>0)|0)|0;f[L>>2]=i;f[H>>2]=i;break d}default:{k=1;break d}}while(0);if((p|0)>0)p=p+-1|0;else break}return}while(0);f[X>>2]=f[V+(e*5640|0)+424+(g*148|0)+72>>2];f[a+(g*232|0)+56>>2]=f[V+(e*5640|0)+424+(g*148|0)+88>>2];f[a+(g*232|0)+48>>2]=f[V+(e*5640|0)+424+(g*148|0)+76>>2];f[a+(g*232|0)+60>>2]=f[V+(e*5640|0)+424+(g*148|0)+92>>2];f[a+(g*232|0)+64>>2]=f[V+(e*5640|0)+424+(g*148|0)+68>>2];f[a+(g*232|0)+52>>2]=f[V+(e*5640|0)+424+(g*148|0)+84>>2];f[a+(g*232|0)+68>>2]=f[V+(e*5640|0)+424+(g*148|0)+80>>2];f[a+(g*232|0)+72>>2]=f[V+(e*5640|0)+424+(g*148|0)+96>>2];f[a+(g*232|0)+96>>2]=f[V+(e*5640|0)+424+(g*148|0)+100>>2];f[a+(g*232|0)+104>>2]=f[V+(e*5640|0)+424+(g*148|0)+108>>2];f[a+(g*232|0)+100>>2]=f[V+(e*5640|0)+424+(g*148|0)+104>>2];f[a+(g*232|0)+108>>2]=f[V+(e*5640|0)+424+(g*148|0)+112>>2];return}function If(a,c,d,e,g){a=a|0;c=c|0;d=d|0;e=e|0;g=g|0;var h=0,i=0,j=0;i=f[c+76>>2]|0;if((a|0)>-1)h=a;else{j=0;j=j&1;return j|0}a:while(1){switch(b[g+h>>0]|0){case 82:{j=3;break a}case 67:{j=5;break a}case 76:{j=7;break a}case 80:{j=9;break a}default:{}}h=h+-1|0}if((j|0)==3){if((f[i+(d*5640|0)+424+(e*148|0)+128>>2]|0)!=(f[i+(d*5640|0)+424+(e*148|0)+88>>2]|0)){j=1;j=j&1;return j|0}j=(If(a+-1|0,c,d,e,g)|0)!=0;j=j&1;return j|0}else if((j|0)==5){if((f[i+(d*5640|0)+424+(e*148|0)+132>>2]|0)!=(f[i+(d*5640|0)+424+(e*148|0)+92>>2]|0)){j=1;j=j&1;return j|0}j=(If(a+-1|0,c,d,e,g)|0)!=0;j=j&1;return j|0}else if((j|0)==7){if((f[i+(d*5640|0)+424+(e*148|0)+124>>2]|0)!=(f[i+(d*5640|0)+424+(e*148|0)+84>>2]|0)){j=1;j=j&1;return j|0}j=(If(a+-1|0,c,d,e,g)|0)!=0;j=j&1;return j|0}else if((j|0)==9){if((f[i+(d*5640|0)+424+(e*148|0)+36>>2]|0)>>>0<2){if((f[i+(d*5640|0)+424+(e*148|0)+136>>2]|0)!=(f[i+(d*5640|0)+424+(e*148|0)+96>>2]|0)){j=1;j=j&1;return j|0}j=(If(h+-1|0,c,d,e,g)|0)!=0;j=j&1;return j|0}if((f[i+(d*5640|0)+424+(e*148|0)+140>>2]|0)!=(f[i+(d*5640|0)+424+(e*148|0)+104>>2]|0)){j=1;j=j&1;return j|0}if((f[i+(d*5640|0)+424+(e*148|0)+144>>2]|0)!=(f[i+(d*5640|0)+424+(e*148|0)+112>>2]|0)){j=1;j=j&1;return j|0}j=(If(h+-1|0,c,d,e,g)|0)!=0;j=j&1;return j|0}return 0}function Jf(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0;E=f[c+76>>2]|0;F=f[c+24>>2]|0;J=(d>>>0)%(F>>>0)|0;F=(d>>>0)/(F>>>0)|0;G=f[c+4>>2]|0;B=f[c+12>>2]|0;A=(X(B,J)|0)+G|0;H=f[a>>2]|0;H=(A|0)>(H|0)?A:H;G=(X(B,J+1|0)|0)+G|0;J=f[a+8>>2]|0;J=(G|0)<(J|0)?G:J;G=f[c+8>>2]|0;B=f[c+16>>2]|0;A=(X(B,F)|0)+G|0;D=f[a+4>>2]|0;D=(A|0)>(D|0)?A:D;G=(X(B,F+1|0)|0)+G|0;F=f[a+12>>2]|0;F=(G|0)<(F|0)?G:F;G=f[a+16>>2]|0;if(!G){l=0;k=2147483647;j=2147483647;e=0}else{y=H+-1|0;z=D+-1|0;A=J+-1|0;B=F+-1|0;k=2147483647;x=f[E+(d*5640|0)+5584>>2]|0;v=f[a+24>>2]|0;w=0;j=2147483647;l=0;e=0;while(1){s=f[v>>2]|0;c=(y+s|0)/(s|0)|0;t=f[v+4>>2]|0;a=(z+t|0)/(t|0)|0;g=(A+s|0)/(s|0)|0;h=(B+t|0)/(t|0)|0;u=f[x+4>>2]|0;if(u>>>0<=l>>>0){if(u)C=5}else{l=u;C=5}if((C|0)==5){C=0;q=Zi(c|0,((c|0)<0)<<31>>31|0,-1,-1)|0;r=I;o=Zi(a|0,((a|0)<0)<<31>>31|0,-1,-1)|0;p=I;m=Zi(g|0,((g|0)<0)<<31>>31|0,-1,-1)|0;n=I;h=Zi(h|0,((h|0)<0)<<31>>31|0,-1,-1)|0;i=I;L=f[x+812>>2]|0;g=f[x+944>>2]|0;K=u+-1|0;N=s<>>0>>0?j:N;k=k>>>0>>0?k:c;c=fj(1,0,K|0)|0;N=I;M=Zi(q|0,r|0,c|0,N|0)|0;M=dj(M|0,I|0,K|0)|0;a=Zi(o|0,p|0,c|0,N|0)|0;a=dj(a|0,I|0,K|0)|0;O=Zi(m|0,n|0,c|0,N|0)|0;O=dj(O|0,I|0,K|0)|0;N=Zi(h|0,i|0,c|0,N|0)|0;K=dj(N|0,I|0,K|0)|0;N=fj(1,0,L|0)|0;N=Zi(N|0,I|0,-1,-1)|0;N=Zi(N|0,I|0,O|0,((O|0)<0)<<31>>31|0)|0;N=dj(N|0,I|0,L|0)|0;c=fj(1,0,g|0)|0;c=Zi(c|0,I|0,-1,-1)|0;c=Zi(c|0,I|0,K|0,((K|0)<0)<<31>>31|0)|0;c=dj(c|0,I|0,g|0)|0;g=X((M|0)==(O|0)?0:(N<>L<>L,(a|0)==(K|0)?0:(c<>g<>g)|0;e=g>>>0>e>>>0?g:e;if(u>>>0>1){a=-1;g=1;while(1){L=f[x+812+(g<<2)>>2]|0;c=f[x+944+(g<<2)>>2]|0;M=a+-1+u|0;a=s<>>0>>0?j:a;k=k>>>0>>0?k:N;N=fj(1,0,M|0)|0;a=I;K=Zi(q|0,r|0,N|0,a|0)|0;K=dj(K|0,I|0,M|0)|0;O=Zi(o|0,p|0,N|0,a|0)|0;O=dj(O|0,I|0,M|0)|0;P=Zi(m|0,n|0,N|0,a|0)|0;P=dj(P|0,I|0,M|0)|0;a=Zi(h|0,i|0,N|0,a|0)|0;M=dj(a|0,I|0,M|0)|0;a=fj(1,0,L|0)|0;a=Zi(a|0,I|0,-1,-1)|0;a=Zi(a|0,I|0,P|0,((P|0)<0)<<31>>31|0)|0;a=dj(a|0,I|0,L|0)|0;N=fj(1,0,c|0)|0;N=Zi(N|0,I|0,-1,-1)|0;N=Zi(N|0,I|0,M|0,((M|0)<0)<<31>>31|0)|0;N=dj(N|0,I|0,c|0)|0;c=X((K|0)==(P|0)?0:(a<>L<>L,(O|0)==(M|0)?0:(N<>c<>c)|0;e=c>>>0>e>>>0?c:e;c=g+1|0;if(c>>>0>>0){a=~g;g=c}else break}}}w=w+1|0;if(w>>>0>=G>>>0)break;else{x=x+1080|0;v=v+52|0}}}if(b[E+(d*5640|0)+5636>>0]&4){Gf(E,d,H,J,D,F,e,j,k);return}g=(f[E+(d*5640|0)+420>>2]|0)+1|0;if(!g)return;h=f[E+(d*5640|0)+8>>2]|0;i=f[E+(d*5640|0)+4>>2]|0;a=0;c=E+(d*5640|0)+424|0;while(1){f[c+76>>2]=0;f[c+92>>2]=G;f[c+72>>2]=0;f[c+88>>2]=l;f[c+68>>2]=0;f[c+84>>2]=h;f[c+36>>2]=i;f[c+80>>2]=0;f[c+96>>2]=e;f[c+100>>2]=H;f[c+104>>2]=J;f[c+108>>2]=D;f[c+112>>2]=F;f[c+116>>2]=j;f[c+120>>2]=k;a=a+1|0;if((a|0)==(g|0))break;else c=c+148|0}return}function Kf(a){a=a|0;var c=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0,ta=0,ua=0,va=0,wa=0,xa=0,ya=0,za=0,Aa=0,Ba=0,Ca=0,Da=0,Ea=0,Fa=0,Ga=0,Ha=0,Ia=0,Ja=0,Ka=0,La=0,Ma=0,Na=0,Oa=0,Pa=0,Qa=0,Ra=0,Sa=0,Ta=0,Ua=0,Va=0,Wa=0,Xa=0,Ya=0,Za=0,_a=0,$a=0,ab=0,bb=0,cb=0,db=0,eb=0,fb=0,gb=0,hb=0,ib=0,jb=0,kb=0,lb=0,mb=0,nb=0;switch(f[a+80>>2]|0){case 0:{c=a+40|0;if(!(f[c>>2]|0)){E=a+32|0;l=E;E=f[E>>2]|0;e=18}else{f[c>>2]=0;v=f[a+64>>2]|0;f[a+36>>2]=v;e=5}while(1){if((e|0)==5){if(v>>>0>=(f[a+52>>2]|0)>>>0){nb=0;e=153;break}z=f[a+44>>2]|0;f[a+28>>2]=z;e=7}else if((e|0)==18){j=E+1|0;f[l>>2]=j;h=l;e=14}while(1){if((e|0)==7){e=0;if(z>>>0>=(f[a+56>>2]|0)>>>0){e=21;break}A=f[a+48>>2]|0;p=a+24|0;f[p>>2]=A}else if((e|0)==14){if(j>>>0<(f[a+72>>2]|0)>>>0){e=16;break}F=a+24|0;n=F;F=f[F>>2]|0;e=19}while(1){if((e|0)==19){e=0;A=F+1|0;f[n>>2]=A;p=n}if(A>>>0>=(f[a+60>>2]|0)>>>0){e=20;break}B=f[a+196>>2]|0;C=f[a+28>>2]|0;if(C>>>0<(f[B+(A<<4)+8>>2]|0)>>>0)break;else{n=p;F=A;e=19}}if((e|0)==20){e=a+28|0;z=(f[e>>2]|0)+1|0;f[e>>2]=z;e=7;continue}c=f[B+(A<<4)+12>>2]|0;if(!(b[a>>0]|0)){mb=X(f[c+(C<<4)+12>>2]|0,f[c+(C<<4)+8>>2]|0)|0;f[a+72>>2]=mb}j=f[a+68>>2]|0;h=a+32|0;f[h>>2]=j;e=14}if((e|0)==16){e=0;D=X(f[a+8>>2]|0,f[a+36>>2]|0)|0;D=(X(f[a+12>>2]|0,f[a+28>>2]|0)|0)+D|0;D=D+(X(f[a+16>>2]|0,f[a+24>>2]|0)|0)|0;D=D+(X(f[a+20>>2]|0,j)|0)|0;D=(f[a+4>>2]|0)+(D<<1)|0;if(!(d[D>>1]|0))break;else{l=h;E=j;e=18;continue}}else if((e|0)==21){e=a+36|0;v=(f[e>>2]|0)+1|0;f[e>>2]=v;e=5;continue}}if((e|0)==153)return nb|0;d[D>>1]=1;a=1;return a|0}case 1:{c=a+40|0;if(!(f[c>>2]|0)){x=a+32|0;k=x;x=f[x>>2]|0;e=38}else{f[c>>2]=0;G=f[a+44>>2]|0;f[a+28>>2]=G;e=25}while(1){if((e|0)==25){if(G>>>0>=(f[a+56>>2]|0)>>>0){nb=0;e=153;break}r=f[a+64>>2]|0;f[a+36>>2]=r;e=27}else if((e|0)==38){i=x+1|0;f[k>>2]=i;g=k;e=34}while(1){if((e|0)==27){e=0;if(r>>>0>=(f[a+52>>2]|0)>>>0){e=41;break}s=f[a+48>>2]|0;o=a+24|0;f[o>>2]=s}else if((e|0)==34){if(i>>>0<(f[a+72>>2]|0)>>>0){e=36;break}y=a+24|0;m=y;y=f[y>>2]|0;e=39}while(1){if((e|0)==39){e=0;s=y+1|0;f[m>>2]=s;o=m}if(s>>>0>=(f[a+60>>2]|0)>>>0){e=40;break}t=f[a+196>>2]|0;u=f[a+28>>2]|0;if(u>>>0<(f[t+(s<<4)+8>>2]|0)>>>0)break;else{m=o;y=s;e=39}}if((e|0)==40){e=a+36|0;r=(f[e>>2]|0)+1|0;f[e>>2]=r;e=27;continue}c=f[t+(s<<4)+12>>2]|0;if(!(b[a>>0]|0)){mb=X(f[c+(u<<4)+12>>2]|0,f[c+(u<<4)+8>>2]|0)|0;f[a+72>>2]=mb}i=f[a+68>>2]|0;g=a+32|0;f[g>>2]=i;e=34}if((e|0)==36){e=0;w=X(f[a+8>>2]|0,f[a+36>>2]|0)|0;w=(X(f[a+12>>2]|0,f[a+28>>2]|0)|0)+w|0;w=w+(X(f[a+16>>2]|0,f[a+24>>2]|0)|0)|0;w=w+(X(f[a+20>>2]|0,i)|0)|0;w=(f[a+4>>2]|0)+(w<<1)|0;if(!(d[w>>1]|0))break;else{k=g;x=i;e=38;continue}}else if((e|0)==41){e=a+28|0;G=(f[e>>2]|0)+1|0;f[e>>2]=G;e=25;continue}}if((e|0)==153)return nb|0;d[w>>1]=1;a=1;return a|0}case 2:{c=a+40|0;if(!(f[c>>2]|0)){lb=a+36|0;Ta=lb;lb=f[lb>>2]|0;e=75}else{f[c>>2]=0;p=a+224|0;f[p>>2]=0;q=a+228|0;f[q>>2]=0;r=f[a+192>>2]|0;if(r|0){s=f[a+196>>2]|0;o=0;e=0;c=0;do{j=f[s+(o<<4)+8>>2]|0;if(j){k=f[s+(o<<4)+12>>2]|0;l=f[s+(o<<4)>>2]|0;m=f[s+(o<<4)+4>>2]|0;n=j+-1|0;Ra=l<<(f[k>>2]|0)+n;Sa=m<<(f[k+4>>2]|0)+n;e=(e|0)==0?Ra:e>>>0>>0?e:Ra;c=(c|0)==0?Sa:c>>>0>>0?c:Sa;if((j|0)!=1){h=-1;i=1;while(1){g=n+h|0;Sa=l<>2]|0);g=m<<(f[k+(i<<4)+4>>2]|0)+g;e=(e|0)==0?Sa:e>>>0>>0?e:Sa;c=(c|0)==0?g:c>>>0>>0?c:g;g=i+1|0;if(g>>>0>>0){h=~i;i=g}else break}}f[p>>2]=e;f[q>>2]=c}o=o+1|0}while((o|0)!=(r|0))}if(!(b[a>>0]|0)){f[a+104>>2]=f[a+204>>2];f[a+96>>2]=f[a+200>>2];f[a+108>>2]=f[a+212>>2];f[a+100>>2]=f[a+208>>2]}J=f[a+44>>2]|0;f[a+28>>2]=J;e=54}while(1){if((e|0)==54){if(J>>>0>=(f[a+56>>2]|0)>>>0){nb=0;e=153;break}Xa=f[a+104>>2]|0;f[a+220>>2]=Xa;e=56}else if((e|0)==75){jb=lb+1|0;f[Ta>>2]=jb;Ua=Ta;e=71}while(1){if((e|0)==56){if((Xa|0)>=(f[a+108>>2]|0)){e=79;break}Ya=f[a+96>>2]|0;f[a+216>>2]=Ya;e=58}else if((e|0)==71){if(jb>>>0<(f[a+52>>2]|0)>>>0){e=73;break}mb=a+24|0;Va=mb;mb=f[mb>>2]|0;e=76}while(1){if((e|0)==58){if((Ya|0)>=(f[a+100>>2]|0)){e=78;break}Za=f[a+48>>2]|0;Wa=a+24|0;f[Wa>>2]=Za}else if((e|0)==76){Za=mb+1|0;f[Va>>2]=Za;Wa=Va}if(Za>>>0>=(f[a+60>>2]|0)>>>0){Ya=f[a+224>>2]|0;e=a+216|0;Sa=f[e>>2]|0;Ya=Sa+Ya-((Sa|0)%(Ya|0)|0)|0;f[e>>2]=Ya;e=58;continue}e=f[a+196>>2]|0;m=f[a+28>>2]|0;c=f[e+(Za<<4)+8>>2]|0;if(m>>>0>=c>>>0){Va=Wa;mb=Za;e=76;continue}n=f[e+(Za<<4)+12>>2]|0;i=c+~m|0;j=f[a+200>>2]|0;k=f[e+(Za<<4)>>2]|0;_a=k<>2]|0;Sa=f[e+(Za<<4)+4>>2]|0;ab=Sa<>2]|0)|0)/(_a|0)|0;db=ab+-1|0;e=(db+(f[a+212>>2]|0)|0)/(ab|0)|0;eb=f[n+(m<<4)>>2]|0;g=eb+i|0;fb=f[n+(m<<4)+4>>2]|0;h=fb+i|0;gb=f[a+220>>2]|0;if((gb|0)%(Sa<>2]|0;if((hb|0)%(k<>2]|0;if(!ib){Va=Wa;mb=Za;e=76;continue}if((bb|0)==(e|0)|(($a|0)==(c|0)?1:(f[n+(m<<4)+12>>2]|0)==0)){Va=Wa;mb=Za;e=76}else{e=70;break}}if((e|0)==70){jb=(((cb+hb|0)/(_a|0)|0)>>eb)-($a>>eb)+(X((((db+gb|0)/(ab|0)|0)>>fb)-(bb>>fb)|0,ib)|0)|0;f[a+32>>2]=jb;jb=f[a+64>>2]|0;Ua=a+36|0;f[Ua>>2]=jb;e=71;continue}else if((e|0)==78){Xa=f[a+228>>2]|0;e=a+220|0;Sa=f[e>>2]|0;Xa=Sa+Xa-((Sa|0)%(Xa|0)|0)|0;f[e>>2]=Xa;e=56;continue}}if((e|0)==73){e=0;kb=X(f[a+8>>2]|0,jb)|0;kb=(X(f[a+12>>2]|0,f[a+28>>2]|0)|0)+kb|0;kb=kb+(X(f[a+16>>2]|0,f[a+24>>2]|0)|0)|0;kb=kb+(X(f[a+20>>2]|0,f[a+32>>2]|0)|0)|0;kb=(f[a+4>>2]|0)+(kb<<1)|0;if(!(d[kb>>1]|0))break;else{Ta=Ua;lb=jb;e=75;continue}}else if((e|0)==79){e=a+28|0;J=(f[e>>2]|0)+1|0;f[e>>2]=J;e=54;continue}}if((e|0)==153)return nb|0;d[kb>>1]=1;a=1;return a|0}case 3:{e=a+40|0;if(!(f[e>>2]|0)){Ra=f[a+24>>2]|0;Oa=a+36|0;ra=(f[a+196>>2]|0)+(Ra<<4)|0;ta=Oa;Oa=f[Oa>>2]|0;e=113}else{f[e>>2]=0;p=a+224|0;f[p>>2]=0;q=a+228|0;f[q>>2]=0;r=f[a+192>>2]|0;if(r|0){s=f[a+196>>2]|0;o=0;e=0;c=0;do{j=f[s+(o<<4)+8>>2]|0;if(j){k=f[s+(o<<4)+12>>2]|0;l=f[s+(o<<4)>>2]|0;m=f[s+(o<<4)+4>>2]|0;n=j+-1|0;lb=l<<(f[k>>2]|0)+n;mb=m<<(f[k+4>>2]|0)+n;e=(e|0)==0?lb:e>>>0>>0?e:lb;c=(c|0)==0?mb:c>>>0>>0?c:mb;if((j|0)!=1){h=-1;i=1;while(1){g=n+h|0;mb=l<>2]|0);g=m<<(f[k+(i<<4)+4>>2]|0)+g;e=(e|0)==0?mb:e>>>0>>0?e:mb;c=(c|0)==0?g:c>>>0>>0?c:g;g=i+1|0;if(g>>>0>>0){h=~i;i=g}else break}}f[p>>2]=e;f[q>>2]=c}o=o+1|0}while((o|0)!=(r|0))}if(!(b[a>>0]|0)){c=f[a+204>>2]|0;f[a+104>>2]=c;f[a+96>>2]=f[a+200>>2];f[a+108>>2]=f[a+212>>2];f[a+100>>2]=f[a+208>>2]}else c=f[a+104>>2]|0;f[a+220>>2]=c;e=93}while(1){if((e|0)==93){if((c|0)>=(f[a+108>>2]|0)){nb=0;e=153;break}xa=f[a+96>>2]|0;f[a+216>>2]=xa;e=95}else if((e|0)==113){La=Oa+1|0;f[ta>>2]=La;qa=ra;ua=ta;Ma=Ra;e=109}while(1){if((e|0)==95){if((xa|0)>=(f[a+100>>2]|0)){e=117;break}ya=f[a+48>>2]|0;f[a+24>>2]=ya;e=97}else if((e|0)==109){if(La>>>0<(f[a+52>>2]|0)>>>0){e=111;break}Pa=a+28|0;sa=qa;va=Pa;Pa=f[Pa>>2]|0;Sa=Ma;e=114}while(1){if((e|0)==97){if(ya>>>0>=(f[a+60>>2]|0)>>>0){e=116;break}pa=(f[a+196>>2]|0)+(ya<<4)|0;za=f[a+44>>2]|0;wa=a+28|0;f[wa>>2]=za;Qa=ya}else if((e|0)==114){za=Pa+1|0;f[va>>2]=za;pa=sa;wa=va;Qa=Sa}mb=f[a+56>>2]|0;e=f[pa+8>>2]|0;if(za>>>0>=(mb>>>0>>0?mb:e)>>>0){ya=Qa+1|0;f[a+24>>2]=ya;e=97;continue}n=f[pa+12>>2]|0;e=e+~za|0;g=f[a+200>>2]|0;h=f[pa>>2]|0;Aa=h<>2]|0;mb=f[pa+4>>2]|0;Ca=mb<>2]|0)|0)/(Aa|0)|0;Fa=Ca+-1|0;k=(Fa+(f[a+212>>2]|0)|0)/(Ca|0)|0;Ga=f[n+(za<<4)>>2]|0;l=Ga+e|0;Ha=f[n+(za<<4)+4>>2]|0;m=Ha+e|0;Ia=f[a+220>>2]|0;if((Ia|0)%(mb<>2]|0;if((Ja|0)%(h<>2]|0;if(!Ka){sa=pa;va=wa;Pa=za;Sa=Qa;e=114;continue}if((Da|0)==(k|0)|((Ba|0)==(j|0)?1:(f[n+(za<<4)+12>>2]|0)==0)){sa=pa;va=wa;Pa=za;Sa=Qa;e=114}else{e=108;break}}if((e|0)==108){La=(((Ea+Ja|0)/(Aa|0)|0)>>Ga)-(Ba>>Ga)+(X((((Fa+Ia|0)/(Ca|0)|0)>>Ha)-(Da>>Ha)|0,Ka)|0)|0;f[a+32>>2]=La;La=f[a+64>>2]|0;ua=a+36|0;f[ua>>2]=La;qa=pa;Ma=Qa;e=109;continue}else if((e|0)==116){xa=f[a+224>>2]|0;e=a+216|0;mb=f[e>>2]|0;xa=mb+xa-((mb|0)%(xa|0)|0)|0;f[e>>2]=xa;e=95;continue}}if((e|0)==111){e=0;Na=X(f[a+8>>2]|0,La)|0;Na=(X(f[a+12>>2]|0,f[a+28>>2]|0)|0)+Na|0;Na=Na+(X(f[a+16>>2]|0,Ma)|0)|0;Na=Na+(X(f[a+20>>2]|0,f[a+32>>2]|0)|0)|0;Na=(f[a+4>>2]|0)+(Na<<1)|0;if(!(d[Na>>1]|0))break;else{ra=qa;ta=ua;Oa=La;Ra=Ma;e=113;continue}}else if((e|0)==117){c=f[a+228>>2]|0;e=a+220|0;mb=f[e>>2]|0;c=mb+c-((mb|0)%(c|0)|0)|0;f[e>>2]=c;e=93;continue}}if((e|0)==153)return nb|0;d[Na>>1]=1;a=1;return a|0}case 4:{c=a+40|0;if(!(f[c>>2]|0)){la=f[a+24>>2]|0;ja=a+36|0;N=(f[a+196>>2]|0)+(la<<4)|0;P=ja;ja=f[ja>>2]|0;e=148}else{f[c>>2]=0;T=f[a+48>>2]|0;f[a+24>>2]=T;e=121}while(1){if((e|0)==121){if(T>>>0>=(f[a+60>>2]|0)>>>0){nb=0;e=153;break}c=f[a+196>>2]|0;q=c+(T<<4)|0;o=a+224|0;f[o>>2]=0;p=a+228|0;f[p>>2]=0;l=f[c+(T<<4)+8>>2]|0;if(l|0){m=f[c+(T<<4)+12>>2]|0;n=f[q>>2]|0;j=f[c+(T<<4)+4>>2]|0;k=l+-1|0;e=n<<(f[m>>2]|0)+k;c=j<<(f[m+4>>2]|0)+k;if((l|0)!=1){h=-1;i=1;while(1){g=k+h|0;mb=n<>2]|0);g=j<<(f[m+(i<<4)+4>>2]|0)+g;e=(e|0)==0?mb:e>>>0>>0?e:mb;c=(c|0)==0?g:c>>>0>>0?c:g;g=i+1|0;if(g>>>0>>0){h=~i;i=g}else break}}f[o>>2]=e;f[p>>2]=c}if(!(b[a>>0]|0)){c=f[a+204>>2]|0;f[a+104>>2]=c;f[a+96>>2]=f[a+200>>2];f[a+108>>2]=f[a+212>>2];f[a+100>>2]=f[a+208>>2]}else c=f[a+104>>2]|0;f[a+220>>2]=c;H=c;I=T;e=130}else if((e|0)==148){ga=ja+1|0;f[P>>2]=ga;M=N;Q=P;ha=la;e=144}while(1){if((e|0)==130){if((H|0)>=(f[a+108>>2]|0)){e=152;break}U=f[a+96>>2]|0;f[a+216>>2]=U;K=q;ma=I;e=132}else if((e|0)==144){if(ga>>>0<(f[a+52>>2]|0)>>>0){e=146;break}ka=a+28|0;O=M;R=ka;ka=f[ka>>2]|0;oa=ha;e=149}while(1){if((e|0)==132){if((U|0)>=(f[a+100>>2]|0)){e=151;break}V=f[a+44>>2]|0;S=a+28|0;f[S>>2]=V;L=K;na=ma}else if((e|0)==149){V=ka+1|0;f[R>>2]=V;L=O;S=R;na=oa}mb=f[a+56>>2]|0;c=f[L+8>>2]|0;if(V>>>0>=(mb>>>0>>0?mb:c)>>>0){U=f[a+224>>2]|0;K=a+216|0;ma=f[K>>2]|0;U=ma+U-((ma|0)%(U|0)|0)|0;f[K>>2]=U;K=L;ma=na;e=132;continue}m=f[L+12>>2]|0;c=c+~V|0;e=f[a+200>>2]|0;g=f[L>>2]|0;W=g<>2]|0;mb=f[L+4>>2]|0;Z=mb<>2]|0)|0)/(W|0)|0;aa=Z+-1|0;j=(aa+(f[a+212>>2]|0)|0)/(Z|0)|0;ba=f[m+(V<<4)>>2]|0;k=ba+c|0;ca=f[m+(V<<4)+4>>2]|0;l=ca+c|0;da=f[a+220>>2]|0;if((da|0)%(mb<>2]|0;if((ea|0)%(g<>2]|0;if(!fa){O=L;R=S;ka=V;oa=na;e=149;continue}if((_|0)==(j|0)|((Y|0)==(i|0)?1:(f[m+(V<<4)+12>>2]|0)==0)){O=L;R=S;ka=V;oa=na;e=149}else{e=143;break}}if((e|0)==143){ga=((($+ea|0)/(W|0)|0)>>ba)-(Y>>ba)+(X((((aa+da|0)/(Z|0)|0)>>ca)-(_>>ca)|0,fa)|0)|0;f[a+32>>2]=ga;ga=f[a+64>>2]|0;Q=a+36|0;f[Q>>2]=ga;M=L;ha=na;e=144;continue}else if((e|0)==151){H=f[a+228>>2]|0;q=a+220|0;I=f[q>>2]|0;H=I+H-((I|0)%(H|0)|0)|0;f[q>>2]=H;q=K;I=ma;e=130;continue}}if((e|0)==146){e=0;ia=X(f[a+8>>2]|0,ga)|0;ia=(X(f[a+12>>2]|0,f[a+28>>2]|0)|0)+ia|0;ia=ia+(X(f[a+16>>2]|0,ha)|0)|0;ia=ia+(X(f[a+20>>2]|0,f[a+32>>2]|0)|0)|0;ia=(f[a+4>>2]|0)+(ia<<1)|0;if(!(d[ia>>1]|0))break;else{N=M;P=Q;ja=ga;la=ha;e=148;continue}}else if((e|0)==152){T=I+1|0;f[a+24>>2]=T;e=121;continue}}if((e|0)==153)return nb|0;d[ia>>1]=1;a=1;return a|0}default:{a=0;return a|0}}return 0}function Lf(a){a=a|0;var c=0,d=0;c=Ic(1,44)|0;if(!c){c=0;return c|0}d=c+40|0;b[d>>0]=b[d>>0]&-2|(a|0)!=0;a=Ic(1,4)|0;f[c+20>>2]=a;if(a|0){d=c;return d|0}Mc(c);d=0;return d|0}function Mf(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,g=0.0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0;O=u;u=u+1200|0;M=O;d=f[f[a+20>>2]>>2]|0;N=d+16|0;e=f[N>>2]|0;if(!e){u=O;return}J=d+20|0;K=(f[a+32>>2]|0)+8|0;L=(f[a+28>>2]|0)+88|0;H=a+24|0;I=(b|0)==0;F=(c|0)==0;G=b+-1|0;E=0;d=e;do{i=f[J>>2]|0;j=f[K>>2]|0;C=i+(E*52|0)+16|0;k=f[C>>2]|0;if(j){if(k){e=f[L>>2]|0;g=+((f[(f[(f[H>>2]|0)+24>>2]|0)+(E*52|0)+24>>2]|0)>>>0)*.0625;a=0;do{h=X(k,a)|0;c=0;do{D=(h+c|0)*3|0;f[M+(a*120|0)+(c*12|0)>>2]=~~(+(f[e+(D<<2)>>2]|0)*g);f[M+(a*120|0)+(c*12|0)+4>>2]=~~(+(f[e+(D+1<<2)>>2]|0)*g);f[M+(a*120|0)+(c*12|0)+8>>2]=~~(+(f[e+(D+2<<2)>>2]|0)*g);c=c+1|0}while(c>>>0>>0);a=a+1|0}while(a>>>0>>0);D=9}}else D=9;if((D|0)==9){D=0;if(k){B=i+(E*52|0)+24|0;A=0;d=k;do{y=f[B>>2]|0;z=y+(A*136|0)+24|0;a=f[z>>2]|0;if(a){w=y+(A*136|0)+16|0;x=y+(A*136|0)+20|0;v=0;c=f[x>>2]|0;d=f[w>>2]|0;do{if(X(c,d)|0){r=y+(A*136|0)+28+(v*36|0)+20|0;s=M+(b*120|0)+(A*12|0)+(v<<2)|0;t=M+(G*120|0)+(A*12|0)+(v<<2)|0;q=0;do{d=f[r>>2]|0;p=X(f[d+(q*40|0)+20>>2]|0,f[d+(q*40|0)+16>>2]|0)|0;a:do if(p|0){o=d+(q*40|0)+24|0;i=f[s>>2]|0;if(I){d=0;while(1){c=f[o>>2]|0;e=f[c+(d*52|0)+4>>2]|0;a=(f[(f[(f[H>>2]|0)+24>>2]|0)+(E*52|0)+24>>2]|0)-(f[c+(d*52|0)+28>>2]|0)|0;a=(i|0)>(a|0)?i-a|0:0;h=c+(d*52|0)+44|0;f[h>>2]=0;a=(a|0)==0?0:(a*3|0)+-2|0;f[e>>2]=a;if(a|0?(n=f[c+(d*52|0)>>2]|0,f[e+4>>2]=f[(f[c+(d*52|0)+8>>2]|0)+((a+-1|0)*24|0)>>2],f[e+16>>2]=n,!F):0)f[h>>2]=a;d=d+1|0;if(d>>>0>=p>>>0)break a}}n=f[t>>2]|0;m=i-n|0;j=0;do{a=f[o>>2]|0;c=a+(j*52|0)|0;k=f[a+(j*52|0)+4>>2]|0;l=(f[(f[(f[H>>2]|0)+24>>2]|0)+(E*52|0)+24>>2]|0)-(f[a+(j*52|0)+28>>2]|0)|0;d=m+(n-l)|0;d=(n|0)>(l|0)?m:(d|0)>0?d:0;l=a+(j*52|0)+44|0;e=f[l>>2]|0;h=(e|0)==0;if(h)i=(d|0)==0?0:(d*3|0)+-2|0;else i=(d*3|0)+e|0;d=i-e|0;f[k+(b*24|0)>>2]=d;do if(d|0){a=f[a+(j*52|0)+8>>2]|0;d=f[a+((i+-1|0)*24|0)>>2]|0;if(h)a=f[c>>2]|0;else{h=f[a+((e+-1|0)*24|0)>>2]|0;a=(f[c>>2]|0)+h|0;d=d-h|0}f[k+(b*24|0)+4>>2]=d;f[k+(b*24|0)+16>>2]=a;if(F)break;f[l>>2]=i}while(0);j=j+1|0}while(j>>>0

>>0)}while(0);q=q+1|0;d=f[w>>2]|0;c=f[x>>2]|0}while(q>>>0<(X(c,d)|0)>>>0);a=f[z>>2]|0}v=v+1|0}while(v>>>0>>0);d=f[C>>2]|0}A=A+1|0}while(A>>>0>>0);d=f[N>>2]|0}}E=E+1|0}while(E>>>0>>0);u=O;return}function Nf(a,b,c,d){a=a|0;b=b|0;c=+c;d=d|0;var e=0,g=0.0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0;a=f[f[a+20>>2]>>2]|0;G=a+40+(b<<3)|0;p[G>>3]=0.0;H=a+16|0;e=f[H>>2]|0;if(!e)return;E=a+20|0;F=(b|0)==0;D=(d|0)==0;C=0;a=e;do{d=f[E>>2]|0;B=d+(C*52|0)+16|0;e=f[B>>2]|0;if(e){A=d+(C*52|0)+24|0;z=0;a=e;do{x=f[A>>2]|0;y=x+(z*136|0)+24|0;d=f[y>>2]|0;if(d){v=x+(z*136|0)+16|0;w=x+(z*136|0)+20|0;u=0;e=f[w>>2]|0;a=f[v>>2]|0;do{if(X(e,a)|0){t=x+(z*136|0)+28+(u*36|0)+20|0;s=0;do{d=f[t>>2]|0;r=X(f[d+(s*40|0)+20>>2]|0,f[d+(s*40|0)+16>>2]|0)|0;if(r){n=d+(s*40|0)+24|0;m=0;do{j=f[n>>2]|0;k=j+(m*52|0)|0;o=f[j+(m*52|0)+4>>2]|0;q=j+(m*52|0)+44|0;if(F){f[q>>2]=0;l=0}else l=f[q>>2]|0;h=f[j+(m*52|0)+48>>2]|0;if(l>>>0>>0){i=f[j+(m*52|0)+8>>2]|0;a=l;e=l;do{d=f[i+(e*24|0)>>2]|0;if(!a)g=+p[i+(e*24|0)+8>>3];else{I=a+-1|0;g=+p[i+(e*24|0)+8>>3]-+p[i+(I*24|0)+8>>3];d=d-(f[i+(I*24|0)>>2]|0)|0}if(!d)d=g!=0.0;else d=c-g/+(d>>>0)<2.220446049250313e-16;e=e+1|0;a=d?e:a}while(e>>>0>>0);h=a}else h=l;I=h-l|0;f[o+(b*24|0)>>2]=I;if(I){d=f[j+(m*52|0)+8>>2]|0;e=h+-1|0;a=f[d+(e*24|0)>>2]|0;if(!l){f[o+(b*24|0)+16>>2]=f[k>>2];g=+p[d+(e*24|0)+8>>3]}else{l=l+-1|0;I=f[d+(l*24|0)>>2]|0;f[o+(b*24|0)+16>>2]=(f[k>>2]|0)+I;g=+p[d+(e*24|0)+8>>3]-+p[d+(l*24|0)+8>>3];a=a-I|0}f[o+(b*24|0)+4>>2]=a;p[o+(b*24|0)+8>>3]=g;p[G>>3]=g+ +p[G>>3];if(!D)f[q>>2]=h}else p[o+(b*24|0)+8>>3]=0.0;m=m+1|0}while(m>>>0>>0);e=f[w>>2]|0;a=f[v>>2]|0}s=s+1|0}while(s>>>0<(X(e,a)|0)>>>0);d=f[y>>2]|0}u=u+1|0}while(u>>>0>>0);a=f[B>>2]|0}z=z+1|0}while(z>>>0>>0);a=f[H>>2]|0}C=C+1|0}while(C>>>0>>0);return}function Of(a,c,e,g,h){a=a|0;c=c|0;e=e|0;g=g|0;h=h|0;var i=0,j=0,k=0.0,l=0.0,m=0.0,o=0.0,q=0.0,r=0.0,s=0,t=0,v=0,w=0,x=0,y=0,z=0.0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0.0,K=0,L=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,Y=0,Z=0,_=0,$=0,aa=0;$=u;u=u+800|0;Y=$;Z=f[a+28>>2]|0;U=f[f[a+20>>2]>>2]|0;V=f[a+32>>2]|0;R=U+24|0;f[R>>2]=0;S=f[U+16>>2]|0;if(!S){J=1797693134862315708145274.0e284;m=0.0;k=0.0;i=0}else{T=a+24|0;Q=f[U+20>>2]|0;P=0;l=1797693134862315708145274.0e284;m=0.0;k=0.0;i=0;do{N=Q+(P*52|0)+48|0;f[N>>2]=0;O=f[Q+(P*52|0)+16>>2]|0;if(!O)j=0;else{L=f[Q+(P*52|0)+24>>2]|0;K=0;j=0;do{G=f[L+(K*136|0)+24>>2]|0;if(G){H=X(f[L+(K*136|0)+20>>2]|0,f[L+(K*136|0)+16>>2]|0)|0;I=(H|0)==0;F=0;do{if(!I){E=f[L+(K*136|0)+28+(F*36|0)+20>>2]|0;D=0;do{B=X(f[E+(D*40|0)+20>>2]|0,f[E+(D*40|0)+16>>2]|0)|0;if(B){C=E+(D*40|0)+24|0;A=0;do{y=f[C>>2]|0;v=f[y+(A*52|0)+48>>2]|0;if(v){w=f[y+(A*52|0)+8>>2]|0;x=w+8|0;t=0;do{s=f[w+(t*24|0)>>2]|0;if(!t)o=+p[x>>3];else{aa=t+-1|0;o=+p[w+(t*24|0)+8>>3]-+p[w+(aa*24|0)+8>>3];s=s-(f[w+(aa*24|0)>>2]|0)|0}if(s){J=o/+(s|0);l=Jm?J:m}t=t+1|0}while(t>>>0>>0)}aa=X((f[y+(A*52|0)+24>>2]|0)-(f[y+(A*52|0)+16>>2]|0)|0,(f[y+(A*52|0)+20>>2]|0)-(f[y+(A*52|0)+12>>2]|0)|0)|0;i=aa+i|0;f[R>>2]=i;j=aa+j|0;f[N>>2]=j;A=A+1|0}while(A>>>0>>0)}D=D+1|0}while(D>>>0>>0)}F=F+1|0}while(F>>>0>>0)}K=K+1|0}while(K>>>0>>0)}J=+(1<>2]|0)+24>>2]|0)+(P*52|0)+24>>2]|0)+-1.0;k=k+J*J*+(j|0);P=P+1|0}while(P>>>0>>0);J=l}I=(h|0)!=0;if(I){S=f[h+88>>2]|0;T=f[a+36>>2]|0;f[S+(T*592|0)+552>>2]=i;p[S+(T*592|0)+560>>3]=+p[U+32>>3];i=V+8|0;aa=Hc(f[i>>2]<<3)|0;f[S+(T*592|0)>>2]=aa;if(!aa){aa=0;u=$;return aa|0}}else i=V+8|0;if(!(f[i>>2]|0)){aa=1;u=$;return aa|0}A=U+32|0;B=Z+93|0;C=h+88|0;D=a+36|0;E=U+40|0;F=a+24|0;G=a+8|0;H=a+16|0;y=0;while(1){r=+n[V+20+(y<<2)>>2];T=r>0.0;v=~~+W(+r)>>>0;v=T&v>>>0>>0?v:g;r=+n[V+5184+(y<<2)>>2];z=+p[A>>3]-k/+M(10.0,+(r/10.0));aa=b[B>>0]|0;if((aa&1)==0|T^1?!((aa&4)!=0&r>0.0):0)l=J;else{x=Yg(f[F>>2]|0,Z)|0;if(!x){i=0;_=56;break}w=y+1|0;s=Y+(y+-1<<3)|0;t=U+40+(y<<3)|0;if(!y){j=0;l=0.0;q=m;r=J;do{o=(r+q)*.5;Nf(a,0,o,0);do if(!(b[B>>0]&4))if(!(Ug(x,f[D>>2]|0,U,w,c,e,v,h,f[G>>2]|0,f[a>>2]|0,f[H>>2]|0,0)|0))r=o;else{l=o;q=o;_=39}else{if(((d[Z>>1]|0)+-3&65535)>=4)if(+p[E>>3]>2]|0,U,w,c,e,v,h,f[G>>2]|0,f[a>>2]|0,f[H>>2]|0,0)|0)if(+p[E>>3]>0]&4))if(!(Ug(x,f[D>>2]|0,U,w,c,e,v,h,f[G>>2]|0,f[a>>2]|0,f[H>>2]|0,0)|0))r=o;else{l=o;q=o;_=47}else{if(((d[Z>>1]|0)+-3&65535)>=4)if(+p[s>>3]+ +p[t>>3]>2]|0,U,w,c,e,v,h,f[G>>2]|0,f[a>>2]|0,f[H>>2]|0,0)|0)if(+p[s>>3]+ +p[t>>3]>2]|0)+((f[D>>2]|0)*592|0)>>2]|0)+(y<<3)>>3]=l;Nf(a,y,l,1);if(!y)l=+p[E>>3];else l=+p[Y+(y+-1<<3)>>3]+ +p[U+40+(y<<3)>>3];p[Y+(y<<3)>>3]=l;y=y+1|0;if(y>>>0>=(f[i>>2]|0)>>>0){i=1;_=56;break}}if((_|0)==56){u=$;return i|0}return 0}function Pf(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,g=0;f[a+24>>2]=b;f[a+28>>2]=c;e=Ic(1,848)|0;d=a+20|0;f[f[d>>2]>>2]=e;if(!e){c=0;return c|0}e=b+16|0;g=Ic(f[e>>2]|0,52)|0;b=f[f[d>>2]>>2]|0;f[b+20>>2]=g;if(!g){g=0;return g|0}f[b+16>>2]=f[e>>2];f[a>>2]=f[c+84>>2];g=1;return g|0}function Qf(a){a=a|0;var c=0,d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;if(!a)return;s=a+20|0;c=f[s>>2]|0;do if(c|0){r=(b[a+40>>0]&1)==0?3:4;d=f[c>>2]|0;if(d){o=d+20|0;c=f[o>>2]|0;n=d+16|0;if(f[n>>2]|0){m=0;while(1){l=c+24|0;d=f[l>>2]|0;if(d|0){j=f[c+28>>2]|0;k=(j>>>0)/136|0;if(j>>>0>135){j=0;while(1){i=d+48|0;e=f[i>>2]|0;if(e|0){g=f[d+52>>2]|0;h=(g>>>0)/40|0;if(g>>>0>39){g=0;while(1){t=e+32|0;eg(f[t>>2]|0);f[t>>2]=0;t=e+36|0;eg(f[t>>2]|0);f[t>>2]=0;Sa[r&7](e);g=g+1|0;if(g>>>0>=h>>>0)break;else e=e+40|0}e=f[i>>2]|0}Mc(e);f[i>>2]=0}i=d+84|0;e=f[i>>2]|0;if(e|0){t=f[d+88>>2]|0;h=(t>>>0)/40|0;if(t>>>0>39){g=0;while(1){t=e+32|0;eg(f[t>>2]|0);f[t>>2]=0;t=e+36|0;eg(f[t>>2]|0);f[t>>2]=0;Sa[r&7](e);g=g+1|0;if(g>>>0>=h>>>0)break;else e=e+40|0}e=f[i>>2]|0}Mc(e);f[i>>2]=0}i=d+120|0;e=f[i>>2]|0;if(e|0){t=f[d+124>>2]|0;h=(t>>>0)/40|0;if(t>>>0>39){g=0;while(1){t=e+32|0;eg(f[t>>2]|0);f[t>>2]=0;t=e+36|0;eg(f[t>>2]|0);f[t>>2]=0;Sa[r&7](e);g=g+1|0;if(g>>>0>=h>>>0)break;else e=e+40|0}e=f[i>>2]|0}Mc(e);f[i>>2]=0}j=j+1|0;if(j>>>0>=k>>>0)break;else d=d+136|0}d=f[l>>2]|0}Mc(d);f[l>>2]=0}if(f[c+36>>2]|0?(p=c+32|0,q=f[p>>2]|0,q|0):0){Kc(q);f[p>>2]=0;f[p+4>>2]=0;f[p+8>>2]=0;f[p+12>>2]=0}m=m+1|0;if(m>>>0>=(f[n>>2]|0)>>>0)break;else c=c+52|0}c=f[o>>2]|0}Mc(c);f[o>>2]=0;Mc(f[f[s>>2]>>2]|0);c=f[s>>2]|0;f[c>>2]=0;if(!c)break}Mc(c);f[s>>2]=0}while(0);Mc(a);return}function Rf(a){a=a|0;var b=0,c=0,d=0,e=0,g=0;g=a+24|0;b=f[g>>2]|0;if(!b)return;d=f[a+28>>2]|0;e=(d>>>0)/52|0;if(d>>>0>51){d=0;while(1){a=f[b>>2]|0;if(a|0){Mc(a+-1|0);f[b>>2]=0}a=b+4|0;c=f[a>>2]|0;if(c|0){Mc(c);f[a>>2]=0}a=b+8|0;c=f[a>>2]|0;if(c|0){Mc(c);f[a>>2]=0}d=d+1|0;if(d>>>0>=e>>>0)break;else b=b+52|0}b=f[g>>2]|0}Mc(b);f[g>>2]=0;return}function Sf(a){a=a|0;var b=0,c=0,d=0,e=0,g=0;g=a+24|0;b=f[g>>2]|0;if(!b)return;d=f[a+28>>2]|0;e=(d>>>0)/56|0;if(d>>>0>55){d=0;while(1){a=f[b>>2]|0;if(a|0){Mc(a);f[b>>2]=0}a=b+4|0;c=f[a>>2]|0;if(c|0){Mc(c);f[a>>2]=0}d=d+1|0;if(d>>>0>=e>>>0)break;else b=b+56|0}b=f[g>>2]|0}Mc(b);f[g>>2]=0;return}function Tf(a){a=a|0;var b=0,c=0,d=0,e=0,g=0,h=0;d=a+32|0;e=f[d>>2]|0;b=a+40|0;c=f[b>>2]|0;do if(e){g=a+44|0;if(c>>>0<=(f[g>>2]|0)>>>0){h=1;return h|0}if(f[a+36>>2]|0){Kc(e);e=Jc(f[b>>2]|0)|0;f[d>>2]=e;if(e|0){f[g>>2]=f[b>>2];break}f[g>>2]=0;f[b>>2]=0;f[a+36>>2]=0;h=0;return h|0}else h=4}else h=4;while(0);do if((h|0)==4){h=Jc(c)|0;f[d>>2]=h;if(!h){h=0;return h|0}else{f[a+44>>2]=f[b>>2];break}}while(0);f[a+36>>2]=1;h=1;return h|0}function Uf(a,b,c){a=a|0;b=b|0;c=c|0;return Vf(a,b,1,1.0,52,c)|0}function Vf(a,c,d,e,g,h){a=a|0;c=c|0;d=d|0;e=+e;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0,ta=0,ua=0,va=0,wa=0,xa=0,ya=0,za=0,Aa=0,Ba=0,Ca=0,Da=0,Ea=0,Fa=0,Ga=0,Ha=0,Ia=0,Ja=0,La=0,Ma=0,Na=0,Oa=0,Pa=0,Qa=0,Ra=0,Sa=0,Ta=0,Ua=0,Va=0,Wa=0,Xa=0,Ya=0.0;Xa=u;u=u+112|0;Ta=Xa+104|0;Sa=Xa+96|0;Ra=Xa+88|0;Qa=Xa+80|0;Pa=Xa+72|0;Oa=Xa+64|0;Na=Xa+56|0;Ma=Xa+48|0;Wa=Xa+40|0;Va=Xa+32|0;Ua=Xa+24|0;k=f[a+28>>2]|0;Ja=f[f[a+20>>2]>>2]|0;l=f[(f[k+76>>2]|0)+(c*5640|0)+5584>>2]|0;m=f[Ja+20>>2]|0;j=f[a+24>>2]|0;o=f[j+24>>2]|0;i=f[k+24>>2]|0;r=f[k+12>>2]|0;La=(X(r,(c>>>0)%(i>>>0)|0)|0)+(f[k+4>>2]|0)|0;p=f[j>>2]|0;p=La>>>0>p>>>0?La:p;f[Ja>>2]=p;La=Zi(r|0,0,La|0,0)|0;La=0-I|La;r=f[j+8>>2]|0;r=La>>>0>>0?La:r;La=Ja+8|0;f[La>>2]=r;if(!((p|0)>-1&(r|0)>(p|0))){Mb(h,1,19655,Xa)|0;Wa=0;u=Xa;return Wa|0}q=f[k+16>>2]|0;Fa=(X(q,(c>>>0)/(i>>>0)|0)|0)+(f[k+8>>2]|0)|0;i=f[j+4>>2]|0;i=Fa>>>0>i>>>0?Fa:i;Ia=Ja+4|0;f[Ia>>2]=i;Fa=Zi(q|0,0,Fa|0,0)|0;Fa=0-I|Fa;q=f[j+12>>2]|0;q=Fa>>>0>>0?Fa:q;Fa=Ja+12|0;f[Fa>>2]=q;if(!((i|0)>-1&(q|0)>(i|0))){Mb(h,1,19693,Xa+8|0)|0;Wa=0;u=Xa;return Wa|0}if(!(f[l+4>>2]|0)){Mb(h,1,19731,Xa+16|0)|0;Wa=0;u=Xa;return Wa|0}Ga=Ja+16|0;if(!(f[Ga>>2]|0)){Wa=1;u=Xa;return Wa|0}Ea=k+80|0;Da=a+40|0;Ca=(d|0)==0;c=0;Ba=m;j=p;k=r;a=q;a:while(1){f[o+36>>2]=0;za=f[o>>2]|0;xa=(j+-1+za|0)/(za|0)|0;f[Ba>>2]=xa;ya=f[o+4>>2]|0;j=(i+-1+ya|0)/(ya|0)|0;Aa=Ba+4|0;f[Aa>>2]=j;k=(k+-1+za|0)/(za|0)|0;za=Ba+8|0;f[za>>2]=k;i=(a+-1+ya|0)/(ya|0)|0;ya=Ba+12|0;f[ya>>2]=i;k=k-xa|0;if(k){i=i-j|0;if((4294967295/(k>>>0)|0)>>>0>>0){Ha=12;break}}else i=i-j|0;i=X(i,k)|0;if(i>>>0>1073741823){Ha=14;break}j=i<<2;i=f[l+4>>2]|0;xa=Ba+16|0;f[xa>>2]=i;k=f[Ea>>2]|0;f[Ba+20>>2]=i>>>0>>0?1:i-k|0;k=Ba+40|0;f[k>>2]=j;do if(b[Da>>0]&1){a=Ba+32|0;d=f[a>>2]|0;if(d){m=Ba+44|0;if(j>>>0<=(f[m>>2]|0)>>>0)break;i=Ba+36|0;if(f[i>>2]|0){Kc(d);wa=Jc(f[k>>2]|0)|0;f[a>>2]=wa;if(!wa){Ha=22;break a}f[m>>2]=f[k>>2]}else Ha=19}else Ha=19;if((Ha|0)==19){Ha=0;wa=Jc(j)|0;f[a>>2]=wa;if(!wa)break a;f[Ba+44>>2]=f[k>>2];i=Ba+36|0}f[i>>2]=1;i=f[xa>>2]|0}while(0);k=i*136|0;a=Ba+24|0;i=f[a>>2]|0;if(i){j=Ba+28|0;if(k>>>0>(f[j>>2]|0)>>>0){i=Lc(i,k)|0;if(!i){Ha=31;break}f[a>>2]=i;wa=f[j>>2]|0;ij(i+wa|0,0,k-wa|0)|0;f[j>>2]=k}}else{i=Hc(k)|0;f[a>>2]=i;if(!i){c=0;Ha=100;break}f[Ba+28>>2]=k;ij(i|0,0,k|0)|0}wa=(f[l+20>>2]|0)==0?7:8;i=f[xa>>2]|0;if(i|0){sa=l+8|0;ta=l+12|0;ua=o+24|0;va=l+804|0;ra=0;qa=f[a>>2]|0;q=l+28|0;while(1){ka=i;i=i+-1|0;pa=f[Ba>>2]|0;la=fj(1,0,i|0)|0;ma=I;na=Zi(la|0,ma|0,-1,-1)|0;oa=I;pa=Zi(na|0,oa|0,pa|0,((pa|0)<0)<<31>>31|0)|0;pa=dj(pa|0,I|0,i|0)|0;f[qa>>2]=pa;ha=f[Aa>>2]|0;ha=Zi(na|0,oa|0,ha|0,((ha|0)<0)<<31>>31|0)|0;ha=dj(ha|0,I|0,i|0)|0;f[qa+4>>2]=ha;j=f[za>>2]|0;j=Zi(na|0,oa|0,j|0,((j|0)<0)<<31>>31|0)|0;j=dj(j|0,I|0,i|0)|0;f[qa+8>>2]=j;ia=f[ya>>2]|0;ia=Zi(na|0,oa|0,ia|0,((ia|0)<0)<<31>>31|0)|0;ia=dj(ia|0,I|0,i|0)|0;f[qa+12>>2]=ia;d=f[l+812+(ra<<2)>>2]|0;a=f[l+944+(ra<<2)>>2]|0;p=pa>>d<>a<>31|0)|0;ja=dj(ja|0,I|0,d|0)|0;k=fj(1,0,a|0)|0;k=Zi(k|0,I|0,-1,-1)|0;k=Zi(k|0,I|0,ia|0,((ia|0)<0)<<31>>31|0)|0;k=dj(k|0,I|0,a|0)|0;ja=(ja<>d;j=(pa|0)==(j|0)?0:ja;pa=qa+16|0;f[pa>>2]=j;k=(ha|0)==(ia|0)?0:(k<>a;f[qa+20>>2]=k;if(j|0?(4294967295/(ja>>>0)|0)>>>0>>0:0){Ha=37;break a}ha=X(k,j)|0;if(ha>>>0>107374182){Ha=39;break a}ia=ha*40|0;ja=(ra|0)==0;if(ja)j=1;else{p=Zi(p|0,((p|0)<0)<<31>>31|0,1,0)|0;p=ej(p|0,I|0,1)|0;m=Zi(m|0,((m|0)<0)<<31>>31|0,1,0)|0;m=ej(m|0,I|0,1)|0;a=a+-1|0;d=d+-1|0;j=3}ga=qa+24|0;f[ga>>2]=j;R=f[sa>>2]|0;R=R>>>0>>0?R:d;S=f[ta>>2]|0;S=S>>>0>>0?S:a;T=(ha|0)!=0;U=(ha|0)==0;V=1<>2]|0;j=Zi(na|0,oa|0,j|0,((j|0)<0)<<31>>31|0)|0;j=dj(j|0,I|0,i|0)|0;k=f[Aa>>2]|0;k=Zi(na|0,oa|0,k|0,((k|0)<0)<<31>>31|0)|0;k=dj(k|0,I|0,i|0)|0;r=f[za>>2]|0;r=Zi(na|0,oa|0,r|0,((r|0)<0)<<31>>31|0)|0;r=dj(r|0,I|0,i|0)|0;t=f[ya>>2]|0;y=0;s=t;t=((t|0)<0)<<31>>31;v=la;w=ma;x=i}else{y=P+1|0;j=f[Ba>>2]|0;w=fj(y&1|0,0,i|0)|0;w=_i(ea|0,fa|0,w|0,I|0)|0;v=I;j=Zi(w|0,v|0,j|0,((j|0)<0)<<31>>31|0)|0;j=dj(j|0,I|0,ka|0)|0;k=f[Aa>>2]|0;t=fj(y>>>1|0,0,i|0)|0;s=I;r=_i(ea|0,fa|0,t|0,s|0)|0;k=Zi(r|0,I|0,k|0,((k|0)<0)<<31>>31|0)|0;k=dj(k|0,I|0,ka|0)|0;r=f[za>>2]|0;r=Zi(w|0,v|0,r|0,((r|0)<0)<<31>>31|0)|0;r=dj(r|0,I|0,ka|0)|0;v=f[ya>>2]|0;s=_i(v|0,((v|0)<0)<<31>>31|0,t|0,s|0)|0;t=I;v=ca;w=da;x=ka}f[Q+16>>2]=y;f[Q>>2]=j;O=Q+4|0;f[O>>2]=k;N=Q+8|0;f[N>>2]=r;r=Zi(s|0,t|0,-1,-1)|0;r=Zi(r|0,I|0,v|0,w|0)|0;r=dj(r|0,I|0,x|0)|0;M=Q+12|0;f[M>>2]=r;r=Ka[wa&15](y)|0;Ya=+(f[q+4>>2]|0)*.00048828125+1.0;Ya=+Ni(1.0,(f[ua>>2]|0)+r-(f[q>>2]|0)|0)*Ya*e;n[Q+32>>2]=Ya;f[Q+28>>2]=(f[q>>2]|0)+-1+(f[va>>2]|0);r=Q+20|0;k=f[r>>2]|0;if(!(T&(k|0)==0)){j=Q+24|0;if((f[j>>2]|0)>>>0>>0){k=Lc(k,ia)|0;if(!k){Ha=53;break a}f[r>>2]=k;Ha=f[j>>2]|0;ij(k+Ha|0,0,ia-Ha|0)|0;Ha=54}}else{j=Hc(ia)|0;f[r>>2]=j;if(!j){Ha=48;break a}ij(j|0,0,ia|0)|0;j=Q+24|0;Ha=54}if((Ha|0)==54){Ha=0;f[j>>2]=ia}if(!U){L=0;B=f[r>>2]|0;while(1){C=f[pa>>2]|0;G=(((L>>>0)%(C>>>0)|0)<>>0)/(C>>>0)|0)<>2]|0;F=(G|0)>(F|0)?G:F;f[B>>2]=F;G=f[O>>2]|0;G=(C|0)>(G|0)?C:G;C=B+4|0;f[C>>2]=G;r=f[N>>2]|0;r=(D|0)<(r|0)?D:r;D=B+8|0;f[D>>2]=r;k=f[M>>2]|0;k=(E|0)<(k|0)?E:k;E=B+12|0;f[E>>2]=k;F=F>>R<>S<>31|0)|0;r=dj(r|0,I|0,R|0)|0;k=Zi(_|0,$|0,k|0,((k|0)<0)<<31>>31|0)|0;k=dj(k|0,I|0,S|0)|0;r=(r<>R;H=B+16|0;f[H>>2]=r;k=(k<>S;v=B+20|0;f[v>>2]=k;J=X(r,k)|0;t=X(J,g)|0;K=B+24|0;s=f[K>>2]|0;do if((s|0)==0&(J|0)!=0){j=Hc(t)|0;f[K>>2]=j;if(!j){c=0;Ha=100;break a}ij(j|0,0,t|0)|0;j=B+28|0;Ha=64}else{j=B+28|0;if(t>>>0<=(f[j>>2]|0)>>>0)break;k=Lc(s,t)|0;if(!k){Ha=63;break a}f[K>>2]=k;Ha=f[j>>2]|0;ij(k+Ha|0,0,t-Ha|0)|0;Ha=64}while(0);if((Ha|0)==64){Ha=0;f[j>>2]=t;r=f[H>>2]|0;k=f[v>>2]|0}s=B+32|0;j=f[s>>2]|0;if(!j)j=bg(r,k,h)|0;else j=dg(j,r,k,h)|0;f[s>>2]=j;if(!j)Mb(h,2,19944,Sa)|0;s=B+36|0;k=f[s>>2]|0;r=f[H>>2]|0;j=f[v>>2]|0;if(!k)j=bg(r,j,h)|0;else j=dg(k,r,j,h)|0;f[s>>2]=j;if(!j)Mb(h,2,19966,Ta)|0;if(J|0){A=0;do{x=f[H>>2]|0;w=(((A>>>0)%(x>>>0)|0)<>>0)/(x>>>0)|0)<>2]|0;j=v+(A*56|0)|0;if(!(f[j>>2]|0)){t=Hc(8192)|0;f[j>>2]=t;if(!t){c=0;Ha=100;break a}f[v+(A*56|0)+32>>2]=8192;t=Ic(10,32)|0;f[v+(A*56|0)+4>>2]=t;if(!t){c=0;Ha=100;break a}f[v+(A*56|0)+52>>2]=10;j=v+(A*56|0)+8|0}else{k=v+(A*56|0)+32|0;r=f[k>>2]|0;j=v+(A*56|0)+8|0;s=j;t=s+44|0;do{f[s>>2]=0;s=s+4|0}while((s|0)<(t|0));f[k>>2]=r}t=f[B>>2]|0;f[j>>2]=(w|0)>(t|0)?w:t;w=f[C>>2]|0;f[v+(A*56|0)+12>>2]=(x|0)>(w|0)?x:w;x=f[D>>2]|0;f[v+(A*56|0)+16>>2]=(y|0)<(x|0)?y:x;y=f[E>>2]|0;f[v+(A*56|0)+20>>2]=(z|0)<(y|0)?z:y}else{k=f[K>>2]|0;j=k+(A*52|0)+4|0;if((f[j>>2]|0)==0?(v=Ic(100,24)|0,f[j>>2]=v,(v|0)==0):0){c=0;Ha=100;break a}j=k+(A*52|0)+8|0;if((f[j>>2]|0)==0?(v=Ic(100,24)|0,f[j>>2]=v,(v|0)==0):0){c=0;Ha=100;break a}r=f[B>>2]|0;r=(w|0)>(r|0)?w:r;f[k+(A*52|0)+12>>2]=r;s=f[C>>2]|0;x=(x|0)>(s|0)?x:s;f[k+(A*52|0)+16>>2]=x;s=f[D>>2]|0;s=(y|0)<(s|0)?y:s;f[k+(A*52|0)+20>>2]=s;y=f[E>>2]|0;z=(z|0)<(y|0)?z:y;f[k+(A*52|0)+24>>2]=z;r=X(z-x|0,s-r<<2)|0;s=k+(A*52|0)+36|0;if(r>>>0<=(f[s>>2]|0)>>>0)break;k=k+(A*52|0)|0;j=f[k>>2]|0;if(j|0)Mc(j+-1|0);j=Hc(r|1)|0;f[k>>2]=j;if(!j){Ha=87;break a}f[s>>2]=r;b[j>>0]=0;f[k>>2]=(f[k>>2]|0)+1}while(0);A=A+1|0}while(A>>>0>>0)}L=L+1|0;if(L>>>0>=ha>>>0)break;else B=B+40|0}}q=q+8|0;P=P+1|0;if(P>>>0>=(f[ga>>2]|0)>>>0)break;else Q=Q+36|0}ra=ra+1|0;if(ra>>>0>=(f[xa>>2]|0)>>>0)break;else qa=qa+136|0}}c=c+1|0;if(c>>>0>=(f[Ga>>2]|0)>>>0){c=1;Ha=100;break}l=l+1080|0;Ba=Ba+52|0;o=o+52|0;j=f[Ja>>2]|0;i=f[Ia>>2]|0;k=f[La>>2]|0;a=f[Fa>>2]|0}switch(Ha|0){case 12:{Mb(h,1,19770,Ua)|0;Wa=0;u=Xa;return Wa|0}case 14:{Mb(h,1,19770,Va)|0;Wa=0;u=Xa;return Wa|0}case 22:{f[m>>2]=0;f[k>>2]=0;f[i>>2]=0;break}case 31:{Mb(h,1,19803,Ma)|0;Mc(f[a>>2]|0);f[a>>2]=0;f[j>>2]=0;Wa=0;u=Xa;return Wa|0}case 37:{Mb(h,1,19770,Na)|0;Wa=0;u=Xa;return Wa|0}case 39:{Mb(h,1,19770,Oa)|0;Wa=0;u=Xa;return Wa|0}case 48:{Mb(h,1,19843,Pa)|0;Wa=0;u=Xa;return Wa|0}case 53:{Mb(h,1,19843,Qa)|0;Mc(f[r>>2]|0);f[r>>2]=0;f[j>>2]=0;Wa=0;u=Xa;return Wa|0}case 63:{Mc(f[K>>2]|0);f[K>>2]=0;f[j>>2]=0;Mb(h,1,19886,Ra)|0;Wa=0;u=Xa;return Wa|0}case 87:{f[s>>2]=0;Wa=0;u=Xa;return Wa|0}case 100:{u=Xa;return c|0}}Mb(h,1,19770,Wa)|0;Wa=0;u=Xa;return Wa|0}function Wf(a,b,c){a=a|0;b=b|0;c=c|0;return Vf(a,b,0,.5,56,c)|0}function Xf(a){a=a|0;var b=0,c=0,d=0,e=0,g=0,h=0;b=f[a+24>>2]|0;e=f[b+16>>2]|0;if(!e){e=0;return e|0}d=f[(f[f[a+20>>2]>>2]|0)+20>>2]|0;b=f[b+24>>2]|0;a=0;c=0;while(1){h=f[b+24>>2]|0;h=(h>>>3)+((h&7|0)!=0&1)|0;g=(f[d+24>>2]|0)+((f[d+20>>2]|0)*136|0)+-136|0;a=(X(X((h|0)==3?4:h,(f[g+8>>2]|0)-(f[g>>2]|0)|0)|0,(f[g+12>>2]|0)-(f[g+4>>2]|0)|0)|0)+a|0;c=c+1|0;if(c>>>0>=e>>>0)break;else{d=d+52|0;b=b+52|0}}return a|0}function Yf(a,c,d,e,g,h){a=a|0;c=c|0;d=d|0;e=e|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0,w=0,x=0,y=0;y=u;u=u+16|0;w=y;if(!(f[a+8>>2]|0)){f[a+36>>2]=c;t=a+28|0;i=f[(f[t>>2]|0)+76>>2]|0;x=a+32|0;f[x>>2]=i+(c*5640|0);v=(h|0)==0;s=a+20|0;if(!v){j=f[(f[f[s>>2]>>2]|0)+20>>2]|0;n=f[i+(c*5640|0)+5584>>2]|0;o=j+16|0;if(!(f[o>>2]|0)){j=0;i=h+88|0}else{l=f[j+24>>2]|0;i=h+88|0;m=f[i>>2]|0;j=0;k=0;do{r=l+(k*136|0)+16|0;f[m+(c*592|0)+20+(k<<2)>>2]=f[r>>2];q=l+(k*136|0)+20|0;f[m+(c*592|0)+152+(k<<2)>>2]=f[q>>2];j=(X(f[q>>2]|0,f[r>>2]|0)|0)+j|0;f[m+(c*592|0)+284+(k<<2)>>2]=f[n+812+(k<<2)>>2];f[m+(c*592|0)+416+(k<<2)>>2]=f[n+944+(k<<2)>>2];k=k+1|0}while(k>>>0<(f[o>>2]|0)>>>0)}r=Ic(X(X(f[h+52>>2]|0,j)|0,f[h+56>>2]|0)|0,32)|0;f[(f[i>>2]|0)+(c*592|0)+548>>2]=r;if(!r){h=0;u=y;return h|0}}i=f[f[s>>2]>>2]|0;r=i+16|0;if(!(f[r>>2]|0)){j=f[i+20>>2]|0;m=f[x>>2]|0;i=0}else{m=f[x>>2]|0;j=f[i+20>>2]|0;c=0;p=j;q=f[m+5584>>2]|0;while(1){n=f[p+32>>2]|0;o=X((f[p+12>>2]|0)-(f[p+4>>2]|0)|0,(f[p+8>>2]|0)-(f[p>>2]|0)|0)|0;i=(o|0)!=0;if((f[q+20>>2]|0)==1){if(i){l=q+1076|0;k=0;i=n;while(1){f[i>>2]=(f[i>>2]|0)-(f[l>>2]|0);k=k+1|0;if((k|0)==(o|0))break;else i=i+4|0}}}else if(i){l=q+1076|0;i=n;k=0;while(1){f[i>>2]=(f[i>>2]|0)-(f[l>>2]|0)<<11;k=k+1|0;if((k|0)==(o|0))break;else i=i+4|0}}c=c+1|0;i=f[r>>2]|0;if(c>>>0>=i>>>0)break;else{p=p+52|0;q=q+1080|0}}}n=X((f[j+12>>2]|0)-(f[j+4>>2]|0)|0,(f[j+8>>2]|0)-(f[j>>2]|0)|0)|0;a:do switch(f[m+16>>2]|0){case 0:break;case 2:{if(f[m+5608>>2]|0){l=Hc(i<<2)|0;if(!l){h=0;u=y;return h|0}i=f[r>>2]|0;if(!i)i=0;else{k=0;while(1){f[l+(k<<2)>>2]=f[j+32>>2];k=k+1|0;if((k|0)==(i|0))break;else j=j+52|0}}r=(yf(f[(f[x>>2]|0)+5608>>2]|0,n,l,i,f[(f[(f[a+24>>2]|0)+24>>2]|0)+32>>2]|0)|0)==0;Mc(l);if(r){h=0;u=y;return h|0}}break}default:{k=f[j+32>>2]|0;l=f[j+84>>2]|0;i=f[j+136>>2]|0;if(!(f[(f[m+5584>>2]|0)+20>>2]|0)){wf(k,l,i,n);break a}else{uf(k,l,i,n);break a}}}while(0);i=f[f[s>>2]>>2]|0;l=i+16|0;b:do if(f[l>>2]|0){k=f[(f[x>>2]|0)+5584>>2]|0;i=f[i+20>>2]|0;j=0;c:while(1){switch(f[k+20>>2]|0){case 1:{if(!(xg(i)|0)){i=0;j=53;break c}break}case 0:{if(!(Eg(i)|0)){i=0;j=53;break c}break}default:{}}j=j+1|0;if(j>>>0>=(f[l>>2]|0)>>>0)break b;else{k=k+1080|0;i=i+52|0}}if((j|0)==53){u=y;return i|0}}while(0);k=f[x>>2]|0;l=Og(1)|0;if(!l){h=0;u=y;return h|0}do if((f[k+16>>2]|0)==1)if(!(f[(f[k+5584>>2]|0)+20>>2]|0)){i=3;j=tf()|0;break}else{i=3;j=sf()|0;break}else{i=f[(f[a+24>>2]|0)+16>>2]|0;j=f[k+5600>>2]|0}while(0);s=(Tg(l,f[f[s>>2]>>2]|0,k,j,i)|0)==0;Pg(l);if(s){h=0;u=y;return h|0}i=f[t>>2]|0;f[w>>2]=0;if(!v)f[h+12>>2]=0;if(!(b[i+93>>0]&5)){if(f[(f[x>>2]|0)+8>>2]|0){i=0;do{Mf(a,i,1);i=i+1|0}while(i>>>0<(f[(f[x>>2]|0)+8>>2]|0)>>>0)}}else if(!(Of(a,d,w,g,h)|0)){h=0;u=y;return h|0}}if(h|0)f[h+12>>2]=1;i=Yg(f[a+24>>2]|0,f[a+28>>2]|0)|0;if(!i){h=0;u=y;return h|0}h=(Ug(i,f[a+36>>2]|0,f[f[a+20>>2]>>2]|0,f[(f[a+32>>2]|0)+8>>2]|0,d,e,g,h,f[a+4>>2]|0,f[a>>2]|0,f[a+16>>2]|0,1)|0)!=0;Zg(i);h=h&1;u=y;return h|0}function Zf(a,b,c,d,e,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0;v=u;u=u+16|0;k=v+8|0;j=v;h=v+12|0;i=a+36|0;f[i>>2]=d;p=f[a+28>>2]|0;q=a+32|0;f[q>>2]=(f[p+76>>2]|0)+(d*5640|0);f[h>>2]=0;r=a+24|0;d=Yg(f[r>>2]|0,p)|0;if(!d){t=0;u=v;return t|0}l=a+20|0;p=(Wg(d,f[i>>2]|0,f[f[l>>2]>>2]|0,b,h,c,e,g)|0)==0;Zg(d);if(p){t=0;u=v;return t|0}d=f[f[l>>2]>>2]|0;c=f[(f[q>>2]|0)+5584>>2]|0;a=f[d+20>>2]|0;h=Og(0)|0;if(!h){t=0;u=v;return t|0}e=d+16|0;a:do if(f[e>>2]|0){b=0;d=c;while(1){if(!(Qg(h,a,d)|0))break;b=b+1|0;if(b>>>0>=(f[e>>2]|0)>>>0)break a;else{a=a+52|0;d=d+1080|0}}Pg(h);t=0;u=v;return t|0}while(0);Pg(h);d=f[f[l>>2]>>2]|0;h=d+16|0;do if(f[h>>2]|0){e=f[(f[q>>2]|0)+5584>>2]|0;d=f[d+20>>2]|0;a=0;b=f[(f[r>>2]|0)+24>>2]|0;while(1){c=(f[b+36>>2]|0)+1|0;if((f[e+20>>2]|0)==1){if(!(Ag(d,c)|0)){d=0;a=47;break}}else if(!(Jg(d,c)|0)){d=0;a=47;break}a=a+1|0;if(a>>>0>=(f[h>>2]|0)>>>0){a=14;break}else{e=e+1080|0;d=d+52|0;b=b+52|0}}if((a|0)==14){d=f[f[l>>2]>>2]|0;break}else if((a|0)==47){u=v;return d|0}}while(0);c=f[q>>2]|0;a=f[d+20>>2]|0;b=f[c+16>>2]|0;do if(b|0){i=X((f[a+12>>2]|0)-(f[a+4>>2]|0)|0,(f[a+8>>2]|0)-(f[a>>2]|0)|0)|0;h=d+16|0;d=f[h>>2]|0;if(d>>>0<=2){f[k>>2]=d;Mb(g,1,20049,k)|0;break}if((X((f[a+64>>2]|0)-(f[a+56>>2]|0)|0,(f[a+60>>2]|0)-(f[a+52>>2]|0)|0)|0)>=(i|0)?(X((f[a+116>>2]|0)-(f[a+108>>2]|0)|0,(f[a+112>>2]|0)-(f[a+104>>2]|0)|0)|0)>=(i|0):0){if((b|0)!=2){d=f[a+32>>2]|0;if((f[(f[c+5584>>2]|0)+20>>2]|0)==1){vf(d,f[a+84>>2]|0,f[a+136>>2]|0,i);break}else{xf(d,f[a+84>>2]|0,f[a+136>>2]|0,i);break}}e=c+5604|0;if(!(f[e>>2]|0))break;c=Hc(d<<2)|0;if(!c){t=0;u=v;return t|0}d=f[h>>2]|0;if(!d)d=0;else{b=0;while(1){f[c+(b<<2)>>2]=f[a+32>>2];b=b+1|0;if((b|0)==(d|0))break;else a=a+52|0}}p=(zf(f[e>>2]|0,i,c,d,f[(f[(f[r>>2]|0)+24>>2]|0)+32>>2]|0)|0)==0;Mc(c);if(p)d=0;else break;u=v;return d|0}Mb(g,1,19988,j)|0;t=0;u=v;return t|0}while(0);d=f[f[l>>2]>>2]|0;p=d+16|0;if(!(f[p>>2]|0)){t=1;u=v;return t|0}o=0;m=f[d+20>>2]|0;l=f[(f[q>>2]|0)+5584>>2]|0;i=f[(f[r>>2]|0)+24>>2]|0;while(1){k=f[m+24>>2]|0;j=f[i+36>>2]|0;g=(f[k+(j*136|0)+8>>2]|0)-(f[k+(j*136|0)>>2]|0)|0;j=(f[k+(j*136|0)+12>>2]|0)-(f[k+(j*136|0)+4>>2]|0)|0;k=(f[m+8>>2]|0)-(f[m>>2]|0)|0;d=f[i+24>>2]|0;if(!(f[i+32>>2]|0)){d=1<>2]|0;d=(j|0)!=0;if((f[l+20>>2]|0)==1){if(d?(t=l+1076|0,g|0):0){d=0;while(1){b=0;c=a;while(1){r=(f[t>>2]|0)+(f[c>>2]|0)|0;f[c>>2]=(r|0)<(h|0)?h:(r|0)>(e|0)?e:r;b=b+1|0;if((b|0)==(g|0))break;else c=c+4|0}d=d+1|0;if((d|0)==(j|0))break;else a=a+(k<<2)|0}}}else if(d?(s=l+1076|0,g|0):0){c=0;while(1){d=0;b=a;while(1){r=Oi(+n[b>>2])|0;r=(f[s>>2]|0)+r|0;f[b>>2]=(r|0)<(h|0)?h:(r|0)>(e|0)?e:r;d=d+1|0;if((d|0)==(g|0))break;else b=b+4|0}c=c+1|0;if((c|0)==(j|0))break;else a=a+(k<<2)|0}}o=o+1|0;if(o>>>0>=(f[p>>2]|0)>>>0){d=1;break}else{m=m+52|0;l=l+1080|0;i=i+52|0}}u=v;return d|0}function _f(a,c,e){a=a|0;c=c|0;e=e|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;r=a+24|0;g=f[r>>2]|0;j=f[g+16>>2]|0;l=(j|0)==0;if(l){r=1;return r|0}m=f[g+24>>2]|0;k=f[(f[f[a+20>>2]>>2]|0)+20>>2]|0;g=k;a=m;h=0;i=0;while(1){p=f[a+24>>2]|0;p=(p>>>3)+((p&7|0)!=0&1)|0;q=(f[g+24>>2]|0)+((f[g+20>>2]|0)*136|0)+-136|0;h=(X(X((p|0)==3?4:p,(f[q+8>>2]|0)-(f[q>>2]|0)|0)|0,(f[q+12>>2]|0)-(f[q+4>>2]|0)|0)|0)+h|0;i=i+1|0;if((i|0)==(j|0))break;else{g=g+52|0;a=a+52|0}}g=h>>>0>e>>>0;if(g|l){r=(g^1)&1;return r|0}else q=0;while(1){l=f[m+24>>2]|0;o=f[k+24>>2]|0;j=f[m+36>>2]|0;h=f[o+(j*136|0)+8>>2]|0;i=f[o+(j*136|0)>>2]|0;n=h-i|0;e=f[o+(j*136|0)+12>>2]|0;j=f[o+(j*136|0)+4>>2]|0;o=e-j|0;p=(f[k+8>>2]|0)-(f[k>>2]|0)|0;l=(l>>>3)+((l&7|0)!=0&1)|0;a:do switch(((l|0)==3?4:l)&1073741823|0){case 1:{a=f[k+32>>2]|0;g=(o|0)==0|(n|0)==0;if(!(f[m+32>>2]|0)){if(g)break a;l=h+(X(e+-1-j|0,n)|0)-i|0;j=0;h=c;while(1){g=0;i=a;e=h;while(1){b[e>>0]=f[i>>2];g=g+1|0;if((g|0)==(n|0))break;else{i=i+4|0;e=e+1|0}}j=j+1|0;if((j|0)==(o|0))break;else{a=a+(p<<2)|0;h=h+n|0}}c=c+l|0;break a}else{if(g)break a;l=h+(X(e+-1-j|0,n)|0)-i|0;g=a;a=c;h=0;while(1){i=0;e=g;j=a;while(1){b[j>>0]=f[e>>2];i=i+1|0;if((i|0)==(n|0))break;else{e=e+4|0;j=j+1|0}}h=h+1|0;if((h|0)==(o|0))break;else{g=g+(p<<2)|0;a=a+n|0}}c=c+l|0;break a}}case 2:{g=f[k+32>>2]|0;a=(o|0)==0|(n|0)==0;if(!(f[m+32>>2]|0)){if(a)break a;l=h<<1;h=i<<1;j=c+((X(e+-1-j|0,l-h|0)|0)+l-h)|0;h=0;while(1){a=g;i=0;e=c;while(1){d[e>>1]=f[a>>2];i=i+1|0;if((i|0)==(n|0))break;else{a=a+4|0;e=e+2|0}}h=h+1|0;if((h|0)==(o|0)){c=j;break}else{g=g+(p<<2)|0;c=c+(n<<1)|0}}}else{if(a)break a;l=h<<1;i=i<<1;j=c+((X(e+-1-j|0,l-i|0)|0)+l-i)|0;i=0;while(1){a=c;h=g;e=0;while(1){d[a>>1]=f[h>>2];e=e+1|0;if((e|0)==(n|0))break;else{a=a+2|0;h=h+4|0}}i=i+1|0;if((i|0)==(o|0)){c=j;break}else{c=c+(n<<1)|0;g=g+(p<<2)|0}}}break}case 4:{if(!((o|0)==0|(n|0)==0)){l=h<<2;g=i<<2;j=c+((X(e+-1-j|0,l-g|0)|0)+l-g)|0;g=f[k+32>>2]|0;i=0;while(1){a=c;h=g;e=0;while(1){f[a>>2]=f[h>>2];e=e+1|0;if((e|0)==(n|0))break;else{a=a+4|0;h=h+4|0}}i=i+1|0;if((i|0)==(o|0)){c=j;break}else{c=c+(n<<2)|0;g=g+(p<<2)|0}}}break}default:{}}while(0);q=q+1|0;if(q>>>0>=(f[(f[r>>2]|0)+16>>2]|0)>>>0){c=1;break}else{k=k+52|0;m=m+52|0}}return c|0}function $f(a){a=a|0;var b=0,c=0,d=0,e=0,g=0;b=f[a+24>>2]|0;e=f[b+16>>2]|0;if(!e){e=0;return e|0}d=f[(f[f[a+20>>2]>>2]|0)+20>>2]|0;b=f[b+24>>2]|0;a=0;c=0;while(1){g=f[b+24>>2]|0;g=(g>>>3)+((g&7|0)!=0&1)|0;a=(X(X((f[d+12>>2]|0)-(f[d+4>>2]|0)|0,(f[d+8>>2]|0)-(f[d>>2]|0)|0)|0,(g|0)==3?4:g)|0)+a|0;c=c+1|0;if(c>>>0>=e>>>0)break;else{d=d+52|0;b=b+52|0}}return a|0}function ag(a,c,e){a=a|0;c=c|0;e=e|0;var g=0,i=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;o=f[a+24>>2]|0;p=o+16|0;m=f[p>>2]|0;n=(m|0)==0;if(n)g=0;else{i=f[(f[f[a+20>>2]>>2]|0)+20>>2]|0;k=f[o+24>>2]|0;g=0;l=0;while(1){q=f[k+24>>2]|0;q=(q>>>3)+((q&7|0)!=0&1)|0;g=(X(X((f[i+12>>2]|0)-(f[i+4>>2]|0)|0,(f[i+8>>2]|0)-(f[i>>2]|0)|0)|0,(q|0)==3?4:q)|0)+g|0;l=l+1|0;if((l|0)==(m|0))break;else{i=i+52|0;k=k+52|0}}}g=(g|0)!=(e|0);if(g|n){q=(g^1)&1;return q|0}a=f[(f[f[a+20>>2]>>2]|0)+20>>2]|0;e=f[o+24>>2]|0;n=0;while(1){q=f[e+24>>2]|0;i=(f[a+8>>2]|0)-(f[a>>2]|0)|0;k=(f[a+12>>2]|0)-(f[a+4>>2]|0)|0;m=X(k,i)|0;q=(q>>>3)+((q&7|0)!=0&1)|0;a:do switch(((q|0)==3?4:q)&1073741823|0){case 1:{i=f[a+32>>2]|0;g=(m|0)!=0;if(!(f[e+32>>2]|0)){if(g){k=0;g=i;i=c}else break a;while(1){f[g>>2]=h[i>>0];k=k+1|0;if((k|0)==(m|0))break;else{g=g+4|0;i=i+1|0}}c=c+m|0;break a}else{if(g){g=i;i=c;k=0}else break a;while(1){f[g>>2]=b[i>>0];k=k+1|0;if((k|0)==(m|0))break;else{g=g+4|0;i=i+1|0}}c=c+m|0;break a}}case 2:{g=f[a+32>>2]|0;l=(m|0)!=0;if(!(f[e+32>>2]|0)){if(!l)break a;k=c+(X(k<<1,i)|0)|0;i=0;while(1){f[g>>2]=j[c>>1];i=i+1|0;if((i|0)==(m|0)){c=k;break}else{c=c+2|0;g=g+4|0}}}else{if(!l)break a;k=c+(X(k<<1,i)|0)|0;i=0;while(1){f[g>>2]=d[c>>1];i=i+1|0;if((i|0)==(m|0)){c=k;break}else{c=c+2|0;g=g+4|0}}}break}case 4:{if(m){k=c+(X(k<<2,i)|0)|0;i=f[a+32>>2]|0;g=0;while(1){f[i>>2]=f[c>>2];g=g+1|0;if((g|0)==(m|0)){c=k;break}else{i=i+4|0;c=c+4|0}}}break}default:{}}while(0);n=n+1|0;if(n>>>0>=(f[p>>2]|0)>>>0){c=1;break}else{a=a+52|0;e=e+52|0}}return c|0}function bg(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;t=u;u=u+288|0;j=t+16|0;h=t+8|0;r=t+152|0;s=t+24|0;d=Ic(1,20)|0;if(!d){Mb(c,1,20123,t)|0;s=0;u=t;return s|0}f[d>>2]=a;k=d+4|0;f[k>>2]=b;f[r>>2]=a;f[s>>2]=b;i=d+8|0;f[i>>2]=0;q=0;g=0;while(1){p=X(b,a)|0;a=(a+1|0)/2|0;e=q+1|0;f[r+(e<<2)>>2]=a;b=(b+1|0)/2|0;f[s+(e<<2)>>2]=b;g=g+p|0;if(p>>>0<=1)break;else q=e}f[i>>2]=g;if(!g){Mc(d);Mb(c,2,20161,h)|0;s=0;u=t;return s|0}b=Ic(g,16)|0;f[d+12>>2]=b;if(!b){Mb(c,1,20211,j)|0;Mc(d);s=0;u=t;return s|0}p=f[i>>2]|0;f[d+16>>2]=p<<4;a=b+((X(f[k>>2]|0,f[d>>2]|0)|0)<<4)|0;if(!q)a=b;else{o=0;g=a;e=a;a=b;do{m=f[s+(o<<2)>>2]|0;a:do if((m|0)>0){n=f[r+(o<<2)>>2]|0;if((n|0)<=0){i=m+-1|0;c=0;while(1){l=(c&1|0)!=0|(c|0)==(i|0);h=l?e:g;g=l?e:g+(n<<4)|0;c=c+1|0;if((c|0)>=(m|0)){e=h;break a}else e=h}}k=~n;k=(n+2+((k|0)>-3?k:-3)|0)>>>1;l=m+-1|0;j=0;do{i=e+16|0;c=n;while(1){f[a>>2]=e;h=a+16|0;if((c|0)==1){a=h;break}f[h>>2]=e;a=a+32|0;if((c|0)>2){c=c+-2|0;e=e+16|0}else break}i=i+(k<<4)|0;c=(j&1|0)!=0|(j|0)==(l|0);e=c?i:g;g=c?i:g+(n<<4)|0;j=j+1|0}while((j|0)<(m|0))}while(0);o=o+1|0}while((o|0)!=(q|0))}f[a>>2]=0;if(!p){s=d;u=t;return s|0}else a=0;while(1){f[b+4>>2]=999;f[b+8>>2]=0;f[b+12>>2]=0;a=a+1|0;if((a|0)==(p|0))break;else b=b+16|0}u=t;return d|0}function cg(a){a=a|0;var b=0,c=0;if(!a)return;c=f[a+8>>2]|0;if(!c)return;b=0;a=f[a+12>>2]|0;while(1){f[a+4>>2]=999;f[a+8>>2]=0;f[a+12>>2]=0;b=b+1|0;if(b>>>0>=c>>>0)break;else a=a+16|0}return}function dg(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;s=u;u=u+272|0;l=s;q=s+136|0;r=s+8|0;if(!a){r=0;u=s;return r|0}k=a+4|0;if((f[a>>2]|0)==(b|0)?(f[k>>2]|0)==(c|0):0)e=a+8|0;else{f[a>>2]=b;f[k>>2]=c;f[q>>2]=b;f[r>>2]=c;e=a+8|0;f[e>>2]=0;p=0;g=c;h=b;j=0;while(1){o=X(g,h)|0;h=(h+1|0)/2|0;i=p+1|0;f[q+(i<<2)>>2]=h;g=(g+1|0)/2|0;f[r+(i<<2)>>2]=g;j=j+o|0;if(o>>>0<=1)break;else p=i}f[e>>2]=j;if(!j){e=a+12|0;g=f[e>>2]|0;if(g|0){Mc(g);f[e>>2]=0}Mc(a);r=0;u=s;return r|0}h=j<<4;i=a+16|0;j=a+12|0;do if(h>>>0>(f[i>>2]|0)>>>0){g=Lc(f[j>>2]|0,h)|0;if(g|0){f[j>>2]=g;c=f[i>>2]|0;ij(g+c|0,0,h-c|0)|0;f[i>>2]=h;c=f[k>>2]|0;b=f[a>>2]|0;break}Mb(d,1,20255,l)|0;e=f[j>>2]|0;if(e|0){Mc(e);f[j>>2]=0}Mc(a);r=0;u=s;return r|0}while(0);g=f[j>>2]|0;b=g+((X(c,b)|0)<<4)|0;if(p){c=b;o=0;do{m=f[r+(o<<2)>>2]|0;a:do if((m|0)>0){n=f[q+(o<<2)>>2]|0;if((n|0)<=0){j=m+-1|0;i=0;while(1){l=(i&1|0)!=0|(i|0)==(j|0);h=l?b:c+(n<<4)|0;b=l?b:c;i=i+1|0;if((i|0)>=(m|0)){c=h;break a}else c=h}}k=~n;k=(n+2+((k|0)>-3?k:-3)|0)>>>1;l=m+-1|0;d=0;while(1){j=b+16|0;i=n;while(1){f[g>>2]=b;h=g+16|0;if((i|0)==1){g=h;break}f[h>>2]=b;g=g+32|0;if((i|0)>2){i=i+-2|0;b=b+16|0}else break}b=j+(k<<4)|0;j=(d&1|0)!=0|(d|0)==(l|0);h=j?b:c+(n<<4)|0;b=j?b:c;d=d+1|0;if((d|0)>=(m|0)){c=h;break}else c=h}}while(0);o=o+1|0}while((o|0)!=(p|0))}f[g>>2]=0}b=f[e>>2]|0;if(!b){r=a;u=s;return r|0}e=0;g=f[a+12>>2]|0;while(1){f[g+4>>2]=999;f[g+8>>2]=0;f[g+12>>2]=0;e=e+1|0;if((e|0)==(b|0))break;else g=g+16|0}u=s;return a|0}function eg(a){a=a|0;var b=0,c=0;if(!a)return;b=a+12|0;c=f[b>>2]|0;if(c|0){Mc(c);f[b>>2]=0}Mc(a);return}function fg(a,b,c){a=a|0;b=b|0;c=c|0;a=(f[a+12>>2]|0)+(b<<4)|0;if(!a)return;while(1){b=a+4|0;if((f[b>>2]|0)<=(c|0)){a=4;break}f[b>>2]=c;a=f[a>>2]|0;if(!a){a=4;break}}if((a|0)==4)return}function gg(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,g=0,h=0,i=0,j=0;j=u;u=u+128|0;i=j;c=(f[b+12>>2]|0)+(c<<4)|0;b=f[c>>2]|0;if(!b){b=0;h=0}else{e=0;g=b;while(1){h=e+1|0;f[i+(e<<2)>>2]=c;b=f[g>>2]|0;if(!b){b=0;c=g;break}else{c=g;e=h;g=b}}}while(1){g=c+8|0;e=f[g>>2]|0;if((b|0)>(e|0))f[g>>2]=b;else b=e;a:do if((b|0)<(d|0)){e=c+4|0;while(1){if((b|0)>=(f[e>>2]|0))break;tg(a,0,1);b=b+1|0;if((b|0)>=(d|0))break a}c=c+12|0;if(!(f[c>>2]|0)){tg(a,1,1);f[c>>2]=1}}while(0);f[g>>2]=b;if(!h)break;g=h+-1|0;c=f[i+(g<<2)>>2]|0;h=g}u=j;return}function hg(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,g=0,h=0,i=0,j=0;j=u;u=u+128|0;i=j;b=(f[b+12>>2]|0)+(c<<4)|0;c=f[b>>2]|0;if(!c){e=0;g=0}else{e=0;while(1){g=e+1|0;f[i+(e<<2)>>2]=b;b=f[c>>2]|0;if(!b){e=0;b=c;break}else{h=c;e=g;c=b;b=h}}}while(1){h=b+8|0;c=f[h>>2]|0;if((e|0)>(c|0)){f[h>>2]=e;c=e}e=b+4|0;a:do if((c|0)<(d|0)){b=c;while(1){if((b|0)>=(f[e>>2]|0))break a;if(ug(a,1)|0)break;b=b+1|0;if((b|0)>=(d|0))break a}f[e>>2]=b}else b=c;while(0);f[h>>2]=b;if(!g)break;h=g+-1|0;e=b;b=f[i+(h<<2)>>2]|0;g=h}u=j;return (f[e>>2]|0)<(d|0)|0}function ig(){var a=0,b=0;a=Ic(1,12)|0;if(!a){a=0;return a|0}f[a+4>>2]=10;b=Ic(10,4)|0;f[a+8>>2]=b;if(b|0){b=a;return b|0}Mc(a);b=0;return b|0}function jg(a){a=a|0;var b=0;if(!a)return;b=f[a+8>>2]|0;if(b|0)Mc(b);Mc(a);return}function kg(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,g=0,h=0,i=0;i=u;u=u+16|0;h=i;g=a+4|0;e=f[g>>2]|0;d=f[a>>2]|0;do if((e|0)==(d|0)){e=e+10|0;f[g>>2]=e;d=a+8|0;e=Lc(f[d>>2]|0,e<<2)|0;if(e|0){f[d>>2]=e;d=f[a>>2]|0;break}Mc(f[d>>2]|0);f[g>>2]=0;f[a>>2]=0;Mb(c,1,20303,h)|0;b=0;u=i;return b|0}else e=f[a+8>>2]|0;while(0);f[e+(d<<2)>>2]=b;f[a>>2]=d+1;b=1;u=i;return b|0}function lg(a){a=a|0;return f[a>>2]|0}function mg(a){a=a|0;return f[a+8>>2]|0}function ng(a){a=a|0;f[a>>2]=0;return}function og(){return Hc(20)|0}function pg(a){a=a|0;if(!a)return;Mc(a);return}function qg(a){a=a|0;return (f[a+8>>2]|0)-(f[a>>2]|0)|0}function rg(a,b,c){a=a|0;b=b|0;c=c|0;f[a>>2]=b;f[a+4>>2]=b+c;f[a+8>>2]=b;f[a+12>>2]=0;f[a+16>>2]=8;return}function sg(a,b,c){a=a|0;b=b|0;c=c|0;f[a>>2]=b;f[a+4>>2]=b+c;f[a+8>>2]=b;f[a+12>>2]=0;f[a+16>>2]=0;return}function tg(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;if(!d)return;k=a+16|0;l=a+12|0;m=a+8|0;i=a+4|0;h=d+-1|0;a=f[k>>2]|0;do{j=c>>>h&1;if(!a){e=f[l>>2]|0;a=e<<8&65280;f[l>>2]=a;a=(a|0)==65280?7:8;f[k>>2]=a;g=f[m>>2]|0;if((f[i>>2]|0)>>>0>g>>>0){f[m>>2]=g+1;b[g>>0]=e;a=f[k>>2]|0}}a=a+-1|0;f[k>>2]=a;f[l>>2]=f[l>>2]|j<>>0>>0);return}function ug(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,g=0,i=0,j=0,k=0,l=0;if(!b){l=0;return l|0}j=a+16|0;k=a+12|0;l=a+8|0;i=a+4|0;g=b+-1|0;a=0;c=f[k>>2]|0;d=f[j>>2]|0;do{if(!d){c=c<<8&65280;f[k>>2]=c;d=(c|0)==65280?7:8;f[j>>2]=d;e=f[l>>2]|0;if((f[i>>2]|0)>>>0>e>>>0){f[l>>2]=e+1;c=c|(h[e>>0]|0);f[k>>2]=c}}d=d+-1|0;f[j>>2]=d;a=(c>>>d&1)<>>0>>0);return a|0}function vg(a){a=a|0;var c=0,d=0,e=0,g=0,h=0,i=0;e=a+12|0;c=f[e>>2]|0;i=c<<8&65280;f[e>>2]=i;h=a+16|0;f[h>>2]=(i|0)==65280?7:8;i=a+8|0;d=f[i>>2]|0;g=a+4|0;if((f[g>>2]|0)>>>0<=d>>>0){i=0;return i|0}f[i>>2]=d+1;b[d>>0]=c;if((f[h>>2]|0)!=7){i=1;return i|0}c=f[e>>2]|0;a=c<<8&65280;f[e>>2]=a;f[h>>2]=(a|0)==65280?7:8;a=f[i>>2]|0;if((f[g>>2]|0)>>>0<=a>>>0){i=0;return i|0}f[i>>2]=a+1;b[a>>0]=c;i=1;return i|0}function wg(a){a=a|0;var b=0,c=0,d=0,e=0,g=0;g=a+12|0;b=f[g>>2]|0;do if((b&255|0)==255){e=b<<8&65280;f[g>>2]=e;b=a+16|0;f[b>>2]=(e|0)==65280?7:8;c=a+8|0;d=f[c>>2]|0;if((f[a+4>>2]|0)>>>0>d>>>0){f[c>>2]=d+1;f[g>>2]=e|(h[d>>0]|0);break}else{g=0;return g|0}}else b=a+16|0;while(0);f[b>>2]=0;g=1;return g|0}function xg(a){a=a|0;return zg(a,1)|0}function yg(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,g=0,h=0;if(!d){d=(b|0)>0;if(!(d|(c|0)>1))return;if(d){e=c+-1|0;d=0;do{h=d;d=d+1|0;g=a+((h<<1|1)<<2)|0;f[g>>2]=(f[g>>2]|0)-((f[a+(((d|0)>=(c|0)?e:d)<<1<<2)>>2]|0)+(f[a+(((h|0)>=(c|0)?e:h)<<1<<2)>>2]|0)>>1)}while((d|0)!=(b|0))}if((c|0)<=0)return;e=b+-1|0;d=0;do{h=a+(d<<1<<2)|0;f[h>>2]=((f[a+(((d|0)<1?1:(((d|0)>(b|0)?b:d)<<1)+-1|0)<<2)>>2]|0)+2+(f[a+((((d|0)>=(b|0)?e:d)<<1|1)<<2)>>2]|0)>>2)+(f[h>>2]|0);d=d+1|0}while((d|0)!=(c|0));return}if((b|0)==1&(c|0)==0){f[a>>2]=f[a>>2]<<1;return}if((b|0)>0){e=c+-1|0;d=0;do{h=a+(d<<1<<2)|0;f[h>>2]=(f[h>>2]|0)-((f[a+(((d|0)<1?1:(((d|0)>(c|0)?c:d)<<1)+-1|0)<<2)>>2]|0)+(f[a+((((d|0)>=(c|0)?e:d)<<1|1)<<2)>>2]|0)>>1);d=d+1|0}while((d|0)!=(b|0))}if((c|0)<=0)return;e=b+-1|0;d=0;do{g=d;d=d+1|0;h=a+((g<<1|1)<<2)|0;f[h>>2]=((f[a+(((g|0)>=(b|0)?e:g)<<1<<2)>>2]|0)+2+(f[a+(((d|0)>=(b|0)?e:d)<<1<<2)>>2]|0)>>2)+(f[h>>2]|0)}while((d|0)!=(c|0));return}function zg(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0;z=(f[a+8>>2]|0)-(f[a>>2]|0)|0;h=f[a+16>>2]|0;c=h+-1|0;y=f[a+32>>2]|0;a=f[a+24>>2]|0;g=a+(c*136|0)|0;e=(c|0)==0;if(e)a=0;else{d=0;do{w=a;a=a+136|0;x=(f[w+144>>2]|0)-(f[a>>2]|0)|0;x=d>>>0>>0?x:d;w=(f[w+148>>2]|0)-(f[w+140>>2]|0)|0;d=x>>>0>>0?w:x;c=c+-1|0}while((c|0)!=0);a=d<<2}x=Hc(a)|0;if(!((a|0)==0|(x|0)!=0)){z=0;return z|0}if(!e){w=x+4|0;s=h+-2|0;while(1){j=g;g=g+-136|0;v=f[j>>2]|0;r=(f[j+8>>2]|0)-v|0;l=f[j+4>>2]|0;t=(f[j+12>>2]|0)-l|0;u=(f[j+-128>>2]|0)-(f[g>>2]|0)|0;j=(f[j+-124>>2]|0)-(f[j+-132>>2]|0)|0;v=v&1;l=l&1;m=t-j|0;q=(r|0)>0;a:do if(q){i=(j|0)==0;n=(m|0)==0;o=w+(0-l<<2)|0;p=X(j,z)|0;k=x+(l<<2)|0;if((t|0)>0){h=0;while(1){e=y+(h<<2)|0;a=0;do{d=e+((X(a,z)|0)<<2)|0;f[x+(a<<2)>>2]=f[d>>2];a=a+1|0}while((a|0)!=(t|0));Va[b&3](x,m,j,l);if(!i){a=e;c=j;d=k;while(1){c=c+-1|0;f[a>>2]=f[d>>2];if(!c)break;else{a=a+(z<<2)|0;d=d+8|0}}}if(!n){a=e+(p<<2)|0;c=m;d=o;while(1){c=c+-1|0;f[a>>2]=f[d>>2];if(!c)break;else{a=a+(z<<2)|0;d=d+8|0}}}h=h+1|0;if((h|0)==(r|0))break a}}if(i){a=0;while(1){Va[b&3](x,m,0,l);if(!n){c=y+(a<<2)+(p<<2)|0;d=m;e=o;while(1){d=d+-1|0;f[c>>2]=f[e>>2];if(!d)break;else{c=c+(z<<2)|0;e=e+8|0}}}a=a+1|0;if((a|0)==(r|0))break a}}else h=0;do{e=y+(h<<2)|0;Va[b&3](x,m,j,l);a=e;c=j;d=k;while(1){c=c+-1|0;f[a>>2]=f[d>>2];if(!c)break;else{a=a+(z<<2)|0;d=d+8|0}}if(!n){a=e+(p<<2)|0;c=m;d=o;while(1){c=c+-1|0;f[a>>2]=f[d>>2];if(!c)break;else{a=a+(z<<2)|0;d=d+8|0}}}h=h+1|0}while((h|0)!=(r|0))}while(0);k=r-u|0;b:do if((t|0)>0){i=(u|0)>0;j=x+(v<<2)|0;l=(k|0)>0;m=w+(0-v<<2)|0;if(q){h=0;while(1){e=y+((X(h,z)|0)<<2)|0;a=0;do{f[x+(a<<2)>>2]=f[e+(a<<2)>>2];a=a+1|0}while((a|0)!=(r|0));Va[b&3](x,k,u,v);if(i){a=e;c=0;d=j;while(1){f[a>>2]=f[d>>2];c=c+1|0;if((c|0)==(u|0))break;else{a=a+4|0;d=d+8|0}}}if(l){a=e+(u<<2)|0;c=0;d=m;while(1){f[a>>2]=f[d>>2];c=c+1|0;if((c|0)==(k|0))break;else{a=a+4|0;d=d+8|0}}}h=h+1|0;if((h|0)==(t|0))break b}}if(i)h=0;else{a=0;while(1){Va[b&3](x,k,u,v);if(l){c=y+((X(a,z)|0)<<2)+(u<<2)|0;d=0;e=m;while(1){f[c>>2]=f[e>>2];d=d+1|0;if((d|0)==(k|0))break;else{c=c+4|0;e=e+8|0}}}a=a+1|0;if((a|0)==(t|0))break b}}do{e=y+((X(h,z)|0)<<2)|0;Va[b&3](x,k,u,v);a=e;c=0;d=j;while(1){f[a>>2]=f[d>>2];c=c+1|0;if((c|0)==(u|0))break;else{a=a+4|0;d=d+8|0}}if(l){a=e+(u<<2)|0;c=0;d=m;while(1){f[a>>2]=f[d>>2];c=c+1|0;if((c|0)==(k|0))break;else{a=a+4|0;d=d+8|0}}}h=h+1|0}while((h|0)!=(t|0))}while(0);if(!s)break;else s=s+-1|0}}Mc(x);z=1;return z|0}function Ag(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0;G=u;u=u+32|0;E=G+16|0;F=G;h=f[a+24>>2]|0;g=(f[h+8>>2]|0)-(f[h>>2]|0)|0;i=(f[h+12>>2]|0)-(f[h+4>>2]|0)|0;D=(f[a+8>>2]|0)-(f[a>>2]|0)|0;if((b|0)==1){F=1;u=G;return F|0}j=b+-1|0;e=(j|0)==0;if(e)b=0;else{b=h;c=0;d=j;do{B=b;b=b+136|0;C=(f[B+144>>2]|0)-(f[b>>2]|0)|0;C=c>>>0>>0?C:c;B=(f[B+148>>2]|0)-(f[B+140>>2]|0)|0;c=C>>>0>>0?B:C;d=d+-1|0}while((d|0)!=0);b=c<<2}C=Jc(b)|0;f[E>>2]=C;if(!C){F=0;u=G;return F|0}f[F>>2]=C;if(!e){t=a+32|0;v=E+8|0;w=F+8|0;x=E+4|0;y=E+12|0;z=F+4|0;A=F+12|0;B=C+4|0;do{s=f[t>>2]|0;p=h;h=h+136|0;f[v>>2]=g;f[w>>2]=i;c=f[h>>2]|0;n=g;g=(f[p+144>>2]|0)-c|0;o=p+140|0;b=f[o>>2]|0;r=i;i=(f[p+148>>2]|0)-b|0;p=g-n|0;f[x>>2]=p;c=(c|0)%2|0;f[y>>2]=c;q=(i|0)==0;if(!q){k=g<<2;l=(n|0)==0;m=(p|0)==0;b=0;while(1){a=s+((X(b,D)|0)<<2)|0;if(l)d=0;else{c=C+(c<<2)|0;d=a;e=n;while(1){e=e+-1|0;f[c>>2]=f[d>>2];if(!e)break;else{c=c+8|0;d=d+4|0}}c=f[y>>2]|0;d=n}if(!m){e=B+(0-c<<2)|0;c=a+(d<<2)|0;d=p;while(1){d=d+-1|0;f[e>>2]=f[c>>2];if(!d)break;else{e=e+8|0;c=c+4|0}}}Bg(E);hj(a|0,C|0,k|0)|0;b=b+1|0;if((b|0)==(i|0))break;c=f[y>>2]|0}b=f[o>>2]|0}m=i-r|0;f[z>>2]=m;c=(b|0)%2|0;f[A>>2]=c;a:do if(g|0){k=(r|0)==0;l=(m|0)==0;if(q){b=0;while(1){a=s+(b<<2)|0;if(k)d=0;else{c=C+(c<<2)|0;d=a;e=r;while(1){e=e+-1|0;f[c>>2]=f[d>>2];if(!e)break;else{c=c+8|0;d=d+(D<<2)|0}}c=f[A>>2]|0;d=r}if(!l){e=B+(0-c<<2)|0;c=a+((X(d,D)|0)<<2)|0;d=m;while(1){d=d+-1|0;f[e>>2]=f[c>>2];if(!d)break;else{e=e+8|0;c=c+(D<<2)|0}}}Bg(F);b=b+1|0;if((b|0)==(g|0))break a;c=f[A>>2]|0}}else b=0;while(1){a=s+(b<<2)|0;if(k)d=0;else{c=C+(c<<2)|0;d=a;e=r;while(1){e=e+-1|0;f[c>>2]=f[d>>2];if(!e)break;else{c=c+8|0;d=d+(D<<2)|0}}c=f[A>>2]|0;d=r}if(!l){e=B+(0-c<<2)|0;c=a+((X(d,D)|0)<<2)|0;d=m;while(1){d=d+-1|0;f[e>>2]=f[c>>2];if(!d)break;else{e=e+8|0;c=c+(D<<2)|0}}}Bg(F);c=0;do{q=s+((X(c,D)|0)+b<<2)|0;f[q>>2]=f[C+(c<<2)>>2];c=c+1|0}while((c|0)!=(i|0));b=b+1|0;if((b|0)==(g|0))break a;c=f[A>>2]|0}}while(0);j=j+-1|0}while((j|0)!=0)}Kc(C);F=1;u=G;return F|0}function Bg(a){a=a|0;var b=0,c=0,d=0,e=0,g=0,h=0;d=f[a>>2]|0;e=f[a+4>>2]|0;g=f[a+8>>2]|0;if(!(f[a+12>>2]|0)){c=(e|0)>0;if(!(c|(g|0)>1))return;if((g|0)>0){b=e+-1|0;a=0;do{h=d+(a<<1<<2)|0;f[h>>2]=(f[h>>2]|0)-((f[d+(((a|0)<1?1:(((a|0)>(e|0)?e:a)<<1)+-1|0)<<2)>>2]|0)+2+(f[d+((((a|0)>=(e|0)?b:a)<<1|1)<<2)>>2]|0)>>2);a=a+1|0}while((a|0)!=(g|0))}if(!c)return;b=g+-1|0;a=0;do{c=a;a=a+1|0;h=d+((c<<1|1)<<2)|0;f[h>>2]=((f[d+(((a|0)>=(g|0)?b:a)<<1<<2)>>2]|0)+(f[d+(((c|0)>=(g|0)?b:c)<<1<<2)>>2]|0)>>1)+(f[h>>2]|0)}while((a|0)!=(e|0));return}if((e|0)==1&(g|0)==0){f[d>>2]=(f[d>>2]|0)/2|0;return}if((g|0)>0){b=e+-1|0;a=0;do{c=a;a=a+1|0;h=d+((c<<1|1)<<2)|0;f[h>>2]=(f[h>>2]|0)-((f[d+(((c|0)>=(e|0)?b:c)<<1<<2)>>2]|0)+2+(f[d+(((a|0)>=(e|0)?b:a)<<1<<2)>>2]|0)>>2)}while((a|0)!=(g|0))}if((e|0)<=0)return;b=g+-1|0;a=0;do{h=d+(a<<1<<2)|0;f[h>>2]=((f[d+(((a|0)<1?1:(((a|0)>(g|0)?g:a)<<1)+-1|0)<<2)>>2]|0)+(f[d+((((a|0)>=(g|0)?b:a)<<1|1)<<2)>>2]|0)>>1)+(f[h>>2]|0);a=a+1|0}while((a|0)!=(e|0));return}function Cg(a){a=a|0;return ((a|0)==0?0:(a+-1|0)>>>0<2?1:2)|0}function Dg(a,b){a=a|0;b=b|0;return +(+p[56+(b*80|0)+(a<<3)>>3])}function Eg(a){a=a|0;return zg(a,2)|0}\nfunction Fg(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,g=0,h=0,i=0,j=0;if(!d){h=(b|0)>0;if(!(h|(c|0)>1))return;if(h){e=c+-1|0;d=0;do{g=d;d=d+1|0;i=(f[a+(((d|0)>=(c|0)?e:d)<<1<<2)>>2]|0)+(f[a+(((g|0)>=(c|0)?e:g)<<1<<2)>>2]|0)|0;i=Yi(i|0,((i|0)<0)<<31>>31|0,12993,0)|0;i=Zi(i|0,I|0,4096,0)|0;i=ej(i|0,I|0,13)|0;g=a+((g<<1|1)<<2)|0;f[g>>2]=(f[g>>2]|0)-i}while((d|0)!=(b|0))}g=(c|0)>0;if(g){e=b+-1|0;d=0;do{j=(f[a+((((d|0)>=(b|0)?e:d)<<1|1)<<2)>>2]|0)+(f[a+(((d|0)<1?1:(((d|0)>(b|0)?b:d)<<1)+-1|0)<<2)>>2]|0)|0;j=Yi(j|0,((j|0)<0)<<31>>31|0,434,0)|0;j=Zi(j|0,I|0,4096,0)|0;j=ej(j|0,I|0,13)|0;i=a+(d<<1<<2)|0;f[i>>2]=(f[i>>2]|0)-j;d=d+1|0}while((d|0)!=(c|0))}if(h){e=c+-1|0;d=0;do{j=d;d=d+1|0;i=(f[a+(((d|0)>=(c|0)?e:d)<<1<<2)>>2]|0)+(f[a+(((j|0)>=(c|0)?e:j)<<1<<2)>>2]|0)|0;i=Yi(i|0,((i|0)<0)<<31>>31|0,7233,0)|0;i=Zi(i|0,I|0,4096,0)|0;i=ej(i|0,I|0,13)|0;j=a+((j<<1|1)<<2)|0;f[j>>2]=(f[j>>2]|0)+i}while((d|0)!=(b|0))}if(g){e=b+-1|0;d=0;do{i=(f[a+((((d|0)>=(b|0)?e:d)<<1|1)<<2)>>2]|0)+(f[a+(((d|0)<1?1:(((d|0)>(b|0)?b:d)<<1)+-1|0)<<2)>>2]|0)|0;i=Yi(i|0,((i|0)<0)<<31>>31|0,3633,0)|0;i=Zi(i|0,I|0,4096,0)|0;i=ej(i|0,I|0,13)|0;j=a+(d<<1<<2)|0;f[j>>2]=(f[j>>2]|0)+i;d=d+1|0}while((d|0)!=(c|0))}if(h){d=0;do{j=a+((d<<1|1)<<2)|0;i=f[j>>2]|0;i=Yi(i|0,((i|0)<0)<<31>>31|0,5038,0)|0;i=Zi(i|0,I|0,4096,0)|0;i=ej(i|0,I|0,13)|0;f[j>>2]=i;d=d+1|0}while((d|0)!=(b|0))}if(g)d=0;else return;do{j=a+(d<<1<<2)|0;i=f[j>>2]|0;i=Yi(i|0,((i|0)<0)<<31>>31|0,6659,0)|0;i=Zi(i|0,I|0,4096,0)|0;i=ej(i|0,I|0,13)|0;f[j>>2]=i;d=d+1|0}while((d|0)!=(c|0));return}else{h=(c|0)>0;if(!((b|0)>1|h))return;g=(b|0)>0;if(g){e=c+-1|0;d=0;do{i=(f[a+(((d|0)<1?1:(((d|0)>(c|0)?c:d)<<1)+-1|0)<<2)>>2]|0)+(f[a+((((d|0)>=(c|0)?e:d)<<1|1)<<2)>>2]|0)|0;i=Yi(i|0,((i|0)<0)<<31>>31|0,12993,0)|0;i=Zi(i|0,I|0,4096,0)|0;i=ej(i|0,I|0,13)|0;j=a+(d<<1<<2)|0;f[j>>2]=(f[j>>2]|0)-i;d=d+1|0}while((d|0)!=(b|0))}if(h){e=b+-1|0;d=0;do{j=d;d=d+1|0;i=(f[a+(((d|0)>=(b|0)?e:d)<<1<<2)>>2]|0)+(f[a+(((j|0)>=(b|0)?e:j)<<1<<2)>>2]|0)|0;i=Yi(i|0,((i|0)<0)<<31>>31|0,434,0)|0;i=Zi(i|0,I|0,4096,0)|0;i=ej(i|0,I|0,13)|0;j=a+((j<<1|1)<<2)|0;f[j>>2]=(f[j>>2]|0)-i}while((d|0)!=(c|0))}if(g){e=c+-1|0;d=0;do{i=(f[a+(((d|0)<1?1:(((d|0)>(c|0)?c:d)<<1)+-1|0)<<2)>>2]|0)+(f[a+((((d|0)>=(c|0)?e:d)<<1|1)<<2)>>2]|0)|0;i=Yi(i|0,((i|0)<0)<<31>>31|0,7233,0)|0;i=Zi(i|0,I|0,4096,0)|0;i=ej(i|0,I|0,13)|0;j=a+(d<<1<<2)|0;f[j>>2]=(f[j>>2]|0)+i;d=d+1|0}while((d|0)!=(b|0))}if(h){e=b+-1|0;d=0;do{j=d;d=d+1|0;i=(f[a+(((d|0)>=(b|0)?e:d)<<1<<2)>>2]|0)+(f[a+(((j|0)>=(b|0)?e:j)<<1<<2)>>2]|0)|0;i=Yi(i|0,((i|0)<0)<<31>>31|0,3633,0)|0;i=Zi(i|0,I|0,4096,0)|0;i=ej(i|0,I|0,13)|0;j=a+((j<<1|1)<<2)|0;f[j>>2]=(f[j>>2]|0)+i}while((d|0)!=(c|0))}if(g){d=0;do{j=a+(d<<1<<2)|0;i=f[j>>2]|0;i=Yi(i|0,((i|0)<0)<<31>>31|0,5038,0)|0;i=Zi(i|0,I|0,4096,0)|0;i=ej(i|0,I|0,13)|0;f[j>>2]=i;d=d+1|0}while((d|0)!=(b|0))}if(h)d=0;else return;do{j=a+((d<<1|1)<<2)|0;i=f[j>>2]|0;i=Yi(i|0,((i|0)<0)<<31>>31|0,6659,0)|0;i=Zi(i|0,I|0,4096,0)|0;i=ej(i|0,I|0,13)|0;f[j>>2]=i;d=d+1|0}while((d|0)!=(c|0));return}}function Gg(a){a=a|0;return 0}function Hg(a,b){a=a|0;b=b|0;return +(+p[376+(b*80|0)+(a<<3)>>3])}function Ig(a,b){a=a|0;b=b|0;var c=0.0,d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0;k=a+4|0;l=((f[k>>2]|0)*3|0)+-2|0;if(!l)return;m=a+20|0;n=a+24|0;j=0;do{if(!j){d=0;e=0}else{e=j+-1|0;d=((e>>>0)%3|0)+1|0;e=((e>>>0)/3|0)+1|0}g=(d|0)==0|(f[m>>2]|0)==0?0:(d+-1|0)>>>0<2?1:2;if(!(f[n>>2]|0))c=1.0;else c=+(1<>2]|0)+~e<<3)>>3];i=~~+J(+(c*8192.0));h=g+b|0;if((i|0)>1){d=i;g=0;while(1)if(d>>>0>3){d=d>>>1;g=g+1|0}else{d=i;e=0;break}while(1)if(d>>>0>3){d=d>>>1;e=e+1|0}else break;e=10-e|0;d=g+-12|0}else{e=11;d=-13}f[a+28+(j<<3)+4>>2]=((e|0)<0?i>>0-e:i<>2]=h-d;j=j+1|0}while((j|0)!=(l|0));return}function Jg(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0;S=u;u=u+32|0;Q=S+16|0;R=S;j=f[a+24>>2]|0;g=f[j+8>>2]|0;h=f[j>>2]|0;n=f[j+12>>2]|0;o=f[j+4>>2]|0;O=a+8|0;l=f[O>>2]|0;m=f[a>>2]|0;P=l-m|0;i=b+-1|0;e=(i|0)==0;if(e)b=80;else{b=j;c=0;d=i;do{L=b;b=b+136|0;M=(f[L+144>>2]|0)-(f[b>>2]|0)|0;M=c>>>0>>0?M:c;L=(f[L+148>>2]|0)-(f[L+140>>2]|0)|0;c=M>>>0>>0?L:M;d=d+-1|0}while((d|0)!=0);b=(c<<4)+80|0}k=Jc(b)|0;f[Q>>2]=k;if(!k){R=0;u=S;return R|0}f[R>>2]=k;a:do if(e)b=k;else{z=a+32|0;A=a+12|0;B=a+4|0;C=Q+8|0;D=R+8|0;E=Q+4|0;F=Q+12|0;G=P<<2;H=P<<1;I=P*3|0;J=R+4|0;K=R+12|0;L=l-m<<2;M=m-l<<2;p=g-h|0;c=i;b=k;d=k;g=l;e=m;t=n-o|0;n=k;while(1){v=f[z>>2]|0;e=X((f[A>>2]|0)-(f[B>>2]|0)|0,g-e|0)|0;f[C>>2]=p;f[D>>2]=t;w=j+136|0;o=f[j+144>>2]|0;q=f[w>>2]|0;x=o-q|0;h=f[j+148>>2]|0;m=j+140|0;g=f[m>>2]|0;y=h-g|0;f[E>>2]=x-p;f[F>>2]=(q|0)%2|0;do if((y|0)>3){k=g+-1-h|0;k=(h+4+((k|0)>-8?k:-8)-g|0)>>>2;l=v+(G<<2)+((X(L,k)|0)<<2)|0;k=X(M,k)|0;if((x|0)>0){g=y;h=e;i=v}else{g=y;h=e;i=v;while(1){Kg(Q,i,P,h);Lg(Q);if((g|0)>7){g=g+-4|0;h=h-G|0;i=i+(G<<2)|0}else break}e=M+e+k|0;h=l;break}while(1){Kg(Q,i,P,h);Lg(Q);j=x;do{s=j;j=j+-1|0;f[i+(j<<2)>>2]=f[n+(j<<4)>>2];f[i+(j+P<<2)>>2]=f[n+(j<<4)+4>>2];f[i+(j+H<<2)>>2]=f[n+(j<<4)+8>>2];f[i+(j+I<<2)>>2]=f[n+(j<<4)+12>>2]}while((s|0)>1);if((g|0)>7){g=g+-4|0;h=h-G|0;i=i+(G<<2)|0}else break}e=M+e+k|0;h=l}else h=v;while(0);b:do if(!(y&3)){s=n;N=22}else{Kg(Q,h,P,e);Lg(Q);e=x+-1|0;if((x|0)<=0){l=y-t|0;f[J>>2]=l;k=(f[m>>2]|0)%2|0;f[K>>2]=k;m=v;break}g=f[Q>>2]|0;switch(y&3){case 3:{b=e;while(1){f[h+(b+H<<2)>>2]=f[g+(b<<4)+8>>2];f[h+(b+P<<2)>>2]=f[g+(b<<4)+4>>2];f[h+(b<<2)>>2]=f[g+(b<<4)>>2];if((b|0)>0)b=b+-1|0;else{b=g;s=g;N=22;break}}break}case 2:{b=e;while(1){f[h+(b+P<<2)>>2]=f[g+(b<<4)+4>>2];f[h+(b<<2)>>2]=f[g+(b<<4)>>2];if((b|0)>0)b=b+-1|0;else{b=g;s=g;N=22;break}}break}case 1:{b=e;while(1){f[h+(b<<2)>>2]=f[g+(b<<4)>>2];if((b|0)>0)b=b+-1|0;else{b=g;s=g;N=22;break}}break}default:{b=g;s=g;N=22;break b}}}while(0);do if((N|0)==22){N=0;r=y-t|0;f[J>>2]=r;p=(f[m>>2]|0)%2|0;f[K>>2]=p;if((x|0)>3){n=q+-1-o|0;o=o+4+((n|0)>-8?n:-8)-q&-4;if(!y){k=(t|0)>0;l=X(t,P)|0;m=0-p|0;n=(r|0)>0;i=v;j=x;while(1){d=f[R>>2]|0;g=d+(p<<4)|0;if(k){e=0;do{q=g+(e<<1<<4)|0;h=i+((X(e,P)|0)<<2)|0;f[q>>2]=f[h>>2];f[q+4>>2]=f[h+4>>2];f[q+8>>2]=f[h+8>>2];f[q+12>>2]=f[h+12>>2];e=e+1|0}while((e|0)!=(t|0))}g=i+(l<<2)|0;h=d+16+(m<<4)|0;if(n){e=0;do{q=h+(e<<1<<4)|0;T=g+((X(e,P)|0)<<2)|0;f[q>>2]=f[T>>2];f[q+4>>2]=f[T+4>>2];f[q+8>>2]=f[T+8>>2];f[q+12>>2]=f[T+12>>2];e=e+1|0}while((e|0)!=(r|0))}Lg(R);if((j|0)>7){i=i+16|0;j=j+-4|0}else break}m=v+16+(o<<2)|0;k=p;l=r;n=s;break}j=f[D>>2]|0;k=(j|0)>0;l=X(j,P)|0;m=0-p|0;n=(r|0)>0;h=v;i=x;while(1){g=d+(p<<4)|0;if(k){e=0;do{T=g+(e<<1<<4)|0;t=h+((X(e,P)|0)<<2)|0;f[T>>2]=f[t>>2];f[T+4>>2]=f[t+4>>2];f[T+8>>2]=f[t+8>>2];f[T+12>>2]=f[t+12>>2];e=e+1|0}while((e|0)!=(j|0))}g=h+(l<<2)|0;e=d+16+(m<<4)|0;if(n){d=0;do{T=e+(d<<1<<4)|0;t=g+((X(d,P)|0)<<2)|0;f[T>>2]=f[t>>2];f[T+4>>2]=f[t+4>>2];f[T+8>>2]=f[t+8>>2];f[T+12>>2]=f[t+12>>2];d=d+1|0}while((d|0)!=(r|0))}Lg(R);e=0;do{T=h+((X(e,P)|0)<<2)|0;d=f[R>>2]|0;t=d+(e<<4)|0;f[T>>2]=f[t>>2];f[T+4>>2]=f[t+4>>2];f[T+8>>2]=f[t+8>>2];f[T+12>>2]=f[t+12>>2];e=e+1|0}while((e|0)!=(y|0));if((i|0)>7){h=h+16|0;i=i+-4|0}else break}m=v+16+(o<<2)|0;k=p;l=r;n=s}else{m=v;k=p;l=r;n=s}}while(0);i=x&3;if(i){j=f[R>>2]|0;e=j+(k<<4)|0;g=f[D>>2]|0;if((g|0)>0){h=i<<2;d=0;do{hj(e+(d<<1<<4)|0,m+((X(d,P)|0)<<2)|0,h|0)|0;d=d+1|0}while((d|0)!=(g|0))}h=m+((X(g,P)|0)<<2)|0;e=j+16+(0-k<<4)|0;if((l|0)>0){g=i<<2;d=0;do{hj(e+(d<<1<<4)|0,h+((X(d,P)|0)<<2)|0,g|0)|0;d=d+1|0}while((d|0)!=(l|0))}Lg(R);if(!y)d=j;else{e=i<<2;d=0;do{hj(m+((X(d,P)|0)<<2)|0,j+(d<<4)|0,e|0)|0;d=d+1|0}while((d|0)!=(y|0));d=j}}c=c+-1|0;if(!c)break a;p=x;j=w;g=f[O>>2]|0;e=f[a>>2]|0;t=y}}while(0);Kc(b);T=1;u=S;return T|0}function Kg(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;h=f[a>>2]|0;j=f[a+12>>2]|0;g=h+(j<<4)|0;l=f[a+8>>2]|0;m=c*3|0;q=h+16+(0-j<<4)|0;n=f[a+4>>2]|0;if(((l+m|0)<(d|0)?(b&15|0)==0:0)?((g|c)&15|0)==0:0){if((l|0)>0){a=0;do{g=a<<3;f[h+(j<<4)+(g<<2)>>2]=f[b+(a<<2)>>2];r=a+c|0;f[h+(j<<4)+((g|1)<<2)>>2]=f[b+(r<<2)>>2];r=r+c|0;f[h+(j<<4)+((g|2)<<2)>>2]=f[b+(r<<2)>>2];f[h+(j<<4)+((g|3)<<2)>>2]=f[b+(r+c<<2)>>2];a=a+1|0}while((a|0)!=(l|0))}}else e=2;if((e|0)==2?(l|0)>0:0){a=0;do{e=a<<3;f[h+(j<<4)+(e<<2)>>2]=f[b+(a<<2)>>2];g=a+c|0;if(((g|0)<(d|0)?(f[h+(j<<4)+((e|1)<<2)>>2]=f[b+(g<<2)>>2],i=g+c|0,(i|0)<(d|0)):0)?(f[h+(j<<4)+((e|2)<<2)>>2]=f[b+(i<<2)>>2],k=i+c|0,(k|0)<(d|0)):0)f[h+(j<<4)+((e|3)<<2)>>2]=f[b+(k<<2)>>2];a=a+1|0}while((a|0)!=(l|0))}h=b+(l<<2)|0;b=d-l|0;if(((n+m|0)<(b|0)?(h&15|0)==0:0)?((q|c)&15|0)==0:0){if((n|0)>0)a=0;else return;do{r=a<<3;f[q+(r<<2)>>2]=f[h+(a<<2)>>2];p=a+c|0;f[q+((r|1)<<2)>>2]=f[h+(p<<2)>>2];p=p+c|0;f[q+((r|2)<<2)>>2]=f[h+(p<<2)>>2];f[q+((r|3)<<2)>>2]=f[h+(p+c<<2)>>2];a=a+1|0}while((a|0)!=(n|0));return}if((n|0)>0)a=0;else return;do{e=a<<3;f[q+(e<<2)>>2]=f[h+(a<<2)>>2];g=a+c|0;if(((g|0)<(b|0)?(f[q+((e|1)<<2)>>2]=f[h+(g<<2)>>2],o=g+c|0,(o|0)<(b|0)):0)?(f[q+((e|2)<<2)>>2]=f[h+(o<<2)>>2],p=o+c|0,(p|0)<(b|0)):0)f[q+((e|3)<<2)>>2]=f[h+(p<<2)>>2];a=a+1|0}while((a|0)!=(n|0));return}function Lg(a){a=a|0;var b=0,c=0,d=0,e=0,g=0,h=0,i=0,j=0.0,k=0.0,l=0,m=0.0,o=0;do if(!(f[a+12>>2]|0)){d=f[a+8>>2]|0;if((f[a+4>>2]|0)>0){b=f[a>>2]|0;if((d|0)>0){e=0;c=1;g=b;i=9;break}else{e=0;h=1;g=b;break}}if((d|0)>1){c=1;b=0;i=7}else return}else{d=f[a+8>>2]|0;if((d|0)<=0)if((f[a+4>>2]|0)>1){e=1;h=0;g=f[a>>2]|0;break}else return;else{c=0;b=1;i=7}}while(0);if((i|0)==7){e=b;g=f[a>>2]|0;i=9}if((i|0)==9){b=0;do{i=b<<3;o=g+(e<<4)+(i<<2)|0;l=g+(e<<4)+((i|1)<<2)|0;m=+n[l>>2];h=g+(e<<4)+((i|2)<<2)|0;k=+n[h>>2];i=g+(e<<4)+((i|3)<<2)|0;j=+n[i>>2];n[o>>2]=+n[o>>2]*1.2301740646362305;n[l>>2]=m*1.2301740646362305;n[h>>2]=k*1.2301740646362305;n[i>>2]=j*1.2301740646362305;b=b+1|0}while((b|0)!=(d|0));h=c}c=f[a+4>>2]|0;if((c|0)>0){b=0;do{o=b<<3;i=g+(h<<4)+(o<<2)|0;a=g+(h<<4)+((o|1)<<2)|0;j=+n[a>>2];l=g+(h<<4)+((o|2)<<2)|0;k=+n[l>>2];o=g+(h<<4)+((o|3)<<2)|0;m=+n[o>>2];n[i>>2]=+n[i>>2]*1.625732421875;n[a>>2]=j*1.625732421875;n[l>>2]=k*1.625732421875;n[o>>2]=m*1.625732421875;b=b+1|0}while((b|0)!=(c|0))}b=g+(h<<4)|0;a=g+(e<<4)|0;g=a+16|0;i=c-e|0;i=(d|0)<(i|0)?d:i;Mg(b,g,d,i,-.4435068666934967);l=b+16|0;o=d-h|0;o=(c|0)<(o|0)?c:o;Mg(a,l,c,o,-.8829110860824585);Mg(b,g,d,i,.05298011749982834);Mg(a,l,c,o,1.5861343145370483);return}function Mg(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;var f=0.0,g=0.0,h=0.0,i=0.0,j=0,k=0,l=0,m=0,o=0.0,p=0.0,q=0,r=0.0,s=0.0,t=0,u=0.0,v=0.0,w=0,x=0.0;if((d|0)>0){m=d<<1;l=m+-2|0;j=b;k=0;g=+n[a>>2];h=+n[a+4>>2];i=+n[a+8>>2];f=+n[a+12>>2];while(1){w=j+-16|0;t=j+-12|0;v=+n[t>>2];q=j+-8|0;s=+n[q>>2];a=j+-4|0;p=+n[a>>2];x=g;g=+n[j>>2];u=h;h=+n[j+4>>2];r=i;i=+n[j+8>>2];o=f;f=+n[j+12>>2];n[w>>2]=+n[w>>2]+(x+g)*e;n[t>>2]=v+(u+h)*e;n[q>>2]=s+(r+i)*e;n[a>>2]=p+(o+f)*e;k=k+1|0;if((k|0)==(d|0))break;else j=j+32|0}a=b+(l<<4)|0;b=b+(m<<4)|0}if((d|0)>=(c|0))return;f=e+e;g=f*+n[a>>2];h=f*+n[a+4>>2];i=f*+n[a+8>>2];f=f*+n[a+12>>2];while(1){m=b+-16|0;q=b+-12|0;u=+n[q>>2];t=b+-8|0;v=+n[t>>2];w=b+-4|0;x=+n[w>>2];n[m>>2]=g+ +n[m>>2];n[q>>2]=h+u;n[t>>2]=i+v;n[w>>2]=f+x;d=d+1|0;if((d|0)==(c|0))break;else b=b+32|0}return}function Ng(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,g=0.0,h=0,i=0,j=0,k=0,l=0.0,m=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0;x=c<<2;y=Hc(c<<4)|0;if(!y){z=0;return z|0}z=y+x|0;ij(y|0,0,x|0)|0;t=c+-1|0;u=(c|0)==0;if(!u){d=y;e=0;while(1){f[d>>2]=e;e=e+1|0;if((e|0)==(c|0))break;else d=d+4|0}}a:do if(t|0){m=1;o=a;p=0;d=0;q=y;s=c;while(1){r=o+(p<<2)|0;if(p>>>0>>0){e=r;g=0.0;h=p}else break;while(1){l=+n[e>>2];l=l>0.0?l:-l;w=l>g;d=w?h:d;g=w?l:g;h=h+1|0;if((h|0)==(c|0))break;else e=e+(c<<2)|0}if(g==0.0)break;if((d|0)!=(p|0)){w=q+(d<<2)+(0-p<<2)|0;v=f[q>>2]|0;f[q>>2]=f[w>>2];f[w>>2]=v;w=o+((X(d-p|0,c)|0)<<2)|0;hj(z|0,w|0,x|0)|0;hj(w|0,o|0,x|0)|0;hj(o|0,z|0,x|0)|0}g=+n[r>>2];if(m>>>0>>0){h=r+(c<<2)|0;j=m;while(1){l=+n[h>>2]/g;n[h>>2]=l;e=m;i=h;k=r;do{k=k+4|0;i=i+4|0;n[i>>2]=+n[i>>2]-l*+n[k>>2];e=e+1|0}while((e|0)!=(c|0));j=j+1|0;if((j|0)==(c|0))break;else h=h+(s<<2)+(p<<2)|0}}p=p+1|0;if(p>>>0>=t>>>0)break a;else{m=m+1|0;o=o+(c<<2)|0;q=q+4|0;s=s+-1|0}}Mc(y);z=0;return z|0}while(0);v=z+(c<<2)|0;w=z+(c<<1<<2)|0;if(!u){q=v+(c<<2)|0;r=w+(c<<2)|0;s=a+((X(c,c)|0)<<2)+-4|0;t=~c;p=0;while(1){ij(z|0,0,x|0)|0;n[z+(p<<2)>>2]=1.0;i=y;j=a;k=w;m=0;o=1;while(1){if(!m)g=0.0;else{d=j;e=w;g=0.0;h=1;while(1){g=g+ +n[d>>2]*+n[e>>2];h=h+1|0;if((h|0)==(o|0))break;else{d=d+4|0;e=e+4|0}}}n[k>>2]=+n[z+(f[i>>2]<<2)>>2]-g;m=m+1|0;if((m|0)==(c|0)){i=c;j=s;k=q;m=r;break}else{i=i+4|0;j=j+(c<<2)|0;k=k+4|0;o=o+1|0}}while(1){m=m+-4|0;l=+n[j>>2];if(i>>>0>>0){d=j;e=k;g=0.0;h=i;while(1){d=d+4|0;g=g+ +n[d>>2]*+n[e>>2];h=h+1|0;if((h|0)==(c|0))break;else e=e+4|0}}else g=0.0;k=k+-4|0;i=i+-1|0;n[k>>2]=(+n[m>>2]-g)/l;if(!i){d=b;e=0;break}else j=j+(t<<2)|0}while(1){f[d>>2]=f[v+(e<<2)>>2];e=e+1|0;if((e|0)==(c|0))break;else d=d+(c<<2)|0}p=p+1|0;if((p|0)==(c|0))break;else b=b+4|0}}Mc(y);z=1;return z|0}function Og(a){a=a|0;var b=0,c=0,d=0,e=0,g=0,h=0;g=Ic(1,44)|0;if(!g){g=0;return g|0}h=_g()|0;f[g>>2]=h;if(!h){$g(0);f[g>>2]=0;h=g+4|0;ph(f[h>>2]|0);f[h>>2]=0;if((f[g+40>>2]|0)==0?(b=g+8|0,c=f[b>>2]|0,c|0):0){Kc(c);f[b>>2]=0}b=g+12|0;c=f[b>>2]|0;if(c|0){Kc(c);f[b>>2]=0}Mc(g);h=0;return h|0}h=oh()|0;b=g+4|0;f[b>>2]=h;if(h|0){f[g+40>>2]=a;h=g;return h|0}$g(f[g>>2]|0);f[g>>2]=0;ph(f[b>>2]|0);f[b>>2]=0;if((f[g+40>>2]|0)==0?(d=g+8|0,e=f[d>>2]|0,e|0):0){Kc(e);f[d>>2]=0}b=g+12|0;c=f[b>>2]|0;if(c|0){Kc(c);f[b>>2]=0}Mc(g);h=0;return h|0}function Pg(a){a=a|0;var b=0,c=0,d=0;if(!a)return;$g(f[a>>2]|0);f[a>>2]=0;d=a+4|0;ph(f[d>>2]|0);f[d>>2]=0;if((f[a+40>>2]|0)==0?(b=a+8|0,c=f[b>>2]|0,c|0):0){Kc(c);f[b>>2]=0}b=a+12|0;c=f[b>>2]|0;if(c|0){Kc(c);f[b>>2]=0}Mc(a);return}function Qg(a,b,c){a=a|0;b=b|0;c=c|0;var e=0,g=0,i=0,k=0,l=0,m=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0,ta=0,ua=0,va=0,wa=0,xa=0,ya=0,za=0,Aa=0,Ba=0,Ca=0;Aa=(f[b+8>>2]|0)-(f[b>>2]|0)|0;Ba=b+20|0;e=f[Ba>>2]|0;if(!e){Ba=1;return Ba|0}sa=b+24|0;ta=c+808|0;ua=c+16|0;va=a+4|0;xa=a+8|0;ya=a+16|0;za=a+20|0;ra=c+20|0;oa=b+32|0;pa=a+12|0;qa=a+32|0;na=0;c=e;a:while(1){la=f[sa>>2]|0;ma=la+(na*136|0)+24|0;b=f[ma>>2]|0;if(b){ia=la+(na*136|0)+16|0;ja=la+(na*136|0)+20|0;ka=na+-1|0;ha=0;e=f[ja>>2]|0;c=f[ia>>2]|0;do{if(X(e,c)|0){ca=la+(na*136|0)+28+(ha*36|0)+20|0;da=la+(na*136|0)+28+(ha*36|0)+16|0;ea=la+(na*136|0)+28+(ha*36|0)|0;fa=la+(na*136|0)+28+(ha*36|0)+4|0;ga=la+(na*136|0)+28+(ha*36|0)+32|0;ba=0;do{b=f[ca>>2]|0;$=b+(ba*40|0)+16|0;aa=b+(ba*40|0)+20|0;if(X(f[aa>>2]|0,f[$>>2]|0)|0){_=b+(ba*40|0)+24|0;Z=0;do{c=f[_>>2]|0;R=f[da>>2]|0;e=f[ta>>2]|0;b=f[ua>>2]|0;S=f[va>>2]|0;T=f[a>>2]|0;U=c+(Z*56|0)+8|0;Y=c+(Z*56|0)+12|0;if(!(Rg(a,(f[c+(Z*56|0)+16>>2]|0)-(f[U>>2]|0)|0,(f[c+(Z*56|0)+20>>2]|0)-(f[Y>>2]|0)|0)|0)){c=0;F=219;break a}V=c+(Z*56|0)+24|0;g=f[V>>2]|0;hh(T);ih(T,18,0,46);ih(T,17,0,3);ih(T,0,0,4);W=c+(Z*56|0)+48|0;if(f[W>>2]|0){M=c+(Z*56|0)+4|0;N=(b&1|0)!=0;O=(b&2|0)==0;P=(b&8|0)==0;Q=R<<8;L=(b&32|0)==0;K=0;b=2;c=g+e|0;do{i=f[M>>2]|0;J=N&(b>>>0<2?(c|0)<=((f[V>>2]|0)+-4|0):0);e=f[i+(K<<5)>>2]|0;b:do if(e){e=(f[e>>2]|0)+(f[i+(K<<5)+4>>2]|0)|0;g=f[i+(K<<5)+16>>2]|0;if(!J){if(!(mh(T,e,g)|0)){c=0;F=219;break a}}else qh(S,e,g);H=i+(K<<5)+12|0;if((c|0)>0&(f[H>>2]|0)!=0){I=O|J;G=0;while(1){c:do switch(b|0){case 0:{if(J){v=1<>1|v;e=f[za>>2]|0;if(!e)break c;u=0-v|0;t=0;g=f[ya>>2]|0;while(1){s=t;t=t+4|0;if(!g)g=0;else{q=(s|0)==-4;r=s|3;p=0;do{d:do if(!q)if(P){e=s;do{if(e>>>0>=(f[za>>2]|0)>>>0)break d;g=f[pa>>2]|0;l=e;e=e+1|0;i=(X(f[qa>>2]|0,e)|0)+p|0;k=g+(i+1<<1)|0;l=(f[xa>>2]|0)+((X(f[ya>>2]|0,l)|0)+p<<2)|0;m=f[va>>2]|0;F=d[k>>1]|0;if((F&255|0)!=0&(F&20480|0)==0){if(rh(m)|0){E=rh(m)|0;f[l>>2]=E|0?u:v;F=f[qa>>2]|0;D=k+(0-F<<1)|0;F=k+(F<<1)|0;C=D+-2|0;d[C>>1]=d[C>>1]|2;d[D>>1]=d[D>>1]|d[3160+(E<<1)>>1];D=D+2|0;d[D>>1]=d[D>>1]|4;D=g+(i<<1)|0;d[D>>1]=d[D>>1]|d[3160+(E+2<<1)>>1];d[k>>1]=d[k>>1]|4096;D=k+2|0;d[D>>1]=d[D>>1]|d[3160+(E+4<<1)>>1];D=F+-2|0;d[D>>1]=d[D>>1]|1;d[F>>1]=d[F>>1]|d[3160+(E+6<<1)>>1];F=F+2|0;d[F>>1]=d[F>>1]|8}d[k>>1]=d[k>>1]|16384}}while(e>>>0>>0)}else{e=s;do{g=f[za>>2]|0;if(e>>>0>=g>>>0)break d;i=f[pa>>2]|0;E=e;e=e+1|0;k=(X(f[qa>>2]|0,e)|0)+p|0;l=i+(k+1<<1)|0;m=(f[xa>>2]|0)+((X(f[ya>>2]|0,E)|0)+p<<2)|0;o=f[va>>2]|0;F=d[l>>1]|0;F=(E|0)==(r|0)|(E|0)==(g+-1|0)?F&-1095:F;if((F&255|0)!=0&(F&20480|0)==0){if(rh(o)|0){E=rh(o)|0;f[m>>2]=E|0?u:v;F=f[qa>>2]|0;D=l+(0-F<<1)|0;F=l+(F<<1)|0;C=D+-2|0;d[C>>1]=d[C>>1]|2;d[D>>1]=d[D>>1]|d[3160+(E<<1)>>1];D=D+2|0;d[D>>1]=d[D>>1]|4;D=i+(k<<1)|0;d[D>>1]=d[D>>1]|d[3160+(E+2<<1)>>1];d[l>>1]=d[l>>1]|4096;D=l+2|0;d[D>>1]=d[D>>1]|d[3160+(E+4<<1)>>1];D=F+-2|0;d[D>>1]=d[D>>1]|1;d[F>>1]=d[F>>1]|d[3160+(E+6<<1)>>1];F=F+2|0;d[F>>1]=d[F>>1]|8}d[l>>1]=d[l>>1]|16384}}while(e>>>0>>0)}while(0);p=p+1|0;g=f[ya>>2]|0}while(p>>>0>>0);e=f[za>>2]|0}if(t>>>0>=e>>>0){F=187;break c}}}if(!P){w=1<>1|w;e=f[za>>2]|0;if(!e){F=187;break c}x=0-w|0;g=f[ya>>2]|0;v=0;i=g;while(1){u=v;v=v+4|0;if(!g)g=0;else{s=(u|0)==-4;t=u|3;r=0;while(1){if(s)e=i;else{k=u;do{e=f[za>>2]|0;if(k>>>0>=e>>>0)break;l=f[pa>>2]|0;F=k;k=k+1|0;m=(X(f[qa>>2]|0,k)|0)+r|0;o=l+(m+1<<1)|0;p=(f[xa>>2]|0)+((X(f[ya>>2]|0,F)|0)+r<<2)|0;q=f[a>>2]|0;g=d[o>>1]|0;e=(F|0)==(t|0)|(F|0)==(e+-1|0)?g&-1095:g;g=e&255;if((g|0)!=0&(e&20480|0)==0){i=q+100|0;f[i>>2]=q+24+(h[20356+(g|Q)>>0]<<2);if(nh(q)|0){E=e>>>4&255;f[i>>2]=q+24+(h[21380+E>>0]<<2);F=nh(q)|0;E=F^h[21636+E>>0];f[p>>2]=E|0?x:w;F=f[qa>>2]|0;D=o+(0-F<<1)|0;F=o+(F<<1)|0;C=D+-2|0;d[C>>1]=d[C>>1]|2;d[D>>1]=d[D>>1]|d[3160+(E<<1)>>1];D=D+2|0;d[D>>1]=d[D>>1]|4;D=l+(m<<1)|0;d[D>>1]=d[D>>1]|d[3160+(E+2<<1)>>1];d[o>>1]=d[o>>1]|4096;D=o+2|0;d[D>>1]=d[D>>1]|d[3160+(E+4<<1)>>1];D=F+-2|0;d[D>>1]=d[D>>1]|1;d[F>>1]=d[F>>1]|d[3160+(E+6<<1)>>1];F=F+2|0;d[F>>1]=d[F>>1]|8}d[o>>1]=d[o>>1]|16384}}while(k>>>0>>0);e=f[ya>>2]|0}r=r+1|0;if(r>>>0>=e>>>0)break;else i=e}i=e;g=e;e=f[za>>2]|0}if(v>>>0>=e>>>0){F=187;break c}}}g=f[xa>>2]|0;e=(f[pa>>2]|0)+2|0;v=1<>1|v;k=f[za>>2]|0;if(k>>>0>3){u=0-v|0;i=f[ya>>2]|0;m=0;l=i;do{if(!i)i=0;else{t=0;i=l;do{q=g+(t<<2)|0;k=f[qa>>2]|0;r=e+(t<<1)+(k<<1)|0;p=f[a>>2]|0;l=d[r>>1]|0;o=l&255;if((o|0)!=0&(l&20480|0)==0){i=p+100|0;f[i>>2]=p+24+(h[20356+(o|Q)>>0]<<2);if(!(nh(p)|0))k=f[qa>>2]|0;else{E=l>>>4&255;f[i>>2]=p+24+(h[21380+E>>0]<<2);k=nh(p)|0;E=k^h[21636+E>>0];f[q>>2]=E|0?u:v;k=f[qa>>2]|0;D=r+(0-k<<1)|0;F=r+(k<<1)|0;C=D+-2|0;d[C>>1]=d[C>>1]|2;d[D>>1]=d[D>>1]|d[3160+(E<<1)>>1];D=D+2|0;d[D>>1]=d[D>>1]|4;D=r+-2|0;d[D>>1]=d[D>>1]|d[3160+(E+2<<1)>>1];d[r>>1]=d[r>>1]|4096;D=r+2|0;d[D>>1]=d[D>>1]|d[3160+(E+4<<1)>>1];D=F+-2|0;d[D>>1]=d[D>>1]|1;d[F>>1]=d[F>>1]|d[3160+(E+6<<1)>>1];F=F+2|0;d[F>>1]=d[F>>1]|8}d[r>>1]=d[r>>1]|16384;i=f[ya>>2]|0;p=f[a>>2]|0}q=q+(i<<2)|0;r=r+(k<<1)|0;l=d[r>>1]|0;o=l&255;if((o|0)!=0&(l&20480|0)==0){i=p+100|0;f[i>>2]=p+24+(h[20356+(o|Q)>>0]<<2);if(!(nh(p)|0))k=f[qa>>2]|0;else{E=l>>>4&255;f[i>>2]=p+24+(h[21380+E>>0]<<2);k=nh(p)|0;E=k^h[21636+E>>0];f[q>>2]=E|0?u:v;k=f[qa>>2]|0;D=r+(0-k<<1)|0;F=r+(k<<1)|0;C=D+-2|0;d[C>>1]=d[C>>1]|2;d[D>>1]=d[D>>1]|d[3160+(E<<1)>>1];D=D+2|0;d[D>>1]=d[D>>1]|4;D=r+-2|0;d[D>>1]=d[D>>1]|d[3160+(E+2<<1)>>1];d[r>>1]=d[r>>1]|4096;D=r+2|0;d[D>>1]=d[D>>1]|d[3160+(E+4<<1)>>1];D=F+-2|0;d[D>>1]=d[D>>1]|1;d[F>>1]=d[F>>1]|d[3160+(E+6<<1)>>1];F=F+2|0;d[F>>1]=d[F>>1]|8}d[r>>1]=d[r>>1]|16384;i=f[ya>>2]|0;p=f[a>>2]|0}s=q+(i<<2)|0;r=r+(k<<1)|0;l=d[r>>1]|0;o=l&255;if((o|0)!=0&(l&20480|0)==0){i=p+100|0;f[i>>2]=p+24+(h[20356+(o|Q)>>0]<<2);if(!(nh(p)|0))k=f[qa>>2]|0;else{E=l>>>4&255;f[i>>2]=p+24+(h[21380+E>>0]<<2);k=nh(p)|0;E=k^h[21636+E>>0];f[s>>2]=E|0?u:v;k=f[qa>>2]|0;D=r+(0-k<<1)|0;F=r+(k<<1)|0;C=D+-2|0;d[C>>1]=d[C>>1]|2;d[D>>1]=d[D>>1]|d[3160+(E<<1)>>1];D=D+2|0;d[D>>1]=d[D>>1]|4;D=r+-2|0;d[D>>1]=d[D>>1]|d[3160+(E+2<<1)>>1];d[r>>1]=d[r>>1]|4096;D=r+2|0;d[D>>1]=d[D>>1]|d[3160+(E+4<<1)>>1];D=F+-2|0;d[D>>1]=d[D>>1]|1;d[F>>1]=d[F>>1]|d[3160+(E+6<<1)>>1];F=F+2|0;d[F>>1]=d[F>>1]|8}d[r>>1]=d[r>>1]|16384;i=f[ya>>2]|0;q=f[a>>2]|0}else q=p;p=s+(i<<2)|0;k=r+(k<<1)|0;l=d[k>>1]|0;o=l&255;if((o|0)!=0&(l&20480|0)==0){i=q+100|0;f[i>>2]=q+24+(h[20356+(o|Q)>>0]<<2);if(nh(q)|0){E=l>>>4&255;f[i>>2]=q+24+(h[21380+E>>0]<<2);F=nh(q)|0;E=F^h[21636+E>>0];f[p>>2]=E|0?u:v;F=f[qa>>2]|0;D=k+(0-F<<1)|0;F=k+(F<<1)|0;C=D+-2|0;d[C>>1]=d[C>>1]|2;d[D>>1]=d[D>>1]|d[3160+(E<<1)>>1];D=D+2|0;d[D>>1]=d[D>>1]|4;D=k+-2|0;d[D>>1]=d[D>>1]|d[3160+(E+2<<1)>>1];d[k>>1]=d[k>>1]|4096;D=k+2|0;d[D>>1]=d[D>>1]|d[3160+(E+4<<1)>>1];D=F+-2|0;d[D>>1]=d[D>>1]|1;d[F>>1]=d[F>>1]|d[3160+(E+6<<1)>>1];F=F+2|0;d[F>>1]=d[F>>1]|8}d[k>>1]=d[k>>1]|16384;i=f[ya>>2]|0}t=t+1|0}while(t>>>0>>0);l=i;k=f[za>>2]|0}g=g+(i<<2<<2)|0;e=e+(f[qa>>2]<<2<<1)|0;m=m+4|0}while(m>>>0<(k&-4)>>>0);i=l}else{m=0;i=f[ya>>2]|0}if(!i){F=187;break c}u=0-v|0;t=0;do{if(m>>>0>>0){q=m;r=e+(t<<1)|0;s=g+(t<<2)|0;while(1){r=r+(f[qa>>2]<<1)|0;l=f[a>>2]|0;o=d[r>>1]|0;p=o&255;if((p|0)!=0&(o&20480|0)==0){i=l+100|0;f[i>>2]=l+24+(h[20356+(p|Q)>>0]<<2);if(nh(l)|0){E=o>>>4&255;f[i>>2]=l+24+(h[21380+E>>0]<<2);F=nh(l)|0;E=F^h[21636+E>>0];f[s>>2]=E|0?u:v;F=f[qa>>2]|0;D=r+(0-F<<1)|0;F=r+(F<<1)|0;C=D+-2|0;d[C>>1]=d[C>>1]|2;d[D>>1]=d[D>>1]|d[3160+(E<<1)>>1];D=D+2|0;d[D>>1]=d[D>>1]|4;D=r+-2|0;d[D>>1]=d[D>>1]|d[3160+(E+2<<1)>>1];d[r>>1]=d[r>>1]|4096;D=r+2|0;d[D>>1]=d[D>>1]|d[3160+(E+4<<1)>>1];D=F+-2|0;d[D>>1]=d[D>>1]|1;d[F>>1]=d[F>>1]|d[3160+(E+6<<1)>>1];F=F+2|0;d[F>>1]=d[F>>1]|8}d[r>>1]=d[r>>1]|16384;i=f[ya>>2]|0;k=f[za>>2]|0}q=q+1|0;if(q>>>0>=k>>>0)break;else s=s+(i<<2)|0}}t=t+1|0}while(t>>>0>>0);F=187;break}case 1:{if(J){p=1<>1;q=0-p|0;e=f[za>>2]|0;if(!e)break c;g=f[ya>>2]|0;o=0;i=g;while(1){m=o;o=o+4|0;do if(!g){k=i;g=0}else{if((m|0)==-4){k=i;g=i;break}else l=0;do{g=l;l=l+1|0;e=m;do{if(e>>>0>=(f[za>>2]|0)>>>0)break;k=e;e=e+1|0;i=(f[pa>>2]|0)+((X(f[qa>>2]|0,e)|0)+l<<1)|0;k=(f[xa>>2]|0)+((X(f[ya>>2]|0,k)|0)+g<<2)|0;if((d[i>>1]&20480)==4096){E=(rh(f[va>>2]|0)|0)!=0;E=E?p:q;F=f[k>>2]|0;f[k>>2]=((F|0)<0?0-E|0:E)+F;d[i>>1]=d[i>>1]|8192}}while(e>>>0>>0);e=f[ya>>2]|0}while(l>>>0>>0);k=e;g=e;e=f[za>>2]|0}while(0);if(o>>>0>=e>>>0){F=187;break c}else i=k}}if(!P){s=1<>1;t=0-s|0;e=f[za>>2]|0;if(!e){F=187;break c}g=f[ya>>2]|0;r=0;k=g;while(1){q=r;r=r+4|0;do if(!g){i=k;g=0}else{p=q|3;if((q|0)==-4){i=k;g=k;break}else o=0;do{i=o;o=o+1|0;g=q;do{e=f[za>>2]|0;if(g>>>0>=e>>>0)break;E=g;g=g+1|0;l=(f[pa>>2]|0)+((X(f[qa>>2]|0,g)|0)+o<<1)|0;m=(f[xa>>2]|0)+((X(f[ya>>2]|0,E)|0)+i<<2)|0;k=f[a>>2]|0;F=d[l>>1]|0;e=(E|0)==(p|0)|(E|0)==(e+-1|0)?F&-1095:F;if((e&20480|0)==4096){f[k+100>>2]=k+24+((e&8192|0?16:e&255|0?15:14)<<2);E=(nh(k)|0)!=0;E=E?s:t;F=f[m>>2]|0;f[m>>2]=((F|0)<0?0-E|0:E)+F;d[l>>1]=d[l>>1]|8192}}while(g>>>0>>0);e=f[ya>>2]|0}while(o>>>0>>0);i=e;g=e;e=f[za>>2]|0}while(0);if(r>>>0>=e>>>0){F=187;break c}else k=i}}g=f[xa>>2]|0;e=(f[pa>>2]|0)+2|0;t=1<>1;u=0-t|0;k=f[za>>2]|0;i=f[ya>>2]|0;if(k>>>0>3){m=0;l=i;do{if(!i)i=0;else{s=0;i=l;do{p=g+(s<<2)|0;o=f[qa>>2]|0;q=e+(s<<1)+(o<<1)|0;k=f[a>>2]|0;l=d[q>>1]|0;if((l&20480|0)==4096){f[k+100>>2]=k+24+((l&8192|0?16:l&255|0?15:14)<<2);i=(nh(k)|0)!=0;i=i?t:u;k=f[p>>2]|0;f[p>>2]=((k|0)<0?0-i|0:i)+k;d[q>>1]=d[q>>1]|8192;k=f[a>>2]|0;i=f[ya>>2]|0;o=f[qa>>2]|0}p=p+(i<<2)|0;q=q+(o<<1)|0;l=d[q>>1]|0;if((l&20480|0)==4096){f[k+100>>2]=k+24+((l&8192|0?16:l&255|0?15:14)<<2);i=(nh(k)|0)!=0;i=i?t:u;k=f[p>>2]|0;f[p>>2]=((k|0)<0?0-i|0:i)+k;d[q>>1]=d[q>>1]|8192;k=f[a>>2]|0;i=f[ya>>2]|0;o=f[qa>>2]|0}r=p+(i<<2)|0;q=q+(o<<1)|0;l=d[q>>1]|0;if((l&20480|0)==4096){f[k+100>>2]=k+24+((l&8192|0?16:l&255|0?15:14)<<2);i=(nh(k)|0)!=0;i=i?t:u;p=f[r>>2]|0;f[r>>2]=((p|0)<0?0-i|0:i)+p;d[q>>1]=d[q>>1]|8192;p=f[a>>2]|0;i=f[ya>>2]|0;k=f[qa>>2]|0}else{p=k;k=o}o=r+(i<<2)|0;k=q+(k<<1)|0;l=d[k>>1]|0;if((l&20480|0)==4096){f[p+100>>2]=p+24+((l&8192|0?16:l&255|0?15:14)<<2);F=(nh(p)|0)!=0;F=F?t:u;i=f[o>>2]|0;f[o>>2]=((i|0)<0?0-F|0:F)+i;d[k>>1]=d[k>>1]|8192;i=f[ya>>2]|0}s=s+1|0}while(s>>>0>>0);l=i;k=f[za>>2]|0}g=g+(i<<2<<2)|0;e=e+(f[qa>>2]<<2<<1)|0;m=m+4|0}while(m>>>0<(k&-4)>>>0);i=l}else m=0;if(!i){F=187;break c}else s=0;do{if(m>>>0>>0){p=m;q=e+(s<<1)|0;r=g+(s<<2)|0;while(1){q=q+(f[qa>>2]<<1)|0;l=f[a>>2]|0;o=d[q>>1]|0;if((o&20480|0)==4096){f[l+100>>2]=l+24+((o&8192|0?16:o&255|0?15:14)<<2);k=(nh(l)|0)!=0;k=k?t:u;i=f[r>>2]|0;f[r>>2]=((i|0)<0?0-k|0:k)+i;d[q>>1]=d[q>>1]|8192;i=f[ya>>2]|0;k=f[za>>2]|0}p=p+1|0;if(p>>>0>=k>>>0)break;else r=r+(i<<2)|0}}s=s+1|0}while(s>>>0>>0);F=187;break}case 2:{D=f[a>>2]|0;E=1<>1|E;do if(P){i=f[xa>>2]|0;g=(f[pa>>2]|0)+2|0;e=f[za>>2]|0;if(e>>>0>3){u=D+92|0;v=D+100|0;w=D+96|0;x=0-E|0;F=f[ya>>2]|0;k=g;m=0;l=F;g=F;while(1){if(!l)l=0;else{q=m|1;r=q+1|0;s=m|3;t=q+3|0;p=0;do{g=i+(p<<2)|0;l=k+(p<<1)|0;F=f[pa>>2]|0;e=f[qa>>2]|0;p=p+1|0;B=F+((X(e,q)|0)+p<<1)|0;A=F+((X(e,r)|0)+p<<1)|0;C=F+((X(e,s)|0)+p<<1)|0;F=F+((X(e,t)|0)+p<<1)|0;e:do if(!((d[A>>1]|d[B>>1]|d[C>>1]|d[F>>1])&20735)){f[v>>2]=u;if(!(nh(D)|0))break;f[v>>2]=w;o=(nh(D)|0)<<1;o=o|(nh(D)|0);if(o>>>0>=4)break;g=g+((X(f[ya>>2]|0,o)|0)<<2)|0;e=l+((X(f[qa>>2]|0,o)|0)<<1)|0;l=o;while(1){if(l>>>0>=(f[za>>2]|0)>>>0)break e;e=e+(f[qa>>2]<<1)|0;if((l|0)==(o|0)){F=f[a>>2]|0;C=(j[e>>1]|0)>>>4&255;f[F+100>>2]=F+24+(h[21380+C>>0]<<2);F=nh(F)|0;C=F^h[21636+C>>0];f[g>>2]=C|0?x:E;F=f[qa>>2]|0;B=e+(0-F<<1)|0;F=e+(F<<1)|0;A=B+-2|0;d[A>>1]=d[A>>1]|2;d[B>>1]=d[B>>1]|d[3160+(C<<1)>>1];B=B+2|0;d[B>>1]=d[B>>1]|4;B=e+-2|0;d[B>>1]=d[B>>1]|d[3160+(C+2<<1)>>1];d[e>>1]=d[e>>1]|4096;B=e+2|0;d[B>>1]=d[B>>1]|d[3160+(C+4<<1)>>1];B=F+-2|0;d[B>>1]=d[B>>1]|1;d[F>>1]=d[F>>1]|d[3160+(C+6<<1)>>1];F=F+2|0;d[F>>1]=d[F>>1]|8;d[e>>1]=d[e>>1]&-16385}else Sg(a,e,g,R,E);l=l+1|0;if(l>>>0>=4)break;else g=g+(f[ya>>2]<<2)|0}}else{C=l+(e<<1)|0;Sg(a,C,g,R,E);F=g+(f[ya>>2]<<2)|0;C=C+(f[qa>>2]<<1)|0;Sg(a,C,F,R,E);F=F+(f[ya>>2]<<2)|0;C=C+(f[qa>>2]<<1)|0;Sg(a,C,F,R,E);Sg(a,C+(f[qa>>2]<<1)|0,F+(f[ya>>2]<<2)|0,R,E)}while(0);g=f[ya>>2]|0}while(p>>>0>>0);l=g;e=f[za>>2]|0}i=i+(l<<2<<2)|0;k=k+(f[qa>>2]<<2<<1)|0;m=m+4|0;if(m>>>0>=(e&-4)>>>0){q=k;p=i;break}}}else{q=g;p=i;m=0;g=f[ya>>2]|0}if(!g)break;else o=0;do{if(m>>>0>>0){i=q+(o<<1)|0;k=p+(o<<2)|0;l=m;while(1){i=i+(f[qa>>2]<<1)|0;Sg(a,i,k,R,E);g=f[ya>>2]|0;l=l+1|0;e=f[za>>2]|0;if(l>>>0>=e>>>0)break;else k=k+(g<<2)|0}}o=o+1|0}while(o>>>0>>0)}else{e=f[za>>2]|0;if(!e)break;z=D+92|0;A=D+100|0;B=D+96|0;C=0-E|0;i=0;g=f[ya>>2]|0;do if(!g){i=i+4|0;g=0}else{u=i|3;v=i|1;w=v+1|0;x=v+3|0;y=i+4|0;t=0;while(1){do if(u>>>0>>0){e=f[pa>>2]|0;g=f[qa>>2]|0;k=t+1|0;s=e+((X(g,v)|0)+k<<1)|0;if(d[s>>1]&20735){e=0;s=0;F=152;break}s=e+((X(g,w)|0)+k<<1)|0;if(d[s>>1]&20735){e=0;s=0;F=152;break}s=e+((X(g,u)|0)+k<<1)|0;if(d[s>>1]&20735){e=0;s=0;F=152;break}s=e+((X(g,x)|0)+k<<1)|0;if(d[s>>1]&20665){e=0;s=0;F=152;break}f[A>>2]=z;if(!(nh(D)|0))break;f[A>>2]=B;e=(nh(D)|0)<<1;e=e|(nh(D)|0);s=1;F=152}else{e=0;s=0;F=152}while(0);f:do if((F|0)==152){F=0;l=e+i|0;if(l>>>0>>0)k=l;else break;do{e=f[za>>2]|0;if(k>>>0>=e>>>0)break f;m=f[pa>>2]|0;Ca=k;k=k+1|0;o=(X(f[qa>>2]|0,k)|0)+t|0;p=m+(o+1<<1)|0;q=(f[xa>>2]|0)+((X(f[ya>>2]|0,Ca)|0)+t<<2)|0;r=f[a>>2]|0;g=d[p>>1]|0;g=(Ca|0)==(u|0)|(Ca|0)==(e+-1|0)?g&-1095:g;do if(!(s&(Ca|0)==(l|0))){if(g&20480|0)break;e=r+100|0;f[e>>2]=r+24+(h[20356+(g&255|Q)>>0]<<2);if(nh(r)|0)F=158}else{e=r+100|0;F=158}while(0);if((F|0)==158){F=0;Ca=g>>>4&255;f[e>>2]=r+24+(h[21380+Ca>>0]<<2);r=nh(r)|0;r=r^h[21636+Ca>>0];f[q>>2]=r|0?C:E;Ca=f[qa>>2]|0;q=p+(0-Ca<<1)|0;Ca=p+(Ca<<1)|0;g=q+-2|0;d[g>>1]=d[g>>1]|2;d[q>>1]=d[q>>1]|d[3160+(r<<1)>>1];q=q+2|0;d[q>>1]=d[q>>1]|4;q=m+(o<<1)|0;d[q>>1]=d[q>>1]|d[3160+(r+2<<1)>>1];d[p>>1]=d[p>>1]|4096;q=p+2|0;d[q>>1]=d[q>>1]|d[3160+(r+4<<1)>>1];q=Ca+-2|0;d[q>>1]=d[q>>1]|1;d[Ca>>1]=d[Ca>>1]|d[3160+(r+6<<1)>>1];Ca=Ca+2|0;d[Ca>>1]=d[Ca>>1]|8}d[p>>1]=d[p>>1]&-16385}while(k>>>0>>0)}while(0);t=t+1|0;g=f[ya>>2]|0;e=f[za>>2]|0;if(t>>>0>=g>>>0){i=y;break}}}while(i>>>0>>0)}while(0);if(L){F=187;break c}f[D+100>>2]=D+96;nh(D)|0;nh(D)|0;nh(D)|0;nh(D)|0;F=187;break}default:F=187}while(0);do if((F|0)==187){F=0;if(I)break;hh(T);ih(T,18,0,46);ih(T,17,0,3);ih(T,0,0,4)}while(0);b=b+1|0;Ca=(b|0)==3;c=c+(Ca<<31>>31)|0;b=Ca?0:b;G=G+1|0;if(!((c|0)>0?G>>>0<(f[H>>2]|0)>>>0:0))break b}}}while(0);K=K+1|0}while(K>>>0<(f[W>>2]|0)>>>0)}c=(f[U>>2]|0)-(f[ea>>2]|0)|0;b=(f[Y>>2]|0)-(f[fa>>2]|0)|0;e=f[da>>2]|0;if(e&1){Ca=f[sa>>2]|0;c=(f[Ca+(ka*136|0)+8>>2]|0)+c-(f[Ca+(ka*136|0)>>2]|0)|0}if(e&2){Ca=f[sa>>2]|0;b=(f[Ca+(ka*136|0)+12>>2]|0)+b-(f[Ca+(ka*136|0)+4>>2]|0)|0}o=f[xa>>2]|0;p=f[ya>>2]|0;q=f[za>>2]|0;e=f[ta>>2]|0;if(e|0?(wa=1<>2]|0;m=(l|0)>-1?l:0-l|0;if((m|0)>=(wa|0)){Ca=m>>f[ta>>2];f[k>>2]=(l|0)<0?0-Ca|0:Ca}g=g+1|0}while((g|0)!=(p|0));e=e+1|0}while((e|0)!=(q|0))}k=(f[oa>>2]|0)+((X(b,Aa)|0)+c<<2)|0;c=(q|0)==0|(p|0)==0;if((f[ra>>2]|0)==1){if(!c){c=0;do{e=X(c,p)|0;g=X(c,Aa)|0;b=0;do{f[k+(b+g<<2)>>2]=(f[o+(b+e<<2)>>2]|0)/2|0;b=b+1|0}while((b|0)!=(p|0));c=c+1|0}while((c|0)!=(q|0))}}else if(!c){b=o;g=0;while(1){c=k;e=b;i=0;while(1){n[c>>2]=+n[ga>>2]*+(f[e>>2]|0);i=i+1|0;if((i|0)==(p|0))break;else{c=c+4|0;e=e+4|0}}g=g+1|0;if((g|0)==(q|0))break;else{k=k+(Aa<<2)|0;b=b+(p<<2)|0}}}Z=Z+1|0}while(Z>>>0<(X(f[aa>>2]|0,f[$>>2]|0)|0)>>>0);e=f[ja>>2]|0;c=f[ia>>2]|0}ba=ba+1|0}while(ba>>>0<(X(e,c)|0)>>>0);b=f[ma>>2]|0}ha=ha+1|0}while(ha>>>0>>0);c=f[Ba>>2]|0}na=na+1|0;if(na>>>0>=c>>>0){c=1;F=219;break}}if((F|0)==219)return c|0;return 0}function Rg(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,g=0,h=0,i=0;h=X(c,b)|0;if(!(f[a+40>>2]|0)){e=a+24|0;d=a+8|0;do if(h>>>0>(f[e>>2]|0)>>>0){Kc(f[d>>2]|0);g=Jc(h<<2)|0;f[d>>2]=g;if(!g){c=0;return c|0}else{f[e>>2]=h;e=g;d=g;break}}else{d=f[d>>2]|0;e=d}while(0);if(e|0)ij(d|0,0,h<<2|0)|0}g=b+2|0;f[a+32>>2]=g;g=X(c+2|0,g)|0;h=a+28|0;i=a+12|0;d=f[i>>2]|0;do if(g>>>0>(f[h>>2]|0)>>>0){Kc(d);e=g<<1;d=Jc(e)|0;f[i>>2]=d;if(!d){c=0;return c|0}else{f[h>>2]=g;break}}else e=g<<1;while(0);ij(d|0,0,e|0)|0;f[a+16>>2]=b;f[a+20>>2]=c;c=1;return c|0}function Sg(a,b,c,e,g){a=a|0;b=b|0;c=c|0;e=e|0;g=g|0;var i=0,j=0,k=0;j=f[a>>2]|0;k=d[b>>1]|0;if(k&20480|0){k=d[b>>1]|0;k=k&-16385;d[b>>1]=k;return}i=j+100|0;f[i>>2]=j+24+(h[20356+(k&255|e<<8)>>0]<<2);if(!(nh(j)|0)){k=d[b>>1]|0;k=k&-16385;d[b>>1]=k;return}k=k>>>4&255;f[i>>2]=j+24+(h[21380+k>>0]<<2);j=nh(j)|0;j=j^h[21636+k>>0];f[c>>2]=j|0?0-g|0:g;k=f[a+32>>2]|0;g=b+(0-k<<1)|0;k=b+(k<<1)|0;e=g+-2|0;d[e>>1]=d[e>>1]|2;d[g>>1]=d[g>>1]|d[3160+(j<<1)>>1];g=g+2|0;d[g>>1]=d[g>>1]|4;g=b+-2|0;d[g>>1]=d[g>>1]|d[3160+(j+2<<1)>>1];d[b>>1]=d[b>>1]|4096;g=b+2|0;d[g>>1]=d[g>>1]|d[3160+(j+4<<1)>>1];g=k+-2|0;d[g>>1]=d[g>>1]|1;d[k>>1]=d[k>>1]|d[3160+(j+6<<1)>>1];k=k+2|0;d[k>>1]=d[k>>1]|8;k=d[b>>1]|0;k=k&-16385;d[b>>1]=k;return}function Tg(a,c,e,g,i){a=a|0;c=c|0;e=e|0;g=g|0;i=i|0;var j=0,k=0,l=0,m=0,o=0,q=0.0,r=0.0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0.0,U=0,V=0,W=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0.0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0,ta=0,ua=0,va=0,wa=0,xa=0,ya=0,za=0,Aa=0,Ba=0,Ca=0,Da=0,Ea=0,Fa=0,Ga=0,Ha=0,Ia=0,Ja=0,Ka=0,La=0,Ma=0,Na=0,Oa=0,Pa=0,Qa=0,Ra=0,Sa=0,Ta=0,Ua=0,Va=0,Wa=0,Xa=0,Ya=0,Za=0,_a=0,$a=0;Za=c+32|0;p[Za>>3]=0.0;_a=c+16|0;j=f[_a>>2]|0;if(!j){_a=1;return _a|0}Ya=c+20|0;Qa=e+5584|0;Ra=a+16|0;Sa=a+20|0;Ta=a+8|0;Ua=a+36|0;Va=(g|0)!=0;Wa=a+12|0;Xa=a+32|0;Pa=0;c=j;a:while(1){e=f[Ya>>2]|0;j=f[Qa>>2]|0;Na=(f[e+(Pa*52|0)+8>>2]|0)-(f[e+(Pa*52|0)>>2]|0)|0;Oa=e+(Pa*52|0)+16|0;k=f[Oa>>2]|0;if(k){Ma=e+(Pa*52|0)+24|0;Ka=e+(Pa*52|0)+32|0;La=j+(Pa*1080|0)+20|0;Ha=j+(Pa*1080|0)+16|0;Ja=Va&Pa>>>0>>0;Ia=g+(Pa<<3)|0;Ga=0;c=k;do{Da=f[Ma>>2]|0;Ea=Da+(Ga*136|0)+24|0;e=f[Ea>>2]|0;if(e){za=Da+(Ga*136|0)+16|0;Aa=Da+(Ga*136|0)+20|0;Ba=~Ga;Ca=Ga+-1|0;ya=0;j=f[Aa>>2]|0;c=f[za>>2]|0;do{xa=Da+(Ga*136|0)+28+(ya*36|0)+32|0;if(X(j,c)|0){ra=67108864/(~~+J(+(+n[xa>>2]*8192.0))|0)|0;sa=Da+(Ga*136|0)+28+(ya*36|0)+20|0;ta=Da+(Ga*136|0)+28+(ya*36|0)|0;ua=Da+(Ga*136|0)+28+(ya*36|0)+4|0;va=Da+(Ga*136|0)+28+(ya*36|0)+16|0;wa=((ra|0)<0)<<31>>31;qa=0;do{e=f[sa>>2]|0;oa=e+(qa*40|0)+16|0;pa=e+(qa*40|0)+20|0;if(X(f[pa>>2]|0,f[oa>>2]|0)|0){na=e+(qa*40|0)+24|0;ma=0;do{la=f[na>>2]|0;k=f[la+(ma*52|0)+12>>2]|0;c=k-(f[ta>>2]|0)|0;l=f[la+(ma*52|0)+16>>2]|0;e=l-(f[ua>>2]|0)|0;j=f[va>>2]|0;if(j&1){ka=f[Ma>>2]|0;c=(f[ka+(Ca*136|0)+8>>2]|0)+c-(f[ka+(Ca*136|0)>>2]|0)|0}if(j&2){ka=f[Ma>>2]|0;e=(f[ka+(Ca*136|0)+12>>2]|0)+e-(f[ka+(Ca*136|0)+4>>2]|0)|0}if(!(Rg(a,(f[la+(ma*52|0)+20>>2]|0)-k|0,(f[la+(ma*52|0)+24>>2]|0)-l|0)|0)){c=0;Fa=163;break a}l=f[Ra>>2]|0;m=f[Sa>>2]|0;s=(f[Ka>>2]|0)+((X(e,Na)|0)+c<<2)|0;f[Ta>>2]=s;f[Ua>>2]=Na;c=f[La>>2]|0;e=(m|0)!=0;do if((c|0)==1)if(e){if(!l){Fa=27;break}else{c=0;e=0}while(1){j=0;k=c;while(1){Fa=s+(k<<2)|0;f[Fa>>2]=f[Fa>>2]<<6;j=j+1|0;if((j|0)==(l|0))break;else k=k+1|0}e=e+1|0;if((e|0)==(m|0)){Fa=27;break}else c=Na+c|0}}else c=1;else if(e){if(!l){Fa=27;break}else{c=0;j=0}while(1){e=0;k=j;while(1){Fa=s+(k<<2)|0;ka=f[Fa>>2]|0;ka=Yi(ka|0,((ka|0)<0)<<31>>31|0,ra|0,wa|0)|0;ka=Zi(ka|0,I|0,4096,0)|0;ka=ej(ka|0,I|0,18)|0;f[Fa>>2]=ka;e=e+1|0;if((e|0)==(l|0))break;else k=k+1|0}c=c+1|0;if((c|0)==(m|0)){Fa=27;break}else j=Na+j|0}}while(0);if((Fa|0)==27){Fa=0;c=f[La>>2]|0}ga=f[va>>2]|0;ha=(f[Oa>>2]|0)+Ba|0;ia=+n[xa>>2];ja=f[Ha>>2]|0;ka=f[a>>2]|0;m=f[Ra>>2]|0;do if(!m)e=0;else{o=f[Sa>>2]|0;if(!o){e=0;break}l=f[Ua>>2]|0;k=0;j=0;do{e=0;do{fa=s+((X(e,l)|0)+k<<2)|0;fa=f[fa>>2]|0;fa=(fa|0)>-1?fa:0-fa|0;j=(j|0)>(fa|0)?j:fa;e=e+1|0}while((e|0)!=(o|0));k=k+1|0}while((k|0)!=(m|0));if(!j){e=0;break}if((j|0)>1){e=0;while(1){e=e+1|0;if(j>>>0>3)j=j>>>1;else break}}else e=0;e=e+-5|0}while(0);ea=la+(ma*52|0)+28|0;f[ea>>2]=e;e=e+-1|0;hh(ka);ih(ka,18,0,46);ih(ka,17,0,3);ih(ka,0,0,4);fa=la+(ma*52|0)|0;bh(ka,f[fa>>2]|0);b:do if((e|0)>-1){ca=la+(ma*52|0)+8|0;U=ja&1;da=(U|0)!=0;V=(c|0)==1;W=(ja&4|0)==0;U=(U|0)==0;Y=(ja&2|0)==0;$=ja&8;Z=($|0)!=0;_=ga<<8;$=($|0)==0;aa=(ja&32|0)==0;ba=$^1;c=0;S=2;j=0;T=0.0;while(1){R=f[ca>>2]|0;G=da&(S>>>0<2?(e|0)<((f[ea>>2]|0)+-4|0):0);c:do switch(S|0){case 0:{E=1<>2]|0;if(!k){j=0;break c}F=(e|0)==0?3176:3432;m=f[Ra>>2]|0;D=0;j=0;l=m;do{C=D;D=D+4|0;if(!l)l=0;else{A=(C|0)==-4;B=C|3;z=0;while(1){if(A)l=m;else{y=C;do{k=f[Sa>>2]|0;if(y>>>0>=k>>>0)break;u=f[Wa>>2]|0;Q=y;y=y+1|0;v=(X(f[Xa>>2]|0,y)|0)+z|0;x=u+(v+1<<1)|0;o=(f[Ta>>2]|0)+((X(f[Ua>>2]|0,Q)|0)+z<<2)|0;w=f[a>>2]|0;s=d[x>>1]|0;s=Z&((Q|0)==(B|0)|(Q|0)==(k+-1|0))?s&-1095:s;k=s&255;if((k|0)!=0&(s&20480|0)==0){l=f[o>>2]|0;l=(((l|0)<0?0-l|0:l)&E|0)!=0;m=l&1;t=w+100|0;f[t>>2]=w+24+(h[20356+(k|_)>>0]<<2);if(G)fh(w,m);else ch(w,m);if(l){k=f[o>>2]|0;l=k>>>31;j=j+(d[F+((((k|0)<0?0-k|0:k)>>>e&127)<<1)>>1]|0)|0;k=s>>>4&255;f[t>>2]=w+24+(h[21380+k>>0]<<2);if(G)fh(w,l);else ch(w,l^h[21636+k>>0]);Q=f[Xa>>2]|0;P=x+(0-Q<<1)|0;Q=x+(Q<<1)|0;O=P+-2|0;d[O>>1]=d[O>>1]|2;d[P>>1]=d[P>>1]|d[3160+(l<<1)>>1];P=P+2|0;d[P>>1]=d[P>>1]|4;P=u+(v<<1)|0;d[P>>1]=d[P>>1]|d[3160+((l|2)<<1)>>1];d[x>>1]=d[x>>1]|4096;P=x+2|0;d[P>>1]=d[P>>1]|d[3160+((l|4)<<1)>>1];P=Q+-2|0;d[P>>1]=d[P>>1]|1;d[Q>>1]=d[Q>>1]|d[3160+((l|6)<<1)>>1];Q=Q+2|0;d[Q>>1]=d[Q>>1]|8}d[x>>1]=d[x>>1]|16384}}while(y>>>0>>0);l=f[Ra>>2]|0}z=z+1|0;if(z>>>0>=l>>>0)break;else m=l}k=f[Sa>>2]|0;m=l}}while(D>>>0>>0);break}case 1:{z=1<>2]|0;if(!k){j=0;break c}A=(e|0)==0?3688:3944;y=0;j=0;l=f[Ra>>2]|0;do{x=y;y=y+4|0;if(!l)l=0;else{v=(x|0)==-4;w=x|3;u=0;do{t=u;u=u+1|0;d:do if(!v)if($)if(G){s=x;do{if(s>>>0>=(f[Sa>>2]|0)>>>0)break d;k=s;s=s+1|0;m=(f[Wa>>2]|0)+((X(f[Xa>>2]|0,s)|0)+u<<1)|0;l=f[a>>2]|0;o=d[m>>1]|0;if((o&20480|0)==4096){Q=(f[Ta>>2]|0)+((X(f[Ua>>2]|0,k)|0)+t<<2)|0;Q=f[Q>>2]|0;Q=(Q|0)<0?0-Q|0:Q;j=j+(d[A+((Q>>>e&127)<<1)>>1]|0)|0;f[l+100>>2]=l+24+((o&8192|0?16:o&255|0?15:14)<<2);fh(l,(Q&z|0)!=0&1);d[m>>1]=d[m>>1]|8192}}while(s>>>0>>0)}else{s=x;do{if(s>>>0>=(f[Sa>>2]|0)>>>0)break d;k=s;s=s+1|0;m=(f[Wa>>2]|0)+((X(f[Xa>>2]|0,s)|0)+u<<1)|0;l=f[a>>2]|0;o=d[m>>1]|0;if((o&20480|0)==4096){Q=(f[Ta>>2]|0)+((X(f[Ua>>2]|0,k)|0)+t<<2)|0;Q=f[Q>>2]|0;Q=(Q|0)<0?0-Q|0:Q;j=j+(d[A+((Q>>>e&127)<<1)>>1]|0)|0;f[l+100>>2]=l+24+((o&8192|0?16:o&255|0?15:14)<<2);ch(l,(Q&z|0)!=0&1);d[m>>1]=d[m>>1]|8192}}while(s>>>0>>0)}else if(G){s=x;do{k=f[Sa>>2]|0;if(s>>>0>=k>>>0)break d;l=s;s=s+1|0;o=(f[Wa>>2]|0)+((X(f[Xa>>2]|0,s)|0)+u<<1)|0;m=f[a>>2]|0;Q=d[o>>1]|0;k=(l|0)==(w|0)|(l|0)==(k+-1|0)?Q&-1095:Q;if((k&20480|0)==4096){Q=(f[Ta>>2]|0)+((X(f[Ua>>2]|0,l)|0)+t<<2)|0;Q=f[Q>>2]|0;Q=(Q|0)<0?0-Q|0:Q;j=j+(d[A+((Q>>>e&127)<<1)>>1]|0)|0;f[m+100>>2]=m+24+((k&8192|0?16:k&255|0?15:14)<<2);fh(m,(Q&z|0)!=0&1);d[o>>1]=d[o>>1]|8192}}while(s>>>0>>0)}else{s=x;do{k=f[Sa>>2]|0;if(s>>>0>=k>>>0)break d;l=s;s=s+1|0;o=(f[Wa>>2]|0)+((X(f[Xa>>2]|0,s)|0)+u<<1)|0;m=f[a>>2]|0;Q=d[o>>1]|0;k=(l|0)==(w|0)|(l|0)==(k+-1|0)?Q&-1095:Q;if((k&20480|0)==4096){Q=(f[Ta>>2]|0)+((X(f[Ua>>2]|0,l)|0)+t<<2)|0;Q=f[Q>>2]|0;Q=(Q|0)<0?0-Q|0:Q;j=j+(d[A+((Q>>>e&127)<<1)>>1]|0)|0;f[m+100>>2]=m+24+((k&8192|0?16:k&255|0?15:14)<<2);ch(m,(Q&z|0)!=0&1);d[o>>1]=d[o>>1]|8192}}while(s>>>0>>0)}while(0);l=f[Ra>>2]|0}while(u>>>0>>0);k=f[Sa>>2]|0}}while(y>>>0>>0);break}case 2:{L=f[a>>2]|0;M=1<>2]|0;if(!k)j=0;else{N=L+92|0;O=L+100|0;P=L+96|0;Q=(e|0)==0?3176:3432;m=0;j=0;l=f[Ra>>2]|0;do if(!l){m=m+4|0;l=0}else{B=m|3;C=m|1;D=C+1|0;E=C+3|0;K=m+4|0;F=m+1|0;G=m+2|0;H=m+3|0;A=0;while(1){do if(B>>>0>>0){k=f[Wa>>2]|0;l=f[Xa>>2]|0;o=A+1|0;s=k+((X(l,C)|0)+o<<1)|0;s=d[s>>1]|0;if($){x=k+((X(l,D)|0)+o<<1)|0;y=k+((X(l,B)|0)+o<<1)|0;z=k+((X(l,E)|0)+o<<1)|0;if((d[x>>1]|s|d[y>>1]|d[z>>1])&20735){z=0;k=0;Fa=105;break}}else{if(s&20735){z=0;k=0;Fa=105;break}z=k+((X(l,D)|0)+o<<1)|0;if(d[z>>1]&20735){z=0;k=0;Fa=105;break}z=k+((X(l,B)|0)+o<<1)|0;if(d[z>>1]&20735){z=0;k=0;Fa=105;break}z=k+((X(l,E)|0)+o<<1)|0;if(d[z>>1]&20665){z=0;k=0;Fa=105;break}}k=f[Ta>>2]|0;l=f[Ua>>2]|0;z=k+((X(l,m)|0)+A<<2)|0;z=f[z>>2]|0;do if(!(((z|0)<0?0-z|0:z)&M)){z=k+((X(l,F)|0)+A<<2)|0;z=f[z>>2]|0;if(((z|0)<0?0-z|0:z)&M|0){k=1;break}z=k+((X(l,G)|0)+A<<2)|0;z=f[z>>2]|0;if(((z|0)<0?0-z|0:z)&M|0){k=2;break}k=k+((X(l,H)|0)+A<<2)|0;k=f[k>>2]|0;k=(((k|0)<0?0-k|0:k)&M|0)==0?4:3}else k=0;while(0);f[O>>2]=N;ch(L,(k|0)!=4&1);if((k|0)==4)break;f[O>>2]=P;ch(L,k>>>1);ch(L,k&1);z=1;Fa=105}else{z=0;k=0;Fa=105}while(0);e:do if((Fa|0)==105){Fa=0;y=k+m|0;if(y>>>0>>0)x=y;else break;do{k=f[Sa>>2]|0;if(x>>>0>=k>>>0)break e;s=f[Wa>>2]|0;$a=x;x=x+1|0;t=(X(f[Xa>>2]|0,x)|0)+A|0;w=s+(t+1<<1)|0;u=(f[Ta>>2]|0)+((X(f[Ua>>2]|0,$a)|0)+A<<2)|0;v=f[a>>2]|0;l=d[w>>1]|0;o=(($a|0)==(B|0)|($a|0)==(k+-1|0))&ba?l&-1095:l;do if(!(z&($a|0)==(y|0))){if(l&20480|0)break;k=v+100|0;f[k>>2]=v+24+(h[20356+(o&255|_)>>0]<<2);$a=f[u>>2]|0;$a=((($a|0)<0?0-$a|0:$a)&M|0)!=0;ch(v,$a&1);if($a)Fa=111}else{k=v+100|0;Fa=111}while(0);if((Fa|0)==111){Fa=0;u=f[u>>2]|0;j=j+(d[Q+((((u|0)<0?0-u|0:u)>>>e&127)<<1)>>1]|0)|0;$a=o>>>4&255;f[k>>2]=v+24+(h[21380+$a>>0]<<2);u=u>>>31;ch(v,u^h[21636+$a>>0]);$a=f[Xa>>2]|0;v=w+(0-$a<<1)|0;$a=w+($a<<1)|0;o=v+-2|0;d[o>>1]=d[o>>1]|2;d[v>>1]=d[v>>1]|d[3160+(u<<1)>>1];v=v+2|0;d[v>>1]=d[v>>1]|4;v=s+(t<<1)|0;d[v>>1]=d[v>>1]|d[3160+((u|2)<<1)>>1];d[w>>1]=d[w>>1]|4096;v=w+2|0;d[v>>1]=d[v>>1]|d[3160+((u|4)<<1)>>1];v=$a+-2|0;d[v>>1]=d[v>>1]|1;d[$a>>1]=d[$a>>1]|d[3160+((u|6)<<1)>>1];$a=$a+2|0;d[$a>>1]=d[$a>>1]|8}d[w>>1]=d[w>>1]&-16385}while(x>>>0>>0)}while(0);A=A+1|0;l=f[Ra>>2]|0;k=f[Sa>>2]|0;if(A>>>0>=l>>>0){m=K;break}}}while(m>>>0>>0)}if(aa)break c;lh(ka);break}default:{}}while(0);if(Ja)q=+p[Ia>>3];else q=1.0;if(V)r=+Dg(ha,ga);else r=+Hg(ha,ga);r=q*r*ia*+(1<>3]=+p[Za>>3]+r;do if(W)Fa=127;else{if((e|0)<1&(S|0)==2){Fa=127;break}dh(ka);k=R+(c*24|0)+20|0;l=b[k>>0]|1;b[k>>0]=l;k=1}while(0);do if((Fa|0)==127){k=(f[ea>>2]|0)+-4|0;if((S|0)!=0&(e|0)<(k|0))if(U)Fa=131;else Fa=130;else if(U|((S|0)!=2|(e|0)!=(k|0)))Fa=131;else Fa=130;if((Fa|0)==130){Fa=0;dh(ka);k=R+(c*24|0)+20|0;l=b[k>>0]|1;b[k>>0]=l;k=1;break}else if((Fa|0)==131){Fa=0;k=R+(c*24|0)+20|0;l=b[k>>0]&-2;b[k>>0]=l;k=3;break}}while(0);Q=S+1|0;$a=(Q|0)==3;S=$a?0:Q;e=e+($a<<31>>31)|0;do if((e|0)>0&(l&1)!=0)if(da&(S>>>0<2?(e|0)<((f[ea>>2]|0)+-4|0):0)){eh(ka);break}else{jh(ka);break}while(0);p[R+(c*24|0)+8>>3]=T;$a=(ah(ka)|0)+k|0;f[R+(c*24|0)>>2]=$a;if(!Y)gh(ka);c=c+1|0;if((e|0)<=-1)break b}}else c=0;while(0);do if(!(ja&16)){if(ja&1|0)break;dh(ka)}else kh(ka);while(0);o=la+(ma*52|0)+48|0;f[o>>2]=c;if(c|0){l=la+(ma*52|0)+8|0;k=0;do{m=f[l>>2]|0;e=m+(k*24|0)|0;$a=f[e>>2]|0;if($a>>>0>(ah(ka)|0)>>>0){c=ah(ka)|0;f[e>>2]=c}else c=f[e>>2]|0;do if(c>>>0>1){j=c+-1|0;if((b[(f[fa>>2]|0)+j>>0]|0)!=-1)break;f[e>>2]=j;c=j}while(0);if(!k)e=0;else e=f[(f[l>>2]|0)+((k+-1|0)*24|0)>>2]|0;f[m+(k*24|0)+16>>2]=c-e;k=k+1|0}while(k>>>0<(f[o>>2]|0)>>>0)}ma=ma+1|0}while(ma>>>0<(X(f[pa>>2]|0,f[oa>>2]|0)|0)>>>0);j=f[Aa>>2]|0;c=f[za>>2]|0}qa=qa+1|0}while(qa>>>0<(X(j,c)|0)>>>0);e=f[Ea>>2]|0}ya=ya+1|0}while(ya>>>0>>0);c=f[Oa>>2]|0}Ga=Ga+1|0}while(Ga>>>0>>0);c=f[_a>>2]|0}Pa=Pa+1|0;if(Pa>>>0>=c>>>0){c=1;Fa=163;break}}if((Fa|0)==163)return c|0;return 0}function Ug(a,b,c,e,g,i,j,k,l,m,n,o){a=a|0;b=b|0;c=c|0;e=e|0;g=g|0;i=i|0;j=j|0;k=k|0;l=l|0;m=m|0;n=n|0;o=o|0;var p=0,q=0,r=0,s=0,t=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0;G=u;u=u+16|0;E=G;f[E>>2]=0;p=f[a>>2]|0;z=f[a+4>>2]|0;a=f[z+76>>2]|0;C=a+(b*5640|0)|0;q=(d[z>>1]|0)==4?2:1;r=z+80|0;if(!(f[r>>2]|0))s=1;else s=f[p+16>>2]|0;F=(f[a+(b*5640|0)+420>>2]|0)+1|0;D=Ff(p,z,b,o)|0;if(!D){i=0;u=G;return i|0}f[i>>2]=0;a:do if(!o){if(s|0){o=0;b:while(1){a=0;l=0;n=D;while(1){Hf(D,z,b,l,o,m,0);if((f[n+80>>2]|0)==-1){g=9;break b}p=n+36|0;c:while(1){do if(!(Kf(n)|0))break c;while((f[p>>2]|0)>>>0>=e>>>0);f[E>>2]=0;if(!(Vg(b,c,C,n,g,E,j,k)|0)){g=13;break b}B=f[E>>2]|0;f[i>>2]=(f[i>>2]|0)+B;a=B+a|0;j=j-B|0;g=g+B|0}B=f[r>>2]|0;if((B|0)!=0&a>>>0>B>>>0){g=17;break b}l=l+1|0;if(l>>>0>=q>>>0)break;else n=n+232|0}o=o+1|0;if(o>>>0>=s>>>0)break a}if((g|0)==9){Ef(D,F);i=0;u=G;return i|0}else if((g|0)==13){Ef(D,F);i=0;u=G;return i|0}else if((g|0)==17){Ef(D,F);i=0;u=G;return i|0}}}else{Hf(D,z,b,n,l,m,o);y=D+(n*232|0)|0;if((f[D+(n*232|0)+80>>2]|0)==-1){Ef(D,F);i=0;u=G;return i|0}w=D+(n*232|0)+36|0;x=c+840|0;m=k+12|0;t=k+8|0;v=k+88|0;s=z+93|0;r=a+(b*5640|0)+5636|0;d:do if(!k)while(1){do if(!(Kf(y)|0))break a;while((f[w>>2]|0)>>>0>=e>>>0);f[E>>2]=0;if(!(Vg(b,c,C,y,g,E,j,0)|0))break d;k=f[E>>2]|0;f[i>>2]=(f[i>>2]|0)+k;f[x>>2]=(f[x>>2]|0)+1;j=j-k|0;g=g+k|0}else while(1){do if(!(Kf(y)|0))break a;while((f[w>>2]|0)>>>0>=e>>>0);f[E>>2]=0;if(!(Vg(b,c,C,y,g,E,j,k)|0))break d;q=f[E>>2]|0;g=g+q|0;j=j-q|0;f[i>>2]=(f[i>>2]|0)+q;if(!(f[m>>2]|0))a=f[t>>2]|0;else{p=f[v>>2]|0;n=f[p+(b*592|0)+548>>2]|0;a=f[t>>2]|0;l=n+(a<<5)|0;do if(!a){o=(f[p+(b*592|0)+12>>2]|0)+1|0;p=o;o=((o|0)<0)<<31>>31}else{if(((h[r>>0]|0)>>>2|(h[s>>0]|0)>>>3)&1?(B=l,A=f[B>>2]|0,B=f[B+4>>2]|0,!((A|0)==0&(B|0)==0)):0){p=A;o=B;break}p=n+(a+-1<<5)+16|0;p=Zi(f[p>>2]|0,f[p+4>>2]|0,1,0)|0;o=I}while(0);f[l>>2]=p;f[l+4>>2]=o;o=Zi(p|0,o|0,-1,-1)|0;l=I;q=Zi(o|0,l|0,q|0,0)|0;z=n+(a<<5)+16|0;f[z>>2]=q;f[z+4>>2]=I;z=n+(a<<5)+8|0;q=z;q=Zi(o|0,l|0,f[q>>2]|0,f[q+4>>2]|0)|0;f[z>>2]=q;f[z+4>>2]=I}f[t>>2]=a+1;f[x>>2]=(f[x>>2]|0)+1}while(0);Ef(D,F);i=0;u=G;return i|0}while(0);Ef(D,F);i=1;u=G;return i|0}function Vg(a,c,d,e,g,h,i,j){a=a|0;c=c|0;d=d|0;e=e|0;g=g|0;h=h|0;i=i|0;j=j|0;var k=0.0,l=0,m=0,n=0,o=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0;t=f[e+28>>2]|0;J=f[e+32>>2]|0;K=f[e+36>>2]|0;s=f[(f[c+20>>2]|0)+((f[e+24>>2]|0)*52|0)+24>>2]|0;if(!(f[d>>2]&2))G=g;else{b[g>>0]=-1;b[g+1>>0]=-111;b[g+2>>0]=0;b[g+3>>0]=4;G=c+840|0;b[g+4>>0]=(f[G>>2]|0)>>>8;b[g+5>>0]=f[G>>2];i=i+-6|0;G=g+6|0}if((K|0)==0?(r=s+(t*136|0)+24|0,f[r>>2]|0):0){m=0;n=s+(t*136|0)+28|0;while(1){e=f[n+20>>2]|0;cg(f[e+(J*40|0)+32>>2]|0);o=e+(J*40|0)+36|0;cg(f[o>>2]|0);q=X(f[e+(J*40|0)+20>>2]|0,f[e+(J*40|0)+16>>2]|0)|0;if(q|0){c=e+(J*40|0)+24|0;l=n+28|0;e=0;do{I=f[c>>2]|0;f[I+(e*52|0)+40>>2]=0;fg(f[o>>2]|0,e,(f[l>>2]|0)-(f[I+(e*52|0)+28>>2]|0)|0);e=e+1|0}while((e|0)!=(q|0))}m=m+1|0;if(m>>>0>=(f[r>>2]|0)>>>0)break;else n=n+36|0}}F=og()|0;if(!F){h=0;return h|0}rg(F,G,i);tg(F,1,1);H=s+(t*136|0)+28|0;I=s+(t*136|0)+24|0;if(f[I>>2]|0){D=K+1|0;B=0;C=H;while(1){n=f[C+20>>2]|0;E=X(f[n+(J*40|0)+20>>2]|0,f[n+(J*40|0)+16>>2]|0)|0;o=n+(J*40|0)+24|0;l=(E|0)==0;if(!l){m=n+(J*40|0)+32|0;e=f[o>>2]|0;c=0;while(1){if((f[e+40>>2]|0)==0?f[(f[e+4>>2]|0)+(K*24|0)>>2]|0:0)fg(f[m>>2]|0,c,K);c=c+1|0;if((c|0)==(E|0))break;else e=e+52|0}if(!l){A=n+(J*40|0)+32|0;z=n+(J*40|0)+36|0;w=f[o>>2]|0;x=0;while(1){e=(f[w+4>>2]|0)+(K*24|0)|0;y=w+40|0;if(!(f[y>>2]|0))gg(F,f[A>>2]|0,x,D);else tg(F,(f[e>>2]|0)!=0&1,1);c=f[e>>2]|0;if(c|0){if(!(f[y>>2]|0)){f[w+32>>2]=3;gg(F,f[z>>2]|0,x,999);c=f[e>>2]|0}a:do switch(c|0){case 1:{tg(F,0,1);break}case 2:{tg(F,2,2);break}default:{if(c>>>0<6){tg(F,c+-3|12,4);break a}if(c>>>0<37){tg(F,c+-6|480,9);break a}if(c>>>0<165)tg(F,c+-37|65408,16)}}while(0);m=f[y>>2]|0;c=f[e>>2]|0;v=c+m|0;u=w+8|0;if(m>>>0>>0){t=w+32|0;s=m+-1+c|0;r=m;l=0;c=0;n=0;q=(f[u>>2]|0)+(m*24|0)|0;while(1){m=c+1|0;l=(f[q+16>>2]|0)+l|0;if((b[q+20>>0]&1)!=0|(r|0)==(s|0)){if((l|0)>1){c=0;while(1){c=c+1|0;if(l>>>0>3)l=l>>>1;else{l=c;break}}}else l=0;o=f[t>>2]|0;if((m|0)>1){c=0;while(1){c=c+1|0;if(m>>>0>3)m=m>>>1;else break}}else c=0;o=l+1-o-c|0;l=0;m=0;n=(n|0)>(o|0)?n:o}r=r+1|0;if((r|0)==(v|0))break;else{c=m;q=q+24|0}}if((n|0)>0){c=n;while(1){tg(F,1,1);if((c|0)>1)c=c+-1|0;else{c=n;break}}}else c=n}else{l=0;m=0;c=0}tg(F,0,1);r=w+32|0;f[r>>2]=(f[r>>2]|0)+c;c=f[y>>2]|0;if(c>>>0>>0){q=c;o=(f[u>>2]|0)+(c*24|0)|0;c=m;while(1){c=c+1|0;l=(f[o+16>>2]|0)+l|0;if(!((b[o+20>>0]&1)==0?(q|0)!=((f[y>>2]|0)+-1+(f[e>>2]|0)|0):0)){n=f[r>>2]|0;if((c|0)>1){m=0;while(1){m=m+1|0;if(c>>>0>3)c=c>>>1;else{c=m;break}}}else c=0;tg(F,l,c+n|0);l=0;c=0}q=q+1|0;if((q|0)==(v|0))break;else o=o+24|0}}}x=x+1|0;if((x|0)==(E|0))break;else w=w+52|0}}}B=B+1|0;if(B>>>0>=(f[I>>2]|0)>>>0)break;else C=C+36|0}}if(!(vg(F)|0)){pg(F);h=0;return h|0}c=qg(F)|0;e=G+c|0;c=i-c|0;pg(F);if(f[d>>2]&4){b[e>>0]=-1;b[e+1>>0]=-110;c=c+-2|0;e=e+2|0}u=(j|0)!=0;if(u?f[j+12>>2]|0:0){G=e-g|0;d=(f[(f[j+88>>2]|0)+(a*592|0)+548>>2]|0)+(f[j+8>>2]<<5)+8|0;f[d>>2]=G;f[d+4>>2]=((G|0)<0)<<31>>31}b:do if(f[I>>2]|0){v=j+12|0;w=j+88|0;x=j+8|0;t=0;s=H;c:while(1){l=f[s+20>>2]|0;r=X(f[l+(J*40|0)+20>>2]|0,f[l+(J*40|0)+16>>2]|0)|0;l=f[l+(J*40|0)+24>>2]|0;d:do if(r){e:do if(u){q=0;while(1){o=f[l+4>>2]|0;i=o+(K*24|0)|0;if(f[i>>2]|0){m=o+(K*24|0)+4|0;n=f[m>>2]|0;if(n>>>0>c>>>0)i=1;else{hj(e|0,f[o+(K*24|0)+16>>2]|0,n|0)|0;d=l+40|0;f[d>>2]=(f[d>>2]|0)+(f[i>>2]|0);d=f[m>>2]|0;e=e+d|0;c=c-d|0;do if(f[v>>2]|0){d=(f[(f[w>>2]|0)+(a*592|0)+548>>2]|0)+(f[x>>2]<<5)+24|0;k=+p[o+(K*24|0)+8>>3]+ +p[d>>3];p[d>>3]=k;if(!(+p[j>>3]>3]=k}while(0);i=0;l=l+52|0}}else{i=28;l=l+52|0}switch(i&31){case 28:case 0:break;default:break e}q=q+1|0;if(q>>>0>=r>>>0){L=83;break d}}}else{q=0;while(1){i=f[l+4>>2]|0;m=i+(K*24|0)|0;if(f[m>>2]|0){n=i+(K*24|0)+4|0;o=f[n>>2]|0;if(o>>>0>c>>>0)i=1;else{hj(e|0,f[i+(K*24|0)+16>>2]|0,o|0)|0;d=l+40|0;f[d>>2]=(f[d>>2]|0)+(f[m>>2]|0);d=f[n>>2]|0;i=0;c=c-d|0;e=e+d|0;l=l+52|0}}else{i=28;l=l+52|0}switch(i&31){case 28:case 0:break;default:break e}q=q+1|0;if(q>>>0>=r>>>0){L=83;break d}}}while(0);if(!i)i=s;else{e=0;break c}}else L=83;while(0);if((L|0)==83){L=0;i=s+36|0}t=t+1|0;if(t>>>0>=(f[I>>2]|0)>>>0)break b;else s=i}return e|0}while(0);f[h>>2]=e-g+(f[h>>2]|0);h=1;return h|0}function Wg(a,b,c,d,e,g,h,i){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;g=g|0;h=h|0;i=i|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,Y=0,Z=0,_=0,$=0,aa=0;_=u;u=u+112|0;Z=_+64|0;U=_+32|0;T=_;R=_+96|0;S=_+92|0;j=f[a>>2]|0;L=a+4|0;Q=f[L>>2]|0;h=f[Q+76>>2]|0;M=h+(b*5640|0)|0;N=h+(b*5640|0)+420|0;P=(f[N>>2]|0)+1|0;Q=Bf(j,Q,b)|0;if(!Q){$=0;u=_;return $|0}O=j+16|0;K=h+(b*5640|0)+12|0;J=c+20|0;H=j+24|0;G=Q;a=g;h=d;F=0;a:while(1){if((f[G+80>>2]|0)==-1){$=4;break}I=Hc(f[O>>2]<<2)|0;if(!I){$=6;break}ij(I|0,1,f[O>>2]<<2|0)|0;if(Kf(G)|0){B=G+24|0;C=G+28|0;D=G+36|0;E=G+32|0;A=h;while(1){if((f[K>>2]|0)>>>0>(f[D>>2]|0)>>>0){h=f[J>>2]|0;b=f[B>>2]|0;if((f[C>>2]|0)>>>0<(f[h+(b*52|0)+20>>2]|0)>>>0){f[I+(b<<2)>>2]=0;z=f[L>>2]|0;f[S>>2]=0;if(!(Xg(z,h,M,G,R,A,S,a,i)|0)){$=45;break a}h=f[S>>2]|0;if(f[R>>2]|0){y=a-h|0;z=A+h|0;f[S>>2]=0;b=f[(f[J>>2]|0)+((f[B>>2]|0)*52|0)+24>>2]|0;c=f[C>>2]|0;w=b+(c*136|0)+24|0;g=f[w>>2]|0;b:do if(!g){b=z;$=43}else{x=A+a|0;j=0;v=b+(c*136|0)+28|0;b=z;c=g;c:while(1){g=f[v+20>>2]|0;k=f[E>>2]|0;if(((f[v+8>>2]|0)!=(f[v>>2]|0)?(f[v+12>>2]|0)!=(f[v+4>>2]|0):0)?(Y=X(f[g+(k*40|0)+20>>2]|0,f[g+(k*40|0)+16>>2]|0)|0,(Y|0)!=0):0){c=0;t=f[g+(k*40|0)+24>>2]|0;while(1){r=t+40|0;if(f[r>>2]|0){s=t+44|0;g=f[s>>2]|0;k=f[t+4>>2]|0;do if(!g){f[s>>2]=1;f[t+36>>2]=0}else{l=g+-1|0;if((f[k+(l<<5)+8>>2]|0)!=(f[k+(l<<5)+20>>2]|0)){k=k+(l<<5)|0;break}f[s>>2]=g+1;k=k+(g<<5)|0}while(0);p=t+36|0;q=t+32|0;o=b;n=k+28|0;g=f[n>>2]|0;if((g+o|0)>>>0>>0|(b+g|0)>>>0>x>>>0){b=g;break c}l=g;m=f[p>>2]|0;o=n;while(1){n=l+m|0;if(n>>>0>>0){$=29;break a}g=f[t>>2]|0;if(n>>>0>(f[q>>2]|0)>>>0){g=Lc(g,n)|0;if(!g){$=33;break a}m=f[p>>2]|0;l=f[o>>2]|0;f[q>>2]=l+m;f[t>>2]=g}hj(g+m|0,b|0,l|0)|0;g=k+8|0;l=f[g>>2]|0;if(!l){f[k>>2]=t;m=f[p>>2]|0;f[k+4>>2]=m}else m=f[p>>2]|0;aa=f[o>>2]|0;b=b+aa|0;o=f[k+24>>2]|0;n=o+l|0;f[g>>2]=n;o=(f[r>>2]|0)-o|0;f[r>>2]=o;f[k+12>>2]=n;m=aa+m|0;f[p>>2]=m;n=k+16|0;f[n>>2]=(f[n>>2]|0)+aa;if(!o)break;f[s>>2]=(f[s>>2]|0)+1;aa=b;o=k+60|0;g=f[o>>2]|0;if((g+aa|0)>>>0>>0|(b+g|0)>>>0>x>>>0){b=g;break c}else{k=k+32|0;l=g}}f[t+48>>2]=f[s>>2]}c=c+1|0;if(c>>>0>>0)t=t+56|0;else break}c=f[w>>2]|0}j=j+1|0;if(j>>>0>>0)v=v+36|0;else{$=43;break b}}x=f[E>>2]|0;z=f[C>>2]|0;aa=f[B>>2]|0;f[T>>2]=b;f[T+4>>2]=y;f[T+8>>2]=c;f[T+12>>2]=x;f[T+16>>2]=j;f[T+20>>2]=z;f[T+24>>2]=aa;Mb(i,2,21892,T)|0;b=0}while(0);if(($|0)==43){$=0;b=b-z|0;f[S>>2]=b}h=b+h|0}aa=f[B>>2]|0;y=f[C>>2]|0;b=(f[H>>2]|0)+(aa*52|0)+36|0;z=f[b>>2]|0;f[b>>2]=y>>>0>z>>>0?y:z;b=h;h=aa}else $=47}else{h=f[J>>2]|0;$=47}if(($|0)==47){$=0;aa=f[L>>2]|0;f[S>>2]=0;if(!(Xg(aa,h,M,G,R,A,S,a,i)|0))break a;b=f[S>>2]|0;if(!(f[R>>2]|0))h=f[B>>2]|0;else{v=a-b|0;x=f[B>>2]|0;h=f[(f[J>>2]|0)+(x*52|0)+24>>2]|0;w=f[C>>2]|0;f[S>>2]=0;s=f[h+(w*136|0)+24>>2]|0;if(!s)h=0;else{t=f[E>>2]|0;j=0;r=h+(w*136|0)+28|0;h=0;while(1){c=f[r+20>>2]|0;if(((f[r+8>>2]|0)!=(f[r>>2]|0)?(f[r+12>>2]|0)!=(f[r+4>>2]|0):0)?(V=X(f[c+(t*40|0)+20>>2]|0,f[c+(t*40|0)+16>>2]|0)|0,(V|0)!=0):0){q=f[c+(t*40|0)+24>>2]|0;c=0;n=h;while(1){o=q+40|0;m=f[o>>2]|0;if(!m)h=n;else{p=q+44|0;k=f[p>>2]|0;h=f[q+4>>2]|0;do if(!k){f[p>>2]=1;f[q+36>>2]=0;g=h;l=1}else{g=k+-1|0;l=k+1|0;if((f[h+(g<<5)+8>>2]|0)!=(f[h+(g<<5)+20>>2]|0)){g=h+(g<<5)|0;l=k;break}f[p>>2]=l;g=h+(k<<5)|0}while(0);h=f[g+28>>2]|0;k=h+n|0;if(k>>>0>>0|k>>>0>v>>>0){$=67;break a}else n=g;while(1){aa=f[n+24>>2]|0;z=n+8|0;f[z>>2]=(f[z>>2]|0)+aa;m=m-aa|0;if(!m)break;l=l+1|0;f[p>>2]=l;h=f[n+60>>2]|0;g=h+k|0;if(g>>>0>>0|g>>>0>v>>>0){$=68;break a}else{n=n+32|0;k=g}}f[o>>2]=0;h=k}c=c+1|0;if(c>>>0>>0){q=q+56|0;n=h}else break}}j=j+1|0;if(j>>>0>>0)r=r+36|0;else break}f[S>>2]=h}b=h+b|0;h=x}}if(f[I+(h<<2)>>2]|0?(W=(f[H>>2]|0)+(h*52|0)+36|0,(f[W>>2]|0)==0):0)f[W>>2]=(f[(f[J>>2]|0)+(h*52|0)+20>>2]|0)+-1;h=A+b|0;a=a-b|0;if(!(Kf(G)|0))break;else A=h}}Mc(I);F=F+1|0;if(F>>>0>(f[N>>2]|0)>>>0){$=79;break}else G=G+232|0}if(($|0)==4){Ef(Q,P);aa=0;u=_;return aa|0}else if(($|0)==6){Ef(Q,P);aa=0;u=_;return aa|0}else if(($|0)==29){Y=f[E>>2]|0;Z=f[C>>2]|0;aa=f[B>>2]|0;f[U>>2]=l;f[U+4>>2]=m;f[U+8>>2]=~l;f[U+12>>2]=c;f[U+16>>2]=Y;f[U+20>>2]=j;f[U+24>>2]=Z;f[U+28>>2]=aa;Mb(i,1,21977,U)|0;$=45}else if(($|0)==33){Mc(f[t>>2]|0);f[t>>2]=0;f[q>>2]=0;$=45}else if(($|0)==67){f[S>>2]=n;$=69}else if(($|0)==68){f[S>>2]=k;f[o>>2]=m;$=69}else if(($|0)==79){Ef(Q,P);f[e>>2]=h-d;aa=1;u=_;return aa|0}if(($|0)==45){Ef(Q,P);Mc(I);aa=0;u=_;return aa|0}else if(($|0)==69){f[Z>>2]=h;f[Z+4>>2]=v;f[Z+8>>2]=c;f[Z+12>>2]=t;f[Z+16>>2]=j;f[Z+20>>2]=w;f[Z+24>>2]=x;Mb(i,1,22076,Z)|0}Ef(Q,P);Mc(I);aa=0;u=_;return aa|0}function Xg(a,c,d,e,g,h,i,j,k){a=a|0;c=c|0;d=d|0;e=e|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;var l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0;O=u;u=u+64|0;K=O+48|0;L=O+40|0;y=O+32|0;x=O+24|0;v=O+16|0;t=O+8|0;s=O;w=O+56|0;M=O+52|0;N=h;f[M>>2]=N;J=e+24|0;z=f[c+((f[J>>2]|0)*52|0)+24>>2]|0;A=f[e+28>>2]|0;I=e+36|0;a:do if((f[I>>2]|0)==0?(r=z+(A*136|0)+24|0,f[r>>2]|0):0){p=e+32|0;m=0;o=z+(A*136|0)+28|0;while(1){if((f[o+8>>2]|0)!=(f[o>>2]|0)?(f[o+12>>2]|0)!=(f[o+4>>2]|0):0){c=f[o+20>>2]|0;l=f[p>>2]|0;if(l>>>0>=(((f[o+24>>2]|0)>>>0)/40|0)>>>0)break;cg(f[c+(l*40|0)+32>>2]|0);cg(f[c+(l*40|0)+36>>2]|0);q=X(f[c+(l*40|0)+20>>2]|0,f[c+(l*40|0)+16>>2]|0)|0;if(q|0){n=0;c=f[c+(l*40|0)+24>>2]|0;while(1){f[c+44>>2]=0;f[c+48>>2]=0;n=n+1|0;if((n|0)==(q|0))break;else c=c+56|0}}}m=m+1|0;if(m>>>0>=(f[r>>2]|0)>>>0)break a;else o=o+36|0}Mb(k,1,22161,s)|0;N=0;u=O;return N|0}while(0);do if(!(f[d>>2]&2))c=N;else{if(j>>>0<6){Mb(k,2,22179,t)|0;c=N;break}if((b[h>>0]|0)==-1?(b[h+1>>0]|0)==-111:0){c=h+6|0;f[M>>2]=c;break}Mb(k,2,22221,v)|0;c=N}while(0);G=og()|0;if(!G){N=0;u=O;return N|0}do if(!(b[a+96>>0]&1))if(!(b[d+5636>>0]&2)){f[w>>2]=h+j-c;H=M;F=c;break}else{F=d+5168|0;H=F;F=f[F>>2]|0;w=d+5180|0;break}else{F=a+40|0;H=F;F=f[F>>2]|0;w=a+44|0}while(0);sg(G,F,f[w>>2]|0);if(!(ug(G,1)|0)){wg(G)|0;c=F+(qg(G)|0)|0;pg(G);do if(!(f[d>>2]&4))l=H;else{if(((f[w>>2]|0)-c+(f[H>>2]|0)|0)>>>0<2){Mb(k,2,22242,x)|0;l=H;break}if((b[c>>0]|0)==-1?(b[c+1>>0]|0)==-110:0){c=c+2|0;l=H;break}Mb(k,2,22284,y)|0;l=H}while(0);d=f[l>>2]|0;k=c-d|0;f[w>>2]=(f[w>>2]|0)-k;f[H>>2]=d+k;f[g>>2]=0;f[i>>2]=(f[M>>2]|0)-N;N=1;u=O;return N|0}E=z+(A*136|0)+24|0;b:do if(f[E>>2]|0){C=e+32|0;D=d+5584|0;y=0;c=z+(A*136|0)+28|0;c:while(1){l=f[c+20>>2]|0;m=f[C>>2]|0;d:do if((f[c+8>>2]|0)!=(f[c>>2]|0)?(f[c+12>>2]|0)!=(f[c+4>>2]|0):0){j=X(f[l+(m*40|0)+20>>2]|0,f[l+(m*40|0)+16>>2]|0)|0;e:do if(j|0){a=l+(m*40|0)+32|0;e=l+(m*40|0)+36|0;x=c+28|0;h=0;l=f[l+(m*40|0)+24>>2]|0;f:while(1){n=l+44|0;if(!(f[n>>2]|0))m=hg(G,f[a>>2]|0,h,(f[I>>2]|0)+1|0)|0;else m=ug(G,1)|0;g:do if(m){if(!(f[n>>2]|0)){m=0;while(1)if(!(hg(G,f[e>>2]|0,h,m)|0))m=m+1|0;else break;f[l+24>>2]=1-m+(f[x>>2]|0);f[l+28>>2]=3}do if(ug(G,1)|0){if(!(ug(G,1)|0)){m=2;break}m=ug(G,2)|0;if((m|0)!=3){m=m+3|0;break}m=ug(G,5)|0;if((m|0)==31){m=(ug(G,7)|0)+37|0;break}else{m=m+6|0;break}}else m=1;while(0);s=l+40|0;f[s>>2]=m;m=0;while(1)if(!(ug(G,1)|0))break;else m=m+1|0;v=l+28|0;f[v>>2]=(f[v>>2]|0)+m;q=f[n>>2]|0;do if(!q){p=f[(f[D>>2]|0)+((f[J>>2]|0)*1080|0)+16>>2]|0;m=l+52|0;do if(!(f[m>>2]|0)){f[m>>2]=10;n=l+4|0;o=Lc(f[n>>2]|0,320)|0;if(!o){Mc(f[n>>2]|0);f[n>>2]=0;f[m>>2]=0;pg(G);m=1;break g}else{f[n>>2]=o;m=o;n=o;break}}else{n=f[l+4>>2]|0;m=n}while(0);f[m>>2]=0;f[m+4>>2]=0;f[m+8>>2]=0;f[m+12>>2]=0;f[m+16>>2]=0;f[m+20>>2]=0;f[m+24>>2]=0;f[m+28>>2]=0;if(!(p&4))m=(p&1|0)==0?109:10;else m=1;o=0;p=l+4|0;n=n+20|0;B=77}else{m=q+-1|0;r=l+4|0;n=f[r>>2]|0;if((f[n+(m<<5)+8>>2]|0)!=(f[n+(m<<5)+20>>2]|0))break;p=f[(f[D>>2]|0)+((f[J>>2]|0)*1080|0)+16>>2]|0;o=l+52|0;m=f[o>>2]|0;do if((q+1|0)>>>0>m>>>0){m=m+10|0;f[o>>2]=m;m=Lc(n,m<<5)|0;if(!m){Mc(f[r>>2]|0);f[r>>2]=0;f[o>>2]=0;pg(G);m=1;break g}else{f[r>>2]=m;n=m;break}}while(0);m=n+(q<<5)|0;f[m>>2]=0;f[m+4>>2]=0;f[m+8>>2]=0;f[m+12>>2]=0;f[m+16>>2]=0;f[m+20>>2]=0;f[m+24>>2]=0;f[m+28>>2]=0;do if(!(p&4)){if(!(p&1)){m=109;break}m=f[m+-32+20>>2]|0;m=(m|0)==1|(m|0)==10?2:1}else m=1;while(0);o=q;p=r;n=n+(q<<5)+20|0;B=77}while(0);if((B|0)==77){f[n>>2]=m;m=o;r=p}t=l+52|0;p=f[s>>2]|0;s=m;while(1){o=f[r>>2]|0;m=(f[o+(s<<5)+20>>2]|0)-(f[o+(s<<5)+8>>2]|0)|0;m=(m|0)<(p|0)?m:p;f[o+(s<<5)+24>>2]=m;o=f[v>>2]|0;if(m>>>0>1){n=m;m=0;while(1){m=m+1|0;if(n>>>0>3)n=n>>>1;else break}}else m=0;B=ug(G,m+o|0)|0;n=f[r>>2]|0;f[n+(s<<5)+28>>2]=B;p=p-(f[n+(s<<5)+24>>2]|0)|0;if((p|0)<=0){B=90;break}q=s+1|0;o=f[(f[D>>2]|0)+((f[J>>2]|0)*1080|0)+16>>2]|0;m=f[t>>2]|0;if((s+2|0)>>>0>m>>>0){m=m+10|0;f[t>>2]=m;m=Lc(n,m<<5)|0;if(!m){B=89;break}f[r>>2]=m;n=m}B=n+(q<<5)|0;f[B>>2]=0;f[B+4>>2]=0;f[B+8>>2]=0;f[B+12>>2]=0;f[B+16>>2]=0;f[B+20>>2]=0;f[B+24>>2]=0;f[B+28>>2]=0;do if(!(o&4)){if(!(o&1)){m=109;break}m=f[n+(s<<5)+20>>2]|0;m=(m|0)==1|(m|0)==10?2:1}else m=1;while(0);f[n+(q<<5)+20>>2]=m;s=q}if((B|0)==89){B=0;Mc(f[r>>2]|0);f[r>>2]=0;f[t>>2]=0;pg(G);m=1;break}else if((B|0)==90){B=0;m=0;l=l+56|0;break}}else{f[l+40>>2]=0;m=13;l=l+56|0}while(0);switch(m&15){case 13:case 0:break;default:break f}h=h+1|0;if(h>>>0>=j>>>0)break e}if(!m)break d;else{c=0;break c}}while(0);c=c+36|0}else B=39;while(0);if((B|0)==39){B=0;c=c+36|0}y=y+1|0;if(y>>>0>=(f[E>>2]|0)>>>0)break b}u=O;return c|0}while(0);if(!(wg(G)|0)){pg(G);N=0;u=O;return N|0}c=F+(qg(G)|0)|0;pg(G);do if(!(f[d>>2]&4))l=H;else{if(((f[w>>2]|0)-c+(f[H>>2]|0)|0)>>>0<2){Mb(k,2,22242,L)|0;l=H;break}if((b[c>>0]|0)==-1?(b[c+1>>0]|0)==-110:0){c=c+2|0;l=H;break}Mb(k,2,22284,K)|0;l=H}while(0);d=f[l>>2]|0;k=c-d|0;f[w>>2]=(f[w>>2]|0)-k;f[H>>2]=d+k;f[g>>2]=1;f[i>>2]=(f[M>>2]|0)-N;N=1;u=O;return N|0}function Yg(a,b){a=a|0;b=b|0;var c=0;c=Ic(1,8)|0;if(!c){c=0;return c|0}f[c>>2]=a;f[c+4>>2]=b;return c|0}function Zg(a){a=a|0;if(!a)return;Mc(a);return}function _g(){return Hc(104)|0}function $g(a){a=a|0;if(!a)return;Mc(a);return}function ah(a){a=a|0;return (f[a+12>>2]|0)-(f[a+16>>2]|0)|0}function bh(a,b){a=a|0;b=b|0;f[a+100>>2]=a+24;f[a+4>>2]=32768;f[a>>2]=0;f[a+12>>2]=b+-1;f[a+8>>2]=12;f[a+16>>2]=b;return}function ch(a,c){a=a|0;c=c|0;var d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0;e=f[a+100>>2]|0;g=f[e>>2]|0;k=(f[g+4>>2]|0)==(c|0);d=f[g>>2]|0;l=a+4|0;c=(f[l>>2]|0)-d|0;f[l>>2]=c;if(!k){if(c>>>0>>0){d=(f[a>>2]|0)+d|0;f[a>>2]=d;k=a}else{f[l>>2]=d;c=d;k=a;d=f[a>>2]|0}f[e>>2]=f[g+12>>2];i=a+8|0;j=a+12|0;h=a+16|0;a=d;e=f[i>>2]|0;while(1){c=c<<1;f[l>>2]=c;d=a<<1;f[k>>2]=d;e=e+-1|0;f[i>>2]=e;if(!e){c=f[j>>2]|0;do if((c|0)!=((f[h>>2]|0)+-1|0)){e=b[c>>0]|0;if(e<<24>>24==-1){e=c+1|0;f[j>>2]=e;g=7;d=1048575;c=a>>>19&4095;break}if(!(d&134217728)){e=c+1|0;f[j>>2]=e;g=8;d=524287;c=a>>>18&8191;break}b[c>>0]=e+1<<24>>24;c=f[j>>2]|0;if((b[c>>0]|0)==-1){a=f[k>>2]&134217727;f[k>>2]=a;e=c+1|0;f[j>>2]=e;g=7;d=1048575;c=a>>>20;break}else{e=c+1|0;f[j>>2]=e;g=8;d=524287;c=(f[k>>2]|0)>>>19;break}}else{e=c+1|0;f[j>>2]=e;g=8;d=524287;c=a>>>18&8191}while(0);b[e>>0]=c;d=f[k>>2]&d;f[k>>2]=d;f[i>>2]=g;c=f[l>>2]|0;e=g}if(!(c&32768))a=d;else break}return}if(c&32768|0){f[a>>2]=(f[a>>2]|0)+d;return}if(c>>>0>>0){f[l>>2]=d;c=d;k=a;d=f[a>>2]|0}else{d=(f[a>>2]|0)+d|0;f[a>>2]=d;k=a}f[e>>2]=f[g+8>>2];i=a+8|0;j=a+12|0;h=a+16|0;a=d;d=f[i>>2]|0;while(1){c=c<<1;f[l>>2]=c;e=a<<1;f[k>>2]=e;d=d+-1|0;f[i>>2]=d;if(!d){c=f[j>>2]|0;do if((c|0)!=((f[h>>2]|0)+-1|0)){d=b[c>>0]|0;if(d<<24>>24==-1){g=c+1|0;f[j>>2]=g;d=7;e=1048575;c=a>>>19&4095;break}if(!(e&134217728)){g=c+1|0;f[j>>2]=g;d=8;e=524287;c=a>>>18&8191;break}b[c>>0]=d+1<<24>>24;c=f[j>>2]|0;if((b[c>>0]|0)==-1){a=f[k>>2]&134217727;f[k>>2]=a;g=c+1|0;f[j>>2]=g;d=7;e=1048575;c=a>>>20;break}else{g=c+1|0;f[j>>2]=g;d=8;e=524287;c=(f[k>>2]|0)>>>19;break}}else{g=c+1|0;f[j>>2]=g;d=8;e=524287;c=a>>>18&8191}while(0);b[g>>0]=c;e=f[k>>2]&e;f[k>>2]=e;f[i>>2]=d;c=f[l>>2]|0}if(!(c&32768))a=e;else break}return}function dh(a){a=a|0;var c=0,d=0,e=0,g=0,h=0,i=0,j=0,k=0;k=f[a>>2]|0;h=k|65535;j=a+8|0;h=(h>>>0<((f[a+4>>2]|0)+k|0)>>>0?h:h+-32768|0)<>2];f[a>>2]=h;k=a+12|0;c=f[k>>2]|0;i=a+16|0;do if((c|0)!=((f[i>>2]|0)+-1|0)){d=b[c>>0]|0;if(d<<24>>24==-1){g=c+1|0;f[k>>2]=g;d=7;e=1048575;c=h>>>20;break}if(!(h&134217728)){g=c+1|0;f[k>>2]=g;d=8;e=524287;c=h>>>19;break}b[c>>0]=d+1<<24>>24;c=f[k>>2]|0;if((b[c>>0]|0)==-1){h=f[a>>2]&134217727;f[a>>2]=h;g=c+1|0;f[k>>2]=g;d=7;e=1048575;c=h>>>20;break}else{g=c+1|0;f[k>>2]=g;d=8;e=524287;c=(f[a>>2]|0)>>>19;break}}else{g=c+1|0;f[k>>2]=g;d=8;e=524287;c=h>>>19}while(0);b[g>>0]=c;h=f[a>>2]&e;f[j>>2]=d;h=h<>2]=h;d=f[k>>2]|0;do if((d|0)!=((f[i>>2]|0)+-1|0)){c=b[d>>0]|0;if(c<<24>>24==-1){g=d+1|0;f[k>>2]=g;d=7;e=1048575;c=h>>>20;break}if(!(h&134217728)){g=d+1|0;f[k>>2]=g;d=8;e=524287;c=h>>>19;break}b[d>>0]=c+1<<24>>24;c=f[k>>2]|0;if((b[c>>0]|0)==-1){i=f[a>>2]&134217727;f[a>>2]=i;g=c+1|0;f[k>>2]=g;d=7;e=1048575;c=i>>>20;break}else{g=c+1|0;f[k>>2]=g;d=8;e=524287;c=(f[a>>2]|0)>>>19;break}}else{g=d+1|0;f[k>>2]=g;d=8;e=524287;c=h>>>19}while(0);b[g>>0]=c;f[a>>2]=f[a>>2]&e;f[j>>2]=d;c=f[k>>2]|0;if((b[c>>0]|0)==-1)return;f[k>>2]=c+1;return}function eh(a){a=a|0;f[a>>2]=0;f[a+8>>2]=8;return}function fh(a,c){a=a|0;c=c|0;var d=0,e=0,g=0;d=a+8|0;e=(f[d>>2]|0)+-1|0;f[d>>2]=e;c=(f[a>>2]|0)+(c<>2]=c;if(e|0)return;e=a+12|0;g=(f[e>>2]|0)+1|0;f[e>>2]=g;b[g>>0]=c;f[d>>2]=8;f[d>>2]=(b[f[e>>2]>>0]|0)==-1?7:8;f[a>>2]=0;return}function gh(a){a=a|0;f[a+28>>2]=1156;f[a+32>>2]=1156;f[a+36>>2]=1156;f[a+40>>2]=1156;f[a+44>>2]=1156;f[a+48>>2]=1156;f[a+52>>2]=1156;f[a+56>>2]=1156;f[a+60>>2]=1156;f[a+64>>2]=1156;f[a+68>>2]=1156;f[a+72>>2]=1156;f[a+76>>2]=1156;f[a+80>>2]=1156;f[a+84>>2]=1156;f[a+88>>2]=1156;f[a+96>>2]=2628;f[a+92>>2]=1252;f[a+24>>2]=1284;return}function hh(a){a=a|0;f[a+24>>2]=1156;f[a+28>>2]=1156;f[a+32>>2]=1156;f[a+36>>2]=1156;f[a+40>>2]=1156;f[a+44>>2]=1156;f[a+48>>2]=1156;f[a+52>>2]=1156;f[a+56>>2]=1156;f[a+60>>2]=1156;f[a+64>>2]=1156;f[a+68>>2]=1156;f[a+72>>2]=1156;f[a+76>>2]=1156;f[a+80>>2]=1156;f[a+84>>2]=1156;f[a+88>>2]=1156;f[a+92>>2]=1156;f[a+96>>2]=1156;return}function ih(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;f[a+24+(b<<2)>>2]=1156+((d<<1)+c<<4);return}function jh(a){a=a|0;var c=0,d=0;f[a+100>>2]=a+24;f[a+4>>2]=32768;f[a>>2]=0;c=a+8|0;f[c>>2]=12;d=a+12|0;a=(f[d>>2]|0)+-1|0;f[d>>2]=a;if((b[a>>0]|0)!=-1)return;f[c>>2]=13;return}function kh(a){a=a|0;var c=0,d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0;l=a+8|0;d=f[l>>2]|0;c=12-d|0;if((c|0)>0){e=a+12|0;k=a+16|0;j=c;g=f[a>>2]|0;c=d;do{i=g<>2]=i;f[l>>2]=0;c=f[e>>2]|0;do if((c|0)!=((f[k>>2]|0)+-1|0)){d=b[c>>0]|0;if(d<<24>>24==-1){h=c+1|0;f[e>>2]=h;c=7;g=1048575;d=i>>>20;break}if(!(i&134217728)){h=c+1|0;f[e>>2]=h;c=8;g=524287;d=i>>>19;break}b[c>>0]=d+1<<24>>24;c=f[e>>2]|0;if((b[c>>0]|0)==-1){d=f[a>>2]&134217727;f[a>>2]=d;h=c+1|0;f[e>>2]=h;c=7;g=1048575;d=d>>>20;break}else{h=c+1|0;f[e>>2]=h;c=8;g=524287;d=(f[a>>2]|0)>>>19;break}}else{h=c+1|0;f[e>>2]=h;c=8;g=524287;d=i>>>19}while(0);b[h>>0]=d;g=f[a>>2]&g;f[a>>2]=g;f[l>>2]=c;j=j-c|0}while((j|0)>0)}else e=a+12|0;c=f[e>>2]|0;d=b[c>>0]|0;if(d<<24>>24==-1)return;do if((c|0)!=((f[a+16>>2]|0)+-1|0)){i=f[a>>2]|0;if(!(i&134217728)){h=c+1|0;f[e>>2]=h;d=a;e=8;g=524287;c=i>>>19;break}b[c>>0]=d+1<<24>>24;c=f[e>>2]|0;if((b[c>>0]|0)==-1){k=f[a>>2]&134217727;f[a>>2]=k;h=c+1|0;f[e>>2]=h;d=a;e=7;g=1048575;c=k>>>20;break}else{h=c+1|0;f[e>>2]=h;d=a;e=8;g=524287;c=(f[a>>2]|0)>>>19;break}}else{h=c+1|0;f[e>>2]=h;d=a;e=8;g=524287;c=(f[a>>2]|0)>>>19}while(0);b[h>>0]=c;f[d>>2]=f[d>>2]&g;f[l>>2]=e;return}function lh(a){a=a|0;f[a+100>>2]=a+96;ch(a,1);ch(a,0);ch(a,1);ch(a,0);return}function mh(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,g=0,i=0,j=0;f[a+100>>2]=a+24;f[a+16>>2]=c;f[a+20>>2]=c+d;j=a+12|0;f[j>>2]=c;do if(!d){f[a>>2]=16711680;g=8;c=65280;e=16711680;d=a}else{e=h[c>>0]<<16;f[a>>2]=e;g=c+1|0;if((d|0)==1)i=255;else i=h[g>>0]|0;if((b[c>>0]|0)==-1)if(i>>>0>143){g=8;c=65280;d=a;break}else{c=9;d=7}else{c=8;d=8}f[j>>2]=g;g=d;c=i<>2]=e+c<<7;f[a+8>>2]=g+-7;f[a+4>>2]=32768;return 1}function nh(a){a=a|0;var c=0,d=0,e=0,g=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;c=f[a+100>>2]|0;d=f[c>>2]|0;g=f[d>>2]|0;p=a+4|0;i=(f[p>>2]|0)-g|0;f[p>>2]=i;e=f[a>>2]|0;if(e>>>16>>>0>>0){n=i>>>0>>0;f[p>>2]=g;o=f[d+4>>2]|0;f[c>>2]=f[(n?d+8|0:d+12|0)>>2];k=a+8|0;l=a+12|0;m=a+20|0;c=f[k>>2]|0;d=e;j=g;do{if(!c){e=f[l>>2]|0;c=f[m>>2]|0;do if((e|0)==(c|0)){g=8;c=65280}else{g=e+1|0;if((g|0)==(c|0))i=255;else i=h[g>>0]|0;if((b[e>>0]|0)==-1)if(i>>>0>143){g=8;c=65280;break}else{e=9;c=7}else{e=8;c=8}f[l>>2]=g;g=c;c=i<>2]=d;f[k>>2]=g;c=g}j=j<<1;f[p>>2]=j;d=d<<1;f[a>>2]=d;c=c+-1|0;f[k>>2]=c}while(j>>>0<32768);p=n?o:1-o|0;return p|0}e=e-(g<<16)|0;f[a>>2]=e;if(i&32768|0){p=f[d+4>>2]|0;return p|0}n=i>>>0>>0;o=f[d+4>>2]|0;f[c>>2]=f[(n?d+12|0:d+8|0)>>2];k=a+8|0;l=a+12|0;m=a+20|0;c=f[k>>2]|0;d=e;j=i;do{if(!c){e=f[l>>2]|0;c=f[m>>2]|0;do if((e|0)==(c|0)){g=8;c=65280}else{g=e+1|0;if((g|0)==(c|0))i=255;else i=h[g>>0]|0;if((b[e>>0]|0)==-1)if(i>>>0>143){g=8;c=65280;break}else{e=9;c=7}else{e=8;c=8}f[l>>2]=g;g=c;c=i<>2]=d;f[k>>2]=g;c=g}j=j<<1;f[p>>2]=j;d=d<<1;f[a>>2]=d;c=c+-1|0;f[k>>2]=c}while(j>>>0<32768);p=n?1-o|0:o;return p|0}function oh(){return Hc(28)|0}function ph(a){a=a|0;if(!a)return;Mc(a);return}function qh(a,c,d){a=a|0;c=c|0;d=d|0;f[a+20>>2]=c;f[a+8>>2]=d;f[a+12>>2]=0;b[a>>0]=0;f[a+4>>2]=0;return}function rh(a){a=a|0;var c=0,d=0,e=0,g=0,h=0;g=a+4|0;c=f[g>>2]|0;do if(!c){f[g>>2]=8;c=a+12|0;e=f[c>>2]|0;if((e|0)==(f[a+8>>2]|0)){b[a>>0]=-1;d=8;c=-1;break}if((b[a>>0]|0)==-1){f[g>>2]=7;d=7}else d=8;h=b[(f[a+20>>2]|0)+e>>0]|0;b[a>>0]=h;f[c>>2]=e+1;c=h}else{d=c;c=b[a>>0]|0}while(0);h=d+-1|0;f[g>>2]=h;return (c&255)>>>h&1|0}function sh(a){a=a|0;var b=0,c=0,d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0,w=0,x=0;x=u;u=u+16|0;o=x;do if(a>>>0<245){l=a>>>0<11?16:a+11&-8;a=l>>>3;n=f[6184]|0;c=n>>>a;if(c&3|0){b=(c&1^1)+a|0;a=24776+(b<<1<<2)|0;c=a+8|0;d=f[c>>2]|0;e=d+8|0;g=f[e>>2]|0;if((g|0)==(a|0))f[6184]=n&~(1<>2]=a;f[c>>2]=g}w=b<<3;f[d+4>>2]=w|3;w=d+w+4|0;f[w>>2]=f[w>>2]|1;w=e;u=x;return w|0}m=f[6186]|0;if(l>>>0>m>>>0){if(c|0){b=2<>>12&16;b=b>>>i;c=b>>>5&8;b=b>>>c;g=b>>>2&4;b=b>>>g;a=b>>>1&2;b=b>>>a;d=b>>>1&1;d=(c|i|g|a|d)+(b>>>d)|0;b=24776+(d<<1<<2)|0;a=b+8|0;g=f[a>>2]|0;i=g+8|0;c=f[i>>2]|0;if((c|0)==(b|0)){a=n&~(1<>2]=b;f[a>>2]=c;a=n}w=d<<3;h=w-l|0;f[g+4>>2]=l|3;e=g+l|0;f[e+4>>2]=h|1;f[g+w>>2]=h;if(m|0){d=f[6189]|0;b=m>>>3;c=24776+(b<<1<<2)|0;b=1<>2]|0}f[a>>2]=d;f[b+12>>2]=d;f[d+8>>2]=b;f[d+12>>2]=c}f[6186]=h;f[6189]=e;w=i;u=x;return w|0}j=f[6185]|0;if(j){c=(j&0-j)+-1|0;i=c>>>12&16;c=c>>>i;h=c>>>5&8;c=c>>>h;k=c>>>2&4;c=c>>>k;d=c>>>1&2;c=c>>>d;a=c>>>1&1;a=f[25040+((h|i|k|d|a)+(c>>>a)<<2)>>2]|0;c=(f[a+4>>2]&-8)-l|0;d=f[a+16+(((f[a+16>>2]|0)==0&1)<<2)>>2]|0;if(!d){k=a;h=c}else{do{i=(f[d+4>>2]&-8)-l|0;k=i>>>0>>0;c=k?i:c;a=k?d:a;d=f[d+16+(((f[d+16>>2]|0)==0&1)<<2)>>2]|0}while((d|0)!=0);k=a;h=c}i=k+l|0;if(i>>>0>k>>>0){e=f[k+24>>2]|0;b=f[k+12>>2]|0;do if((b|0)==(k|0)){a=k+20|0;b=f[a>>2]|0;if(!b){a=k+16|0;b=f[a>>2]|0;if(!b){c=0;break}}while(1){c=b+20|0;d=f[c>>2]|0;if(d|0){b=d;a=c;continue}c=b+16|0;d=f[c>>2]|0;if(!d)break;else{b=d;a=c}}f[a>>2]=0;c=b}else{c=f[k+8>>2]|0;f[c+12>>2]=b;f[b+8>>2]=c;c=b}while(0);do if(e|0){b=f[k+28>>2]|0;a=25040+(b<<2)|0;if((k|0)==(f[a>>2]|0)){f[a>>2]=c;if(!c){f[6185]=j&~(1<>2]|0)!=(k|0)&1)<<2)>>2]=c;if(!c)break}f[c+24>>2]=e;b=f[k+16>>2]|0;if(b|0){f[c+16>>2]=b;f[b+24>>2]=c}b=f[k+20>>2]|0;if(b|0){f[c+20>>2]=b;f[b+24>>2]=c}}while(0);if(h>>>0<16){w=h+l|0;f[k+4>>2]=w|3;w=k+w+4|0;f[w>>2]=f[w>>2]|1}else{f[k+4>>2]=l|3;f[i+4>>2]=h|1;f[i+h>>2]=h;if(m|0){d=f[6189]|0;b=m>>>3;c=24776+(b<<1<<2)|0;b=1<>2]|0}f[a>>2]=d;f[b+12>>2]=d;f[d+8>>2]=b;f[d+12>>2]=c}f[6186]=h;f[6189]=i}w=k+8|0;u=x;return w|0}else m=l}else m=l}else m=l}else if(a>>>0<=4294967231){a=a+11|0;l=a&-8;k=f[6185]|0;if(k){d=0-l|0;a=a>>>8;if(a)if(l>>>0>16777215)j=31;else{n=(a+1048320|0)>>>16&8;v=a<>>16&4;v=v<>>16&2;j=14-(m|n|j)+(v<>>15)|0;j=l>>>(j+7|0)&1|j<<1}else j=0;c=f[25040+(j<<2)>>2]|0;a:do if(!c){c=0;a=0;v=57}else{a=0;i=c;h=l<<((j|0)==31?0:25-(j>>>1)|0);c=0;while(1){e=(f[i+4>>2]&-8)-l|0;if(e>>>0>>0)if(!e){d=0;c=i;a=i;v=61;break a}else{a=i;d=e}e=f[i+20>>2]|0;i=f[i+16+(h>>>31<<2)>>2]|0;c=(e|0)==0|(e|0)==(i|0)?c:e;e=(i|0)==0;if(e){v=57;break}else h=h<<((e^1)&1)}}while(0);if((v|0)==57){if((c|0)==0&(a|0)==0){a=2<>>12&16;n=n>>>i;h=n>>>5&8;n=n>>>h;j=n>>>2&4;n=n>>>j;m=n>>>1&2;n=n>>>m;c=n>>>1&1;a=0;c=f[25040+((h|i|j|m|c)+(n>>>c)<<2)>>2]|0}if(!c){i=a;h=d}else v=61}if((v|0)==61)while(1){v=0;m=(f[c+4>>2]&-8)-l|0;n=m>>>0>>0;d=n?m:d;a=n?c:a;c=f[c+16+(((f[c+16>>2]|0)==0&1)<<2)>>2]|0;if(!c){i=a;h=d;break}else v=61}if((i|0)!=0?h>>>0<((f[6186]|0)-l|0)>>>0:0){g=i+l|0;if(g>>>0<=i>>>0){w=0;u=x;return w|0}e=f[i+24>>2]|0;b=f[i+12>>2]|0;do if((b|0)==(i|0)){a=i+20|0;b=f[a>>2]|0;if(!b){a=i+16|0;b=f[a>>2]|0;if(!b){b=0;break}}while(1){c=b+20|0;d=f[c>>2]|0;if(d|0){b=d;a=c;continue}c=b+16|0;d=f[c>>2]|0;if(!d)break;else{b=d;a=c}}f[a>>2]=0}else{w=f[i+8>>2]|0;f[w+12>>2]=b;f[b+8>>2]=w}while(0);do if(e){a=f[i+28>>2]|0;c=25040+(a<<2)|0;if((i|0)==(f[c>>2]|0)){f[c>>2]=b;if(!b){d=k&~(1<>2]|0)!=(i|0)&1)<<2)>>2]=b;if(!b){d=k;break}}f[b+24>>2]=e;a=f[i+16>>2]|0;if(a|0){f[b+16>>2]=a;f[a+24>>2]=b}a=f[i+20>>2]|0;if(a){f[b+20>>2]=a;f[a+24>>2]=b;d=k}else d=k}else d=k;while(0);do if(h>>>0>=16){f[i+4>>2]=l|3;f[g+4>>2]=h|1;f[g+h>>2]=h;b=h>>>3;if(h>>>0<256){c=24776+(b<<1<<2)|0;a=f[6184]|0;b=1<>2]|0}f[a>>2]=g;f[b+12>>2]=g;f[g+8>>2]=b;f[g+12>>2]=c;break}b=h>>>8;if(b)if(h>>>0>16777215)b=31;else{v=(b+1048320|0)>>>16&8;w=b<>>16&4;w=w<>>16&2;b=14-(t|v|b)+(w<>>15)|0;b=h>>>(b+7|0)&1|b<<1}else b=0;c=25040+(b<<2)|0;f[g+28>>2]=b;a=g+16|0;f[a+4>>2]=0;f[a>>2]=0;a=1<>2]=g;f[g+24>>2]=c;f[g+12>>2]=g;f[g+8>>2]=g;break}a=h<<((b|0)==31?0:25-(b>>>1)|0);c=f[c>>2]|0;while(1){if((f[c+4>>2]&-8|0)==(h|0)){v=97;break}d=c+16+(a>>>31<<2)|0;b=f[d>>2]|0;if(!b){v=96;break}else{a=a<<1;c=b}}if((v|0)==96){f[d>>2]=g;f[g+24>>2]=c;f[g+12>>2]=g;f[g+8>>2]=g;break}else if((v|0)==97){v=c+8|0;w=f[v>>2]|0;f[w+12>>2]=g;f[v>>2]=g;f[g+8>>2]=w;f[g+12>>2]=c;f[g+24>>2]=0;break}}else{w=h+l|0;f[i+4>>2]=w|3;w=i+w+4|0;f[w>>2]=f[w>>2]|1}while(0);w=i+8|0;u=x;return w|0}else m=l}else m=l}else m=-1;while(0);c=f[6186]|0;if(c>>>0>=m>>>0){b=c-m|0;a=f[6189]|0;if(b>>>0>15){w=a+m|0;f[6189]=w;f[6186]=b;f[w+4>>2]=b|1;f[a+c>>2]=b;f[a+4>>2]=m|3}else{f[6186]=0;f[6189]=0;f[a+4>>2]=c|3;w=a+c+4|0;f[w>>2]=f[w>>2]|1}w=a+8|0;u=x;return w|0}i=f[6187]|0;if(i>>>0>m>>>0){t=i-m|0;f[6187]=t;w=f[6190]|0;v=w+m|0;f[6190]=v;f[v+4>>2]=t|1;f[w+4>>2]=m|3;w=w+8|0;u=x;return w|0}if(!(f[6302]|0)){f[6304]=4096;f[6303]=4096;f[6305]=-1;f[6306]=-1;f[6307]=0;f[6295]=0;f[6302]=o&-16^1431655768;a=4096}else a=f[6304]|0;j=m+48|0;k=m+47|0;h=a+k|0;e=0-a|0;l=h&e;if(l>>>0<=m>>>0){w=0;u=x;return w|0}a=f[6294]|0;if(a|0?(n=f[6292]|0,o=n+l|0,o>>>0<=n>>>0|o>>>0>a>>>0):0){w=0;u=x;return w|0}b:do if(!(f[6295]&4)){c=f[6190]|0;c:do if(c){d=25184;while(1){a=f[d>>2]|0;if(a>>>0<=c>>>0?(r=d+4|0,(a+(f[r>>2]|0)|0)>>>0>c>>>0):0)break;a=f[d+8>>2]|0;if(!a){v=118;break c}else d=a}b=h-i&e;if(b>>>0<2147483647){a=lj(b|0)|0;if((a|0)==((f[d>>2]|0)+(f[r>>2]|0)|0)){if((a|0)!=(-1|0)){h=b;g=a;v=135;break b}}else{d=a;v=126}}else b=0}else v=118;while(0);do if((v|0)==118){c=lj(0)|0;if((c|0)!=(-1|0)?(b=c,p=f[6303]|0,q=p+-1|0,b=((q&b|0)==0?0:(q+b&0-p)-b|0)+l|0,p=f[6292]|0,q=b+p|0,b>>>0>m>>>0&b>>>0<2147483647):0){r=f[6294]|0;if(r|0?q>>>0<=p>>>0|q>>>0>r>>>0:0){b=0;break}a=lj(b|0)|0;if((a|0)==(c|0)){h=b;g=c;v=135;break b}else{d=a;v=126}}else b=0}while(0);do if((v|0)==126){c=0-b|0;if(!(j>>>0>b>>>0&(b>>>0<2147483647&(d|0)!=(-1|0))))if((d|0)==(-1|0)){b=0;break}else{h=b;g=d;v=135;break b}a=f[6304]|0;a=k-b+a&0-a;if(a>>>0>=2147483647){h=b;g=d;v=135;break b}if((lj(a|0)|0)==(-1|0)){lj(c|0)|0;b=0;break}else{h=a+b|0;g=d;v=135;break b}}while(0);f[6295]=f[6295]|4;v=133}else{b=0;v=133}while(0);if(((v|0)==133?l>>>0<2147483647:0)?(g=lj(l|0)|0,r=lj(0)|0,s=r-g|0,t=s>>>0>(m+40|0)>>>0,!((g|0)==(-1|0)|t^1|g>>>0>>0&((g|0)!=(-1|0)&(r|0)!=(-1|0))^1)):0){h=t?s:b;v=135}if((v|0)==135){b=(f[6292]|0)+h|0;f[6292]=b;if(b>>>0>(f[6293]|0)>>>0)f[6293]=b;j=f[6190]|0;do if(j){b=25184;while(1){a=f[b>>2]|0;c=b+4|0;d=f[c>>2]|0;if((g|0)==(a+d|0)){v=143;break}e=f[b+8>>2]|0;if(!e)break;else b=e}if(((v|0)==143?(f[b+12>>2]&8|0)==0:0)?g>>>0>j>>>0&a>>>0<=j>>>0:0){f[c>>2]=d+h;w=(f[6187]|0)+h|0;t=j+8|0;t=(t&7|0)==0?0:0-t&7;v=j+t|0;t=w-t|0;f[6190]=v;f[6187]=t;f[v+4>>2]=t|1;f[j+w+4>>2]=40;f[6191]=f[6306];break}if(g>>>0<(f[6188]|0)>>>0)f[6188]=g;a=g+h|0;b=25184;while(1){if((f[b>>2]|0)==(a|0)){v=151;break}b=f[b+8>>2]|0;if(!b){a=25184;break}}if((v|0)==151)if(!(f[b+12>>2]&8)){f[b>>2]=g;l=b+4|0;f[l>>2]=(f[l>>2]|0)+h;l=g+8|0;l=g+((l&7|0)==0?0:0-l&7)|0;b=a+8|0;b=a+((b&7|0)==0?0:0-b&7)|0;k=l+m|0;i=b-l-m|0;f[l+4>>2]=m|3;do if((j|0)!=(b|0)){if((f[6189]|0)==(b|0)){w=(f[6186]|0)+i|0;f[6186]=w;f[6189]=k;f[k+4>>2]=w|1;f[k+w>>2]=w;break}a=f[b+4>>2]|0;if((a&3|0)==1){h=a&-8;d=a>>>3;d:do if(a>>>0<256){a=f[b+8>>2]|0;c=f[b+12>>2]|0;if((c|0)==(a|0)){f[6184]=f[6184]&~(1<>2]=c;f[c+8>>2]=a;break}}else{g=f[b+24>>2]|0;a=f[b+12>>2]|0;do if((a|0)==(b|0)){d=b+16|0;c=d+4|0;a=f[c>>2]|0;if(!a){a=f[d>>2]|0;if(!a){a=0;break}else c=d}while(1){d=a+20|0;e=f[d>>2]|0;if(e|0){a=e;c=d;continue}d=a+16|0;e=f[d>>2]|0;if(!e)break;else{a=e;c=d}}f[c>>2]=0}else{w=f[b+8>>2]|0;f[w+12>>2]=a;f[a+8>>2]=w}while(0);if(!g)break;c=f[b+28>>2]|0;d=25040+(c<<2)|0;do if((f[d>>2]|0)!=(b|0)){f[g+16+(((f[g+16>>2]|0)!=(b|0)&1)<<2)>>2]=a;if(!a)break d}else{f[d>>2]=a;if(a|0)break;f[6185]=f[6185]&~(1<>2]=g;c=b+16|0;d=f[c>>2]|0;if(d|0){f[a+16>>2]=d;f[d+24>>2]=a}c=f[c+4>>2]|0;if(!c)break;f[a+20>>2]=c;f[c+24>>2]=a}while(0);b=b+h|0;e=h+i|0}else e=i;b=b+4|0;f[b>>2]=f[b>>2]&-2;f[k+4>>2]=e|1;f[k+e>>2]=e;b=e>>>3;if(e>>>0<256){c=24776+(b<<1<<2)|0;a=f[6184]|0;b=1<>2]|0}f[a>>2]=k;f[b+12>>2]=k;f[k+8>>2]=b;f[k+12>>2]=c;break}b=e>>>8;do if(!b)b=0;else{if(e>>>0>16777215){b=31;break}v=(b+1048320|0)>>>16&8;w=b<>>16&4;w=w<>>16&2;b=14-(t|v|b)+(w<>>15)|0;b=e>>>(b+7|0)&1|b<<1}while(0);d=25040+(b<<2)|0;f[k+28>>2]=b;a=k+16|0;f[a+4>>2]=0;f[a>>2]=0;a=f[6185]|0;c=1<>2]=k;f[k+24>>2]=d;f[k+12>>2]=k;f[k+8>>2]=k;break}a=e<<((b|0)==31?0:25-(b>>>1)|0);c=f[d>>2]|0;while(1){if((f[c+4>>2]&-8|0)==(e|0)){v=192;break}d=c+16+(a>>>31<<2)|0;b=f[d>>2]|0;if(!b){v=191;break}else{a=a<<1;c=b}}if((v|0)==191){f[d>>2]=k;f[k+24>>2]=c;f[k+12>>2]=k;f[k+8>>2]=k;break}else if((v|0)==192){v=c+8|0;w=f[v>>2]|0;f[w+12>>2]=k;f[v>>2]=k;f[k+8>>2]=w;f[k+12>>2]=c;f[k+24>>2]=0;break}}else{w=(f[6187]|0)+i|0;f[6187]=w;f[6190]=k;f[k+4>>2]=w|1}while(0);w=l+8|0;u=x;return w|0}else a=25184;while(1){b=f[a>>2]|0;if(b>>>0<=j>>>0?(w=b+(f[a+4>>2]|0)|0,w>>>0>j>>>0):0)break;a=f[a+8>>2]|0}e=w+-47|0;a=e+8|0;a=e+((a&7|0)==0?0:0-a&7)|0;e=j+16|0;a=a>>>0>>0?j:a;b=a+8|0;c=h+-40|0;t=g+8|0;t=(t&7|0)==0?0:0-t&7;v=g+t|0;t=c-t|0;f[6190]=v;f[6187]=t;f[v+4>>2]=t|1;f[g+c+4>>2]=40;f[6191]=f[6306];c=a+4|0;f[c>>2]=27;f[b>>2]=f[6296];f[b+4>>2]=f[6297];f[b+8>>2]=f[6298];f[b+12>>2]=f[6299];f[6296]=g;f[6297]=h;f[6299]=0;f[6298]=b;b=a+24|0;do{v=b;b=b+4|0;f[b>>2]=7}while((v+8|0)>>>0>>0);if((a|0)!=(j|0)){g=a-j|0;f[c>>2]=f[c>>2]&-2;f[j+4>>2]=g|1;f[a>>2]=g;b=g>>>3;if(g>>>0<256){c=24776+(b<<1<<2)|0;a=f[6184]|0;b=1<>2]|0}f[a>>2]=j;f[b+12>>2]=j;f[j+8>>2]=b;f[j+12>>2]=c;break}b=g>>>8;if(b)if(g>>>0>16777215)c=31;else{v=(b+1048320|0)>>>16&8;w=b<>>16&4;w=w<>>16&2;c=14-(t|v|c)+(w<>>15)|0;c=g>>>(c+7|0)&1|c<<1}else c=0;d=25040+(c<<2)|0;f[j+28>>2]=c;f[j+20>>2]=0;f[e>>2]=0;b=f[6185]|0;a=1<>2]=j;f[j+24>>2]=d;f[j+12>>2]=j;f[j+8>>2]=j;break}a=g<<((c|0)==31?0:25-(c>>>1)|0);c=f[d>>2]|0;while(1){if((f[c+4>>2]&-8|0)==(g|0)){v=213;break}d=c+16+(a>>>31<<2)|0;b=f[d>>2]|0;if(!b){v=212;break}else{a=a<<1;c=b}}if((v|0)==212){f[d>>2]=j;f[j+24>>2]=c;f[j+12>>2]=j;f[j+8>>2]=j;break}else if((v|0)==213){v=c+8|0;w=f[v>>2]|0;f[w+12>>2]=j;f[v>>2]=j;f[j+8>>2]=w;f[j+12>>2]=c;f[j+24>>2]=0;break}}}else{w=f[6188]|0;if((w|0)==0|g>>>0>>0)f[6188]=g;f[6296]=g;f[6297]=h;f[6299]=0;f[6193]=f[6302];f[6192]=-1;f[6197]=24776;f[6196]=24776;f[6199]=24784;f[6198]=24784;f[6201]=24792;f[6200]=24792;f[6203]=24800;f[6202]=24800;f[6205]=24808;f[6204]=24808;f[6207]=24816;f[6206]=24816;f[6209]=24824;f[6208]=24824;f[6211]=24832;f[6210]=24832;f[6213]=24840;f[6212]=24840;f[6215]=24848;f[6214]=24848;f[6217]=24856;f[6216]=24856;f[6219]=24864;f[6218]=24864;f[6221]=24872;f[6220]=24872;f[6223]=24880;f[6222]=24880;f[6225]=24888;f[6224]=24888;f[6227]=24896;f[6226]=24896;f[6229]=24904;f[6228]=24904;f[6231]=24912;f[6230]=24912;f[6233]=24920;f[6232]=24920;f[6235]=24928;f[6234]=24928;f[6237]=24936;f[6236]=24936;f[6239]=24944;f[6238]=24944;f[6241]=24952;f[6240]=24952;f[6243]=24960;f[6242]=24960;f[6245]=24968;f[6244]=24968;f[6247]=24976;f[6246]=24976;f[6249]=24984;f[6248]=24984;f[6251]=24992;f[6250]=24992;f[6253]=25e3;f[6252]=25e3;f[6255]=25008;f[6254]=25008;f[6257]=25016;f[6256]=25016;f[6259]=25024;f[6258]=25024;w=h+-40|0;t=g+8|0;t=(t&7|0)==0?0:0-t&7;v=g+t|0;t=w-t|0;f[6190]=v;f[6187]=t;f[v+4>>2]=t|1;f[g+w+4>>2]=40;f[6191]=f[6306]}while(0);b=f[6187]|0;if(b>>>0>m>>>0){t=b-m|0;f[6187]=t;w=f[6190]|0;v=w+m|0;f[6190]=v;f[v+4>>2]=t|1;f[w+4>>2]=m|3;w=w+8|0;u=x;return w|0}}w=Eh()|0;f[w>>2]=12;w=0;u=x;return w|0}function th(a){a=a|0;var b=0,c=0,d=0,e=0,g=0,h=0,i=0,j=0;if(!a)return;c=a+-8|0;e=f[6188]|0;a=f[a+-4>>2]|0;b=a&-8;j=c+b|0;do if(!(a&1)){d=f[c>>2]|0;if(!(a&3))return;h=c+(0-d)|0;g=d+b|0;if(h>>>0>>0)return;if((f[6189]|0)==(h|0)){a=j+4|0;b=f[a>>2]|0;if((b&3|0)!=3){i=h;b=g;break}f[6186]=g;f[a>>2]=b&-2;f[h+4>>2]=g|1;f[h+g>>2]=g;return}c=d>>>3;if(d>>>0<256){a=f[h+8>>2]|0;b=f[h+12>>2]|0;if((b|0)==(a|0)){f[6184]=f[6184]&~(1<>2]=b;f[b+8>>2]=a;i=h;b=g;break}}e=f[h+24>>2]|0;a=f[h+12>>2]|0;do if((a|0)==(h|0)){c=h+16|0;b=c+4|0;a=f[b>>2]|0;if(!a){a=f[c>>2]|0;if(!a){a=0;break}else b=c}while(1){c=a+20|0;d=f[c>>2]|0;if(d|0){a=d;b=c;continue}c=a+16|0;d=f[c>>2]|0;if(!d)break;else{a=d;b=c}}f[b>>2]=0}else{i=f[h+8>>2]|0;f[i+12>>2]=a;f[a+8>>2]=i}while(0);if(e){b=f[h+28>>2]|0;c=25040+(b<<2)|0;if((f[c>>2]|0)==(h|0)){f[c>>2]=a;if(!a){f[6185]=f[6185]&~(1<>2]|0)!=(h|0)&1)<<2)>>2]=a;if(!a){i=h;b=g;break}}f[a+24>>2]=e;b=h+16|0;c=f[b>>2]|0;if(c|0){f[a+16>>2]=c;f[c+24>>2]=a}b=f[b+4>>2]|0;if(b){f[a+20>>2]=b;f[b+24>>2]=a;i=h;b=g}else{i=h;b=g}}else{i=h;b=g}}else{i=c;h=c}while(0);if(h>>>0>=j>>>0)return;a=j+4|0;d=f[a>>2]|0;if(!(d&1))return;if(!(d&2)){if((f[6190]|0)==(j|0)){j=(f[6187]|0)+b|0;f[6187]=j;f[6190]=i;f[i+4>>2]=j|1;if((i|0)!=(f[6189]|0))return;f[6189]=0;f[6186]=0;return}if((f[6189]|0)==(j|0)){j=(f[6186]|0)+b|0;f[6186]=j;f[6189]=h;f[i+4>>2]=j|1;f[h+j>>2]=j;return}e=(d&-8)+b|0;c=d>>>3;do if(d>>>0<256){b=f[j+8>>2]|0;a=f[j+12>>2]|0;if((a|0)==(b|0)){f[6184]=f[6184]&~(1<>2]=a;f[a+8>>2]=b;break}}else{g=f[j+24>>2]|0;a=f[j+12>>2]|0;do if((a|0)==(j|0)){c=j+16|0;b=c+4|0;a=f[b>>2]|0;if(!a){a=f[c>>2]|0;if(!a){c=0;break}else b=c}while(1){c=a+20|0;d=f[c>>2]|0;if(d|0){a=d;b=c;continue}c=a+16|0;d=f[c>>2]|0;if(!d)break;else{a=d;b=c}}f[b>>2]=0;c=a}else{c=f[j+8>>2]|0;f[c+12>>2]=a;f[a+8>>2]=c;c=a}while(0);if(g|0){a=f[j+28>>2]|0;b=25040+(a<<2)|0;if((f[b>>2]|0)==(j|0)){f[b>>2]=c;if(!c){f[6185]=f[6185]&~(1<>2]|0)!=(j|0)&1)<<2)>>2]=c;if(!c)break}f[c+24>>2]=g;a=j+16|0;b=f[a>>2]|0;if(b|0){f[c+16>>2]=b;f[b+24>>2]=c}a=f[a+4>>2]|0;if(a|0){f[c+20>>2]=a;f[a+24>>2]=c}}}while(0);f[i+4>>2]=e|1;f[h+e>>2]=e;if((i|0)==(f[6189]|0)){f[6186]=e;return}}else{f[a>>2]=d&-2;f[i+4>>2]=b|1;f[h+b>>2]=b;e=b}a=e>>>3;if(e>>>0<256){c=24776+(a<<1<<2)|0;b=f[6184]|0;a=1<>2]|0}f[b>>2]=i;f[a+12>>2]=i;f[i+8>>2]=a;f[i+12>>2]=c;return}a=e>>>8;if(a)if(e>>>0>16777215)a=31;else{h=(a+1048320|0)>>>16&8;j=a<>>16&4;j=j<>>16&2;a=14-(g|h|a)+(j<>>15)|0;a=e>>>(a+7|0)&1|a<<1}else a=0;d=25040+(a<<2)|0;f[i+28>>2]=a;f[i+20>>2]=0;f[i+16>>2]=0;b=f[6185]|0;c=1<>>1)|0);c=f[d>>2]|0;while(1){if((f[c+4>>2]&-8|0)==(e|0)){a=73;break}d=c+16+(b>>>31<<2)|0;a=f[d>>2]|0;if(!a){a=72;break}else{b=b<<1;c=a}}if((a|0)==72){f[d>>2]=i;f[i+24>>2]=c;f[i+12>>2]=i;f[i+8>>2]=i;break}else if((a|0)==73){h=c+8|0;j=f[h>>2]|0;f[j+12>>2]=i;f[h>>2]=i;f[i+8>>2]=j;f[i+12>>2]=c;f[i+24>>2]=0;break}}else{f[6185]=b|c;f[d>>2]=i;f[i+24>>2]=d;f[i+12>>2]=i;f[i+8>>2]=i}while(0);j=(f[6192]|0)+-1|0;f[6192]=j;if(!j)a=25192;else return;while(1){a=f[a>>2]|0;if(!a)break;else a=a+8|0}f[6192]=-1;return}function uh(a,b){a=a|0;b=b|0;var c=0;if(a){c=X(b,a)|0;if((b|a)>>>0>65535)c=((c>>>0)/(a>>>0)|0|0)==(b|0)?c:-1}else c=0;a=sh(c)|0;if(!a)return a|0;if(!(f[a+-4>>2]&3))return a|0;ij(a|0,0,c|0)|0;return a|0}function vh(a,b){a=a|0;b=b|0;var c=0,d=0;if(!a){b=sh(b)|0;return b|0}if(b>>>0>4294967231){b=Eh()|0;f[b>>2]=12;b=0;return b|0}c=wh(a+-8|0,b>>>0<11?16:b+11&-8)|0;if(c|0){b=c+8|0;return b|0}c=sh(b)|0;if(!c){b=0;return b|0}d=f[a+-4>>2]|0;d=(d&-8)-((d&3|0)==0?8:4)|0;hj(c|0,a|0,(d>>>0>>0?d:b)|0)|0;th(a);b=c;return b|0}function wh(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;l=a+4|0;m=f[l>>2]|0;c=m&-8;i=a+c|0;if(!(m&3)){if(b>>>0<256){a=0;return a|0}if(c>>>0>=(b+4|0)>>>0?(c-b|0)>>>0<=f[6304]<<1>>>0:0)return a|0;a=0;return a|0}if(c>>>0>=b>>>0){c=c-b|0;if(c>>>0<=15)return a|0;k=a+b|0;f[l>>2]=m&1|b|2;f[k+4>>2]=c|3;m=i+4|0;f[m>>2]=f[m>>2]|1;xh(k,c);return a|0}if((f[6190]|0)==(i|0)){k=(f[6187]|0)+c|0;c=k-b|0;d=a+b|0;if(k>>>0<=b>>>0){a=0;return a|0}f[l>>2]=m&1|b|2;f[d+4>>2]=c|1;f[6190]=d;f[6187]=c;return a|0}if((f[6189]|0)==(i|0)){d=(f[6186]|0)+c|0;if(d>>>0>>0){a=0;return a|0}c=d-b|0;if(c>>>0>15){k=a+b|0;d=a+d|0;f[l>>2]=m&1|b|2;f[k+4>>2]=c|1;f[d>>2]=c;d=d+4|0;f[d>>2]=f[d>>2]&-2;d=k}else{f[l>>2]=m&1|d|2;d=a+d+4|0;f[d>>2]=f[d>>2]|1;d=0;c=0}f[6186]=c;f[6189]=d;return a|0}d=f[i+4>>2]|0;if(d&2|0){a=0;return a|0}j=(d&-8)+c|0;if(j>>>0>>0){a=0;return a|0}k=j-b|0;e=d>>>3;do if(d>>>0<256){d=f[i+8>>2]|0;c=f[i+12>>2]|0;if((c|0)==(d|0)){f[6184]=f[6184]&~(1<>2]=c;f[c+8>>2]=d;break}}else{h=f[i+24>>2]|0;c=f[i+12>>2]|0;do if((c|0)==(i|0)){e=i+16|0;d=e+4|0;c=f[d>>2]|0;if(!c){c=f[e>>2]|0;if(!c){e=0;break}else g=e}else g=d;while(1){e=c+20|0;d=f[e>>2]|0;if(d|0){c=d;g=e;continue}d=c+16|0;e=f[d>>2]|0;if(!e)break;else{c=e;g=d}}f[g>>2]=0;e=c}else{e=f[i+8>>2]|0;f[e+12>>2]=c;f[c+8>>2]=e;e=c}while(0);if(h|0){c=f[i+28>>2]|0;d=25040+(c<<2)|0;if((f[d>>2]|0)==(i|0)){f[d>>2]=e;if(!e){f[6185]=f[6185]&~(1<>2]|0)!=(i|0)&1)<<2)>>2]=e;if(!e)break}f[e+24>>2]=h;c=i+16|0;d=f[c>>2]|0;if(d|0){f[e+16>>2]=d;f[d+24>>2]=e}c=f[c+4>>2]|0;if(c|0){f[e+20>>2]=c;f[c+24>>2]=e}}}while(0);if(k>>>0<16){f[l>>2]=j|m&1|2;m=a+j+4|0;f[m>>2]=f[m>>2]|1;return a|0}else{i=a+b|0;f[l>>2]=m&1|b|2;f[i+4>>2]=k|3;m=a+j+4|0;f[m>>2]=f[m>>2]|1;xh(i,k);return a|0}return 0}function xh(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,g=0,h=0,i=0;i=a+b|0;c=f[a+4>>2]|0;do if(!(c&1)){e=f[a>>2]|0;if(!(c&3))return;h=a+(0-e)|0;b=e+b|0;if((f[6189]|0)==(h|0)){a=i+4|0;c=f[a>>2]|0;if((c&3|0)!=3)break;f[6186]=b;f[a>>2]=c&-2;f[h+4>>2]=b|1;f[i>>2]=b;return}d=e>>>3;if(e>>>0<256){a=f[h+8>>2]|0;c=f[h+12>>2]|0;if((c|0)==(a|0)){f[6184]=f[6184]&~(1<>2]=c;f[c+8>>2]=a;break}}g=f[h+24>>2]|0;a=f[h+12>>2]|0;do if((a|0)==(h|0)){d=h+16|0;c=d+4|0;a=f[c>>2]|0;if(!a){a=f[d>>2]|0;if(!a){a=0;break}else c=d}while(1){d=a+20|0;e=f[d>>2]|0;if(e|0){a=e;c=d;continue}d=a+16|0;e=f[d>>2]|0;if(!e)break;else{a=e;c=d}}f[c>>2]=0}else{e=f[h+8>>2]|0;f[e+12>>2]=a;f[a+8>>2]=e}while(0);if(g){c=f[h+28>>2]|0;d=25040+(c<<2)|0;if((f[d>>2]|0)==(h|0)){f[d>>2]=a;if(!a){f[6185]=f[6185]&~(1<>2]|0)!=(h|0)&1)<<2)>>2]=a;if(!a)break}f[a+24>>2]=g;c=h+16|0;d=f[c>>2]|0;if(d|0){f[a+16>>2]=d;f[d+24>>2]=a}c=f[c+4>>2]|0;if(c){f[a+20>>2]=c;f[c+24>>2]=a}}}else h=a;while(0);a=i+4|0;d=f[a>>2]|0;if(!(d&2)){if((f[6190]|0)==(i|0)){i=(f[6187]|0)+b|0;f[6187]=i;f[6190]=h;f[h+4>>2]=i|1;if((h|0)!=(f[6189]|0))return;f[6189]=0;f[6186]=0;return}if((f[6189]|0)==(i|0)){i=(f[6186]|0)+b|0;f[6186]=i;f[6189]=h;f[h+4>>2]=i|1;f[h+i>>2]=i;return}e=(d&-8)+b|0;c=d>>>3;do if(d>>>0<256){a=f[i+8>>2]|0;b=f[i+12>>2]|0;if((b|0)==(a|0)){f[6184]=f[6184]&~(1<>2]=b;f[b+8>>2]=a;break}}else{g=f[i+24>>2]|0;b=f[i+12>>2]|0;do if((b|0)==(i|0)){c=i+16|0;a=c+4|0;b=f[a>>2]|0;if(!b){b=f[c>>2]|0;if(!b){c=0;break}else a=c}while(1){c=b+20|0;d=f[c>>2]|0;if(d|0){b=d;a=c;continue}c=b+16|0;d=f[c>>2]|0;if(!d)break;else{b=d;a=c}}f[a>>2]=0;c=b}else{c=f[i+8>>2]|0;f[c+12>>2]=b;f[b+8>>2]=c;c=b}while(0);if(g|0){b=f[i+28>>2]|0;a=25040+(b<<2)|0;if((f[a>>2]|0)==(i|0)){f[a>>2]=c;if(!c){f[6185]=f[6185]&~(1<>2]|0)!=(i|0)&1)<<2)>>2]=c;if(!c)break}f[c+24>>2]=g;b=i+16|0;a=f[b>>2]|0;if(a|0){f[c+16>>2]=a;f[a+24>>2]=c}b=f[b+4>>2]|0;if(b|0){f[c+20>>2]=b;f[b+24>>2]=c}}}while(0);f[h+4>>2]=e|1;f[h+e>>2]=e;if((h|0)==(f[6189]|0)){f[6186]=e;return}}else{f[a>>2]=d&-2;f[h+4>>2]=b|1;f[h+b>>2]=b;e=b}b=e>>>3;if(e>>>0<256){c=24776+(b<<1<<2)|0;a=f[6184]|0;b=1<>2]|0}f[a>>2]=h;f[b+12>>2]=h;f[h+8>>2]=b;f[h+12>>2]=c;return}b=e>>>8;if(b)if(e>>>0>16777215)b=31;else{g=(b+1048320|0)>>>16&8;i=b<>>16&4;i=i<>>16&2;b=14-(d|g|b)+(i<>>15)|0;b=e>>>(b+7|0)&1|b<<1}else b=0;d=25040+(b<<2)|0;f[h+28>>2]=b;f[h+20>>2]=0;f[h+16>>2]=0;a=f[6185]|0;c=1<>2]=h;f[h+24>>2]=d;f[h+12>>2]=h;f[h+8>>2]=h;return}a=e<<((b|0)==31?0:25-(b>>>1)|0);c=f[d>>2]|0;while(1){if((f[c+4>>2]&-8|0)==(e|0)){b=69;break}d=c+16+(a>>>31<<2)|0;b=f[d>>2]|0;if(!b){b=68;break}else{a=a<<1;c=b}}if((b|0)==68){f[d>>2]=h;f[h+24>>2]=c;f[h+12>>2]=h;f[h+8>>2]=h;return}else if((b|0)==69){g=c+8|0;i=f[g>>2]|0;f[i+12>>2]=h;f[g>>2]=h;f[h+8>>2]=i;f[h+12>>2]=c;f[h+24>>2]=0;return}}function yh(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,g=0,h=0,i=0;a=a>>>0>16?a:16;if(a+-1&a){c=16;while(1)if(c>>>0>>0)c=c<<1;else{a=c;break}}if((-64-a|0)>>>0<=b>>>0){h=Eh()|0;f[h>>2]=12;h=0;return h|0}g=b>>>0<11?16:b+11&-8;c=sh(g+12+a|0)|0;if(!c){h=0;return h|0}e=c+-8|0;do if(a+-1&c){d=(c+a+-1&0-a)+-8|0;b=e;d=(d-b|0)>>>0>15?d:d+a|0;b=d-b|0;a=c+-4|0;i=f[a>>2]|0;c=(i&-8)-b|0;if(!(i&3)){f[d>>2]=(f[e>>2]|0)+b;f[d+4>>2]=c;a=d;b=d;break}else{i=d+4|0;f[i>>2]=c|f[i>>2]&1|2;c=d+c+4|0;f[c>>2]=f[c>>2]|1;f[a>>2]=b|f[a>>2]&1|2;f[i>>2]=f[i>>2]|1;xh(e,b);a=d;b=d;break}}else{a=e;b=e}while(0);a=a+4|0;c=f[a>>2]|0;if(c&3|0?(h=c&-8,h>>>0>(g+16|0)>>>0):0){i=h-g|0;e=b+g|0;f[a>>2]=g|c&1|2;f[e+4>>2]=i|3;h=b+h+4|0;f[h>>2]=f[h>>2]|1;xh(e,i)}i=b+8|0;return i|0}function zh(a,b,c){a=a|0;b=b|0;c=c|0;var d=0;do if((b|0)!=8){d=b>>>2;if((b&3|0)!=0|(d|0)==0){a=22;return a|0}if(d+1073741823&d|0){a=22;return a|0}if((-64-b|0)>>>0>>0){a=12;return a|0}else{b=yh(b>>>0>16?b:16,c)|0;break}}else b=sh(c)|0;while(0);if(!b){a=12;return a|0}f[a>>2]=b;a=0;return a|0}function Ah(a){a=a|0;var b=0,c=0;b=u;u=u+16|0;c=b;a=Fh(f[a+60>>2]|0)|0;f[c>>2]=a;a=Dh(za(6,c|0)|0)|0;u=b;return a|0}function Bh(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;m=u;u=u+48|0;k=m+16|0;g=m;e=m+32|0;i=a+28|0;d=f[i>>2]|0;f[e>>2]=d;j=a+20|0;d=(f[j>>2]|0)-d|0;f[e+4>>2]=d;f[e+8>>2]=b;f[e+12>>2]=c;d=d+c|0;h=a+60|0;f[g>>2]=f[h>>2];f[g+4>>2]=e;f[g+8>>2]=2;g=Dh(va(146,g|0)|0)|0;a:do if((d|0)!=(g|0)){b=2;while(1){if((g|0)<0)break;d=d-g|0;o=f[e+4>>2]|0;n=g>>>0>o>>>0;e=n?e+8|0:e;b=b+(n<<31>>31)|0;o=g-(n?o:0)|0;f[e>>2]=(f[e>>2]|0)+o;n=e+4|0;f[n>>2]=(f[n>>2]|0)-o;f[k>>2]=f[h>>2];f[k+4>>2]=e;f[k+8>>2]=b;g=Dh(va(146,k|0)|0)|0;if((d|0)==(g|0)){l=3;break a}}f[a+16>>2]=0;f[i>>2]=0;f[j>>2]=0;f[a>>2]=f[a>>2]|32;if((b|0)==2)c=0;else c=c-(f[e+4>>2]|0)|0}else l=3;while(0);if((l|0)==3){o=f[a+44>>2]|0;f[a+16>>2]=o+(f[a+48>>2]|0);f[i>>2]=o;f[j>>2]=o}u=m;return c|0}function Ch(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,g=0;e=u;u=u+32|0;g=e;d=e+20|0;f[g>>2]=f[a+60>>2];f[g+4>>2]=0;f[g+8>>2]=b;f[g+12>>2]=d;f[g+16>>2]=c;if((Dh(ta(140,g|0)|0)|0)<0){f[d>>2]=-1;a=-1}else a=f[d>>2]|0;u=e;return a|0}function Dh(a){a=a|0;var b=0;if(a>>>0>4294963200){b=Eh()|0;f[b>>2]=0-a;a=-1}return a|0}function Eh(){return 25296}function Fh(a){a=a|0;return a|0}function Gh(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,g=0,h=0,i=0,j=0,k=0,l=0;k=u;u=u+32|0;e=k;i=k+16|0;f[i>>2]=c;g=i+4|0;j=a+48|0;l=f[j>>2]|0;f[g>>2]=d-((l|0)!=0&1);h=a+44|0;f[i+8>>2]=f[h>>2];f[i+12>>2]=l;f[e>>2]=f[a+60>>2];f[e+4>>2]=i;f[e+8>>2]=2;e=Dh(ua(145,e|0)|0)|0;if((e|0)>=1){i=f[g>>2]|0;if(e>>>0>i>>>0){g=f[h>>2]|0;h=a+4|0;f[h>>2]=g;f[a+8>>2]=g+(e-i);if(!(f[j>>2]|0))e=d;else{f[h>>2]=g+1;b[c+(d+-1)>>0]=b[g>>0]|0;e=d}}}else f[a>>2]=f[a>>2]|e&48^16;u=k;return e|0}function Hh(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,g=0;g=u;u=u+32|0;e=g;f[a+36>>2]=61;if((f[a>>2]&64|0)==0?(f[e>>2]=f[a+60>>2],f[e+4>>2]=21523,f[e+8>>2]=g+16,ya(54,e|0)|0):0)b[a+75>>0]=-1;e=Bh(a,c,d)|0;u=g;return e|0}function Ih(){return 2792}function Jh(a,c){a=a|0;c=c|0;var d=0,e=0;d=b[a>>0]|0;e=b[c>>0]|0;if(d<<24>>24==0?1:d<<24>>24!=e<<24>>24)a=e;else{do{a=a+1|0;c=c+1|0;d=b[a>>0]|0;e=b[c>>0]|0}while(!(d<<24>>24==0?1:d<<24>>24!=e<<24>>24));a=e}return (d&255)-(a&255)|0}function Kh(a){a=a|0;var c=0,d=0,e=0;e=a;a:do if(!(e&3))d=4;else{c=e;while(1){if(!(b[a>>0]|0)){a=c;break a}a=a+1|0;c=a;if(!(c&3)){d=4;break}}}while(0);if((d|0)==4){while(1){c=f[a>>2]|0;if(!((c&-2139062144^-2139062144)&c+-16843009))a=a+4|0;else break}if((c&255)<<24>>24)do a=a+1|0;while((b[a>>0]|0)!=0)}return a-e|0}function Lh(a,b){a=a|0;b=b|0;var c=0;c=Kh(a)|0;return ((Mh(a,1,c,b)|0)!=(c|0))<<31>>31|0}function Mh(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,g=0;e=X(c,b)|0;c=(b|0)==0?0:c;if((f[d+76>>2]|0)>-1){g=(Qh(d)|0)==0;a=Th(a,e,d)|0;if(!g)Oh(d)}else a=Th(a,e,d)|0;if((a|0)!=(e|0))c=(a>>>0)/(b>>>0)|0;return c|0}function Nh(a){a=a|0;var b=0;if(f[a+68>>2]|0){b=f[a+116>>2]|0;a=a+112|0;if(b|0)f[b+112>>2]=f[a>>2];a=f[a>>2]|0;if(!a)a=(Ph()|0)+232|0;else a=a+116|0;f[a>>2]=b}return}function Oh(a){a=a|0;return}function Ph(){return Ih()|0}function Qh(a){a=a|0;return 0}function Rh(a,c){a=a|0;c=c|0;var d=0,e=0,g=0,i=0,j=0,k=0,l=0;l=u;u=u+16|0;j=l;k=c&255;b[j>>0]=k;e=a+16|0;g=f[e>>2]|0;if(!g)if(!(Sh(a)|0)){g=f[e>>2]|0;i=4}else d=-1;else i=4;do if((i|0)==4){i=a+20|0;e=f[i>>2]|0;if(e>>>0>>0?(d=c&255,(d|0)!=(b[a+75>>0]|0)):0){f[i>>2]=e+1;b[e>>0]=k;break}if((Ma[f[a+36>>2]&63](a,j,1)|0)==1)d=h[j>>0]|0;else d=-1}while(0);u=l;return d|0}function Sh(a){a=a|0;var c=0,d=0;c=a+74|0;d=b[c>>0]|0;b[c>>0]=d+255|d;c=f[a>>2]|0;if(!(c&8)){f[a+8>>2]=0;f[a+4>>2]=0;d=f[a+44>>2]|0;f[a+28>>2]=d;f[a+20>>2]=d;f[a+16>>2]=d+(f[a+48>>2]|0);a=0}else{f[a>>2]=c|32;a=-1}return a|0}function Th(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,g=0,h=0,i=0,j=0;e=d+16|0;g=f[e>>2]|0;if(!g)if(!(Sh(d)|0)){g=f[e>>2]|0;h=5}else e=0;else h=5;a:do if((h|0)==5){j=d+20|0;i=f[j>>2]|0;e=i;if((g-i|0)>>>0>>0){e=Ma[f[d+36>>2]&63](d,a,c)|0;break}b:do if((b[d+75>>0]|0)>-1){i=c;while(1){if(!i){h=0;g=a;break b}g=i+-1|0;if((b[a+g>>0]|0)==10)break;else i=g}e=Ma[f[d+36>>2]&63](d,a,i)|0;if(e>>>0>>0)break a;h=i;g=a+i|0;c=c-i|0;e=f[j>>2]|0}else{h=0;g=a}while(0);hj(e|0,g|0,c|0)|0;f[j>>2]=(f[j>>2]|0)+c;e=h+c|0}while(0);return e|0}function Uh(a,b){a=a|0;b=b|0;if(!b)b=0;else b=Vh(f[b>>2]|0,f[b+4>>2]|0,a)|0;return (b|0?b:a)|0}function Vh(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;o=(f[a>>2]|0)+1794895138|0;h=Wh(f[a+8>>2]|0,o)|0;e=Wh(f[a+12>>2]|0,o)|0;g=Wh(f[a+16>>2]|0,o)|0;a:do if((h>>>0>>2>>>0?(n=c-(h<<2)|0,e>>>0>>0&g>>>0>>0):0)?((g|e)&3|0)==0:0){n=e>>>2;m=g>>>2;l=0;while(1){j=h>>>1;k=l+j|0;i=k<<1;g=i+n|0;e=Wh(f[a+(g<<2)>>2]|0,o)|0;g=Wh(f[a+(g+1<<2)>>2]|0,o)|0;if(!(g>>>0>>0&e>>>0<(c-g|0)>>>0)){e=0;break a}if(b[a+(g+e)>>0]|0){e=0;break a}e=Jh(d,a+g|0)|0;if(!e)break;e=(e|0)<0;if((h|0)==1){e=0;break a}else{l=e?l:k;h=e?j:h-j|0}}e=i+m|0;g=Wh(f[a+(e<<2)>>2]|0,o)|0;e=Wh(f[a+(e+1<<2)>>2]|0,o)|0;if(e>>>0>>0&g>>>0<(c-e|0)>>>0)e=(b[a+(e+g)>>0]|0)==0?a+e|0:0;else e=0}else e=0;while(0);return e|0}function Wh(a,b){a=a|0;b=b|0;var c=0;c=gj(a|0)|0;return ((b|0)==0?a:c)|0}function Xh(a,c){a=a|0;c=c|0;var d=0,e=0,g=0,h=0,i=0;i=u;u=u+48|0;h=i+32|0;g=i+16|0;d=i;if(Yh(22305,b[c>>0]|0,4)|0){e=Zh(c)|0;f[d>>2]=a;f[d+4>>2]=e|32768;f[d+8>>2]=438;d=Dh(xa(5,d|0)|0)|0;if((d|0)>=0){if(e&524288|0){f[g>>2]=d;f[g+4>>2]=2;f[g+8>>2]=1;wa(221,g|0)|0}a=_h(d,c)|0;if(!a){f[h>>2]=d;za(6,h|0)|0;a=0}}else a=0}else{a=Eh()|0;f[a>>2]=22;a=0}u=i;return a|0}function Yh(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,g=0,h=0,i=0;h=c&255;e=(d|0)!=0;a:do if(e&(a&3|0)!=0){g=c&255;while(1){if((b[a>>0]|0)==g<<24>>24){i=6;break a}a=a+1|0;d=d+-1|0;e=(d|0)!=0;if(!(e&(a&3|0)!=0)){i=5;break}}}else i=5;while(0);if((i|0)==5)if(e)i=6;else d=0;b:do if((i|0)==6){g=c&255;if((b[a>>0]|0)!=g<<24>>24){e=X(h,16843009)|0;c:do if(d>>>0>3)while(1){h=f[a>>2]^e;if((h&-2139062144^-2139062144)&h+-16843009|0)break;a=a+4|0;d=d+-4|0;if(d>>>0<=3){i=11;break c}}else i=11;while(0);if((i|0)==11)if(!d){d=0;break}while(1){if((b[a>>0]|0)==g<<24>>24)break b;a=a+1|0;d=d+-1|0;if(!d){d=0;break}}}}while(0);return (d|0?a:0)|0}function Zh(a){a=a|0;var c=0,d=0,e=0;d=($h(a,43)|0)==0;c=b[a>>0]|0;d=d?c<<24>>24!=114&1:2;e=($h(a,120)|0)==0;d=e?d:d|128;a=($h(a,101)|0)==0;a=a?d:d|524288;a=c<<24>>24==114?a:a|64;a=c<<24>>24==119?a|512:a;return (c<<24>>24==97?a|1024:a)|0}function _h(a,c){a=a|0;c=c|0;var d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0;n=u;u=u+64|0;m=n+40|0;k=n+24|0;j=n+16|0;g=n;l=n+56|0;e=b[c>>0]|0;if(Yh(22305,e<<24>>24,4)|0){d=sh(1156)|0;if(!d)d=0;else{h=d;i=h+124|0;do{f[h>>2]=0;h=h+4|0}while((h|0)<(i|0));if(!($h(c,43)|0))f[d>>2]=e<<24>>24==114?8:4;if($h(c,101)|0){f[g>>2]=a;f[g+4>>2]=2;f[g+8>>2]=1;wa(221,g|0)|0;e=b[c>>0]|0}if(e<<24>>24==97){f[j>>2]=a;f[j+4>>2]=3;e=wa(221,j|0)|0;if(!(e&1024)){f[k>>2]=a;f[k+4>>2]=4;f[k+8>>2]=e|1024;wa(221,k|0)|0}c=f[d>>2]|128;f[d>>2]=c}else c=f[d>>2]|0;f[d+60>>2]=a;f[d+44>>2]=d+132;f[d+48>>2]=1024;e=d+75|0;b[e>>0]=-1;if((c&8|0)==0?(f[m>>2]=a,f[m+4>>2]=21523,f[m+8>>2]=l,(ya(54,m|0)|0)==0):0)b[e>>0]=10;f[d+32>>2]=62;f[d+36>>2]=61;f[d+40>>2]=2;f[d+12>>2]=1;if(!(f[6309]|0))f[d+76>>2]=-1;ai(d)|0}}else{d=Eh()|0;f[d>>2]=22;d=0}u=n;return d|0}function $h(a,c){a=a|0;c=c|0;a=di(a,c)|0;return ((b[a>>0]|0)==(c&255)<<24>>24?a:0)|0}function ai(a){a=a|0;var b=0,c=0;b=bi()|0;f[a+56>>2]=f[b>>2];c=f[b>>2]|0;if(c|0)f[c+52>>2]=a;f[b>>2]=a;ci();return a|0}function bi(){ra(25300);return 25308}function ci(){Aa(25300);return}function di(a,c){a=a|0;c=c|0;var d=0,e=0,g=0;e=c&255;a:do if(!e)a=a+(Kh(a)|0)|0;else{if(a&3){d=c&255;do{g=b[a>>0]|0;if(g<<24>>24==0?1:g<<24>>24==d<<24>>24)break a;a=a+1|0}while((a&3|0)!=0)}e=X(e,16843009)|0;d=f[a>>2]|0;b:do if(!((d&-2139062144^-2139062144)&d+-16843009))do{g=d^e;if((g&-2139062144^-2139062144)&g+-16843009|0)break b;a=a+4|0;d=f[a>>2]|0}while(!((d&-2139062144^-2139062144)&d+-16843009|0));while(0);d=c&255;while(1){g=b[a>>0]|0;if(g<<24>>24==0?1:g<<24>>24==d<<24>>24)break;else a=a+1|0}}while(0);return a|0}function ei(a){a=a|0;var b=0,c=0,d=0,e=0,g=0;if((f[a+76>>2]|0)>-1)e=Qh(a)|0;else e=0;Nh(a);g=(f[a>>2]&1|0)!=0;if(!g){d=bi()|0;c=f[a+52>>2]|0;b=a+56|0;if(c|0)f[c+56>>2]=f[b>>2];b=f[b>>2]|0;if(b|0)f[b+52>>2]=c;if((f[d>>2]|0)==(a|0))f[d>>2]=b;ci()}b=fi(a)|0;b=Ka[f[a+12>>2]&15](a)|0|b;c=f[a+92>>2]|0;if(c|0)th(c);if(g){if(e|0)Oh(a)}else th(a);return b|0}\nfunction fi(a){a=a|0;var b=0,c=0;do if(a){if((f[a+76>>2]|0)<=-1){b=gi(a)|0;break}c=(Qh(a)|0)==0;b=gi(a)|0;if(!c)Oh(a)}else{if(!(f[697]|0))b=0;else b=fi(f[697]|0)|0;a=bi()|0;a=f[a>>2]|0;if(a)do{if((f[a+76>>2]|0)>-1)c=Qh(a)|0;else c=0;if((f[a+20>>2]|0)>>>0>(f[a+28>>2]|0)>>>0)b=gi(a)|0|b;if(c|0)Oh(a);a=f[a+56>>2]|0}while((a|0)!=0);ci()}while(0);return b|0}function gi(a){a=a|0;var b=0,c=0,d=0,e=0,g=0,h=0;b=a+20|0;h=a+28|0;if((f[b>>2]|0)>>>0>(f[h>>2]|0)>>>0?(Ma[f[a+36>>2]&63](a,0,0)|0,(f[b>>2]|0)==0):0)a=-1;else{c=a+4|0;d=f[c>>2]|0;e=a+8|0;g=f[e>>2]|0;if(d>>>0>>0)Ma[f[a+40>>2]&63](a,d-g|0,1)|0;f[a+16>>2]=0;f[h>>2]=0;f[b>>2]=0;f[e>>2]=0;f[c>>2]=0;a=0}return a|0}function hi(a,b){a=+a;b=b|0;var c=0,d=0;if((b|0)<=1023){if((b|0)<-1022){a=a*2.2250738585072014e-308;d=(b|0)<-2044;c=b+2044|0;a=d?a*2.2250738585072014e-308:a;b=d?((c|0)>-1022?c:-1022):b+1022|0}}else{a=a*8988465674311579538646525.0e283;c=(b|0)>2046;d=b+-2046|0;a=c?a*8988465674311579538646525.0e283:a;b=c?((d|0)<1023?d:1023):b+-1023|0}c=fj(b+1023|0,0,52)|0;d=I;f[s>>2]=c;f[s+4>>2]=d;return +(a*+p[s>>3])}function ii(a){a=a|0;var c=0,d=0;c=a+74|0;d=b[c>>0]|0;b[c>>0]=d+255|d;c=a+20|0;d=a+28|0;if((f[c>>2]|0)>>>0>(f[d>>2]|0)>>>0)Ma[f[a+36>>2]&63](a,0,0)|0;f[a+16>>2]=0;f[d>>2]=0;f[c>>2]=0;c=f[a>>2]|0;if(!(c&4)){d=(f[a+44>>2]|0)+(f[a+48>>2]|0)|0;f[a+8>>2]=d;f[a+4>>2]=d;c=c<<27>>31}else{f[a>>2]=c|32;c=-1}return c|0}function ji(a,b,c){a=a|0;b=b|0;c=c|0;return Fi(a,b,c)|0}function ki(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0;d=u;u=u+16|0;e=d;f[e>>2]=c;c=li(a,b,e)|0;u=d;return c|0}function li(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;r=u;u=u+224|0;m=r+120|0;n=r+80|0;p=r;q=r+136|0;e=n;g=e+40|0;do{f[e>>2]=0;e=e+4|0}while((e|0)<(g|0));f[m>>2]=f[d>>2];if((mi(0,c,m,p,n)|0)<0)d=-1;else{if((f[a+76>>2]|0)>-1)o=Qh(a)|0;else o=0;d=f[a>>2]|0;l=d&32;if((b[a+74>>0]|0)<1)f[a>>2]=d&-33;e=a+48|0;if(!(f[e>>2]|0)){g=a+44|0;h=f[g>>2]|0;f[g>>2]=q;i=a+28|0;f[i>>2]=q;j=a+20|0;f[j>>2]=q;f[e>>2]=80;k=a+16|0;f[k>>2]=q+80;d=mi(a,c,m,p,n)|0;if(h){Ma[f[a+36>>2]&63](a,0,0)|0;d=(f[j>>2]|0)==0?-1:d;f[g>>2]=h;f[e>>2]=0;f[k>>2]=0;f[i>>2]=0;f[j>>2]=0}}else d=mi(a,c,m,p,n)|0;e=f[a>>2]|0;f[a>>2]=e|l;if(o|0)Oh(a);d=(e&32|0)==0?d:-1}u=r;return d|0}function mi(a,c,e,g,h){a=a|0;c=c|0;e=e|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,q=0,r=0,s=0,t=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0;G=u;u=u+64|0;C=G+16|0;D=G;A=G+24|0;E=G+8|0;F=G+20|0;f[C>>2]=c;x=(a|0)!=0;y=A+40|0;z=y;A=A+39|0;B=E+4|0;j=0;i=0;n=0;a:while(1){do if((i|0)>-1)if((j|0)>(2147483647-i|0)){i=Eh()|0;f[i>>2]=75;i=-1;break}else{i=j+i|0;break}while(0);j=b[c>>0]|0;if(!(j<<24>>24)){w=86;break}else k=c;b:while(1){switch(j<<24>>24){case 37:{j=k;w=9;break b}case 0:{j=k;break b}default:{}}v=k+1|0;f[C>>2]=v;j=b[v>>0]|0;k=v}c:do if((w|0)==9)while(1){w=0;if((b[k+1>>0]|0)!=37)break c;j=j+1|0;k=k+2|0;f[C>>2]=k;if((b[k>>0]|0)==37)w=9;else break}while(0);j=j-c|0;if(x)ni(a,c,j);if(j|0){c=k;continue}l=k+1|0;j=(b[l>>0]|0)+-48|0;if(j>>>0<10){v=(b[k+2>>0]|0)==36;s=v?j:-1;n=v?1:n;l=v?k+3|0:l}else s=-1;f[C>>2]=l;j=b[l>>0]|0;v=(j<<24>>24)+-32|0;if(v>>>0>31|(1<>24)+-32|k;l=l+1|0;f[C>>2]=l;j=b[l>>0]|0;v=(j<<24>>24)+-32|0}while(!(v>>>0>31|(1<>24==42){m=l+1|0;j=(b[m>>0]|0)+-48|0;if(j>>>0<10?(b[l+2>>0]|0)==36:0){f[h+(j<<2)>>2]=10;j=f[g+((b[m>>0]|0)+-48<<3)>>2]|0;n=1;l=l+3|0}else{if(n|0){i=-1;break}if(x){n=(f[e>>2]|0)+(4-1)&~(4-1);j=f[n>>2]|0;f[e>>2]=n+4;n=0;l=m}else{j=0;n=0;l=m}}f[C>>2]=l;t=(j|0)<0;j=t?0-j|0:j;t=t?k|8192:k}else{j=oi(C)|0;if((j|0)<0){i=-1;break}t=k;l=f[C>>2]|0}do if((b[l>>0]|0)==46){if((b[l+1>>0]|0)!=42){f[C>>2]=l+1;k=oi(C)|0;l=f[C>>2]|0;break}m=l+2|0;k=(b[m>>0]|0)+-48|0;if(k>>>0<10?(b[l+3>>0]|0)==36:0){f[h+(k<<2)>>2]=10;k=f[g+((b[m>>0]|0)+-48<<3)>>2]|0;l=l+4|0;f[C>>2]=l;break}if(n|0){i=-1;break a}if(x){v=(f[e>>2]|0)+(4-1)&~(4-1);k=f[v>>2]|0;f[e>>2]=v+4}else k=0;f[C>>2]=m;l=m}else k=-1;while(0);r=0;while(1){if(((b[l>>0]|0)+-65|0)>>>0>57){i=-1;break a}v=l+1|0;f[C>>2]=v;m=b[(b[l>>0]|0)+-65+(22309+(r*58|0))>>0]|0;o=m&255;if((o+-1|0)>>>0<8){r=o;l=v}else break}if(!(m<<24>>24)){i=-1;break}q=(s|0)>-1;do if(m<<24>>24==19)if(q){i=-1;break a}else w=48;else{if(q){f[h+(s<<2)>>2]=o;q=g+(s<<3)|0;s=f[q+4>>2]|0;w=D;f[w>>2]=f[q>>2];f[w+4>>2]=s;w=48;break}if(!x){i=0;break a}pi(D,o,e)}while(0);if((w|0)==48?(w=0,!x):0){j=0;c=v;continue}l=b[l>>0]|0;l=(r|0)!=0&(l&15|0)==3?l&-33:l;s=t&-65537;t=(t&8192|0)==0?t:s;d:do switch(l|0){case 110:switch((r&255)<<24>>24){case 0:{f[f[D>>2]>>2]=i;j=0;c=v;continue a}case 1:{f[f[D>>2]>>2]=i;j=0;c=v;continue a}case 2:{j=f[D>>2]|0;f[j>>2]=i;f[j+4>>2]=((i|0)<0)<<31>>31;j=0;c=v;continue a}case 3:{d[f[D>>2]>>1]=i;j=0;c=v;continue a}case 4:{b[f[D>>2]>>0]=i;j=0;c=v;continue a}case 6:{f[f[D>>2]>>2]=i;j=0;c=v;continue a}case 7:{j=f[D>>2]|0;f[j>>2]=i;f[j+4>>2]=((i|0)<0)<<31>>31;j=0;c=v;continue a}default:{j=0;c=v;continue a}}case 112:{l=120;k=k>>>0>8?k:8;c=t|8;w=60;break}case 88:case 120:{c=t;w=60;break}case 111:{l=D;c=f[l>>2]|0;l=f[l+4>>2]|0;q=ri(c,l,y)|0;r=z-q|0;m=0;o=22773;k=(t&8|0)==0|(k|0)>(r|0)?k:r+1|0;r=t;w=66;break}case 105:case 100:{l=D;c=f[l>>2]|0;l=f[l+4>>2]|0;if((l|0)<0){c=_i(0,0,c|0,l|0)|0;l=I;m=D;f[m>>2]=c;f[m+4>>2]=l;m=1;o=22773;w=65;break d}else{m=(t&2049|0)!=0&1;o=(t&2048|0)==0?((t&1|0)==0?22773:22775):22774;w=65;break d}}case 117:{l=D;m=0;o=22773;c=f[l>>2]|0;l=f[l+4>>2]|0;w=65;break}case 99:{b[A>>0]=f[D>>2];c=A;m=0;o=22773;q=y;l=1;k=s;break}case 109:{l=Eh()|0;l=ti(f[l>>2]|0)|0;w=70;break}case 115:{l=f[D>>2]|0;l=l|0?l:22783;w=70;break}case 67:{f[E>>2]=f[D>>2];f[B>>2]=0;f[D>>2]=E;q=-1;l=E;w=74;break}case 83:{c=f[D>>2]|0;if(!k){ui(a,32,j,0,t);c=0;w=83}else{q=k;l=c;w=74}break}case 65:case 71:case 70:case 69:case 97:case 103:case 102:case 101:{j=wi(a,+p[D>>3],j,k,t,l)|0;c=v;continue a}default:{m=0;o=22773;q=y;l=k;k=t}}while(0);e:do if((w|0)==60){t=D;s=f[t>>2]|0;t=f[t+4>>2]|0;q=qi(s,t,y,l&32)|0;o=(c&8|0)==0|(s|0)==0&(t|0)==0;m=o?0:2;o=o?22773:22773+(l>>4)|0;r=c;c=s;l=t;w=66}else if((w|0)==65){q=si(c,l,y)|0;r=t;w=66}else if((w|0)==70){w=0;t=Yh(l,0,k)|0;r=(t|0)==0;c=l;m=0;o=22773;q=r?l+k|0:t;l=r?k:t-l|0;k=s}else if((w|0)==74){w=0;o=l;c=0;k=0;while(1){m=f[o>>2]|0;if(!m)break;k=vi(F,m)|0;if((k|0)<0|k>>>0>(q-c|0)>>>0)break;c=k+c|0;if(q>>>0>c>>>0)o=o+4|0;else break}if((k|0)<0){i=-1;break a}ui(a,32,j,c,t);if(!c){c=0;w=83}else{m=0;while(1){k=f[l>>2]|0;if(!k){w=83;break e}k=vi(F,k)|0;m=k+m|0;if((m|0)>(c|0)){w=83;break e}ni(a,F,k);if(m>>>0>=c>>>0){w=83;break}else l=l+4|0}}}while(0);if((w|0)==66){w=0;l=(c|0)!=0|(l|0)!=0;t=(k|0)!=0|l;l=z-q+((l^1)&1)|0;c=t?q:y;q=y;l=t?((k|0)>(l|0)?k:l):k;k=(k|0)>-1?r&-65537:r}else if((w|0)==83){w=0;ui(a,32,j,c,t^8192);j=(j|0)>(c|0)?j:c;c=v;continue}s=q-c|0;r=(l|0)<(s|0)?s:l;t=r+m|0;j=(j|0)<(t|0)?t:j;ui(a,32,j,t,k);ni(a,o,m);ui(a,48,j,t,k^65536);ui(a,48,r,s,0);ni(a,c,s);ui(a,32,j,t,k^8192);c=v}f:do if((w|0)==86)if(!a)if(n){i=1;while(1){c=f[h+(i<<2)>>2]|0;if(!c)break;pi(g+(i<<3)|0,c,e);c=i+1|0;if((i|0)<9)i=c;else{i=c;break}}if((i|0)<10)while(1){if(f[h+(i<<2)>>2]|0){i=-1;break f}if((i|0)<9)i=i+1|0;else{i=1;break}}else i=1}else i=0;while(0);u=G;return i|0}function ni(a,b,c){a=a|0;b=b|0;c=c|0;if(!(f[a>>2]&32))Th(b,c,a)|0;return}function oi(a){a=a|0;var c=0,d=0,e=0;d=f[a>>2]|0;e=(b[d>>0]|0)+-48|0;if(e>>>0<10){c=0;do{c=e+(c*10|0)|0;d=d+1|0;f[a>>2]=d;e=(b[d>>0]|0)+-48|0}while(e>>>0<10)}else c=0;return c|0}function pi(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,g=0.0;a:do if(b>>>0<=20)do switch(b|0){case 9:{d=(f[c>>2]|0)+(4-1)&~(4-1);b=f[d>>2]|0;f[c>>2]=d+4;f[a>>2]=b;break a}case 10:{d=(f[c>>2]|0)+(4-1)&~(4-1);b=f[d>>2]|0;f[c>>2]=d+4;d=a;f[d>>2]=b;f[d+4>>2]=((b|0)<0)<<31>>31;break a}case 11:{d=(f[c>>2]|0)+(4-1)&~(4-1);b=f[d>>2]|0;f[c>>2]=d+4;d=a;f[d>>2]=b;f[d+4>>2]=0;break a}case 12:{d=(f[c>>2]|0)+(8-1)&~(8-1);b=d;e=f[b>>2]|0;b=f[b+4>>2]|0;f[c>>2]=d+8;d=a;f[d>>2]=e;f[d+4>>2]=b;break a}case 13:{e=(f[c>>2]|0)+(4-1)&~(4-1);d=f[e>>2]|0;f[c>>2]=e+4;d=(d&65535)<<16>>16;e=a;f[e>>2]=d;f[e+4>>2]=((d|0)<0)<<31>>31;break a}case 14:{e=(f[c>>2]|0)+(4-1)&~(4-1);d=f[e>>2]|0;f[c>>2]=e+4;e=a;f[e>>2]=d&65535;f[e+4>>2]=0;break a}case 15:{e=(f[c>>2]|0)+(4-1)&~(4-1);d=f[e>>2]|0;f[c>>2]=e+4;d=(d&255)<<24>>24;e=a;f[e>>2]=d;f[e+4>>2]=((d|0)<0)<<31>>31;break a}case 16:{e=(f[c>>2]|0)+(4-1)&~(4-1);d=f[e>>2]|0;f[c>>2]=e+4;e=a;f[e>>2]=d&255;f[e+4>>2]=0;break a}case 17:{e=(f[c>>2]|0)+(8-1)&~(8-1);g=+p[e>>3];f[c>>2]=e+8;p[a>>3]=g;break a}case 18:{e=(f[c>>2]|0)+(8-1)&~(8-1);g=+p[e>>3];f[c>>2]=e+8;p[a>>3]=g;break a}default:break a}while(0);while(0);return}function qi(a,c,d,e){a=a|0;c=c|0;d=d|0;e=e|0;if(!((a|0)==0&(c|0)==0))do{d=d+-1|0;b[d>>0]=h[22825+(a&15)>>0]|0|e;a=ej(a|0,c|0,4)|0;c=I}while(!((a|0)==0&(c|0)==0));return d|0}function ri(a,c,d){a=a|0;c=c|0;d=d|0;if(!((a|0)==0&(c|0)==0))do{d=d+-1|0;b[d>>0]=a&7|48;a=ej(a|0,c|0,3)|0;c=I}while(!((a|0)==0&(c|0)==0));return d|0}function si(a,c,d){a=a|0;c=c|0;d=d|0;var e=0;if(c>>>0>0|(c|0)==0&a>>>0>4294967295){while(1){e=cj(a|0,c|0,10,0)|0;d=d+-1|0;b[d>>0]=e&255|48;e=a;a=bj(a|0,c|0,10,0)|0;if(!(c>>>0>9|(c|0)==9&e>>>0>4294967295))break;else c=I}c=a}else c=a;if(c)while(1){d=d+-1|0;b[d>>0]=(c>>>0)%10|0|48;if(c>>>0<10)break;else c=(c>>>0)/10|0}return d|0}function ti(a){a=a|0;var b=0;b=(Ci()|0)+188|0;return Di(a,f[b>>2]|0)|0}function ui(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0;g=u;u=u+256|0;f=g;if((c|0)>(d|0)&(e&73728|0)==0){e=c-d|0;ij(f|0,b|0,(e>>>0<256?e:256)|0)|0;if(e>>>0>255){b=c-d|0;do{ni(a,f,256);e=e+-256|0}while(e>>>0>255);e=b&255}ni(a,f,e)}u=g;return}function vi(a,b){a=a|0;b=b|0;if(!a)a=0;else a=Ai(a,b,0)|0;return a|0}function wi(a,c,d,e,g,i){a=a|0;c=+c;d=d|0;e=e|0;g=g|0;i=i|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0.0,r=0,s=0,t=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0;G=u;u=u+560|0;l=G+8|0;t=G;F=G+524|0;E=F;m=G+512|0;f[t>>2]=0;D=m+12|0;xi(c)|0;if((I|0)<0){c=-c;B=1;A=22790}else{B=(g&2049|0)!=0&1;A=(g&2048|0)==0?((g&1|0)==0?22791:22796):22793}xi(c)|0;do if(0==0&(I&2146435072|0)==2146435072){F=(i&32|0)!=0;j=B+3|0;ui(a,32,d,j,g&-65537);ni(a,A,B);ni(a,c!=c|0.0!=0.0?(F?22817:22821):F?22809:22813,3);ui(a,32,d,j,g^8192)}else{q=+yi(c,t)*2.0;j=q!=0.0;if(j)f[t>>2]=(f[t>>2]|0)+-1;w=i|32;if((w|0)==97){o=i&32;r=(o|0)==0?A:A+9|0;p=B|2;j=12-e|0;do if(!(e>>>0>11|(j|0)==0)){c=8.0;do{j=j+-1|0;c=c*16.0}while((j|0)!=0);if((b[r>>0]|0)==45){c=-(c+(-q-c));break}else{c=q+c-c;break}}else c=q;while(0);k=f[t>>2]|0;j=(k|0)<0?0-k|0:k;j=si(j,((j|0)<0)<<31>>31,D)|0;if((j|0)==(D|0)){j=m+11|0;b[j>>0]=48}b[j+-1>>0]=(k>>31&2)+43;n=j+-2|0;b[n>>0]=i+15;l=(e|0)<1;m=(g&8|0)==0;j=F;do{C=~~c;k=j+1|0;b[j>>0]=o|h[22825+C>>0];c=(c-+(C|0))*16.0;if((k-E|0)==1?!(m&(l&c==0.0)):0){b[k>>0]=46;j=j+2|0}else j=k}while(c!=0.0);if((e|0)!=0?(-2-E+j|0)<(e|0):0){k=j-E|0;j=e+2|0}else{j=j-E|0;k=j}D=D-n|0;E=D+p+j|0;ui(a,32,d,E,g);ni(a,r,p);ui(a,48,d,E,g^65536);ni(a,F,k);ui(a,48,j-k|0,0,0);ni(a,n,D);ui(a,32,d,E,g^8192);j=E;break}k=(e|0)<0?6:e;if(j){j=(f[t>>2]|0)+-28|0;f[t>>2]=j;c=q*268435456.0}else{c=q;j=f[t>>2]|0}C=(j|0)<0?l:l+288|0;l=C;do{y=~~c>>>0;f[l>>2]=y;l=l+4|0;c=(c-+(y>>>0))*1.0e9}while(c!=0.0);if((j|0)>0){m=C;o=l;while(1){n=(j|0)<29?j:29;j=o+-4|0;if(j>>>0>=m>>>0){l=0;do{x=fj(f[j>>2]|0,0,n|0)|0;x=Zi(x|0,I|0,l|0,0)|0;y=I;v=cj(x|0,y|0,1e9,0)|0;f[j>>2]=v;l=bj(x|0,y|0,1e9,0)|0;j=j+-4|0}while(j>>>0>=m>>>0);if(l){m=m+-4|0;f[m>>2]=l}}l=o;while(1){if(l>>>0<=m>>>0)break;j=l+-4|0;if(!(f[j>>2]|0))l=j;else break}j=(f[t>>2]|0)-n|0;f[t>>2]=j;if((j|0)>0)o=l;else break}}else m=C;if((j|0)<0){e=((k+25|0)/9|0)+1|0;s=(w|0)==102;do{r=0-j|0;r=(r|0)<9?r:9;if(m>>>0>>0){n=(1<>>r;p=0;j=m;do{y=f[j>>2]|0;f[j>>2]=(y>>>r)+p;p=X(y&n,o)|0;j=j+4|0}while(j>>>0>>0);j=(f[m>>2]|0)==0?m+4|0:m;if(!p){m=j;j=l}else{f[l>>2]=p;m=j;j=l+4|0}}else{m=(f[m>>2]|0)==0?m+4|0:m;j=l}l=s?C:m;l=(j-l>>2|0)>(e|0)?l+(e<<2)|0:j;j=(f[t>>2]|0)+r|0;f[t>>2]=j}while((j|0)<0);j=m;e=l}else{j=m;e=l}y=C;if(j>>>0>>0){l=(y-j>>2)*9|0;n=f[j>>2]|0;if(n>>>0>=10){m=10;do{m=m*10|0;l=l+1|0}while(n>>>0>=m>>>0)}}else l=0;s=(w|0)==103;v=(k|0)!=0;m=k-((w|0)!=102?l:0)+((v&s)<<31>>31)|0;if((m|0)<(((e-y>>2)*9|0)+-9|0)){m=m+9216|0;r=C+4+(((m|0)/9|0)+-1024<<2)|0;m=(m|0)%9|0;if((m|0)<8){n=10;while(1){n=n*10|0;if((m|0)<7)m=m+1|0;else break}}else n=10;o=f[r>>2]|0;p=(o>>>0)%(n>>>0)|0;m=(r+4|0)==(e|0);if(!(m&(p|0)==0)){q=(((o>>>0)/(n>>>0)|0)&1|0)==0?9007199254740992.0:9007199254740994.0;x=(n|0)/2|0;c=p>>>0>>0?.5:m&(p|0)==(x|0)?1.0:1.5;if(B){x=(b[A>>0]|0)==45;c=x?-c:c;q=x?-q:q}m=o-p|0;f[r>>2]=m;if(q+c!=q){x=m+n|0;f[r>>2]=x;if(x>>>0>999999999){l=r;while(1){m=l+-4|0;f[l>>2]=0;if(m>>>0>>0){j=j+-4|0;f[j>>2]=0}x=(f[m>>2]|0)+1|0;f[m>>2]=x;if(x>>>0>999999999)l=m;else break}}else m=r;l=(y-j>>2)*9|0;o=f[j>>2]|0;if(o>>>0>=10){n=10;do{n=n*10|0;l=l+1|0}while(o>>>0>=n>>>0)}}else m=r}else m=r;m=m+4|0;m=e>>>0>m>>>0?m:e;x=j}else{m=e;x=j}w=m;while(1){if(w>>>0<=x>>>0){t=0;break}j=w+-4|0;if(!(f[j>>2]|0))w=j;else{t=1;break}}e=0-l|0;do if(s){j=k+((v^1)&1)|0;if((j|0)>(l|0)&(l|0)>-5){n=i+-1|0;k=j+-1-l|0}else{n=i+-2|0;k=j+-1|0}j=g&8;if(!j){if(t?(z=f[w+-4>>2]|0,(z|0)!=0):0)if(!((z>>>0)%10|0)){m=0;j=10;do{j=j*10|0;m=m+1|0}while(!((z>>>0)%(j>>>0)|0|0))}else m=0;else m=9;j=((w-y>>2)*9|0)+-9|0;if((n|32|0)==102){r=j-m|0;r=(r|0)>0?r:0;k=(k|0)<(r|0)?k:r;r=0;break}else{r=j+l-m|0;r=(r|0)>0?r:0;k=(k|0)<(r|0)?k:r;r=0;break}}else r=j}else{n=i;r=g&8}while(0);s=k|r;o=(s|0)!=0&1;p=(n|32|0)==102;if(p){v=0;j=(l|0)>0?l:0}else{j=(l|0)<0?e:l;j=si(j,((j|0)<0)<<31>>31,D)|0;m=D;if((m-j|0)<2)do{j=j+-1|0;b[j>>0]=48}while((m-j|0)<2);b[j+-1>>0]=(l>>31&2)+43;j=j+-2|0;b[j>>0]=n;v=j;j=m-j|0}j=B+1+k+o+j|0;ui(a,32,d,j,g);ni(a,A,B);ui(a,48,d,j,g^65536);if(p){n=x>>>0>C>>>0?C:x;r=F+9|0;o=r;p=F+8|0;m=n;do{l=si(f[m>>2]|0,0,r)|0;if((m|0)==(n|0)){if((l|0)==(r|0)){b[p>>0]=48;l=p}}else if(l>>>0>F>>>0){ij(F|0,48,l-E|0)|0;do l=l+-1|0;while(l>>>0>F>>>0)}ni(a,l,o-l|0);m=m+4|0}while(m>>>0<=C>>>0);if(s|0)ni(a,22841,1);if(m>>>0>>0&(k|0)>0)while(1){l=si(f[m>>2]|0,0,r)|0;if(l>>>0>F>>>0){ij(F|0,48,l-E|0)|0;do l=l+-1|0;while(l>>>0>F>>>0)}ni(a,l,(k|0)<9?k:9);m=m+4|0;l=k+-9|0;if(!(m>>>0>>0&(k|0)>9)){k=l;break}else k=l}ui(a,48,k+9|0,9,0)}else{s=t?w:x+4|0;if((k|0)>-1){t=F+9|0;r=(r|0)==0;e=t;o=0-E|0;p=F+8|0;n=x;do{l=si(f[n>>2]|0,0,t)|0;if((l|0)==(t|0)){b[p>>0]=48;l=p}do if((n|0)==(x|0)){m=l+1|0;ni(a,l,1);if(r&(k|0)<1){l=m;break}ni(a,22841,1);l=m}else{if(l>>>0<=F>>>0)break;ij(F|0,48,l+o|0)|0;do l=l+-1|0;while(l>>>0>F>>>0)}while(0);E=e-l|0;ni(a,l,(k|0)>(E|0)?E:k);k=k-E|0;n=n+4|0}while(n>>>0>>0&(k|0)>-1)}ui(a,48,k+18|0,18,0);ni(a,v,D-v|0)}ui(a,32,d,j,g^8192)}while(0);u=G;return ((j|0)<(d|0)?d:j)|0}function xi(a){a=+a;var b=0;p[s>>3]=a;b=f[s>>2]|0;I=f[s+4>>2]|0;return b|0}function yi(a,b){a=+a;b=b|0;return +(+zi(a,b))}function zi(a,b){a=+a;b=b|0;var c=0,d=0,e=0;p[s>>3]=a;c=f[s>>2]|0;d=f[s+4>>2]|0;e=ej(c|0,d|0,52)|0;switch(e&2047){case 0:{if(a!=0.0){a=+zi(a*18446744073709551616.0,b);c=(f[b>>2]|0)+-64|0}else c=0;f[b>>2]=c;break}case 2047:break;default:{f[b>>2]=(e&2047)+-1022;f[s>>2]=c;f[s+4>>2]=d&-2146435073|1071644672;a=+p[s>>3]}}return +a}function Ai(a,c,d){a=a|0;c=c|0;d=d|0;do if(a){if(c>>>0<128){b[a>>0]=c;a=1;break}d=(Bi()|0)+188|0;if(!(f[f[d>>2]>>2]|0))if((c&-128|0)==57216){b[a>>0]=c;a=1;break}else{a=Eh()|0;f[a>>2]=84;a=-1;break}if(c>>>0<2048){b[a>>0]=c>>>6|192;b[a+1>>0]=c&63|128;a=2;break}if(c>>>0<55296|(c&-8192|0)==57344){b[a>>0]=c>>>12|224;b[a+1>>0]=c>>>6&63|128;b[a+2>>0]=c&63|128;a=3;break}if((c+-65536|0)>>>0<1048576){b[a>>0]=c>>>18|240;b[a+1>>0]=c>>>12&63|128;b[a+2>>0]=c>>>6&63|128;b[a+3>>0]=c&63|128;a=4;break}else{a=Eh()|0;f[a>>2]=84;a=-1;break}}else a=1;while(0);return a|0}function Bi(){return Ih()|0}function Ci(){return Ih()|0}function Di(a,c){a=a|0;c=c|0;var d=0,e=0;e=0;while(1){if((h[22843+e>>0]|0)==(a|0)){a=2;break}d=e+1|0;if((d|0)==87){d=22931;e=87;a=5;break}else e=d}if((a|0)==2)if(!e)d=22931;else{d=22931;a=5}if((a|0)==5)while(1){do{a=d;d=d+1|0}while((b[a>>0]|0)!=0);e=e+-1|0;if(!e)break;else a=5}return Ei(d,f[c+20>>2]|0)|0}function Ei(a,b){a=a|0;b=b|0;return Uh(a,b)|0}function Fi(a,b,c){a=a|0;b=b|0;c=c|0;var d=0;if((f[a+76>>2]|0)>-1){d=(Qh(a)|0)==0;b=Gi(a,b,c)|0;if(!d)Oh(a)}else b=Gi(a,b,c)|0;return b|0}function Gi(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0;if((c|0)==1)b=b-(f[a+8>>2]|0)+(f[a+4>>2]|0)|0;d=a+20|0;e=a+28|0;if((f[d>>2]|0)>>>0>(f[e>>2]|0)>>>0?(Ma[f[a+36>>2]&63](a,0,0)|0,(f[d>>2]|0)==0):0)b=-1;else{f[a+16>>2]=0;f[e>>2]=0;f[d>>2]=0;if((Ma[f[a+40>>2]&63](a,b,c)|0)<0)b=-1;else{f[a+8>>2]=0;f[a+4>>2]=0;f[a>>2]=f[a>>2]&-17;b=0}}return b|0}function Hi(a,c,d,e){a=a|0;c=c|0;d=d|0;e=e|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0;m=u;u=u+128|0;g=m+124|0;l=m;h=l;i=3036;j=h+124|0;do{f[h>>2]=f[i>>2];h=h+4|0;i=i+4|0}while((h|0)<(j|0));if((c+-1|0)>>>0>2147483646)if(!c){a=g;c=1;k=4}else{c=Eh()|0;f[c>>2]=75;c=-1}else k=4;if((k|0)==4){k=-2-a|0;k=c>>>0>k>>>0?k:c;f[l+48>>2]=k;g=l+20|0;f[g>>2]=a;f[l+44>>2]=a;c=a+k|0;a=l+16|0;f[a>>2]=c;f[l+28>>2]=c;c=li(l,d,e)|0;if(k){l=f[g>>2]|0;b[l+(((l|0)==(f[a>>2]|0))<<31>>31)>>0]=0}}u=m;return c|0}function Ii(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0;d=a+20|0;e=f[d>>2]|0;a=(f[a+16>>2]|0)-e|0;a=a>>>0>c>>>0?c:a;hj(e|0,b|0,a|0)|0;f[d>>2]=(f[d>>2]|0)+a;return c|0}function Ji(a,b){a=a|0;b=b|0;Ki(a,b)|0;return a|0}function Ki(a,c){a=a|0;c=c|0;var d=0,e=0;d=c;a:do if(!((d^a)&3)){if(d&3)do{d=b[c>>0]|0;b[a>>0]=d;if(!(d<<24>>24))break a;c=c+1|0;a=a+1|0}while((c&3|0)!=0);d=f[c>>2]|0;if(!((d&-2139062144^-2139062144)&d+-16843009)){e=a;while(1){c=c+4|0;a=e+4|0;f[e>>2]=d;d=f[c>>2]|0;if((d&-2139062144^-2139062144)&d+-16843009|0)break;else e=a}}e=8}else e=8;while(0);if((e|0)==8){e=b[c>>0]|0;b[a>>0]=e;if(e<<24>>24)do{c=c+1|0;a=a+1|0;e=b[c>>0]|0;b[a>>0]=e}while(e<<24>>24!=0)}return a|0}function Li(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0;d=u;u=u+16|0;e=d;f[e>>2]=c;c=Mi(a,b,e)|0;u=d;return c|0}function Mi(a,b,c){a=a|0;b=b|0;c=c|0;return Hi(a,2147483647,b,c)|0}function Ni(a,b){a=+a;b=b|0;return +(+hi(a,b))}function Oi(a){a=+a;return ~~+kj(+a)|0}function Pi(a,b){a=a|0;b=b|0;var c=0,d=0;c=u;u=u+16|0;d=c;f[d>>2]=b;b=li(f[665]|0,a,d)|0;u=c;return b|0}function Qi(a,c,d,e){a=a|0;c=c|0;d=d|0;e=e|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0;k=X(d,c)|0;d=(c|0)==0?0:d;if((f[e+76>>2]|0)>-1)j=Qh(e)|0;else j=0;g=e+74|0;h=b[g>>0]|0;b[g>>0]=h+255|h;g=e+4|0;h=f[g>>2]|0;m=(f[e+8>>2]|0)-h|0;i=m>>>0>>0?m:k;if((m|0)>0){hj(a|0,h|0,i|0)|0;f[g>>2]=h+i;g=k-i|0;a=a+i|0}else g=k;a:do if(!g)l=13;else{i=e+32|0;while(1){if(ii(e)|0)break;h=Ma[f[i>>2]&63](e,a,g)|0;if((h+1|0)>>>0<2)break;g=g-h|0;if(!g){l=13;break a}else a=a+h|0}if(j|0)Oh(e);d=((k-g|0)>>>0)/(c>>>0)|0}while(0);if((l|0)==13)if(j)Oh(e);return d|0}function Ri(a,c){a=a|0;c=c|0;var d=0,e=0,g=0,h=0,i=0,j=0,k=0;if((f[c+76>>2]|0)>=0?(Qh(c)|0)!=0:0){e=a&255;d=a&255;if((d|0)!=(b[c+75>>0]|0)?(i=c+20|0,j=f[i>>2]|0,j>>>0<(f[c+16>>2]|0)>>>0):0){f[i>>2]=j+1;b[j>>0]=e}else d=Rh(c,a)|0;Oh(c)}else k=3;do if((k|0)==3){e=a&255;d=a&255;if((d|0)!=(b[c+75>>0]|0)?(g=c+20|0,h=f[g>>2]|0,h>>>0<(f[c+16>>2]|0)>>>0):0){f[g>>2]=h+1;b[h>>0]=e;break}d=Rh(c,a)|0}while(0);return d|0}function Si(a){a=a|0;var c=0,d=0,e=0,g=0;e=f[665]|0;if((f[e+76>>2]|0)>-1)g=Qh(e)|0;else g=0;do if((Lh(a,e)|0)<0)a=-1;else{if((b[e+75>>0]|0)!=10?(c=e+20|0,d=f[c>>2]|0,d>>>0<(f[e+16>>2]|0)>>>0):0){f[c>>2]=d+1;b[d>>0]=10;a=0;break}a=(Rh(e,10)|0)>>31}while(0);if(g|0)Oh(e);return a|0}function Ti(a){a=a|0;var b=0;if(!(f[a>>2]&128))b=1;else b=(f[a+20>>2]|0)>>>0>(f[a+28>>2]|0)>>>0?2:1;b=Ma[f[a+40>>2]&63](a,0,b)|0;if((b|0)>=0)b=b-(f[a+8>>2]|0)+(f[a+4>>2]|0)+(f[a+20>>2]|0)-(f[a+28>>2]|0)|0;return b|0}function Ui(a){a=a|0;var b=0,c=0;if((f[a+76>>2]|0)>-1){c=(Qh(a)|0)==0;b=Ti(a)|0;if(!c)Oh(a)}else b=Ti(a)|0;return b|0}function Vi(a){a=a|0;return Ui(a)|0}function Wi(){}function Xi(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0;f=a&65535;e=b&65535;c=X(e,f)|0;d=a>>>16;a=(c>>>16)+(X(e,d)|0)|0;e=b>>>16;b=X(e,f)|0;return (I=(a>>>16)+(X(e,d)|0)+(((a&65535)+b|0)>>>16)|0,a+b<<16|c&65535|0)|0}function Yi(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0;e=a;f=c;c=Xi(e,f)|0;a=I;return (I=(X(b,f)|0)+(X(d,e)|0)+a|a&0,c|0|0)|0}function Zi(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;c=a+c>>>0;return (I=b+d+(c>>>0>>0|0)>>>0,c|0)|0}function _i(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;d=b-d-(c>>>0>a>>>0|0)>>>0;return (I=d,a-c>>>0|0)|0}function $i(a){a=a|0;var c=0;c=b[w+(a&255)>>0]|0;if((c|0)<8)return c|0;c=b[w+(a>>8&255)>>0]|0;if((c|0)<8)return c+8|0;c=b[w+(a>>16&255)>>0]|0;if((c|0)<8)return c+16|0;return (b[w+(a>>>24)>>0]|0)+24|0}function aj(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;l=a;j=b;k=j;h=c;n=d;i=n;if(!k){g=(e|0)!=0;if(!i){if(g){f[e>>2]=(l>>>0)%(h>>>0);f[e+4>>2]=0}n=0;e=(l>>>0)/(h>>>0)>>>0;return (I=n,e)|0}else{if(!g){n=0;e=0;return (I=n,e)|0}f[e>>2]=a|0;f[e+4>>2]=b&0;n=0;e=0;return (I=n,e)|0}}g=(i|0)==0;do if(h){if(!g){g=(_(i|0)|0)-(_(k|0)|0)|0;if(g>>>0<=31){m=g+1|0;i=31-g|0;b=g-31>>31;h=m;a=l>>>(m>>>0)&b|k<>>(m>>>0)&b;g=0;i=l<>2]=a|0;f[e+4>>2]=j|b&0;n=0;e=0;return (I=n,e)|0}g=h-1|0;if(g&h|0){i=(_(h|0)|0)+33-(_(k|0)|0)|0;p=64-i|0;m=32-i|0;j=m>>31;o=i-32|0;b=o>>31;h=i;a=m-1>>31&k>>>(o>>>0)|(k<>>(i>>>0))&b;b=b&k>>>(i>>>0);g=l<>>(o>>>0))&j|l<>31;break}if(e|0){f[e>>2]=g&l;f[e+4>>2]=0}if((h|0)==1){o=j|b&0;p=a|0|0;return (I=o,p)|0}else{p=$i(h|0)|0;o=k>>>(p>>>0)|0;p=k<<32-p|l>>>(p>>>0)|0;return (I=o,p)|0}}else{if(g){if(e|0){f[e>>2]=(k>>>0)%(h>>>0);f[e+4>>2]=0}o=0;p=(k>>>0)/(h>>>0)>>>0;return (I=o,p)|0}if(!l){if(e|0){f[e>>2]=0;f[e+4>>2]=(k>>>0)%(i>>>0)}o=0;p=(k>>>0)/(i>>>0)>>>0;return (I=o,p)|0}g=i-1|0;if(!(g&i)){if(e|0){f[e>>2]=a|0;f[e+4>>2]=g&k|b&0}o=0;p=k>>>(($i(i|0)|0)>>>0);return (I=o,p)|0}g=(_(i|0)|0)-(_(k|0)|0)|0;if(g>>>0<=30){b=g+1|0;i=31-g|0;h=b;a=k<>>(b>>>0);b=k>>>(b>>>0);g=0;i=l<>2]=a|0;f[e+4>>2]=j|b&0;o=0;p=0;return (I=o,p)|0}while(0);if(!h){k=i;j=0;i=0}else{m=c|0|0;l=n|d&0;k=Zi(m|0,l|0,-1,-1)|0;c=I;j=i;i=0;do{d=j;j=g>>>31|j<<1;g=i|g<<1;d=a<<1|d>>>31|0;n=a>>>31|b<<1|0;_i(k|0,c|0,d|0,n|0)|0;p=I;o=p>>31|((p|0)<0?-1:0)<<1;i=o&1;a=_i(d|0,n|0,o&m|0,(((p|0)<0?-1:0)>>31|((p|0)<0?-1:0)<<1)&l|0)|0;b=I;h=h-1|0}while((h|0)!=0);k=j;j=0}h=0;if(e|0){f[e>>2]=a;f[e+4>>2]=b}o=(g|0)>>>31|(k|h)<<1|(h<<1|g>>>31)&0|j;p=(g<<1|0>>>31)&-2|i;return (I=o,p)|0}function bj(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return aj(a,b,c,d,0)|0}function cj(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,g=0;g=u;u=u+16|0;e=g|0;aj(a,b,c,d,e)|0;u=g;return (I=f[e+4>>2]|0,f[e>>2]|0)|0}function dj(a,b,c){a=a|0;b=b|0;c=c|0;if((c|0)<32){I=b>>c;return a>>>c|(b&(1<>c-32|0}function ej(a,b,c){a=a|0;b=b|0;c=c|0;if((c|0)<32){I=b>>>c;return a>>>c|(b&(1<>>c-32|0}function fj(a,b,c){a=a|0;b=b|0;c=c|0;if((c|0)<32){I=b<>>32-c;return a<>8&255)<<16|(a>>16&255)<<8|a>>>24|0}function hj(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,g=0,h=0;if((d|0)>=8192)return Ba(a|0,c|0,d|0)|0;h=a|0;g=a+d|0;if((a&3)==(c&3)){while(a&3){if(!d)return h|0;b[a>>0]=b[c>>0]|0;a=a+1|0;c=c+1|0;d=d-1|0}d=g&-4|0;e=d-64|0;while((a|0)<=(e|0)){f[a>>2]=f[c>>2];f[a+4>>2]=f[c+4>>2];f[a+8>>2]=f[c+8>>2];f[a+12>>2]=f[c+12>>2];f[a+16>>2]=f[c+16>>2];f[a+20>>2]=f[c+20>>2];f[a+24>>2]=f[c+24>>2];f[a+28>>2]=f[c+28>>2];f[a+32>>2]=f[c+32>>2];f[a+36>>2]=f[c+36>>2];f[a+40>>2]=f[c+40>>2];f[a+44>>2]=f[c+44>>2];f[a+48>>2]=f[c+48>>2];f[a+52>>2]=f[c+52>>2];f[a+56>>2]=f[c+56>>2];f[a+60>>2]=f[c+60>>2];a=a+64|0;c=c+64|0}while((a|0)<(d|0)){f[a>>2]=f[c>>2];a=a+4|0;c=c+4|0}}else{d=g-4|0;while((a|0)<(d|0)){b[a>>0]=b[c>>0]|0;b[a+1>>0]=b[c+1>>0]|0;b[a+2>>0]=b[c+2>>0]|0;b[a+3>>0]=b[c+3>>0]|0;a=a+4|0;c=c+4|0}}while((a|0)<(g|0)){b[a>>0]=b[c>>0]|0;a=a+1|0;c=c+1|0}return h|0}function ij(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,g=0,h=0,i=0;h=a+d|0;c=c&255;if((d|0)>=67){while(a&3){b[a>>0]=c;a=a+1|0}e=h&-4|0;g=e-64|0;i=c|c<<8|c<<16|c<<24;while((a|0)<=(g|0)){f[a>>2]=i;f[a+4>>2]=i;f[a+8>>2]=i;f[a+12>>2]=i;f[a+16>>2]=i;f[a+20>>2]=i;f[a+24>>2]=i;f[a+28>>2]=i;f[a+32>>2]=i;f[a+36>>2]=i;f[a+40>>2]=i;f[a+44>>2]=i;f[a+48>>2]=i;f[a+52>>2]=i;f[a+56>>2]=i;f[a+60>>2]=i;a=a+64|0}while((a|0)<(e|0)){f[a>>2]=i;a=a+4|0}}while((a|0)<(h|0)){b[a>>0]=c;a=a+1|0}return h-d|0}function jj(a){a=+a;return a>=0.0?+J(a+.5):+W(a-.5)}function kj(a){a=+a;return a-+J(a)!=.5?+jj(a):+jj(a/2.0)*2.0}function lj(a){a=a|0;var b=0,c=0;c=a+15&-16|0;b=f[r>>2]|0;a=b+c|0;if((c|0)>0&(a|0)<(b|0)|(a|0)<0){da()|0;sa(12);return -1}f[r>>2]=a;if((a|0)>(ca()|0)?(ba()|0)==0:0){f[r>>2]=b;sa(12);return -1}return b|0}function mj(a,b){a=a|0;b=b|0;return +Ja[a&3](b|0)}function nj(a,b){a=a|0;b=b|0;return Ka[a&15](b|0)|0}function oj(a,b,c){a=a|0;b=b|0;c=c|0;return La[a&7](b|0,c|0)|0}function pj(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return Ma[a&63](b|0,c|0,d|0)|0}function qj(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return Na[a&63](b|0,c|0,d|0,e|0)|0}function rj(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;return Oa[a&3](b|0,c|0,d|0,e|0,f|0)|0}function sj(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;return Pa[a&7](b|0,c|0,d|0,e|0,f|0,g|0)|0}function tj(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;return Qa[a&3](b|0,c|0,d|0,e|0,f|0,g|0,h|0)|0}function uj(a,b,c,d,e,f,g,h,i,j,k,l){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;l=l|0;return Ra[a&3](b|0,c|0,d|0,e|0,f|0,g|0,h|0,i|0,j|0,k|0,l|0)|0}function vj(a,b){a=a|0;b=b|0;Sa[a&7](b|0)}function wj(a,b,c){a=a|0;b=b|0;c=c|0;Ta[a&7](b|0,c|0)}function xj(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;Ua[a&15](b|0,c|0,d|0)}function yj(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;Va[a&3](b|0,c|0,d|0,e|0)}function zj(a){a=a|0;$(0);return 0.0}function Aj(a){a=a|0;$(1);return 0}function Bj(a,b){a=a|0;b=b|0;$(2);return 0}function Cj(a,b,c){a=a|0;b=b|0;c=c|0;$(3);return 0}function Dj(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;$(4);return 0}function Ej(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;$(5);return 0}function Fj(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;$(6);return 0}function Gj(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;$(7);return 0}function Hj(a,b,c,d,e,f,g,h,i,j,k){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;$(8);return 0}function Ij(a){a=a|0;$(9)}function Jj(a,b){a=a|0;b=b|0;$(10)}function Kj(a,b,c){a=a|0;b=b|0;c=c|0;$(11)}function Lj(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;$(12)}\n\n// EMSCRIPTEN_END_FUNCS\nvar Ja=[zj,xe,ye,zj];var Ka=[Aj,Ah,Od,Pd,qf,pf,ei,Gg,Cg,Aj,Aj,Aj,Aj,Aj,Aj,Aj];var La=[Bj,bf,df,ef,cf,Bj,Bj,Bj];var Ma=[Cj,Hh,Ch,Ii,ub,vb,wb,xb,Wd,_d,Ie,Ue,Zc,Vd,Je,rf,Dc,Ec,Fc,Gc,zc,Ac,Bc,Cc,$c,ad,bd,cd,Rd,Ud,$d,ae,be,ce,de,fe,ge,he,ie,je,ke,le,me,ne,oe,pe,qe,re,se,te,ue,ve,we,Ke,Ve,Xe,Ye,Ze,_e,$e,af,Bh,Gh,Cj];var Na=[Dj,dd,ed,fd,gd,hd,id,jd,kd,ld,md,nd,od,pd,qd,rd,sd,td,ud,vd,Re,Se,Te,Le,Me,Ne,Oe,Pe,Qe,qb,rb,sb,tb,ee,Tc,We,He,Qd,_c,Ce,ff,Dj,Dj,Dj,Dj,Dj,Dj,Dj,Dj,Dj,Dj,Dj,Dj,Dj,Dj,Dj,Dj,Dj,Dj,Dj,Dj,Dj,Dj,Dj];var Oa=[Ej,Td,mf,Ej];var Pa=[Fj,Be,hf,Hd,jf,Fj,Fj,Fj];var Qa=[Gj,Id,lf,Gj];var Ra=[Hj,Gd,gf,Hj];var Sa=[Ij,Qc,kf,Rf,Sf,Ij,Ij,Ij];var Ta=[Jj,eb,fb,gb,Ob,Oc,Ge,Jj];var Ua=[Kj,Vc,Wc,Xc,Yc,Ad,Bd,Cd,Dd,wd,xd,yd,zd,Kd,of,Kj];var Va=[Lj,yg,Fg,Lj];return{___muldi3:Yi,___udivdi3:bj,___uremdi3:cj,_bitshift64Ashr:dj,_bitshift64Lshr:ej,_bitshift64Shl:fj,_emscripten_replace_memory:Ia,_free:th,_i64Add:Zi,_i64Subtract:_i,_jp2_decode:bb,_jp2_encode:cb,_jp2_version:db,_llvm_bswap_i32:gj,_malloc:sh,_memcpy:hj,_memset:ij,_opj_create_compress:Vb,_opj_create_decompress:Wb,_opj_decode:Xb,_opj_decode_tile_data:Yb,_opj_destroy_codec:Zb,_opj_destroy_cstr_index:_b,_opj_destroy_cstr_info:$b,_opj_dump_codec:ac,_opj_encode:bc,_opj_end_compress:cc,_opj_end_decompress:dc,_opj_get_cstr_index:ec,_opj_get_cstr_info:fc,_opj_get_decoded_tile:gc,_opj_image_create:Pb,_opj_image_destroy:Qb,_opj_image_tile_create:Rb,_opj_read_header:hc,_opj_read_tile_header:ic,_opj_set_MCT:jc,_opj_set_decode_area:kc,_opj_set_decoded_resolution_factor:lc,_opj_set_default_decoder_parameters:mc,_opj_set_default_encoder_parameters:nc,_opj_set_error_handler:oc,_opj_set_info_handler:pc,_opj_set_warning_handler:qc,_opj_setup_decoder:rc,_opj_setup_encoder:sc,_opj_start_compress:tc,_opj_stream_create:hb,_opj_stream_create_buffer_stream:uc,_opj_stream_create_default_file_stream:vc,_opj_stream_create_file_stream:wc,_opj_stream_default_create:ib,_opj_stream_destroy:jb,_opj_stream_set_read_function:kb,_opj_stream_set_seek_function:lb,_opj_stream_set_skip_function:mb,_opj_stream_set_user_data:nb,_opj_stream_set_user_data_length:ob,_opj_stream_set_write_function:pb,_opj_version:xc,_opj_write_tile:yc,_rintf:kj,_sbrk:lj,dynCall_di:mj,dynCall_ii:nj,dynCall_iii:oj,dynCall_iiii:pj,dynCall_iiiii:qj,dynCall_iiiiii:rj,dynCall_iiiiiii:sj,dynCall_iiiiiiii:tj,dynCall_iiiiiiiiiiii:uj,dynCall_vi:vj,dynCall_vii:wj,dynCall_viii:xj,dynCall_viiii:yj,establishStackSpace:Za,getTempRet0:ab,runPostSets:Wi,setTempRet0:$a,setThrew:_a,stackAlloc:Wa,stackRestore:Ya,stackSave:Xa}})\n\n\n// EMSCRIPTEN_END_ASM\n(Module.asmGlobalArg,Module.asmLibraryArg,buffer);var ___muldi3=Module[\"___muldi3\"]=asm[\"___muldi3\"];var ___udivdi3=Module[\"___udivdi3\"]=asm[\"___udivdi3\"];var ___uremdi3=Module[\"___uremdi3\"]=asm[\"___uremdi3\"];var _bitshift64Ashr=Module[\"_bitshift64Ashr\"]=asm[\"_bitshift64Ashr\"];var _bitshift64Lshr=Module[\"_bitshift64Lshr\"]=asm[\"_bitshift64Lshr\"];var _bitshift64Shl=Module[\"_bitshift64Shl\"]=asm[\"_bitshift64Shl\"];var _emscripten_replace_memory=Module[\"_emscripten_replace_memory\"]=asm[\"_emscripten_replace_memory\"];var _free=Module[\"_free\"]=asm[\"_free\"];var _i64Add=Module[\"_i64Add\"]=asm[\"_i64Add\"];var _i64Subtract=Module[\"_i64Subtract\"]=asm[\"_i64Subtract\"];var _jp2_decode=Module[\"_jp2_decode\"]=asm[\"_jp2_decode\"];var _jp2_encode=Module[\"_jp2_encode\"]=asm[\"_jp2_encode\"];var _jp2_version=Module[\"_jp2_version\"]=asm[\"_jp2_version\"];var _llvm_bswap_i32=Module[\"_llvm_bswap_i32\"]=asm[\"_llvm_bswap_i32\"];var _malloc=Module[\"_malloc\"]=asm[\"_malloc\"];var _memcpy=Module[\"_memcpy\"]=asm[\"_memcpy\"];var _memset=Module[\"_memset\"]=asm[\"_memset\"];var _opj_create_compress=Module[\"_opj_create_compress\"]=asm[\"_opj_create_compress\"];var _opj_create_decompress=Module[\"_opj_create_decompress\"]=asm[\"_opj_create_decompress\"];var _opj_decode=Module[\"_opj_decode\"]=asm[\"_opj_decode\"];var _opj_decode_tile_data=Module[\"_opj_decode_tile_data\"]=asm[\"_opj_decode_tile_data\"];var _opj_destroy_codec=Module[\"_opj_destroy_codec\"]=asm[\"_opj_destroy_codec\"];var _opj_destroy_cstr_index=Module[\"_opj_destroy_cstr_index\"]=asm[\"_opj_destroy_cstr_index\"];var _opj_destroy_cstr_info=Module[\"_opj_destroy_cstr_info\"]=asm[\"_opj_destroy_cstr_info\"];var _opj_dump_codec=Module[\"_opj_dump_codec\"]=asm[\"_opj_dump_codec\"];var _opj_encode=Module[\"_opj_encode\"]=asm[\"_opj_encode\"];var _opj_end_compress=Module[\"_opj_end_compress\"]=asm[\"_opj_end_compress\"];var _opj_end_decompress=Module[\"_opj_end_decompress\"]=asm[\"_opj_end_decompress\"];var _opj_get_cstr_index=Module[\"_opj_get_cstr_index\"]=asm[\"_opj_get_cstr_index\"];var _opj_get_cstr_info=Module[\"_opj_get_cstr_info\"]=asm[\"_opj_get_cstr_info\"];var _opj_get_decoded_tile=Module[\"_opj_get_decoded_tile\"]=asm[\"_opj_get_decoded_tile\"];var _opj_image_create=Module[\"_opj_image_create\"]=asm[\"_opj_image_create\"];var _opj_image_destroy=Module[\"_opj_image_destroy\"]=asm[\"_opj_image_destroy\"];var _opj_image_tile_create=Module[\"_opj_image_tile_create\"]=asm[\"_opj_image_tile_create\"];var _opj_read_header=Module[\"_opj_read_header\"]=asm[\"_opj_read_header\"];var _opj_read_tile_header=Module[\"_opj_read_tile_header\"]=asm[\"_opj_read_tile_header\"];var _opj_set_MCT=Module[\"_opj_set_MCT\"]=asm[\"_opj_set_MCT\"];var _opj_set_decode_area=Module[\"_opj_set_decode_area\"]=asm[\"_opj_set_decode_area\"];var _opj_set_decoded_resolution_factor=Module[\"_opj_set_decoded_resolution_factor\"]=asm[\"_opj_set_decoded_resolution_factor\"];var _opj_set_default_decoder_parameters=Module[\"_opj_set_default_decoder_parameters\"]=asm[\"_opj_set_default_decoder_parameters\"];var _opj_set_default_encoder_parameters=Module[\"_opj_set_default_encoder_parameters\"]=asm[\"_opj_set_default_encoder_parameters\"];var _opj_set_error_handler=Module[\"_opj_set_error_handler\"]=asm[\"_opj_set_error_handler\"];var _opj_set_info_handler=Module[\"_opj_set_info_handler\"]=asm[\"_opj_set_info_handler\"];var _opj_set_warning_handler=Module[\"_opj_set_warning_handler\"]=asm[\"_opj_set_warning_handler\"];var _opj_setup_decoder=Module[\"_opj_setup_decoder\"]=asm[\"_opj_setup_decoder\"];var _opj_setup_encoder=Module[\"_opj_setup_encoder\"]=asm[\"_opj_setup_encoder\"];var _opj_start_compress=Module[\"_opj_start_compress\"]=asm[\"_opj_start_compress\"];var _opj_stream_create=Module[\"_opj_stream_create\"]=asm[\"_opj_stream_create\"];var _opj_stream_create_buffer_stream=Module[\"_opj_stream_create_buffer_stream\"]=asm[\"_opj_stream_create_buffer_stream\"];var _opj_stream_create_default_file_stream=Module[\"_opj_stream_create_default_file_stream\"]=asm[\"_opj_stream_create_default_file_stream\"];var _opj_stream_create_file_stream=Module[\"_opj_stream_create_file_stream\"]=asm[\"_opj_stream_create_file_stream\"];var _opj_stream_default_create=Module[\"_opj_stream_default_create\"]=asm[\"_opj_stream_default_create\"];var _opj_stream_destroy=Module[\"_opj_stream_destroy\"]=asm[\"_opj_stream_destroy\"];var _opj_stream_set_read_function=Module[\"_opj_stream_set_read_function\"]=asm[\"_opj_stream_set_read_function\"];var _opj_stream_set_seek_function=Module[\"_opj_stream_set_seek_function\"]=asm[\"_opj_stream_set_seek_function\"];var _opj_stream_set_skip_function=Module[\"_opj_stream_set_skip_function\"]=asm[\"_opj_stream_set_skip_function\"];var _opj_stream_set_user_data=Module[\"_opj_stream_set_user_data\"]=asm[\"_opj_stream_set_user_data\"];var _opj_stream_set_user_data_length=Module[\"_opj_stream_set_user_data_length\"]=asm[\"_opj_stream_set_user_data_length\"];var _opj_stream_set_write_function=Module[\"_opj_stream_set_write_function\"]=asm[\"_opj_stream_set_write_function\"];var _opj_version=Module[\"_opj_version\"]=asm[\"_opj_version\"];var _opj_write_tile=Module[\"_opj_write_tile\"]=asm[\"_opj_write_tile\"];var _rintf=Module[\"_rintf\"]=asm[\"_rintf\"];var _sbrk=Module[\"_sbrk\"]=asm[\"_sbrk\"];var establishStackSpace=Module[\"establishStackSpace\"]=asm[\"establishStackSpace\"];var getTempRet0=Module[\"getTempRet0\"]=asm[\"getTempRet0\"];var runPostSets=Module[\"runPostSets\"]=asm[\"runPostSets\"];var setTempRet0=Module[\"setTempRet0\"]=asm[\"setTempRet0\"];var setThrew=Module[\"setThrew\"]=asm[\"setThrew\"];var stackAlloc=Module[\"stackAlloc\"]=asm[\"stackAlloc\"];var stackRestore=Module[\"stackRestore\"]=asm[\"stackRestore\"];var stackSave=Module[\"stackSave\"]=asm[\"stackSave\"];var dynCall_di=Module[\"dynCall_di\"]=asm[\"dynCall_di\"];var dynCall_ii=Module[\"dynCall_ii\"]=asm[\"dynCall_ii\"];var dynCall_iii=Module[\"dynCall_iii\"]=asm[\"dynCall_iii\"];var dynCall_iiii=Module[\"dynCall_iiii\"]=asm[\"dynCall_iiii\"];var dynCall_iiiii=Module[\"dynCall_iiiii\"]=asm[\"dynCall_iiiii\"];var dynCall_iiiiii=Module[\"dynCall_iiiiii\"]=asm[\"dynCall_iiiiii\"];var dynCall_iiiiiii=Module[\"dynCall_iiiiiii\"]=asm[\"dynCall_iiiiiii\"];var dynCall_iiiiiiii=Module[\"dynCall_iiiiiiii\"]=asm[\"dynCall_iiiiiiii\"];var dynCall_iiiiiiiiiiii=Module[\"dynCall_iiiiiiiiiiii\"]=asm[\"dynCall_iiiiiiiiiiii\"];var dynCall_vi=Module[\"dynCall_vi\"]=asm[\"dynCall_vi\"];var dynCall_vii=Module[\"dynCall_vii\"]=asm[\"dynCall_vii\"];var dynCall_viii=Module[\"dynCall_viii\"]=asm[\"dynCall_viii\"];var dynCall_viiii=Module[\"dynCall_viiii\"]=asm[\"dynCall_viiii\"];Module[\"asm\"]=asm;Module[\"ccall\"]=ccall;Module[\"getValue\"]=getValue;Module[\"writeArrayToMemory\"]=writeArrayToMemory;if(memoryInitializer){if(!isDataURI(memoryInitializer)){if(typeof Module[\"locateFile\"]===\"function\"){memoryInitializer=Module[\"locateFile\"](memoryInitializer)}else if(Module[\"memoryInitializerPrefixURL\"]){memoryInitializer=Module[\"memoryInitializerPrefixURL\"]+memoryInitializer}}if(ENVIRONMENT_IS_NODE||ENVIRONMENT_IS_SHELL){var data=Module[\"readBinary\"](memoryInitializer);HEAPU8.set(data,GLOBAL_BASE)}else{addRunDependency(\"memory initializer\");var applyMemoryInitializer=(function(data){if(data.byteLength)data=new Uint8Array(data);HEAPU8.set(data,GLOBAL_BASE);if(Module[\"memoryInitializerRequest\"])delete Module[\"memoryInitializerRequest\"].response;removeRunDependency(\"memory initializer\")});function doBrowserLoad(){Module[\"readAsync\"](memoryInitializer,applyMemoryInitializer,(function(){throw\"could not load memory initializer \"+memoryInitializer}))}var memoryInitializerBytes=tryParseAsDataURI(memoryInitializer);if(memoryInitializerBytes){applyMemoryInitializer(memoryInitializerBytes.buffer)}else if(Module[\"memoryInitializerRequest\"]){function useRequest(){var request=Module[\"memoryInitializerRequest\"];var response=request.response;if(request.status!==200&&request.status!==0){var data=tryParseAsDataURI(Module[\"memoryInitializerRequestURL\"]);if(data){response=data.buffer}else{console.warn(\"a problem seems to have happened with Module.memoryInitializerRequest, status: \"+request.status+\", retrying \"+memoryInitializer);doBrowserLoad();return}}applyMemoryInitializer(response)}if(Module[\"memoryInitializerRequest\"].response){setTimeout(useRequest,0)}else{Module[\"memoryInitializerRequest\"].addEventListener(\"load\",useRequest)}}else{doBrowserLoad()}}}Module[\"then\"]=(function(func){if(Module[\"calledRun\"]){func(Module)}else{var old=Module[\"onRuntimeInitialized\"];Module[\"onRuntimeInitialized\"]=(function(){if(old)old();func(Module)})}return Module});function ExitStatus(status){this.name=\"ExitStatus\";this.message=\"Program terminated with exit(\"+status+\")\";this.status=status}ExitStatus.prototype=new Error;ExitStatus.prototype.constructor=ExitStatus;var initialStackTop;dependenciesFulfilled=function runCaller(){if(!Module[\"calledRun\"])run();if(!Module[\"calledRun\"])dependenciesFulfilled=runCaller};function run(args){args=args||Module[\"arguments\"];if(runDependencies>0){return}preRun();if(runDependencies>0)return;if(Module[\"calledRun\"])return;function doRun(){if(Module[\"calledRun\"])return;Module[\"calledRun\"]=true;if(ABORT)return;ensureInitRuntime();preMain();if(Module[\"onRuntimeInitialized\"])Module[\"onRuntimeInitialized\"]();postRun()}if(Module[\"setStatus\"]){Module[\"setStatus\"](\"Running...\");setTimeout((function(){setTimeout((function(){Module[\"setStatus\"](\"\")}),1);doRun()}),1)}else{doRun()}}Module[\"run\"]=run;function exit(status,implicit){if(implicit&&Module[\"noExitRuntime\"]&&status===0){return}if(Module[\"noExitRuntime\"]){}else{ABORT=true;EXITSTATUS=status;STACKTOP=initialStackTop;exitRuntime();if(Module[\"onExit\"])Module[\"onExit\"](status)}if(ENVIRONMENT_IS_NODE){process[\"exit\"](status)}Module[\"quit\"](status,new ExitStatus(status))}Module[\"exit\"]=exit;function abort(what){if(Module[\"onAbort\"]){Module[\"onAbort\"](what)}if(what!==undefined){Module.print(what);Module.printErr(what);what=JSON.stringify(what)}else{what=\"\"}ABORT=true;EXITSTATUS=1;throw\"abort(\"+what+\"). Build with -s ASSERTIONS=1 for more info.\"}Module[\"abort\"]=abort;if(Module[\"preInit\"]){if(typeof Module[\"preInit\"]==\"function\")Module[\"preInit\"]=[Module[\"preInit\"]];while(Module[\"preInit\"].length>0){Module[\"preInit\"].pop()()}}Module[\"noExitRuntime\"]=true;run()\n\n\n\n\n\n\n return OpenJPEG;\n};\nif (typeof exports === 'object' && typeof module === 'object')\n module.exports = OpenJPEG;\nelse if (typeof define === 'function' && define['amd'])\n define([], function() { return OpenJPEG; });\nelse if (typeof exports === 'object')\n exports[\"OpenJPEG\"] = OpenJPEG;\n","'use strict';\n\n// compare and isBuffer taken from https://github.com/feross/buffer/blob/680e9e5e488f22aac27599a57dc844a6315928dd/index.js\n// original notice:\n\n/*!\n * The buffer module from node.js, for the browser.\n *\n * @author Feross Aboukhadijeh \n * @license MIT\n */\nfunction compare(a, b) {\n if (a === b) {\n return 0;\n }\n\n var x = a.length;\n var y = b.length;\n\n for (var i = 0, len = Math.min(x, y); i < len; ++i) {\n if (a[i] !== b[i]) {\n x = a[i];\n y = b[i];\n break;\n }\n }\n\n if (x < y) {\n return -1;\n }\n if (y < x) {\n return 1;\n }\n return 0;\n}\nfunction isBuffer(b) {\n if (global.Buffer && typeof global.Buffer.isBuffer === 'function') {\n return global.Buffer.isBuffer(b);\n }\n return !!(b != null && b._isBuffer);\n}\n\n// based on node assert, original notice:\n\n// http://wiki.commonjs.org/wiki/Unit_Testing/1.0\n//\n// THIS IS NOT TESTED NOR LIKELY TO WORK OUTSIDE V8!\n//\n// Originally from narwhal.js (http://narwhaljs.org)\n// Copyright (c) 2009 Thomas Robinson <280north.com>\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the 'Software'), to\n// deal in the Software without restriction, including without limitation the\n// rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n// sell copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN\n// ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION\n// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n\nvar util = require('util/');\nvar hasOwn = Object.prototype.hasOwnProperty;\nvar pSlice = Array.prototype.slice;\nvar functionsHaveNames = (function () {\n return function foo() {}.name === 'foo';\n}());\nfunction pToString (obj) {\n return Object.prototype.toString.call(obj);\n}\nfunction isView(arrbuf) {\n if (isBuffer(arrbuf)) {\n return false;\n }\n if (typeof global.ArrayBuffer !== 'function') {\n return false;\n }\n if (typeof ArrayBuffer.isView === 'function') {\n return ArrayBuffer.isView(arrbuf);\n }\n if (!arrbuf) {\n return false;\n }\n if (arrbuf instanceof DataView) {\n return true;\n }\n if (arrbuf.buffer && arrbuf.buffer instanceof ArrayBuffer) {\n return true;\n }\n return false;\n}\n// 1. The assert module provides functions that throw\n// AssertionError's when particular conditions are not met. The\n// assert module must conform to the following interface.\n\nvar assert = module.exports = ok;\n\n// 2. The AssertionError is defined in assert.\n// new assert.AssertionError({ message: message,\n// actual: actual,\n// expected: expected })\n\nvar regex = /\\s*function\\s+([^\\(\\s]*)\\s*/;\n// based on https://github.com/ljharb/function.prototype.name/blob/adeeeec8bfcc6068b187d7d9fb3d5bb1d3a30899/implementation.js\nfunction getName(func) {\n if (!util.isFunction(func)) {\n return;\n }\n if (functionsHaveNames) {\n return func.name;\n }\n var str = func.toString();\n var match = str.match(regex);\n return match && match[1];\n}\nassert.AssertionError = function AssertionError(options) {\n this.name = 'AssertionError';\n this.actual = options.actual;\n this.expected = options.expected;\n this.operator = options.operator;\n if (options.message) {\n this.message = options.message;\n this.generatedMessage = false;\n } else {\n this.message = getMessage(this);\n this.generatedMessage = true;\n }\n var stackStartFunction = options.stackStartFunction || fail;\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, stackStartFunction);\n } else {\n // non v8 browsers so we can have a stacktrace\n var err = new Error();\n if (err.stack) {\n var out = err.stack;\n\n // try to strip useless frames\n var fn_name = getName(stackStartFunction);\n var idx = out.indexOf('\\n' + fn_name);\n if (idx >= 0) {\n // once we have located the function frame\n // we need to strip out everything before it (and its line)\n var next_line = out.indexOf('\\n', idx + 1);\n out = out.substring(next_line + 1);\n }\n\n this.stack = out;\n }\n }\n};\n\n// assert.AssertionError instanceof Error\nutil.inherits(assert.AssertionError, Error);\n\nfunction truncate(s, n) {\n if (typeof s === 'string') {\n return s.length < n ? s : s.slice(0, n);\n } else {\n return s;\n }\n}\nfunction inspect(something) {\n if (functionsHaveNames || !util.isFunction(something)) {\n return util.inspect(something);\n }\n var rawname = getName(something);\n var name = rawname ? ': ' + rawname : '';\n return '[Function' + name + ']';\n}\nfunction getMessage(self) {\n return truncate(inspect(self.actual), 128) + ' ' +\n self.operator + ' ' +\n truncate(inspect(self.expected), 128);\n}\n\n// At present only the three keys mentioned above are used and\n// understood by the spec. Implementations or sub modules can pass\n// other keys to the AssertionError's constructor - they will be\n// ignored.\n\n// 3. All of the following functions must throw an AssertionError\n// when a corresponding condition is not met, with a message that\n// may be undefined if not provided. All assertion methods provide\n// both the actual and expected values to the assertion error for\n// display purposes.\n\nfunction fail(actual, expected, message, operator, stackStartFunction) {\n throw new assert.AssertionError({\n message: message,\n actual: actual,\n expected: expected,\n operator: operator,\n stackStartFunction: stackStartFunction\n });\n}\n\n// EXTENSION! allows for well behaved errors defined elsewhere.\nassert.fail = fail;\n\n// 4. Pure assertion tests whether a value is truthy, as determined\n// by !!guard.\n// assert.ok(guard, message_opt);\n// This statement is equivalent to assert.equal(true, !!guard,\n// message_opt);. To test strictly for the value true, use\n// assert.strictEqual(true, guard, message_opt);.\n\nfunction ok(value, message) {\n if (!value) fail(value, true, message, '==', assert.ok);\n}\nassert.ok = ok;\n\n// 5. The equality assertion tests shallow, coercive equality with\n// ==.\n// assert.equal(actual, expected, message_opt);\n\nassert.equal = function equal(actual, expected, message) {\n if (actual != expected) fail(actual, expected, message, '==', assert.equal);\n};\n\n// 6. The non-equality assertion tests for whether two objects are not equal\n// with != assert.notEqual(actual, expected, message_opt);\n\nassert.notEqual = function notEqual(actual, expected, message) {\n if (actual == expected) {\n fail(actual, expected, message, '!=', assert.notEqual);\n }\n};\n\n// 7. The equivalence assertion tests a deep equality relation.\n// assert.deepEqual(actual, expected, message_opt);\n\nassert.deepEqual = function deepEqual(actual, expected, message) {\n if (!_deepEqual(actual, expected, false)) {\n fail(actual, expected, message, 'deepEqual', assert.deepEqual);\n }\n};\n\nassert.deepStrictEqual = function deepStrictEqual(actual, expected, message) {\n if (!_deepEqual(actual, expected, true)) {\n fail(actual, expected, message, 'deepStrictEqual', assert.deepStrictEqual);\n }\n};\n\nfunction _deepEqual(actual, expected, strict, memos) {\n // 7.1. All identical values are equivalent, as determined by ===.\n if (actual === expected) {\n return true;\n } else if (isBuffer(actual) && isBuffer(expected)) {\n return compare(actual, expected) === 0;\n\n // 7.2. If the expected value is a Date object, the actual value is\n // equivalent if it is also a Date object that refers to the same time.\n } else if (util.isDate(actual) && util.isDate(expected)) {\n return actual.getTime() === expected.getTime();\n\n // 7.3 If the expected value is a RegExp object, the actual value is\n // equivalent if it is also a RegExp object with the same source and\n // properties (`global`, `multiline`, `lastIndex`, `ignoreCase`).\n } else if (util.isRegExp(actual) && util.isRegExp(expected)) {\n return actual.source === expected.source &&\n actual.global === expected.global &&\n actual.multiline === expected.multiline &&\n actual.lastIndex === expected.lastIndex &&\n actual.ignoreCase === expected.ignoreCase;\n\n // 7.4. Other pairs that do not both pass typeof value == 'object',\n // equivalence is determined by ==.\n } else if ((actual === null || typeof actual !== 'object') &&\n (expected === null || typeof expected !== 'object')) {\n return strict ? actual === expected : actual == expected;\n\n // If both values are instances of typed arrays, wrap their underlying\n // ArrayBuffers in a Buffer each to increase performance\n // This optimization requires the arrays to have the same type as checked by\n // Object.prototype.toString (aka pToString). Never perform binary\n // comparisons for Float*Arrays, though, since e.g. +0 === -0 but their\n // bit patterns are not identical.\n } else if (isView(actual) && isView(expected) &&\n pToString(actual) === pToString(expected) &&\n !(actual instanceof Float32Array ||\n actual instanceof Float64Array)) {\n return compare(new Uint8Array(actual.buffer),\n new Uint8Array(expected.buffer)) === 0;\n\n // 7.5 For all other Object pairs, including Array objects, equivalence is\n // determined by having the same number of owned properties (as verified\n // with Object.prototype.hasOwnProperty.call), the same set of keys\n // (although not necessarily the same order), equivalent values for every\n // corresponding key, and an identical 'prototype' property. Note: this\n // accounts for both named and indexed properties on Arrays.\n } else if (isBuffer(actual) !== isBuffer(expected)) {\n return false;\n } else {\n memos = memos || {actual: [], expected: []};\n\n var actualIndex = memos.actual.indexOf(actual);\n if (actualIndex !== -1) {\n if (actualIndex === memos.expected.indexOf(expected)) {\n return true;\n }\n }\n\n memos.actual.push(actual);\n memos.expected.push(expected);\n\n return objEquiv(actual, expected, strict, memos);\n }\n}\n\nfunction isArguments(object) {\n return Object.prototype.toString.call(object) == '[object Arguments]';\n}\n\nfunction objEquiv(a, b, strict, actualVisitedObjects) {\n if (a === null || a === undefined || b === null || b === undefined)\n return false;\n // if one is a primitive, the other must be same\n if (util.isPrimitive(a) || util.isPrimitive(b))\n return a === b;\n if (strict && Object.getPrototypeOf(a) !== Object.getPrototypeOf(b))\n return false;\n var aIsArgs = isArguments(a);\n var bIsArgs = isArguments(b);\n if ((aIsArgs && !bIsArgs) || (!aIsArgs && bIsArgs))\n return false;\n if (aIsArgs) {\n a = pSlice.call(a);\n b = pSlice.call(b);\n return _deepEqual(a, b, strict);\n }\n var ka = objectKeys(a);\n var kb = objectKeys(b);\n var key, i;\n // having the same number of owned properties (keys incorporates\n // hasOwnProperty)\n if (ka.length !== kb.length)\n return false;\n //the same set of keys (although not necessarily the same order),\n ka.sort();\n kb.sort();\n //~~~cheap key test\n for (i = ka.length - 1; i >= 0; i--) {\n if (ka[i] !== kb[i])\n return false;\n }\n //equivalent values for every corresponding key, and\n //~~~possibly expensive deep test\n for (i = ka.length - 1; i >= 0; i--) {\n key = ka[i];\n if (!_deepEqual(a[key], b[key], strict, actualVisitedObjects))\n return false;\n }\n return true;\n}\n\n// 8. The non-equivalence assertion tests for any deep inequality.\n// assert.notDeepEqual(actual, expected, message_opt);\n\nassert.notDeepEqual = function notDeepEqual(actual, expected, message) {\n if (_deepEqual(actual, expected, false)) {\n fail(actual, expected, message, 'notDeepEqual', assert.notDeepEqual);\n }\n};\n\nassert.notDeepStrictEqual = notDeepStrictEqual;\nfunction notDeepStrictEqual(actual, expected, message) {\n if (_deepEqual(actual, expected, true)) {\n fail(actual, expected, message, 'notDeepStrictEqual', notDeepStrictEqual);\n }\n}\n\n\n// 9. The strict equality assertion tests strict equality, as determined by ===.\n// assert.strictEqual(actual, expected, message_opt);\n\nassert.strictEqual = function strictEqual(actual, expected, message) {\n if (actual !== expected) {\n fail(actual, expected, message, '===', assert.strictEqual);\n }\n};\n\n// 10. The strict non-equality assertion tests for strict inequality, as\n// determined by !==. assert.notStrictEqual(actual, expected, message_opt);\n\nassert.notStrictEqual = function notStrictEqual(actual, expected, message) {\n if (actual === expected) {\n fail(actual, expected, message, '!==', assert.notStrictEqual);\n }\n};\n\nfunction expectedException(actual, expected) {\n if (!actual || !expected) {\n return false;\n }\n\n if (Object.prototype.toString.call(expected) == '[object RegExp]') {\n return expected.test(actual);\n }\n\n try {\n if (actual instanceof expected) {\n return true;\n }\n } catch (e) {\n // Ignore. The instanceof check doesn't work for arrow functions.\n }\n\n if (Error.isPrototypeOf(expected)) {\n return false;\n }\n\n return expected.call({}, actual) === true;\n}\n\nfunction _tryBlock(block) {\n var error;\n try {\n block();\n } catch (e) {\n error = e;\n }\n return error;\n}\n\nfunction _throws(shouldThrow, block, expected, message) {\n var actual;\n\n if (typeof block !== 'function') {\n throw new TypeError('\"block\" argument must be a function');\n }\n\n if (typeof expected === 'string') {\n message = expected;\n expected = null;\n }\n\n actual = _tryBlock(block);\n\n message = (expected && expected.name ? ' (' + expected.name + ').' : '.') +\n (message ? ' ' + message : '.');\n\n if (shouldThrow && !actual) {\n fail(actual, expected, 'Missing expected exception' + message);\n }\n\n var userProvidedMessage = typeof message === 'string';\n var isUnwantedException = !shouldThrow && util.isError(actual);\n var isUnexpectedException = !shouldThrow && actual && !expected;\n\n if ((isUnwantedException &&\n userProvidedMessage &&\n expectedException(actual, expected)) ||\n isUnexpectedException) {\n fail(actual, expected, 'Got unwanted exception' + message);\n }\n\n if ((shouldThrow && actual && expected &&\n !expectedException(actual, expected)) || (!shouldThrow && actual)) {\n throw actual;\n }\n}\n\n// 11. Expected to throw an error:\n// assert.throws(block, Error_opt, message_opt);\n\nassert.throws = function(block, /*optional*/error, /*optional*/message) {\n _throws(true, block, error, message);\n};\n\n// EXTENSION! This is annoying to write outside this module.\nassert.doesNotThrow = function(block, /*optional*/error, /*optional*/message) {\n _throws(false, block, error, message);\n};\n\nassert.ifError = function(err) { if (err) throw err; };\n\nvar objectKeys = Object.keys || function (obj) {\n var keys = [];\n for (var key in obj) {\n if (hasOwn.call(obj, key)) keys.push(key);\n }\n return keys;\n};\n","'use strict'\n\nexports.byteLength = byteLength\nexports.toByteArray = toByteArray\nexports.fromByteArray = fromByteArray\n\nvar lookup = []\nvar revLookup = []\nvar Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array\n\nvar code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'\nfor (var i = 0, len = code.length; i < len; ++i) {\n lookup[i] = code[i]\n revLookup[code.charCodeAt(i)] = i\n}\n\n// Support decoding URL-safe base64 strings, as Node.js does.\n// See: https://en.wikipedia.org/wiki/Base64#URL_applications\nrevLookup['-'.charCodeAt(0)] = 62\nrevLookup['_'.charCodeAt(0)] = 63\n\nfunction getLens (b64) {\n var len = b64.length\n\n if (len % 4 > 0) {\n throw new Error('Invalid string. Length must be a multiple of 4')\n }\n\n // Trim off extra bytes after placeholder bytes are found\n // See: https://github.com/beatgammit/base64-js/issues/42\n var validLen = b64.indexOf('=')\n if (validLen === -1) validLen = len\n\n var placeHoldersLen = validLen === len\n ? 0\n : 4 - (validLen % 4)\n\n return [validLen, placeHoldersLen]\n}\n\n// base64 is 4/3 + up to two characters of the original data\nfunction byteLength (b64) {\n var lens = getLens(b64)\n var validLen = lens[0]\n var placeHoldersLen = lens[1]\n return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction _byteLength (b64, validLen, placeHoldersLen) {\n return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction toByteArray (b64) {\n var tmp\n var lens = getLens(b64)\n var validLen = lens[0]\n var placeHoldersLen = lens[1]\n\n var arr = new Arr(_byteLength(b64, validLen, placeHoldersLen))\n\n var curByte = 0\n\n // if there are placeholders, only get up to the last complete 4 chars\n var len = placeHoldersLen > 0\n ? validLen - 4\n : validLen\n\n for (var i = 0; i < len; i += 4) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 18) |\n (revLookup[b64.charCodeAt(i + 1)] << 12) |\n (revLookup[b64.charCodeAt(i + 2)] << 6) |\n revLookup[b64.charCodeAt(i + 3)]\n arr[curByte++] = (tmp >> 16) & 0xFF\n arr[curByte++] = (tmp >> 8) & 0xFF\n arr[curByte++] = tmp & 0xFF\n }\n\n if (placeHoldersLen === 2) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 2) |\n (revLookup[b64.charCodeAt(i + 1)] >> 4)\n arr[curByte++] = tmp & 0xFF\n }\n\n if (placeHoldersLen === 1) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 10) |\n (revLookup[b64.charCodeAt(i + 1)] << 4) |\n (revLookup[b64.charCodeAt(i + 2)] >> 2)\n arr[curByte++] = (tmp >> 8) & 0xFF\n arr[curByte++] = tmp & 0xFF\n }\n\n return arr\n}\n\nfunction tripletToBase64 (num) {\n return lookup[num >> 18 & 0x3F] +\n lookup[num >> 12 & 0x3F] +\n lookup[num >> 6 & 0x3F] +\n lookup[num & 0x3F]\n}\n\nfunction encodeChunk (uint8, start, end) {\n var tmp\n var output = []\n for (var i = start; i < end; i += 3) {\n tmp =\n ((uint8[i] << 16) & 0xFF0000) +\n ((uint8[i + 1] << 8) & 0xFF00) +\n (uint8[i + 2] & 0xFF)\n output.push(tripletToBase64(tmp))\n }\n return output.join('')\n}\n\nfunction fromByteArray (uint8) {\n var tmp\n var len = uint8.length\n var extraBytes = len % 3 // if we have 1 byte left, pad 2 bytes\n var parts = []\n var maxChunkLength = 16383 // must be multiple of 3\n\n // go through the array every three bytes, we'll deal with trailing stuff later\n for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) {\n parts.push(encodeChunk(\n uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength)\n ))\n }\n\n // pad the end with zeros, but make sure to not forget the extra bytes\n if (extraBytes === 1) {\n tmp = uint8[len - 1]\n parts.push(\n lookup[tmp >> 2] +\n lookup[(tmp << 4) & 0x3F] +\n '=='\n )\n } else if (extraBytes === 2) {\n tmp = (uint8[len - 2] << 8) + uint8[len - 1]\n parts.push(\n lookup[tmp >> 10] +\n lookup[(tmp >> 4) & 0x3F] +\n lookup[(tmp << 2) & 0x3F] +\n '='\n )\n }\n\n return parts.join('')\n}\n","/*!\n * The buffer module from node.js, for the browser.\n *\n * @author Feross Aboukhadijeh \n * @license MIT\n */\n/* eslint-disable no-proto */\n\n'use strict'\n\nvar base64 = require('base64-js')\nvar ieee754 = require('ieee754')\nvar isArray = require('isarray')\n\nexports.Buffer = Buffer\nexports.SlowBuffer = SlowBuffer\nexports.INSPECT_MAX_BYTES = 50\n\n/**\n * If `Buffer.TYPED_ARRAY_SUPPORT`:\n * === true Use Uint8Array implementation (fastest)\n * === false Use Object implementation (most compatible, even IE6)\n *\n * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+,\n * Opera 11.6+, iOS 4.2+.\n *\n * Due to various browser bugs, sometimes the Object implementation will be used even\n * when the browser supports typed arrays.\n *\n * Note:\n *\n * - Firefox 4-29 lacks support for adding new properties to `Uint8Array` instances,\n * See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438.\n *\n * - Chrome 9-10 is missing the `TypedArray.prototype.subarray` function.\n *\n * - IE10 has a broken `TypedArray.prototype.subarray` function which returns arrays of\n * incorrect length in some situations.\n\n * We detect these buggy browsers and set `Buffer.TYPED_ARRAY_SUPPORT` to `false` so they\n * get the Object implementation, which is slower but behaves correctly.\n */\nBuffer.TYPED_ARRAY_SUPPORT = global.TYPED_ARRAY_SUPPORT !== undefined\n ? global.TYPED_ARRAY_SUPPORT\n : typedArraySupport()\n\n/*\n * Export kMaxLength after typed array support is determined.\n */\nexports.kMaxLength = kMaxLength()\n\nfunction typedArraySupport () {\n try {\n var arr = new Uint8Array(1)\n arr.__proto__ = {__proto__: Uint8Array.prototype, foo: function () { return 42 }}\n return arr.foo() === 42 && // typed array instances can be augmented\n typeof arr.subarray === 'function' && // chrome 9-10 lack `subarray`\n arr.subarray(1, 1).byteLength === 0 // ie10 has broken `subarray`\n } catch (e) {\n return false\n }\n}\n\nfunction kMaxLength () {\n return Buffer.TYPED_ARRAY_SUPPORT\n ? 0x7fffffff\n : 0x3fffffff\n}\n\nfunction createBuffer (that, length) {\n if (kMaxLength() < length) {\n throw new RangeError('Invalid typed array length')\n }\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n // Return an augmented `Uint8Array` instance, for best performance\n that = new Uint8Array(length)\n that.__proto__ = Buffer.prototype\n } else {\n // Fallback: Return an object instance of the Buffer class\n if (that === null) {\n that = new Buffer(length)\n }\n that.length = length\n }\n\n return that\n}\n\n/**\n * The Buffer constructor returns instances of `Uint8Array` that have their\n * prototype changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of\n * `Uint8Array`, so the returned instances will have all the node `Buffer` methods\n * and the `Uint8Array` methods. Square bracket notation works as expected -- it\n * returns a single octet.\n *\n * The `Uint8Array` prototype remains unmodified.\n */\n\nfunction Buffer (arg, encodingOrOffset, length) {\n if (!Buffer.TYPED_ARRAY_SUPPORT && !(this instanceof Buffer)) {\n return new Buffer(arg, encodingOrOffset, length)\n }\n\n // Common case.\n if (typeof arg === 'number') {\n if (typeof encodingOrOffset === 'string') {\n throw new Error(\n 'If encoding is specified then the first argument must be a string'\n )\n }\n return allocUnsafe(this, arg)\n }\n return from(this, arg, encodingOrOffset, length)\n}\n\nBuffer.poolSize = 8192 // not used by this implementation\n\n// TODO: Legacy, not needed anymore. Remove in next major version.\nBuffer._augment = function (arr) {\n arr.__proto__ = Buffer.prototype\n return arr\n}\n\nfunction from (that, value, encodingOrOffset, length) {\n if (typeof value === 'number') {\n throw new TypeError('\"value\" argument must not be a number')\n }\n\n if (typeof ArrayBuffer !== 'undefined' && value instanceof ArrayBuffer) {\n return fromArrayBuffer(that, value, encodingOrOffset, length)\n }\n\n if (typeof value === 'string') {\n return fromString(that, value, encodingOrOffset)\n }\n\n return fromObject(that, value)\n}\n\n/**\n * Functionally equivalent to Buffer(arg, encoding) but throws a TypeError\n * if value is a number.\n * Buffer.from(str[, encoding])\n * Buffer.from(array)\n * Buffer.from(buffer)\n * Buffer.from(arrayBuffer[, byteOffset[, length]])\n **/\nBuffer.from = function (value, encodingOrOffset, length) {\n return from(null, value, encodingOrOffset, length)\n}\n\nif (Buffer.TYPED_ARRAY_SUPPORT) {\n Buffer.prototype.__proto__ = Uint8Array.prototype\n Buffer.__proto__ = Uint8Array\n if (typeof Symbol !== 'undefined' && Symbol.species &&\n Buffer[Symbol.species] === Buffer) {\n // Fix subarray() in ES2016. See: https://github.com/feross/buffer/pull/97\n Object.defineProperty(Buffer, Symbol.species, {\n value: null,\n configurable: true\n })\n }\n}\n\nfunction assertSize (size) {\n if (typeof size !== 'number') {\n throw new TypeError('\"size\" argument must be a number')\n } else if (size < 0) {\n throw new RangeError('\"size\" argument must not be negative')\n }\n}\n\nfunction alloc (that, size, fill, encoding) {\n assertSize(size)\n if (size <= 0) {\n return createBuffer(that, size)\n }\n if (fill !== undefined) {\n // Only pay attention to encoding if it's a string. This\n // prevents accidentally sending in a number that would\n // be interpretted as a start offset.\n return typeof encoding === 'string'\n ? createBuffer(that, size).fill(fill, encoding)\n : createBuffer(that, size).fill(fill)\n }\n return createBuffer(that, size)\n}\n\n/**\n * Creates a new filled Buffer instance.\n * alloc(size[, fill[, encoding]])\n **/\nBuffer.alloc = function (size, fill, encoding) {\n return alloc(null, size, fill, encoding)\n}\n\nfunction allocUnsafe (that, size) {\n assertSize(size)\n that = createBuffer(that, size < 0 ? 0 : checked(size) | 0)\n if (!Buffer.TYPED_ARRAY_SUPPORT) {\n for (var i = 0; i < size; ++i) {\n that[i] = 0\n }\n }\n return that\n}\n\n/**\n * Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance.\n * */\nBuffer.allocUnsafe = function (size) {\n return allocUnsafe(null, size)\n}\n/**\n * Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance.\n */\nBuffer.allocUnsafeSlow = function (size) {\n return allocUnsafe(null, size)\n}\n\nfunction fromString (that, string, encoding) {\n if (typeof encoding !== 'string' || encoding === '') {\n encoding = 'utf8'\n }\n\n if (!Buffer.isEncoding(encoding)) {\n throw new TypeError('\"encoding\" must be a valid string encoding')\n }\n\n var length = byteLength(string, encoding) | 0\n that = createBuffer(that, length)\n\n var actual = that.write(string, encoding)\n\n if (actual !== length) {\n // Writing a hex string, for example, that contains invalid characters will\n // cause everything after the first invalid character to be ignored. (e.g.\n // 'abxxcd' will be treated as 'ab')\n that = that.slice(0, actual)\n }\n\n return that\n}\n\nfunction fromArrayLike (that, array) {\n var length = array.length < 0 ? 0 : checked(array.length) | 0\n that = createBuffer(that, length)\n for (var i = 0; i < length; i += 1) {\n that[i] = array[i] & 255\n }\n return that\n}\n\nfunction fromArrayBuffer (that, array, byteOffset, length) {\n array.byteLength // this throws if `array` is not a valid ArrayBuffer\n\n if (byteOffset < 0 || array.byteLength < byteOffset) {\n throw new RangeError('\\'offset\\' is out of bounds')\n }\n\n if (array.byteLength < byteOffset + (length || 0)) {\n throw new RangeError('\\'length\\' is out of bounds')\n }\n\n if (byteOffset === undefined && length === undefined) {\n array = new Uint8Array(array)\n } else if (length === undefined) {\n array = new Uint8Array(array, byteOffset)\n } else {\n array = new Uint8Array(array, byteOffset, length)\n }\n\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n // Return an augmented `Uint8Array` instance, for best performance\n that = array\n that.__proto__ = Buffer.prototype\n } else {\n // Fallback: Return an object instance of the Buffer class\n that = fromArrayLike(that, array)\n }\n return that\n}\n\nfunction fromObject (that, obj) {\n if (Buffer.isBuffer(obj)) {\n var len = checked(obj.length) | 0\n that = createBuffer(that, len)\n\n if (that.length === 0) {\n return that\n }\n\n obj.copy(that, 0, 0, len)\n return that\n }\n\n if (obj) {\n if ((typeof ArrayBuffer !== 'undefined' &&\n obj.buffer instanceof ArrayBuffer) || 'length' in obj) {\n if (typeof obj.length !== 'number' || isnan(obj.length)) {\n return createBuffer(that, 0)\n }\n return fromArrayLike(that, obj)\n }\n\n if (obj.type === 'Buffer' && isArray(obj.data)) {\n return fromArrayLike(that, obj.data)\n }\n }\n\n throw new TypeError('First argument must be a string, Buffer, ArrayBuffer, Array, or array-like object.')\n}\n\nfunction checked (length) {\n // Note: cannot use `length < kMaxLength()` here because that fails when\n // length is NaN (which is otherwise coerced to zero.)\n if (length >= kMaxLength()) {\n throw new RangeError('Attempt to allocate Buffer larger than maximum ' +\n 'size: 0x' + kMaxLength().toString(16) + ' bytes')\n }\n return length | 0\n}\n\nfunction SlowBuffer (length) {\n if (+length != length) { // eslint-disable-line eqeqeq\n length = 0\n }\n return Buffer.alloc(+length)\n}\n\nBuffer.isBuffer = function isBuffer (b) {\n return !!(b != null && b._isBuffer)\n}\n\nBuffer.compare = function compare (a, b) {\n if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) {\n throw new TypeError('Arguments must be Buffers')\n }\n\n if (a === b) return 0\n\n var x = a.length\n var y = b.length\n\n for (var i = 0, len = Math.min(x, y); i < len; ++i) {\n if (a[i] !== b[i]) {\n x = a[i]\n y = b[i]\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\nBuffer.isEncoding = function isEncoding (encoding) {\n switch (String(encoding).toLowerCase()) {\n case 'hex':\n case 'utf8':\n case 'utf-8':\n case 'ascii':\n case 'latin1':\n case 'binary':\n case 'base64':\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return true\n default:\n return false\n }\n}\n\nBuffer.concat = function concat (list, length) {\n if (!isArray(list)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n }\n\n if (list.length === 0) {\n return Buffer.alloc(0)\n }\n\n var i\n if (length === undefined) {\n length = 0\n for (i = 0; i < list.length; ++i) {\n length += list[i].length\n }\n }\n\n var buffer = Buffer.allocUnsafe(length)\n var pos = 0\n for (i = 0; i < list.length; ++i) {\n var buf = list[i]\n if (!Buffer.isBuffer(buf)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n }\n buf.copy(buffer, pos)\n pos += buf.length\n }\n return buffer\n}\n\nfunction byteLength (string, encoding) {\n if (Buffer.isBuffer(string)) {\n return string.length\n }\n if (typeof ArrayBuffer !== 'undefined' && typeof ArrayBuffer.isView === 'function' &&\n (ArrayBuffer.isView(string) || string instanceof ArrayBuffer)) {\n return string.byteLength\n }\n if (typeof string !== 'string') {\n string = '' + string\n }\n\n var len = string.length\n if (len === 0) return 0\n\n // Use a for loop to avoid recursion\n var loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'ascii':\n case 'latin1':\n case 'binary':\n return len\n case 'utf8':\n case 'utf-8':\n case undefined:\n return utf8ToBytes(string).length\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return len * 2\n case 'hex':\n return len >>> 1\n case 'base64':\n return base64ToBytes(string).length\n default:\n if (loweredCase) return utf8ToBytes(string).length // assume utf8\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\nBuffer.byteLength = byteLength\n\nfunction slowToString (encoding, start, end) {\n var loweredCase = false\n\n // No need to verify that \"this.length <= MAX_UINT32\" since it's a read-only\n // property of a typed array.\n\n // This behaves neither like String nor Uint8Array in that we set start/end\n // to their upper/lower bounds if the value passed is out of range.\n // undefined is handled specially as per ECMA-262 6th Edition,\n // Section 13.3.3.7 Runtime Semantics: KeyedBindingInitialization.\n if (start === undefined || start < 0) {\n start = 0\n }\n // Return early if start > this.length. Done here to prevent potential uint32\n // coercion fail below.\n if (start > this.length) {\n return ''\n }\n\n if (end === undefined || end > this.length) {\n end = this.length\n }\n\n if (end <= 0) {\n return ''\n }\n\n // Force coersion to uint32. This will also coerce falsey/NaN values to 0.\n end >>>= 0\n start >>>= 0\n\n if (end <= start) {\n return ''\n }\n\n if (!encoding) encoding = 'utf8'\n\n while (true) {\n switch (encoding) {\n case 'hex':\n return hexSlice(this, start, end)\n\n case 'utf8':\n case 'utf-8':\n return utf8Slice(this, start, end)\n\n case 'ascii':\n return asciiSlice(this, start, end)\n\n case 'latin1':\n case 'binary':\n return latin1Slice(this, start, end)\n\n case 'base64':\n return base64Slice(this, start, end)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return utf16leSlice(this, start, end)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = (encoding + '').toLowerCase()\n loweredCase = true\n }\n }\n}\n\n// The property is used by `Buffer.isBuffer` and `is-buffer` (in Safari 5-7) to detect\n// Buffer instances.\nBuffer.prototype._isBuffer = true\n\nfunction swap (b, n, m) {\n var i = b[n]\n b[n] = b[m]\n b[m] = i\n}\n\nBuffer.prototype.swap16 = function swap16 () {\n var len = this.length\n if (len % 2 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 16-bits')\n }\n for (var i = 0; i < len; i += 2) {\n swap(this, i, i + 1)\n }\n return this\n}\n\nBuffer.prototype.swap32 = function swap32 () {\n var len = this.length\n if (len % 4 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 32-bits')\n }\n for (var i = 0; i < len; i += 4) {\n swap(this, i, i + 3)\n swap(this, i + 1, i + 2)\n }\n return this\n}\n\nBuffer.prototype.swap64 = function swap64 () {\n var len = this.length\n if (len % 8 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 64-bits')\n }\n for (var i = 0; i < len; i += 8) {\n swap(this, i, i + 7)\n swap(this, i + 1, i + 6)\n swap(this, i + 2, i + 5)\n swap(this, i + 3, i + 4)\n }\n return this\n}\n\nBuffer.prototype.toString = function toString () {\n var length = this.length | 0\n if (length === 0) return ''\n if (arguments.length === 0) return utf8Slice(this, 0, length)\n return slowToString.apply(this, arguments)\n}\n\nBuffer.prototype.equals = function equals (b) {\n if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer')\n if (this === b) return true\n return Buffer.compare(this, b) === 0\n}\n\nBuffer.prototype.inspect = function inspect () {\n var str = ''\n var max = exports.INSPECT_MAX_BYTES\n if (this.length > 0) {\n str = this.toString('hex', 0, max).match(/.{2}/g).join(' ')\n if (this.length > max) str += ' ... '\n }\n return ''\n}\n\nBuffer.prototype.compare = function compare (target, start, end, thisStart, thisEnd) {\n if (!Buffer.isBuffer(target)) {\n throw new TypeError('Argument must be a Buffer')\n }\n\n if (start === undefined) {\n start = 0\n }\n if (end === undefined) {\n end = target ? target.length : 0\n }\n if (thisStart === undefined) {\n thisStart = 0\n }\n if (thisEnd === undefined) {\n thisEnd = this.length\n }\n\n if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) {\n throw new RangeError('out of range index')\n }\n\n if (thisStart >= thisEnd && start >= end) {\n return 0\n }\n if (thisStart >= thisEnd) {\n return -1\n }\n if (start >= end) {\n return 1\n }\n\n start >>>= 0\n end >>>= 0\n thisStart >>>= 0\n thisEnd >>>= 0\n\n if (this === target) return 0\n\n var x = thisEnd - thisStart\n var y = end - start\n var len = Math.min(x, y)\n\n var thisCopy = this.slice(thisStart, thisEnd)\n var targetCopy = target.slice(start, end)\n\n for (var i = 0; i < len; ++i) {\n if (thisCopy[i] !== targetCopy[i]) {\n x = thisCopy[i]\n y = targetCopy[i]\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\n// Finds either the first index of `val` in `buffer` at offset >= `byteOffset`,\n// OR the last index of `val` in `buffer` at offset <= `byteOffset`.\n//\n// Arguments:\n// - buffer - a Buffer to search\n// - val - a string, Buffer, or number\n// - byteOffset - an index into `buffer`; will be clamped to an int32\n// - encoding - an optional encoding, relevant is val is a string\n// - dir - true for indexOf, false for lastIndexOf\nfunction bidirectionalIndexOf (buffer, val, byteOffset, encoding, dir) {\n // Empty buffer means no match\n if (buffer.length === 0) return -1\n\n // Normalize byteOffset\n if (typeof byteOffset === 'string') {\n encoding = byteOffset\n byteOffset = 0\n } else if (byteOffset > 0x7fffffff) {\n byteOffset = 0x7fffffff\n } else if (byteOffset < -0x80000000) {\n byteOffset = -0x80000000\n }\n byteOffset = +byteOffset // Coerce to Number.\n if (isNaN(byteOffset)) {\n // byteOffset: it it's undefined, null, NaN, \"foo\", etc, search whole buffer\n byteOffset = dir ? 0 : (buffer.length - 1)\n }\n\n // Normalize byteOffset: negative offsets start from the end of the buffer\n if (byteOffset < 0) byteOffset = buffer.length + byteOffset\n if (byteOffset >= buffer.length) {\n if (dir) return -1\n else byteOffset = buffer.length - 1\n } else if (byteOffset < 0) {\n if (dir) byteOffset = 0\n else return -1\n }\n\n // Normalize val\n if (typeof val === 'string') {\n val = Buffer.from(val, encoding)\n }\n\n // Finally, search either indexOf (if dir is true) or lastIndexOf\n if (Buffer.isBuffer(val)) {\n // Special case: looking for empty string/buffer always fails\n if (val.length === 0) {\n return -1\n }\n return arrayIndexOf(buffer, val, byteOffset, encoding, dir)\n } else if (typeof val === 'number') {\n val = val & 0xFF // Search for a byte value [0-255]\n if (Buffer.TYPED_ARRAY_SUPPORT &&\n typeof Uint8Array.prototype.indexOf === 'function') {\n if (dir) {\n return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset)\n } else {\n return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset)\n }\n }\n return arrayIndexOf(buffer, [ val ], byteOffset, encoding, dir)\n }\n\n throw new TypeError('val must be string, number or Buffer')\n}\n\nfunction arrayIndexOf (arr, val, byteOffset, encoding, dir) {\n var indexSize = 1\n var arrLength = arr.length\n var valLength = val.length\n\n if (encoding !== undefined) {\n encoding = String(encoding).toLowerCase()\n if (encoding === 'ucs2' || encoding === 'ucs-2' ||\n encoding === 'utf16le' || encoding === 'utf-16le') {\n if (arr.length < 2 || val.length < 2) {\n return -1\n }\n indexSize = 2\n arrLength /= 2\n valLength /= 2\n byteOffset /= 2\n }\n }\n\n function read (buf, i) {\n if (indexSize === 1) {\n return buf[i]\n } else {\n return buf.readUInt16BE(i * indexSize)\n }\n }\n\n var i\n if (dir) {\n var foundIndex = -1\n for (i = byteOffset; i < arrLength; i++) {\n if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) {\n if (foundIndex === -1) foundIndex = i\n if (i - foundIndex + 1 === valLength) return foundIndex * indexSize\n } else {\n if (foundIndex !== -1) i -= i - foundIndex\n foundIndex = -1\n }\n }\n } else {\n if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength\n for (i = byteOffset; i >= 0; i--) {\n var found = true\n for (var j = 0; j < valLength; j++) {\n if (read(arr, i + j) !== read(val, j)) {\n found = false\n break\n }\n }\n if (found) return i\n }\n }\n\n return -1\n}\n\nBuffer.prototype.includes = function includes (val, byteOffset, encoding) {\n return this.indexOf(val, byteOffset, encoding) !== -1\n}\n\nBuffer.prototype.indexOf = function indexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, true)\n}\n\nBuffer.prototype.lastIndexOf = function lastIndexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, false)\n}\n\nfunction hexWrite (buf, string, offset, length) {\n offset = Number(offset) || 0\n var remaining = buf.length - offset\n if (!length) {\n length = remaining\n } else {\n length = Number(length)\n if (length > remaining) {\n length = remaining\n }\n }\n\n // must be an even number of digits\n var strLen = string.length\n if (strLen % 2 !== 0) throw new TypeError('Invalid hex string')\n\n if (length > strLen / 2) {\n length = strLen / 2\n }\n for (var i = 0; i < length; ++i) {\n var parsed = parseInt(string.substr(i * 2, 2), 16)\n if (isNaN(parsed)) return i\n buf[offset + i] = parsed\n }\n return i\n}\n\nfunction utf8Write (buf, string, offset, length) {\n return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nfunction asciiWrite (buf, string, offset, length) {\n return blitBuffer(asciiToBytes(string), buf, offset, length)\n}\n\nfunction latin1Write (buf, string, offset, length) {\n return asciiWrite(buf, string, offset, length)\n}\n\nfunction base64Write (buf, string, offset, length) {\n return blitBuffer(base64ToBytes(string), buf, offset, length)\n}\n\nfunction ucs2Write (buf, string, offset, length) {\n return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nBuffer.prototype.write = function write (string, offset, length, encoding) {\n // Buffer#write(string)\n if (offset === undefined) {\n encoding = 'utf8'\n length = this.length\n offset = 0\n // Buffer#write(string, encoding)\n } else if (length === undefined && typeof offset === 'string') {\n encoding = offset\n length = this.length\n offset = 0\n // Buffer#write(string, offset[, length][, encoding])\n } else if (isFinite(offset)) {\n offset = offset | 0\n if (isFinite(length)) {\n length = length | 0\n if (encoding === undefined) encoding = 'utf8'\n } else {\n encoding = length\n length = undefined\n }\n // legacy write(string, encoding, offset, length) - remove in v0.13\n } else {\n throw new Error(\n 'Buffer.write(string, encoding, offset[, length]) is no longer supported'\n )\n }\n\n var remaining = this.length - offset\n if (length === undefined || length > remaining) length = remaining\n\n if ((string.length > 0 && (length < 0 || offset < 0)) || offset > this.length) {\n throw new RangeError('Attempt to write outside buffer bounds')\n }\n\n if (!encoding) encoding = 'utf8'\n\n var loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'hex':\n return hexWrite(this, string, offset, length)\n\n case 'utf8':\n case 'utf-8':\n return utf8Write(this, string, offset, length)\n\n case 'ascii':\n return asciiWrite(this, string, offset, length)\n\n case 'latin1':\n case 'binary':\n return latin1Write(this, string, offset, length)\n\n case 'base64':\n // Warning: maxLength not taken into account in base64Write\n return base64Write(this, string, offset, length)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return ucs2Write(this, string, offset, length)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\n\nBuffer.prototype.toJSON = function toJSON () {\n return {\n type: 'Buffer',\n data: Array.prototype.slice.call(this._arr || this, 0)\n }\n}\n\nfunction base64Slice (buf, start, end) {\n if (start === 0 && end === buf.length) {\n return base64.fromByteArray(buf)\n } else {\n return base64.fromByteArray(buf.slice(start, end))\n }\n}\n\nfunction utf8Slice (buf, start, end) {\n end = Math.min(buf.length, end)\n var res = []\n\n var i = start\n while (i < end) {\n var firstByte = buf[i]\n var codePoint = null\n var bytesPerSequence = (firstByte > 0xEF) ? 4\n : (firstByte > 0xDF) ? 3\n : (firstByte > 0xBF) ? 2\n : 1\n\n if (i + bytesPerSequence <= end) {\n var secondByte, thirdByte, fourthByte, tempCodePoint\n\n switch (bytesPerSequence) {\n case 1:\n if (firstByte < 0x80) {\n codePoint = firstByte\n }\n break\n case 2:\n secondByte = buf[i + 1]\n if ((secondByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0x1F) << 0x6 | (secondByte & 0x3F)\n if (tempCodePoint > 0x7F) {\n codePoint = tempCodePoint\n }\n }\n break\n case 3:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | (thirdByte & 0x3F)\n if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) {\n codePoint = tempCodePoint\n }\n }\n break\n case 4:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n fourthByte = buf[i + 3]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | (fourthByte & 0x3F)\n if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) {\n codePoint = tempCodePoint\n }\n }\n }\n }\n\n if (codePoint === null) {\n // we did not generate a valid codePoint so insert a\n // replacement char (U+FFFD) and advance only 1 byte\n codePoint = 0xFFFD\n bytesPerSequence = 1\n } else if (codePoint > 0xFFFF) {\n // encode to utf16 (surrogate pair dance)\n codePoint -= 0x10000\n res.push(codePoint >>> 10 & 0x3FF | 0xD800)\n codePoint = 0xDC00 | codePoint & 0x3FF\n }\n\n res.push(codePoint)\n i += bytesPerSequence\n }\n\n return decodeCodePointsArray(res)\n}\n\n// Based on http://stackoverflow.com/a/22747272/680742, the browser with\n// the lowest limit is Chrome, with 0x10000 args.\n// We go 1 magnitude less, for safety\nvar MAX_ARGUMENTS_LENGTH = 0x1000\n\nfunction decodeCodePointsArray (codePoints) {\n var len = codePoints.length\n if (len <= MAX_ARGUMENTS_LENGTH) {\n return String.fromCharCode.apply(String, codePoints) // avoid extra slice()\n }\n\n // Decode in chunks to avoid \"call stack size exceeded\".\n var res = ''\n var i = 0\n while (i < len) {\n res += String.fromCharCode.apply(\n String,\n codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH)\n )\n }\n return res\n}\n\nfunction asciiSlice (buf, start, end) {\n var ret = ''\n end = Math.min(buf.length, end)\n\n for (var i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i] & 0x7F)\n }\n return ret\n}\n\nfunction latin1Slice (buf, start, end) {\n var ret = ''\n end = Math.min(buf.length, end)\n\n for (var i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i])\n }\n return ret\n}\n\nfunction hexSlice (buf, start, end) {\n var len = buf.length\n\n if (!start || start < 0) start = 0\n if (!end || end < 0 || end > len) end = len\n\n var out = ''\n for (var i = start; i < end; ++i) {\n out += toHex(buf[i])\n }\n return out\n}\n\nfunction utf16leSlice (buf, start, end) {\n var bytes = buf.slice(start, end)\n var res = ''\n for (var i = 0; i < bytes.length; i += 2) {\n res += String.fromCharCode(bytes[i] + bytes[i + 1] * 256)\n }\n return res\n}\n\nBuffer.prototype.slice = function slice (start, end) {\n var len = this.length\n start = ~~start\n end = end === undefined ? len : ~~end\n\n if (start < 0) {\n start += len\n if (start < 0) start = 0\n } else if (start > len) {\n start = len\n }\n\n if (end < 0) {\n end += len\n if (end < 0) end = 0\n } else if (end > len) {\n end = len\n }\n\n if (end < start) end = start\n\n var newBuf\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n newBuf = this.subarray(start, end)\n newBuf.__proto__ = Buffer.prototype\n } else {\n var sliceLen = end - start\n newBuf = new Buffer(sliceLen, undefined)\n for (var i = 0; i < sliceLen; ++i) {\n newBuf[i] = this[i + start]\n }\n }\n\n return newBuf\n}\n\n/*\n * Need to make sure that buffer isn't trying to write out of bounds.\n */\nfunction checkOffset (offset, ext, length) {\n if ((offset % 1) !== 0 || offset < 0) throw new RangeError('offset is not uint')\n if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length')\n}\n\nBuffer.prototype.readUIntLE = function readUIntLE (offset, byteLength, noAssert) {\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var val = this[offset]\n var mul = 1\n var i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUIntBE = function readUIntBE (offset, byteLength, noAssert) {\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) {\n checkOffset(offset, byteLength, this.length)\n }\n\n var val = this[offset + --byteLength]\n var mul = 1\n while (byteLength > 0 && (mul *= 0x100)) {\n val += this[offset + --byteLength] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUInt8 = function readUInt8 (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 1, this.length)\n return this[offset]\n}\n\nBuffer.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length)\n return this[offset] | (this[offset + 1] << 8)\n}\n\nBuffer.prototype.readUInt16BE = function readUInt16BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length)\n return (this[offset] << 8) | this[offset + 1]\n}\n\nBuffer.prototype.readUInt32LE = function readUInt32LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return ((this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16)) +\n (this[offset + 3] * 0x1000000)\n}\n\nBuffer.prototype.readUInt32BE = function readUInt32BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] * 0x1000000) +\n ((this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n this[offset + 3])\n}\n\nBuffer.prototype.readIntLE = function readIntLE (offset, byteLength, noAssert) {\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var val = this[offset]\n var mul = 1\n var i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readIntBE = function readIntBE (offset, byteLength, noAssert) {\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var i = byteLength\n var mul = 1\n var val = this[offset + --i]\n while (i > 0 && (mul *= 0x100)) {\n val += this[offset + --i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readInt8 = function readInt8 (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 1, this.length)\n if (!(this[offset] & 0x80)) return (this[offset])\n return ((0xff - this[offset] + 1) * -1)\n}\n\nBuffer.prototype.readInt16LE = function readInt16LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length)\n var val = this[offset] | (this[offset + 1] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt16BE = function readInt16BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length)\n var val = this[offset + 1] | (this[offset] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt32LE = function readInt32LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16) |\n (this[offset + 3] << 24)\n}\n\nBuffer.prototype.readInt32BE = function readInt32BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] << 24) |\n (this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n (this[offset + 3])\n}\n\nBuffer.prototype.readFloatLE = function readFloatLE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, true, 23, 4)\n}\n\nBuffer.prototype.readFloatBE = function readFloatBE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, false, 23, 4)\n}\n\nBuffer.prototype.readDoubleLE = function readDoubleLE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, true, 52, 8)\n}\n\nBuffer.prototype.readDoubleBE = function readDoubleBE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, false, 52, 8)\n}\n\nfunction checkInt (buf, value, offset, ext, max, min) {\n if (!Buffer.isBuffer(buf)) throw new TypeError('\"buffer\" argument must be a Buffer instance')\n if (value > max || value < min) throw new RangeError('\"value\" argument is out of bounds')\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n}\n\nBuffer.prototype.writeUIntLE = function writeUIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) {\n var maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n var mul = 1\n var i = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUIntBE = function writeUIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) {\n var maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n var i = byteLength - 1\n var mul = 1\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUInt8 = function writeUInt8 (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0)\n if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value)\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nfunction objectWriteUInt16 (buf, value, offset, littleEndian) {\n if (value < 0) value = 0xffff + value + 1\n for (var i = 0, j = Math.min(buf.length - offset, 2); i < j; ++i) {\n buf[offset + i] = (value & (0xff << (8 * (littleEndian ? i : 1 - i)))) >>>\n (littleEndian ? i : 1 - i) * 8\n }\n}\n\nBuffer.prototype.writeUInt16LE = function writeUInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n } else {\n objectWriteUInt16(this, value, offset, true)\n }\n return offset + 2\n}\n\nBuffer.prototype.writeUInt16BE = function writeUInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n } else {\n objectWriteUInt16(this, value, offset, false)\n }\n return offset + 2\n}\n\nfunction objectWriteUInt32 (buf, value, offset, littleEndian) {\n if (value < 0) value = 0xffffffff + value + 1\n for (var i = 0, j = Math.min(buf.length - offset, 4); i < j; ++i) {\n buf[offset + i] = (value >>> (littleEndian ? i : 3 - i) * 8) & 0xff\n }\n}\n\nBuffer.prototype.writeUInt32LE = function writeUInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset + 3] = (value >>> 24)\n this[offset + 2] = (value >>> 16)\n this[offset + 1] = (value >>> 8)\n this[offset] = (value & 0xff)\n } else {\n objectWriteUInt32(this, value, offset, true)\n }\n return offset + 4\n}\n\nBuffer.prototype.writeUInt32BE = function writeUInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n } else {\n objectWriteUInt32(this, value, offset, false)\n }\n return offset + 4\n}\n\nBuffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) {\n var limit = Math.pow(2, 8 * byteLength - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n var i = 0\n var mul = 1\n var sub = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) {\n sub = 1\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeIntBE = function writeIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) {\n var limit = Math.pow(2, 8 * byteLength - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n var i = byteLength - 1\n var mul = 1\n var sub = 0\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) {\n sub = 1\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeInt8 = function writeInt8 (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80)\n if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value)\n if (value < 0) value = 0xff + value + 1\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nBuffer.prototype.writeInt16LE = function writeInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n } else {\n objectWriteUInt16(this, value, offset, true)\n }\n return offset + 2\n}\n\nBuffer.prototype.writeInt16BE = function writeInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n } else {\n objectWriteUInt16(this, value, offset, false)\n }\n return offset + 2\n}\n\nBuffer.prototype.writeInt32LE = function writeInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n this[offset + 2] = (value >>> 16)\n this[offset + 3] = (value >>> 24)\n } else {\n objectWriteUInt32(this, value, offset, true)\n }\n return offset + 4\n}\n\nBuffer.prototype.writeInt32BE = function writeInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n if (value < 0) value = 0xffffffff + value + 1\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n } else {\n objectWriteUInt32(this, value, offset, false)\n }\n return offset + 4\n}\n\nfunction checkIEEE754 (buf, value, offset, ext, max, min) {\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n if (offset < 0) throw new RangeError('Index out of range')\n}\n\nfunction writeFloat (buf, value, offset, littleEndian, noAssert) {\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 4, 3.4028234663852886e+38, -3.4028234663852886e+38)\n }\n ieee754.write(buf, value, offset, littleEndian, 23, 4)\n return offset + 4\n}\n\nBuffer.prototype.writeFloatLE = function writeFloatLE (value, offset, noAssert) {\n return writeFloat(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeFloatBE = function writeFloatBE (value, offset, noAssert) {\n return writeFloat(this, value, offset, false, noAssert)\n}\n\nfunction writeDouble (buf, value, offset, littleEndian, noAssert) {\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 8, 1.7976931348623157E+308, -1.7976931348623157E+308)\n }\n ieee754.write(buf, value, offset, littleEndian, 52, 8)\n return offset + 8\n}\n\nBuffer.prototype.writeDoubleLE = function writeDoubleLE (value, offset, noAssert) {\n return writeDouble(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeDoubleBE = function writeDoubleBE (value, offset, noAssert) {\n return writeDouble(this, value, offset, false, noAssert)\n}\n\n// copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length)\nBuffer.prototype.copy = function copy (target, targetStart, start, end) {\n if (!start) start = 0\n if (!end && end !== 0) end = this.length\n if (targetStart >= target.length) targetStart = target.length\n if (!targetStart) targetStart = 0\n if (end > 0 && end < start) end = start\n\n // Copy 0 bytes; we're done\n if (end === start) return 0\n if (target.length === 0 || this.length === 0) return 0\n\n // Fatal error conditions\n if (targetStart < 0) {\n throw new RangeError('targetStart out of bounds')\n }\n if (start < 0 || start >= this.length) throw new RangeError('sourceStart out of bounds')\n if (end < 0) throw new RangeError('sourceEnd out of bounds')\n\n // Are we oob?\n if (end > this.length) end = this.length\n if (target.length - targetStart < end - start) {\n end = target.length - targetStart + start\n }\n\n var len = end - start\n var i\n\n if (this === target && start < targetStart && targetStart < end) {\n // descending copy from end\n for (i = len - 1; i >= 0; --i) {\n target[i + targetStart] = this[i + start]\n }\n } else if (len < 1000 || !Buffer.TYPED_ARRAY_SUPPORT) {\n // ascending copy from start\n for (i = 0; i < len; ++i) {\n target[i + targetStart] = this[i + start]\n }\n } else {\n Uint8Array.prototype.set.call(\n target,\n this.subarray(start, start + len),\n targetStart\n )\n }\n\n return len\n}\n\n// Usage:\n// buffer.fill(number[, offset[, end]])\n// buffer.fill(buffer[, offset[, end]])\n// buffer.fill(string[, offset[, end]][, encoding])\nBuffer.prototype.fill = function fill (val, start, end, encoding) {\n // Handle string cases:\n if (typeof val === 'string') {\n if (typeof start === 'string') {\n encoding = start\n start = 0\n end = this.length\n } else if (typeof end === 'string') {\n encoding = end\n end = this.length\n }\n if (val.length === 1) {\n var code = val.charCodeAt(0)\n if (code < 256) {\n val = code\n }\n }\n if (encoding !== undefined && typeof encoding !== 'string') {\n throw new TypeError('encoding must be a string')\n }\n if (typeof encoding === 'string' && !Buffer.isEncoding(encoding)) {\n throw new TypeError('Unknown encoding: ' + encoding)\n }\n } else if (typeof val === 'number') {\n val = val & 255\n }\n\n // Invalid ranges are not set to a default, so can range check early.\n if (start < 0 || this.length < start || this.length < end) {\n throw new RangeError('Out of range index')\n }\n\n if (end <= start) {\n return this\n }\n\n start = start >>> 0\n end = end === undefined ? this.length : end >>> 0\n\n if (!val) val = 0\n\n var i\n if (typeof val === 'number') {\n for (i = start; i < end; ++i) {\n this[i] = val\n }\n } else {\n var bytes = Buffer.isBuffer(val)\n ? val\n : utf8ToBytes(new Buffer(val, encoding).toString())\n var len = bytes.length\n for (i = 0; i < end - start; ++i) {\n this[i + start] = bytes[i % len]\n }\n }\n\n return this\n}\n\n// HELPER FUNCTIONS\n// ================\n\nvar INVALID_BASE64_RE = /[^+\\/0-9A-Za-z-_]/g\n\nfunction base64clean (str) {\n // Node strips out invalid characters like \\n and \\t from the string, base64-js does not\n str = stringtrim(str).replace(INVALID_BASE64_RE, '')\n // Node converts strings with length < 2 to ''\n if (str.length < 2) return ''\n // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not\n while (str.length % 4 !== 0) {\n str = str + '='\n }\n return str\n}\n\nfunction stringtrim (str) {\n if (str.trim) return str.trim()\n return str.replace(/^\\s+|\\s+$/g, '')\n}\n\nfunction toHex (n) {\n if (n < 16) return '0' + n.toString(16)\n return n.toString(16)\n}\n\nfunction utf8ToBytes (string, units) {\n units = units || Infinity\n var codePoint\n var length = string.length\n var leadSurrogate = null\n var bytes = []\n\n for (var i = 0; i < length; ++i) {\n codePoint = string.charCodeAt(i)\n\n // is surrogate component\n if (codePoint > 0xD7FF && codePoint < 0xE000) {\n // last char was a lead\n if (!leadSurrogate) {\n // no lead yet\n if (codePoint > 0xDBFF) {\n // unexpected trail\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n } else if (i + 1 === length) {\n // unpaired lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n }\n\n // valid lead\n leadSurrogate = codePoint\n\n continue\n }\n\n // 2 leads in a row\n if (codePoint < 0xDC00) {\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n leadSurrogate = codePoint\n continue\n }\n\n // valid surrogate pair\n codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000\n } else if (leadSurrogate) {\n // valid bmp char, but last char was a lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n }\n\n leadSurrogate = null\n\n // encode utf8\n if (codePoint < 0x80) {\n if ((units -= 1) < 0) break\n bytes.push(codePoint)\n } else if (codePoint < 0x800) {\n if ((units -= 2) < 0) break\n bytes.push(\n codePoint >> 0x6 | 0xC0,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x10000) {\n if ((units -= 3) < 0) break\n bytes.push(\n codePoint >> 0xC | 0xE0,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x110000) {\n if ((units -= 4) < 0) break\n bytes.push(\n codePoint >> 0x12 | 0xF0,\n codePoint >> 0xC & 0x3F | 0x80,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else {\n throw new Error('Invalid code point')\n }\n }\n\n return bytes\n}\n\nfunction asciiToBytes (str) {\n var byteArray = []\n for (var i = 0; i < str.length; ++i) {\n // Node's code seems to be doing this and not & 0x7F..\n byteArray.push(str.charCodeAt(i) & 0xFF)\n }\n return byteArray\n}\n\nfunction utf16leToBytes (str, units) {\n var c, hi, lo\n var byteArray = []\n for (var i = 0; i < str.length; ++i) {\n if ((units -= 2) < 0) break\n\n c = str.charCodeAt(i)\n hi = c >> 8\n lo = c % 256\n byteArray.push(lo)\n byteArray.push(hi)\n }\n\n return byteArray\n}\n\nfunction base64ToBytes (str) {\n return base64.toByteArray(base64clean(str))\n}\n\nfunction blitBuffer (src, dst, offset, length) {\n for (var i = 0; i < length; ++i) {\n if ((i + offset >= dst.length) || (i >= src.length)) break\n dst[i + offset] = src[i]\n }\n return i\n}\n\nfunction isnan (val) {\n return val !== val // eslint-disable-line no-self-compare\n}\n","'use strict';\n\n// VARIABLES //\n\nvar FLOAT32_VIEW = new Float32Array( 1 );\nvar UINT32_VIEW = new Uint32Array( FLOAT32_VIEW.buffer );\n\n// 1 11111111 00000000000000000000000 => 4286578688 => 0xff800000 (see IEEE 754-2008)\nvar NINF = 0xff800000;\n\n// Set the ArrayBuffer bit sequence:\nUINT32_VIEW[ 0 ] = NINF;\n\n\n// EXPORTS //\n\nmodule.exports = FLOAT32_VIEW[ 0 ];\n","'use strict';\n\n// VARIABLES //\n\nvar FLOAT32_VIEW = new Float32Array( 1 );\nvar UINT32_VIEW = new Uint32Array( FLOAT32_VIEW.buffer );\n\n// 0 11111111 00000000000000000000000 => 2139095040 => 0x7f800000 (see IEEE 754-2008)\nvar PINF = 0x7f800000;\n\n// Set the ArrayBuffer bit sequence:\nUINT32_VIEW[ 0 ] = PINF;\n\n\n// EXPORTS //\n\nmodule.exports = FLOAT32_VIEW[ 0 ];\n","/*! dicom-parser - 1.8.1 - 2018-05-16 | (c) 2017 Chris Hafey | https://github.com/cornerstonejs/dicomParser */\n!function(e,t){\"object\"==typeof exports&&\"object\"==typeof module?module.exports=t():\"function\"==typeof define&&define.amd?define(\"dicom-parser\",[],t):\"object\"==typeof exports?exports[\"dicom-parser\"]=t():e.dicomParser=t()}(this,function(){return function(e){var t={};function r(n){if(t[n])return t[n].exports;var i=t[n]={i:n,l:!1,exports:{}};return e[n].call(i.exports,i,i.exports,r),i.l=!0,i.exports}return r.m=e,r.c=t,r.d=function(e,t,n){r.o(e,t)||Object.defineProperty(e,t,{configurable:!1,enumerable:!0,get:n})},r.r=function(e){Object.defineProperty(e,\"__esModule\",{value:!0})},r.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return r.d(t,\"a\",t),t},r.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},r.p=\"\",r(r.s=79)}([function(e,t){var r;r=function(){return this}();try{r=r||Function(\"return this\")()||(0,eval)(\"this\")}catch(e){\"object\"==typeof window&&(r=window)}e.exports=r},function(e,t,r){\"use strict\";(function(e){\n/*!\n * The buffer module from node.js, for the browser.\n *\n * @author Feross Aboukhadijeh \n * @license MIT\n */\nvar n=r(73),i=r(72),a=r(38);function o(){return f.TYPED_ARRAY_SUPPORT?2147483647:1073741823}function s(e,t){if(o()=o())throw new RangeError(\"Attempt to allocate Buffer larger than maximum size: 0x\"+o().toString(16)+\" bytes\");return 0|e}function p(e,t){if(f.isBuffer(e))return e.length;if(\"undefined\"!=typeof ArrayBuffer&&\"function\"==typeof ArrayBuffer.isView&&(ArrayBuffer.isView(e)||e instanceof ArrayBuffer))return e.byteLength;\"string\"!=typeof e&&(e=\"\"+e);var r=e.length;if(0===r)return 0;for(var n=!1;;)switch(t){case\"ascii\":case\"latin1\":case\"binary\":return r;case\"utf8\":case\"utf-8\":case void 0:return z(e).length;case\"ucs2\":case\"ucs-2\":case\"utf16le\":case\"utf-16le\":return 2*r;case\"hex\":return r>>>1;case\"base64\":return Z(e).length;default:if(n)return z(e).length;t=(\"\"+t).toLowerCase(),n=!0}}function g(e,t,r){var n=e[t];e[t]=e[r],e[r]=n}function m(e,t,r,n,i){if(0===e.length)return-1;if(\"string\"==typeof r?(n=r,r=0):r>2147483647?r=2147483647:r<-2147483648&&(r=-2147483648),r=+r,isNaN(r)&&(r=i?0:e.length-1),r<0&&(r=e.length+r),r>=e.length){if(i)return-1;r=e.length-1}else if(r<0){if(!i)return-1;r=0}if(\"string\"==typeof t&&(t=f.from(t,n)),f.isBuffer(t))return 0===t.length?-1:_(e,t,r,n,i);if(\"number\"==typeof t)return t&=255,f.TYPED_ARRAY_SUPPORT&&\"function\"==typeof Uint8Array.prototype.indexOf?i?Uint8Array.prototype.indexOf.call(e,t,r):Uint8Array.prototype.lastIndexOf.call(e,t,r):_(e,[t],r,n,i);throw new TypeError(\"val must be string, number or Buffer\")}function _(e,t,r,n,i){var a,o=1,s=e.length,f=t.length;if(void 0!==n&&(\"ucs2\"===(n=String(n).toLowerCase())||\"ucs-2\"===n||\"utf16le\"===n||\"utf-16le\"===n)){if(e.length<2||t.length<2)return-1;o=2,s/=2,f/=2,r/=2}function l(e,t){return 1===o?e[t]:e.readUInt16BE(t*o)}if(i){var u=-1;for(a=r;as&&(r=s-f),a=r;a>=0;a--){for(var h=!0,d=0;di&&(n=i):n=i;var a=t.length;if(a%2!=0)throw new TypeError(\"Invalid hex string\");n>a/2&&(n=a/2);for(var o=0;o>8,i=r%256,a.push(i),a.push(n);return a}(t,e.length-r),e,r,n)}function k(e,t,r){return 0===t&&r===e.length?n.fromByteArray(e):n.fromByteArray(e.slice(t,r))}function S(e,t,r){r=Math.min(e.length,r);for(var n=[],i=t;i239?4:l>223?3:l>191?2:1;if(i+h<=r)switch(h){case 1:l<128&&(u=l);break;case 2:128==(192&(a=e[i+1]))&&(f=(31&l)<<6|63&a)>127&&(u=f);break;case 3:a=e[i+1],o=e[i+2],128==(192&a)&&128==(192&o)&&(f=(15&l)<<12|(63&a)<<6|63&o)>2047&&(f<55296||f>57343)&&(u=f);break;case 4:a=e[i+1],o=e[i+2],s=e[i+3],128==(192&a)&&128==(192&o)&&128==(192&s)&&(f=(15&l)<<18|(63&a)<<12|(63&o)<<6|63&s)>65535&&f<1114112&&(u=f)}null===u?(u=65533,h=1):u>65535&&(u-=65536,n.push(u>>>10&1023|55296),u=56320|1023&u),n.push(u),i+=h}return function(e){var t=e.length;if(t<=A)return String.fromCharCode.apply(String,e);var r=\"\",n=0;for(;nthis.length)return\"\";if((void 0===r||r>this.length)&&(r=this.length),r<=0)return\"\";if((r>>>=0)<=(t>>>=0))return\"\";for(e||(e=\"utf8\");;)switch(e){case\"hex\":return T(this,t,r);case\"utf8\":case\"utf-8\":return S(this,t,r);case\"ascii\":return P(this,t,r);case\"latin1\":case\"binary\":return O(this,t,r);case\"base64\":return k(this,t,r);case\"ucs2\":case\"ucs-2\":case\"utf16le\":case\"utf-16le\":return R(this,t,r);default:if(n)throw new TypeError(\"Unknown encoding: \"+e);e=(e+\"\").toLowerCase(),n=!0}}.apply(this,arguments)},f.prototype.equals=function(e){if(!f.isBuffer(e))throw new TypeError(\"Argument must be a Buffer\");return this===e||0===f.compare(this,e)},f.prototype.inspect=function(){var e=\"\",r=t.INSPECT_MAX_BYTES;return this.length>0&&(e=this.toString(\"hex\",0,r).match(/.{2}/g).join(\" \"),this.length>r&&(e+=\" ... \")),\"\"},f.prototype.compare=function(e,t,r,n,i){if(!f.isBuffer(e))throw new TypeError(\"Argument must be a Buffer\");if(void 0===t&&(t=0),void 0===r&&(r=e?e.length:0),void 0===n&&(n=0),void 0===i&&(i=this.length),t<0||r>e.length||n<0||i>this.length)throw new RangeError(\"out of range index\");if(n>=i&&t>=r)return 0;if(n>=i)return-1;if(t>=r)return 1;if(t>>>=0,r>>>=0,n>>>=0,i>>>=0,this===e)return 0;for(var a=i-n,o=r-t,s=Math.min(a,o),l=this.slice(n,i),u=e.slice(t,r),h=0;hi)&&(r=i),e.length>0&&(r<0||t<0)||t>this.length)throw new RangeError(\"Attempt to write outside buffer bounds\");n||(n=\"utf8\");for(var a=!1;;)switch(n){case\"hex\":return b(this,e,t,r);case\"utf8\":case\"utf-8\":return y(this,e,t,r);case\"ascii\":return v(this,e,t,r);case\"latin1\":case\"binary\":return w(this,e,t,r);case\"base64\":return E(this,e,t,r);case\"ucs2\":case\"ucs-2\":case\"utf16le\":case\"utf-16le\":return x(this,e,t,r);default:if(a)throw new TypeError(\"Unknown encoding: \"+n);n=(\"\"+n).toLowerCase(),a=!0}},f.prototype.toJSON=function(){return{type:\"Buffer\",data:Array.prototype.slice.call(this._arr||this,0)}};var A=4096;function P(e,t,r){var n=\"\";r=Math.min(e.length,r);for(var i=t;in)&&(r=n);for(var i=\"\",a=t;ar)throw new RangeError(\"Trying to access beyond buffer length\")}function D(e,t,r,n,i,a){if(!f.isBuffer(e))throw new TypeError('\"buffer\" argument must be a Buffer instance');if(t>i||te.length)throw new RangeError(\"Index out of range\")}function L(e,t,r,n){t<0&&(t=65535+t+1);for(var i=0,a=Math.min(e.length-r,2);i>>8*(n?i:1-i)}function F(e,t,r,n){t<0&&(t=4294967295+t+1);for(var i=0,a=Math.min(e.length-r,4);i>>8*(n?i:3-i)&255}function U(e,t,r,n,i,a){if(r+n>e.length)throw new RangeError(\"Index out of range\");if(r<0)throw new RangeError(\"Index out of range\")}function B(e,t,r,n,a){return a||U(e,0,r,4),i.write(e,t,r,n,23,4),r+4}function M(e,t,r,n,a){return a||U(e,0,r,8),i.write(e,t,r,n,52,8),r+8}f.prototype.slice=function(e,t){var r,n=this.length;if(e=~~e,t=void 0===t?n:~~t,e<0?(e+=n)<0&&(e=0):e>n&&(e=n),t<0?(t+=n)<0&&(t=0):t>n&&(t=n),t0&&(i*=256);)n+=this[e+--t]*i;return n},f.prototype.readUInt8=function(e,t){return t||I(e,1,this.length),this[e]},f.prototype.readUInt16LE=function(e,t){return t||I(e,2,this.length),this[e]|this[e+1]<<8},f.prototype.readUInt16BE=function(e,t){return t||I(e,2,this.length),this[e]<<8|this[e+1]},f.prototype.readUInt32LE=function(e,t){return t||I(e,4,this.length),(this[e]|this[e+1]<<8|this[e+2]<<16)+16777216*this[e+3]},f.prototype.readUInt32BE=function(e,t){return t||I(e,4,this.length),16777216*this[e]+(this[e+1]<<16|this[e+2]<<8|this[e+3])},f.prototype.readIntLE=function(e,t,r){e|=0,t|=0,r||I(e,t,this.length);for(var n=this[e],i=1,a=0;++a=(i*=128)&&(n-=Math.pow(2,8*t)),n},f.prototype.readIntBE=function(e,t,r){e|=0,t|=0,r||I(e,t,this.length);for(var n=t,i=1,a=this[e+--n];n>0&&(i*=256);)a+=this[e+--n]*i;return a>=(i*=128)&&(a-=Math.pow(2,8*t)),a},f.prototype.readInt8=function(e,t){return t||I(e,1,this.length),128&this[e]?-1*(255-this[e]+1):this[e]},f.prototype.readInt16LE=function(e,t){t||I(e,2,this.length);var r=this[e]|this[e+1]<<8;return 32768&r?4294901760|r:r},f.prototype.readInt16BE=function(e,t){t||I(e,2,this.length);var r=this[e+1]|this[e]<<8;return 32768&r?4294901760|r:r},f.prototype.readInt32LE=function(e,t){return t||I(e,4,this.length),this[e]|this[e+1]<<8|this[e+2]<<16|this[e+3]<<24},f.prototype.readInt32BE=function(e,t){return t||I(e,4,this.length),this[e]<<24|this[e+1]<<16|this[e+2]<<8|this[e+3]},f.prototype.readFloatLE=function(e,t){return t||I(e,4,this.length),i.read(this,e,!0,23,4)},f.prototype.readFloatBE=function(e,t){return t||I(e,4,this.length),i.read(this,e,!1,23,4)},f.prototype.readDoubleLE=function(e,t){return t||I(e,8,this.length),i.read(this,e,!0,52,8)},f.prototype.readDoubleBE=function(e,t){return t||I(e,8,this.length),i.read(this,e,!1,52,8)},f.prototype.writeUIntLE=function(e,t,r,n){(e=+e,t|=0,r|=0,n)||D(this,e,t,r,Math.pow(2,8*r)-1,0);var i=1,a=0;for(this[t]=255&e;++a=0&&(a*=256);)this[t+i]=e/a&255;return t+r},f.prototype.writeUInt8=function(e,t,r){return e=+e,t|=0,r||D(this,e,t,1,255,0),f.TYPED_ARRAY_SUPPORT||(e=Math.floor(e)),this[t]=255&e,t+1},f.prototype.writeUInt16LE=function(e,t,r){return e=+e,t|=0,r||D(this,e,t,2,65535,0),f.TYPED_ARRAY_SUPPORT?(this[t]=255&e,this[t+1]=e>>>8):L(this,e,t,!0),t+2},f.prototype.writeUInt16BE=function(e,t,r){return e=+e,t|=0,r||D(this,e,t,2,65535,0),f.TYPED_ARRAY_SUPPORT?(this[t]=e>>>8,this[t+1]=255&e):L(this,e,t,!1),t+2},f.prototype.writeUInt32LE=function(e,t,r){return e=+e,t|=0,r||D(this,e,t,4,4294967295,0),f.TYPED_ARRAY_SUPPORT?(this[t+3]=e>>>24,this[t+2]=e>>>16,this[t+1]=e>>>8,this[t]=255&e):F(this,e,t,!0),t+4},f.prototype.writeUInt32BE=function(e,t,r){return e=+e,t|=0,r||D(this,e,t,4,4294967295,0),f.TYPED_ARRAY_SUPPORT?(this[t]=e>>>24,this[t+1]=e>>>16,this[t+2]=e>>>8,this[t+3]=255&e):F(this,e,t,!1),t+4},f.prototype.writeIntLE=function(e,t,r,n){if(e=+e,t|=0,!n){var i=Math.pow(2,8*r-1);D(this,e,t,r,i-1,-i)}var a=0,o=1,s=0;for(this[t]=255&e;++a>0)-s&255;return t+r},f.prototype.writeIntBE=function(e,t,r,n){if(e=+e,t|=0,!n){var i=Math.pow(2,8*r-1);D(this,e,t,r,i-1,-i)}var a=r-1,o=1,s=0;for(this[t+a]=255&e;--a>=0&&(o*=256);)e<0&&0===s&&0!==this[t+a+1]&&(s=1),this[t+a]=(e/o>>0)-s&255;return t+r},f.prototype.writeInt8=function(e,t,r){return e=+e,t|=0,r||D(this,e,t,1,127,-128),f.TYPED_ARRAY_SUPPORT||(e=Math.floor(e)),e<0&&(e=255+e+1),this[t]=255&e,t+1},f.prototype.writeInt16LE=function(e,t,r){return e=+e,t|=0,r||D(this,e,t,2,32767,-32768),f.TYPED_ARRAY_SUPPORT?(this[t]=255&e,this[t+1]=e>>>8):L(this,e,t,!0),t+2},f.prototype.writeInt16BE=function(e,t,r){return e=+e,t|=0,r||D(this,e,t,2,32767,-32768),f.TYPED_ARRAY_SUPPORT?(this[t]=e>>>8,this[t+1]=255&e):L(this,e,t,!1),t+2},f.prototype.writeInt32LE=function(e,t,r){return e=+e,t|=0,r||D(this,e,t,4,2147483647,-2147483648),f.TYPED_ARRAY_SUPPORT?(this[t]=255&e,this[t+1]=e>>>8,this[t+2]=e>>>16,this[t+3]=e>>>24):F(this,e,t,!0),t+4},f.prototype.writeInt32BE=function(e,t,r){return e=+e,t|=0,r||D(this,e,t,4,2147483647,-2147483648),e<0&&(e=4294967295+e+1),f.TYPED_ARRAY_SUPPORT?(this[t]=e>>>24,this[t+1]=e>>>16,this[t+2]=e>>>8,this[t+3]=255&e):F(this,e,t,!1),t+4},f.prototype.writeFloatLE=function(e,t,r){return B(this,e,t,!0,r)},f.prototype.writeFloatBE=function(e,t,r){return B(this,e,t,!1,r)},f.prototype.writeDoubleLE=function(e,t,r){return M(this,e,t,!0,r)},f.prototype.writeDoubleBE=function(e,t,r){return M(this,e,t,!1,r)},f.prototype.copy=function(e,t,r,n){if(r||(r=0),n||0===n||(n=this.length),t>=e.length&&(t=e.length),t||(t=0),n>0&&n=this.length)throw new RangeError(\"sourceStart out of bounds\");if(n<0)throw new RangeError(\"sourceEnd out of bounds\");n>this.length&&(n=this.length),e.length-t=0;--i)e[i+t]=this[i+r];else if(a<1e3||!f.TYPED_ARRAY_SUPPORT)for(i=0;i>>=0,r=void 0===r?this.length:r>>>0,e||(e=0),\"number\"==typeof e)for(a=t;a55295&&r<57344){if(!i){if(r>56319){(t-=3)>-1&&a.push(239,191,189);continue}if(o+1===n){(t-=3)>-1&&a.push(239,191,189);continue}i=r;continue}if(r<56320){(t-=3)>-1&&a.push(239,191,189),i=r;continue}r=65536+(i-55296<<10|r-56320)}else i&&(t-=3)>-1&&a.push(239,191,189);if(i=null,r<128){if((t-=1)<0)break;a.push(r)}else if(r<2048){if((t-=2)<0)break;a.push(r>>6|192,63&r|128)}else if(r<65536){if((t-=3)<0)break;a.push(r>>12|224,r>>6&63|128,63&r|128)}else{if(!(r<1114112))throw new Error(\"Invalid code point\");if((t-=4)<0)break;a.push(r>>18|240,r>>12&63|128,r>>6&63|128,63&r|128)}}return a}function Z(e){return n.toByteArray(function(e){if((e=function(e){return e.trim?e.trim():e.replace(/^\\s+|\\s+$/g,\"\")}(e).replace(N,\"\")).length<2)return\"\";for(;e.length%4!=0;)e+=\"=\";return e}(e))}function C(e,t,r,n){for(var i=0;i=t.length||i>=e.length);++i)t[i+r]=e[i];return i}}).call(this,r(0))},function(e,t,r){\"use strict\";var n=r(10),i=Object.keys||function(e){var t=[];for(var r in e)t.push(r);return t};e.exports=h;var a=r(6);a.inherits=r(5);var o=r(35),s=r(18);a.inherits(h,o);for(var f=i(s.prototype),l=0;l1)for(var r=1;r0){var r=(0,i.readFixedString)(this.byteArray,t.dataOffset,t.length).match(/\\\\/g);return null===r?1:r.length+1}}},{key:\"string\",value:function(e,t){var r=this.elements[e];if(r&&r.length>0){var n=(0,i.readFixedString)(this.byteArray,r.dataOffset,r.length);return t>=0?n.split(\"\\\\\")[t].trim():n.trim()}}},{key:\"text\",value:function(e,t){var r=this.elements[e];if(r&&r.length>0){var n=(0,i.readFixedString)(this.byteArray,r.dataOffset,r.length);return t>=0?n.split(\"\\\\\")[t].replace(/ +$/,\"\"):n.replace(/ +$/,\"\")}}},{key:\"floatString\",value:function(e,t){var r=this.elements[e];if(r&&r.length>0){t=void 0!==t?t:0;var n=this.string(e,t);if(void 0!==n)return parseFloat(n)}}},{key:\"intString\",value:function(e,t){var r=this.elements[e];if(r&&r.length>0){t=void 0!==t?t:0;var n=this.string(e,t);if(void 0!==n)return parseInt(n)}}},{key:\"attributeTag\",value:function(e){var t=this.elements[e];if(t&&4===t.length){var r=a(t,this.byteArrayParser).readUint16,n=this.byteArray,i=t.dataOffset;return\"x\"+(\"00000000\"+(256*r(n,i)*256+r(n,i+2)).toString(16)).substr(-8)}}}]),e}();t.default=o},function(e,t,r){\"use strict\";var n=\"undefined\"!=typeof Uint8Array&&\"undefined\"!=typeof Uint16Array&&\"undefined\"!=typeof Int32Array;function i(e,t){return Object.prototype.hasOwnProperty.call(e,t)}t.assign=function(e){for(var t=Array.prototype.slice.call(arguments,1);t.length;){var r=t.shift();if(r){if(\"object\"!=typeof r)throw new TypeError(r+\"must be non-object\");for(var n in r)i(r,n)&&(e[n]=r[n])}}return e},t.shrinkBuf=function(e,t){return e.length===t?e:e.subarray?e.subarray(0,t):(e.length=t,e)};var a={arraySet:function(e,t,r,n,i){if(t.subarray&&e.subarray)e.set(t.subarray(r,r+n),i);else for(var a=0;a=n.length)throw\"dicomParser.ByteStream: parameter 'position' cannot be greater than or equal to 'byteArray' length\";this.byteArrayParser=r,this.byteArray=n,this.position=i||0,this.warnings=[]}return i(t,[{key:\"seek\",value:function(e){if(this.position+e<0)throw\"dicomParser.ByteStream.prototype.seek: cannot seek to position < 0\";this.position+=e}},{key:\"readByteStream\",value:function(e){if(this.position+e>this.byteArray.length)throw\"dicomParser.ByteStream.prototype.readByteStream: readByteStream - buffer overread\";var r=(0,o.default)(this.byteArray,this.position,e);return this.position+=e,new t(this.byteArrayParser,r)}},{key:\"readUint16\",value:function(){var e=this.byteArrayParser.readUint16(this.byteArray,this.position);return this.position+=2,e}},{key:\"readUint32\",value:function(){var e=this.byteArrayParser.readUint32(this.byteArray,this.position);return this.position+=4,e}},{key:\"readFixedString\",value:function(e){var t=(0,s.readFixedString)(this.byteArray,this.position,e);return this.position+=e,t}}]),t}();t.default=f}).call(this,r(1).Buffer)},function(e,t,r){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0}),t.default=function(e){if(void 0===e)throw\"dicomParser.readSequenceItem: missing required parameter 'byteStream'\";var t={tag:(0,a.default)(e),length:e.readUint32(),dataOffset:e.position};if(\"xfffee000\"!==t.tag)throw\"dicomParser.readSequenceItem: item tag (FFFE,E000) not found at offset \"+e.position;return t};var n,i=r(4),a=(n=i)&&n.__esModule?n:{default:n}},function(e,t,r){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0}),t.readFixedString=function(e,t,r){if(r<0)throw\"dicomParser.readFixedString - length cannot be less than 0\";if(t+r>e.length)throw\"dicomParser.readFixedString: attempt to read past end of buffer\";for(var n,i=\"\",a=0;a3&&void 0!==arguments[3]?arguments[3]:{};if(r=void 0===r?t.byteArray.length:r,void 0===t)throw\"dicomParser.parseDicomDataSetExplicit: missing required parameter 'byteStream'\";if(rt.byteArray.length)throw\"dicomParser.parseDicomDataSetExplicit: invalid value for parameter 'maxP osition'\";var a=e.elements;for(;t.positionr)throw\"dicomParser:parseDicomDataSetExplicit: buffer overrun\"},t.parseDicomDataSetImplicit=function(e,t,r){var n=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{};if(r=void 0===r?e.byteArray.length:r,void 0===t)throw\"dicomParser.parseDicomDataSetImplicit: missing required parameter 'byteStream'\";if(rt.byteArray.length)throw\"dicomParser.parseDicomDataSetImplicit: invalid value for parameter 'maxPosition'\";var a=e.elements;for(;t.position= 0\";if(r>=t.fragments.length)throw\"dicomParser.readEncapsulatedPixelDataFromFragments: parameter 'startFragmentIndex' must be < number of fragments\";if(s<1)throw\"dicomParser.readEncapsulatedPixelDataFromFragments: parameter 'numFragments' must be > 0\";if(r+s>t.fragments.length)throw\"dicomParser.readEncapsulatedPixelDataFromFragments: parameter 'startFragment' + 'numFragments' < number of fragments\";var u=new i.default(e.byteArrayParser,e.byteArray,t.dataOffset),h=(0,a.default)(u);if(\"xfffee000\"!==h.tag)throw\"dicomParser.readEncapsulatedPixelData: missing basic offset table xfffee000\";u.seek(h.length);var d=u.position;if(1===s)return(0,o.default)(u.byteArray,d+l[r].offset+8,l[r].length);for(var c=f(l,r,s),p=(0,n.default)(u.byteArray,c),g=0,m=r;m-1?n:a.nextTick;b.WritableState=_;var l=r(6);l.inherits=r(5);var u={deprecate:r(61)},h=r(34),d=r(9).Buffer,c=i.Uint8Array||function(){};var p,g=r(33);function m(){}function _(e,t){s=s||r(2),e=e||{};var n=t instanceof s;this.objectMode=!!e.objectMode,n&&(this.objectMode=this.objectMode||!!e.writableObjectMode);var i=e.highWaterMark,l=e.writableHighWaterMark,u=this.objectMode?16:16384;this.highWaterMark=i||0===i?i:n&&(l||0===l)?l:u,this.highWaterMark=Math.floor(this.highWaterMark),this.finalCalled=!1,this.needDrain=!1,this.ending=!1,this.ended=!1,this.finished=!1,this.destroyed=!1;var h=!1===e.decodeStrings;this.decodeStrings=!h,this.defaultEncoding=e.defaultEncoding||\"utf8\",this.length=0,this.writing=!1,this.corked=0,this.sync=!0,this.bufferProcessing=!1,this.onwrite=function(e){!function(e,t){var r=e._writableState,n=r.sync,i=r.writecb;if(function(e){e.writing=!1,e.writecb=null,e.length-=e.writelen,e.writelen=0}(r),t)!function(e,t,r,n,i){--t.pendingcb,r?(a.nextTick(i,n),a.nextTick(k,e,t),e._writableState.errorEmitted=!0,e.emit(\"error\",n)):(i(n),e._writableState.errorEmitted=!0,e.emit(\"error\",n),k(e,t))}(e,r,n,t,i);else{var o=E(r);o||r.corked||r.bufferProcessing||!r.bufferedRequest||w(e,r),n?f(v,e,r,o,i):v(e,r,o,i)}}(t,e)},this.writecb=null,this.writelen=0,this.bufferedRequest=null,this.lastBufferedRequest=null,this.pendingcb=0,this.prefinished=!1,this.errorEmitted=!1,this.bufferedRequestCount=0,this.corkedRequestsFree=new o(this)}function b(e){if(s=s||r(2),!(p.call(b,this)||this instanceof s))return new b(e);this._writableState=new _(e,this),this.writable=!0,e&&(\"function\"==typeof e.write&&(this._write=e.write),\"function\"==typeof e.writev&&(this._writev=e.writev),\"function\"==typeof e.destroy&&(this._destroy=e.destroy),\"function\"==typeof e.final&&(this._final=e.final)),h.call(this)}function y(e,t,r,n,i,a,o){t.writelen=n,t.writecb=o,t.writing=!0,t.sync=!0,r?e._writev(i,t.onwrite):e._write(i,a,t.onwrite),t.sync=!1}function v(e,t,r,n){r||function(e,t){0===t.length&&t.needDrain&&(t.needDrain=!1,e.emit(\"drain\"))}(e,t),t.pendingcb--,n(),k(e,t)}function w(e,t){t.bufferProcessing=!0;var r=t.bufferedRequest;if(e._writev&&r&&r.next){var n=t.bufferedRequestCount,i=new Array(n),a=t.corkedRequestsFree;a.entry=r;for(var s=0,f=!0;r;)i[s]=r,r.isBuf||(f=!1),r=r.next,s+=1;i.allBuffers=f,y(e,t,!0,t.length,i,\"\",a.finish),t.pendingcb++,t.lastBufferedRequest=null,a.next?(t.corkedRequestsFree=a.next,a.next=null):t.corkedRequestsFree=new o(t),t.bufferedRequestCount=0}else{for(;r;){var l=r.chunk,u=r.encoding,h=r.callback;if(y(e,t,!1,t.objectMode?1:l.length,l,u,h),r=r.next,t.bufferedRequestCount--,t.writing)break}null===r&&(t.lastBufferedRequest=null)}t.bufferedRequest=r,t.bufferProcessing=!1}function E(e){return e.ending&&0===e.length&&null===e.bufferedRequest&&!e.finished&&!e.writing}function x(e,t){e._final(function(r){t.pendingcb--,r&&e.emit(\"error\",r),t.prefinished=!0,e.emit(\"prefinish\"),k(e,t)})}function k(e,t){var r=E(t);return r&&(!function(e,t){t.prefinished||t.finalCalled||(\"function\"==typeof e._final?(t.pendingcb++,t.finalCalled=!0,a.nextTick(x,e,t)):(t.prefinished=!0,e.emit(\"prefinish\")))}(e,t),0===t.pendingcb&&(t.finished=!0,e.emit(\"finish\"))),r}l.inherits(b,h),_.prototype.getBuffer=function(){for(var e=this.bufferedRequest,t=[];e;)t.push(e),e=e.next;return t},function(){try{Object.defineProperty(_.prototype,\"buffer\",{get:u.deprecate(function(){return this.getBuffer()},\"_writableState.buffer is deprecated. Use _writableState.getBuffer instead.\",\"DEP0003\")})}catch(e){}}(),\"function\"==typeof Symbol&&Symbol.hasInstance&&\"function\"==typeof Function.prototype[Symbol.hasInstance]?(p=Function.prototype[Symbol.hasInstance],Object.defineProperty(b,Symbol.hasInstance,{value:function(e){return!!p.call(this,e)||this===b&&(e&&e._writableState instanceof _)}})):p=function(e){return e instanceof this},b.prototype.pipe=function(){this.emit(\"error\",new Error(\"Cannot pipe, not readable\"))},b.prototype.write=function(e,t,r){var n,i=this._writableState,o=!1,s=!i.objectMode&&(n=e,d.isBuffer(n)||n instanceof c);return s&&!d.isBuffer(e)&&(e=function(e){return d.from(e)}(e)),\"function\"==typeof t&&(r=t,t=null),s?t=\"buffer\":t||(t=i.defaultEncoding),\"function\"!=typeof r&&(r=m),i.ended?function(e,t){var r=new Error(\"write after end\");e.emit(\"error\",r),a.nextTick(t,r)}(this,r):(s||function(e,t,r,n){var i=!0,o=!1;return null===r?o=new TypeError(\"May not write null values to stream\"):\"string\"==typeof r||void 0===r||t.objectMode||(o=new TypeError(\"Invalid non-string/buffer chunk\")),o&&(e.emit(\"error\",o),a.nextTick(n,o),i=!1),i}(this,i,e,r))&&(i.pendingcb++,o=function(e,t,r,n,i,a){if(!r){var o=function(e,t,r){e.objectMode||!1===e.decodeStrings||\"string\"!=typeof t||(t=d.from(t,r));return t}(t,n,i);n!==o&&(r=!0,i=\"buffer\",n=o)}var s=t.objectMode?1:n.length;t.length+=s;var f=t.length-1))throw new TypeError(\"Unknown encoding: \"+e);return this._writableState.defaultEncoding=e,this},b.prototype._write=function(e,t,r){r(new Error(\"_write() is not implemented\"))},b.prototype._writev=null,b.prototype.end=function(e,t,r){var n=this._writableState;\"function\"==typeof e?(r=e,e=null,t=null):\"function\"==typeof t&&(r=t,t=null),null!==e&&void 0!==e&&this.write(e,t),n.corked&&(n.corked=1,this.uncork()),n.ending||n.finished||function(e,t,r){t.ending=!0,k(e,t),r&&(t.finished?a.nextTick(r):e.once(\"finish\",r));t.ended=!0,e.writable=!1}(this,n,r)},Object.defineProperty(b.prototype,\"destroyed\",{get:function(){return void 0!==this._writableState&&this._writableState.destroyed},set:function(e){this._writableState&&(this._writableState.destroyed=e)}}),b.prototype.destroy=g.destroy,b.prototype._undestroy=g.undestroy,b.prototype._destroy=function(e,t){this.end(),t(e)}}).call(this,r(3),r(63).setImmediate,r(0))},function(e,t,r){(t=e.exports=r(35)).Stream=t,t.Readable=t,t.Writable=r(18),t.Duplex=r(2),t.Transform=r(31),t.PassThrough=r(60)},function(e,t){function r(){this._events=this._events||{},this._maxListeners=this._maxListeners||void 0}function n(e){return\"function\"==typeof e}function i(e){return\"object\"==typeof e&&null!==e}function a(e){return void 0===e}e.exports=r,r.EventEmitter=r,r.prototype._events=void 0,r.prototype._maxListeners=void 0,r.defaultMaxListeners=10,r.prototype.setMaxListeners=function(e){if(\"number\"!=typeof e||e<0||isNaN(e))throw TypeError(\"n must be a positive number\");return this._maxListeners=e,this},r.prototype.emit=function(e){var t,r,o,s,f,l;if(this._events||(this._events={}),\"error\"===e&&(!this._events.error||i(this._events.error)&&!this._events.error.length)){if((t=arguments[1])instanceof Error)throw t;var u=new Error('Uncaught, unspecified \"error\" event. ('+t+\")\");throw u.context=t,u}if(a(r=this._events[e]))return!1;if(n(r))switch(arguments.length){case 1:r.call(this);break;case 2:r.call(this,arguments[1]);break;case 3:r.call(this,arguments[1],arguments[2]);break;default:s=Array.prototype.slice.call(arguments,1),r.apply(this,s)}else if(i(r))for(s=Array.prototype.slice.call(arguments,1),o=(l=r.slice()).length,f=0;f0&&this._events[e].length>o&&(this._events[e].warned=!0,console.error(\"(node) warning: possible EventEmitter memory leak detected. %d listeners added. Use emitter.setMaxListeners() to increase limit.\",this._events[e].length),\"function\"==typeof console.trace&&console.trace()),this},r.prototype.on=r.prototype.addListener,r.prototype.once=function(e,t){if(!n(t))throw TypeError(\"listener must be a function\");var r=!1;function i(){this.removeListener(e,i),r||(r=!0,t.apply(this,arguments))}return i.listener=t,this.on(e,i),this},r.prototype.removeListener=function(e,t){var r,a,o,s;if(!n(t))throw TypeError(\"listener must be a function\");if(!this._events||!this._events[e])return this;if(o=(r=this._events[e]).length,a=-1,r===t||n(r.listener)&&r.listener===t)delete this._events[e],this._events.removeListener&&this.emit(\"removeListener\",e,t);else if(i(r)){for(s=o;s-- >0;)if(r[s]===t||r[s].listener&&r[s].listener===t){a=s;break}if(a<0)return this;1===r.length?(r.length=0,delete this._events[e]):r.splice(a,1),this._events.removeListener&&this.emit(\"removeListener\",e,t)}return this},r.prototype.removeAllListeners=function(e){var t,r;if(!this._events)return this;if(!this._events.removeListener)return 0===arguments.length?this._events={}:this._events[e]&&delete this._events[e],this;if(0===arguments.length){for(t in this._events)\"removeListener\"!==t&&this.removeAllListeners(t);return this.removeAllListeners(\"removeListener\"),this._events={},this}if(n(r=this._events[e]))this.removeListener(e,r);else if(r)for(;r.length;)this.removeListener(e,r[r.length-1]);return delete this._events[e],this},r.prototype.listeners=function(e){return this._events&&this._events[e]?n(this._events[e])?[this._events[e]]:this._events[e].slice():[]},r.prototype.listenerCount=function(e){if(this._events){var t=this._events[e];if(n(t))return 1;if(t)return t.length}return 0},r.listenerCount=function(e,t){return e.listenerCount(t)}},function(e,t,r){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0}),t.default={readUint16:function(e,t){if(t<0)throw\"littleEndianByteArrayParser.readUint16: position cannot be less than 0\";if(t+2>e.length)throw\"littleEndianByteArrayParser.readUint16: attempt to read past end of buffer\";return e[t]+256*e[t+1]},readInt16:function(e,t){if(t<0)throw\"littleEndianByteArrayParser.readInt16: position cannot be less than 0\";if(t+2>e.length)throw\"littleEndianByteArrayParser.readInt16: attempt to read past end of buffer\";var r=e[t]+(e[t+1]<<8);return 32768&r&&(r=r-65535-1),r},readUint32:function(e,t){if(t<0)throw\"littleEndianByteArrayParser.readUint32: position cannot be less than 0\";if(t+4>e.length)throw\"littleEndianByteArrayParser.readUint32: attempt to read past end of buffer\";return e[t]+256*e[t+1]+256*e[t+2]*256+256*e[t+3]*256*256},readInt32:function(e,t){if(t<0)throw\"littleEndianByteArrayParser.readInt32: position cannot be less than 0\";if(t+4>e.length)throw\"littleEndianByteArrayParser.readInt32: attempt to read past end of buffer\";return e[t]+(e[t+1]<<8)+(e[t+2]<<16)+(e[t+3]<<24)},readFloat:function(e,t){if(t<0)throw\"littleEndianByteArrayParser.readFloat: position cannot be less than 0\";if(t+4>e.length)throw\"littleEndianByteArrayParser.readFloat: attempt to read past end of buffer\";var r=new Uint8Array(4);return r[0]=e[t],r[1]=e[t+1],r[2]=e[t+2],r[3]=e[t+3],new Float32Array(r.buffer)[0]},readDouble:function(e,t){if(t<0)throw\"littleEndianByteArrayParser.readDouble: position cannot be less than 0\";if(t+8>e.length)throw\"littleEndianByteArrayParser.readDouble: attempt to read past end of buffer\";var r=new Uint8Array(8);return r[0]=e[t],r[1]=e[t+1],r[2]=e[t+2],r[3]=e[t+3],r[4]=e[t+4],r[5]=e[t+5],r[6]=e[t+6],r[7]=e[t+7],new Float64Array(r.buffer)[0]}}},function(e,t,r){\"use strict\";(function(e){Object.defineProperty(t,\"__esModule\",{value:!0}),t.default=function(t,r){if(void 0!==e&&t instanceof e)return e.alloc(r);if(t instanceof Uint8Array)return new Uint8Array(r);throw\"dicomParser.alloc: unknown type for byteArray\"}}).call(this,r(1).Buffer)},function(e,t,r){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0}),t.default=function(e,t,r){if(void 0===e)throw\"dicomParser.readDicomElementImplicit: missing required parameter 'byteStream'\";var o={tag:(0,a.default)(e),length:e.readUint32(),dataOffset:e.position};4294967295===o.length&&(o.hadUndefinedLength=!0);if(o.tag===t)return o;if(s(o,e,r))return(0,i.default)(e,o),o;if(o.hadUndefinedLength)return(0,n.default)(e,o),o;return e.seek(o.length),o};var n=o(r(24)),i=o(r(39)),a=o(r(4));function o(e){return e&&e.__esModule?e:{default:e}}var s=function(e,t,r){if(void 0!==r)return\"SQ\"===r(e.tag);if(t.position+4<=t.byteArray.length){var n=(0,a.default)(t);return t.seek(-4),\"xfffee000\"===n||\"xfffee0dd\"===n}return t.warnings.push(\"eof encountered before finding sequence item tag or sequence delimiter tag in peeking to determine VR\"),!1}},function(e,t,r){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0}),t.default=function(e,t){if(void 0===e)throw\"dicomParser.readDicomElementImplicit: missing required parameter 'byteStream'\";var r=e.byteArray.length-8;for(;e.position<=r;){var n=e.readUint16();if(65534===n){var i=e.readUint16();if(57357===i){var a=e.readUint32();return 0!==a&&e.warnings(\"encountered non zero length following item delimiter at position \"+(e.position-4)+\" while reading element of undefined length with tag \"+t.tag),void(t.length=e.position-t.dataOffset)}}}t.length=e.byteArray.length-t.dataOffset,e.seek(e.byteArray.length-e.position)}},function(e,t,r){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0});var n={AE:!0,AS:!0,AT:!1,CS:!0,DA:!0,DS:!0,DT:!0,FL:!1,FD:!1,IS:!0,LO:!0,LT:!0,OB:!1,OD:!1,OF:!1,OW:!1,PN:!0,SH:!0,SL:!1,SQ:!1,SS:!1,ST:!0,TM:!0,UI:!0,UL:!1,UN:void 0,UR:!0,US:!1,UT:!0};t.isStringVr=function(e){return n[e]},t.isPrivateTag=function(e){return parseInt(e[4],10)%2==1},t.parsePN=function(e){if(void 0!==e){var t=e.split(\"^\");return{familyName:t[0],givenName:t[1],middleName:t[2],prefix:t[3],suffix:t[4]}}}},function(e,t,r){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0}),t.default=function(e,t,r,n,i){if(n=n||t.basicOffsetTable,i=i||t.fragments,void 0===e)throw\"dicomParser.readEncapsulatedImageFrame: missing required parameter 'dataSet'\";if(void 0===t)throw\"dicomParser.readEncapsulatedImageFrame: missing required parameter 'pixelDataElement'\";if(void 0===r)throw\"dicomParser.readEncapsulatedImageFrame: missing required parameter 'frameIndex'\";if(void 0===n)throw\"dicomParser.readEncapsulatedImageFrame: parameter 'pixelDataElement' does not have basicOffsetTable\";if(\"x7fe00010\"!==t.tag)throw\"dicomParser.readEncapsulatedImageFrame: parameter 'pixelDataElement' refers to non pixel data tag (expected tag = x7fe00010)\";if(!0!==t.encapsulatedPixelData)throw\"dicomParser.readEncapsulatedImageFrame: parameter 'pixelDataElement' refers to pixel data element that does not have encapsulated pixel data\";if(!0!==t.hadUndefinedLength)throw\"dicomParser.readEncapsulatedImageFrame: parameter 'pixelDataElement' refers to pixel data element that does not have undefined length\";if(void 0===t.fragments)throw\"dicomParser.readEncapsulatedImageFrame: parameter 'pixelDataElement' refers to pixel data element that does not have fragments\";if(0===n.length)throw\"dicomParser.readEncapsulatedImageFrame: basicOffsetTable has zero entries\";if(r<0)throw\"dicomParser.readEncapsulatedImageFrame: parameter 'frameIndex' must be >= 0\";if(r>=n.length)throw\"dicomParser.readEncapsulatedImageFrame: parameter 'frameIndex' must be < basicOffsetTable.length\";var f=n[r],l=o(i,f);if(void 0===l)throw\"dicomParser.readEncapsulatedImageFrame: unable to find fragment that matches basic offset table entry\";var u=s(r,n,i,l);return(0,a.default)(e,t,l,u,i)};var n,i=r(17),a=(n=i)&&n.__esModule?n:{default:n};var o=function(e,t){for(var r=0;r>>1:e>>>1;t[r]=e}return t}();e.exports=function(e,t,r,i){var a=n,o=i+r;e^=-1;for(var s=i;s>>8^a[255&(e^t[s])];return-1^e}},function(e,t,r){\"use strict\";e.exports=function(e,t,r,n){for(var i=65535&e|0,a=e>>>16&65535|0,o=0;0!==r;){r-=o=r>2e3?2e3:r;do{a=a+(i=i+t[n++]|0)|0}while(--o);i%=65521,a%=65521}return i|a<<16|0}},function(e,t,r){(function(e,n){var i=/%[sdj%]/g;t.format=function(e){if(!_(e)){for(var t=[],r=0;r=a)return e;switch(e){case\"%s\":return String(n[r++]);case\"%d\":return Number(n[r++]);case\"%j\":try{return JSON.stringify(n[r++])}catch(e){return\"[Circular]\"}default:return e}}),f=n[r];r=3&&(n.depth=arguments[2]),arguments.length>=4&&(n.colors=arguments[3]),p(r)?n.showHidden=r:r&&t._extend(n,r),b(n.showHidden)&&(n.showHidden=!1),b(n.depth)&&(n.depth=2),b(n.colors)&&(n.colors=!1),b(n.customInspect)&&(n.customInspect=!0),n.colors&&(n.stylize=f),u(n,e,n.depth)}function f(e,t){var r=s.styles[t];return r?\"\u001b[\"+s.colors[r][0]+\"m\"+e+\"\u001b[\"+s.colors[r][1]+\"m\":e}function l(e,t){return e}function u(e,r,n){if(e.customInspect&&r&&x(r.inspect)&&r.inspect!==t.inspect&&(!r.constructor||r.constructor.prototype!==r)){var i=r.inspect(n,e);return _(i)||(i=u(e,i,n)),i}var a=function(e,t){if(b(t))return e.stylize(\"undefined\",\"undefined\");if(_(t)){var r=\"'\"+JSON.stringify(t).replace(/^\"|\"$/g,\"\").replace(/'/g,\"\\\\'\").replace(/\\\\\"/g,'\"')+\"'\";return e.stylize(r,\"string\")}if(m(t))return e.stylize(\"\"+t,\"number\");if(p(t))return e.stylize(\"\"+t,\"boolean\");if(g(t))return e.stylize(\"null\",\"null\")}(e,r);if(a)return a;var o=Object.keys(r),s=function(e){var t={};return e.forEach(function(e,r){t[e]=!0}),t}(o);if(e.showHidden&&(o=Object.getOwnPropertyNames(r)),E(r)&&(o.indexOf(\"message\")>=0||o.indexOf(\"description\")>=0))return h(r);if(0===o.length){if(x(r)){var f=r.name?\": \"+r.name:\"\";return e.stylize(\"[Function\"+f+\"]\",\"special\")}if(y(r))return e.stylize(RegExp.prototype.toString.call(r),\"regexp\");if(w(r))return e.stylize(Date.prototype.toString.call(r),\"date\");if(E(r))return h(r)}var l,v=\"\",k=!1,S=[\"{\",\"}\"];(c(r)&&(k=!0,S=[\"[\",\"]\"]),x(r))&&(v=\" [Function\"+(r.name?\": \"+r.name:\"\")+\"]\");return y(r)&&(v=\" \"+RegExp.prototype.toString.call(r)),w(r)&&(v=\" \"+Date.prototype.toUTCString.call(r)),E(r)&&(v=\" \"+h(r)),0!==o.length||k&&0!=r.length?n<0?y(r)?e.stylize(RegExp.prototype.toString.call(r),\"regexp\"):e.stylize(\"[Object]\",\"special\"):(e.seen.push(r),l=k?function(e,t,r,n,i){for(var a=[],o=0,s=t.length;o=0&&0,e+t.replace(/\\u001b\\[\\d\\d?m/g,\"\").length+1},0)>60)return r[0]+(\"\"===t?\"\":t+\"\\n \")+\" \"+e.join(\",\\n \")+\" \"+r[1];return r[0]+t+\" \"+e.join(\", \")+\" \"+r[1]}(l,v,S)):S[0]+v+S[1]}function h(e){return\"[\"+Error.prototype.toString.call(e)+\"]\"}function d(e,t,r,n,i,a){var o,s,f;if((f=Object.getOwnPropertyDescriptor(t,i)||{value:t[i]}).get?s=f.set?e.stylize(\"[Getter/Setter]\",\"special\"):e.stylize(\"[Getter]\",\"special\"):f.set&&(s=e.stylize(\"[Setter]\",\"special\")),P(n,i)||(o=\"[\"+i+\"]\"),s||(e.seen.indexOf(f.value)<0?(s=g(r)?u(e,f.value,null):u(e,f.value,r-1)).indexOf(\"\\n\")>-1&&(s=a?s.split(\"\\n\").map(function(e){return\" \"+e}).join(\"\\n\").substr(2):\"\\n\"+s.split(\"\\n\").map(function(e){return\" \"+e}).join(\"\\n\")):s=e.stylize(\"[Circular]\",\"special\")),b(o)){if(a&&i.match(/^\\d+$/))return s;(o=JSON.stringify(\"\"+i)).match(/^\"([a-zA-Z_][a-zA-Z_0-9]*)\"$/)?(o=o.substr(1,o.length-2),o=e.stylize(o,\"name\")):(o=o.replace(/'/g,\"\\\\'\").replace(/\\\\\"/g,'\"').replace(/(^\"|\"$)/g,\"'\"),o=e.stylize(o,\"string\"))}return o+\": \"+s}function c(e){return Array.isArray(e)}function p(e){return\"boolean\"==typeof e}function g(e){return null===e}function m(e){return\"number\"==typeof e}function _(e){return\"string\"==typeof e}function b(e){return void 0===e}function y(e){return v(e)&&\"[object RegExp]\"===k(e)}function v(e){return\"object\"==typeof e&&null!==e}function w(e){return v(e)&&\"[object Date]\"===k(e)}function E(e){return v(e)&&(\"[object Error]\"===k(e)||e instanceof Error)}function x(e){return\"function\"==typeof e}function k(e){return Object.prototype.toString.call(e)}function S(e){return e<10?\"0\"+e.toString(10):e.toString(10)}t.debuglog=function(e){if(b(a)&&(a=n.env.NODE_DEBUG||\"\"),e=e.toUpperCase(),!o[e])if(new RegExp(\"\\\\b\"+e+\"\\\\b\",\"i\").test(a)){var r=n.pid;o[e]=function(){var n=t.format.apply(t,arguments);console.error(\"%s %d: %s\",e,r,n)}}else o[e]=function(){};return o[e]},t.inspect=s,s.colors={bold:[1,22],italic:[3,23],underline:[4,24],inverse:[7,27],white:[37,39],grey:[90,39],black:[30,39],blue:[34,39],cyan:[36,39],green:[32,39],magenta:[35,39],red:[31,39],yellow:[33,39]},s.styles={special:\"cyan\",number:\"yellow\",boolean:\"yellow\",undefined:\"grey\",null:\"bold\",string:\"green\",date:\"magenta\",regexp:\"red\"},t.isArray=c,t.isBoolean=p,t.isNull=g,t.isNullOrUndefined=function(e){return null==e},t.isNumber=m,t.isString=_,t.isSymbol=function(e){return\"symbol\"==typeof e},t.isUndefined=b,t.isRegExp=y,t.isObject=v,t.isDate=w,t.isError=E,t.isFunction=x,t.isPrimitive=function(e){return null===e||\"boolean\"==typeof e||\"number\"==typeof e||\"string\"==typeof e||\"symbol\"==typeof e||void 0===e},t.isBuffer=r(54);var A=[\"Jan\",\"Feb\",\"Mar\",\"Apr\",\"May\",\"Jun\",\"Jul\",\"Aug\",\"Sep\",\"Oct\",\"Nov\",\"Dec\"];function P(e,t){return Object.prototype.hasOwnProperty.call(e,t)}t.log=function(){var e,r;console.log(\"%s - %s\",(e=new Date,r=[S(e.getHours()),S(e.getMinutes()),S(e.getSeconds())].join(\":\"),[e.getDate(),A[e.getMonth()],r].join(\" \")),t.format.apply(t,arguments))},t.inherits=r(53),t._extend=function(e,t){if(!t||!v(t))return e;for(var r=Object.keys(t),n=r.length;n--;)e[r[n]]=t[r[n]];return e}}).call(this,r(0),r(3))},function(e,t,r){\"use strict\";(function(t){\n/*!\n * The buffer module from node.js, for the browser.\n *\n * @author Feross Aboukhadijeh \n * @license MIT\n */\nfunction n(e,t){if(e===t)return 0;for(var r=e.length,n=t.length,i=0,a=Math.min(r,n);i=0;l--)if(u[l]!==h[l])return!1;for(l=u.length-1;l>=0;l--)if(f=u[l],!b(e[f],t[f],r,n))return!1;return!0}(e,t,r,o))}return r?e===t:e==t}function y(e){return\"[object Arguments]\"==Object.prototype.toString.call(e)}function v(e,t){if(!e||!t)return!1;if(\"[object RegExp]\"==Object.prototype.toString.call(t))return t.test(e);try{if(e instanceof t)return!0}catch(e){}return!Error.isPrototypeOf(t)&&!0===t.call({},e)}function w(e,t,r,n){var i;if(\"function\"!=typeof t)throw new TypeError('\"block\" argument must be a function');\"string\"==typeof r&&(n=r,r=null),i=function(e){var t;try{e()}catch(e){t=e}return t}(t),n=(r&&r.name?\" (\"+r.name+\").\":\".\")+(n?\" \"+n:\".\"),e&&!i&&m(i,r,\"Missing expected exception\"+n);var o=\"string\"==typeof n,s=!e&&a.isError(i),f=!e&&i&&!r;if((s&&o&&v(i,r)||f)&&m(i,r,\"Got unwanted exception\"+n),e&&i&&r&&!v(i,r)||!e&&i)throw i}h.AssertionError=function(e){var t;this.name=\"AssertionError\",this.actual=e.actual,this.expected=e.expected,this.operator=e.operator,e.message?(this.message=e.message,this.generatedMessage=!1):(this.message=p(g((t=this).actual),128)+\" \"+t.operator+\" \"+p(g(t.expected),128),this.generatedMessage=!0);var r=e.stackStartFunction||m;if(Error.captureStackTrace)Error.captureStackTrace(this,r);else{var n=new Error;if(n.stack){var i=n.stack,a=c(r),o=i.indexOf(\"\\n\"+a);if(o>=0){var s=i.indexOf(\"\\n\",o+1);i=i.substring(s+1)}this.stack=i}}},a.inherits(h.AssertionError,Error),h.fail=m,h.ok=_,h.equal=function(e,t,r){e!=t&&m(e,t,r,\"==\",h.equal)},h.notEqual=function(e,t,r){e==t&&m(e,t,r,\"!=\",h.notEqual)},h.deepEqual=function(e,t,r){b(e,t,!1)||m(e,t,r,\"deepEqual\",h.deepEqual)},h.deepStrictEqual=function(e,t,r){b(e,t,!0)||m(e,t,r,\"deepStrictEqual\",h.deepStrictEqual)},h.notDeepEqual=function(e,t,r){b(e,t,!1)&&m(e,t,r,\"notDeepEqual\",h.notDeepEqual)},h.notDeepStrictEqual=function e(t,r,n){b(t,r,!0)&&m(t,r,n,\"notDeepStrictEqual\",e)},h.strictEqual=function(e,t,r){e!==t&&m(e,t,r,\"===\",h.strictEqual)},h.notStrictEqual=function(e,t,r){e===t&&m(e,t,r,\"!==\",h.notStrictEqual)},h.throws=function(e,t,r){w(!0,e,t,r)},h.doesNotThrow=function(e,t,r){w(!1,e,t,r)},h.ifError=function(e){if(e)throw e};var E=Object.keys||function(e){var t=[];for(var r in e)o.call(e,r)&&t.push(r);return t}}).call(this,r(0))},function(e,t,r){\"use strict\";e.exports=a;var n=r(2),i=r(6);function a(e){if(!(this instanceof a))return new a(e);n.call(this,e),this._transformState={afterTransform:function(e,t){var r=this._transformState;r.transforming=!1;var n=r.writecb;if(!n)return this.emit(\"error\",new Error(\"write callback called multiple times\"));r.writechunk=null,r.writecb=null,null!=t&&this.push(t),n(e);var i=this._readableState;i.reading=!1,(i.needReadable||i.length>5==6?2:e>>4==14?3:e>>3==30?4:-1}function s(e){var t=this.lastTotal-this.lastNeed,r=function(e,t,r){if(128!=(192&t[0]))return e.lastNeed=0,\"�\".repeat(r);if(e.lastNeed>1&&t.length>1){if(128!=(192&t[1]))return e.lastNeed=1,\"�\".repeat(r+1);if(e.lastNeed>2&&t.length>2&&128!=(192&t[2]))return e.lastNeed=2,\"�\".repeat(r+2)}}(this,e,t);return void 0!==r?r:this.lastNeed<=e.length?(e.copy(this.lastChar,t,0,this.lastNeed),this.lastChar.toString(this.encoding,0,this.lastTotal)):(e.copy(this.lastChar,t,0,e.length),void(this.lastNeed-=e.length))}function f(e,t){if((e.length-t)%2==0){var r=e.toString(\"utf16le\",t);if(r){var n=r.charCodeAt(r.length-1);if(n>=55296&&n<=56319)return this.lastNeed=2,this.lastTotal=4,this.lastChar[0]=e[e.length-2],this.lastChar[1]=e[e.length-1],r.slice(0,-1)}return r}return this.lastNeed=1,this.lastTotal=2,this.lastChar[0]=e[e.length-1],e.toString(\"utf16le\",t,e.length-1)}function l(e){var t=e&&e.length?this.write(e):\"\";if(this.lastNeed){var r=this.lastTotal-this.lastNeed;return t+this.lastChar.toString(\"utf16le\",0,r)}return t}function u(e,t){var r=(e.length-t)%3;return 0===r?e.toString(\"base64\",t):(this.lastNeed=3-r,this.lastTotal=3,1===r?this.lastChar[0]=e[e.length-1]:(this.lastChar[0]=e[e.length-2],this.lastChar[1]=e[e.length-1]),e.toString(\"base64\",t,e.length-r))}function h(e){var t=e&&e.length?this.write(e):\"\";return this.lastNeed?t+this.lastChar.toString(\"base64\",0,3-this.lastNeed):t}function d(e){return e.toString(this.encoding)}function c(e){return e&&e.length?this.write(e):\"\"}t.StringDecoder=a,a.prototype.write=function(e){if(0===e.length)return\"\";var t,r;if(this.lastNeed){if(void 0===(t=this.fillLast(e)))return\"\";r=this.lastNeed,this.lastNeed=0}else r=0;return r=0)return i>0&&(e.lastNeed=i-1),i;if(--n=0)return i>0&&(e.lastNeed=i-2),i;if(--n=0)return i>0&&(2===i?i=0:e.lastNeed=i-3),i;return 0}(this,e,t);if(!this.lastNeed)return e.toString(\"utf8\",t);this.lastTotal=r;var n=e.length-(r-this.lastNeed);return e.copy(this.lastChar,0,n),e.toString(\"utf8\",t,n)},a.prototype.fillLast=function(e){if(this.lastNeed<=e.length)return e.copy(this.lastChar,this.lastTotal-this.lastNeed,0,this.lastNeed),this.lastChar.toString(this.encoding,0,this.lastTotal);e.copy(this.lastChar,this.lastTotal-this.lastNeed,0,e.length),this.lastNeed-=e.length}},function(e,t,r){\"use strict\";var n=r(10);function i(e,t){e.emit(\"error\",t)}e.exports={destroy:function(e,t){var r=this,a=this._readableState&&this._readableState.destroyed,o=this._writableState&&this._writableState.destroyed;return a||o?(t?t(e):!e||this._writableState&&this._writableState.errorEmitted||n.nextTick(i,this,e),this):(this._readableState&&(this._readableState.destroyed=!0),this._writableState&&(this._writableState.destroyed=!0),this._destroy(e||null,function(e){!t&&e?(n.nextTick(i,r,e),r._writableState&&(r._writableState.errorEmitted=!0)):t&&t(e)}),this)},undestroy:function(){this._readableState&&(this._readableState.destroyed=!1,this._readableState.reading=!1,this._readableState.ended=!1,this._readableState.endEmitted=!1),this._writableState&&(this._writableState.destroyed=!1,this._writableState.ended=!1,this._writableState.ending=!1,this._writableState.finished=!1,this._writableState.errorEmitted=!1)}}},function(e,t,r){e.exports=r(20).EventEmitter},function(e,t,r){\"use strict\";(function(t,n){var i=r(10);e.exports=y;var a,o=r(38);y.ReadableState=b;r(20).EventEmitter;var s=function(e,t){return e.listeners(t).length},f=r(34),l=r(9).Buffer,u=t.Uint8Array||function(){};var h=r(6);h.inherits=r(5);var d=r(66),c=void 0;c=d&&d.debuglog?d.debuglog(\"stream\"):function(){};var p,g=r(65),m=r(33);h.inherits(y,f);var _=[\"error\",\"close\",\"destroy\",\"pause\",\"resume\"];function b(e,t){a=a||r(2),e=e||{};var n=t instanceof a;this.objectMode=!!e.objectMode,n&&(this.objectMode=this.objectMode||!!e.readableObjectMode);var i=e.highWaterMark,o=e.readableHighWaterMark,s=this.objectMode?16:16384;this.highWaterMark=i||0===i?i:n&&(o||0===o)?o:s,this.highWaterMark=Math.floor(this.highWaterMark),this.buffer=new g,this.length=0,this.pipes=null,this.pipesCount=0,this.flowing=null,this.ended=!1,this.endEmitted=!1,this.reading=!1,this.sync=!0,this.needReadable=!1,this.emittedReadable=!1,this.readableListening=!1,this.resumeScheduled=!1,this.destroyed=!1,this.defaultEncoding=e.defaultEncoding||\"utf8\",this.awaitDrain=0,this.readingMore=!1,this.decoder=null,this.encoding=null,e.encoding&&(p||(p=r(32).StringDecoder),this.decoder=new p(e.encoding),this.encoding=e.encoding)}function y(e){if(a=a||r(2),!(this instanceof y))return new y(e);this._readableState=new b(e,this),this.readable=!0,e&&(\"function\"==typeof e.read&&(this._read=e.read),\"function\"==typeof e.destroy&&(this._destroy=e.destroy)),f.call(this)}function v(e,t,r,n,i){var a,o=e._readableState;null===t?(o.reading=!1,function(e,t){if(t.ended)return;if(t.decoder){var r=t.decoder.end();r&&r.length&&(t.buffer.push(r),t.length+=t.objectMode?1:r.length)}t.ended=!0,k(e)}(e,o)):(i||(a=function(e,t){var r;n=t,l.isBuffer(n)||n instanceof u||\"string\"==typeof t||void 0===t||e.objectMode||(r=new TypeError(\"Invalid non-string/buffer chunk\"));var n;return r}(o,t)),a?e.emit(\"error\",a):o.objectMode||t&&t.length>0?(\"string\"==typeof t||o.objectMode||Object.getPrototypeOf(t)===l.prototype||(t=function(e){return l.from(e)}(t)),n?o.endEmitted?e.emit(\"error\",new Error(\"stream.unshift() after end event\")):w(e,o,t,!0):o.ended?e.emit(\"error\",new Error(\"stream.push() after EOF\")):(o.reading=!1,o.decoder&&!r?(t=o.decoder.write(t),o.objectMode||0!==t.length?w(e,o,t,!1):A(e,o)):w(e,o,t,!1))):n||(o.reading=!1));return function(e){return!e.ended&&(e.needReadable||e.lengtht.highWaterMark&&(t.highWaterMark=function(e){return e>=E?e=E:(e--,e|=e>>>1,e|=e>>>2,e|=e>>>4,e|=e>>>8,e|=e>>>16,e++),e}(e)),e<=t.length?e:t.ended?t.length:(t.needReadable=!0,0))}function k(e){var t=e._readableState;t.needReadable=!1,t.emittedReadable||(c(\"emitReadable\",t.flowing),t.emittedReadable=!0,t.sync?i.nextTick(S,e):S(e))}function S(e){c(\"emit readable\"),e.emit(\"readable\"),R(e)}function A(e,t){t.readingMore||(t.readingMore=!0,i.nextTick(P,e,t))}function P(e,t){for(var r=t.length;!t.reading&&!t.flowing&&!t.ended&&t.length=t.length?(r=t.decoder?t.buffer.join(\"\"):1===t.buffer.length?t.buffer.head.data:t.buffer.concat(t.length),t.buffer.clear()):r=function(e,t,r){var n;ea.length?a.length:e;if(o===a.length?i+=a:i+=a.slice(0,e),0===(e-=o)){o===a.length?(++n,r.next?t.head=r.next:t.head=t.tail=null):(t.head=r,r.data=a.slice(o));break}++n}return t.length-=n,i}(e,t):function(e,t){var r=l.allocUnsafe(e),n=t.head,i=1;n.data.copy(r),e-=n.data.length;for(;n=n.next;){var a=n.data,o=e>a.length?a.length:e;if(a.copy(r,r.length-e,0,o),0===(e-=o)){o===a.length?(++i,n.next?t.head=n.next:t.head=t.tail=null):(t.head=n,n.data=a.slice(o));break}++i}return t.length-=i,r}(e,t);return n}(e,t.buffer,t.decoder),r);var r}function D(e){var t=e._readableState;if(t.length>0)throw new Error('\"endReadable()\" called on non-empty stream');t.endEmitted||(t.ended=!0,i.nextTick(L,t,e))}function L(e,t){e.endEmitted||0!==e.length||(e.endEmitted=!0,t.readable=!1,t.emit(\"end\"))}function F(e,t){for(var r=0,n=e.length;r=t.highWaterMark||t.ended))return c(\"read: emitReadable\",t.length,t.ended),0===t.length&&t.ended?D(this):k(this),null;if(0===(e=x(e,t))&&t.ended)return 0===t.length&&D(this),null;var n,i=t.needReadable;return c(\"need readable\",i),(0===t.length||t.length-e0?I(e,t):null)?(t.needReadable=!0,e=0):t.length-=e,0===t.length&&(t.ended||(t.needReadable=!0),r!==e&&t.ended&&D(this)),null!==n&&this.emit(\"data\",n),n},y.prototype._read=function(e){this.emit(\"error\",new Error(\"_read() is not implemented\"))},y.prototype.pipe=function(e,t){var r=this,a=this._readableState;switch(a.pipesCount){case 0:a.pipes=e;break;case 1:a.pipes=[a.pipes,e];break;default:a.pipes.push(e)}a.pipesCount+=1,c(\"pipe count=%d opts=%j\",a.pipesCount,t);var f=(!t||!1!==t.end)&&e!==n.stdout&&e!==n.stderr?u:y;function l(t,n){c(\"onunpipe\"),t===r&&n&&!1===n.hasUnpiped&&(n.hasUnpiped=!0,c(\"cleanup\"),e.removeListener(\"close\",_),e.removeListener(\"finish\",b),e.removeListener(\"drain\",h),e.removeListener(\"error\",m),e.removeListener(\"unpipe\",l),r.removeListener(\"end\",u),r.removeListener(\"end\",y),r.removeListener(\"data\",g),d=!0,!a.awaitDrain||e._writableState&&!e._writableState.needDrain||h())}function u(){c(\"onend\"),e.end()}a.endEmitted?i.nextTick(f):r.once(\"end\",f),e.on(\"unpipe\",l);var h=function(e){return function(){var t=e._readableState;c(\"pipeOnDrain\",t.awaitDrain),t.awaitDrain&&t.awaitDrain--,0===t.awaitDrain&&s(e,\"data\")&&(t.flowing=!0,R(e))}}(r);e.on(\"drain\",h);var d=!1;var p=!1;function g(t){c(\"ondata\"),p=!1,!1!==e.write(t)||p||((1===a.pipesCount&&a.pipes===e||a.pipesCount>1&&-1!==F(a.pipes,e))&&!d&&(c(\"false write response, pause\",r._readableState.awaitDrain),r._readableState.awaitDrain++,p=!0),r.pause())}function m(t){c(\"onerror\",t),y(),e.removeListener(\"error\",m),0===s(e,\"error\")&&e.emit(\"error\",t)}function _(){e.removeListener(\"finish\",b),y()}function b(){c(\"onfinish\"),e.removeListener(\"close\",_),y()}function y(){c(\"unpipe\"),r.unpipe(e)}return r.on(\"data\",g),function(e,t,r){if(\"function\"==typeof e.prependListener)return e.prependListener(t,r);e._events&&e._events[t]?o(e._events[t])?e._events[t].unshift(r):e._events[t]=[r,e._events[t]]:e.on(t,r)}(e,\"error\",m),e.once(\"close\",_),e.once(\"finish\",b),e.emit(\"pipe\",r),a.flowing||(c(\"pipe resume\"),r.resume()),e},y.prototype.unpipe=function(e){var t=this._readableState,r={hasUnpiped:!1};if(0===t.pipesCount)return this;if(1===t.pipesCount)return e&&e!==t.pipes?this:(e||(e=t.pipes),t.pipes=null,t.pipesCount=0,t.flowing=!1,e&&e.emit(\"unpipe\",this,r),this);if(!e){var n=t.pipes,i=t.pipesCount;t.pipes=null,t.pipesCount=0,t.flowing=!1;for(var a=0;a\"x0002ffff\"){r.position=n;break}s.parser=a.default,t[s.tag]=s}var f=new i.default(r.byteArrayParser,r.byteArray,t);return f.warnings=r.warnings,f.position=r.position,f}()};var n=s(r(12)),i=s(r(7)),a=s(r(21)),o=s(r(15));function s(e){return e&&e.__esModule?e:{default:e}}},function(e,t,r){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0}),t.default={readUint16:function(e,t){if(t<0)throw\"bigEndianByteArrayParser.readUint16: position cannot be less than 0\";if(t+2>e.length)throw\"bigEndianByteArrayParser.readUint16: attempt to read past end of buffer\";return(e[t]<<8)+e[t+1]},readInt16:function(e,t){if(t<0)throw\"bigEndianByteArrayParser.readInt16: position cannot be less than 0\";if(t+2>e.length)throw\"bigEndianByteArrayParser.readInt16: attempt to read past end of buffer\";var r=(e[t]<<8)+e[t+1];return 32768&r&&(r=r-65535-1),r},readUint32:function(e,t){if(t<0)throw\"bigEndianByteArrayParser.readUint32: position cannot be less than 0\";if(t+4>e.length)throw\"bigEndianByteArrayParser.readUint32: attempt to read past end of buffer\";return 256*(256*(256*e[t]+e[t+1])+e[t+2])+e[t+3]},readInt32:function(e,t){if(t<0)throw\"bigEndianByteArrayParser.readInt32: position cannot be less than 0\";if(t+4>e.length)throw\"bigEndianByteArrayParser.readInt32: attempt to read past end of buffer\";return(e[t]<<24)+(e[t+1]<<16)+(e[t+2]<<8)+e[t+3]},readFloat:function(e,t){if(t<0)throw\"bigEndianByteArrayParser.readFloat: position cannot be less than 0\";if(t+4>e.length)throw\"bigEndianByteArrayParser.readFloat: attempt to read past end of buffer\";var r=new Uint8Array(4);return r[3]=e[t],r[2]=e[t+1],r[1]=e[t+2],r[0]=e[t+3],new Float32Array(r.buffer)[0]},readDouble:function(e,t){if(t<0)throw\"bigEndianByteArrayParser.readDouble: position cannot be less than 0\";if(t+8>e.length)throw\"bigEndianByteArrayParser.readDouble: attempt to read past end of buffer\";var r=new Uint8Array(8);return r[7]=e[t],r[6]=e[t+1],r[5]=e[t+2],r[4]=e[t+3],r[3]=e[t+4],r[2]=e[t+5],r[1]=e[t+6],r[0]=e[t+7],new Float64Array(r.buffer)[0]}}},function(e,t){var r={}.toString;e.exports=Array.isArray||function(e){return\"[object Array]\"==r.call(e)}},function(e,t,r){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0}),t.default=function(e,t,r){if(void 0===e)throw\"dicomParser.readSequenceItemsImplicit: missing required parameter 'byteStream'\";if(void 0===t)throw\"dicomParser.readSequenceItemsImplicit: missing required parameter 'element'\";t.items=[],4294967295===t.length?function(e,t,r){for(;e.position+4<=e.byteArray.length;){var n=(0,o.default)(e);if(e.seek(-4),\"xfffee0dd\"===n)return t.length=e.position-t.dataOffset,e.seek(8),t;var i=l(e,r);t.items.push(i)}e.warnings.push(\"eof encountered before finding sequence delimiter in sequence of undefined length\"),t.length=e.byteArray.length-t.dataOffset}(e,t,r):function(e,t,r){var n=t.dataOffset+t.length;for(;e.positione.byteArray.length-e.position&&(l=e.byteArray.length-e.position),t.fragments.push({offset:e.position-s-8,position:e.position,length:l}),e.seek(l),void(t.length=e.position-t.dataOffset);t.fragments.push({offset:e.position-s-8,position:e.position,length:l}),e.seek(l)}r&&r.push(\"pixel data element \"+t.tag+\" missing sequence delimiter tag xfffee0dd\")};var n,i=r(4),a=(n=i)&&n.__esModule?n:{default:n}},function(e,t,r){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0}),t.default=function(e,t){if(void 0===e||void 0===t)throw\"dicomParser.explicitElementToString: missing required parameters\";if(void 0===t.vr)throw\"dicomParser.explicitElementToString: cannot convert implicit element to string\";var r,i=t.vr,a=t.tag;function o(t,r){for(var n=\"\",i=0;i= 0\";if(0!==t.basicOffsetTable.length)return(0,n.default)(e,t,r);return(0,i.default)(e,t,0,t.fragments.length)};var n=a(r(26)),i=a(r(17));function a(e){return e&&e.__esModule?e:{default:e}}var o=!1},function(e,t,r){\"use strict\";e.exports={Z_NO_FLUSH:0,Z_PARTIAL_FLUSH:1,Z_SYNC_FLUSH:2,Z_FULL_FLUSH:3,Z_FINISH:4,Z_BLOCK:5,Z_TREES:6,Z_OK:0,Z_STREAM_END:1,Z_NEED_DICT:2,Z_ERRNO:-1,Z_STREAM_ERROR:-2,Z_DATA_ERROR:-3,Z_BUF_ERROR:-5,Z_NO_COMPRESSION:0,Z_BEST_SPEED:1,Z_BEST_COMPRESSION:9,Z_DEFAULT_COMPRESSION:-1,Z_FILTERED:1,Z_HUFFMAN_ONLY:2,Z_RLE:3,Z_FIXED:4,Z_DEFAULT_STRATEGY:0,Z_BINARY:0,Z_TEXT:1,Z_UNKNOWN:2,Z_DEFLATED:8}},function(e,t,r){\"use strict\";var n=r(8),i=[3,4,5,6,7,8,9,10,11,13,15,17,19,23,27,31,35,43,51,59,67,83,99,115,131,163,195,227,258,0,0],a=[16,16,16,16,16,16,16,16,17,17,17,17,18,18,18,18,19,19,19,19,20,20,20,20,21,21,21,21,16,72,78],o=[1,2,3,4,5,7,9,13,17,25,33,49,65,97,129,193,257,385,513,769,1025,1537,2049,3073,4097,6145,8193,12289,16385,24577,0,0],s=[16,16,16,16,17,17,18,18,19,19,20,20,21,21,22,22,23,23,24,24,25,25,26,26,27,27,28,28,29,29,64,64];e.exports=function(e,t,r,f,l,u,h,d){var c,p,g,m,_,b,y,v,w,E=d.bits,x=0,k=0,S=0,A=0,P=0,O=0,T=0,R=0,I=0,D=0,L=null,F=0,U=new n.Buf16(16),B=new n.Buf16(16),M=null,N=0;for(x=0;x<=15;x++)U[x]=0;for(k=0;k=1&&0===U[A];A--);if(P>A&&(P=A),0===A)return l[u++]=20971520,l[u++]=20971520,d.bits=1,0;for(S=1;S0&&(0===e||1!==A))return-1;for(B[1]=0,x=1;x<15;x++)B[x+1]=B[x]+U[x];for(k=0;k852||2===e&&I>592)return 1;for(;;){y=x-T,h[k]b?(v=M[N+h[k]],w=L[F+h[k]]):(v=96,w=0),c=1<>T)+(p-=c)]=y<<24|v<<16|w|0}while(0!==p);for(c=1<>=1;if(0!==c?(D&=c-1,D+=c):D=0,k++,0==--U[x]){if(x===A)break;x=t[r+h[k]]}if(x>P&&(D&m)!==g){for(0===T&&(T=P),_+=S,R=1<<(O=x-T);O+T852||2===e&&I>592)return 1;l[g=D&m]=P<<24|O<<16|_-u|0}}return 0!==D&&(l[_+D]=x-T<<24|64<<16|0),d.bits=P,0}},function(e,t,r){\"use strict\";e.exports=function(e,t){var r,n,i,a,o,s,f,l,u,h,d,c,p,g,m,_,b,y,v,w,E,x,k,S,A;r=e.state,n=e.next_in,S=e.input,i=n+(e.avail_in-5),a=e.next_out,A=e.output,o=a-(t-e.avail_out),s=a+(e.avail_out-257),f=r.dmax,l=r.wsize,u=r.whave,h=r.wnext,d=r.window,c=r.hold,p=r.bits,g=r.lencode,m=r.distcode,_=(1<>>=v=y>>>24,p-=v,0===(v=y>>>16&255))A[a++]=65535&y;else{if(!(16&v)){if(0==(64&v)){y=g[(65535&y)+(c&(1<>>=v,p-=v),p<15&&(c+=S[n++]<>>=v=y>>>24,p-=v,!(16&(v=y>>>16&255))){if(0==(64&v)){y=m[(65535&y)+(c&(1<f){e.msg=\"invalid distance too far back\",r.mode=30;break e}if(c>>>=v,p-=v,E>(v=a-o)){if((v=E-v)>u&&r.sane){e.msg=\"invalid distance too far back\",r.mode=30;break e}if(x=0,k=d,0===h){if(x+=l-v,v2;)A[a++]=k[x++],A[a++]=k[x++],A[a++]=k[x++],w-=3;w&&(A[a++]=k[x++],w>1&&(A[a++]=k[x++]))}else{x=a-E;do{A[a++]=A[x++],A[a++]=A[x++],A[a++]=A[x++],w-=3}while(w>2);w&&(A[a++]=A[x++],w>1&&(A[a++]=A[x++]))}break}}break}}while(n>3,c&=(1<<(p-=w<<3))-1,e.next_in=n,e.next_out=a,e.avail_in=n>>24&255)+(e>>>8&65280)+((65280&e)<<8)+((255&e)<<24)}function ie(e){var t;return e&&e.state?(t=e.state,e.total_in=e.total_out=t.total=0,e.msg=\"\",t.wrap&&(e.adler=1&t.wrap),t.mode=E,t.last=0,t.havedict=0,t.dmax=32768,t.head=null,t.hold=0,t.bits=0,t.lencode=t.lendyn=new n.Buf32(ee),t.distcode=t.distdyn=new n.Buf32(te),t.sane=1,t.back=-1,p):_}function ae(e){var t;return e&&e.state?((t=e.state).wsize=0,t.whave=0,t.wnext=0,ie(e)):_}function oe(e,t){var r,n;return e&&e.state?(n=e.state,t<0?(r=0,t=-t):(r=1+(t>>4),t<48&&(t&=15)),t&&(t<8||t>15)?_:(null!==n.window&&n.wbits!==t&&(n.window=null),n.wrap=r,n.wbits=t,ae(e))):_}function se(e,t){var r,i;return e?(i=new function(){this.mode=0,this.last=!1,this.wrap=0,this.havedict=!1,this.flags=0,this.dmax=0,this.check=0,this.total=0,this.head=null,this.wbits=0,this.wsize=0,this.whave=0,this.wnext=0,this.window=null,this.hold=0,this.bits=0,this.length=0,this.offset=0,this.extra=0,this.lencode=null,this.distcode=null,this.lenbits=0,this.distbits=0,this.ncode=0,this.nlen=0,this.ndist=0,this.have=0,this.next=null,this.lens=new n.Buf16(320),this.work=new n.Buf16(288),this.lendyn=null,this.distdyn=null,this.sane=0,this.back=0,this.was=0},e.state=i,i.window=null,(r=oe(e,t))!==p&&(e.state=null),r):_}var fe,le,ue=!0;function he(e){if(ue){var t;for(fe=new n.Buf32(512),le=new n.Buf32(32),t=0;t<144;)e.lens[t++]=8;for(;t<256;)e.lens[t++]=9;for(;t<280;)e.lens[t++]=7;for(;t<288;)e.lens[t++]=8;for(s(l,e.lens,0,288,fe,0,e.work,{bits:9}),t=0;t<32;)e.lens[t++]=5;s(u,e.lens,0,32,le,0,e.work,{bits:5}),ue=!1}e.lencode=fe,e.lenbits=9,e.distcode=le,e.distbits=5}function de(e,t,r,i){var a,o=e.state;return null===o.window&&(o.wsize=1<=o.wsize?(n.arraySet(o.window,t,r-o.wsize,o.wsize,0),o.wnext=0,o.whave=o.wsize):((a=o.wsize-o.wnext)>i&&(a=i),n.arraySet(o.window,t,r-i,a,o.wnext),(i-=a)?(n.arraySet(o.window,t,r-i,i,0),o.wnext=i,o.whave=o.wsize):(o.wnext+=a,o.wnext===o.wsize&&(o.wnext=0),o.whave>>8&255,r.check=a(r.check,Pe,2,0),se=0,fe=0,r.mode=x;break}if(r.flags=0,r.head&&(r.head.done=!1),!(1&r.wrap)||(((255&se)<<8)+(se>>8))%31){e.msg=\"incorrect header check\",r.mode=X;break}if((15&se)!==w){e.msg=\"unknown compression method\",r.mode=X;break}if(fe-=4,Ee=8+(15&(se>>>=4)),0===r.wbits)r.wbits=Ee;else if(Ee>r.wbits){e.msg=\"invalid window size\",r.mode=X;break}r.dmax=1<>8&1),512&r.flags&&(Pe[0]=255&se,Pe[1]=se>>>8&255,r.check=a(r.check,Pe,2,0)),se=0,fe=0,r.mode=k;case k:for(;fe<32;){if(0===ae)break e;ae--,se+=ee[re++]<>>8&255,Pe[2]=se>>>16&255,Pe[3]=se>>>24&255,r.check=a(r.check,Pe,4,0)),se=0,fe=0,r.mode=S;case S:for(;fe<16;){if(0===ae)break e;ae--,se+=ee[re++]<>8),512&r.flags&&(Pe[0]=255&se,Pe[1]=se>>>8&255,r.check=a(r.check,Pe,2,0)),se=0,fe=0,r.mode=A;case A:if(1024&r.flags){for(;fe<16;){if(0===ae)break e;ae--,se+=ee[re++]<>>8&255,r.check=a(r.check,Pe,2,0)),se=0,fe=0}else r.head&&(r.head.extra=null);r.mode=P;case P:if(1024&r.flags&&((ce=r.length)>ae&&(ce=ae),ce&&(r.head&&(Ee=r.head.extra_len-r.length,r.head.extra||(r.head.extra=new Array(r.head.extra_len)),n.arraySet(r.head.extra,ee,re,ce,Ee)),512&r.flags&&(r.check=a(r.check,ee,ce,re)),ae-=ce,re+=ce,r.length-=ce),r.length))break e;r.length=0,r.mode=O;case O:if(2048&r.flags){if(0===ae)break e;ce=0;do{Ee=ee[re+ce++],r.head&&Ee&&r.length<65536&&(r.head.name+=String.fromCharCode(Ee))}while(Ee&&ce>9&1,r.head.done=!0),e.adler=r.check=0,r.mode=L;break;case I:for(;fe<32;){if(0===ae)break e;ae--,se+=ee[re++]<>>=7&fe,fe-=7&fe,r.mode=V;break}for(;fe<3;){if(0===ae)break e;ae--,se+=ee[re++]<>>=1)){case 0:r.mode=U;break;case 1:if(he(r),r.mode=Z,t===c){se>>>=2,fe-=2;break e}break;case 2:r.mode=N;break;case 3:e.msg=\"invalid block type\",r.mode=X}se>>>=2,fe-=2;break;case U:for(se>>>=7&fe,fe-=7&fe;fe<32;){if(0===ae)break e;ae--,se+=ee[re++]<>>16^65535)){e.msg=\"invalid stored block lengths\",r.mode=X;break}if(r.length=65535&se,se=0,fe=0,r.mode=B,t===c)break e;case B:r.mode=M;case M:if(ce=r.length){if(ce>ae&&(ce=ae),ce>oe&&(ce=oe),0===ce)break e;n.arraySet(te,ee,re,ce,ie),ae-=ce,re+=ce,oe-=ce,ie+=ce,r.length-=ce;break}r.mode=L;break;case N:for(;fe<14;){if(0===ae)break e;ae--,se+=ee[re++]<>>=5,fe-=5,r.ndist=1+(31&se),se>>>=5,fe-=5,r.ncode=4+(15&se),se>>>=4,fe-=4,r.nlen>286||r.ndist>30){e.msg=\"too many length or distance symbols\",r.mode=X;break}r.have=0,r.mode=j;case j:for(;r.have>>=3,fe-=3}for(;r.have<19;)r.lens[Oe[r.have++]]=0;if(r.lencode=r.lendyn,r.lenbits=7,ke={bits:r.lenbits},xe=s(f,r.lens,0,19,r.lencode,0,r.work,ke),r.lenbits=ke.bits,xe){e.msg=\"invalid code lengths set\",r.mode=X;break}r.have=0,r.mode=z;case z:for(;r.have>>16&255,be=65535&Ae,!((me=Ae>>>24)<=fe);){if(0===ae)break e;ae--,se+=ee[re++]<>>=me,fe-=me,r.lens[r.have++]=be;else{if(16===be){for(Se=me+2;fe>>=me,fe-=me,0===r.have){e.msg=\"invalid bit length repeat\",r.mode=X;break}Ee=r.lens[r.have-1],ce=3+(3&se),se>>>=2,fe-=2}else if(17===be){for(Se=me+3;fe>>=me)),se>>>=3,fe-=3}else{for(Se=me+7;fe>>=me)),se>>>=7,fe-=7}if(r.have+ce>r.nlen+r.ndist){e.msg=\"invalid bit length repeat\",r.mode=X;break}for(;ce--;)r.lens[r.have++]=Ee}}if(r.mode===X)break;if(0===r.lens[256]){e.msg=\"invalid code -- missing end-of-block\",r.mode=X;break}if(r.lenbits=9,ke={bits:r.lenbits},xe=s(l,r.lens,0,r.nlen,r.lencode,0,r.work,ke),r.lenbits=ke.bits,xe){e.msg=\"invalid literal/lengths set\",r.mode=X;break}if(r.distbits=6,r.distcode=r.distdyn,ke={bits:r.distbits},xe=s(u,r.lens,r.nlen,r.ndist,r.distcode,0,r.work,ke),r.distbits=ke.bits,xe){e.msg=\"invalid distances set\",r.mode=X;break}if(r.mode=Z,t===c)break e;case Z:r.mode=C;case C:if(ae>=6&&oe>=258){e.next_out=ie,e.avail_out=oe,e.next_in=re,e.avail_in=ae,r.hold=se,r.bits=fe,o(e,ue),ie=e.next_out,te=e.output,oe=e.avail_out,re=e.next_in,ee=e.input,ae=e.avail_in,se=r.hold,fe=r.bits,r.mode===L&&(r.back=-1);break}for(r.back=0;_e=(Ae=r.lencode[se&(1<>>16&255,be=65535&Ae,!((me=Ae>>>24)<=fe);){if(0===ae)break e;ae--,se+=ee[re++]<>ye)])>>>16&255,be=65535&Ae,!(ye+(me=Ae>>>24)<=fe);){if(0===ae)break e;ae--,se+=ee[re++]<>>=ye,fe-=ye,r.back+=ye}if(se>>>=me,fe-=me,r.back+=me,r.length=be,0===_e){r.mode=G;break}if(32&_e){r.back=-1,r.mode=L;break}if(64&_e){e.msg=\"invalid literal/length code\",r.mode=X;break}r.extra=15&_e,r.mode=q;case q:if(r.extra){for(Se=r.extra;fe>>=r.extra,fe-=r.extra,r.back+=r.extra}r.was=r.length,r.mode=Y;case Y:for(;_e=(Ae=r.distcode[se&(1<>>16&255,be=65535&Ae,!((me=Ae>>>24)<=fe);){if(0===ae)break e;ae--,se+=ee[re++]<>ye)])>>>16&255,be=65535&Ae,!(ye+(me=Ae>>>24)<=fe);){if(0===ae)break e;ae--,se+=ee[re++]<>>=ye,fe-=ye,r.back+=ye}if(se>>>=me,fe-=me,r.back+=me,64&_e){e.msg=\"invalid distance code\",r.mode=X;break}r.offset=be,r.extra=15&_e,r.mode=W;case W:if(r.extra){for(Se=r.extra;fe>>=r.extra,fe-=r.extra,r.back+=r.extra}if(r.offset>r.dmax){e.msg=\"invalid distance too far back\",r.mode=X;break}r.mode=H;case H:if(0===oe)break e;if(ce=ue-oe,r.offset>ce){if((ce=r.offset-ce)>r.whave&&r.sane){e.msg=\"invalid distance too far back\",r.mode=X;break}ce>r.wnext?(ce-=r.wnext,pe=r.wsize-ce):pe=r.wnext-ce,ce>r.length&&(ce=r.length),ge=r.window}else ge=te,pe=ie-r.offset,ce=r.length;ce>oe&&(ce=oe),oe-=ce,r.length-=ce;do{te[ie++]=ge[pe++]}while(--ce);0===r.length&&(r.mode=C);break;case G:if(0===oe)break e;te[ie++]=r.length,oe--,r.mode=C;break;case V:if(r.wrap){for(;fe<32;){if(0===ae)break e;ae--,se|=ee[re++]<=0;)e[t]=0}var l=0,u=1,h=2,d=29,c=256,p=c+1+d,g=30,m=19,_=2*p+1,b=15,y=16,v=7,w=256,E=16,x=17,k=18,S=[0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0],A=[0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13],P=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,7],O=[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15],T=new Array(2*(p+2));f(T);var R=new Array(2*g);f(R);var I=new Array(512);f(I);var D=new Array(256);f(D);var L=new Array(d);f(L);var F,U,B,M=new Array(g);function N(e,t,r,n,i){this.static_tree=e,this.extra_bits=t,this.extra_base=r,this.elems=n,this.max_length=i,this.has_stree=e&&e.length}function j(e,t){this.dyn_tree=e,this.max_code=0,this.stat_desc=t}function z(e){return e<256?I[e]:I[256+(e>>>7)]}function Z(e,t){e.pending_buf[e.pending++]=255&t,e.pending_buf[e.pending++]=t>>>8&255}function C(e,t,r){e.bi_valid>y-r?(e.bi_buf|=t<>y-e.bi_valid,e.bi_valid+=r-y):(e.bi_buf|=t<>>=1,r<<=1}while(--t>0);return r>>>1}function W(e,t,r){var n,i,a=new Array(b+1),o=0;for(n=1;n<=b;n++)a[n]=o=o+r[n-1]<<1;for(i=0;i<=t;i++){var s=e[2*i+1];0!==s&&(e[2*i]=Y(a[s]++,s))}}function H(e){var t;for(t=0;t8?Z(e,e.bi_buf):e.bi_valid>0&&(e.pending_buf[e.pending++]=e.bi_buf),e.bi_buf=0,e.bi_valid=0}function V(e,t,r,n){var i=2*t,a=2*r;return e[i]>1;r>=1;r--)K(e,a,r);i=f;do{r=e.heap[1],e.heap[1]=e.heap[e.heap_len--],K(e,a,1),n=e.heap[1],e.heap[--e.heap_max]=r,e.heap[--e.heap_max]=n,a[2*i]=a[2*r]+a[2*n],e.depth[i]=(e.depth[r]>=e.depth[n]?e.depth[r]:e.depth[n])+1,a[2*r+1]=a[2*n+1]=i,e.heap[1]=i++,K(e,a,1)}while(e.heap_len>=2);e.heap[--e.heap_max]=e.heap[1],function(e,t){var r,n,i,a,o,s,f=t.dyn_tree,l=t.max_code,u=t.stat_desc.static_tree,h=t.stat_desc.has_stree,d=t.stat_desc.extra_bits,c=t.stat_desc.extra_base,p=t.stat_desc.max_length,g=0;for(a=0;a<=b;a++)e.bl_count[a]=0;for(f[2*e.heap[e.heap_max]+1]=0,r=e.heap_max+1;r<_;r++)(a=f[2*f[2*(n=e.heap[r])+1]+1]+1)>p&&(a=p,g++),f[2*n+1]=a,n>l||(e.bl_count[a]++,o=0,n>=c&&(o=d[n-c]),s=f[2*n],e.opt_len+=s*(a+o),h&&(e.static_len+=s*(u[2*n+1]+o)));if(0!==g){do{for(a=p-1;0===e.bl_count[a];)a--;e.bl_count[a]--,e.bl_count[a+1]+=2,e.bl_count[p]--,g-=2}while(g>0);for(a=p;0!==a;a--)for(n=e.bl_count[a];0!==n;)(i=e.heap[--r])>l||(f[2*i+1]!==a&&(e.opt_len+=(a-f[2*i+1])*f[2*i],f[2*i+1]=a),n--)}}(e,t),W(a,l,e.bl_count)}function $(e,t,r){var n,i,a=-1,o=t[1],s=0,f=7,l=4;for(0===o&&(f=138,l=3),t[2*(r+1)+1]=65535,n=0;n<=r;n++)i=o,o=t[2*(n+1)+1],++s>=7;n0?(e.strm.data_type===s&&(e.strm.data_type=function(e){var t,r=4093624447;for(t=0;t<=31;t++,r>>>=1)if(1&r&&0!==e.dyn_ltree[2*t])return a;if(0!==e.dyn_ltree[18]||0!==e.dyn_ltree[20]||0!==e.dyn_ltree[26])return o;for(t=32;t=3&&0===e.bl_tree[2*O[t]+1];t--);return e.opt_len+=3*(t+1)+5+5+4,t}(e),f=e.opt_len+3+7>>>3,(l=e.static_len+3+7>>>3)<=f&&(f=l)):f=l=r+5,r+4<=f&&-1!==t?te(e,t,r,n):e.strategy===i||l===f?(C(e,(u<<1)+(n?1:0),3),J(e,T,R)):(C(e,(h<<1)+(n?1:0),3),function(e,t,r,n){var i;for(C(e,t-257,5),C(e,r-1,5),C(e,n-4,4),i=0;i>>8&255,e.pending_buf[e.d_buf+2*e.last_lit+1]=255&t,e.pending_buf[e.l_buf+e.last_lit]=255&r,e.last_lit++,0===t?e.dyn_ltree[2*r]++:(e.matches++,t--,e.dyn_ltree[2*(D[r]+c+1)]++,e.dyn_dtree[2*z(t)]++),e.last_lit===e.lit_bufsize-1},t._tr_align=function(e){C(e,u<<1,3),q(e,w,T),function(e){16===e.bi_valid?(Z(e,e.bi_buf),e.bi_buf=0,e.bi_valid=0):e.bi_valid>=8&&(e.pending_buf[e.pending++]=255&e.bi_buf,e.bi_buf>>=8,e.bi_valid-=8)}(e)}},function(e,t,r){\"use strict\";var n,i=r(8),a=r(50),o=r(28),s=r(27),f=r(49),l=0,u=1,h=3,d=4,c=5,p=0,g=1,m=-2,_=-3,b=-5,y=-1,v=1,w=2,E=3,x=4,k=0,S=2,A=8,P=9,O=15,T=8,R=286,I=30,D=19,L=2*R+1,F=15,U=3,B=258,M=B+U+1,N=32,j=42,z=69,Z=73,C=91,q=103,Y=113,W=666,H=1,G=2,V=3,K=4,J=3;function X(e,t){return e.msg=f[t],t}function $(e){return(e<<1)-(e>4?9:0)}function Q(e){for(var t=e.length;--t>=0;)e[t]=0}function ee(e){var t=e.state,r=t.pending;r>e.avail_out&&(r=e.avail_out),0!==r&&(i.arraySet(e.output,t.pending_buf,t.pending_out,r,e.next_out),e.next_out+=r,t.pending_out+=r,e.total_out+=r,e.avail_out-=r,t.pending-=r,0===t.pending&&(t.pending_out=0))}function te(e,t){a._tr_flush_block(e,e.block_start>=0?e.block_start:-1,e.strstart-e.block_start,t),e.block_start=e.strstart,ee(e.strm)}function re(e,t){e.pending_buf[e.pending++]=t}function ne(e,t){e.pending_buf[e.pending++]=t>>>8&255,e.pending_buf[e.pending++]=255&t}function ie(e,t){var r,n,i=e.max_chain_length,a=e.strstart,o=e.prev_length,s=e.nice_match,f=e.strstart>e.w_size-M?e.strstart-(e.w_size-M):0,l=e.window,u=e.w_mask,h=e.prev,d=e.strstart+B,c=l[a+o-1],p=l[a+o];e.prev_length>=e.good_match&&(i>>=2),s>e.lookahead&&(s=e.lookahead);do{if(l[(r=t)+o]===p&&l[r+o-1]===c&&l[r]===l[a]&&l[++r]===l[a+1]){a+=2,r++;do{}while(l[++a]===l[++r]&&l[++a]===l[++r]&&l[++a]===l[++r]&&l[++a]===l[++r]&&l[++a]===l[++r]&&l[++a]===l[++r]&&l[++a]===l[++r]&&l[++a]===l[++r]&&ao){if(e.match_start=t,o=n,n>=s)break;c=l[a+o-1],p=l[a+o]}}}while((t=h[t&u])>f&&0!=--i);return o<=e.lookahead?o:e.lookahead}function ae(e){var t,r,n,a,f,l,u,h,d,c,p=e.w_size;do{if(a=e.window_size-e.lookahead-e.strstart,e.strstart>=p+(p-M)){i.arraySet(e.window,e.window,p,p,0),e.match_start-=p,e.strstart-=p,e.block_start-=p,t=r=e.hash_size;do{n=e.head[--t],e.head[t]=n>=p?n-p:0}while(--r);t=r=p;do{n=e.prev[--t],e.prev[t]=n>=p?n-p:0}while(--r);a+=p}if(0===e.strm.avail_in)break;if(l=e.strm,u=e.window,h=e.strstart+e.lookahead,d=a,c=void 0,(c=l.avail_in)>d&&(c=d),r=0===c?0:(l.avail_in-=c,i.arraySet(u,l.input,l.next_in,c,h),1===l.state.wrap?l.adler=o(l.adler,u,c,h):2===l.state.wrap&&(l.adler=s(l.adler,u,c,h)),l.next_in+=c,l.total_in+=c,c),e.lookahead+=r,e.lookahead+e.insert>=U)for(f=e.strstart-e.insert,e.ins_h=e.window[f],e.ins_h=(e.ins_h<=U&&(e.ins_h=(e.ins_h<=U)if(n=a._tr_tally(e,e.strstart-e.match_start,e.match_length-U),e.lookahead-=e.match_length,e.match_length<=e.max_lazy_match&&e.lookahead>=U){e.match_length--;do{e.strstart++,e.ins_h=(e.ins_h<=U&&(e.ins_h=(e.ins_h<4096)&&(e.match_length=U-1)),e.prev_length>=U&&e.match_length<=e.prev_length){i=e.strstart+e.lookahead-U,n=a._tr_tally(e,e.strstart-1-e.prev_match,e.prev_length-U),e.lookahead-=e.prev_length-1,e.prev_length-=2;do{++e.strstart<=i&&(e.ins_h=(e.ins_h<15&&(s=2,n-=16),a<1||a>P||r!==A||n<8||n>15||t<0||t>9||o<0||o>x)return X(e,m);8===n&&(n=9);var f=new function(){this.strm=null,this.status=0,this.pending_buf=null,this.pending_buf_size=0,this.pending_out=0,this.pending=0,this.wrap=0,this.gzhead=null,this.gzindex=0,this.method=A,this.last_flush=-1,this.w_size=0,this.w_bits=0,this.w_mask=0,this.window=null,this.window_size=0,this.prev=null,this.head=null,this.ins_h=0,this.hash_size=0,this.hash_bits=0,this.hash_mask=0,this.hash_shift=0,this.block_start=0,this.match_length=0,this.prev_match=0,this.match_available=0,this.strstart=0,this.match_start=0,this.lookahead=0,this.prev_length=0,this.max_chain_length=0,this.max_lazy_match=0,this.level=0,this.strategy=0,this.good_match=0,this.nice_match=0,this.dyn_ltree=new i.Buf16(2*L),this.dyn_dtree=new i.Buf16(2*(2*I+1)),this.bl_tree=new i.Buf16(2*(2*D+1)),Q(this.dyn_ltree),Q(this.dyn_dtree),Q(this.bl_tree),this.l_desc=null,this.d_desc=null,this.bl_desc=null,this.bl_count=new i.Buf16(F+1),this.heap=new i.Buf16(2*R+1),Q(this.heap),this.heap_len=0,this.heap_max=0,this.depth=new i.Buf16(2*R+1),Q(this.depth),this.l_buf=0,this.lit_bufsize=0,this.last_lit=0,this.d_buf=0,this.opt_len=0,this.static_len=0,this.matches=0,this.insert=0,this.bi_buf=0,this.bi_valid=0};return e.state=f,f.strm=e,f.wrap=s,f.gzhead=null,f.w_bits=n,f.w_size=1<e.pending_buf_size-5&&(r=e.pending_buf_size-5);;){if(e.lookahead<=1){if(ae(e),0===e.lookahead&&t===l)return H;if(0===e.lookahead)break}e.strstart+=e.lookahead,e.lookahead=0;var n=e.block_start+r;if((0===e.strstart||e.strstart>=n)&&(e.lookahead=e.strstart-n,e.strstart=n,te(e,!1),0===e.strm.avail_out))return H;if(e.strstart-e.block_start>=e.w_size-M&&(te(e,!1),0===e.strm.avail_out))return H}return e.insert=0,t===d?(te(e,!0),0===e.strm.avail_out?V:K):(e.strstart>e.block_start&&(te(e,!1),e.strm.avail_out),H)}),new fe(4,4,8,4,oe),new fe(4,5,16,8,oe),new fe(4,6,32,32,oe),new fe(4,4,16,16,se),new fe(8,16,32,32,se),new fe(8,16,128,128,se),new fe(8,32,128,256,se),new fe(32,128,258,1024,se),new fe(32,258,258,4096,se)],t.deflateInit=function(e,t){return he(e,t,A,O,T,k)},t.deflateInit2=he,t.deflateReset=ue,t.deflateResetKeep=le,t.deflateSetHeader=function(e,t){return e&&e.state?2!==e.state.wrap?m:(e.state.gzhead=t,p):m},t.deflate=function(e,t){var r,i,o,f;if(!e||!e.state||t>c||t<0)return e?X(e,m):m;if(i=e.state,!e.output||!e.input&&0!==e.avail_in||i.status===W&&t!==d)return X(e,0===e.avail_out?b:m);if(i.strm=e,r=i.last_flush,i.last_flush=t,i.status===j)if(2===i.wrap)e.adler=0,re(i,31),re(i,139),re(i,8),i.gzhead?(re(i,(i.gzhead.text?1:0)+(i.gzhead.hcrc?2:0)+(i.gzhead.extra?4:0)+(i.gzhead.name?8:0)+(i.gzhead.comment?16:0)),re(i,255&i.gzhead.time),re(i,i.gzhead.time>>8&255),re(i,i.gzhead.time>>16&255),re(i,i.gzhead.time>>24&255),re(i,9===i.level?2:i.strategy>=w||i.level<2?4:0),re(i,255&i.gzhead.os),i.gzhead.extra&&i.gzhead.extra.length&&(re(i,255&i.gzhead.extra.length),re(i,i.gzhead.extra.length>>8&255)),i.gzhead.hcrc&&(e.adler=s(e.adler,i.pending_buf,i.pending,0)),i.gzindex=0,i.status=z):(re(i,0),re(i,0),re(i,0),re(i,0),re(i,0),re(i,9===i.level?2:i.strategy>=w||i.level<2?4:0),re(i,J),i.status=Y);else{var _=A+(i.w_bits-8<<4)<<8;_|=(i.strategy>=w||i.level<2?0:i.level<6?1:6===i.level?2:3)<<6,0!==i.strstart&&(_|=N),_+=31-_%31,i.status=Y,ne(i,_),0!==i.strstart&&(ne(i,e.adler>>>16),ne(i,65535&e.adler)),e.adler=1}if(i.status===z)if(i.gzhead.extra){for(o=i.pending;i.gzindex<(65535&i.gzhead.extra.length)&&(i.pending!==i.pending_buf_size||(i.gzhead.hcrc&&i.pending>o&&(e.adler=s(e.adler,i.pending_buf,i.pending-o,o)),ee(e),o=i.pending,i.pending!==i.pending_buf_size));)re(i,255&i.gzhead.extra[i.gzindex]),i.gzindex++;i.gzhead.hcrc&&i.pending>o&&(e.adler=s(e.adler,i.pending_buf,i.pending-o,o)),i.gzindex===i.gzhead.extra.length&&(i.gzindex=0,i.status=Z)}else i.status=Z;if(i.status===Z)if(i.gzhead.name){o=i.pending;do{if(i.pending===i.pending_buf_size&&(i.gzhead.hcrc&&i.pending>o&&(e.adler=s(e.adler,i.pending_buf,i.pending-o,o)),ee(e),o=i.pending,i.pending===i.pending_buf_size)){f=1;break}f=i.gzindexo&&(e.adler=s(e.adler,i.pending_buf,i.pending-o,o)),0===f&&(i.gzindex=0,i.status=C)}else i.status=C;if(i.status===C)if(i.gzhead.comment){o=i.pending;do{if(i.pending===i.pending_buf_size&&(i.gzhead.hcrc&&i.pending>o&&(e.adler=s(e.adler,i.pending_buf,i.pending-o,o)),ee(e),o=i.pending,i.pending===i.pending_buf_size)){f=1;break}f=i.gzindexo&&(e.adler=s(e.adler,i.pending_buf,i.pending-o,o)),0===f&&(i.status=q)}else i.status=q;if(i.status===q&&(i.gzhead.hcrc?(i.pending+2>i.pending_buf_size&&ee(e),i.pending+2<=i.pending_buf_size&&(re(i,255&e.adler),re(i,e.adler>>8&255),e.adler=0,i.status=Y)):i.status=Y),0!==i.pending){if(ee(e),0===e.avail_out)return i.last_flush=-1,p}else if(0===e.avail_in&&$(t)<=$(r)&&t!==d)return X(e,b);if(i.status===W&&0!==e.avail_in)return X(e,b);if(0!==e.avail_in||0!==i.lookahead||t!==l&&i.status!==W){var y=i.strategy===w?function(e,t){for(var r;;){if(0===e.lookahead&&(ae(e),0===e.lookahead)){if(t===l)return H;break}if(e.match_length=0,r=a._tr_tally(e,0,e.window[e.strstart]),e.lookahead--,e.strstart++,r&&(te(e,!1),0===e.strm.avail_out))return H}return e.insert=0,t===d?(te(e,!0),0===e.strm.avail_out?V:K):e.last_lit&&(te(e,!1),0===e.strm.avail_out)?H:G}(i,t):i.strategy===E?function(e,t){for(var r,n,i,o,s=e.window;;){if(e.lookahead<=B){if(ae(e),e.lookahead<=B&&t===l)return H;if(0===e.lookahead)break}if(e.match_length=0,e.lookahead>=U&&e.strstart>0&&(n=s[i=e.strstart-1])===s[++i]&&n===s[++i]&&n===s[++i]){o=e.strstart+B;do{}while(n===s[++i]&&n===s[++i]&&n===s[++i]&&n===s[++i]&&n===s[++i]&&n===s[++i]&&n===s[++i]&&n===s[++i]&&ie.lookahead&&(e.match_length=e.lookahead)}if(e.match_length>=U?(r=a._tr_tally(e,1,e.match_length-U),e.lookahead-=e.match_length,e.strstart+=e.match_length,e.match_length=0):(r=a._tr_tally(e,0,e.window[e.strstart]),e.lookahead--,e.strstart++),r&&(te(e,!1),0===e.strm.avail_out))return H}return e.insert=0,t===d?(te(e,!0),0===e.strm.avail_out?V:K):e.last_lit&&(te(e,!1),0===e.strm.avail_out)?H:G}(i,t):n[i.level].func(i,t);if(y!==V&&y!==K||(i.status=W),y===H||y===V)return 0===e.avail_out&&(i.last_flush=-1),p;if(y===G&&(t===u?a._tr_align(i):t!==c&&(a._tr_stored_block(i,0,0,!1),t===h&&(Q(i.head),0===i.lookahead&&(i.strstart=0,i.block_start=0,i.insert=0))),ee(e),0===e.avail_out))return i.last_flush=-1,p}return t!==d?p:i.wrap<=0?g:(2===i.wrap?(re(i,255&e.adler),re(i,e.adler>>8&255),re(i,e.adler>>16&255),re(i,e.adler>>24&255),re(i,255&e.total_in),re(i,e.total_in>>8&255),re(i,e.total_in>>16&255),re(i,e.total_in>>24&255)):(ne(i,e.adler>>>16),ne(i,65535&e.adler)),ee(e),i.wrap>0&&(i.wrap=-i.wrap),0!==i.pending?p:g)},t.deflateEnd=function(e){var t;return e&&e.state?(t=e.state.status)!==j&&t!==z&&t!==Z&&t!==C&&t!==q&&t!==Y&&t!==W?X(e,m):(e.state=null,t===Y?X(e,_):p):m},t.deflateSetDictionary=function(e,t){var r,n,a,s,f,l,u,h,d=t.length;if(!e||!e.state)return m;if(2===(s=(r=e.state).wrap)||1===s&&r.status!==j||r.lookahead)return m;for(1===s&&(e.adler=o(e.adler,t,d,0)),r.wrap=0,d>=r.w_size&&(0===s&&(Q(r.head),r.strstart=0,r.block_start=0,r.insert=0),h=new i.Buf8(r.w_size),i.arraySet(h,t,d-r.w_size,r.w_size,0),t=h,d=r.w_size),f=e.avail_in,l=e.next_in,u=e.input,e.avail_in=d,e.next_in=0,e.input=t,ae(r);r.lookahead>=U;){n=r.strstart,a=r.lookahead-(U-1);do{r.ins_h=(r.ins_h<t.UNZIP)throw new TypeError(\"Bad argument\");this.dictionary=null,this.err=0,this.flush=0,this.init_done=!1,this.level=0,this.memLevel=0,this.mode=e,this.strategy=0,this.windowBits=0,this.write_in_progress=!1,this.pending_close=!1,this.gzip_id_bytes_read=0}u.prototype.close=function(){this.write_in_progress?this.pending_close=!0:(this.pending_close=!1,i(this.init_done,\"close before init\"),i(this.mode<=t.UNZIP),this.mode===t.DEFLATE||this.mode===t.GZIP||this.mode===t.DEFLATERAW?o.deflateEnd(this.strm):this.mode!==t.INFLATE&&this.mode!==t.GUNZIP&&this.mode!==t.INFLATERAW&&this.mode!==t.UNZIP||s.inflateEnd(this.strm),this.mode=t.NONE,this.dictionary=null)},u.prototype.write=function(e,t,r,n,i,a,o){return this._write(!0,e,t,r,n,i,a,o)},u.prototype.writeSync=function(e,t,r,n,i,a,o){return this._write(!1,e,t,r,n,i,a,o)},u.prototype._write=function(r,a,o,s,f,l,u,h){if(i.equal(arguments.length,8),i(this.init_done,\"write before init\"),i(this.mode!==t.NONE,\"already finalized\"),i.equal(!1,this.write_in_progress,\"write already in progress\"),i.equal(!1,this.pending_close,\"close is pending\"),this.write_in_progress=!0,i.equal(!1,void 0===a,\"must provide flush value\"),this.write_in_progress=!0,a!==t.Z_NO_FLUSH&&a!==t.Z_PARTIAL_FLUSH&&a!==t.Z_SYNC_FLUSH&&a!==t.Z_FULL_FLUSH&&a!==t.Z_FINISH&&a!==t.Z_BLOCK)throw new Error(\"Invalid flush value\");if(null==o&&(o=e.alloc(0),f=0,s=0),this.strm.avail_in=f,this.strm.input=o,this.strm.next_in=s,this.strm.avail_out=h,this.strm.output=l,this.strm.next_out=u,this.flush=a,!r)return this._process(),this._checkError()?this._afterSync():void 0;var d=this;return n.nextTick(function(){d._process(),d._after()}),this},u.prototype._afterSync=function(){var e=this.strm.avail_out,t=this.strm.avail_in;return this.write_in_progress=!1,[t,e]},u.prototype._process=function(){var e=null;switch(this.mode){case t.DEFLATE:case t.GZIP:case t.DEFLATERAW:this.err=o.deflate(this.strm,this.flush);break;case t.UNZIP:switch(this.strm.avail_in>0&&(e=this.strm.next_in),this.gzip_id_bytes_read){case 0:if(null===e)break;if(31!==this.strm.input[e]){this.mode=t.INFLATE;break}if(this.gzip_id_bytes_read=1,e++,1===this.strm.avail_in)break;case 1:if(null===e)break;139===this.strm.input[e]?(this.gzip_id_bytes_read=2,this.mode=t.GUNZIP):this.mode=t.INFLATE;break;default:throw new Error(\"invalid number of gzip magic number bytes read\")}case t.INFLATE:case t.GUNZIP:case t.INFLATERAW:for(this.err=s.inflate(this.strm,this.flush),this.err===t.Z_NEED_DICT&&this.dictionary&&(this.err=s.inflateSetDictionary(this.strm,this.dictionary),this.err===t.Z_OK?this.err=s.inflate(this.strm,this.flush):this.err===t.Z_DATA_ERROR&&(this.err=t.Z_NEED_DICT));this.strm.avail_in>0&&this.mode===t.GUNZIP&&this.err===t.Z_STREAM_END&&0!==this.strm.next_in[0];)this.reset(),this.err=s.inflate(this.strm,this.flush);break;default:throw new Error(\"Unknown mode \"+this.mode)}},u.prototype._checkError=function(){switch(this.err){case t.Z_OK:case t.Z_BUF_ERROR:if(0!==this.strm.avail_out&&this.flush===t.Z_FINISH)return this._error(\"unexpected end of file\"),!1;break;case t.Z_STREAM_END:break;case t.Z_NEED_DICT:return null==this.dictionary?this._error(\"Missing dictionary\"):this._error(\"Bad dictionary\"),!1;default:return this._error(\"Zlib error\"),!1}return!0},u.prototype._after=function(){if(this._checkError()){var e=this.strm.avail_out,t=this.strm.avail_in;this.write_in_progress=!1,this.callback(t,e),this.pending_close&&this.close()}},u.prototype._error=function(e){this.strm.msg&&(e=this.strm.msg),this.onerror(e,this.err),this.write_in_progress=!1,this.pending_close&&this.close()},u.prototype.init=function(e,r,n,a,o){i(4===arguments.length||5===arguments.length,\"init(windowBits, level, memLevel, strategy, [dictionary])\"),i(e>=8&&e<=15,\"invalid windowBits\"),i(r>=-1&&r<=9,\"invalid compression level\"),i(n>=1&&n<=9,\"invalid memlevel\"),i(a===t.Z_FILTERED||a===t.Z_HUFFMAN_ONLY||a===t.Z_RLE||a===t.Z_FIXED||a===t.Z_DEFAULT_STRATEGY,\"invalid strategy\"),this._init(r,e,n,a,o),this._setDictionary()},u.prototype.params=function(){throw new Error(\"deflateParams Not supported\")},u.prototype.reset=function(){this._reset(),this._setDictionary()},u.prototype._init=function(e,r,n,i,f){switch(this.level=e,this.windowBits=r,this.memLevel=n,this.strategy=i,this.flush=t.Z_NO_FLUSH,this.err=t.Z_OK,this.mode!==t.GZIP&&this.mode!==t.GUNZIP||(this.windowBits+=16),this.mode===t.UNZIP&&(this.windowBits+=32),this.mode!==t.DEFLATERAW&&this.mode!==t.INFLATERAW||(this.windowBits=-1*this.windowBits),this.strm=new a,this.mode){case t.DEFLATE:case t.GZIP:case t.DEFLATERAW:this.err=o.deflateInit2(this.strm,this.level,t.Z_DEFLATED,this.windowBits,this.memLevel,this.strategy);break;case t.INFLATE:case t.GUNZIP:case t.INFLATERAW:case t.UNZIP:this.err=s.inflateInit2(this.strm,this.windowBits);break;default:throw new Error(\"Unknown mode \"+this.mode)}this.err!==t.Z_OK&&this._error(\"Init error\"),this.dictionary=f,this.write_in_progress=!1,this.init_done=!0},u.prototype._setDictionary=function(){if(null!=this.dictionary){switch(this.err=t.Z_OK,this.mode){case t.DEFLATE:case t.DEFLATERAW:this.err=o.deflateSetDictionary(this.strm,this.dictionary)}this.err!==t.Z_OK&&this._error(\"Failed to set dictionary\")}},u.prototype._reset=function(){switch(this.err=t.Z_OK,this.mode){case t.DEFLATE:case t.DEFLATERAW:case t.GZIP:this.err=o.deflateReset(this.strm);break;case t.INFLATE:case t.INFLATERAW:case t.GUNZIP:this.err=s.inflateReset(this.strm)}this.err!==t.Z_OK&&this._error(\"Failed to reset stream\")},t.Zlib=u}).call(this,r(1).Buffer,r(3))},function(e,t,r){e.exports=r(19).PassThrough},function(e,t,r){e.exports=r(19).Transform},function(e,t,r){e.exports=r(2)},function(e,t,r){e.exports=r(18)},function(e,t,r){\"use strict\";e.exports=a;var n=r(31),i=r(6);function a(e){if(!(this instanceof a))return new a(e);n.call(this,e)}i.inherits=r(5),i.inherits(a,n),a.prototype._transform=function(e,t,r){r(null,e)}},function(e,t,r){(function(t){function r(e){try{if(!t.localStorage)return!1}catch(e){return!1}var r=t.localStorage[e];return null!=r&&\"true\"===String(r).toLowerCase()}e.exports=function(e,t){if(r(\"noDeprecation\"))return e;var n=!1;return function(){if(!n){if(r(\"throwDeprecation\"))throw new Error(t);r(\"traceDeprecation\")?console.trace(t):console.warn(t),n=!0}return e.apply(this,arguments)}}}).call(this,r(0))},function(e,t,r){(function(e,t){!function(e,r){\"use strict\";if(!e.setImmediate){var n,i,a,o,s,f=1,l={},u=!1,h=e.document,d=Object.getPrototypeOf&&Object.getPrototypeOf(e);d=d&&d.setTimeout?d:e,\"[object process]\"==={}.toString.call(e.process)?n=function(e){t.nextTick(function(){p(e)})}:!function(){if(e.postMessage&&!e.importScripts){var t=!0,r=e.onmessage;return e.onmessage=function(){t=!1},e.postMessage(\"\",\"*\"),e.onmessage=r,t}}()?e.MessageChannel?((a=new MessageChannel).port1.onmessage=function(e){p(e.data)},n=function(e){a.port2.postMessage(e)}):h&&\"onreadystatechange\"in h.createElement(\"script\")?(i=h.documentElement,n=function(e){var t=h.createElement(\"script\");t.onreadystatechange=function(){p(e),t.onreadystatechange=null,i.removeChild(t),t=null},i.appendChild(t)}):n=function(e){setTimeout(p,0,e)}:(o=\"setImmediate$\"+Math.random()+\"$\",s=function(t){t.source===e&&\"string\"==typeof t.data&&0===t.data.indexOf(o)&&p(+t.data.slice(o.length))},e.addEventListener?e.addEventListener(\"message\",s,!1):e.attachEvent(\"onmessage\",s),n=function(t){e.postMessage(o+t,\"*\")}),d.setImmediate=function(e){\"function\"!=typeof e&&(e=new Function(\"\"+e));for(var t=new Array(arguments.length-1),r=0;r=0&&(e._idleTimeoutId=setTimeout(function(){e._onTimeout&&e._onTimeout()},t))},r(62),t.setImmediate=\"undefined\"!=typeof self&&self.setImmediate||void 0!==e&&e.setImmediate||this&&this.setImmediate,t.clearImmediate=\"undefined\"!=typeof self&&self.clearImmediate||void 0!==e&&e.clearImmediate||this&&this.clearImmediate}).call(this,r(0))},function(e,t){},function(e,t,r){\"use strict\";var n=r(9).Buffer,i=r(64);e.exports=function(){function e(){!function(e,t){if(!(e instanceof t))throw new TypeError(\"Cannot call a class as a function\")}(this,e),this.head=null,this.tail=null,this.length=0}return e.prototype.push=function(e){var t={data:e,next:null};this.length>0?this.tail.next=t:this.head=t,this.tail=t,++this.length},e.prototype.unshift=function(e){var t={data:e,next:this.head};0===this.length&&(this.tail=t),this.head=t,++this.length},e.prototype.shift=function(){if(0!==this.length){var e=this.head.data;return 1===this.length?this.head=this.tail=null:this.head=this.head.next,--this.length,e}},e.prototype.clear=function(){this.head=this.tail=null,this.length=0},e.prototype.join=function(e){if(0===this.length)return\"\";for(var t=this.head,r=\"\"+t.data;t=t.next;)r+=e+t.data;return r},e.prototype.concat=function(e){if(0===this.length)return n.alloc(0);if(1===this.length)return this.head.data;for(var t,r,i,a=n.allocUnsafe(e>>>0),o=this.head,s=0;o;)t=o.data,r=a,i=s,t.copy(r,i),s+=o.data.length,o=o.next;return a},e}(),i&&i.inspect&&i.inspect.custom&&(e.exports.prototype[i.inspect.custom]=function(){var e=i.inspect({length:this.length});return this.constructor.name+\" \"+e})},function(e,t){},function(e,t,r){e.exports=i;var n=r(20).EventEmitter;function i(){n.call(this)}r(5)(i,n),i.Readable=r(19),i.Writable=r(59),i.Duplex=r(58),i.Transform=r(57),i.PassThrough=r(56),i.Stream=i,i.prototype.pipe=function(e,t){var r=this;function i(t){e.writable&&!1===e.write(t)&&r.pause&&r.pause()}function a(){r.readable&&r.resume&&r.resume()}r.on(\"data\",i),e.on(\"drain\",a),e._isStdio||t&&!1===t.end||(r.on(\"end\",s),r.on(\"close\",f));var o=!1;function s(){o||(o=!0,e.end())}function f(){o||(o=!0,\"function\"==typeof e.destroy&&e.destroy())}function l(e){if(u(),0===n.listenerCount(this,\"error\"))throw e}function u(){r.removeListener(\"data\",i),e.removeListener(\"drain\",a),r.removeListener(\"end\",s),r.removeListener(\"close\",f),r.removeListener(\"error\",l),e.removeListener(\"error\",l),r.removeListener(\"end\",u),r.removeListener(\"close\",u),e.removeListener(\"close\",u)}return r.on(\"error\",l),e.on(\"error\",l),r.on(\"end\",u),r.on(\"close\",u),e.on(\"close\",u),e.emit(\"pipe\",r),e}},function(e,t,r){\"use strict\";(function(e){var n=r(1).Buffer,i=r(67).Transform,a=r(55),o=r(29),s=r(30).ok,f=r(1).kMaxLength,l=\"Cannot create final Buffer. It would be larger than 0x\"+f.toString(16)+\" bytes\";a.Z_MIN_WINDOWBITS=8,a.Z_MAX_WINDOWBITS=15,a.Z_DEFAULT_WINDOWBITS=15,a.Z_MIN_CHUNK=64,a.Z_MAX_CHUNK=1/0,a.Z_DEFAULT_CHUNK=16384,a.Z_MIN_MEMLEVEL=1,a.Z_MAX_MEMLEVEL=9,a.Z_DEFAULT_MEMLEVEL=8,a.Z_MIN_LEVEL=-1,a.Z_MAX_LEVEL=9,a.Z_DEFAULT_LEVEL=a.Z_DEFAULT_COMPRESSION;for(var u=Object.keys(a),h=0;h=f?o=new RangeError(l):t=n.concat(i,a),i=[],e.close(),r(o,t)}e.on(\"error\",function(t){e.removeListener(\"end\",s),e.removeListener(\"readable\",o),r(t)}),e.on(\"end\",s),e.end(t),o()}function b(e,t){if(\"string\"==typeof t&&(t=n.from(t)),!n.isBuffer(t))throw new TypeError(\"Not a string or buffer\");var r=e._finishFlushFlag;return e._processChunk(t,r)}function y(e){if(!(this instanceof y))return new y(e);P.call(this,e,a.DEFLATE)}function v(e){if(!(this instanceof v))return new v(e);P.call(this,e,a.INFLATE)}function w(e){if(!(this instanceof w))return new w(e);P.call(this,e,a.GZIP)}function E(e){if(!(this instanceof E))return new E(e);P.call(this,e,a.GUNZIP)}function x(e){if(!(this instanceof x))return new x(e);P.call(this,e,a.DEFLATERAW)}function k(e){if(!(this instanceof k))return new k(e);P.call(this,e,a.INFLATERAW)}function S(e){if(!(this instanceof S))return new S(e);P.call(this,e,a.UNZIP)}function A(e){return e===a.Z_NO_FLUSH||e===a.Z_PARTIAL_FLUSH||e===a.Z_SYNC_FLUSH||e===a.Z_FULL_FLUSH||e===a.Z_FINISH||e===a.Z_BLOCK}function P(e,r){var o=this;if(this._opts=e=e||{},this._chunkSize=e.chunkSize||t.Z_DEFAULT_CHUNK,i.call(this,e),e.flush&&!A(e.flush))throw new Error(\"Invalid flush flag: \"+e.flush);if(e.finishFlush&&!A(e.finishFlush))throw new Error(\"Invalid flush flag: \"+e.finishFlush);if(this._flushFlag=e.flush||a.Z_NO_FLUSH,this._finishFlushFlag=void 0!==e.finishFlush?e.finishFlush:a.Z_FINISH,e.chunkSize&&(e.chunkSizet.Z_MAX_CHUNK))throw new Error(\"Invalid chunk size: \"+e.chunkSize);if(e.windowBits&&(e.windowBitst.Z_MAX_WINDOWBITS))throw new Error(\"Invalid windowBits: \"+e.windowBits);if(e.level&&(e.levelt.Z_MAX_LEVEL))throw new Error(\"Invalid compression level: \"+e.level);if(e.memLevel&&(e.memLevelt.Z_MAX_MEMLEVEL))throw new Error(\"Invalid memLevel: \"+e.memLevel);if(e.strategy&&e.strategy!=t.Z_FILTERED&&e.strategy!=t.Z_HUFFMAN_ONLY&&e.strategy!=t.Z_RLE&&e.strategy!=t.Z_FIXED&&e.strategy!=t.Z_DEFAULT_STRATEGY)throw new Error(\"Invalid strategy: \"+e.strategy);if(e.dictionary&&!n.isBuffer(e.dictionary))throw new Error(\"Invalid dictionary: it should be a Buffer instance\");this._handle=new a.Zlib(r);var s=this;this._hadError=!1,this._handle.onerror=function(e,r){O(s),s._hadError=!0;var n=new Error(e);n.errno=r,n.code=t.codes[r],s.emit(\"error\",n)};var f=t.Z_DEFAULT_COMPRESSION;\"number\"==typeof e.level&&(f=e.level);var l=t.Z_DEFAULT_STRATEGY;\"number\"==typeof e.strategy&&(l=e.strategy),this._handle.init(e.windowBits||t.Z_DEFAULT_WINDOWBITS,f,e.memLevel||t.Z_DEFAULT_MEMLEVEL,l,e.dictionary),this._buffer=n.allocUnsafe(this._chunkSize),this._offset=0,this._level=f,this._strategy=l,this.once(\"end\",this.close),Object.defineProperty(this,\"_closed\",{get:function(){return!o._handle},configurable:!0,enumerable:!0})}function O(t,r){r&&e.nextTick(r),t._handle&&(t._handle.close(),t._handle=null)}function T(e){e.emit(\"close\")}Object.defineProperty(t,\"codes\",{enumerable:!0,value:Object.freeze(c),writable:!1}),t.Deflate=y,t.Inflate=v,t.Gzip=w,t.Gunzip=E,t.DeflateRaw=x,t.InflateRaw=k,t.Unzip=S,t.createDeflate=function(e){return new y(e)},t.createInflate=function(e){return new v(e)},t.createDeflateRaw=function(e){return new x(e)},t.createInflateRaw=function(e){return new k(e)},t.createGzip=function(e){return new w(e)},t.createGunzip=function(e){return new E(e)},t.createUnzip=function(e){return new S(e)},t.deflate=function(e,t,r){return\"function\"==typeof t&&(r=t,t={}),_(new y(t),e,r)},t.deflateSync=function(e,t){return b(new y(t),e)},t.gzip=function(e,t,r){return\"function\"==typeof t&&(r=t,t={}),_(new w(t),e,r)},t.gzipSync=function(e,t){return b(new w(t),e)},t.deflateRaw=function(e,t,r){return\"function\"==typeof t&&(r=t,t={}),_(new x(t),e,r)},t.deflateRawSync=function(e,t){return b(new x(t),e)},t.unzip=function(e,t,r){return\"function\"==typeof t&&(r=t,t={}),_(new S(t),e,r)},t.unzipSync=function(e,t){return b(new S(t),e)},t.inflate=function(e,t,r){return\"function\"==typeof t&&(r=t,t={}),_(new v(t),e,r)},t.inflateSync=function(e,t){return b(new v(t),e)},t.gunzip=function(e,t,r){return\"function\"==typeof t&&(r=t,t={}),_(new E(t),e,r)},t.gunzipSync=function(e,t){return b(new E(t),e)},t.inflateRaw=function(e,t,r){return\"function\"==typeof t&&(r=t,t={}),_(new k(t),e,r)},t.inflateRawSync=function(e,t){return b(new k(t),e)},o.inherits(P,i),P.prototype.params=function(r,n,i){if(rt.Z_MAX_LEVEL)throw new RangeError(\"Invalid compression level: \"+r);if(n!=t.Z_FILTERED&&n!=t.Z_HUFFMAN_ONLY&&n!=t.Z_RLE&&n!=t.Z_FIXED&&n!=t.Z_DEFAULT_STRATEGY)throw new TypeError(\"Invalid strategy: \"+n);if(this._level!==r||this._strategy!==n){var o=this;this.flush(a.Z_SYNC_FLUSH,function(){s(o._handle,\"zlib binding closed\"),o._handle.params(r,n),o._hadError||(o._level=r,o._strategy=n,i&&i())})}else e.nextTick(i)},P.prototype.reset=function(){return s(this._handle,\"zlib binding closed\"),this._handle.reset()},P.prototype._flush=function(e){this._transform(n.alloc(0),\"\",e)},P.prototype.flush=function(t,r){var i=this,o=this._writableState;(\"function\"==typeof t||void 0===t&&!r)&&(r=t,t=a.Z_FULL_FLUSH),o.ended?r&&e.nextTick(r):o.ending?r&&this.once(\"end\",r):o.needDrain?r&&this.once(\"drain\",function(){return i.flush(t,r)}):(this._flushFlag=t,this.write(n.alloc(0),\"\",r))},P.prototype.close=function(t){O(this,t),e.nextTick(T,this)},P.prototype._transform=function(e,t,r){var i,o=this._writableState,s=(o.ending||o.ended)&&(!e||o.length===e.length);return null===e||n.isBuffer(e)?this._handle?(s?i=this._finishFlushFlag:(i=this._flushFlag,e.length>=o.length&&(this._flushFlag=this._opts.flush||a.Z_NO_FLUSH)),void this._processChunk(e,i,r)):r(new Error(\"zlib binding closed\")):r(new Error(\"invalid input\"))},P.prototype._processChunk=function(e,t,r){var i=e&&e.length,a=this._chunkSize-this._offset,o=0,u=this,h=\"function\"==typeof r;if(!h){var d,c=[],p=0;this.on(\"error\",function(e){d=e}),s(this._handle,\"zlib binding closed\");do{var g=this._handle.writeSync(t,e,o,i,this._buffer,this._offset,a)}while(!this._hadError&&b(g[0],g[1]));if(this._hadError)throw d;if(p>=f)throw O(this),new RangeError(l);var m=n.concat(c,p);return O(this),m}s(this._handle,\"zlib binding closed\");var _=this._handle.write(t,e,o,i,this._buffer,this._offset,a);function b(f,l){if(this&&(this.buffer=null,this.callback=null),!u._hadError){var d=a-l;if(s(d>=0,\"have should not go down\"),d>0){var g=u._buffer.slice(u._offset,u._offset+d);u._offset+=d,h?u.push(g):(c.push(g),p+=g.length)}if((0===l||u._offset>=u._chunkSize)&&(a=u._chunkSize,u._offset=0,u._buffer=n.allocUnsafe(u._chunkSize)),0===l){if(o+=i-f,i=f,!h)return!0;var m=u._handle.write(t,e,o,i,u._buffer,u._offset,u._chunkSize);return m.callback=b,void(m.buffer=e)}if(!h)return!1;r()}}_.buffer=e,_.callback=b},o.inherits(y,P),o.inherits(v,P),o.inherits(w,P),o.inherits(E,P),o.inherits(x,P),o.inherits(k,P),o.inherits(S,P)}).call(this,r(3))},function(e,t){e.exports=function(e){return e.webpackPolyfill||(e.deprecate=function(){},e.paths=[],e.children||(e.children=[]),Object.defineProperty(e,\"loaded\",{enumerable:!0,get:function(){return e.l}}),Object.defineProperty(e,\"id\",{enumerable:!0,get:function(){return e.i}}),e.webpackPolyfill=1),e}},function(e,t,r){\"use strict\";(function(e){Object.defineProperty(t,\"__esModule\",{value:!0}),t.default=function(t,d){if(void 0===t)throw\"dicomParser.parseDicom: missing required parameter 'byteArray'\";function c(f){var c=function(e){if(void 0===e.elements.x00020010)throw\"dicomParser.parseDicom: missing required meta header attribute 0002,0010\";var r=e.elements.x00020010;return u.readFixedString(t,r.dataOffset,r.length)}(f),p=function(e){if(\"1.2.840.10008.1.2\"===e)return!1;return!0}(c),g=function(o,f){if(\"1.2.840.10008.1.2.1.99\"===o){if(d&&d.inflater){var u=d.inflater(t,f);return new a.default(s.default,u,0)}if(void 0!==e&&this.module!==e){var h=r(68),c=(0,l.default)(t,f,t.length-f),p=h.inflateRawSync(c),g=(0,n.default)(t,p.length+f);return t.copy(g,0,0,f),p.copy(g,f),new a.default(s.default,g,0)}if(\"undefined\"!=typeof pako){var m=t.slice(f),_=pako.inflateRaw(m),b=(0,n.default)(t,_.length+f);return b.set(t.slice(0,f),0),b.set(_,f),new a.default(s.default,b,0)}throw\"dicomParser.parseDicom: no inflater available to handle deflate transfer syntax\"}if(\"1.2.840.10008.1.2.2\"===o)return new a.default(i.default,t,f);return new a.default(s.default,t,f)}(c,f.position),m=new o.default(g.byteArrayParser,g.byteArray,{});m.warnings=g.warnings;try{p?h.parseDicomDataSetExplicit(m,g,g.byteArray.length,d):h.parseDicomDataSetImplicit(m,g,g.byteArray.length,d)}catch(e){var _={exception:e,dataSet:m};throw _}return m}return p=(0,f.default)(t,d),g=c(p),function(e,t){for(var r in e.elements)e.elements.hasOwnProperty(r)&&(t.elements[r]=e.elements[r]);return void 0!==e.warnings&&(t.warnings=e.warnings.concat(t.warnings)),t}(p,g);var p,g};var n=c(r(22)),i=c(r(37)),a=c(r(12)),o=c(r(7)),s=c(r(21)),f=c(r(36)),l=c(r(11)),u=d(r(14)),h=d(r(16));function d(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r]);return t.default=e,t}function c(e){return e&&e.__esModule?e:{default:e}}}).call(this,r(69)(e))},function(e,t,r){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0}),t.default=\"1.8.1\"},function(e,t){t.read=function(e,t,r,n,i){var a,o,s=8*i-n-1,f=(1<>1,u=-7,h=r?i-1:0,d=r?-1:1,c=e[t+h];for(h+=d,a=c&(1<<-u)-1,c>>=-u,u+=s;u>0;a=256*a+e[t+h],h+=d,u-=8);for(o=a&(1<<-u)-1,a>>=-u,u+=n;u>0;o=256*o+e[t+h],h+=d,u-=8);if(0===a)a=1-l;else{if(a===f)return o?NaN:1/0*(c?-1:1);o+=Math.pow(2,n),a-=l}return(c?-1:1)*o*Math.pow(2,a-n)},t.write=function(e,t,r,n,i,a){var o,s,f,l=8*a-i-1,u=(1<>1,d=23===i?Math.pow(2,-24)-Math.pow(2,-77):0,c=n?0:a-1,p=n?1:-1,g=t<0||0===t&&1/t<0?1:0;for(t=Math.abs(t),isNaN(t)||t===1/0?(s=isNaN(t)?1:0,o=u):(o=Math.floor(Math.log(t)/Math.LN2),t*(f=Math.pow(2,-o))<1&&(o--,f*=2),(t+=o+h>=1?d/f:d*Math.pow(2,1-h))*f>=2&&(o++,f/=2),o+h>=u?(s=0,o=u):o+h>=1?(s=(t*f-1)*Math.pow(2,i),o+=h):(s=t*Math.pow(2,h-1)*Math.pow(2,i),o=0));i>=8;e[r+c]=255&s,c+=p,s/=256,i-=8);for(o=o<0;e[r+c]=255&o,c+=p,o/=256,l-=8);e[r+c-p]|=128*g}},function(e,t,r){\"use strict\";t.byteLength=function(e){return 3*e.length/4-l(e)},t.toByteArray=function(e){var t,r,n,o,s,f=e.length;o=l(e),s=new a(3*f/4-o),r=o>0?f-4:f;var u=0;for(t=0;t>16&255,s[u++]=n>>8&255,s[u++]=255&n;2===o?(n=i[e.charCodeAt(t)]<<2|i[e.charCodeAt(t+1)]>>4,s[u++]=255&n):1===o&&(n=i[e.charCodeAt(t)]<<10|i[e.charCodeAt(t+1)]<<4|i[e.charCodeAt(t+2)]>>2,s[u++]=n>>8&255,s[u++]=255&n);return s},t.fromByteArray=function(e){for(var t,r=e.length,i=r%3,a=\"\",o=[],s=0,f=r-i;sf?f:s+16383));1===i?(t=e[r-1],a+=n[t>>2],a+=n[t<<4&63],a+=\"==\"):2===i&&(t=(e[r-2]<<8)+e[r-1],a+=n[t>>10],a+=n[t>>4&63],a+=n[t<<2&63],a+=\"=\");return o.push(a),o.join(\"\")};for(var n=[],i=[],a=\"undefined\"!=typeof Uint8Array?Uint8Array:Array,o=\"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/\",s=0,f=o.length;s0)throw new Error(\"Invalid string. Length must be a multiple of 4\");return\"=\"===e[t-2]?2:\"=\"===e[t-1]?1:0}function u(e,t,r){for(var i,a,o=[],s=t;s>18&63]+n[a>>12&63]+n[a>>6&63]+n[63&a]);return o.join(\"\")}i[\"-\".charCodeAt(0)]=62,i[\"_\".charCodeAt(0)]=63},function(e,t,r){\"use strict\";function n(e,t){return 255===e.byteArray[t]&&217===e.byteArray[t+1]}function i(e,t,r){var i=t.fragments[r];return!(!n(e,i.position+i.length-2)&&!n(e,i.position+i.length-3))}function a(e,t,r){for(var n=r;n0&&t<=12&&e>0&&e<=function(e,t){switch(e){case 2:return t%4==0&&t%100||t%400==0?29:28;case 9:case 4:case 6:case 11:return 30;default:return 31}}(t,r)}(i,n,r))throw\"invalid DA '\"+e+\"'\";return{year:r,month:n,day:i}}if(t)throw\"invalid DA '\"+e+\"'\";return}},function(e,t,r){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0}),t.default=function(e,t){if(e.length>=2){var r=parseInt(e.substring(0,2),10),n=e.length>=4?parseInt(e.substring(2,4),10):void 0,i=e.length>=6?parseInt(e.substring(4,6),10):void 0,a=e.length>=8?parseInt(e.substring(7,13),10):void 0;if(t&&(isNaN(r)||void 0!==n&&isNaN(n)||void 0!==i&&isNaN(i)||void 0!==a&&isNaN(a)||r<0||r>23||n&&(n<0||n>59)||i&&(i<0||i>59)||a&&(a<0||a>999999)))throw\"invalid TM '\"+e+\"'\";return{hours:r,minutes:n,seconds:i,fractionalSeconds:a}}if(t)throw\"invalid TM '\"+e+\"'\";return}},function(e,t,r){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0});var n=r(25);Object.keys(n).forEach(function(e){\"default\"!==e&&\"__esModule\"!==e&&Object.defineProperty(t,e,{enumerable:!0,get:function(){return n[e]}})});var i=r(77);Object.defineProperty(t,\"parseTM\",{enumerable:!0,get:function(){return l(i).default}});var a=r(76);Object.defineProperty(t,\"parseDA\",{enumerable:!0,get:function(){return l(a).default}});var o=r(43);Object.defineProperty(t,\"explicitElementToString\",{enumerable:!0,get:function(){return l(o).default}});var s=r(75);Object.defineProperty(t,\"explicitDataSetToJS\",{enumerable:!0,get:function(){return l(s).default}});var f=r(74);function l(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(t,\"createJPEGBasicOffsetTable\",{enumerable:!0,get:function(){return l(f).default}})},function(e,t,r){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0});var n=r(78);Object.keys(n).forEach(function(e){\"default\"!==e&&\"__esModule\"!==e&&Object.defineProperty(t,e,{enumerable:!0,get:function(){return n[e]}})});var i=r(16);Object.keys(i).forEach(function(e){\"default\"!==e&&\"__esModule\"!==e&&Object.defineProperty(t,e,{enumerable:!0,get:function(){return i[e]}})});var a=r(14);Object.keys(a).forEach(function(e){\"default\"!==e&&\"__esModule\"!==e&&Object.defineProperty(t,e,{enumerable:!0,get:function(){return a[e]}})});var o=r(22);Object.defineProperty(t,\"alloc\",{enumerable:!0,get:function(){return P(o).default}});var s=r(71);Object.defineProperty(t,\"version\",{enumerable:!0,get:function(){return P(s).default}});var f=r(37);Object.defineProperty(t,\"bigEndianByteArrayParser\",{enumerable:!0,get:function(){return P(f).default}});var l=r(12);Object.defineProperty(t,\"ByteStream\",{enumerable:!0,get:function(){return P(l).default}});var u=r(11);Object.defineProperty(t,\"sharedCopy\",{enumerable:!0,get:function(){return P(u).default}});var h=r(7);Object.defineProperty(t,\"DataSet\",{enumerable:!0,get:function(){return P(h).default}});var d=r(41);Object.defineProperty(t,\"findAndSetUNElementLength\",{enumerable:!0,get:function(){return P(d).default}});var c=r(42);Object.defineProperty(t,\"findEndOfEncapsulatedElement\",{enumerable:!0,get:function(){return P(c).default}});var p=r(24);Object.defineProperty(t,\"findItemDelimitationItemAndSetElementLength\",{enumerable:!0,get:function(){return P(p).default}});var g=r(21);Object.defineProperty(t,\"littleEndianByteArrayParser\",{enumerable:!0,get:function(){return P(g).default}});var m=r(70);Object.defineProperty(t,\"parseDicom\",{enumerable:!0,get:function(){return P(m).default}});var _=r(15);Object.defineProperty(t,\"readDicomElementExplicit\",{enumerable:!0,get:function(){return P(_).default}});var b=r(23);Object.defineProperty(t,\"readDicomElementImplicit\",{enumerable:!0,get:function(){return P(b).default}});var y=r(26);Object.defineProperty(t,\"readEncapsulatedImageFrame\",{enumerable:!0,get:function(){return P(y).default}});var v=r(44);Object.defineProperty(t,\"readEncapsulatedPixelData\",{enumerable:!0,get:function(){return P(v).default}});var w=r(17);Object.defineProperty(t,\"readEncapsulatedPixelDataFromFragments\",{enumerable:!0,get:function(){return P(w).default}});var E=r(36);Object.defineProperty(t,\"readPart10Header\",{enumerable:!0,get:function(){return P(E).default}});var x=r(40);Object.defineProperty(t,\"readSequenceItemsExplicit\",{enumerable:!0,get:function(){return P(x).default}});var k=r(39);Object.defineProperty(t,\"readSequenceItemsImplicit\",{enumerable:!0,get:function(){return P(k).default}});var S=r(13);Object.defineProperty(t,\"readSequenceItem\",{enumerable:!0,get:function(){return P(S).default}});var A=r(4);function P(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(t,\"readTag\",{enumerable:!0,get:function(){return P(A).default}})}])});\n//# sourceMappingURL=dicomParser.min.js.map","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\nfunction EventEmitter() {\n this._events = this._events || {};\n this._maxListeners = this._maxListeners || undefined;\n}\nmodule.exports = EventEmitter;\n\n// Backwards-compat with node 0.10.x\nEventEmitter.EventEmitter = EventEmitter;\n\nEventEmitter.prototype._events = undefined;\nEventEmitter.prototype._maxListeners = undefined;\n\n// By default EventEmitters will print a warning if more than 10 listeners are\n// added to it. This is a useful default which helps finding memory leaks.\nEventEmitter.defaultMaxListeners = 10;\n\n// Obviously not all Emitters should be limited to 10. This function allows\n// that to be increased. Set to zero for unlimited.\nEventEmitter.prototype.setMaxListeners = function(n) {\n if (!isNumber(n) || n < 0 || isNaN(n))\n throw TypeError('n must be a positive number');\n this._maxListeners = n;\n return this;\n};\n\nEventEmitter.prototype.emit = function(type) {\n var er, handler, len, args, i, listeners;\n\n if (!this._events)\n this._events = {};\n\n // If there is no 'error' event listener then throw.\n if (type === 'error') {\n if (!this._events.error ||\n (isObject(this._events.error) && !this._events.error.length)) {\n er = arguments[1];\n if (er instanceof Error) {\n throw er; // Unhandled 'error' event\n } else {\n // At least give some kind of context to the user\n var err = new Error('Uncaught, unspecified \"error\" event. (' + er + ')');\n err.context = er;\n throw err;\n }\n }\n }\n\n handler = this._events[type];\n\n if (isUndefined(handler))\n return false;\n\n if (isFunction(handler)) {\n switch (arguments.length) {\n // fast cases\n case 1:\n handler.call(this);\n break;\n case 2:\n handler.call(this, arguments[1]);\n break;\n case 3:\n handler.call(this, arguments[1], arguments[2]);\n break;\n // slower\n default:\n args = Array.prototype.slice.call(arguments, 1);\n handler.apply(this, args);\n }\n } else if (isObject(handler)) {\n args = Array.prototype.slice.call(arguments, 1);\n listeners = handler.slice();\n len = listeners.length;\n for (i = 0; i < len; i++)\n listeners[i].apply(this, args);\n }\n\n return true;\n};\n\nEventEmitter.prototype.addListener = function(type, listener) {\n var m;\n\n if (!isFunction(listener))\n throw TypeError('listener must be a function');\n\n if (!this._events)\n this._events = {};\n\n // To avoid recursion in the case that type === \"newListener\"! Before\n // adding it to the listeners, first emit \"newListener\".\n if (this._events.newListener)\n this.emit('newListener', type,\n isFunction(listener.listener) ?\n listener.listener : listener);\n\n if (!this._events[type])\n // Optimize the case of one listener. Don't need the extra array object.\n this._events[type] = listener;\n else if (isObject(this._events[type]))\n // If we've already got an array, just append.\n this._events[type].push(listener);\n else\n // Adding the second element, need to change to array.\n this._events[type] = [this._events[type], listener];\n\n // Check for listener leak\n if (isObject(this._events[type]) && !this._events[type].warned) {\n if (!isUndefined(this._maxListeners)) {\n m = this._maxListeners;\n } else {\n m = EventEmitter.defaultMaxListeners;\n }\n\n if (m && m > 0 && this._events[type].length > m) {\n this._events[type].warned = true;\n console.error('(node) warning: possible EventEmitter memory ' +\n 'leak detected. %d listeners added. ' +\n 'Use emitter.setMaxListeners() to increase limit.',\n this._events[type].length);\n if (typeof console.trace === 'function') {\n // not supported in IE 10\n console.trace();\n }\n }\n }\n\n return this;\n};\n\nEventEmitter.prototype.on = EventEmitter.prototype.addListener;\n\nEventEmitter.prototype.once = function(type, listener) {\n if (!isFunction(listener))\n throw TypeError('listener must be a function');\n\n var fired = false;\n\n function g() {\n this.removeListener(type, g);\n\n if (!fired) {\n fired = true;\n listener.apply(this, arguments);\n }\n }\n\n g.listener = listener;\n this.on(type, g);\n\n return this;\n};\n\n// emits a 'removeListener' event iff the listener was removed\nEventEmitter.prototype.removeListener = function(type, listener) {\n var list, position, length, i;\n\n if (!isFunction(listener))\n throw TypeError('listener must be a function');\n\n if (!this._events || !this._events[type])\n return this;\n\n list = this._events[type];\n length = list.length;\n position = -1;\n\n if (list === listener ||\n (isFunction(list.listener) && list.listener === listener)) {\n delete this._events[type];\n if (this._events.removeListener)\n this.emit('removeListener', type, listener);\n\n } else if (isObject(list)) {\n for (i = length; i-- > 0;) {\n if (list[i] === listener ||\n (list[i].listener && list[i].listener === listener)) {\n position = i;\n break;\n }\n }\n\n if (position < 0)\n return this;\n\n if (list.length === 1) {\n list.length = 0;\n delete this._events[type];\n } else {\n list.splice(position, 1);\n }\n\n if (this._events.removeListener)\n this.emit('removeListener', type, listener);\n }\n\n return this;\n};\n\nEventEmitter.prototype.removeAllListeners = function(type) {\n var key, listeners;\n\n if (!this._events)\n return this;\n\n // not listening for removeListener, no need to emit\n if (!this._events.removeListener) {\n if (arguments.length === 0)\n this._events = {};\n else if (this._events[type])\n delete this._events[type];\n return this;\n }\n\n // emit removeListener for all listeners on all events\n if (arguments.length === 0) {\n for (key in this._events) {\n if (key === 'removeListener') continue;\n this.removeAllListeners(key);\n }\n this.removeAllListeners('removeListener');\n this._events = {};\n return this;\n }\n\n listeners = this._events[type];\n\n if (isFunction(listeners)) {\n this.removeListener(type, listeners);\n } else if (listeners) {\n // LIFO order\n while (listeners.length)\n this.removeListener(type, listeners[listeners.length - 1]);\n }\n delete this._events[type];\n\n return this;\n};\n\nEventEmitter.prototype.listeners = function(type) {\n var ret;\n if (!this._events || !this._events[type])\n ret = [];\n else if (isFunction(this._events[type]))\n ret = [this._events[type]];\n else\n ret = this._events[type].slice();\n return ret;\n};\n\nEventEmitter.prototype.listenerCount = function(type) {\n if (this._events) {\n var evlistener = this._events[type];\n\n if (isFunction(evlistener))\n return 1;\n else if (evlistener)\n return evlistener.length;\n }\n return 0;\n};\n\nEventEmitter.listenerCount = function(emitter, type) {\n return emitter.listenerCount(type);\n};\n\nfunction isFunction(arg) {\n return typeof arg === 'function';\n}\n\nfunction isNumber(arg) {\n return typeof arg === 'number';\n}\n\nfunction isObject(arg) {\n return typeof arg === 'object' && arg !== null;\n}\n\nfunction isUndefined(arg) {\n return arg === void 0;\n}\n","exports.read = function (buffer, offset, isLE, mLen, nBytes) {\n var e, m\n var eLen = (nBytes * 8) - mLen - 1\n var eMax = (1 << eLen) - 1\n var eBias = eMax >> 1\n var nBits = -7\n var i = isLE ? (nBytes - 1) : 0\n var d = isLE ? -1 : 1\n var s = buffer[offset + i]\n\n i += d\n\n e = s & ((1 << (-nBits)) - 1)\n s >>= (-nBits)\n nBits += eLen\n for (; nBits > 0; e = (e * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n m = e & ((1 << (-nBits)) - 1)\n e >>= (-nBits)\n nBits += mLen\n for (; nBits > 0; m = (m * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n if (e === 0) {\n e = 1 - eBias\n } else if (e === eMax) {\n return m ? NaN : ((s ? -1 : 1) * Infinity)\n } else {\n m = m + Math.pow(2, mLen)\n e = e - eBias\n }\n return (s ? -1 : 1) * m * Math.pow(2, e - mLen)\n}\n\nexports.write = function (buffer, value, offset, isLE, mLen, nBytes) {\n var e, m, c\n var eLen = (nBytes * 8) - mLen - 1\n var eMax = (1 << eLen) - 1\n var eBias = eMax >> 1\n var rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0)\n var i = isLE ? 0 : (nBytes - 1)\n var d = isLE ? 1 : -1\n var s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0\n\n value = Math.abs(value)\n\n if (isNaN(value) || value === Infinity) {\n m = isNaN(value) ? 1 : 0\n e = eMax\n } else {\n e = Math.floor(Math.log(value) / Math.LN2)\n if (value * (c = Math.pow(2, -e)) < 1) {\n e--\n c *= 2\n }\n if (e + eBias >= 1) {\n value += rt / c\n } else {\n value += rt * Math.pow(2, 1 - eBias)\n }\n if (value * c >= 2) {\n e++\n c /= 2\n }\n\n if (e + eBias >= eMax) {\n m = 0\n e = eMax\n } else if (e + eBias >= 1) {\n m = ((value * c) - 1) * Math.pow(2, mLen)\n e = e + eBias\n } else {\n m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen)\n e = 0\n }\n }\n\n for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {}\n\n e = (e << mLen) | m\n eLen += mLen\n for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {}\n\n buffer[offset + i - d] |= s * 128\n}\n","if (typeof Object.create === 'function') {\n // implementation from standard node.js 'util' module\n module.exports = function inherits(ctor, superCtor) {\n ctor.super_ = superCtor\n ctor.prototype = Object.create(superCtor.prototype, {\n constructor: {\n value: ctor,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n };\n} else {\n // old school shim for old browsers\n module.exports = function inherits(ctor, superCtor) {\n ctor.super_ = superCtor\n var TempCtor = function () {}\n TempCtor.prototype = superCtor.prototype\n ctor.prototype = new TempCtor()\n ctor.prototype.constructor = ctor\n }\n}\n","var toString = {}.toString;\n\nmodule.exports = Array.isArray || function (arr) {\n return toString.call(arr) == '[object Array]';\n};\n","/*\n * Copyright (C) 2015 Michael Martinez\n * Changes: Added support for selection values 2-7, fixed minor bugs &\n * warnings, split into multiple class files, and general clean up.\n *\n * 08-25-2015: Helmut Dersch agreed to a license change from LGPL to MIT.\n */\n\n/*\n * Copyright (C) Helmut Dersch\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\n/*jslint browser: true, node: true */\n/*global require, module */\n\n\"use strict\";\n\n/*** Imports ***/\nvar jpeg = jpeg || {};\njpeg.lossless = jpeg.lossless || {};\n\n\n/*** Constructor ***/\njpeg.lossless.ComponentSpec = jpeg.lossless.ComponentSpec || function () {\n this.hSamp = 0; // Horizontal sampling factor\n this.quantTableSel = 0; // Quantization table destination selector\n this.vSamp = 0; // Vertical\n};\n\n\n/*** Exports ***/\n\nvar moduleType = typeof module;\nif ((moduleType !== 'undefined') && module.exports) {\n module.exports = jpeg.lossless.ComponentSpec;\n}\n","/*\n * Copyright (C) 2015 Michael Martinez\n * Changes: Added support for selection values 2-7, fixed minor bugs &\n * warnings, split into multiple class files, and general clean up.\n *\n * 08-25-2015: Helmut Dersch agreed to a license change from LGPL to MIT.\n */\n\n/*\n * Copyright (C) Helmut Dersch\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\n/*jslint browser: true, node: true */\n/*global require, module */\n\n\"use strict\";\n\n/*** Imports ***/\nvar jpeg = jpeg || {};\njpeg.lossless = jpeg.lossless || {};\n\n\n/*** Constructor ***/\njpeg.lossless.DataStream = jpeg.lossless.DataStream || function (data, offset, length) {\n this.buffer = new DataView(data, offset, length);\n this.index = 0;\n};\n\n\n\njpeg.lossless.DataStream.prototype.get16 = function () {\n var value = this.buffer.getUint16(this.index, false);\n this.index += 2;\n return value;\n};\n\n\n\njpeg.lossless.DataStream.prototype.get8 = function () {\n var value = this.buffer.getUint8(this.index);\n this.index += 1;\n return value;\n};\n\n\n/*** Exports ***/\n\nvar moduleType = typeof module;\nif ((moduleType !== 'undefined') && module.exports) {\n module.exports = jpeg.lossless.DataStream;\n}\n","/*\n * Copyright (C) 2015 Michael Martinez\n * Changes: Added support for selection values 2-7, fixed minor bugs &\n * warnings, split into multiple class files, and general clean up.\n *\n * 08-25-2015: Helmut Dersch agreed to a license change from LGPL to MIT.\n */\n\n/*\n * Copyright (C) Helmut Dersch\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\n/*jslint browser: true, node: true */\n/*global require, module */\n\n\"use strict\";\n\n/*** Imports ***/\nvar jpeg = jpeg || {};\njpeg.lossless = jpeg.lossless || {};\njpeg.lossless.DataStream = jpeg.lossless.DataStream || ((typeof require !== 'undefined') ? require('./data-stream.js') : null);\njpeg.lossless.HuffmanTable = jpeg.lossless.HuffmanTable || ((typeof require !== 'undefined') ? require('./huffman-table.js') : null);\njpeg.lossless.QuantizationTable = jpeg.lossless.QuantizationTable || ((typeof require !== 'undefined') ? require('./quantization-table.js') : null);\njpeg.lossless.ScanHeader = jpeg.lossless.ScanHeader || ((typeof require !== 'undefined') ? require('./scan-header.js') : null);\njpeg.lossless.FrameHeader = jpeg.lossless.FrameHeader || ((typeof require !== 'undefined') ? require('./frame-header.js') : null);\njpeg.lossless.Utils = jpeg.lossless.Utils || ((typeof require !== 'undefined') ? require('./utils.js') : null);\n\n\n/*** Constructor ***/\njpeg.lossless.Decoder = jpeg.lossless.Decoder || function (buffer, numBytes) {\n this.buffer = buffer;\n this.frame = new jpeg.lossless.FrameHeader();\n this.huffTable = new jpeg.lossless.HuffmanTable();\n this.quantTable = new jpeg.lossless.QuantizationTable();\n this.scan = new jpeg.lossless.ScanHeader();\n this.DU = jpeg.lossless.Utils.createArray(10, 4, 64); // at most 10 data units in a MCU, at most 4 data units in one component\n this.HuffTab = jpeg.lossless.Utils.createArray(4, 2, 50 * 256);\n this.IDCT_Source = [];\n this.nBlock = []; // number of blocks in the i-th Comp in a scan\n this.acTab = jpeg.lossless.Utils.createArray(10, 1); // ac HuffTab for the i-th Comp in a scan\n this.dcTab = jpeg.lossless.Utils.createArray(10, 1); // dc HuffTab for the i-th Comp in a scan\n this.qTab = jpeg.lossless.Utils.createArray(10, 1); // quantization table for the i-th Comp in a scan\n this.marker = 0;\n this.markerIndex = 0;\n this.numComp = 0;\n this.restartInterval = 0;\n this.selection = 0;\n this.xDim = 0;\n this.yDim = 0;\n this.xLoc = 0;\n this.yLoc = 0;\n this.numBytes = 0;\n this.outputData = null;\n this.restarting = false;\n this.mask = 0;\n\n if (typeof numBytes !== \"undefined\") {\n this.numBytes = numBytes;\n }\n};\n\n\n/*** Static Pseudo-constants ***/\n\njpeg.lossless.Decoder.IDCT_P = [0, 5, 40, 16, 45, 2, 7, 42, 21, 56, 8, 61, 18, 47, 1, 4, 41, 23, 58, 13, 32, 24, 37, 10, 63, 17, 44, 3, 6, 43, 20,\n 57, 15, 34, 29, 48, 53, 26, 39, 9, 60, 19, 46, 22, 59, 12, 33, 31, 50, 55, 25, 36, 11, 62, 14, 35, 28, 49, 52, 27, 38, 30, 51, 54];\njpeg.lossless.Decoder.TABLE = [0, 1, 5, 6, 14, 15, 27, 28, 2, 4, 7, 13, 16, 26, 29, 42, 3, 8, 12, 17, 25, 30, 41, 43, 9, 11, 18, 24, 31, 40, 44, 53,\n 10, 19, 23, 32, 39, 45, 52, 54, 20, 22, 33, 38, 46, 51, 55, 60, 21, 34, 37, 47, 50, 56, 59, 61, 35, 36, 48, 49, 57, 58, 62, 63];\njpeg.lossless.Decoder.MAX_HUFFMAN_SUBTREE = 50;\njpeg.lossless.Decoder.MSB = 0x80000000;\njpeg.lossless.Decoder.RESTART_MARKER_BEGIN = 0xFFD0;\njpeg.lossless.Decoder.RESTART_MARKER_END = 0xFFD7;\n\n/*** Prototype Methods ***/\n\njpeg.lossless.Decoder.prototype.decompress = function (buffer, offset, length) {\n return this.decode(buffer, offset, length).buffer;\n};\n\n\n\njpeg.lossless.Decoder.prototype.decode = function (buffer, offset, length, numBytes) {\n /*jslint bitwise: true */\n\n var current, scanNum = 0, pred = [], i, compN, temp = [], index = [], mcuNum;\n\n if (typeof buffer !== \"undefined\") {\n this.buffer = buffer;\n }\n\n if (typeof numBytes !== \"undefined\") {\n this.numBytes = numBytes;\n }\n\n this.stream = new jpeg.lossless.DataStream(this.buffer, offset, length);\n this.buffer = null;\n\n this.xLoc = 0;\n this.yLoc = 0;\n current = this.stream.get16();\n\n if (current !== 0xFFD8) { // SOI\n throw new Error(\"Not a JPEG file\");\n }\n\n current = this.stream.get16();\n\n while ((((current >> 4) !== 0x0FFC) || (current === 0xFFC4))) { // SOF 0~15\n switch (current) {\n case 0xFFC4: // DHT\n this.huffTable.read(this.stream, this.HuffTab);\n break;\n case 0xFFCC: // DAC\n throw new Error(\"Program doesn't support arithmetic coding. (format throw new IOException)\");\n case 0xFFDB:\n this.quantTable.read(this.stream, jpeg.lossless.Decoder.TABLE);\n break;\n case 0xFFDD:\n this.restartInterval = this.readNumber();\n break;\n case 0xFFE0:\n case 0xFFE1:\n case 0xFFE2:\n case 0xFFE3:\n case 0xFFE4:\n case 0xFFE5:\n case 0xFFE6:\n case 0xFFE7:\n case 0xFFE8:\n case 0xFFE9:\n case 0xFFEA:\n case 0xFFEB:\n case 0xFFEC:\n case 0xFFED:\n case 0xFFEE:\n case 0xFFEF:\n this.readApp();\n break;\n case 0xFFFE:\n this.readComment();\n break;\n default:\n if ((current >> 8) !== 0xFF) {\n throw new Error(\"ERROR: format throw new IOException! (decode)\");\n }\n }\n\n current = this.stream.get16();\n }\n\n if ((current < 0xFFC0) || (current > 0xFFC7)) {\n throw new Error(\"ERROR: could not handle arithmetic code!\");\n }\n\n this.frame.read(this.stream);\n current = this.stream.get16();\n\n do {\n while (current !== 0x0FFDA) { // SOS\n switch (current) {\n case 0xFFC4: // DHT\n this.huffTable.read(this.stream, this.HuffTab);\n break;\n case 0xFFCC: // DAC\n throw new Error(\"Program doesn't support arithmetic coding. (format throw new IOException)\");\n case 0xFFDB:\n this.quantTable.read(this.stream, jpeg.lossless.Decoder.TABLE);\n break;\n case 0xFFDD:\n this.restartInterval = this.readNumber();\n break;\n case 0xFFE0:\n case 0xFFE1:\n case 0xFFE2:\n case 0xFFE3:\n case 0xFFE4:\n case 0xFFE5:\n case 0xFFE6:\n case 0xFFE7:\n case 0xFFE8:\n case 0xFFE9:\n case 0xFFEA:\n case 0xFFEB:\n case 0xFFEC:\n case 0xFFED:\n case 0xFFEE:\n case 0xFFEF:\n this.readApp();\n break;\n case 0xFFFE:\n this.readComment();\n break;\n default:\n if ((current >> 8) !== 0xFF) {\n throw new Error(\"ERROR: format throw new IOException! (Parser.decode)\");\n }\n }\n\n current = this.stream.get16();\n }\n\n this.precision = this.frame.precision;\n this.components = this.frame.components;\n\n if (!this.numBytes) {\n this.numBytes = parseInt(Math.ceil(this.precision / 8));\n }\n\n if (this.numBytes == 1) {\n this.mask = 0xFF;\n } else {\n this.mask = 0xFFFF;\n }\n\n this.scan.read(this.stream);\n this.numComp = this.scan.numComp;\n this.selection = this.scan.selection;\n\n if (this.numBytes === 1) {\n if (this.numComp === 3) {\n this.getter = this.getValueRGB;\n this.setter = this.setValueRGB;\n this.output = this.outputRGB;\n } else {\n this.getter = this.getValue8;\n this.setter = this.setValue8;\n this.output = this.outputSingle;\n }\n } else {\n this.getter = this.getValue16;\n this.setter = this.setValue16;\n this.output = this.outputSingle;\n }\n\n switch (this.selection) {\n case 2:\n this.selector = this.select2;\n break;\n case 3:\n this.selector = this.select3;\n break;\n case 4:\n this.selector = this.select4;\n break;\n case 5:\n this.selector = this.select5;\n break;\n case 6:\n this.selector = this.select6;\n break;\n case 7:\n this.selector = this.select7;\n break;\n default:\n this.selector = this.select1;\n break;\n }\n\n this.scanComps = this.scan.components;\n this.quantTables = this.quantTable.quantTables;\n\n for (i = 0; i < this.numComp; i+=1) {\n compN = this.scanComps[i].scanCompSel;\n this.qTab[i] = this.quantTables[this.components[compN].quantTableSel];\n this.nBlock[i] = this.components[compN].vSamp * this.components[compN].hSamp;\n this.dcTab[i] = this.HuffTab[this.scanComps[i].dcTabSel][0];\n this.acTab[i] = this.HuffTab[this.scanComps[i].acTabSel][1];\n }\n\n this.xDim = this.frame.dimX;\n this.yDim = this.frame.dimY;\n this.outputData = new DataView(new ArrayBuffer(this.xDim * this.yDim * this.numBytes * this.numComp));\n\n scanNum+=1;\n\n while (true) { // Decode one scan\n temp[0] = 0;\n index[0] = 0;\n\n for (i = 0; i < 10; i+=1) {\n pred[i] = (1 << (this.precision - 1));\n }\n\n if (this.restartInterval === 0) {\n current = this.decodeUnit(pred, temp, index);\n\n while ((current === 0) && ((this.xLoc < this.xDim) && (this.yLoc < this.yDim))) {\n this.output(pred);\n current = this.decodeUnit(pred, temp, index);\n }\n\n break; //current=MARKER\n }\n\n for (mcuNum = 0; mcuNum < this.restartInterval; mcuNum+=1) {\n this.restarting = (mcuNum == 0);\n current = this.decodeUnit(pred, temp, index);\n this.output(pred);\n\n if (current !== 0) {\n break;\n }\n }\n\n if (current === 0) {\n if (this.markerIndex !== 0) {\n current = (0xFF00 | this.marker);\n this.markerIndex = 0;\n } else {\n current = this.stream.get16();\n }\n }\n\n if (!((current >= jpeg.lossless.Decoder.RESTART_MARKER_BEGIN) &&\n (current <= jpeg.lossless.Decoder.RESTART_MARKER_END))) {\n break; //current=MARKER\n }\n }\n\n if ((current === 0xFFDC) && (scanNum === 1)) { //DNL\n this.readNumber();\n current = this.stream.get16();\n }\n } while ((current !== 0xFFD9) && ((this.xLoc < this.xDim) && (this.yLoc < this.yDim)) && (scanNum === 0));\n\n return this.outputData;\n};\n\n\n\njpeg.lossless.Decoder.prototype.decodeUnit = function (prev, temp, index) {\n if (this.numComp == 1) {\n return this.decodeSingle(prev, temp, index);\n } else if (this.numComp == 3) {\n return this.decodeRGB(prev, temp, index);\n } else {\n return -1;\n }\n};\n\n\n\njpeg.lossless.Decoder.prototype.select1 = function (compOffset) {\n return this.getPreviousX(compOffset);\n};\n\n\n\njpeg.lossless.Decoder.prototype.select2 = function (compOffset) {\n return this.getPreviousY(compOffset);\n};\n\n\n\njpeg.lossless.Decoder.prototype.select3 = function (compOffset) {\n return this.getPreviousXY(compOffset);\n};\n\n\n\njpeg.lossless.Decoder.prototype.select4 = function (compOffset) {\n return (this.getPreviousX(compOffset) + this.getPreviousY(compOffset)) - this.getPreviousXY(compOffset);\n};\n\n\n\njpeg.lossless.Decoder.prototype.select5 = function (compOffset) {\n return this.getPreviousX(compOffset) + ((this.getPreviousY(compOffset) - this.getPreviousXY(compOffset)) >> 1);\n};\n\n\n\njpeg.lossless.Decoder.prototype.select6 = function (compOffset) {\n return this.getPreviousY(compOffset) + ((this.getPreviousX(compOffset) - this.getPreviousXY(compOffset)) >> 1);\n};\n\n\n\njpeg.lossless.Decoder.prototype.select7 = function (compOffset) {\n return ((this.getPreviousX(compOffset) + this.getPreviousY(compOffset)) / 2);\n};\n\n\n\njpeg.lossless.Decoder.prototype.decodeRGB = function (prev, temp, index) {\n /*jslint bitwise: true */\n\n var value, actab, dctab, qtab, ctrC, i, k, j;\n\n prev[0] = this.selector(0);\n prev[1] = this.selector(1);\n prev[2] = this.selector(2);\n\n for (ctrC = 0; ctrC < this.numComp; ctrC+=1) {\n qtab = this.qTab[ctrC];\n actab = this.acTab[ctrC];\n dctab = this.dcTab[ctrC];\n for (i = 0; i < this.nBlock[ctrC]; i+=1) {\n for (k = 0; k < this.IDCT_Source.length; k+=1) {\n this.IDCT_Source[k] = 0;\n }\n\n value = this.getHuffmanValue(dctab, temp, index);\n\n if (value >= 0xFF00) {\n return value;\n }\n\n prev[ctrC] = this.IDCT_Source[0] = prev[ctrC] + this.getn(index, value, temp, index);\n this.IDCT_Source[0] *= qtab[0];\n\n for (j = 1; j < 64; j+=1) {\n value = this.getHuffmanValue(actab, temp, index);\n\n if (value >= 0xFF00) {\n return value;\n }\n\n j += (value >> 4);\n\n if ((value & 0x0F) === 0) {\n if ((value >> 4) === 0) {\n break;\n }\n } else {\n this.IDCT_Source[jpeg.lossless.Decoder.IDCT_P[j]] = this.getn(index, value & 0x0F, temp, index) * qtab[j];\n }\n }\n }\n }\n\n return 0;\n};\n\n\n\njpeg.lossless.Decoder.prototype.decodeSingle = function (prev, temp, index) {\n /*jslint bitwise: true */\n\n var value, i, n, nRestart;\n\n if (this.restarting) {\n this.restarting = false;\n prev[0] = (1 << (this.frame.precision - 1));\n } else {\n prev[0] = this.selector();\n }\n\n for (i = 0; i < this.nBlock[0]; i+=1) {\n value = this.getHuffmanValue(this.dcTab[0], temp, index);\n if (value >= 0xFF00) {\n return value;\n }\n\n n = this.getn(prev, value, temp, index);\n nRestart = (n >> 8);\n\n if ((nRestart >= jpeg.lossless.Decoder.RESTART_MARKER_BEGIN) && (nRestart <= jpeg.lossless.Decoder.RESTART_MARKER_END)) {\n return nRestart;\n }\n\n prev[0] += n;\n }\n\n return 0;\n};\n\n\n\n//\tHuffman table for fast search: (HuffTab) 8-bit Look up table 2-layer search architecture, 1st-layer represent 256 node (8 bits) if codeword-length > 8\n//\tbits, then the entry of 1st-layer = (# of 2nd-layer table) | MSB and it is stored in the 2nd-layer Size of tables in each layer are 256.\n//\tHuffTab[*][*][0-256] is always the only 1st-layer table.\n//\n//\tAn entry can be: (1) (# of 2nd-layer table) | MSB , for code length > 8 in 1st-layer (2) (Code length) << 8 | HuffVal\n//\n//\tHuffmanValue(table HuffTab[x][y] (ex) HuffmanValue(HuffTab[1][0],...)\n//\t ):\n//\t return: Huffman Value of table\n//\t 0xFF?? if it receives a MARKER\n//\t Parameter: table HuffTab[x][y] (ex) HuffmanValue(HuffTab[1][0],...)\n//\t temp temp storage for remainded bits\n//\t index index to bit of temp\n//\t in FILE pointer\n//\t Effect:\n//\t temp store new remainded bits\n//\t index change to new index\n//\t in change to new position\n//\t NOTE:\n//\t Initial by temp=0; index=0;\n//\t NOTE: (explain temp and index)\n//\t temp: is always in the form at calling time or returning time\n//\t | byte 4 | byte 3 | byte 2 | byte 1 |\n//\t | 0 | 0 | 00000000 | 00000??? | if not a MARKER\n//\t ^index=3 (from 0 to 15)\n//\t 321\n//\t NOTE (marker and marker_index):\n//\t If get a MARKER from 'in', marker=the low-byte of the MARKER\n//\t and marker_index=9\n//\t If marker_index=9 then index is always > 8, or HuffmanValue()\n//\t will not be called\njpeg.lossless.Decoder.prototype.getHuffmanValue = function (table, temp, index) {\n /*jslint bitwise: true */\n\n var code, input, mask;\n mask = 0xFFFF;\n\n if (index[0] < 8) {\n temp[0] <<= 8;\n input = this.stream.get8();\n if (input === 0xFF) {\n this.marker = this.stream.get8();\n if (this.marker !== 0) {\n this.markerIndex = 9;\n }\n }\n temp[0] |= input;\n } else {\n index[0] -= 8;\n }\n\n code = table[temp[0] >> index[0]];\n\n if ((code & jpeg.lossless.Decoder.MSB) !== 0) {\n if (this.markerIndex !== 0) {\n this.markerIndex = 0;\n return 0xFF00 | this.marker;\n }\n\n temp[0] &= (mask >> (16 - index[0]));\n temp[0] <<= 8;\n input = this.stream.get8();\n\n if (input === 0xFF) {\n this.marker = this.stream.get8();\n if (this.marker !== 0) {\n this.markerIndex = 9;\n }\n }\n\n temp[0] |= input;\n code = table[((code & 0xFF) * 256) + (temp[0] >> index[0])];\n index[0] += 8;\n }\n\n index[0] += 8 - (code >> 8);\n\n if (index[0] < 0) {\n throw new Error(\"index=\" + index[0] + \" temp=\" + temp[0] + \" code=\" + code + \" in HuffmanValue()\");\n }\n\n if (index[0] < this.markerIndex) {\n this.markerIndex = 0;\n return 0xFF00 | this.marker;\n }\n\n temp[0] &= (mask >> (16 - index[0]));\n return code & 0xFF;\n};\n\n\n\njpeg.lossless.Decoder.prototype.getn = function (PRED, n, temp, index) {\n /*jslint bitwise: true */\n\n var result, one, n_one, mask, input;\n one = 1;\n n_one = -1;\n mask = 0xFFFF;\n\n if (n === 0) {\n return 0;\n }\n\n if (n === 16) {\n if (PRED[0] >= 0) {\n return -32768;\n } else {\n return 32768;\n }\n }\n\n index[0] -= n;\n\n if (index[0] >= 0) {\n if ((index[0] < this.markerIndex) && !this.isLastPixel()) { // this was corrupting the last pixel in some cases\n this.markerIndex = 0;\n return (0xFF00 | this.marker) << 8;\n }\n\n result = temp[0] >> index[0];\n temp[0] &= (mask >> (16 - index[0]));\n } else {\n temp[0] <<= 8;\n input = this.stream.get8();\n\n if (input === 0xFF) {\n this.marker = this.stream.get8();\n if (this.marker !== 0) {\n this.markerIndex = 9;\n }\n }\n\n temp[0] |= input;\n index[0] += 8;\n\n if (index[0] < 0) {\n if (this.markerIndex !== 0) {\n this.markerIndex = 0;\n return (0xFF00 | this.marker) << 8;\n }\n\n temp[0] <<= 8;\n input = this.stream.get8();\n\n if (input === 0xFF) {\n this.marker = this.stream.get8();\n if (this.marker !== 0) {\n this.markerIndex = 9;\n }\n }\n\n temp[0] |= input;\n index[0] += 8;\n }\n\n if (index[0] < 0) {\n throw new Error(\"index=\" + index[0] + \" in getn()\");\n }\n\n if (index[0] < this.markerIndex) {\n this.markerIndex = 0;\n return (0xFF00 | this.marker) << 8;\n }\n\n result = temp[0] >> index[0];\n temp[0] &= (mask >> (16 - index[0]));\n }\n\n if (result < (one << (n - 1))) {\n result += (n_one << n) + 1;\n }\n\n return result;\n};\n\n\n\njpeg.lossless.Decoder.prototype.getPreviousX = function (compOffset) {\n /*jslint bitwise: true */\n\n if (this.xLoc > 0) {\n return this.getter((((this.yLoc * this.xDim) + this.xLoc) - 1), compOffset);\n } else if (this.yLoc > 0) {\n return this.getPreviousY(compOffset);\n } else {\n return (1 << (this.frame.precision - 1));\n }\n};\n\n\n\njpeg.lossless.Decoder.prototype.getPreviousXY = function (compOffset) {\n /*jslint bitwise: true */\n\n if ((this.xLoc > 0) && (this.yLoc > 0)) {\n return this.getter(((((this.yLoc - 1) * this.xDim) + this.xLoc) - 1), compOffset);\n } else {\n return this.getPreviousY(compOffset);\n }\n};\n\n\n\njpeg.lossless.Decoder.prototype.getPreviousY = function (compOffset) {\n /*jslint bitwise: true */\n\n if (this.yLoc > 0) {\n return this.getter((((this.yLoc - 1) * this.xDim) + this.xLoc), compOffset);\n } else {\n return this.getPreviousX(compOffset);\n }\n};\n\n\n\njpeg.lossless.Decoder.prototype.isLastPixel = function () {\n return (this.xLoc === (this.xDim - 1)) && (this.yLoc === (this.yDim - 1));\n};\n\n\n\njpeg.lossless.Decoder.prototype.outputSingle = function (PRED) {\n if ((this.xLoc < this.xDim) && (this.yLoc < this.yDim)) {\n this.setter((((this.yLoc * this.xDim) + this.xLoc)), this.mask & PRED[0]);\n\n this.xLoc+=1;\n\n if (this.xLoc >= this.xDim) {\n this.yLoc+=1;\n this.xLoc = 0;\n }\n }\n};\n\n\n\njpeg.lossless.Decoder.prototype.outputRGB = function (PRED) {\n var offset = ((this.yLoc * this.xDim) + this.xLoc);\n\n if ((this.xLoc < this.xDim) && (this.yLoc < this.yDim)) {\n this.setter(offset, PRED[0], 0);\n this.setter(offset, PRED[1], 1);\n this.setter(offset, PRED[2], 2);\n\n this.xLoc+=1;\n\n if (this.xLoc >= this.xDim) {\n this.yLoc+=1;\n this.xLoc = 0;\n }\n }\n};\n\n\n\njpeg.lossless.Decoder.prototype.setValue16 = function (index, val) {\n this.outputData.setInt16(index * 2, val, true);\n};\n\n\n\njpeg.lossless.Decoder.prototype.getValue16 = function (index) {\n return this.outputData.getInt16(index * 2, true);\n};\n\n\n\njpeg.lossless.Decoder.prototype.setValue8 = function (index, val) {\n this.outputData.setInt8(index, val);\n};\n\n\n\njpeg.lossless.Decoder.prototype.getValue8 = function (index) {\n return this.outputData.getInt8(index);\n};\n\n\n\njpeg.lossless.Decoder.prototype.setValueRGB = function (index, val, compOffset) {\n this.outputData.setUint8(index * 3 + compOffset, val);\n};\n\n\n\njpeg.lossless.Decoder.prototype.getValueRGB = function (index, compOffset) {\n return this.outputData.getUint8(index * 3 + compOffset);\n};\n\n\n\njpeg.lossless.Decoder.prototype.readApp = function() {\n var count = 0, length = this.stream.get16();\n count += 2;\n\n while (count < length) {\n this.stream.get8();\n count+=1;\n }\n\n return length;\n};\n\n\n\njpeg.lossless.Decoder.prototype.readComment = function () {\n var sb = \"\", count = 0, length;\n\n length = this.stream.get16();\n count += 2;\n\n while (count < length) {\n sb += this.stream.get8();\n count+=1;\n }\n\n return sb;\n};\n\n\n\njpeg.lossless.Decoder.prototype.readNumber = function() {\n var Ld = this.stream.get16();\n\n if (Ld !== 4) {\n throw new Error(\"ERROR: Define number format throw new IOException [Ld!=4]\");\n }\n\n return this.stream.get16();\n};\n\n\n\n/*** Exports ***/\n\nvar moduleType = typeof module;\nif ((moduleType !== 'undefined') && module.exports) {\n module.exports = jpeg.lossless.Decoder;\n}\n","/*\n * Copyright (C) 2015 Michael Martinez\n * Changes: Added support for selection values 2-7, fixed minor bugs &\n * warnings, split into multiple class files, and general clean up.\n *\n * 08-25-2015: Helmut Dersch agreed to a license change from LGPL to MIT.\n */\n\n/*\n * Copyright (C) Helmut Dersch\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\n/*jslint browser: true, node: true */\n/*global require, module */\n\n\"use strict\";\n\n/*** Imports ***/\nvar jpeg = jpeg || {};\njpeg.lossless = jpeg.lossless || {};\njpeg.lossless.ComponentSpec = jpeg.lossless.ComponentSpec || ((typeof require !== 'undefined') ? require('./component-spec.js') : null);\njpeg.lossless.DataStream = jpeg.lossless.DataStream || ((typeof require !== 'undefined') ? require('./data-stream.js') : null);\n\n\n/*** Constructor ***/\njpeg.lossless.FrameHeader = jpeg.lossless.FrameHeader || function () {\n this.components = []; // Components\n this.dimX = 0; // Number of samples per line\n this.dimY = 0; // Number of lines\n this.numComp = 0; // Number of component in the frame\n this.precision = 0; // Sample Precision (from the original image)\n};\n\n\n\n/*** Prototype Methods ***/\n\njpeg.lossless.FrameHeader.prototype.read = function (data) {\n /*jslint bitwise: true */\n\n var count = 0, length, i, c, temp;\n\n length = data.get16();\n count += 2;\n\n this.precision = data.get8();\n count+=1;\n\n this.dimY = data.get16();\n count += 2;\n\n this.dimX = data.get16();\n count += 2;\n\n this.numComp = data.get8();\n count+=1;\n for (i = 1; i <= this.numComp; i+=1) {\n if (count > length) {\n throw new Error(\"ERROR: frame format error\");\n }\n\n c = data.get8();\n count+=1;\n\n if (count >= length) {\n throw new Error(\"ERROR: frame format error [c>=Lf]\");\n }\n\n temp = data.get8();\n count+=1;\n\n if (!this.components[c]) {\n this.components[c] = new jpeg.lossless.ComponentSpec();\n }\n\n this.components[c].hSamp = temp >> 4;\n this.components[c].vSamp = temp & 0x0F;\n this.components[c].quantTableSel = data.get8();\n count+=1;\n }\n\n if (count !== length) {\n throw new Error(\"ERROR: frame format error [Lf!=count]\");\n }\n\n return 1;\n};\n\n\n/*** Exports ***/\n\nvar moduleType = typeof module;\nif ((moduleType !== 'undefined') && module.exports) {\n module.exports = jpeg.lossless.FrameHeader;\n}\n","/*\n * Copyright (C) 2015 Michael Martinez\n * Changes: Added support for selection values 2-7, fixed minor bugs &\n * warnings, split into multiple class files, and general clean up.\n *\n * 08-25-2015: Helmut Dersch agreed to a license change from LGPL to MIT.\n */\n\n/*\n * Copyright (C) Helmut Dersch\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\n/*jslint browser: true, node: true */\n/*global require, module */\n\n\"use strict\";\n\n/*** Imports ***/\nvar jpeg = jpeg || {};\njpeg.lossless = jpeg.lossless || {};\njpeg.lossless.DataStream = jpeg.lossless.DataStream || ((typeof require !== 'undefined') ? require('./data-stream.js') : null);\njpeg.lossless.Utils = jpeg.lossless.Utils || ((typeof require !== 'undefined') ? require('./utils.js') : null);\n\n\n/*** Constructor ***/\njpeg.lossless.HuffmanTable = jpeg.lossless.HuffmanTable || function () {\n this.l = jpeg.lossless.Utils.createArray(4, 2, 16);\n this.th = [];\n this.v = jpeg.lossless.Utils.createArray(4, 2, 16, 200);\n this.tc = jpeg.lossless.Utils.createArray(4, 2);\n\n this.tc[0][0] = 0;\n this.tc[1][0] = 0;\n this.tc[2][0] = 0;\n this.tc[3][0] = 0;\n this.tc[0][1] = 0;\n this.tc[1][1] = 0;\n this.tc[2][1] = 0;\n this.tc[3][1] = 0;\n this.th[0] = 0;\n this.th[1] = 0;\n this.th[2] = 0;\n this.th[3] = 0;\n};\n\n\n\n/*** Static Pseudo-constants ***/\n\njpeg.lossless.HuffmanTable.MSB = 0x80000000;\n\n\n/*** Prototype Methods ***/\n\njpeg.lossless.HuffmanTable.prototype.read = function(data, HuffTab) {\n /*jslint bitwise: true */\n\n var count = 0, length, temp, t, c, i, j;\n\n length = data.get16();\n count += 2;\n\n while (count < length) {\n temp = data.get8();\n count+=1;\n t = temp & 0x0F;\n if (t > 3) {\n throw new Error(\"ERROR: Huffman table ID > 3\");\n }\n\n c = temp >> 4;\n if (c > 2) {\n throw new Error(\"ERROR: Huffman table [Table class > 2 ]\");\n }\n\n this.th[t] = 1;\n this.tc[t][c] = 1;\n\n for (i = 0; i < 16; i+=1) {\n this.l[t][c][i] = data.get8();\n count+=1;\n }\n\n for (i = 0; i < 16; i+=1) {\n for (j = 0; j < this.l[t][c][i]; j+=1) {\n if (count > length) {\n throw new Error(\"ERROR: Huffman table format error [count>Lh]\");\n }\n\n this.v[t][c][i][j] = data.get8();\n count+=1;\n }\n }\n }\n\n if (count !== length) {\n throw new Error(\"ERROR: Huffman table format error [count!=Lf]\");\n }\n\n for (i = 0; i < 4; i+=1) {\n for (j = 0; j < 2; j+=1) {\n if (this.tc[i][j] !== 0) {\n this.buildHuffTable(HuffTab[i][j], this.l[i][j], this.v[i][j]);\n }\n }\n }\n\n return 1;\n};\n\n\n\n//\tBuild_HuffTab()\n//\tParameter: t table ID\n//\t c table class ( 0 for DC, 1 for AC )\n//\t L[i] # of codewords which length is i\n//\t V[i][j] Huffman Value (length=i)\n//\tEffect:\n//\t build up HuffTab[t][c] using L and V.\njpeg.lossless.HuffmanTable.prototype.buildHuffTable = function(tab, L, V) {\n /*jslint bitwise: true */\n\n var currentTable, temp, k, i, j, n;\n temp = 256;\n k = 0;\n\n for (i = 0; i < 8; i+=1) { // i+1 is Code length\n for (j = 0; j < L[i]; j+=1) {\n for (n = 0; n < (temp >> (i + 1)); n+=1) {\n tab[k] = V[i][j] | ((i + 1) << 8);\n k+=1;\n }\n }\n }\n\n for (i = 1; k < 256; i+=1, k+=1) {\n tab[k] = i | jpeg.lossless.HuffmanTable.MSB;\n }\n\n currentTable = 1;\n k = 0;\n\n for (i = 8; i < 16; i+=1) { // i+1 is Code length\n for (j = 0; j < L[i]; j+=1) {\n for (n = 0; n < (temp >> (i - 7)); n+=1) {\n tab[(currentTable * 256) + k] = V[i][j] | ((i + 1) << 8);\n k+=1;\n }\n\n if (k >= 256) {\n if (k > 256) {\n throw new Error(\"ERROR: Huffman table error(1)!\");\n }\n\n k = 0;\n currentTable+=1;\n }\n }\n }\n};\n\n\n/*** Exports ***/\n\nvar moduleType = typeof module;\nif ((moduleType !== 'undefined') && module.exports) {\n module.exports = jpeg.lossless.HuffmanTable;\n}\n","/*jslint browser: true, node: true */\n/*global require, module */\n\n\"use strict\";\n\n/*** Imports ***/\nvar jpeg = jpeg || {};\njpeg.lossless = jpeg.lossless || {};\njpeg.lossless.ComponentSpec = jpeg.lossless.ComponentSpec || ((typeof require !== 'undefined') ? require('./component-spec.js') : null);\njpeg.lossless.DataStream = jpeg.lossless.DataStream || ((typeof require !== 'undefined') ? require('./data-stream.js') : null);\njpeg.lossless.Decoder = jpeg.lossless.Decoder || ((typeof require !== 'undefined') ? require('./decoder.js') : null);\njpeg.lossless.FrameHeader = jpeg.lossless.FrameHeader || ((typeof require !== 'undefined') ? require('./frame-header.js') : null);\njpeg.lossless.HuffmanTable = jpeg.lossless.HuffmanTable || ((typeof require !== 'undefined') ? require('./huffman-table.js') : null);\njpeg.lossless.QuantizationTable = jpeg.lossless.QuantizationTable || ((typeof require !== 'undefined') ? require('./quantization-table.js') : null);\njpeg.lossless.ScanComponent = jpeg.lossless.ScanComponent || ((typeof require !== 'undefined') ? require('./scan-component.js') : null);\njpeg.lossless.ScanHeader = jpeg.lossless.ScanHeader || ((typeof require !== 'undefined') ? require('./scan-header.js') : null);\njpeg.lossless.Utils = jpeg.lossless.Utils || ((typeof require !== 'undefined') ? require('./utils.js') : null);\n\n\n/*** Exports ***/\nvar moduleType = typeof module;\nif ((moduleType !== 'undefined') && module.exports) {\n module.exports = jpeg;\n}\n","/*\n * Copyright (C) 2015 Michael Martinez\n * Changes: Added support for selection values 2-7, fixed minor bugs &\n * warnings, split into multiple class files, and general clean up.\n *\n * 08-25-2015: Helmut Dersch agreed to a license change from LGPL to MIT.\n */\n\n/*\n * Copyright (C) Helmut Dersch\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\n/*jslint browser: true, node: true */\n/*global require, module */\n\n\"use strict\";\n\n/*** Imports ***/\nvar jpeg = jpeg || {};\njpeg.lossless = jpeg.lossless || {};\njpeg.lossless.DataStream = jpeg.lossless.DataStream || ((typeof require !== 'undefined') ? require('./data-stream.js') : null);\njpeg.lossless.Utils = jpeg.lossless.Utils || ((typeof require !== 'undefined') ? require('./utils.js') : null);\n\n\n/*** Constructor ***/\njpeg.lossless.QuantizationTable = jpeg.lossless.QuantizationTable || function () {\n this.precision = []; // Quantization precision 8 or 16\n this.tq = []; // 1: this table is presented\n this.quantTables = jpeg.lossless.Utils.createArray(4, 64); // Tables\n\n this.tq[0] = 0;\n this.tq[1] = 0;\n this.tq[2] = 0;\n this.tq[3] = 0;\n};\n\n\n\n/*** Static Methods ***/\n\njpeg.lossless.QuantizationTable.enhanceQuantizationTable = function(qtab, table) {\n /*jslint bitwise: true */\n\n var i;\n\n for (i = 0; i < 8; i+=1) {\n qtab[table[(0 * 8) + i]] *= 90;\n qtab[table[(4 * 8) + i]] *= 90;\n qtab[table[(2 * 8) + i]] *= 118;\n qtab[table[(6 * 8) + i]] *= 49;\n qtab[table[(5 * 8) + i]] *= 71;\n qtab[table[(1 * 8) + i]] *= 126;\n qtab[table[(7 * 8) + i]] *= 25;\n qtab[table[(3 * 8) + i]] *= 106;\n }\n\n for (i = 0; i < 8; i+=1) {\n qtab[table[0 + (8 * i)]] *= 90;\n qtab[table[4 + (8 * i)]] *= 90;\n qtab[table[2 + (8 * i)]] *= 118;\n qtab[table[6 + (8 * i)]] *= 49;\n qtab[table[5 + (8 * i)]] *= 71;\n qtab[table[1 + (8 * i)]] *= 126;\n qtab[table[7 + (8 * i)]] *= 25;\n qtab[table[3 + (8 * i)]] *= 106;\n }\n\n for (i = 0; i < 64; i+=1) {\n qtab[i] >>= 6;\n }\n};\n\n\n/*** Prototype Methods ***/\n\njpeg.lossless.QuantizationTable.prototype.read = function (data, table) {\n /*jslint bitwise: true */\n\n var count = 0, length, temp, t, i;\n\n length = data.get16();\n count += 2;\n\n while (count < length) {\n temp = data.get8();\n count+=1;\n t = temp & 0x0F;\n\n if (t > 3) {\n throw new Error(\"ERROR: Quantization table ID > 3\");\n }\n\n this.precision[t] = temp >> 4;\n\n if (this.precision[t] === 0) {\n this.precision[t] = 8;\n } else if (this.precision[t] === 1) {\n this.precision[t] = 16;\n } else {\n throw new Error(\"ERROR: Quantization table precision error\");\n }\n\n this.tq[t] = 1;\n\n if (this.precision[t] === 8) {\n for (i = 0; i < 64; i+=1) {\n if (count > length) {\n throw new Error(\"ERROR: Quantization table format error\");\n }\n\n this.quantTables[t][i] = data.get8();\n count+=1;\n }\n\n jpeg.lossless.QuantizationTable.enhanceQuantizationTable(this.quantTables[t], table);\n } else {\n for (i = 0; i < 64; i+=1) {\n if (count > length) {\n throw new Error(\"ERROR: Quantization table format error\");\n }\n\n this.quantTables[t][i] = data.get16();\n count += 2;\n }\n\n jpeg.lossless.QuantizationTable.enhanceQuantizationTable(this.quantTables[t], table);\n }\n }\n\n if (count !== length) {\n throw new Error(\"ERROR: Quantization table error [count!=Lq]\");\n }\n\n return 1;\n};\n\n\n\n/*** Exports ***/\n\nvar moduleType = typeof module;\nif ((moduleType !== 'undefined') && module.exports) {\n module.exports = jpeg.lossless.QuantizationTable;\n}\n","/*\n * Copyright (C) 2015 Michael Martinez\n * Changes: Added support for selection values 2-7, fixed minor bugs &\n * warnings, split into multiple class files, and general clean up.\n *\n * 08-25-2015: Helmut Dersch agreed to a license change from LGPL to MIT.\n */\n\n/*\n * Copyright (C) Helmut Dersch\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\n/*jslint browser: true, node: true */\n/*global require, module */\n\n\"use strict\";\n\n/*** Imports ***/\nvar jpeg = jpeg || {};\njpeg.lossless = jpeg.lossless || {};\n\n\n/*** Constructor ***/\njpeg.lossless.ScanComponent = jpeg.lossless.ScanComponent || function () {\n this.acTabSel = 0; // AC table selector\n this.dcTabSel = 0; // DC table selector\n this.scanCompSel = 0; // Scan component selector\n};\n\n\n\n/*** Exports ***/\n\nvar moduleType = typeof module;\nif ((moduleType !== 'undefined') && module.exports) {\n module.exports = jpeg.lossless.ScanComponent;\n}\n","/*\n * Copyright (C) 2015 Michael Martinez\n * Changes: Added support for selection values 2-7, fixed minor bugs &\n * warnings, split into multiple class files, and general clean up.\n *\n * 08-25-2015: Helmut Dersch agreed to a license change from LGPL to MIT.\n */\n\n/*\n * Copyright (C) Helmut Dersch\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\n/*jslint browser: true, node: true */\n/*global require, module */\n\n\"use strict\";\n\n/*** Imports ***/\nvar jpeg = jpeg || {};\njpeg.lossless = jpeg.lossless || {};\njpeg.lossless.DataStream = jpeg.lossless.DataStream || ((typeof require !== 'undefined') ? require('./data-stream.js') : null);\njpeg.lossless.ScanComponent = jpeg.lossless.ScanComponent || ((typeof require !== 'undefined') ? require('./scan-component.js') : null);\n\n\n/*** Constructor ***/\njpeg.lossless.ScanHeader = jpeg.lossless.ScanHeader || function () {\n this.ah = 0;\n this.al = 0;\n this.numComp = 0; // Number of components in the scan\n this.selection = 0; // Start of spectral or predictor selection\n this.spectralEnd = 0; // End of spectral selection\n this.components = [];\n};\n\n\n/*** Prototype Methods ***/\n\njpeg.lossless.ScanHeader.prototype.read = function(data) {\n /*jslint bitwise: true */\n\n var count = 0, length, i, temp;\n\n length = data.get16();\n count += 2;\n\n this.numComp = data.get8();\n count+=1;\n\n for (i = 0; i < this.numComp; i+=1) {\n this.components[i] = new jpeg.lossless.ScanComponent();\n\n if (count > length) {\n throw new Error(\"ERROR: scan header format error\");\n }\n\n this.components[i].scanCompSel = data.get8();\n count+=1;\n\n temp = data.get8();\n count+=1;\n\n this.components[i].dcTabSel = (temp >> 4);\n this.components[i].acTabSel = (temp & 0x0F);\n }\n\n this.selection = data.get8();\n count+=1;\n\n this.spectralEnd = data.get8();\n count+=1;\n\n temp = data.get8();\n this.ah = (temp >> 4);\n this.al = (temp & 0x0F);\n count+=1;\n\n if (count !== length) {\n throw new Error(\"ERROR: scan header format error [count!=Ns]\");\n }\n\n return 1;\n};\n\n\n\n/*** Exports ***/\n\nvar moduleType = typeof module;\nif ((moduleType !== 'undefined') && module.exports) {\n module.exports = jpeg.lossless.ScanHeader;\n}\n","/*\n * Copyright (C) 2015 Michael Martinez\n * Changes: Added support for selection values 2-7, fixed minor bugs &\n * warnings, split into multiple class files, and general clean up.\n *\n * 08-25-2015: Helmut Dersch agreed to a license change from LGPL to MIT.\n */\n\n/*\n * Copyright (C) Helmut Dersch\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\n/*jslint browser: true, node: true */\n/*global require, module */\n\n\"use strict\";\n\n/*** Imports ***/\nvar jpeg = jpeg || {};\njpeg.lossless = jpeg.lossless || {};\n\n\n/*** Constructor ***/\njpeg.lossless.Utils = jpeg.lossless.Utils || {};\n\n\n/*** Static methods ***/\n\n// http://stackoverflow.com/questions/966225/how-can-i-create-a-two-dimensional-array-in-javascript\njpeg.lossless.Utils.createArray = function (length) {\n var arr = new Array(length || 0),\n i = length;\n\n if (arguments.length > 1) {\n var args = Array.prototype.slice.call(arguments, 1);\n while(i--) arr[length-1 - i] = jpeg.lossless.Utils.createArray.apply(this, args);\n }\n\n return arr;\n};\n\n\n// http://stackoverflow.com/questions/18638900/javascript-crc32\njpeg.lossless.Utils.makeCRCTable = function(){\n var c;\n var crcTable = [];\n for(var n =0; n < 256; n++){\n c = n;\n for(var k =0; k < 8; k++){\n c = ((c&1) ? (0xEDB88320 ^ (c >>> 1)) : (c >>> 1));\n }\n crcTable[n] = c;\n }\n return crcTable;\n};\n\njpeg.lossless.Utils.crc32 = function(dataView) {\n var crcTable = jpeg.lossless.Utils.crcTable || (jpeg.lossless.Utils.crcTable = jpeg.lossless.Utils.makeCRCTable());\n var crc = 0 ^ (-1);\n\n for (var i = 0; i < dataView.byteLength; i++ ) {\n crc = (crc >>> 8) ^ crcTable[(crc ^ dataView.getUint8(i)) & 0xFF];\n }\n\n return (crc ^ (-1)) >>> 0;\n};\n\n\n/*** Exports ***/\n\nvar moduleType = typeof module;\nif ((moduleType !== 'undefined') && module.exports) {\n module.exports = jpeg.lossless.Utils;\n}\n","'use strict';\n\n/**\n* FUNCTION: abs( x )\n*\tComputes the absolute value of `x`.\n*\n* @param {Number} x - input value\n* @returns {Number} absolute value\n*/\nfunction abs( x ) {\n\tif ( x < 0 ) {\n\t\treturn -x;\n\t}\n\tif ( x === 0 ) {\n\t\treturn 0; // handle negative zero\n\t}\n\treturn x;\n} // end FUNCTION abs()\n\n\n// EXPORTS //\n\nmodule.exports = abs;\n","'use strict';\n\n// EXPORTS //\n\nmodule.exports = Math.ceil;\n","'use strict';\n\n// MODULES //\n\nvar floor = require( 'math-floor' );\n\n\n// DIV2 //\n\n/**\n* FUNCTION: div2( x )\n*\tConverts a nonnegative integer to a literal bit representation using the divide-by-2 algorithm.\n*\n* @param {Number} x - nonnegative integer\n* @returns {String} bit representation\n*/\nfunction div2( x ) {\n\tvar str = '';\n\tvar y;\n\n\t// We repeatedly divide by 2 and check for a remainder. If a remainder exists, the number is odd and we add a '1' bit...\n\twhile ( x > 0 ) {\n\t\ty = x / 2;\n\t\tx = floor( y );\n\t\tif ( y === x ) {\n\t\t\tstr = '0' + str;\n\t\t} else {\n\t\t\tstr = '1' + str;\n\t\t}\n\t}\n\treturn str;\n} // end FUNCTION div2()\n\n\n// EXPORTS //\n\nmodule.exports = div2;\n","'use strict';\n\n// MODULES //\n\nvar pinf = require( 'const-pinf-float32' );\nvar ninf = require( 'const-ninf-float32' );\nvar abs = require( 'math-abs' );\nvar floor = require( 'math-floor' );\nvar rpad = require( 'utils-right-pad-string' );\nvar lpad = require( 'utils-left-pad-string' );\nvar repeat = require( 'utils-repeat-string' );\nvar div2 = require( './div2.js' );\nvar mult2 = require( './mult2.js' );\n\n\n// CONSTANTS //\n\nvar BIAS = 127; // exponent bias => (2**8)/2 - 1\n\n\n// BINARY STRING //\n\n/**\n* FUNCTION: binaryString( x )\n*\tReturns a string giving the literal bit representation of a single-precision floating-point number.\n*\n* @param {Number} x - input value\n* @returns {String} bit representation\n*/\nfunction binaryString( x ) {\n\tvar nbits;\n\tvar sign;\n\tvar str;\n\tvar exp;\n\tvar n;\n\tvar f;\n\tvar i;\n\n\t// Check for a negative value or negative zero...\n\tif ( x < 0 || 1/x === ninf ) {\n\t\tsign = '1';\n\t} else {\n\t\tsign = '0';\n\t}\n\t// Special case: +-infinity\n\tif ( x === pinf || x === ninf ) {\n\t\t// Based on IEEE 754-2008...\n\t\texp = repeat( '1', 8 ); // all 1s\n\t\tstr = repeat( '0', 23 ); // all 0s\n\t\treturn sign + exp + str;\n\t}\n\t// Special case: NaN\n\tif ( x !== x ) {\n\t\t// Based on IEEE 754-2008...\n\t\texp = repeat( '1', 8 ); // all 1s\n\t\tstr = '1' + repeat( '0', 22 ); // can't be all 0s\n\t\treturn sign + exp + str;\n\t}\n\t// Special case: +-0\n\tif ( x === 0 ) {\n\t\t// Based on IEEE 754-2008...\n\t\texp = repeat( '0', 8 ); // all 0s\n\t\tstr = repeat( '0', 23 ); // all 0s\n\t\treturn sign + exp + str;\n\t}\n\tx = abs( x );\n\n\t// Isolate the integer part (digits before the decimal):\n\tn = floor( x );\n\n\t// Isolate the fractional part (digits after the decimal):\n\tf = x - n;\n\n\t// Convert the integer and fractional parts to bit strings:\n\tn = div2( n );\n\tf = mult2( f );\n\n\t// Determine the exponent needed to normalize the integer+fractional parts...\n\tif ( n ) {\n\t\t// Move the decimal `d` digits to the left:\n\t\texp = n.length - 1;\n\t} else {\n\t\t// Find the first '1' bit...\n\t\tfor ( i = 0; i < f.length; i++ ) {\n\t\t\tif ( f[ i ] === '1' ) {\n\t\t\t\tnbits = i + 1;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t\t// Move the decimal `d` digits to the right:\n\t\texp = -nbits;\n\t}\n\t// Normalize the combined integer+fractional string...\n\tstr = n + f;\n\tif ( exp < 0 ) {\n\t\t// Handle subnormals...\n\t\tif ( exp <= -BIAS ) {\n\t\t\t// Cap the number of bits removed:\n\t\t\tnbits = BIAS - 1;\n\t\t}\n\t\t// Remove all leading zeros and the first '1' for normal values, and, for subnormals, remove at most BIAS-1 leading bits:\n\t\tstr = str.substring( nbits );\n\t} else {\n\t\t// Remove the leading '1' (implicit/hidden bit):\n\t\tstr = str.substring( 1 );\n\t}\n\t// Convert the exponent to a bit string:\n\texp = div2( exp + BIAS );\n\texp = lpad( exp, 8, '0' );\n\n\t// Fill in any trailing zeros and ensure we have only 23 fraction bits:\n\tstr = rpad( str, 23, '0' ).substring( 0, 23 );\n\n\t// Return a bit representation:\n\treturn sign + exp + str;\n} // end FUNCTION binaryString()\n\n\n// EXPORTS //\n\nmodule.exports = binaryString;\n","'use strict';\n\n// VARIABLES //\n\nvar MAX_ITER = 149; // 127+22 (subnormals)\nvar MAX_BITS = 24; // only 23 bits for fraction\n\n\n// MULT2 //\n\n/**\n* FUNCTION: mult2( x )\n*\tConverts a fraction to a literal bit representation using the multiply-by-2 algorithm.\n*\n* @param {Number} x - number less than 1\n* @returns {String} bit representation\n*/\nfunction mult2( x ) {\n\tvar str;\n\tvar y;\n\tvar i;\n\tvar j;\n\n\tstr = '';\n\tif ( x === 0 ) {\n\t\treturn str;\n\t}\n\tj = MAX_ITER;\n\n\t// Each time we multiply by 2 and find a ones digit, add a '1'; otherwise, add a '0'..\n\tfor ( i = 0; i < MAX_ITER; i++ ) {\n\t\ty = x * 2;\n\t\tif ( y >= 1 ) {\n\t\t\tx = y - 1;\n\t\t\tstr += '1';\n\t\t\tif ( j === MAX_ITER ) {\n\t\t\t\tj = i; // first '1'\n\t\t\t}\n\t\t} else {\n\t\t\tx = y;\n\t\t\tstr += '0';\n\t\t}\n\t\t// Stop when we have no more decimals to process or in the event we found a fraction which cannot be represented in a finite number of bits...\n\t\tif ( y === 1 || i-j > MAX_BITS ) {\n\t\t\tbreak;\n\t\t}\n\t}\n\treturn str;\n} // end FUNCTION mult2()\n\n\n// EXPORTS //\n\nmodule.exports = mult2;\n","'use strict';\n\n// EXPORTS //\n\nmodule.exports = Math.floor;\n","\n/*jslint browser: true, node: true */\n/*global require, module */\n\n\"use strict\";\n\n/*** Imports ***/\n\n/**\n * nifti\n * @type {*|{}}\n */\nvar nifti = nifti || {};\nnifti.NIFTI1 = nifti.NIFTI1 || ((typeof require !== 'undefined') ? require('./nifti1.js') : null);\nnifti.NIFTI2 = nifti.NIFTI2 || ((typeof require !== 'undefined') ? require('./nifti2.js') : null);\nnifti.Utils = nifti.Utils || ((typeof require !== 'undefined') ? require('./utilities.js') : null);\n\nvar pako = pako || ((typeof require !== 'undefined') ? require('pako') : null);\n\n\n\n/*** Static Methods ***/\n\n/**\n * Returns true if this data represents a NIFTI-1 header.\n * @param {ArrayBuffer} data\n * @returns {boolean}\n */\nnifti.isNIFTI1 = function (data) {\n var buf, mag1, mag2, mag3;\n\n buf = new DataView(data);\n mag1 = buf.getUint8(nifti.NIFTI1.MAGIC_NUMBER_LOCATION);\n mag2 = buf.getUint8(nifti.NIFTI1.MAGIC_NUMBER_LOCATION + 1);\n mag3 = buf.getUint8(nifti.NIFTI1.MAGIC_NUMBER_LOCATION + 2);\n\n return !!((mag1 === nifti.NIFTI1.MAGIC_NUMBER[0]) && (mag2 === nifti.NIFTI1.MAGIC_NUMBER[1]) &&\n (mag3 === nifti.NIFTI1.MAGIC_NUMBER[2]));\n};\n\n\n/**\n * Returns true if this data represents a NIFTI-2 header.\n * @param {ArrayBuffer} data\n * @returns {boolean}\n */\nnifti.isNIFTI2 = function (data) {\n var buf, mag1, mag2, mag3;\n\n buf = new DataView(data);\n mag1 = buf.getUint8(nifti.NIFTI2.MAGIC_NUMBER_LOCATION);\n mag2 = buf.getUint8(nifti.NIFTI2.MAGIC_NUMBER_LOCATION + 1);\n mag3 = buf.getUint8(nifti.NIFTI2.MAGIC_NUMBER_LOCATION + 2);\n\n return !!((mag1 === nifti.NIFTI2.MAGIC_NUMBER[0]) && (mag2 === nifti.NIFTI2.MAGIC_NUMBER[1]) &&\n (mag3 === nifti.NIFTI2.MAGIC_NUMBER[2]));\n};\n\n\n\n/**\n * Returns true if this data represents a NIFTI header.\n * @param {ArrayBuffer} data\n * @returns {boolean}\n */\nnifti.isNIFTI = function (data) {\n return (nifti.isNIFTI1(data) || nifti.isNIFTI2(data));\n};\n\n\n\n/**\n * Returns true if this data is GZIP compressed.\n * @param {ArrayBuffer} data\n * @returns {boolean}\n */\nnifti.isCompressed = function (data) {\n var buf, magicCookie1, magicCookie2;\n\n if (data) {\n buf = new DataView(data);\n\n magicCookie1 = buf.getUint8(0);\n magicCookie2 = buf.getUint8(1);\n\n if (magicCookie1 === nifti.Utils.GUNZIP_MAGIC_COOKIE1) {\n return true;\n }\n\n if (magicCookie2 === nifti.Utils.GUNZIP_MAGIC_COOKIE2) {\n return true;\n }\n }\n\n return false;\n};\n\n\n\n/**\n * Returns decompressed data.\n * @param {ArrayBuffer} data\n * @returns {ArrayBuffer}\n */\nnifti.decompress = function (data) {\n return pako.inflate(data).buffer;\n};\n\n\n\n/**\n * Reads and returns the header object.\n * @param {ArrayBuffer} data\n * @returns {nifti.NIFTI1|nifti.NIFTI2|null}\n */\nnifti.readHeader = function (data) {\n var header = null;\n\n if (nifti.isCompressed(data)) {\n data = nifti.decompress(data);\n }\n\n if (nifti.isNIFTI1(data)) {\n header = new nifti.NIFTI1();\n } else if (nifti.isNIFTI2(data)) {\n header = new nifti.NIFTI2();\n }\n\n if (header) {\n header.readHeader(data);\n } else {\n console.error(\"That file does not appear to be NIFTI!\");\n }\n\n return header;\n};\n\n\n\n/**\n * Returns true if this header contains an extension.\n * @param {nifti.NIFTI1|nifti.NIFTI2} header\n * @returns {boolean}\n */\nnifti.hasExtension = function (header) {\n return (header.extensionFlag[0] != 0);\n};\n\n\n\n/**\n * Returns the image data.\n * @param {nifti.NIFTI1|nifti.NIFTI2} header\n * @param {ArrayBuffer} data\n * @returns {ArrayBuffer}\n */\nnifti.readImage = function (header, data) {\n var imageOffset = header.vox_offset,\n timeDim = 1,\n statDim = 1;\n\n if (header.dims[4]) {\n timeDim = header.dims[4];\n }\n\n if (header.dims[5]) {\n statDim = header.dims[5];\n }\n\n var imageSize = header.dims[1] * header.dims[2] * header.dims[3] * timeDim * statDim * (header.numBitsPerVoxel / 8);\n return data.slice(imageOffset, imageOffset + imageSize);\n};\n\n\n\n/**\n * Returns the extension data (including extension header).\n * @param {nifti.NIFTI1|nifti.NIFTI2} header\n * @param {ArrayBuffer} data\n * @returns {ArrayBuffer}\n */\nnifti.readExtension = function (header, data) {\n var loc = header.getExtensionLocation(),\n size = header.extensionSize;\n\n return data.slice(loc, loc + size);\n};\n\n\n\n/**\n * Returns the extension data.\n * @param {nifti.NIFTI1|nifti.NIFTI2} header\n * @param {ArrayBuffer} data\n * @returns {ArrayBuffer}\n */\nnifti.readExtensionData = function (header, data) {\n var loc = header.getExtensionLocation(),\n size = header.extensionSize;\n\n return data.slice(loc + 8, loc + size - 8);\n};\n\n\n/*** Exports ***/\n\nvar moduleType = typeof module;\nif ((moduleType !== 'undefined') && module.exports) {\n module.exports = nifti;\n}\n","\n/*jslint browser: true, node: true */\n/*global */\n\n\"use strict\";\n\n/*** Imports ***/\n\nvar nifti = nifti || {};\nnifti.Utils = nifti.Utils || ((typeof require !== 'undefined') ? require('./utilities.js') : null);\n\n\n\n/*** Constructor ***/\n\n/**\n * The NIFTI1 constructor.\n * @constructor\n * @property {boolean} littleEndian\n * @property {number} dim_info\n * @property {number[]} dims - image dimensions\n * @property {number} intent_p1\n * @property {number} intent_p2\n * @property {number} intent_p3\n * @property {number} intent_code\n * @property {number} datatypeCode\n * @property {number} numBitsPerVoxel\n * @property {number} slice_start\n * @property {number} slice_end\n * @property {number} slice_code\n * @property {number[]} pixDims - voxel dimensions\n * @property {number} vox_offset\n * @property {number} scl_slope\n * @property {number} scl_inter\n * @property {number} xyzt_units\n * @property {number} cal_max\n * @property {number} cal_min\n * @property {number} slice_duration\n * @property {number} toffset\n * @property {string} description\n * @property {string} aux_file\n * @property {string} intent_name\n * @property {number} qform_code\n * @property {number} sform_code\n * @property {number} quatern_b\n * @property {number} quatern_c\n * @property {number} quatern_d\n * @property {number} quatern_x\n * @property {number} quatern_y\n * @property {number} quatern_z\n * @property {Array.>} affine\n * @property {string} magic\n * @property {boolean} isHDR - if hdr/img format\n * @property {number[]} extensionFlag\n * @property {number} extensionSize\n * @property {number} extensionCode\n * @type {Function}\n */\nnifti.NIFTI1 = nifti.NIFTI1 || function () {\n this.littleEndian = false;\n this.dim_info = 0;\n this.dims = [];\n this.intent_p1 = 0;\n this.intent_p2 = 0;\n this.intent_p3 = 0;\n this.intent_code = 0;\n this.datatypeCode = 0;\n this.numBitsPerVoxel = 0;\n this.slice_start = 0;\n this.slice_end = 0;\n this.slice_code = 0;\n this.pixDims = [];\n this.vox_offset = 0;\n this.scl_slope = 1;\n this.scl_inter = 0;\n this.xyzt_units = 0;\n this.cal_max = 0;\n this.cal_min = 0;\n this.slice_duration = 0;\n this.toffset = 0;\n this.description = \"\";\n this.aux_file = \"\";\n this.intent_name = \"\";\n this.qform_code = 0;\n this.sform_code = 0;\n this.quatern_b = 0;\n this.quatern_c = 0;\n this.quatern_d = 0;\n this.qoffset_x = 0;\n this.qoffset_y = 0;\n this.qoffset_z = 0;\n this.affine = [[1, 0, 0, 0], [0, 1, 0, 0], [0, 0, 1, 0], [0, 0, 0, 1]];\n this.magic = 0;\n this.isHDR = false;\n this.extensionFlag = [0, 0, 0, 0];\n this.extensionSize = 0;\n this.extensionCode = 0;\n};\n\n\n\n/*** Static Pseudo-constants ***/\n\n// datatype codes\nnifti.NIFTI1.TYPE_NONE = 0;\nnifti.NIFTI1.TYPE_BINARY = 1;\nnifti.NIFTI1.TYPE_UINT8 = 2;\nnifti.NIFTI1.TYPE_INT16 = 4;\nnifti.NIFTI1.TYPE_INT32 = 8;\nnifti.NIFTI1.TYPE_FLOAT32 = 16;\nnifti.NIFTI1.TYPE_COMPLEX64 = 32;\nnifti.NIFTI1.TYPE_FLOAT64 = 64;\nnifti.NIFTI1.TYPE_RGB24 = 128;\nnifti.NIFTI1.TYPE_INT8 = 256;\nnifti.NIFTI1.TYPE_UINT16 = 512;\nnifti.NIFTI1.TYPE_UINT32 = 768;\nnifti.NIFTI1.TYPE_INT64 = 1024;\nnifti.NIFTI1.TYPE_UINT64 = 1280;\nnifti.NIFTI1.TYPE_FLOAT128 = 1536;\nnifti.NIFTI1.TYPE_COMPLEX128 = 1792;\nnifti.NIFTI1.TYPE_COMPLEX256 = 2048;\n\n// transform codes\nnifti.NIFTI1.XFORM_UNKNOWN = 0;\nnifti.NIFTI1.XFORM_SCANNER_ANAT = 1;\nnifti.NIFTI1.XFORM_ALIGNED_ANAT = 2;\nnifti.NIFTI1.XFORM_TALAIRACH = 3;\nnifti.NIFTI1.XFORM_MNI_152 = 4;\n\n// unit codes\nnifti.NIFTI1.SPATIAL_UNITS_MASK = 0x07;\nnifti.NIFTI1.TEMPORAL_UNITS_MASK = 0x38;\nnifti.NIFTI1.UNITS_UNKNOWN = 0;\nnifti.NIFTI1.UNITS_METER = 1;\nnifti.NIFTI1.UNITS_MM = 2;\nnifti.NIFTI1.UNITS_MICRON = 3;\nnifti.NIFTI1.UNITS_SEC = 8;\nnifti.NIFTI1.UNITS_MSEC = 16;\nnifti.NIFTI1.UNITS_USEC = 24;\nnifti.NIFTI1.UNITS_HZ = 32;\nnifti.NIFTI1.UNITS_PPM = 40;\nnifti.NIFTI1.UNITS_RADS = 48;\n\n// nifti1 codes\nnifti.NIFTI1.MAGIC_COOKIE = 348;\nnifti.NIFTI1.MAGIC_NUMBER_LOCATION = 344;\nnifti.NIFTI1.MAGIC_NUMBER = [0x6E, 0x2B, 0x31]; // n+1 (.nii)\nnifti.NIFTI1.MAGIC_NUMBER2 = [0x6E, 0x69, 0x31]; // ni1 (.hdr/.img)\nnifti.NIFTI1.EXTENSION_HEADER_SIZE = 8;\n\n\n/*** Prototype Methods ***/\n\n/**\n * Reads the header data.\n * @param {ArrayBuffer} data\n */\nnifti.NIFTI1.prototype.readHeader = function (data) {\n var rawData = new DataView(data),\n magicCookieVal = nifti.Utils.getIntAt(rawData, 0, this.littleEndian),\n ctr,\n ctrOut,\n ctrIn,\n index;\n\n if (magicCookieVal !== nifti.NIFTI1.MAGIC_COOKIE) { // try as little endian\n this.littleEndian = true;\n magicCookieVal = nifti.Utils.getIntAt(rawData, 0, this.littleEndian);\n }\n\n if (magicCookieVal !== nifti.NIFTI1.MAGIC_COOKIE) {\n throw new Error(\"This does not appear to be a NIFTI file!\");\n }\n\n this.dim_info = nifti.Utils.getByteAt(rawData, 39);\n\n for (ctr = 0; ctr < 8; ctr += 1) {\n index = 40 + (ctr * 2);\n this.dims[ctr] = nifti.Utils.getShortAt(rawData, index, this.littleEndian);\n }\n\n this.intent_p1 = nifti.Utils.getFloatAt(rawData, 56, this.littleEndian);\n this.intent_p2 = nifti.Utils.getFloatAt(rawData, 60, this.littleEndian);\n this.intent_p3 = nifti.Utils.getFloatAt(rawData, 64, this.littleEndian);\n this.intent_code = nifti.Utils.getShortAt(rawData, 68, this.littleEndian);\n\n this.datatypeCode = nifti.Utils.getShortAt(rawData, 70, this.littleEndian);\n this.numBitsPerVoxel = nifti.Utils.getShortAt(rawData, 72, this.littleEndian);\n\n this.slice_start = nifti.Utils.getShortAt(rawData, 74, this.littleEndian);\n\n for (ctr = 0; ctr < 8; ctr += 1) {\n index = 76 + (ctr * 4);\n this.pixDims[ctr] = nifti.Utils.getFloatAt(rawData, index, this.littleEndian);\n }\n\n this.vox_offset = nifti.Utils.getFloatAt(rawData, 108, this.littleEndian);\n\n this.scl_slope = nifti.Utils.getFloatAt(rawData, 112, this.littleEndian);\n this.scl_inter = nifti.Utils.getFloatAt(rawData, 116, this.littleEndian);\n\n this.slice_end = nifti.Utils.getShortAt(rawData, 120, this.littleEndian);\n this.slice_code = nifti.Utils.getByteAt(rawData, 122);\n\n this.xyzt_units = nifti.Utils.getByteAt(rawData, 123);\n\n this.cal_max = nifti.Utils.getFloatAt(rawData, 124, this.littleEndian);\n this.cal_min = nifti.Utils.getFloatAt(rawData, 128, this.littleEndian);\n\n this.slice_duration = nifti.Utils.getFloatAt(rawData, 132, this.littleEndian);\n this.toffset = nifti.Utils.getFloatAt(rawData, 136, this.littleEndian);\n\n this.description = nifti.Utils.getStringAt(rawData, 148, 228);\n this.aux_file = nifti.Utils.getStringAt(rawData, 228, 252);\n\n this.qform_code = nifti.Utils.getShortAt(rawData, 252, this.littleEndian);\n this.sform_code = nifti.Utils.getShortAt(rawData, 254, this.littleEndian);\n\n this.quatern_b = nifti.Utils.getFloatAt(rawData, 256, this.littleEndian);\n this.quatern_c = nifti.Utils.getFloatAt(rawData, 260, this.littleEndian);\n this.quatern_d = nifti.Utils.getFloatAt(rawData, 264, this.littleEndian);\n this.qoffset_x = nifti.Utils.getFloatAt(rawData, 268, this.littleEndian);\n this.qoffset_y = nifti.Utils.getFloatAt(rawData, 272, this.littleEndian);\n this.qoffset_z = nifti.Utils.getFloatAt(rawData, 276, this.littleEndian);\n\n for (ctrOut = 0; ctrOut < 3; ctrOut += 1) {\n for (ctrIn = 0; ctrIn < 4; ctrIn += 1) {\n index = 280 + (((ctrOut * 4) + ctrIn) * 4);\n this.affine[ctrOut][ctrIn] = nifti.Utils.getFloatAt(rawData, index, this.littleEndian);\n }\n }\n\n this.affine[3][0] = 0;\n this.affine[3][1] = 0;\n this.affine[3][2] = 0;\n this.affine[3][3] = 1;\n\n this.intent_name = nifti.Utils.getStringAt(rawData, 328, 344);\n this.magic = nifti.Utils.getStringAt(rawData, 344, 348);\n\n this.isHDR = (this.magic === nifti.NIFTI1.MAGIC_NUMBER2);\n\n if (rawData.byteLength > nifti.NIFTI1.MAGIC_COOKIE) {\n this.extensionFlag[0] = nifti.Utils.getByteAt(rawData, 348);\n this.extensionFlag[1] = nifti.Utils.getByteAt(rawData, 348 + 1);\n this.extensionFlag[2] = nifti.Utils.getByteAt(rawData, 348 + 2);\n this.extensionFlag[3] = nifti.Utils.getByteAt(rawData, 348 + 3);\n\n if (this.extensionFlag[0]) {\n this.extensionSize = this.getExtensionSize(rawData);\n this.extensionCode = this.getExtensionCode(rawData);\n }\n }\n};\n\n\n/**\n * Returns a formatted string of header fields.\n * @returns {string}\n */\nnifti.NIFTI1.prototype.toFormattedString = function () {\n var fmt = nifti.Utils.formatNumber,\n string = \"\";\n\n string += (\"Dim Info = \" + this.dim_info + \"\\n\");\n\n string += (\"Image Dimensions (1-8): \" +\n this.dims[0] + \", \" +\n this.dims[1] + \", \" +\n this.dims[2] + \", \" +\n this.dims[3] + \", \" +\n this.dims[4] + \", \" +\n this.dims[5] + \", \" +\n this.dims[6] + \", \" +\n this.dims[7] + \"\\n\");\n\n string += (\"Intent Parameters (1-3): \" +\n this.intent_p1 + \", \" +\n this.intent_p2 + \", \" +\n this.intent_p3) + \"\\n\";\n\n string += (\"Intent Code = \" + this.intent_code + \"\\n\");\n string += (\"Datatype = \" + this.datatypeCode + \" (\" + this.getDatatypeCodeString(this.datatypeCode) + \")\\n\");\n string += (\"Bits Per Voxel = \" + this.numBitsPerVoxel + \"\\n\");\n string += (\"Slice Start = \" + this.slice_start + \"\\n\");\n string += (\"Voxel Dimensions (1-8): \" +\n fmt(this.pixDims[0]) + \", \" +\n fmt(this.pixDims[1]) + \", \" +\n fmt(this.pixDims[2]) + \", \" +\n fmt(this.pixDims[3]) + \", \" +\n fmt(this.pixDims[4]) + \", \" +\n fmt(this.pixDims[5]) + \", \" +\n fmt(this.pixDims[6]) + \", \" +\n fmt(this.pixDims[7]) + \"\\n\");\n\n string += (\"Image Offset = \" + this.vox_offset + \"\\n\");\n string += (\"Data Scale: Slope = \" + fmt(this.scl_slope) + \" Intercept = \" + fmt(this.scl_inter) + \"\\n\");\n string += (\"Slice End = \" + this.slice_end + \"\\n\");\n string += (\"Slice Code = \" + this.slice_code + \"\\n\");\n string += (\"Units Code = \" + this.xyzt_units + \" (\" + this.getUnitsCodeString(nifti.NIFTI1.SPATIAL_UNITS_MASK & this.xyzt_units) + \", \" + this.getUnitsCodeString(nifti.NIFTI1.TEMPORAL_UNITS_MASK & this.xyzt_units) + \")\\n\");\n string += (\"Display Range: Max = \" + fmt(this.cal_max) + \" Min = \" + fmt(this.cal_min) + \"\\n\");\n string += (\"Slice Duration = \" + this.slice_duration + \"\\n\");\n string += (\"Time Axis Shift = \" + this.toffset + \"\\n\");\n string += (\"Description: \\\"\" + this.description + \"\\\"\\n\");\n string += (\"Auxiliary File: \\\"\" + this.aux_file + \"\\\"\\n\");\n string += (\"Q-Form Code = \" + this.qform_code + \" (\" + this.getTransformCodeString(this.qform_code) + \")\\n\");\n string += (\"S-Form Code = \" + this.sform_code + \" (\" + this.getTransformCodeString(this.sform_code) + \")\\n\");\n string += (\"Quaternion Parameters: \" +\n \"b = \" + fmt(this.quatern_b) + \" \" +\n \"c = \" + fmt(this.quatern_c) + \" \" +\n \"d = \" + fmt(this.quatern_d) + \"\\n\");\n\n string += (\"Quaternion Offsets: \" +\n \"x = \" + this.qoffset_x + \" \" +\n \"y = \" + this.qoffset_y + \" \" +\n \"z = \" + this.qoffset_z + \"\\n\");\n\n string += (\"S-Form Parameters X: \" +\n fmt(this.affine[0][0]) + \", \" +\n fmt(this.affine[0][1]) + \", \" +\n fmt(this.affine[0][2]) + \", \" +\n fmt(this.affine[0][3]) + \"\\n\");\n\n string += (\"S-Form Parameters Y: \" +\n fmt(this.affine[1][0]) + \", \" +\n fmt(this.affine[1][1]) + \", \" +\n fmt(this.affine[1][2]) + \", \" +\n fmt(this.affine[1][3]) + \"\\n\");\n\n string += (\"S-Form Parameters Z: \" +\n fmt(this.affine[2][0]) + \", \" +\n fmt(this.affine[2][1]) + \", \" +\n fmt(this.affine[2][2]) + \", \" +\n fmt(this.affine[2][3]) + \"\\n\");\n\n string += (\"Intent Name: \\\"\" + this.intent_name + \"\\\"\\n\");\n\n if (this.extensionFlag[0]) {\n string += (\"Extension: Size = \" + this.extensionSize + \" Code = \" + this.extensionCode + \"\\n\");\n\n }\n\n return string;\n};\n\n\n/**\n * Returns a human-readable string of datatype.\n * @param {number} code\n * @returns {string}\n */\nnifti.NIFTI1.prototype.getDatatypeCodeString = function (code) {\n if (code === nifti.NIFTI1.TYPE_UINT8) {\n return \"1-Byte Unsigned Integer\";\n } else if (code === nifti.NIFTI1.TYPE_INT16) {\n return \"2-Byte Signed Integer\";\n } else if (code === nifti.NIFTI1.TYPE_INT32) {\n return \"4-Byte Signed Integer\";\n } else if (code === nifti.NIFTI1.TYPE_FLOAT32) {\n return \"4-Byte Float\";\n } else if (code === nifti.NIFTI1.TYPE_FLOAT64) {\n return \"8-Byte Float\";\n } else if (code === nifti.NIFTI1.TYPE_RGB24) {\n return \"RGB\";\n } else if (code === nifti.NIFTI1.TYPE_INT8) {\n return \"1-Byte Signed Integer\";\n } else if (code === nifti.NIFTI1.TYPE_UINT16) {\n return \"2-Byte Unsigned Integer\";\n } else if (code === nifti.NIFTI1.TYPE_UINT32) {\n return \"4-Byte Unsigned Integer\";\n } else if (code === nifti.NIFTI1.TYPE_INT64) {\n return \"8-Byte Signed Integer\";\n } else if (code === nifti.NIFTI1.TYPE_UINT64) {\n return \"8-Byte Unsigned Integer\";\n } else {\n return \"Unknown\";\n }\n};\n\n\n/**\n * Returns a human-readable string of transform type.\n * @param {number} code\n * @returns {string}\n */\nnifti.NIFTI1.prototype.getTransformCodeString = function (code) {\n if (code === nifti.NIFTI1.XFORM_SCANNER_ANAT) {\n return \"Scanner\";\n } else if (code === nifti.NIFTI1.XFORM_ALIGNED_ANAT) {\n return \"Aligned\";\n } else if (code === nifti.NIFTI1.XFORM_TALAIRACH) {\n return \"Talairach\";\n } else if (code === nifti.NIFTI1.XFORM_MNI_152) {\n return \"MNI\";\n } else {\n return \"Unknown\";\n }\n};\n\n\n/**\n * Returns a human-readable string of spatial and temporal units.\n * @param {number} code\n * @returns {string}\n */\nnifti.NIFTI1.prototype.getUnitsCodeString = function (code) {\n if (code === nifti.NIFTI1.UNITS_METER) {\n return \"Meters\";\n } else if (code === nifti.NIFTI1.UNITS_MM) {\n return \"Millimeters\";\n } else if (code === nifti.NIFTI1.UNITS_MICRON) {\n return \"Microns\";\n } else if (code === nifti.NIFTI1.UNITS_SEC) {\n return \"Seconds\";\n } else if (code === nifti.NIFTI1.UNITS_MSEC) {\n return \"Milliseconds\";\n } else if (code === nifti.NIFTI1.UNITS_USEC) {\n return \"Microseconds\";\n } else if (code === nifti.NIFTI1.UNITS_HZ) {\n return \"Hz\";\n } else if (code === nifti.NIFTI1.UNITS_PPM) {\n return \"PPM\";\n } else if (code === nifti.NIFTI1.UNITS_RADS) {\n return \"Rads\";\n } else {\n return \"Unknown\";\n }\n};\n\n\n/**\n * Returns the qform matrix.\n * @returns {Array.>}\n */\nnifti.NIFTI1.prototype.getQformMat = function () {\n return this.convertNiftiQFormToNiftiSForm(this.quatern_b, this.quatern_c, this.quatern_d, this.qoffset_x,\n this.qoffset_y, this.qoffset_z, this.pixDims[1], this.pixDims[2], this.pixDims[3], this.pixDims[0]);\n};\n\n\n\n/**\n * Converts qform to an affine. (See http://nifti.nimh.nih.gov/pub/dist/src/niftilib/nifti1_io.c)\n * @param {number} qb\n * @param {number} qc\n * @param {number} qd\n * @param {number} qx\n * @param {number} qy\n * @param {number} qz\n * @param {number} dx\n * @param {number} dy\n * @param {number} dz\n * @param {number} qfac\n * @returns {Array.>}\n */\nnifti.NIFTI1.prototype.convertNiftiQFormToNiftiSForm = function (qb, qc, qd, qx, qy, qz, dx, dy, dz,\n qfac) {\n var R = [[0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0]],\n a,\n b = qb,\n c = qc,\n d = qd,\n xd,\n yd,\n zd;\n\n // last row is always [ 0 0 0 1 ]\n R[3][0] = R[3][1] = R[3][2] = 0.0;\n R[3][3] = 1.0;\n\n // compute a parameter from b,c,d\n a = 1.0 - (b * b + c * c + d * d);\n if (a < 0.0000001) { /* special case */\n\n a = 1.0 / Math.sqrt(b * b + c * c + d * d);\n b *= a;\n c *= a;\n d *= a; /* normalize (b,c,d) vector */\n a = 0.0; /* a = 0 ==> 180 degree rotation */\n } else {\n\n a = Math.sqrt(a); /* angle = 2*arccos(a) */\n }\n\n // load rotation matrix, including scaling factors for voxel sizes\n xd = (dx > 0.0) ? dx : 1.0; /* make sure are positive */\n yd = (dy > 0.0) ? dy : 1.0;\n zd = (dz > 0.0) ? dz : 1.0;\n\n if (qfac < 0.0) {\n zd = -zd; /* left handedness? */\n }\n\n R[0][0] = (a * a + b * b - c * c - d * d) * xd;\n R[0][1] = 2.0 * (b * c - a * d) * yd;\n R[0][2] = 2.0 * (b * d + a * c) * zd;\n R[1][0] = 2.0 * (b * c + a * d) * xd;\n R[1][1] = (a * a + c * c - b * b - d * d) * yd;\n R[1][2] = 2.0 * (c * d - a * b) * zd;\n R[2][0] = 2.0 * (b * d - a * c) * xd;\n R[2][1] = 2.0 * (c * d + a * b) * yd;\n R[2][2] = (a * a + d * d - c * c - b * b) * zd;\n\n // load offsets\n R[0][3] = qx;\n R[1][3] = qy;\n R[2][3] = qz;\n\n return R;\n};\n\n\n\n/**\n * Converts sform to an orientation string (e.g., XYZ+--). (See http://nifti.nimh.nih.gov/pub/dist/src/niftilib/nifti1_io.c)\n * @param {Array.>} R\n * @returns {string}\n */\nnifti.NIFTI1.prototype.convertNiftiSFormToNEMA = function (R) {\n var xi, xj, xk, yi, yj, yk, zi, zj, zk, val, detQ, detP, i, j, k, p, q, r, ibest, jbest, kbest, pbest, qbest, rbest,\n M, vbest, Q, P, iChar, jChar, kChar, iSense, jSense, kSense;\n k = 0;\n\n Q = [[0, 0, 0], [0, 0, 0], [0, 0, 0]];\n P = [[0, 0, 0], [0, 0, 0], [0, 0, 0]];\n\n //if( icod == NULL || jcod == NULL || kcod == NULL ) return ; /* bad */\n\n //*icod = *jcod = *kcod = 0 ; /* this.errorMessage returns, if sh*t happens */\n\n /* load column vectors for each (i,j,k) direction from matrix */\n\n /*-- i axis --*/ /*-- j axis --*/ /*-- k axis --*/\n\n xi = R[0][0];\n xj = R[0][1];\n xk = R[0][2];\n\n yi = R[1][0];\n yj = R[1][1];\n yk = R[1][2];\n\n zi = R[2][0];\n zj = R[2][1];\n zk = R[2][2];\n\n /* normalize column vectors to get unit vectors along each ijk-axis */\n\n /* normalize i axis */\n val = Math.sqrt(xi * xi + yi * yi + zi * zi);\n if (val === 0.0) { /* stupid input */\n return null;\n }\n\n xi /= val;\n yi /= val;\n zi /= val;\n\n /* normalize j axis */\n val = Math.sqrt(xj * xj + yj * yj + zj * zj);\n if (val === 0.0) { /* stupid input */\n return null;\n }\n\n xj /= val;\n yj /= val;\n zj /= val;\n\n /* orthogonalize j axis to i axis, if needed */\n val = xi * xj + yi * yj + zi * zj; /* dot product between i and j */\n if (Math.abs(val) > 1.E-4) {\n xj -= val * xi;\n yj -= val * yi;\n zj -= val * zi;\n val = Math.sqrt(xj * xj + yj * yj + zj * zj); /* must renormalize */\n if (val === 0.0) { /* j was parallel to i? */\n return null;\n }\n xj /= val;\n yj /= val;\n zj /= val;\n }\n\n /* normalize k axis; if it is zero, make it the cross product i x j */\n val = Math.sqrt(xk * xk + yk * yk + zk * zk);\n if (val === 0.0) {\n xk = yi * zj - zi * yj;\n yk = zi * xj - zj * xi;\n zk = xi * yj - yi * xj;\n } else {\n xk /= val;\n yk /= val;\n zk /= val;\n }\n\n /* orthogonalize k to i */\n val = xi * xk + yi * yk + zi * zk; /* dot product between i and k */\n if (Math.abs(val) > 1.E-4) {\n xk -= val * xi;\n yk -= val * yi;\n zk -= val * zi;\n val = Math.sqrt(xk * xk + yk * yk + zk * zk);\n if (val === 0.0) { /* bad */\n return null;\n }\n xk /= val;\n yk /= val;\n zk /= val;\n }\n\n /* orthogonalize k to j */\n val = xj * xk + yj * yk + zj * zk; /* dot product between j and k */\n if (Math.abs(val) > 1.e-4) {\n xk -= val * xj;\n yk -= val * yj;\n zk -= val * zj;\n val = Math.sqrt(xk * xk + yk * yk + zk * zk);\n if (val === 0.0) { /* bad */\n return null;\n }\n xk /= val;\n yk /= val;\n zk /= val;\n }\n\n Q[0][0] = xi;\n Q[0][1] = xj;\n Q[0][2] = xk;\n Q[1][0] = yi;\n Q[1][1] = yj;\n Q[1][2] = yk;\n Q[2][0] = zi;\n Q[2][1] = zj;\n Q[2][2] = zk;\n\n /* at this point, Q is the rotation matrix from the (i,j,k) to (x,y,z) axes */\n\n detQ = this.nifti_mat33_determ(Q);\n if (detQ === 0.0) { /* shouldn't happen unless user is a DUFIS */\n return null;\n }\n\n /* Build and test all possible +1/-1 coordinate permutation matrices P;\n then find the P such that the rotation matrix M=PQ is closest to the\n identity, in the sense of M having the smallest total rotation angle. */\n\n /* Despite the formidable looking 6 nested loops, there are\n only 3*3*3*2*2*2 = 216 passes, which will run very quickly. */\n\n vbest = -666.0;\n ibest = pbest = qbest = rbest = 1;\n jbest = 2;\n kbest = 3;\n\n for (i = 1; i <= 3; i += 1) { /* i = column number to use for row #1 */\n for (j = 1; j <= 3; j += 1) { /* j = column number to use for row #2 */\n if (i !== j) {\n for (k = 1; k <= 3; k += 1) { /* k = column number to use for row #3 */\n if (!(i === k || j === k)) {\n P[0][0] = P[0][1] = P[0][2] = P[1][0] = P[1][1] = P[1][2] = P[2][0] = P[2][1] = P[2][2] = 0.0;\n for (p = -1; p <= 1; p += 2) { /* p,q,r are -1 or +1 */\n for (q = -1; q <= 1; q += 2) { /* and go into rows #1,2,3 */\n for (r = -1; r <= 1; r += 2) {\n P[0][i - 1] = p;\n P[1][j - 1] = q;\n P[2][k - 1] = r;\n detP = this.nifti_mat33_determ(P); /* sign of permutation */\n if ((detP * detQ) > 0.0) {\n M = this.nifti_mat33_mul(P, Q);\n\n /* angle of M rotation = 2.0*acos(0.5*sqrt(1.0+trace(M))) */\n /* we want largest trace(M) == smallest angle == M nearest to I */\n\n val = M[0][0] + M[1][1] + M[2][2]; /* trace */\n if (val > vbest) {\n vbest = val;\n ibest = i;\n jbest = j;\n kbest = k;\n pbest = p;\n qbest = q;\n rbest = r;\n }\n } /* doesn't match sign of Q */\n }\n }\n }\n }\n }\n }\n }\n }\n\n /* At this point ibest is 1 or 2 or 3; pbest is -1 or +1; etc.\n\n The matrix P that corresponds is the best permutation approximation\n to Q-inverse; that is, P (approximately) takes (x,y,z) coordinates\n to the (i,j,k) axes.\n\n For example, the first row of P (which contains pbest in column ibest)\n determines the way the i axis points relative to the anatomical\n (x,y,z) axes. If ibest is 2, then the i axis is along the y axis,\n which is direction P2A (if pbest > 0) or A2P (if pbest < 0).\n\n So, using ibest and pbest, we can assign the output code for\n the i axis. Mutatis mutandis for the j and k axes, of course. */\n\n iChar = jChar = kChar = iSense = jSense = kSense = 0;\n\n switch (ibest * pbest) {\n case 1: /*i = NIFTI_L2R*/\n iChar = 'X';\n iSense = '+';\n break;\n case -1: /*i = NIFTI_R2L*/\n iChar = 'X';\n iSense = '-';\n break;\n case 2: /*i = NIFTI_P2A*/\n iChar = 'Y';\n iSense = '+';\n break;\n case -2: /*i = NIFTI_A2P*/\n iChar = 'Y';\n iSense = '-';\n break;\n case 3: /*i = NIFTI_I2S*/\n iChar = 'Z';\n iSense = '+';\n break;\n case -3: /*i = NIFTI_S2I*/\n iChar = 'Z';\n iSense = '-';\n break;\n }\n\n switch (jbest * qbest) {\n case 1: /*j = NIFTI_L2R*/\n jChar = 'X';\n jSense = '+';\n break;\n case -1: /*j = NIFTI_R2L*/\n jChar = 'X';\n jSense = '-';\n break;\n case 2: /*j = NIFTI_P2A*/\n jChar = 'Y';\n jSense = '+';\n break;\n case -2: /*j = NIFTI_A2P*/\n jChar = 'Y';\n jSense = '-';\n break;\n case 3: /*j = NIFTI_I2S*/\n jChar = 'Z';\n jSense = '+';\n break;\n case -3: /*j = NIFTI_S2I*/\n jChar = 'Z';\n jSense = '-';\n break;\n }\n\n switch (kbest * rbest) {\n case 1: /*k = NIFTI_L2R*/\n kChar = 'X';\n kSense = '+';\n break;\n case -1: /*k = NIFTI_R2L*/\n kChar = 'X';\n kSense = '-';\n break;\n case 2: /*k = NIFTI_P2A*/\n kChar = 'Y';\n kSense = '+';\n break;\n case -2: /*k = NIFTI_A2P*/\n kChar = 'Y';\n kSense = '-';\n break;\n case 3: /*k = NIFTI_I2S*/\n kChar = 'Z';\n kSense = '+';\n break;\n case -3: /*k = NIFTI_S2I*/\n kChar = 'Z';\n kSense = '-';\n break;\n }\n\n return (iChar + jChar + kChar + iSense + jSense + kSense);\n};\n\n\n\nnifti.NIFTI1.prototype.nifti_mat33_mul = function (A, B) {\n var C = [[0, 0, 0], [0, 0, 0], [0, 0, 0]],\n i,\n j;\n\n for (i = 0; i < 3; i += 1) {\n for (j = 0; j < 3; j += 1) {\n C[i][j] = A[i][0] * B[0][j] + A[i][1] * B[1][j] + A[i][2] * B[2][j];\n }\n }\n\n return C;\n};\n\n\n\nnifti.NIFTI1.prototype.nifti_mat33_determ = function (R) {\n var r11, r12, r13, r21, r22, r23, r31, r32, r33;\n /* INPUT MATRIX: */\n r11 = R[0][0];\n r12 = R[0][1];\n r13 = R[0][2];\n r21 = R[1][0];\n r22 = R[1][1];\n r23 = R[1][2];\n r31 = R[2][0];\n r32 = R[2][1];\n r33 = R[2][2];\n\n return (r11 * r22 * r33 - r11 * r32 * r23 - r21 * r12 * r33 + r21 * r32 * r13 + r31 * r12 * r23 - r31 * r22 * r13);\n};\n\n\n/**\n * Returns the byte index of the extension.\n * @returns {number}\n */\nnifti.NIFTI1.prototype.getExtensionLocation = function() {\n return nifti.NIFTI1.MAGIC_COOKIE + 4;\n};\n\n\n/**\n * Returns the extension size.\n * @param {DataView} data\n * @returns {number}\n */\nnifti.NIFTI1.prototype.getExtensionSize = function(data) {\n return nifti.Utils.getIntAt(data, this.getExtensionLocation(), this.littleEndian);\n};\n\n\n\n/**\n * Returns the extension code.\n * @param {DataView} data\n * @returns {number}\n */\nnifti.NIFTI1.prototype.getExtensionCode = function(data) {\n return nifti.Utils.getIntAt(data, this.getExtensionLocation() + 4, this.littleEndian);\n};\n\n\n\n/*** Exports ***/\n\nvar moduleType = typeof module;\nif ((moduleType !== 'undefined') && module.exports) {\n module.exports = nifti.NIFTI1;\n}\n","\n/*jslint browser: true, node: true */\n/*global */\n\n\"use strict\";\n\n/*** Imports ***/\n\nvar nifti = nifti || {};\nnifti.Utils = nifti.Utils || ((typeof require !== 'undefined') ? require('./utilities.js') : null);\nnifti.NIFTI1 = nifti.NIFTI1 || ((typeof require !== 'undefined') ? require('./nifti1.js') : null);\n\n\n/*** Constructor ***/\n\n/**\n * The NIFTI2 constructor.\n * @constructor\n * @property {boolean} littleEndian\n * @property {number} dim_info\n * @property {number[]} dims - image dimensions\n * @property {number} intent_p1\n * @property {number} intent_p2\n * @property {number} intent_p3\n * @property {number} intent_code\n * @property {number} datatypeCode\n * @property {number} numBitsPerVoxel\n * @property {number} slice_start\n * @property {number} slice_end\n * @property {number} slice_code\n * @property {number[]} pixDims - voxel dimensions\n * @property {number} vox_offset\n * @property {number} scl_slope\n * @property {number} scl_inter\n * @property {number} xyzt_units\n * @property {number} cal_max\n * @property {number} cal_min\n * @property {number} slice_duration\n * @property {number} toffset\n * @property {string} description\n * @property {string} aux_file\n * @property {string} intent_name\n * @property {number} qform_code\n * @property {number} sform_code\n * @property {number} quatern_b\n * @property {number} quatern_c\n * @property {number} quatern_d\n * @property {number} quatern_x\n * @property {number} quatern_y\n * @property {number} quatern_z\n * @property {Array.>} affine\n * @property {string} magic\n * @property {number[]} extensionFlag\n * @type {Function}\n */\nnifti.NIFTI2 = nifti.NIFTI2 || function () {\n this.littleEndian = false;\n this.dim_info = 0;\n this.dims = [];\n this.intent_p1 = 0;\n this.intent_p2 = 0;\n this.intent_p3 = 0;\n this.intent_code = 0;\n this.datatypeCode = 0;\n this.numBitsPerVoxel = 0;\n this.slice_start = 0;\n this.slice_end = 0;\n this.slice_code = 0;\n this.pixDims = [];\n this.vox_offset = 0;\n this.scl_slope = 1;\n this.scl_inter = 0;\n this.xyzt_units = 0;\n this.cal_max = 0;\n this.cal_min = 0;\n this.slice_duration = 0;\n this.toffset = 0;\n this.description = \"\";\n this.aux_file = \"\";\n this.intent_name = \"\";\n this.qform_code = 0;\n this.sform_code = 0;\n this.quatern_b = 0;\n this.quatern_c = 0;\n this.quatern_d = 0;\n this.qoffset_x = 0;\n this.qoffset_y = 0;\n this.qoffset_z = 0;\n this.affine = [[1, 0, 0, 0], [0, 1, 0, 0], [0, 0, 1, 0], [0, 0, 0, 1]];\n this.magic = 0;\n this.extensionFlag = [0, 0, 0, 0];\n};\n\n\n\n/*** Static Pseudo-constants ***/\n\nnifti.NIFTI2.MAGIC_COOKIE = 540;\nnifti.NIFTI2.MAGIC_NUMBER_LOCATION = 4;\nnifti.NIFTI2.MAGIC_NUMBER = [0x6E, 0x2B, 0x32, 0, 0x0D, 0x0A, 0x1A, 0x0A]; // n+2\\0\n\n\n\n/*** Prototype Methods ***/\n\n/**\n * Reads the header data.\n * @param {ArrayBuffer} data\n */\nnifti.NIFTI2.prototype.readHeader = function (data) {\n var rawData = new DataView(data),\n magicCookieVal = nifti.Utils.getIntAt(rawData, 0, this.littleEndian),\n ctr,\n ctrOut,\n ctrIn,\n index,\n array;\n\n if (magicCookieVal !== nifti.NIFTI2.MAGIC_COOKIE) { // try as little endian\n this.littleEndian = true;\n magicCookieVal = nifti.Utils.getIntAt(rawData, 0, this.littleEndian);\n }\n\n if (magicCookieVal !== nifti.NIFTI2.MAGIC_COOKIE) {\n throw new Error(\"This does not appear to be a NIFTI file!\");\n }\n\n this.datatypeCode = nifti.Utils.getShortAt(rawData, 12, this.littleEndian);\n this.numBitsPerVoxel = nifti.Utils.getShortAt(rawData, 14, this.littleEndian);\n\n for (ctr = 0; ctr < 8; ctr += 1) {\n index = 16 + (ctr * 8);\n this.dims[ctr] = nifti.Utils.getLongAt(rawData, index, this.littleEndian);\n }\n\n this.intent_p1 = nifti.Utils.getDoubleAt(rawData, 80, this.littleEndian);\n this.intent_p2 = nifti.Utils.getDoubleAt(rawData, 88, this.littleEndian);\n this.intent_p3 = nifti.Utils.getDoubleAt(rawData, 96, this.littleEndian);\n\n for (ctr = 0; ctr < 8; ctr += 1) {\n index = 104 + (ctr * 8);\n this.pixDims[ctr] = nifti.Utils.getDoubleAt(rawData, index, this.littleEndian);\n }\n\n this.vox_offset = nifti.Utils.getLongAt(rawData, 168, this.littleEndian);\n\n this.scl_slope = nifti.Utils.getDoubleAt(rawData, 176, this.littleEndian);\n this.scl_inter = nifti.Utils.getDoubleAt(rawData, 184, this.littleEndian);\n\n this.cal_max = nifti.Utils.getDoubleAt(rawData, 192, this.littleEndian);\n this.cal_min = nifti.Utils.getDoubleAt(rawData, 200, this.littleEndian);\n\n this.slice_duration = nifti.Utils.getDoubleAt(rawData, 208, this.littleEndian);\n\n this.toffset = nifti.Utils.getDoubleAt(rawData, 216, this.littleEndian);\n\n this.slice_start = nifti.Utils.getLongAt(rawData, 224, this.littleEndian);\n this.slice_end = nifti.Utils.getLongAt(rawData, 232, this.littleEndian);\n\n this.description = nifti.Utils.getStringAt(rawData, 240, 240 + 80);\n this.aux_file = nifti.Utils.getStringAt(rawData, 320, 320 + 24);\n\n this.qform_code = nifti.Utils.getIntAt(rawData, 344, this.littleEndian);\n this.sform_code = nifti.Utils.getIntAt(rawData, 348, this.littleEndian);\n\n this.quatern_b = nifti.Utils.getDoubleAt(rawData, 352, this.littleEndian);\n this.quatern_c = nifti.Utils.getDoubleAt(rawData, 360, this.littleEndian);\n this.quatern_d = nifti.Utils.getDoubleAt(rawData, 368, this.littleEndian);\n this.qoffset_x = nifti.Utils.getDoubleAt(rawData, 376, this.littleEndian);\n this.qoffset_y = nifti.Utils.getDoubleAt(rawData, 384, this.littleEndian);\n this.qoffset_z = nifti.Utils.getDoubleAt(rawData, 392, this.littleEndian);\n\n for (ctrOut = 0; ctrOut < 3; ctrOut += 1) {\n for (ctrIn = 0; ctrIn < 4; ctrIn += 1) {\n index = 400 + (((ctrOut * 4) + ctrIn) * 8);\n this.affine[ctrOut][ctrIn] = nifti.Utils.getDoubleAt(rawData, index, this.littleEndian);\n }\n }\n\n this.affine[3][0] = 0;\n this.affine[3][1] = 0;\n this.affine[3][2] = 0;\n this.affine[3][3] = 1;\n\n this.slice_code = nifti.Utils.getIntAt(rawData, 496, this.littleEndian);\n this.xyzt_units = nifti.Utils.getIntAt(rawData, 500, this.littleEndian);\n this.intent_code = nifti.Utils.getIntAt(rawData, 504, this.littleEndian);\n this.intent_name = nifti.Utils.getStringAt(rawData, 508, 508 + 16);\n\n this.dim_info = nifti.Utils.getByteAt(rawData, 524);\n\n if (rawData.byteLength > nifti.NIFTI2.MAGIC_COOKIE) {\n this.extensionFlag[0] = nifti.Utils.getByteAt(rawData, 540);\n this.extensionFlag[1] = nifti.Utils.getByteAt(rawData, 540 + 1);\n this.extensionFlag[2] = nifti.Utils.getByteAt(rawData, 540 + 2);\n this.extensionFlag[3] = nifti.Utils.getByteAt(rawData, 540 + 3);\n\n if (this.extensionFlag[0]) {\n this.extensionSize = this.getExtensionSize(rawData);\n this.extensionCode = this.getExtensionCode(rawData);\n }\n }\n};\n\n\n\n/**\n * Returns a formatted string of header fields.\n * @returns {string}\n */\nnifti.NIFTI2.prototype.toFormattedString = function () {\n var fmt = nifti.Utils.formatNumber,\n string = \"\";\n\n string += (\"Datatype = \" + + this.datatypeCode + \" (\" + this.getDatatypeCodeString(this.datatypeCode) + \")\\n\");\n string += (\"Bits Per Voxel = \" + \" = \" + this.numBitsPerVoxel + \"\\n\");\n string += (\"Image Dimensions\" + \" (1-8): \" +\n this.dims[0] + \", \" +\n this.dims[1] + \", \" +\n this.dims[2] + \", \" +\n this.dims[3] + \", \" +\n this.dims[4] + \", \" +\n this.dims[5] + \", \" +\n this.dims[6] + \", \" +\n this.dims[7] + \"\\n\");\n\n string += (\"Intent Parameters (1-3): \" +\n this.intent_p1 + \", \" +\n this.intent_p2 + \", \" +\n this.intent_p3) + \"\\n\";\n\n string += (\"Voxel Dimensions (1-8): \" +\n fmt(this.pixDims[0]) + \", \" +\n fmt(this.pixDims[1]) + \", \" +\n fmt(this.pixDims[2]) + \", \" +\n fmt(this.pixDims[3]) + \", \" +\n fmt(this.pixDims[4]) + \", \" +\n fmt(this.pixDims[5]) + \", \" +\n fmt(this.pixDims[6]) + \", \" +\n fmt(this.pixDims[7]) + \"\\n\");\n\n string += (\"Image Offset = \" + this.vox_offset + \"\\n\");\n string += (\"Data Scale: Slope = \" + fmt(this.scl_slope) + \" Intercept = \" + fmt(this.scl_inter) + \"\\n\");\n string += (\"Display Range: Max = \" + fmt(this.cal_max) + \" Min = \" + fmt(this.cal_min) + \"\\n\");\n string += (\"Slice Duration = \" + this.slice_duration + \"\\n\");\n string += (\"Time Axis Shift = \" + this.toffset + \"\\n\");\n string += (\"Slice Start = \" + this.slice_start + \"\\n\");\n string += (\"Slice End = \" + this.slice_end + \"\\n\");\n string += (\"Description: \\\"\" + this.description + \"\\\"\\n\");\n string += (\"Auxiliary File: \\\"\" + this.aux_file + \"\\\"\\n\");\n string += (\"Q-Form Code = \" + this.qform_code + \" (\" + this.getTransformCodeString(this.qform_code) + \")\\n\");\n string += (\"S-Form Code = \" + this.sform_code + \" (\" + this.getTransformCodeString(this.sform_code) + \")\\n\");\n string += (\"Quaternion Parameters: \" +\n \"b = \" + fmt(this.quatern_b) + \" \" +\n \"c = \" + fmt(this.quatern_c) + \" \" +\n \"d = \" + fmt(this.quatern_d) + \"\\n\");\n\n string += (\"Quaternion Offsets: \" +\n \"x = \" + this.qoffset_x + \" \" +\n \"y = \" + this.qoffset_y + \" \" +\n \"z = \" + this.qoffset_z + \"\\n\");\n\n string += (\"S-Form Parameters X: \" +\n fmt(this.affine[0][0]) + \", \" +\n fmt(this.affine[0][1]) + \", \" +\n fmt(this.affine[0][2]) + \", \" +\n fmt(this.affine[0][3]) + \"\\n\");\n\n string += (\"S-Form Parameters Y: \" +\n fmt(this.affine[1][0]) + \", \" +\n fmt(this.affine[1][1]) + \", \" +\n fmt(this.affine[1][2]) + \", \" +\n fmt(this.affine[1][3]) + \"\\n\");\n\n string += (\"S-Form Parameters Z: \" +\n fmt(this.affine[2][0]) + \", \" +\n fmt(this.affine[2][1]) + \", \" +\n fmt(this.affine[2][2]) + \", \" +\n fmt(this.affine[2][3]) + \"\\n\");\n\n string += (\"Slice Code = \" + this.slice_code + \"\\n\");\n string += (\"Units Code = \" + this.xyzt_units + \" (\" + this.getUnitsCodeString(nifti.NIFTI1.SPATIAL_UNITS_MASK & this.xyzt_units) + \", \" + this.getUnitsCodeString(nifti.NIFTI1.TEMPORAL_UNITS_MASK & this.xyzt_units) + \")\\n\");\n string += (\"Intent Code = \" + this.intent_code + \"\\n\");\n string += (\"Intent Name: \\\"\" + this.intent_name + \"\\\"\\n\");\n\n string += (\"Dim Info = \" + this.dim_info + \"\\n\");\n\n return string;\n};\n\n\n\n/**\n * Returns the byte index of the extension.\n * @returns {number}\n */\nnifti.NIFTI2.prototype.getExtensionLocation = function() {\n return nifti.NIFTI2.MAGIC_COOKIE + 4;\n};\n\n\n\n/**\n * Returns the extension size.\n * @param {DataView} data\n * @returns {number}\n */\nnifti.NIFTI2.prototype.getExtensionSize = nifti.NIFTI1.prototype.getExtensionSize;\n\n\n\n/**\n * Returns the extension code.\n * @param {DataView} data\n * @returns {number}\n */\nnifti.NIFTI2.prototype.getExtensionCode = nifti.NIFTI1.prototype.getExtensionCode;\n\n\n\n/**\n * Returns a human-readable string of datatype.\n * @param {number} code\n * @returns {string}\n */\nnifti.NIFTI2.prototype.getDatatypeCodeString = nifti.NIFTI1.prototype.getDatatypeCodeString;\n\n\n\n/**\n * Returns a human-readable string of transform type.\n * @param {number} code\n * @returns {string}\n */\nnifti.NIFTI2.prototype.getTransformCodeString = nifti.NIFTI1.prototype.getTransformCodeString;\n\n\n\n/**\n * Returns a human-readable string of spatial and temporal units.\n * @param {number} code\n * @returns {string}\n */\nnifti.NIFTI2.prototype.getUnitsCodeString = nifti.NIFTI1.prototype.getUnitsCodeString;\n\n\n\n/**\n * Returns the qform matrix.\n * @returns {Array.>}\n */\nnifti.NIFTI2.prototype.getQformMat = nifti.NIFTI1.prototype.getQformMat;\n\n\n\n/**\n * Converts qform to an affine. (See http://nifti.nimh.nih.gov/pub/dist/src/niftilib/nifti1_io.c)\n * @param {number} qb\n * @param {number} qc\n * @param {number} qd\n * @param {number} qx\n * @param {number} qy\n * @param {number} qz\n * @param {number} dx\n * @param {number} dy\n * @param {number} dz\n * @param {number} qfac\n * @returns {Array.>}\n */\nnifti.NIFTI2.prototype.convertNiftiQFormToNiftiSForm = nifti.NIFTI1.prototype.convertNiftiQFormToNiftiSForm;\n\n\n\n/**\n * Converts sform to an orientation string (e.g., XYZ+--). (See http://nifti.nimh.nih.gov/pub/dist/src/niftilib/nifti1_io.c)\n * @param {Array.>} R\n * @returns {string}\n */\nnifti.NIFTI2.prototype.convertNiftiSFormToNEMA = nifti.NIFTI1.prototype.convertNiftiSFormToNEMA;\n\n\n\nnifti.NIFTI2.prototype.nifti_mat33_mul = nifti.NIFTI1.prototype.nifti_mat33_mul;\n\n\n\nnifti.NIFTI2.prototype.nifti_mat33_determ = nifti.NIFTI1.prototype.nifti_mat33_determ;\n\n\n\n/*** Exports ***/\n\nvar moduleType = typeof module;\nif ((moduleType !== 'undefined') && module.exports) {\n module.exports = nifti.NIFTI2;\n}\n","\n/*jslint browser: true, node: true */\n/*global require, module */\n\n\"use strict\";\n\n/*** Imports ***/\n\nvar nifti = nifti || {};\nnifti.Utils = nifti.Utils || {};\n\n\n\n/*** Static Pseudo-constants ***/\n\nnifti.Utils.crcTable = null;\nnifti.Utils.GUNZIP_MAGIC_COOKIE1 = 31;\nnifti.Utils.GUNZIP_MAGIC_COOKIE2 = 139;\n\n\n\n/*** Static methods ***/\n\nnifti.Utils.getStringAt = function (data, start, end) {\n var str = \"\", ctr, ch;\n\n for (ctr = start; ctr < end; ctr += 1) {\n ch = data.getUint8(ctr);\n\n if (ch !== 0) {\n str += String.fromCharCode(ch);\n }\n }\n\n return str;\n};\n\n\n\nnifti.Utils.getByteAt = function (data, start) {\n return data.getInt8(start);\n};\n\n\n\nnifti.Utils.getShortAt = function (data, start, littleEndian) {\n return data.getInt16(start, littleEndian);\n};\n\n\n\nnifti.Utils.getIntAt = function (data, start, littleEndian) {\n return data.getInt32(start, littleEndian);\n};\n\n\n\nnifti.Utils.getFloatAt = function (data, start, littleEndian) {\n return data.getFloat32(start, littleEndian);\n};\n\n\n\nnifti.Utils.getDoubleAt = function (data, start, littleEndian) {\n return data.getFloat64(start, littleEndian);\n};\n\n\n\nnifti.Utils.getLongAt = function (data, start, littleEndian) {\n var ctr, array = [], value = 0;\n\n for (ctr = 0; ctr < 8; ctr += 1) {\n array[ctr] = nifti.Utils.getByteAt(data, start + ctr, littleEndian);\n }\n\n for (ctr = array.length - 1; ctr >= 0; ctr--) {\n value = (value * 256) + array[ctr];\n }\n\n return value;\n};\n\n\n\nnifti.Utils.toArrayBuffer = function (buffer) {\n var ab, view, i;\n\n ab = new ArrayBuffer(buffer.length);\n view = new Uint8Array(ab);\n for (i = 0; i < buffer.length; i += 1) {\n view[i] = buffer[i];\n }\n return ab;\n};\n\n\n\nnifti.Utils.isString = function (obj) {\n return (typeof obj === \"string\" || obj instanceof String);\n};\n\n\nnifti.Utils.formatNumber = function (num, shortFormat) {\n var val = 0;\n\n if (nifti.Utils.isString(num)) {\n val = Number(num);\n } else {\n val = num;\n }\n\n if (shortFormat) {\n val = val.toPrecision(5);\n } else {\n val = val.toPrecision(7);\n }\n\n return parseFloat(val);\n};\n\n\n\n// http://stackoverflow.com/questions/18638900/javascript-crc32\nnifti.Utils.makeCRCTable = function(){\n var c;\n var crcTable = [];\n for(var n =0; n < 256; n++){\n c = n;\n for(var k =0; k < 8; k++){\n c = ((c&1) ? (0xEDB88320 ^ (c >>> 1)) : (c >>> 1));\n }\n crcTable[n] = c;\n }\n return crcTable;\n};\n\n\n\nnifti.Utils.crc32 = function(dataView) {\n var crcTable = nifti.Utils.crcTable || (nifti.Utils.crcTable = nifti.Utils.makeCRCTable());\n var crc = 0 ^ (-1);\n\n for (var i = 0; i < dataView.byteLength; i++ ) {\n crc = (crc >>> 8) ^ crcTable[(crc ^ dataView.getUint8(i)) & 0xFF];\n }\n\n return (crc ^ (-1)) >>> 0;\n};\n\n\n\n/*** Exports ***/\n\nvar moduleType = typeof module;\nif ((moduleType !== 'undefined') && module.exports) {\n module.exports = nifti.Utils;\n}\n","\"use strict\";\nvar assert = require('assert');\n\nvar lineSeparatorRE = /[ \\f\\t\\v]*\\r?\\n/;\nvar NRRDMagicRE = /^NRRD\\d{4}$/;\nvar lineRE = /^([^:]*)(:[ =])(.*)$/;\nvar dataFileListRE = /^LIST(?: (\\d+))?$/;\n\n// The minimal object this accepts is formed like this:\n// {data: SomeTypedArray, sizes: [...]}\n// On the other hand, if data is not given it must have a form like this:\n// {buffer: SomeArrayBuffer, type: ..., endian: ..., sizes: [...]}\n// Of course, if 'type' is an 8-bit type, endian is not needed, and if 'type' equals 'block', 'blockSize' should be set instead of 'endian'. In this case, no interpretation of buffer is done (at all, it is written serialized directly to the buffer).\n// TODO: For now this only supports serializing \"inline\" files, or files for which you have already prepared the data.\nmodule.exports.serialize = function (nrrdOrg) {\n var i, buffer, arr, totalLen = 1, nrrd = {}, prop, nativeType, nativeSize, bufferData, arrData, line, lines = [], header;\n \n // Copy nrrdOrg to nrrd to allow modifications without altering the original\n for(prop in nrrdOrg) {\n nrrd[prop] = nrrdOrg[prop];\n }\n \n // For saving files we allow inferring certain information if it is not explicitly given.\n // Also we normalize some fields to make our own lives easier.\n if (nrrd.sizes===undefined) { // 'sizes' should ALWAYS be given\n throw new Error(\"Sizes missing from NRRD file!\");\n } else if (nrrd.dimension===undefined) {\n nrrd.dimension = nrrd.sizes.length;\n }\n if (nrrd.data instanceof Int8Array) {\n nativeType = \"int8\";\n } else if (nrrd.data instanceof Uint8Array) {\n nativeType = \"uint8\";\n } else if (nrrd.data instanceof Int16Array) {\n nativeType = \"int16\";\n } else if (nrrd.data instanceof Uint16Array) {\n nativeType = \"uint16\";\n } else if (nrrd.data instanceof Int32Array) {\n nativeType = \"int32\";\n } else if (nrrd.data instanceof Uint32Array) {\n nativeType = \"uint32\";\n //} else if (nrrd.data instanceof Int64Array) {\n // nativeType = \"int64\";\n //} else if (nrrd.data instanceof Uint64Array) {\n // nativeType = \"uint64\";\n } else if (nrrd.data instanceof Float32Array) {\n nativeType = \"float\";\n } else if (nrrd.data instanceof Float64Array) {\n nativeType = \"double\";\n }\n if (nrrd.type===undefined && nativeType!==undefined) {\n nrrd.type = nativeType;\n } else if (nrrd.type===undefined) {\n throw new Error(\"Type of data is not given and cannot be inferred!\");\n } else if ((typeof nrrd.type) == \"string\" || nrrd.type instanceof String) {\n nrrd.type = parseNRRDType(nrrd.type);\n }\n if (nrrd.encoding===undefined) {\n nrrd.encoding = \"raw\";\n } else if ((typeof nrrd.encoding) == \"string\" || nrrd.encoding instanceof String) {\n nrrd.encoding = parseNRRDEncoding(nrrd.encoding);\n }\n if (nrrd.data && nrrd.type != 'block' && nrrd.type != 'int8' && nrrd.type != 'uint8' && nrrd.encoding != 'ascii') {\n nrrd.endian = systemEndianness;\n } else if (nrrd.type == 'block' || nrrd.type == 'int8' || nrrd.type == 'uint8' || nrrd.encoding == 'ascii') {\n nrrd.endian = undefined;\n } else if ((typeof nrrd.endian) == \"string\" || nrrd.endian instanceof String) {\n nrrd.endian = parseNRRDEndian(nrrd.endian);\n }\n \n // Try to infer spatial dimension\n var spaceDimension = undefined;\n if (nrrd.spaceDimension!==undefined) {\n spaceDimension = nrrd.spaceDimension;\n } else if (nrrd.space!==undefined) {\n switch(nrrd.space) {\n case \"right-anterior-superior\":\n case \"RAS\":\n spaceDimension = 3;\n break;\n case \"left-anterior-superior\":\n case \"LAS\":\n spaceDimension = 3;\n break;\n case \"left-posterior-superior\":\n case \"LPS\":\n spaceDimension = 3;\n break;\n \t case \"right-anterior-superior-time\":\n \t case \"RAST\":\n \t spaceDimension = 4;\n \t break;\n case \"left-anterior-superior-time\":\n case \"LAST\":\n spaceDimension = 4;\n break;\n case \"left-posterior-superior-time\":\n case \"LPST\":\n spaceDimension = 4;\n break;\n case \"scanner-xyz\":\n spaceDimension = 3;\n break;\n case \"scanner-xyz-time\":\n spaceDimension = 4;\n break;\n case \"3D-right-handed\":\n spaceDimension = 3;\n break;\n case \"3D-left-handed\":\n spaceDimension = 3;\n break;\n case \"3D-right-handed-time\":\n spaceDimension = 4;\n break;\n case \"3D-left-handed-time\":\n spaceDimension = 4;\n break;\n default:\n console.warn(\"Unrecognized space: \" + nrrd.space);\n }\n }\n \n // Now check that we have a valid nrrd structure.\n checkNRRD(nrrd);\n\n // Determine number of elements and check that we have enough data (if possible)\n for(i=0; i0) integers!\");\n totalLen *= nrrd.sizes[i];\n }\n if (nrrd.data) {\n if (nrrd.data.length < totalLen) {\n throw new Error(\"Missing data to serialize!\");\n }\n } else if (nrrd.buffer) {\n if (nrrd.encoding == \"raw\") {\n if (nrrd.type==\"block\" && nrrd.blockSize!==undefined) {\n nativeSize = nrrd.blockSize;\n } else {\n nativeSize = getNRRDTypeSize(nrrd.type);\n }\n if (nrrd.buffer.byteLength < totalLen*nativeSize) {\n throw new Error(\"Missing data to serialize!\");\n }\n }\n } else if (nrrd.dataFile) {\n // Okay, if you have your data ready, we'll just write a header.\n } else {\n throw new Error(\"Will not serialize an empty NRRD file!\");\n }\n \n // Make sure we have the correct buffer in bufferData.\n if (nrrd.data) {\n switch(nrrd.encoding) {\n case 'raw':\n if (nrrd.type == nativeType && nrrd.endian == systemEndianness) {\n bufferData = nrrd.data.buffer.slice(nrrd.data.byteOffset, nrrd.data.byteOffset+nrrd.data.byteLength);\n } else if (nrrd.endian == systemEndianness) {\n bufferData = castTypedArray(nrrd.data, nrrd.type);\n bufferData = bufferData.buffer.slice(bufferData.byteOffset, bufferData.byteOffset+bufferData.byteLength);\n } else {\n bufferData = serializeToBuffer(nrrd.data, nrrd.type, nrrd.endian);\n }\n break;\n case 'ascii':\n if (nrrd.type == nativeType) {\n bufferData = serializeToTextBuffer(nrrd.data);\n } else {\n bufferData = serializeToTextBuffer(castTypedArray(nrrd.data, nrrd.type));\n }\n break;\n default:\n throw new Error(\"Unsupported NRRD encoding: \" + nrrd.encoding);\n }\n } else if (nrrd.buffer) {\n bufferData = nrrd.buffer;\n }\n \n // Start header\n lines.push(\"NRRD0005\"); // TODO: Adjust version based on features that are actually used and/or the version specified by the user (if any).\n lines.push(\"# Generated by nrrd-js\");\n \n // Put in dimension and space dimension (the NRRD spec requires that these are present before any lists whose length depends on them)\n var firstProps = ['dimension', 'spaceDimension', 'space'];\n for(i=0; i=0) continue; // Skip the fields we already output.\n line = serializeField(prop, nrrd[prop], nrrd.dimension, spaceDimension);\n if (line!==undefined) lines.push(line);\n }\n \n // Put in keys (if any)\n if (nrrd.keys) for(prop in nrrd.keys) {\n if (prop.indexOf(\":=\")>=0) throw new Error(\"The combination ':=' is not allowed in an NRRD key!\");\n lines.push(prop + \":=\" + escapeValue(nrrd[prop]));\n }\n \n // Put in data file list (if any)\n if (nrrd.dataFile && nrrd.dataFile.length) {\n lines.push(\"data file: LIST\");\n Array.prototype.push.apply(lines, nrrd.dataFile);\n } else if (nrrd.dataFile && nrrd.dataFile.files && 'subdim' in nrrd.dataFile) {\n lines.push(\"data file: LIST \" + nrrd.dataFile.subdim);\n Array.prototype.push.apply(lines, nrrd.dataFile.files);\n }\n \n // Put in empty line and inline data (if we have inline data) and convert lines to buffer\n if (bufferData && !('dataFile' in nrrd)) {\n lines.push(\"\");\n lines.push(\"\"); // We actually need an extra blank line to make sure the previous is terminated.\n header = lines.join(\"\\n\");\n buffer = new ArrayBuffer(header.length + bufferData.byteLength);\n arr = new Uint8Array(buffer);\n for(i=0; i0 && l[0] != '#'; }); // Remove comment lines\n if (!NRRDMagicRE.test(lines[0])) {\n throw new Error(\"File is not an NRRD file!\");\n }\n ret.version = parseInt(lines[0].substring(4, 8), 10);\n if (ret.version>5) {\n console.warn(\"Reading an unsupported version of the NRRD format; things may go haywire.\");\n }\n\n // Parse lines\n for(i=1; i=0) return NaN;\n if (str.indexOf('-inf')>=0) return -Infinity;\n if (str.indexOf('inf')>=0) return Infinity;\n var val = parseFloat(str);\n if (Number.isNaN(val)) throw new Error(\"Malformed NRRD float: \" + str);\n return val;\n}\n\nfunction parseNRRDVector(str) {\n if (str == \"none\") return null;\n if (str.length<2 || str[0]!==\"(\" || str[str.length-1]!==\")\") throw new Error(\"Malformed NRRD vector: \" + str);\n return str.slice(1, -1).split(\",\").map(parseNRRDFloat);\n}\n\nfunction parseNRRDQuotedString(str) {\n if (length<2 || str[0]!='\"' || str[str.length-1]!='\"') {\n throw new Error(\"Invalid NRRD quoted string: \" + str);\n }\n return str.slice(1, -1).replace('\\\\\"', '\"');\n}\n\nfunction serializeNRRDQuotedString(str) {\n return '\"' + str.replace('\"', '\\\\\"') + '\"';\n}\n\nvar whitespaceListSeparator = /[ \\t]+/; // Note that this excludes other types of whitespace on purpose!\nfunction parseNRRDWhitespaceSeparatedList(str, parseElement) {\n return str.split(whitespaceListSeparator).map(parseElement);\n}\n\nfunction parseNRRDType(descriptor) {\n switch(descriptor.toLowerCase()) {\n case \"signed char\":\n case \"int8\":\n case \"int8_t\":\n return 'int8';\n case \"uchar\":\n case \"unsigned char\":\n case \"uint8\":\n case \"uint8_t\":\n return 'uint8';\n case \"short\":\n case \"short int\":\n case \"signed short\":\n case \"signed short int\":\n case \"int16\":\n case \"int16_t\":\n return 'int16';\n case \"ushort\":\n case \"unsigned short\":\n case \"unsigned short int\":\n case \"uint16\":\n case \"uint16_t\":\n return 'uint16';\n case \"int\":\n case \"signed int\":\n case \"int32\":\n case \"int32_t\":\n return 'int32';\n case \"uint\":\n case \"unsigned int\":\n case \"uint32\":\n case \"uint32_t\":\n return 'uint32';\n case \"longlong\":\n case \"long long\":\n case \"long long int\":\n case \"signed long long\":\n case \"signed long long int\":\n case \"int64\":\n case \"int64_t\":\n return 'int64';\n case \"ulonglong\":\n case \"unsigned long long\":\n case \"unsigned long long int\":\n case \"uint64\":\n case \"uint64_t\":\n return 'uint64';\n case \"float\":\n return 'float';\n case \"double\":\n return 'double';\n case \"block\":\n return 'block';\n default:\n console.warn(\"Unrecognized NRRD type: \" + descriptor);\n return descriptor;\n }\n}\n\nfunction parseNRRDEncoding(encoding) {\n switch(encoding.toLowerCase()) {\n case \"raw\":\n return \"raw\";\n case \"txt\":\n case \"text\":\n case \"ascii\":\n return \"ascii\";\n case \"hex\":\n return \"hex\";\n case \"gz\":\n case \"gzip\":\n return \"gzip\";\n case \"bz2\":\n case \"bzip2\":\n return \"bzip2\";\n default:\n console.warn(\"Unrecognized NRRD encoding: \" + encoding);\n return encoding;\n }\n}\n\nfunction parseNRRDSpace(space) {\n switch(space.toLowerCase()) {\n case \"right-anterior-superior\":\n case \"ras\":\n return \"right-anterior-superior\";\n case \"left-anterior-superior\":\n case \"las\":\n return \"left-anterior-superior\";\n case \"left-posterior-superior\":\n case \"lps\":\n return \"left-posterior-superior\";\n \t case \"right-anterior-superior-time\":\n \t case \"rast\":\n return \"right-anterior-superior-time\";\n case \"left-anterior-superior-time\":\n case \"last\":\n return \"left-anterior-superior-time\";\n case \"left-posterior-superior-time\":\n case \"lpst\":\n return \"left-posterior-superior-time\";\n case \"scanner-xyz\":\n return \"scanner-xyz\";\n case \"scanner-xyz-time\":\n return \"scanner-xyz-time\";\n case \"3d-right-handed\":\n return \"3D-right-handed\";\n case \"3d-left-handed\":\n return \"3D-left-handed\";\n case \"3d-right-handed-time\":\n return \"3D-right-handed-time\";\n case \"3d-left-handed-time\":\n return \"3D-left-handed-time\";\n default:\n console.warn(\"Unrecognized space: \" + space);\n return space;\n }\n}\n\nfunction parseNRRDEndian(endian) {\n switch(endian.toLowerCase()) {\n case 'little':\n return 'little';\n case 'big':\n return 'big';\n default:\n console.warn(\"Unrecognized NRRD endianness: \" + endian);\n return endian;\n }\n}\n\n// Note that this function will never encounter the LIST data file specification format, as this is handled elsewhere.\nvar dataFileFormatRE = / (-?\\d+) (-?\\d+) (-?\\d+)(?: (\\d+))?$/;\nfunction parseNRRDDataFile(dataFile) {\n var match = dataFileFormatRE.exec(dataFile);\n if (match) { // We have a format specification\n if (match.length == 5 && match[4]) { // subdim specification\n return {\n format: dataFile.substring(0, match.index),\n min: parseNRRDInteger(match[1]),\n max: parseNRRDInteger(match[2]),\n step: parseNRRDInteger(match[3]),\n subdim: parseNRRDInteger(match[4])\n };\n } else {\n return {\n format: dataFile.substring(0, match.index),\n min: parseNRRDInteger(match[1]),\n max: parseNRRDInteger(match[2]),\n step: parseNRRDInteger(match[3])\n };\n }\n } else { // Just a file\n return dataFile;\n }\n}\n\nfunction serializeNRRDDataFile(dataFile) {\n if ((typeof dataFile) == \"string\" || dataFile instanceof String) {\n return dataFile;\n } else if ('format' in dataFile && 'min' in dataFile && 'max' in dataFile && 'step' in dataFile) {\n if ('subdim' in dataFile) {\n return dataFile.format + \" \" + dataFile.min + \" \" + dataFile.max + \" \" + dataFile.step + \" \" + dataFile.subdim;\n } else {\n return dataFile.format + \" \" + dataFile.min + \" \" + dataFile.max + \" \" + dataFile.step;\n }\n } else {\n throw new Error(\"Unrecognized data file format!\");\n }\n}\n\nfunction parseNRRDCenter(center) {\n switch(center.toLowerCase()) {\n case \"cell\":\n return \"cell\";\n case \"node\":\n return \"node\";\n case \"???\":\n case \"none\":\n return null;\n default:\n console.warn(\"Unrecognized NRRD center: \" + center);\n return center;\n }\n}\n\nvar NRRDKinds = {\n \"domain\": \"domain\",\n \"space\": \"space\",\n \"time\": \"time\",\n \"list\": \"list\",\n \"point\": \"point\",\n \"vector\": \"vector\",\n \"covariant-vector\": \"covariant-vector\",\n \"normal\": \"normal\",\n \"stub\": \"stub\",\n \"scalar\": \"scalar\",\n \"complex\": \"complex\",\n \"2-vector\": \"2-vector\",\n \"3-color\": \"3-color\",\n \"rgb-color\": \"RGB-color\",\n \"hsv-color\": \"HSV-color\",\n \"xyz-color\": \"XYZ-color\",\n \"4-color\": \"4-color\",\n \"rgba-color\": \"RGBA-color\",\n \"3-vector\": \"3-vector\",\n \"3-gradient\": \"3-gradient\",\n \"3-normal\": \"3-normal\",\n \"4-vector\": \"4-vector\",\n \"quaternion\": \"quaternion\",\n \"2d-symmetric-matrix\": \"2D-symmetric-matrix\",\n \"2d-masked-symmetric-matrix\": \"2D-masked-symmetric-matrix\",\n \"2d-matrix\": \"2D-matrix\",\n \"2d-masked-matrix\": \"2D-masked-matrix\",\n \"3d-symmetric-matrix\": \"3D-symmetric-matrix\",\n \"3d-masked-symmetric-matrix\": \"3D-masked-symmetric-matrix\",\n \"3d-matrix\": \"3D-matrix\",\n \"3d-masked-matrix\": \"3D-masked-matrix\",\n \"???\": null,\n \"none\": null\n};\nfunction parseNRRDKind(kind) {\n var kindLC = kind.toLowerCase();\n if (kindLC in NRRDKinds) return NRRDKinds[kindLC];\n console.warn(\"Unrecognized NRRD kind: \" + kind);\n return kind;\n}\n\nfunction serializeNRRDOptional(a) {\n return a===null ? \"???\" : a;\n}\n\nvar systemEndianness = (function() {\n var buf = new ArrayBuffer(4),\n intArr = new Uint32Array(buf),\n byteArr = new Uint8Array(buf);\n intArr[0] = 0x01020304;\n if (byteArr[0]==1 && byteArr[1]==2 && byteArr[2]==3 && byteArr[3]==4) {\n return 'big';\n } else if (byteArr[0]==4 && byteArr[1]==3 && byteArr[2]==2 && byteArr[3]==1) {\n return 'little';\n }\n console.warn(\"Unrecognized system endianness!\");\n return undefined;\n})();\n\nfunction parseNRRDRawData(buffer, type, sizes, options) {\n var i, arr, view, totalLen = 1, endianFlag;\n for(i=0; i0) integers!\");\n totalLen *= sizes[i];\n }\n if (type == 'block') {\n // Don't do anything special, just return the slice containing all blocks.\n return buffer.slice(0,totalLen*options.blockSize);\n } else if (type == 'int8' || type == 'uint8' || options.endian == systemEndianness) {\n switch(type) {\n case \"int8\":\n checkSize(1);\n return new Int8Array(buffer.slice(0,totalLen));\n case \"uint8\":\n checkSize(1);\n return new Uint8Array(buffer.slice(0,totalLen));\n case \"int16\":\n checkSize(2);\n return new Int16Array(buffer.slice(0,totalLen*2));\n case \"uint16\":\n checkSize(2);\n return new Uint16Array(buffer.slice(0,totalLen*2));\n case \"int32\":\n checkSize(4);\n return new Int32Array(buffer.slice(0,totalLen*4));\n case \"uint32\":\n checkSize(4);\n return new Uint32Array(buffer.slice(0,totalLen*4));\n //case \"int64\":\n // checkSize(8);\n // return new Int64Array(buffer.slice(0,totalLen*8));\n //case \"uint64\":\n // checkSize(8);\n // return new Uint64Array(buffer.slice(0,totalLen*8));\n case \"float\":\n checkSize(4);\n return new Float32Array(buffer.slice(0,totalLen*4));\n case \"double\":\n checkSize(8);\n return new Float64Array(buffer.slice(0,totalLen*8));\n default:\n console.warn(\"Unsupported NRRD type: \" + type + \", returning raw buffer.\");\n return undefined;\n }\n } else {\n switch(options.endian) {\n case 'big':\n endianFlag = false;\n break;\n case 'little':\n endianFlag = true;\n break;\n default:\n console.warn(\"Unsupported endianness in NRRD file: \" + options.endian);\n return undefined;\n }\n view = new DataView(buffer);\n switch(type) {\n case \"int8\": // Note that here we do not need to check the size of the buffer, as the DataView.get methods should throw an exception if we read beyond the buffer.\n arr = new Int8Array(totalLen);\n for(i=0; i0) integers!\");\n totalLen *= sizes[i];\n }\n buf8 = new Uint8Array(buffer);\n str = String.fromCharCode.apply(null, buf8);\n strList = str.split(whitespaceDataValueListSeparatorRE);\n if (strList.lengthtotalLen) {\n if (strList[0] === '') strList = strList.slice(1); // Strictly speaking the spec doesn't (explicitly) allow whitespace in front of the first number, but let's be lenient.\n strList = strList.slice(0, totalLen);\n }\n switch(type) {\n case \"int8\":\n return new Int8Array(strList.map(parseNRRDInteger));\n case \"uint8\":\n return new Uint8Array(strList.map(parseNRRDInteger));\n case \"int16\":\n return new Int16Array(strList.map(parseNRRDInteger));\n case \"uint16\":\n return new Uint16Array(strList.map(parseNRRDInteger));\n case \"int32\":\n return new Int32Array(strList.map(parseNRRDInteger));\n case \"uint32\":\n return new Uint32Array(strList.map(parseNRRDInteger));\n //case \"int64\":\n // return new Int64Array(strList.map(parseNRRDInteger));\n //case \"uint64\":\n // return new Uint64Array(strList.map(parseNRRDInteger));\n case \"float\":\n return new Float32Array(strList.map(parseNRRDFloat));\n case \"double\":\n return new Float64Array(strList.map(parseNRRDFloat));\n default:\n console.warn(\"Unsupported NRRD type: \" + type + \".\");\n return undefined;\n }\n}\n\n// This ALWAYS returns an integer, or throws an exception.\nfunction getNRRDTypeSize(type) {\n switch(type) {\n case \"int8\":\n return 1;\n case \"uint8\":\n return 1;\n case \"int16\":\n return 2;\n case \"uint16\":\n return 2;\n case \"int32\":\n return 4;\n case \"uint32\":\n return 4;\n case \"int64\":\n return 8;\n case \"uint64\":\n return 8;\n case \"float\":\n return 4;\n case \"double\":\n return 8;\n default:\n throw new Error(\"Do not know the size of NRRD type: \" + type);\n }\n}\n\nfunction checkNRRD(ret) {\n // Always necessary fields\n if (ret.dimension===undefined) {\n throw new Error(\"Dimension missing from NRRD file!\");\n } else if (ret.type===undefined) {\n throw new Error(\"Type missing from NRRD file!\");\n } else if (ret.encoding===undefined) {\n throw new Error(\"Encoding missing from NRRD file!\");\n } else if (ret.sizes===undefined) {\n throw new Error(\"Sizes missing from NRRD file!\");\n }\n \n // Sometimes necessary fields\n if (ret.type != 'block' && ret.type != 'int8' && ret.type != 'uint8' &&\n ret.encoding != 'ascii' && ret.endian === undefined) {\n throw new Error(\"Endianness missing from NRRD file!\");\n } else if (ret.type == 'block' && ret.blockSize === undefined) {\n throw new Error(\"Missing block size in NRRD file!\");\n }\n \n // Check dimension and per-axis field lengths\n if (ret.dimension === 0) {\n throw new Error(\"Zero-dimensional NRRD file?\");\n } else if (ret.dimension != ret.sizes.length) {\n throw new Error(\"Length of 'sizes' is different from 'dimension' in an NRRD file!\");\n } else if (ret.spacings && ret.dimension != ret.spacings.length) {\n throw new Error(\"Length of 'spacings' is different from 'dimension' in an NRRD file!\");\n } else if (ret.thicknesses && ret.dimension != ret.thicknesses.length) {\n throw new Error(\"Length of 'thicknesses' is different from 'dimension' in an NRRD file!\");\n } else if (ret.axisMins && ret.dimension != ret.axisMins.length) {\n throw new Error(\"Length of 'axis mins' is different from 'dimension' in an NRRD file!\");\n } else if (ret.axisMaxs && ret.dimension != ret.axisMaxs.length) {\n throw new Error(\"Length of 'axis maxs' is different from 'dimension' in an NRRD file!\");\n } else if (ret.centers && ret.dimension != ret.centers.length) {\n throw new Error(\"Length of 'centers' is different from 'dimension' in an NRRD file!\");\n } else if (ret.labels && ret.dimension != ret.labels.length) {\n throw new Error(\"Length of 'labels' is different from 'dimension' in an NRRD file!\");\n } else if (ret.units && ret.dimension != ret.units.length) {\n throw new Error(\"Length of 'units' is different from 'dimension' in an NRRD file!\");\n } else if (ret.kinds && ret.dimension != ret.kinds.length) {\n throw new Error(\"Length of 'kinds' is different from 'dimension' in an NRRD file!\");\n }\n \n // TODO: Check space/orientation fields.\n \n // We should either have inline data or external data\n if ((ret.data === undefined || ret.data.length === 0) && (ret.buffer === undefined || ret.buffer.byteLength === 0) && ret.dataFile === undefined) {\n throw new Error(\"NRRD file has neither inline or external data!\");\n }\n}\n\nfunction castTypedArray(data, type) {\n switch(type) {\n case \"int8\":\n return new Int8Array(data);\n case \"uint8\":\n return new Uint8Array(data);\n case \"int16\":\n return new Int16Array(data);\n case \"uint16\":\n return new Uint16Array(data);\n case \"int32\":\n return new Int32Array(data);\n case \"uint32\":\n return new Uint32Array(data);\n //case \"int64\":\n // return new Int64Array(data);\n //case \"uint64\":\n // return new Uint64Array(data);\n case \"float\":\n return new Float32Array(data);\n case \"double\":\n return new Float64Array(data);\n default:\n throw new Error(\"Cannot cast to NRRD type: \" + type);\n }\n}\n\nfunction serializeToBuffer(data, type, endian) {\n var i, endianFlag, view, nativeSize = getNRRDTypeSize(type), buffer = new ArrayBuffer(data.length*nativeSize);\n switch(endian) {\n case 'big':\n endianFlag = false;\n break;\n case 'little':\n endianFlag = true;\n break;\n default:\n console.warn(\"Unsupported endianness in NRRD file: \" + endian);\n return undefined;\n }\n view = new DataView(buffer);\n switch(type) {\n case \"int8\": // Note that here we do not need to check the size of the buffer, as the DataView.get methods should throw an exception if we read beyond the buffer.\n for(i=0; i Array\n *\n * Chunks of output data, if [[Deflate#onData]] not overriden.\n **/\n\n/**\n * Deflate.result -> Uint8Array|Array\n *\n * Compressed result, generated by default [[Deflate#onData]]\n * and [[Deflate#onEnd]] handlers. Filled after you push last chunk\n * (call [[Deflate#push]] with `Z_FINISH` / `true` param) or if you\n * push a chunk with explicit flush (call [[Deflate#push]] with\n * `Z_SYNC_FLUSH` param).\n **/\n\n/**\n * Deflate.err -> Number\n *\n * Error code after deflate finished. 0 (Z_OK) on success.\n * You will not need it in real life, because deflate errors\n * are possible only on wrong options or bad `onData` / `onEnd`\n * custom handlers.\n **/\n\n/**\n * Deflate.msg -> String\n *\n * Error message, if [[Deflate.err]] != 0\n **/\n\n\n/**\n * new Deflate(options)\n * - options (Object): zlib deflate options.\n *\n * Creates new deflator instance with specified params. Throws exception\n * on bad params. Supported options:\n *\n * - `level`\n * - `windowBits`\n * - `memLevel`\n * - `strategy`\n * - `dictionary`\n *\n * [http://zlib.net/manual.html#Advanced](http://zlib.net/manual.html#Advanced)\n * for more information on these.\n *\n * Additional options, for internal needs:\n *\n * - `chunkSize` - size of generated data chunks (16K by default)\n * - `raw` (Boolean) - do raw deflate\n * - `gzip` (Boolean) - create gzip wrapper\n * - `to` (String) - if equal to 'string', then result will be \"binary string\"\n * (each char code [0..255])\n * - `header` (Object) - custom header for gzip\n * - `text` (Boolean) - true if compressed data believed to be text\n * - `time` (Number) - modification time, unix timestamp\n * - `os` (Number) - operation system code\n * - `extra` (Array) - array of bytes with extra data (max 65536)\n * - `name` (String) - file name (binary string)\n * - `comment` (String) - comment (binary string)\n * - `hcrc` (Boolean) - true if header crc should be added\n *\n * ##### Example:\n *\n * ```javascript\n * var pako = require('pako')\n * , chunk1 = Uint8Array([1,2,3,4,5,6,7,8,9])\n * , chunk2 = Uint8Array([10,11,12,13,14,15,16,17,18,19]);\n *\n * var deflate = new pako.Deflate({ level: 3});\n *\n * deflate.push(chunk1, false);\n * deflate.push(chunk2, true); // true -> last chunk\n *\n * if (deflate.err) { throw new Error(deflate.err); }\n *\n * console.log(deflate.result);\n * ```\n **/\nfunction Deflate(options) {\n if (!(this instanceof Deflate)) return new Deflate(options);\n\n this.options = utils.assign({\n level: Z_DEFAULT_COMPRESSION,\n method: Z_DEFLATED,\n chunkSize: 16384,\n windowBits: 15,\n memLevel: 8,\n strategy: Z_DEFAULT_STRATEGY,\n to: ''\n }, options || {});\n\n var opt = this.options;\n\n if (opt.raw && (opt.windowBits > 0)) {\n opt.windowBits = -opt.windowBits;\n }\n\n else if (opt.gzip && (opt.windowBits > 0) && (opt.windowBits < 16)) {\n opt.windowBits += 16;\n }\n\n this.err = 0; // error code, if happens (0 = Z_OK)\n this.msg = ''; // error message\n this.ended = false; // used to avoid multiple onEnd() calls\n this.chunks = []; // chunks of compressed data\n\n this.strm = new ZStream();\n this.strm.avail_out = 0;\n\n var status = zlib_deflate.deflateInit2(\n this.strm,\n opt.level,\n opt.method,\n opt.windowBits,\n opt.memLevel,\n opt.strategy\n );\n\n if (status !== Z_OK) {\n throw new Error(msg[status]);\n }\n\n if (opt.header) {\n zlib_deflate.deflateSetHeader(this.strm, opt.header);\n }\n\n if (opt.dictionary) {\n var dict;\n // Convert data if needed\n if (typeof opt.dictionary === 'string') {\n // If we need to compress text, change encoding to utf8.\n dict = strings.string2buf(opt.dictionary);\n } else if (toString.call(opt.dictionary) === '[object ArrayBuffer]') {\n dict = new Uint8Array(opt.dictionary);\n } else {\n dict = opt.dictionary;\n }\n\n status = zlib_deflate.deflateSetDictionary(this.strm, dict);\n\n if (status !== Z_OK) {\n throw new Error(msg[status]);\n }\n\n this._dict_set = true;\n }\n}\n\n/**\n * Deflate#push(data[, mode]) -> Boolean\n * - data (Uint8Array|Array|ArrayBuffer|String): input data. Strings will be\n * converted to utf8 byte sequence.\n * - mode (Number|Boolean): 0..6 for corresponding Z_NO_FLUSH..Z_TREE modes.\n * See constants. Skipped or `false` means Z_NO_FLUSH, `true` meansh Z_FINISH.\n *\n * Sends input data to deflate pipe, generating [[Deflate#onData]] calls with\n * new compressed chunks. Returns `true` on success. The last data block must have\n * mode Z_FINISH (or `true`). That will flush internal pending buffers and call\n * [[Deflate#onEnd]]. For interim explicit flushes (without ending the stream) you\n * can use mode Z_SYNC_FLUSH, keeping the compression context.\n *\n * On fail call [[Deflate#onEnd]] with error code and return false.\n *\n * We strongly recommend to use `Uint8Array` on input for best speed (output\n * array format is detected automatically). Also, don't skip last param and always\n * use the same type in your code (boolean or number). That will improve JS speed.\n *\n * For regular `Array`-s make sure all elements are [0..255].\n *\n * ##### Example\n *\n * ```javascript\n * push(chunk, false); // push one of data chunks\n * ...\n * push(chunk, true); // push last chunk\n * ```\n **/\nDeflate.prototype.push = function (data, mode) {\n var strm = this.strm;\n var chunkSize = this.options.chunkSize;\n var status, _mode;\n\n if (this.ended) { return false; }\n\n _mode = (mode === ~~mode) ? mode : ((mode === true) ? Z_FINISH : Z_NO_FLUSH);\n\n // Convert data if needed\n if (typeof data === 'string') {\n // If we need to compress text, change encoding to utf8.\n strm.input = strings.string2buf(data);\n } else if (toString.call(data) === '[object ArrayBuffer]') {\n strm.input = new Uint8Array(data);\n } else {\n strm.input = data;\n }\n\n strm.next_in = 0;\n strm.avail_in = strm.input.length;\n\n do {\n if (strm.avail_out === 0) {\n strm.output = new utils.Buf8(chunkSize);\n strm.next_out = 0;\n strm.avail_out = chunkSize;\n }\n status = zlib_deflate.deflate(strm, _mode); /* no bad return value */\n\n if (status !== Z_STREAM_END && status !== Z_OK) {\n this.onEnd(status);\n this.ended = true;\n return false;\n }\n if (strm.avail_out === 0 || (strm.avail_in === 0 && (_mode === Z_FINISH || _mode === Z_SYNC_FLUSH))) {\n if (this.options.to === 'string') {\n this.onData(strings.buf2binstring(utils.shrinkBuf(strm.output, strm.next_out)));\n } else {\n this.onData(utils.shrinkBuf(strm.output, strm.next_out));\n }\n }\n } while ((strm.avail_in > 0 || strm.avail_out === 0) && status !== Z_STREAM_END);\n\n // Finalize on the last chunk.\n if (_mode === Z_FINISH) {\n status = zlib_deflate.deflateEnd(this.strm);\n this.onEnd(status);\n this.ended = true;\n return status === Z_OK;\n }\n\n // callback interim results if Z_SYNC_FLUSH.\n if (_mode === Z_SYNC_FLUSH) {\n this.onEnd(Z_OK);\n strm.avail_out = 0;\n return true;\n }\n\n return true;\n};\n\n\n/**\n * Deflate#onData(chunk) -> Void\n * - chunk (Uint8Array|Array|String): ouput data. Type of array depends\n * on js engine support. When string output requested, each chunk\n * will be string.\n *\n * By default, stores data blocks in `chunks[]` property and glue\n * those in `onEnd`. Override this handler, if you need another behaviour.\n **/\nDeflate.prototype.onData = function (chunk) {\n this.chunks.push(chunk);\n};\n\n\n/**\n * Deflate#onEnd(status) -> Void\n * - status (Number): deflate status. 0 (Z_OK) on success,\n * other if not.\n *\n * Called once after you tell deflate that the input stream is\n * complete (Z_FINISH) or should be flushed (Z_SYNC_FLUSH)\n * or if an error happened. By default - join collected chunks,\n * free memory and fill `results` / `err` properties.\n **/\nDeflate.prototype.onEnd = function (status) {\n // On success - join\n if (status === Z_OK) {\n if (this.options.to === 'string') {\n this.result = this.chunks.join('');\n } else {\n this.result = utils.flattenChunks(this.chunks);\n }\n }\n this.chunks = [];\n this.err = status;\n this.msg = this.strm.msg;\n};\n\n\n/**\n * deflate(data[, options]) -> Uint8Array|Array|String\n * - data (Uint8Array|Array|String): input data to compress.\n * - options (Object): zlib deflate options.\n *\n * Compress `data` with deflate algorithm and `options`.\n *\n * Supported options are:\n *\n * - level\n * - windowBits\n * - memLevel\n * - strategy\n * - dictionary\n *\n * [http://zlib.net/manual.html#Advanced](http://zlib.net/manual.html#Advanced)\n * for more information on these.\n *\n * Sugar (options):\n *\n * - `raw` (Boolean) - say that we work with raw stream, if you don't wish to specify\n * negative windowBits implicitly.\n * - `to` (String) - if equal to 'string', then result will be \"binary string\"\n * (each char code [0..255])\n *\n * ##### Example:\n *\n * ```javascript\n * var pako = require('pako')\n * , data = Uint8Array([1,2,3,4,5,6,7,8,9]);\n *\n * console.log(pako.deflate(data));\n * ```\n **/\nfunction deflate(input, options) {\n var deflator = new Deflate(options);\n\n deflator.push(input, true);\n\n // That will never happens, if you don't cheat with options :)\n if (deflator.err) { throw deflator.msg; }\n\n return deflator.result;\n}\n\n\n/**\n * deflateRaw(data[, options]) -> Uint8Array|Array|String\n * - data (Uint8Array|Array|String): input data to compress.\n * - options (Object): zlib deflate options.\n *\n * The same as [[deflate]], but creates raw data, without wrapper\n * (header and adler32 crc).\n **/\nfunction deflateRaw(input, options) {\n options = options || {};\n options.raw = true;\n return deflate(input, options);\n}\n\n\n/**\n * gzip(data[, options]) -> Uint8Array|Array|String\n * - data (Uint8Array|Array|String): input data to compress.\n * - options (Object): zlib deflate options.\n *\n * The same as [[deflate]], but create gzip wrapper instead of\n * deflate one.\n **/\nfunction gzip(input, options) {\n options = options || {};\n options.gzip = true;\n return deflate(input, options);\n}\n\n\nexports.Deflate = Deflate;\nexports.deflate = deflate;\nexports.deflateRaw = deflateRaw;\nexports.gzip = gzip;\n","'use strict';\n\n\nvar zlib_inflate = require('./zlib/inflate');\nvar utils = require('./utils/common');\nvar strings = require('./utils/strings');\nvar c = require('./zlib/constants');\nvar msg = require('./zlib/messages');\nvar ZStream = require('./zlib/zstream');\nvar GZheader = require('./zlib/gzheader');\n\nvar toString = Object.prototype.toString;\n\n/**\n * class Inflate\n *\n * Generic JS-style wrapper for zlib calls. If you don't need\n * streaming behaviour - use more simple functions: [[inflate]]\n * and [[inflateRaw]].\n **/\n\n/* internal\n * inflate.chunks -> Array\n *\n * Chunks of output data, if [[Inflate#onData]] not overriden.\n **/\n\n/**\n * Inflate.result -> Uint8Array|Array|String\n *\n * Uncompressed result, generated by default [[Inflate#onData]]\n * and [[Inflate#onEnd]] handlers. Filled after you push last chunk\n * (call [[Inflate#push]] with `Z_FINISH` / `true` param) or if you\n * push a chunk with explicit flush (call [[Inflate#push]] with\n * `Z_SYNC_FLUSH` param).\n **/\n\n/**\n * Inflate.err -> Number\n *\n * Error code after inflate finished. 0 (Z_OK) on success.\n * Should be checked if broken data possible.\n **/\n\n/**\n * Inflate.msg -> String\n *\n * Error message, if [[Inflate.err]] != 0\n **/\n\n\n/**\n * new Inflate(options)\n * - options (Object): zlib inflate options.\n *\n * Creates new inflator instance with specified params. Throws exception\n * on bad params. Supported options:\n *\n * - `windowBits`\n * - `dictionary`\n *\n * [http://zlib.net/manual.html#Advanced](http://zlib.net/manual.html#Advanced)\n * for more information on these.\n *\n * Additional options, for internal needs:\n *\n * - `chunkSize` - size of generated data chunks (16K by default)\n * - `raw` (Boolean) - do raw inflate\n * - `to` (String) - if equal to 'string', then result will be converted\n * from utf8 to utf16 (javascript) string. When string output requested,\n * chunk length can differ from `chunkSize`, depending on content.\n *\n * By default, when no options set, autodetect deflate/gzip data format via\n * wrapper header.\n *\n * ##### Example:\n *\n * ```javascript\n * var pako = require('pako')\n * , chunk1 = Uint8Array([1,2,3,4,5,6,7,8,9])\n * , chunk2 = Uint8Array([10,11,12,13,14,15,16,17,18,19]);\n *\n * var inflate = new pako.Inflate({ level: 3});\n *\n * inflate.push(chunk1, false);\n * inflate.push(chunk2, true); // true -> last chunk\n *\n * if (inflate.err) { throw new Error(inflate.err); }\n *\n * console.log(inflate.result);\n * ```\n **/\nfunction Inflate(options) {\n if (!(this instanceof Inflate)) return new Inflate(options);\n\n this.options = utils.assign({\n chunkSize: 16384,\n windowBits: 0,\n to: ''\n }, options || {});\n\n var opt = this.options;\n\n // Force window size for `raw` data, if not set directly,\n // because we have no header for autodetect.\n if (opt.raw && (opt.windowBits >= 0) && (opt.windowBits < 16)) {\n opt.windowBits = -opt.windowBits;\n if (opt.windowBits === 0) { opt.windowBits = -15; }\n }\n\n // If `windowBits` not defined (and mode not raw) - set autodetect flag for gzip/deflate\n if ((opt.windowBits >= 0) && (opt.windowBits < 16) &&\n !(options && options.windowBits)) {\n opt.windowBits += 32;\n }\n\n // Gzip header has no info about windows size, we can do autodetect only\n // for deflate. So, if window size not set, force it to max when gzip possible\n if ((opt.windowBits > 15) && (opt.windowBits < 48)) {\n // bit 3 (16) -> gzipped data\n // bit 4 (32) -> autodetect gzip/deflate\n if ((opt.windowBits & 15) === 0) {\n opt.windowBits |= 15;\n }\n }\n\n this.err = 0; // error code, if happens (0 = Z_OK)\n this.msg = ''; // error message\n this.ended = false; // used to avoid multiple onEnd() calls\n this.chunks = []; // chunks of compressed data\n\n this.strm = new ZStream();\n this.strm.avail_out = 0;\n\n var status = zlib_inflate.inflateInit2(\n this.strm,\n opt.windowBits\n );\n\n if (status !== c.Z_OK) {\n throw new Error(msg[status]);\n }\n\n this.header = new GZheader();\n\n zlib_inflate.inflateGetHeader(this.strm, this.header);\n}\n\n/**\n * Inflate#push(data[, mode]) -> Boolean\n * - data (Uint8Array|Array|ArrayBuffer|String): input data\n * - mode (Number|Boolean): 0..6 for corresponding Z_NO_FLUSH..Z_TREE modes.\n * See constants. Skipped or `false` means Z_NO_FLUSH, `true` meansh Z_FINISH.\n *\n * Sends input data to inflate pipe, generating [[Inflate#onData]] calls with\n * new output chunks. Returns `true` on success. The last data block must have\n * mode Z_FINISH (or `true`). That will flush internal pending buffers and call\n * [[Inflate#onEnd]]. For interim explicit flushes (without ending the stream) you\n * can use mode Z_SYNC_FLUSH, keeping the decompression context.\n *\n * On fail call [[Inflate#onEnd]] with error code and return false.\n *\n * We strongly recommend to use `Uint8Array` on input for best speed (output\n * format is detected automatically). Also, don't skip last param and always\n * use the same type in your code (boolean or number). That will improve JS speed.\n *\n * For regular `Array`-s make sure all elements are [0..255].\n *\n * ##### Example\n *\n * ```javascript\n * push(chunk, false); // push one of data chunks\n * ...\n * push(chunk, true); // push last chunk\n * ```\n **/\nInflate.prototype.push = function (data, mode) {\n var strm = this.strm;\n var chunkSize = this.options.chunkSize;\n var dictionary = this.options.dictionary;\n var status, _mode;\n var next_out_utf8, tail, utf8str;\n var dict;\n\n // Flag to properly process Z_BUF_ERROR on testing inflate call\n // when we check that all output data was flushed.\n var allowBufError = false;\n\n if (this.ended) { return false; }\n _mode = (mode === ~~mode) ? mode : ((mode === true) ? c.Z_FINISH : c.Z_NO_FLUSH);\n\n // Convert data if needed\n if (typeof data === 'string') {\n // Only binary strings can be decompressed on practice\n strm.input = strings.binstring2buf(data);\n } else if (toString.call(data) === '[object ArrayBuffer]') {\n strm.input = new Uint8Array(data);\n } else {\n strm.input = data;\n }\n\n strm.next_in = 0;\n strm.avail_in = strm.input.length;\n\n do {\n if (strm.avail_out === 0) {\n strm.output = new utils.Buf8(chunkSize);\n strm.next_out = 0;\n strm.avail_out = chunkSize;\n }\n\n status = zlib_inflate.inflate(strm, c.Z_NO_FLUSH); /* no bad return value */\n\n if (status === c.Z_NEED_DICT && dictionary) {\n // Convert data if needed\n if (typeof dictionary === 'string') {\n dict = strings.string2buf(dictionary);\n } else if (toString.call(dictionary) === '[object ArrayBuffer]') {\n dict = new Uint8Array(dictionary);\n } else {\n dict = dictionary;\n }\n\n status = zlib_inflate.inflateSetDictionary(this.strm, dict);\n\n }\n\n if (status === c.Z_BUF_ERROR && allowBufError === true) {\n status = c.Z_OK;\n allowBufError = false;\n }\n\n if (status !== c.Z_STREAM_END && status !== c.Z_OK) {\n this.onEnd(status);\n this.ended = true;\n return false;\n }\n\n if (strm.next_out) {\n if (strm.avail_out === 0 || status === c.Z_STREAM_END || (strm.avail_in === 0 && (_mode === c.Z_FINISH || _mode === c.Z_SYNC_FLUSH))) {\n\n if (this.options.to === 'string') {\n\n next_out_utf8 = strings.utf8border(strm.output, strm.next_out);\n\n tail = strm.next_out - next_out_utf8;\n utf8str = strings.buf2string(strm.output, next_out_utf8);\n\n // move tail\n strm.next_out = tail;\n strm.avail_out = chunkSize - tail;\n if (tail) { utils.arraySet(strm.output, strm.output, next_out_utf8, tail, 0); }\n\n this.onData(utf8str);\n\n } else {\n this.onData(utils.shrinkBuf(strm.output, strm.next_out));\n }\n }\n }\n\n // When no more input data, we should check that internal inflate buffers\n // are flushed. The only way to do it when avail_out = 0 - run one more\n // inflate pass. But if output data not exists, inflate return Z_BUF_ERROR.\n // Here we set flag to process this error properly.\n //\n // NOTE. Deflate does not return error in this case and does not needs such\n // logic.\n if (strm.avail_in === 0 && strm.avail_out === 0) {\n allowBufError = true;\n }\n\n } while ((strm.avail_in > 0 || strm.avail_out === 0) && status !== c.Z_STREAM_END);\n\n if (status === c.Z_STREAM_END) {\n _mode = c.Z_FINISH;\n }\n\n // Finalize on the last chunk.\n if (_mode === c.Z_FINISH) {\n status = zlib_inflate.inflateEnd(this.strm);\n this.onEnd(status);\n this.ended = true;\n return status === c.Z_OK;\n }\n\n // callback interim results if Z_SYNC_FLUSH.\n if (_mode === c.Z_SYNC_FLUSH) {\n this.onEnd(c.Z_OK);\n strm.avail_out = 0;\n return true;\n }\n\n return true;\n};\n\n\n/**\n * Inflate#onData(chunk) -> Void\n * - chunk (Uint8Array|Array|String): ouput data. Type of array depends\n * on js engine support. When string output requested, each chunk\n * will be string.\n *\n * By default, stores data blocks in `chunks[]` property and glue\n * those in `onEnd`. Override this handler, if you need another behaviour.\n **/\nInflate.prototype.onData = function (chunk) {\n this.chunks.push(chunk);\n};\n\n\n/**\n * Inflate#onEnd(status) -> Void\n * - status (Number): inflate status. 0 (Z_OK) on success,\n * other if not.\n *\n * Called either after you tell inflate that the input stream is\n * complete (Z_FINISH) or should be flushed (Z_SYNC_FLUSH)\n * or if an error happened. By default - join collected chunks,\n * free memory and fill `results` / `err` properties.\n **/\nInflate.prototype.onEnd = function (status) {\n // On success - join\n if (status === c.Z_OK) {\n if (this.options.to === 'string') {\n // Glue & convert here, until we teach pako to send\n // utf8 alligned strings to onData\n this.result = this.chunks.join('');\n } else {\n this.result = utils.flattenChunks(this.chunks);\n }\n }\n this.chunks = [];\n this.err = status;\n this.msg = this.strm.msg;\n};\n\n\n/**\n * inflate(data[, options]) -> Uint8Array|Array|String\n * - data (Uint8Array|Array|String): input data to decompress.\n * - options (Object): zlib inflate options.\n *\n * Decompress `data` with inflate/ungzip and `options`. Autodetect\n * format via wrapper header by default. That's why we don't provide\n * separate `ungzip` method.\n *\n * Supported options are:\n *\n * - windowBits\n *\n * [http://zlib.net/manual.html#Advanced](http://zlib.net/manual.html#Advanced)\n * for more information.\n *\n * Sugar (options):\n *\n * - `raw` (Boolean) - say that we work with raw stream, if you don't wish to specify\n * negative windowBits implicitly.\n * - `to` (String) - if equal to 'string', then result will be converted\n * from utf8 to utf16 (javascript) string. When string output requested,\n * chunk length can differ from `chunkSize`, depending on content.\n *\n *\n * ##### Example:\n *\n * ```javascript\n * var pako = require('pako')\n * , input = pako.deflate([1,2,3,4,5,6,7,8,9])\n * , output;\n *\n * try {\n * output = pako.inflate(input);\n * } catch (err)\n * console.log(err);\n * }\n * ```\n **/\nfunction inflate(input, options) {\n var inflator = new Inflate(options);\n\n inflator.push(input, true);\n\n // That will never happens, if you don't cheat with options :)\n if (inflator.err) { throw inflator.msg; }\n\n return inflator.result;\n}\n\n\n/**\n * inflateRaw(data[, options]) -> Uint8Array|Array|String\n * - data (Uint8Array|Array|String): input data to decompress.\n * - options (Object): zlib inflate options.\n *\n * The same as [[inflate]], but creates raw data, without wrapper\n * (header and adler32 crc).\n **/\nfunction inflateRaw(input, options) {\n options = options || {};\n options.raw = true;\n return inflate(input, options);\n}\n\n\n/**\n * ungzip(data[, options]) -> Uint8Array|Array|String\n * - data (Uint8Array|Array|String): input data to decompress.\n * - options (Object): zlib inflate options.\n *\n * Just shortcut to [[inflate]], because it autodetects format\n * by header.content. Done for convenience.\n **/\n\n\nexports.Inflate = Inflate;\nexports.inflate = inflate;\nexports.inflateRaw = inflateRaw;\nexports.ungzip = inflate;\n","'use strict';\n\n\nvar TYPED_OK = (typeof Uint8Array !== 'undefined') &&\n (typeof Uint16Array !== 'undefined') &&\n (typeof Int32Array !== 'undefined');\n\n\nexports.assign = function (obj /*from1, from2, from3, ...*/) {\n var sources = Array.prototype.slice.call(arguments, 1);\n while (sources.length) {\n var source = sources.shift();\n if (!source) { continue; }\n\n if (typeof source !== 'object') {\n throw new TypeError(source + 'must be non-object');\n }\n\n for (var p in source) {\n if (source.hasOwnProperty(p)) {\n obj[p] = source[p];\n }\n }\n }\n\n return obj;\n};\n\n\n// reduce buffer size, avoiding mem copy\nexports.shrinkBuf = function (buf, size) {\n if (buf.length === size) { return buf; }\n if (buf.subarray) { return buf.subarray(0, size); }\n buf.length = size;\n return buf;\n};\n\n\nvar fnTyped = {\n arraySet: function (dest, src, src_offs, len, dest_offs) {\n if (src.subarray && dest.subarray) {\n dest.set(src.subarray(src_offs, src_offs + len), dest_offs);\n return;\n }\n // Fallback to ordinary array\n for (var i = 0; i < len; i++) {\n dest[dest_offs + i] = src[src_offs + i];\n }\n },\n // Join array of chunks to single array.\n flattenChunks: function (chunks) {\n var i, l, len, pos, chunk, result;\n\n // calculate data length\n len = 0;\n for (i = 0, l = chunks.length; i < l; i++) {\n len += chunks[i].length;\n }\n\n // join chunks\n result = new Uint8Array(len);\n pos = 0;\n for (i = 0, l = chunks.length; i < l; i++) {\n chunk = chunks[i];\n result.set(chunk, pos);\n pos += chunk.length;\n }\n\n return result;\n }\n};\n\nvar fnUntyped = {\n arraySet: function (dest, src, src_offs, len, dest_offs) {\n for (var i = 0; i < len; i++) {\n dest[dest_offs + i] = src[src_offs + i];\n }\n },\n // Join array of chunks to single array.\n flattenChunks: function (chunks) {\n return [].concat.apply([], chunks);\n }\n};\n\n\n// Enable/Disable typed arrays use, for testing\n//\nexports.setTyped = function (on) {\n if (on) {\n exports.Buf8 = Uint8Array;\n exports.Buf16 = Uint16Array;\n exports.Buf32 = Int32Array;\n exports.assign(exports, fnTyped);\n } else {\n exports.Buf8 = Array;\n exports.Buf16 = Array;\n exports.Buf32 = Array;\n exports.assign(exports, fnUntyped);\n }\n};\n\nexports.setTyped(TYPED_OK);\n","// String encode/decode helpers\n'use strict';\n\n\nvar utils = require('./common');\n\n\n// Quick check if we can use fast array to bin string conversion\n//\n// - apply(Array) can fail on Android 2.2\n// - apply(Uint8Array) can fail on iOS 5.1 Safary\n//\nvar STR_APPLY_OK = true;\nvar STR_APPLY_UIA_OK = true;\n\ntry { String.fromCharCode.apply(null, [ 0 ]); } catch (__) { STR_APPLY_OK = false; }\ntry { String.fromCharCode.apply(null, new Uint8Array(1)); } catch (__) { STR_APPLY_UIA_OK = false; }\n\n\n// Table with utf8 lengths (calculated by first byte of sequence)\n// Note, that 5 & 6-byte values and some 4-byte values can not be represented in JS,\n// because max possible codepoint is 0x10ffff\nvar _utf8len = new utils.Buf8(256);\nfor (var q = 0; q < 256; q++) {\n _utf8len[q] = (q >= 252 ? 6 : q >= 248 ? 5 : q >= 240 ? 4 : q >= 224 ? 3 : q >= 192 ? 2 : 1);\n}\n_utf8len[254] = _utf8len[254] = 1; // Invalid sequence start\n\n\n// convert string to array (typed, when possible)\nexports.string2buf = function (str) {\n var buf, c, c2, m_pos, i, str_len = str.length, buf_len = 0;\n\n // count binary size\n for (m_pos = 0; m_pos < str_len; m_pos++) {\n c = str.charCodeAt(m_pos);\n if ((c & 0xfc00) === 0xd800 && (m_pos + 1 < str_len)) {\n c2 = str.charCodeAt(m_pos + 1);\n if ((c2 & 0xfc00) === 0xdc00) {\n c = 0x10000 + ((c - 0xd800) << 10) + (c2 - 0xdc00);\n m_pos++;\n }\n }\n buf_len += c < 0x80 ? 1 : c < 0x800 ? 2 : c < 0x10000 ? 3 : 4;\n }\n\n // allocate buffer\n buf = new utils.Buf8(buf_len);\n\n // convert\n for (i = 0, m_pos = 0; i < buf_len; m_pos++) {\n c = str.charCodeAt(m_pos);\n if ((c & 0xfc00) === 0xd800 && (m_pos + 1 < str_len)) {\n c2 = str.charCodeAt(m_pos + 1);\n if ((c2 & 0xfc00) === 0xdc00) {\n c = 0x10000 + ((c - 0xd800) << 10) + (c2 - 0xdc00);\n m_pos++;\n }\n }\n if (c < 0x80) {\n /* one byte */\n buf[i++] = c;\n } else if (c < 0x800) {\n /* two bytes */\n buf[i++] = 0xC0 | (c >>> 6);\n buf[i++] = 0x80 | (c & 0x3f);\n } else if (c < 0x10000) {\n /* three bytes */\n buf[i++] = 0xE0 | (c >>> 12);\n buf[i++] = 0x80 | (c >>> 6 & 0x3f);\n buf[i++] = 0x80 | (c & 0x3f);\n } else {\n /* four bytes */\n buf[i++] = 0xf0 | (c >>> 18);\n buf[i++] = 0x80 | (c >>> 12 & 0x3f);\n buf[i++] = 0x80 | (c >>> 6 & 0x3f);\n buf[i++] = 0x80 | (c & 0x3f);\n }\n }\n\n return buf;\n};\n\n// Helper (used in 2 places)\nfunction buf2binstring(buf, len) {\n // use fallback for big arrays to avoid stack overflow\n if (len < 65537) {\n if ((buf.subarray && STR_APPLY_UIA_OK) || (!buf.subarray && STR_APPLY_OK)) {\n return String.fromCharCode.apply(null, utils.shrinkBuf(buf, len));\n }\n }\n\n var result = '';\n for (var i = 0; i < len; i++) {\n result += String.fromCharCode(buf[i]);\n }\n return result;\n}\n\n\n// Convert byte array to binary string\nexports.buf2binstring = function (buf) {\n return buf2binstring(buf, buf.length);\n};\n\n\n// Convert binary string (typed, when possible)\nexports.binstring2buf = function (str) {\n var buf = new utils.Buf8(str.length);\n for (var i = 0, len = buf.length; i < len; i++) {\n buf[i] = str.charCodeAt(i);\n }\n return buf;\n};\n\n\n// convert array to string\nexports.buf2string = function (buf, max) {\n var i, out, c, c_len;\n var len = max || buf.length;\n\n // Reserve max possible length (2 words per char)\n // NB: by unknown reasons, Array is significantly faster for\n // String.fromCharCode.apply than Uint16Array.\n var utf16buf = new Array(len * 2);\n\n for (out = 0, i = 0; i < len;) {\n c = buf[i++];\n // quick process ascii\n if (c < 0x80) { utf16buf[out++] = c; continue; }\n\n c_len = _utf8len[c];\n // skip 5 & 6 byte codes\n if (c_len > 4) { utf16buf[out++] = 0xfffd; i += c_len - 1; continue; }\n\n // apply mask on first byte\n c &= c_len === 2 ? 0x1f : c_len === 3 ? 0x0f : 0x07;\n // join the rest\n while (c_len > 1 && i < len) {\n c = (c << 6) | (buf[i++] & 0x3f);\n c_len--;\n }\n\n // terminated by end of string?\n if (c_len > 1) { utf16buf[out++] = 0xfffd; continue; }\n\n if (c < 0x10000) {\n utf16buf[out++] = c;\n } else {\n c -= 0x10000;\n utf16buf[out++] = 0xd800 | ((c >> 10) & 0x3ff);\n utf16buf[out++] = 0xdc00 | (c & 0x3ff);\n }\n }\n\n return buf2binstring(utf16buf, out);\n};\n\n\n// Calculate max possible position in utf8 buffer,\n// that will not break sequence. If that's not possible\n// - (very small limits) return max size as is.\n//\n// buf[] - utf8 bytes array\n// max - length limit (mandatory);\nexports.utf8border = function (buf, max) {\n var pos;\n\n max = max || buf.length;\n if (max > buf.length) { max = buf.length; }\n\n // go back from last position, until start of sequence found\n pos = max - 1;\n while (pos >= 0 && (buf[pos] & 0xC0) === 0x80) { pos--; }\n\n // Fuckup - very small and broken sequence,\n // return max, because we should return something anyway.\n if (pos < 0) { return max; }\n\n // If we came to start of buffer - that means vuffer is too small,\n // return max too.\n if (pos === 0) { return max; }\n\n return (pos + _utf8len[buf[pos]] > max) ? pos : max;\n};\n","'use strict';\n\n// Note: adler32 takes 12% for level 0 and 2% for level 6.\n// It doesn't worth to make additional optimizationa as in original.\n// Small size is preferable.\n\nfunction adler32(adler, buf, len, pos) {\n var s1 = (adler & 0xffff) |0,\n s2 = ((adler >>> 16) & 0xffff) |0,\n n = 0;\n\n while (len !== 0) {\n // Set limit ~ twice less than 5552, to keep\n // s2 in 31-bits, because we force signed ints.\n // in other case %= will fail.\n n = len > 2000 ? 2000 : len;\n len -= n;\n\n do {\n s1 = (s1 + buf[pos++]) |0;\n s2 = (s2 + s1) |0;\n } while (--n);\n\n s1 %= 65521;\n s2 %= 65521;\n }\n\n return (s1 | (s2 << 16)) |0;\n}\n\n\nmodule.exports = adler32;\n","'use strict';\n\n\nmodule.exports = {\n\n /* Allowed flush values; see deflate() and inflate() below for details */\n Z_NO_FLUSH: 0,\n Z_PARTIAL_FLUSH: 1,\n Z_SYNC_FLUSH: 2,\n Z_FULL_FLUSH: 3,\n Z_FINISH: 4,\n Z_BLOCK: 5,\n Z_TREES: 6,\n\n /* Return codes for the compression/decompression functions. Negative values\n * are errors, positive values are used for special but normal events.\n */\n Z_OK: 0,\n Z_STREAM_END: 1,\n Z_NEED_DICT: 2,\n Z_ERRNO: -1,\n Z_STREAM_ERROR: -2,\n Z_DATA_ERROR: -3,\n //Z_MEM_ERROR: -4,\n Z_BUF_ERROR: -5,\n //Z_VERSION_ERROR: -6,\n\n /* compression levels */\n Z_NO_COMPRESSION: 0,\n Z_BEST_SPEED: 1,\n Z_BEST_COMPRESSION: 9,\n Z_DEFAULT_COMPRESSION: -1,\n\n\n Z_FILTERED: 1,\n Z_HUFFMAN_ONLY: 2,\n Z_RLE: 3,\n Z_FIXED: 4,\n Z_DEFAULT_STRATEGY: 0,\n\n /* Possible values of the data_type field (though see inflate()) */\n Z_BINARY: 0,\n Z_TEXT: 1,\n //Z_ASCII: 1, // = Z_TEXT (deprecated)\n Z_UNKNOWN: 2,\n\n /* The deflate compression method */\n Z_DEFLATED: 8\n //Z_NULL: null // Use -1 or null inline, depending on var type\n};\n","'use strict';\n\n// Note: we can't get significant speed boost here.\n// So write code to minimize size - no pregenerated tables\n// and array tools dependencies.\n\n\n// Use ordinary array, since untyped makes no boost here\nfunction makeTable() {\n var c, table = [];\n\n for (var n = 0; n < 256; n++) {\n c = n;\n for (var k = 0; k < 8; k++) {\n c = ((c & 1) ? (0xEDB88320 ^ (c >>> 1)) : (c >>> 1));\n }\n table[n] = c;\n }\n\n return table;\n}\n\n// Create table on load. Just 255 signed longs. Not a problem.\nvar crcTable = makeTable();\n\n\nfunction crc32(crc, buf, len, pos) {\n var t = crcTable,\n end = pos + len;\n\n crc ^= -1;\n\n for (var i = pos; i < end; i++) {\n crc = (crc >>> 8) ^ t[(crc ^ buf[i]) & 0xFF];\n }\n\n return (crc ^ (-1)); // >>> 0;\n}\n\n\nmodule.exports = crc32;\n","'use strict';\n\nvar utils = require('../utils/common');\nvar trees = require('./trees');\nvar adler32 = require('./adler32');\nvar crc32 = require('./crc32');\nvar msg = require('./messages');\n\n/* Public constants ==========================================================*/\n/* ===========================================================================*/\n\n\n/* Allowed flush values; see deflate() and inflate() below for details */\nvar Z_NO_FLUSH = 0;\nvar Z_PARTIAL_FLUSH = 1;\n//var Z_SYNC_FLUSH = 2;\nvar Z_FULL_FLUSH = 3;\nvar Z_FINISH = 4;\nvar Z_BLOCK = 5;\n//var Z_TREES = 6;\n\n\n/* Return codes for the compression/decompression functions. Negative values\n * are errors, positive values are used for special but normal events.\n */\nvar Z_OK = 0;\nvar Z_STREAM_END = 1;\n//var Z_NEED_DICT = 2;\n//var Z_ERRNO = -1;\nvar Z_STREAM_ERROR = -2;\nvar Z_DATA_ERROR = -3;\n//var Z_MEM_ERROR = -4;\nvar Z_BUF_ERROR = -5;\n//var Z_VERSION_ERROR = -6;\n\n\n/* compression levels */\n//var Z_NO_COMPRESSION = 0;\n//var Z_BEST_SPEED = 1;\n//var Z_BEST_COMPRESSION = 9;\nvar Z_DEFAULT_COMPRESSION = -1;\n\n\nvar Z_FILTERED = 1;\nvar Z_HUFFMAN_ONLY = 2;\nvar Z_RLE = 3;\nvar Z_FIXED = 4;\nvar Z_DEFAULT_STRATEGY = 0;\n\n/* Possible values of the data_type field (though see inflate()) */\n//var Z_BINARY = 0;\n//var Z_TEXT = 1;\n//var Z_ASCII = 1; // = Z_TEXT\nvar Z_UNKNOWN = 2;\n\n\n/* The deflate compression method */\nvar Z_DEFLATED = 8;\n\n/*============================================================================*/\n\n\nvar MAX_MEM_LEVEL = 9;\n/* Maximum value for memLevel in deflateInit2 */\nvar MAX_WBITS = 15;\n/* 32K LZ77 window */\nvar DEF_MEM_LEVEL = 8;\n\n\nvar LENGTH_CODES = 29;\n/* number of length codes, not counting the special END_BLOCK code */\nvar LITERALS = 256;\n/* number of literal bytes 0..255 */\nvar L_CODES = LITERALS + 1 + LENGTH_CODES;\n/* number of Literal or Length codes, including the END_BLOCK code */\nvar D_CODES = 30;\n/* number of distance codes */\nvar BL_CODES = 19;\n/* number of codes used to transfer the bit lengths */\nvar HEAP_SIZE = 2 * L_CODES + 1;\n/* maximum heap size */\nvar MAX_BITS = 15;\n/* All codes must not exceed MAX_BITS bits */\n\nvar MIN_MATCH = 3;\nvar MAX_MATCH = 258;\nvar MIN_LOOKAHEAD = (MAX_MATCH + MIN_MATCH + 1);\n\nvar PRESET_DICT = 0x20;\n\nvar INIT_STATE = 42;\nvar EXTRA_STATE = 69;\nvar NAME_STATE = 73;\nvar COMMENT_STATE = 91;\nvar HCRC_STATE = 103;\nvar BUSY_STATE = 113;\nvar FINISH_STATE = 666;\n\nvar BS_NEED_MORE = 1; /* block not completed, need more input or more output */\nvar BS_BLOCK_DONE = 2; /* block flush performed */\nvar BS_FINISH_STARTED = 3; /* finish started, need only more output at next deflate */\nvar BS_FINISH_DONE = 4; /* finish done, accept no more input or output */\n\nvar OS_CODE = 0x03; // Unix :) . Don't detect, use this default.\n\nfunction err(strm, errorCode) {\n strm.msg = msg[errorCode];\n return errorCode;\n}\n\nfunction rank(f) {\n return ((f) << 1) - ((f) > 4 ? 9 : 0);\n}\n\nfunction zero(buf) { var len = buf.length; while (--len >= 0) { buf[len] = 0; } }\n\n\n/* =========================================================================\n * Flush as much pending output as possible. All deflate() output goes\n * through this function so some applications may wish to modify it\n * to avoid allocating a large strm->output buffer and copying into it.\n * (See also read_buf()).\n */\nfunction flush_pending(strm) {\n var s = strm.state;\n\n //_tr_flush_bits(s);\n var len = s.pending;\n if (len > strm.avail_out) {\n len = strm.avail_out;\n }\n if (len === 0) { return; }\n\n utils.arraySet(strm.output, s.pending_buf, s.pending_out, len, strm.next_out);\n strm.next_out += len;\n s.pending_out += len;\n strm.total_out += len;\n strm.avail_out -= len;\n s.pending -= len;\n if (s.pending === 0) {\n s.pending_out = 0;\n }\n}\n\n\nfunction flush_block_only(s, last) {\n trees._tr_flush_block(s, (s.block_start >= 0 ? s.block_start : -1), s.strstart - s.block_start, last);\n s.block_start = s.strstart;\n flush_pending(s.strm);\n}\n\n\nfunction put_byte(s, b) {\n s.pending_buf[s.pending++] = b;\n}\n\n\n/* =========================================================================\n * Put a short in the pending buffer. The 16-bit value is put in MSB order.\n * IN assertion: the stream state is correct and there is enough room in\n * pending_buf.\n */\nfunction putShortMSB(s, b) {\n// put_byte(s, (Byte)(b >> 8));\n// put_byte(s, (Byte)(b & 0xff));\n s.pending_buf[s.pending++] = (b >>> 8) & 0xff;\n s.pending_buf[s.pending++] = b & 0xff;\n}\n\n\n/* ===========================================================================\n * Read a new buffer from the current input stream, update the adler32\n * and total number of bytes read. All deflate() input goes through\n * this function so some applications may wish to modify it to avoid\n * allocating a large strm->input buffer and copying from it.\n * (See also flush_pending()).\n */\nfunction read_buf(strm, buf, start, size) {\n var len = strm.avail_in;\n\n if (len > size) { len = size; }\n if (len === 0) { return 0; }\n\n strm.avail_in -= len;\n\n // zmemcpy(buf, strm->next_in, len);\n utils.arraySet(buf, strm.input, strm.next_in, len, start);\n if (strm.state.wrap === 1) {\n strm.adler = adler32(strm.adler, buf, len, start);\n }\n\n else if (strm.state.wrap === 2) {\n strm.adler = crc32(strm.adler, buf, len, start);\n }\n\n strm.next_in += len;\n strm.total_in += len;\n\n return len;\n}\n\n\n/* ===========================================================================\n * Set match_start to the longest match starting at the given string and\n * return its length. Matches shorter or equal to prev_length are discarded,\n * in which case the result is equal to prev_length and match_start is\n * garbage.\n * IN assertions: cur_match is the head of the hash chain for the current\n * string (strstart) and its distance is <= MAX_DIST, and prev_length >= 1\n * OUT assertion: the match length is not greater than s->lookahead.\n */\nfunction longest_match(s, cur_match) {\n var chain_length = s.max_chain_length; /* max hash chain length */\n var scan = s.strstart; /* current string */\n var match; /* matched string */\n var len; /* length of current match */\n var best_len = s.prev_length; /* best match length so far */\n var nice_match = s.nice_match; /* stop if match long enough */\n var limit = (s.strstart > (s.w_size - MIN_LOOKAHEAD)) ?\n s.strstart - (s.w_size - MIN_LOOKAHEAD) : 0/*NIL*/;\n\n var _win = s.window; // shortcut\n\n var wmask = s.w_mask;\n var prev = s.prev;\n\n /* Stop when cur_match becomes <= limit. To simplify the code,\n * we prevent matches with the string of window index 0.\n */\n\n var strend = s.strstart + MAX_MATCH;\n var scan_end1 = _win[scan + best_len - 1];\n var scan_end = _win[scan + best_len];\n\n /* The code is optimized for HASH_BITS >= 8 and MAX_MATCH-2 multiple of 16.\n * It is easy to get rid of this optimization if necessary.\n */\n // Assert(s->hash_bits >= 8 && MAX_MATCH == 258, \"Code too clever\");\n\n /* Do not waste too much time if we already have a good match: */\n if (s.prev_length >= s.good_match) {\n chain_length >>= 2;\n }\n /* Do not look for matches beyond the end of the input. This is necessary\n * to make deflate deterministic.\n */\n if (nice_match > s.lookahead) { nice_match = s.lookahead; }\n\n // Assert((ulg)s->strstart <= s->window_size-MIN_LOOKAHEAD, \"need lookahead\");\n\n do {\n // Assert(cur_match < s->strstart, \"no future\");\n match = cur_match;\n\n /* Skip to next match if the match length cannot increase\n * or if the match length is less than 2. Note that the checks below\n * for insufficient lookahead only occur occasionally for performance\n * reasons. Therefore uninitialized memory will be accessed, and\n * conditional jumps will be made that depend on those values.\n * However the length of the match is limited to the lookahead, so\n * the output of deflate is not affected by the uninitialized values.\n */\n\n if (_win[match + best_len] !== scan_end ||\n _win[match + best_len - 1] !== scan_end1 ||\n _win[match] !== _win[scan] ||\n _win[++match] !== _win[scan + 1]) {\n continue;\n }\n\n /* The check at best_len-1 can be removed because it will be made\n * again later. (This heuristic is not always a win.)\n * It is not necessary to compare scan[2] and match[2] since they\n * are always equal when the other bytes match, given that\n * the hash keys are equal and that HASH_BITS >= 8.\n */\n scan += 2;\n match++;\n // Assert(*scan == *match, \"match[2]?\");\n\n /* We check for insufficient lookahead only every 8th comparison;\n * the 256th check will be made at strstart+258.\n */\n do {\n /*jshint noempty:false*/\n } while (_win[++scan] === _win[++match] && _win[++scan] === _win[++match] &&\n _win[++scan] === _win[++match] && _win[++scan] === _win[++match] &&\n _win[++scan] === _win[++match] && _win[++scan] === _win[++match] &&\n _win[++scan] === _win[++match] && _win[++scan] === _win[++match] &&\n scan < strend);\n\n // Assert(scan <= s->window+(unsigned)(s->window_size-1), \"wild scan\");\n\n len = MAX_MATCH - (strend - scan);\n scan = strend - MAX_MATCH;\n\n if (len > best_len) {\n s.match_start = cur_match;\n best_len = len;\n if (len >= nice_match) {\n break;\n }\n scan_end1 = _win[scan + best_len - 1];\n scan_end = _win[scan + best_len];\n }\n } while ((cur_match = prev[cur_match & wmask]) > limit && --chain_length !== 0);\n\n if (best_len <= s.lookahead) {\n return best_len;\n }\n return s.lookahead;\n}\n\n\n/* ===========================================================================\n * Fill the window when the lookahead becomes insufficient.\n * Updates strstart and lookahead.\n *\n * IN assertion: lookahead < MIN_LOOKAHEAD\n * OUT assertions: strstart <= window_size-MIN_LOOKAHEAD\n * At least one byte has been read, or avail_in == 0; reads are\n * performed for at least two bytes (required for the zip translate_eol\n * option -- not supported here).\n */\nfunction fill_window(s) {\n var _w_size = s.w_size;\n var p, n, m, more, str;\n\n //Assert(s->lookahead < MIN_LOOKAHEAD, \"already enough lookahead\");\n\n do {\n more = s.window_size - s.lookahead - s.strstart;\n\n // JS ints have 32 bit, block below not needed\n /* Deal with !@#$% 64K limit: */\n //if (sizeof(int) <= 2) {\n // if (more == 0 && s->strstart == 0 && s->lookahead == 0) {\n // more = wsize;\n //\n // } else if (more == (unsigned)(-1)) {\n // /* Very unlikely, but possible on 16 bit machine if\n // * strstart == 0 && lookahead == 1 (input done a byte at time)\n // */\n // more--;\n // }\n //}\n\n\n /* If the window is almost full and there is insufficient lookahead,\n * move the upper half to the lower one to make room in the upper half.\n */\n if (s.strstart >= _w_size + (_w_size - MIN_LOOKAHEAD)) {\n\n utils.arraySet(s.window, s.window, _w_size, _w_size, 0);\n s.match_start -= _w_size;\n s.strstart -= _w_size;\n /* we now have strstart >= MAX_DIST */\n s.block_start -= _w_size;\n\n /* Slide the hash table (could be avoided with 32 bit values\n at the expense of memory usage). We slide even when level == 0\n to keep the hash table consistent if we switch back to level > 0\n later. (Using level 0 permanently is not an optimal usage of\n zlib, so we don't care about this pathological case.)\n */\n\n n = s.hash_size;\n p = n;\n do {\n m = s.head[--p];\n s.head[p] = (m >= _w_size ? m - _w_size : 0);\n } while (--n);\n\n n = _w_size;\n p = n;\n do {\n m = s.prev[--p];\n s.prev[p] = (m >= _w_size ? m - _w_size : 0);\n /* If n is not on any hash chain, prev[n] is garbage but\n * its value will never be used.\n */\n } while (--n);\n\n more += _w_size;\n }\n if (s.strm.avail_in === 0) {\n break;\n }\n\n /* If there was no sliding:\n * strstart <= WSIZE+MAX_DIST-1 && lookahead <= MIN_LOOKAHEAD - 1 &&\n * more == window_size - lookahead - strstart\n * => more >= window_size - (MIN_LOOKAHEAD-1 + WSIZE + MAX_DIST-1)\n * => more >= window_size - 2*WSIZE + 2\n * In the BIG_MEM or MMAP case (not yet supported),\n * window_size == input_size + MIN_LOOKAHEAD &&\n * strstart + s->lookahead <= input_size => more >= MIN_LOOKAHEAD.\n * Otherwise, window_size == 2*WSIZE so more >= 2.\n * If there was sliding, more >= WSIZE. So in all cases, more >= 2.\n */\n //Assert(more >= 2, \"more < 2\");\n n = read_buf(s.strm, s.window, s.strstart + s.lookahead, more);\n s.lookahead += n;\n\n /* Initialize the hash value now that we have some input: */\n if (s.lookahead + s.insert >= MIN_MATCH) {\n str = s.strstart - s.insert;\n s.ins_h = s.window[str];\n\n /* UPDATE_HASH(s, s->ins_h, s->window[str + 1]); */\n s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[str + 1]) & s.hash_mask;\n//#if MIN_MATCH != 3\n// Call update_hash() MIN_MATCH-3 more times\n//#endif\n while (s.insert) {\n /* UPDATE_HASH(s, s->ins_h, s->window[str + MIN_MATCH-1]); */\n s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[str + MIN_MATCH - 1]) & s.hash_mask;\n\n s.prev[str & s.w_mask] = s.head[s.ins_h];\n s.head[s.ins_h] = str;\n str++;\n s.insert--;\n if (s.lookahead + s.insert < MIN_MATCH) {\n break;\n }\n }\n }\n /* If the whole input has less than MIN_MATCH bytes, ins_h is garbage,\n * but this is not important since only literal bytes will be emitted.\n */\n\n } while (s.lookahead < MIN_LOOKAHEAD && s.strm.avail_in !== 0);\n\n /* If the WIN_INIT bytes after the end of the current data have never been\n * written, then zero those bytes in order to avoid memory check reports of\n * the use of uninitialized (or uninitialised as Julian writes) bytes by\n * the longest match routines. Update the high water mark for the next\n * time through here. WIN_INIT is set to MAX_MATCH since the longest match\n * routines allow scanning to strstart + MAX_MATCH, ignoring lookahead.\n */\n// if (s.high_water < s.window_size) {\n// var curr = s.strstart + s.lookahead;\n// var init = 0;\n//\n// if (s.high_water < curr) {\n// /* Previous high water mark below current data -- zero WIN_INIT\n// * bytes or up to end of window, whichever is less.\n// */\n// init = s.window_size - curr;\n// if (init > WIN_INIT)\n// init = WIN_INIT;\n// zmemzero(s->window + curr, (unsigned)init);\n// s->high_water = curr + init;\n// }\n// else if (s->high_water < (ulg)curr + WIN_INIT) {\n// /* High water mark at or above current data, but below current data\n// * plus WIN_INIT -- zero out to current data plus WIN_INIT, or up\n// * to end of window, whichever is less.\n// */\n// init = (ulg)curr + WIN_INIT - s->high_water;\n// if (init > s->window_size - s->high_water)\n// init = s->window_size - s->high_water;\n// zmemzero(s->window + s->high_water, (unsigned)init);\n// s->high_water += init;\n// }\n// }\n//\n// Assert((ulg)s->strstart <= s->window_size - MIN_LOOKAHEAD,\n// \"not enough room for search\");\n}\n\n/* ===========================================================================\n * Copy without compression as much as possible from the input stream, return\n * the current block state.\n * This function does not insert new strings in the dictionary since\n * uncompressible data is probably not useful. This function is used\n * only for the level=0 compression option.\n * NOTE: this function should be optimized to avoid extra copying from\n * window to pending_buf.\n */\nfunction deflate_stored(s, flush) {\n /* Stored blocks are limited to 0xffff bytes, pending_buf is limited\n * to pending_buf_size, and each stored block has a 5 byte header:\n */\n var max_block_size = 0xffff;\n\n if (max_block_size > s.pending_buf_size - 5) {\n max_block_size = s.pending_buf_size - 5;\n }\n\n /* Copy as much as possible from input to output: */\n for (;;) {\n /* Fill the window as much as possible: */\n if (s.lookahead <= 1) {\n\n //Assert(s->strstart < s->w_size+MAX_DIST(s) ||\n // s->block_start >= (long)s->w_size, \"slide too late\");\n// if (!(s.strstart < s.w_size + (s.w_size - MIN_LOOKAHEAD) ||\n// s.block_start >= s.w_size)) {\n// throw new Error(\"slide too late\");\n// }\n\n fill_window(s);\n if (s.lookahead === 0 && flush === Z_NO_FLUSH) {\n return BS_NEED_MORE;\n }\n\n if (s.lookahead === 0) {\n break;\n }\n /* flush the current block */\n }\n //Assert(s->block_start >= 0L, \"block gone\");\n// if (s.block_start < 0) throw new Error(\"block gone\");\n\n s.strstart += s.lookahead;\n s.lookahead = 0;\n\n /* Emit a stored block if pending_buf will be full: */\n var max_start = s.block_start + max_block_size;\n\n if (s.strstart === 0 || s.strstart >= max_start) {\n /* strstart == 0 is possible when wraparound on 16-bit machine */\n s.lookahead = s.strstart - max_start;\n s.strstart = max_start;\n /*** FLUSH_BLOCK(s, 0); ***/\n flush_block_only(s, false);\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n /***/\n\n\n }\n /* Flush if we may have to slide, otherwise block_start may become\n * negative and the data will be gone:\n */\n if (s.strstart - s.block_start >= (s.w_size - MIN_LOOKAHEAD)) {\n /*** FLUSH_BLOCK(s, 0); ***/\n flush_block_only(s, false);\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n /***/\n }\n }\n\n s.insert = 0;\n\n if (flush === Z_FINISH) {\n /*** FLUSH_BLOCK(s, 1); ***/\n flush_block_only(s, true);\n if (s.strm.avail_out === 0) {\n return BS_FINISH_STARTED;\n }\n /***/\n return BS_FINISH_DONE;\n }\n\n if (s.strstart > s.block_start) {\n /*** FLUSH_BLOCK(s, 0); ***/\n flush_block_only(s, false);\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n /***/\n }\n\n return BS_NEED_MORE;\n}\n\n/* ===========================================================================\n * Compress as much as possible from the input stream, return the current\n * block state.\n * This function does not perform lazy evaluation of matches and inserts\n * new strings in the dictionary only for unmatched strings or for short\n * matches. It is used only for the fast compression options.\n */\nfunction deflate_fast(s, flush) {\n var hash_head; /* head of the hash chain */\n var bflush; /* set if current block must be flushed */\n\n for (;;) {\n /* Make sure that we always have enough lookahead, except\n * at the end of the input file. We need MAX_MATCH bytes\n * for the next match, plus MIN_MATCH bytes to insert the\n * string following the next match.\n */\n if (s.lookahead < MIN_LOOKAHEAD) {\n fill_window(s);\n if (s.lookahead < MIN_LOOKAHEAD && flush === Z_NO_FLUSH) {\n return BS_NEED_MORE;\n }\n if (s.lookahead === 0) {\n break; /* flush the current block */\n }\n }\n\n /* Insert the string window[strstart .. strstart+2] in the\n * dictionary, and set hash_head to the head of the hash chain:\n */\n hash_head = 0/*NIL*/;\n if (s.lookahead >= MIN_MATCH) {\n /*** INSERT_STRING(s, s.strstart, hash_head); ***/\n s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[s.strstart + MIN_MATCH - 1]) & s.hash_mask;\n hash_head = s.prev[s.strstart & s.w_mask] = s.head[s.ins_h];\n s.head[s.ins_h] = s.strstart;\n /***/\n }\n\n /* Find the longest match, discarding those <= prev_length.\n * At this point we have always match_length < MIN_MATCH\n */\n if (hash_head !== 0/*NIL*/ && ((s.strstart - hash_head) <= (s.w_size - MIN_LOOKAHEAD))) {\n /* To simplify the code, we prevent matches with the string\n * of window index 0 (in particular we have to avoid a match\n * of the string with itself at the start of the input file).\n */\n s.match_length = longest_match(s, hash_head);\n /* longest_match() sets match_start */\n }\n if (s.match_length >= MIN_MATCH) {\n // check_match(s, s.strstart, s.match_start, s.match_length); // for debug only\n\n /*** _tr_tally_dist(s, s.strstart - s.match_start,\n s.match_length - MIN_MATCH, bflush); ***/\n bflush = trees._tr_tally(s, s.strstart - s.match_start, s.match_length - MIN_MATCH);\n\n s.lookahead -= s.match_length;\n\n /* Insert new strings in the hash table only if the match length\n * is not too large. This saves time but degrades compression.\n */\n if (s.match_length <= s.max_lazy_match/*max_insert_length*/ && s.lookahead >= MIN_MATCH) {\n s.match_length--; /* string at strstart already in table */\n do {\n s.strstart++;\n /*** INSERT_STRING(s, s.strstart, hash_head); ***/\n s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[s.strstart + MIN_MATCH - 1]) & s.hash_mask;\n hash_head = s.prev[s.strstart & s.w_mask] = s.head[s.ins_h];\n s.head[s.ins_h] = s.strstart;\n /***/\n /* strstart never exceeds WSIZE-MAX_MATCH, so there are\n * always MIN_MATCH bytes ahead.\n */\n } while (--s.match_length !== 0);\n s.strstart++;\n } else\n {\n s.strstart += s.match_length;\n s.match_length = 0;\n s.ins_h = s.window[s.strstart];\n /* UPDATE_HASH(s, s.ins_h, s.window[s.strstart+1]); */\n s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[s.strstart + 1]) & s.hash_mask;\n\n//#if MIN_MATCH != 3\n// Call UPDATE_HASH() MIN_MATCH-3 more times\n//#endif\n /* If lookahead < MIN_MATCH, ins_h is garbage, but it does not\n * matter since it will be recomputed at next deflate call.\n */\n }\n } else {\n /* No match, output a literal byte */\n //Tracevv((stderr,\"%c\", s.window[s.strstart]));\n /*** _tr_tally_lit(s, s.window[s.strstart], bflush); ***/\n bflush = trees._tr_tally(s, 0, s.window[s.strstart]);\n\n s.lookahead--;\n s.strstart++;\n }\n if (bflush) {\n /*** FLUSH_BLOCK(s, 0); ***/\n flush_block_only(s, false);\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n /***/\n }\n }\n s.insert = ((s.strstart < (MIN_MATCH - 1)) ? s.strstart : MIN_MATCH - 1);\n if (flush === Z_FINISH) {\n /*** FLUSH_BLOCK(s, 1); ***/\n flush_block_only(s, true);\n if (s.strm.avail_out === 0) {\n return BS_FINISH_STARTED;\n }\n /***/\n return BS_FINISH_DONE;\n }\n if (s.last_lit) {\n /*** FLUSH_BLOCK(s, 0); ***/\n flush_block_only(s, false);\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n /***/\n }\n return BS_BLOCK_DONE;\n}\n\n/* ===========================================================================\n * Same as above, but achieves better compression. We use a lazy\n * evaluation for matches: a match is finally adopted only if there is\n * no better match at the next window position.\n */\nfunction deflate_slow(s, flush) {\n var hash_head; /* head of hash chain */\n var bflush; /* set if current block must be flushed */\n\n var max_insert;\n\n /* Process the input block. */\n for (;;) {\n /* Make sure that we always have enough lookahead, except\n * at the end of the input file. We need MAX_MATCH bytes\n * for the next match, plus MIN_MATCH bytes to insert the\n * string following the next match.\n */\n if (s.lookahead < MIN_LOOKAHEAD) {\n fill_window(s);\n if (s.lookahead < MIN_LOOKAHEAD && flush === Z_NO_FLUSH) {\n return BS_NEED_MORE;\n }\n if (s.lookahead === 0) { break; } /* flush the current block */\n }\n\n /* Insert the string window[strstart .. strstart+2] in the\n * dictionary, and set hash_head to the head of the hash chain:\n */\n hash_head = 0/*NIL*/;\n if (s.lookahead >= MIN_MATCH) {\n /*** INSERT_STRING(s, s.strstart, hash_head); ***/\n s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[s.strstart + MIN_MATCH - 1]) & s.hash_mask;\n hash_head = s.prev[s.strstart & s.w_mask] = s.head[s.ins_h];\n s.head[s.ins_h] = s.strstart;\n /***/\n }\n\n /* Find the longest match, discarding those <= prev_length.\n */\n s.prev_length = s.match_length;\n s.prev_match = s.match_start;\n s.match_length = MIN_MATCH - 1;\n\n if (hash_head !== 0/*NIL*/ && s.prev_length < s.max_lazy_match &&\n s.strstart - hash_head <= (s.w_size - MIN_LOOKAHEAD)/*MAX_DIST(s)*/) {\n /* To simplify the code, we prevent matches with the string\n * of window index 0 (in particular we have to avoid a match\n * of the string with itself at the start of the input file).\n */\n s.match_length = longest_match(s, hash_head);\n /* longest_match() sets match_start */\n\n if (s.match_length <= 5 &&\n (s.strategy === Z_FILTERED || (s.match_length === MIN_MATCH && s.strstart - s.match_start > 4096/*TOO_FAR*/))) {\n\n /* If prev_match is also MIN_MATCH, match_start is garbage\n * but we will ignore the current match anyway.\n */\n s.match_length = MIN_MATCH - 1;\n }\n }\n /* If there was a match at the previous step and the current\n * match is not better, output the previous match:\n */\n if (s.prev_length >= MIN_MATCH && s.match_length <= s.prev_length) {\n max_insert = s.strstart + s.lookahead - MIN_MATCH;\n /* Do not insert strings in hash table beyond this. */\n\n //check_match(s, s.strstart-1, s.prev_match, s.prev_length);\n\n /***_tr_tally_dist(s, s.strstart - 1 - s.prev_match,\n s.prev_length - MIN_MATCH, bflush);***/\n bflush = trees._tr_tally(s, s.strstart - 1 - s.prev_match, s.prev_length - MIN_MATCH);\n /* Insert in hash table all strings up to the end of the match.\n * strstart-1 and strstart are already inserted. If there is not\n * enough lookahead, the last two strings are not inserted in\n * the hash table.\n */\n s.lookahead -= s.prev_length - 1;\n s.prev_length -= 2;\n do {\n if (++s.strstart <= max_insert) {\n /*** INSERT_STRING(s, s.strstart, hash_head); ***/\n s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[s.strstart + MIN_MATCH - 1]) & s.hash_mask;\n hash_head = s.prev[s.strstart & s.w_mask] = s.head[s.ins_h];\n s.head[s.ins_h] = s.strstart;\n /***/\n }\n } while (--s.prev_length !== 0);\n s.match_available = 0;\n s.match_length = MIN_MATCH - 1;\n s.strstart++;\n\n if (bflush) {\n /*** FLUSH_BLOCK(s, 0); ***/\n flush_block_only(s, false);\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n /***/\n }\n\n } else if (s.match_available) {\n /* If there was no match at the previous position, output a\n * single literal. If there was a match but the current match\n * is longer, truncate the previous match to a single literal.\n */\n //Tracevv((stderr,\"%c\", s->window[s->strstart-1]));\n /*** _tr_tally_lit(s, s.window[s.strstart-1], bflush); ***/\n bflush = trees._tr_tally(s, 0, s.window[s.strstart - 1]);\n\n if (bflush) {\n /*** FLUSH_BLOCK_ONLY(s, 0) ***/\n flush_block_only(s, false);\n /***/\n }\n s.strstart++;\n s.lookahead--;\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n } else {\n /* There is no previous match to compare with, wait for\n * the next step to decide.\n */\n s.match_available = 1;\n s.strstart++;\n s.lookahead--;\n }\n }\n //Assert (flush != Z_NO_FLUSH, \"no flush?\");\n if (s.match_available) {\n //Tracevv((stderr,\"%c\", s->window[s->strstart-1]));\n /*** _tr_tally_lit(s, s.window[s.strstart-1], bflush); ***/\n bflush = trees._tr_tally(s, 0, s.window[s.strstart - 1]);\n\n s.match_available = 0;\n }\n s.insert = s.strstart < MIN_MATCH - 1 ? s.strstart : MIN_MATCH - 1;\n if (flush === Z_FINISH) {\n /*** FLUSH_BLOCK(s, 1); ***/\n flush_block_only(s, true);\n if (s.strm.avail_out === 0) {\n return BS_FINISH_STARTED;\n }\n /***/\n return BS_FINISH_DONE;\n }\n if (s.last_lit) {\n /*** FLUSH_BLOCK(s, 0); ***/\n flush_block_only(s, false);\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n /***/\n }\n\n return BS_BLOCK_DONE;\n}\n\n\n/* ===========================================================================\n * For Z_RLE, simply look for runs of bytes, generate matches only of distance\n * one. Do not maintain a hash table. (It will be regenerated if this run of\n * deflate switches away from Z_RLE.)\n */\nfunction deflate_rle(s, flush) {\n var bflush; /* set if current block must be flushed */\n var prev; /* byte at distance one to match */\n var scan, strend; /* scan goes up to strend for length of run */\n\n var _win = s.window;\n\n for (;;) {\n /* Make sure that we always have enough lookahead, except\n * at the end of the input file. We need MAX_MATCH bytes\n * for the longest run, plus one for the unrolled loop.\n */\n if (s.lookahead <= MAX_MATCH) {\n fill_window(s);\n if (s.lookahead <= MAX_MATCH && flush === Z_NO_FLUSH) {\n return BS_NEED_MORE;\n }\n if (s.lookahead === 0) { break; } /* flush the current block */\n }\n\n /* See how many times the previous byte repeats */\n s.match_length = 0;\n if (s.lookahead >= MIN_MATCH && s.strstart > 0) {\n scan = s.strstart - 1;\n prev = _win[scan];\n if (prev === _win[++scan] && prev === _win[++scan] && prev === _win[++scan]) {\n strend = s.strstart + MAX_MATCH;\n do {\n /*jshint noempty:false*/\n } while (prev === _win[++scan] && prev === _win[++scan] &&\n prev === _win[++scan] && prev === _win[++scan] &&\n prev === _win[++scan] && prev === _win[++scan] &&\n prev === _win[++scan] && prev === _win[++scan] &&\n scan < strend);\n s.match_length = MAX_MATCH - (strend - scan);\n if (s.match_length > s.lookahead) {\n s.match_length = s.lookahead;\n }\n }\n //Assert(scan <= s->window+(uInt)(s->window_size-1), \"wild scan\");\n }\n\n /* Emit match if have run of MIN_MATCH or longer, else emit literal */\n if (s.match_length >= MIN_MATCH) {\n //check_match(s, s.strstart, s.strstart - 1, s.match_length);\n\n /*** _tr_tally_dist(s, 1, s.match_length - MIN_MATCH, bflush); ***/\n bflush = trees._tr_tally(s, 1, s.match_length - MIN_MATCH);\n\n s.lookahead -= s.match_length;\n s.strstart += s.match_length;\n s.match_length = 0;\n } else {\n /* No match, output a literal byte */\n //Tracevv((stderr,\"%c\", s->window[s->strstart]));\n /*** _tr_tally_lit(s, s.window[s.strstart], bflush); ***/\n bflush = trees._tr_tally(s, 0, s.window[s.strstart]);\n\n s.lookahead--;\n s.strstart++;\n }\n if (bflush) {\n /*** FLUSH_BLOCK(s, 0); ***/\n flush_block_only(s, false);\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n /***/\n }\n }\n s.insert = 0;\n if (flush === Z_FINISH) {\n /*** FLUSH_BLOCK(s, 1); ***/\n flush_block_only(s, true);\n if (s.strm.avail_out === 0) {\n return BS_FINISH_STARTED;\n }\n /***/\n return BS_FINISH_DONE;\n }\n if (s.last_lit) {\n /*** FLUSH_BLOCK(s, 0); ***/\n flush_block_only(s, false);\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n /***/\n }\n return BS_BLOCK_DONE;\n}\n\n/* ===========================================================================\n * For Z_HUFFMAN_ONLY, do not look for matches. Do not maintain a hash table.\n * (It will be regenerated if this run of deflate switches away from Huffman.)\n */\nfunction deflate_huff(s, flush) {\n var bflush; /* set if current block must be flushed */\n\n for (;;) {\n /* Make sure that we have a literal to write. */\n if (s.lookahead === 0) {\n fill_window(s);\n if (s.lookahead === 0) {\n if (flush === Z_NO_FLUSH) {\n return BS_NEED_MORE;\n }\n break; /* flush the current block */\n }\n }\n\n /* Output a literal byte */\n s.match_length = 0;\n //Tracevv((stderr,\"%c\", s->window[s->strstart]));\n /*** _tr_tally_lit(s, s.window[s.strstart], bflush); ***/\n bflush = trees._tr_tally(s, 0, s.window[s.strstart]);\n s.lookahead--;\n s.strstart++;\n if (bflush) {\n /*** FLUSH_BLOCK(s, 0); ***/\n flush_block_only(s, false);\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n /***/\n }\n }\n s.insert = 0;\n if (flush === Z_FINISH) {\n /*** FLUSH_BLOCK(s, 1); ***/\n flush_block_only(s, true);\n if (s.strm.avail_out === 0) {\n return BS_FINISH_STARTED;\n }\n /***/\n return BS_FINISH_DONE;\n }\n if (s.last_lit) {\n /*** FLUSH_BLOCK(s, 0); ***/\n flush_block_only(s, false);\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n /***/\n }\n return BS_BLOCK_DONE;\n}\n\n/* Values for max_lazy_match, good_match and max_chain_length, depending on\n * the desired pack level (0..9). The values given below have been tuned to\n * exclude worst case performance for pathological files. Better values may be\n * found for specific files.\n */\nfunction Config(good_length, max_lazy, nice_length, max_chain, func) {\n this.good_length = good_length;\n this.max_lazy = max_lazy;\n this.nice_length = nice_length;\n this.max_chain = max_chain;\n this.func = func;\n}\n\nvar configuration_table;\n\nconfiguration_table = [\n /* good lazy nice chain */\n new Config(0, 0, 0, 0, deflate_stored), /* 0 store only */\n new Config(4, 4, 8, 4, deflate_fast), /* 1 max speed, no lazy matches */\n new Config(4, 5, 16, 8, deflate_fast), /* 2 */\n new Config(4, 6, 32, 32, deflate_fast), /* 3 */\n\n new Config(4, 4, 16, 16, deflate_slow), /* 4 lazy matches */\n new Config(8, 16, 32, 32, deflate_slow), /* 5 */\n new Config(8, 16, 128, 128, deflate_slow), /* 6 */\n new Config(8, 32, 128, 256, deflate_slow), /* 7 */\n new Config(32, 128, 258, 1024, deflate_slow), /* 8 */\n new Config(32, 258, 258, 4096, deflate_slow) /* 9 max compression */\n];\n\n\n/* ===========================================================================\n * Initialize the \"longest match\" routines for a new zlib stream\n */\nfunction lm_init(s) {\n s.window_size = 2 * s.w_size;\n\n /*** CLEAR_HASH(s); ***/\n zero(s.head); // Fill with NIL (= 0);\n\n /* Set the default configuration parameters:\n */\n s.max_lazy_match = configuration_table[s.level].max_lazy;\n s.good_match = configuration_table[s.level].good_length;\n s.nice_match = configuration_table[s.level].nice_length;\n s.max_chain_length = configuration_table[s.level].max_chain;\n\n s.strstart = 0;\n s.block_start = 0;\n s.lookahead = 0;\n s.insert = 0;\n s.match_length = s.prev_length = MIN_MATCH - 1;\n s.match_available = 0;\n s.ins_h = 0;\n}\n\n\nfunction DeflateState() {\n this.strm = null; /* pointer back to this zlib stream */\n this.status = 0; /* as the name implies */\n this.pending_buf = null; /* output still pending */\n this.pending_buf_size = 0; /* size of pending_buf */\n this.pending_out = 0; /* next pending byte to output to the stream */\n this.pending = 0; /* nb of bytes in the pending buffer */\n this.wrap = 0; /* bit 0 true for zlib, bit 1 true for gzip */\n this.gzhead = null; /* gzip header information to write */\n this.gzindex = 0; /* where in extra, name, or comment */\n this.method = Z_DEFLATED; /* can only be DEFLATED */\n this.last_flush = -1; /* value of flush param for previous deflate call */\n\n this.w_size = 0; /* LZ77 window size (32K by default) */\n this.w_bits = 0; /* log2(w_size) (8..16) */\n this.w_mask = 0; /* w_size - 1 */\n\n this.window = null;\n /* Sliding window. Input bytes are read into the second half of the window,\n * and move to the first half later to keep a dictionary of at least wSize\n * bytes. With this organization, matches are limited to a distance of\n * wSize-MAX_MATCH bytes, but this ensures that IO is always\n * performed with a length multiple of the block size.\n */\n\n this.window_size = 0;\n /* Actual size of window: 2*wSize, except when the user input buffer\n * is directly used as sliding window.\n */\n\n this.prev = null;\n /* Link to older string with same hash index. To limit the size of this\n * array to 64K, this link is maintained only for the last 32K strings.\n * An index in this array is thus a window index modulo 32K.\n */\n\n this.head = null; /* Heads of the hash chains or NIL. */\n\n this.ins_h = 0; /* hash index of string to be inserted */\n this.hash_size = 0; /* number of elements in hash table */\n this.hash_bits = 0; /* log2(hash_size) */\n this.hash_mask = 0; /* hash_size-1 */\n\n this.hash_shift = 0;\n /* Number of bits by which ins_h must be shifted at each input\n * step. It must be such that after MIN_MATCH steps, the oldest\n * byte no longer takes part in the hash key, that is:\n * hash_shift * MIN_MATCH >= hash_bits\n */\n\n this.block_start = 0;\n /* Window position at the beginning of the current output block. Gets\n * negative when the window is moved backwards.\n */\n\n this.match_length = 0; /* length of best match */\n this.prev_match = 0; /* previous match */\n this.match_available = 0; /* set if previous match exists */\n this.strstart = 0; /* start of string to insert */\n this.match_start = 0; /* start of matching string */\n this.lookahead = 0; /* number of valid bytes ahead in window */\n\n this.prev_length = 0;\n /* Length of the best match at previous step. Matches not greater than this\n * are discarded. This is used in the lazy match evaluation.\n */\n\n this.max_chain_length = 0;\n /* To speed up deflation, hash chains are never searched beyond this\n * length. A higher limit improves compression ratio but degrades the\n * speed.\n */\n\n this.max_lazy_match = 0;\n /* Attempt to find a better match only when the current match is strictly\n * smaller than this value. This mechanism is used only for compression\n * levels >= 4.\n */\n // That's alias to max_lazy_match, don't use directly\n //this.max_insert_length = 0;\n /* Insert new strings in the hash table only if the match length is not\n * greater than this length. This saves time but degrades compression.\n * max_insert_length is used only for compression levels <= 3.\n */\n\n this.level = 0; /* compression level (1..9) */\n this.strategy = 0; /* favor or force Huffman coding*/\n\n this.good_match = 0;\n /* Use a faster search when the previous match is longer than this */\n\n this.nice_match = 0; /* Stop searching when current match exceeds this */\n\n /* used by trees.c: */\n\n /* Didn't use ct_data typedef below to suppress compiler warning */\n\n // struct ct_data_s dyn_ltree[HEAP_SIZE]; /* literal and length tree */\n // struct ct_data_s dyn_dtree[2*D_CODES+1]; /* distance tree */\n // struct ct_data_s bl_tree[2*BL_CODES+1]; /* Huffman tree for bit lengths */\n\n // Use flat array of DOUBLE size, with interleaved fata,\n // because JS does not support effective\n this.dyn_ltree = new utils.Buf16(HEAP_SIZE * 2);\n this.dyn_dtree = new utils.Buf16((2 * D_CODES + 1) * 2);\n this.bl_tree = new utils.Buf16((2 * BL_CODES + 1) * 2);\n zero(this.dyn_ltree);\n zero(this.dyn_dtree);\n zero(this.bl_tree);\n\n this.l_desc = null; /* desc. for literal tree */\n this.d_desc = null; /* desc. for distance tree */\n this.bl_desc = null; /* desc. for bit length tree */\n\n //ush bl_count[MAX_BITS+1];\n this.bl_count = new utils.Buf16(MAX_BITS + 1);\n /* number of codes at each bit length for an optimal tree */\n\n //int heap[2*L_CODES+1]; /* heap used to build the Huffman trees */\n this.heap = new utils.Buf16(2 * L_CODES + 1); /* heap used to build the Huffman trees */\n zero(this.heap);\n\n this.heap_len = 0; /* number of elements in the heap */\n this.heap_max = 0; /* element of largest frequency */\n /* The sons of heap[n] are heap[2*n] and heap[2*n+1]. heap[0] is not used.\n * The same heap array is used to build all trees.\n */\n\n this.depth = new utils.Buf16(2 * L_CODES + 1); //uch depth[2*L_CODES+1];\n zero(this.depth);\n /* Depth of each subtree used as tie breaker for trees of equal frequency\n */\n\n this.l_buf = 0; /* buffer index for literals or lengths */\n\n this.lit_bufsize = 0;\n /* Size of match buffer for literals/lengths. There are 4 reasons for\n * limiting lit_bufsize to 64K:\n * - frequencies can be kept in 16 bit counters\n * - if compression is not successful for the first block, all input\n * data is still in the window so we can still emit a stored block even\n * when input comes from standard input. (This can also be done for\n * all blocks if lit_bufsize is not greater than 32K.)\n * - if compression is not successful for a file smaller than 64K, we can\n * even emit a stored file instead of a stored block (saving 5 bytes).\n * This is applicable only for zip (not gzip or zlib).\n * - creating new Huffman trees less frequently may not provide fast\n * adaptation to changes in the input data statistics. (Take for\n * example a binary file with poorly compressible code followed by\n * a highly compressible string table.) Smaller buffer sizes give\n * fast adaptation but have of course the overhead of transmitting\n * trees more frequently.\n * - I can't count above 4\n */\n\n this.last_lit = 0; /* running index in l_buf */\n\n this.d_buf = 0;\n /* Buffer index for distances. To simplify the code, d_buf and l_buf have\n * the same number of elements. To use different lengths, an extra flag\n * array would be necessary.\n */\n\n this.opt_len = 0; /* bit length of current block with optimal trees */\n this.static_len = 0; /* bit length of current block with static trees */\n this.matches = 0; /* number of string matches in current block */\n this.insert = 0; /* bytes at end of window left to insert */\n\n\n this.bi_buf = 0;\n /* Output buffer. bits are inserted starting at the bottom (least\n * significant bits).\n */\n this.bi_valid = 0;\n /* Number of valid bits in bi_buf. All bits above the last valid bit\n * are always zero.\n */\n\n // Used for window memory init. We safely ignore it for JS. That makes\n // sense only for pointers and memory check tools.\n //this.high_water = 0;\n /* High water mark offset in window for initialized bytes -- bytes above\n * this are set to zero in order to avoid memory check warnings when\n * longest match routines access bytes past the input. This is then\n * updated to the new high water mark.\n */\n}\n\n\nfunction deflateResetKeep(strm) {\n var s;\n\n if (!strm || !strm.state) {\n return err(strm, Z_STREAM_ERROR);\n }\n\n strm.total_in = strm.total_out = 0;\n strm.data_type = Z_UNKNOWN;\n\n s = strm.state;\n s.pending = 0;\n s.pending_out = 0;\n\n if (s.wrap < 0) {\n s.wrap = -s.wrap;\n /* was made negative by deflate(..., Z_FINISH); */\n }\n s.status = (s.wrap ? INIT_STATE : BUSY_STATE);\n strm.adler = (s.wrap === 2) ?\n 0 // crc32(0, Z_NULL, 0)\n :\n 1; // adler32(0, Z_NULL, 0)\n s.last_flush = Z_NO_FLUSH;\n trees._tr_init(s);\n return Z_OK;\n}\n\n\nfunction deflateReset(strm) {\n var ret = deflateResetKeep(strm);\n if (ret === Z_OK) {\n lm_init(strm.state);\n }\n return ret;\n}\n\n\nfunction deflateSetHeader(strm, head) {\n if (!strm || !strm.state) { return Z_STREAM_ERROR; }\n if (strm.state.wrap !== 2) { return Z_STREAM_ERROR; }\n strm.state.gzhead = head;\n return Z_OK;\n}\n\n\nfunction deflateInit2(strm, level, method, windowBits, memLevel, strategy) {\n if (!strm) { // === Z_NULL\n return Z_STREAM_ERROR;\n }\n var wrap = 1;\n\n if (level === Z_DEFAULT_COMPRESSION) {\n level = 6;\n }\n\n if (windowBits < 0) { /* suppress zlib wrapper */\n wrap = 0;\n windowBits = -windowBits;\n }\n\n else if (windowBits > 15) {\n wrap = 2; /* write gzip wrapper instead */\n windowBits -= 16;\n }\n\n\n if (memLevel < 1 || memLevel > MAX_MEM_LEVEL || method !== Z_DEFLATED ||\n windowBits < 8 || windowBits > 15 || level < 0 || level > 9 ||\n strategy < 0 || strategy > Z_FIXED) {\n return err(strm, Z_STREAM_ERROR);\n }\n\n\n if (windowBits === 8) {\n windowBits = 9;\n }\n /* until 256-byte window bug fixed */\n\n var s = new DeflateState();\n\n strm.state = s;\n s.strm = strm;\n\n s.wrap = wrap;\n s.gzhead = null;\n s.w_bits = windowBits;\n s.w_size = 1 << s.w_bits;\n s.w_mask = s.w_size - 1;\n\n s.hash_bits = memLevel + 7;\n s.hash_size = 1 << s.hash_bits;\n s.hash_mask = s.hash_size - 1;\n s.hash_shift = ~~((s.hash_bits + MIN_MATCH - 1) / MIN_MATCH);\n\n s.window = new utils.Buf8(s.w_size * 2);\n s.head = new utils.Buf16(s.hash_size);\n s.prev = new utils.Buf16(s.w_size);\n\n // Don't need mem init magic for JS.\n //s.high_water = 0; /* nothing written to s->window yet */\n\n s.lit_bufsize = 1 << (memLevel + 6); /* 16K elements by default */\n\n s.pending_buf_size = s.lit_bufsize * 4;\n s.pending_buf = new utils.Buf8(s.pending_buf_size);\n\n s.d_buf = s.lit_bufsize >> 1;\n s.l_buf = (1 + 2) * s.lit_bufsize;\n\n s.level = level;\n s.strategy = strategy;\n s.method = method;\n\n return deflateReset(strm);\n}\n\nfunction deflateInit(strm, level) {\n return deflateInit2(strm, level, Z_DEFLATED, MAX_WBITS, DEF_MEM_LEVEL, Z_DEFAULT_STRATEGY);\n}\n\n\nfunction deflate(strm, flush) {\n var old_flush, s;\n var beg, val; // for gzip header write only\n\n if (!strm || !strm.state ||\n flush > Z_BLOCK || flush < 0) {\n return strm ? err(strm, Z_STREAM_ERROR) : Z_STREAM_ERROR;\n }\n\n s = strm.state;\n\n if (!strm.output ||\n (!strm.input && strm.avail_in !== 0) ||\n (s.status === FINISH_STATE && flush !== Z_FINISH)) {\n return err(strm, (strm.avail_out === 0) ? Z_BUF_ERROR : Z_STREAM_ERROR);\n }\n\n s.strm = strm; /* just in case */\n old_flush = s.last_flush;\n s.last_flush = flush;\n\n /* Write the header */\n if (s.status === INIT_STATE) {\n\n if (s.wrap === 2) { // GZIP header\n strm.adler = 0; //crc32(0L, Z_NULL, 0);\n put_byte(s, 31);\n put_byte(s, 139);\n put_byte(s, 8);\n if (!s.gzhead) { // s->gzhead == Z_NULL\n put_byte(s, 0);\n put_byte(s, 0);\n put_byte(s, 0);\n put_byte(s, 0);\n put_byte(s, 0);\n put_byte(s, s.level === 9 ? 2 :\n (s.strategy >= Z_HUFFMAN_ONLY || s.level < 2 ?\n 4 : 0));\n put_byte(s, OS_CODE);\n s.status = BUSY_STATE;\n }\n else {\n put_byte(s, (s.gzhead.text ? 1 : 0) +\n (s.gzhead.hcrc ? 2 : 0) +\n (!s.gzhead.extra ? 0 : 4) +\n (!s.gzhead.name ? 0 : 8) +\n (!s.gzhead.comment ? 0 : 16)\n );\n put_byte(s, s.gzhead.time & 0xff);\n put_byte(s, (s.gzhead.time >> 8) & 0xff);\n put_byte(s, (s.gzhead.time >> 16) & 0xff);\n put_byte(s, (s.gzhead.time >> 24) & 0xff);\n put_byte(s, s.level === 9 ? 2 :\n (s.strategy >= Z_HUFFMAN_ONLY || s.level < 2 ?\n 4 : 0));\n put_byte(s, s.gzhead.os & 0xff);\n if (s.gzhead.extra && s.gzhead.extra.length) {\n put_byte(s, s.gzhead.extra.length & 0xff);\n put_byte(s, (s.gzhead.extra.length >> 8) & 0xff);\n }\n if (s.gzhead.hcrc) {\n strm.adler = crc32(strm.adler, s.pending_buf, s.pending, 0);\n }\n s.gzindex = 0;\n s.status = EXTRA_STATE;\n }\n }\n else // DEFLATE header\n {\n var header = (Z_DEFLATED + ((s.w_bits - 8) << 4)) << 8;\n var level_flags = -1;\n\n if (s.strategy >= Z_HUFFMAN_ONLY || s.level < 2) {\n level_flags = 0;\n } else if (s.level < 6) {\n level_flags = 1;\n } else if (s.level === 6) {\n level_flags = 2;\n } else {\n level_flags = 3;\n }\n header |= (level_flags << 6);\n if (s.strstart !== 0) { header |= PRESET_DICT; }\n header += 31 - (header % 31);\n\n s.status = BUSY_STATE;\n putShortMSB(s, header);\n\n /* Save the adler32 of the preset dictionary: */\n if (s.strstart !== 0) {\n putShortMSB(s, strm.adler >>> 16);\n putShortMSB(s, strm.adler & 0xffff);\n }\n strm.adler = 1; // adler32(0L, Z_NULL, 0);\n }\n }\n\n//#ifdef GZIP\n if (s.status === EXTRA_STATE) {\n if (s.gzhead.extra/* != Z_NULL*/) {\n beg = s.pending; /* start of bytes to update crc */\n\n while (s.gzindex < (s.gzhead.extra.length & 0xffff)) {\n if (s.pending === s.pending_buf_size) {\n if (s.gzhead.hcrc && s.pending > beg) {\n strm.adler = crc32(strm.adler, s.pending_buf, s.pending - beg, beg);\n }\n flush_pending(strm);\n beg = s.pending;\n if (s.pending === s.pending_buf_size) {\n break;\n }\n }\n put_byte(s, s.gzhead.extra[s.gzindex] & 0xff);\n s.gzindex++;\n }\n if (s.gzhead.hcrc && s.pending > beg) {\n strm.adler = crc32(strm.adler, s.pending_buf, s.pending - beg, beg);\n }\n if (s.gzindex === s.gzhead.extra.length) {\n s.gzindex = 0;\n s.status = NAME_STATE;\n }\n }\n else {\n s.status = NAME_STATE;\n }\n }\n if (s.status === NAME_STATE) {\n if (s.gzhead.name/* != Z_NULL*/) {\n beg = s.pending; /* start of bytes to update crc */\n //int val;\n\n do {\n if (s.pending === s.pending_buf_size) {\n if (s.gzhead.hcrc && s.pending > beg) {\n strm.adler = crc32(strm.adler, s.pending_buf, s.pending - beg, beg);\n }\n flush_pending(strm);\n beg = s.pending;\n if (s.pending === s.pending_buf_size) {\n val = 1;\n break;\n }\n }\n // JS specific: little magic to add zero terminator to end of string\n if (s.gzindex < s.gzhead.name.length) {\n val = s.gzhead.name.charCodeAt(s.gzindex++) & 0xff;\n } else {\n val = 0;\n }\n put_byte(s, val);\n } while (val !== 0);\n\n if (s.gzhead.hcrc && s.pending > beg) {\n strm.adler = crc32(strm.adler, s.pending_buf, s.pending - beg, beg);\n }\n if (val === 0) {\n s.gzindex = 0;\n s.status = COMMENT_STATE;\n }\n }\n else {\n s.status = COMMENT_STATE;\n }\n }\n if (s.status === COMMENT_STATE) {\n if (s.gzhead.comment/* != Z_NULL*/) {\n beg = s.pending; /* start of bytes to update crc */\n //int val;\n\n do {\n if (s.pending === s.pending_buf_size) {\n if (s.gzhead.hcrc && s.pending > beg) {\n strm.adler = crc32(strm.adler, s.pending_buf, s.pending - beg, beg);\n }\n flush_pending(strm);\n beg = s.pending;\n if (s.pending === s.pending_buf_size) {\n val = 1;\n break;\n }\n }\n // JS specific: little magic to add zero terminator to end of string\n if (s.gzindex < s.gzhead.comment.length) {\n val = s.gzhead.comment.charCodeAt(s.gzindex++) & 0xff;\n } else {\n val = 0;\n }\n put_byte(s, val);\n } while (val !== 0);\n\n if (s.gzhead.hcrc && s.pending > beg) {\n strm.adler = crc32(strm.adler, s.pending_buf, s.pending - beg, beg);\n }\n if (val === 0) {\n s.status = HCRC_STATE;\n }\n }\n else {\n s.status = HCRC_STATE;\n }\n }\n if (s.status === HCRC_STATE) {\n if (s.gzhead.hcrc) {\n if (s.pending + 2 > s.pending_buf_size) {\n flush_pending(strm);\n }\n if (s.pending + 2 <= s.pending_buf_size) {\n put_byte(s, strm.adler & 0xff);\n put_byte(s, (strm.adler >> 8) & 0xff);\n strm.adler = 0; //crc32(0L, Z_NULL, 0);\n s.status = BUSY_STATE;\n }\n }\n else {\n s.status = BUSY_STATE;\n }\n }\n//#endif\n\n /* Flush as much pending output as possible */\n if (s.pending !== 0) {\n flush_pending(strm);\n if (strm.avail_out === 0) {\n /* Since avail_out is 0, deflate will be called again with\n * more output space, but possibly with both pending and\n * avail_in equal to zero. There won't be anything to do,\n * but this is not an error situation so make sure we\n * return OK instead of BUF_ERROR at next call of deflate:\n */\n s.last_flush = -1;\n return Z_OK;\n }\n\n /* Make sure there is something to do and avoid duplicate consecutive\n * flushes. For repeated and useless calls with Z_FINISH, we keep\n * returning Z_STREAM_END instead of Z_BUF_ERROR.\n */\n } else if (strm.avail_in === 0 && rank(flush) <= rank(old_flush) &&\n flush !== Z_FINISH) {\n return err(strm, Z_BUF_ERROR);\n }\n\n /* User must not provide more input after the first FINISH: */\n if (s.status === FINISH_STATE && strm.avail_in !== 0) {\n return err(strm, Z_BUF_ERROR);\n }\n\n /* Start a new block or continue the current one.\n */\n if (strm.avail_in !== 0 || s.lookahead !== 0 ||\n (flush !== Z_NO_FLUSH && s.status !== FINISH_STATE)) {\n var bstate = (s.strategy === Z_HUFFMAN_ONLY) ? deflate_huff(s, flush) :\n (s.strategy === Z_RLE ? deflate_rle(s, flush) :\n configuration_table[s.level].func(s, flush));\n\n if (bstate === BS_FINISH_STARTED || bstate === BS_FINISH_DONE) {\n s.status = FINISH_STATE;\n }\n if (bstate === BS_NEED_MORE || bstate === BS_FINISH_STARTED) {\n if (strm.avail_out === 0) {\n s.last_flush = -1;\n /* avoid BUF_ERROR next call, see above */\n }\n return Z_OK;\n /* If flush != Z_NO_FLUSH && avail_out == 0, the next call\n * of deflate should use the same flush parameter to make sure\n * that the flush is complete. So we don't have to output an\n * empty block here, this will be done at next call. This also\n * ensures that for a very small output buffer, we emit at most\n * one empty block.\n */\n }\n if (bstate === BS_BLOCK_DONE) {\n if (flush === Z_PARTIAL_FLUSH) {\n trees._tr_align(s);\n }\n else if (flush !== Z_BLOCK) { /* FULL_FLUSH or SYNC_FLUSH */\n\n trees._tr_stored_block(s, 0, 0, false);\n /* For a full flush, this empty block will be recognized\n * as a special marker by inflate_sync().\n */\n if (flush === Z_FULL_FLUSH) {\n /*** CLEAR_HASH(s); ***/ /* forget history */\n zero(s.head); // Fill with NIL (= 0);\n\n if (s.lookahead === 0) {\n s.strstart = 0;\n s.block_start = 0;\n s.insert = 0;\n }\n }\n }\n flush_pending(strm);\n if (strm.avail_out === 0) {\n s.last_flush = -1; /* avoid BUF_ERROR at next call, see above */\n return Z_OK;\n }\n }\n }\n //Assert(strm->avail_out > 0, \"bug2\");\n //if (strm.avail_out <= 0) { throw new Error(\"bug2\");}\n\n if (flush !== Z_FINISH) { return Z_OK; }\n if (s.wrap <= 0) { return Z_STREAM_END; }\n\n /* Write the trailer */\n if (s.wrap === 2) {\n put_byte(s, strm.adler & 0xff);\n put_byte(s, (strm.adler >> 8) & 0xff);\n put_byte(s, (strm.adler >> 16) & 0xff);\n put_byte(s, (strm.adler >> 24) & 0xff);\n put_byte(s, strm.total_in & 0xff);\n put_byte(s, (strm.total_in >> 8) & 0xff);\n put_byte(s, (strm.total_in >> 16) & 0xff);\n put_byte(s, (strm.total_in >> 24) & 0xff);\n }\n else\n {\n putShortMSB(s, strm.adler >>> 16);\n putShortMSB(s, strm.adler & 0xffff);\n }\n\n flush_pending(strm);\n /* If avail_out is zero, the application will call deflate again\n * to flush the rest.\n */\n if (s.wrap > 0) { s.wrap = -s.wrap; }\n /* write the trailer only once! */\n return s.pending !== 0 ? Z_OK : Z_STREAM_END;\n}\n\nfunction deflateEnd(strm) {\n var status;\n\n if (!strm/*== Z_NULL*/ || !strm.state/*== Z_NULL*/) {\n return Z_STREAM_ERROR;\n }\n\n status = strm.state.status;\n if (status !== INIT_STATE &&\n status !== EXTRA_STATE &&\n status !== NAME_STATE &&\n status !== COMMENT_STATE &&\n status !== HCRC_STATE &&\n status !== BUSY_STATE &&\n status !== FINISH_STATE\n ) {\n return err(strm, Z_STREAM_ERROR);\n }\n\n strm.state = null;\n\n return status === BUSY_STATE ? err(strm, Z_DATA_ERROR) : Z_OK;\n}\n\n\n/* =========================================================================\n * Initializes the compression dictionary from the given byte\n * sequence without producing any compressed output.\n */\nfunction deflateSetDictionary(strm, dictionary) {\n var dictLength = dictionary.length;\n\n var s;\n var str, n;\n var wrap;\n var avail;\n var next;\n var input;\n var tmpDict;\n\n if (!strm/*== Z_NULL*/ || !strm.state/*== Z_NULL*/) {\n return Z_STREAM_ERROR;\n }\n\n s = strm.state;\n wrap = s.wrap;\n\n if (wrap === 2 || (wrap === 1 && s.status !== INIT_STATE) || s.lookahead) {\n return Z_STREAM_ERROR;\n }\n\n /* when using zlib wrappers, compute Adler-32 for provided dictionary */\n if (wrap === 1) {\n /* adler32(strm->adler, dictionary, dictLength); */\n strm.adler = adler32(strm.adler, dictionary, dictLength, 0);\n }\n\n s.wrap = 0; /* avoid computing Adler-32 in read_buf */\n\n /* if dictionary would fill window, just replace the history */\n if (dictLength >= s.w_size) {\n if (wrap === 0) { /* already empty otherwise */\n /*** CLEAR_HASH(s); ***/\n zero(s.head); // Fill with NIL (= 0);\n s.strstart = 0;\n s.block_start = 0;\n s.insert = 0;\n }\n /* use the tail */\n // dictionary = dictionary.slice(dictLength - s.w_size);\n tmpDict = new utils.Buf8(s.w_size);\n utils.arraySet(tmpDict, dictionary, dictLength - s.w_size, s.w_size, 0);\n dictionary = tmpDict;\n dictLength = s.w_size;\n }\n /* insert dictionary into window and hash */\n avail = strm.avail_in;\n next = strm.next_in;\n input = strm.input;\n strm.avail_in = dictLength;\n strm.next_in = 0;\n strm.input = dictionary;\n fill_window(s);\n while (s.lookahead >= MIN_MATCH) {\n str = s.strstart;\n n = s.lookahead - (MIN_MATCH - 1);\n do {\n /* UPDATE_HASH(s, s->ins_h, s->window[str + MIN_MATCH-1]); */\n s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[str + MIN_MATCH - 1]) & s.hash_mask;\n\n s.prev[str & s.w_mask] = s.head[s.ins_h];\n\n s.head[s.ins_h] = str;\n str++;\n } while (--n);\n s.strstart = str;\n s.lookahead = MIN_MATCH - 1;\n fill_window(s);\n }\n s.strstart += s.lookahead;\n s.block_start = s.strstart;\n s.insert = s.lookahead;\n s.lookahead = 0;\n s.match_length = s.prev_length = MIN_MATCH - 1;\n s.match_available = 0;\n strm.next_in = next;\n strm.input = input;\n strm.avail_in = avail;\n s.wrap = wrap;\n return Z_OK;\n}\n\n\nexports.deflateInit = deflateInit;\nexports.deflateInit2 = deflateInit2;\nexports.deflateReset = deflateReset;\nexports.deflateResetKeep = deflateResetKeep;\nexports.deflateSetHeader = deflateSetHeader;\nexports.deflate = deflate;\nexports.deflateEnd = deflateEnd;\nexports.deflateSetDictionary = deflateSetDictionary;\nexports.deflateInfo = 'pako deflate (from Nodeca project)';\n\n/* Not implemented\nexports.deflateBound = deflateBound;\nexports.deflateCopy = deflateCopy;\nexports.deflateParams = deflateParams;\nexports.deflatePending = deflatePending;\nexports.deflatePrime = deflatePrime;\nexports.deflateTune = deflateTune;\n*/\n","'use strict';\n\n\nfunction GZheader() {\n /* true if compressed data believed to be text */\n this.text = 0;\n /* modification time */\n this.time = 0;\n /* extra flags (not used when writing a gzip file) */\n this.xflags = 0;\n /* operating system */\n this.os = 0;\n /* pointer to extra field or Z_NULL if none */\n this.extra = null;\n /* extra field length (valid if extra != Z_NULL) */\n this.extra_len = 0; // Actually, we don't need it in JS,\n // but leave for few code modifications\n\n //\n // Setup limits is not necessary because in js we should not preallocate memory\n // for inflate use constant limit in 65536 bytes\n //\n\n /* space at extra (only when reading header) */\n // this.extra_max = 0;\n /* pointer to zero-terminated file name or Z_NULL */\n this.name = '';\n /* space at name (only when reading header) */\n // this.name_max = 0;\n /* pointer to zero-terminated comment or Z_NULL */\n this.comment = '';\n /* space at comment (only when reading header) */\n // this.comm_max = 0;\n /* true if there was or will be a header crc */\n this.hcrc = 0;\n /* true when done reading gzip header (not used when writing a gzip file) */\n this.done = false;\n}\n\nmodule.exports = GZheader;\n","'use strict';\n\n// See state defs from inflate.js\nvar BAD = 30; /* got a data error -- remain here until reset */\nvar TYPE = 12; /* i: waiting for type bits, including last-flag bit */\n\n/*\n Decode literal, length, and distance codes and write out the resulting\n literal and match bytes until either not enough input or output is\n available, an end-of-block is encountered, or a data error is encountered.\n When large enough input and output buffers are supplied to inflate(), for\n example, a 16K input buffer and a 64K output buffer, more than 95% of the\n inflate execution time is spent in this routine.\n\n Entry assumptions:\n\n state.mode === LEN\n strm.avail_in >= 6\n strm.avail_out >= 258\n start >= strm.avail_out\n state.bits < 8\n\n On return, state.mode is one of:\n\n LEN -- ran out of enough output space or enough available input\n TYPE -- reached end of block code, inflate() to interpret next block\n BAD -- error in block data\n\n Notes:\n\n - The maximum input bits used by a length/distance pair is 15 bits for the\n length code, 5 bits for the length extra, 15 bits for the distance code,\n and 13 bits for the distance extra. This totals 48 bits, or six bytes.\n Therefore if strm.avail_in >= 6, then there is enough input to avoid\n checking for available input while decoding.\n\n - The maximum bytes that a single length/distance pair can output is 258\n bytes, which is the maximum length that can be coded. inflate_fast()\n requires strm.avail_out >= 258 for each loop to avoid checking for\n output space.\n */\nmodule.exports = function inflate_fast(strm, start) {\n var state;\n var _in; /* local strm.input */\n var last; /* have enough input while in < last */\n var _out; /* local strm.output */\n var beg; /* inflate()'s initial strm.output */\n var end; /* while out < end, enough space available */\n//#ifdef INFLATE_STRICT\n var dmax; /* maximum distance from zlib header */\n//#endif\n var wsize; /* window size or zero if not using window */\n var whave; /* valid bytes in the window */\n var wnext; /* window write index */\n // Use `s_window` instead `window`, avoid conflict with instrumentation tools\n var s_window; /* allocated sliding window, if wsize != 0 */\n var hold; /* local strm.hold */\n var bits; /* local strm.bits */\n var lcode; /* local strm.lencode */\n var dcode; /* local strm.distcode */\n var lmask; /* mask for first level of length codes */\n var dmask; /* mask for first level of distance codes */\n var here; /* retrieved table entry */\n var op; /* code bits, operation, extra bits, or */\n /* window position, window bytes to copy */\n var len; /* match length, unused bytes */\n var dist; /* match distance */\n var from; /* where to copy match from */\n var from_source;\n\n\n var input, output; // JS specific, because we have no pointers\n\n /* copy state to local variables */\n state = strm.state;\n //here = state.here;\n _in = strm.next_in;\n input = strm.input;\n last = _in + (strm.avail_in - 5);\n _out = strm.next_out;\n output = strm.output;\n beg = _out - (start - strm.avail_out);\n end = _out + (strm.avail_out - 257);\n//#ifdef INFLATE_STRICT\n dmax = state.dmax;\n//#endif\n wsize = state.wsize;\n whave = state.whave;\n wnext = state.wnext;\n s_window = state.window;\n hold = state.hold;\n bits = state.bits;\n lcode = state.lencode;\n dcode = state.distcode;\n lmask = (1 << state.lenbits) - 1;\n dmask = (1 << state.distbits) - 1;\n\n\n /* decode literals and length/distances until end-of-block or not enough\n input data or output space */\n\n top:\n do {\n if (bits < 15) {\n hold += input[_in++] << bits;\n bits += 8;\n hold += input[_in++] << bits;\n bits += 8;\n }\n\n here = lcode[hold & lmask];\n\n dolen:\n for (;;) { // Goto emulation\n op = here >>> 24/*here.bits*/;\n hold >>>= op;\n bits -= op;\n op = (here >>> 16) & 0xff/*here.op*/;\n if (op === 0) { /* literal */\n //Tracevv((stderr, here.val >= 0x20 && here.val < 0x7f ?\n // \"inflate: literal '%c'\\n\" :\n // \"inflate: literal 0x%02x\\n\", here.val));\n output[_out++] = here & 0xffff/*here.val*/;\n }\n else if (op & 16) { /* length base */\n len = here & 0xffff/*here.val*/;\n op &= 15; /* number of extra bits */\n if (op) {\n if (bits < op) {\n hold += input[_in++] << bits;\n bits += 8;\n }\n len += hold & ((1 << op) - 1);\n hold >>>= op;\n bits -= op;\n }\n //Tracevv((stderr, \"inflate: length %u\\n\", len));\n if (bits < 15) {\n hold += input[_in++] << bits;\n bits += 8;\n hold += input[_in++] << bits;\n bits += 8;\n }\n here = dcode[hold & dmask];\n\n dodist:\n for (;;) { // goto emulation\n op = here >>> 24/*here.bits*/;\n hold >>>= op;\n bits -= op;\n op = (here >>> 16) & 0xff/*here.op*/;\n\n if (op & 16) { /* distance base */\n dist = here & 0xffff/*here.val*/;\n op &= 15; /* number of extra bits */\n if (bits < op) {\n hold += input[_in++] << bits;\n bits += 8;\n if (bits < op) {\n hold += input[_in++] << bits;\n bits += 8;\n }\n }\n dist += hold & ((1 << op) - 1);\n//#ifdef INFLATE_STRICT\n if (dist > dmax) {\n strm.msg = 'invalid distance too far back';\n state.mode = BAD;\n break top;\n }\n//#endif\n hold >>>= op;\n bits -= op;\n //Tracevv((stderr, \"inflate: distance %u\\n\", dist));\n op = _out - beg; /* max distance in output */\n if (dist > op) { /* see if copy from window */\n op = dist - op; /* distance back in window */\n if (op > whave) {\n if (state.sane) {\n strm.msg = 'invalid distance too far back';\n state.mode = BAD;\n break top;\n }\n\n// (!) This block is disabled in zlib defailts,\n// don't enable it for binary compatibility\n//#ifdef INFLATE_ALLOW_INVALID_DISTANCE_TOOFAR_ARRR\n// if (len <= op - whave) {\n// do {\n// output[_out++] = 0;\n// } while (--len);\n// continue top;\n// }\n// len -= op - whave;\n// do {\n// output[_out++] = 0;\n// } while (--op > whave);\n// if (op === 0) {\n// from = _out - dist;\n// do {\n// output[_out++] = output[from++];\n// } while (--len);\n// continue top;\n// }\n//#endif\n }\n from = 0; // window index\n from_source = s_window;\n if (wnext === 0) { /* very common case */\n from += wsize - op;\n if (op < len) { /* some from window */\n len -= op;\n do {\n output[_out++] = s_window[from++];\n } while (--op);\n from = _out - dist; /* rest from output */\n from_source = output;\n }\n }\n else if (wnext < op) { /* wrap around window */\n from += wsize + wnext - op;\n op -= wnext;\n if (op < len) { /* some from end of window */\n len -= op;\n do {\n output[_out++] = s_window[from++];\n } while (--op);\n from = 0;\n if (wnext < len) { /* some from start of window */\n op = wnext;\n len -= op;\n do {\n output[_out++] = s_window[from++];\n } while (--op);\n from = _out - dist; /* rest from output */\n from_source = output;\n }\n }\n }\n else { /* contiguous in window */\n from += wnext - op;\n if (op < len) { /* some from window */\n len -= op;\n do {\n output[_out++] = s_window[from++];\n } while (--op);\n from = _out - dist; /* rest from output */\n from_source = output;\n }\n }\n while (len > 2) {\n output[_out++] = from_source[from++];\n output[_out++] = from_source[from++];\n output[_out++] = from_source[from++];\n len -= 3;\n }\n if (len) {\n output[_out++] = from_source[from++];\n if (len > 1) {\n output[_out++] = from_source[from++];\n }\n }\n }\n else {\n from = _out - dist; /* copy direct from output */\n do { /* minimum length is three */\n output[_out++] = output[from++];\n output[_out++] = output[from++];\n output[_out++] = output[from++];\n len -= 3;\n } while (len > 2);\n if (len) {\n output[_out++] = output[from++];\n if (len > 1) {\n output[_out++] = output[from++];\n }\n }\n }\n }\n else if ((op & 64) === 0) { /* 2nd level distance code */\n here = dcode[(here & 0xffff)/*here.val*/ + (hold & ((1 << op) - 1))];\n continue dodist;\n }\n else {\n strm.msg = 'invalid distance code';\n state.mode = BAD;\n break top;\n }\n\n break; // need to emulate goto via \"continue\"\n }\n }\n else if ((op & 64) === 0) { /* 2nd level length code */\n here = lcode[(here & 0xffff)/*here.val*/ + (hold & ((1 << op) - 1))];\n continue dolen;\n }\n else if (op & 32) { /* end-of-block */\n //Tracevv((stderr, \"inflate: end of block\\n\"));\n state.mode = TYPE;\n break top;\n }\n else {\n strm.msg = 'invalid literal/length code';\n state.mode = BAD;\n break top;\n }\n\n break; // need to emulate goto via \"continue\"\n }\n } while (_in < last && _out < end);\n\n /* return unused bytes (on entry, bits < 8, so in won't go too far back) */\n len = bits >> 3;\n _in -= len;\n bits -= len << 3;\n hold &= (1 << bits) - 1;\n\n /* update state and return */\n strm.next_in = _in;\n strm.next_out = _out;\n strm.avail_in = (_in < last ? 5 + (last - _in) : 5 - (_in - last));\n strm.avail_out = (_out < end ? 257 + (end - _out) : 257 - (_out - end));\n state.hold = hold;\n state.bits = bits;\n return;\n};\n","'use strict';\n\n\nvar utils = require('../utils/common');\nvar adler32 = require('./adler32');\nvar crc32 = require('./crc32');\nvar inflate_fast = require('./inffast');\nvar inflate_table = require('./inftrees');\n\nvar CODES = 0;\nvar LENS = 1;\nvar DISTS = 2;\n\n/* Public constants ==========================================================*/\n/* ===========================================================================*/\n\n\n/* Allowed flush values; see deflate() and inflate() below for details */\n//var Z_NO_FLUSH = 0;\n//var Z_PARTIAL_FLUSH = 1;\n//var Z_SYNC_FLUSH = 2;\n//var Z_FULL_FLUSH = 3;\nvar Z_FINISH = 4;\nvar Z_BLOCK = 5;\nvar Z_TREES = 6;\n\n\n/* Return codes for the compression/decompression functions. Negative values\n * are errors, positive values are used for special but normal events.\n */\nvar Z_OK = 0;\nvar Z_STREAM_END = 1;\nvar Z_NEED_DICT = 2;\n//var Z_ERRNO = -1;\nvar Z_STREAM_ERROR = -2;\nvar Z_DATA_ERROR = -3;\nvar Z_MEM_ERROR = -4;\nvar Z_BUF_ERROR = -5;\n//var Z_VERSION_ERROR = -6;\n\n/* The deflate compression method */\nvar Z_DEFLATED = 8;\n\n\n/* STATES ====================================================================*/\n/* ===========================================================================*/\n\n\nvar HEAD = 1; /* i: waiting for magic header */\nvar FLAGS = 2; /* i: waiting for method and flags (gzip) */\nvar TIME = 3; /* i: waiting for modification time (gzip) */\nvar OS = 4; /* i: waiting for extra flags and operating system (gzip) */\nvar EXLEN = 5; /* i: waiting for extra length (gzip) */\nvar EXTRA = 6; /* i: waiting for extra bytes (gzip) */\nvar NAME = 7; /* i: waiting for end of file name (gzip) */\nvar COMMENT = 8; /* i: waiting for end of comment (gzip) */\nvar HCRC = 9; /* i: waiting for header crc (gzip) */\nvar DICTID = 10; /* i: waiting for dictionary check value */\nvar DICT = 11; /* waiting for inflateSetDictionary() call */\nvar TYPE = 12; /* i: waiting for type bits, including last-flag bit */\nvar TYPEDO = 13; /* i: same, but skip check to exit inflate on new block */\nvar STORED = 14; /* i: waiting for stored size (length and complement) */\nvar COPY_ = 15; /* i/o: same as COPY below, but only first time in */\nvar COPY = 16; /* i/o: waiting for input or output to copy stored block */\nvar TABLE = 17; /* i: waiting for dynamic block table lengths */\nvar LENLENS = 18; /* i: waiting for code length code lengths */\nvar CODELENS = 19; /* i: waiting for length/lit and distance code lengths */\nvar LEN_ = 20; /* i: same as LEN below, but only first time in */\nvar LEN = 21; /* i: waiting for length/lit/eob code */\nvar LENEXT = 22; /* i: waiting for length extra bits */\nvar DIST = 23; /* i: waiting for distance code */\nvar DISTEXT = 24; /* i: waiting for distance extra bits */\nvar MATCH = 25; /* o: waiting for output space to copy string */\nvar LIT = 26; /* o: waiting for output space to write literal */\nvar CHECK = 27; /* i: waiting for 32-bit check value */\nvar LENGTH = 28; /* i: waiting for 32-bit length (gzip) */\nvar DONE = 29; /* finished check, done -- remain here until reset */\nvar BAD = 30; /* got a data error -- remain here until reset */\nvar MEM = 31; /* got an inflate() memory error -- remain here until reset */\nvar SYNC = 32; /* looking for synchronization bytes to restart inflate() */\n\n/* ===========================================================================*/\n\n\n\nvar ENOUGH_LENS = 852;\nvar ENOUGH_DISTS = 592;\n//var ENOUGH = (ENOUGH_LENS+ENOUGH_DISTS);\n\nvar MAX_WBITS = 15;\n/* 32K LZ77 window */\nvar DEF_WBITS = MAX_WBITS;\n\n\nfunction zswap32(q) {\n return (((q >>> 24) & 0xff) +\n ((q >>> 8) & 0xff00) +\n ((q & 0xff00) << 8) +\n ((q & 0xff) << 24));\n}\n\n\nfunction InflateState() {\n this.mode = 0; /* current inflate mode */\n this.last = false; /* true if processing last block */\n this.wrap = 0; /* bit 0 true for zlib, bit 1 true for gzip */\n this.havedict = false; /* true if dictionary provided */\n this.flags = 0; /* gzip header method and flags (0 if zlib) */\n this.dmax = 0; /* zlib header max distance (INFLATE_STRICT) */\n this.check = 0; /* protected copy of check value */\n this.total = 0; /* protected copy of output count */\n // TODO: may be {}\n this.head = null; /* where to save gzip header information */\n\n /* sliding window */\n this.wbits = 0; /* log base 2 of requested window size */\n this.wsize = 0; /* window size or zero if not using window */\n this.whave = 0; /* valid bytes in the window */\n this.wnext = 0; /* window write index */\n this.window = null; /* allocated sliding window, if needed */\n\n /* bit accumulator */\n this.hold = 0; /* input bit accumulator */\n this.bits = 0; /* number of bits in \"in\" */\n\n /* for string and stored block copying */\n this.length = 0; /* literal or length of data to copy */\n this.offset = 0; /* distance back to copy string from */\n\n /* for table and code decoding */\n this.extra = 0; /* extra bits needed */\n\n /* fixed and dynamic code tables */\n this.lencode = null; /* starting table for length/literal codes */\n this.distcode = null; /* starting table for distance codes */\n this.lenbits = 0; /* index bits for lencode */\n this.distbits = 0; /* index bits for distcode */\n\n /* dynamic table building */\n this.ncode = 0; /* number of code length code lengths */\n this.nlen = 0; /* number of length code lengths */\n this.ndist = 0; /* number of distance code lengths */\n this.have = 0; /* number of code lengths in lens[] */\n this.next = null; /* next available space in codes[] */\n\n this.lens = new utils.Buf16(320); /* temporary storage for code lengths */\n this.work = new utils.Buf16(288); /* work area for code table building */\n\n /*\n because we don't have pointers in js, we use lencode and distcode directly\n as buffers so we don't need codes\n */\n //this.codes = new utils.Buf32(ENOUGH); /* space for code tables */\n this.lendyn = null; /* dynamic table for length/literal codes (JS specific) */\n this.distdyn = null; /* dynamic table for distance codes (JS specific) */\n this.sane = 0; /* if false, allow invalid distance too far */\n this.back = 0; /* bits back of last unprocessed length/lit */\n this.was = 0; /* initial length of match */\n}\n\nfunction inflateResetKeep(strm) {\n var state;\n\n if (!strm || !strm.state) { return Z_STREAM_ERROR; }\n state = strm.state;\n strm.total_in = strm.total_out = state.total = 0;\n strm.msg = ''; /*Z_NULL*/\n if (state.wrap) { /* to support ill-conceived Java test suite */\n strm.adler = state.wrap & 1;\n }\n state.mode = HEAD;\n state.last = 0;\n state.havedict = 0;\n state.dmax = 32768;\n state.head = null/*Z_NULL*/;\n state.hold = 0;\n state.bits = 0;\n //state.lencode = state.distcode = state.next = state.codes;\n state.lencode = state.lendyn = new utils.Buf32(ENOUGH_LENS);\n state.distcode = state.distdyn = new utils.Buf32(ENOUGH_DISTS);\n\n state.sane = 1;\n state.back = -1;\n //Tracev((stderr, \"inflate: reset\\n\"));\n return Z_OK;\n}\n\nfunction inflateReset(strm) {\n var state;\n\n if (!strm || !strm.state) { return Z_STREAM_ERROR; }\n state = strm.state;\n state.wsize = 0;\n state.whave = 0;\n state.wnext = 0;\n return inflateResetKeep(strm);\n\n}\n\nfunction inflateReset2(strm, windowBits) {\n var wrap;\n var state;\n\n /* get the state */\n if (!strm || !strm.state) { return Z_STREAM_ERROR; }\n state = strm.state;\n\n /* extract wrap request from windowBits parameter */\n if (windowBits < 0) {\n wrap = 0;\n windowBits = -windowBits;\n }\n else {\n wrap = (windowBits >> 4) + 1;\n if (windowBits < 48) {\n windowBits &= 15;\n }\n }\n\n /* set number of window bits, free window if different */\n if (windowBits && (windowBits < 8 || windowBits > 15)) {\n return Z_STREAM_ERROR;\n }\n if (state.window !== null && state.wbits !== windowBits) {\n state.window = null;\n }\n\n /* update state and reset the rest of it */\n state.wrap = wrap;\n state.wbits = windowBits;\n return inflateReset(strm);\n}\n\nfunction inflateInit2(strm, windowBits) {\n var ret;\n var state;\n\n if (!strm) { return Z_STREAM_ERROR; }\n //strm.msg = Z_NULL; /* in case we return an error */\n\n state = new InflateState();\n\n //if (state === Z_NULL) return Z_MEM_ERROR;\n //Tracev((stderr, \"inflate: allocated\\n\"));\n strm.state = state;\n state.window = null/*Z_NULL*/;\n ret = inflateReset2(strm, windowBits);\n if (ret !== Z_OK) {\n strm.state = null/*Z_NULL*/;\n }\n return ret;\n}\n\nfunction inflateInit(strm) {\n return inflateInit2(strm, DEF_WBITS);\n}\n\n\n/*\n Return state with length and distance decoding tables and index sizes set to\n fixed code decoding. Normally this returns fixed tables from inffixed.h.\n If BUILDFIXED is defined, then instead this routine builds the tables the\n first time it's called, and returns those tables the first time and\n thereafter. This reduces the size of the code by about 2K bytes, in\n exchange for a little execution time. However, BUILDFIXED should not be\n used for threaded applications, since the rewriting of the tables and virgin\n may not be thread-safe.\n */\nvar virgin = true;\n\nvar lenfix, distfix; // We have no pointers in JS, so keep tables separate\n\nfunction fixedtables(state) {\n /* build fixed huffman tables if first call (may not be thread safe) */\n if (virgin) {\n var sym;\n\n lenfix = new utils.Buf32(512);\n distfix = new utils.Buf32(32);\n\n /* literal/length table */\n sym = 0;\n while (sym < 144) { state.lens[sym++] = 8; }\n while (sym < 256) { state.lens[sym++] = 9; }\n while (sym < 280) { state.lens[sym++] = 7; }\n while (sym < 288) { state.lens[sym++] = 8; }\n\n inflate_table(LENS, state.lens, 0, 288, lenfix, 0, state.work, { bits: 9 });\n\n /* distance table */\n sym = 0;\n while (sym < 32) { state.lens[sym++] = 5; }\n\n inflate_table(DISTS, state.lens, 0, 32, distfix, 0, state.work, { bits: 5 });\n\n /* do this just once */\n virgin = false;\n }\n\n state.lencode = lenfix;\n state.lenbits = 9;\n state.distcode = distfix;\n state.distbits = 5;\n}\n\n\n/*\n Update the window with the last wsize (normally 32K) bytes written before\n returning. If window does not exist yet, create it. This is only called\n when a window is already in use, or when output has been written during this\n inflate call, but the end of the deflate stream has not been reached yet.\n It is also called to create a window for dictionary data when a dictionary\n is loaded.\n\n Providing output buffers larger than 32K to inflate() should provide a speed\n advantage, since only the last 32K of output is copied to the sliding window\n upon return from inflate(), and since all distances after the first 32K of\n output will fall in the output data, making match copies simpler and faster.\n The advantage may be dependent on the size of the processor's data caches.\n */\nfunction updatewindow(strm, src, end, copy) {\n var dist;\n var state = strm.state;\n\n /* if it hasn't been done already, allocate space for the window */\n if (state.window === null) {\n state.wsize = 1 << state.wbits;\n state.wnext = 0;\n state.whave = 0;\n\n state.window = new utils.Buf8(state.wsize);\n }\n\n /* copy state->wsize or less output bytes into the circular window */\n if (copy >= state.wsize) {\n utils.arraySet(state.window, src, end - state.wsize, state.wsize, 0);\n state.wnext = 0;\n state.whave = state.wsize;\n }\n else {\n dist = state.wsize - state.wnext;\n if (dist > copy) {\n dist = copy;\n }\n //zmemcpy(state->window + state->wnext, end - copy, dist);\n utils.arraySet(state.window, src, end - copy, dist, state.wnext);\n copy -= dist;\n if (copy) {\n //zmemcpy(state->window, end - copy, copy);\n utils.arraySet(state.window, src, end - copy, copy, 0);\n state.wnext = copy;\n state.whave = state.wsize;\n }\n else {\n state.wnext += dist;\n if (state.wnext === state.wsize) { state.wnext = 0; }\n if (state.whave < state.wsize) { state.whave += dist; }\n }\n }\n return 0;\n}\n\nfunction inflate(strm, flush) {\n var state;\n var input, output; // input/output buffers\n var next; /* next input INDEX */\n var put; /* next output INDEX */\n var have, left; /* available input and output */\n var hold; /* bit buffer */\n var bits; /* bits in bit buffer */\n var _in, _out; /* save starting available input and output */\n var copy; /* number of stored or match bytes to copy */\n var from; /* where to copy match bytes from */\n var from_source;\n var here = 0; /* current decoding table entry */\n var here_bits, here_op, here_val; // paked \"here\" denormalized (JS specific)\n //var last; /* parent table entry */\n var last_bits, last_op, last_val; // paked \"last\" denormalized (JS specific)\n var len; /* length to copy for repeats, bits to drop */\n var ret; /* return code */\n var hbuf = new utils.Buf8(4); /* buffer for gzip header crc calculation */\n var opts;\n\n var n; // temporary var for NEED_BITS\n\n var order = /* permutation of code lengths */\n [ 16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15 ];\n\n\n if (!strm || !strm.state || !strm.output ||\n (!strm.input && strm.avail_in !== 0)) {\n return Z_STREAM_ERROR;\n }\n\n state = strm.state;\n if (state.mode === TYPE) { state.mode = TYPEDO; } /* skip check */\n\n\n //--- LOAD() ---\n put = strm.next_out;\n output = strm.output;\n left = strm.avail_out;\n next = strm.next_in;\n input = strm.input;\n have = strm.avail_in;\n hold = state.hold;\n bits = state.bits;\n //---\n\n _in = have;\n _out = left;\n ret = Z_OK;\n\n inf_leave: // goto emulation\n for (;;) {\n switch (state.mode) {\n case HEAD:\n if (state.wrap === 0) {\n state.mode = TYPEDO;\n break;\n }\n //=== NEEDBITS(16);\n while (bits < 16) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n if ((state.wrap & 2) && hold === 0x8b1f) { /* gzip header */\n state.check = 0/*crc32(0L, Z_NULL, 0)*/;\n //=== CRC2(state.check, hold);\n hbuf[0] = hold & 0xff;\n hbuf[1] = (hold >>> 8) & 0xff;\n state.check = crc32(state.check, hbuf, 2, 0);\n //===//\n\n //=== INITBITS();\n hold = 0;\n bits = 0;\n //===//\n state.mode = FLAGS;\n break;\n }\n state.flags = 0; /* expect zlib header */\n if (state.head) {\n state.head.done = false;\n }\n if (!(state.wrap & 1) || /* check if zlib header allowed */\n (((hold & 0xff)/*BITS(8)*/ << 8) + (hold >> 8)) % 31) {\n strm.msg = 'incorrect header check';\n state.mode = BAD;\n break;\n }\n if ((hold & 0x0f)/*BITS(4)*/ !== Z_DEFLATED) {\n strm.msg = 'unknown compression method';\n state.mode = BAD;\n break;\n }\n //--- DROPBITS(4) ---//\n hold >>>= 4;\n bits -= 4;\n //---//\n len = (hold & 0x0f)/*BITS(4)*/ + 8;\n if (state.wbits === 0) {\n state.wbits = len;\n }\n else if (len > state.wbits) {\n strm.msg = 'invalid window size';\n state.mode = BAD;\n break;\n }\n state.dmax = 1 << len;\n //Tracev((stderr, \"inflate: zlib header ok\\n\"));\n strm.adler = state.check = 1/*adler32(0L, Z_NULL, 0)*/;\n state.mode = hold & 0x200 ? DICTID : TYPE;\n //=== INITBITS();\n hold = 0;\n bits = 0;\n //===//\n break;\n case FLAGS:\n //=== NEEDBITS(16); */\n while (bits < 16) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n state.flags = hold;\n if ((state.flags & 0xff) !== Z_DEFLATED) {\n strm.msg = 'unknown compression method';\n state.mode = BAD;\n break;\n }\n if (state.flags & 0xe000) {\n strm.msg = 'unknown header flags set';\n state.mode = BAD;\n break;\n }\n if (state.head) {\n state.head.text = ((hold >> 8) & 1);\n }\n if (state.flags & 0x0200) {\n //=== CRC2(state.check, hold);\n hbuf[0] = hold & 0xff;\n hbuf[1] = (hold >>> 8) & 0xff;\n state.check = crc32(state.check, hbuf, 2, 0);\n //===//\n }\n //=== INITBITS();\n hold = 0;\n bits = 0;\n //===//\n state.mode = TIME;\n /* falls through */\n case TIME:\n //=== NEEDBITS(32); */\n while (bits < 32) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n if (state.head) {\n state.head.time = hold;\n }\n if (state.flags & 0x0200) {\n //=== CRC4(state.check, hold)\n hbuf[0] = hold & 0xff;\n hbuf[1] = (hold >>> 8) & 0xff;\n hbuf[2] = (hold >>> 16) & 0xff;\n hbuf[3] = (hold >>> 24) & 0xff;\n state.check = crc32(state.check, hbuf, 4, 0);\n //===\n }\n //=== INITBITS();\n hold = 0;\n bits = 0;\n //===//\n state.mode = OS;\n /* falls through */\n case OS:\n //=== NEEDBITS(16); */\n while (bits < 16) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n if (state.head) {\n state.head.xflags = (hold & 0xff);\n state.head.os = (hold >> 8);\n }\n if (state.flags & 0x0200) {\n //=== CRC2(state.check, hold);\n hbuf[0] = hold & 0xff;\n hbuf[1] = (hold >>> 8) & 0xff;\n state.check = crc32(state.check, hbuf, 2, 0);\n //===//\n }\n //=== INITBITS();\n hold = 0;\n bits = 0;\n //===//\n state.mode = EXLEN;\n /* falls through */\n case EXLEN:\n if (state.flags & 0x0400) {\n //=== NEEDBITS(16); */\n while (bits < 16) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n state.length = hold;\n if (state.head) {\n state.head.extra_len = hold;\n }\n if (state.flags & 0x0200) {\n //=== CRC2(state.check, hold);\n hbuf[0] = hold & 0xff;\n hbuf[1] = (hold >>> 8) & 0xff;\n state.check = crc32(state.check, hbuf, 2, 0);\n //===//\n }\n //=== INITBITS();\n hold = 0;\n bits = 0;\n //===//\n }\n else if (state.head) {\n state.head.extra = null/*Z_NULL*/;\n }\n state.mode = EXTRA;\n /* falls through */\n case EXTRA:\n if (state.flags & 0x0400) {\n copy = state.length;\n if (copy > have) { copy = have; }\n if (copy) {\n if (state.head) {\n len = state.head.extra_len - state.length;\n if (!state.head.extra) {\n // Use untyped array for more conveniend processing later\n state.head.extra = new Array(state.head.extra_len);\n }\n utils.arraySet(\n state.head.extra,\n input,\n next,\n // extra field is limited to 65536 bytes\n // - no need for additional size check\n copy,\n /*len + copy > state.head.extra_max - len ? state.head.extra_max : copy,*/\n len\n );\n //zmemcpy(state.head.extra + len, next,\n // len + copy > state.head.extra_max ?\n // state.head.extra_max - len : copy);\n }\n if (state.flags & 0x0200) {\n state.check = crc32(state.check, input, copy, next);\n }\n have -= copy;\n next += copy;\n state.length -= copy;\n }\n if (state.length) { break inf_leave; }\n }\n state.length = 0;\n state.mode = NAME;\n /* falls through */\n case NAME:\n if (state.flags & 0x0800) {\n if (have === 0) { break inf_leave; }\n copy = 0;\n do {\n // TODO: 2 or 1 bytes?\n len = input[next + copy++];\n /* use constant limit because in js we should not preallocate memory */\n if (state.head && len &&\n (state.length < 65536 /*state.head.name_max*/)) {\n state.head.name += String.fromCharCode(len);\n }\n } while (len && copy < have);\n\n if (state.flags & 0x0200) {\n state.check = crc32(state.check, input, copy, next);\n }\n have -= copy;\n next += copy;\n if (len) { break inf_leave; }\n }\n else if (state.head) {\n state.head.name = null;\n }\n state.length = 0;\n state.mode = COMMENT;\n /* falls through */\n case COMMENT:\n if (state.flags & 0x1000) {\n if (have === 0) { break inf_leave; }\n copy = 0;\n do {\n len = input[next + copy++];\n /* use constant limit because in js we should not preallocate memory */\n if (state.head && len &&\n (state.length < 65536 /*state.head.comm_max*/)) {\n state.head.comment += String.fromCharCode(len);\n }\n } while (len && copy < have);\n if (state.flags & 0x0200) {\n state.check = crc32(state.check, input, copy, next);\n }\n have -= copy;\n next += copy;\n if (len) { break inf_leave; }\n }\n else if (state.head) {\n state.head.comment = null;\n }\n state.mode = HCRC;\n /* falls through */\n case HCRC:\n if (state.flags & 0x0200) {\n //=== NEEDBITS(16); */\n while (bits < 16) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n if (hold !== (state.check & 0xffff)) {\n strm.msg = 'header crc mismatch';\n state.mode = BAD;\n break;\n }\n //=== INITBITS();\n hold = 0;\n bits = 0;\n //===//\n }\n if (state.head) {\n state.head.hcrc = ((state.flags >> 9) & 1);\n state.head.done = true;\n }\n strm.adler = state.check = 0;\n state.mode = TYPE;\n break;\n case DICTID:\n //=== NEEDBITS(32); */\n while (bits < 32) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n strm.adler = state.check = zswap32(hold);\n //=== INITBITS();\n hold = 0;\n bits = 0;\n //===//\n state.mode = DICT;\n /* falls through */\n case DICT:\n if (state.havedict === 0) {\n //--- RESTORE() ---\n strm.next_out = put;\n strm.avail_out = left;\n strm.next_in = next;\n strm.avail_in = have;\n state.hold = hold;\n state.bits = bits;\n //---\n return Z_NEED_DICT;\n }\n strm.adler = state.check = 1/*adler32(0L, Z_NULL, 0)*/;\n state.mode = TYPE;\n /* falls through */\n case TYPE:\n if (flush === Z_BLOCK || flush === Z_TREES) { break inf_leave; }\n /* falls through */\n case TYPEDO:\n if (state.last) {\n //--- BYTEBITS() ---//\n hold >>>= bits & 7;\n bits -= bits & 7;\n //---//\n state.mode = CHECK;\n break;\n }\n //=== NEEDBITS(3); */\n while (bits < 3) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n state.last = (hold & 0x01)/*BITS(1)*/;\n //--- DROPBITS(1) ---//\n hold >>>= 1;\n bits -= 1;\n //---//\n\n switch ((hold & 0x03)/*BITS(2)*/) {\n case 0: /* stored block */\n //Tracev((stderr, \"inflate: stored block%s\\n\",\n // state.last ? \" (last)\" : \"\"));\n state.mode = STORED;\n break;\n case 1: /* fixed block */\n fixedtables(state);\n //Tracev((stderr, \"inflate: fixed codes block%s\\n\",\n // state.last ? \" (last)\" : \"\"));\n state.mode = LEN_; /* decode codes */\n if (flush === Z_TREES) {\n //--- DROPBITS(2) ---//\n hold >>>= 2;\n bits -= 2;\n //---//\n break inf_leave;\n }\n break;\n case 2: /* dynamic block */\n //Tracev((stderr, \"inflate: dynamic codes block%s\\n\",\n // state.last ? \" (last)\" : \"\"));\n state.mode = TABLE;\n break;\n case 3:\n strm.msg = 'invalid block type';\n state.mode = BAD;\n }\n //--- DROPBITS(2) ---//\n hold >>>= 2;\n bits -= 2;\n //---//\n break;\n case STORED:\n //--- BYTEBITS() ---// /* go to byte boundary */\n hold >>>= bits & 7;\n bits -= bits & 7;\n //---//\n //=== NEEDBITS(32); */\n while (bits < 32) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n if ((hold & 0xffff) !== ((hold >>> 16) ^ 0xffff)) {\n strm.msg = 'invalid stored block lengths';\n state.mode = BAD;\n break;\n }\n state.length = hold & 0xffff;\n //Tracev((stderr, \"inflate: stored length %u\\n\",\n // state.length));\n //=== INITBITS();\n hold = 0;\n bits = 0;\n //===//\n state.mode = COPY_;\n if (flush === Z_TREES) { break inf_leave; }\n /* falls through */\n case COPY_:\n state.mode = COPY;\n /* falls through */\n case COPY:\n copy = state.length;\n if (copy) {\n if (copy > have) { copy = have; }\n if (copy > left) { copy = left; }\n if (copy === 0) { break inf_leave; }\n //--- zmemcpy(put, next, copy); ---\n utils.arraySet(output, input, next, copy, put);\n //---//\n have -= copy;\n next += copy;\n left -= copy;\n put += copy;\n state.length -= copy;\n break;\n }\n //Tracev((stderr, \"inflate: stored end\\n\"));\n state.mode = TYPE;\n break;\n case TABLE:\n //=== NEEDBITS(14); */\n while (bits < 14) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n state.nlen = (hold & 0x1f)/*BITS(5)*/ + 257;\n //--- DROPBITS(5) ---//\n hold >>>= 5;\n bits -= 5;\n //---//\n state.ndist = (hold & 0x1f)/*BITS(5)*/ + 1;\n //--- DROPBITS(5) ---//\n hold >>>= 5;\n bits -= 5;\n //---//\n state.ncode = (hold & 0x0f)/*BITS(4)*/ + 4;\n //--- DROPBITS(4) ---//\n hold >>>= 4;\n bits -= 4;\n //---//\n//#ifndef PKZIP_BUG_WORKAROUND\n if (state.nlen > 286 || state.ndist > 30) {\n strm.msg = 'too many length or distance symbols';\n state.mode = BAD;\n break;\n }\n//#endif\n //Tracev((stderr, \"inflate: table sizes ok\\n\"));\n state.have = 0;\n state.mode = LENLENS;\n /* falls through */\n case LENLENS:\n while (state.have < state.ncode) {\n //=== NEEDBITS(3);\n while (bits < 3) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n state.lens[order[state.have++]] = (hold & 0x07);//BITS(3);\n //--- DROPBITS(3) ---//\n hold >>>= 3;\n bits -= 3;\n //---//\n }\n while (state.have < 19) {\n state.lens[order[state.have++]] = 0;\n }\n // We have separate tables & no pointers. 2 commented lines below not needed.\n //state.next = state.codes;\n //state.lencode = state.next;\n // Switch to use dynamic table\n state.lencode = state.lendyn;\n state.lenbits = 7;\n\n opts = { bits: state.lenbits };\n ret = inflate_table(CODES, state.lens, 0, 19, state.lencode, 0, state.work, opts);\n state.lenbits = opts.bits;\n\n if (ret) {\n strm.msg = 'invalid code lengths set';\n state.mode = BAD;\n break;\n }\n //Tracev((stderr, \"inflate: code lengths ok\\n\"));\n state.have = 0;\n state.mode = CODELENS;\n /* falls through */\n case CODELENS:\n while (state.have < state.nlen + state.ndist) {\n for (;;) {\n here = state.lencode[hold & ((1 << state.lenbits) - 1)];/*BITS(state.lenbits)*/\n here_bits = here >>> 24;\n here_op = (here >>> 16) & 0xff;\n here_val = here & 0xffff;\n\n if ((here_bits) <= bits) { break; }\n //--- PULLBYTE() ---//\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n //---//\n }\n if (here_val < 16) {\n //--- DROPBITS(here.bits) ---//\n hold >>>= here_bits;\n bits -= here_bits;\n //---//\n state.lens[state.have++] = here_val;\n }\n else {\n if (here_val === 16) {\n //=== NEEDBITS(here.bits + 2);\n n = here_bits + 2;\n while (bits < n) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n //--- DROPBITS(here.bits) ---//\n hold >>>= here_bits;\n bits -= here_bits;\n //---//\n if (state.have === 0) {\n strm.msg = 'invalid bit length repeat';\n state.mode = BAD;\n break;\n }\n len = state.lens[state.have - 1];\n copy = 3 + (hold & 0x03);//BITS(2);\n //--- DROPBITS(2) ---//\n hold >>>= 2;\n bits -= 2;\n //---//\n }\n else if (here_val === 17) {\n //=== NEEDBITS(here.bits + 3);\n n = here_bits + 3;\n while (bits < n) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n //--- DROPBITS(here.bits) ---//\n hold >>>= here_bits;\n bits -= here_bits;\n //---//\n len = 0;\n copy = 3 + (hold & 0x07);//BITS(3);\n //--- DROPBITS(3) ---//\n hold >>>= 3;\n bits -= 3;\n //---//\n }\n else {\n //=== NEEDBITS(here.bits + 7);\n n = here_bits + 7;\n while (bits < n) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n //--- DROPBITS(here.bits) ---//\n hold >>>= here_bits;\n bits -= here_bits;\n //---//\n len = 0;\n copy = 11 + (hold & 0x7f);//BITS(7);\n //--- DROPBITS(7) ---//\n hold >>>= 7;\n bits -= 7;\n //---//\n }\n if (state.have + copy > state.nlen + state.ndist) {\n strm.msg = 'invalid bit length repeat';\n state.mode = BAD;\n break;\n }\n while (copy--) {\n state.lens[state.have++] = len;\n }\n }\n }\n\n /* handle error breaks in while */\n if (state.mode === BAD) { break; }\n\n /* check for end-of-block code (better have one) */\n if (state.lens[256] === 0) {\n strm.msg = 'invalid code -- missing end-of-block';\n state.mode = BAD;\n break;\n }\n\n /* build code tables -- note: do not change the lenbits or distbits\n values here (9 and 6) without reading the comments in inftrees.h\n concerning the ENOUGH constants, which depend on those values */\n state.lenbits = 9;\n\n opts = { bits: state.lenbits };\n ret = inflate_table(LENS, state.lens, 0, state.nlen, state.lencode, 0, state.work, opts);\n // We have separate tables & no pointers. 2 commented lines below not needed.\n // state.next_index = opts.table_index;\n state.lenbits = opts.bits;\n // state.lencode = state.next;\n\n if (ret) {\n strm.msg = 'invalid literal/lengths set';\n state.mode = BAD;\n break;\n }\n\n state.distbits = 6;\n //state.distcode.copy(state.codes);\n // Switch to use dynamic table\n state.distcode = state.distdyn;\n opts = { bits: state.distbits };\n ret = inflate_table(DISTS, state.lens, state.nlen, state.ndist, state.distcode, 0, state.work, opts);\n // We have separate tables & no pointers. 2 commented lines below not needed.\n // state.next_index = opts.table_index;\n state.distbits = opts.bits;\n // state.distcode = state.next;\n\n if (ret) {\n strm.msg = 'invalid distances set';\n state.mode = BAD;\n break;\n }\n //Tracev((stderr, 'inflate: codes ok\\n'));\n state.mode = LEN_;\n if (flush === Z_TREES) { break inf_leave; }\n /* falls through */\n case LEN_:\n state.mode = LEN;\n /* falls through */\n case LEN:\n if (have >= 6 && left >= 258) {\n //--- RESTORE() ---\n strm.next_out = put;\n strm.avail_out = left;\n strm.next_in = next;\n strm.avail_in = have;\n state.hold = hold;\n state.bits = bits;\n //---\n inflate_fast(strm, _out);\n //--- LOAD() ---\n put = strm.next_out;\n output = strm.output;\n left = strm.avail_out;\n next = strm.next_in;\n input = strm.input;\n have = strm.avail_in;\n hold = state.hold;\n bits = state.bits;\n //---\n\n if (state.mode === TYPE) {\n state.back = -1;\n }\n break;\n }\n state.back = 0;\n for (;;) {\n here = state.lencode[hold & ((1 << state.lenbits) - 1)]; /*BITS(state.lenbits)*/\n here_bits = here >>> 24;\n here_op = (here >>> 16) & 0xff;\n here_val = here & 0xffff;\n\n if (here_bits <= bits) { break; }\n //--- PULLBYTE() ---//\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n //---//\n }\n if (here_op && (here_op & 0xf0) === 0) {\n last_bits = here_bits;\n last_op = here_op;\n last_val = here_val;\n for (;;) {\n here = state.lencode[last_val +\n ((hold & ((1 << (last_bits + last_op)) - 1))/*BITS(last.bits + last.op)*/ >> last_bits)];\n here_bits = here >>> 24;\n here_op = (here >>> 16) & 0xff;\n here_val = here & 0xffff;\n\n if ((last_bits + here_bits) <= bits) { break; }\n //--- PULLBYTE() ---//\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n //---//\n }\n //--- DROPBITS(last.bits) ---//\n hold >>>= last_bits;\n bits -= last_bits;\n //---//\n state.back += last_bits;\n }\n //--- DROPBITS(here.bits) ---//\n hold >>>= here_bits;\n bits -= here_bits;\n //---//\n state.back += here_bits;\n state.length = here_val;\n if (here_op === 0) {\n //Tracevv((stderr, here.val >= 0x20 && here.val < 0x7f ?\n // \"inflate: literal '%c'\\n\" :\n // \"inflate: literal 0x%02x\\n\", here.val));\n state.mode = LIT;\n break;\n }\n if (here_op & 32) {\n //Tracevv((stderr, \"inflate: end of block\\n\"));\n state.back = -1;\n state.mode = TYPE;\n break;\n }\n if (here_op & 64) {\n strm.msg = 'invalid literal/length code';\n state.mode = BAD;\n break;\n }\n state.extra = here_op & 15;\n state.mode = LENEXT;\n /* falls through */\n case LENEXT:\n if (state.extra) {\n //=== NEEDBITS(state.extra);\n n = state.extra;\n while (bits < n) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n state.length += hold & ((1 << state.extra) - 1)/*BITS(state.extra)*/;\n //--- DROPBITS(state.extra) ---//\n hold >>>= state.extra;\n bits -= state.extra;\n //---//\n state.back += state.extra;\n }\n //Tracevv((stderr, \"inflate: length %u\\n\", state.length));\n state.was = state.length;\n state.mode = DIST;\n /* falls through */\n case DIST:\n for (;;) {\n here = state.distcode[hold & ((1 << state.distbits) - 1)];/*BITS(state.distbits)*/\n here_bits = here >>> 24;\n here_op = (here >>> 16) & 0xff;\n here_val = here & 0xffff;\n\n if ((here_bits) <= bits) { break; }\n //--- PULLBYTE() ---//\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n //---//\n }\n if ((here_op & 0xf0) === 0) {\n last_bits = here_bits;\n last_op = here_op;\n last_val = here_val;\n for (;;) {\n here = state.distcode[last_val +\n ((hold & ((1 << (last_bits + last_op)) - 1))/*BITS(last.bits + last.op)*/ >> last_bits)];\n here_bits = here >>> 24;\n here_op = (here >>> 16) & 0xff;\n here_val = here & 0xffff;\n\n if ((last_bits + here_bits) <= bits) { break; }\n //--- PULLBYTE() ---//\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n //---//\n }\n //--- DROPBITS(last.bits) ---//\n hold >>>= last_bits;\n bits -= last_bits;\n //---//\n state.back += last_bits;\n }\n //--- DROPBITS(here.bits) ---//\n hold >>>= here_bits;\n bits -= here_bits;\n //---//\n state.back += here_bits;\n if (here_op & 64) {\n strm.msg = 'invalid distance code';\n state.mode = BAD;\n break;\n }\n state.offset = here_val;\n state.extra = (here_op) & 15;\n state.mode = DISTEXT;\n /* falls through */\n case DISTEXT:\n if (state.extra) {\n //=== NEEDBITS(state.extra);\n n = state.extra;\n while (bits < n) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n state.offset += hold & ((1 << state.extra) - 1)/*BITS(state.extra)*/;\n //--- DROPBITS(state.extra) ---//\n hold >>>= state.extra;\n bits -= state.extra;\n //---//\n state.back += state.extra;\n }\n//#ifdef INFLATE_STRICT\n if (state.offset > state.dmax) {\n strm.msg = 'invalid distance too far back';\n state.mode = BAD;\n break;\n }\n//#endif\n //Tracevv((stderr, \"inflate: distance %u\\n\", state.offset));\n state.mode = MATCH;\n /* falls through */\n case MATCH:\n if (left === 0) { break inf_leave; }\n copy = _out - left;\n if (state.offset > copy) { /* copy from window */\n copy = state.offset - copy;\n if (copy > state.whave) {\n if (state.sane) {\n strm.msg = 'invalid distance too far back';\n state.mode = BAD;\n break;\n }\n// (!) This block is disabled in zlib defailts,\n// don't enable it for binary compatibility\n//#ifdef INFLATE_ALLOW_INVALID_DISTANCE_TOOFAR_ARRR\n// Trace((stderr, \"inflate.c too far\\n\"));\n// copy -= state.whave;\n// if (copy > state.length) { copy = state.length; }\n// if (copy > left) { copy = left; }\n// left -= copy;\n// state.length -= copy;\n// do {\n// output[put++] = 0;\n// } while (--copy);\n// if (state.length === 0) { state.mode = LEN; }\n// break;\n//#endif\n }\n if (copy > state.wnext) {\n copy -= state.wnext;\n from = state.wsize - copy;\n }\n else {\n from = state.wnext - copy;\n }\n if (copy > state.length) { copy = state.length; }\n from_source = state.window;\n }\n else { /* copy from output */\n from_source = output;\n from = put - state.offset;\n copy = state.length;\n }\n if (copy > left) { copy = left; }\n left -= copy;\n state.length -= copy;\n do {\n output[put++] = from_source[from++];\n } while (--copy);\n if (state.length === 0) { state.mode = LEN; }\n break;\n case LIT:\n if (left === 0) { break inf_leave; }\n output[put++] = state.length;\n left--;\n state.mode = LEN;\n break;\n case CHECK:\n if (state.wrap) {\n //=== NEEDBITS(32);\n while (bits < 32) {\n if (have === 0) { break inf_leave; }\n have--;\n // Use '|' insdead of '+' to make sure that result is signed\n hold |= input[next++] << bits;\n bits += 8;\n }\n //===//\n _out -= left;\n strm.total_out += _out;\n state.total += _out;\n if (_out) {\n strm.adler = state.check =\n /*UPDATE(state.check, put - _out, _out);*/\n (state.flags ? crc32(state.check, output, _out, put - _out) : adler32(state.check, output, _out, put - _out));\n\n }\n _out = left;\n // NB: crc32 stored as signed 32-bit int, zswap32 returns signed too\n if ((state.flags ? hold : zswap32(hold)) !== state.check) {\n strm.msg = 'incorrect data check';\n state.mode = BAD;\n break;\n }\n //=== INITBITS();\n hold = 0;\n bits = 0;\n //===//\n //Tracev((stderr, \"inflate: check matches trailer\\n\"));\n }\n state.mode = LENGTH;\n /* falls through */\n case LENGTH:\n if (state.wrap && state.flags) {\n //=== NEEDBITS(32);\n while (bits < 32) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n if (hold !== (state.total & 0xffffffff)) {\n strm.msg = 'incorrect length check';\n state.mode = BAD;\n break;\n }\n //=== INITBITS();\n hold = 0;\n bits = 0;\n //===//\n //Tracev((stderr, \"inflate: length matches trailer\\n\"));\n }\n state.mode = DONE;\n /* falls through */\n case DONE:\n ret = Z_STREAM_END;\n break inf_leave;\n case BAD:\n ret = Z_DATA_ERROR;\n break inf_leave;\n case MEM:\n return Z_MEM_ERROR;\n case SYNC:\n /* falls through */\n default:\n return Z_STREAM_ERROR;\n }\n }\n\n // inf_leave <- here is real place for \"goto inf_leave\", emulated via \"break inf_leave\"\n\n /*\n Return from inflate(), updating the total counts and the check value.\n If there was no progress during the inflate() call, return a buffer\n error. Call updatewindow() to create and/or update the window state.\n Note: a memory error from inflate() is non-recoverable.\n */\n\n //--- RESTORE() ---\n strm.next_out = put;\n strm.avail_out = left;\n strm.next_in = next;\n strm.avail_in = have;\n state.hold = hold;\n state.bits = bits;\n //---\n\n if (state.wsize || (_out !== strm.avail_out && state.mode < BAD &&\n (state.mode < CHECK || flush !== Z_FINISH))) {\n if (updatewindow(strm, strm.output, strm.next_out, _out - strm.avail_out)) {\n state.mode = MEM;\n return Z_MEM_ERROR;\n }\n }\n _in -= strm.avail_in;\n _out -= strm.avail_out;\n strm.total_in += _in;\n strm.total_out += _out;\n state.total += _out;\n if (state.wrap && _out) {\n strm.adler = state.check = /*UPDATE(state.check, strm.next_out - _out, _out);*/\n (state.flags ? crc32(state.check, output, _out, strm.next_out - _out) : adler32(state.check, output, _out, strm.next_out - _out));\n }\n strm.data_type = state.bits + (state.last ? 64 : 0) +\n (state.mode === TYPE ? 128 : 0) +\n (state.mode === LEN_ || state.mode === COPY_ ? 256 : 0);\n if (((_in === 0 && _out === 0) || flush === Z_FINISH) && ret === Z_OK) {\n ret = Z_BUF_ERROR;\n }\n return ret;\n}\n\nfunction inflateEnd(strm) {\n\n if (!strm || !strm.state /*|| strm->zfree == (free_func)0*/) {\n return Z_STREAM_ERROR;\n }\n\n var state = strm.state;\n if (state.window) {\n state.window = null;\n }\n strm.state = null;\n return Z_OK;\n}\n\nfunction inflateGetHeader(strm, head) {\n var state;\n\n /* check state */\n if (!strm || !strm.state) { return Z_STREAM_ERROR; }\n state = strm.state;\n if ((state.wrap & 2) === 0) { return Z_STREAM_ERROR; }\n\n /* save header structure */\n state.head = head;\n head.done = false;\n return Z_OK;\n}\n\nfunction inflateSetDictionary(strm, dictionary) {\n var dictLength = dictionary.length;\n\n var state;\n var dictid;\n var ret;\n\n /* check state */\n if (!strm /* == Z_NULL */ || !strm.state /* == Z_NULL */) { return Z_STREAM_ERROR; }\n state = strm.state;\n\n if (state.wrap !== 0 && state.mode !== DICT) {\n return Z_STREAM_ERROR;\n }\n\n /* check for correct dictionary identifier */\n if (state.mode === DICT) {\n dictid = 1; /* adler32(0, null, 0)*/\n /* dictid = adler32(dictid, dictionary, dictLength); */\n dictid = adler32(dictid, dictionary, dictLength, 0);\n if (dictid !== state.check) {\n return Z_DATA_ERROR;\n }\n }\n /* copy dictionary to window using updatewindow(), which will amend the\n existing dictionary if appropriate */\n ret = updatewindow(strm, dictionary, dictLength, dictLength);\n if (ret) {\n state.mode = MEM;\n return Z_MEM_ERROR;\n }\n state.havedict = 1;\n // Tracev((stderr, \"inflate: dictionary set\\n\"));\n return Z_OK;\n}\n\nexports.inflateReset = inflateReset;\nexports.inflateReset2 = inflateReset2;\nexports.inflateResetKeep = inflateResetKeep;\nexports.inflateInit = inflateInit;\nexports.inflateInit2 = inflateInit2;\nexports.inflate = inflate;\nexports.inflateEnd = inflateEnd;\nexports.inflateGetHeader = inflateGetHeader;\nexports.inflateSetDictionary = inflateSetDictionary;\nexports.inflateInfo = 'pako inflate (from Nodeca project)';\n\n/* Not implemented\nexports.inflateCopy = inflateCopy;\nexports.inflateGetDictionary = inflateGetDictionary;\nexports.inflateMark = inflateMark;\nexports.inflatePrime = inflatePrime;\nexports.inflateSync = inflateSync;\nexports.inflateSyncPoint = inflateSyncPoint;\nexports.inflateUndermine = inflateUndermine;\n*/\n","'use strict';\n\n\nvar utils = require('../utils/common');\n\nvar MAXBITS = 15;\nvar ENOUGH_LENS = 852;\nvar ENOUGH_DISTS = 592;\n//var ENOUGH = (ENOUGH_LENS+ENOUGH_DISTS);\n\nvar CODES = 0;\nvar LENS = 1;\nvar DISTS = 2;\n\nvar lbase = [ /* Length codes 257..285 base */\n 3, 4, 5, 6, 7, 8, 9, 10, 11, 13, 15, 17, 19, 23, 27, 31,\n 35, 43, 51, 59, 67, 83, 99, 115, 131, 163, 195, 227, 258, 0, 0\n];\n\nvar lext = [ /* Length codes 257..285 extra */\n 16, 16, 16, 16, 16, 16, 16, 16, 17, 17, 17, 17, 18, 18, 18, 18,\n 19, 19, 19, 19, 20, 20, 20, 20, 21, 21, 21, 21, 16, 72, 78\n];\n\nvar dbase = [ /* Distance codes 0..29 base */\n 1, 2, 3, 4, 5, 7, 9, 13, 17, 25, 33, 49, 65, 97, 129, 193,\n 257, 385, 513, 769, 1025, 1537, 2049, 3073, 4097, 6145,\n 8193, 12289, 16385, 24577, 0, 0\n];\n\nvar dext = [ /* Distance codes 0..29 extra */\n 16, 16, 16, 16, 17, 17, 18, 18, 19, 19, 20, 20, 21, 21, 22, 22,\n 23, 23, 24, 24, 25, 25, 26, 26, 27, 27,\n 28, 28, 29, 29, 64, 64\n];\n\nmodule.exports = function inflate_table(type, lens, lens_index, codes, table, table_index, work, opts)\n{\n var bits = opts.bits;\n //here = opts.here; /* table entry for duplication */\n\n var len = 0; /* a code's length in bits */\n var sym = 0; /* index of code symbols */\n var min = 0, max = 0; /* minimum and maximum code lengths */\n var root = 0; /* number of index bits for root table */\n var curr = 0; /* number of index bits for current table */\n var drop = 0; /* code bits to drop for sub-table */\n var left = 0; /* number of prefix codes available */\n var used = 0; /* code entries in table used */\n var huff = 0; /* Huffman code */\n var incr; /* for incrementing code, index */\n var fill; /* index for replicating entries */\n var low; /* low bits for current root entry */\n var mask; /* mask for low root bits */\n var next; /* next available space in table */\n var base = null; /* base value table to use */\n var base_index = 0;\n// var shoextra; /* extra bits table to use */\n var end; /* use base and extra for symbol > end */\n var count = new utils.Buf16(MAXBITS + 1); //[MAXBITS+1]; /* number of codes of each length */\n var offs = new utils.Buf16(MAXBITS + 1); //[MAXBITS+1]; /* offsets in table for each length */\n var extra = null;\n var extra_index = 0;\n\n var here_bits, here_op, here_val;\n\n /*\n Process a set of code lengths to create a canonical Huffman code. The\n code lengths are lens[0..codes-1]. Each length corresponds to the\n symbols 0..codes-1. The Huffman code is generated by first sorting the\n symbols by length from short to long, and retaining the symbol order\n for codes with equal lengths. Then the code starts with all zero bits\n for the first code of the shortest length, and the codes are integer\n increments for the same length, and zeros are appended as the length\n increases. For the deflate format, these bits are stored backwards\n from their more natural integer increment ordering, and so when the\n decoding tables are built in the large loop below, the integer codes\n are incremented backwards.\n\n This routine assumes, but does not check, that all of the entries in\n lens[] are in the range 0..MAXBITS. The caller must assure this.\n 1..MAXBITS is interpreted as that code length. zero means that that\n symbol does not occur in this code.\n\n The codes are sorted by computing a count of codes for each length,\n creating from that a table of starting indices for each length in the\n sorted table, and then entering the symbols in order in the sorted\n table. The sorted table is work[], with that space being provided by\n the caller.\n\n The length counts are used for other purposes as well, i.e. finding\n the minimum and maximum length codes, determining if there are any\n codes at all, checking for a valid set of lengths, and looking ahead\n at length counts to determine sub-table sizes when building the\n decoding tables.\n */\n\n /* accumulate lengths for codes (assumes lens[] all in 0..MAXBITS) */\n for (len = 0; len <= MAXBITS; len++) {\n count[len] = 0;\n }\n for (sym = 0; sym < codes; sym++) {\n count[lens[lens_index + sym]]++;\n }\n\n /* bound code lengths, force root to be within code lengths */\n root = bits;\n for (max = MAXBITS; max >= 1; max--) {\n if (count[max] !== 0) { break; }\n }\n if (root > max) {\n root = max;\n }\n if (max === 0) { /* no symbols to code at all */\n //table.op[opts.table_index] = 64; //here.op = (var char)64; /* invalid code marker */\n //table.bits[opts.table_index] = 1; //here.bits = (var char)1;\n //table.val[opts.table_index++] = 0; //here.val = (var short)0;\n table[table_index++] = (1 << 24) | (64 << 16) | 0;\n\n\n //table.op[opts.table_index] = 64;\n //table.bits[opts.table_index] = 1;\n //table.val[opts.table_index++] = 0;\n table[table_index++] = (1 << 24) | (64 << 16) | 0;\n\n opts.bits = 1;\n return 0; /* no symbols, but wait for decoding to report error */\n }\n for (min = 1; min < max; min++) {\n if (count[min] !== 0) { break; }\n }\n if (root < min) {\n root = min;\n }\n\n /* check for an over-subscribed or incomplete set of lengths */\n left = 1;\n for (len = 1; len <= MAXBITS; len++) {\n left <<= 1;\n left -= count[len];\n if (left < 0) {\n return -1;\n } /* over-subscribed */\n }\n if (left > 0 && (type === CODES || max !== 1)) {\n return -1; /* incomplete set */\n }\n\n /* generate offsets into symbol table for each length for sorting */\n offs[1] = 0;\n for (len = 1; len < MAXBITS; len++) {\n offs[len + 1] = offs[len] + count[len];\n }\n\n /* sort symbols by length, by symbol order within each length */\n for (sym = 0; sym < codes; sym++) {\n if (lens[lens_index + sym] !== 0) {\n work[offs[lens[lens_index + sym]]++] = sym;\n }\n }\n\n /*\n Create and fill in decoding tables. In this loop, the table being\n filled is at next and has curr index bits. The code being used is huff\n with length len. That code is converted to an index by dropping drop\n bits off of the bottom. For codes where len is less than drop + curr,\n those top drop + curr - len bits are incremented through all values to\n fill the table with replicated entries.\n\n root is the number of index bits for the root table. When len exceeds\n root, sub-tables are created pointed to by the root entry with an index\n of the low root bits of huff. This is saved in low to check for when a\n new sub-table should be started. drop is zero when the root table is\n being filled, and drop is root when sub-tables are being filled.\n\n When a new sub-table is needed, it is necessary to look ahead in the\n code lengths to determine what size sub-table is needed. The length\n counts are used for this, and so count[] is decremented as codes are\n entered in the tables.\n\n used keeps track of how many table entries have been allocated from the\n provided *table space. It is checked for LENS and DIST tables against\n the constants ENOUGH_LENS and ENOUGH_DISTS to guard against changes in\n the initial root table size constants. See the comments in inftrees.h\n for more information.\n\n sym increments through all symbols, and the loop terminates when\n all codes of length max, i.e. all codes, have been processed. This\n routine permits incomplete codes, so another loop after this one fills\n in the rest of the decoding tables with invalid code markers.\n */\n\n /* set up for code type */\n // poor man optimization - use if-else instead of switch,\n // to avoid deopts in old v8\n if (type === CODES) {\n base = extra = work; /* dummy value--not used */\n end = 19;\n\n } else if (type === LENS) {\n base = lbase;\n base_index -= 257;\n extra = lext;\n extra_index -= 257;\n end = 256;\n\n } else { /* DISTS */\n base = dbase;\n extra = dext;\n end = -1;\n }\n\n /* initialize opts for loop */\n huff = 0; /* starting code */\n sym = 0; /* starting code symbol */\n len = min; /* starting code length */\n next = table_index; /* current table to fill in */\n curr = root; /* current table index bits */\n drop = 0; /* current bits to drop from code for index */\n low = -1; /* trigger new sub-table when len > root */\n used = 1 << root; /* use root table entries */\n mask = used - 1; /* mask for comparing low */\n\n /* check available table space */\n if ((type === LENS && used > ENOUGH_LENS) ||\n (type === DISTS && used > ENOUGH_DISTS)) {\n return 1;\n }\n\n var i = 0;\n /* process all codes and make table entries */\n for (;;) {\n i++;\n /* create table entry */\n here_bits = len - drop;\n if (work[sym] < end) {\n here_op = 0;\n here_val = work[sym];\n }\n else if (work[sym] > end) {\n here_op = extra[extra_index + work[sym]];\n here_val = base[base_index + work[sym]];\n }\n else {\n here_op = 32 + 64; /* end of block */\n here_val = 0;\n }\n\n /* replicate for those indices with low len bits equal to huff */\n incr = 1 << (len - drop);\n fill = 1 << curr;\n min = fill; /* save offset to next table */\n do {\n fill -= incr;\n table[next + (huff >> drop) + fill] = (here_bits << 24) | (here_op << 16) | here_val |0;\n } while (fill !== 0);\n\n /* backwards increment the len-bit code huff */\n incr = 1 << (len - 1);\n while (huff & incr) {\n incr >>= 1;\n }\n if (incr !== 0) {\n huff &= incr - 1;\n huff += incr;\n } else {\n huff = 0;\n }\n\n /* go to next symbol, update count, len */\n sym++;\n if (--count[len] === 0) {\n if (len === max) { break; }\n len = lens[lens_index + work[sym]];\n }\n\n /* create new sub-table if needed */\n if (len > root && (huff & mask) !== low) {\n /* if first time, transition to sub-tables */\n if (drop === 0) {\n drop = root;\n }\n\n /* increment past last table */\n next += min; /* here min is 1 << curr */\n\n /* determine length of next table */\n curr = len - drop;\n left = 1 << curr;\n while (curr + drop < max) {\n left -= count[curr + drop];\n if (left <= 0) { break; }\n curr++;\n left <<= 1;\n }\n\n /* check for enough space */\n used += 1 << curr;\n if ((type === LENS && used > ENOUGH_LENS) ||\n (type === DISTS && used > ENOUGH_DISTS)) {\n return 1;\n }\n\n /* point entry in root table to sub-table */\n low = huff & mask;\n /*table.op[low] = curr;\n table.bits[low] = root;\n table.val[low] = next - opts.table_index;*/\n table[low] = (root << 24) | (curr << 16) | (next - table_index) |0;\n }\n }\n\n /* fill in remaining table entry if code is incomplete (guaranteed to have\n at most one remaining entry, since if the code is incomplete, the\n maximum code length that was allowed to get this far is one bit) */\n if (huff !== 0) {\n //table.op[next + huff] = 64; /* invalid code marker */\n //table.bits[next + huff] = len - drop;\n //table.val[next + huff] = 0;\n table[next + huff] = ((len - drop) << 24) | (64 << 16) |0;\n }\n\n /* set return parameters */\n //opts.table_index += used;\n opts.bits = root;\n return 0;\n};\n","'use strict';\n\nmodule.exports = {\n 2: 'need dictionary', /* Z_NEED_DICT 2 */\n 1: 'stream end', /* Z_STREAM_END 1 */\n 0: '', /* Z_OK 0 */\n '-1': 'file error', /* Z_ERRNO (-1) */\n '-2': 'stream error', /* Z_STREAM_ERROR (-2) */\n '-3': 'data error', /* Z_DATA_ERROR (-3) */\n '-4': 'insufficient memory', /* Z_MEM_ERROR (-4) */\n '-5': 'buffer error', /* Z_BUF_ERROR (-5) */\n '-6': 'incompatible version' /* Z_VERSION_ERROR (-6) */\n};\n","'use strict';\n\n\nvar utils = require('../utils/common');\n\n/* Public constants ==========================================================*/\n/* ===========================================================================*/\n\n\n//var Z_FILTERED = 1;\n//var Z_HUFFMAN_ONLY = 2;\n//var Z_RLE = 3;\nvar Z_FIXED = 4;\n//var Z_DEFAULT_STRATEGY = 0;\n\n/* Possible values of the data_type field (though see inflate()) */\nvar Z_BINARY = 0;\nvar Z_TEXT = 1;\n//var Z_ASCII = 1; // = Z_TEXT\nvar Z_UNKNOWN = 2;\n\n/*============================================================================*/\n\n\nfunction zero(buf) { var len = buf.length; while (--len >= 0) { buf[len] = 0; } }\n\n// From zutil.h\n\nvar STORED_BLOCK = 0;\nvar STATIC_TREES = 1;\nvar DYN_TREES = 2;\n/* The three kinds of block type */\n\nvar MIN_MATCH = 3;\nvar MAX_MATCH = 258;\n/* The minimum and maximum match lengths */\n\n// From deflate.h\n/* ===========================================================================\n * Internal compression state.\n */\n\nvar LENGTH_CODES = 29;\n/* number of length codes, not counting the special END_BLOCK code */\n\nvar LITERALS = 256;\n/* number of literal bytes 0..255 */\n\nvar L_CODES = LITERALS + 1 + LENGTH_CODES;\n/* number of Literal or Length codes, including the END_BLOCK code */\n\nvar D_CODES = 30;\n/* number of distance codes */\n\nvar BL_CODES = 19;\n/* number of codes used to transfer the bit lengths */\n\nvar HEAP_SIZE = 2 * L_CODES + 1;\n/* maximum heap size */\n\nvar MAX_BITS = 15;\n/* All codes must not exceed MAX_BITS bits */\n\nvar Buf_size = 16;\n/* size of bit buffer in bi_buf */\n\n\n/* ===========================================================================\n * Constants\n */\n\nvar MAX_BL_BITS = 7;\n/* Bit length codes must not exceed MAX_BL_BITS bits */\n\nvar END_BLOCK = 256;\n/* end of block literal code */\n\nvar REP_3_6 = 16;\n/* repeat previous bit length 3-6 times (2 bits of repeat count) */\n\nvar REPZ_3_10 = 17;\n/* repeat a zero length 3-10 times (3 bits of repeat count) */\n\nvar REPZ_11_138 = 18;\n/* repeat a zero length 11-138 times (7 bits of repeat count) */\n\n/* eslint-disable comma-spacing,array-bracket-spacing */\nvar extra_lbits = /* extra bits for each length code */\n [0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0];\n\nvar extra_dbits = /* extra bits for each distance code */\n [0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13];\n\nvar extra_blbits = /* extra bits for each bit length code */\n [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,7];\n\nvar bl_order =\n [16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15];\n/* eslint-enable comma-spacing,array-bracket-spacing */\n\n/* The lengths of the bit length codes are sent in order of decreasing\n * probability, to avoid transmitting the lengths for unused bit length codes.\n */\n\n/* ===========================================================================\n * Local data. These are initialized only once.\n */\n\n// We pre-fill arrays with 0 to avoid uninitialized gaps\n\nvar DIST_CODE_LEN = 512; /* see definition of array dist_code below */\n\n// !!!! Use flat array insdead of structure, Freq = i*2, Len = i*2+1\nvar static_ltree = new Array((L_CODES + 2) * 2);\nzero(static_ltree);\n/* The static literal tree. Since the bit lengths are imposed, there is no\n * need for the L_CODES extra codes used during heap construction. However\n * The codes 286 and 287 are needed to build a canonical tree (see _tr_init\n * below).\n */\n\nvar static_dtree = new Array(D_CODES * 2);\nzero(static_dtree);\n/* The static distance tree. (Actually a trivial tree since all codes use\n * 5 bits.)\n */\n\nvar _dist_code = new Array(DIST_CODE_LEN);\nzero(_dist_code);\n/* Distance codes. The first 256 values correspond to the distances\n * 3 .. 258, the last 256 values correspond to the top 8 bits of\n * the 15 bit distances.\n */\n\nvar _length_code = new Array(MAX_MATCH - MIN_MATCH + 1);\nzero(_length_code);\n/* length code for each normalized match length (0 == MIN_MATCH) */\n\nvar base_length = new Array(LENGTH_CODES);\nzero(base_length);\n/* First normalized length for each code (0 = MIN_MATCH) */\n\nvar base_dist = new Array(D_CODES);\nzero(base_dist);\n/* First normalized distance for each code (0 = distance of 1) */\n\n\nfunction StaticTreeDesc(static_tree, extra_bits, extra_base, elems, max_length) {\n\n this.static_tree = static_tree; /* static tree or NULL */\n this.extra_bits = extra_bits; /* extra bits for each code or NULL */\n this.extra_base = extra_base; /* base index for extra_bits */\n this.elems = elems; /* max number of elements in the tree */\n this.max_length = max_length; /* max bit length for the codes */\n\n // show if `static_tree` has data or dummy - needed for monomorphic objects\n this.has_stree = static_tree && static_tree.length;\n}\n\n\nvar static_l_desc;\nvar static_d_desc;\nvar static_bl_desc;\n\n\nfunction TreeDesc(dyn_tree, stat_desc) {\n this.dyn_tree = dyn_tree; /* the dynamic tree */\n this.max_code = 0; /* largest code with non zero frequency */\n this.stat_desc = stat_desc; /* the corresponding static tree */\n}\n\n\n\nfunction d_code(dist) {\n return dist < 256 ? _dist_code[dist] : _dist_code[256 + (dist >>> 7)];\n}\n\n\n/* ===========================================================================\n * Output a short LSB first on the stream.\n * IN assertion: there is enough room in pendingBuf.\n */\nfunction put_short(s, w) {\n// put_byte(s, (uch)((w) & 0xff));\n// put_byte(s, (uch)((ush)(w) >> 8));\n s.pending_buf[s.pending++] = (w) & 0xff;\n s.pending_buf[s.pending++] = (w >>> 8) & 0xff;\n}\n\n\n/* ===========================================================================\n * Send a value on a given number of bits.\n * IN assertion: length <= 16 and value fits in length bits.\n */\nfunction send_bits(s, value, length) {\n if (s.bi_valid > (Buf_size - length)) {\n s.bi_buf |= (value << s.bi_valid) & 0xffff;\n put_short(s, s.bi_buf);\n s.bi_buf = value >> (Buf_size - s.bi_valid);\n s.bi_valid += length - Buf_size;\n } else {\n s.bi_buf |= (value << s.bi_valid) & 0xffff;\n s.bi_valid += length;\n }\n}\n\n\nfunction send_code(s, c, tree) {\n send_bits(s, tree[c * 2]/*.Code*/, tree[c * 2 + 1]/*.Len*/);\n}\n\n\n/* ===========================================================================\n * Reverse the first len bits of a code, using straightforward code (a faster\n * method would use a table)\n * IN assertion: 1 <= len <= 15\n */\nfunction bi_reverse(code, len) {\n var res = 0;\n do {\n res |= code & 1;\n code >>>= 1;\n res <<= 1;\n } while (--len > 0);\n return res >>> 1;\n}\n\n\n/* ===========================================================================\n * Flush the bit buffer, keeping at most 7 bits in it.\n */\nfunction bi_flush(s) {\n if (s.bi_valid === 16) {\n put_short(s, s.bi_buf);\n s.bi_buf = 0;\n s.bi_valid = 0;\n\n } else if (s.bi_valid >= 8) {\n s.pending_buf[s.pending++] = s.bi_buf & 0xff;\n s.bi_buf >>= 8;\n s.bi_valid -= 8;\n }\n}\n\n\n/* ===========================================================================\n * Compute the optimal bit lengths for a tree and update the total bit length\n * for the current block.\n * IN assertion: the fields freq and dad are set, heap[heap_max] and\n * above are the tree nodes sorted by increasing frequency.\n * OUT assertions: the field len is set to the optimal bit length, the\n * array bl_count contains the frequencies for each bit length.\n * The length opt_len is updated; static_len is also updated if stree is\n * not null.\n */\nfunction gen_bitlen(s, desc)\n// deflate_state *s;\n// tree_desc *desc; /* the tree descriptor */\n{\n var tree = desc.dyn_tree;\n var max_code = desc.max_code;\n var stree = desc.stat_desc.static_tree;\n var has_stree = desc.stat_desc.has_stree;\n var extra = desc.stat_desc.extra_bits;\n var base = desc.stat_desc.extra_base;\n var max_length = desc.stat_desc.max_length;\n var h; /* heap index */\n var n, m; /* iterate over the tree elements */\n var bits; /* bit length */\n var xbits; /* extra bits */\n var f; /* frequency */\n var overflow = 0; /* number of elements with bit length too large */\n\n for (bits = 0; bits <= MAX_BITS; bits++) {\n s.bl_count[bits] = 0;\n }\n\n /* In a first pass, compute the optimal bit lengths (which may\n * overflow in the case of the bit length tree).\n */\n tree[s.heap[s.heap_max] * 2 + 1]/*.Len*/ = 0; /* root of the heap */\n\n for (h = s.heap_max + 1; h < HEAP_SIZE; h++) {\n n = s.heap[h];\n bits = tree[tree[n * 2 + 1]/*.Dad*/ * 2 + 1]/*.Len*/ + 1;\n if (bits > max_length) {\n bits = max_length;\n overflow++;\n }\n tree[n * 2 + 1]/*.Len*/ = bits;\n /* We overwrite tree[n].Dad which is no longer needed */\n\n if (n > max_code) { continue; } /* not a leaf node */\n\n s.bl_count[bits]++;\n xbits = 0;\n if (n >= base) {\n xbits = extra[n - base];\n }\n f = tree[n * 2]/*.Freq*/;\n s.opt_len += f * (bits + xbits);\n if (has_stree) {\n s.static_len += f * (stree[n * 2 + 1]/*.Len*/ + xbits);\n }\n }\n if (overflow === 0) { return; }\n\n // Trace((stderr,\"\\nbit length overflow\\n\"));\n /* This happens for example on obj2 and pic of the Calgary corpus */\n\n /* Find the first bit length which could increase: */\n do {\n bits = max_length - 1;\n while (s.bl_count[bits] === 0) { bits--; }\n s.bl_count[bits]--; /* move one leaf down the tree */\n s.bl_count[bits + 1] += 2; /* move one overflow item as its brother */\n s.bl_count[max_length]--;\n /* The brother of the overflow item also moves one step up,\n * but this does not affect bl_count[max_length]\n */\n overflow -= 2;\n } while (overflow > 0);\n\n /* Now recompute all bit lengths, scanning in increasing frequency.\n * h is still equal to HEAP_SIZE. (It is simpler to reconstruct all\n * lengths instead of fixing only the wrong ones. This idea is taken\n * from 'ar' written by Haruhiko Okumura.)\n */\n for (bits = max_length; bits !== 0; bits--) {\n n = s.bl_count[bits];\n while (n !== 0) {\n m = s.heap[--h];\n if (m > max_code) { continue; }\n if (tree[m * 2 + 1]/*.Len*/ !== bits) {\n // Trace((stderr,\"code %d bits %d->%d\\n\", m, tree[m].Len, bits));\n s.opt_len += (bits - tree[m * 2 + 1]/*.Len*/) * tree[m * 2]/*.Freq*/;\n tree[m * 2 + 1]/*.Len*/ = bits;\n }\n n--;\n }\n }\n}\n\n\n/* ===========================================================================\n * Generate the codes for a given tree and bit counts (which need not be\n * optimal).\n * IN assertion: the array bl_count contains the bit length statistics for\n * the given tree and the field len is set for all tree elements.\n * OUT assertion: the field code is set for all tree elements of non\n * zero code length.\n */\nfunction gen_codes(tree, max_code, bl_count)\n// ct_data *tree; /* the tree to decorate */\n// int max_code; /* largest code with non zero frequency */\n// ushf *bl_count; /* number of codes at each bit length */\n{\n var next_code = new Array(MAX_BITS + 1); /* next code value for each bit length */\n var code = 0; /* running code value */\n var bits; /* bit index */\n var n; /* code index */\n\n /* The distribution counts are first used to generate the code values\n * without bit reversal.\n */\n for (bits = 1; bits <= MAX_BITS; bits++) {\n next_code[bits] = code = (code + bl_count[bits - 1]) << 1;\n }\n /* Check that the bit counts in bl_count are consistent. The last code\n * must be all ones.\n */\n //Assert (code + bl_count[MAX_BITS]-1 == (1< length code (0..28) */\n length = 0;\n for (code = 0; code < LENGTH_CODES - 1; code++) {\n base_length[code] = length;\n for (n = 0; n < (1 << extra_lbits[code]); n++) {\n _length_code[length++] = code;\n }\n }\n //Assert (length == 256, \"tr_static_init: length != 256\");\n /* Note that the length 255 (match length 258) can be represented\n * in two different ways: code 284 + 5 bits or code 285, so we\n * overwrite length_code[255] to use the best encoding:\n */\n _length_code[length - 1] = code;\n\n /* Initialize the mapping dist (0..32K) -> dist code (0..29) */\n dist = 0;\n for (code = 0; code < 16; code++) {\n base_dist[code] = dist;\n for (n = 0; n < (1 << extra_dbits[code]); n++) {\n _dist_code[dist++] = code;\n }\n }\n //Assert (dist == 256, \"tr_static_init: dist != 256\");\n dist >>= 7; /* from now on, all distances are divided by 128 */\n for (; code < D_CODES; code++) {\n base_dist[code] = dist << 7;\n for (n = 0; n < (1 << (extra_dbits[code] - 7)); n++) {\n _dist_code[256 + dist++] = code;\n }\n }\n //Assert (dist == 256, \"tr_static_init: 256+dist != 512\");\n\n /* Construct the codes of the static literal tree */\n for (bits = 0; bits <= MAX_BITS; bits++) {\n bl_count[bits] = 0;\n }\n\n n = 0;\n while (n <= 143) {\n static_ltree[n * 2 + 1]/*.Len*/ = 8;\n n++;\n bl_count[8]++;\n }\n while (n <= 255) {\n static_ltree[n * 2 + 1]/*.Len*/ = 9;\n n++;\n bl_count[9]++;\n }\n while (n <= 279) {\n static_ltree[n * 2 + 1]/*.Len*/ = 7;\n n++;\n bl_count[7]++;\n }\n while (n <= 287) {\n static_ltree[n * 2 + 1]/*.Len*/ = 8;\n n++;\n bl_count[8]++;\n }\n /* Codes 286 and 287 do not exist, but we must include them in the\n * tree construction to get a canonical Huffman tree (longest code\n * all ones)\n */\n gen_codes(static_ltree, L_CODES + 1, bl_count);\n\n /* The static distance tree is trivial: */\n for (n = 0; n < D_CODES; n++) {\n static_dtree[n * 2 + 1]/*.Len*/ = 5;\n static_dtree[n * 2]/*.Code*/ = bi_reverse(n, 5);\n }\n\n // Now data ready and we can init static trees\n static_l_desc = new StaticTreeDesc(static_ltree, extra_lbits, LITERALS + 1, L_CODES, MAX_BITS);\n static_d_desc = new StaticTreeDesc(static_dtree, extra_dbits, 0, D_CODES, MAX_BITS);\n static_bl_desc = new StaticTreeDesc(new Array(0), extra_blbits, 0, BL_CODES, MAX_BL_BITS);\n\n //static_init_done = true;\n}\n\n\n/* ===========================================================================\n * Initialize a new block.\n */\nfunction init_block(s) {\n var n; /* iterates over tree elements */\n\n /* Initialize the trees. */\n for (n = 0; n < L_CODES; n++) { s.dyn_ltree[n * 2]/*.Freq*/ = 0; }\n for (n = 0; n < D_CODES; n++) { s.dyn_dtree[n * 2]/*.Freq*/ = 0; }\n for (n = 0; n < BL_CODES; n++) { s.bl_tree[n * 2]/*.Freq*/ = 0; }\n\n s.dyn_ltree[END_BLOCK * 2]/*.Freq*/ = 1;\n s.opt_len = s.static_len = 0;\n s.last_lit = s.matches = 0;\n}\n\n\n/* ===========================================================================\n * Flush the bit buffer and align the output on a byte boundary\n */\nfunction bi_windup(s)\n{\n if (s.bi_valid > 8) {\n put_short(s, s.bi_buf);\n } else if (s.bi_valid > 0) {\n //put_byte(s, (Byte)s->bi_buf);\n s.pending_buf[s.pending++] = s.bi_buf;\n }\n s.bi_buf = 0;\n s.bi_valid = 0;\n}\n\n/* ===========================================================================\n * Copy a stored block, storing first the length and its\n * one's complement if requested.\n */\nfunction copy_block(s, buf, len, header)\n//DeflateState *s;\n//charf *buf; /* the input data */\n//unsigned len; /* its length */\n//int header; /* true if block header must be written */\n{\n bi_windup(s); /* align on byte boundary */\n\n if (header) {\n put_short(s, len);\n put_short(s, ~len);\n }\n// while (len--) {\n// put_byte(s, *buf++);\n// }\n utils.arraySet(s.pending_buf, s.window, buf, len, s.pending);\n s.pending += len;\n}\n\n/* ===========================================================================\n * Compares to subtrees, using the tree depth as tie breaker when\n * the subtrees have equal frequency. This minimizes the worst case length.\n */\nfunction smaller(tree, n, m, depth) {\n var _n2 = n * 2;\n var _m2 = m * 2;\n return (tree[_n2]/*.Freq*/ < tree[_m2]/*.Freq*/ ||\n (tree[_n2]/*.Freq*/ === tree[_m2]/*.Freq*/ && depth[n] <= depth[m]));\n}\n\n/* ===========================================================================\n * Restore the heap property by moving down the tree starting at node k,\n * exchanging a node with the smallest of its two sons if necessary, stopping\n * when the heap property is re-established (each father smaller than its\n * two sons).\n */\nfunction pqdownheap(s, tree, k)\n// deflate_state *s;\n// ct_data *tree; /* the tree to restore */\n// int k; /* node to move down */\n{\n var v = s.heap[k];\n var j = k << 1; /* left son of k */\n while (j <= s.heap_len) {\n /* Set j to the smallest of the two sons: */\n if (j < s.heap_len &&\n smaller(tree, s.heap[j + 1], s.heap[j], s.depth)) {\n j++;\n }\n /* Exit if v is smaller than both sons */\n if (smaller(tree, v, s.heap[j], s.depth)) { break; }\n\n /* Exchange v with the smallest son */\n s.heap[k] = s.heap[j];\n k = j;\n\n /* And continue down the tree, setting j to the left son of k */\n j <<= 1;\n }\n s.heap[k] = v;\n}\n\n\n// inlined manually\n// var SMALLEST = 1;\n\n/* ===========================================================================\n * Send the block data compressed using the given Huffman trees\n */\nfunction compress_block(s, ltree, dtree)\n// deflate_state *s;\n// const ct_data *ltree; /* literal tree */\n// const ct_data *dtree; /* distance tree */\n{\n var dist; /* distance of matched string */\n var lc; /* match length or unmatched char (if dist == 0) */\n var lx = 0; /* running index in l_buf */\n var code; /* the code to send */\n var extra; /* number of extra bits to send */\n\n if (s.last_lit !== 0) {\n do {\n dist = (s.pending_buf[s.d_buf + lx * 2] << 8) | (s.pending_buf[s.d_buf + lx * 2 + 1]);\n lc = s.pending_buf[s.l_buf + lx];\n lx++;\n\n if (dist === 0) {\n send_code(s, lc, ltree); /* send a literal byte */\n //Tracecv(isgraph(lc), (stderr,\" '%c' \", lc));\n } else {\n /* Here, lc is the match length - MIN_MATCH */\n code = _length_code[lc];\n send_code(s, code + LITERALS + 1, ltree); /* send the length code */\n extra = extra_lbits[code];\n if (extra !== 0) {\n lc -= base_length[code];\n send_bits(s, lc, extra); /* send the extra length bits */\n }\n dist--; /* dist is now the match distance - 1 */\n code = d_code(dist);\n //Assert (code < D_CODES, \"bad d_code\");\n\n send_code(s, code, dtree); /* send the distance code */\n extra = extra_dbits[code];\n if (extra !== 0) {\n dist -= base_dist[code];\n send_bits(s, dist, extra); /* send the extra distance bits */\n }\n } /* literal or match pair ? */\n\n /* Check that the overlay between pending_buf and d_buf+l_buf is ok: */\n //Assert((uInt)(s->pending) < s->lit_bufsize + 2*lx,\n // \"pendingBuf overflow\");\n\n } while (lx < s.last_lit);\n }\n\n send_code(s, END_BLOCK, ltree);\n}\n\n\n/* ===========================================================================\n * Construct one Huffman tree and assigns the code bit strings and lengths.\n * Update the total bit length for the current block.\n * IN assertion: the field freq is set for all tree elements.\n * OUT assertions: the fields len and code are set to the optimal bit length\n * and corresponding code. The length opt_len is updated; static_len is\n * also updated if stree is not null. The field max_code is set.\n */\nfunction build_tree(s, desc)\n// deflate_state *s;\n// tree_desc *desc; /* the tree descriptor */\n{\n var tree = desc.dyn_tree;\n var stree = desc.stat_desc.static_tree;\n var has_stree = desc.stat_desc.has_stree;\n var elems = desc.stat_desc.elems;\n var n, m; /* iterate over heap elements */\n var max_code = -1; /* largest code with non zero frequency */\n var node; /* new node being created */\n\n /* Construct the initial heap, with least frequent element in\n * heap[SMALLEST]. The sons of heap[n] are heap[2*n] and heap[2*n+1].\n * heap[0] is not used.\n */\n s.heap_len = 0;\n s.heap_max = HEAP_SIZE;\n\n for (n = 0; n < elems; n++) {\n if (tree[n * 2]/*.Freq*/ !== 0) {\n s.heap[++s.heap_len] = max_code = n;\n s.depth[n] = 0;\n\n } else {\n tree[n * 2 + 1]/*.Len*/ = 0;\n }\n }\n\n /* The pkzip format requires that at least one distance code exists,\n * and that at least one bit should be sent even if there is only one\n * possible code. So to avoid special checks later on we force at least\n * two codes of non zero frequency.\n */\n while (s.heap_len < 2) {\n node = s.heap[++s.heap_len] = (max_code < 2 ? ++max_code : 0);\n tree[node * 2]/*.Freq*/ = 1;\n s.depth[node] = 0;\n s.opt_len--;\n\n if (has_stree) {\n s.static_len -= stree[node * 2 + 1]/*.Len*/;\n }\n /* node is 0 or 1 so it does not have extra bits */\n }\n desc.max_code = max_code;\n\n /* The elements heap[heap_len/2+1 .. heap_len] are leaves of the tree,\n * establish sub-heaps of increasing lengths:\n */\n for (n = (s.heap_len >> 1/*int /2*/); n >= 1; n--) { pqdownheap(s, tree, n); }\n\n /* Construct the Huffman tree by repeatedly combining the least two\n * frequent nodes.\n */\n node = elems; /* next internal node of the tree */\n do {\n //pqremove(s, tree, n); /* n = node of least frequency */\n /*** pqremove ***/\n n = s.heap[1/*SMALLEST*/];\n s.heap[1/*SMALLEST*/] = s.heap[s.heap_len--];\n pqdownheap(s, tree, 1/*SMALLEST*/);\n /***/\n\n m = s.heap[1/*SMALLEST*/]; /* m = node of next least frequency */\n\n s.heap[--s.heap_max] = n; /* keep the nodes sorted by frequency */\n s.heap[--s.heap_max] = m;\n\n /* Create a new node father of n and m */\n tree[node * 2]/*.Freq*/ = tree[n * 2]/*.Freq*/ + tree[m * 2]/*.Freq*/;\n s.depth[node] = (s.depth[n] >= s.depth[m] ? s.depth[n] : s.depth[m]) + 1;\n tree[n * 2 + 1]/*.Dad*/ = tree[m * 2 + 1]/*.Dad*/ = node;\n\n /* and insert the new node in the heap */\n s.heap[1/*SMALLEST*/] = node++;\n pqdownheap(s, tree, 1/*SMALLEST*/);\n\n } while (s.heap_len >= 2);\n\n s.heap[--s.heap_max] = s.heap[1/*SMALLEST*/];\n\n /* At this point, the fields freq and dad are set. We can now\n * generate the bit lengths.\n */\n gen_bitlen(s, desc);\n\n /* The field len is now set, we can generate the bit codes */\n gen_codes(tree, max_code, s.bl_count);\n}\n\n\n/* ===========================================================================\n * Scan a literal or distance tree to determine the frequencies of the codes\n * in the bit length tree.\n */\nfunction scan_tree(s, tree, max_code)\n// deflate_state *s;\n// ct_data *tree; /* the tree to be scanned */\n// int max_code; /* and its largest code of non zero frequency */\n{\n var n; /* iterates over all tree elements */\n var prevlen = -1; /* last emitted length */\n var curlen; /* length of current code */\n\n var nextlen = tree[0 * 2 + 1]/*.Len*/; /* length of next code */\n\n var count = 0; /* repeat count of the current code */\n var max_count = 7; /* max repeat count */\n var min_count = 4; /* min repeat count */\n\n if (nextlen === 0) {\n max_count = 138;\n min_count = 3;\n }\n tree[(max_code + 1) * 2 + 1]/*.Len*/ = 0xffff; /* guard */\n\n for (n = 0; n <= max_code; n++) {\n curlen = nextlen;\n nextlen = tree[(n + 1) * 2 + 1]/*.Len*/;\n\n if (++count < max_count && curlen === nextlen) {\n continue;\n\n } else if (count < min_count) {\n s.bl_tree[curlen * 2]/*.Freq*/ += count;\n\n } else if (curlen !== 0) {\n\n if (curlen !== prevlen) { s.bl_tree[curlen * 2]/*.Freq*/++; }\n s.bl_tree[REP_3_6 * 2]/*.Freq*/++;\n\n } else if (count <= 10) {\n s.bl_tree[REPZ_3_10 * 2]/*.Freq*/++;\n\n } else {\n s.bl_tree[REPZ_11_138 * 2]/*.Freq*/++;\n }\n\n count = 0;\n prevlen = curlen;\n\n if (nextlen === 0) {\n max_count = 138;\n min_count = 3;\n\n } else if (curlen === nextlen) {\n max_count = 6;\n min_count = 3;\n\n } else {\n max_count = 7;\n min_count = 4;\n }\n }\n}\n\n\n/* ===========================================================================\n * Send a literal or distance tree in compressed form, using the codes in\n * bl_tree.\n */\nfunction send_tree(s, tree, max_code)\n// deflate_state *s;\n// ct_data *tree; /* the tree to be scanned */\n// int max_code; /* and its largest code of non zero frequency */\n{\n var n; /* iterates over all tree elements */\n var prevlen = -1; /* last emitted length */\n var curlen; /* length of current code */\n\n var nextlen = tree[0 * 2 + 1]/*.Len*/; /* length of next code */\n\n var count = 0; /* repeat count of the current code */\n var max_count = 7; /* max repeat count */\n var min_count = 4; /* min repeat count */\n\n /* tree[max_code+1].Len = -1; */ /* guard already set */\n if (nextlen === 0) {\n max_count = 138;\n min_count = 3;\n }\n\n for (n = 0; n <= max_code; n++) {\n curlen = nextlen;\n nextlen = tree[(n + 1) * 2 + 1]/*.Len*/;\n\n if (++count < max_count && curlen === nextlen) {\n continue;\n\n } else if (count < min_count) {\n do { send_code(s, curlen, s.bl_tree); } while (--count !== 0);\n\n } else if (curlen !== 0) {\n if (curlen !== prevlen) {\n send_code(s, curlen, s.bl_tree);\n count--;\n }\n //Assert(count >= 3 && count <= 6, \" 3_6?\");\n send_code(s, REP_3_6, s.bl_tree);\n send_bits(s, count - 3, 2);\n\n } else if (count <= 10) {\n send_code(s, REPZ_3_10, s.bl_tree);\n send_bits(s, count - 3, 3);\n\n } else {\n send_code(s, REPZ_11_138, s.bl_tree);\n send_bits(s, count - 11, 7);\n }\n\n count = 0;\n prevlen = curlen;\n if (nextlen === 0) {\n max_count = 138;\n min_count = 3;\n\n } else if (curlen === nextlen) {\n max_count = 6;\n min_count = 3;\n\n } else {\n max_count = 7;\n min_count = 4;\n }\n }\n}\n\n\n/* ===========================================================================\n * Construct the Huffman tree for the bit lengths and return the index in\n * bl_order of the last bit length code to send.\n */\nfunction build_bl_tree(s) {\n var max_blindex; /* index of last bit length code of non zero freq */\n\n /* Determine the bit length frequencies for literal and distance trees */\n scan_tree(s, s.dyn_ltree, s.l_desc.max_code);\n scan_tree(s, s.dyn_dtree, s.d_desc.max_code);\n\n /* Build the bit length tree: */\n build_tree(s, s.bl_desc);\n /* opt_len now includes the length of the tree representations, except\n * the lengths of the bit lengths codes and the 5+5+4 bits for the counts.\n */\n\n /* Determine the number of bit length codes to send. The pkzip format\n * requires that at least 4 bit length codes be sent. (appnote.txt says\n * 3 but the actual value used is 4.)\n */\n for (max_blindex = BL_CODES - 1; max_blindex >= 3; max_blindex--) {\n if (s.bl_tree[bl_order[max_blindex] * 2 + 1]/*.Len*/ !== 0) {\n break;\n }\n }\n /* Update opt_len to include the bit length tree and counts */\n s.opt_len += 3 * (max_blindex + 1) + 5 + 5 + 4;\n //Tracev((stderr, \"\\ndyn trees: dyn %ld, stat %ld\",\n // s->opt_len, s->static_len));\n\n return max_blindex;\n}\n\n\n/* ===========================================================================\n * Send the header for a block using dynamic Huffman trees: the counts, the\n * lengths of the bit length codes, the literal tree and the distance tree.\n * IN assertion: lcodes >= 257, dcodes >= 1, blcodes >= 4.\n */\nfunction send_all_trees(s, lcodes, dcodes, blcodes)\n// deflate_state *s;\n// int lcodes, dcodes, blcodes; /* number of codes for each tree */\n{\n var rank; /* index in bl_order */\n\n //Assert (lcodes >= 257 && dcodes >= 1 && blcodes >= 4, \"not enough codes\");\n //Assert (lcodes <= L_CODES && dcodes <= D_CODES && blcodes <= BL_CODES,\n // \"too many codes\");\n //Tracev((stderr, \"\\nbl counts: \"));\n send_bits(s, lcodes - 257, 5); /* not +255 as stated in appnote.txt */\n send_bits(s, dcodes - 1, 5);\n send_bits(s, blcodes - 4, 4); /* not -3 as stated in appnote.txt */\n for (rank = 0; rank < blcodes; rank++) {\n //Tracev((stderr, \"\\nbl code %2d \", bl_order[rank]));\n send_bits(s, s.bl_tree[bl_order[rank] * 2 + 1]/*.Len*/, 3);\n }\n //Tracev((stderr, \"\\nbl tree: sent %ld\", s->bits_sent));\n\n send_tree(s, s.dyn_ltree, lcodes - 1); /* literal tree */\n //Tracev((stderr, \"\\nlit tree: sent %ld\", s->bits_sent));\n\n send_tree(s, s.dyn_dtree, dcodes - 1); /* distance tree */\n //Tracev((stderr, \"\\ndist tree: sent %ld\", s->bits_sent));\n}\n\n\n/* ===========================================================================\n * Check if the data type is TEXT or BINARY, using the following algorithm:\n * - TEXT if the two conditions below are satisfied:\n * a) There are no non-portable control characters belonging to the\n * \"black list\" (0..6, 14..25, 28..31).\n * b) There is at least one printable character belonging to the\n * \"white list\" (9 {TAB}, 10 {LF}, 13 {CR}, 32..255).\n * - BINARY otherwise.\n * - The following partially-portable control characters form a\n * \"gray list\" that is ignored in this detection algorithm:\n * (7 {BEL}, 8 {BS}, 11 {VT}, 12 {FF}, 26 {SUB}, 27 {ESC}).\n * IN assertion: the fields Freq of dyn_ltree are set.\n */\nfunction detect_data_type(s) {\n /* black_mask is the bit mask of black-listed bytes\n * set bits 0..6, 14..25, and 28..31\n * 0xf3ffc07f = binary 11110011111111111100000001111111\n */\n var black_mask = 0xf3ffc07f;\n var n;\n\n /* Check for non-textual (\"black-listed\") bytes. */\n for (n = 0; n <= 31; n++, black_mask >>>= 1) {\n if ((black_mask & 1) && (s.dyn_ltree[n * 2]/*.Freq*/ !== 0)) {\n return Z_BINARY;\n }\n }\n\n /* Check for textual (\"white-listed\") bytes. */\n if (s.dyn_ltree[9 * 2]/*.Freq*/ !== 0 || s.dyn_ltree[10 * 2]/*.Freq*/ !== 0 ||\n s.dyn_ltree[13 * 2]/*.Freq*/ !== 0) {\n return Z_TEXT;\n }\n for (n = 32; n < LITERALS; n++) {\n if (s.dyn_ltree[n * 2]/*.Freq*/ !== 0) {\n return Z_TEXT;\n }\n }\n\n /* There are no \"black-listed\" or \"white-listed\" bytes:\n * this stream either is empty or has tolerated (\"gray-listed\") bytes only.\n */\n return Z_BINARY;\n}\n\n\nvar static_init_done = false;\n\n/* ===========================================================================\n * Initialize the tree data structures for a new zlib stream.\n */\nfunction _tr_init(s)\n{\n\n if (!static_init_done) {\n tr_static_init();\n static_init_done = true;\n }\n\n s.l_desc = new TreeDesc(s.dyn_ltree, static_l_desc);\n s.d_desc = new TreeDesc(s.dyn_dtree, static_d_desc);\n s.bl_desc = new TreeDesc(s.bl_tree, static_bl_desc);\n\n s.bi_buf = 0;\n s.bi_valid = 0;\n\n /* Initialize the first block of the first file: */\n init_block(s);\n}\n\n\n/* ===========================================================================\n * Send a stored block\n */\nfunction _tr_stored_block(s, buf, stored_len, last)\n//DeflateState *s;\n//charf *buf; /* input block */\n//ulg stored_len; /* length of input block */\n//int last; /* one if this is the last block for a file */\n{\n send_bits(s, (STORED_BLOCK << 1) + (last ? 1 : 0), 3); /* send block type */\n copy_block(s, buf, stored_len, true); /* with header */\n}\n\n\n/* ===========================================================================\n * Send one empty static block to give enough lookahead for inflate.\n * This takes 10 bits, of which 7 may remain in the bit buffer.\n */\nfunction _tr_align(s) {\n send_bits(s, STATIC_TREES << 1, 3);\n send_code(s, END_BLOCK, static_ltree);\n bi_flush(s);\n}\n\n\n/* ===========================================================================\n * Determine the best encoding for the current block: dynamic trees, static\n * trees or store, and output the encoded block to the zip file.\n */\nfunction _tr_flush_block(s, buf, stored_len, last)\n//DeflateState *s;\n//charf *buf; /* input block, or NULL if too old */\n//ulg stored_len; /* length of input block */\n//int last; /* one if this is the last block for a file */\n{\n var opt_lenb, static_lenb; /* opt_len and static_len in bytes */\n var max_blindex = 0; /* index of last bit length code of non zero freq */\n\n /* Build the Huffman trees unless a stored block is forced */\n if (s.level > 0) {\n\n /* Check if the file is binary or text */\n if (s.strm.data_type === Z_UNKNOWN) {\n s.strm.data_type = detect_data_type(s);\n }\n\n /* Construct the literal and distance trees */\n build_tree(s, s.l_desc);\n // Tracev((stderr, \"\\nlit data: dyn %ld, stat %ld\", s->opt_len,\n // s->static_len));\n\n build_tree(s, s.d_desc);\n // Tracev((stderr, \"\\ndist data: dyn %ld, stat %ld\", s->opt_len,\n // s->static_len));\n /* At this point, opt_len and static_len are the total bit lengths of\n * the compressed block data, excluding the tree representations.\n */\n\n /* Build the bit length tree for the above two trees, and get the index\n * in bl_order of the last bit length code to send.\n */\n max_blindex = build_bl_tree(s);\n\n /* Determine the best encoding. Compute the block lengths in bytes. */\n opt_lenb = (s.opt_len + 3 + 7) >>> 3;\n static_lenb = (s.static_len + 3 + 7) >>> 3;\n\n // Tracev((stderr, \"\\nopt %lu(%lu) stat %lu(%lu) stored %lu lit %u \",\n // opt_lenb, s->opt_len, static_lenb, s->static_len, stored_len,\n // s->last_lit));\n\n if (static_lenb <= opt_lenb) { opt_lenb = static_lenb; }\n\n } else {\n // Assert(buf != (char*)0, \"lost buf\");\n opt_lenb = static_lenb = stored_len + 5; /* force a stored block */\n }\n\n if ((stored_len + 4 <= opt_lenb) && (buf !== -1)) {\n /* 4: two words for the lengths */\n\n /* The test buf != NULL is only necessary if LIT_BUFSIZE > WSIZE.\n * Otherwise we can't have processed more than WSIZE input bytes since\n * the last block flush, because compression would have been\n * successful. If LIT_BUFSIZE <= WSIZE, it is never too late to\n * transform a block into a stored block.\n */\n _tr_stored_block(s, buf, stored_len, last);\n\n } else if (s.strategy === Z_FIXED || static_lenb === opt_lenb) {\n\n send_bits(s, (STATIC_TREES << 1) + (last ? 1 : 0), 3);\n compress_block(s, static_ltree, static_dtree);\n\n } else {\n send_bits(s, (DYN_TREES << 1) + (last ? 1 : 0), 3);\n send_all_trees(s, s.l_desc.max_code + 1, s.d_desc.max_code + 1, max_blindex + 1);\n compress_block(s, s.dyn_ltree, s.dyn_dtree);\n }\n // Assert (s->compressed_len == s->bits_sent, \"bad compressed size\");\n /* The above check is made mod 2^32, for files larger than 512 MB\n * and uLong implemented on 32 bits.\n */\n init_block(s);\n\n if (last) {\n bi_windup(s);\n }\n // Tracev((stderr,\"\\ncomprlen %lu(%lu) \", s->compressed_len>>3,\n // s->compressed_len-7*last));\n}\n\n/* ===========================================================================\n * Save the match info and tally the frequency counts. Return true if\n * the current block must be flushed.\n */\nfunction _tr_tally(s, dist, lc)\n// deflate_state *s;\n// unsigned dist; /* distance of matched string */\n// unsigned lc; /* match length-MIN_MATCH or unmatched char (if dist==0) */\n{\n //var out_length, in_length, dcode;\n\n s.pending_buf[s.d_buf + s.last_lit * 2] = (dist >>> 8) & 0xff;\n s.pending_buf[s.d_buf + s.last_lit * 2 + 1] = dist & 0xff;\n\n s.pending_buf[s.l_buf + s.last_lit] = lc & 0xff;\n s.last_lit++;\n\n if (dist === 0) {\n /* lc is the unmatched char */\n s.dyn_ltree[lc * 2]/*.Freq*/++;\n } else {\n s.matches++;\n /* Here, lc is the match length - MIN_MATCH */\n dist--; /* dist = match distance - 1 */\n //Assert((ush)dist < (ush)MAX_DIST(s) &&\n // (ush)lc <= (ush)(MAX_MATCH-MIN_MATCH) &&\n // (ush)d_code(dist) < (ush)D_CODES, \"_tr_tally: bad match\");\n\n s.dyn_ltree[(_length_code[lc] + LITERALS + 1) * 2]/*.Freq*/++;\n s.dyn_dtree[d_code(dist) * 2]/*.Freq*/++;\n }\n\n// (!) This block is disabled in zlib defailts,\n// don't enable it for binary compatibility\n\n//#ifdef TRUNCATE_BLOCK\n// /* Try to guess if it is profitable to stop the current block here */\n// if ((s.last_lit & 0x1fff) === 0 && s.level > 2) {\n// /* Compute an upper bound for the compressed length */\n// out_length = s.last_lit*8;\n// in_length = s.strstart - s.block_start;\n//\n// for (dcode = 0; dcode < D_CODES; dcode++) {\n// out_length += s.dyn_dtree[dcode*2]/*.Freq*/ * (5 + extra_dbits[dcode]);\n// }\n// out_length >>>= 3;\n// //Tracev((stderr,\"\\nlast_lit %u, in %ld, out ~%ld(%ld%%) \",\n// // s->last_lit, in_length, out_length,\n// // 100L - out_length*100L/in_length));\n// if (s.matches < (s.last_lit>>1)/*int /2*/ && out_length < (in_length>>1)/*int /2*/) {\n// return true;\n// }\n// }\n//#endif\n\n return (s.last_lit === s.lit_bufsize - 1);\n /* We avoid equality with lit_bufsize because of wraparound at 64K\n * on 16 bit machines and because stored blocks are restricted to\n * 64K-1 bytes.\n */\n}\n\nexports._tr_init = _tr_init;\nexports._tr_stored_block = _tr_stored_block;\nexports._tr_flush_block = _tr_flush_block;\nexports._tr_tally = _tr_tally;\nexports._tr_align = _tr_align;\n","'use strict';\n\n\nfunction ZStream() {\n /* next input byte */\n this.input = null; // JS specific, because we have no pointers\n this.next_in = 0;\n /* number of bytes available at input */\n this.avail_in = 0;\n /* total number of input bytes read so far */\n this.total_in = 0;\n /* next output byte should be put there */\n this.output = null; // JS specific, because we have no pointers\n this.next_out = 0;\n /* remaining free space at output */\n this.avail_out = 0;\n /* total number of bytes output so far */\n this.total_out = 0;\n /* last error message, NULL if no error */\n this.msg = ''/*Z_NULL*/;\n /* not visible by applications */\n this.state = null;\n /* best guess about the data type: binary or text */\n this.data_type = 2/*Z_UNKNOWN*/;\n /* adler32 value of the uncompressed data */\n this.adler = 0;\n}\n\nmodule.exports = ZStream;\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// resolves . and .. elements in a path array with directory names there\n// must be no slashes, empty elements, or device names (c:\\) in the array\n// (so also no leading and trailing slashes - it does not distinguish\n// relative and absolute paths)\nfunction normalizeArray(parts, allowAboveRoot) {\n // if the path tries to go above the root, `up` ends up > 0\n var up = 0;\n for (var i = parts.length - 1; i >= 0; i--) {\n var last = parts[i];\n if (last === '.') {\n parts.splice(i, 1);\n } else if (last === '..') {\n parts.splice(i, 1);\n up++;\n } else if (up) {\n parts.splice(i, 1);\n up--;\n }\n }\n\n // if the path is allowed to go above the root, restore leading ..s\n if (allowAboveRoot) {\n for (; up--; up) {\n parts.unshift('..');\n }\n }\n\n return parts;\n}\n\n// Split a filename into [root, dir, basename, ext], unix version\n// 'root' is just a slash, or nothing.\nvar splitPathRe =\n /^(\\/?|)([\\s\\S]*?)((?:\\.{1,2}|[^\\/]+?|)(\\.[^.\\/]*|))(?:[\\/]*)$/;\nvar splitPath = function(filename) {\n return splitPathRe.exec(filename).slice(1);\n};\n\n// path.resolve([from ...], to)\n// posix version\nexports.resolve = function() {\n var resolvedPath = '',\n resolvedAbsolute = false;\n\n for (var i = arguments.length - 1; i >= -1 && !resolvedAbsolute; i--) {\n var path = (i >= 0) ? arguments[i] : process.cwd();\n\n // Skip empty and invalid entries\n if (typeof path !== 'string') {\n throw new TypeError('Arguments to path.resolve must be strings');\n } else if (!path) {\n continue;\n }\n\n resolvedPath = path + '/' + resolvedPath;\n resolvedAbsolute = path.charAt(0) === '/';\n }\n\n // At this point the path should be resolved to a full absolute path, but\n // handle relative paths to be safe (might happen when process.cwd() fails)\n\n // Normalize the path\n resolvedPath = normalizeArray(filter(resolvedPath.split('/'), function(p) {\n return !!p;\n }), !resolvedAbsolute).join('/');\n\n return ((resolvedAbsolute ? '/' : '') + resolvedPath) || '.';\n};\n\n// path.normalize(path)\n// posix version\nexports.normalize = function(path) {\n var isAbsolute = exports.isAbsolute(path),\n trailingSlash = substr(path, -1) === '/';\n\n // Normalize the path\n path = normalizeArray(filter(path.split('/'), function(p) {\n return !!p;\n }), !isAbsolute).join('/');\n\n if (!path && !isAbsolute) {\n path = '.';\n }\n if (path && trailingSlash) {\n path += '/';\n }\n\n return (isAbsolute ? '/' : '') + path;\n};\n\n// posix version\nexports.isAbsolute = function(path) {\n return path.charAt(0) === '/';\n};\n\n// posix version\nexports.join = function() {\n var paths = Array.prototype.slice.call(arguments, 0);\n return exports.normalize(filter(paths, function(p, index) {\n if (typeof p !== 'string') {\n throw new TypeError('Arguments to path.join must be strings');\n }\n return p;\n }).join('/'));\n};\n\n\n// path.relative(from, to)\n// posix version\nexports.relative = function(from, to) {\n from = exports.resolve(from).substr(1);\n to = exports.resolve(to).substr(1);\n\n function trim(arr) {\n var start = 0;\n for (; start < arr.length; start++) {\n if (arr[start] !== '') break;\n }\n\n var end = arr.length - 1;\n for (; end >= 0; end--) {\n if (arr[end] !== '') break;\n }\n\n if (start > end) return [];\n return arr.slice(start, end - start + 1);\n }\n\n var fromParts = trim(from.split('/'));\n var toParts = trim(to.split('/'));\n\n var length = Math.min(fromParts.length, toParts.length);\n var samePartsLength = length;\n for (var i = 0; i < length; i++) {\n if (fromParts[i] !== toParts[i]) {\n samePartsLength = i;\n break;\n }\n }\n\n var outputParts = [];\n for (var i = samePartsLength; i < fromParts.length; i++) {\n outputParts.push('..');\n }\n\n outputParts = outputParts.concat(toParts.slice(samePartsLength));\n\n return outputParts.join('/');\n};\n\nexports.sep = '/';\nexports.delimiter = ':';\n\nexports.dirname = function(path) {\n var result = splitPath(path),\n root = result[0],\n dir = result[1];\n\n if (!root && !dir) {\n // No dirname whatsoever\n return '.';\n }\n\n if (dir) {\n // It has a dirname, strip trailing slash\n dir = dir.substr(0, dir.length - 1);\n }\n\n return root + dir;\n};\n\n\nexports.basename = function(path, ext) {\n var f = splitPath(path)[2];\n // TODO: make this comparison case-insensitive on windows?\n if (ext && f.substr(-1 * ext.length) === ext) {\n f = f.substr(0, f.length - ext.length);\n }\n return f;\n};\n\n\nexports.extname = function(path) {\n return splitPath(path)[3];\n};\n\nfunction filter (xs, f) {\n if (xs.filter) return xs.filter(f);\n var res = [];\n for (var i = 0; i < xs.length; i++) {\n if (f(xs[i], i, xs)) res.push(xs[i]);\n }\n return res;\n}\n\n// String.prototype.substr - negative index don't work in IE8\nvar substr = 'ab'.substr(-1) === 'b'\n ? function (str, start, len) { return str.substr(start, len) }\n : function (str, start, len) {\n if (start < 0) start = str.length + start;\n return str.substr(start, len);\n }\n;\n","// shim for using process in browser\nvar process = module.exports = {};\n\n// cached from whatever global is present so that test runners that stub it\n// don't break things. But we need to wrap it in a try catch in case it is\n// wrapped in strict mode code which doesn't define any globals. It's inside a\n// function because try/catches deoptimize in certain engines.\n\nvar cachedSetTimeout;\nvar cachedClearTimeout;\n\nfunction defaultSetTimout() {\n throw new Error('setTimeout has not been defined');\n}\nfunction defaultClearTimeout () {\n throw new Error('clearTimeout has not been defined');\n}\n(function () {\n try {\n if (typeof setTimeout === 'function') {\n cachedSetTimeout = setTimeout;\n } else {\n cachedSetTimeout = defaultSetTimout;\n }\n } catch (e) {\n cachedSetTimeout = defaultSetTimout;\n }\n try {\n if (typeof clearTimeout === 'function') {\n cachedClearTimeout = clearTimeout;\n } else {\n cachedClearTimeout = defaultClearTimeout;\n }\n } catch (e) {\n cachedClearTimeout = defaultClearTimeout;\n }\n} ())\nfunction runTimeout(fun) {\n if (cachedSetTimeout === setTimeout) {\n //normal enviroments in sane situations\n return setTimeout(fun, 0);\n }\n // if setTimeout wasn't available but was latter defined\n if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {\n cachedSetTimeout = setTimeout;\n return setTimeout(fun, 0);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedSetTimeout(fun, 0);\n } catch(e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedSetTimeout.call(null, fun, 0);\n } catch(e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error\n return cachedSetTimeout.call(this, fun, 0);\n }\n }\n\n\n}\nfunction runClearTimeout(marker) {\n if (cachedClearTimeout === clearTimeout) {\n //normal enviroments in sane situations\n return clearTimeout(marker);\n }\n // if clearTimeout wasn't available but was latter defined\n if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {\n cachedClearTimeout = clearTimeout;\n return clearTimeout(marker);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedClearTimeout(marker);\n } catch (e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedClearTimeout.call(null, marker);\n } catch (e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error.\n // Some versions of I.E. have different rules for clearTimeout vs setTimeout\n return cachedClearTimeout.call(this, marker);\n }\n }\n\n\n\n}\nvar queue = [];\nvar draining = false;\nvar currentQueue;\nvar queueIndex = -1;\n\nfunction cleanUpNextTick() {\n if (!draining || !currentQueue) {\n return;\n }\n draining = false;\n if (currentQueue.length) {\n queue = currentQueue.concat(queue);\n } else {\n queueIndex = -1;\n }\n if (queue.length) {\n drainQueue();\n }\n}\n\nfunction drainQueue() {\n if (draining) {\n return;\n }\n var timeout = runTimeout(cleanUpNextTick);\n draining = true;\n\n var len = queue.length;\n while(len) {\n currentQueue = queue;\n queue = [];\n while (++queueIndex < len) {\n if (currentQueue) {\n currentQueue[queueIndex].run();\n }\n }\n queueIndex = -1;\n len = queue.length;\n }\n currentQueue = null;\n draining = false;\n runClearTimeout(timeout);\n}\n\nprocess.nextTick = function (fun) {\n var args = new Array(arguments.length - 1);\n if (arguments.length > 1) {\n for (var i = 1; i < arguments.length; i++) {\n args[i - 1] = arguments[i];\n }\n }\n queue.push(new Item(fun, args));\n if (queue.length === 1 && !draining) {\n runTimeout(drainQueue);\n }\n};\n\n// v8 likes predictible objects\nfunction Item(fun, array) {\n this.fun = fun;\n this.array = array;\n}\nItem.prototype.run = function () {\n this.fun.apply(null, this.array);\n};\nprocess.title = 'browser';\nprocess.browser = true;\nprocess.env = {};\nprocess.argv = [];\nprocess.version = ''; // empty string to avoid regexp issues\nprocess.versions = {};\n\nfunction noop() {}\n\nprocess.on = noop;\nprocess.addListener = noop;\nprocess.once = noop;\nprocess.off = noop;\nprocess.removeListener = noop;\nprocess.removeAllListeners = noop;\nprocess.emit = noop;\nprocess.prependListener = noop;\nprocess.prependOnceListener = noop;\n\nprocess.listeners = function (name) { return [] }\n\nprocess.binding = function (name) {\n throw new Error('process.binding is not supported');\n};\n\nprocess.cwd = function () { return '/' };\nprocess.chdir = function (dir) {\n throw new Error('process.chdir is not supported');\n};\nprocess.umask = function() { return 0; };\n","export var REVISION = '99';\nexport var MOUSE = { LEFT: 0, MIDDLE: 1, RIGHT: 2 };\nexport var CullFaceNone = 0;\nexport var CullFaceBack = 1;\nexport var CullFaceFront = 2;\nexport var CullFaceFrontBack = 3;\nexport var FrontFaceDirectionCW = 0;\nexport var FrontFaceDirectionCCW = 1;\nexport var BasicShadowMap = 0;\nexport var PCFShadowMap = 1;\nexport var PCFSoftShadowMap = 2;\nexport var FrontSide = 0;\nexport var BackSide = 1;\nexport var DoubleSide = 2;\nexport var FlatShading = 1;\nexport var SmoothShading = 2;\nexport var NoColors = 0;\nexport var FaceColors = 1;\nexport var VertexColors = 2;\nexport var NoBlending = 0;\nexport var NormalBlending = 1;\nexport var AdditiveBlending = 2;\nexport var SubtractiveBlending = 3;\nexport var MultiplyBlending = 4;\nexport var CustomBlending = 5;\nexport var AddEquation = 100;\nexport var SubtractEquation = 101;\nexport var ReverseSubtractEquation = 102;\nexport var MinEquation = 103;\nexport var MaxEquation = 104;\nexport var ZeroFactor = 200;\nexport var OneFactor = 201;\nexport var SrcColorFactor = 202;\nexport var OneMinusSrcColorFactor = 203;\nexport var SrcAlphaFactor = 204;\nexport var OneMinusSrcAlphaFactor = 205;\nexport var DstAlphaFactor = 206;\nexport var OneMinusDstAlphaFactor = 207;\nexport var DstColorFactor = 208;\nexport var OneMinusDstColorFactor = 209;\nexport var SrcAlphaSaturateFactor = 210;\nexport var NeverDepth = 0;\nexport var AlwaysDepth = 1;\nexport var LessDepth = 2;\nexport var LessEqualDepth = 3;\nexport var EqualDepth = 4;\nexport var GreaterEqualDepth = 5;\nexport var GreaterDepth = 6;\nexport var NotEqualDepth = 7;\nexport var MultiplyOperation = 0;\nexport var MixOperation = 1;\nexport var AddOperation = 2;\nexport var NoToneMapping = 0;\nexport var LinearToneMapping = 1;\nexport var ReinhardToneMapping = 2;\nexport var Uncharted2ToneMapping = 3;\nexport var CineonToneMapping = 4;\nexport var ACESFilmicToneMapping = 5;\n\nexport var UVMapping = 300;\nexport var CubeReflectionMapping = 301;\nexport var CubeRefractionMapping = 302;\nexport var EquirectangularReflectionMapping = 303;\nexport var EquirectangularRefractionMapping = 304;\nexport var SphericalReflectionMapping = 305;\nexport var CubeUVReflectionMapping = 306;\nexport var CubeUVRefractionMapping = 307;\nexport var RepeatWrapping = 1000;\nexport var ClampToEdgeWrapping = 1001;\nexport var MirroredRepeatWrapping = 1002;\nexport var NearestFilter = 1003;\nexport var NearestMipMapNearestFilter = 1004;\nexport var NearestMipMapLinearFilter = 1005;\nexport var LinearFilter = 1006;\nexport var LinearMipMapNearestFilter = 1007;\nexport var LinearMipMapLinearFilter = 1008;\nexport var UnsignedByteType = 1009;\nexport var ByteType = 1010;\nexport var ShortType = 1011;\nexport var UnsignedShortType = 1012;\nexport var IntType = 1013;\nexport var UnsignedIntType = 1014;\nexport var FloatType = 1015;\nexport var HalfFloatType = 1016;\nexport var UnsignedShort4444Type = 1017;\nexport var UnsignedShort5551Type = 1018;\nexport var UnsignedShort565Type = 1019;\nexport var UnsignedInt248Type = 1020;\nexport var AlphaFormat = 1021;\nexport var RGBFormat = 1022;\nexport var RGBAFormat = 1023;\nexport var LuminanceFormat = 1024;\nexport var LuminanceAlphaFormat = 1025;\nexport var RGBEFormat = RGBAFormat;\nexport var DepthFormat = 1026;\nexport var DepthStencilFormat = 1027;\nexport var RedFormat = 1028;\nexport var RGB_S3TC_DXT1_Format = 33776;\nexport var RGBA_S3TC_DXT1_Format = 33777;\nexport var RGBA_S3TC_DXT3_Format = 33778;\nexport var RGBA_S3TC_DXT5_Format = 33779;\nexport var RGB_PVRTC_4BPPV1_Format = 35840;\nexport var RGB_PVRTC_2BPPV1_Format = 35841;\nexport var RGBA_PVRTC_4BPPV1_Format = 35842;\nexport var RGBA_PVRTC_2BPPV1_Format = 35843;\nexport var RGB_ETC1_Format = 36196;\nexport var RGBA_ASTC_4x4_Format = 37808;\nexport var RGBA_ASTC_5x4_Format = 37809;\nexport var RGBA_ASTC_5x5_Format = 37810;\nexport var RGBA_ASTC_6x5_Format = 37811;\nexport var RGBA_ASTC_6x6_Format = 37812;\nexport var RGBA_ASTC_8x5_Format = 37813;\nexport var RGBA_ASTC_8x6_Format = 37814;\nexport var RGBA_ASTC_8x8_Format = 37815;\nexport var RGBA_ASTC_10x5_Format = 37816;\nexport var RGBA_ASTC_10x6_Format = 37817;\nexport var RGBA_ASTC_10x8_Format = 37818;\nexport var RGBA_ASTC_10x10_Format = 37819;\nexport var RGBA_ASTC_12x10_Format = 37820;\nexport var RGBA_ASTC_12x12_Format = 37821;\nexport var LoopOnce = 2200;\nexport var LoopRepeat = 2201;\nexport var LoopPingPong = 2202;\nexport var InterpolateDiscrete = 2300;\nexport var InterpolateLinear = 2301;\nexport var InterpolateSmooth = 2302;\nexport var ZeroCurvatureEnding = 2400;\nexport var ZeroSlopeEnding = 2401;\nexport var WrapAroundEnding = 2402;\nexport var TrianglesDrawMode = 0;\nexport var TriangleStripDrawMode = 1;\nexport var TriangleFanDrawMode = 2;\nexport var LinearEncoding = 3000;\nexport var sRGBEncoding = 3001;\nexport var GammaEncoding = 3007;\nexport var RGBEEncoding = 3002;\nexport var LogLuvEncoding = 3003;\nexport var RGBM7Encoding = 3004;\nexport var RGBM16Encoding = 3005;\nexport var RGBDEncoding = 3006;\nexport var BasicDepthPacking = 3200;\nexport var RGBADepthPacking = 3201;\nexport var TangentSpaceNormalMap = 0;\nexport var ObjectSpaceNormalMap = 1;\n","import { Ray } from '../math/Ray.js';\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author bhouston / http://clara.io/\n * @author stephomi / http://stephaneginier.com/\n */\n\nfunction Raycaster( origin, direction, near, far ) {\n\n\tthis.ray = new Ray( origin, direction );\n\t// direction is assumed to be normalized (for accurate distance calculations)\n\n\tthis.near = near || 0;\n\tthis.far = far || Infinity;\n\n\tthis.params = {\n\t\tMesh: {},\n\t\tLine: {},\n\t\tLOD: {},\n\t\tPoints: { threshold: 1 },\n\t\tSprite: {}\n\t};\n\n\tObject.defineProperties( this.params, {\n\t\tPointCloud: {\n\t\t\tget: function () {\n\n\t\t\t\tconsole.warn( 'THREE.Raycaster: params.PointCloud has been renamed to params.Points.' );\n\t\t\t\treturn this.Points;\n\n\t\t\t}\n\t\t}\n\t} );\n\n}\n\nfunction ascSort( a, b ) {\n\n\treturn a.distance - b.distance;\n\n}\n\nfunction intersectObject( object, raycaster, intersects, recursive ) {\n\n\tif ( object.visible === false ) return;\n\n\tobject.raycast( raycaster, intersects );\n\n\tif ( recursive === true ) {\n\n\t\tvar children = object.children;\n\n\t\tfor ( var i = 0, l = children.length; i < l; i ++ ) {\n\n\t\t\tintersectObject( children[ i ], raycaster, intersects, true );\n\n\t\t}\n\n\t}\n\n}\n\nObject.assign( Raycaster.prototype, {\n\n\tlinePrecision: 1,\n\n\tset: function ( origin, direction ) {\n\n\t\t// direction is assumed to be normalized (for accurate distance calculations)\n\n\t\tthis.ray.set( origin, direction );\n\n\t},\n\n\tsetFromCamera: function ( coords, camera ) {\n\n\t\tif ( ( camera && camera.isPerspectiveCamera ) ) {\n\n\t\t\tthis.ray.origin.setFromMatrixPosition( camera.matrixWorld );\n\t\t\tthis.ray.direction.set( coords.x, coords.y, 0.5 ).unproject( camera ).sub( this.ray.origin ).normalize();\n\n\t\t} else if ( ( camera && camera.isOrthographicCamera ) ) {\n\n\t\t\tthis.ray.origin.set( coords.x, coords.y, ( camera.near + camera.far ) / ( camera.near - camera.far ) ).unproject( camera ); // set origin in plane of camera\n\t\t\tthis.ray.direction.set( 0, 0, - 1 ).transformDirection( camera.matrixWorld );\n\n\t\t} else {\n\n\t\t\tconsole.error( 'THREE.Raycaster: Unsupported camera type.' );\n\n\t\t}\n\n\t},\n\n\tintersectObject: function ( object, recursive, optionalTarget ) {\n\n\t\tvar intersects = optionalTarget || [];\n\n\t\tintersectObject( object, this, intersects, recursive );\n\n\t\tintersects.sort( ascSort );\n\n\t\treturn intersects;\n\n\t},\n\n\tintersectObjects: function ( objects, recursive, optionalTarget ) {\n\n\t\tvar intersects = optionalTarget || [];\n\n\t\tif ( Array.isArray( objects ) === false ) {\n\n\t\t\tconsole.warn( 'THREE.Raycaster.intersectObjects: objects is not an Array.' );\n\t\t\treturn intersects;\n\n\t\t}\n\n\t\tfor ( var i = 0, l = objects.length; i < l; i ++ ) {\n\n\t\t\tintersectObject( objects[ i ], this, intersects, recursive );\n\n\t\t}\n\n\t\tintersects.sort( ascSort );\n\n\t\treturn intersects;\n\n\t}\n\n} );\n\n\nexport { Raycaster };\n","import { Vector3 } from './Vector3.js';\nimport { Sphere } from './Sphere.js';\n\n/**\n * @author bhouston / http://clara.io\n * @author WestLangley / http://github.com/WestLangley\n */\n\nfunction Box3( min, max ) {\n\n\tthis.min = ( min !== undefined ) ? min : new Vector3( + Infinity, + Infinity, + Infinity );\n\tthis.max = ( max !== undefined ) ? max : new Vector3( - Infinity, - Infinity, - Infinity );\n\n}\n\nObject.assign( Box3.prototype, {\n\n\tisBox3: true,\n\n\tset: function ( min, max ) {\n\n\t\tthis.min.copy( min );\n\t\tthis.max.copy( max );\n\n\t\treturn this;\n\n\t},\n\n\tsetFromArray: function ( array ) {\n\n\t\tvar minX = + Infinity;\n\t\tvar minY = + Infinity;\n\t\tvar minZ = + Infinity;\n\n\t\tvar maxX = - Infinity;\n\t\tvar maxY = - Infinity;\n\t\tvar maxZ = - Infinity;\n\n\t\tfor ( var i = 0, l = array.length; i < l; i += 3 ) {\n\n\t\t\tvar x = array[ i ];\n\t\t\tvar y = array[ i + 1 ];\n\t\t\tvar z = array[ i + 2 ];\n\n\t\t\tif ( x < minX ) minX = x;\n\t\t\tif ( y < minY ) minY = y;\n\t\t\tif ( z < minZ ) minZ = z;\n\n\t\t\tif ( x > maxX ) maxX = x;\n\t\t\tif ( y > maxY ) maxY = y;\n\t\t\tif ( z > maxZ ) maxZ = z;\n\n\t\t}\n\n\t\tthis.min.set( minX, minY, minZ );\n\t\tthis.max.set( maxX, maxY, maxZ );\n\n\t\treturn this;\n\n\t},\n\n\tsetFromBufferAttribute: function ( attribute ) {\n\n\t\tvar minX = + Infinity;\n\t\tvar minY = + Infinity;\n\t\tvar minZ = + Infinity;\n\n\t\tvar maxX = - Infinity;\n\t\tvar maxY = - Infinity;\n\t\tvar maxZ = - Infinity;\n\n\t\tfor ( var i = 0, l = attribute.count; i < l; i ++ ) {\n\n\t\t\tvar x = attribute.getX( i );\n\t\t\tvar y = attribute.getY( i );\n\t\t\tvar z = attribute.getZ( i );\n\n\t\t\tif ( x < minX ) minX = x;\n\t\t\tif ( y < minY ) minY = y;\n\t\t\tif ( z < minZ ) minZ = z;\n\n\t\t\tif ( x > maxX ) maxX = x;\n\t\t\tif ( y > maxY ) maxY = y;\n\t\t\tif ( z > maxZ ) maxZ = z;\n\n\t\t}\n\n\t\tthis.min.set( minX, minY, minZ );\n\t\tthis.max.set( maxX, maxY, maxZ );\n\n\t\treturn this;\n\n\t},\n\n\tsetFromPoints: function ( points ) {\n\n\t\tthis.makeEmpty();\n\n\t\tfor ( var i = 0, il = points.length; i < il; i ++ ) {\n\n\t\t\tthis.expandByPoint( points[ i ] );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tsetFromCenterAndSize: function () {\n\n\t\tvar v1 = new Vector3();\n\n\t\treturn function setFromCenterAndSize( center, size ) {\n\n\t\t\tvar halfSize = v1.copy( size ).multiplyScalar( 0.5 );\n\n\t\t\tthis.min.copy( center ).sub( halfSize );\n\t\t\tthis.max.copy( center ).add( halfSize );\n\n\t\t\treturn this;\n\n\t\t};\n\n\t}(),\n\n\tsetFromObject: function ( object ) {\n\n\t\tthis.makeEmpty();\n\n\t\treturn this.expandByObject( object );\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor().copy( this );\n\n\t},\n\n\tcopy: function ( box ) {\n\n\t\tthis.min.copy( box.min );\n\t\tthis.max.copy( box.max );\n\n\t\treturn this;\n\n\t},\n\n\tmakeEmpty: function () {\n\n\t\tthis.min.x = this.min.y = this.min.z = + Infinity;\n\t\tthis.max.x = this.max.y = this.max.z = - Infinity;\n\n\t\treturn this;\n\n\t},\n\n\tisEmpty: function () {\n\n\t\t// this is a more robust check for empty than ( volume <= 0 ) because volume can get positive with two negative axes\n\n\t\treturn ( this.max.x < this.min.x ) || ( this.max.y < this.min.y ) || ( this.max.z < this.min.z );\n\n\t},\n\n\tgetCenter: function ( target ) {\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Box3: .getCenter() target is now required' );\n\t\t\ttarget = new Vector3();\n\n\t\t}\n\n\t\treturn this.isEmpty() ? target.set( 0, 0, 0 ) : target.addVectors( this.min, this.max ).multiplyScalar( 0.5 );\n\n\t},\n\n\tgetSize: function ( target ) {\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Box3: .getSize() target is now required' );\n\t\t\ttarget = new Vector3();\n\n\t\t}\n\n\t\treturn this.isEmpty() ? target.set( 0, 0, 0 ) : target.subVectors( this.max, this.min );\n\n\t},\n\n\texpandByPoint: function ( point ) {\n\n\t\tthis.min.min( point );\n\t\tthis.max.max( point );\n\n\t\treturn this;\n\n\t},\n\n\texpandByVector: function ( vector ) {\n\n\t\tthis.min.sub( vector );\n\t\tthis.max.add( vector );\n\n\t\treturn this;\n\n\t},\n\n\texpandByScalar: function ( scalar ) {\n\n\t\tthis.min.addScalar( - scalar );\n\t\tthis.max.addScalar( scalar );\n\n\t\treturn this;\n\n\t},\n\n\texpandByObject: function () {\n\n\t\t// Computes the world-axis-aligned bounding box of an object (including its children),\n\t\t// accounting for both the object's, and children's, world transforms\n\n\t\tvar scope, i, l;\n\n\t\tvar v1 = new Vector3();\n\n\t\tfunction traverse( node ) {\n\n\t\t\tvar geometry = node.geometry;\n\n\t\t\tif ( geometry !== undefined ) {\n\n\t\t\t\tif ( geometry.isGeometry ) {\n\n\t\t\t\t\tvar vertices = geometry.vertices;\n\n\t\t\t\t\tfor ( i = 0, l = vertices.length; i < l; i ++ ) {\n\n\t\t\t\t\t\tv1.copy( vertices[ i ] );\n\t\t\t\t\t\tv1.applyMatrix4( node.matrixWorld );\n\n\t\t\t\t\t\tscope.expandByPoint( v1 );\n\n\t\t\t\t\t}\n\n\t\t\t\t} else if ( geometry.isBufferGeometry ) {\n\n\t\t\t\t\tvar attribute = geometry.attributes.position;\n\n\t\t\t\t\tif ( attribute !== undefined ) {\n\n\t\t\t\t\t\tfor ( i = 0, l = attribute.count; i < l; i ++ ) {\n\n\t\t\t\t\t\t\tv1.fromBufferAttribute( attribute, i ).applyMatrix4( node.matrixWorld );\n\n\t\t\t\t\t\t\tscope.expandByPoint( v1 );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn function expandByObject( object ) {\n\n\t\t\tscope = this;\n\n\t\t\tobject.updateMatrixWorld( true );\n\n\t\t\tobject.traverse( traverse );\n\n\t\t\treturn this;\n\n\t\t};\n\n\t}(),\n\n\tcontainsPoint: function ( point ) {\n\n\t\treturn point.x < this.min.x || point.x > this.max.x ||\n\t\t\tpoint.y < this.min.y || point.y > this.max.y ||\n\t\t\tpoint.z < this.min.z || point.z > this.max.z ? false : true;\n\n\t},\n\n\tcontainsBox: function ( box ) {\n\n\t\treturn this.min.x <= box.min.x && box.max.x <= this.max.x &&\n\t\t\tthis.min.y <= box.min.y && box.max.y <= this.max.y &&\n\t\t\tthis.min.z <= box.min.z && box.max.z <= this.max.z;\n\n\t},\n\n\tgetParameter: function ( point, target ) {\n\n\t\t// This can potentially have a divide by zero if the box\n\t\t// has a size dimension of 0.\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Box3: .getParameter() target is now required' );\n\t\t\ttarget = new Vector3();\n\n\t\t}\n\n\t\treturn target.set(\n\t\t\t( point.x - this.min.x ) / ( this.max.x - this.min.x ),\n\t\t\t( point.y - this.min.y ) / ( this.max.y - this.min.y ),\n\t\t\t( point.z - this.min.z ) / ( this.max.z - this.min.z )\n\t\t);\n\n\t},\n\n\tintersectsBox: function ( box ) {\n\n\t\t// using 6 splitting planes to rule out intersections.\n\t\treturn box.max.x < this.min.x || box.min.x > this.max.x ||\n\t\t\tbox.max.y < this.min.y || box.min.y > this.max.y ||\n\t\t\tbox.max.z < this.min.z || box.min.z > this.max.z ? false : true;\n\n\t},\n\n\tintersectsSphere: ( function () {\n\n\t\tvar closestPoint = new Vector3();\n\n\t\treturn function intersectsSphere( sphere ) {\n\n\t\t\t// Find the point on the AABB closest to the sphere center.\n\t\t\tthis.clampPoint( sphere.center, closestPoint );\n\n\t\t\t// If that point is inside the sphere, the AABB and sphere intersect.\n\t\t\treturn closestPoint.distanceToSquared( sphere.center ) <= ( sphere.radius * sphere.radius );\n\n\t\t};\n\n\t} )(),\n\n\tintersectsPlane: function ( plane ) {\n\n\t\t// We compute the minimum and maximum dot product values. If those values\n\t\t// are on the same side (back or front) of the plane, then there is no intersection.\n\n\t\tvar min, max;\n\n\t\tif ( plane.normal.x > 0 ) {\n\n\t\t\tmin = plane.normal.x * this.min.x;\n\t\t\tmax = plane.normal.x * this.max.x;\n\n\t\t} else {\n\n\t\t\tmin = plane.normal.x * this.max.x;\n\t\t\tmax = plane.normal.x * this.min.x;\n\n\t\t}\n\n\t\tif ( plane.normal.y > 0 ) {\n\n\t\t\tmin += plane.normal.y * this.min.y;\n\t\t\tmax += plane.normal.y * this.max.y;\n\n\t\t} else {\n\n\t\t\tmin += plane.normal.y * this.max.y;\n\t\t\tmax += plane.normal.y * this.min.y;\n\n\t\t}\n\n\t\tif ( plane.normal.z > 0 ) {\n\n\t\t\tmin += plane.normal.z * this.min.z;\n\t\t\tmax += plane.normal.z * this.max.z;\n\n\t\t} else {\n\n\t\t\tmin += plane.normal.z * this.max.z;\n\t\t\tmax += plane.normal.z * this.min.z;\n\n\t\t}\n\n\t\treturn ( min <= - plane.constant && max >= - plane.constant );\n\n\t},\n\n\tintersectsTriangle: ( function () {\n\n\t\t// triangle centered vertices\n\t\tvar v0 = new Vector3();\n\t\tvar v1 = new Vector3();\n\t\tvar v2 = new Vector3();\n\n\t\t// triangle edge vectors\n\t\tvar f0 = new Vector3();\n\t\tvar f1 = new Vector3();\n\t\tvar f2 = new Vector3();\n\n\t\tvar testAxis = new Vector3();\n\n\t\tvar center = new Vector3();\n\t\tvar extents = new Vector3();\n\n\t\tvar triangleNormal = new Vector3();\n\n\t\tfunction satForAxes( axes ) {\n\n\t\t\tvar i, j;\n\n\t\t\tfor ( i = 0, j = axes.length - 3; i <= j; i += 3 ) {\n\n\t\t\t\ttestAxis.fromArray( axes, i );\n\t\t\t\t// project the aabb onto the seperating axis\n\t\t\t\tvar r = extents.x * Math.abs( testAxis.x ) + extents.y * Math.abs( testAxis.y ) + extents.z * Math.abs( testAxis.z );\n\t\t\t\t// project all 3 vertices of the triangle onto the seperating axis\n\t\t\t\tvar p0 = v0.dot( testAxis );\n\t\t\t\tvar p1 = v1.dot( testAxis );\n\t\t\t\tvar p2 = v2.dot( testAxis );\n\t\t\t\t// actual test, basically see if either of the most extreme of the triangle points intersects r\n\t\t\t\tif ( Math.max( - Math.max( p0, p1, p2 ), Math.min( p0, p1, p2 ) ) > r ) {\n\n\t\t\t\t\t// points of the projected triangle are outside the projected half-length of the aabb\n\t\t\t\t\t// the axis is seperating and we can exit\n\t\t\t\t\treturn false;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn true;\n\n\t\t}\n\n\t\treturn function intersectsTriangle( triangle ) {\n\n\t\t\tif ( this.isEmpty() ) {\n\n\t\t\t\treturn false;\n\n\t\t\t}\n\n\t\t\t// compute box center and extents\n\t\t\tthis.getCenter( center );\n\t\t\textents.subVectors( this.max, center );\n\n\t\t\t// translate triangle to aabb origin\n\t\t\tv0.subVectors( triangle.a, center );\n\t\t\tv1.subVectors( triangle.b, center );\n\t\t\tv2.subVectors( triangle.c, center );\n\n\t\t\t// compute edge vectors for triangle\n\t\t\tf0.subVectors( v1, v0 );\n\t\t\tf1.subVectors( v2, v1 );\n\t\t\tf2.subVectors( v0, v2 );\n\n\t\t\t// test against axes that are given by cross product combinations of the edges of the triangle and the edges of the aabb\n\t\t\t// make an axis testing of each of the 3 sides of the aabb against each of the 3 sides of the triangle = 9 axis of separation\n\t\t\t// axis_ij = u_i x f_j (u0, u1, u2 = face normals of aabb = x,y,z axes vectors since aabb is axis aligned)\n\t\t\tvar axes = [\n\t\t\t\t0, - f0.z, f0.y, 0, - f1.z, f1.y, 0, - f2.z, f2.y,\n\t\t\t\tf0.z, 0, - f0.x, f1.z, 0, - f1.x, f2.z, 0, - f2.x,\n\t\t\t\t- f0.y, f0.x, 0, - f1.y, f1.x, 0, - f2.y, f2.x, 0\n\t\t\t];\n\t\t\tif ( ! satForAxes( axes ) ) {\n\n\t\t\t\treturn false;\n\n\t\t\t}\n\n\t\t\t// test 3 face normals from the aabb\n\t\t\taxes = [ 1, 0, 0, 0, 1, 0, 0, 0, 1 ];\n\t\t\tif ( ! satForAxes( axes ) ) {\n\n\t\t\t\treturn false;\n\n\t\t\t}\n\n\t\t\t// finally testing the face normal of the triangle\n\t\t\t// use already existing triangle edge vectors here\n\t\t\ttriangleNormal.crossVectors( f0, f1 );\n\t\t\taxes = [ triangleNormal.x, triangleNormal.y, triangleNormal.z ];\n\t\t\treturn satForAxes( axes );\n\n\t\t};\n\n\t} )(),\n\n\tclampPoint: function ( point, target ) {\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Box3: .clampPoint() target is now required' );\n\t\t\ttarget = new Vector3();\n\n\t\t}\n\n\t\treturn target.copy( point ).clamp( this.min, this.max );\n\n\t},\n\n\tdistanceToPoint: function () {\n\n\t\tvar v1 = new Vector3();\n\n\t\treturn function distanceToPoint( point ) {\n\n\t\t\tvar clampedPoint = v1.copy( point ).clamp( this.min, this.max );\n\t\t\treturn clampedPoint.sub( point ).length();\n\n\t\t};\n\n\t}(),\n\n\tgetBoundingSphere: function () {\n\n\t\tvar v1 = new Vector3();\n\n\t\treturn function getBoundingSphere( target ) {\n\n\t\t\tif ( target === undefined ) {\n\n\t\t\t\tconsole.warn( 'THREE.Box3: .getBoundingSphere() target is now required' );\n\t\t\t\ttarget = new Sphere();\n\n\t\t\t}\n\n\t\t\tthis.getCenter( target.center );\n\n\t\t\ttarget.radius = this.getSize( v1 ).length() * 0.5;\n\n\t\t\treturn target;\n\n\t\t};\n\n\t}(),\n\n\tintersect: function ( box ) {\n\n\t\tthis.min.max( box.min );\n\t\tthis.max.min( box.max );\n\n\t\t// ensure that if there is no overlap, the result is fully empty, not slightly empty with non-inf/+inf values that will cause subsequence intersects to erroneously return valid values.\n\t\tif ( this.isEmpty() ) this.makeEmpty();\n\n\t\treturn this;\n\n\t},\n\n\tunion: function ( box ) {\n\n\t\tthis.min.min( box.min );\n\t\tthis.max.max( box.max );\n\n\t\treturn this;\n\n\t},\n\n\tapplyMatrix4: function () {\n\n\t\tvar points = [\n\t\t\tnew Vector3(),\n\t\t\tnew Vector3(),\n\t\t\tnew Vector3(),\n\t\t\tnew Vector3(),\n\t\t\tnew Vector3(),\n\t\t\tnew Vector3(),\n\t\t\tnew Vector3(),\n\t\t\tnew Vector3()\n\t\t];\n\n\t\treturn function applyMatrix4( matrix ) {\n\n\t\t\t// transform of empty box is an empty box.\n\t\t\tif ( this.isEmpty() ) return this;\n\n\t\t\t// NOTE: I am using a binary pattern to specify all 2^3 combinations below\n\t\t\tpoints[ 0 ].set( this.min.x, this.min.y, this.min.z ).applyMatrix4( matrix ); // 000\n\t\t\tpoints[ 1 ].set( this.min.x, this.min.y, this.max.z ).applyMatrix4( matrix ); // 001\n\t\t\tpoints[ 2 ].set( this.min.x, this.max.y, this.min.z ).applyMatrix4( matrix ); // 010\n\t\t\tpoints[ 3 ].set( this.min.x, this.max.y, this.max.z ).applyMatrix4( matrix ); // 011\n\t\t\tpoints[ 4 ].set( this.max.x, this.min.y, this.min.z ).applyMatrix4( matrix ); // 100\n\t\t\tpoints[ 5 ].set( this.max.x, this.min.y, this.max.z ).applyMatrix4( matrix ); // 101\n\t\t\tpoints[ 6 ].set( this.max.x, this.max.y, this.min.z ).applyMatrix4( matrix ); // 110\n\t\t\tpoints[ 7 ].set( this.max.x, this.max.y, this.max.z ).applyMatrix4( matrix ); // 111\n\n\t\t\tthis.setFromPoints( points );\n\n\t\t\treturn this;\n\n\t\t};\n\n\t}(),\n\n\ttranslate: function ( offset ) {\n\n\t\tthis.min.add( offset );\n\t\tthis.max.add( offset );\n\n\t\treturn this;\n\n\t},\n\n\tequals: function ( box ) {\n\n\t\treturn box.min.equals( this.min ) && box.max.equals( this.max );\n\n\t}\n\n} );\n\n\nexport { Box3 };\n","/**\n * @author alteredq / http://alteredqualia.com/\n * @author mrdoob / http://mrdoob.com/\n */\n\nvar _Math = {\n\n\tDEG2RAD: Math.PI / 180,\n\tRAD2DEG: 180 / Math.PI,\n\n\tgenerateUUID: ( function () {\n\n\t\t// http://stackoverflow.com/questions/105034/how-to-create-a-guid-uuid-in-javascript/21963136#21963136\n\n\t\tvar lut = [];\n\n\t\tfor ( var i = 0; i < 256; i ++ ) {\n\n\t\t\tlut[ i ] = ( i < 16 ? '0' : '' ) + ( i ).toString( 16 );\n\n\t\t}\n\n\t\treturn function generateUUID() {\n\n\t\t\tvar d0 = Math.random() * 0xffffffff | 0;\n\t\t\tvar d1 = Math.random() * 0xffffffff | 0;\n\t\t\tvar d2 = Math.random() * 0xffffffff | 0;\n\t\t\tvar d3 = Math.random() * 0xffffffff | 0;\n\t\t\tvar uuid = lut[ d0 & 0xff ] + lut[ d0 >> 8 & 0xff ] + lut[ d0 >> 16 & 0xff ] + lut[ d0 >> 24 & 0xff ] + '-' +\n\t\t\t\tlut[ d1 & 0xff ] + lut[ d1 >> 8 & 0xff ] + '-' + lut[ d1 >> 16 & 0x0f | 0x40 ] + lut[ d1 >> 24 & 0xff ] + '-' +\n\t\t\t\tlut[ d2 & 0x3f | 0x80 ] + lut[ d2 >> 8 & 0xff ] + '-' + lut[ d2 >> 16 & 0xff ] + lut[ d2 >> 24 & 0xff ] +\n\t\t\t\tlut[ d3 & 0xff ] + lut[ d3 >> 8 & 0xff ] + lut[ d3 >> 16 & 0xff ] + lut[ d3 >> 24 & 0xff ];\n\n\t\t\t// .toUpperCase() here flattens concatenated strings to save heap memory space.\n\t\t\treturn uuid.toUpperCase();\n\n\t\t};\n\n\t} )(),\n\n\tclamp: function ( value, min, max ) {\n\n\t\treturn Math.max( min, Math.min( max, value ) );\n\n\t},\n\n\t// compute euclidian modulo of m % n\n\t// https://en.wikipedia.org/wiki/Modulo_operation\n\n\teuclideanModulo: function ( n, m ) {\n\n\t\treturn ( ( n % m ) + m ) % m;\n\n\t},\n\n\t// Linear mapping from range to range \n\n\tmapLinear: function ( x, a1, a2, b1, b2 ) {\n\n\t\treturn b1 + ( x - a1 ) * ( b2 - b1 ) / ( a2 - a1 );\n\n\t},\n\n\t// https://en.wikipedia.org/wiki/Linear_interpolation\n\n\tlerp: function ( x, y, t ) {\n\n\t\treturn ( 1 - t ) * x + t * y;\n\n\t},\n\n\t// http://en.wikipedia.org/wiki/Smoothstep\n\n\tsmoothstep: function ( x, min, max ) {\n\n\t\tif ( x <= min ) return 0;\n\t\tif ( x >= max ) return 1;\n\n\t\tx = ( x - min ) / ( max - min );\n\n\t\treturn x * x * ( 3 - 2 * x );\n\n\t},\n\n\tsmootherstep: function ( x, min, max ) {\n\n\t\tif ( x <= min ) return 0;\n\t\tif ( x >= max ) return 1;\n\n\t\tx = ( x - min ) / ( max - min );\n\n\t\treturn x * x * x * ( x * ( x * 6 - 15 ) + 10 );\n\n\t},\n\n\t// Random integer from interval\n\n\trandInt: function ( low, high ) {\n\n\t\treturn low + Math.floor( Math.random() * ( high - low + 1 ) );\n\n\t},\n\n\t// Random float from interval\n\n\trandFloat: function ( low, high ) {\n\n\t\treturn low + Math.random() * ( high - low );\n\n\t},\n\n\t// Random float from <-range/2, range/2> interval\n\n\trandFloatSpread: function ( range ) {\n\n\t\treturn range * ( 0.5 - Math.random() );\n\n\t},\n\n\tdegToRad: function ( degrees ) {\n\n\t\treturn degrees * _Math.DEG2RAD;\n\n\t},\n\n\tradToDeg: function ( radians ) {\n\n\t\treturn radians * _Math.RAD2DEG;\n\n\t},\n\n\tisPowerOfTwo: function ( value ) {\n\n\t\treturn ( value & ( value - 1 ) ) === 0 && value !== 0;\n\n\t},\n\n\tceilPowerOfTwo: function ( value ) {\n\n\t\treturn Math.pow( 2, Math.ceil( Math.log( value ) / Math.LN2 ) );\n\n\t},\n\n\tfloorPowerOfTwo: function ( value ) {\n\n\t\treturn Math.pow( 2, Math.floor( Math.log( value ) / Math.LN2 ) );\n\n\t}\n\n};\n\n\nexport { _Math };\n","import { Vector3 } from './Vector3.js';\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author supereggbert / http://www.paulbrunt.co.uk/\n * @author philogb / http://blog.thejit.org/\n * @author jordi_ros / http://plattsoft.com\n * @author D1plo1d / http://github.com/D1plo1d\n * @author alteredq / http://alteredqualia.com/\n * @author mikael emtinger / http://gomo.se/\n * @author timknip / http://www.floorplanner.com/\n * @author bhouston / http://clara.io\n * @author WestLangley / http://github.com/WestLangley\n */\n\nfunction Matrix4() {\n\n\tthis.elements = [\n\n\t\t1, 0, 0, 0,\n\t\t0, 1, 0, 0,\n\t\t0, 0, 1, 0,\n\t\t0, 0, 0, 1\n\n\t];\n\n\tif ( arguments.length > 0 ) {\n\n\t\tconsole.error( 'THREE.Matrix4: the constructor no longer reads arguments. use .set() instead.' );\n\n\t}\n\n}\n\nObject.assign( Matrix4.prototype, {\n\n\tisMatrix4: true,\n\n\tset: function ( n11, n12, n13, n14, n21, n22, n23, n24, n31, n32, n33, n34, n41, n42, n43, n44 ) {\n\n\t\tvar te = this.elements;\n\n\t\tte[ 0 ] = n11; te[ 4 ] = n12; te[ 8 ] = n13; te[ 12 ] = n14;\n\t\tte[ 1 ] = n21; te[ 5 ] = n22; te[ 9 ] = n23; te[ 13 ] = n24;\n\t\tte[ 2 ] = n31; te[ 6 ] = n32; te[ 10 ] = n33; te[ 14 ] = n34;\n\t\tte[ 3 ] = n41; te[ 7 ] = n42; te[ 11 ] = n43; te[ 15 ] = n44;\n\n\t\treturn this;\n\n\t},\n\n\tidentity: function () {\n\n\t\tthis.set(\n\n\t\t\t1, 0, 0, 0,\n\t\t\t0, 1, 0, 0,\n\t\t\t0, 0, 1, 0,\n\t\t\t0, 0, 0, 1\n\n\t\t);\n\n\t\treturn this;\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new Matrix4().fromArray( this.elements );\n\n\t},\n\n\tcopy: function ( m ) {\n\n\t\tvar te = this.elements;\n\t\tvar me = m.elements;\n\n\t\tte[ 0 ] = me[ 0 ]; te[ 1 ] = me[ 1 ]; te[ 2 ] = me[ 2 ]; te[ 3 ] = me[ 3 ];\n\t\tte[ 4 ] = me[ 4 ]; te[ 5 ] = me[ 5 ]; te[ 6 ] = me[ 6 ]; te[ 7 ] = me[ 7 ];\n\t\tte[ 8 ] = me[ 8 ]; te[ 9 ] = me[ 9 ]; te[ 10 ] = me[ 10 ]; te[ 11 ] = me[ 11 ];\n\t\tte[ 12 ] = me[ 12 ]; te[ 13 ] = me[ 13 ]; te[ 14 ] = me[ 14 ]; te[ 15 ] = me[ 15 ];\n\n\t\treturn this;\n\n\t},\n\n\tcopyPosition: function ( m ) {\n\n\t\tvar te = this.elements, me = m.elements;\n\n\t\tte[ 12 ] = me[ 12 ];\n\t\tte[ 13 ] = me[ 13 ];\n\t\tte[ 14 ] = me[ 14 ];\n\n\t\treturn this;\n\n\t},\n\n\textractBasis: function ( xAxis, yAxis, zAxis ) {\n\n\t\txAxis.setFromMatrixColumn( this, 0 );\n\t\tyAxis.setFromMatrixColumn( this, 1 );\n\t\tzAxis.setFromMatrixColumn( this, 2 );\n\n\t\treturn this;\n\n\t},\n\n\tmakeBasis: function ( xAxis, yAxis, zAxis ) {\n\n\t\tthis.set(\n\t\t\txAxis.x, yAxis.x, zAxis.x, 0,\n\t\t\txAxis.y, yAxis.y, zAxis.y, 0,\n\t\t\txAxis.z, yAxis.z, zAxis.z, 0,\n\t\t\t0, 0, 0, 1\n\t\t);\n\n\t\treturn this;\n\n\t},\n\n\textractRotation: function () {\n\n\t\tvar v1 = new Vector3();\n\n\t\treturn function extractRotation( m ) {\n\n\t\t\t// this method does not support reflection matrices\n\n\t\t\tvar te = this.elements;\n\t\t\tvar me = m.elements;\n\n\t\t\tvar scaleX = 1 / v1.setFromMatrixColumn( m, 0 ).length();\n\t\t\tvar scaleY = 1 / v1.setFromMatrixColumn( m, 1 ).length();\n\t\t\tvar scaleZ = 1 / v1.setFromMatrixColumn( m, 2 ).length();\n\n\t\t\tte[ 0 ] = me[ 0 ] * scaleX;\n\t\t\tte[ 1 ] = me[ 1 ] * scaleX;\n\t\t\tte[ 2 ] = me[ 2 ] * scaleX;\n\t\t\tte[ 3 ] = 0;\n\n\t\t\tte[ 4 ] = me[ 4 ] * scaleY;\n\t\t\tte[ 5 ] = me[ 5 ] * scaleY;\n\t\t\tte[ 6 ] = me[ 6 ] * scaleY;\n\t\t\tte[ 7 ] = 0;\n\n\t\t\tte[ 8 ] = me[ 8 ] * scaleZ;\n\t\t\tte[ 9 ] = me[ 9 ] * scaleZ;\n\t\t\tte[ 10 ] = me[ 10 ] * scaleZ;\n\t\t\tte[ 11 ] = 0;\n\n\t\t\tte[ 12 ] = 0;\n\t\t\tte[ 13 ] = 0;\n\t\t\tte[ 14 ] = 0;\n\t\t\tte[ 15 ] = 1;\n\n\t\t\treturn this;\n\n\t\t};\n\n\t}(),\n\n\tmakeRotationFromEuler: function ( euler ) {\n\n\t\tif ( ! ( euler && euler.isEuler ) ) {\n\n\t\t\tconsole.error( 'THREE.Matrix4: .makeRotationFromEuler() now expects a Euler rotation rather than a Vector3 and order.' );\n\n\t\t}\n\n\t\tvar te = this.elements;\n\n\t\tvar x = euler.x, y = euler.y, z = euler.z;\n\t\tvar a = Math.cos( x ), b = Math.sin( x );\n\t\tvar c = Math.cos( y ), d = Math.sin( y );\n\t\tvar e = Math.cos( z ), f = Math.sin( z );\n\n\t\tif ( euler.order === 'XYZ' ) {\n\n\t\t\tvar ae = a * e, af = a * f, be = b * e, bf = b * f;\n\n\t\t\tte[ 0 ] = c * e;\n\t\t\tte[ 4 ] = - c * f;\n\t\t\tte[ 8 ] = d;\n\n\t\t\tte[ 1 ] = af + be * d;\n\t\t\tte[ 5 ] = ae - bf * d;\n\t\t\tte[ 9 ] = - b * c;\n\n\t\t\tte[ 2 ] = bf - ae * d;\n\t\t\tte[ 6 ] = be + af * d;\n\t\t\tte[ 10 ] = a * c;\n\n\t\t} else if ( euler.order === 'YXZ' ) {\n\n\t\t\tvar ce = c * e, cf = c * f, de = d * e, df = d * f;\n\n\t\t\tte[ 0 ] = ce + df * b;\n\t\t\tte[ 4 ] = de * b - cf;\n\t\t\tte[ 8 ] = a * d;\n\n\t\t\tte[ 1 ] = a * f;\n\t\t\tte[ 5 ] = a * e;\n\t\t\tte[ 9 ] = - b;\n\n\t\t\tte[ 2 ] = cf * b - de;\n\t\t\tte[ 6 ] = df + ce * b;\n\t\t\tte[ 10 ] = a * c;\n\n\t\t} else if ( euler.order === 'ZXY' ) {\n\n\t\t\tvar ce = c * e, cf = c * f, de = d * e, df = d * f;\n\n\t\t\tte[ 0 ] = ce - df * b;\n\t\t\tte[ 4 ] = - a * f;\n\t\t\tte[ 8 ] = de + cf * b;\n\n\t\t\tte[ 1 ] = cf + de * b;\n\t\t\tte[ 5 ] = a * e;\n\t\t\tte[ 9 ] = df - ce * b;\n\n\t\t\tte[ 2 ] = - a * d;\n\t\t\tte[ 6 ] = b;\n\t\t\tte[ 10 ] = a * c;\n\n\t\t} else if ( euler.order === 'ZYX' ) {\n\n\t\t\tvar ae = a * e, af = a * f, be = b * e, bf = b * f;\n\n\t\t\tte[ 0 ] = c * e;\n\t\t\tte[ 4 ] = be * d - af;\n\t\t\tte[ 8 ] = ae * d + bf;\n\n\t\t\tte[ 1 ] = c * f;\n\t\t\tte[ 5 ] = bf * d + ae;\n\t\t\tte[ 9 ] = af * d - be;\n\n\t\t\tte[ 2 ] = - d;\n\t\t\tte[ 6 ] = b * c;\n\t\t\tte[ 10 ] = a * c;\n\n\t\t} else if ( euler.order === 'YZX' ) {\n\n\t\t\tvar ac = a * c, ad = a * d, bc = b * c, bd = b * d;\n\n\t\t\tte[ 0 ] = c * e;\n\t\t\tte[ 4 ] = bd - ac * f;\n\t\t\tte[ 8 ] = bc * f + ad;\n\n\t\t\tte[ 1 ] = f;\n\t\t\tte[ 5 ] = a * e;\n\t\t\tte[ 9 ] = - b * e;\n\n\t\t\tte[ 2 ] = - d * e;\n\t\t\tte[ 6 ] = ad * f + bc;\n\t\t\tte[ 10 ] = ac - bd * f;\n\n\t\t} else if ( euler.order === 'XZY' ) {\n\n\t\t\tvar ac = a * c, ad = a * d, bc = b * c, bd = b * d;\n\n\t\t\tte[ 0 ] = c * e;\n\t\t\tte[ 4 ] = - f;\n\t\t\tte[ 8 ] = d * e;\n\n\t\t\tte[ 1 ] = ac * f + bd;\n\t\t\tte[ 5 ] = a * e;\n\t\t\tte[ 9 ] = ad * f - bc;\n\n\t\t\tte[ 2 ] = bc * f - ad;\n\t\t\tte[ 6 ] = b * e;\n\t\t\tte[ 10 ] = bd * f + ac;\n\n\t\t}\n\n\t\t// bottom row\n\t\tte[ 3 ] = 0;\n\t\tte[ 7 ] = 0;\n\t\tte[ 11 ] = 0;\n\n\t\t// last column\n\t\tte[ 12 ] = 0;\n\t\tte[ 13 ] = 0;\n\t\tte[ 14 ] = 0;\n\t\tte[ 15 ] = 1;\n\n\t\treturn this;\n\n\t},\n\n\tmakeRotationFromQuaternion: function () {\n\n\t\tvar zero = new Vector3( 0, 0, 0 );\n\t\tvar one = new Vector3( 1, 1, 1 );\n\n\t\treturn function makeRotationFromQuaternion( q ) {\n\n\t\t\treturn this.compose( zero, q, one );\n\n\t\t};\n\n\t}(),\n\n\tlookAt: function () {\n\n\t\tvar x = new Vector3();\n\t\tvar y = new Vector3();\n\t\tvar z = new Vector3();\n\n\t\treturn function lookAt( eye, target, up ) {\n\n\t\t\tvar te = this.elements;\n\n\t\t\tz.subVectors( eye, target );\n\n\t\t\tif ( z.lengthSq() === 0 ) {\n\n\t\t\t\t// eye and target are in the same position\n\n\t\t\t\tz.z = 1;\n\n\t\t\t}\n\n\t\t\tz.normalize();\n\t\t\tx.crossVectors( up, z );\n\n\t\t\tif ( x.lengthSq() === 0 ) {\n\n\t\t\t\t// up and z are parallel\n\n\t\t\t\tif ( Math.abs( up.z ) === 1 ) {\n\n\t\t\t\t\tz.x += 0.0001;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tz.z += 0.0001;\n\n\t\t\t\t}\n\n\t\t\t\tz.normalize();\n\t\t\t\tx.crossVectors( up, z );\n\n\t\t\t}\n\n\t\t\tx.normalize();\n\t\t\ty.crossVectors( z, x );\n\n\t\t\tte[ 0 ] = x.x; te[ 4 ] = y.x; te[ 8 ] = z.x;\n\t\t\tte[ 1 ] = x.y; te[ 5 ] = y.y; te[ 9 ] = z.y;\n\t\t\tte[ 2 ] = x.z; te[ 6 ] = y.z; te[ 10 ] = z.z;\n\n\t\t\treturn this;\n\n\t\t};\n\n\t}(),\n\n\tmultiply: function ( m, n ) {\n\n\t\tif ( n !== undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Matrix4: .multiply() now only accepts one argument. Use .multiplyMatrices( a, b ) instead.' );\n\t\t\treturn this.multiplyMatrices( m, n );\n\n\t\t}\n\n\t\treturn this.multiplyMatrices( this, m );\n\n\t},\n\n\tpremultiply: function ( m ) {\n\n\t\treturn this.multiplyMatrices( m, this );\n\n\t},\n\n\tmultiplyMatrices: function ( a, b ) {\n\n\t\tvar ae = a.elements;\n\t\tvar be = b.elements;\n\t\tvar te = this.elements;\n\n\t\tvar a11 = ae[ 0 ], a12 = ae[ 4 ], a13 = ae[ 8 ], a14 = ae[ 12 ];\n\t\tvar a21 = ae[ 1 ], a22 = ae[ 5 ], a23 = ae[ 9 ], a24 = ae[ 13 ];\n\t\tvar a31 = ae[ 2 ], a32 = ae[ 6 ], a33 = ae[ 10 ], a34 = ae[ 14 ];\n\t\tvar a41 = ae[ 3 ], a42 = ae[ 7 ], a43 = ae[ 11 ], a44 = ae[ 15 ];\n\n\t\tvar b11 = be[ 0 ], b12 = be[ 4 ], b13 = be[ 8 ], b14 = be[ 12 ];\n\t\tvar b21 = be[ 1 ], b22 = be[ 5 ], b23 = be[ 9 ], b24 = be[ 13 ];\n\t\tvar b31 = be[ 2 ], b32 = be[ 6 ], b33 = be[ 10 ], b34 = be[ 14 ];\n\t\tvar b41 = be[ 3 ], b42 = be[ 7 ], b43 = be[ 11 ], b44 = be[ 15 ];\n\n\t\tte[ 0 ] = a11 * b11 + a12 * b21 + a13 * b31 + a14 * b41;\n\t\tte[ 4 ] = a11 * b12 + a12 * b22 + a13 * b32 + a14 * b42;\n\t\tte[ 8 ] = a11 * b13 + a12 * b23 + a13 * b33 + a14 * b43;\n\t\tte[ 12 ] = a11 * b14 + a12 * b24 + a13 * b34 + a14 * b44;\n\n\t\tte[ 1 ] = a21 * b11 + a22 * b21 + a23 * b31 + a24 * b41;\n\t\tte[ 5 ] = a21 * b12 + a22 * b22 + a23 * b32 + a24 * b42;\n\t\tte[ 9 ] = a21 * b13 + a22 * b23 + a23 * b33 + a24 * b43;\n\t\tte[ 13 ] = a21 * b14 + a22 * b24 + a23 * b34 + a24 * b44;\n\n\t\tte[ 2 ] = a31 * b11 + a32 * b21 + a33 * b31 + a34 * b41;\n\t\tte[ 6 ] = a31 * b12 + a32 * b22 + a33 * b32 + a34 * b42;\n\t\tte[ 10 ] = a31 * b13 + a32 * b23 + a33 * b33 + a34 * b43;\n\t\tte[ 14 ] = a31 * b14 + a32 * b24 + a33 * b34 + a34 * b44;\n\n\t\tte[ 3 ] = a41 * b11 + a42 * b21 + a43 * b31 + a44 * b41;\n\t\tte[ 7 ] = a41 * b12 + a42 * b22 + a43 * b32 + a44 * b42;\n\t\tte[ 11 ] = a41 * b13 + a42 * b23 + a43 * b33 + a44 * b43;\n\t\tte[ 15 ] = a41 * b14 + a42 * b24 + a43 * b34 + a44 * b44;\n\n\t\treturn this;\n\n\t},\n\n\tmultiplyScalar: function ( s ) {\n\n\t\tvar te = this.elements;\n\n\t\tte[ 0 ] *= s; te[ 4 ] *= s; te[ 8 ] *= s; te[ 12 ] *= s;\n\t\tte[ 1 ] *= s; te[ 5 ] *= s; te[ 9 ] *= s; te[ 13 ] *= s;\n\t\tte[ 2 ] *= s; te[ 6 ] *= s; te[ 10 ] *= s; te[ 14 ] *= s;\n\t\tte[ 3 ] *= s; te[ 7 ] *= s; te[ 11 ] *= s; te[ 15 ] *= s;\n\n\t\treturn this;\n\n\t},\n\n\tapplyToBufferAttribute: function () {\n\n\t\tvar v1 = new Vector3();\n\n\t\treturn function applyToBufferAttribute( attribute ) {\n\n\t\t\tfor ( var i = 0, l = attribute.count; i < l; i ++ ) {\n\n\t\t\t\tv1.x = attribute.getX( i );\n\t\t\t\tv1.y = attribute.getY( i );\n\t\t\t\tv1.z = attribute.getZ( i );\n\n\t\t\t\tv1.applyMatrix4( this );\n\n\t\t\t\tattribute.setXYZ( i, v1.x, v1.y, v1.z );\n\n\t\t\t}\n\n\t\t\treturn attribute;\n\n\t\t};\n\n\t}(),\n\n\tdeterminant: function () {\n\n\t\tvar te = this.elements;\n\n\t\tvar n11 = te[ 0 ], n12 = te[ 4 ], n13 = te[ 8 ], n14 = te[ 12 ];\n\t\tvar n21 = te[ 1 ], n22 = te[ 5 ], n23 = te[ 9 ], n24 = te[ 13 ];\n\t\tvar n31 = te[ 2 ], n32 = te[ 6 ], n33 = te[ 10 ], n34 = te[ 14 ];\n\t\tvar n41 = te[ 3 ], n42 = te[ 7 ], n43 = te[ 11 ], n44 = te[ 15 ];\n\n\t\t//TODO: make this more efficient\n\t\t//( based on http://www.euclideanspace.com/maths/algebra/matrix/functions/inverse/fourD/index.htm )\n\n\t\treturn (\n\t\t\tn41 * (\n\t\t\t\t+ n14 * n23 * n32\n\t\t\t\t - n13 * n24 * n32\n\t\t\t\t - n14 * n22 * n33\n\t\t\t\t + n12 * n24 * n33\n\t\t\t\t + n13 * n22 * n34\n\t\t\t\t - n12 * n23 * n34\n\t\t\t) +\n\t\t\tn42 * (\n\t\t\t\t+ n11 * n23 * n34\n\t\t\t\t - n11 * n24 * n33\n\t\t\t\t + n14 * n21 * n33\n\t\t\t\t - n13 * n21 * n34\n\t\t\t\t + n13 * n24 * n31\n\t\t\t\t - n14 * n23 * n31\n\t\t\t) +\n\t\t\tn43 * (\n\t\t\t\t+ n11 * n24 * n32\n\t\t\t\t - n11 * n22 * n34\n\t\t\t\t - n14 * n21 * n32\n\t\t\t\t + n12 * n21 * n34\n\t\t\t\t + n14 * n22 * n31\n\t\t\t\t - n12 * n24 * n31\n\t\t\t) +\n\t\t\tn44 * (\n\t\t\t\t- n13 * n22 * n31\n\t\t\t\t - n11 * n23 * n32\n\t\t\t\t + n11 * n22 * n33\n\t\t\t\t + n13 * n21 * n32\n\t\t\t\t - n12 * n21 * n33\n\t\t\t\t + n12 * n23 * n31\n\t\t\t)\n\n\t\t);\n\n\t},\n\n\ttranspose: function () {\n\n\t\tvar te = this.elements;\n\t\tvar tmp;\n\n\t\ttmp = te[ 1 ]; te[ 1 ] = te[ 4 ]; te[ 4 ] = tmp;\n\t\ttmp = te[ 2 ]; te[ 2 ] = te[ 8 ]; te[ 8 ] = tmp;\n\t\ttmp = te[ 6 ]; te[ 6 ] = te[ 9 ]; te[ 9 ] = tmp;\n\n\t\ttmp = te[ 3 ]; te[ 3 ] = te[ 12 ]; te[ 12 ] = tmp;\n\t\ttmp = te[ 7 ]; te[ 7 ] = te[ 13 ]; te[ 13 ] = tmp;\n\t\ttmp = te[ 11 ]; te[ 11 ] = te[ 14 ]; te[ 14 ] = tmp;\n\n\t\treturn this;\n\n\t},\n\n\tsetPosition: function ( v ) {\n\n\t\tvar te = this.elements;\n\n\t\tte[ 12 ] = v.x;\n\t\tte[ 13 ] = v.y;\n\t\tte[ 14 ] = v.z;\n\n\t\treturn this;\n\n\t},\n\n\tgetInverse: function ( m, throwOnDegenerate ) {\n\n\t\t// based on http://www.euclideanspace.com/maths/algebra/matrix/functions/inverse/fourD/index.htm\n\t\tvar te = this.elements,\n\t\t\tme = m.elements,\n\n\t\t\tn11 = me[ 0 ], n21 = me[ 1 ], n31 = me[ 2 ], n41 = me[ 3 ],\n\t\t\tn12 = me[ 4 ], n22 = me[ 5 ], n32 = me[ 6 ], n42 = me[ 7 ],\n\t\t\tn13 = me[ 8 ], n23 = me[ 9 ], n33 = me[ 10 ], n43 = me[ 11 ],\n\t\t\tn14 = me[ 12 ], n24 = me[ 13 ], n34 = me[ 14 ], n44 = me[ 15 ],\n\n\t\t\tt11 = n23 * n34 * n42 - n24 * n33 * n42 + n24 * n32 * n43 - n22 * n34 * n43 - n23 * n32 * n44 + n22 * n33 * n44,\n\t\t\tt12 = n14 * n33 * n42 - n13 * n34 * n42 - n14 * n32 * n43 + n12 * n34 * n43 + n13 * n32 * n44 - n12 * n33 * n44,\n\t\t\tt13 = n13 * n24 * n42 - n14 * n23 * n42 + n14 * n22 * n43 - n12 * n24 * n43 - n13 * n22 * n44 + n12 * n23 * n44,\n\t\t\tt14 = n14 * n23 * n32 - n13 * n24 * n32 - n14 * n22 * n33 + n12 * n24 * n33 + n13 * n22 * n34 - n12 * n23 * n34;\n\n\t\tvar det = n11 * t11 + n21 * t12 + n31 * t13 + n41 * t14;\n\n\t\tif ( det === 0 ) {\n\n\t\t\tvar msg = \"THREE.Matrix4: .getInverse() can't invert matrix, determinant is 0\";\n\n\t\t\tif ( throwOnDegenerate === true ) {\n\n\t\t\t\tthrow new Error( msg );\n\n\t\t\t} else {\n\n\t\t\t\tconsole.warn( msg );\n\n\t\t\t}\n\n\t\t\treturn this.identity();\n\n\t\t}\n\n\t\tvar detInv = 1 / det;\n\n\t\tte[ 0 ] = t11 * detInv;\n\t\tte[ 1 ] = ( n24 * n33 * n41 - n23 * n34 * n41 - n24 * n31 * n43 + n21 * n34 * n43 + n23 * n31 * n44 - n21 * n33 * n44 ) * detInv;\n\t\tte[ 2 ] = ( n22 * n34 * n41 - n24 * n32 * n41 + n24 * n31 * n42 - n21 * n34 * n42 - n22 * n31 * n44 + n21 * n32 * n44 ) * detInv;\n\t\tte[ 3 ] = ( n23 * n32 * n41 - n22 * n33 * n41 - n23 * n31 * n42 + n21 * n33 * n42 + n22 * n31 * n43 - n21 * n32 * n43 ) * detInv;\n\n\t\tte[ 4 ] = t12 * detInv;\n\t\tte[ 5 ] = ( n13 * n34 * n41 - n14 * n33 * n41 + n14 * n31 * n43 - n11 * n34 * n43 - n13 * n31 * n44 + n11 * n33 * n44 ) * detInv;\n\t\tte[ 6 ] = ( n14 * n32 * n41 - n12 * n34 * n41 - n14 * n31 * n42 + n11 * n34 * n42 + n12 * n31 * n44 - n11 * n32 * n44 ) * detInv;\n\t\tte[ 7 ] = ( n12 * n33 * n41 - n13 * n32 * n41 + n13 * n31 * n42 - n11 * n33 * n42 - n12 * n31 * n43 + n11 * n32 * n43 ) * detInv;\n\n\t\tte[ 8 ] = t13 * detInv;\n\t\tte[ 9 ] = ( n14 * n23 * n41 - n13 * n24 * n41 - n14 * n21 * n43 + n11 * n24 * n43 + n13 * n21 * n44 - n11 * n23 * n44 ) * detInv;\n\t\tte[ 10 ] = ( n12 * n24 * n41 - n14 * n22 * n41 + n14 * n21 * n42 - n11 * n24 * n42 - n12 * n21 * n44 + n11 * n22 * n44 ) * detInv;\n\t\tte[ 11 ] = ( n13 * n22 * n41 - n12 * n23 * n41 - n13 * n21 * n42 + n11 * n23 * n42 + n12 * n21 * n43 - n11 * n22 * n43 ) * detInv;\n\n\t\tte[ 12 ] = t14 * detInv;\n\t\tte[ 13 ] = ( n13 * n24 * n31 - n14 * n23 * n31 + n14 * n21 * n33 - n11 * n24 * n33 - n13 * n21 * n34 + n11 * n23 * n34 ) * detInv;\n\t\tte[ 14 ] = ( n14 * n22 * n31 - n12 * n24 * n31 - n14 * n21 * n32 + n11 * n24 * n32 + n12 * n21 * n34 - n11 * n22 * n34 ) * detInv;\n\t\tte[ 15 ] = ( n12 * n23 * n31 - n13 * n22 * n31 + n13 * n21 * n32 - n11 * n23 * n32 - n12 * n21 * n33 + n11 * n22 * n33 ) * detInv;\n\n\t\treturn this;\n\n\t},\n\n\tscale: function ( v ) {\n\n\t\tvar te = this.elements;\n\t\tvar x = v.x, y = v.y, z = v.z;\n\n\t\tte[ 0 ] *= x; te[ 4 ] *= y; te[ 8 ] *= z;\n\t\tte[ 1 ] *= x; te[ 5 ] *= y; te[ 9 ] *= z;\n\t\tte[ 2 ] *= x; te[ 6 ] *= y; te[ 10 ] *= z;\n\t\tte[ 3 ] *= x; te[ 7 ] *= y; te[ 11 ] *= z;\n\n\t\treturn this;\n\n\t},\n\n\tgetMaxScaleOnAxis: function () {\n\n\t\tvar te = this.elements;\n\n\t\tvar scaleXSq = te[ 0 ] * te[ 0 ] + te[ 1 ] * te[ 1 ] + te[ 2 ] * te[ 2 ];\n\t\tvar scaleYSq = te[ 4 ] * te[ 4 ] + te[ 5 ] * te[ 5 ] + te[ 6 ] * te[ 6 ];\n\t\tvar scaleZSq = te[ 8 ] * te[ 8 ] + te[ 9 ] * te[ 9 ] + te[ 10 ] * te[ 10 ];\n\n\t\treturn Math.sqrt( Math.max( scaleXSq, scaleYSq, scaleZSq ) );\n\n\t},\n\n\tmakeTranslation: function ( x, y, z ) {\n\n\t\tthis.set(\n\n\t\t\t1, 0, 0, x,\n\t\t\t0, 1, 0, y,\n\t\t\t0, 0, 1, z,\n\t\t\t0, 0, 0, 1\n\n\t\t);\n\n\t\treturn this;\n\n\t},\n\n\tmakeRotationX: function ( theta ) {\n\n\t\tvar c = Math.cos( theta ), s = Math.sin( theta );\n\n\t\tthis.set(\n\n\t\t\t1, 0, 0, 0,\n\t\t\t0, c, - s, 0,\n\t\t\t0, s, c, 0,\n\t\t\t0, 0, 0, 1\n\n\t\t);\n\n\t\treturn this;\n\n\t},\n\n\tmakeRotationY: function ( theta ) {\n\n\t\tvar c = Math.cos( theta ), s = Math.sin( theta );\n\n\t\tthis.set(\n\n\t\t\t c, 0, s, 0,\n\t\t\t 0, 1, 0, 0,\n\t\t\t- s, 0, c, 0,\n\t\t\t 0, 0, 0, 1\n\n\t\t);\n\n\t\treturn this;\n\n\t},\n\n\tmakeRotationZ: function ( theta ) {\n\n\t\tvar c = Math.cos( theta ), s = Math.sin( theta );\n\n\t\tthis.set(\n\n\t\t\tc, - s, 0, 0,\n\t\t\ts, c, 0, 0,\n\t\t\t0, 0, 1, 0,\n\t\t\t0, 0, 0, 1\n\n\t\t);\n\n\t\treturn this;\n\n\t},\n\n\tmakeRotationAxis: function ( axis, angle ) {\n\n\t\t// Based on http://www.gamedev.net/reference/articles/article1199.asp\n\n\t\tvar c = Math.cos( angle );\n\t\tvar s = Math.sin( angle );\n\t\tvar t = 1 - c;\n\t\tvar x = axis.x, y = axis.y, z = axis.z;\n\t\tvar tx = t * x, ty = t * y;\n\n\t\tthis.set(\n\n\t\t\ttx * x + c, tx * y - s * z, tx * z + s * y, 0,\n\t\t\ttx * y + s * z, ty * y + c, ty * z - s * x, 0,\n\t\t\ttx * z - s * y, ty * z + s * x, t * z * z + c, 0,\n\t\t\t0, 0, 0, 1\n\n\t\t);\n\n\t\t return this;\n\n\t},\n\n\tmakeScale: function ( x, y, z ) {\n\n\t\tthis.set(\n\n\t\t\tx, 0, 0, 0,\n\t\t\t0, y, 0, 0,\n\t\t\t0, 0, z, 0,\n\t\t\t0, 0, 0, 1\n\n\t\t);\n\n\t\treturn this;\n\n\t},\n\n\tmakeShear: function ( x, y, z ) {\n\n\t\tthis.set(\n\n\t\t\t1, y, z, 0,\n\t\t\tx, 1, z, 0,\n\t\t\tx, y, 1, 0,\n\t\t\t0, 0, 0, 1\n\n\t\t);\n\n\t\treturn this;\n\n\t},\n\n\tcompose: function ( position, quaternion, scale ) {\n\n\t\tvar te = this.elements;\n\n\t\tvar x = quaternion._x, y = quaternion._y, z = quaternion._z, w = quaternion._w;\n\t\tvar x2 = x + x,\ty2 = y + y, z2 = z + z;\n\t\tvar xx = x * x2, xy = x * y2, xz = x * z2;\n\t\tvar yy = y * y2, yz = y * z2, zz = z * z2;\n\t\tvar wx = w * x2, wy = w * y2, wz = w * z2;\n\n\t\tvar sx = scale.x, sy = scale.y, sz = scale.z;\n\n\t te[ 0 ] = ( 1 - ( yy + zz ) ) * sx;\n\t te[ 1 ] = ( xy + wz ) * sx;\n\t te[ 2 ] = ( xz - wy ) * sx;\n\t te[ 3 ] = 0;\n\n\t te[ 4 ] = ( xy - wz ) * sy;\n\t te[ 5 ] = ( 1 - ( xx + zz ) ) * sy;\n\t te[ 6 ] = ( yz + wx ) * sy;\n\t te[ 7 ] = 0;\n\n\t te[ 8 ] = ( xz + wy ) * sz;\n\t te[ 9 ] = ( yz - wx ) * sz;\n\t te[ 10 ] = ( 1 - ( xx + yy ) ) * sz;\n\t te[ 11 ] = 0;\n\n\t te[ 12 ] = position.x;\n\t te[ 13 ] = position.y;\n\t te[ 14 ] = position.z;\n\t te[ 15 ] = 1;\n\n\t return this;\n\n\t},\n\n\tdecompose: function () {\n\n\t\tvar vector = new Vector3();\n\t\tvar matrix = new Matrix4();\n\n\t\treturn function decompose( position, quaternion, scale ) {\n\n\t\t\tvar te = this.elements;\n\n\t\t\tvar sx = vector.set( te[ 0 ], te[ 1 ], te[ 2 ] ).length();\n\t\t\tvar sy = vector.set( te[ 4 ], te[ 5 ], te[ 6 ] ).length();\n\t\t\tvar sz = vector.set( te[ 8 ], te[ 9 ], te[ 10 ] ).length();\n\n\t\t\t// if determine is negative, we need to invert one scale\n\t\t\tvar det = this.determinant();\n\t\t\tif ( det < 0 ) sx = - sx;\n\n\t\t\tposition.x = te[ 12 ];\n\t\t\tposition.y = te[ 13 ];\n\t\t\tposition.z = te[ 14 ];\n\n\t\t\t// scale the rotation part\n\t\t\tmatrix.copy( this );\n\n\t\t\tvar invSX = 1 / sx;\n\t\t\tvar invSY = 1 / sy;\n\t\t\tvar invSZ = 1 / sz;\n\n\t\t\tmatrix.elements[ 0 ] *= invSX;\n\t\t\tmatrix.elements[ 1 ] *= invSX;\n\t\t\tmatrix.elements[ 2 ] *= invSX;\n\n\t\t\tmatrix.elements[ 4 ] *= invSY;\n\t\t\tmatrix.elements[ 5 ] *= invSY;\n\t\t\tmatrix.elements[ 6 ] *= invSY;\n\n\t\t\tmatrix.elements[ 8 ] *= invSZ;\n\t\t\tmatrix.elements[ 9 ] *= invSZ;\n\t\t\tmatrix.elements[ 10 ] *= invSZ;\n\n\t\t\tquaternion.setFromRotationMatrix( matrix );\n\n\t\t\tscale.x = sx;\n\t\t\tscale.y = sy;\n\t\t\tscale.z = sz;\n\n\t\t\treturn this;\n\n\t\t};\n\n\t}(),\n\n\tmakePerspective: function ( left, right, top, bottom, near, far ) {\n\n\t\tif ( far === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Matrix4: .makePerspective() has been redefined and has a new signature. Please check the docs.' );\n\n\t\t}\n\n\t\tvar te = this.elements;\n\t\tvar x = 2 * near / ( right - left );\n\t\tvar y = 2 * near / ( top - bottom );\n\n\t\tvar a = ( right + left ) / ( right - left );\n\t\tvar b = ( top + bottom ) / ( top - bottom );\n\t\tvar c = - ( far + near ) / ( far - near );\n\t\tvar d = - 2 * far * near / ( far - near );\n\n\t\tte[ 0 ] = x;\tte[ 4 ] = 0;\tte[ 8 ] = a;\tte[ 12 ] = 0;\n\t\tte[ 1 ] = 0;\tte[ 5 ] = y;\tte[ 9 ] = b;\tte[ 13 ] = 0;\n\t\tte[ 2 ] = 0;\tte[ 6 ] = 0;\tte[ 10 ] = c;\tte[ 14 ] = d;\n\t\tte[ 3 ] = 0;\tte[ 7 ] = 0;\tte[ 11 ] = - 1;\tte[ 15 ] = 0;\n\n\t\treturn this;\n\n\t},\n\n\tmakeOrthographic: function ( left, right, top, bottom, near, far ) {\n\n\t\tvar te = this.elements;\n\t\tvar w = 1.0 / ( right - left );\n\t\tvar h = 1.0 / ( top - bottom );\n\t\tvar p = 1.0 / ( far - near );\n\n\t\tvar x = ( right + left ) * w;\n\t\tvar y = ( top + bottom ) * h;\n\t\tvar z = ( far + near ) * p;\n\n\t\tte[ 0 ] = 2 * w;\tte[ 4 ] = 0;\tte[ 8 ] = 0;\tte[ 12 ] = - x;\n\t\tte[ 1 ] = 0;\tte[ 5 ] = 2 * h;\tte[ 9 ] = 0;\tte[ 13 ] = - y;\n\t\tte[ 2 ] = 0;\tte[ 6 ] = 0;\tte[ 10 ] = - 2 * p;\tte[ 14 ] = - z;\n\t\tte[ 3 ] = 0;\tte[ 7 ] = 0;\tte[ 11 ] = 0;\tte[ 15 ] = 1;\n\n\t\treturn this;\n\n\t},\n\n\tequals: function ( matrix ) {\n\n\t\tvar te = this.elements;\n\t\tvar me = matrix.elements;\n\n\t\tfor ( var i = 0; i < 16; i ++ ) {\n\n\t\t\tif ( te[ i ] !== me[ i ] ) return false;\n\n\t\t}\n\n\t\treturn true;\n\n\t},\n\n\tfromArray: function ( array, offset ) {\n\n\t\tif ( offset === undefined ) offset = 0;\n\n\t\tfor ( var i = 0; i < 16; i ++ ) {\n\n\t\t\tthis.elements[ i ] = array[ i + offset ];\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\ttoArray: function ( array, offset ) {\n\n\t\tif ( array === undefined ) array = [];\n\t\tif ( offset === undefined ) offset = 0;\n\n\t\tvar te = this.elements;\n\n\t\tarray[ offset ] = te[ 0 ];\n\t\tarray[ offset + 1 ] = te[ 1 ];\n\t\tarray[ offset + 2 ] = te[ 2 ];\n\t\tarray[ offset + 3 ] = te[ 3 ];\n\n\t\tarray[ offset + 4 ] = te[ 4 ];\n\t\tarray[ offset + 5 ] = te[ 5 ];\n\t\tarray[ offset + 6 ] = te[ 6 ];\n\t\tarray[ offset + 7 ] = te[ 7 ];\n\n\t\tarray[ offset + 8 ] = te[ 8 ];\n\t\tarray[ offset + 9 ] = te[ 9 ];\n\t\tarray[ offset + 10 ] = te[ 10 ];\n\t\tarray[ offset + 11 ] = te[ 11 ];\n\n\t\tarray[ offset + 12 ] = te[ 12 ];\n\t\tarray[ offset + 13 ] = te[ 13 ];\n\t\tarray[ offset + 14 ] = te[ 14 ];\n\t\tarray[ offset + 15 ] = te[ 15 ];\n\n\t\treturn array;\n\n\t}\n\n} );\n\n\nexport { Matrix4 };\n","/**\n * @author mikael emtinger / http://gomo.se/\n * @author alteredq / http://alteredqualia.com/\n * @author WestLangley / http://github.com/WestLangley\n * @author bhouston / http://clara.io\n */\n\nimport { _Math } from './Math.js';\nimport { Vector3 } from './Vector3.js';\n\nfunction Quaternion( x, y, z, w ) {\n\n\tthis._x = x || 0;\n\tthis._y = y || 0;\n\tthis._z = z || 0;\n\tthis._w = ( w !== undefined ) ? w : 1;\n\n}\n\nObject.assign( Quaternion, {\n\n\tslerp: function ( qa, qb, qm, t ) {\n\n\t\treturn qm.copy( qa ).slerp( qb, t );\n\n\t},\n\n\tslerpFlat: function ( dst, dstOffset, src0, srcOffset0, src1, srcOffset1, t ) {\n\n\t\t// fuzz-free, array-based Quaternion SLERP operation\n\n\t\tvar x0 = src0[ srcOffset0 + 0 ],\n\t\t\ty0 = src0[ srcOffset0 + 1 ],\n\t\t\tz0 = src0[ srcOffset0 + 2 ],\n\t\t\tw0 = src0[ srcOffset0 + 3 ],\n\n\t\t\tx1 = src1[ srcOffset1 + 0 ],\n\t\t\ty1 = src1[ srcOffset1 + 1 ],\n\t\t\tz1 = src1[ srcOffset1 + 2 ],\n\t\t\tw1 = src1[ srcOffset1 + 3 ];\n\n\t\tif ( w0 !== w1 || x0 !== x1 || y0 !== y1 || z0 !== z1 ) {\n\n\t\t\tvar s = 1 - t,\n\n\t\t\t\tcos = x0 * x1 + y0 * y1 + z0 * z1 + w0 * w1,\n\n\t\t\t\tdir = ( cos >= 0 ? 1 : - 1 ),\n\t\t\t\tsqrSin = 1 - cos * cos;\n\n\t\t\t// Skip the Slerp for tiny steps to avoid numeric problems:\n\t\t\tif ( sqrSin > Number.EPSILON ) {\n\n\t\t\t\tvar sin = Math.sqrt( sqrSin ),\n\t\t\t\t\tlen = Math.atan2( sin, cos * dir );\n\n\t\t\t\ts = Math.sin( s * len ) / sin;\n\t\t\t\tt = Math.sin( t * len ) / sin;\n\n\t\t\t}\n\n\t\t\tvar tDir = t * dir;\n\n\t\t\tx0 = x0 * s + x1 * tDir;\n\t\t\ty0 = y0 * s + y1 * tDir;\n\t\t\tz0 = z0 * s + z1 * tDir;\n\t\t\tw0 = w0 * s + w1 * tDir;\n\n\t\t\t// Normalize in case we just did a lerp:\n\t\t\tif ( s === 1 - t ) {\n\n\t\t\t\tvar f = 1 / Math.sqrt( x0 * x0 + y0 * y0 + z0 * z0 + w0 * w0 );\n\n\t\t\t\tx0 *= f;\n\t\t\t\ty0 *= f;\n\t\t\t\tz0 *= f;\n\t\t\t\tw0 *= f;\n\n\t\t\t}\n\n\t\t}\n\n\t\tdst[ dstOffset ] = x0;\n\t\tdst[ dstOffset + 1 ] = y0;\n\t\tdst[ dstOffset + 2 ] = z0;\n\t\tdst[ dstOffset + 3 ] = w0;\n\n\t}\n\n} );\n\nObject.defineProperties( Quaternion.prototype, {\n\n\tx: {\n\n\t\tget: function () {\n\n\t\t\treturn this._x;\n\n\t\t},\n\n\t\tset: function ( value ) {\n\n\t\t\tthis._x = value;\n\t\t\tthis.onChangeCallback();\n\n\t\t}\n\n\t},\n\n\ty: {\n\n\t\tget: function () {\n\n\t\t\treturn this._y;\n\n\t\t},\n\n\t\tset: function ( value ) {\n\n\t\t\tthis._y = value;\n\t\t\tthis.onChangeCallback();\n\n\t\t}\n\n\t},\n\n\tz: {\n\n\t\tget: function () {\n\n\t\t\treturn this._z;\n\n\t\t},\n\n\t\tset: function ( value ) {\n\n\t\t\tthis._z = value;\n\t\t\tthis.onChangeCallback();\n\n\t\t}\n\n\t},\n\n\tw: {\n\n\t\tget: function () {\n\n\t\t\treturn this._w;\n\n\t\t},\n\n\t\tset: function ( value ) {\n\n\t\t\tthis._w = value;\n\t\t\tthis.onChangeCallback();\n\n\t\t}\n\n\t}\n\n} );\n\nObject.assign( Quaternion.prototype, {\n\n\tisQuaternion: true,\n\n\tset: function ( x, y, z, w ) {\n\n\t\tthis._x = x;\n\t\tthis._y = y;\n\t\tthis._z = z;\n\t\tthis._w = w;\n\n\t\tthis.onChangeCallback();\n\n\t\treturn this;\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor( this._x, this._y, this._z, this._w );\n\n\t},\n\n\tcopy: function ( quaternion ) {\n\n\t\tthis._x = quaternion.x;\n\t\tthis._y = quaternion.y;\n\t\tthis._z = quaternion.z;\n\t\tthis._w = quaternion.w;\n\n\t\tthis.onChangeCallback();\n\n\t\treturn this;\n\n\t},\n\n\tsetFromEuler: function ( euler, update ) {\n\n\t\tif ( ! ( euler && euler.isEuler ) ) {\n\n\t\t\tthrow new Error( 'THREE.Quaternion: .setFromEuler() now expects an Euler rotation rather than a Vector3 and order.' );\n\n\t\t}\n\n\t\tvar x = euler._x, y = euler._y, z = euler._z, order = euler.order;\n\n\t\t// http://www.mathworks.com/matlabcentral/fileexchange/\n\t\t// \t20696-function-to-convert-between-dcm-euler-angles-quaternions-and-euler-vectors/\n\t\t//\tcontent/SpinCalc.m\n\n\t\tvar cos = Math.cos;\n\t\tvar sin = Math.sin;\n\n\t\tvar c1 = cos( x / 2 );\n\t\tvar c2 = cos( y / 2 );\n\t\tvar c3 = cos( z / 2 );\n\n\t\tvar s1 = sin( x / 2 );\n\t\tvar s2 = sin( y / 2 );\n\t\tvar s3 = sin( z / 2 );\n\n\t\tif ( order === 'XYZ' ) {\n\n\t\t\tthis._x = s1 * c2 * c3 + c1 * s2 * s3;\n\t\t\tthis._y = c1 * s2 * c3 - s1 * c2 * s3;\n\t\t\tthis._z = c1 * c2 * s3 + s1 * s2 * c3;\n\t\t\tthis._w = c1 * c2 * c3 - s1 * s2 * s3;\n\n\t\t} else if ( order === 'YXZ' ) {\n\n\t\t\tthis._x = s1 * c2 * c3 + c1 * s2 * s3;\n\t\t\tthis._y = c1 * s2 * c3 - s1 * c2 * s3;\n\t\t\tthis._z = c1 * c2 * s3 - s1 * s2 * c3;\n\t\t\tthis._w = c1 * c2 * c3 + s1 * s2 * s3;\n\n\t\t} else if ( order === 'ZXY' ) {\n\n\t\t\tthis._x = s1 * c2 * c3 - c1 * s2 * s3;\n\t\t\tthis._y = c1 * s2 * c3 + s1 * c2 * s3;\n\t\t\tthis._z = c1 * c2 * s3 + s1 * s2 * c3;\n\t\t\tthis._w = c1 * c2 * c3 - s1 * s2 * s3;\n\n\t\t} else if ( order === 'ZYX' ) {\n\n\t\t\tthis._x = s1 * c2 * c3 - c1 * s2 * s3;\n\t\t\tthis._y = c1 * s2 * c3 + s1 * c2 * s3;\n\t\t\tthis._z = c1 * c2 * s3 - s1 * s2 * c3;\n\t\t\tthis._w = c1 * c2 * c3 + s1 * s2 * s3;\n\n\t\t} else if ( order === 'YZX' ) {\n\n\t\t\tthis._x = s1 * c2 * c3 + c1 * s2 * s3;\n\t\t\tthis._y = c1 * s2 * c3 + s1 * c2 * s3;\n\t\t\tthis._z = c1 * c2 * s3 - s1 * s2 * c3;\n\t\t\tthis._w = c1 * c2 * c3 - s1 * s2 * s3;\n\n\t\t} else if ( order === 'XZY' ) {\n\n\t\t\tthis._x = s1 * c2 * c3 - c1 * s2 * s3;\n\t\t\tthis._y = c1 * s2 * c3 - s1 * c2 * s3;\n\t\t\tthis._z = c1 * c2 * s3 + s1 * s2 * c3;\n\t\t\tthis._w = c1 * c2 * c3 + s1 * s2 * s3;\n\n\t\t}\n\n\t\tif ( update !== false ) this.onChangeCallback();\n\n\t\treturn this;\n\n\t},\n\n\tsetFromAxisAngle: function ( axis, angle ) {\n\n\t\t// http://www.euclideanspace.com/maths/geometry/rotations/conversions/angleToQuaternion/index.htm\n\n\t\t// assumes axis is normalized\n\n\t\tvar halfAngle = angle / 2, s = Math.sin( halfAngle );\n\n\t\tthis._x = axis.x * s;\n\t\tthis._y = axis.y * s;\n\t\tthis._z = axis.z * s;\n\t\tthis._w = Math.cos( halfAngle );\n\n\t\tthis.onChangeCallback();\n\n\t\treturn this;\n\n\t},\n\n\tsetFromRotationMatrix: function ( m ) {\n\n\t\t// http://www.euclideanspace.com/maths/geometry/rotations/conversions/matrixToQuaternion/index.htm\n\n\t\t// assumes the upper 3x3 of m is a pure rotation matrix (i.e, unscaled)\n\n\t\tvar te = m.elements,\n\n\t\t\tm11 = te[ 0 ], m12 = te[ 4 ], m13 = te[ 8 ],\n\t\t\tm21 = te[ 1 ], m22 = te[ 5 ], m23 = te[ 9 ],\n\t\t\tm31 = te[ 2 ], m32 = te[ 6 ], m33 = te[ 10 ],\n\n\t\t\ttrace = m11 + m22 + m33,\n\t\t\ts;\n\n\t\tif ( trace > 0 ) {\n\n\t\t\ts = 0.5 / Math.sqrt( trace + 1.0 );\n\n\t\t\tthis._w = 0.25 / s;\n\t\t\tthis._x = ( m32 - m23 ) * s;\n\t\t\tthis._y = ( m13 - m31 ) * s;\n\t\t\tthis._z = ( m21 - m12 ) * s;\n\n\t\t} else if ( m11 > m22 && m11 > m33 ) {\n\n\t\t\ts = 2.0 * Math.sqrt( 1.0 + m11 - m22 - m33 );\n\n\t\t\tthis._w = ( m32 - m23 ) / s;\n\t\t\tthis._x = 0.25 * s;\n\t\t\tthis._y = ( m12 + m21 ) / s;\n\t\t\tthis._z = ( m13 + m31 ) / s;\n\n\t\t} else if ( m22 > m33 ) {\n\n\t\t\ts = 2.0 * Math.sqrt( 1.0 + m22 - m11 - m33 );\n\n\t\t\tthis._w = ( m13 - m31 ) / s;\n\t\t\tthis._x = ( m12 + m21 ) / s;\n\t\t\tthis._y = 0.25 * s;\n\t\t\tthis._z = ( m23 + m32 ) / s;\n\n\t\t} else {\n\n\t\t\ts = 2.0 * Math.sqrt( 1.0 + m33 - m11 - m22 );\n\n\t\t\tthis._w = ( m21 - m12 ) / s;\n\t\t\tthis._x = ( m13 + m31 ) / s;\n\t\t\tthis._y = ( m23 + m32 ) / s;\n\t\t\tthis._z = 0.25 * s;\n\n\t\t}\n\n\t\tthis.onChangeCallback();\n\n\t\treturn this;\n\n\t},\n\n\tsetFromUnitVectors: function () {\n\n\t\t// assumes direction vectors vFrom and vTo are normalized\n\n\t\tvar v1 = new Vector3();\n\t\tvar r;\n\n\t\tvar EPS = 0.000001;\n\n\t\treturn function setFromUnitVectors( vFrom, vTo ) {\n\n\t\t\tif ( v1 === undefined ) v1 = new Vector3();\n\n\t\t\tr = vFrom.dot( vTo ) + 1;\n\n\t\t\tif ( r < EPS ) {\n\n\t\t\t\tr = 0;\n\n\t\t\t\tif ( Math.abs( vFrom.x ) > Math.abs( vFrom.z ) ) {\n\n\t\t\t\t\tv1.set( - vFrom.y, vFrom.x, 0 );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tv1.set( 0, - vFrom.z, vFrom.y );\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\tv1.crossVectors( vFrom, vTo );\n\n\t\t\t}\n\n\t\t\tthis._x = v1.x;\n\t\t\tthis._y = v1.y;\n\t\t\tthis._z = v1.z;\n\t\t\tthis._w = r;\n\n\t\t\treturn this.normalize();\n\n\t\t};\n\n\t}(),\n\n\tangleTo: function ( q ) {\n\n\t\treturn 2 * Math.acos( Math.abs( _Math.clamp( this.dot( q ), - 1, 1 ) ) );\n\n\t},\n\n\trotateTowards: function ( q, step ) {\n\n\t\tvar angle = this.angleTo( q );\n\n\t\tif ( angle === 0 ) return this;\n\n\t\tvar t = Math.min( 1, step / angle );\n\n\t\tthis.slerp( q, t );\n\n\t\treturn this;\n\n\t},\n\n\tinverse: function () {\n\n\t\t// quaternion is assumed to have unit length\n\n\t\treturn this.conjugate();\n\n\t},\n\n\tconjugate: function () {\n\n\t\tthis._x *= - 1;\n\t\tthis._y *= - 1;\n\t\tthis._z *= - 1;\n\n\t\tthis.onChangeCallback();\n\n\t\treturn this;\n\n\t},\n\n\tdot: function ( v ) {\n\n\t\treturn this._x * v._x + this._y * v._y + this._z * v._z + this._w * v._w;\n\n\t},\n\n\tlengthSq: function () {\n\n\t\treturn this._x * this._x + this._y * this._y + this._z * this._z + this._w * this._w;\n\n\t},\n\n\tlength: function () {\n\n\t\treturn Math.sqrt( this._x * this._x + this._y * this._y + this._z * this._z + this._w * this._w );\n\n\t},\n\n\tnormalize: function () {\n\n\t\tvar l = this.length();\n\n\t\tif ( l === 0 ) {\n\n\t\t\tthis._x = 0;\n\t\t\tthis._y = 0;\n\t\t\tthis._z = 0;\n\t\t\tthis._w = 1;\n\n\t\t} else {\n\n\t\t\tl = 1 / l;\n\n\t\t\tthis._x = this._x * l;\n\t\t\tthis._y = this._y * l;\n\t\t\tthis._z = this._z * l;\n\t\t\tthis._w = this._w * l;\n\n\t\t}\n\n\t\tthis.onChangeCallback();\n\n\t\treturn this;\n\n\t},\n\n\tmultiply: function ( q, p ) {\n\n\t\tif ( p !== undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Quaternion: .multiply() now only accepts one argument. Use .multiplyQuaternions( a, b ) instead.' );\n\t\t\treturn this.multiplyQuaternions( q, p );\n\n\t\t}\n\n\t\treturn this.multiplyQuaternions( this, q );\n\n\t},\n\n\tpremultiply: function ( q ) {\n\n\t\treturn this.multiplyQuaternions( q, this );\n\n\t},\n\n\tmultiplyQuaternions: function ( a, b ) {\n\n\t\t// from http://www.euclideanspace.com/maths/algebra/realNormedAlgebra/quaternions/code/index.htm\n\n\t\tvar qax = a._x, qay = a._y, qaz = a._z, qaw = a._w;\n\t\tvar qbx = b._x, qby = b._y, qbz = b._z, qbw = b._w;\n\n\t\tthis._x = qax * qbw + qaw * qbx + qay * qbz - qaz * qby;\n\t\tthis._y = qay * qbw + qaw * qby + qaz * qbx - qax * qbz;\n\t\tthis._z = qaz * qbw + qaw * qbz + qax * qby - qay * qbx;\n\t\tthis._w = qaw * qbw - qax * qbx - qay * qby - qaz * qbz;\n\n\t\tthis.onChangeCallback();\n\n\t\treturn this;\n\n\t},\n\n\tslerp: function ( qb, t ) {\n\n\t\tif ( t === 0 ) return this;\n\t\tif ( t === 1 ) return this.copy( qb );\n\n\t\tvar x = this._x, y = this._y, z = this._z, w = this._w;\n\n\t\t// http://www.euclideanspace.com/maths/algebra/realNormedAlgebra/quaternions/slerp/\n\n\t\tvar cosHalfTheta = w * qb._w + x * qb._x + y * qb._y + z * qb._z;\n\n\t\tif ( cosHalfTheta < 0 ) {\n\n\t\t\tthis._w = - qb._w;\n\t\t\tthis._x = - qb._x;\n\t\t\tthis._y = - qb._y;\n\t\t\tthis._z = - qb._z;\n\n\t\t\tcosHalfTheta = - cosHalfTheta;\n\n\t\t} else {\n\n\t\t\tthis.copy( qb );\n\n\t\t}\n\n\t\tif ( cosHalfTheta >= 1.0 ) {\n\n\t\t\tthis._w = w;\n\t\t\tthis._x = x;\n\t\t\tthis._y = y;\n\t\t\tthis._z = z;\n\n\t\t\treturn this;\n\n\t\t}\n\n\t\tvar sqrSinHalfTheta = 1.0 - cosHalfTheta * cosHalfTheta;\n\n\t\tif ( sqrSinHalfTheta <= Number.EPSILON ) {\n\n\t\t\tvar s = 1 - t;\n\t\t\tthis._w = s * w + t * this._w;\n\t\t\tthis._x = s * x + t * this._x;\n\t\t\tthis._y = s * y + t * this._y;\n\t\t\tthis._z = s * z + t * this._z;\n\n\t\t\treturn this.normalize();\n\n\t\t}\n\n\t\tvar sinHalfTheta = Math.sqrt( sqrSinHalfTheta );\n\t\tvar halfTheta = Math.atan2( sinHalfTheta, cosHalfTheta );\n\t\tvar ratioA = Math.sin( ( 1 - t ) * halfTheta ) / sinHalfTheta,\n\t\t\tratioB = Math.sin( t * halfTheta ) / sinHalfTheta;\n\n\t\tthis._w = ( w * ratioA + this._w * ratioB );\n\t\tthis._x = ( x * ratioA + this._x * ratioB );\n\t\tthis._y = ( y * ratioA + this._y * ratioB );\n\t\tthis._z = ( z * ratioA + this._z * ratioB );\n\n\t\tthis.onChangeCallback();\n\n\t\treturn this;\n\n\t},\n\n\tequals: function ( quaternion ) {\n\n\t\treturn ( quaternion._x === this._x ) && ( quaternion._y === this._y ) && ( quaternion._z === this._z ) && ( quaternion._w === this._w );\n\n\t},\n\n\tfromArray: function ( array, offset ) {\n\n\t\tif ( offset === undefined ) offset = 0;\n\n\t\tthis._x = array[ offset ];\n\t\tthis._y = array[ offset + 1 ];\n\t\tthis._z = array[ offset + 2 ];\n\t\tthis._w = array[ offset + 3 ];\n\n\t\tthis.onChangeCallback();\n\n\t\treturn this;\n\n\t},\n\n\ttoArray: function ( array, offset ) {\n\n\t\tif ( array === undefined ) array = [];\n\t\tif ( offset === undefined ) offset = 0;\n\n\t\tarray[ offset ] = this._x;\n\t\tarray[ offset + 1 ] = this._y;\n\t\tarray[ offset + 2 ] = this._z;\n\t\tarray[ offset + 3 ] = this._w;\n\n\t\treturn array;\n\n\t},\n\n\tonChange: function ( callback ) {\n\n\t\tthis.onChangeCallback = callback;\n\n\t\treturn this;\n\n\t},\n\n\tonChangeCallback: function () {}\n\n} );\n\n\nexport { Quaternion };\n","import { Vector3 } from './Vector3.js';\n\n/**\n * @author bhouston / http://clara.io\n */\n\nfunction Ray( origin, direction ) {\n\n\tthis.origin = ( origin !== undefined ) ? origin : new Vector3();\n\tthis.direction = ( direction !== undefined ) ? direction : new Vector3();\n\n}\n\nObject.assign( Ray.prototype, {\n\n\tset: function ( origin, direction ) {\n\n\t\tthis.origin.copy( origin );\n\t\tthis.direction.copy( direction );\n\n\t\treturn this;\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor().copy( this );\n\n\t},\n\n\tcopy: function ( ray ) {\n\n\t\tthis.origin.copy( ray.origin );\n\t\tthis.direction.copy( ray.direction );\n\n\t\treturn this;\n\n\t},\n\n\tat: function ( t, target ) {\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Ray: .at() target is now required' );\n\t\t\ttarget = new Vector3();\n\n\t\t}\n\n\t\treturn target.copy( this.direction ).multiplyScalar( t ).add( this.origin );\n\n\t},\n\n\tlookAt: function ( v ) {\n\n\t\tthis.direction.copy( v ).sub( this.origin ).normalize();\n\n\t\treturn this;\n\n\t},\n\n\trecast: function () {\n\n\t\tvar v1 = new Vector3();\n\n\t\treturn function recast( t ) {\n\n\t\t\tthis.origin.copy( this.at( t, v1 ) );\n\n\t\t\treturn this;\n\n\t\t};\n\n\t}(),\n\n\tclosestPointToPoint: function ( point, target ) {\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Ray: .closestPointToPoint() target is now required' );\n\t\t\ttarget = new Vector3();\n\n\t\t}\n\n\t\ttarget.subVectors( point, this.origin );\n\n\t\tvar directionDistance = target.dot( this.direction );\n\n\t\tif ( directionDistance < 0 ) {\n\n\t\t\treturn target.copy( this.origin );\n\n\t\t}\n\n\t\treturn target.copy( this.direction ).multiplyScalar( directionDistance ).add( this.origin );\n\n\t},\n\n\tdistanceToPoint: function ( point ) {\n\n\t\treturn Math.sqrt( this.distanceSqToPoint( point ) );\n\n\t},\n\n\tdistanceSqToPoint: function () {\n\n\t\tvar v1 = new Vector3();\n\n\t\treturn function distanceSqToPoint( point ) {\n\n\t\t\tvar directionDistance = v1.subVectors( point, this.origin ).dot( this.direction );\n\n\t\t\t// point behind the ray\n\n\t\t\tif ( directionDistance < 0 ) {\n\n\t\t\t\treturn this.origin.distanceToSquared( point );\n\n\t\t\t}\n\n\t\t\tv1.copy( this.direction ).multiplyScalar( directionDistance ).add( this.origin );\n\n\t\t\treturn v1.distanceToSquared( point );\n\n\t\t};\n\n\t}(),\n\n\tdistanceSqToSegment: function () {\n\n\t\tvar segCenter = new Vector3();\n\t\tvar segDir = new Vector3();\n\t\tvar diff = new Vector3();\n\n\t\treturn function distanceSqToSegment( v0, v1, optionalPointOnRay, optionalPointOnSegment ) {\n\n\t\t\t// from http://www.geometrictools.com/GTEngine/Include/Mathematics/GteDistRaySegment.h\n\t\t\t// It returns the min distance between the ray and the segment\n\t\t\t// defined by v0 and v1\n\t\t\t// It can also set two optional targets :\n\t\t\t// - The closest point on the ray\n\t\t\t// - The closest point on the segment\n\n\t\t\tsegCenter.copy( v0 ).add( v1 ).multiplyScalar( 0.5 );\n\t\t\tsegDir.copy( v1 ).sub( v0 ).normalize();\n\t\t\tdiff.copy( this.origin ).sub( segCenter );\n\n\t\t\tvar segExtent = v0.distanceTo( v1 ) * 0.5;\n\t\t\tvar a01 = - this.direction.dot( segDir );\n\t\t\tvar b0 = diff.dot( this.direction );\n\t\t\tvar b1 = - diff.dot( segDir );\n\t\t\tvar c = diff.lengthSq();\n\t\t\tvar det = Math.abs( 1 - a01 * a01 );\n\t\t\tvar s0, s1, sqrDist, extDet;\n\n\t\t\tif ( det > 0 ) {\n\n\t\t\t\t// The ray and segment are not parallel.\n\n\t\t\t\ts0 = a01 * b1 - b0;\n\t\t\t\ts1 = a01 * b0 - b1;\n\t\t\t\textDet = segExtent * det;\n\n\t\t\t\tif ( s0 >= 0 ) {\n\n\t\t\t\t\tif ( s1 >= - extDet ) {\n\n\t\t\t\t\t\tif ( s1 <= extDet ) {\n\n\t\t\t\t\t\t\t// region 0\n\t\t\t\t\t\t\t// Minimum at interior points of ray and segment.\n\n\t\t\t\t\t\t\tvar invDet = 1 / det;\n\t\t\t\t\t\t\ts0 *= invDet;\n\t\t\t\t\t\t\ts1 *= invDet;\n\t\t\t\t\t\t\tsqrDist = s0 * ( s0 + a01 * s1 + 2 * b0 ) + s1 * ( a01 * s0 + s1 + 2 * b1 ) + c;\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t// region 1\n\n\t\t\t\t\t\t\ts1 = segExtent;\n\t\t\t\t\t\t\ts0 = Math.max( 0, - ( a01 * s1 + b0 ) );\n\t\t\t\t\t\t\tsqrDist = - s0 * s0 + s1 * ( s1 + 2 * b1 ) + c;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\t// region 5\n\n\t\t\t\t\t\ts1 = - segExtent;\n\t\t\t\t\t\ts0 = Math.max( 0, - ( a01 * s1 + b0 ) );\n\t\t\t\t\t\tsqrDist = - s0 * s0 + s1 * ( s1 + 2 * b1 ) + c;\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\tif ( s1 <= - extDet ) {\n\n\t\t\t\t\t\t// region 4\n\n\t\t\t\t\t\ts0 = Math.max( 0, - ( - a01 * segExtent + b0 ) );\n\t\t\t\t\t\ts1 = ( s0 > 0 ) ? - segExtent : Math.min( Math.max( - segExtent, - b1 ), segExtent );\n\t\t\t\t\t\tsqrDist = - s0 * s0 + s1 * ( s1 + 2 * b1 ) + c;\n\n\t\t\t\t\t} else if ( s1 <= extDet ) {\n\n\t\t\t\t\t\t// region 3\n\n\t\t\t\t\t\ts0 = 0;\n\t\t\t\t\t\ts1 = Math.min( Math.max( - segExtent, - b1 ), segExtent );\n\t\t\t\t\t\tsqrDist = s1 * ( s1 + 2 * b1 ) + c;\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\t// region 2\n\n\t\t\t\t\t\ts0 = Math.max( 0, - ( a01 * segExtent + b0 ) );\n\t\t\t\t\t\ts1 = ( s0 > 0 ) ? segExtent : Math.min( Math.max( - segExtent, - b1 ), segExtent );\n\t\t\t\t\t\tsqrDist = - s0 * s0 + s1 * ( s1 + 2 * b1 ) + c;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\t// Ray and segment are parallel.\n\n\t\t\t\ts1 = ( a01 > 0 ) ? - segExtent : segExtent;\n\t\t\t\ts0 = Math.max( 0, - ( a01 * s1 + b0 ) );\n\t\t\t\tsqrDist = - s0 * s0 + s1 * ( s1 + 2 * b1 ) + c;\n\n\t\t\t}\n\n\t\t\tif ( optionalPointOnRay ) {\n\n\t\t\t\toptionalPointOnRay.copy( this.direction ).multiplyScalar( s0 ).add( this.origin );\n\n\t\t\t}\n\n\t\t\tif ( optionalPointOnSegment ) {\n\n\t\t\t\toptionalPointOnSegment.copy( segDir ).multiplyScalar( s1 ).add( segCenter );\n\n\t\t\t}\n\n\t\t\treturn sqrDist;\n\n\t\t};\n\n\t}(),\n\n\tintersectSphere: function () {\n\n\t\tvar v1 = new Vector3();\n\n\t\treturn function intersectSphere( sphere, target ) {\n\n\t\t\tv1.subVectors( sphere.center, this.origin );\n\t\t\tvar tca = v1.dot( this.direction );\n\t\t\tvar d2 = v1.dot( v1 ) - tca * tca;\n\t\t\tvar radius2 = sphere.radius * sphere.radius;\n\n\t\t\tif ( d2 > radius2 ) return null;\n\n\t\t\tvar thc = Math.sqrt( radius2 - d2 );\n\n\t\t\t// t0 = first intersect point - entrance on front of sphere\n\t\t\tvar t0 = tca - thc;\n\n\t\t\t// t1 = second intersect point - exit point on back of sphere\n\t\t\tvar t1 = tca + thc;\n\n\t\t\t// test to see if both t0 and t1 are behind the ray - if so, return null\n\t\t\tif ( t0 < 0 && t1 < 0 ) return null;\n\n\t\t\t// test to see if t0 is behind the ray:\n\t\t\t// if it is, the ray is inside the sphere, so return the second exit point scaled by t1,\n\t\t\t// in order to always return an intersect point that is in front of the ray.\n\t\t\tif ( t0 < 0 ) return this.at( t1, target );\n\n\t\t\t// else t0 is in front of the ray, so return the first collision point scaled by t0\n\t\t\treturn this.at( t0, target );\n\n\t\t};\n\n\t}(),\n\n\tintersectsSphere: function ( sphere ) {\n\n\t\treturn this.distanceSqToPoint( sphere.center ) <= ( sphere.radius * sphere.radius );\n\n\t},\n\n\tdistanceToPlane: function ( plane ) {\n\n\t\tvar denominator = plane.normal.dot( this.direction );\n\n\t\tif ( denominator === 0 ) {\n\n\t\t\t// line is coplanar, return origin\n\t\t\tif ( plane.distanceToPoint( this.origin ) === 0 ) {\n\n\t\t\t\treturn 0;\n\n\t\t\t}\n\n\t\t\t// Null is preferable to undefined since undefined means.... it is undefined\n\n\t\t\treturn null;\n\n\t\t}\n\n\t\tvar t = - ( this.origin.dot( plane.normal ) + plane.constant ) / denominator;\n\n\t\t// Return if the ray never intersects the plane\n\n\t\treturn t >= 0 ? t : null;\n\n\t},\n\n\tintersectPlane: function ( plane, target ) {\n\n\t\tvar t = this.distanceToPlane( plane );\n\n\t\tif ( t === null ) {\n\n\t\t\treturn null;\n\n\t\t}\n\n\t\treturn this.at( t, target );\n\n\t},\n\n\tintersectsPlane: function ( plane ) {\n\n\t\t// check if the ray lies on the plane first\n\n\t\tvar distToPoint = plane.distanceToPoint( this.origin );\n\n\t\tif ( distToPoint === 0 ) {\n\n\t\t\treturn true;\n\n\t\t}\n\n\t\tvar denominator = plane.normal.dot( this.direction );\n\n\t\tif ( denominator * distToPoint < 0 ) {\n\n\t\t\treturn true;\n\n\t\t}\n\n\t\t// ray origin is behind the plane (and is pointing behind it)\n\n\t\treturn false;\n\n\t},\n\n\tintersectBox: function ( box, target ) {\n\n\t\tvar tmin, tmax, tymin, tymax, tzmin, tzmax;\n\n\t\tvar invdirx = 1 / this.direction.x,\n\t\t\tinvdiry = 1 / this.direction.y,\n\t\t\tinvdirz = 1 / this.direction.z;\n\n\t\tvar origin = this.origin;\n\n\t\tif ( invdirx >= 0 ) {\n\n\t\t\ttmin = ( box.min.x - origin.x ) * invdirx;\n\t\t\ttmax = ( box.max.x - origin.x ) * invdirx;\n\n\t\t} else {\n\n\t\t\ttmin = ( box.max.x - origin.x ) * invdirx;\n\t\t\ttmax = ( box.min.x - origin.x ) * invdirx;\n\n\t\t}\n\n\t\tif ( invdiry >= 0 ) {\n\n\t\t\ttymin = ( box.min.y - origin.y ) * invdiry;\n\t\t\ttymax = ( box.max.y - origin.y ) * invdiry;\n\n\t\t} else {\n\n\t\t\ttymin = ( box.max.y - origin.y ) * invdiry;\n\t\t\ttymax = ( box.min.y - origin.y ) * invdiry;\n\n\t\t}\n\n\t\tif ( ( tmin > tymax ) || ( tymin > tmax ) ) return null;\n\n\t\t// These lines also handle the case where tmin or tmax is NaN\n\t\t// (result of 0 * Infinity). x !== x returns true if x is NaN\n\n\t\tif ( tymin > tmin || tmin !== tmin ) tmin = tymin;\n\n\t\tif ( tymax < tmax || tmax !== tmax ) tmax = tymax;\n\n\t\tif ( invdirz >= 0 ) {\n\n\t\t\ttzmin = ( box.min.z - origin.z ) * invdirz;\n\t\t\ttzmax = ( box.max.z - origin.z ) * invdirz;\n\n\t\t} else {\n\n\t\t\ttzmin = ( box.max.z - origin.z ) * invdirz;\n\t\t\ttzmax = ( box.min.z - origin.z ) * invdirz;\n\n\t\t}\n\n\t\tif ( ( tmin > tzmax ) || ( tzmin > tmax ) ) return null;\n\n\t\tif ( tzmin > tmin || tmin !== tmin ) tmin = tzmin;\n\n\t\tif ( tzmax < tmax || tmax !== tmax ) tmax = tzmax;\n\n\t\t//return point closest to the ray (positive side)\n\n\t\tif ( tmax < 0 ) return null;\n\n\t\treturn this.at( tmin >= 0 ? tmin : tmax, target );\n\n\t},\n\n\tintersectsBox: ( function () {\n\n\t\tvar v = new Vector3();\n\n\t\treturn function intersectsBox( box ) {\n\n\t\t\treturn this.intersectBox( box, v ) !== null;\n\n\t\t};\n\n\t} )(),\n\n\tintersectTriangle: function () {\n\n\t\t// Compute the offset origin, edges, and normal.\n\t\tvar diff = new Vector3();\n\t\tvar edge1 = new Vector3();\n\t\tvar edge2 = new Vector3();\n\t\tvar normal = new Vector3();\n\n\t\treturn function intersectTriangle( a, b, c, backfaceCulling, target ) {\n\n\t\t\t// from http://www.geometrictools.com/GTEngine/Include/Mathematics/GteIntrRay3Triangle3.h\n\n\t\t\tedge1.subVectors( b, a );\n\t\t\tedge2.subVectors( c, a );\n\t\t\tnormal.crossVectors( edge1, edge2 );\n\n\t\t\t// Solve Q + t*D = b1*E1 + b2*E2 (Q = kDiff, D = ray direction,\n\t\t\t// E1 = kEdge1, E2 = kEdge2, N = Cross(E1,E2)) by\n\t\t\t// |Dot(D,N)|*b1 = sign(Dot(D,N))*Dot(D,Cross(Q,E2))\n\t\t\t// |Dot(D,N)|*b2 = sign(Dot(D,N))*Dot(D,Cross(E1,Q))\n\t\t\t// |Dot(D,N)|*t = -sign(Dot(D,N))*Dot(Q,N)\n\t\t\tvar DdN = this.direction.dot( normal );\n\t\t\tvar sign;\n\n\t\t\tif ( DdN > 0 ) {\n\n\t\t\t\tif ( backfaceCulling ) return null;\n\t\t\t\tsign = 1;\n\n\t\t\t} else if ( DdN < 0 ) {\n\n\t\t\t\tsign = - 1;\n\t\t\t\tDdN = - DdN;\n\n\t\t\t} else {\n\n\t\t\t\treturn null;\n\n\t\t\t}\n\n\t\t\tdiff.subVectors( this.origin, a );\n\t\t\tvar DdQxE2 = sign * this.direction.dot( edge2.crossVectors( diff, edge2 ) );\n\n\t\t\t// b1 < 0, no intersection\n\t\t\tif ( DdQxE2 < 0 ) {\n\n\t\t\t\treturn null;\n\n\t\t\t}\n\n\t\t\tvar DdE1xQ = sign * this.direction.dot( edge1.cross( diff ) );\n\n\t\t\t// b2 < 0, no intersection\n\t\t\tif ( DdE1xQ < 0 ) {\n\n\t\t\t\treturn null;\n\n\t\t\t}\n\n\t\t\t// b1+b2 > 1, no intersection\n\t\t\tif ( DdQxE2 + DdE1xQ > DdN ) {\n\n\t\t\t\treturn null;\n\n\t\t\t}\n\n\t\t\t// Line intersects triangle, check if ray does.\n\t\t\tvar QdN = - sign * diff.dot( normal );\n\n\t\t\t// t < 0, no intersection\n\t\t\tif ( QdN < 0 ) {\n\n\t\t\t\treturn null;\n\n\t\t\t}\n\n\t\t\t// Ray intersects triangle.\n\t\t\treturn this.at( QdN / DdN, target );\n\n\t\t};\n\n\t}(),\n\n\tapplyMatrix4: function ( matrix4 ) {\n\n\t\tthis.origin.applyMatrix4( matrix4 );\n\t\tthis.direction.transformDirection( matrix4 );\n\n\t\treturn this;\n\n\t},\n\n\tequals: function ( ray ) {\n\n\t\treturn ray.origin.equals( this.origin ) && ray.direction.equals( this.direction );\n\n\t}\n\n} );\n\n\nexport { Ray };\n","import { Box3 } from './Box3.js';\nimport { Vector3 } from './Vector3.js';\n\n/**\n * @author bhouston / http://clara.io\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction Sphere( center, radius ) {\n\n\tthis.center = ( center !== undefined ) ? center : new Vector3();\n\tthis.radius = ( radius !== undefined ) ? radius : 0;\n\n}\n\nObject.assign( Sphere.prototype, {\n\n\tset: function ( center, radius ) {\n\n\t\tthis.center.copy( center );\n\t\tthis.radius = radius;\n\n\t\treturn this;\n\n\t},\n\n\tsetFromPoints: function () {\n\n\t\tvar box = new Box3();\n\n\t\treturn function setFromPoints( points, optionalCenter ) {\n\n\t\t\tvar center = this.center;\n\n\t\t\tif ( optionalCenter !== undefined ) {\n\n\t\t\t\tcenter.copy( optionalCenter );\n\n\t\t\t} else {\n\n\t\t\t\tbox.setFromPoints( points ).getCenter( center );\n\n\t\t\t}\n\n\t\t\tvar maxRadiusSq = 0;\n\n\t\t\tfor ( var i = 0, il = points.length; i < il; i ++ ) {\n\n\t\t\t\tmaxRadiusSq = Math.max( maxRadiusSq, center.distanceToSquared( points[ i ] ) );\n\n\t\t\t}\n\n\t\t\tthis.radius = Math.sqrt( maxRadiusSq );\n\n\t\t\treturn this;\n\n\t\t};\n\n\t}(),\n\n\tclone: function () {\n\n\t\treturn new this.constructor().copy( this );\n\n\t},\n\n\tcopy: function ( sphere ) {\n\n\t\tthis.center.copy( sphere.center );\n\t\tthis.radius = sphere.radius;\n\n\t\treturn this;\n\n\t},\n\n\tempty: function () {\n\n\t\treturn ( this.radius <= 0 );\n\n\t},\n\n\tcontainsPoint: function ( point ) {\n\n\t\treturn ( point.distanceToSquared( this.center ) <= ( this.radius * this.radius ) );\n\n\t},\n\n\tdistanceToPoint: function ( point ) {\n\n\t\treturn ( point.distanceTo( this.center ) - this.radius );\n\n\t},\n\n\tintersectsSphere: function ( sphere ) {\n\n\t\tvar radiusSum = this.radius + sphere.radius;\n\n\t\treturn sphere.center.distanceToSquared( this.center ) <= ( radiusSum * radiusSum );\n\n\t},\n\n\tintersectsBox: function ( box ) {\n\n\t\treturn box.intersectsSphere( this );\n\n\t},\n\n\tintersectsPlane: function ( plane ) {\n\n\t\treturn Math.abs( plane.distanceToPoint( this.center ) ) <= this.radius;\n\n\t},\n\n\tclampPoint: function ( point, target ) {\n\n\t\tvar deltaLengthSq = this.center.distanceToSquared( point );\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Sphere: .clampPoint() target is now required' );\n\t\t\ttarget = new Vector3();\n\n\t\t}\n\n\t\ttarget.copy( point );\n\n\t\tif ( deltaLengthSq > ( this.radius * this.radius ) ) {\n\n\t\t\ttarget.sub( this.center ).normalize();\n\t\t\ttarget.multiplyScalar( this.radius ).add( this.center );\n\n\t\t}\n\n\t\treturn target;\n\n\t},\n\n\tgetBoundingBox: function ( target ) {\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Sphere: .getBoundingBox() target is now required' );\n\t\t\ttarget = new Box3();\n\n\t\t}\n\n\t\ttarget.set( this.center, this.center );\n\t\ttarget.expandByScalar( this.radius );\n\n\t\treturn target;\n\n\t},\n\n\tapplyMatrix4: function ( matrix ) {\n\n\t\tthis.center.applyMatrix4( matrix );\n\t\tthis.radius = this.radius * matrix.getMaxScaleOnAxis();\n\n\t\treturn this;\n\n\t},\n\n\ttranslate: function ( offset ) {\n\n\t\tthis.center.add( offset );\n\n\t\treturn this;\n\n\t},\n\n\tequals: function ( sphere ) {\n\n\t\treturn sphere.center.equals( this.center ) && ( sphere.radius === this.radius );\n\n\t}\n\n} );\n\n\nexport { Sphere };\n","import { Vector3 } from './Vector3.js';\n\n/**\n * @author bhouston / http://clara.io\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction Triangle( a, b, c ) {\n\n\tthis.a = ( a !== undefined ) ? a : new Vector3();\n\tthis.b = ( b !== undefined ) ? b : new Vector3();\n\tthis.c = ( c !== undefined ) ? c : new Vector3();\n\n}\n\nObject.assign( Triangle, {\n\n\tgetNormal: function () {\n\n\t\tvar v0 = new Vector3();\n\n\t\treturn function getNormal( a, b, c, target ) {\n\n\t\t\tif ( target === undefined ) {\n\n\t\t\t\tconsole.warn( 'THREE.Triangle: .getNormal() target is now required' );\n\t\t\t\ttarget = new Vector3();\n\n\t\t\t}\n\n\t\t\ttarget.subVectors( c, b );\n\t\t\tv0.subVectors( a, b );\n\t\t\ttarget.cross( v0 );\n\n\t\t\tvar targetLengthSq = target.lengthSq();\n\t\t\tif ( targetLengthSq > 0 ) {\n\n\t\t\t\treturn target.multiplyScalar( 1 / Math.sqrt( targetLengthSq ) );\n\n\t\t\t}\n\n\t\t\treturn target.set( 0, 0, 0 );\n\n\t\t};\n\n\t}(),\n\n\t// static/instance method to calculate barycentric coordinates\n\t// based on: http://www.blackpawn.com/texts/pointinpoly/default.html\n\tgetBarycoord: function () {\n\n\t\tvar v0 = new Vector3();\n\t\tvar v1 = new Vector3();\n\t\tvar v2 = new Vector3();\n\n\t\treturn function getBarycoord( point, a, b, c, target ) {\n\n\t\t\tv0.subVectors( c, a );\n\t\t\tv1.subVectors( b, a );\n\t\t\tv2.subVectors( point, a );\n\n\t\t\tvar dot00 = v0.dot( v0 );\n\t\t\tvar dot01 = v0.dot( v1 );\n\t\t\tvar dot02 = v0.dot( v2 );\n\t\t\tvar dot11 = v1.dot( v1 );\n\t\t\tvar dot12 = v1.dot( v2 );\n\n\t\t\tvar denom = ( dot00 * dot11 - dot01 * dot01 );\n\n\t\t\tif ( target === undefined ) {\n\n\t\t\t\tconsole.warn( 'THREE.Triangle: .getBarycoord() target is now required' );\n\t\t\t\ttarget = new Vector3();\n\n\t\t\t}\n\n\t\t\t// collinear or singular triangle\n\t\t\tif ( denom === 0 ) {\n\n\t\t\t\t// arbitrary location outside of triangle?\n\t\t\t\t// not sure if this is the best idea, maybe should be returning undefined\n\t\t\t\treturn target.set( - 2, - 1, - 1 );\n\n\t\t\t}\n\n\t\t\tvar invDenom = 1 / denom;\n\t\t\tvar u = ( dot11 * dot02 - dot01 * dot12 ) * invDenom;\n\t\t\tvar v = ( dot00 * dot12 - dot01 * dot02 ) * invDenom;\n\n\t\t\t// barycentric coordinates must always sum to 1\n\t\t\treturn target.set( 1 - u - v, v, u );\n\n\t\t};\n\n\t}(),\n\n\tcontainsPoint: function () {\n\n\t\tvar v1 = new Vector3();\n\n\t\treturn function containsPoint( point, a, b, c ) {\n\n\t\t\tTriangle.getBarycoord( point, a, b, c, v1 );\n\n\t\t\treturn ( v1.x >= 0 ) && ( v1.y >= 0 ) && ( ( v1.x + v1.y ) <= 1 );\n\n\t\t};\n\n\t}(),\n\n\tgetUV: function () {\n\n\t\tvar barycoord = new Vector3();\n\n\t\treturn function getUV( point, p1, p2, p3, uv1, uv2, uv3, target ) {\n\n\t\t\tthis.getBarycoord( point, p1, p2, p3, barycoord );\n\n\t\t\ttarget.set( 0, 0 );\n\t\t\ttarget.addScaledVector( uv1, barycoord.x );\n\t\t\ttarget.addScaledVector( uv2, barycoord.y );\n\t\t\ttarget.addScaledVector( uv3, barycoord.z );\n\n\t\t\treturn target;\n\n\t\t};\n\n\t}()\n\n} );\n\nObject.assign( Triangle.prototype, {\n\n\tset: function ( a, b, c ) {\n\n\t\tthis.a.copy( a );\n\t\tthis.b.copy( b );\n\t\tthis.c.copy( c );\n\n\t\treturn this;\n\n\t},\n\n\tsetFromPointsAndIndices: function ( points, i0, i1, i2 ) {\n\n\t\tthis.a.copy( points[ i0 ] );\n\t\tthis.b.copy( points[ i1 ] );\n\t\tthis.c.copy( points[ i2 ] );\n\n\t\treturn this;\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor().copy( this );\n\n\t},\n\n\tcopy: function ( triangle ) {\n\n\t\tthis.a.copy( triangle.a );\n\t\tthis.b.copy( triangle.b );\n\t\tthis.c.copy( triangle.c );\n\n\t\treturn this;\n\n\t},\n\n\tgetArea: function () {\n\n\t\tvar v0 = new Vector3();\n\t\tvar v1 = new Vector3();\n\n\t\treturn function getArea() {\n\n\t\t\tv0.subVectors( this.c, this.b );\n\t\t\tv1.subVectors( this.a, this.b );\n\n\t\t\treturn v0.cross( v1 ).length() * 0.5;\n\n\t\t};\n\n\t}(),\n\n\tgetMidpoint: function ( target ) {\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Triangle: .getMidpoint() target is now required' );\n\t\t\ttarget = new Vector3();\n\n\t\t}\n\n\t\treturn target.addVectors( this.a, this.b ).add( this.c ).multiplyScalar( 1 / 3 );\n\n\t},\n\n\tgetNormal: function ( target ) {\n\n\t\treturn Triangle.getNormal( this.a, this.b, this.c, target );\n\n\t},\n\n\tgetPlane: function ( target ) {\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Triangle: .getPlane() target is now required' );\n\t\t\ttarget = new Vector3();\n\n\t\t}\n\n\t\treturn target.setFromCoplanarPoints( this.a, this.b, this.c );\n\n\t},\n\n\tgetBarycoord: function ( point, target ) {\n\n\t\treturn Triangle.getBarycoord( point, this.a, this.b, this.c, target );\n\n\t},\n\n\tcontainsPoint: function ( point ) {\n\n\t\treturn Triangle.containsPoint( point, this.a, this.b, this.c );\n\n\t},\n\n\tgetUV: function ( point, uv1, uv2, uv3, result ) {\n\n\t\treturn Triangle.getUV( point, this.a, this.b, this.c, uv1, uv2, uv3, result );\n\n\t},\n\n\tintersectsBox: function ( box ) {\n\n\t\treturn box.intersectsTriangle( this );\n\n\t},\n\n\tclosestPointToPoint: function () {\n\n\t\tvar vab = new Vector3();\n\t\tvar vac = new Vector3();\n\t\tvar vbc = new Vector3();\n\t\tvar vap = new Vector3();\n\t\tvar vbp = new Vector3();\n\t\tvar vcp = new Vector3();\n\n\t\treturn function closestPointToPoint( p, target ) {\n\n\t\t\tif ( target === undefined ) {\n\n\t\t\t\tconsole.warn( 'THREE.Triangle: .closestPointToPoint() target is now required' );\n\t\t\t\ttarget = new Vector3();\n\n\t\t\t}\n\n\t\t\tvar a = this.a, b = this.b, c = this.c;\n\t\t\tvar v, w;\n\n\t\t\t// algorithm thanks to Real-Time Collision Detection by Christer Ericson,\n\t\t\t// published by Morgan Kaufmann Publishers, (c) 2005 Elsevier Inc.,\n\t\t\t// under the accompanying license; see chapter 5.1.5 for detailed explanation.\n\t\t\t// basically, we're distinguishing which of the voronoi regions of the triangle\n\t\t\t// the point lies in with the minimum amount of redundant computation.\n\n\t\t\tvab.subVectors( b, a );\n\t\t\tvac.subVectors( c, a );\n\t\t\tvap.subVectors( p, a );\n\t\t\tvar d1 = vab.dot( vap );\n\t\t\tvar d2 = vac.dot( vap );\n\t\t\tif ( d1 <= 0 && d2 <= 0 ) {\n\n\t\t\t\t// vertex region of A; barycentric coords (1, 0, 0)\n\t\t\t\treturn target.copy( a );\n\n\t\t\t}\n\n\t\t\tvbp.subVectors( p, b );\n\t\t\tvar d3 = vab.dot( vbp );\n\t\t\tvar d4 = vac.dot( vbp );\n\t\t\tif ( d3 >= 0 && d4 <= d3 ) {\n\n\t\t\t\t// vertex region of B; barycentric coords (0, 1, 0)\n\t\t\t\treturn target.copy( b );\n\n\t\t\t}\n\n\t\t\tvar vc = d1 * d4 - d3 * d2;\n\t\t\tif ( vc <= 0 && d1 >= 0 && d3 <= 0 ) {\n\n\t\t\t\tv = d1 / ( d1 - d3 );\n\t\t\t\t// edge region of AB; barycentric coords (1-v, v, 0)\n\t\t\t\treturn target.copy( a ).addScaledVector( vab, v );\n\n\t\t\t}\n\n\t\t\tvcp.subVectors( p, c );\n\t\t\tvar d5 = vab.dot( vcp );\n\t\t\tvar d6 = vac.dot( vcp );\n\t\t\tif ( d6 >= 0 && d5 <= d6 ) {\n\n\t\t\t\t// vertex region of C; barycentric coords (0, 0, 1)\n\t\t\t\treturn target.copy( c );\n\n\t\t\t}\n\n\t\t\tvar vb = d5 * d2 - d1 * d6;\n\t\t\tif ( vb <= 0 && d2 >= 0 && d6 <= 0 ) {\n\n\t\t\t\tw = d2 / ( d2 - d6 );\n\t\t\t\t// edge region of AC; barycentric coords (1-w, 0, w)\n\t\t\t\treturn target.copy( a ).addScaledVector( vac, w );\n\n\t\t\t}\n\n\t\t\tvar va = d3 * d6 - d5 * d4;\n\t\t\tif ( va <= 0 && ( d4 - d3 ) >= 0 && ( d5 - d6 ) >= 0 ) {\n\n\t\t\t\tvbc.subVectors( c, b );\n\t\t\t\tw = ( d4 - d3 ) / ( ( d4 - d3 ) + ( d5 - d6 ) );\n\t\t\t\t// edge region of BC; barycentric coords (0, 1-w, w)\n\t\t\t\treturn target.copy( b ).addScaledVector( vbc, w ); // edge region of BC\n\n\t\t\t}\n\n\t\t\t// face region\n\t\t\tvar denom = 1 / ( va + vb + vc );\n\t\t\t// u = va * denom\n\t\t\tv = vb * denom;\n\t\t\tw = vc * denom;\n\t\t\treturn target.copy( a ).addScaledVector( vab, v ).addScaledVector( vac, w );\n\n\t\t};\n\n\t}(),\n\n\tequals: function ( triangle ) {\n\n\t\treturn triangle.a.equals( this.a ) && triangle.b.equals( this.b ) && triangle.c.equals( this.c );\n\n\t}\n\n} );\n\n\nexport { Triangle };\n","/**\n * @author mrdoob / http://mrdoob.com/\n * @author philogb / http://blog.thejit.org/\n * @author egraether / http://egraether.com/\n * @author zz85 / http://www.lab4games.net/zz85/blog\n */\n\nfunction Vector2( x, y ) {\n\n\tthis.x = x || 0;\n\tthis.y = y || 0;\n\n}\n\nObject.defineProperties( Vector2.prototype, {\n\n\t\"width\": {\n\n\t\tget: function () {\n\n\t\t\treturn this.x;\n\n\t\t},\n\n\t\tset: function ( value ) {\n\n\t\t\tthis.x = value;\n\n\t\t}\n\n\t},\n\n\t\"height\": {\n\n\t\tget: function () {\n\n\t\t\treturn this.y;\n\n\t\t},\n\n\t\tset: function ( value ) {\n\n\t\t\tthis.y = value;\n\n\t\t}\n\n\t}\n\n} );\n\nObject.assign( Vector2.prototype, {\n\n\tisVector2: true,\n\n\tset: function ( x, y ) {\n\n\t\tthis.x = x;\n\t\tthis.y = y;\n\n\t\treturn this;\n\n\t},\n\n\tsetScalar: function ( scalar ) {\n\n\t\tthis.x = scalar;\n\t\tthis.y = scalar;\n\n\t\treturn this;\n\n\t},\n\n\tsetX: function ( x ) {\n\n\t\tthis.x = x;\n\n\t\treturn this;\n\n\t},\n\n\tsetY: function ( y ) {\n\n\t\tthis.y = y;\n\n\t\treturn this;\n\n\t},\n\n\tsetComponent: function ( index, value ) {\n\n\t\tswitch ( index ) {\n\n\t\t\tcase 0: this.x = value; break;\n\t\t\tcase 1: this.y = value; break;\n\t\t\tdefault: throw new Error( 'index is out of range: ' + index );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tgetComponent: function ( index ) {\n\n\t\tswitch ( index ) {\n\n\t\t\tcase 0: return this.x;\n\t\t\tcase 1: return this.y;\n\t\t\tdefault: throw new Error( 'index is out of range: ' + index );\n\n\t\t}\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor( this.x, this.y );\n\n\t},\n\n\tcopy: function ( v ) {\n\n\t\tthis.x = v.x;\n\t\tthis.y = v.y;\n\n\t\treturn this;\n\n\t},\n\n\tadd: function ( v, w ) {\n\n\t\tif ( w !== undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Vector2: .add() now only accepts one argument. Use .addVectors( a, b ) instead.' );\n\t\t\treturn this.addVectors( v, w );\n\n\t\t}\n\n\t\tthis.x += v.x;\n\t\tthis.y += v.y;\n\n\t\treturn this;\n\n\t},\n\n\taddScalar: function ( s ) {\n\n\t\tthis.x += s;\n\t\tthis.y += s;\n\n\t\treturn this;\n\n\t},\n\n\taddVectors: function ( a, b ) {\n\n\t\tthis.x = a.x + b.x;\n\t\tthis.y = a.y + b.y;\n\n\t\treturn this;\n\n\t},\n\n\taddScaledVector: function ( v, s ) {\n\n\t\tthis.x += v.x * s;\n\t\tthis.y += v.y * s;\n\n\t\treturn this;\n\n\t},\n\n\tsub: function ( v, w ) {\n\n\t\tif ( w !== undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Vector2: .sub() now only accepts one argument. Use .subVectors( a, b ) instead.' );\n\t\t\treturn this.subVectors( v, w );\n\n\t\t}\n\n\t\tthis.x -= v.x;\n\t\tthis.y -= v.y;\n\n\t\treturn this;\n\n\t},\n\n\tsubScalar: function ( s ) {\n\n\t\tthis.x -= s;\n\t\tthis.y -= s;\n\n\t\treturn this;\n\n\t},\n\n\tsubVectors: function ( a, b ) {\n\n\t\tthis.x = a.x - b.x;\n\t\tthis.y = a.y - b.y;\n\n\t\treturn this;\n\n\t},\n\n\tmultiply: function ( v ) {\n\n\t\tthis.x *= v.x;\n\t\tthis.y *= v.y;\n\n\t\treturn this;\n\n\t},\n\n\tmultiplyScalar: function ( scalar ) {\n\n\t\tthis.x *= scalar;\n\t\tthis.y *= scalar;\n\n\t\treturn this;\n\n\t},\n\n\tdivide: function ( v ) {\n\n\t\tthis.x /= v.x;\n\t\tthis.y /= v.y;\n\n\t\treturn this;\n\n\t},\n\n\tdivideScalar: function ( scalar ) {\n\n\t\treturn this.multiplyScalar( 1 / scalar );\n\n\t},\n\n\tapplyMatrix3: function ( m ) {\n\n\t\tvar x = this.x, y = this.y;\n\t\tvar e = m.elements;\n\n\t\tthis.x = e[ 0 ] * x + e[ 3 ] * y + e[ 6 ];\n\t\tthis.y = e[ 1 ] * x + e[ 4 ] * y + e[ 7 ];\n\n\t\treturn this;\n\n\t},\n\n\tmin: function ( v ) {\n\n\t\tthis.x = Math.min( this.x, v.x );\n\t\tthis.y = Math.min( this.y, v.y );\n\n\t\treturn this;\n\n\t},\n\n\tmax: function ( v ) {\n\n\t\tthis.x = Math.max( this.x, v.x );\n\t\tthis.y = Math.max( this.y, v.y );\n\n\t\treturn this;\n\n\t},\n\n\tclamp: function ( min, max ) {\n\n\t\t// assumes min < max, componentwise\n\n\t\tthis.x = Math.max( min.x, Math.min( max.x, this.x ) );\n\t\tthis.y = Math.max( min.y, Math.min( max.y, this.y ) );\n\n\t\treturn this;\n\n\t},\n\n\tclampScalar: function () {\n\n\t\tvar min = new Vector2();\n\t\tvar max = new Vector2();\n\n\t\treturn function clampScalar( minVal, maxVal ) {\n\n\t\t\tmin.set( minVal, minVal );\n\t\t\tmax.set( maxVal, maxVal );\n\n\t\t\treturn this.clamp( min, max );\n\n\t\t};\n\n\t}(),\n\n\tclampLength: function ( min, max ) {\n\n\t\tvar length = this.length();\n\n\t\treturn this.divideScalar( length || 1 ).multiplyScalar( Math.max( min, Math.min( max, length ) ) );\n\n\t},\n\n\tfloor: function () {\n\n\t\tthis.x = Math.floor( this.x );\n\t\tthis.y = Math.floor( this.y );\n\n\t\treturn this;\n\n\t},\n\n\tceil: function () {\n\n\t\tthis.x = Math.ceil( this.x );\n\t\tthis.y = Math.ceil( this.y );\n\n\t\treturn this;\n\n\t},\n\n\tround: function () {\n\n\t\tthis.x = Math.round( this.x );\n\t\tthis.y = Math.round( this.y );\n\n\t\treturn this;\n\n\t},\n\n\troundToZero: function () {\n\n\t\tthis.x = ( this.x < 0 ) ? Math.ceil( this.x ) : Math.floor( this.x );\n\t\tthis.y = ( this.y < 0 ) ? Math.ceil( this.y ) : Math.floor( this.y );\n\n\t\treturn this;\n\n\t},\n\n\tnegate: function () {\n\n\t\tthis.x = - this.x;\n\t\tthis.y = - this.y;\n\n\t\treturn this;\n\n\t},\n\n\tdot: function ( v ) {\n\n\t\treturn this.x * v.x + this.y * v.y;\n\n\t},\n\n\tcross: function ( v ) {\n\n\t\treturn this.x * v.y - this.y * v.x;\n\n\t},\n\n\tlengthSq: function () {\n\n\t\treturn this.x * this.x + this.y * this.y;\n\n\t},\n\n\tlength: function () {\n\n\t\treturn Math.sqrt( this.x * this.x + this.y * this.y );\n\n\t},\n\n\tmanhattanLength: function () {\n\n\t\treturn Math.abs( this.x ) + Math.abs( this.y );\n\n\t},\n\n\tnormalize: function () {\n\n\t\treturn this.divideScalar( this.length() || 1 );\n\n\t},\n\n\tangle: function () {\n\n\t\t// computes the angle in radians with respect to the positive x-axis\n\n\t\tvar angle = Math.atan2( this.y, this.x );\n\n\t\tif ( angle < 0 ) angle += 2 * Math.PI;\n\n\t\treturn angle;\n\n\t},\n\n\tdistanceTo: function ( v ) {\n\n\t\treturn Math.sqrt( this.distanceToSquared( v ) );\n\n\t},\n\n\tdistanceToSquared: function ( v ) {\n\n\t\tvar dx = this.x - v.x, dy = this.y - v.y;\n\t\treturn dx * dx + dy * dy;\n\n\t},\n\n\tmanhattanDistanceTo: function ( v ) {\n\n\t\treturn Math.abs( this.x - v.x ) + Math.abs( this.y - v.y );\n\n\t},\n\n\tsetLength: function ( length ) {\n\n\t\treturn this.normalize().multiplyScalar( length );\n\n\t},\n\n\tlerp: function ( v, alpha ) {\n\n\t\tthis.x += ( v.x - this.x ) * alpha;\n\t\tthis.y += ( v.y - this.y ) * alpha;\n\n\t\treturn this;\n\n\t},\n\n\tlerpVectors: function ( v1, v2, alpha ) {\n\n\t\treturn this.subVectors( v2, v1 ).multiplyScalar( alpha ).add( v1 );\n\n\t},\n\n\tequals: function ( v ) {\n\n\t\treturn ( ( v.x === this.x ) && ( v.y === this.y ) );\n\n\t},\n\n\tfromArray: function ( array, offset ) {\n\n\t\tif ( offset === undefined ) offset = 0;\n\n\t\tthis.x = array[ offset ];\n\t\tthis.y = array[ offset + 1 ];\n\n\t\treturn this;\n\n\t},\n\n\ttoArray: function ( array, offset ) {\n\n\t\tif ( array === undefined ) array = [];\n\t\tif ( offset === undefined ) offset = 0;\n\n\t\tarray[ offset ] = this.x;\n\t\tarray[ offset + 1 ] = this.y;\n\n\t\treturn array;\n\n\t},\n\n\tfromBufferAttribute: function ( attribute, index, offset ) {\n\n\t\tif ( offset !== undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Vector2: offset has been removed from .fromBufferAttribute().' );\n\n\t\t}\n\n\t\tthis.x = attribute.getX( index );\n\t\tthis.y = attribute.getY( index );\n\n\t\treturn this;\n\n\t},\n\n\trotateAround: function ( center, angle ) {\n\n\t\tvar c = Math.cos( angle ), s = Math.sin( angle );\n\n\t\tvar x = this.x - center.x;\n\t\tvar y = this.y - center.y;\n\n\t\tthis.x = x * c - y * s + center.x;\n\t\tthis.y = x * s + y * c + center.y;\n\n\t\treturn this;\n\n\t}\n\n} );\n\n\nexport { Vector2 };\n","import { _Math } from './Math.js';\nimport { Matrix4 } from './Matrix4.js';\nimport { Quaternion } from './Quaternion.js';\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author kile / http://kile.stravaganza.org/\n * @author philogb / http://blog.thejit.org/\n * @author mikael emtinger / http://gomo.se/\n * @author egraether / http://egraether.com/\n * @author WestLangley / http://github.com/WestLangley\n */\n\nfunction Vector3( x, y, z ) {\n\n\tthis.x = x || 0;\n\tthis.y = y || 0;\n\tthis.z = z || 0;\n\n}\n\nObject.assign( Vector3.prototype, {\n\n\tisVector3: true,\n\n\tset: function ( x, y, z ) {\n\n\t\tthis.x = x;\n\t\tthis.y = y;\n\t\tthis.z = z;\n\n\t\treturn this;\n\n\t},\n\n\tsetScalar: function ( scalar ) {\n\n\t\tthis.x = scalar;\n\t\tthis.y = scalar;\n\t\tthis.z = scalar;\n\n\t\treturn this;\n\n\t},\n\n\tsetX: function ( x ) {\n\n\t\tthis.x = x;\n\n\t\treturn this;\n\n\t},\n\n\tsetY: function ( y ) {\n\n\t\tthis.y = y;\n\n\t\treturn this;\n\n\t},\n\n\tsetZ: function ( z ) {\n\n\t\tthis.z = z;\n\n\t\treturn this;\n\n\t},\n\n\tsetComponent: function ( index, value ) {\n\n\t\tswitch ( index ) {\n\n\t\t\tcase 0: this.x = value; break;\n\t\t\tcase 1: this.y = value; break;\n\t\t\tcase 2: this.z = value; break;\n\t\t\tdefault: throw new Error( 'index is out of range: ' + index );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tgetComponent: function ( index ) {\n\n\t\tswitch ( index ) {\n\n\t\t\tcase 0: return this.x;\n\t\t\tcase 1: return this.y;\n\t\t\tcase 2: return this.z;\n\t\t\tdefault: throw new Error( 'index is out of range: ' + index );\n\n\t\t}\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor( this.x, this.y, this.z );\n\n\t},\n\n\tcopy: function ( v ) {\n\n\t\tthis.x = v.x;\n\t\tthis.y = v.y;\n\t\tthis.z = v.z;\n\n\t\treturn this;\n\n\t},\n\n\tadd: function ( v, w ) {\n\n\t\tif ( w !== undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Vector3: .add() now only accepts one argument. Use .addVectors( a, b ) instead.' );\n\t\t\treturn this.addVectors( v, w );\n\n\t\t}\n\n\t\tthis.x += v.x;\n\t\tthis.y += v.y;\n\t\tthis.z += v.z;\n\n\t\treturn this;\n\n\t},\n\n\taddScalar: function ( s ) {\n\n\t\tthis.x += s;\n\t\tthis.y += s;\n\t\tthis.z += s;\n\n\t\treturn this;\n\n\t},\n\n\taddVectors: function ( a, b ) {\n\n\t\tthis.x = a.x + b.x;\n\t\tthis.y = a.y + b.y;\n\t\tthis.z = a.z + b.z;\n\n\t\treturn this;\n\n\t},\n\n\taddScaledVector: function ( v, s ) {\n\n\t\tthis.x += v.x * s;\n\t\tthis.y += v.y * s;\n\t\tthis.z += v.z * s;\n\n\t\treturn this;\n\n\t},\n\n\tsub: function ( v, w ) {\n\n\t\tif ( w !== undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Vector3: .sub() now only accepts one argument. Use .subVectors( a, b ) instead.' );\n\t\t\treturn this.subVectors( v, w );\n\n\t\t}\n\n\t\tthis.x -= v.x;\n\t\tthis.y -= v.y;\n\t\tthis.z -= v.z;\n\n\t\treturn this;\n\n\t},\n\n\tsubScalar: function ( s ) {\n\n\t\tthis.x -= s;\n\t\tthis.y -= s;\n\t\tthis.z -= s;\n\n\t\treturn this;\n\n\t},\n\n\tsubVectors: function ( a, b ) {\n\n\t\tthis.x = a.x - b.x;\n\t\tthis.y = a.y - b.y;\n\t\tthis.z = a.z - b.z;\n\n\t\treturn this;\n\n\t},\n\n\tmultiply: function ( v, w ) {\n\n\t\tif ( w !== undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Vector3: .multiply() now only accepts one argument. Use .multiplyVectors( a, b ) instead.' );\n\t\t\treturn this.multiplyVectors( v, w );\n\n\t\t}\n\n\t\tthis.x *= v.x;\n\t\tthis.y *= v.y;\n\t\tthis.z *= v.z;\n\n\t\treturn this;\n\n\t},\n\n\tmultiplyScalar: function ( scalar ) {\n\n\t\tthis.x *= scalar;\n\t\tthis.y *= scalar;\n\t\tthis.z *= scalar;\n\n\t\treturn this;\n\n\t},\n\n\tmultiplyVectors: function ( a, b ) {\n\n\t\tthis.x = a.x * b.x;\n\t\tthis.y = a.y * b.y;\n\t\tthis.z = a.z * b.z;\n\n\t\treturn this;\n\n\t},\n\n\tapplyEuler: function () {\n\n\t\tvar quaternion = new Quaternion();\n\n\t\treturn function applyEuler( euler ) {\n\n\t\t\tif ( ! ( euler && euler.isEuler ) ) {\n\n\t\t\t\tconsole.error( 'THREE.Vector3: .applyEuler() now expects an Euler rotation rather than a Vector3 and order.' );\n\n\t\t\t}\n\n\t\t\treturn this.applyQuaternion( quaternion.setFromEuler( euler ) );\n\n\t\t};\n\n\t}(),\n\n\tapplyAxisAngle: function () {\n\n\t\tvar quaternion = new Quaternion();\n\n\t\treturn function applyAxisAngle( axis, angle ) {\n\n\t\t\treturn this.applyQuaternion( quaternion.setFromAxisAngle( axis, angle ) );\n\n\t\t};\n\n\t}(),\n\n\tapplyMatrix3: function ( m ) {\n\n\t\tvar x = this.x, y = this.y, z = this.z;\n\t\tvar e = m.elements;\n\n\t\tthis.x = e[ 0 ] * x + e[ 3 ] * y + e[ 6 ] * z;\n\t\tthis.y = e[ 1 ] * x + e[ 4 ] * y + e[ 7 ] * z;\n\t\tthis.z = e[ 2 ] * x + e[ 5 ] * y + e[ 8 ] * z;\n\n\t\treturn this;\n\n\t},\n\n\tapplyMatrix4: function ( m ) {\n\n\t\tvar x = this.x, y = this.y, z = this.z;\n\t\tvar e = m.elements;\n\n\t\tvar w = 1 / ( e[ 3 ] * x + e[ 7 ] * y + e[ 11 ] * z + e[ 15 ] );\n\n\t\tthis.x = ( e[ 0 ] * x + e[ 4 ] * y + e[ 8 ] * z + e[ 12 ] ) * w;\n\t\tthis.y = ( e[ 1 ] * x + e[ 5 ] * y + e[ 9 ] * z + e[ 13 ] ) * w;\n\t\tthis.z = ( e[ 2 ] * x + e[ 6 ] * y + e[ 10 ] * z + e[ 14 ] ) * w;\n\n\t\treturn this;\n\n\t},\n\n\tapplyQuaternion: function ( q ) {\n\n\t\tvar x = this.x, y = this.y, z = this.z;\n\t\tvar qx = q.x, qy = q.y, qz = q.z, qw = q.w;\n\n\t\t// calculate quat * vector\n\n\t\tvar ix = qw * x + qy * z - qz * y;\n\t\tvar iy = qw * y + qz * x - qx * z;\n\t\tvar iz = qw * z + qx * y - qy * x;\n\t\tvar iw = - qx * x - qy * y - qz * z;\n\n\t\t// calculate result * inverse quat\n\n\t\tthis.x = ix * qw + iw * - qx + iy * - qz - iz * - qy;\n\t\tthis.y = iy * qw + iw * - qy + iz * - qx - ix * - qz;\n\t\tthis.z = iz * qw + iw * - qz + ix * - qy - iy * - qx;\n\n\t\treturn this;\n\n\t},\n\n\tproject: function ( camera ) {\n\n\t\treturn this.applyMatrix4( camera.matrixWorldInverse ).applyMatrix4( camera.projectionMatrix );\n\n\t},\n\n\tunproject: function () {\n\n\t\tvar matrix = new Matrix4();\n\n\t\treturn function unproject( camera ) {\n\n\t\t\treturn this.applyMatrix4( matrix.getInverse( camera.projectionMatrix ) ).applyMatrix4( camera.matrixWorld );\n\n\t\t};\n\n\t}(),\n\n\ttransformDirection: function ( m ) {\n\n\t\t// input: THREE.Matrix4 affine matrix\n\t\t// vector interpreted as a direction\n\n\t\tvar x = this.x, y = this.y, z = this.z;\n\t\tvar e = m.elements;\n\n\t\tthis.x = e[ 0 ] * x + e[ 4 ] * y + e[ 8 ] * z;\n\t\tthis.y = e[ 1 ] * x + e[ 5 ] * y + e[ 9 ] * z;\n\t\tthis.z = e[ 2 ] * x + e[ 6 ] * y + e[ 10 ] * z;\n\n\t\treturn this.normalize();\n\n\t},\n\n\tdivide: function ( v ) {\n\n\t\tthis.x /= v.x;\n\t\tthis.y /= v.y;\n\t\tthis.z /= v.z;\n\n\t\treturn this;\n\n\t},\n\n\tdivideScalar: function ( scalar ) {\n\n\t\treturn this.multiplyScalar( 1 / scalar );\n\n\t},\n\n\tmin: function ( v ) {\n\n\t\tthis.x = Math.min( this.x, v.x );\n\t\tthis.y = Math.min( this.y, v.y );\n\t\tthis.z = Math.min( this.z, v.z );\n\n\t\treturn this;\n\n\t},\n\n\tmax: function ( v ) {\n\n\t\tthis.x = Math.max( this.x, v.x );\n\t\tthis.y = Math.max( this.y, v.y );\n\t\tthis.z = Math.max( this.z, v.z );\n\n\t\treturn this;\n\n\t},\n\n\tclamp: function ( min, max ) {\n\n\t\t// assumes min < max, componentwise\n\n\t\tthis.x = Math.max( min.x, Math.min( max.x, this.x ) );\n\t\tthis.y = Math.max( min.y, Math.min( max.y, this.y ) );\n\t\tthis.z = Math.max( min.z, Math.min( max.z, this.z ) );\n\n\t\treturn this;\n\n\t},\n\n\tclampScalar: function () {\n\n\t\tvar min = new Vector3();\n\t\tvar max = new Vector3();\n\n\t\treturn function clampScalar( minVal, maxVal ) {\n\n\t\t\tmin.set( minVal, minVal, minVal );\n\t\t\tmax.set( maxVal, maxVal, maxVal );\n\n\t\t\treturn this.clamp( min, max );\n\n\t\t};\n\n\t}(),\n\n\tclampLength: function ( min, max ) {\n\n\t\tvar length = this.length();\n\n\t\treturn this.divideScalar( length || 1 ).multiplyScalar( Math.max( min, Math.min( max, length ) ) );\n\n\t},\n\n\tfloor: function () {\n\n\t\tthis.x = Math.floor( this.x );\n\t\tthis.y = Math.floor( this.y );\n\t\tthis.z = Math.floor( this.z );\n\n\t\treturn this;\n\n\t},\n\n\tceil: function () {\n\n\t\tthis.x = Math.ceil( this.x );\n\t\tthis.y = Math.ceil( this.y );\n\t\tthis.z = Math.ceil( this.z );\n\n\t\treturn this;\n\n\t},\n\n\tround: function () {\n\n\t\tthis.x = Math.round( this.x );\n\t\tthis.y = Math.round( this.y );\n\t\tthis.z = Math.round( this.z );\n\n\t\treturn this;\n\n\t},\n\n\troundToZero: function () {\n\n\t\tthis.x = ( this.x < 0 ) ? Math.ceil( this.x ) : Math.floor( this.x );\n\t\tthis.y = ( this.y < 0 ) ? Math.ceil( this.y ) : Math.floor( this.y );\n\t\tthis.z = ( this.z < 0 ) ? Math.ceil( this.z ) : Math.floor( this.z );\n\n\t\treturn this;\n\n\t},\n\n\tnegate: function () {\n\n\t\tthis.x = - this.x;\n\t\tthis.y = - this.y;\n\t\tthis.z = - this.z;\n\n\t\treturn this;\n\n\t},\n\n\tdot: function ( v ) {\n\n\t\treturn this.x * v.x + this.y * v.y + this.z * v.z;\n\n\t},\n\n\t// TODO lengthSquared?\n\n\tlengthSq: function () {\n\n\t\treturn this.x * this.x + this.y * this.y + this.z * this.z;\n\n\t},\n\n\tlength: function () {\n\n\t\treturn Math.sqrt( this.x * this.x + this.y * this.y + this.z * this.z );\n\n\t},\n\n\tmanhattanLength: function () {\n\n\t\treturn Math.abs( this.x ) + Math.abs( this.y ) + Math.abs( this.z );\n\n\t},\n\n\tnormalize: function () {\n\n\t\treturn this.divideScalar( this.length() || 1 );\n\n\t},\n\n\tsetLength: function ( length ) {\n\n\t\treturn this.normalize().multiplyScalar( length );\n\n\t},\n\n\tlerp: function ( v, alpha ) {\n\n\t\tthis.x += ( v.x - this.x ) * alpha;\n\t\tthis.y += ( v.y - this.y ) * alpha;\n\t\tthis.z += ( v.z - this.z ) * alpha;\n\n\t\treturn this;\n\n\t},\n\n\tlerpVectors: function ( v1, v2, alpha ) {\n\n\t\treturn this.subVectors( v2, v1 ).multiplyScalar( alpha ).add( v1 );\n\n\t},\n\n\tcross: function ( v, w ) {\n\n\t\tif ( w !== undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Vector3: .cross() now only accepts one argument. Use .crossVectors( a, b ) instead.' );\n\t\t\treturn this.crossVectors( v, w );\n\n\t\t}\n\n\t\treturn this.crossVectors( this, v );\n\n\t},\n\n\tcrossVectors: function ( a, b ) {\n\n\t\tvar ax = a.x, ay = a.y, az = a.z;\n\t\tvar bx = b.x, by = b.y, bz = b.z;\n\n\t\tthis.x = ay * bz - az * by;\n\t\tthis.y = az * bx - ax * bz;\n\t\tthis.z = ax * by - ay * bx;\n\n\t\treturn this;\n\n\t},\n\n\tprojectOnVector: function ( vector ) {\n\n\t\tvar scalar = vector.dot( this ) / vector.lengthSq();\n\n\t\treturn this.copy( vector ).multiplyScalar( scalar );\n\n\t},\n\n\tprojectOnPlane: function () {\n\n\t\tvar v1 = new Vector3();\n\n\t\treturn function projectOnPlane( planeNormal ) {\n\n\t\t\tv1.copy( this ).projectOnVector( planeNormal );\n\n\t\t\treturn this.sub( v1 );\n\n\t\t};\n\n\t}(),\n\n\treflect: function () {\n\n\t\t// reflect incident vector off plane orthogonal to normal\n\t\t// normal is assumed to have unit length\n\n\t\tvar v1 = new Vector3();\n\n\t\treturn function reflect( normal ) {\n\n\t\t\treturn this.sub( v1.copy( normal ).multiplyScalar( 2 * this.dot( normal ) ) );\n\n\t\t};\n\n\t}(),\n\n\tangleTo: function ( v ) {\n\n\t\tvar theta = this.dot( v ) / ( Math.sqrt( this.lengthSq() * v.lengthSq() ) );\n\n\t\t// clamp, to handle numerical problems\n\n\t\treturn Math.acos( _Math.clamp( theta, - 1, 1 ) );\n\n\t},\n\n\tdistanceTo: function ( v ) {\n\n\t\treturn Math.sqrt( this.distanceToSquared( v ) );\n\n\t},\n\n\tdistanceToSquared: function ( v ) {\n\n\t\tvar dx = this.x - v.x, dy = this.y - v.y, dz = this.z - v.z;\n\n\t\treturn dx * dx + dy * dy + dz * dz;\n\n\t},\n\n\tmanhattanDistanceTo: function ( v ) {\n\n\t\treturn Math.abs( this.x - v.x ) + Math.abs( this.y - v.y ) + Math.abs( this.z - v.z );\n\n\t},\n\n\tsetFromSpherical: function ( s ) {\n\n\t\treturn this.setFromSphericalCoords( s.radius, s.phi, s.theta );\n\n\t},\n\n\tsetFromSphericalCoords: function ( radius, phi, theta ) {\n\n\t\tvar sinPhiRadius = Math.sin( phi ) * radius;\n\n\t\tthis.x = sinPhiRadius * Math.sin( theta );\n\t\tthis.y = Math.cos( phi ) * radius;\n\t\tthis.z = sinPhiRadius * Math.cos( theta );\n\n\t\treturn this;\n\n\t},\n\n\tsetFromCylindrical: function ( c ) {\n\n\t\treturn this.setFromCylindricalCoords( c.radius, c.theta, c.y );\n\n\t},\n\n\tsetFromCylindricalCoords: function ( radius, theta, y ) {\n\n\t\tthis.x = radius * Math.sin( theta );\n\t\tthis.y = y;\n\t\tthis.z = radius * Math.cos( theta );\n\n\t\treturn this;\n\n\t},\n\n\tsetFromMatrixPosition: function ( m ) {\n\n\t\tvar e = m.elements;\n\n\t\tthis.x = e[ 12 ];\n\t\tthis.y = e[ 13 ];\n\t\tthis.z = e[ 14 ];\n\n\t\treturn this;\n\n\t},\n\n\tsetFromMatrixScale: function ( m ) {\n\n\t\tvar sx = this.setFromMatrixColumn( m, 0 ).length();\n\t\tvar sy = this.setFromMatrixColumn( m, 1 ).length();\n\t\tvar sz = this.setFromMatrixColumn( m, 2 ).length();\n\n\t\tthis.x = sx;\n\t\tthis.y = sy;\n\t\tthis.z = sz;\n\n\t\treturn this;\n\n\t},\n\n\tsetFromMatrixColumn: function ( m, index ) {\n\n\t\treturn this.fromArray( m.elements, index * 4 );\n\n\t},\n\n\tequals: function ( v ) {\n\n\t\treturn ( ( v.x === this.x ) && ( v.y === this.y ) && ( v.z === this.z ) );\n\n\t},\n\n\tfromArray: function ( array, offset ) {\n\n\t\tif ( offset === undefined ) offset = 0;\n\n\t\tthis.x = array[ offset ];\n\t\tthis.y = array[ offset + 1 ];\n\t\tthis.z = array[ offset + 2 ];\n\n\t\treturn this;\n\n\t},\n\n\ttoArray: function ( array, offset ) {\n\n\t\tif ( array === undefined ) array = [];\n\t\tif ( offset === undefined ) offset = 0;\n\n\t\tarray[ offset ] = this.x;\n\t\tarray[ offset + 1 ] = this.y;\n\t\tarray[ offset + 2 ] = this.z;\n\n\t\treturn array;\n\n\t},\n\n\tfromBufferAttribute: function ( attribute, index, offset ) {\n\n\t\tif ( offset !== undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Vector3: offset has been removed from .fromBufferAttribute().' );\n\n\t\t}\n\n\t\tthis.x = attribute.getX( index );\n\t\tthis.y = attribute.getY( index );\n\t\tthis.z = attribute.getZ( index );\n\n\t\treturn this;\n\n\t}\n\n} );\n\n\nexport { Vector3 };\n","module.exports = function isBuffer(arg) {\n return arg && typeof arg === 'object'\n && typeof arg.copy === 'function'\n && typeof arg.fill === 'function'\n && typeof arg.readUInt8 === 'function';\n}","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\nvar formatRegExp = /%[sdj%]/g;\nexports.format = function(f) {\n if (!isString(f)) {\n var objects = [];\n for (var i = 0; i < arguments.length; i++) {\n objects.push(inspect(arguments[i]));\n }\n return objects.join(' ');\n }\n\n var i = 1;\n var args = arguments;\n var len = args.length;\n var str = String(f).replace(formatRegExp, function(x) {\n if (x === '%%') return '%';\n if (i >= len) return x;\n switch (x) {\n case '%s': return String(args[i++]);\n case '%d': return Number(args[i++]);\n case '%j':\n try {\n return JSON.stringify(args[i++]);\n } catch (_) {\n return '[Circular]';\n }\n default:\n return x;\n }\n });\n for (var x = args[i]; i < len; x = args[++i]) {\n if (isNull(x) || !isObject(x)) {\n str += ' ' + x;\n } else {\n str += ' ' + inspect(x);\n }\n }\n return str;\n};\n\n\n// Mark that a method should not be used.\n// Returns a modified function which warns once by default.\n// If --no-deprecation is set, then it is a no-op.\nexports.deprecate = function(fn, msg) {\n // Allow for deprecating things in the process of starting up.\n if (isUndefined(global.process)) {\n return function() {\n return exports.deprecate(fn, msg).apply(this, arguments);\n };\n }\n\n if (process.noDeprecation === true) {\n return fn;\n }\n\n var warned = false;\n function deprecated() {\n if (!warned) {\n if (process.throwDeprecation) {\n throw new Error(msg);\n } else if (process.traceDeprecation) {\n console.trace(msg);\n } else {\n console.error(msg);\n }\n warned = true;\n }\n return fn.apply(this, arguments);\n }\n\n return deprecated;\n};\n\n\nvar debugs = {};\nvar debugEnviron;\nexports.debuglog = function(set) {\n if (isUndefined(debugEnviron))\n debugEnviron = process.env.NODE_DEBUG || '';\n set = set.toUpperCase();\n if (!debugs[set]) {\n if (new RegExp('\\\\b' + set + '\\\\b', 'i').test(debugEnviron)) {\n var pid = process.pid;\n debugs[set] = function() {\n var msg = exports.format.apply(exports, arguments);\n console.error('%s %d: %s', set, pid, msg);\n };\n } else {\n debugs[set] = function() {};\n }\n }\n return debugs[set];\n};\n\n\n/**\n * Echos the value of a value. Trys to print the value out\n * in the best way possible given the different types.\n *\n * @param {Object} obj The object to print out.\n * @param {Object} opts Optional options object that alters the output.\n */\n/* legacy: obj, showHidden, depth, colors*/\nfunction inspect(obj, opts) {\n // default options\n var ctx = {\n seen: [],\n stylize: stylizeNoColor\n };\n // legacy...\n if (arguments.length >= 3) ctx.depth = arguments[2];\n if (arguments.length >= 4) ctx.colors = arguments[3];\n if (isBoolean(opts)) {\n // legacy...\n ctx.showHidden = opts;\n } else if (opts) {\n // got an \"options\" object\n exports._extend(ctx, opts);\n }\n // set default options\n if (isUndefined(ctx.showHidden)) ctx.showHidden = false;\n if (isUndefined(ctx.depth)) ctx.depth = 2;\n if (isUndefined(ctx.colors)) ctx.colors = false;\n if (isUndefined(ctx.customInspect)) ctx.customInspect = true;\n if (ctx.colors) ctx.stylize = stylizeWithColor;\n return formatValue(ctx, obj, ctx.depth);\n}\nexports.inspect = inspect;\n\n\n// http://en.wikipedia.org/wiki/ANSI_escape_code#graphics\ninspect.colors = {\n 'bold' : [1, 22],\n 'italic' : [3, 23],\n 'underline' : [4, 24],\n 'inverse' : [7, 27],\n 'white' : [37, 39],\n 'grey' : [90, 39],\n 'black' : [30, 39],\n 'blue' : [34, 39],\n 'cyan' : [36, 39],\n 'green' : [32, 39],\n 'magenta' : [35, 39],\n 'red' : [31, 39],\n 'yellow' : [33, 39]\n};\n\n// Don't use 'blue' not visible on cmd.exe\ninspect.styles = {\n 'special': 'cyan',\n 'number': 'yellow',\n 'boolean': 'yellow',\n 'undefined': 'grey',\n 'null': 'bold',\n 'string': 'green',\n 'date': 'magenta',\n // \"name\": intentionally not styling\n 'regexp': 'red'\n};\n\n\nfunction stylizeWithColor(str, styleType) {\n var style = inspect.styles[styleType];\n\n if (style) {\n return '\\u001b[' + inspect.colors[style][0] + 'm' + str +\n '\\u001b[' + inspect.colors[style][1] + 'm';\n } else {\n return str;\n }\n}\n\n\nfunction stylizeNoColor(str, styleType) {\n return str;\n}\n\n\nfunction arrayToHash(array) {\n var hash = {};\n\n array.forEach(function(val, idx) {\n hash[val] = true;\n });\n\n return hash;\n}\n\n\nfunction formatValue(ctx, value, recurseTimes) {\n // Provide a hook for user-specified inspect functions.\n // Check that value is an object with an inspect function on it\n if (ctx.customInspect &&\n value &&\n isFunction(value.inspect) &&\n // Filter out the util module, it's inspect function is special\n value.inspect !== exports.inspect &&\n // Also filter out any prototype objects using the circular check.\n !(value.constructor && value.constructor.prototype === value)) {\n var ret = value.inspect(recurseTimes, ctx);\n if (!isString(ret)) {\n ret = formatValue(ctx, ret, recurseTimes);\n }\n return ret;\n }\n\n // Primitive types cannot have properties\n var primitive = formatPrimitive(ctx, value);\n if (primitive) {\n return primitive;\n }\n\n // Look up the keys of the object.\n var keys = Object.keys(value);\n var visibleKeys = arrayToHash(keys);\n\n if (ctx.showHidden) {\n keys = Object.getOwnPropertyNames(value);\n }\n\n // IE doesn't make error fields non-enumerable\n // http://msdn.microsoft.com/en-us/library/ie/dww52sbt(v=vs.94).aspx\n if (isError(value)\n && (keys.indexOf('message') >= 0 || keys.indexOf('description') >= 0)) {\n return formatError(value);\n }\n\n // Some type of object without properties can be shortcutted.\n if (keys.length === 0) {\n if (isFunction(value)) {\n var name = value.name ? ': ' + value.name : '';\n return ctx.stylize('[Function' + name + ']', 'special');\n }\n if (isRegExp(value)) {\n return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp');\n }\n if (isDate(value)) {\n return ctx.stylize(Date.prototype.toString.call(value), 'date');\n }\n if (isError(value)) {\n return formatError(value);\n }\n }\n\n var base = '', array = false, braces = ['{', '}'];\n\n // Make Array say that they are Array\n if (isArray(value)) {\n array = true;\n braces = ['[', ']'];\n }\n\n // Make functions say that they are functions\n if (isFunction(value)) {\n var n = value.name ? ': ' + value.name : '';\n base = ' [Function' + n + ']';\n }\n\n // Make RegExps say that they are RegExps\n if (isRegExp(value)) {\n base = ' ' + RegExp.prototype.toString.call(value);\n }\n\n // Make dates with properties first say the date\n if (isDate(value)) {\n base = ' ' + Date.prototype.toUTCString.call(value);\n }\n\n // Make error with message first say the error\n if (isError(value)) {\n base = ' ' + formatError(value);\n }\n\n if (keys.length === 0 && (!array || value.length == 0)) {\n return braces[0] + base + braces[1];\n }\n\n if (recurseTimes < 0) {\n if (isRegExp(value)) {\n return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp');\n } else {\n return ctx.stylize('[Object]', 'special');\n }\n }\n\n ctx.seen.push(value);\n\n var output;\n if (array) {\n output = formatArray(ctx, value, recurseTimes, visibleKeys, keys);\n } else {\n output = keys.map(function(key) {\n return formatProperty(ctx, value, recurseTimes, visibleKeys, key, array);\n });\n }\n\n ctx.seen.pop();\n\n return reduceToSingleString(output, base, braces);\n}\n\n\nfunction formatPrimitive(ctx, value) {\n if (isUndefined(value))\n return ctx.stylize('undefined', 'undefined');\n if (isString(value)) {\n var simple = '\\'' + JSON.stringify(value).replace(/^\"|\"$/g, '')\n .replace(/'/g, \"\\\\'\")\n .replace(/\\\\\"/g, '\"') + '\\'';\n return ctx.stylize(simple, 'string');\n }\n if (isNumber(value))\n return ctx.stylize('' + value, 'number');\n if (isBoolean(value))\n return ctx.stylize('' + value, 'boolean');\n // For some reason typeof null is \"object\", so special case here.\n if (isNull(value))\n return ctx.stylize('null', 'null');\n}\n\n\nfunction formatError(value) {\n return '[' + Error.prototype.toString.call(value) + ']';\n}\n\n\nfunction formatArray(ctx, value, recurseTimes, visibleKeys, keys) {\n var output = [];\n for (var i = 0, l = value.length; i < l; ++i) {\n if (hasOwnProperty(value, String(i))) {\n output.push(formatProperty(ctx, value, recurseTimes, visibleKeys,\n String(i), true));\n } else {\n output.push('');\n }\n }\n keys.forEach(function(key) {\n if (!key.match(/^\\d+$/)) {\n output.push(formatProperty(ctx, value, recurseTimes, visibleKeys,\n key, true));\n }\n });\n return output;\n}\n\n\nfunction formatProperty(ctx, value, recurseTimes, visibleKeys, key, array) {\n var name, str, desc;\n desc = Object.getOwnPropertyDescriptor(value, key) || { value: value[key] };\n if (desc.get) {\n if (desc.set) {\n str = ctx.stylize('[Getter/Setter]', 'special');\n } else {\n str = ctx.stylize('[Getter]', 'special');\n }\n } else {\n if (desc.set) {\n str = ctx.stylize('[Setter]', 'special');\n }\n }\n if (!hasOwnProperty(visibleKeys, key)) {\n name = '[' + key + ']';\n }\n if (!str) {\n if (ctx.seen.indexOf(desc.value) < 0) {\n if (isNull(recurseTimes)) {\n str = formatValue(ctx, desc.value, null);\n } else {\n str = formatValue(ctx, desc.value, recurseTimes - 1);\n }\n if (str.indexOf('\\n') > -1) {\n if (array) {\n str = str.split('\\n').map(function(line) {\n return ' ' + line;\n }).join('\\n').substr(2);\n } else {\n str = '\\n' + str.split('\\n').map(function(line) {\n return ' ' + line;\n }).join('\\n');\n }\n }\n } else {\n str = ctx.stylize('[Circular]', 'special');\n }\n }\n if (isUndefined(name)) {\n if (array && key.match(/^\\d+$/)) {\n return str;\n }\n name = JSON.stringify('' + key);\n if (name.match(/^\"([a-zA-Z_][a-zA-Z_0-9]*)\"$/)) {\n name = name.substr(1, name.length - 2);\n name = ctx.stylize(name, 'name');\n } else {\n name = name.replace(/'/g, \"\\\\'\")\n .replace(/\\\\\"/g, '\"')\n .replace(/(^\"|\"$)/g, \"'\");\n name = ctx.stylize(name, 'string');\n }\n }\n\n return name + ': ' + str;\n}\n\n\nfunction reduceToSingleString(output, base, braces) {\n var numLinesEst = 0;\n var length = output.reduce(function(prev, cur) {\n numLinesEst++;\n if (cur.indexOf('\\n') >= 0) numLinesEst++;\n return prev + cur.replace(/\\u001b\\[\\d\\d?m/g, '').length + 1;\n }, 0);\n\n if (length > 60) {\n return braces[0] +\n (base === '' ? '' : base + '\\n ') +\n ' ' +\n output.join(',\\n ') +\n ' ' +\n braces[1];\n }\n\n return braces[0] + base + ' ' + output.join(', ') + ' ' + braces[1];\n}\n\n\n// NOTE: These type checking functions intentionally don't use `instanceof`\n// because it is fragile and can be easily faked with `Object.create()`.\nfunction isArray(ar) {\n return Array.isArray(ar);\n}\nexports.isArray = isArray;\n\nfunction isBoolean(arg) {\n return typeof arg === 'boolean';\n}\nexports.isBoolean = isBoolean;\n\nfunction isNull(arg) {\n return arg === null;\n}\nexports.isNull = isNull;\n\nfunction isNullOrUndefined(arg) {\n return arg == null;\n}\nexports.isNullOrUndefined = isNullOrUndefined;\n\nfunction isNumber(arg) {\n return typeof arg === 'number';\n}\nexports.isNumber = isNumber;\n\nfunction isString(arg) {\n return typeof arg === 'string';\n}\nexports.isString = isString;\n\nfunction isSymbol(arg) {\n return typeof arg === 'symbol';\n}\nexports.isSymbol = isSymbol;\n\nfunction isUndefined(arg) {\n return arg === void 0;\n}\nexports.isUndefined = isUndefined;\n\nfunction isRegExp(re) {\n return isObject(re) && objectToString(re) === '[object RegExp]';\n}\nexports.isRegExp = isRegExp;\n\nfunction isObject(arg) {\n return typeof arg === 'object' && arg !== null;\n}\nexports.isObject = isObject;\n\nfunction isDate(d) {\n return isObject(d) && objectToString(d) === '[object Date]';\n}\nexports.isDate = isDate;\n\nfunction isError(e) {\n return isObject(e) &&\n (objectToString(e) === '[object Error]' || e instanceof Error);\n}\nexports.isError = isError;\n\nfunction isFunction(arg) {\n return typeof arg === 'function';\n}\nexports.isFunction = isFunction;\n\nfunction isPrimitive(arg) {\n return arg === null ||\n typeof arg === 'boolean' ||\n typeof arg === 'number' ||\n typeof arg === 'string' ||\n typeof arg === 'symbol' || // ES6 symbol\n typeof arg === 'undefined';\n}\nexports.isPrimitive = isPrimitive;\n\nexports.isBuffer = require('./support/isBuffer');\n\nfunction objectToString(o) {\n return Object.prototype.toString.call(o);\n}\n\n\nfunction pad(n) {\n return n < 10 ? '0' + n.toString(10) : n.toString(10);\n}\n\n\nvar months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep',\n 'Oct', 'Nov', 'Dec'];\n\n// 26 Feb 16:19:34\nfunction timestamp() {\n var d = new Date();\n var time = [pad(d.getHours()),\n pad(d.getMinutes()),\n pad(d.getSeconds())].join(':');\n return [d.getDate(), months[d.getMonth()], time].join(' ');\n}\n\n\n// log is just a thin wrapper to console.log that prepends a timestamp\nexports.log = function() {\n console.log('%s - %s', timestamp(), exports.format.apply(exports, arguments));\n};\n\n\n/**\n * Inherit the prototype methods from one constructor into another.\n *\n * The Function.prototype.inherits from lang.js rewritten as a standalone\n * function (not on Function.prototype). NOTE: If this file is to be loaded\n * during bootstrapping this function needs to be rewritten using some native\n * functions as prototype setup using normal JavaScript does not work as\n * expected during bootstrapping (see mirror.js in r114903).\n *\n * @param {function} ctor Constructor function which needs to inherit the\n * prototype.\n * @param {function} superCtor Constructor function to inherit prototype from.\n */\nexports.inherits = require('inherits');\n\nexports._extend = function(origin, add) {\n // Don't do anything if add isn't an object\n if (!add || !isObject(add)) return origin;\n\n var keys = Object.keys(add);\n var i = keys.length;\n while (i--) {\n origin[keys[i]] = add[keys[i]];\n }\n return origin;\n};\n\nfunction hasOwnProperty(obj, prop) {\n return Object.prototype.hasOwnProperty.call(obj, prop);\n}\n","'use strict';\n\n// MODULES //\n\nvar isString = require( 'validate.io-string-primitive' );\nvar isNonNegativeInteger = require( 'validate.io-nonnegative-integer' );\nvar ceil = require( 'math-ceil' );\nvar repeat = require( 'utils-repeat-string' );\n\n\n// CONSTANTS //\n\nvar MAX_SAFE_INTEGER = 9007199254740991; // 2**53 - 1\n\n\n// LEFT PAD //\n\n/**\n* FUNCTION: lpad( str, len[, pad] )\n*\tLeft pads a string such that the padded string has a length of at least `len`.\n*\n* @param {String} str - string to pad\n* @param {Number} len - minimum string length\n* @param {String} [pad=' '] - string used to pad\n* @returns {String} padded string\n*/\nfunction lpad( str, len, pad ) {\n\tvar n;\n\tvar p;\n\tif ( !isString( str ) ) {\n\t\tthrow new TypeError( 'invalid input argument. First argument must be a string. Value: `' + str + '`.' );\n\t}\n\tif ( !isNonNegativeInteger( len ) ) {\n\t\tthrow new TypeError( 'invalid input argument. Second argument must be a nonnegative integer. Value: `' + len + '`.' );\n\t}\n\tif ( arguments.length > 2 ) {\n\t\tp = pad;\n\t\tif ( !isString( p ) ) {\n\t\t\tthrow new TypeError( 'invalid input argument. Third argument must be a string. Value: `' + p + '`.' );\n\t\t}\n\t\tif ( p.length === 0 ) {\n\t\t\tthrow new RangeError( 'invalid input argument. Pad string must not be an empty string.' );\n\t\t}\n\t} else {\n\t\tp = ' ';\n\t}\n\tif ( len > MAX_SAFE_INTEGER ) {\n\t\tthrow new RangeError( 'invalid input argument. Output string length exceeds maximum allowed string length.' );\n\t}\n\tn = ( len - str.length ) / p.length;\n\tif ( n <= 0 ) {\n\t\treturn str;\n\t}\n\tn = ceil( n );\n\treturn repeat( p, n ) + str;\n} // end FUNCTION lpad()\n\n\n// EXPORTS //\n\nmodule.exports = lpad;\n","'use strict';\n\n// MODULES //\n\nvar isString = require( 'validate.io-string-primitive' );\nvar isNonNegativeInteger = require( 'validate.io-nonnegative-integer' );\n\n\n// NOTES //\n\n/**\n* The algorithmic trick used in the implementation is to treat string concatenation the same as binary addition (i.e., any natural number (nonnegative integer) can be expressed as a sum of powers of two).\n*\n* For example,\n*\n* n = 10 => 1010 => 2^3 + 2^0 + 2^1 + 2^0\n*\n* We can produce a 10-repeat string by \"adding\" the results of a 8-repeat string and a 2-repeat string.\n*\n* The implementation is then as follows:\n* : Let `s` be the string to be repeated and `o` be an output string.\n* 0) Initialize an output string `o`.\n* 1) Check the least significant bit to determine if the current `s` string should be \"added\" to the output \"total\".\n* - if the bit is a one, add\n* - otherwise, move on\n* 2) Double the string `s` by adding `s` to `s`.\n* 3) Right-shift the bits of `n`.\n* 4) Check if we have shifted off all bits.\n* - if yes, done.\n* - otherwise, move on\n* 5) Repeat 1-4.\n*\n* The result is that, as the string is repeated, we continually check to see if the doubled string is one which we want to add to our \"total\".\n*\n* The algorithm runs in O(log_2(n)) compared to O(n).\n*/\n\n\n// CONSTANTS //\n\nvar MAX_SAFE_INTEGER = 9007199254740991; // 2**53 - 1\n\n\n// REPEAT //\n\n/**\n* FUNCTION: repeat( str, n )\n*\tRepeats a string a specified number of times and returns the concatenated result.\n*\n* @param {String} str - string to repeat\n* @param {Number} n - number of times to repeat the string\n* @returns {String}\n*/\nfunction repeat( str, n ) {\n\tvar rpt;\n\tvar cnt;\n\tif ( !isString( str ) ) {\n\t\tthrow new TypeError( 'invalid input argument. First argument must be a string. Value: `' + str + '`.' );\n\t}\n\tif ( !isNonNegativeInteger( n ) ) {\n\t\tthrow new TypeError( 'invalid input argument. Second argument must be a nonnegative integer. Value: `' + n + '`.' );\n\t}\n\tif ( str.length === 0 || n === 0 ) {\n\t\treturn '';\n\t}\n\t// Check that output string will not exceed the maximum string length:\n\tif ( str.length * n > MAX_SAFE_INTEGER ) {\n\t\tthrow new RangeError( 'invalid input argument. Output string length exceeds maximum allowed string length.' );\n\t}\n\trpt = '';\n\tcnt = n;\n\tfor( ; ; ) {\n\t\t// If the count is odd, append the current concatenated string:\n\t\tif ( (cnt&1) === 1 ) {\n\t\t\trpt += str;\n\t\t}\n\t\t// Right-shift the bits:\n\t\tcnt >>>= 1;\n\t\tif ( cnt === 0 ) {\n\t\t\tbreak;\n\t\t}\n\t\t// Double the string:\n\t\tstr += str;\n\t}\n\treturn rpt;\n} // end FUNCTION repeat()\n\n\n// EXPORTS //\n\nmodule.exports = repeat;\n","'use strict';\n\n// MODULES //\n\nvar isString = require( 'validate.io-string-primitive' );\nvar isNonNegativeInteger = require( 'validate.io-nonnegative-integer' );\nvar ceil = require( 'math-ceil' );\nvar repeat = require( 'utils-repeat-string' );\n\n\n// CONSTANTS //\n\nvar MAX_SAFE_INTEGER = 9007199254740991; // 2**53 - 1\n\n\n// RIGHT PAD //\n\n/**\n* FUNCTION: rpad( str, len[, pad] )\n*\tRight pads a string such that the padded string has a length of at least `len`.\n*\n* @param {String} str - string to pad\n* @param {Number} len - minimum string length\n* @param {String} [pad=' '] - string used to pad\n* @returns {String} padded string\n*/\nfunction rpad( str, len, pad ) {\n\tvar n;\n\tvar p;\n\tif ( !isString( str ) ) {\n\t\tthrow new TypeError( 'invalid input argument. First argument must be a string. Value: `' + str + '`.' );\n\t}\n\tif ( !isNonNegativeInteger( len ) ) {\n\t\tthrow new TypeError( 'invalid input argument. Second argument must be a nonnegative integer. Value: `' + len + '`.' );\n\t}\n\tif ( arguments.length > 2 ) {\n\t\tp = pad;\n\t\tif ( !isString( p ) ) {\n\t\t\tthrow new TypeError( 'invalid input argument. Third argument must be a string. Value: `' + p + '`.' );\n\t\t}\n\t\tif ( p.length === 0 ) {\n\t\t\tthrow new RangeError( 'invalid input argument. Pad string must not be an empty string.' );\n\t\t}\n\t} else {\n\t\tp = ' ';\n\t}\n\tif ( len > MAX_SAFE_INTEGER ) {\n\t\tthrow new RangeError( 'invalid input argument. Output string length exceeds maximum allowed string length.' );\n\t}\n\tn = ( len - str.length ) / p.length;\n\tif ( n <= 0 ) {\n\t\treturn str;\n\t}\n\tn = ceil( n );\n\treturn str + repeat( p, n );\n} // end FUNCTION rpad()\n\n\n// EXPORTS //\n\nmodule.exports = rpad;\n","/**\n*\n*\tVALIDATE: integer\n*\n*\n*\tDESCRIPTION:\n*\t\t- Validates if a value is an integer.\n*\n*\n*\tNOTES:\n*\t\t[1]\n*\n*\n*\tTODO:\n*\t\t[1]\n*\n*\n*\tLICENSE:\n*\t\tMIT\n*\n*\tCopyright (c) 2014. Athan Reines.\n*\n*\n*\tAUTHOR:\n*\t\tAthan Reines. kgryte@gmail.com. 2014.\n*\n*/\n\n'use strict';\n\n// MODULES //\n\nvar isNumber = require( 'validate.io-number' );\n\n\n// ISINTEGER //\n\n/**\n* FUNCTION: isInteger( value )\n*\tValidates if a value is an integer.\n*\n* @param {Number} value - value to be validated\n* @returns {Boolean} boolean indicating whether value is an integer\n*/\nfunction isInteger( value ) {\n\treturn isNumber( value ) && value%1 === 0;\n} // end FUNCTION isInteger()\n\n\n// EXPORTS //\n\nmodule.exports = isInteger;\n","/**\n*\n*\tVALIDATE: nonnegative-integer\n*\n*\n*\tDESCRIPTION:\n*\t\t- Validates if a value is a nonnegative integer.\n*\n*\n*\tNOTES:\n*\t\t[1]\n*\n*\n*\tTODO:\n*\t\t[1]\n*\n*\n*\tLICENSE:\n*\t\tMIT\n*\n*\tCopyright (c) 2015. Athan Reines.\n*\n*\n*\tAUTHOR:\n*\t\tAthan Reines. kgryte@gmail.com. 2015.\n*\n*/\n\n'use strict';\n\n// MODULES //\n\nvar isInteger = require( 'validate.io-integer' );\n\n\n// IS NONNEGATIVE INTEGER //\n\n/**\n* FUNCTION: isNonNegativeInteger( value )\n*\tValidates if a value is a nonnegative integer.\n*\n* @param {*} value - value to be validated\n* @returns {Boolean} boolean indicating if a value is a nonnegative integer\n*/\nfunction isNonNegativeInteger( value ) {\n\treturn isInteger( value ) && value >= 0;\n} // end FUNCTION isNonNegativeInteger()\n\n\n// EXPORTS //\n\nmodule.exports = isNonNegativeInteger;\n","/**\n*\n*\tVALIDATE: number\n*\n*\n*\tDESCRIPTION:\n*\t\t- Validates if a value is a number.\n*\n*\n*\tNOTES:\n*\t\t[1]\n*\n*\n*\tTODO:\n*\t\t[1]\n*\n*\n*\tLICENSE:\n*\t\tMIT\n*\n*\tCopyright (c) 2014. Athan Reines.\n*\n*\n*\tAUTHOR:\n*\t\tAthan Reines. kgryte@gmail.com. 2014.\n*\n*/\n\n'use strict';\n\n/**\n* FUNCTION: isNumber( value )\n*\tValidates if a value is a number.\n*\n* @param {*} value - value to be validated\n* @returns {Boolean} boolean indicating whether value is a number\n*/\nfunction isNumber( value ) {\n\treturn ( typeof value === 'number' || Object.prototype.toString.call( value ) === '[object Number]' ) && value.valueOf() === value.valueOf();\n} // end FUNCTION isNumber()\n\n\n// EXPORTS //\n\nmodule.exports = isNumber;\n","'use strict';\n\n/**\n* Tests if a value is a string primitive.\n*\n* @param {*} value - value to test\n* @returns {Boolean} boolean indicating if a value is a string primitive\n*/\nfunction isString( value ) {\n\treturn typeof value === 'string';\n} // end FUNCTION isString()\n\n\n// EXPORTS //\n\nmodule.exports = isString;\n","var g;\n\n// This works in non-strict mode\ng = (function() {\n\treturn this;\n})();\n\ntry {\n\t// This works if eval is allowed (see CSP)\n\tg = g || new Function(\"return this\")();\n} catch (e) {\n\t// This works if the window reference is available\n\tif (typeof window === \"object\") g = window;\n}\n\n// g can still be undefined, but nothing to do about it...\n// We return undefined, instead of nothing here, so it's\n// easier to handle this case. if(!global) { ...}\n\nmodule.exports = g;\n","export * from './cameras/cameras';\nexport * from './controls/controls';\nexport * from './core/core';\nexport * from './geometries/geometries';\nexport * from './helpers/helpers';\nexport * from './loaders/loaders';\nexport * from './models/models';\nexport * from './parsers/parsers';\nexport * from './presets/presets';\nexport * from './shaders/shaders';\nexport * from './widgets/widgets';\n\nimport { Raycaster } from 'three/src/core/Raycaster';\n\nconst packageVersion = require('../package.json').version;\nconst d3Version = require('../node_modules/three/package.json').version;\nwindow.console.log(`ami ${packageVersion} (three ${d3Version})`);","import Orthographic, { camerasOrthographic } from './cameras.orthographic';\n\nexport { Orthographic as OrthographicCamera, camerasOrthographic as orthographicCameraFactory };\n","import Intersections from '../core/core.intersections';\nimport Validators from '../core/core.validators';\n\n/**\n * Orthographic camera from THREE.JS with some extra convenience\n * functionalities.\n *\n * @example\n * //\n * //\n *\n * @module cameras/orthographic\n */\n\nconst camerasOrthographic = (three = window.THREE) => {\n if (three === undefined || three.OrthographicCamera === undefined) {\n return null;\n }\n\n const Constructor = three.OrthographicCamera;\n return class extends Constructor {\n constructor(left, right, top, bottom, near, far) {\n super(left, right, top, bottom, near, far);\n\n this._front = null;\n this._back = null;\n\n this._directions = [\n new three.Vector3(1, 0, 0),\n new three.Vector3(0, 1, 0),\n new three.Vector3(0, 0, 1),\n ];\n\n this._directionsLabel = [\n 'A',\n 'P', // TOP/BOTTOM\n 'L',\n 'R', // LEFT/RIGHT\n 'I',\n 'S', // FROM/TO\n ];\n\n this._orientation = 'default';\n this._convention = 'radio';\n this._stackOrientation = 0;\n\n this._right = null;\n this._up = null;\n this._direction = null;\n\n this._controls = null;\n this._box = null;\n this._canvas = {\n width: null,\n height: null,\n };\n\n this._fromFront = true;\n this._angle = 0;\n }\n\n /**\n * Initialize orthographic camera variables\n */\n init(xCosine, yCosine, zCosine, controls, box, canvas) {\n // DEPRECATION NOTICE\n window.console.warn(\n `cameras.orthographic.init(...) is deprecated.\n Use .cosines, .controls, .box and .canvas instead.`\n );\n\n //\n if (\n !(\n Validators.vector3(xCosine) &&\n Validators.vector3(yCosine) &&\n Validators.vector3(zCosine) &&\n Validators.box(box) &&\n controls\n )\n ) {\n window.console.log('Invalid input provided.');\n\n return false;\n }\n\n this._right = xCosine;\n this._up = this._adjustTopDirection(xCosine, yCosine);\n this._direction = new three.Vector3().crossVectors(this._right, this._up);\n this._controls = controls;\n this._box = box;\n this._canvas = canvas;\n\n let ray = {\n position: this._box.center,\n direction: this._direction,\n };\n\n let intersections = this._orderIntersections(\n Intersections.rayBox(ray, this._box),\n this._direction\n );\n this._front = intersections[0];\n this._back = intersections[1];\n\n // set default values\n this.up.set(this._up.x, this._up.y, this._up.z);\n this._updateCanvas();\n this._updatePositionAndTarget(this._front, this._back);\n this._updateMatrices();\n this._updateDirections();\n }\n\n update() {\n // http://www.grahamwideman.com/gw/brain/orientation/orientterms.htm\n // do magics depending on orientation and convention\n // also needs a default mode\n\n if (this._orientation === 'default') {\n switch (this._getMaxIndex(this._directions[2])) {\n case 0:\n this._orientation = 'sagittal';\n break;\n\n case 1:\n this._orientation = 'coronal';\n break;\n\n case 2:\n this._orientation = 'axial';\n break;\n\n default:\n this._orientation = 'free';\n break;\n }\n }\n\n if (this._orientation === 'free') {\n this._right = this._directions[0];\n this._up = this._directions[1];\n this._direction = this._directions[2];\n } else {\n let leftIndex = this.leftDirection();\n let leftDirection = this._directions[leftIndex];\n let posteriorIndex = this.posteriorDirection();\n let posteriorDirection = this._directions[posteriorIndex];\n let superiorIndex = this.superiorDirection();\n let superiorDirection = this._directions[superiorIndex];\n\n if (this._convention === 'radio') {\n switch (this._orientation) {\n case 'axial':\n // up vector is 'anterior'\n if (posteriorDirection.y > 0) {\n posteriorDirection.negate();\n }\n\n // looking towards superior\n if (superiorDirection.z < 0) {\n superiorDirection.negate();\n }\n\n //\n this._right = leftDirection; // does not matter right/left\n this._up = posteriorDirection;\n this._direction = superiorDirection;\n break;\n\n case 'coronal':\n // up vector is 'superior'\n if (superiorDirection.z < 0) {\n superiorDirection.negate();\n }\n\n // looking towards posterior\n if (posteriorDirection.y < 0) {\n posteriorDirection.negate();\n }\n\n //\n this._right = leftDirection; // does not matter right/left\n this._up = superiorDirection;\n this._direction = posteriorDirection;\n break;\n\n case 'sagittal':\n // up vector is 'superior'\n if (superiorDirection.z < 0) {\n superiorDirection.negate();\n }\n\n // looking towards right\n if (leftDirection.x > 0) {\n leftDirection.negate();\n }\n\n //\n this._right = posteriorDirection; // does not matter right/left\n this._up = superiorDirection;\n this._direction = leftDirection;\n\n break;\n\n default:\n window.console.warn(\n `\"${this._orientation}\" orientation is not valid.\n (choices: axial, coronal, sagittal)`\n );\n break;\n }\n } else if (this._convention === 'neuro') {\n switch (this._orientation) {\n case 'axial':\n // up vector is 'anterior'\n if (posteriorDirection.y > 0) {\n posteriorDirection.negate();\n }\n\n // looking towards inferior\n if (superiorDirection.z > 0) {\n superiorDirection.negate();\n }\n\n //\n this._right = leftDirection; // does not matter right/left\n this._up = posteriorDirection;\n this._direction = superiorDirection;\n break;\n\n case 'coronal':\n // up vector is 'superior'\n if (superiorDirection.z < 0) {\n superiorDirection.negate();\n }\n\n // looking towards anterior\n if (posteriorDirection.y > 0) {\n posteriorDirection.negate();\n }\n\n //\n this._right = leftDirection; // does not matter right/left\n this._up = superiorDirection;\n this._direction = posteriorDirection;\n break;\n\n case 'sagittal':\n // up vector is 'superior'\n if (superiorDirection.z < 0) {\n superiorDirection.negate();\n }\n\n // looking towards right\n if (leftDirection.x > 0) {\n leftDirection.negate();\n }\n\n //\n this._right = posteriorDirection; // does not matter right/left\n this._up = superiorDirection;\n this._direction = leftDirection;\n\n break;\n\n default:\n window.console.warn(\n `\"${this._orientation}\" orientation is not valid.\n (choices: axial, coronal, sagittal)`\n );\n break;\n }\n } else {\n window.console.warn(`${this._convention} is not valid (choices: radio, neuro)`);\n }\n }\n\n // that is what determines left/right\n let ray = {\n position: this._box.center,\n direction: this._direction,\n };\n\n let intersections = this._orderIntersections(\n Intersections.rayBox(ray, this._box),\n this._direction\n );\n this._front = intersections[0];\n this._back = intersections[1];\n\n // set default values\n this.up.set(this._up.x, this._up.y, this._up.z);\n this._updateCanvas();\n this._updatePositionAndTarget(this._front, this._back);\n this._updateMatrices();\n this._updateDirections();\n }\n\n leftDirection() {\n return this._findMaxIndex(this._directions, 0);\n }\n\n posteriorDirection() {\n return this._findMaxIndex(this._directions, 1);\n }\n\n superiorDirection() {\n return this._findMaxIndex(this._directions, 2);\n }\n\n /**\n * Invert rows in the current slice.\n * Inverting rows in 2 steps:\n * * Flip the \"up\" vector\n * * Look at the slice from the other side\n */\n invertRows() {\n // flip \"up\" vector\n // we flip up first because invertColumns update projectio matrices\n this.up.multiplyScalar(-1);\n this.invertColumns();\n\n this._updateDirections();\n }\n\n /**\n * Invert rows in the current slice.\n * Inverting rows in 1 step:\n * * Look at the slice from the other side\n */\n invertColumns() {\n this.center();\n // rotate 180 degrees around the up vector...\n let oppositePosition = this._oppositePosition(this.position);\n\n // update posistion and target\n // clone is needed because this.position is overwritten in method\n this._updatePositionAndTarget(oppositePosition, this.position.clone());\n this._updateMatrices();\n this._fromFront = !this._fromFront;\n\n this._angle %= 360;\n this._angle = 360 - this._angle;\n\n this._updateDirections();\n }\n\n /**\n * Center slice in the camera FOV.\n * It also updates the controllers properly.\n * We can center a camera from the front or from the back.\n */\n center() {\n if (this._fromFront) {\n this._updatePositionAndTarget(this._front, this._back);\n } else {\n this._updatePositionAndTarget(this._back, this._front);\n }\n\n this._updateMatrices();\n this._updateDirections();\n }\n\n /**\n * Pi/2 rotation around the zCosine axis.\n * Clock-wise rotation from the user point of view.\n */\n rotate(angle = null) {\n this.center();\n\n let rotationToApply = 90;\n if (angle === null) {\n rotationToApply *= -1;\n this._angle += 90;\n } else {\n rotationToApply = 360 - (angle - this._angle);\n this._angle = angle;\n }\n\n this._angle %= 360;\n\n // Rotate the up vector around the \"zCosine\"\n let rotation = new three.Matrix4().makeRotationAxis(\n this._direction,\n (rotationToApply * Math.PI) / 180\n );\n this.up.applyMatrix4(rotation);\n\n this._updateMatrices();\n this._updateDirections();\n }\n\n // dimensions[0] // width\n // dimensions[1] // height\n // direction= 0 width, 1 height, 2 best\n // factor\n fitBox(direction = 0, factor = 1.5) {\n //\n // if (!(dimensions && dimensions.length >= 2)) {\n // window.console.log('Invalid dimensions container.');\n // window.console.log(dimensions);\n\n // return false;\n // }\n\n //\n let zoom = 1;\n\n // update zoom\n switch (direction) {\n case 0:\n zoom = factor * this._computeZoom(this._canvas.width, this._right);\n break;\n case 1:\n zoom = factor * this._computeZoom(this._canvas.height, this._up);\n break;\n case 2:\n zoom =\n factor *\n Math.min(\n this._computeZoom(this._canvas.width, this._right),\n this._computeZoom(this._canvas.height, this._up)\n );\n break;\n default:\n break;\n }\n\n if (!zoom) {\n return false;\n }\n\n this.zoom = zoom;\n\n this.center();\n }\n\n _adjustTopDirection(horizontalDirection, verticalDirection) {\n const vMaxIndex = this._getMaxIndex(verticalDirection);\n\n // should handle vMax index === 0\n if (\n (vMaxIndex === 2 && verticalDirection.getComponent(vMaxIndex) < 0) ||\n (vMaxIndex === 1 && verticalDirection.getComponent(vMaxIndex) > 0) ||\n (vMaxIndex === 0 && verticalDirection.getComponent(vMaxIndex) > 0)\n ) {\n verticalDirection.negate();\n }\n\n return verticalDirection;\n }\n\n _getMaxIndex(vector) {\n // init with X value\n let maxValue = Math.abs(vector.x);\n let index = 0;\n\n if (Math.abs(vector.y) > maxValue) {\n maxValue = Math.abs(vector.y);\n index = 1;\n }\n\n if (Math.abs(vector.z) > maxValue) {\n index = 2;\n }\n\n return index;\n }\n\n _findMaxIndex(directions, target) {\n // get index of the most superior direction\n let maxIndices = this._getMaxIndices(directions);\n\n for (let i = 0; i < maxIndices.length; i++) {\n if (maxIndices[i] === target) {\n return i;\n }\n }\n }\n\n _getMaxIndices(directions) {\n let indices = [];\n indices.push(this._getMaxIndex(directions[0]));\n indices.push(this._getMaxIndex(directions[1]));\n indices.push(this._getMaxIndex(directions[2]));\n\n return indices;\n }\n\n _orderIntersections(intersections, direction) {\n const ordered = intersections[0].dot(direction) < intersections[1].dot(direction);\n\n if (!ordered) {\n return [intersections[1], intersections[0]];\n }\n\n return intersections;\n }\n\n _updateCanvas() {\n let camFactor = 2;\n this.left = -this._canvas.width / camFactor;\n this.right = this._canvas.width / camFactor;\n this.top = this._canvas.height / camFactor;\n this.bottom = -this._canvas.height / camFactor;\n\n this._updateMatrices();\n this.controls.handleResize();\n }\n\n _oppositePosition(position) {\n let oppositePosition = position.clone();\n // center world postion around box center\n oppositePosition.sub(this._box.center);\n // rotate\n let rotation = new three.Matrix4().makeRotationAxis(this.up, Math.PI);\n\n oppositePosition.applyMatrix4(rotation);\n // translate back to world position\n oppositePosition.add(this._box.center);\n return oppositePosition;\n }\n\n _computeZoom(dimension, direction) {\n if (!(dimension && dimension > 0)) {\n window.console.log('Invalid dimension provided.');\n window.console.log(dimension);\n return false;\n }\n\n // ray\n let ray = {\n position: this._box.center.clone(),\n direction: direction,\n };\n\n let intersections = Intersections.rayBox(ray, this._box);\n if (intersections.length < 2) {\n window.console.log('Can not adjust the camera ( < 2 intersections).');\n window.console.log(ray);\n window.console.log(this._box);\n return false;\n }\n\n return dimension / intersections[0].distanceTo(intersections[1]);\n }\n\n _updatePositionAndTarget(position, target) {\n // position\n this.position.set(position.x, position.y, position.z);\n\n // targets\n this.lookAt(target.x, target.y, target.z);\n this._controls.target.set(target.x, target.y, target.z);\n }\n\n _updateMatrices() {\n this._controls.update();\n // THEN camera\n this.updateProjectionMatrix();\n this.updateMatrixWorld();\n }\n\n _updateLabels() {\n this._directionsLabel = [\n this._vector2Label(this._up),\n this._vector2Label(this._up.clone().negate()),\n this._vector2Label(this._right),\n this._vector2Label(this._right.clone().negate()),\n this._vector2Label(this._direction),\n this._vector2Label(this._direction.clone().negate()),\n ];\n }\n\n _vector2Label(direction) {\n const index = this._getMaxIndex(direction);\n // set vector max value to 1\n const scaledDirection = direction\n .clone()\n .divideScalar(Math.abs(direction.getComponent(index)));\n const delta = 0.2;\n let label = '';\n\n // loop through components of the vector\n for (let i = 0; i < 3; i++) {\n if (i === 0) {\n if (scaledDirection.getComponent(i) + delta >= 1) {\n label += 'L';\n } else if (scaledDirection.getComponent(i) - delta <= -1) {\n label += 'R';\n }\n }\n\n if (i === 1) {\n if (scaledDirection.getComponent(i) + delta >= 1) {\n label += 'P';\n } else if (scaledDirection.getComponent(i) - delta <= -1) {\n label += 'A';\n }\n }\n\n if (i === 2) {\n if (scaledDirection.getComponent(i) + delta >= 1) {\n label += 'S';\n } else if (scaledDirection.getComponent(i) - delta <= -1) {\n label += 'I';\n }\n }\n }\n\n return label;\n }\n\n _updateDirections() {\n // up is correct\n this._up = this.up.clone();\n\n // direction\n let pLocal = new three.Vector3(0, 0, -1);\n let pWorld = pLocal.applyMatrix4(this.matrixWorld);\n this._direction = pWorld.sub(this.position).normalize();\n\n // right\n this._right = new three.Vector3().crossVectors(this._direction, this.up);\n\n // update labels accordingly\n this._updateLabels();\n }\n\n set controls(controls) {\n this._controls = controls;\n }\n\n get controls() {\n return this._controls;\n }\n\n set box(box) {\n this._box = box;\n }\n\n get box() {\n return this._box;\n }\n\n set canvas(canvas) {\n this._canvas = canvas;\n this._updateCanvas();\n }\n\n get canvas() {\n return this._canvas;\n }\n\n set angle(angle) {\n this.rotate(angle);\n }\n\n get angle() {\n return this._angle;\n }\n\n set directions(directions) {\n this._directions = directions;\n }\n\n get directions() {\n return this._directions;\n }\n\n set convention(convention) {\n this._convention = convention;\n }\n\n get convention() {\n return this._convention;\n }\n\n set orientation(orientation) {\n this._orientation = orientation;\n }\n\n get orientation() {\n return this._orientation;\n }\n\n set directionsLabel(directionsLabel) {\n this._directionsLabel = directionsLabel;\n }\n\n get directionsLabel() {\n return this._directionsLabel;\n }\n\n set stackOrientation(stackOrientation) {\n this._stackOrientation = stackOrientation;\n\n if (this._stackOrientation === 0) {\n this._orientation = 'default';\n } else {\n const maxIndex = this._getMaxIndex(this._directions[(this._stackOrientation + 2) % 3]);\n\n if (maxIndex === 0) {\n this._orientation = 'sagittal';\n } else if (maxIndex === 1) {\n this._orientation = 'coronal';\n } else if (maxIndex === 2) {\n this._orientation = 'axial';\n }\n }\n }\n\n get stackOrientation() {\n //\n if (this._orientation === 'default') {\n this._stackOrientation = 0;\n } else {\n let maxIndex = this._getMaxIndex(this._direction);\n\n if (maxIndex === this._getMaxIndex(this._directions[2])) {\n this._stackOrientation = 0;\n } else if (maxIndex === this._getMaxIndex(this._directions[0])) {\n this._stackOrientation = 1;\n } else if (maxIndex === this._getMaxIndex(this._directions[1])) {\n this._stackOrientation = 2;\n }\n }\n\n return this._stackOrientation;\n }\n };\n};\n\n// export factory\nexport { camerasOrthographic };\n// default export to\nexport default camerasOrthographic();\n","import ControlsTrackball, { trackball } from './controls.trackball';\nimport TrackballOrtho, { trackballOrtho } from './controls.trackballortho';\nimport ControlsOrbit, { orbit } from './controls.orbit';\n\nexport {\n ControlsTrackball as TrackballControl,\n trackball as trackballControlFactory,\n TrackballOrtho as TrackballOrthoControl,\n trackballOrtho as trackballOrthoControlFactory,\n ControlsOrbit as OrbitControl,\n orbit as orbitControlFactory,\n};\n","/**\n * @author qiao / https://github.com/qiao\n * @author mrdoob / http://mrdoob.com\n * @author alteredq / http://alteredqualia.com/\n * @author WestLangley / http://github.com/WestLangley\n * @author erich666 / http://erichaines.com\n */\n\n// This set of controls performs orbiting, dollying (zooming), and panning.\n// Unlike TrackballControls, it maintains the \"up\" direction object.up (+Y by default).\n//\n// Orbit - left mouse / touch: one-finger move\n// Zoom - middle mouse, or mousewheel / touch: two-finger spread or squish\n// Pan - right mouse, or left mouse + ctrl/meta/shiftKey, or arrow keys / touch: two-finger move\n\n// adapted from https://github.com/mrdoob/three.js/blob/dev/examples/jsm/controls/OrbitControls.js\n\nconst orbit = (three = window.THREE) => {\n if (three === undefined || three.EventDispatcher === undefined) {\n return null;\n }\n\nvar OrbitControls = function ( object, domElement ) {\n\n\tthis.object = object;\n\n\tthis.domElement = ( domElement !== undefined ) ? domElement : document;\n\n\t// Set to false to disable this control\n\tthis.enabled = true;\n\n\t// Set to prevent default event\n\tthis.preventDefault = true;\n\n\t// \"target\" sets the location of focus, where the object orbits around\n\tthis.target = new three.Vector3();\n\n\t// How far you can dolly in and out ( PerspectiveCamera only )\n\tthis.minDistance = 0;\n\tthis.maxDistance = Infinity;\n\n\t// How far you can zoom in and out ( OrthographicCamera only )\n\tthis.minZoom = 0;\n\tthis.maxZoom = Infinity;\n\n\t// How far you can orbit vertically, upper and lower limits.\n\t// Range is 0 to Math.PI radians.\n\tthis.minPolarAngle = 0; // radians\n\tthis.maxPolarAngle = Math.PI; // radians\n\n\t// How far you can orbit horizontally, upper and lower limits.\n\t// If set, must be a sub-interval of the interval [ - Math.PI, Math.PI ].\n\tthis.minAzimuthAngle = - Infinity; // radians\n\tthis.maxAzimuthAngle = Infinity; // radians\n\n\t// Set to true to enable damping (inertia)\n\t// If damping is enabled, you must call controls.update() in your animation loop\n\tthis.enableDamping = false;\n\tthis.dampingFactor = 0.25;\n\n\t// This option actually enables dollying in and out; left as \"zoom\" for backwards compatibility.\n\t// Set to false to disable zooming\n\tthis.enableZoom = true;\n\tthis.zoomSpeed = 1.0;\n\n\t// Set to false to disable rotating\n\tthis.enableRotate = true;\n\tthis.rotateSpeed = 1.0;\n\n\t// Set to false to disable panning\n\tthis.enablePan = true;\n\tthis.panSpeed = 1.0;\n\tthis.screenSpacePanning = false; // if true, pan in screen-space\n\tthis.keyPanSpeed = 7.0;\t// pixels moved per arrow key push\n\n\t// Set to true to automatically rotate around the target\n\t// If auto-rotate is enabled, you must call controls.update() in your animation loop\n\tthis.autoRotate = false;\n\tthis.autoRotateSpeed = 2.0; // 30 seconds per round when fps is 60\n\n\t// Set to false to disable use of the keys\n\tthis.enableKeys = true;\n\n\t// The four arrow keys\n\tthis.keys = { LEFT: 37, UP: 38, RIGHT: 39, BOTTOM: 40 };\n\n\t// Mouse buttons\n\tthis.mouseButtons = { LEFT: three.MOUSE.LEFT, MIDDLE: three.MOUSE.MIDDLE, RIGHT: three.MOUSE.RIGHT };\n\n\t// for reset\n\tthis.target0 = this.target.clone();\n\tthis.position0 = this.object.position.clone();\n\tthis.zoom0 = this.object.zoom;\n\n\t//\n\t// public methods\n\t//\n\n\tthis.getPolarAngle = function () {\n\n\t\treturn spherical.phi;\n\n\t};\n\n\tthis.getAzimuthalAngle = function () {\n\n\t\treturn spherical.theta;\n\n\t};\n\n\tthis.saveState = function () {\n\n\t\tscope.target0.copy( scope.target );\n\t\tscope.position0.copy( scope.object.position );\n\t\tscope.zoom0 = scope.object.zoom;\n\n\t};\n\n\tthis.reset = function () {\n\n\t\tscope.target.copy( scope.target0 );\n\t\tscope.object.position.copy( scope.position0 );\n\t\tscope.object.zoom = scope.zoom0;\n\n\t\tscope.object.updateProjectionMatrix();\n\t\tscope.dispatchEvent( changeEvent );\n\n\t\tscope.update();\n\n\t\tstate = STATE.NONE;\n\n };\n \n // this method is there to match the Trackball API\n this.handleResize = function () {\n\n }\n\n\t// this method is exposed, but perhaps it would be better if we can make it private...\n\tthis.update = function () {\n\n\t\tvar offset = new three.Vector3();\n\n\t\t// so camera.up is the orbit axis\n\t\tvar quat = new three.Quaternion().setFromUnitVectors( object.up, new three.Vector3( 0, 1, 0 ) );\n\t\tvar quatInverse = quat.clone().inverse();\n\n\t\tvar lastPosition = new three.Vector3();\n\t\tvar lastQuaternion = new three.Quaternion();\n\n\t\treturn function update() {\n\n\t\t\tvar position = scope.object.position;\n\n\t\t\toffset.copy( position ).sub( scope.target );\n\n\t\t\t// rotate offset to \"y-axis-is-up\" space\n\t\t\toffset.applyQuaternion( quat );\n\n\t\t\t// angle from z-axis around y-axis\n\t\t\tspherical.setFromVector3( offset );\n\n\t\t\tif ( scope.autoRotate && state === STATE.NONE ) {\n\n\t\t\t\trotateLeft( getAutoRotationAngle() );\n\n\t\t\t}\n\n\t\t\tspherical.theta += sphericalDelta.theta;\n\t\t\tspherical.phi += sphericalDelta.phi;\n\n\t\t\t// restrict theta to be between desired limits\n\t\t\tspherical.theta = Math.max( scope.minAzimuthAngle, Math.min( scope.maxAzimuthAngle, spherical.theta ) );\n\n\t\t\t// restrict phi to be between desired limits\n\t\t\tspherical.phi = Math.max( scope.minPolarAngle, Math.min( scope.maxPolarAngle, spherical.phi ) );\n\n\t\t\tspherical.makeSafe();\n\n\n\t\t\tspherical.radius *= scale;\n\n\t\t\t// restrict radius to be between desired limits\n\t\t\tspherical.radius = Math.max( scope.minDistance, Math.min( scope.maxDistance, spherical.radius ) );\n\n\t\t\t// move target to panned location\n\t\t\tscope.target.add( panOffset );\n\n\t\t\toffset.setFromSpherical( spherical );\n\n\t\t\t// rotate offset back to \"camera-up-vector-is-up\" space\n\t\t\toffset.applyQuaternion( quatInverse );\n\n\t\t\tposition.copy( scope.target ).add( offset );\n\n\t\t\tscope.object.lookAt( scope.target );\n\n\t\t\tif ( scope.enableDamping === true ) {\n\n\t\t\t\tsphericalDelta.theta *= ( 1 - scope.dampingFactor );\n\t\t\t\tsphericalDelta.phi *= ( 1 - scope.dampingFactor );\n\n\t\t\t\tpanOffset.multiplyScalar( 1 - scope.dampingFactor );\n\n\t\t\t} else {\n\n\t\t\t\tsphericalDelta.set( 0, 0, 0 );\n\n\t\t\t\tpanOffset.set( 0, 0, 0 );\n\n\t\t\t}\n\n\t\t\tscale = 1;\n\n\t\t\t// update condition is:\n\t\t\t// min(camera displacement, camera rotation in radians)^2 > EPS\n\t\t\t// using small-angle approximation cos(x/2) = 1 - x^2 / 8\n\n\t\t\tif ( zoomChanged ||\n\t\t\t\tlastPosition.distanceToSquared( scope.object.position ) > EPS ||\n\t\t\t\t8 * ( 1 - lastQuaternion.dot( scope.object.quaternion ) ) > EPS ) {\n\n\t\t\t\tscope.dispatchEvent( changeEvent );\n\n\t\t\t\tlastPosition.copy( scope.object.position );\n\t\t\t\tlastQuaternion.copy( scope.object.quaternion );\n\t\t\t\tzoomChanged = false;\n\n\t\t\t\treturn true;\n\n\t\t\t}\n\n\t\t\treturn false;\n\n\t\t};\n\n\t}();\n\n\tthis.dispose = function () {\n\n\t\tscope.domElement.removeEventListener( 'contextmenu', onContextMenu, false );\n\t\tscope.domElement.removeEventListener( 'mousedown', onMouseDown, false );\n\t\tscope.domElement.removeEventListener( 'wheel', onMouseWheel, false );\n\n\t\tscope.domElement.removeEventListener( 'touchstart', onTouchStart, false );\n\t\tscope.domElement.removeEventListener( 'touchend', onTouchEnd, false );\n\t\tscope.domElement.removeEventListener( 'touchmove', onTouchMove, false );\n\n\t\tdocument.removeEventListener( 'mousemove', onMouseMove, false );\n\t\tdocument.removeEventListener( 'mouseup', onMouseUp, false );\n\n\t\twindow.removeEventListener( 'keydown', onKeyDown, false );\n\n\t\t//scope.dispatchEvent( { type: 'dispose' } ); // should this be added here?\n\n\t};\n\n\t//\n\t// internals\n\t//\n\n\tvar scope = this;\n\n\tvar changeEvent = { type: 'change' };\n\tvar startEvent = { type: 'start' };\n\tvar endEvent = { type: 'end' };\n\n\tvar STATE = { NONE: - 1, ROTATE: 0, DOLLY: 1, PAN: 2, TOUCH_ROTATE: 3, TOUCH_DOLLY_PAN: 4 };\n\n\tvar state = STATE.NONE;\n\n\tvar EPS = 0.000001;\n\n\t// current position in spherical coordinates\n\tvar spherical = new three.Spherical();\n\tvar sphericalDelta = new three.Spherical();\n\n\tvar scale = 1;\n\tvar panOffset = new three.Vector3();\n\tvar zoomChanged = false;\n\n\tvar rotateStart = new three.Vector2();\n\tvar rotateEnd = new three.Vector2();\n\tvar rotateDelta = new three.Vector2();\n\n\tvar panStart = new three.Vector2();\n\tvar panEnd = new three.Vector2();\n\tvar panDelta = new three.Vector2();\n\n\tvar dollyStart = new three.Vector2();\n\tvar dollyEnd = new three.Vector2();\n\tvar dollyDelta = new three.Vector2();\n\n\tfunction getAutoRotationAngle() {\n\n\t\treturn 2 * Math.PI / 60 / 60 * scope.autoRotateSpeed;\n\n\t}\n\n\tfunction getZoomScale() {\n\n\t\treturn Math.pow( 0.95, scope.zoomSpeed );\n\n\t}\n\n\tfunction rotateLeft( angle ) {\n\n\t\tsphericalDelta.theta -= angle;\n\n\t}\n\n\tfunction rotateUp( angle ) {\n\n\t\tsphericalDelta.phi -= angle;\n\n\t}\n\n\tvar panLeft = function () {\n\n\t\tvar v = new three.Vector3();\n\n\t\treturn function panLeft( distance, objectMatrix ) {\n\n\t\t\tv.setFromMatrixColumn( objectMatrix, 0 ); // get X column of objectMatrix\n\t\t\tv.multiplyScalar( - distance );\n\n\t\t\tpanOffset.add( v );\n\n\t\t};\n\n\t}();\n\n\tvar panUp = function () {\n\n\t\tvar v = new three.Vector3();\n\n\t\treturn function panUp( distance, objectMatrix ) {\n\n\t\t\tif ( scope.screenSpacePanning === true ) {\n\n\t\t\t\tv.setFromMatrixColumn( objectMatrix, 1 );\n\n\t\t\t} else {\n\n\t\t\t\tv.setFromMatrixColumn( objectMatrix, 0 );\n\t\t\t\tv.crossVectors( scope.object.up, v );\n\n\t\t\t}\n\n\t\t\tv.multiplyScalar( distance );\n\n\t\t\tpanOffset.add( v );\n\n\t\t};\n\n\t}();\n\n\t// deltaX and deltaY are in pixels; right and down are positive\n\tvar pan = function () {\n\n\t\tvar offset = new three.Vector3();\n\n\t\treturn function pan( deltaX, deltaY ) {\n\n\t\t\tvar element = scope.domElement === document ? scope.domElement.body : scope.domElement;\n\n\t\t\tif ( scope.object.isPerspectiveCamera ) {\n\n\t\t\t\t// perspective\n\t\t\t\tvar position = scope.object.position;\n\t\t\t\toffset.copy( position ).sub( scope.target );\n\t\t\t\tvar targetDistance = offset.length();\n\n\t\t\t\t// half of the fov is center to top of screen\n\t\t\t\ttargetDistance *= Math.tan( ( scope.object.fov / 2 ) * Math.PI / 180.0 );\n\n\t\t\t\t// we use only clientHeight here so aspect ratio does not distort speed\n\t\t\t\tpanLeft( 2 * deltaX * targetDistance / element.clientHeight, scope.object.matrix );\n\t\t\t\tpanUp( 2 * deltaY * targetDistance / element.clientHeight, scope.object.matrix );\n\n\t\t\t} else if ( scope.object.isOrthographicCamera ) {\n\n\t\t\t\t// orthographic\n\t\t\t\tpanLeft( deltaX * ( scope.object.right - scope.object.left ) / scope.object.zoom / element.clientWidth, scope.object.matrix );\n\t\t\t\tpanUp( deltaY * ( scope.object.top - scope.object.bottom ) / scope.object.zoom / element.clientHeight, scope.object.matrix );\n\n\t\t\t} else {\n\n\t\t\t\t// camera neither orthographic nor perspective\n\t\t\t\tconsole.warn( 'WARNING: OrbitControls.js encountered an unknown camera type - pan disabled.' );\n\t\t\t\tscope.enablePan = false;\n\n\t\t\t}\n\n\t\t};\n\n\t}();\n\n\tfunction dollyIn( dollyScale ) {\n\n\t\tif ( scope.object.isPerspectiveCamera ) {\n\n\t\t\tscale /= dollyScale;\n\n\t\t} else if ( scope.object.isOrthographicCamera ) {\n\n\t\t\tscope.object.zoom = Math.max( scope.minZoom, Math.min( scope.maxZoom, scope.object.zoom * dollyScale ) );\n\t\t\tscope.object.updateProjectionMatrix();\n\t\t\tzoomChanged = true;\n\n\t\t} else {\n\n\t\t\tconsole.warn( 'WARNING: OrbitControls.js encountered an unknown camera type - dolly/zoom disabled.' );\n\t\t\tscope.enableZoom = false;\n\n\t\t}\n\n\t}\n\n\tfunction dollyOut( dollyScale ) {\n\n\t\tif ( scope.object.isPerspectiveCamera ) {\n\n\t\t\tscale *= dollyScale;\n\n\t\t} else if ( scope.object.isOrthographicCamera ) {\n\n\t\t\tscope.object.zoom = Math.max( scope.minZoom, Math.min( scope.maxZoom, scope.object.zoom / dollyScale ) );\n\t\t\tscope.object.updateProjectionMatrix();\n\t\t\tzoomChanged = true;\n\n\t\t} else {\n\n\t\t\tconsole.warn( 'WARNING: OrbitControls.js encountered an unknown camera type - dolly/zoom disabled.' );\n\t\t\tscope.enableZoom = false;\n\n\t\t}\n\n\t}\n\n\t//\n\t// event callbacks - update the object state\n\t//\n\n\tfunction handleMouseDownRotate( event ) {\n\n\t\t//console.log( 'handleMouseDownRotate' );\n\n\t\trotateStart.set( event.clientX, event.clientY );\n\n\t}\n\n\tfunction handleMouseDownDolly( event ) {\n\n\t\t//console.log( 'handleMouseDownDolly' );\n\n\t\tdollyStart.set( event.clientX, event.clientY );\n\n\t}\n\n\tfunction handleMouseDownPan( event ) {\n\n\t\t//console.log( 'handleMouseDownPan' );\n\n\t\tpanStart.set( event.clientX, event.clientY );\n\n\t}\n\n\tfunction handleMouseMoveRotate( event ) {\n\n\t\t//console.log( 'handleMouseMoveRotate' );\n\n\t\trotateEnd.set( event.clientX, event.clientY );\n\n\t\trotateDelta.subVectors( rotateEnd, rotateStart ).multiplyScalar( scope.rotateSpeed );\n\n\t\tvar element = scope.domElement === document ? scope.domElement.body : scope.domElement;\n\n\t\trotateLeft( 2 * Math.PI * rotateDelta.x / element.clientHeight ); // yes, height\n\n\t\trotateUp( 2 * Math.PI * rotateDelta.y / element.clientHeight );\n\n\t\trotateStart.copy( rotateEnd );\n\n\t\tscope.update();\n\n\t}\n\n\tfunction handleMouseMoveDolly( event ) {\n\n\t\t//console.log( 'handleMouseMoveDolly' );\n\n\t\tdollyEnd.set( event.clientX, event.clientY );\n\n\t\tdollyDelta.subVectors( dollyEnd, dollyStart );\n\n\t\tif ( dollyDelta.y > 0 ) {\n\n\t\t\tdollyIn( getZoomScale() );\n\n\t\t} else if ( dollyDelta.y < 0 ) {\n\n\t\t\tdollyOut( getZoomScale() );\n\n\t\t}\n\n\t\tdollyStart.copy( dollyEnd );\n\n\t\tscope.update();\n\n\t}\n\n\tfunction handleMouseMovePan( event ) {\n\n\t\t//console.log( 'handleMouseMovePan' );\n\n\t\tpanEnd.set( event.clientX, event.clientY );\n\n\t\tpanDelta.subVectors( panEnd, panStart ).multiplyScalar( scope.panSpeed );\n\n\t\tpan( panDelta.x, panDelta.y );\n\n\t\tpanStart.copy( panEnd );\n\n\t\tscope.update();\n\n\t}\n\n\tfunction handleMouseUp( event ) {\n\n\t\t// console.log( 'handleMouseUp' );\n\n\t}\n\n\tfunction handleMouseWheel( event ) {\n\n\t\t// console.log( 'handleMouseWheel' );\n\n\t\tif ( event.deltaY < 0 ) {\n\n\t\t\tdollyOut( getZoomScale() );\n\n\t\t} else if ( event.deltaY > 0 ) {\n\n\t\t\tdollyIn( getZoomScale() );\n\n\t\t}\n\n\t\tscope.update();\n\n\t}\n\n\tfunction handleKeyDown( event ) {\n\n\t\t//console.log( 'handleKeyDown' );\n\n\t\tswitch ( event.keyCode ) {\n\n\t\t\tcase scope.keys.UP:\n\t\t\t\tpan( 0, scope.keyPanSpeed );\n\t\t\t\tscope.update();\n\t\t\t\tbreak;\n\n\t\t\tcase scope.keys.BOTTOM:\n\t\t\t\tpan( 0, - scope.keyPanSpeed );\n\t\t\t\tscope.update();\n\t\t\t\tbreak;\n\n\t\t\tcase scope.keys.LEFT:\n\t\t\t\tpan( scope.keyPanSpeed, 0 );\n\t\t\t\tscope.update();\n\t\t\t\tbreak;\n\n\t\t\tcase scope.keys.RIGHT:\n\t\t\t\tpan( - scope.keyPanSpeed, 0 );\n\t\t\t\tscope.update();\n\t\t\t\tbreak;\n\n\t\t}\n\n\t}\n\n\tfunction handleTouchStartRotate( event ) {\n\n\t\t//console.log( 'handleTouchStartRotate' );\n\n\t\trotateStart.set( event.touches[ 0 ].pageX, event.touches[ 0 ].pageY );\n\n\t}\n\n\tfunction handleTouchStartDollyPan( event ) {\n\n\t\t//console.log( 'handleTouchStartDollyPan' );\n\n\t\tif ( scope.enableZoom ) {\n\n\t\t\tvar dx = event.touches[ 0 ].pageX - event.touches[ 1 ].pageX;\n\t\t\tvar dy = event.touches[ 0 ].pageY - event.touches[ 1 ].pageY;\n\n\t\t\tvar distance = Math.sqrt( dx * dx + dy * dy );\n\n\t\t\tdollyStart.set( 0, distance );\n\n\t\t}\n\n\t\tif ( scope.enablePan ) {\n\n\t\t\tvar x = 0.5 * ( event.touches[ 0 ].pageX + event.touches[ 1 ].pageX );\n\t\t\tvar y = 0.5 * ( event.touches[ 0 ].pageY + event.touches[ 1 ].pageY );\n\n\t\t\tpanStart.set( x, y );\n\n\t\t}\n\n\t}\n\n\tfunction handleTouchMoveRotate( event ) {\n\n\t\t//console.log( 'handleTouchMoveRotate' );\n\n\t\trotateEnd.set( event.touches[ 0 ].pageX, event.touches[ 0 ].pageY );\n\n\t\trotateDelta.subVectors( rotateEnd, rotateStart ).multiplyScalar( scope.rotateSpeed );\n\n\t\tvar element = scope.domElement === document ? scope.domElement.body : scope.domElement;\n\n\t\trotateLeft( 2 * Math.PI * rotateDelta.x / element.clientHeight ); // yes, height\n\n\t\trotateUp( 2 * Math.PI * rotateDelta.y / element.clientHeight );\n\n\t\trotateStart.copy( rotateEnd );\n\n\t\tscope.update();\n\n\t}\n\n\tfunction handleTouchMoveDollyPan( event ) {\n\n\t\t//console.log( 'handleTouchMoveDollyPan' );\n\n\t\tif ( scope.enableZoom ) {\n\n\t\t\tvar dx = event.touches[ 0 ].pageX - event.touches[ 1 ].pageX;\n\t\t\tvar dy = event.touches[ 0 ].pageY - event.touches[ 1 ].pageY;\n\n\t\t\tvar distance = Math.sqrt( dx * dx + dy * dy );\n\n\t\t\tdollyEnd.set( 0, distance );\n\n\t\t\tdollyDelta.set( 0, Math.pow( dollyEnd.y / dollyStart.y, scope.zoomSpeed ) );\n\n\t\t\tdollyIn( dollyDelta.y );\n\n\t\t\tdollyStart.copy( dollyEnd );\n\n\t\t}\n\n\t\tif ( scope.enablePan ) {\n\n\t\t\tvar x = 0.5 * ( event.touches[ 0 ].pageX + event.touches[ 1 ].pageX );\n\t\t\tvar y = 0.5 * ( event.touches[ 0 ].pageY + event.touches[ 1 ].pageY );\n\n\t\t\tpanEnd.set( x, y );\n\n\t\t\tpanDelta.subVectors( panEnd, panStart ).multiplyScalar( scope.panSpeed );\n\n\t\t\tpan( panDelta.x, panDelta.y );\n\n\t\t\tpanStart.copy( panEnd );\n\n\t\t}\n\n\t\tscope.update();\n\n\t}\n\n\tfunction handleTouchEnd( event ) {\n\n\t\t//console.log( 'handleTouchEnd' );\n\n\t}\n\n\t//\n\t// event handlers - FSM: listen for events and reset state\n\t//\n\n\tfunction onMouseDown( event ) {\n\n\t\tif ( scope.enabled === false ) return;\n\n\t\tif ( scope.preventDefault === true ) event.preventDefault();\n\n\t\tswitch ( event.button ) {\n\n\t\t\tcase scope.mouseButtons.LEFT:\n\n\t\t\t\tif ( event.ctrlKey || event.metaKey || event.shiftKey ) {\n\n\t\t\t\t\tif ( scope.enablePan === false ) return;\n\n\t\t\t\t\thandleMouseDownPan( event );\n\n\t\t\t\t\tstate = STATE.PAN;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tif ( scope.enableRotate === false ) return;\n\n\t\t\t\t\thandleMouseDownRotate( event );\n\n\t\t\t\t\tstate = STATE.ROTATE;\n\n\t\t\t\t}\n\n\t\t\t\tbreak;\n\n\t\t\tcase scope.mouseButtons.MIDDLE:\n\n\t\t\t\tif ( scope.enableZoom === false ) return;\n\n\t\t\t\thandleMouseDownDolly( event );\n\n\t\t\t\tstate = STATE.DOLLY;\n\n\t\t\t\tbreak;\n\n\t\t\tcase scope.mouseButtons.RIGHT:\n\n\t\t\t\tif ( scope.enablePan === false ) return;\n\n\t\t\t\thandleMouseDownPan( event );\n\n\t\t\t\tstate = STATE.PAN;\n\n\t\t\t\tbreak;\n\n\t\t}\n\n\t\tif ( state !== STATE.NONE ) {\n\n\t\t\tdocument.addEventListener( 'mousemove', onMouseMove, false );\n\t\t\tdocument.addEventListener( 'mouseup', onMouseUp, false );\n\n\t\t\tscope.dispatchEvent( startEvent );\n\n\t\t}\n\n\t}\n\n\tfunction onMouseMove( event ) {\n\n\t\tif ( scope.enabled === false ) return;\n\n\t\tif ( scope.preventDefault === true ) event.preventDefault();\n\n\t\tswitch ( state ) {\n\n\t\t\tcase STATE.ROTATE:\n\n\t\t\t\tif ( scope.enableRotate === false ) return;\n\n\t\t\t\thandleMouseMoveRotate( event );\n\n\t\t\t\tbreak;\n\n\t\t\tcase STATE.DOLLY:\n\n\t\t\t\tif ( scope.enableZoom === false ) return;\n\n\t\t\t\thandleMouseMoveDolly( event );\n\n\t\t\t\tbreak;\n\n\t\t\tcase STATE.PAN:\n\n\t\t\t\tif ( scope.enablePan === false ) return;\n\n\t\t\t\thandleMouseMovePan( event );\n\n\t\t\t\tbreak;\n\n\t\t}\n\n\t}\n\n\tfunction onMouseUp( event ) {\n\n\t\tif ( scope.enabled === false ) return;\n\n\t\thandleMouseUp( event );\n\n\t\tdocument.removeEventListener( 'mousemove', onMouseMove, false );\n\t\tdocument.removeEventListener( 'mouseup', onMouseUp, false );\n\n\t\tscope.dispatchEvent( endEvent );\n\n\t\tstate = STATE.NONE;\n\n\t}\n\n\tfunction onMouseWheel( event ) {\n\n\t\tif ( scope.enabled === false || scope.enableZoom === false || ( state !== STATE.NONE && state !== STATE.ROTATE ) ) return;\n\n\t\tif ( scope.preventDefault === true ) {\n\t\t event.preventDefault();\n\t\t event.stopPropagation();\n\t\t}\n\n\t\tscope.dispatchEvent( startEvent );\n\n\t\thandleMouseWheel( event );\n\n\t\tscope.dispatchEvent( endEvent );\n\n\t}\n\n\tfunction onKeyDown( event ) {\n\n\t\tif ( scope.enabled === false || scope.enableKeys === false || scope.enablePan === false ) return;\n\n\t\thandleKeyDown( event );\n\n\t}\n\n\tfunction onTouchStart( event ) {\n\n\t\tif ( scope.enabled === false ) return;\n\n\t\tif ( scope.preventDefault === true ) event.preventDefault();\n\n\t\tswitch ( event.touches.length ) {\n\n\t\t\tcase 1:\t// one-fingered touch: rotate\n\n\t\t\t\tif ( scope.enableRotate === false ) return;\n\n\t\t\t\thandleTouchStartRotate( event );\n\n\t\t\t\tstate = STATE.TOUCH_ROTATE;\n\n\t\t\t\tbreak;\n\n\t\t\tcase 2:\t// two-fingered touch: dolly-pan\n\n\t\t\t\tif ( scope.enableZoom === false && scope.enablePan === false ) return;\n\n\t\t\t\thandleTouchStartDollyPan( event );\n\n\t\t\t\tstate = STATE.TOUCH_DOLLY_PAN;\n\n\t\t\t\tbreak;\n\n\t\t\tdefault:\n\n\t\t\t\tstate = STATE.NONE;\n\n\t\t}\n\n\t\tif ( state !== STATE.NONE ) {\n\n\t\t\tscope.dispatchEvent( startEvent );\n\n\t\t}\n\n\t}\n\n\tfunction onTouchMove( event ) {\n\n\t\tif ( scope.enabled === false ) return;\n\n\t\tif ( scope.preventDefault === true ) {\n\t\t event.preventDefault();\n\t\t event.stopPropagation();\n\t\t}\n\n\t\tswitch ( event.touches.length ) {\n\n\t\t\tcase 1: // one-fingered touch: rotate\n\n\t\t\t\tif ( scope.enableRotate === false ) return;\n\t\t\t\tif ( state !== STATE.TOUCH_ROTATE ) return; // is this needed?\n\n\t\t\t\thandleTouchMoveRotate( event );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 2: // two-fingered touch: dolly-pan\n\n\t\t\t\tif ( scope.enableZoom === false && scope.enablePan === false ) return;\n\t\t\t\tif ( state !== STATE.TOUCH_DOLLY_PAN ) return; // is this needed?\n\n\t\t\t\thandleTouchMoveDollyPan( event );\n\n\t\t\t\tbreak;\n\n\t\t\tdefault:\n\n\t\t\t\tstate = STATE.NONE;\n\n\t\t}\n\n\t}\n\n\tfunction onTouchEnd( event ) {\n\n\t\tif ( scope.enabled === false ) return;\n\n\t\thandleTouchEnd( event );\n\n\t\tscope.dispatchEvent( endEvent );\n\n\t\tstate = STATE.NONE;\n\n\t}\n\n\tfunction onContextMenu( event ) {\n\n\t\tif ( scope.enabled === false ) return;\n\n\t\tif ( scope.preventDefault === true ) event.preventDefault();\n\n\t}\n\n\t//\n\n\tscope.domElement.addEventListener( 'contextmenu', onContextMenu, false );\n\n\tscope.domElement.addEventListener( 'mousedown', onMouseDown, false );\n\tscope.domElement.addEventListener( 'wheel', onMouseWheel, false );\n\n\tscope.domElement.addEventListener( 'touchstart', onTouchStart, false );\n\tscope.domElement.addEventListener( 'touchend', onTouchEnd, false );\n\tscope.domElement.addEventListener( 'touchmove', onTouchMove, false );\n\n\twindow.addEventListener( 'keydown', onKeyDown, false );\n\n\t// force an update at start\n\n\tthis.update();\n\n};\n\nOrbitControls.prototype = Object.create( three.EventDispatcher.prototype );\nOrbitControls.prototype.constructor = OrbitControls;\n\nObject.defineProperties( OrbitControls.prototype, {\n\n\tcenter: {\n\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.OrbitControls: .center has been renamed to .target' );\n\t\t\treturn this.target;\n\n\t\t}\n\n\t},\n\n\t// backward compatibility\n\n\tnoZoom: {\n\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.OrbitControls: .noZoom has been deprecated. Use .enableZoom instead.' );\n\t\t\treturn ! this.enableZoom;\n\n\t\t},\n\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.OrbitControls: .noZoom has been deprecated. Use .enableZoom instead.' );\n\t\t\tthis.enableZoom = ! value;\n\n\t\t}\n\n\t},\n\n\tnoRotate: {\n\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.OrbitControls: .noRotate has been deprecated. Use .enableRotate instead.' );\n\t\t\treturn ! this.enableRotate;\n\n\t\t},\n\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.OrbitControls: .noRotate has been deprecated. Use .enableRotate instead.' );\n\t\t\tthis.enableRotate = ! value;\n\n\t\t}\n\n\t},\n\n\tnoPan: {\n\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.OrbitControls: .noPan has been deprecated. Use .enablePan instead.' );\n\t\t\treturn ! this.enablePan;\n\n\t\t},\n\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.OrbitControls: .noPan has been deprecated. Use .enablePan instead.' );\n\t\t\tthis.enablePan = ! value;\n\n\t\t}\n\n\t},\n\n\tnoKeys: {\n\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.OrbitControls: .noKeys has been deprecated. Use .enableKeys instead.' );\n\t\t\treturn ! this.enableKeys;\n\n\t\t},\n\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.OrbitControls: .noKeys has been deprecated. Use .enableKeys instead.' );\n\t\t\tthis.enableKeys = ! value;\n\n\t\t}\n\n\t},\n\n\tstaticMoving: {\n\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.OrbitControls: .staticMoving has been deprecated. Use .enableDamping instead.' );\n\t\t\treturn ! this.enableDamping;\n\n\t\t},\n\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.OrbitControls: .staticMoving has been deprecated. Use .enableDamping instead.' );\n\t\t\tthis.enableDamping = ! value;\n\n\t\t}\n\n\t},\n\n\tdynamicDampingFactor: {\n\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.OrbitControls: .dynamicDampingFactor has been renamed. Use .dampingFactor instead.' );\n\t\t\treturn this.dampingFactor;\n\n\t\t},\n\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.OrbitControls: .dynamicDampingFactor has been renamed. Use .dampingFactor instead.' );\n\t\t\tthis.dampingFactor = value;\n\n\t\t}\n\n\t}\n\n} );\n\nreturn OrbitControls;\n}\n\nexport { orbit };\nexport default orbit();\n","/**\n * Original authors from THREEJS repo\n * @author Eberhard Graether / http://egraether.com/\n * @author Mark Lundin / http://mark-lundin.com\n * @author Simone Manini / http://daron1337.github.io\n * @author Luca Antiga / http://lantiga.github.io\n */\n\nconst trackball = (three = window.THREE) => {\n if (three === undefined || three.EventDispatcher === undefined) {\n return null;\n }\n\n const Constructor = three.EventDispatcher;\n return class extends Constructor {\n constructor(object, domElement) {\n super();\n\n let _this = this;\n let STATE = {\n NONE: -1,\n ROTATE: 0,\n ZOOM: 1,\n PAN: 2,\n TOUCH_ROTATE: 3,\n TOUCH_ZOOM: 4,\n TOUCH_PAN: 5,\n CUSTOM: 99,\n };\n\n this.object = object;\n this.domElement = domElement !== undefined ? domElement : document;\n\n // API\n\n this.enabled = true;\n\n this.screen = { left: 0, top: 0, width: 0, height: 0 };\n\n this.rotateSpeed = 1.0;\n this.zoomSpeed = 1.2;\n this.panSpeed = 0.3;\n\n this.noRotate = false;\n this.noZoom = false;\n this.noPan = false;\n this.noCustom = false;\n\n this.forceState = -1;\n\n this.staticMoving = false;\n this.dynamicDampingFactor = 0.2;\n\n this.minDistance = 0;\n this.maxDistance = Infinity;\n\n this.keys = [65 /* A*/, 83 /* S*/, 68];\n\n // internals\n\n this.target = new three.Vector3();\n\n let EPS = 0.000001;\n\n let lastPosition = new three.Vector3();\n\n let _state = STATE.NONE,\n _prevState = STATE.NONE,\n _eye = new three.Vector3(),\n _movePrev = new three.Vector2(),\n _moveCurr = new three.Vector2(),\n _lastAxis = new three.Vector3(),\n _lastAngle = 0,\n _zoomStart = new three.Vector2(),\n _zoomEnd = new three.Vector2(),\n _touchZoomDistanceStart = 0,\n _touchZoomDistanceEnd = 0,\n _panStart = new three.Vector2(),\n _panEnd = new three.Vector2(),\n _customStart = new three.Vector2(),\n _customEnd = new three.Vector2();\n\n // for reset\n\n this.target0 = this.target.clone();\n this.position0 = this.object.position.clone();\n this.up0 = this.object.up.clone();\n\n // events\n\n let changeEvent = { type: 'change' };\n let startEvent = { type: 'start' };\n let endEvent = { type: 'end' };\n\n // methods\n\n this.handleResize = function() {\n if (this.domElement === document) {\n this.screen.left = 0;\n this.screen.top = 0;\n this.screen.width = window.innerWidth;\n this.screen.height = window.innerHeight;\n } else {\n let box = this.domElement.getBoundingClientRect();\n // adjustments come from similar code in the jquery offset() function\n let d = this.domElement.ownerDocument.documentElement;\n this.screen.left = box.left + window.pageXOffset - d.clientLeft;\n this.screen.top = box.top + window.pageYOffset - d.clientTop;\n this.screen.width = box.width;\n this.screen.height = box.height;\n }\n };\n\n this.handleEvent = function(event) {\n if (typeof this[event.type] == 'function') {\n this[event.type](event);\n }\n };\n\n let getMouseOnScreen = (function() {\n let vector = new three.Vector2();\n\n return function(pageX, pageY) {\n vector.set(\n (pageX - _this.screen.left) / _this.screen.width,\n (pageY - _this.screen.top) / _this.screen.height\n );\n\n return vector;\n };\n })();\n\n let getMouseOnCircle = (function() {\n let vector = new three.Vector2();\n\n return function(pageX, pageY) {\n vector.set(\n (pageX - _this.screen.width * 0.5 - _this.screen.left) / (_this.screen.width * 0.5),\n (_this.screen.height + 2 * (_this.screen.top - pageY)) / _this.screen.width // screen.width intentional\n );\n\n return vector;\n };\n })();\n\n this.rotateCamera = (function() {\n let axis = new three.Vector3(),\n quaternion = new three.Quaternion(),\n eyeDirection = new three.Vector3(),\n objectUpDirection = new three.Vector3(),\n objectSidewaysDirection = new three.Vector3(),\n moveDirection = new three.Vector3(),\n angle;\n\n return function() {\n moveDirection.set(_moveCurr.x - _movePrev.x, _moveCurr.y - _movePrev.y, 0);\n angle = moveDirection.length();\n\n if (angle) {\n _eye.copy(_this.object.position).sub(_this.target);\n\n eyeDirection.copy(_eye).normalize();\n objectUpDirection.copy(_this.object.up).normalize();\n objectSidewaysDirection.crossVectors(objectUpDirection, eyeDirection).normalize();\n\n objectUpDirection.setLength(_moveCurr.y - _movePrev.y);\n objectSidewaysDirection.setLength(_moveCurr.x - _movePrev.x);\n\n moveDirection.copy(objectUpDirection.add(objectSidewaysDirection));\n\n axis.crossVectors(moveDirection, _eye).normalize();\n\n angle *= _this.rotateSpeed;\n quaternion.setFromAxisAngle(axis, angle);\n\n _eye.applyQuaternion(quaternion);\n _this.object.up.applyQuaternion(quaternion);\n\n _lastAxis.copy(axis);\n _lastAngle = angle;\n } else if (!_this.staticMoving && _lastAngle) {\n _lastAngle *= Math.sqrt(1.0 - _this.dynamicDampingFactor);\n _eye.copy(_this.object.position).sub(_this.target);\n quaternion.setFromAxisAngle(_lastAxis, _lastAngle);\n _eye.applyQuaternion(quaternion);\n _this.object.up.applyQuaternion(quaternion);\n }\n\n _movePrev.copy(_moveCurr);\n };\n })();\n\n this.zoomCamera = function() {\n let factor;\n\n if (_state === STATE.TOUCH_ZOOM) {\n factor = _touchZoomDistanceStart / _touchZoomDistanceEnd;\n _touchZoomDistanceStart = _touchZoomDistanceEnd;\n _eye.multiplyScalar(factor);\n } else {\n factor = 1.0 + (_zoomEnd.y - _zoomStart.y) * _this.zoomSpeed;\n\n if (factor !== 1.0 && factor > 0.0) {\n _eye.multiplyScalar(factor);\n\n if (_this.staticMoving) {\n _zoomStart.copy(_zoomEnd);\n } else {\n _zoomStart.y += (_zoomEnd.y - _zoomStart.y) * this.dynamicDampingFactor;\n }\n }\n }\n };\n\n this.panCamera = (function() {\n let mouseChange = new three.Vector2(),\n objectUp = new three.Vector3(),\n pan = new three.Vector3();\n\n return function() {\n mouseChange.copy(_panEnd).sub(_panStart);\n\n if (mouseChange.lengthSq()) {\n mouseChange.multiplyScalar(_eye.length() * _this.panSpeed);\n\n pan\n .copy(_eye)\n .cross(_this.object.up)\n .setLength(mouseChange.x);\n pan.add(objectUp.copy(_this.object.up).setLength(mouseChange.y));\n\n _this.object.position.add(pan);\n _this.target.add(pan);\n\n if (_this.staticMoving) {\n _panStart.copy(_panEnd);\n } else {\n _panStart.add(\n mouseChange\n .subVectors(_panEnd, _panStart)\n .multiplyScalar(_this.dynamicDampingFactor)\n );\n }\n }\n };\n })();\n\n this.checkDistances = function() {\n if (!_this.noZoom || !_this.noPan) {\n if (_eye.lengthSq() > _this.maxDistance * _this.maxDistance) {\n _this.object.position.addVectors(_this.target, _eye.setLength(_this.maxDistance));\n }\n\n if (_eye.lengthSq() < _this.minDistance * _this.minDistance) {\n _this.object.position.addVectors(_this.target, _eye.setLength(_this.minDistance));\n }\n }\n };\n\n this.update = function() {\n _eye.subVectors(_this.object.position, _this.target);\n\n if (!_this.noRotate) {\n _this.rotateCamera();\n }\n\n if (!_this.noZoom) {\n _this.zoomCamera();\n }\n\n if (!_this.noPan) {\n _this.panCamera();\n }\n\n if (!_this.noCustom) {\n _this.custom(_customStart, _customEnd);\n }\n\n _this.object.position.addVectors(_this.target, _eye);\n\n _this.checkDistances();\n\n _this.object.lookAt(_this.target);\n\n if (lastPosition.distanceToSquared(_this.object.position) > EPS) {\n _this.dispatchEvent(changeEvent);\n\n lastPosition.copy(_this.object.position);\n }\n };\n\n this.reset = function() {\n _state = STATE.NONE;\n _prevState = STATE.NONE;\n\n _this.target.copy(_this.target0);\n _this.object.position.copy(_this.position0);\n _this.object.up.copy(_this.up0);\n\n _eye.subVectors(_this.object.position, _this.target);\n\n _this.object.lookAt(_this.target);\n\n _this.dispatchEvent(changeEvent);\n\n lastPosition.copy(_this.object.position);\n };\n\n this.setState = function(targetState) {\n _this.forceState = targetState;\n _prevState = targetState;\n _state = targetState;\n };\n\n this.custom = function(customStart, customEnd) {};\n\n // listeners\n\n function keydown(event) {\n if (_this.enabled === false) return;\n\n window.removeEventListener('keydown', keydown);\n\n _prevState = _state;\n\n if (_state !== STATE.NONE) {\n return;\n } else if (event.keyCode === _this.keys[STATE.ROTATE] && !_this.noRotate) {\n _state = STATE.ROTATE;\n } else if (event.keyCode === _this.keys[STATE.ZOOM] && !_this.noZoom) {\n _state = STATE.ZOOM;\n } else if (event.keyCode === _this.keys[STATE.PAN] && !_this.noPan) {\n _state = STATE.PAN;\n }\n }\n\n function keyup(event) {\n if (_this.enabled === false) return;\n\n _state = _prevState;\n\n window.addEventListener('keydown', keydown, false);\n }\n\n function mousedown(event) {\n if (_this.enabled === false) return;\n\n event.preventDefault();\n event.stopPropagation();\n\n if (_state === STATE.NONE) {\n _state = event.button;\n }\n\n if (_state === STATE.ROTATE && !_this.noRotate) {\n _moveCurr.copy(getMouseOnCircle(event.pageX, event.pageY));\n _movePrev.copy(_moveCurr);\n } else if (_state === STATE.ZOOM && !_this.noZoom) {\n _zoomStart.copy(getMouseOnScreen(event.pageX, event.pageY));\n _zoomEnd.copy(_zoomStart);\n } else if (_state === STATE.PAN && !_this.noPan) {\n _panStart.copy(getMouseOnScreen(event.pageX, event.pageY));\n _panEnd.copy(_panStart);\n } else if (_state === STATE.CUSTOM && !_this.noCustom) {\n _customStart.copy(getMouseOnScreen(event.pageX, event.pageY));\n _customEnd.copy(_panStart);\n }\n\n document.addEventListener('mousemove', mousemove, false);\n document.addEventListener('mouseup', mouseup, false);\n\n _this.dispatchEvent(startEvent);\n }\n\n function mousemove(event) {\n if (_this.enabled === false) return;\n\n event.preventDefault();\n event.stopPropagation();\n\n if (_state === STATE.ROTATE && !_this.noRotate) {\n _movePrev.copy(_moveCurr);\n _moveCurr.copy(getMouseOnCircle(event.pageX, event.pageY));\n } else if (_state === STATE.ZOOM && !_this.noZoom) {\n _zoomEnd.copy(getMouseOnScreen(event.pageX, event.pageY));\n } else if (_state === STATE.PAN && !_this.noPan) {\n _panEnd.copy(getMouseOnScreen(event.pageX, event.pageY));\n } else if (_state === STATE.CUSTOM && !_this.noCustom) {\n _customEnd.copy(getMouseOnScreen(event.pageX, event.pageY));\n }\n }\n\n function mouseup(event) {\n if (_this.enabled === false) return;\n\n event.preventDefault();\n event.stopPropagation();\n\n if (_this.forceState === -1) {\n _state = STATE.NONE;\n }\n\n document.removeEventListener('mousemove', mousemove);\n document.removeEventListener('mouseup', mouseup);\n _this.dispatchEvent(endEvent);\n }\n\n function mousewheel(event) {\n if (_this.enabled === false) return;\n\n if (_this.noZoom === true) return;\n\n event.preventDefault();\n event.stopPropagation();\n\n switch (event.deltaMode) {\n case 2:\n // Zoom in pages\n _zoomStart.y -= event.deltaY * 0.025;\n break;\n\n case 1:\n // Zoom in lines\n _zoomStart.y -= event.deltaY * 0.01;\n break;\n\n default:\n // undefined, 0, assume pixels\n _zoomStart.y -= event.deltaY * 0.00025;\n break;\n }\n\n // _zoomStart.y += delta * 0.01;\n _this.dispatchEvent(startEvent);\n _this.dispatchEvent(endEvent);\n }\n\n function touchstart(event) {\n if (_this.enabled === false) return;\n\n if (_this.forceState === -1) {\n switch (event.touches.length) {\n case 1:\n _state = STATE.TOUCH_ROTATE;\n _moveCurr.copy(getMouseOnCircle(event.touches[0].pageX, event.touches[0].pageY));\n _movePrev.copy(_moveCurr);\n break;\n\n case 2:\n _state = STATE.TOUCH_ZOOM;\n var dx = event.touches[0].pageX - event.touches[1].pageX;\n var dy = event.touches[0].pageY - event.touches[1].pageY;\n _touchZoomDistanceEnd = _touchZoomDistanceStart = Math.sqrt(dx * dx + dy * dy);\n\n var x = (event.touches[0].pageX + event.touches[1].pageX) / 2;\n var y = (event.touches[0].pageY + event.touches[1].pageY) / 2;\n _panStart.copy(getMouseOnScreen(x, y));\n _panEnd.copy(_panStart);\n break;\n\n default:\n _state = STATE.NONE;\n }\n } else {\n // { NONE: -1, ROTATE: 0, ZOOM: 1, PAN: 2, TOUCH_ROTATE: 3, TOUCH_ZOOM_PAN: 4, CUSTOM: 99 };\n switch (_state) {\n case 0:\n // 1 or 2 fingers, smae behavior\n _state = STATE.TOUCH_ROTATE;\n _moveCurr.copy(getMouseOnCircle(event.touches[0].pageX, event.touches[0].pageY));\n _movePrev.copy(_moveCurr);\n break;\n\n case 1:\n case 4:\n if (event.touches.length >= 2) {\n _state = STATE.TOUCH_ZOOM;\n var dx = event.touches[0].pageX - event.touches[1].pageX;\n var dy = event.touches[0].pageY - event.touches[1].pageY;\n _touchZoomDistanceEnd = _touchZoomDistanceStart = Math.sqrt(dx * dx + dy * dy);\n } else {\n _state = STATE.ZOOM;\n _zoomStart.copy(getMouseOnScreen(event.touches[0].pageX, event.touches[0].pageY));\n _zoomEnd.copy(_zoomStart);\n }\n break;\n\n case 2:\n case 5:\n if (event.touches.length >= 2) {\n _state = STATE.TOUCH_PAN;\n var x = (event.touches[0].pageX + event.touches[1].pageX) / 2;\n var y = (event.touches[0].pageY + event.touches[1].pageY) / 2;\n _panStart.copy(getMouseOnScreen(x, y));\n _panEnd.copy(_panStart);\n } else {\n _state = STATE.PAN;\n _panStart.copy(getMouseOnScreen(event.touches[0].pageX, event.touches[0].pageY));\n _panEnd.copy(_panStart);\n }\n break;\n\n case 99:\n _state = STATE.CUSTOM;\n var x = (event.touches[0].pageX + event.touches[1].pageX) / 2;\n var y = (event.touches[0].pageY + event.touches[1].pageY) / 2;\n _customStart.copy(getMouseOnScreen(x, y));\n _customEnd.copy(_customStart);\n break;\n\n default:\n _state = STATE.NONE;\n }\n }\n\n _this.dispatchEvent(startEvent);\n }\n\n function touchmove(event) {\n if (_this.enabled === false) return;\n\n event.preventDefault();\n event.stopPropagation();\n\n if (_this.forceState === -1) {\n switch (event.touches.length) {\n case 1:\n _movePrev.copy(_moveCurr);\n _moveCurr.copy(getMouseOnCircle(event.touches[0].pageX, event.touches[0].pageY));\n break;\n\n case 2:\n var dx = event.touches[0].pageX - event.touches[1].pageX;\n var dy = event.touches[0].pageY - event.touches[1].pageY;\n _touchZoomDistanceEnd = Math.sqrt(dx * dx + dy * dy);\n\n var x = (event.touches[0].pageX + event.touches[1].pageX) / 2;\n var y = (event.touches[0].pageY + event.touches[1].pageY) / 2;\n _panEnd.copy(getMouseOnScreen(x, y));\n break;\n\n default:\n _state = STATE.NONE;\n }\n } else {\n // { NONE: -1, ROTATE: 0, ZOOM: 1, PAN: 2, TOUCH_ROTATE: 3, TOUCH_ZOOM_PAN: 4, CUSTOM: 99 };\n switch (_state) {\n case 0:\n _movePrev.copy(_moveCurr);\n _moveCurr.copy(getMouseOnCircle(event.touches[0].pageX, event.touches[0].pageY));\n break;\n\n case 1:\n _zoomEnd.copy(getMouseOnScreen(event.touches[0].pageX, event.touches[0].pageY));\n break;\n\n case 2:\n _panEnd.copy(getMouseOnScreen(event.touches[0].pageX, event.touches[0].pageY));\n break;\n\n case 4:\n // 2 fingers!\n // TOUCH ZOOM\n var dx = event.touches[0].pageX - event.touches[1].pageX;\n var dy = event.touches[0].pageY - event.touches[1].pageY;\n _touchZoomDistanceEnd = Math.sqrt(dx * dx + dy * dy);\n break;\n\n case 5:\n // 2 fingers\n // TOUCH_PAN\n var x = (event.touches[0].pageX + event.touches[1].pageX) / 2;\n var y = (event.touches[0].pageY + event.touches[1].pageY) / 2;\n _panEnd.copy(getMouseOnScreen(x, y));\n break;\n\n case 99:\n var x = (event.touches[0].pageX + event.touches[1].pageX) / 2;\n var y = (event.touches[0].pageY + event.touches[1].pageY) / 2;\n _customEnd.copy(getMouseOnScreen(x, y));\n break;\n\n default:\n _state = STATE.NONE;\n }\n }\n }\n\n function touchend(event) {\n if (_this.enabled === false) return;\n\n if (_this.forceState === -1) {\n switch (event.touches.length) {\n case 1:\n _movePrev.copy(_moveCurr);\n _moveCurr.copy(getMouseOnCircle(event.touches[0].pageX, event.touches[0].pageY));\n break;\n\n case 2:\n _touchZoomDistanceStart = _touchZoomDistanceEnd = 0;\n\n var x = (event.touches[0].pageX + event.touches[1].pageX) / 2;\n var y = (event.touches[0].pageY + event.touches[1].pageY) / 2;\n _panEnd.copy(getMouseOnScreen(x, y));\n _panStart.copy(_panEnd);\n break;\n }\n\n _state = STATE.NONE;\n } else {\n switch (_state) {\n case 0:\n _movePrev.copy(_moveCurr);\n _moveCurr.copy(getMouseOnCircle(event.touches[0].pageX, event.touches[0].pageY));\n break;\n\n case 1:\n case 2:\n break;\n\n case 4:\n // TOUCH ZOOM\n _touchZoomDistanceStart = _touchZoomDistanceEnd = 0;\n _state = STATE.ZOOM;\n break;\n\n case 5:\n // TOUCH ZOOM\n if (event.touches.length >= 2) {\n var x = (event.touches[0].pageX + event.touches[1].pageX) / 2;\n var y = (event.touches[0].pageY + event.touches[1].pageY) / 2;\n _panEnd.copy(getMouseOnScreen(x, y));\n _panStart.copy(_panEnd);\n }\n _state = STATE.PAN;\n break;\n\n case 99:\n var x = (event.touches[0].pageX + event.touches[1].pageX) / 2;\n var y = (event.touches[0].pageY + event.touches[1].pageY) / 2;\n _customEnd.copy(getMouseOnScreen(x, y));\n _customStart.copy(_customEnd);\n break;\n\n default:\n _state = STATE.NONE;\n }\n }\n\n _this.dispatchEvent(endEvent);\n }\n\n function contextmenu(event) {\n event.preventDefault();\n }\n\n this.dispose = function() {\n this.domElement.removeEventListener('contextmenu', contextmenu, false);\n this.domElement.removeEventListener('mousedown', mousedown, false);\n this.domElement.removeEventListener('wheel', mousewheel, false);\n\n this.domElement.removeEventListener('touchstart', touchstart, false);\n this.domElement.removeEventListener('touchend', touchend, false);\n this.domElement.removeEventListener('touchmove', touchmove, false);\n\n window.removeEventListener('keydown', keydown, false);\n window.removeEventListener('keyup', keyup, false);\n };\n\n this.domElement.addEventListener('contextmenu', contextmenu, false);\n this.domElement.addEventListener('mousedown', mousedown, false);\n this.domElement.addEventListener('wheel', mousewheel, false);\n\n this.domElement.addEventListener('touchstart', touchstart, false);\n this.domElement.addEventListener('touchend', touchend, false);\n this.domElement.addEventListener('touchmove', touchmove, false);\n\n window.addEventListener('keydown', keydown, false);\n window.addEventListener('keyup', keyup, false);\n\n this.handleResize();\n\n // force an update at start\n this.update();\n }\n };\n};\n\n// export factory\nexport { trackball };\n// default export to\nexport default trackball();\n","/**\n * @author Eberhard Graether / http://egraether.com/\n * @author Mark Lundin / http://mark-lundin.com\n * @author Patrick Fuller / http://patrick-fuller.com\n * @author Max Smolens / https://github.com/msmolens\n */\n\nconst trackballOrtho = (three = window.THREE) => {\n if (three === undefined || three.EventDispatcher === undefined) {\n return null;\n }\n\n const Constructor = three.EventDispatcher;\n return class extends Constructor {\n constructor(\n object,\n domElement,\n state = {\n NONE: -1,\n ROTATE: 1,\n ZOOM: 2,\n PAN: 0,\n SCROLL: 4,\n TOUCH_ROTATE: 4,\n TOUCH_ZOOM_PAN: 5,\n }\n ) {\n super();\n\n let _this = this;\n let STATE = state;\n\n this.object = object;\n this.domElement = domElement !== undefined ? domElement : document;\n\n // API\n\n this.enabled = true;\n\n this.screen = { left: 0, top: 0, width: 0, height: 0 };\n\n this.radius = 0;\n\n this.zoomSpeed = 1.2;\n\n this.noZoom = false;\n this.noPan = false;\n\n this.staticMoving = false;\n this.dynamicDampingFactor = 0.2;\n\n this.keys = [65 /* A*/, 83 /* S*/, 68];\n\n // internals\n\n this.target = new three.Vector3();\n\n let EPS = 0.000001;\n\n let _changed = true;\n\n let _state = STATE.NONE,\n _prevState = STATE.NONE,\n _eye = new three.Vector3(),\n _zoomStart = new three.Vector2(),\n _zoomEnd = new three.Vector2(),\n _touchZoomDistanceStart = 0,\n _touchZoomDistanceEnd = 0,\n _panStart = new three.Vector2(),\n _panEnd = new three.Vector2();\n\n // window level fire after...\n\n // for reset\n\n this.target0 = this.target.clone();\n this.position0 = this.object.position.clone();\n this.up0 = this.object.up.clone();\n\n this.left0 = this.object.left;\n this.right0 = this.object.right;\n this.top0 = this.object.top;\n this.bottom0 = this.object.bottom;\n\n // events\n\n let changeEvent = { type: 'change' };\n let startEvent = { type: 'start' };\n let endEvent = { type: 'end' };\n\n // methods\n\n this.handleResize = function() {\n if (this.domElement === document) {\n this.screen.left = 0;\n this.screen.top = 0;\n this.screen.width = window.innerWidth;\n this.screen.height = window.innerHeight;\n } else {\n let box = this.domElement.getBoundingClientRect();\n // adjustments come from similar code in the jquery offset() function\n let d = this.domElement.ownerDocument.documentElement;\n this.screen.left = box.left + window.pageXOffset - d.clientLeft;\n this.screen.top = box.top + window.pageYOffset - d.clientTop;\n this.screen.width = box.width;\n this.screen.height = box.height;\n }\n\n this.radius = 0.5 * Math.min(this.screen.width, this.screen.height);\n\n this.left0 = this.object.left;\n this.right0 = this.object.right;\n this.top0 = this.object.top;\n this.bottom0 = this.object.bottom;\n };\n\n this.handleEvent = function(event) {\n if (typeof this[event.type] == 'function') {\n this[event.type](event);\n }\n };\n\n let getMouseOnScreen = (function() {\n let vector = new three.Vector2();\n\n return function getMouseOnScreen(pageX, pageY) {\n vector.set(\n (pageX - _this.screen.left) / _this.screen.width,\n (pageY - _this.screen.top) / _this.screen.height\n );\n\n return vector;\n };\n })();\n\n this.zoomCamera = function() {\n if (_state === STATE.TOUCH_ZOOM_PAN) {\n var factor = _touchZoomDistanceEnd / _touchZoomDistanceStart;\n _touchZoomDistanceStart = _touchZoomDistanceEnd;\n\n _this.object.zoom *= factor;\n\n _changed = true;\n } else {\n var factor = 1.0 + (_zoomEnd.y - _zoomStart.y) * _this.zoomSpeed;\n\n if (Math.abs(factor - 1.0) > EPS && factor > 0.0) {\n _this.object.zoom /= factor;\n\n if (_this.staticMoving) {\n _zoomStart.copy(_zoomEnd);\n } else {\n _zoomStart.y += (_zoomEnd.y - _zoomStart.y) * this.dynamicDampingFactor;\n }\n\n _changed = true;\n }\n }\n };\n\n this.panCamera = (function() {\n let mouseChange = new three.Vector2(),\n objectUp = new three.Vector3(),\n pan = new three.Vector3();\n\n return function panCamera() {\n mouseChange.copy(_panEnd).sub(_panStart);\n\n if (mouseChange.lengthSq()) {\n // Scale movement to keep clicked/dragged position under cursor\n let scale_x = (_this.object.right - _this.object.left) / _this.object.zoom;\n let scale_y = (_this.object.top - _this.object.bottom) / _this.object.zoom;\n mouseChange.x *= scale_x;\n mouseChange.y *= scale_y;\n\n pan\n .copy(_eye)\n .cross(_this.object.up)\n .setLength(mouseChange.x);\n pan.add(objectUp.copy(_this.object.up).setLength(mouseChange.y));\n\n _this.object.position.add(pan);\n _this.target.add(pan);\n\n if (_this.staticMoving) {\n _panStart.copy(_panEnd);\n } else {\n _panStart.add(\n mouseChange\n .subVectors(_panEnd, _panStart)\n .multiplyScalar(_this.dynamicDampingFactor)\n );\n }\n\n _changed = true;\n }\n };\n })();\n\n this.update = function() {\n _eye.subVectors(_this.object.position, _this.target);\n\n if (!_this.noZoom) {\n _this.zoomCamera();\n\n if (_changed) {\n _this.object.updateProjectionMatrix();\n }\n }\n\n if (!_this.noPan) {\n _this.panCamera();\n }\n\n _this.object.position.addVectors(_this.target, _eye);\n\n _this.object.lookAt(_this.target);\n\n if (_changed) {\n _this.dispatchEvent(changeEvent);\n\n _changed = false;\n }\n };\n\n this.reset = function() {\n _state = STATE.NONE;\n _prevState = STATE.NONE;\n\n _this.target.copy(_this.target0);\n _this.object.position.copy(_this.position0);\n _this.object.up.copy(_this.up0);\n\n _eye.subVectors(_this.object.position, _this.target);\n\n _this.object.left = _this.left0;\n _this.object.right = _this.right0;\n _this.object.top = _this.top0;\n _this.object.bottom = _this.bottom0;\n\n _this.object.lookAt(_this.target);\n\n _this.dispatchEvent(changeEvent);\n\n _changed = false;\n };\n\n // listeners\n\n function keydown(event) {\n if (_this.enabled === false) return;\n\n window.removeEventListener('keydown', keydown);\n\n _prevState = _state;\n\n if (_state !== STATE.NONE) {\n return;\n } else if (event.keyCode === _this.keys[STATE.ROTATE] && !_this.noRotate) {\n _state = STATE.ROTATE;\n } else if (event.keyCode === _this.keys[STATE.ZOOM] && !_this.noZoom) {\n _state = STATE.ZOOM;\n } else if (event.keyCode === _this.keys[STATE.PAN] && !_this.noPan) {\n _state = STATE.PAN;\n }\n }\n\n function keyup(event) {\n if (_this.enabled === false) return;\n\n _state = _prevState;\n\n window.addEventListener('keydown', keydown, false);\n }\n\n function mousedown(event) {\n if (_this.enabled === false) return;\n\n event.preventDefault();\n event.stopPropagation();\n\n if (_state === STATE.NONE) {\n _state = event.button;\n }\n\n if (_state === STATE.ROTATE && !_this.noRotate) {\n } else if (_state === STATE.ZOOM && !_this.noZoom) {\n _zoomStart.copy(getMouseOnScreen(event.pageX, event.pageY));\n _zoomEnd.copy(_zoomStart);\n } else if (_state === STATE.PAN && !_this.noPan) {\n _panStart.copy(getMouseOnScreen(event.pageX, event.pageY));\n _panEnd.copy(_panStart);\n }\n\n document.addEventListener('mousemove', mousemove, false);\n document.addEventListener('mouseup', mouseup, false);\n\n _this.dispatchEvent(startEvent);\n }\n\n function mousemove(event) {\n if (_this.enabled === false) return;\n\n event.preventDefault();\n event.stopPropagation();\n\n if (_state === STATE.ROTATE && !_this.noRotate) {\n } else if (_state === STATE.ZOOM && !_this.noZoom) {\n _zoomEnd.copy(getMouseOnScreen(event.pageX, event.pageY));\n } else if (_state === STATE.PAN && !_this.noPan) {\n _panEnd.copy(getMouseOnScreen(event.pageX, event.pageY));\n }\n }\n\n function mouseup(event) {\n if (_this.enabled === false) return;\n\n event.preventDefault();\n event.stopPropagation();\n\n _state = STATE.NONE;\n\n document.removeEventListener('mousemove', mousemove);\n document.removeEventListener('mouseup', mouseup);\n _this.dispatchEvent(endEvent);\n }\n\n function mousewheel(event) {\n if (_this.enabled === false) return;\n\n event.preventDefault();\n event.stopPropagation();\n\n //_zoomStart.y += event.deltaY * 0.01;\n /**\n * Watch deltaX and deltaY because in some cases, (i.e. Shift or Alt key pressed)\n * deltaX and deltaY are inverted.\n *\n * It is known behaviors/shortcuts to scroll through a page horizontally.\n */\n _this.dispatchEvent({\n type: 'OnScroll',\n delta: event.deltaX * 0.01 + event.deltaY * 0.01,\n });\n\n _this.dispatchEvent(startEvent);\n _this.dispatchEvent(endEvent);\n }\n\n function touchstart(event) {\n if (_this.enabled === false) return;\n\n switch (event.touches.length) {\n case 1:\n _state = STATE.TOUCH_ROTATE;\n\n break;\n\n case 2:\n _state = STATE.TOUCH_ZOOM_PAN;\n var dx = event.touches[0].pageX - event.touches[1].pageX;\n var dy = event.touches[0].pageY - event.touches[1].pageY;\n _touchZoomDistanceEnd = _touchZoomDistanceStart = Math.sqrt(dx * dx + dy * dy);\n\n var x = (event.touches[0].pageX + event.touches[1].pageX) / 2;\n var y = (event.touches[0].pageY + event.touches[1].pageY) / 2;\n _panStart.copy(getMouseOnScreen(x, y));\n _panEnd.copy(_panStart);\n break;\n\n default:\n _state = STATE.NONE;\n }\n _this.dispatchEvent(startEvent);\n }\n\n function touchmove(event) {\n if (_this.enabled === false) return;\n\n event.preventDefault();\n event.stopPropagation();\n\n switch (event.touches.length) {\n case 1:\n break;\n\n case 2:\n var dx = event.touches[0].pageX - event.touches[1].pageX;\n var dy = event.touches[0].pageY - event.touches[1].pageY;\n _touchZoomDistanceEnd = Math.sqrt(dx * dx + dy * dy);\n\n var x = (event.touches[0].pageX + event.touches[1].pageX) / 2;\n var y = (event.touches[0].pageY + event.touches[1].pageY) / 2;\n _panEnd.copy(getMouseOnScreen(x, y));\n break;\n\n default:\n _state = STATE.NONE;\n }\n }\n\n function touchend(event) {\n if (_this.enabled === false) return;\n\n switch (event.touches.length) {\n case 1:\n break;\n\n case 2:\n _touchZoomDistanceStart = _touchZoomDistanceEnd = 0;\n\n var x = (event.touches[0].pageX + event.touches[1].pageX) / 2;\n var y = (event.touches[0].pageY + event.touches[1].pageY) / 2;\n _panEnd.copy(getMouseOnScreen(x, y));\n _panStart.copy(_panEnd);\n break;\n }\n\n _state = STATE.NONE;\n _this.dispatchEvent(endEvent);\n }\n\n function contextmenu(event) {\n event.preventDefault();\n }\n\n this.dispose = function() {\n this.domElement.removeEventListener('contextmenu', contextmenu, false);\n this.domElement.removeEventListener('mousedown', mousedown, false);\n this.domElement.removeEventListener('wheel', mousewheel, false);\n\n this.domElement.removeEventListener('touchstart', touchstart, false);\n this.domElement.removeEventListener('touchend', touchend, false);\n this.domElement.removeEventListener('touchmove', touchmove, false);\n\n window.removeEventListener('keydown', keydown, false);\n window.removeEventListener('keyup', keyup, false);\n };\n\n this.domElement.addEventListener('contextmenu', contextmenu, false);\n this.domElement.addEventListener('mousedown', mousedown, false);\n this.domElement.addEventListener('wheel', mousewheel, false);\n\n this.domElement.addEventListener('touchstart', touchstart, false);\n this.domElement.addEventListener('touchend', touchend, false);\n this.domElement.addEventListener('touchmove', touchmove, false);\n\n window.addEventListener('keydown', keydown, false);\n window.addEventListener('keyup', keyup, false);\n\n this.handleResize();\n\n // force an update at start\n this.update();\n }\n };\n};\n\n// export factory\nexport { trackballOrtho };\n// default export to\nexport default trackballOrtho();\n","export enum COLORS {\n blue = '#00B0FF',\n yellow = '#FFEB3B',\n red = '#F50057',\n green = '#76FF03',\n white = '#FFF',\n lightRed = '#F77',\n}\n\n/**\n * Colors utility functions\n */\nexport default class Colors {\n /**\n * Convert LAB to XYZ\n * http://www.easyrgb.com/index.php?X=MATH&H=08#text8\n *\n * @param {*} l\n * @param {*} a\n * @param {*} b\n *\n * @return {*}\n */\n public static cielab2XYZ(l: number, a: number, b: number) {\n // https://www.mathworks.com/help/images/ref/whitepoint.html\n // d65: 0.9504, 1, 1.0888\n const refX = 95.047;\n const refY = 100.0;\n const refZ = 108.883;\n\n let y = (l + 16) / 116;\n let x = a / 500 + y;\n let z = y - b / 200;\n\n if (Math.pow(y, 3) > 0.008856) {\n y = Math.pow(y, 3);\n } else {\n y = (y - 16 / 116) / 7.787;\n }\n\n if (Math.pow(x, 3) > 0.008856) {\n x = Math.pow(x, 3);\n } else {\n x = (x - 16 / 116) / 7.787;\n }\n\n if (Math.pow(z, 3) > 0.008856) {\n z = Math.pow(z, 3);\n } else {\n z = (z - 16 / 116) / 7.787;\n }\n return [refX * x, refY * y, refZ * z];\n }\n\n /**\n * Convert XYZ to RGB space\n *\n * @param {*} x\n * @param {*} y\n * @param {*} z\n *\n * @return {*}\n */\n public static xyz2RGB(x: number, y: number, z: number) {\n x /= 100;\n y /= 100;\n z /= 100;\n let r = x * 3.2406 + y * -1.5372 + z * -0.4986;\n let g = x * -0.9689 + y * 1.8758 + z * 0.0415;\n let b = x * 0.0557 + y * -0.204 + z * 1.057;\n\n if (r > 0.0031308) {\n r = 1.055 * Math.pow(r, 1 / 2.4) - 0.055;\n } else {\n r = 12.92 * r;\n }\n\n if (g > 0.0031308) {\n g = 1.055 * Math.pow(g, 1 / 2.4) - 0.055;\n } else {\n g = 12.92 * g;\n }\n\n if (b > 0.0031308) {\n b = 1.055 * Math.pow(b, 1 / 2.4) - 0.055;\n } else {\n b = 12.92 * b;\n }\n\n r = r * 255;\n g = g * 255;\n b = b * 255;\n\n return [r, g, b];\n }\n\n /**\n * Convert LAB to RGB\n *\n * @param {*} l\n * @param {*} a\n * @param {*} b\n *\n * @return {*}\n */\n public static cielab2RGB(l: number = 50, a: number = 0, b: number = 0) {\n if (!(l >= 0 && l <= 100)) {\n return null;\n }\n\n const [x, y, z] = this.cielab2XYZ(l, a, b);\n return this.xyz2RGB(x, y, z);\n }\n}\n","import CoreUtils from './core.utils';\nimport Validators from './core.validators';\n\nimport { Matrix4 } from 'three/src/math/Matrix4';\nimport { Vector3 } from 'three/src/math/Vector3';\n\n/**\n * Compute/test intersection between different objects.\n *\n * @module core/intersections\n */\n\nexport default class Intersections {\n /**\n * Compute intersection between oriented bounding box and a plane.\n *\n * Returns intersection in plane's space.\n *\n * Should return at least 3 intersections. If not, the plane and the box do not\n * intersect.\n *\n * @param {Object} aabb - Axe Aligned Bounding Box representation.\n * @param {Vector3} aabb.halfDimensions - Half dimensions of the box.\n * @param {Vector3} aabb.center - Center of the box.\n * @param {Matrix4} aabb.toAABB - Transform to go from plane space to box space.\n * @param {Object} plane - Plane representation\n * @param {Vector3} plane.position - position of normal which describes the plane.\n * @param {Vector3} plane.direction - Direction of normal which describes the plane.\n *\n * @returns {Array} List of all intersections in plane's space.\n * @returns {boolean} false is invalid input provided.\n *\n * @example\n * //Returns array with intersection N intersections\n * let aabb = {\n * center: new Vector3(150, 150, 150),\n * halfDimensions: new Vector3(50, 60, 70),\n * toAABB: new Matrix4()\n * }\n * let plane = {\n * position: new Vector3(110, 120, 130),\n * direction: new Vector3(1, 0, 0)\n * }\n *\n * let intersections = CoreIntersections.aabbPlane(aabb, plane);\n * // intersections ==\n * //[ { x : 110, y : 90, z : 80 },\n * // { x : 110, y : 210, z : 220 },\n * // { x : 110, y : 210, z : 80 },\n * // { x : 110, y : 90, z : 220 } ]\n *\n * //Returns empty array with 0 intersections\n * let aabb = {\n *\n * }\n * let plane = {\n *\n * }\n *\n * let intersections = VJS.Core.Validators.matrix4(new Vector3());\n *\n * //Returns false if invalid input?\n *\n */\n static aabbPlane(aabb, plane) {\n //\n // obb = { halfDimensions, orientation, center, toAABB }\n // plane = { position, direction }\n //\n //\n // LOGIC:\n //\n // Test intersection of each edge of the Oriented Bounding Box with the Plane\n //\n // ALL EDGES\n //\n // .+-------+\n // .' | .'|\n // +---+---+' |\n // | | | |\n // | ,+---+---+\n // |.' | .'\n // +-------+'\n //\n // SPACE ORIENTATION\n //\n // +\n // j |\n // |\n // | i\n // k ,+-------+\n // .'\n // +\n //\n //\n // 1- Move Plane position and orientation in IJK space\n // 2- Test Edges/ IJK Plane intersections\n // 3- Return intersection Edge/ IJK Plane if it touches the Oriented BBox\n\n let intersections = [];\n\n if (!(this.validateAabb(aabb) && this.validatePlane(plane))) {\n window.console.log('Invalid aabb or plane provided.');\n return false;\n }\n\n // invert space matrix\n let fromAABB = new Matrix4();\n fromAABB.getInverse(aabb.toAABB);\n\n let t1 = plane.direction.clone().applyMatrix4(aabb.toAABB);\n let t0 = new Vector3(0, 0, 0).applyMatrix4(aabb.toAABB);\n\n let planeAABB = this.posdir(\n plane.position.clone().applyMatrix4(aabb.toAABB),\n new Vector3(t1.x - t0.x, t1.y - t0.y, t1.z - t0.z).normalize()\n );\n\n let bbox = CoreUtils.bbox(aabb.center, aabb.halfDimensions);\n\n let orientation = new Vector3(new Vector3(1, 0, 0), new Vector3(0, 1, 0), new Vector3(0, 0, 1));\n\n // 12 edges (i.e. ray)/plane intersection tests\n // RAYS STARTING FROM THE FIRST CORNER (0, 0, 0)\n //\n // +\n // |\n // |\n // |\n // ,+---+---+\n // .'\n // +\n\n let ray = this.posdir(\n new Vector3(\n aabb.center.x - aabb.halfDimensions.x,\n aabb.center.y - aabb.halfDimensions.y,\n aabb.center.z - aabb.halfDimensions.z\n ),\n orientation.x\n );\n this.rayPlaneInBBox(ray, planeAABB, bbox, intersections);\n\n ray.direction = orientation.y;\n this.rayPlaneInBBox(ray, planeAABB, bbox, intersections);\n\n ray.direction = orientation.z;\n this.rayPlaneInBBox(ray, planeAABB, bbox, intersections);\n\n // RAYS STARTING FROM THE LAST CORNER\n //\n // +\n // .'\n // +-------+'\n // |\n // |\n // |\n // +\n //\n\n let ray2 = this.posdir(\n new Vector3(\n aabb.center.x + aabb.halfDimensions.x,\n aabb.center.y + aabb.halfDimensions.y,\n aabb.center.z + aabb.halfDimensions.z\n ),\n orientation.x\n );\n this.rayPlaneInBBox(ray2, planeAABB, bbox, intersections);\n\n ray2.direction = orientation.y;\n this.rayPlaneInBBox(ray2, planeAABB, bbox, intersections);\n\n ray2.direction = orientation.z;\n this.rayPlaneInBBox(ray2, planeAABB, bbox, intersections);\n\n // RAYS STARTING FROM THE SECOND CORNER\n //\n // +\n // |\n // |\n // |\n // +\n // .'\n // +'\n\n let ray3 = this.posdir(\n new Vector3(\n aabb.center.x + aabb.halfDimensions.x,\n aabb.center.y - aabb.halfDimensions.y,\n aabb.center.z - aabb.halfDimensions.z\n ),\n orientation.y\n );\n this.rayPlaneInBBox(ray3, planeAABB, bbox, intersections);\n\n ray3.direction = orientation.z;\n this.rayPlaneInBBox(ray3, planeAABB, bbox, intersections);\n\n // RAYS STARTING FROM THE THIRD CORNER\n //\n // .+-------+\n // .'\n // +\n //\n //\n //\n //\n\n let ray4 = this.posdir(\n new Vector3(\n aabb.center.x - aabb.halfDimensions.x,\n aabb.center.y + aabb.halfDimensions.y,\n aabb.center.z - aabb.halfDimensions.z\n ),\n orientation.x\n );\n this.rayPlaneInBBox(ray4, planeAABB, bbox, intersections);\n\n ray4.direction = orientation.z;\n this.rayPlaneInBBox(ray4, planeAABB, bbox, intersections);\n\n // RAYS STARTING FROM THE FOURTH CORNER\n //\n //\n //\n // +\n // |\n // |\n // |\n // +-------+\n\n let ray5 = this.posdir(\n new Vector3(\n aabb.center.x - aabb.halfDimensions.x,\n aabb.center.y - aabb.halfDimensions.y,\n aabb.center.z + aabb.halfDimensions.z\n ),\n orientation.x\n );\n this.rayPlaneInBBox(ray5, planeAABB, bbox, intersections);\n\n ray5.direction = orientation.y;\n this.rayPlaneInBBox(ray5, planeAABB, bbox, intersections);\n\n // @todo make sure objects are unique...\n\n // back to original space\n intersections.map(function(element) {\n return element.applyMatrix4(fromAABB);\n });\n\n return intersections;\n }\n\n /**\n * Compute intersection between a ray and a plane.\n *\n * @memberOf this\n * @public\n *\n * @param {Object} ray - Ray representation.\n * @param {Vector3} ray.position - position of normal which describes the ray.\n * @param {Vector3} ray.direction - Direction of normal which describes the ray.\n * @param {Object} plane - Plane representation\n * @param {Vector3} plane.position - position of normal which describes the plane.\n * @param {Vector3} plane.direction - Direction of normal which describes the plane.\n *\n * @returns {Vector3|null} Intersection between ray and plane or null.\n */\n static rayPlane(ray, plane) {\n // ray: {position, direction}\n // plane: {position, direction}\n\n if (ray.direction.dot(plane.direction) !== 0) {\n //\n // not parallel, move forward\n //\n // LOGIC:\n //\n // Ray equation: P = P0 + tV\n // P = \n // P0 = \n // V = \n //\n // Therefore:\n // Px = ray.position.x + t*ray.direction.x\n // Py = ray.position.y + t*ray.direction.y\n // Pz = ray.position.z + t*ray.direction.z\n //\n //\n //\n // Plane equation: ax + by + cz + d = 0\n // a = plane.direction.x\n // b = plane.direction.y\n // c = plane.direction.z\n // d = -( plane.direction.x*plane.position.x +\n // plane.direction.y*plane.position.y +\n // plane.direction.z*plane.position.z )\n //\n //\n // 1- in the plane equation, we replace x, y and z by Px, Py and Pz\n // 2- find t\n // 3- replace t in Px, Py and Pz to get the coordinate of the intersection\n //\n let t =\n (plane.direction.x * (plane.position.x - ray.position.x) +\n plane.direction.y * (plane.position.y - ray.position.y) +\n plane.direction.z * (plane.position.z - ray.position.z)) /\n (plane.direction.x * ray.direction.x +\n plane.direction.y * ray.direction.y +\n plane.direction.z * ray.direction.z);\n\n let intersection = new Vector3(\n ray.position.x + t * ray.direction.x,\n ray.position.y + t * ray.direction.y,\n ray.position.z + t * ray.direction.z\n );\n\n return intersection;\n }\n\n return null;\n }\n\n /**\n * Compute intersection between a ray and a box\n * @param {Object} ray\n * @param {Object} box\n * @return {Array}\n */\n static rayBox(ray, box) {\n // should also do the space transforms here\n // ray: {position, direction}\n // box: {halfDimensions, center}\n\n let intersections = [];\n\n let bbox = CoreUtils.bbox(box.center, box.halfDimensions);\n\n // window.console.log(bbox);\n\n // X min\n let plane = this.posdir(\n new Vector3(bbox.min.x, box.center.y, box.center.z),\n new Vector3(-1, 0, 0)\n );\n this.rayPlaneInBBox(ray, plane, bbox, intersections);\n\n // X max\n plane = this.posdir(new Vector3(bbox.max.x, box.center.y, box.center.z), new Vector3(1, 0, 0));\n this.rayPlaneInBBox(ray, plane, bbox, intersections);\n\n // Y min\n plane = this.posdir(new Vector3(box.center.x, bbox.min.y, box.center.z), new Vector3(0, -1, 0));\n this.rayPlaneInBBox(ray, plane, bbox, intersections);\n\n // Y max\n plane = this.posdir(new Vector3(box.center.x, bbox.max.y, box.center.z), new Vector3(0, 1, 0));\n this.rayPlaneInBBox(ray, plane, bbox, intersections);\n\n // Z min\n plane = this.posdir(new Vector3(box.center.x, box.center.y, bbox.min.z), new Vector3(0, 0, -1));\n this.rayPlaneInBBox(ray, plane, bbox, intersections);\n\n // Z max\n plane = this.posdir(new Vector3(box.center.x, box.center.y, bbox.max.z), new Vector3(0, 0, 1));\n this.rayPlaneInBBox(ray, plane, bbox, intersections);\n\n return intersections;\n }\n\n /**\n * Intersection between ray and a plane that are in a box.\n * @param {*} ray\n * @param {*} planeAABB\n * @param {*} bbox\n * @param {*} intersections\n */\n static rayPlaneInBBox(ray, planeAABB, bbox, intersections) {\n let intersection = this.rayPlane(ray, planeAABB);\n // window.console.log(intersection);\n if (intersection && this.inBBox(intersection, bbox)) {\n if (!intersections.find(this.findIntersection(intersection))) {\n intersections.push(intersection);\n }\n }\n }\n\n /**\n * Find intersection in array\n * @param {*} myintersection\n */\n static findIntersection(myintersection) {\n return function found(element, index, array) {\n if (\n myintersection.x === element.x &&\n myintersection.y === element.y &&\n myintersection.z === element.z\n ) {\n return true;\n }\n\n return false;\n };\n }\n\n /**\n * Is point in box.\n * @param {Object} point\n * @param {Object} bbox\n * @return {Boolean}\n */\n static inBBox(point, bbox) {\n //\n let epsilon = 0.0001;\n if (\n point &&\n point.x >= bbox.min.x - epsilon &&\n point.y >= bbox.min.y - epsilon &&\n point.z >= bbox.min.z - epsilon &&\n point.x <= bbox.max.x + epsilon &&\n point.y <= bbox.max.y + epsilon &&\n point.z <= bbox.max.z + epsilon\n ) {\n return true;\n }\n return false;\n }\n\n static posdir(position, direction) {\n return { position, direction };\n }\n\n static validatePlane(plane) {\n //\n if (plane === null) {\n window.console.log('Invalid plane.');\n window.console.log(plane);\n\n return false;\n }\n\n if (!Validators.vector3(plane.position)) {\n window.console.log('Invalid plane.position.');\n window.console.log(plane.position);\n\n return false;\n }\n\n if (!Validators.vector3(plane.direction)) {\n window.console.log('Invalid plane.direction.');\n window.console.log(plane.direction);\n\n return false;\n }\n\n return true;\n }\n\n static validateAabb(aabb) {\n //\n if (aabb === null) {\n window.console.log('Invalid aabb.');\n window.console.log(aabb);\n return false;\n }\n\n if (!Validators.matrix4(aabb.toAABB)) {\n window.console.log('Invalid aabb.toAABB: ');\n window.console.log(aabb.toAABB);\n\n return false;\n }\n\n if (!Validators.vector3(aabb.center)) {\n window.console.log('Invalid aabb.center.');\n window.console.log(aabb.center);\n\n return false;\n }\n\n if (\n !(\n Validators.vector3(aabb.halfDimensions) &&\n aabb.halfDimensions.x >= 0 &&\n aabb.halfDimensions.y >= 0 &&\n aabb.halfDimensions.z >= 0\n )\n ) {\n window.console.log('Invalid aabb.halfDimensions.');\n window.console.log(aabb.halfDimensions);\n\n return false;\n }\n\n return true;\n }\n}\n","import Colors from './core.colors';\nimport Intersections from './core.intersections';\nimport Validators from './core.validators';\nimport Utils from './core.utils';\n\nexport {\n Colors as ColorsCore,\n Intersections as IntersectionsCore,\n Utils as UtilsCore,\n Validators as ValidatorsCore,\n};\n","import Validators from './core.validators';\n\nimport { Box3 } from 'three/src/math/Box3';\nimport { Raycaster } from 'three/src/core/Raycaster';\nimport { Triangle } from 'three/src/math/Triangle';\nimport { Matrix4 } from 'three/src/math/Matrix4';\nimport { Vector3 } from 'three/src/math/Vector3';\n\n/**\n * General purpose functions.\n *\n * @module core/utils\n */\nexport default class CoreUtils {\n /**\n * Generate a bouding box object.\n * @param {Vector3} center - Center of the box.\n * @param {Vector3} halfDimensions - Half Dimensions of the box.\n * @return {Object} The bounding box object. {Object.min} is a {Vector3}\n * containing the min bounds. {Object.max} is a {Vector3} containing the\n * max bounds.\n * @return {boolean} False input NOT valid.\n * @example\n * // Returns\n * //{ min: { x : 0, y : 0, z : 0 },\n * // max: { x : 2, y : 4, z : 6 }\n * //}\n * VJS.Core.Utils.bbox(\n * new Vector3(1, 2, 3), new Vector3(1, 2, 3));\n *\n * //Returns false\n * VJS.Core.Utils.bbox(new Vector3(), new Matrix4());\n *\n */\n static bbox(center, halfDimensions) {\n // make sure we have valid inputs\n if (!(Validators.vector3(center) && Validators.vector3(halfDimensions))) {\n console.log('Invalid center or plane halfDimensions.');\n return false;\n }\n\n // make sure half dimensions are >= 0\n if (!(halfDimensions.x >= 0 && halfDimensions.y >= 0 && halfDimensions.z >= 0)) {\n window.console.log('halfDimensions must be >= 0.');\n window.console.log(halfDimensions);\n return false;\n }\n\n // min/max bound\n let min = center.clone().sub(halfDimensions);\n let max = center.clone().add(halfDimensions);\n\n return {\n min,\n max,\n };\n }\n\n /**\n * Find min/max values in an array\n * @param {Array} data\n * @return {Array}\n */\n static minMax(data = []) {\n let minMax = [65535, -32768];\n let numPixels = data.length;\n\n for (let index = 0; index < numPixels; index++) {\n let spv = data[index];\n minMax[0] = Math.min(minMax[0], spv);\n minMax[1] = Math.max(minMax[1], spv);\n }\n\n return minMax;\n }\n\n /**\n * Check HTMLElement\n * @param {HTMLElement} obj\n * @return {boolean}\n */\n static isElement(obj) {\n try {\n // Using W3 DOM2 (works for FF, Opera and Chrom)\n return obj instanceof HTMLElement;\n } catch (e) {\n // Browsers not supporting W3 DOM2 don't have HTMLElement and\n // an exception is thrown and we end up here. Testing some\n // properties that all elements have. (works on IE7)\n return (\n typeof obj === 'object' &&\n obj.nodeType === 1 &&\n typeof obj.style === 'object' &&\n typeof obj.ownerDocument === 'object'\n );\n }\n }\n\n /**\n * Check string\n * @param {String} str\n * @return {Boolean}\n */\n static isString(str) {\n return typeof str === 'string' || str instanceof String;\n }\n\n /**\n * Parse url and find out the extension of the exam file.\n *\n * @param {*} url - The url to be parsed.\n * The query string can contain some \"special\" parameters that can be used to ease the parsing process\n * when the url doesn't match the exam file name on the filesystem:\n * - filename: the name of the exam file\n * - contentType: the mime type of the exam file. Currently only \"application/dicom\" is recognized, nifti files don't have a standard mime type.\n * For example:\n * http:///getExam?id=100&filename=myexam%2Enii%2Egz\n * http:///getExam?id=100&contentType=application%2Fdicom\n *\n * @return {Object}\n */\n static parseUrl(url) {\n const parsedUrl = new URL(url, 'http://fix.me');\n const data = {\n filename: parsedUrl.searchParams.get('filename'),\n extension: '',\n pathname: parsedUrl.pathname,\n query: parsedUrl.search,\n };\n\n // get file name\n if (!data.filename) {\n data.filename = data.pathname.split('/').pop();\n }\n\n // find extension\n const splittedName = data.filename.split('.');\n\n data.extension = splittedName.length > 1 ? splittedName.pop() : 'dicom';\n\n const skipExt = [\n 'asp',\n 'aspx',\n 'go',\n 'gs',\n 'hs',\n 'jsp',\n 'js',\n 'php',\n 'pl',\n 'py',\n 'rb',\n 'htm',\n 'html',\n ];\n\n if (\n !isNaN(data.extension) ||\n skipExt.indexOf(data.extension) !== -1 ||\n (data.query && data.query.includes('contentType=application%2Fdicom'))\n ) {\n data.extension = 'dicom';\n }\n\n return data;\n }\n\n /**\n * Compute IJK to LPS tranform.\n * http://nipy.org/nibabel/dicom/dicom_orientation.html\n *\n * @param {*} xCos\n * @param {*} yCos\n * @param {*} zCos\n * @param {*} spacing\n * @param {*} origin\n * @param {*} registrationMatrix\n *\n * @return {*}\n */\n static ijk2LPS(xCos, yCos, zCos, spacing, origin, registrationMatrix = new Matrix4()) {\n const ijk2LPS = new Matrix4();\n ijk2LPS.set(\n xCos.x * spacing.y,\n yCos.x * spacing.x,\n zCos.x * spacing.z,\n origin.x,\n xCos.y * spacing.y,\n yCos.y * spacing.x,\n zCos.y * spacing.z,\n origin.y,\n xCos.z * spacing.y,\n yCos.z * spacing.x,\n zCos.z * spacing.z,\n origin.z,\n 0,\n 0,\n 0,\n 1\n );\n ijk2LPS.premultiply(registrationMatrix);\n\n return ijk2LPS;\n }\n\n /**\n * Compute AABB to LPS transform.\n * AABB: Axe Aligned Bounding Box.\n *\n * @param {*} xCos\n * @param {*} yCos\n * @param {*} zCos\n * @param {*} origin\n *\n * @return {*}\n */\n static aabb2LPS(xCos, yCos, zCos, origin) {\n const aabb2LPS = new Matrix4();\n aabb2LPS.set(\n xCos.x,\n yCos.x,\n zCos.x,\n origin.x,\n xCos.y,\n yCos.y,\n zCos.y,\n origin.y,\n xCos.z,\n yCos.z,\n zCos.z,\n origin.z,\n 0,\n 0,\n 0,\n 1\n );\n\n return aabb2LPS;\n }\n\n /**\n * Transform coordinates from world coordinate to data\n *\n * @param {*} lps2IJK\n * @param {*} worldCoordinates\n *\n * @return {*}\n */\n static worldToData(lps2IJK, worldCoordinates) {\n let dataCoordinate = new Vector3().copy(worldCoordinates).applyMatrix4(lps2IJK);\n\n // same rounding in the shaders\n dataCoordinate.addScalar(0.5).floor();\n\n return dataCoordinate;\n }\n\n static value(stack, coordinate) {\n window.console.warn('value is deprecated, please use getPixelData instead');\n this.getPixelData(stack, coordinate);\n }\n\n /**\n * Get voxel value\n *\n * @param {ModelsStack} stack\n * @param {Vector3} coordinate\n * @return {*}\n */\n static getPixelData(stack, coordinate) {\n if (coordinate.z >= 0 && coordinate.z < stack._frame.length) {\n return stack._frame[coordinate.z].getPixelData(coordinate.x, coordinate.y);\n } else {\n return null;\n }\n }\n\n /**\n * Set voxel value\n *\n * @param {ModelsStack} stack\n * @param {Vector3} coordinate\n * @param {Number} value\n * @return {*}\n */\n static setPixelData(stack, coordinate, value) {\n if (coordinate.z >= 0 && coordinate.z < stack._frame.length) {\n stack._frame[coordinate.z].setPixelData(coordinate.x, coordinate.y, value);\n } else {\n return null;\n }\n }\n\n /**\n * Apply slope/intercept to a value\n *\n * @param {*} value\n * @param {*} slope\n * @param {*} intercept\n *\n * @return {*}\n */\n static rescaleSlopeIntercept(value, slope, intercept) {\n return value * slope + intercept;\n }\n\n /**\n *\n * Convenience function to extract center of mass from list of points.\n *\n * @param {Array} points - Set of points from which we want to extract the center of mass.\n *\n * @returns {Vector3} Center of mass from given points.\n */\n static centerOfMass(points) {\n let centerOfMass = new Vector3(0, 0, 0);\n for (let i = 0; i < points.length; i++) {\n centerOfMass.x += points[i].x;\n centerOfMass.y += points[i].y;\n centerOfMass.z += points[i].z;\n }\n centerOfMass.divideScalar(points.length);\n\n return centerOfMass;\n }\n\n /**\n *\n * Order 3D planar points around a refence point.\n *\n * @private\n *\n * @param {Array} points - Set of planar 3D points to be ordered.\n * @param {Vector3} direction - Direction of the plane in which points and reference are sitting.\n *\n * @returns {Array} Set of object representing the ordered points.\n */\n static orderIntersections(points, direction) {\n let reference = this.centerOfMass(points);\n // direction from first point to reference\n let referenceDirection = new Vector3(\n points[0].x - reference.x,\n points[0].y - reference.y,\n points[0].z - reference.z\n ).normalize();\n\n let base = new Vector3(0, 0, 0).crossVectors(referenceDirection, direction).normalize();\n\n let orderedpoints = [];\n\n // other lines // if inter, return location + angle\n for (let j = 0; j < points.length; j++) {\n let point = new Vector3(points[j].x, points[j].y, points[j].z);\n point.direction = new Vector3(\n points[j].x - reference.x,\n points[j].y - reference.y,\n points[j].z - reference.z\n ).normalize();\n\n let x = referenceDirection.dot(point.direction);\n let y = base.dot(point.direction);\n point.xy = { x, y };\n\n let theta = Math.atan2(y, x) * (180 / Math.PI);\n point.angle = theta;\n\n orderedpoints.push(point);\n }\n\n orderedpoints.sort(function(a, b) {\n return a.angle - b.angle;\n });\n\n let noDups = [orderedpoints[0]];\n let epsilon = 0.0001;\n for (let i = 1; i < orderedpoints.length; i++) {\n if (Math.abs(orderedpoints[i - 1].angle - orderedpoints[i].angle) > epsilon) {\n noDups.push(orderedpoints[i]);\n }\n }\n\n return noDups;\n }\n\n /**\n * Get min, max, mean and sd of voxel values behind the mesh\n *\n * @param {THREE.Mesh} mesh Region of Interest\n * @param {*} camera Tested on CamerasOrthographic\n * @param {ModelsStack} stack\n *\n * @return {Object|null}\n */\n static getRoI(mesh, camera, stack) {\n mesh.geometry.computeBoundingBox();\n\n const bbox = new Box3().setFromObject(mesh);\n const min = bbox.min.clone().project(camera);\n const max = bbox.max.clone().project(camera);\n const offsetWidth = camera.controls.domElement.offsetWidth;\n const offsetHeight = camera.controls.domElement.offsetHeight;\n const rayCaster = new Raycaster();\n const values = [];\n\n min.x = Math.round(((min.x + 1) * offsetWidth) / 2);\n min.y = Math.round(((-min.y + 1) * offsetHeight) / 2);\n max.x = Math.round(((max.x + 1) * offsetWidth) / 2);\n max.y = Math.round(((-max.y + 1) * offsetHeight) / 2);\n [min.x, max.x] = [Math.min(min.x, max.x), Math.max(min.x, max.x)];\n [min.y, max.y] = [Math.min(min.y, max.y), Math.max(min.y, max.y)];\n\n let intersect = [];\n let value = null;\n\n for (let x = min.x; x <= max.x; x++) {\n for (let y = min.y; y <= max.y; y++) {\n rayCaster.setFromCamera(\n {\n x: (x / offsetWidth) * 2 - 1,\n y: -(y / offsetHeight) * 2 + 1,\n },\n camera\n );\n intersect = rayCaster.intersectObject(mesh);\n\n if (intersect.length === 0) {\n continue;\n }\n\n value = CoreUtils.getPixelData(\n stack,\n CoreUtils.worldToData(stack.lps2IJK, intersect[0].point)\n );\n\n // the image isn't RGB and coordinates are inside it\n if (value !== null && stack.numberOfChannels === 1) {\n values.push(\n CoreUtils.rescaleSlopeIntercept(value, stack.rescaleSlope, stack.rescaleIntercept)\n );\n }\n }\n }\n\n if (values.length === 0) {\n return null;\n }\n\n const avg = values.reduce((sum, val) => sum + val) / values.length;\n\n return {\n min: values.reduce((prev, val) => (prev < val ? prev : val)),\n max: values.reduce((prev, val) => (prev > val ? prev : val)),\n mean: avg,\n sd: Math.sqrt(values.reduce((sum, val) => sum + Math.pow(val - avg, 2), 0) / values.length),\n };\n }\n\n /**\n * Calculate shape area (sum of triangle polygons area).\n * May be inaccurate or completely wrong for some shapes.\n *\n * @param {THREE.Geometry} geometry\n *\n * @returns {Number}\n */\n static getGeometryArea(geometry) {\n if (geometry.faces.length < 1) {\n return 0.0;\n }\n\n let area = 0.0;\n let vertices = geometry.vertices;\n\n geometry.faces.forEach(function(elem) {\n area += new Triangle(vertices[elem.a], vertices[elem.b], vertices[elem.c]).getArea();\n });\n\n return area;\n }\n\n static stringToNumber(numberAsString) {\n let number = Number(numberAsString);\n\n // returns true is number is NaN\n if (number !== number) {\n const dots = (numberAsString.match(/\\./g)||[]).length;\n const commas = (numberAsString.match(/\\,/g)||[]).length;\n\n if (commas === 1 && dots < 2) {\n // convert 1,45 to 1.45\n // convert 1,456.78 to 1456.78\n const replaceBy = dots === 0 ? '.' : '';\n const stringWithoutComma = numberAsString.replace(/,/g, replaceBy);\n number = Number(stringWithoutComma);\n }\n\n // if that didn't help\n // weird stuff happenning\n // should throw an error instead of setting value to 1.0\n if (number !== number) {\n console.error(`String could not be converted to number (${numberAsString}). Setting value to \"1.0\".`);\n number = 1.0;\n }\n }\n\n return number;\n }\n}\n","/**\n * Validate basic structures.\n *\n * @example\n * //Returns true\n * VJS.Core.Validators.matrix4(new THREE.Matrix4());\n *\n * //Returns false\n * VJS.Core.Validators.matrix4(new THREE.Vector3());\n *\n * @module core/validators\n */\n\nexport default class Validators {\n /**\n * Validates a matrix as a THREEJS.Matrix4\n * link\n * @param {Object} objectToTest - The object to be tested.\n * @return {boolean} True if valid Matrix4, false if NOT.\n */\n static matrix4(objectToTest) {\n if (\n !(\n objectToTest !== null &&\n typeof objectToTest !== 'undefined' &&\n objectToTest.hasOwnProperty('elements') &&\n objectToTest.elements.length === 16 &&\n typeof objectToTest.identity === 'function' &&\n typeof objectToTest.copy === 'function' &&\n typeof objectToTest.determinant === 'function'\n )\n ) {\n return false;\n }\n\n return true;\n }\n\n /**\n * Validates a vector as a THREEJS.Vector3\n * @param {Object} objectToTest - The object to be tested.\n * @return {boolean} True if valid Vector3, false if NOT.\n */\n static vector3(objectToTest) {\n if (\n !(\n objectToTest !== null &&\n typeof objectToTest !== 'undefined' &&\n objectToTest.hasOwnProperty('x') &&\n objectToTest.hasOwnProperty('y') &&\n objectToTest.hasOwnProperty('z') &&\n !objectToTest.hasOwnProperty('w')\n )\n ) {\n return false;\n }\n\n return true;\n }\n\n /**\n * Validates a box.\n *\n * @example\n * // a box is defined as\n * let box = {\n * center: THREE.Vector3,\n * halfDimensions: THREE.Vector3\n * }\n *\n * @param {Object} objectToTest - The object to be tested.\n * @return {boolean} True if valid box, false if NOT.\n */\n static box(objectToTest) {\n if (\n !(\n objectToTest !== null &&\n typeof objectToTest !== 'undefined' &&\n objectToTest.hasOwnProperty('center') &&\n this.vector3(objectToTest.center) &&\n objectToTest.hasOwnProperty('halfDimensions') &&\n this.vector3(objectToTest.halfDimensions) &&\n objectToTest.halfDimensions.x >= 0 &&\n objectToTest.halfDimensions.y >= 0 &&\n objectToTest.halfDimensions.z >= 0\n )\n ) {\n return false;\n }\n\n return true;\n }\n\n /**\n * Validates a ray.\n *\n * @example\n * // a ray is defined as\n * let ray = {\n * postion: THREE.Vector3,\n * direction: THREE.Vector3\n * }\n *\n * @param {Object} objectToTest - The object to be tested.\n * @return {boolean} True if valid ray, false if NOT.\n */\n static ray(objectToTest) {\n if (\n !(\n objectToTest !== null &&\n typeof objectToTest !== 'undefined' &&\n objectToTest.hasOwnProperty('position') &&\n this.vector3(objectToTest.position) &&\n objectToTest.hasOwnProperty('direction') &&\n this.vector3(objectToTest.direction)\n )\n ) {\n return false;\n }\n\n return true;\n }\n}\n","// from dicom wadoo loader\n// https://github.com/cornerstonejs/cornerstoneWADOImageLoader/blob/master/src/shared/decoders/decodeRLE.js\nfunction decodeRLE(imageFrame, pixelData) {\n if (imageFrame.bitsAllocated === 8) {\n if (imageFrame.planarConfiguration) {\n return decode8Planar(imageFrame, pixelData);\n }\n\n return decode8(imageFrame, pixelData);\n } else if (imageFrame.bitsAllocated === 16) {\n return decode16(imageFrame, pixelData);\n }\n\n throw new Error('unsupported pixel format for RLE');\n}\n\nfunction decode8(imageFrame, pixelData) {\n const frameData = pixelData;\n const frameSize = imageFrame.rows * imageFrame.columns;\n const outFrame = new ArrayBuffer(frameSize * imageFrame.samplesPerPixel);\n const header = new DataView(frameData.buffer, frameData.byteOffset);\n const data = new Int8Array(frameData.buffer, frameData.byteOffset);\n const out = new Int8Array(outFrame);\n\n let outIndex = 0;\n const numSegments = header.getInt32(0, true);\n\n for (let s = 0; s < numSegments; ++s) {\n outIndex = s;\n\n let inIndex = header.getInt32((s + 1) * 4, true);\n let maxIndex = header.getInt32((s + 2) * 4, true);\n\n if (maxIndex === 0) {\n maxIndex = frameData.length;\n }\n\n const endOfSegment = frameSize * numSegments;\n\n while (inIndex < maxIndex) {\n const n = data[inIndex++];\n\n if (n >= 0 && n <= 127) {\n // copy n bytes\n for (let i = 0; i < n + 1 && outIndex < endOfSegment; ++i) {\n out[outIndex] = data[inIndex++];\n outIndex += imageFrame.samplesPerPixel;\n }\n } else if (n <= -1 && n >= -127) {\n const value = data[inIndex++];\n // run of n bytes\n\n for (let j = 0; j < -n + 1 && outIndex < endOfSegment; ++j) {\n out[outIndex] = value;\n outIndex += imageFrame.samplesPerPixel;\n }\n } /* else if (n === -128) {\n } // do nothing */\n }\n }\n imageFrame.pixelData = new Uint8Array(outFrame);\n\n return imageFrame;\n}\n\nfunction decode8Planar(imageFrame, pixelData) {\n const frameData = pixelData;\n const frameSize = imageFrame.rows * imageFrame.columns;\n const outFrame = new ArrayBuffer(frameSize * imageFrame.samplesPerPixel);\n const header = new DataView(frameData.buffer, frameData.byteOffset);\n const data = new Int8Array(frameData.buffer, frameData.byteOffset);\n const out = new Int8Array(outFrame);\n\n let outIndex = 0;\n const numSegments = header.getInt32(0, true);\n\n for (let s = 0; s < numSegments; ++s) {\n outIndex = s * frameSize;\n\n let inIndex = header.getInt32((s + 1) * 4, true);\n let maxIndex = header.getInt32((s + 2) * 4, true);\n\n if (maxIndex === 0) {\n maxIndex = frameData.length;\n }\n\n const endOfSegment = frameSize * numSegments;\n\n while (inIndex < maxIndex) {\n const n = data[inIndex++];\n\n if (n >= 0 && n <= 127) {\n // copy n bytes\n for (let i = 0; i < n + 1 && outIndex < endOfSegment; ++i) {\n out[outIndex] = data[inIndex++];\n outIndex++;\n }\n } else if (n <= -1 && n >= -127) {\n const value = data[inIndex++];\n // run of n bytes\n\n for (let j = 0; j < -n + 1 && outIndex < endOfSegment; ++j) {\n out[outIndex] = value;\n outIndex++;\n }\n } /* else if (n === -128) {\n } // do nothing */\n }\n }\n imageFrame.pixelData = new Uint8Array(outFrame);\n\n return imageFrame;\n}\n\nfunction decode16(imageFrame, pixelData) {\n const frameData = pixelData;\n const frameSize = imageFrame.rows * imageFrame.columns;\n\n const outFrame = new ArrayBuffer(frameSize * imageFrame.samplesPerPixel * 2);\n\n const header = new DataView(frameData.buffer, frameData.byteOffset);\n const data = new Int8Array(frameData.buffer, frameData.byteOffset);\n\n const out = new Int8Array(outFrame);\n\n const numSegments = header.getInt32(0, true);\n\n for (let s = 0; s < numSegments; ++s) {\n let outIndex = 0;\n const highByte = s === 0 ? 1 : 0;\n\n let inIndex = header.getInt32((s + 1) * 4, true);\n let maxIndex = header.getInt32((s + 2) * 4, true);\n\n if (maxIndex === 0) {\n maxIndex = frameData.length;\n }\n\n while (inIndex < maxIndex) {\n const n = data[inIndex++];\n\n if (n >= 0 && n <= 127) {\n for (let i = 0; i < n + 1 && outIndex < frameSize; ++i) {\n out[outIndex * 2 + highByte] = data[inIndex++];\n outIndex++;\n }\n } else if (n <= -1 && n >= -127) {\n const value = data[inIndex++];\n\n for (let j = 0; j < -n + 1 && outIndex < frameSize; ++j) {\n out[outIndex * 2 + highByte] = value;\n outIndex++;\n }\n } /* else if (n === -128) {\n } // do nothing */\n }\n }\n if (imageFrame.pixelRepresentation === 0) {\n imageFrame.pixelData = new Uint16Array(outFrame);\n } else {\n imageFrame.pixelData = new Int16Array(outFrame);\n }\n\n return imageFrame;\n}\n\nexport const RLEDecoder = decodeRLE;\n","import Slice, { geometriesSlice } from './geometries.slice';\nimport Voxel, { geometriesVoxel } from './geometries.voxel';\n\nexport {\n Slice as SliceGeometry,\n geometriesSlice as sliceGeometryFactory,\n Voxel as VoxelGeometry,\n geometriesVoxel as voxelGeometryFactory,\n};\n","/** * Imports ***/\nimport coreIntersections from '../core/core.intersections';\nimport coreUtils from '../core/core.utils';\n\n/**\n *\n * It is typically used for creating an irregular 3D planar shape given a box and the cut-plane.\n *\n * Demo: {@link https://fnndsc.github.io/vjs#geometry_slice}\n *\n * @module geometries/slice\n *\n * @param {Vector3} halfDimensions - Half-dimensions of the box to be sliced.\n * @param {Vector3} center - Center of the box to be sliced.\n * @param {Vector3} orientation - Orientation of the box to be sliced. (might not be necessary..?)\n * @param {Vector3} position - Position of the cutting plane.\n * @param {Vector3} direction - Cross direction of the cutting plane.\n *\n * @example\n * // Define box to be sliced\n * let halfDimensions = new THREE.Vector(123, 45, 67);\n * let center = new Vector3(0, 0, 0);\n * let orientation = new Vector3(\n * new Vector3(1, 0, 0),\n * new Vector3(0, 1, 0),\n * new Vector3(0, 0, 1)\n * );\n *\n * // Define slice plane\n * let position = center.clone();\n * let direction = new Vector3(-0.2, 0.5, 0.3);\n *\n * // Create the slice geometry & materials\n * let sliceGeometry = new VJS.geometries.slice(halfDimensions, center, orientation, position, direction);\n * let sliceMaterial = new THREE.MeshBasicMaterial({\n * 'side': THREE.DoubleSide,\n * 'color': 0xFF5722\n * });\n *\n * // Create mesh and add it to the scene\n * let slice = new THREE.Mesh(sliceGeometry, sliceMaterial);\n * scene.add(slice);\n */\n\nconst geometriesSlice = (three = window.THREE) => {\n if (three === undefined || three.ShapeBufferGeometry === undefined) {\n return null;\n }\n\n const Constructor = three.ShapeBufferGeometry;\n return class extends Constructor {\n constructor(halfDimensions, center, position, direction, toAABB = new three.Matrix4()) {\n //\n // prepare data for the shape!\n //\n let aabb = {\n halfDimensions,\n center,\n toAABB,\n };\n\n let plane = {\n position,\n direction,\n };\n\n // BOOM!\n let intersections = coreIntersections.aabbPlane(aabb, plane);\n\n // can not exist before calling the constructor\n if (intersections.length < 3) {\n window.console.log('WARNING: Less than 3 intersections between AABB and Plane.');\n window.console.log('AABB');\n window.console.log(aabb);\n window.console.log('Plane');\n window.console.log(plane);\n window.console.log('exiting...');\n const err = new Error(\n 'geometries.slice has less than 3 intersections, can not create a valid geometry.'\n );\n throw err;\n }\n\n let points = coreUtils.orderIntersections(intersections, direction);\n\n // create the shape\n let shape = new three.Shape();\n // move to first point!\n shape.moveTo(points[0].xy.x, points[0].xy.y);\n\n // loop through all points!\n const positions = new Float32Array(points.length * 3);\n positions.set(points[0].toArray(), 0);\n\n for (let i = 1; i < points.length; i++) {\n // project each on plane!\n positions.set(points[i].toArray(), i * 3);\n\n shape.lineTo(points[i].xy.x, points[i].xy.y);\n }\n\n // close the shape!\n shape.lineTo(points[0].xy.x, points[0].xy.y);\n\n //\n // Generate Slice Buffer Geometry from Shape Buffer Geomtry\n // bewcause it does triangulation for us!\n super(shape);\n this.type = 'SliceBufferGeometry';\n\n // update real position of each vertex! (not in 2d)\n this.setAttribute( 'position', new three.Float32BufferAttribute( positions, 3 ) );\n this.vertices = points; // legacy code to compute normals int he SliceHelper\n }\n };\n};\n\n// export factory\nexport { geometriesSlice };\n// default export to\nexport default geometriesSlice();\n","/**\n *\n * @module geometries/voxel\n */\n\nconst geometriesVoxel = (three = window.THREE) => {\n if (three === undefined || three.BoxGeometry === undefined) {\n return null;\n }\n\n const Constructor = three.BoxGeometry;\n return class extends Constructor {\n constructor(dataPosition) {\n super(1, 1, 1);\n\n this._location = dataPosition;\n\n this.applyMatrix(\n new three.Matrix4().makeTranslation(this._location.x, this._location.y, this._location.z)\n );\n\n this.verticesNeedUpdate = true;\n }\n\n resetVertices() {\n this.vertices[0].set(0.5, 0.5, 0.5);\n this.vertices[1].set(0.5, 0.5, -0.5);\n this.vertices[2].set(0.5, -0.5, 0.5);\n this.vertices[3].set(0.5, -0.5, -0.5);\n this.vertices[4].set(-0.5, 0.5, -0.5);\n this.vertices[5].set(-0.5, 0.5, 0.5);\n this.vertices[6].set(-0.5, -0.5, -0.5);\n this.vertices[7].set(-0.5, -0.5, 0.5);\n }\n\n set location(location) {\n this._location = location;\n\n // update vertices from location\n this.vertices[0].set(+0.5, +0.5, +0.5);\n this.vertices[1].set(+0.5, +0.5, -0.5);\n this.vertices[2].set(+0.5, -0.5, +0.5);\n this.vertices[3].set(+0.5, -0.5, -0.5);\n this.vertices[4].set(-0.5, +0.5, -0.5);\n this.vertices[5].set(-0.5, +0.5, +0.5);\n this.vertices[6].set(-0.5, -0.5, -0.5);\n this.vertices[7].set(-0.5, -0.5, +0.5);\n\n this.applyMatrix(\n new three.Matrix4().makeTranslation(this._location.x, this._location.y, this._location.z)\n );\n\n this.verticesNeedUpdate = true;\n }\n\n get location() {\n return this._location;\n }\n };\n};\n\n// export factory\nexport { geometriesVoxel };\n// default export to\nexport default geometriesVoxel();\n","/**\n * @module helpers/border\n */\n\nconst helpersBorder = (three = window.THREE) => {\n if (three === undefined || three.Object3D === undefined) {\n return null;\n }\n\n const Constructor = three.Object3D;\n return class extends Constructor {\n constructor(helpersSlice) {\n //\n super();\n\n this._helpersSlice = helpersSlice;\n\n this._visible = true;\n this._color = 0xff0000;\n this._material = null;\n this._geometry = null;\n this._mesh = null;\n\n this._create();\n }\n\n set helpersSlice(helpersSlice) {\n this._helpersSlice = helpersSlice;\n this._update();\n }\n\n get helpersSlice() {\n return this._helpersSlice;\n }\n\n set visible(visible) {\n this._visible = visible;\n if (this._mesh) {\n this._mesh.visible = this._visible;\n }\n }\n\n get visible() {\n return this._visible;\n }\n\n set color(color) {\n this._color = color;\n if (this._material) {\n this._material.color.set(this._color);\n }\n }\n\n get color() {\n return this._color;\n }\n\n _create() {\n if (!this._material) {\n this._material = new three.LineBasicMaterial({\n color: this._color,\n linewidth: 1,\n });\n }\n\n if (!this._helpersSlice.geometry.vertices) {\n return;\n }\n\n this._geometry = new three.BufferGeometry();\n \n // set vertices positions\n const nbOfVertices = this._helpersSlice.geometry.vertices.length;\n const positions = new Float32Array((nbOfVertices + 1) * 3);\n positions.set(this._helpersSlice.geometry.attributes.position.array, 0);\n positions.set(this._helpersSlice.geometry.vertices[0].toArray(), nbOfVertices * 3);\n this._geometry.setAttribute( 'position', new three.Float32BufferAttribute( positions, 3 ) );\n\n this._mesh = new three.Line(this._geometry, this._material);\n if (this._helpersSlice.aabbSpace === 'IJK') {\n this._mesh.applyMatrix4(this._helpersSlice.stack.ijk2LPS);\n }\n this._mesh.visible = this._visible;\n\n // and add it!\n this.add(this._mesh);\n }\n\n _update() {\n // update slice\n if (this._mesh) {\n this.remove(this._mesh);\n this._mesh.geometry.dispose();\n this._mesh = null;\n }\n\n this._create();\n }\n\n dispose() {\n this._mesh.material.dispose();\n this._mesh.material = null;\n this._geometry.dispose();\n this._geometry = null;\n this._material.dispose();\n this._material = null;\n }\n };\n};\n\n// export factory\nexport { helpersBorder };\n// default export to\nexport default helpersBorder();\n","/**\n * @module helpers/boundingbox\n */\n\nconst helpersBoundingBox = (three = window.THREE) => {\n if (three === undefined || three.Object3D === undefined) {\n return null;\n }\n\n const Constructor = three.Object3D;\n return class extends Constructor {\n constructor(stack) {\n //\n super();\n\n // private vars\n this._stack = stack;\n this._visible = true;\n this._color = 0xffffff;\n this._material = null;\n this._geometry = null;\n this._mesh = null;\n this._meshStack = null;\n\n // create object\n this._create();\n }\n\n // getters/setters\n set visible(visible) {\n this._visible = visible;\n if (this._mesh) {\n this._mesh.visible = this._visible;\n }\n }\n\n get visible() {\n return this._visible;\n }\n\n set color(color) {\n this._color = color;\n if (this._material) {\n this._material.color.set(this._color);\n }\n }\n\n get color() {\n return this._color;\n }\n\n // private methods\n _create() {\n // Convenience vars\n const dimensions = this._stack.dimensionsIJK;\n const halfDimensions = this._stack.halfDimensionsIJK;\n const offset = new three.Vector3(-0.5, -0.5, -0.5);\n\n // Geometry\n const geometry = new three.BoxGeometry(dimensions.x, dimensions.y, dimensions.z);\n geometry.applyMatrix4(\n new three.Matrix4().makeTranslation(\n halfDimensions.x + offset.x,\n halfDimensions.y + offset.y,\n halfDimensions.z + offset.z\n )\n );\n this._geometry = geometry;\n\n // Material\n this._material = new three.MeshBasicMaterial({\n wireframe: true,\n });\n\n const mesh = new three.Mesh(this._geometry, null);\n mesh.applyMatrix4(this._stack.ijk2LPS);\n mesh.visible = this._visible;\n this._meshStack = mesh;\n\n this._mesh = new three.BoxHelper(this._meshStack, this._color);\n this._material = this._mesh.material;\n\n this.add(this._mesh);\n }\n\n _update() {\n if (this._mesh) {\n this.remove(this._mesh);\n this._mesh.geometry.dispose();\n this._mesh.geometry = null;\n this._mesh.material.dispose();\n this._mesh.material = null;\n this._mesh = null;\n }\n\n this._create();\n }\n\n dispose() {\n this._mesh.material.dispose();\n this._mesh.material = null;\n this._geometry.dispose();\n this._geometry = null;\n this._material.dispose();\n this._material = null;\n }\n };\n};\n\n// export factory\nexport { helpersBoundingBox };\n// default export too\nexport default helpersBoundingBox();\n","/** * Imports ***/\nimport ShadersUniform from '../shaders/shaders.contour.uniform';\nimport ShadersVertex from '../shaders/shaders.contour.vertex';\nimport ShadersFragment from '../shaders/shaders.contour.fragment';\n\n/**\n * @module helpers/contour\n */\nconst helpersContour = (three = window.THREE) => {\n if (three === undefined || three.Object3D === undefined) {\n return null;\n }\n\n const Constructor = three.Object3D;\n return class extends Constructor {\n constructor(stack, geometry, texture) {\n //\n super();\n\n this._stack = stack;\n this._textureToFilter = texture;\n this._contourWidth = 1;\n this._contourOpacity = 1;\n this._canvasWidth = 0;\n this._canvasHeight = 0;\n this._shadersFragment = ShadersFragment;\n this._shadersVertex = ShadersVertex;\n this._uniforms = ShadersUniform.uniforms();\n this._material = null;\n this._geometry = geometry;\n\n this._create();\n }\n\n _create() {\n this._prepareMaterial();\n this._mesh = new three.Mesh(this._geometry, this._material);\n this._mesh.applyMatrix4(this._stack._ijk2LPS);\n this.add(this._mesh);\n }\n\n _prepareMaterial() {\n if (!this._material) {\n // contour default width\n this._uniforms.uWidth.value = this._contourWidth;\n this._uniforms.uOpacity.value = this._contourOpacity;\n\n //\n this._uniforms.uCanvasWidth.value = this._canvasWidth;\n this._uniforms.uCanvasHeight.value = this._canvasHeight;\n\n // generate material\n let fs = new ShadersFragment(this._uniforms);\n let vs = new ShadersVertex();\n this._material = new three.ShaderMaterial({\n side: three.DoubleSide,\n uniforms: this._uniforms,\n vertexShader: vs.compute(),\n fragmentShader: fs.compute(),\n transparent: true,\n });\n }\n }\n\n update() {\n if (this._mesh) {\n this.remove(this._mesh);\n this._mesh.geometry.dispose();\n this._mesh.geometry = null;\n this._mesh = null;\n }\n\n this._create();\n }\n\n dispose() {\n //\n if (this._textureToFilter !== null) {\n this._textureToFilter.dispose();\n this._textureToFilter = null;\n }\n\n this._shadersFragment = null;\n this._shadersVertex = null;\n\n this._uniforms = null;\n\n // material, geometry and mesh\n this.remove(this._mesh);\n this._mesh.geometry.dispose();\n this._mesh.geometry = null;\n this._mesh.material.dispose();\n this._mesh.material = null;\n this._mesh = null;\n\n this._geometry.dispose();\n this._geometry = null;\n this._material.vertexShader = null;\n this._material.fragmentShader = null;\n this._material.uniforms = null;\n this._material.dispose();\n this._material = null;\n\n this._stack = null;\n }\n\n get geometry() {\n return this._geometry;\n }\n\n set geometry(geometry) {\n if (this._mesh) {\n this.remove(this._mesh);\n this._mesh.geometry.dispose();\n this._mesh.geometry = null;\n this._mesh = null;\n\n this._geometry.dispose();\n this._geometry = null;\n }\n\n this._geometry = geometry;\n\n this._create();\n }\n\n get textureToFilter() {\n return this._textureToFilter;\n }\n\n set textureToFilter(texture) {\n this._textureToFilter = texture;\n this._uniforms.uTextureFilled.value = texture;\n this._material.needsUpdate = true;\n }\n\n get contourOpacity() {\n return this._contourOpacity;\n }\n\n set contourOpacity(contourOpacity) {\n this._contourOpacity = contourOpacity;\n this._uniforms.uOpacity.value = this._contourOpacity;\n }\n\n get contourWidth() {\n return this._contourWidth;\n }\n\n set contourWidth(contourWidth) {\n this._contourWidth = contourWidth;\n this._uniforms.uWidth.value = this._contourWidth;\n }\n\n get canvasWidth() {\n return this._canvasWidth;\n }\n\n set canvasWidth(canvasWidth) {\n this._canvasWidth = canvasWidth;\n this._uniforms.uCanvasWidth.value = this._canvasWidth;\n }\n\n get canvasHeight() {\n return this._canvasHeight;\n }\n\n set canvasHeight(canvasHeight) {\n this._canvasHeight = canvasHeight;\n this._uniforms.uCanvasHeight.value = this._canvasHeight;\n }\n };\n};\n\n// export factory\nexport { helpersContour };\n// default export to\nexport default helpersContour();\n","import Border, { helpersBorder } from './helpers.border';\nimport BoundingBox, { helpersBoundingBox } from './helpers.boundingbox';\nimport Contour, { helpersContour } from './helpers.contour';\nimport Localizer, { helpersLocalizer } from './helpers.localizer';\nimport Lut, { helpersLut } from './helpers.lut';\nimport SegmentationLut from './helpers.segmentationlut';\nimport ProgressBar from './helpers.progressbar';\nimport ProgressBarEventBased from './helpers.progressbar.eventbased';\nimport Slice, { helpersSlice } from './helpers.slice';\nimport Stack, { helpersStack } from './helpers.stack';\nimport VolumeRendering, { helpersVolumeRendering } from './helpers.volumerendering';\n\nexport {\n Border as BorderHelper,\n helpersBorder as borderHelperFactory,\n BoundingBox as BoundingBoxHelper,\n helpersBoundingBox as boundingBoxHelperFactory,\n Contour as ContourHelper,\n helpersContour as contourHelperFactory,\n Localizer as LocalizerHelper,\n helpersLocalizer as localizerHelperFactory,\n Lut as LutHelper,\n helpersLut as lutHelperFactory,\n SegmentationLut as SegmentationLutHelper,\n ProgressBar as ProgressBarHelper,\n ProgressBarEventBased as ProgressBarEventBasedHelper,\n Slice as SliceHelper,\n helpersSlice as sliceHelperFactory,\n Stack as StackHelper,\n helpersStack as stackHelperFactory,\n VolumeRendering as VolumeRenderingHelper,\n helpersVolumeRendering as VolumeRenderingHelperFactory,\n};\n","/** * Imports ***/\nimport ShadersUniform from '../shaders/shaders.localizer.uniform';\nimport ShadersVertex from '../shaders/shaders.localizer.vertex';\nimport ShadersFragment from '../shaders/shaders.localizer.fragment';\n\n/**\n * @module helpers/localizer\n */\nconst helpersLocalizer = (three = window.THREE) => {\n if (three === undefined || three.Object3D === undefined) {\n return null;\n }\n\n const Constructor = three.Object3D;\n return class extends Constructor {\n constructor(stack, geometry, referencePlane) {\n //\n super();\n\n this._stack = stack;\n this._referencePlane = referencePlane;\n this._plane1 = null;\n this._color1 = null;\n this._plane2 = null;\n this._color2 = null;\n this._plane3 = null;\n this._color3 = null;\n this._canvasWidth = 0;\n this._canvasHeight = 0;\n this._shadersFragment = ShadersFragment;\n this._shadersVertex = ShadersVertex;\n this._uniforms = ShadersUniform.uniforms();\n this._material = null;\n this._geometry = geometry;\n\n this._create();\n }\n\n _create() {\n this._prepareMaterial();\n this._mesh = new three.Mesh(this._geometry, this._material);\n this._mesh.applyMatrix(this._stack._ijk2LPS);\n this.add(this._mesh);\n }\n\n _prepareMaterial() {\n if (!this._material) {\n // reference plane\n this._uniforms.uSlice.value = this._referencePlane;\n\n // localizer planes\n if (this._plane1) {\n this._uniforms.uPlane1.value = this._plane1;\n this._uniforms.uPlaneColor1.value = this._color1;\n }\n\n if (this._plane2) {\n this._uniforms.uPlane2.value = this._plane2;\n this._uniforms.uPlaneColor2.value = this._color2;\n }\n\n if (this._plane3) {\n this._uniforms.uPlane3.value = this._plane3;\n this._uniforms.uPlaneColor3.value = this._color3;\n }\n\n //\n this._uniforms.uCanvasWidth.value = this._canvasWidth;\n this._uniforms.uCanvasHeight.value = this._canvasHeight;\n\n // generate material\n let fs = new ShadersFragment(this._uniforms);\n let vs = new ShadersVertex();\n this._material = new three.ShaderMaterial({\n side: three.DoubleSide,\n uniforms: this._uniforms,\n vertexShader: vs.compute(),\n fragmentShader: fs.compute(),\n });\n this._material.transparent = true;\n }\n }\n\n update() {\n if (this._mesh) {\n this.remove(this._mesh);\n this._mesh.geometry.dispose();\n this._mesh.geometry = null;\n this._mesh = null;\n }\n\n this._create();\n }\n\n dispose() {\n //\n this._referencePlane = null;\n this._plane1 = null;\n this._color1 = null;\n this._plane2 = null;\n this._color2 = null;\n this._plane3 = null;\n this._color3 = null;\n\n this._shadersFragment = null;\n this._shadersVertex = null;\n\n this._uniforms = null;\n\n // material, geometry and mesh\n this.remove(this._mesh);\n this._mesh.geometry.dispose();\n this._mesh.geometry = null;\n this._mesh.material.dispose();\n this._mesh.material = null;\n this._mesh = null;\n\n this._geometry.dispose();\n this._geometry = null;\n this._material.vertexShader = null;\n this._material.fragmentShader = null;\n this._material.uniforms = null;\n this._material.dispose();\n this._material = null;\n\n this._stack = null;\n }\n\n get geometry() {\n return this._geometry;\n }\n\n set geometry(geometry) {\n if (this._mesh) {\n this.remove(this._mesh);\n this._mesh.geometry.dispose();\n this._mesh.geometry = null;\n this._mesh = null;\n\n this._geometry.dispose();\n this._geometry = null;\n }\n\n this._geometry = geometry;\n\n this._create();\n }\n\n get referencePlane() {\n return this._referencePlane;\n }\n\n set referencePlane(referencePlane) {\n this._referencePlane = referencePlane;\n this._uniforms.uSlice.value = this._referencePlane;\n }\n\n get plane1() {\n return this._plane1;\n }\n\n set plane1(plane1) {\n this._plane1 = plane1;\n this._uniforms.uPlane1.value = this._plane1;\n }\n\n get color1() {\n return this._color1;\n }\n\n set color1(color1) {\n this._color1 = color1;\n this._uniforms.uPlaneColor1.value = this._color1;\n }\n\n get plane2() {\n return this._plane2;\n }\n\n set plane2(plane2) {\n this._plane2 = plane2;\n this._uniforms.uPlane2.value = this._plane2;\n }\n\n get color2() {\n return this._color2;\n }\n\n set color2(color2) {\n this._color2 = color2;\n this._uniforms.uPlaneColor2.value = this._color2;\n }\n\n get plane3() {\n return this._plane3;\n }\n\n set plane3(plane3) {\n this._plane3 = plane3;\n this._uniforms.uPlane3.value = this._plane3;\n }\n\n get color3() {\n return this._color3;\n }\n\n set color3(color3) {\n this._color3 = color3;\n this._uniforms.uPlaneColor3.value = this._color3;\n }\n\n get canvasWidth() {\n return this._canvasWidth;\n }\n\n set canvasWidth(canvasWidth) {\n this._canvasWidth = canvasWidth;\n this._uniforms.uCanvasWidth.value = this._canvasWidth;\n }\n\n get canvasHeight() {\n return this._canvasHeight;\n }\n\n set canvasHeight(canvasHeight) {\n this._canvasHeight = canvasHeight;\n this._uniforms.uCanvasHeight.value = this._canvasHeight;\n }\n };\n};\n\nexport { helpersLocalizer };\nexport default helpersLocalizer();\n","import CoreUtils from '../core/core.utils';\n\n/**\n * @module helpers/lut\n */\nconst helpersLut = (three = window.THREE) => {\n if (three === undefined || three.Object3D === undefined) {\n return null;\n }\n const Constructor = three.Object3D;\n return class extends Constructor {\n constructor(\n domTarget,\n lut = 'default',\n lutO = 'linear',\n color = [[0, 0, 0, 0], [1, 1, 1, 1]],\n opacity = [[0, 0], [1, 1]],\n discrete = false\n ) {\n // min/max (0-1 or real intensities)\n // show/hide\n // horizontal/vertical\n super();\n if (CoreUtils.isString(domTarget)) {\n this._dom = document.getElementById(domTarget);\n } else {\n this._dom = domTarget;\n }\n\n this._discrete = discrete;\n this._color = color;\n this._lut = lut;\n this._luts = { [lut]: color };\n\n this._opacity = opacity;\n this._lutO = lutO;\n this._lutsO = { [lutO]: opacity };\n\n this.initCanvas();\n this.paintCanvas();\n }\n\n initCanvas() {\n // container\n this._canvasContainer = this.initCanvasContainer(this._dom);\n // background\n this._canvasBg = this.createCanvas();\n this._canvasContainer.appendChild(this._canvasBg);\n // foreground\n this._canvas = this.createCanvas();\n this._canvasContainer.appendChild(this._canvas);\n }\n\n initCanvasContainer(dom) {\n let canvasContainer = dom;\n canvasContainer.style.border = '1px solid #F9F9F9';\n return canvasContainer;\n }\n\n createCanvas() {\n let canvas = document.createElement('canvas');\n canvas.height = 1;\n canvas.width = 256;\n canvas.style.width = '256px';\n canvas.style.height = '16px';\n return canvas;\n }\n\n paintCanvas() {\n // setup context\n let ctx = this._canvas.getContext('2d');\n ctx.clearRect(0, 0, this._canvas.width, this._canvas.height);\n ctx.globalCompositeOperation = 'source-over';\n\n // apply color\n if (!this._discrete) {\n let color = ctx.createLinearGradient(0, 0, this._canvas.width, 0);\n for (let i = 0; i < this._color.length; i++) {\n color.addColorStop(\n this._color[i][0],\n `rgba( ${Math.round(this._color[i][1] * 255)}, ${Math.round(\n this._color[i][2] * 255\n )}, ${Math.round(this._color[i][3] * 255)}, 1)`\n );\n }\n\n ctx.fillStyle = color;\n ctx.fillRect(0, 0, this._canvas.width, this._canvas.height);\n\n // setup context\n ctx.globalCompositeOperation = 'destination-in';\n\n // apply opacity\n let opacity = ctx.createLinearGradient(0, 0, this._canvas.width, 0);\n for (let i = 0; i < this._opacity.length; i++) {\n opacity.addColorStop(\n this._opacity[i][0],\n 'rgba(255, 255, 255, ' + this._opacity[i][1] + ')'\n );\n }\n ctx.fillStyle = opacity;\n ctx.fillRect(0, 0, this._canvas.width, this._canvas.height);\n } else {\n ctx.lineWidth = 2 * this._canvas.height;\n\n for (let i = 0; i < this._color.length; i++) {\n let currentPos = this._color[i][0];\n let nextPos = 1;\n if (i < this._color.length - 1) {\n nextPos = this._color[i + 1][0];\n }\n let previousPos = 0;\n if (i > 0) {\n previousPos = this._color[i - 1][0];\n }\n\n let from = previousPos + (currentPos - previousPos) / 2;\n let to = currentPos + (nextPos - currentPos) / 2;\n let color = this._color[i];\n let opacity = this._opacity[i] ? this._opacity[i][1] : 1;\n\n ctx.beginPath();\n ctx.strokeStyle = `rgba( ${Math.round(color[1] * 255)}, ${Math.round(\n color[2] * 255\n )}, ${Math.round(color[3] * 255)}, ${opacity})`;\n ctx.moveTo(from * this._canvas.width, 0);\n ctx.lineTo(to * this._canvas.width, 0);\n ctx.stroke();\n ctx.closePath();\n }\n }\n }\n\n get texture() {\n let texture = new three.Texture(this._canvas);\n texture.mapping = three.UVMapping;\n texture.wrapS = texture.wrapT = three.ClampToEdgeWrapping;\n texture.magFilter = texture.minFilter = three.NearestFilter;\n texture.premultiplyAlpha = true;\n texture.needsUpdate = true;\n return texture;\n }\n\n set lut(targetLUT) {\n this._color = this._luts[targetLUT];\n this._lut = targetLUT;\n\n this.paintCanvas();\n }\n\n get lut() {\n return this._lut;\n }\n\n set luts(newLuts) {\n this._luts = newLuts;\n }\n\n get luts() {\n return this._luts;\n }\n\n set lutO(targetLUTO) {\n this._opacity = this._lutsO[targetLUTO];\n this._lutO = targetLUTO;\n\n this.paintCanvas();\n }\n\n get lutO() {\n return this._lutO;\n }\n\n set lutsO(newLutsO) {\n this._lutsO = newLutsO;\n }\n\n get lutsO() {\n return this._lutsO;\n }\n\n set discrete(discrete) {\n this._discrete = discrete;\n\n this.paintCanvas();\n }\n\n get discrete() {\n return this._discrete;\n }\n\n lutsAvailable(type = 'color') {\n let available = [];\n let luts = this._luts;\n\n if (type !== 'color') {\n luts = this._lutsO;\n }\n\n for (let i in luts) {\n available.push(i);\n }\n\n return available;\n }\n\n // add luts to class' lut (so a user can add its own as well)\n static presetLuts() {\n return {\n default: [[0, 0, 0, 0], [1, 1, 1, 1]],\n spectrum: [\n [0, 0, 0, 0],\n [0.1, 0, 0, 1],\n [0.33, 0, 1, 1],\n [0.5, 0, 1, 0],\n [0.66, 1, 1, 0],\n [0.9, 1, 0, 0],\n [1, 1, 1, 1],\n ],\n hot_and_cold: [\n [0, 0, 0, 1],\n [0.15, 0, 1, 1],\n [0.3, 0, 1, 0],\n [0.45, 0, 0, 0],\n [0.5, 0, 0, 0],\n [0.55, 0, 0, 0],\n [0.7, 1, 1, 0],\n [0.85, 1, 0, 0],\n [1, 1, 1, 1],\n ],\n gold: [\n [0, 0, 0, 0],\n [0.13, 0.19, 0.03, 0],\n [0.25, 0.39, 0.12, 0],\n [0.38, 0.59, 0.26, 0],\n [0.5, 0.8, 0.46, 0.08],\n [0.63, 0.99, 0.71, 0.21],\n [0.75, 0.99, 0.88, 0.34],\n [0.88, 0.99, 0.99, 0.48],\n [1, 0.9, 0.95, 0.61],\n ],\n red: [[0, 0.75, 0, 0], [0.5, 1, 0.5, 0], [0.95, 1, 1, 0], [1, 1, 1, 1]],\n green: [[0, 0, 0.75, 0], [0.5, 0.5, 1, 0], [0.95, 1, 1, 0], [1, 1, 1, 1]],\n blue: [[0, 0, 0, 1], [0.5, 0, 0.5, 1], [0.95, 0, 1, 1], [1, 1, 1, 1]],\n walking_dead: [[0, 0.1, 1, 1], [1, 1, 1, 1]],\n random: [\n [0, 0, 0, 0],\n [0.27, 0.18, 0.18, 0.18],\n [0.41, 1, 1, 1],\n [0.7, 1, 0, 0],\n [1, 1, 1, 1],\n ],\n muscle_bone: [\n [0, 0, 0, 0],\n [0.00392156862745098, 0.00784313725490196, 0, 0],\n [0.00784313725490196, 0.0196078431372549, 0, 0],\n [0.011764705882352941, 0.03137254901960784, 0, 0],\n [0.01568627450980392, 0.0392156862745098, 0, 0.00392156862745098],\n [0.0196078431372549, 0.050980392156862744, 0.00392156862745098, 0.00392156862745098],\n [0.023529411764705882, 0.06274509803921569, 0.00392156862745098, 0.00392156862745098],\n [0.027450980392156862, 0.07058823529411765, 0.00392156862745098, 0.00784313725490196],\n [0.03137254901960784, 0.08235294117647059, 0.00392156862745098, 0.00784313725490196],\n [0.03529411764705882, 0.09411764705882353, 0.00784313725490196, 0.00784313725490196],\n [0.0392156862745098, 0.10196078431372549, 0.00784313725490196, 0.00784313725490196],\n [0.043137254901960784, 0.11372549019607843, 0.00784313725490196, 0.011764705882352941],\n [0.047058823529411764, 0.12549019607843137, 0.00784313725490196, 0.011764705882352941],\n [0.050980392156862744, 0.13333333333333333, 0.011764705882352941, 0.011764705882352941],\n [0.054901960784313725, 0.1450980392156863, 0.011764705882352941, 0.01568627450980392],\n [0.058823529411764705, 0.1568627450980392, 0.011764705882352941, 0.01568627450980392],\n [0.06274509803921569, 0.16470588235294117, 0.011764705882352941, 0.01568627450980392],\n [0.06666666666666667, 0.17647058823529413, 0.011764705882352941, 0.0196078431372549],\n [0.07058823529411765, 0.18823529411764706, 0.01568627450980392, 0.0196078431372549],\n [0.07450980392156863, 0.2, 0.01568627450980392, 0.0196078431372549],\n [0.0784313725490196, 0.20784313725490197, 0.01568627450980392, 0.0196078431372549],\n [0.08235294117647059, 0.2196078431372549, 0.01568627450980392, 0.023529411764705882],\n [0.08627450980392157, 0.23137254901960785, 0.0196078431372549, 0.023529411764705882],\n [0.09019607843137255, 0.23921568627450981, 0.0196078431372549, 0.023529411764705882],\n [0.09411764705882353, 0.25098039215686274, 0.0196078431372549, 0.027450980392156862],\n [0.09803921568627451, 0.2627450980392157, 0.0196078431372549, 0.027450980392156862],\n [0.10196078431372549, 0.27058823529411763, 0.023529411764705882, 0.027450980392156862],\n [0.10588235294117647, 0.2823529411764706, 0.023529411764705882, 0.027450980392156862],\n [0.10980392156862745, 0.29411764705882354, 0.023529411764705882, 0.03137254901960784],\n [0.11372549019607843, 0.30196078431372547, 0.023529411764705882, 0.03137254901960784],\n [0.11764705882352941, 0.3137254901960784, 0.023529411764705882, 0.03137254901960784],\n [0.12156862745098039, 0.3254901960784314, 0.027450980392156862, 0.03529411764705882],\n [0.12549019607843137, 0.3333333333333333, 0.027450980392156862, 0.03529411764705882],\n [0.12941176470588237, 0.34509803921568627, 0.027450980392156862, 0.03529411764705882],\n [0.13333333333333333, 0.3568627450980392, 0.027450980392156862, 0.0392156862745098],\n [0.13725490196078433, 0.36470588235294116, 0.03137254901960784, 0.0392156862745098],\n [0.1411764705882353, 0.3764705882352941, 0.03137254901960784, 0.0392156862745098],\n [0.1450980392156863, 0.38823529411764707, 0.03137254901960784, 0.0392156862745098],\n [0.14901960784313725, 0.4, 0.03137254901960784, 0.043137254901960784],\n [0.15294117647058825, 0.40784313725490196, 0.03529411764705882, 0.043137254901960784],\n [0.1568627450980392, 0.4196078431372549, 0.03529411764705882, 0.043137254901960784],\n [0.1607843137254902, 0.43137254901960786, 0.03529411764705882, 0.047058823529411764],\n [0.16470588235294117, 0.4392156862745098, 0.03529411764705882, 0.047058823529411764],\n [0.16862745098039217, 0.45098039215686275, 0.03529411764705882, 0.047058823529411764],\n [0.17254901960784313, 0.4627450980392157, 0.0392156862745098, 0.047058823529411764],\n [0.17647058823529413, 0.47058823529411764, 0.0392156862745098, 0.050980392156862744],\n [0.1803921568627451, 0.4823529411764706, 0.0392156862745098, 0.050980392156862744],\n [0.1843137254901961, 0.49411764705882355, 0.0392156862745098, 0.050980392156862744],\n [0.18823529411764706, 0.5019607843137255, 0.043137254901960784, 0.054901960784313725],\n [0.19215686274509805, 0.5137254901960784, 0.043137254901960784, 0.054901960784313725],\n [0.19607843137254902, 0.5254901960784314, 0.043137254901960784, 0.054901960784313725],\n [0.2, 0.5333333333333333, 0.043137254901960784, 0.058823529411764705],\n [0.20392156862745098, 0.5450980392156862, 0.047058823529411764, 0.058823529411764705],\n [0.20784313725490197, 0.5568627450980392, 0.047058823529411764, 0.058823529411764705],\n [0.21176470588235294, 0.5647058823529412, 0.047058823529411764, 0.058823529411764705],\n [0.21568627450980393, 0.5764705882352941, 0.047058823529411764, 0.06274509803921569],\n [0.2196078431372549, 0.5882352941176471, 0.047058823529411764, 0.06274509803921569],\n [0.2235294117647059, 0.6, 0.050980392156862744, 0.06274509803921569],\n [0.22745098039215686, 0.6078431372549019, 0.050980392156862744, 0.06666666666666667],\n [0.23137254901960785, 0.6196078431372549, 0.050980392156862744, 0.06666666666666667],\n [0.23529411764705882, 0.6313725490196078, 0.050980392156862744, 0.06666666666666667],\n [0.23921568627450981, 0.6392156862745098, 0.054901960784313725, 0.06666666666666667],\n [0.24313725490196078, 0.6509803921568628, 0.054901960784313725, 0.07058823529411765],\n [0.24705882352941178, 0.6627450980392157, 0.054901960784313725, 0.07058823529411765],\n [0.25098039215686274, 0.6705882352941176, 0.054901960784313725, 0.07058823529411765],\n [0.2549019607843137, 0.6823529411764706, 0.058823529411764705, 0.07450980392156863],\n [0.25882352941176473, 0.6941176470588235, 0.058823529411764705, 0.07450980392156863],\n [0.2627450980392157, 0.7019607843137254, 0.058823529411764705, 0.07450980392156863],\n [0.26666666666666666, 0.7137254901960784, 0.058823529411764705, 0.0784313725490196],\n [0.27058823529411763, 0.7254901960784313, 0.058823529411764705, 0.0784313725490196],\n [0.27450980392156865, 0.7333333333333333, 0.06274509803921569, 0.0784313725490196],\n [0.2784313725490196, 0.7450980392156863, 0.06274509803921569, 0.0784313725490196],\n [0.2823529411764706, 0.7568627450980392, 0.06274509803921569, 0.08235294117647059],\n [0.28627450980392155, 0.7647058823529411, 0.06274509803921569, 0.08235294117647059],\n [0.2901960784313726, 0.7764705882352941, 0.06666666666666667, 0.08235294117647059],\n [0.29411764705882354, 0.788235294117647, 0.06666666666666667, 0.08627450980392157],\n [0.2980392156862745, 0.8, 0.06666666666666667, 0.08627450980392157],\n [0.30196078431372547, 0.807843137254902, 0.06666666666666667, 0.08627450980392157],\n [0.3058823529411765, 0.8196078431372549, 0.07058823529411765, 0.08627450980392157],\n [0.30980392156862746, 0.8313725490196079, 0.07058823529411765, 0.09019607843137255],\n [0.3137254901960784, 0.8392156862745098, 0.07058823529411765, 0.09019607843137255],\n [0.3176470588235294, 0.8509803921568627, 0.07058823529411765, 0.09019607843137255],\n [0.3215686274509804, 0.8627450980392157, 0.07058823529411765, 0.09411764705882353],\n [0.3254901960784314, 0.8705882352941177, 0.07450980392156863, 0.09411764705882353],\n [0.32941176470588235, 0.8823529411764706, 0.07450980392156863, 0.09411764705882353],\n [0.3333333333333333, 0.8941176470588236, 0.07450980392156863, 0.09803921568627451],\n [0.33725490196078434, 0.9019607843137255, 0.07450980392156863, 0.09803921568627451],\n [0.3411764705882353, 0.9137254901960784, 0.0784313725490196, 0.09803921568627451],\n [0.34509803921568627, 0.9254901960784314, 0.0784313725490196, 0.09803921568627451],\n [0.34901960784313724, 0.9333333333333333, 0.0784313725490196, 0.10196078431372549],\n [0.35294117647058826, 0.9450980392156862, 0.0784313725490196, 0.10196078431372549],\n [0.3568627450980392, 0.9568627450980393, 0.08235294117647059, 0.10196078431372549],\n [0.3607843137254902, 0.9647058823529412, 0.08235294117647059, 0.10588235294117647],\n [0.36470588235294116, 0.9764705882352941, 0.08235294117647059, 0.10588235294117647],\n [0.3686274509803922, 0.9882352941176471, 0.08235294117647059, 0.10588235294117647],\n [0.37254901960784315, 1, 0.08235294117647059, 0.10588235294117647],\n [0.3764705882352941, 1, 0.09411764705882353, 0.10588235294117647],\n [0.3803921568627451, 1, 0.10588235294117647, 0.10588235294117647],\n [0.3843137254901961, 1, 0.11764705882352941, 0.10196078431372549],\n [0.38823529411764707, 1, 0.12941176470588237, 0.10196078431372549],\n [0.39215686274509803, 1, 0.1411764705882353, 0.10196078431372549],\n [0.396078431372549, 1, 0.15294117647058825, 0.09803921568627451],\n [0.4, 1, 0.16470588235294117, 0.09803921568627451],\n [0.403921568627451, 1, 0.17647058823529413, 0.09803921568627451],\n [0.40784313725490196, 1, 0.18823529411764706, 0.09411764705882353],\n [0.4117647058823529, 1, 0.2, 0.09411764705882353],\n [0.41568627450980394, 1, 0.21176470588235294, 0.09411764705882353],\n [0.4196078431372549, 1, 0.2235294117647059, 0.09019607843137255],\n [0.4235294117647059, 1, 0.23529411764705882, 0.09019607843137255],\n [0.42745098039215684, 1, 0.24705882352941178, 0.08627450980392157],\n [0.43137254901960786, 1, 0.25882352941176473, 0.08627450980392157],\n [0.43529411764705883, 1, 0.27058823529411763, 0.08627450980392157],\n [0.4392156862745098, 1, 0.2823529411764706, 0.08235294117647059],\n [0.44313725490196076, 1, 0.29411764705882354, 0.08235294117647059],\n [0.4470588235294118, 1, 0.3058823529411765, 0.08235294117647059],\n [0.45098039215686275, 1, 0.3176470588235294, 0.0784313725490196],\n [0.4549019607843137, 1, 0.32941176470588235, 0.0784313725490196],\n [0.4588235294117647, 1, 0.3411764705882353, 0.0784313725490196],\n [0.4627450980392157, 1, 0.35294117647058826, 0.07450980392156863],\n [0.4666666666666667, 1, 0.36470588235294116, 0.07450980392156863],\n [0.47058823529411764, 1, 0.3764705882352941, 0.07450980392156863],\n [0.4745098039215686, 1, 0.38823529411764707, 0.07058823529411765],\n [0.47843137254901963, 1, 0.4, 0.07058823529411765],\n [0.4823529411764706, 1, 0.4117647058823529, 0.07058823529411765],\n [0.48627450980392156, 1, 0.4235294117647059, 0.06666666666666667],\n [0.49019607843137253, 1, 0.43529411764705883, 0.06666666666666667],\n [0.49411764705882355, 1, 0.4470588235294118, 0.06274509803921569],\n [0.4980392156862745, 1, 0.4588235294117647, 0.06274509803921569],\n [0.5019607843137255, 1, 0.47058823529411764, 0.06274509803921569],\n [0.5058823529411764, 1, 0.4823529411764706, 0.058823529411764705],\n [0.5098039215686274, 1, 0.49411764705882355, 0.058823529411764705],\n [0.5137254901960784, 1, 0.5058823529411764, 0.058823529411764705],\n [0.5176470588235295, 1, 0.5137254901960784, 0.054901960784313725],\n [0.5215686274509804, 1, 0.5254901960784314, 0.054901960784313725],\n [0.5254901960784314, 1, 0.5372549019607843, 0.054901960784313725],\n [0.5294117647058824, 1, 0.5490196078431373, 0.050980392156862744],\n [0.5333333333333333, 1, 0.5607843137254902, 0.050980392156862744],\n [0.5372549019607843, 1, 0.5725490196078431, 0.050980392156862744],\n [0.5411764705882353, 1, 0.5843137254901961, 0.047058823529411764],\n [0.5450980392156862, 1, 0.596078431372549, 0.047058823529411764],\n [0.5490196078431373, 1, 0.6078431372549019, 0.043137254901960784],\n [0.5529411764705883, 1, 0.6196078431372549, 0.043137254901960784],\n [0.5568627450980392, 1, 0.6313725490196078, 0.043137254901960784],\n [0.5607843137254902, 1, 0.6431372549019608, 0.0392156862745098],\n [0.5647058823529412, 1, 0.6549019607843137, 0.0392156862745098],\n [0.5686274509803921, 1, 0.6666666666666666, 0.0392156862745098],\n [0.5725490196078431, 1, 0.6784313725490196, 0.03529411764705882],\n [0.5764705882352941, 1, 0.6901960784313725, 0.03529411764705882],\n [0.5803921568627451, 1, 0.6941176470588235, 0.0392156862745098],\n [0.5843137254901961, 1, 0.7019607843137254, 0.0392156862745098],\n [0.5882352941176471, 1, 0.7058823529411765, 0.043137254901960784],\n [0.592156862745098, 1, 0.7098039215686275, 0.043137254901960784],\n [0.596078431372549, 1, 0.7137254901960784, 0.047058823529411764],\n [0.6, 1, 0.7176470588235294, 0.047058823529411764],\n [0.6039215686274509, 1, 0.7254901960784313, 0.050980392156862744],\n [0.6078431372549019, 1, 0.7294117647058823, 0.050980392156862744],\n [0.611764705882353, 1, 0.7333333333333333, 0.054901960784313725],\n [0.615686274509804, 1, 0.7372549019607844, 0.058823529411764705],\n [0.6196078431372549, 1, 0.7411764705882353, 0.058823529411764705],\n [0.6235294117647059, 1, 0.7490196078431373, 0.06274509803921569],\n [0.6274509803921569, 1, 0.7529411764705882, 0.06274509803921569],\n [0.6313725490196078, 1, 0.7568627450980392, 0.06666666666666667],\n [0.6352941176470588, 1, 0.7607843137254902, 0.06666666666666667],\n [0.6392156862745098, 1, 0.7647058823529411, 0.07058823529411765],\n [0.6431372549019608, 1, 0.7725490196078432, 0.07058823529411765],\n [0.6470588235294118, 1, 0.7764705882352941, 0.07450980392156863],\n [0.6509803921568628, 1, 0.7803921568627451, 0.07450980392156863],\n [0.6549019607843137, 1, 0.7843137254901961, 0.0784313725490196],\n [0.6588235294117647, 1, 0.788235294117647, 0.08235294117647059],\n [0.6627450980392157, 1, 0.796078431372549, 0.08235294117647059],\n [0.6666666666666666, 1, 0.8, 0.08627450980392157],\n [0.6705882352941176, 1, 0.803921568627451, 0.08627450980392157],\n [0.6745098039215687, 1, 0.807843137254902, 0.09019607843137255],\n [0.6784313725490196, 1, 0.8117647058823529, 0.09019607843137255],\n [0.6823529411764706, 1, 0.8196078431372549, 0.09411764705882353],\n [0.6862745098039216, 1, 0.8235294117647058, 0.09411764705882353],\n [0.6901960784313725, 1, 0.8274509803921568, 0.09803921568627451],\n [0.6941176470588235, 1, 0.8313725490196079, 0.10196078431372549],\n [0.6980392156862745, 1, 0.8352941176470589, 0.10196078431372549],\n [0.7019607843137254, 1, 0.8431372549019608, 0.10588235294117647],\n [0.7058823529411765, 1, 0.8470588235294118, 0.10588235294117647],\n [0.7098039215686275, 1, 0.8509803921568627, 0.10980392156862745],\n [0.7137254901960784, 1, 0.8549019607843137, 0.10980392156862745],\n [0.7176470588235294, 1, 0.8627450980392157, 0.11372549019607843],\n [0.7215686274509804, 1, 0.8666666666666667, 0.11372549019607843],\n [0.7254901960784313, 1, 0.8705882352941177, 0.11764705882352941],\n [0.7294117647058823, 1, 0.8745098039215686, 0.12156862745098039],\n [0.7333333333333333, 1, 0.8784313725490196, 0.12156862745098039],\n [0.7372549019607844, 1, 0.8862745098039215, 0.12549019607843137],\n [0.7411764705882353, 1, 0.8901960784313725, 0.12549019607843137],\n [0.7450980392156863, 1, 0.8941176470588236, 0.12941176470588237],\n [0.7490196078431373, 1, 0.8980392156862745, 0.12941176470588237],\n [0.7529411764705882, 1, 0.9019607843137255, 0.13333333333333333],\n [0.7568627450980392, 1, 0.9098039215686274, 0.13333333333333333],\n [0.7607843137254902, 1, 0.9137254901960784, 0.13725490196078433],\n [0.7647058823529411, 1, 0.9176470588235294, 0.1411764705882353],\n [0.7686274509803922, 1, 0.9215686274509803, 0.1411764705882353],\n [0.7725490196078432, 1, 0.9254901960784314, 0.1450980392156863],\n [0.7764705882352941, 1, 0.9333333333333333, 0.1450980392156863],\n [0.7803921568627451, 1, 0.9372549019607843, 0.14901960784313725],\n [0.7843137254901961, 1, 0.9411764705882353, 0.14901960784313725],\n [0.788235294117647, 1, 0.9450980392156862, 0.15294117647058825],\n [0.792156862745098, 1, 0.9450980392156862, 0.16862745098039217],\n [0.796078431372549, 1, 0.9490196078431372, 0.1843137254901961],\n [0.8, 1, 0.9490196078431372, 0.2],\n [0.803921568627451, 1, 0.9490196078431372, 0.21568627450980393],\n [0.807843137254902, 1, 0.9490196078431372, 0.22745098039215686],\n [0.8117647058823529, 1, 0.9529411764705882, 0.24313725490196078],\n [0.8156862745098039, 1, 0.9529411764705882, 0.25882352941176473],\n [0.8196078431372549, 1, 0.9529411764705882, 0.27450980392156865],\n [0.8235294117647058, 1, 0.9529411764705882, 0.2901960784313726],\n [0.8274509803921568, 1, 0.9568627450980393, 0.3058823529411765],\n [0.8313725490196079, 1, 0.9568627450980393, 0.3215686274509804],\n [0.8352941176470589, 1, 0.9568627450980393, 0.33725490196078434],\n [0.8392156862745098, 1, 0.9568627450980393, 0.35294117647058826],\n [0.8431372549019608, 1, 0.9607843137254902, 0.3686274509803922],\n [0.8470588235294118, 1, 0.9607843137254902, 0.3843137254901961],\n [0.8509803921568627, 1, 0.9607843137254902, 0.4],\n [0.8549019607843137, 1, 0.9607843137254902, 0.4117647058823529],\n [0.8588235294117647, 1, 0.9647058823529412, 0.42745098039215684],\n [0.8627450980392157, 1, 0.9647058823529412, 0.44313725490196076],\n [0.8666666666666667, 1, 0.9647058823529412, 0.4588235294117647],\n [0.8705882352941177, 1, 0.9647058823529412, 0.4745098039215686],\n [0.8745098039215686, 1, 0.9686274509803922, 0.49019607843137253],\n [0.8784313725490196, 1, 0.9686274509803922, 0.5058823529411764],\n [0.8823529411764706, 1, 0.9686274509803922, 0.5215686274509804],\n [0.8862745098039215, 1, 0.9686274509803922, 0.5372549019607843],\n [0.8901960784313725, 1, 0.9725490196078431, 0.5529411764705883],\n [0.8941176470588236, 1, 0.9725490196078431, 0.5686274509803921],\n [0.8980392156862745, 1, 0.9725490196078431, 0.5843137254901961],\n [0.9019607843137255, 1, 0.9725490196078431, 0.6],\n [0.9058823529411765, 1, 0.9725490196078431, 0.611764705882353],\n [0.9098039215686274, 1, 0.9764705882352941, 0.6274509803921569],\n [0.9137254901960784, 1, 0.9764705882352941, 0.6431372549019608],\n [0.9176470588235294, 1, 0.9764705882352941, 0.6588235294117647],\n [0.9215686274509803, 1, 0.9764705882352941, 0.6745098039215687],\n [0.9254901960784314, 1, 0.9803921568627451, 0.6901960784313725],\n [0.9294117647058824, 1, 0.9803921568627451, 0.7058823529411765],\n [0.9333333333333333, 1, 0.9803921568627451, 0.7215686274509804],\n [0.9372549019607843, 1, 0.9803921568627451, 0.7372549019607844],\n [0.9411764705882353, 1, 0.984313725490196, 0.7529411764705882],\n [0.9450980392156862, 1, 0.984313725490196, 0.7686274509803922],\n [0.9490196078431372, 1, 0.984313725490196, 0.7843137254901961],\n [0.9529411764705882, 1, 0.984313725490196, 0.8],\n [0.9568627450980393, 1, 0.9882352941176471, 0.8117647058823529],\n [0.9607843137254902, 1, 0.9882352941176471, 0.8274509803921568],\n [0.9647058823529412, 1, 0.9882352941176471, 0.8431372549019608],\n [0.9686274509803922, 1, 0.9882352941176471, 0.8588235294117647],\n [0.9725490196078431, 1, 0.9921568627450981, 0.8745098039215686],\n [0.9764705882352941, 1, 0.9921568627450981, 0.8901960784313725],\n [0.9803921568627451, 1, 0.9921568627450981, 0.9058823529411765],\n [0.984313725490196, 1, 0.9921568627450981, 0.9215686274509803],\n [0.9882352941176471, 1, 0.996078431372549, 0.9372549019607843],\n [0.9921568627450981, 1, 0.996078431372549, 0.9529411764705882],\n [0.996078431372549, 1, 0.996078431372549, 0.9686274509803922],\n [1, 1, 0.996078431372549, 0.984313725490196],\n ],\n };\n }\n\n static presetLutsO() {\n return {\n linear: [[0, 0], [1, 1]],\n lowpass: [[0, 0.8], [0.2, 0.6], [0.3, 0.1], [1, 0]],\n bandpass: [[0, 0], [0.4, 0.8], [0.6, 0.8], [1, 0]],\n highpass: [[0, 0], [0.7, 0.1], [0.8, 0.6], [1, 0.8]],\n flat: [[0, 0.7], [1, 1]],\n random: [[0, 0], [0.38, 0], [0.55, 1], [0.72, 1], [1, 0.05]],\n linear_full: [\n [0, 0],\n [0.00392156862745098, 0.00392156862745098],\n [0.00784313725490196, 0.00784313725490196],\n [0.011764705882352941, 0.011764705882352941],\n [0.01568627450980392, 0.01568627450980392],\n [0.0196078431372549, 0.0196078431372549],\n [0.023529411764705882, 0.023529411764705882],\n [0.027450980392156862, 0.027450980392156862],\n [0.03137254901960784, 0.03137254901960784],\n [0.03529411764705882, 0.03529411764705882],\n [0.0392156862745098, 0.0392156862745098],\n [0.043137254901960784, 0.043137254901960784],\n [0.047058823529411764, 0.047058823529411764],\n [0.050980392156862744, 0.050980392156862744],\n [0.054901960784313725, 0.054901960784313725],\n [0.058823529411764705, 0.058823529411764705],\n [0.06274509803921569, 0.06274509803921569],\n [0.06666666666666667, 0.06666666666666667],\n [0.07058823529411765, 0.07058823529411765],\n [0.07450980392156863, 0.07450980392156863],\n [0.0784313725490196, 0.0784313725490196],\n [0.08235294117647059, 0.08235294117647059],\n [0.08627450980392157, 0.08627450980392157],\n [0.09019607843137255, 0.09019607843137255],\n [0.09411764705882353, 0.09411764705882353],\n [0.09803921568627451, 0.09803921568627451],\n [0.10196078431372549, 0.10196078431372549],\n [0.10588235294117647, 0.10588235294117647],\n [0.10980392156862745, 0.10980392156862745],\n [0.11372549019607843, 0.11372549019607843],\n [0.11764705882352941, 0.11764705882352941],\n [0.12156862745098039, 0.12156862745098039],\n [0.12549019607843137, 0.12549019607843137],\n [0.12941176470588237, 0.12941176470588237],\n [0.13333333333333333, 0.13333333333333333],\n [0.13725490196078433, 0.13725490196078433],\n [0.1411764705882353, 0.1411764705882353],\n [0.1450980392156863, 0.1450980392156863],\n [0.14901960784313725, 0.14901960784313725],\n [0.15294117647058825, 0.15294117647058825],\n [0.1568627450980392, 0.1568627450980392],\n [0.1607843137254902, 0.1607843137254902],\n [0.16470588235294117, 0.16470588235294117],\n [0.16862745098039217, 0.16862745098039217],\n [0.17254901960784313, 0.17254901960784313],\n [0.17647058823529413, 0.17647058823529413],\n [0.1803921568627451, 0.1803921568627451],\n [0.1843137254901961, 0.1843137254901961],\n [0.18823529411764706, 0.18823529411764706],\n [0.19215686274509805, 0.19215686274509805],\n [0.19607843137254902, 0.19607843137254902],\n [0.2, 0.2],\n [0.20392156862745098, 0.20392156862745098],\n [0.20784313725490197, 0.20784313725490197],\n [0.21176470588235294, 0.21176470588235294],\n [0.21568627450980393, 0.21568627450980393],\n [0.2196078431372549, 0.2196078431372549],\n [0.2235294117647059, 0.2235294117647059],\n [0.22745098039215686, 0.22745098039215686],\n [0.23137254901960785, 0.23137254901960785],\n [0.23529411764705882, 0.23529411764705882],\n [0.23921568627450981, 0.23921568627450981],\n [0.24313725490196078, 0.24313725490196078],\n [0.24705882352941178, 0.24705882352941178],\n [0.25098039215686274, 0.25098039215686274],\n [0.2549019607843137, 0.2549019607843137],\n [0.25882352941176473, 0.25882352941176473],\n [0.2627450980392157, 0.2627450980392157],\n [0.26666666666666666, 0.26666666666666666],\n [0.27058823529411763, 0.27058823529411763],\n [0.27450980392156865, 0.27450980392156865],\n [0.2784313725490196, 0.2784313725490196],\n [0.2823529411764706, 0.2823529411764706],\n [0.28627450980392155, 0.28627450980392155],\n [0.2901960784313726, 0.2901960784313726],\n [0.29411764705882354, 0.29411764705882354],\n [0.2980392156862745, 0.2980392156862745],\n [0.30196078431372547, 0.30196078431372547],\n [0.3058823529411765, 0.3058823529411765],\n [0.30980392156862746, 0.30980392156862746],\n [0.3137254901960784, 0.3137254901960784],\n [0.3176470588235294, 0.3176470588235294],\n [0.3215686274509804, 0.3215686274509804],\n [0.3254901960784314, 0.3254901960784314],\n [0.32941176470588235, 0.32941176470588235],\n [0.3333333333333333, 0.3333333333333333],\n [0.33725490196078434, 0.33725490196078434],\n [0.3411764705882353, 0.3411764705882353],\n [0.34509803921568627, 0.34509803921568627],\n [0.34901960784313724, 0.34901960784313724],\n [0.35294117647058826, 0.35294117647058826],\n [0.3568627450980392, 0.3568627450980392],\n [0.3607843137254902, 0.3607843137254902],\n [0.36470588235294116, 0.36470588235294116],\n [0.3686274509803922, 0.3686274509803922],\n [0.37254901960784315, 0.37254901960784315],\n [0.3764705882352941, 0.3764705882352941],\n [0.3803921568627451, 0.3803921568627451],\n [0.3843137254901961, 0.3843137254901961],\n [0.38823529411764707, 0.38823529411764707],\n [0.39215686274509803, 0.39215686274509803],\n [0.396078431372549, 0.396078431372549],\n [0.4, 0.4],\n [0.403921568627451, 0.403921568627451],\n [0.40784313725490196, 0.40784313725490196],\n [0.4117647058823529, 0.4117647058823529],\n [0.41568627450980394, 0.41568627450980394],\n [0.4196078431372549, 0.4196078431372549],\n [0.4235294117647059, 0.4235294117647059],\n [0.42745098039215684, 0.42745098039215684],\n [0.43137254901960786, 0.43137254901960786],\n [0.43529411764705883, 0.43529411764705883],\n [0.4392156862745098, 0.4392156862745098],\n [0.44313725490196076, 0.44313725490196076],\n [0.4470588235294118, 0.4470588235294118],\n [0.45098039215686275, 0.45098039215686275],\n [0.4549019607843137, 0.4549019607843137],\n [0.4588235294117647, 0.4588235294117647],\n [0.4627450980392157, 0.4627450980392157],\n [0.4666666666666667, 0.4666666666666667],\n [0.47058823529411764, 0.47058823529411764],\n [0.4745098039215686, 0.4745098039215686],\n [0.47843137254901963, 0.47843137254901963],\n [0.4823529411764706, 0.4823529411764706],\n [0.48627450980392156, 0.48627450980392156],\n [0.49019607843137253, 0.49019607843137253],\n [0.49411764705882355, 0.49411764705882355],\n [0.4980392156862745, 0.4980392156862745],\n [0.5019607843137255, 0.5019607843137255],\n [0.5058823529411764, 0.5058823529411764],\n [0.5098039215686274, 0.5098039215686274],\n [0.5137254901960784, 0.5137254901960784],\n [0.5176470588235295, 0.5176470588235295],\n [0.5215686274509804, 0.5215686274509804],\n [0.5254901960784314, 0.5254901960784314],\n [0.5294117647058824, 0.5294117647058824],\n [0.5333333333333333, 0.5333333333333333],\n [0.5372549019607843, 0.5372549019607843],\n [0.5411764705882353, 0.5411764705882353],\n [0.5450980392156862, 0.5450980392156862],\n [0.5490196078431373, 0.5490196078431373],\n [0.5529411764705883, 0.5529411764705883],\n [0.5568627450980392, 0.5568627450980392],\n [0.5607843137254902, 0.5607843137254902],\n [0.5647058823529412, 0.5647058823529412],\n [0.5686274509803921, 0.5686274509803921],\n [0.5725490196078431, 0.5725490196078431],\n [0.5764705882352941, 0.5764705882352941],\n [0.5803921568627451, 0.5803921568627451],\n [0.5843137254901961, 0.5843137254901961],\n [0.5882352941176471, 0.5882352941176471],\n [0.592156862745098, 0.592156862745098],\n [0.596078431372549, 0.596078431372549],\n [0.6, 0.6],\n [0.6039215686274509, 0.6039215686274509],\n [0.6078431372549019, 0.6078431372549019],\n [0.611764705882353, 0.611764705882353],\n [0.615686274509804, 0.615686274509804],\n [0.6196078431372549, 0.6196078431372549],\n [0.6235294117647059, 0.6235294117647059],\n [0.6274509803921569, 0.6274509803921569],\n [0.6313725490196078, 0.6313725490196078],\n [0.6352941176470588, 0.6352941176470588],\n [0.6392156862745098, 0.6392156862745098],\n [0.6431372549019608, 0.6431372549019608],\n [0.6470588235294118, 0.6470588235294118],\n [0.6509803921568628, 0.6509803921568628],\n [0.6549019607843137, 0.6549019607843137],\n [0.6588235294117647, 0.6588235294117647],\n [0.6627450980392157, 0.6627450980392157],\n [0.6666666666666666, 0.6666666666666666],\n [0.6705882352941176, 0.6705882352941176],\n [0.6745098039215687, 0.6745098039215687],\n [0.6784313725490196, 0.6784313725490196],\n [0.6823529411764706, 0.6823529411764706],\n [0.6862745098039216, 0.6862745098039216],\n [0.6901960784313725, 0.6901960784313725],\n [0.6941176470588235, 0.6941176470588235],\n [0.6980392156862745, 0.6980392156862745],\n [0.7019607843137254, 0.7019607843137254],\n [0.7058823529411765, 0.7058823529411765],\n [0.7098039215686275, 0.7098039215686275],\n [0.7137254901960784, 0.7137254901960784],\n [0.7176470588235294, 0.7176470588235294],\n [0.7215686274509804, 0.7215686274509804],\n [0.7254901960784313, 0.7254901960784313],\n [0.7294117647058823, 0.7294117647058823],\n [0.7333333333333333, 0.7333333333333333],\n [0.7372549019607844, 0.7372549019607844],\n [0.7411764705882353, 0.7411764705882353],\n [0.7450980392156863, 0.7450980392156863],\n [0.7490196078431373, 0.7490196078431373],\n [0.7529411764705882, 0.7529411764705882],\n [0.7568627450980392, 0.7568627450980392],\n [0.7607843137254902, 0.7607843137254902],\n [0.7647058823529411, 0.7647058823529411],\n [0.7686274509803922, 0.7686274509803922],\n [0.7725490196078432, 0.7725490196078432],\n [0.7764705882352941, 0.7764705882352941],\n [0.7803921568627451, 0.7803921568627451],\n [0.7843137254901961, 0.7843137254901961],\n [0.788235294117647, 0.788235294117647],\n [0.792156862745098, 0.792156862745098],\n [0.796078431372549, 0.796078431372549],\n [0.8, 0.8],\n [0.803921568627451, 0.803921568627451],\n [0.807843137254902, 0.807843137254902],\n [0.8117647058823529, 0.8117647058823529],\n [0.8156862745098039, 0.8156862745098039],\n [0.8196078431372549, 0.8196078431372549],\n [0.8235294117647058, 0.8235294117647058],\n [0.8274509803921568, 0.8274509803921568],\n [0.8313725490196079, 0.8313725490196079],\n [0.8352941176470589, 0.8352941176470589],\n [0.8392156862745098, 0.8392156862745098],\n [0.8431372549019608, 0.8431372549019608],\n [0.8470588235294118, 0.8470588235294118],\n [0.8509803921568627, 0.8509803921568627],\n [0.8549019607843137, 0.8549019607843137],\n [0.8588235294117647, 0.8588235294117647],\n [0.8627450980392157, 0.8627450980392157],\n [0.8666666666666667, 0.8666666666666667],\n [0.8705882352941177, 0.8705882352941177],\n [0.8745098039215686, 0.8745098039215686],\n [0.8784313725490196, 0.8784313725490196],\n [0.8823529411764706, 0.8823529411764706],\n [0.8862745098039215, 0.8862745098039215],\n [0.8901960784313725, 0.8901960784313725],\n [0.8941176470588236, 0.8941176470588236],\n [0.8980392156862745, 0.8980392156862745],\n [0.9019607843137255, 0.9019607843137255],\n [0.9058823529411765, 0.9058823529411765],\n [0.9098039215686274, 0.9098039215686274],\n [0.9137254901960784, 0.9137254901960784],\n [0.9176470588235294, 0.9176470588235294],\n [0.9215686274509803, 0.9215686274509803],\n [0.9254901960784314, 0.9254901960784314],\n [0.9294117647058824, 0.9294117647058824],\n [0.9333333333333333, 0.9333333333333333],\n [0.9372549019607843, 0.9372549019607843],\n [0.9411764705882353, 0.9411764705882353],\n [0.9450980392156862, 0.9450980392156862],\n [0.9490196078431372, 0.9490196078431372],\n [0.9529411764705882, 0.9529411764705882],\n [0.9568627450980393, 0.9568627450980393],\n [0.9607843137254902, 0.9607843137254902],\n [0.9647058823529412, 0.9647058823529412],\n [0.9686274509803922, 0.9686274509803922],\n [0.9725490196078431, 0.9725490196078431],\n [0.9764705882352941, 0.9764705882352941],\n [0.9803921568627451, 0.9803921568627451],\n [0.984313725490196, 0.984313725490196],\n [0.9882352941176471, 0.9882352941176471],\n [0.9921568627450981, 0.9921568627450981],\n [0.996078431372549, 0.996078431372549],\n [1, 1],\n ],\n };\n }\n };\n};\n\nexport { helpersLut };\nexport default helpersLut();\n","/**\n * Helpers material mixin.\n *\n * @module helpers/material/mixin\n */\n\nconst helpersMaterialMixin = (three = window.THREE) => {\n if (three === undefined || three.Object3D === undefined) {\n return null;\n }\n\n const Constructor = three.Object3D;\n return class extends Constructor {\n _createMaterial(extraOptions) {\n // generate shaders on-demand!\n let fs = new this._shadersFragment(this._uniforms);\n let vs = new this._shadersVertex();\n\n // material\n let globalOptions = {\n uniforms: this._uniforms,\n vertexShader: vs.compute(),\n fragmentShader: fs.compute(),\n };\n\n let options = Object.assign(extraOptions, globalOptions);\n this._material = new three.ShaderMaterial(options);\n this._material.needsUpdate = true;\n }\n\n _updateMaterial() {\n // generate shaders on-demand!\n let fs = new this._shadersFragment(this._uniforms);\n let vs = new this._shadersVertex();\n\n this._material.vertexShader = vs.compute();\n this._material.fragmentShader = fs.compute();\n\n this._material.needsUpdate = true;\n }\n\n _prepareTexture() {\n this._textures = [];\n for (let m = 0; m < this._stack._rawData.length; m++) {\n let tex = new three.DataTexture(\n this._stack.rawData[m],\n this._stack.textureSize,\n this._stack.textureSize,\n this._stack.textureType,\n three.UnsignedByteType,\n three.UVMapping,\n three.ClampToEdgeWrapping,\n three.ClampToEdgeWrapping,\n three.NearestFilter,\n three.NearestFilter\n );\n tex.needsUpdate = true;\n tex.flipY = true;\n this._textures.push(tex);\n }\n }\n };\n};\n\nexport { helpersMaterialMixin };\nexport default helpersMaterialMixin();\n","import CoreUtils from '../core/core.utils';\n\n/**\n * Event Based progressbar\n * @module helpers/progressBar\n *\n * @example\n *\n * let loader = new LoadersVolume();\n * const domContainer = document.getElementById('progressbar');\n * const pb = new HelpersProgressBarEventBased(loader, domContainer);\n */\n\nexport default class HelpersProgressBarEventBased {\n constructor(emitter, domTarget) {\n if (!emitter || !this._isFunction(emitter.emit)) {\n window.console.error('please give the this._emitter instance');\n return;\n }\n\n if (CoreUtils.isString(domTarget)) {\n this._dom = document.getElementById(domTarget);\n } else {\n this._dom = domTarget;\n }\n\n if (!CoreUtils.isElement(this._dom)) {\n window.console.error('please give the id of container dom or directly a dom instance');\n return;\n }\n this._emitter = emitter;\n this.initContainerDom();\n this.initEventListenner();\n this.loaded = 0;\n this.totalFile = 0;\n }\n\n _isFunction(fn) {\n return Object.prototype.toString.call(fn) === '[object Function]';\n }\n\n initEventListenner() {\n const self = this;\n\n this._emitter.on('load-start', function(event) {\n const totalFiles = event.files.length;\n self.totalFile = totalFiles;\n self._domTotalFile.innerHTML = totalFiles;\n });\n\n this._emitter.on('fetch-start', function(event) {\n const fetchLi = document.createElement('li');\n\n const fileTag = document.createElement('div');\n fileTag.innerHTML = 'file: ' + event.file;\n fileTag.style.color = '#ffffff';\n fetchLi.append(fileTag);\n\n fetchLi.className = 'fetch-file';\n fetchLi.id = 'file-' + event.file;\n fetchLi.style.marginBottom = '7px';\n fetchLi.style.border = '1px solid #ffffff;';\n fetchLi.style.width = '60%';\n const fetchprogress = document.createElement('div');\n fetchprogress.id = 'file-fetch-' + event.file;\n fetchprogress.style.width = '0%';\n fetchLi.append(fetchprogress);\n self._domProcessList.append(fetchLi);\n });\n\n this._emitter.on('fetch-progress', function(event) {\n const id = 'file-fetch-' + event.file;\n const fileFetchDom = document.getElementById(id);\n fileFetchDom.style.width = (event.loaded / event.total) * 100 + '%';\n fileFetchDom.style.border = '1px solid red';\n });\n\n this._emitter.on('fetch-success', function(event) {\n // show result\n const liParent = document.getElementById('file-' + event.file);\n const result = document.createElement('div');\n result.id = 'file-result-' + event.file;\n result.innerHTML = 'fetch-success';\n result.style.color = '#ffffff';\n liParent.append(result);\n });\n\n this._emitter.on('fetch-error', function(event) {\n // console.log(event);\n });\n\n this._emitter.on('fetch-abort', function(event) {\n // console.log(event);\n });\n\n this._emitter.on('fetch-end', function(event) {\n // console.log(event);\n });\n\n this._emitter.on('fetch-timeout', function(event) {\n // console.log(event);\n });\n\n this._emitter.on('parse-start', function(event) {\n const liParent = document.getElementById('file-' + event.file);\n const parseprogress = document.createElement('div');\n parseprogress.id = 'file-parse-' + event.file;\n parseprogress.style.width = '0%';\n liParent.append(parseprogress);\n });\n\n this._emitter.on('parsing', function(event) {\n const id = 'file-parse-' + event.file;\n const fileParseDom = document.getElementById(id);\n fileParseDom.style.width = (event.parsed / event.total) * 100 + '%';\n fileParseDom.style.border = '1px solid yellow';\n });\n\n this._emitter.on('parse-success', function(event) {\n self.loaded += 1;\n self._domCurrentFile.innerHTML = self.loaded;\n self._domCurrentProgress.style.width = (self.loaded / self.totalFile) * 100 + '%';\n // show result\n const liParent = document.getElementById('file-' + event.file);\n const result = document.createElement('div');\n result.id = 'file-result-' + event.file;\n result.innerHTML = 'parse-success';\n result.style.color = '#ffffff';\n liParent.append(result);\n });\n }\n\n initContainerDom() {\n const containerDom = `\n
\n
\n \n
\n
\n
\n
\n
    \n
\n
`;\n const wrap = document.createElement('div');\n wrap.innerHTML = containerDom;\n this._dom.append(wrap);\n // dom interface\n this._domCurrentFile = document.getElementById('current-file-index');\n this._domTotalFile = document.getElementById('total-file');\n this._domProcessList = document.getElementById('process-list');\n this._domCurrentProgress = document.getElementById('current-progress');\n }\n}\n","/**\n * @module helpers/progressBar\n */\n\nexport default class HelpersProgressBar {\n constructor(container) {\n this._container = container;\n this._modes = {\n load: {\n name: 'load',\n color: '#FFF56F',\n },\n parse: {\n name: 'parse',\n color: '#2196F3',\n },\n };\n\n this.requestAnimationFrameID = null;\n\n this._mode = null;\n this._value = null;\n this._total = null;\n this._totalFiles = null;\n\n this.init();\n }\n\n free() {\n let progressContainers = this._container.getElementsByClassName('progress container');\n if (progressContainers.length > 0) {\n progressContainers[0].parentNode.removeChild(progressContainers[0]);\n }\n progressContainers = null;\n // stop rendering loop\n window.cancelAnimationFrame(this.requestAnimationFrameID);\n }\n\n init() {\n let progressContainer = this._domContainer();\n\n for (let mode in this._modes) {\n if (this._modes.hasOwnProperty(mode)) {\n let bar = this._domBar(this._modes[mode]);\n progressContainer.appendChild(bar);\n bar = null;\n }\n }\n\n this._container.appendChild(progressContainer);\n progressContainer = null;\n\n // start rendering loop\n this.updateUI();\n }\n\n // url can be used in child class to show overall progress bar\n update(value, total, mode, url = '') {\n this._mode = mode;\n this._value = value;\n // depending on CDN, total return to XHTTPRequest can be 0.\n // In this case, we generate a random number to animate the progressbar\n if (total === 0) {\n this._total = value;\n this._value = Math.random() * value;\n } else {\n this._total = total;\n }\n }\n\n updateUI() {\n this.requestAnimationFrameID = requestAnimationFrame(() => {\n this.updateUI();\n });\n\n if (\n !(\n this._modes.hasOwnProperty(this._mode) &&\n this._modes[this._mode].hasOwnProperty('name') &&\n this._modes[this._mode].hasOwnProperty('color')\n )\n ) {\n return false;\n }\n\n const progress = Math.round((this._value / this._total) * 100);\n const color = this._modes[this._mode].color;\n\n let progressBar = this._container.getElementsByClassName(\n 'progress ' + this._modes[this._mode].name\n );\n if (progressBar.length > 0) {\n progressBar[0].style.borderColor = color;\n progressBar[0].style.width = progress + '%';\n }\n progressBar = null;\n }\n\n _domContainer() {\n let container = document.createElement('div');\n\n // class it\n container.classList.add('progress');\n container.classList.add('container');\n\n // style it\n container.style.width = '100%';\n container.style.height = '8px';\n container.style.position = 'absolute';\n container.style.backgroundColor = 'rgba(158, 158, 158, 0.5)';\n container.style.top = '0';\n container.style.zIndex = '1';\n\n return container;\n }\n\n _domBar(mode) {\n if (!(mode.hasOwnProperty('name') && mode.hasOwnProperty('color'))) {\n window.console.log('Invalid mode provided.');\n window.console.log(mode);\n\n return false;\n }\n\n let bar = document.createElement('div');\n\n // class it\n bar.classList.add(mode.name);\n bar.classList.add('progress');\n\n // style it\n bar.style.border = '2px solid ' + mode.color;\n bar.style.width = '0%';\n\n return bar;\n }\n\n set totalFiles(totalFiles) {\n this._totalFiles = totalFiles;\n }\n\n get totalFiles() {\n return this._totalFiles;\n }\n}\n","import CoreUtils from '../core/core.utils';\n\nlet defaultSegmentation = {\n 0: { color: [0, 0, 0], opacity: 0, label: 'background' },\n 1: { color: [255, 0, 0], opacity: 1, label: 'white matter' },\n};\n\nexport default class HelpersSegmentationLut {\n constructor(domTarget, segmentation = defaultSegmentation) {\n if (CoreUtils.isString(domTarget)) {\n this._dom = document.getElementById(domTarget);\n } else {\n this._dom = domTarget;\n }\n\n this._segmentation = segmentation;\n\n /* The segmentation object contains the color, opacity, label and structures associated:\n e.g\n const freesurferSegmentation = {\n 0: {color: [0, 0, 0],opacity: 0,label: 'background'},\n 1: {color: [255, 0, 0],opacity: 1,label: 'white matter'},\n }\n */\n this.initCanvas();\n this.paintCanvas();\n }\n\n initCanvas() {\n // container\n this._canvasContainer = this.initCanvasContainer(this._dom);\n // background\n this._canvasBg = this.createCanvas();\n this._canvasContainer.appendChild(this._canvasBg);\n // foreground\n this._canvas = this.createCanvas();\n this._canvasContainer.appendChild(this._canvas);\n }\n\n initCanvasContainer(dom) {\n let canvasContainer = dom;\n canvasContainer.style.width = '256 px';\n canvasContainer.style.height = '128 px';\n canvasContainer.style.border = '1px solid #F9F9F9';\n return canvasContainer;\n }\n\n createCanvas() {\n let canvas = document.createElement('canvas');\n canvas.height = 128;\n canvas.width = 256;\n return canvas;\n }\n\n paintCanvas() {\n // setup context\n let ctx = this._canvas.getContext('2d');\n ctx.clearRect(0, 0, this._canvas.width, this._canvas.height);\n ctx.globalCompositeOperation = 'source-over';\n ctx.lineWidth = 1;\n\n for (let i in this._segmentation) {\n // i is the label number and specifies the coordinates inside the canvas\n let xCoord = i % this._canvas.width;\n let yCoord = Math.floor(i / this._canvas.width);\n let opacity =\n typeof this._segmentation[i]['opacity'] != 'undefined'\n ? this._segmentation[i]['opacity']\n : 1;\n let color = this._segmentation[i]['color'];\n\n ctx.fillStyle = `rgba( ${Math.round(color[0])}, ${Math.round(color[1])}, ${Math.round(\n color[2]\n )}, ${opacity})`;\n ctx.fillRect(xCoord, yCoord, 1, 1);\n }\n }\n\n get texture() {\n let texture = new THREE.Texture(this._canvas);\n texture.mapping = THREE.UVMapping;\n texture.wrapS = texture.wrapT = THREE.ClampToEdgeWrapping;\n texture.magFilter = texture.minFilter = THREE.NearestFilter;\n texture.premultiplyAlpha = true;\n texture.needsUpdate = true;\n\n return texture;\n }\n\n /**\n * Set and get the segmentation object\n * (you can create it or get it from the presets file)\n *\n * @param {*} segmentation\n */\n set segmentation(segmentation) {\n this._segmentation = segmentation;\n this.paintCanvas();\n }\n\n get segmentation() {\n return this._segmentation;\n }\n}\n","/** * Imports ***/\nimport { geometriesSlice } from '../geometries/geometries.slice';\nimport ShadersUniform from '../shaders/shaders.data.uniform';\nimport ShadersVertex from '../shaders/shaders.data.vertex';\nimport ShadersFragment from '../shaders/shaders.data.fragment';\n\nimport { helpersMaterialMixin } from '../helpers/helpers.material.mixin';\n\n/**\n * @module helpers/slice\n */\n\nconst helpersSlice = (three = window.THREE) => {\n if (three === undefined || three.Object3D === undefined) {\n return null;\n }\n\n const Constructor = helpersMaterialMixin(three);\n return class extends Constructor {\n constructor(\n stack,\n index = 0,\n position = new three.Vector3(0, 0, 0),\n direction = new three.Vector3(0, 0, 1),\n aabbSpace = 'IJK'\n ) {\n //\n super();\n\n // private vars\n this._stack = stack;\n\n // image settings\n // index only used to grab window/level and intercept/slope\n this._invert = this._stack.invert;\n\n this._lut = 'none';\n this._lutTexture = null;\n // if auto === true, get from index\n // else from stack which holds the default values\n this._intensityAuto = true;\n this._interpolation = 1; // default to trilinear interpolation\n // starts at 0\n this._index = index;\n this._windowWidth = null;\n this._windowCenter = null;\n this._opacity = 1;\n this._rescaleSlope = null;\n this._rescaleIntercept = null;\n this._spacing = 1;\n this._thickness = 0;\n this._thicknessMethod = 0; // default to MIP (Maximum Intensity Projection); 1 - Mean; 2 - MinIP\n\n // threshold\n this._lowerThreshold = null;\n this._upperThreshold = null;\n\n this._canvasWidth = 0;\n this._canvasHeight = 0;\n this._borderColor = null;\n\n // Object3D settings\n // shape\n this._planePosition = position;\n this._planeDirection = direction;\n // change aaBBSpace changes the box dimensions\n // also changes the transform\n // there is also a switch to move back mesh to LPS space automatically\n this._aaBBspace = aabbSpace; // or LPS -> different transforms, esp for the geometry/mesh\n this._material = null;\n this._textures = [];\n this._shadersFragment = ShadersFragment;\n this._shadersVertex = ShadersVertex;\n this._uniforms = ShadersUniform.uniforms();\n this._geometry = null;\n this._mesh = null;\n this._visible = true;\n\n // update dimensions, center, etc.\n // depending on aaBBSpace\n this._init();\n\n // update object\n this._create();\n }\n\n // getters/setters\n\n get stack() {\n return this._stack;\n }\n\n set stack(stack) {\n this._stack = stack;\n }\n\n get spacing() {\n return this._spacing;\n }\n\n set spacing(spacing) {\n this._spacing = spacing;\n this._uniforms.uSpacing.value = this._spacing;\n }\n\n get thickness() {\n return this._thickness;\n }\n\n set thickness(thickness) {\n this._thickness = thickness;\n this._uniforms.uThickness.value = this._thickness;\n }\n\n get thicknessMethod() {\n return this._thicknessMethod;\n }\n\n set thicknessMethod(thicknessMethod) {\n this._thicknessMethod = thicknessMethod;\n this._uniforms.uThicknessMethod.value = this._thicknessMethod;\n }\n get windowWidth() {\n return this._windowWidth;\n }\n\n set windowWidth(windowWidth) {\n this._windowWidth = windowWidth;\n this.updateIntensitySettingsUniforms();\n }\n\n get windowCenter() {\n return this._windowCenter;\n }\n\n set windowCenter(windowCenter) {\n this._windowCenter = windowCenter;\n this.updateIntensitySettingsUniforms();\n }\n\n get opacity() {\n return this._opacity;\n }\n\n set opacity(opacity) {\n this._opacity = opacity;\n this.updateIntensitySettingsUniforms();\n }\n\n // adding thresholding method\n get upperThreshold() {\n return this._upperThreshold;\n }\n\n set upperThreshold(upperThreshold) {\n this._upperThreshold = upperThreshold;\n this.updateIntensitySettingsUniforms();\n }\n\n get lowerThreshold() {\n return this._lowerThreshold;\n }\n\n set lowerThreshold(lowerThreshold) {\n this._lowerThreshold = lowerThreshold;\n this.updateIntensitySettingsUniforms();\n }\n get rescaleSlope() {\n return this._rescaleSlope;\n }\n\n set rescaleSlope(rescaleSlope) {\n this._rescaleSlope = rescaleSlope;\n this.updateIntensitySettingsUniforms();\n }\n\n get rescaleIntercept() {\n return this._rescaleIntercept;\n }\n\n set rescaleIntercept(rescaleIntercept) {\n this._rescaleIntercept = rescaleIntercept;\n this.updateIntensitySettingsUniforms();\n }\n\n get invert() {\n return this._invert;\n }\n\n set invert(invert) {\n this._invert = invert;\n this.updateIntensitySettingsUniforms();\n }\n\n get lut() {\n return this._lut;\n }\n\n set lut(lut) {\n this._lut = lut;\n }\n\n get lutTexture() {\n return this._lutTexture;\n }\n\n set lutTexture(lutTexture) {\n this._lutTexture = lutTexture;\n this.updateIntensitySettingsUniforms();\n }\n\n get intensityAuto() {\n return this._intensityAuto;\n }\n\n set intensityAuto(intensityAuto) {\n this._intensityAuto = intensityAuto;\n this.updateIntensitySettings();\n this.updateIntensitySettingsUniforms();\n }\n\n get interpolation() {\n return this._interpolation;\n }\n\n set interpolation(interpolation) {\n this._interpolation = interpolation;\n this.updateIntensitySettingsUniforms();\n this._updateMaterial();\n }\n\n get index() {\n return this._index;\n }\n\n set index(index) {\n this._index = index;\n this._update();\n }\n\n set planePosition(position) {\n this._planePosition = position;\n this._update();\n }\n\n get planePosition() {\n return this._planePosition;\n }\n\n set planeDirection(direction) {\n this._planeDirection = direction;\n this._update();\n }\n\n get planeDirection() {\n return this._planeDirection;\n }\n\n set halfDimensions(halfDimensions) {\n this._halfDimensions = halfDimensions;\n }\n\n get halfDimensions() {\n return this._halfDimensions;\n }\n\n set center(center) {\n this._center = center;\n }\n\n get center() {\n return this._center;\n }\n\n set aabbSpace(aabbSpace) {\n this._aaBBspace = aabbSpace;\n this._init();\n }\n\n get aabbSpace() {\n return this._aaBBspace;\n }\n\n set mesh(mesh) {\n this._mesh = mesh;\n }\n\n get mesh() {\n return this._mesh;\n }\n\n set geometry(geometry) {\n this._geometry = geometry;\n }\n\n get geometry() {\n return this._geometry;\n }\n\n set canvasWidth(canvasWidth) {\n this._canvasWidth = canvasWidth;\n this._uniforms.uCanvasWidth.value = this._canvasWidth;\n }\n\n get canvasWidth() {\n return this._canvasWidth;\n }\n\n set canvasHeight(canvasHeight) {\n this._canvasHeight = canvasHeight;\n this._uniforms.uCanvasHeight.value = this._canvasHeight;\n }\n\n get canvasHeight() {\n return this._canvasHeight;\n }\n\n set borderColor(borderColor) {\n this._borderColor = borderColor;\n this._uniforms.uBorderColor.value = new three.Color(borderColor);\n }\n\n get borderColor() {\n return this._borderColor;\n }\n\n _init() {\n if (!this._stack || !this._stack._prepared || !this._stack._packed) {\n return;\n }\n\n if (this._aaBBspace === 'IJK') {\n this._halfDimensions = this._stack.halfDimensionsIJK;\n this._center = new three.Vector3(\n this._stack.halfDimensionsIJK.x - 0.5,\n this._stack.halfDimensionsIJK.y - 0.5,\n this._stack.halfDimensionsIJK.z - 0.5\n );\n this._toAABB = new three.Matrix4();\n } else {\n // LPS\n let aaBBox = this._stack.AABBox();\n this._halfDimensions = aaBBox.clone().multiplyScalar(0.5);\n this._center = this._stack.centerAABBox();\n this._toAABB = this._stack.lps2AABB;\n }\n }\n\n // private methods\n _create() {\n if (!this._stack || !this._stack.prepared || !this._stack.packed) {\n return;\n }\n\n // Convenience vars\n try {\n const SliceGeometryContructor = geometriesSlice(three);\n this._geometry = new SliceGeometryContructor(\n this._halfDimensions,\n this._center,\n this._planePosition,\n this._planeDirection,\n this._toAABB\n );\n } catch (e) {\n window.console.log(e);\n window.console.log('invalid slice geometry - exiting...');\n return;\n }\n\n if (!this._geometry.vertices) {\n return;\n }\n\n if (!this._material) {\n //\n this._uniforms.uTextureSize.value = this._stack.textureSize;\n this._uniforms.uDataDimensions.value = [\n this._stack.dimensionsIJK.x,\n this._stack.dimensionsIJK.y,\n this._stack.dimensionsIJK.z,\n ];\n this._uniforms.uWorldToData.value = this._stack.lps2IJK;\n this._uniforms.uNumberOfChannels.value = this._stack.numberOfChannels;\n this._uniforms.uPixelType.value = this._stack.pixelType;\n this._uniforms.uBitsAllocated.value = this._stack.bitsAllocated;\n this._uniforms.uPackedPerPixel.value = this._stack.packedPerPixel;\n this._uniforms.uSpacing.value = this._spacing;\n this._uniforms.uThickness.value = this._thickness;\n this._uniforms.uThicknessMethod.value = this._thicknessMethod;\n // compute texture if material exist\n this._prepareTexture();\n this._uniforms.uTextureContainer.value = this._textures;\n if (this._stack.textureUnits > 8) {\n this._uniforms.uTextureContainer.length = 14;\n }\n\n this._createMaterial({\n side: three.DoubleSide,\n });\n }\n\n // update intensity related stuff\n this.updateIntensitySettings();\n this.updateIntensitySettingsUniforms();\n\n // create the mesh!\n this._mesh = new three.Mesh(this._geometry, this._material);\n if (this._aaBBspace === 'IJK') {\n this._mesh.applyMatrix4(this._stack.ijk2LPS);\n }\n\n this._mesh.visible = this._visible;\n\n // and add it!\n this.add(this._mesh);\n }\n\n updateIntensitySettings() {\n // if auto, get from frame index\n if (this._intensityAuto) {\n this.updateIntensitySetting('windowCenter');\n this.updateIntensitySetting('windowWidth');\n this.updateIntensitySetting('rescaleSlope');\n this.updateIntensitySetting('rescaleIntercept');\n } else {\n if (this._windowCenter === null) {\n this._windowCenter = this._stack.windowCenter;\n }\n\n if (this._windowWidth === null) {\n this._windowWidth = this._stack.windowWidth;\n }\n\n if (this._rescaleSlope === null) {\n this._rescaleSlope = this._stack.rescaleSlope;\n }\n\n if (this._rescaleIntercept === null) {\n this._rescaleIntercept = this._stack.rescaleIntercept;\n }\n }\n\n // adding thresholding\n if (this._upperThreshold === null) {\n this._upperThreshold = this._stack._minMax[1];\n }\n\n if (this._lowerThreshold === null) {\n this._lowerThreshold = this._stack._minMax[0];\n }\n }\n\n updateIntensitySettingsUniforms() {\n // compensate for the offset to only pass > 0 values to shaders\n // models > models.stack.js : _packTo8Bits\n let offset = 0;\n if (this._stack._minMax[0] < 0) {\n offset -= this._stack._minMax[0];\n }\n\n // set slice window center and width\n this._uniforms.uRescaleSlopeIntercept.value = [this._rescaleSlope, this._rescaleIntercept];\n this._uniforms.uWindowCenterWidth.value = [offset + this._windowCenter, this._windowWidth];\n\n // set slice opacity\n this._uniforms.uOpacity.value = this._opacity;\n\n // set slice upper/lower threshold\n this._uniforms.uLowerUpperThreshold.value = [\n offset + this._lowerThreshold,\n offset + this._upperThreshold,\n ];\n\n // invert\n this._uniforms.uInvert.value = this._invert === true ? 1 : 0;\n\n // interpolation\n this._uniforms.uInterpolation.value = this._interpolation;\n\n // lut\n if (this._lut === 'none') {\n this._uniforms.uLut.value = 0;\n } else {\n this._uniforms.uLut.value = 1;\n this._uniforms.uTextureLUT.value = this._lutTexture;\n }\n }\n\n updateIntensitySetting(setting) {\n if (this._stack.frame[this._index] && this._stack.frame[this._index][setting]) {\n this['_' + setting] = this._stack.frame[this._index][setting];\n } else {\n this['_' + setting] = this._stack[setting];\n }\n }\n\n _update() {\n // update slice\n if (this._mesh) {\n this.remove(this._mesh);\n this._mesh.geometry.dispose();\n this._mesh.geometry = null;\n // we do not want to dispose the texture!\n // this._mesh.material.dispose();\n // this._mesh.material = null;\n this._mesh = null;\n }\n\n this._create();\n }\n\n dispose() {\n // Release memory\n for (let j = 0; j < this._textures.length; j++) {\n this._textures[j].dispose();\n this._textures[j] = null;\n }\n this._textures = null;\n this._shadersFragment = null;\n this._shadersVertex = null;\n\n this._uniforms = null;\n\n // material, geometry and mesh\n this.remove(this._mesh);\n this._mesh.geometry.dispose();\n this._mesh.geometry = null;\n this._mesh.material.dispose();\n this._mesh.material = null;\n this._mesh = null;\n\n this._geometry.dispose();\n this._geometry = null;\n this._material.vertexShader = null;\n this._material.fragmentShader = null;\n this._material.uniforms = null;\n this._material.dispose();\n this._material = null;\n\n this._stack = null;\n }\n\n cartesianEquation() {\n // Make sure we have a geometry\n if (!this._geometry || !this._geometry.vertices || this._geometry.vertices.length < 3) {\n return new three.Vector4();\n }\n\n let vertices = this._geometry.vertices;\n let dataToWorld = this._stack.ijk2LPS;\n let p1 = new three.Vector3(vertices[0].x, vertices[0].y, vertices[0].z).applyMatrix4(\n dataToWorld\n );\n let p2 = new three.Vector3(vertices[1].x, vertices[1].y, vertices[1].z).applyMatrix4(\n dataToWorld\n );\n let p3 = new three.Vector3(vertices[2].x, vertices[2].y, vertices[2].z).applyMatrix4(\n dataToWorld\n );\n let v1 = new three.Vector3();\n let v2 = new three.Vector3();\n let normal = v1\n .subVectors(p3, p2)\n .cross(v2.subVectors(p1, p2))\n .normalize();\n\n return new three.Vector4(normal.x, normal.y, normal.z, -normal.dot(p1));\n }\n };\n};\n\nexport { helpersSlice };\nexport default helpersSlice();\n","/** * Imports ***/\nimport { helpersBorder } from '../helpers/helpers.border';\nimport { helpersBoundingBox } from '../helpers/helpers.boundingbox';\nimport { helpersSlice } from '../helpers/helpers.slice';\n\n/**\n * Helper to easily display and interact with a stack.
\n *
\n * Defaults:
\n * - orientation: 0 (acquisition direction)
\n * - index: middle slice in acquisition direction
\n *
\n * Features:
\n * - slice from the stack (in any direction)
\n * - slice border
\n * - stack bounding box
\n *
\n * Live demo at: {@link http://jsfiddle.net/gh/get/library/pure/fnndsc/ami/tree/master/lessons/01#run|Lesson 01}\n *\n * @example\n * let stack = new VJS.Models.Stack();\n * ... // prepare the stack\n *\n * let helpersStack = new VJS.Helpers.Stack(stack);\n * stackHelper.bbox.color = 0xF9F9F9;\n * stackHelper.border.color = 0xF9F9F9;\n *\n * let scene = new THREE.Scene();\n * scene.add(stackHelper);\n *\n * @see module:helpers/border\n * @see module:helpers/boundingbox\n * @see module:helpers/slice\n *\n * @module helpers/stack\n */\nconst helpersStack = (three = window.THREE) => {\n if (three === undefined || three.Object3D === undefined) {\n return null;\n }\n\n const Constructor = three.Object3D;\n return class extends Constructor {\n constructor(stack) {\n //\n super();\n\n this._stack = stack;\n this._bBox = null;\n this._slice = null;\n this._border = null;\n this._dummy = null;\n\n this._orientation = 0;\n this._index = 0;\n\n this._uniforms = null;\n this._autoWindowLevel = false;\n this._outOfBounds = false;\n this._orientationMaxIndex = 0;\n this._orientationSpacing = 0;\n\n this._canvasWidth = 0;\n this._canvasHeight = 0;\n this._borderColor = null;\n\n this._create();\n }\n\n /**\n * Get stack.\n *\n * @type {ModelsStack}\n */\n get stack() {\n return this._stack;\n }\n\n /**\n * Set stack.\n *\n * @type {ModelsStack}\n */\n set stack(stack) {\n this._stack = stack;\n }\n\n /**\n * Get bounding box helper.\n *\n * @type {HelpersBoundingBox}\n */\n get bbox() {\n return this._bBox;\n }\n\n /**\n * Get slice helper.\n *\n * @type {HelpersSlice}\n */\n get slice() {\n return this._slice;\n }\n\n /**\n * Get border helper.\n *\n * @type {HelpersSlice}\n */\n get border() {\n return this._border;\n }\n\n /**\n * Set/get current slice index.
\n * Sets outOfBounds flag to know if target index is in/out stack bounding box.
\n *
\n * Internally updates the sliceHelper index and position. Also updates the\n * borderHelper with the updated sliceHelper.\n *\n * @type {number}\n */\n get index() {\n return this._index;\n }\n\n set index(index) {\n this._index = index;\n\n // update the slice\n this._slice.index = index;\n let halfDimensions = this._stack.halfDimensionsIJK;\n this._slice.planePosition = this._prepareSlicePosition(halfDimensions, this._index);\n\n // also update the border\n this._border.helpersSlice = this._slice;\n\n // update ourOfBounds flag\n this._isIndexOutOfBounds();\n }\n\n /**\n * Set/get current slice orientation.
\n * Values:
\n * - 0: acquisition direction (slice normal is z_cosine)
\n * - 1: next direction (slice normal is x_cosine)
\n * - 2: next direction (slice normal is y_cosine)
\n * - n: set orientation to 0
\n *
\n * Internally updates the sliceHelper direction. Also updates the\n * borderHelper with the updated sliceHelper.\n *\n * @type {number}\n */\n set orientation(orientation) {\n this._orientation = orientation;\n this._computeOrientationMaxIndex();\n\n this._computeOrientationSpacing();\n this._slice.spacing = Math.abs(this._orientationSpacing);\n this._slice.thickness = this._slice.spacing;\n\n this._slice.planeDirection = this._prepareDirection(this._orientation);\n\n // also update the border\n this._border.helpersSlice = this._slice;\n }\n\n get orientation() {\n return this._orientation;\n }\n\n /**\n * Set/get the outOfBound flag.\n *\n * @type {boolean}\n */\n set outOfBounds(outOfBounds) {\n this._outOfBounds = outOfBounds;\n }\n\n get outOfBounds() {\n return this._outOfBounds;\n }\n\n /**\n * Set/get the orientationMaxIndex.\n *\n * @type {number}\n */\n set orientationMaxIndex(orientationMaxIndex) {\n this._orientationMaxIndex = orientationMaxIndex;\n }\n\n get orientationMaxIndex() {\n return this._orientationMaxIndex;\n }\n\n /**\n * Set/get the orientationSpacing.\n *\n * @type {number}\n */\n set orientationSpacing(orientationSpacing) {\n this._orientationSpacing = orientationSpacing;\n }\n\n get orientationSpacing() {\n return this._orientationSpacing;\n }\n\n set canvasWidth(canvasWidth) {\n this._canvasWidth = canvasWidth;\n this._slice.canvasWidth = this._canvasWidth;\n }\n\n get canvasWidth() {\n return this._canvasWidth;\n }\n\n set canvasHeight(canvasHeight) {\n this._canvasHeight = canvasHeight;\n this._slice.canvasHeight = this._canvasHeight;\n }\n\n get canvasHeight() {\n return this._canvasHeight;\n }\n\n set borderColor(borderColor) {\n this._borderColor = borderColor;\n this._border.color = borderColor;\n this._slice.borderColor = this._borderColor;\n }\n\n get borderColor() {\n return this._borderColor;\n }\n\n //\n // PRIVATE METHODS\n //\n\n /**\n * Initial setup, including stack prepare, bbox prepare, slice prepare and\n * border prepare.\n *\n * @private\n */\n _create() {\n if (this._stack) {\n // prepare sthe stack internals\n this._prepareStack();\n\n // prepare visual objects\n this._prepareBBox();\n this._prepareSlice();\n this._prepareBorder();\n // todo: Arrow\n } else {\n window.console.log('no stack to be prepared...');\n }\n }\n\n _computeOrientationSpacing() {\n let spacing = this._stack._spacing;\n switch (this._orientation) {\n case 0:\n this._orientationSpacing = spacing.z;\n break;\n case 1:\n this._orientationSpacing = spacing.x;\n break;\n case 2:\n this._orientationSpacing = spacing.y;\n break;\n default:\n this._orientationSpacing = 0;\n break;\n }\n }\n\n _computeOrientationMaxIndex() {\n let dimensionsIJK = this._stack.dimensionsIJK;\n this._orientationMaxIndex = 0;\n switch (this._orientation) {\n case 0:\n this._orientationMaxIndex = dimensionsIJK.z - 1;\n break;\n case 1:\n this._orientationMaxIndex = dimensionsIJK.x - 1;\n break;\n case 2:\n this._orientationMaxIndex = dimensionsIJK.y - 1;\n break;\n default:\n // do nothing!\n break;\n }\n }\n\n /**\n * Given orientation, check if index is in/out of bounds.\n *\n * @private\n */\n _isIndexOutOfBounds() {\n this._computeOrientationMaxIndex();\n if (this._index >= this._orientationMaxIndex || this._index < 0) {\n this._outOfBounds = true;\n } else {\n this._outOfBounds = false;\n }\n }\n\n /**\n * Prepare a stack for visualization. (image to world transform, frames order,\n * pack data into 8 bits textures, etc.)\n *\n * @private\n */\n _prepareStack() {\n // make sure there is something, if not throw an error\n // compute image to workd transform, order frames, etc.\n if (!this._stack.prepared) {\n this._stack.prepare();\n }\n // pack data into 8 bits rgba texture for the shader\n // this one can be slow...\n if (!this._stack.packed) {\n this._stack.pack();\n }\n }\n\n /**\n * Setup bounding box helper given prepared stack and add bounding box helper\n * to stack helper.\n *\n * @private\n */\n _prepareBBox() {\n const HelpersBoundingBoxConstructor = helpersBoundingBox(three);\n this._bBox = new HelpersBoundingBoxConstructor(this._stack);\n this.add(this._bBox);\n }\n\n /**\n * Setup border helper given slice helper and add border helper\n * to stack helper.\n *\n * @private\n */\n _prepareBorder() {\n const HelpersBorderContructor = helpersBorder(three);\n this._border = new HelpersBorderContructor(this._slice);\n this.add(this._border);\n }\n\n /**\n * Setup slice helper given prepared stack helper and add slice helper\n * to stack helper.\n *\n * @private\n */\n _prepareSlice() {\n let halfDimensionsIJK = this._stack.halfDimensionsIJK;\n // compute initial index given orientation\n this._index = this._prepareSliceIndex(halfDimensionsIJK);\n // compute initial position given orientation and index\n let position = this._prepareSlicePosition(halfDimensionsIJK, this._index);\n // compute initial direction orientation\n let direction = this._prepareDirection(this._orientation);\n\n const SliceHelperConstructor = helpersSlice(three);\n this._slice = new SliceHelperConstructor(this._stack, this._index, position, direction);\n this.add(this._slice);\n }\n\n /**\n * Compute slice index depending on orientation.\n *\n * @param {Vector3} indices - Indices in each direction.\n *\n * @returns {number} Slice index according to current orientation.\n *\n * @private\n */\n _prepareSliceIndex(indices) {\n let index = 0;\n switch (this._orientation) {\n case 0:\n index = Math.floor(indices.z);\n break;\n case 1:\n index = Math.floor(indices.x);\n break;\n case 2:\n index = Math.floor(indices.y);\n break;\n default:\n // do nothing!\n break;\n }\n return index;\n }\n\n /**\n * Compute slice position depending on orientation.\n * Sets index in proper location of reference position.\n *\n * @param {Vector3} rPosition - Reference position.\n * @param {number} index - Current index.\n *\n * @returns {number} Slice index according to current orientation.\n *\n * @private\n */\n _prepareSlicePosition(rPosition, index) {\n let position = new three.Vector3(0, 0, 0);\n switch (this._orientation) {\n case 0:\n position = new three.Vector3(Math.floor(rPosition.x), Math.floor(rPosition.y), index);\n break;\n case 1:\n position = new three.Vector3(index, Math.floor(rPosition.y), Math.floor(rPosition.z));\n break;\n case 2:\n position = new three.Vector3(Math.floor(rPosition.x), index, Math.floor(rPosition.z));\n break;\n default:\n // do nothing!\n break;\n }\n return position;\n }\n\n /**\n * Compute slice direction depending on orientation.\n *\n * @param {number} orientation - Slice orientation.\n *\n * @returns {Vector3} Slice direction\n *\n * @private\n */\n _prepareDirection(orientation) {\n let direction = new three.Vector3(0, 0, 1);\n switch (orientation) {\n case 0:\n direction = new three.Vector3(0, 0, 1);\n break;\n case 1:\n direction = new three.Vector3(1, 0, 0);\n break;\n case 2:\n direction = new three.Vector3(0, 1, 0);\n break;\n default:\n // do nothing!\n break;\n }\n\n return direction;\n }\n\n /**\n * Release the stack helper memory including the slice memory.\n *\n * @public\n */\n dispose() {\n this.remove(this._slice);\n this._slice.dispose();\n this._slice = null;\n this._bBox.dispose();\n this._bBox = null;\n this._border.dispose();\n this._border = null;\n }\n };\n};\n\n// export factory\nexport { helpersStack };\n// default export to\nexport default helpersStack();\n","/** * Imports ***/\nimport ShadersUniform from '../shaders/shaders.vr.uniform';\nimport ShadersVertex from '../shaders/shaders.vr.vertex';\nimport ShadersFragment from '../shaders/shaders.vr.fragment';\n\nimport { helpersMaterialMixin } from '../helpers/helpers.material.mixin';\n\n/**\n * @module helpers/volumerendering\n */\n\nconst helpersVolumeRendering = (three = window.THREE) => {\n if (three === undefined || three.Object3D === undefined) {\n return null;\n }\n\n const Constructor = helpersMaterialMixin(three);\n return class extends Constructor {\n constructor(stack) {\n //\n super();\n\n this._stack = stack;\n this._textures = [];\n this._shadersFragment = ShadersFragment;\n this._shadersVertex = ShadersVertex;\n this._uniforms = ShadersUniform.uniforms();\n this._material = null;\n this._geometry = null;\n this._mesh = null;\n\n this._algorithm = 0; // ray marching\n this._alphaCorrection = 0.5; // default\n this._interpolation = 1; // default to trilinear interpolation\n this._shading = 1; // shading is on by default\n this._shininess = 10.0;\n this._steps = 256; // default\n this._offset = 0;\n this._windowCenter = 0.0;\n this._windowWidth = 1.0;\n\n this._create();\n }\n\n _create() {\n this._prepareStack();\n this._prepareTexture();\n this._prepareMaterial();\n this._prepareGeometry();\n\n this._mesh = new three.Mesh(this._geometry, this._material);\n this.add(this._mesh);\n }\n\n _prepareStack() {\n if (!this._stack.prepared) {\n this._stack.prepare();\n }\n\n if (!this._stack.packed) {\n this._stack.pack();\n }\n\n // compensate for the offset to only pass > 0 values to shaders\n // models > models.stack.js : _packTo8Bits\n this._offset = Math.min(0, this._stack._minMax[0]);\n this._windowCenter = this._stack.windowCenter;\n this._windowWidth = this._stack.windowWidth * 0.8; // multiply for better default visualization\n }\n\n _prepareMaterial() {\n // uniforms\n this._uniforms = ShadersUniform.uniforms();\n this._uniforms.uWorldBBox.value = this._stack.worldBoundingBox();\n this._uniforms.uTextureSize.value = this._stack.textureSize;\n this._uniforms.uTextureContainer.value = this._textures;\n if (this._stack.textureUnits > 8) {\n this._uniforms.uTextureContainer.length = 14;\n }\n this._uniforms.uWorldToData.value = this._stack.lps2IJK;\n this._uniforms.uNumberOfChannels.value = this._stack.numberOfChannels;\n this._uniforms.uPixelType.value = this._stack.pixelType;\n this._uniforms.uBitsAllocated.value = this._stack.bitsAllocated;\n this._uniforms.uPackedPerPixel.value = this._stack.packedPerPixel;\n this._uniforms.uWindowCenterWidth.value = [\n this._windowCenter - this._offset,\n this._windowWidth,\n ];\n this._uniforms.uRescaleSlopeIntercept.value = [\n this._stack.rescaleSlope,\n this._stack.rescaleIntercept,\n ];\n this._uniforms.uDataDimensions.value = [\n this._stack.dimensionsIJK.x,\n this._stack.dimensionsIJK.y,\n this._stack.dimensionsIJK.z,\n ];\n this._uniforms.uAlphaCorrection.value = this._alphaCorrection;\n this._uniforms.uInterpolation.value = this._interpolation;\n this._uniforms.uShading.value = this._shading;\n this._uniforms.uShininess.value = this._shininess;\n this._uniforms.uSteps.value = this._steps;\n this._uniforms.uAlgorithm.value = this._algorithm;\n\n this._createMaterial({\n side: three.BackSide,\n transparent: true,\n });\n }\n\n _prepareGeometry() {\n let worldBBox = this._stack.worldBoundingBox();\n let centerLPS = this._stack.worldCenter();\n\n this._geometry = new three.BoxGeometry(\n worldBBox[1] - worldBBox[0],\n worldBBox[3] - worldBBox[2],\n worldBBox[5] - worldBBox[4]\n );\n this._geometry.applyMatrix4(\n new three.Matrix4().makeTranslation(centerLPS.x, centerLPS.y, centerLPS.z)\n );\n }\n\n get uniforms() {\n return this._uniforms;\n }\n\n set uniforms(uniforms) {\n this._uniforms = uniforms;\n }\n\n set mesh(mesh) {\n this._mesh = mesh;\n }\n\n get mesh() {\n return this._mesh;\n }\n\n get stack() {\n return this._stack;\n }\n\n set stack(stack) {\n this._stack = stack;\n }\n\n get windowCenter() {\n return this._windowCenter;\n }\n\n set windowCenter(windowCenter) {\n this._windowCenter = windowCenter;\n this._uniforms.uWindowCenterWidth.value[0] = this._windowCenter - this._offset;\n }\n\n get windowWidth() {\n return this._windowWidth;\n }\n\n set windowWidth(windowWidth) {\n this._windowWidth = Math.max(1, windowWidth);\n this._uniforms.uWindowCenterWidth.value[1] = this._windowWidth;\n }\n\n get steps() {\n return this._steps;\n }\n\n set steps(steps) {\n this._steps = steps;\n this._uniforms.uSteps.value = this._steps;\n }\n\n get alphaCorrection() {\n return this._alphaCorrection;\n }\n\n set alphaCorrection(alphaCorrection) {\n this._alphaCorrection = alphaCorrection;\n this._uniforms.uAlphaCorrection.value = this._alphaCorrection;\n }\n\n get interpolation() {\n return this._interpolation;\n }\n\n set interpolation(interpolation) {\n this._interpolation = interpolation;\n this._uniforms.uInterpolation.value = this._interpolation;\n this._updateMaterial();\n }\n\n get shading() {\n return this._shading;\n }\n\n set shading(shading) {\n this._shading = shading;\n this._uniforms.uShading.value = this._shading;\n }\n\n get shininess() {\n return this._shininess;\n }\n\n set shininess(shininess) {\n this._shininess = shininess;\n this._uniforms.uShininess.value = this._shininess;\n }\n\n get algorithm() {\n return this._algorithm;\n }\n\n set algorithm(algorithm) {\n this._algorithm = algorithm;\n this._uniforms.uAlgorithm.value = this._algorithm;\n }\n\n dispose() {\n // Release memory\n for (let j = 0; j < this._textures.length; j++) {\n this._textures[j].dispose();\n this._textures[j] = null;\n }\n this._textures = null;\n this._shadersFragment = null;\n this._shadersVertex = null;\n\n this._uniforms.uTextureContainer = null;\n this._uniforms.uTextureLUT = null;\n this._uniforms = null;\n\n // material, geometry and mesh\n this.remove(this._mesh);\n this._mesh.geometry.dispose();\n this._mesh.geometry = null;\n this._mesh.material.dispose();\n this._mesh.material = null;\n this._mesh = null;\n\n this._geometry.dispose();\n this._geometry = null;\n this._material.vertexShader = null;\n this._material.fragmentShader = null;\n this._material.uniforms = null;\n this._material.dispose();\n this._material = null;\n\n this._stack = null;\n }\n };\n};\n\nexport { helpersVolumeRendering };\nexport default helpersVolumeRendering();\n","/** Imports **/\nimport HelpersProgressBar from '../helpers/helpers.progressbar';\nimport EventEmitter from 'events';\n\n/**\n *\n * It is typically used to load a DICOM image. Use loading manager for\n * advanced usage, such as multiple files handling.\n *\n * Demo: {@link https://fnndsc.github.io/vjs#loader_dicom}\n *\n * @module loaders/base\n * @extends EventEmitter\n * @example\n * var files = ['/data/dcm/fruit'];\n *\n * // Instantiate a dicom loader\n * var lDicomoader = new dicom();\n *\n * // load a resource\n * loader.load(\n * // resource URL\n * files[0],\n * // Function when resource is loaded\n * function(object) {\n * //scene.add( object );\n * window.console.log(object);\n * }\n * );\n */\nexport default class LoadersBase extends EventEmitter {\n /**\n * Create a Loader.\n * @param {dom} container - The dom container of loader.\n * @param {object} ProgressBar - The progressbar of loader.\n */\n constructor(container = null, ProgressBar = HelpersProgressBar) {\n super();\n this._loaded = -1;\n this._totalLoaded = -1;\n this._parsed = -1;\n this._totalParsed = -1;\n\n this._data = [];\n\n this._container = container;\n this._progressBar = null;\n if (this._container && ProgressBar) {\n this._progressBar = new ProgressBar(this._container);\n }\n }\n\n /**\n * free the reference.\n */\n free() {\n this._data = [];\n this._container = null;\n // this._helpersProgressBar = null;\n\n if (this._progressBar) {\n this._progressBar.free();\n this._progressBar = null;\n }\n }\n\n /**\n * load the resource by url.\n * @param {string} url - resource url.\n * @param {Map} requests - used for cancellation.\n * @return {promise} promise.\n */\n fetch(url, requests) {\n return new Promise((resolve, reject) => {\n const request = new XMLHttpRequest();\n request.open('GET', url);\n request.crossOrigin = true;\n request.responseType = 'arraybuffer';\n\n request.onloadstart = event => {\n // emit 'fetch-start' event\n this.emit('fetch-start', {\n file: url,\n time: new Date(),\n });\n };\n\n request.onload = event => {\n if (request.status === 200 || request.status === 0) {\n this._loaded = event.loaded;\n this._totalLoaded = event.total;\n\n // will be removed after eventer set up\n if (this._progressBar) {\n this._progressBar.update(this._loaded, this._totalLoaded, 'load', url);\n }\n\n let buffer = request.response;\n let response = {\n url,\n buffer,\n };\n\n // emit 'fetch-success' event\n this.emit('fetch-success', {\n file: url,\n time: new Date(),\n totalLoaded: event.total,\n });\n\n resolve(response);\n } else {\n reject(request.statusText);\n }\n };\n\n request.onerror = () => {\n // emit 'fetch-error' event\n this.emit('fetch-error', {\n file: url,\n time: new Date(),\n });\n\n reject(request.statusText);\n };\n\n request.onabort = event => {\n // emit 'fetch-abort' event\n this.emit('fetch-abort', {\n file: url,\n time: new Date(),\n });\n\n reject(request.statusText || 'Aborted');\n };\n\n request.ontimeout = () => {\n // emit 'fetch-timeout' event\n this.emit('fetch-timeout', {\n file: url,\n time: new Date(),\n });\n\n reject(request.statusText);\n };\n\n request.onprogress = event => {\n this._loaded = event.loaded;\n this._totalLoaded = event.total;\n // emit 'fetch-progress' event\n this.emit('fetch-progress', {\n file: url,\n total: event.total,\n loaded: event.loaded,\n time: new Date(),\n });\n // will be removed after eventer set up\n if (this._progressBar) {\n this._progressBar.update(this._loaded, this._totalLoaded, 'load', url);\n }\n };\n\n request.onloadend = event => {\n // emit 'fetch-end' event\n this.emit('fetch-end', {\n file: url,\n time: new Date(),\n });\n // just use onload when success and onerror when failure, etc onabort\n // reject(request.statusText);\n };\n\n if (requests instanceof Map) {\n requests.set(url, request);\n }\n\n request.send();\n });\n }\n\n /**\n * parse the data loaded\n * SHOULD BE implementd by detail loader.\n * @param {object} response - loaded data.\n * @return {promise} promise.\n */\n parse(response) {\n return new Promise((resolve, reject) => {\n resolve(response);\n });\n }\n\n /**\n * default load sequence group promise.\n * @param {array} url - resource url.\n * @param {Map} requests - used for cancellation.\n * @return {promise} promise.\n */\n loadSequenceGroup(url, requests) {\n const fetchSequence = [];\n\n url.forEach(file => {\n fetchSequence.push(this.fetch(file, requests));\n });\n\n return Promise.all(fetchSequence)\n .then(rawdata => {\n return this.parse(rawdata);\n })\n .then(data => {\n this._data.push(data);\n return data;\n })\n .catch(function(error) {\n if (error === 'Aborted') {\n return;\n }\n window.console.log('oops... something went wrong...');\n window.console.log(error);\n });\n }\n\n /**\n * default load sequence promise.\n * @param {string} url - resource url.\n * @param {Map} requests - used for cancellation.\n * @return {promise} promise.\n */\n loadSequence(url, requests) {\n return this.fetch(url, requests)\n .then(rawdata => {\n return this.parse(rawdata);\n })\n .then(data => {\n this._data.push(data);\n return data;\n })\n .catch(function(error) {\n if (error === 'Aborted') {\n return;\n }\n window.console.log('oops... something went wrong...');\n window.console.log(error);\n });\n }\n\n /**\n * load the data by url(urls)\n * @param {string|array} url - resource url.\n * @param {Map} requests - used for cancellation.\n * @return {promise} promise\n */\n load(url, requests) {\n // if we load a single file, convert it to an array\n if (!Array.isArray(url)) {\n url = [url];\n }\n\n if (this._progressBar) {\n this._progressBar.totalFiles = url.length;\n this._progressBar.requests = requests;\n }\n\n // emit 'load-start' event\n this.emit('load-start', {\n files: url,\n time: new Date(),\n });\n\n const loadSequences = [];\n url.forEach(file => {\n if (!Array.isArray(file)) {\n loadSequences.push(this.loadSequence(file, requests));\n } else {\n loadSequences.push(this.loadSequenceGroup(file, requests));\n }\n });\n return Promise.all(loadSequences);\n }\n\n /**\n * Set data\n * @param {array} data\n */\n set data(data) {\n this._data = data;\n }\n\n /**\n * Get data\n * @return {array} data loaded\n */\n get data() {\n return this._data;\n }\n}\n","import Volume from './loaders.volume';\n\nexport { Volume as VolumeLoader };\n","/** * Imports ***/\nconst PAKO = require('pako');\n\nimport LoadersBase from './loaders.base';\nimport CoreUtils from '../core/core.utils';\nimport ModelsSeries from '../models/models.series';\nimport ModelsStack from '../models/models.stack';\nimport ModelsFrame from '../models/models.frame';\nimport ParsersDicom from '../parsers/parsers.dicom';\nimport ParsersMhd from '../parsers/parsers.mhd';\nimport ParsersNifti from '../parsers/parsers.nifti';\nimport ParsersNrrd from '../parsers/parsers.nrrd';\nimport ParsersMgh from '../parsers/parsers.mgh';\n\n/**\n *\n * It is typically used to load a DICOM image. Use loading manager for\n * advanced usage, such as multiple files handling.\n *\n * Demo: {@link https://fnndsc.github.io/vjs#loader_dicom}\n *\n * @module loaders/volumes\n * @example\n * var files = ['/data/dcm/fruit'];\n *\n * // Instantiate a dicom loader\n * var lDicomoader = new dicom();\n *\n * // load a resource\n * loader.load(\n * // resource URL\n * files[0],\n * // Function when resource is loaded\n * function(object) {\n * //scene.add( object );\n * console.log(object);\n * }\n * );\n */\nexport default class LoadersVolumes extends LoadersBase {\n /**\n * Parse response.\n * response is formated as:\n * {\n * url: 'resource url',\n * buffer: xmlresponse,\n * }\n * @param {object} response - response\n * @return {promise} promise\n */\n parse(response) {\n // emit 'parse-start' event\n this.emit('parse-start', {\n file: response.url,\n time: new Date(),\n });\n\n // give a chance to the UI to update because\n // after the rendering will be blocked with intensive JS\n // will be removed after eventer set up\n if (this._progressBar) {\n this._progressBar.update(0, 100, 'parse', response.url);\n }\n\n return new Promise((resolve, reject) => {\n setTimeout(() => {\n resolve(\n new Promise((resolve, reject) => {\n let data = response;\n\n if (!Array.isArray(data)) {\n data = [data];\n }\n\n data.forEach(dataset => {\n this._preprocess(dataset);\n });\n\n if (data.length === 1) {\n data = data[0];\n } else {\n // if raw/mhd pair\n let mhdFile = data.filter(this._filterByExtension.bind(null, 'MHD'));\n let rawFile = data.filter(this._filterByExtension.bind(null, 'RAW'));\n if (data.length === 2 && mhdFile.length === 1 && rawFile.length === 1) {\n data.url = mhdFile[0].url;\n data.extension = mhdFile[0].extension;\n data.mhdBuffer = mhdFile[0].buffer;\n data.rawBuffer = rawFile[0].buffer;\n }\n }\n\n let Parser = this._parser(data.extension);\n if (!Parser) {\n // emit 'parse-error' event\n this.emit('parse-error', {\n file: response.url,\n time: new Date(),\n error: data.filename + 'can not be parsed.',\n });\n reject(data.filename + ' can not be parsed.');\n }\n\n // check extension\n let volumeParser = null;\n try {\n volumeParser = new Parser(data, 0);\n } catch (e) {\n console.warn(e);\n // emit 'parse-error' event\n this.emit('parse-error', {\n file: response.url,\n time: new Date(),\n error: e,\n });\n reject(e);\n }\n\n // create a series\n let series = new ModelsSeries();\n series.rawHeader = volumeParser.rawHeader();\n // global information\n series.seriesInstanceUID = volumeParser.seriesInstanceUID();\n series.transferSyntaxUID = volumeParser.transferSyntaxUID();\n series.seriesDate = volumeParser.seriesDate();\n series.seriesDescription = volumeParser.seriesDescription();\n series.studyDate = volumeParser.studyDate();\n series.studyDescription = volumeParser.studyDescription();\n series.numberOfFrames = volumeParser.numberOfFrames();\n if (!series.numberOfFrames) {\n series.numberOfFrames = 1;\n }\n series.numberOfChannels = volumeParser.numberOfChannels();\n series.modality = volumeParser.modality();\n // if it is a segmentation, attach extra information\n if (series.modality === 'SEG') {\n // colors\n // labels\n // etc.\n series.segmentationType = volumeParser.segmentationType();\n series.segmentationSegments = volumeParser.segmentationSegments();\n }\n // patient information\n series.patientID = volumeParser.patientID();\n series.patientName = volumeParser.patientName();\n series.patientAge = volumeParser.patientAge();\n series.patientBirthdate = volumeParser.patientBirthdate();\n series.patientSex = volumeParser.patientSex();\n\n // just create 1 dummy stack for now\n let stack = new ModelsStack();\n stack.numberOfChannels = volumeParser.numberOfChannels();\n stack.pixelRepresentation = volumeParser.pixelRepresentation();\n stack.pixelType = volumeParser.pixelType();\n stack.invert = volumeParser.invert();\n stack.spacingBetweenSlices = volumeParser.spacingBetweenSlices();\n stack.modality = series.modality;\n // if it is a segmentation, attach extra information\n if (stack.modality === 'SEG') {\n // colors\n // labels\n // etc.\n stack.segmentationType = series.segmentationType;\n stack.segmentationSegments = series.segmentationSegments;\n }\n series.stack.push(stack);\n // recursive call for each frame\n // better than for loop to be able\n // to update dom with \"progress\" callback\n setTimeout(\n this.parseFrameClosure(series, stack, response.url, 0, volumeParser, resolve, reject),\n 0\n );\n })\n );\n }, 10);\n });\n }\n\n parseFrameClosure(series, stack, url, i, dataParser, resolve, reject) {\n return () => {\n this.parseFrame(series, stack, url, i, dataParser, resolve, reject);\n };\n }\n\n /**\n * recursive parse frame\n * @param {ModelsSeries} series - data series\n * @param {ModelsStack} stack - data stack\n * @param {string} url - resource url\n * @param {number} i - frame index\n * @param {parser} dataParser - selected parser\n * @param {promise.resolve} resolve - promise resolve args\n * @param {promise.reject} reject - promise reject args\n */\n parseFrame(series, stack, url, i, dataParser, resolve, reject) {\n let frame = new ModelsFrame();\n frame.sopInstanceUID = dataParser.sopInstanceUID(i);\n frame.url = url;\n frame.index = i;\n frame.invert = stack.invert;\n frame.frameTime = dataParser.frameTime(i);\n frame.ultrasoundRegions = dataParser.ultrasoundRegions(i);\n frame.rows = dataParser.rows(i);\n frame.columns = dataParser.columns(i);\n frame.numberOfChannels = stack.numberOfChannels;\n frame.pixelPaddingValue = dataParser.pixelPaddingValue(i);\n frame.pixelRepresentation = stack.pixelRepresentation;\n frame.pixelType = stack.pixelType;\n frame.pixelData = dataParser.extractPixelData(i);\n frame.pixelSpacing = dataParser.pixelSpacing(i);\n frame.spacingBetweenSlices = dataParser.spacingBetweenSlices(i);\n frame.sliceThickness = dataParser.sliceThickness(i);\n frame.imageOrientation = dataParser.imageOrientation(i);\n frame.rightHanded = dataParser.rightHanded();\n stack.rightHanded = frame.rightHanded;\n if (frame.imageOrientation === null) {\n frame.imageOrientation = [1, 0, 0, 0, 1, 0];\n }\n frame.imagePosition = dataParser.imagePosition(i);\n /*\n null ImagePosition should not be handle here\n if (frame.imagePosition === null) {\n frame.imagePosition = [0, 0, i];\n }*/\n frame.dimensionIndexValues = dataParser.dimensionIndexValues(i);\n frame.bitsAllocated = dataParser.bitsAllocated(i);\n frame.instanceNumber = dataParser.instanceNumber(i);\n frame.windowCenter = dataParser.windowCenter(i);\n frame.windowWidth = dataParser.windowWidth(i);\n frame.rescaleSlope = dataParser.rescaleSlope(i);\n frame.rescaleIntercept = dataParser.rescaleIntercept(i);\n // should pass frame index for consistency...\n frame.minMax = dataParser.minMaxPixelData(frame.pixelData);\n\n // if series.mo\n if (series.modality === 'SEG') {\n frame.referencedSegmentNumber = dataParser.referencedSegmentNumber(i);\n }\n\n stack.frame.push(frame);\n\n // update status\n this._parsed = i + 1;\n this._totalParsed = series.numberOfFrames;\n\n // will be removed after eventer set up\n if (this._progressBar) {\n this._progressBar.update(this._parsed, this._totalParsed, 'parse', url);\n }\n\n // emit 'parsing' event\n this.emit('parsing', {\n file: url,\n total: this._totalParsed,\n parsed: this._parsed,\n time: new Date(),\n });\n\n if (this._parsed === this._totalParsed) {\n // emit 'parse-success' event\n this.emit('parse-success', {\n file: url,\n total: this._totalParsed,\n parsed: this._parsed,\n time: new Date(),\n });\n\n resolve(series);\n } else {\n setTimeout(\n this.parseFrameClosure(series, stack, url, this._parsed, dataParser, resolve, reject),\n 0\n );\n }\n }\n\n /**\n * Return parser given an extension\n * @param {string} extension - extension\n * @return {parser} selected parser\n */\n _parser(extension) {\n let Parser = null;\n\n switch (extension.toUpperCase()) {\n case 'NII':\n case 'NII_':\n Parser = ParsersNifti;\n break;\n case 'DCM':\n case 'DIC':\n case 'DICOM':\n case 'IMA':\n case '':\n Parser = ParsersDicom;\n break;\n case 'MHD':\n Parser = ParsersMhd;\n break;\n case 'NRRD':\n Parser = ParsersNrrd;\n break;\n case 'MGH':\n case 'MGZ':\n Parser = ParsersMgh;\n break;\n default:\n console.warn('unsupported extension: ' + extension);\n return false;\n }\n return Parser;\n }\n\n /**\n * Pre-process data to be parsed (find data type and de-compress)\n * @param {*} data\n */\n _preprocess(data) {\n const parsedUrl = CoreUtils.parseUrl(data.url);\n // update data\n data.filename = parsedUrl.filename;\n data.extension = parsedUrl.extension;\n data.pathname = parsedUrl.pathname;\n data.query = parsedUrl.query;\n\n // unzip if extension is '.gz'\n if (data.extension === 'gz') {\n data.gzcompressed = true;\n data.extension = data.filename\n .split('.gz')\n .shift()\n .split('.')\n .pop();\n } else if (data.extension === 'mgz') {\n data.gzcompressed = true;\n data.extension = 'mgh';\n } else if (data.extension === 'zraw') {\n data.gzcompressed = true;\n data.extension = 'raw';\n } else {\n data.gzcompressed = false;\n }\n\n if (data.gzcompressed) {\n let decompressedData = PAKO.inflate(data.buffer);\n data.buffer = decompressedData.buffer;\n }\n }\n\n /**\n * Filter data by extension\n * @param {*} extension\n * @param {*} item\n * @returns Boolean\n */\n _filterByExtension(extension, item) {\n if (item.extension.toUpperCase() === extension.toUpperCase()) {\n return true;\n }\n return false;\n }\n}\n","/**\n * Base object.\n *\n * @module models/base\n */\n\nexport default class ModelsBase {\n constructor() {\n this._id = -1;\n }\n /**\n * Merge 2 arrays of models.\n * Merge the target array into the reference array.\n *\n * @param {Array.} referenceArray - Array to be merge against\n * @param {Array.} targetArray - Array to be merged against reference.\n *\n * @return {boolean} True if merge was sucessful. False if something went wrong.\n */\n mergeModels(referenceArray, targetArray) {\n if (!(this._validateModelArray(referenceArray) && this._validateModelArray(targetArray))) {\n window.console.log('invalid inputs provided.');\n return false;\n }\n\n for (let i = 0, targetLength = targetArray.length; i < targetLength; i++) {\n // test targetArray against existing targetArray\n for (let j = 0, refLength = referenceArray.length; j < refLength; j++) {\n if (referenceArray[j].merge(targetArray[i])) {\n // merged successfully\n break;\n } else if (j === referenceArray.length - 1) {\n // last merge was not successful\n // this is a new targetArray\n referenceArray.push(targetArray[i]);\n }\n }\n }\n\n return true;\n }\n\n /**\n * Merge model against current model.\n */\n merge(model) {\n // make sure model is valid\n if (!this.validate(model)) {\n return false;\n }\n\n // they can be merged if they match\n if (this._id === model._id) {\n return true;\n }\n return false;\n }\n\n /**\n * Validate a model.\n *\n * @return {boolean} True if model is valid. False if not.\n */\n validate(model) {\n if (!(model && model !== null && typeof model.merge === 'function')) {\n return false;\n }\n\n return true;\n }\n\n /**\n * Validate array of models.\n *\n * @param {Array.} modelArray - Array containing models.\n *\n * @return {boolean} True if array is valid. False if not.\n */\n _validateModelArray(modelArray) {\n if (!(modelArray !== null && Array === modelArray.constructor)) {\n window.console.log('invalid model array provided.');\n return false;\n }\n\n for (let i = 0; i < modelArray.length; i++) {\n if (\n !(\n modelArray[i] &&\n modelArray[i] !== null &&\n typeof modelArray[i].validate === 'function' &&\n modelArray[i].validate(modelArray[i])\n )\n ) {\n return false;\n }\n }\n\n return true;\n }\n}\n","/** * Imports ***/\nimport ModelsBase from '../models/models.base';\n\nimport { Vector3 } from 'three/src/math/Vector3';\n\n/**\n * Frame object.\n *\n * @module models/frame\n */\nexport default class ModelsFrame extends ModelsBase {\n /**\n * Constructor\n */\n constructor() {\n super();\n\n this._sopInstanceUID = null;\n this._url = null;\n this._stackID = -1;\n this._invert = false;\n this._frameTime = null;\n this._ultrasoundRegions = [];\n this._rows = 0;\n this._columns = 0;\n this._dimensionIndexValues = [];\n this._imagePosition = null;\n this._imageOrientation = null;\n this._rightHanded = true;\n this._sliceThickness = 1;\n this._spacingBetweenSlices = null;\n this._pixelPaddingValue = null;\n this._pixelRepresentation = 0;\n this._pixelType = 0;\n this._pixelSpacing = null;\n this._pixelAspectRatio = null;\n this._pixelData = null;\n\n this._instanceNumber = null;\n this._windowCenter = null;\n this._windowWidth = null;\n this._rescaleSlope = null;\n this._rescaleIntercept = null;\n\n this._bitsAllocated = 8;\n this._numberOfChannels = 1;\n\n this._minMax = null;\n this._dist = null;\n\n this._index = -1;\n\n this._referencedSegmentNumber = -1;\n }\n\n /**\n * Validate the frame.\n *\n * @param {*} model\n *\n * @return {*}\n */\n validate(model) {\n if (\n !(\n super.validate(model) &&\n typeof model.cosines === 'function' &&\n typeof model.spacingXY === 'function' &&\n model.hasOwnProperty('_sopInstanceUID') &&\n model.hasOwnProperty('_dimensionIndexValues') &&\n model.hasOwnProperty('_imageOrientation') &&\n model.hasOwnProperty('_imagePosition')\n )\n ) {\n return false;\n }\n\n return true;\n }\n\n /**\n * Merge current frame with provided frame.\n *\n * Frames can be merged (i.e. are identical) if following are equals:\n * - dimensionIndexValues\n * - imageOrientation\n * - imagePosition\n * - instanceNumber\n * - sopInstanceUID\n *\n * @param {*} frame\n *\n * @return {boolean} True if frames could be merge. False if not.\n */\n merge(frame) {\n if (!this.validate(frame)) {\n return false;\n }\n\n if (\n this._compareArrays(this._dimensionIndexValues, frame.dimensionIndexValues) &&\n this._compareArrays(this._imageOrientation, frame.imageOrientation) &&\n this._compareArrays(this._imagePosition, frame.imagePosition) &&\n this._instanceNumber === frame.instanceNumber &&\n this._sopInstanceUID === frame.sopInstanceUID\n ) {\n return true;\n } else {\n return false;\n }\n }\n\n /**\n * Generate X, y and Z cosines from image orientation\n * Returns default orientation if _imageOrientation was invalid.\n *\n * @returns {array} Array[3] containing cosinesX, Y and Z.\n */\n cosines() {\n let cosines = [new Vector3(1, 0, 0), new Vector3(0, 1, 0), new Vector3(0, 0, 1)];\n\n if (this._imageOrientation && this._imageOrientation.length === 6) {\n let xCos = new Vector3(\n this._imageOrientation[0],\n this._imageOrientation[1],\n this._imageOrientation[2]\n );\n let yCos = new Vector3(\n this._imageOrientation[3],\n this._imageOrientation[4],\n this._imageOrientation[5]\n );\n\n if (xCos.length() > 0 && yCos.length() > 0) {\n cosines[0] = xCos;\n cosines[1] = yCos;\n cosines[2] = new Vector3(0, 0, 0).crossVectors(cosines[0], cosines[1]).normalize();\n }\n } else {\n window.console.log('No valid image orientation for frame');\n window.console.log(this);\n window.console.log('Returning default orientation.');\n }\n\n if (!this._rightHanded) {\n cosines[2].negate();\n }\n\n return cosines;\n }\n\n /**\n * Get x/y spacing of a frame.\n *\n * @return {*}\n */\n spacingXY() {\n let spacingXY = [1.0, 1.0];\n\n if (this.pixelSpacing) {\n spacingXY[0] = this.pixelSpacing[0];\n\n spacingXY[1] = this.pixelSpacing[1];\n } else if (this.pixelAspectRatio) {\n spacingXY[0] = 1.0;\n spacingXY[1] = (1.0 * this.pixelAspectRatio[1]) / this.pixelAspectRatio[0];\n }\n\n return spacingXY;\n }\n\n /**\n * Get data value\n *\n * @param {*} column\n * @param {*} row\n * @return {*}\n */\n getPixelData(column, row) {\n if (column >= 0 && column < this._columns && row >= 0 && row < this._rows) {\n return this.pixelData[column + this._columns * row];\n } else {\n return null;\n }\n }\n /**\n * Set data value\n *\n * @param {*} column\n * @param {*} row\n * @param {*} value\n * @return {*}\n */\n setPixelData(column, row, value) {\n this.pixelData[column + this._columns * row] = value;\n }\n\n /**\n * Get frame preview as data:URL\n *\n * @return {String}\n */\n getImageDataUrl() {\n const canvas = document.createElement('canvas');\n canvas.width = this._columns;\n canvas.height = this._rows;\n\n const context = canvas.getContext('2d');\n\n const imageData = context.createImageData(canvas.width, canvas.height);\n\n imageData.data.set(this._frameToCanvas());\n context.putImageData(imageData, 0, 0);\n\n return canvas.toDataURL();\n }\n\n /**\n * Convert frame.pixelData to canvas.context.imageData.data\n *\n * @return {Uint8Array}\n */\n _frameToCanvas() {\n const dimension = this._columns * this._rows;\n\n const params = {\n invert: this._invert,\n min: this._minMax[0],\n padding: this._pixelPaddingValue,\n };\n let data = new Uint8Array(dimension * 4);\n\n if (params.padding !== null) {\n // recalculation of min ignoring pixelPaddingValue\n params.min = this._minMax[1];\n for (let index = 0, numPixels = this._pixelData.length; index < numPixels; index++) {\n if (this._pixelData[index] !== params.padding) {\n params.min = Math.min(params.min, this._pixelData[index]);\n }\n }\n }\n\n if (this._windowWidth && this._windowCenter !== null) {\n // applying windowCenter and windowWidth\n const intercept = this._rescaleIntercept || 0;\n\n const slope = this._rescaleSlope || 1;\n\n params.min = Math.max(\n (this._windowCenter - this._windowWidth / 2 - intercept) / slope,\n params.min\n );\n params.max = Math.min(\n (this._windowCenter + this._windowWidth / 2 - intercept) / slope,\n this._minMax[1]\n );\n } else {\n params.max = this._minMax[1];\n }\n\n params.range = params.max - params.min || 255; // if max is 0 convert it to: 255 - black, 1 - white\n\n if (this._numberOfChannels === 1) {\n for (let i = 0; i < dimension; i++) {\n const normalized = this._pixelTo8Bit(this._pixelData[i], params);\n data[4 * i] = normalized;\n data[4 * i + 1] = normalized;\n data[4 * i + 2] = normalized;\n data[4 * i + 3] = 255; // alpha channel (fully opaque)\n }\n } else if (this._numberOfChannels === 3) {\n for (let i = 0; i < dimension; i++) {\n data[4 * i] = this._pixelTo8Bit(this._pixelData[3 * i], params);\n data[4 * i + 1] = this._pixelTo8Bit(this._pixelData[3 * i + 1], params);\n data[4 * i + 2] = this._pixelTo8Bit(this._pixelData[3 * i + 2], params);\n data[4 * i + 3] = 255; // alpha channel (fully opaque)\n }\n }\n\n return data;\n }\n\n /**\n * Convert pixel value to 8 bit (canvas.context.imageData.data: maximum 8 bit per each of RGBA value)\n *\n * @param {Number} value Pixel value\n * @param {Object} params {invert, min, mix, padding, range}\n *\n * @return {Number}\n */\n _pixelTo8Bit(value, params) {\n // values equal to pixelPaddingValue are outside of the image and should be ignored\n let packedValue = value <= params.min || value === params.padding ? 0 : 255;\n\n if (value > params.min && value < params.max) {\n packedValue = Math.round(((value - params.min) * 255) / params.range);\n }\n\n return Number.isNaN(packedValue) ? 0 : params.invert ? 255 - packedValue : packedValue;\n }\n\n /**\n * Compare 2 arrays.\n *\n * 2 null arrays return true.\n * Do no perform strict type checking.\n *\n * @param {*} reference\n * @param {*} target\n *\n * @return {boolean} True if arrays are identicals. False if not.\n */\n _compareArrays(reference, target) {\n // could both be null\n if (reference === target) {\n return true;\n }\n\n // if not null....\n if (reference && target && reference.join() === target.join()) {\n return true;\n }\n\n return false;\n }\n\n get frameTime() {\n return this._frameTime;\n }\n\n set frameTime(frameTime) {\n this._frameTime = frameTime;\n }\n\n get ultrasoundRegions() {\n return this._ultrasoundRegions;\n }\n\n set ultrasoundRegions(ultrasoundRegions) {\n this._ultrasoundRegions = ultrasoundRegions;\n }\n\n get rows() {\n return this._rows;\n }\n\n set rows(rows) {\n this._rows = rows;\n }\n\n get columns() {\n return this._columns;\n }\n\n set columns(columns) {\n this._columns = columns;\n }\n\n get spacingBetweenSlices() {\n return this._spacingBetweenSlices;\n }\n\n set spacingBetweenSlices(spacingBetweenSlices) {\n this._spacingBetweenSlices = spacingBetweenSlices;\n }\n\n get sliceThickness() {\n return this._sliceThickness;\n }\n\n set sliceThickness(sliceThickness) {\n this._sliceThickness = sliceThickness;\n }\n\n get imagePosition() {\n return this._imagePosition;\n }\n\n set imagePosition(imagePosition) {\n this._imagePosition = imagePosition;\n }\n\n get imageOrientation() {\n return this._imageOrientation;\n }\n\n set imageOrientation(imageOrientation) {\n this._imageOrientation = imageOrientation;\n }\n\n get windowWidth() {\n return this._windowWidth;\n }\n\n set windowWidth(windowWidth) {\n this._windowWidth = windowWidth;\n }\n\n get windowCenter() {\n return this._windowCenter;\n }\n\n set windowCenter(windowCenter) {\n this._windowCenter = windowCenter;\n }\n\n get rescaleSlope() {\n return this._rescaleSlope;\n }\n\n set rescaleSlope(rescaleSlope) {\n this._rescaleSlope = rescaleSlope;\n }\n\n get rescaleIntercept() {\n return this._rescaleIntercept;\n }\n\n set rescaleIntercept(rescaleIntercept) {\n this._rescaleIntercept = rescaleIntercept;\n }\n\n get bitsAllocated() {\n return this._bitsAllocated;\n }\n\n set bitsAllocated(bitsAllocated) {\n this._bitsAllocated = bitsAllocated;\n }\n\n get dist() {\n return this._dist;\n }\n\n set dist(dist) {\n this._dist = dist;\n }\n\n get pixelSpacing() {\n return this._pixelSpacing;\n }\n\n set pixelSpacing(pixelSpacing) {\n this._pixelSpacing = pixelSpacing;\n }\n\n get pixelAspectRatio() {\n return this._pixelAspectRatio;\n }\n\n set pixelAspectRatio(pixelAspectRatio) {\n this._pixelAspectRatio = pixelAspectRatio;\n }\n\n get minMax() {\n return this._minMax;\n }\n\n set minMax(minMax) {\n this._minMax = minMax;\n }\n\n get dimensionIndexValues() {\n return this._dimensionIndexValues;\n }\n\n set dimensionIndexValues(dimensionIndexValues) {\n this._dimensionIndexValues = dimensionIndexValues;\n }\n\n get instanceNumber() {\n return this._instanceNumber;\n }\n\n set instanceNumber(instanceNumber) {\n this._instanceNumber = instanceNumber;\n }\n\n get pixelData() {\n return this._pixelData;\n }\n\n set pixelData(pixelData) {\n this._pixelData = pixelData;\n }\n\n set sopInstanceUID(sopInstanceUID) {\n this._sopInstanceUID = sopInstanceUID;\n }\n\n get sopInstanceUID() {\n return this._sopInstanceUID;\n }\n\n get pixelPaddingValue() {\n return this._pixelPaddingValue;\n }\n\n set pixelPaddingValue(pixelPaddingValue) {\n this._pixelPaddingValue = pixelPaddingValue;\n }\n\n get pixelRepresentation() {\n return this._pixelRepresentation;\n }\n\n set pixelRepresentation(pixelRepresentation) {\n this._pixelRepresentation = pixelRepresentation;\n }\n\n get pixelType() {\n return this._pixelType;\n }\n\n set pixelType(pixelType) {\n this._pixelType = pixelType;\n }\n\n get url() {\n return this._url;\n }\n\n set url(url) {\n this._url = url;\n }\n\n get referencedSegmentNumber() {\n return this._referencedSegmentNumber;\n }\n\n set referencedSegmentNumber(referencedSegmentNumber) {\n this._referencedSegmentNumber = referencedSegmentNumber;\n }\n\n get rightHanded() {\n return this._rightHanded;\n }\n\n set rightHanded(rightHanded) {\n this._rightHanded = rightHanded;\n }\n\n get index() {\n return this._index;\n }\n\n set index(index) {\n this._index = index;\n }\n\n get invert() {\n return this._invert;\n }\n\n set invert(invert) {\n this._invert = invert;\n }\n\n get numberOfChannels() {\n return this._numberOfChannels;\n }\n\n set numberOfChannels(numberOfChannels) {\n this._numberOfChannels = numberOfChannels;\n }\n}\n","import Frame from './models.frame';\nimport Stack from './models.stack';\nimport Series from './models.series';\nimport Voxel from './models.voxel';\n\nexport { Frame as FrameModel, Stack as StackModel, Series as SeriesModel, Voxel as VoxelModel };\n","/** * Imports ***/\nimport ModelsBase from '../models/models.base';\n\n/**\n * Series object.\n *\n * @module models/series\n */\nexport default class ModelsSeries extends ModelsBase {\n /**\n * Models series constructor\n */\n constructor() {\n super();\n\n this._concatenationUID = -1;\n this._seriesInstanceUID = -1;\n this._transferSyntaxUID = '';\n this._seriesNumber = -1;\n this._seriesDescription = '';\n this._seriesDate = '';\n this._studyDescription = '';\n this._studyDate = '';\n this._accessionNumber = -1;\n this._modality = 'Modality not set';\n this._dimensionIndexSequence = [];\n // it is used in the loader in case a dicom/nifti contains multiple frames\n // should be updated after merge or renamed\n this._numberOfFrames = 0;\n this._numberOfChannels = 1;\n\n // patient information\n this._rawHeader = null;\n this._patientID = '';\n this._patientName = '';\n this._patientAge = '';\n this._patientBirthdate = '';\n this._patientSex = '';\n\n // SEGMENTATION STUFF\n this._segmentationType = null;\n this._segmentationSegments = [];\n\n // STACK\n this._stack = [];\n }\n\n /**\n * Validate a series.\n *\n * Requirements:\n * - mergeSeries method\n * - _seriesInstanceUID\n * - _numberOfFrames\n * - _numberOfChannels\n * _ _stack\n *\n * @param {ModelsSeries} model - Model to be validated as series.\n *\n * @return {boolean} True if series is valid. False if not.\n *\n * @override\n */\n validate(model) {\n if (\n !(\n super.validate(model) &&\n typeof model.mergeSeries === 'function' &&\n model.hasOwnProperty('_seriesInstanceUID') &&\n model.hasOwnProperty('_numberOfFrames') &&\n model.hasOwnProperty('_numberOfChannels') &&\n model.hasOwnProperty('_stack') &&\n typeof model._stack !== 'undefined' &&\n Array === model._stack.constructor\n )\n ) {\n return false;\n }\n\n return true;\n }\n\n /**\n * Merge current series with provided series.\n * 2 series can ONLY be merge if they have the same SeriesInstanceUID.\n *\n * Also merges the stacks inside a series.\n *\n * @param {ModelsSeries} series - Series to be merged against current series.\n *\n * @return {boolean} True if series could be merge. False if not.\n *\n * @override\n */\n merge(series) {\n if (!this.validate(series)) {\n return false;\n }\n\n if (this._seriesInstanceUID === series.seriesInstanceUID) {\n // may merge incorrectly if loader will return more than one stacks per series\n if (series.stack[0]) {\n if (this._stack[0]._numberOfFrames === 0) {\n this._stack[0].computeNumberOfFrames();\n }\n this._stack[0].computeCosines();\n if (series.stack[0]._numberOfFrames === 0) {\n series.stack[0].computeNumberOfFrames();\n }\n series.stack[0].computeCosines();\n }\n return this.mergeModels(this._stack, series.stack);\n } else {\n return false;\n }\n }\n\n /**\n * Merge current series with provided array of series.\n * 2 series can ONLY be merge if they have the same SeriesInstanceUID.\n *\n * Also merges the stacks inside a series.\n *\n * @param {Array.} target - Series to be merged against current series.\n *\n * @return {Array.} Array of series properly merged.\n */\n mergeSeries(target) {\n let seriesContainer = [this];\n this.mergeModels(seriesContainer, target);\n return seriesContainer;\n }\n\n /**\n * Series instance UID setter\n *\n * @param {*} seriesInstanceUID\n */\n set seriesInstanceUID(seriesInstanceUID) {\n this._seriesInstanceUID = seriesInstanceUID;\n }\n\n /**\n * Series instace UID getter\n *\n * @return {*}\n */\n get seriesInstanceUID() {\n return this._seriesInstanceUID;\n }\n\n /**\n * Transfer syntax UID setter\n *\n * @param {*} transferSyntaxUID\n */\n set transferSyntaxUID(transferSyntaxUID) {\n this._transferSyntaxUID = transferSyntaxUID;\n }\n\n /**\n * Transfer syntax UID getter\n *\n * @return {*}\n */\n get transferSyntaxUID() {\n return this._transferSyntaxUID;\n }\n\n /**\n * Transfer syntax UID getter\n *\n * @return {*}\n */\n get transferSyntaxUIDLabel() {\n switch (this._transferSyntaxUID) {\n case '1.2.840.10008.1.2.4.90':\n return 'JPEG 2000 Lossless';\n case '1.2.840.10008.1.2.4.91':\n return 'JPEG 2000 Lossy';\n case '1.2.840.10008.1.2.4.57':\n return 'JPEG Lossless, Nonhierarchical (Processes 14)';\n case '1.2.840.10008.1.2.4.70':\n return 'JPEG Lossless, Nonhierarchical (Processes 14 [Selection 1])';\n case '1.2.840.10008.1.2.4.50':\n return 'JPEG Baseline lossy process 1 (8 bit)';\n case '1.2.840.10008.1.2.4.51':\n return 'JPEG Baseline lossy process 2 & 4 (12 bit)';\n case '1.2.840.10008.1.2':\n return 'Implicit VR Little Endian';\n case '1.2.840.10008.1.2.1':\n return 'Explicit VR Little Endian';\n case '1.2.840.10008.1.2.2':\n return 'Explicit VR Big Endian';\n default:\n return `Unknown transfersyntax: ${this._transferSyntaxUID}`;\n }\n }\n\n /**\n * Study date setter\n *\n * @param {*} studyDate\n */\n set studyDate(studyDate) {\n this._studyDate = studyDate;\n }\n\n /**\n * Study date getter\n *\n * @return {*}\n */\n get studyDate() {\n return this._studyDate;\n }\n\n /**\n * Study descripition setter\n *\n * @param {*} studyDescription\n */\n set studyDescription(studyDescription) {\n this._studyDescription = studyDescription;\n }\n\n /**\n * Study description getter\n *\n * @return {*}\n */\n get studyDescription() {\n return this._studyDescription;\n }\n\n /**\n * Series date setter\n *\n * @param {*} seriesDate\n */\n set seriesDate(seriesDate) {\n this._seriesDate = seriesDate;\n }\n\n /**\n * Series date getter\n *\n * @return {*}\n */\n get seriesDate() {\n return this._seriesDate;\n }\n\n /**\n * Series descripition setter\n *\n * @param {*} seriesDescription\n */\n set seriesDescription(seriesDescription) {\n this._seriesDescription = seriesDescription;\n }\n\n /**\n * Series description getter\n *\n * @return {*}\n */\n get seriesDescription() {\n return this._seriesDescription;\n }\n\n /**\n * Raw Header setter\n *\n * @param {*} rawHeader\n */\n set rawHeader(rawHeader) {\n this._rawHeader = rawHeader;\n }\n\n /**\n * Raw Header getter\n *\n * @return {*}\n */\n get rawHeader() {\n return this._rawHeader;\n }\n\n /**\n * Patient ID setter\n *\n * @param {*} patientID\n */\n set patientID(patientID) {\n this._patientID = patientID;\n }\n\n /**\n * Patient ID getter\n *\n * @return {*}\n */\n get patientID() {\n return this._patientID;\n }\n\n /**\n * Patient name setter\n *\n * @param {*} patientName\n */\n set patientName(patientName) {\n this._patientName = patientName;\n }\n\n /**\n * Patient name getter\n *\n * @return {*}\n */\n get patientName() {\n return this._patientName;\n }\n\n /**\n * Patient age setter\n *\n * @param {*} patientAge\n */\n set patientAge(patientAge) {\n this._patientAge = patientAge;\n }\n\n /**\n * Patient age getter\n *\n * @return {*}\n */\n get patientAge() {\n return this._patientAge;\n }\n\n /**\n * Patient birthdate setter\n *\n * @param {*} patientBirthdate\n */\n set patientBirthdate(patientBirthdate) {\n this._patientBirthdate = patientBirthdate;\n }\n\n /**\n * Patient birthdate getter\n *\n * @return {*}\n */\n get patientBirthdate() {\n return this._patientBirthdate;\n }\n\n /**\n * Patient sex setter\n *\n * @param {*} patientSex\n */\n set patientSex(patientSex) {\n this._patientSex = patientSex;\n }\n\n /**\n * Patient sex getter\n *\n * @return {*}\n */\n get patientSex() {\n return this._patientSex;\n }\n\n /**\n * Number of frames setter\n *\n * @param {*} numberOfFrames\n */\n set numberOfFrames(numberOfFrames) {\n this._numberOfFrames = numberOfFrames;\n }\n\n /**\n * Number of frames getter\n *\n * @return {*}\n */\n get numberOfFrames() {\n return this._numberOfFrames;\n }\n\n /**\n * Number of channels setter\n *\n * @param {*} numberOfChannels\n */\n set numberOfChannels(numberOfChannels) {\n this._numberOfChannels = numberOfChannels;\n }\n\n /**\n * Number of channels getter\n *\n * @return {*}\n */\n get numberOfChannels() {\n return this._numberOfChannels;\n }\n\n /**\n * Stack setter\n *\n * @param {*} stack\n */\n set stack(stack) {\n this._stack = stack;\n }\n\n /**\n * Stack getter\n *\n * @return {*}\n */\n get stack() {\n return this._stack;\n }\n\n /**\n * Modality setter\n *\n * @param {*} modality\n */\n set modality(modality) {\n this._modality = modality;\n }\n\n /**\n * Modality getter\n *\n * @return {*}\n */\n get modality() {\n return this._modality;\n }\n\n /**\n * Segmentation type setter\n *\n * @param {*} segmentationType\n */\n set segmentationType(segmentationType) {\n this._segmentationType = segmentationType;\n }\n\n /**\n * Segmentation type getter\n *\n * @return {*}\n */\n get segmentationType() {\n return this._segmentationType;\n }\n\n /**\n * Segmentation segments setter\n *\n * @param {*} segmentationSegments\n */\n set segmentationSegments(segmentationSegments) {\n this._segmentationSegments = segmentationSegments;\n }\n\n /**\n * Segmentation segments getter\n *\n * @return {*}\n */\n get segmentationSegments() {\n return this._segmentationSegments;\n }\n}\n","/** * Imports ***/\nimport { Matrix4 } from 'three/src/math/Matrix4';\nimport { Vector3 } from 'three/src/math/Vector3';\nimport { RGBFormat, RGBAFormat } from 'three/src/constants';\n\nimport CoreColors from '../core/core.colors';\nimport CoreUtils from '../core/core.utils';\nimport ModelsBase from '../models/models.base';\n\nconst binaryString = require('math-float32-to-binary-string');\n\n/**\n * Stack object.\n *\n * @module models/stack\n */\nexport default class ModelsStack extends ModelsBase {\n /**\n * Models Stack constructor\n */\n constructor() {\n super();\n\n this._uid = null;\n this._stackID = -1;\n\n this._frame = [];\n this._numberOfFrames = 0;\n\n this._rows = 0;\n this._columns = 0;\n this._numberOfChannels = 1;\n this._bitsAllocated = 8;\n this._pixelType = 0;\n this._pixelRepresentation = 0;\n\n this._textureSize = 4096;\n this._textureUnits = 7;\n\n this._rawData = [];\n\n this._windowCenter = 0;\n this._windowWidth = 0;\n\n this._rescaleSlope = 1;\n this._rescaleIntercept = 0;\n\n this._minMax = [Number.POSITIVE_INFINITY, Number.NEGATIVE_INFINITY];\n\n // TRANSFORMATION MATRICES\n this._regMatrix = new Matrix4();\n\n this._ijk2LPS = null;\n this._lps2IJK = null;\n\n this._aabb2LPS = null;\n this._lps2AABB = null;\n\n //\n // IJK dimensions\n this._dimensionsIJK = null;\n this._halfDimensionsIJK = null;\n this._spacing = new Vector3(1, 1, 1);\n this._spacingBetweenSlices = 0;\n this._sliceThickness = 0;\n this._origin = null;\n this._rightHanded = true;\n this._xCosine = new Vector3(1, 0, 0);\n this._yCosine = new Vector3(0, 1, 0);\n this._zCosine = new Vector3(0, 0, 1);\n\n // convenience vars\n this._prepared = false;\n this._packed = false;\n this._packedPerPixel = 1;\n\n //\n this._modality = 'Modality not set';\n\n // SEGMENTATION STUFF\n this._segmentationType = null;\n this._segmentationSegments = [];\n this._segmentationDefaultColor = [63, 174, 128];\n this._frameSegment = [];\n this._segmentationLUT = [];\n this._segmentationLUTO = [];\n\n // photometricInterpretation Monochrome1 VS Monochrome2\n this._invert = false;\n }\n\n /**\n * Prepare segmentation stack.\n * A segmentation stack can hold x frames that are at the same location\n * but segmentation specific information:\n * - Frame X contains voxels for segmentation A.\n * - Frame Y contains voxels for segmenttation B.\n * - Frame X and Y are at the same location.\n *\n * We currently merge overlaping frames into 1.\n */\n prepareSegmentation() {\n // store frame and do special pre-processing\n this._frameSegment = this._frame;\n let mergedFrames = [];\n\n // order frames\n this.computeCosines();\n this._frame.map(this._computeDistanceArrayMap.bind(null, this._zCosine));\n this._frame.sort(this._sortDistanceArraySort);\n\n // merge frames\n let prevIndex = -1;\n for (let i = 0; i < this._frame.length; i++) {\n if (!mergedFrames[prevIndex] || mergedFrames[prevIndex]._dist != this._frame[i]._dist) {\n mergedFrames.push(this._frame[i]);\n prevIndex++;\n\n // Scale frame\n // by default each frame contains binary data about a segmentation.\n // we scale it by the referenceSegmentNumber in order to have a\n // segmentation specific voxel value rather than 0 or 1.\n // That allows us to merge frames later on.\n // If we merge frames without scaling, then we can not differenciate\n // voxels from segmentation A or B as the value is 0 or 1 in both cases.\n for (let k = 0; k < mergedFrames[prevIndex]._rows * mergedFrames[prevIndex]._columns; k++) {\n mergedFrames[prevIndex]._pixelData[k] *= this._frame[i]._referencedSegmentNumber;\n }\n } else {\n // frame already exsits at this location.\n // merge data from this segmentation into existing frame\n for (let k = 0; k < mergedFrames[prevIndex]._rows * mergedFrames[prevIndex]._columns; k++) {\n mergedFrames[prevIndex]._pixelData[k] +=\n this._frame[i].pixelData[k] * this._frame[i]._referencedSegmentNumber;\n }\n }\n\n mergedFrames[prevIndex].minMax = CoreUtils.minMax(mergedFrames[prevIndex]._pixelData);\n }\n\n // get information about segments\n let dict = {};\n let max = 0;\n for (let i = 0; i < this._segmentationSegments.length; i++) {\n max = Math.max(max, parseInt(this._segmentationSegments[i].segmentNumber, 10));\n\n let color = this._segmentationSegments[i].recommendedDisplayCIELab;\n if (color === null) {\n dict[this._segmentationSegments[i].segmentNumber] = this._segmentationDefaultColor;\n } else {\n dict[this._segmentationSegments[i].segmentNumber] = CoreColors.cielab2RGB(...color);\n }\n }\n\n // generate LUTs\n for (let i = 0; i <= max; i++) {\n let index = i / max;\n let opacity = i ? 1 : 0;\n let rgb = [0, 0, 0];\n if (dict.hasOwnProperty(i.toString())) {\n rgb = dict[i.toString()];\n }\n\n rgb[0] /= 255;\n rgb[1] /= 255;\n rgb[2] /= 255;\n\n this._segmentationLUT.push([index, ...rgb]);\n this._segmentationLUTO.push([index, opacity]);\n }\n\n this._frame = mergedFrames;\n }\n\n /**\n * Compute cosines\n * Order frames\n * computeSpacing\n * sanityCheck\n * init some vars\n * compute min/max\n * compute transformation matrices\n *\n * @return {*}\n */\n prepare() {\n // if segmentation, merge some frames...\n if (this._modality === 'SEG') {\n this.prepareSegmentation();\n }\n\n this.computeNumberOfFrames();\n\n // pass parameters from frame to stack\n this._rows = this._frame[0].rows;\n this._columns = this._frame[0].columns;\n this._dimensionsIJK = new Vector3(this._columns, this._rows, this._numberOfFrames);\n this._halfDimensionsIJK = new Vector3(\n this._dimensionsIJK.x / 2,\n this._dimensionsIJK.y / 2,\n this._dimensionsIJK.z / 2\n );\n this._spacingBetweenSlices = this._frame[0].spacingBetweenSlices;\n this._sliceThickness = this._frame[0].sliceThickness;\n\n // compute direction cosines\n this.computeCosines();\n\n // order the frames\n if (this._numberOfFrames > 1) {\n this.orderFrames();\n }\n\n // compute/guess spacing\n this.computeSpacing();\n // set extra vars if nulls\n // do it now because before we would think image position/orientation\n // are defined and we would use it to compute spacing.\n if (!this._frame[0].imagePosition) {\n this._frame[0].imagePosition = [0, 0, 0];\n }\n if (!this._frame[0].imageOrientation) {\n this._frame[0].imageOrientation = [1, 0, 0, 0, 1, 0];\n }\n\n this._origin = this._arrayToVector3(this._frame[0].imagePosition, 0);\n\n // compute transforms\n this.computeIJK2LPS();\n\n this.computeLPS2AABB();\n // this.packEchos();\n\n const middleFrameIndex = Math.floor(this._frame.length / 2);\n const middleFrame = this._frame[middleFrameIndex];\n\n this._rescaleSlope = middleFrame.rescaleSlope || 1;\n this._rescaleIntercept = middleFrame.rescaleIntercept || 0;\n\n // rescale/slope min max\n this.computeMinMaxIntensities();\n this._minMax[0] = CoreUtils.rescaleSlopeIntercept(\n this._minMax[0],\n this._rescaleSlope,\n this._rescaleIntercept\n );\n this._minMax[1] = CoreUtils.rescaleSlopeIntercept(\n this._minMax[1],\n this._rescaleSlope,\n this._rescaleIntercept\n );\n\n this._windowWidth = middleFrame.windowWidth || this._minMax[1] - this._minMax[0];\n\n this._windowCenter = middleFrame.windowCenter || this._minMax[0] + this._windowWidth / 2;\n\n this._bitsAllocated = middleFrame.bitsAllocated;\n this._prepared = true;\n }\n\n packEchos() {\n // 4 echo times...\n let echos = 4;\n let packedEcho = [];\n for (let i = 0; i < this._frame.length; i += echos) {\n let frame = this._frame[i];\n for (let k = 0; k < this._rows * this._columns; k++) {\n for (let j = 1; j < echos; j++) {\n frame.pixelData[k] += this._frame[i + j].pixelData[k];\n }\n frame.pixelData[k] /= echos;\n }\n packedEcho.push(frame);\n }\n this._frame = packedEcho;\n this._numberOfFrames = this._frame.length;\n this._dimensionsIJK = new Vector3(this._columns, this._rows, this._numberOfFrames);\n this._halfDimensionsIJK = new Vector3(\n this._dimensionsIJK.x / 2,\n this._dimensionsIJK.y / 2,\n this._dimensionsIJK.z / 2\n );\n }\n\n computeNumberOfFrames() {\n // we need at least 1 frame\n if (this._frame && this._frame.length > 0) {\n this._numberOfFrames = this._frame.length;\n } else {\n window.console.warn(\"_frame doesn't contain anything....\");\n window.console.warn(this._frame);\n return false;\n }\n }\n\n // frame.cosines - returns array [x, y, z]\n computeCosines() {\n if (this._frame && this._frame[0]) {\n let cosines = this._frame[0].cosines();\n this._xCosine = cosines[0];\n this._yCosine = cosines[1];\n this._zCosine = cosines[2];\n }\n }\n\n orderFrames() {\n // order the frames based on theirs dimension indices\n // first index is the most important.\n // 1,1,1,1 will be first\n // 1,1,2,1 will be next\n // 1,1,2,3 will be next\n // 1,1,3,1 will be next\n if (this._frame[0].dimensionIndexValues) {\n this._frame.sort(this._orderFrameOnDimensionIndicesArraySort);\n\n // else order with image position and orientation\n } else if (\n this._frame[0].imagePosition &&\n this._frame[0].imageOrientation &&\n this._frame[1] &&\n this._frame[1].imagePosition &&\n this._frame[1].imageOrientation &&\n this._frame[0].imagePosition.join() !== this._frame[1].imagePosition.join()\n ) {\n // compute and sort by dist in this series\n this._frame.map(this._computeDistanceArrayMap.bind(null, this._zCosine));\n this._frame.sort(this._sortDistanceArraySort);\n } else if (\n this._frame[0].instanceNumber !== null &&\n this._frame[1] &&\n this._frame[1].instanceNumber !== null &&\n this._frame[0].instanceNumber !== this._frame[1].instanceNumber\n ) {\n this._frame.sort(this._sortInstanceNumberArraySort);\n } else if (\n this._frame[0].sopInstanceUID &&\n this._frame[1] &&\n this._frame[1].sopInstanceUID &&\n this._frame[0].sopInstanceUID !== this._frame[1].sopInstanceUID\n ) {\n this._frame.sort(this._sortSopInstanceUIDArraySort);\n } else if (!this._frame[0].imagePosition) {\n // cancel warning if you have set null imagePosition on purpose (?)\n } else {\n window.console.warn('do not know how to order the frames...');\n }\n }\n\n computeSpacing() {\n this.xySpacing();\n this.zSpacing();\n }\n\n /**\n * Compute stack z spacing\n */\n zSpacing() {\n if (this._numberOfFrames > 1) {\n if (this._frame[0].pixelSpacing && this._frame[0].pixelSpacing[2]) {\n this._spacing.z = this._frame[0].pixelSpacing[2];\n } else {\n // compute and sort by dist in this series\n this._frame.map(this._computeDistanceArrayMap.bind(null, this._zCosine));\n\n // if distances are different, re-sort array\n if (this._frame[1].dist !== this._frame[0].dist) {\n this._frame.sort(this._sortDistanceArraySort);\n this._spacing.z = this._frame[1].dist - this._frame[0].dist;\n } else if (this._spacingBetweenSlices) {\n this._spacing.z = this._spacingBetweenSlices;\n } else if (this._frame[0].sliceThickness) {\n this._spacing.z = this._frame[0].sliceThickness;\n }\n }\n }\n\n // Spacing\n // can not be 0 if not matrix can not be inverted.\n if (this._spacing.z === 0) {\n this._spacing.z = 1;\n }\n }\n\n /**\n * FRAME CAN DO IT\n */\n xySpacing() {\n if (this._frame && this._frame[0]) {\n let spacingXY = this._frame[0].spacingXY();\n this._spacing.x = spacingXY[0];\n this._spacing.y = spacingXY[1];\n }\n }\n\n /**\n * Find min and max intensities among all frames.\n */\n computeMinMaxIntensities() {\n // what about colors!!!!?\n // we ignore values if NaNs\n // https://github.com/FNNDSC/ami/issues/185\n for (let i = 0; i < this._frame.length; i++) {\n // get min/max\n let min = this._frame[i].minMax[0];\n if (!Number.isNaN(min)) {\n this._minMax[0] = Math.min(this._minMax[0], min);\n }\n\n let max = this._frame[i].minMax[1];\n if (!Number.isNaN(max)) {\n this._minMax[1] = Math.max(this._minMax[1], max);\n }\n }\n }\n\n /**\n * Compute IJK to LPS and invert transforms\n */\n computeIJK2LPS() {\n // ijk to lps\n this._ijk2LPS = CoreUtils.ijk2LPS(\n this._xCosine,\n this._yCosine,\n this._zCosine,\n this._spacing,\n this._origin,\n this._regMatrix\n );\n\n // lps 2 ijk\n this._lps2IJK = new Matrix4();\n this._lps2IJK.getInverse(this._ijk2LPS);\n }\n\n /**\n * Compute LPS to AABB and invert transforms\n */\n computeLPS2AABB() {\n this._aabb2LPS = CoreUtils.aabb2LPS(this._xCosine, this._yCosine, this._zCosine, this._origin);\n\n this._lps2AABB = new Matrix4();\n this._lps2AABB.getInverse(this._aabb2LPS);\n }\n\n /**\n * Merge stacks\n *\n * @param {*} stack\n *\n * @return {*}\n */\n merge(stack) {\n // also make sure x/y/z cosines are a match!\n if (\n this._stackID === stack.stackID &&\n this._numberOfFrames === 1 &&\n stack._numberOfFrames === 1 &&\n this._frame[0].columns === stack.frame[0].columns &&\n this._frame[0].rows === stack.frame[0].rows &&\n this._xCosine.equals(stack.xCosine) &&\n this._yCosine.equals(stack.yCosine) &&\n this._zCosine.equals(stack.zCosine)\n ) {\n return this.mergeModels(this._frame, stack.frame);\n } else {\n return false;\n }\n }\n\n /**\n * Pack current stack pixel data into 8 bits array buffers\n */\n pack() {\n // Get total number of voxels\n const nbVoxels = this._dimensionsIJK.x * this._dimensionsIJK.y * this._dimensionsIJK.z;\n\n // Packing style\n if ((this._bitsAllocated === 8 && this._numberOfChannels === 1) || this._bitsAllocated === 1) {\n this._packedPerPixel = 4;\n }\n\n if (this._bitsAllocated === 16 && this._numberOfChannels === 1) {\n this._packedPerPixel = 2;\n }\n\n // Loop through all the textures we need\n const textureDimension = this._textureSize * this._textureSize;\n let requiredTextures = Math.ceil(nbVoxels / (textureDimension * this._packedPerPixel));\n let voxelIndexStart = 0;\n let voxelIndexStop = this._packedPerPixel * textureDimension;\n if (voxelIndexStop > nbVoxels) {\n voxelIndexStop = nbVoxels;\n }\n\n if (this._textureUnits < requiredTextures) {\n console.warn('Insufficient number of supported textures. Some frames will not be packed.');\n requiredTextures = this._textureUnits;\n }\n\n for (let ii = 0; ii < requiredTextures; ii++) {\n const packed = this._packTo8Bits(\n this._numberOfChannels,\n this._frame,\n this._textureSize,\n voxelIndexStart,\n voxelIndexStop\n );\n this._textureType = packed.textureType;\n this._rawData.push(packed.data);\n\n voxelIndexStart += this._packedPerPixel * textureDimension;\n voxelIndexStop += this._packedPerPixel * textureDimension;\n if (voxelIndexStop > nbVoxels) {\n voxelIndexStop = nbVoxels;\n }\n }\n\n this._packed = true;\n }\n\n /**\n * Pack frame data to 32 bits texture\n * @param {*} channels\n * @param {*} frame\n * @param {*} textureSize\n * @param {*} startVoxel\n * @param {*} stopVoxel\n */\n _packTo8Bits(channels, frame, textureSize, startVoxel, stopVoxel) {\n const packed = {\n textureType: null,\n data: null,\n };\n\n const bitsAllocated = frame[0].bitsAllocated;\n const pixelType = frame[0].pixelType;\n\n // transform signed to unsigned for convenience\n let offset = 0;\n if (this._minMax[0] < 0) {\n offset -= this._minMax[0];\n }\n\n let packIndex = 0;\n let frameIndex = 0;\n let inFrameIndex = 0;\n // frame should return it!\n const frameDimension = frame[0].rows * frame[0].columns;\n\n if ((bitsAllocated === 8 && channels === 1) || bitsAllocated === 1) {\n let data = new Uint8Array(textureSize * textureSize * 4);\n let coordinate = 0;\n let channelOffset = 0;\n for (let i = startVoxel; i < stopVoxel; i++) {\n frameIndex = ~~(i / frameDimension);\n inFrameIndex = i % frameDimension;\n\n let raw = frame[frameIndex].pixelData[inFrameIndex] + offset;\n if (!Number.isNaN(raw)) {\n data[4 * coordinate + channelOffset] = raw;\n }\n\n packIndex++;\n coordinate = Math.floor(packIndex / 4);\n channelOffset = packIndex % 4;\n }\n packed.textureType = RGBAFormat;\n packed.data = data;\n } else if (bitsAllocated === 16 && channels === 1) {\n let data = new Uint8Array(textureSize * textureSize * 4);\n let coordinate = 0;\n let channelOffset = 0;\n\n for (let i = startVoxel; i < stopVoxel; i++) {\n frameIndex = ~~(i / frameDimension);\n inFrameIndex = i % frameDimension;\n\n let raw = frame[frameIndex].pixelData[inFrameIndex] + offset;\n if (!Number.isNaN(raw)) {\n data[4 * coordinate + 2 * channelOffset] = raw & 0x00ff;\n data[4 * coordinate + 2 * channelOffset + 1] = (raw >>> 8) & 0x00ff;\n }\n\n packIndex++;\n coordinate = Math.floor(packIndex / 2);\n channelOffset = packIndex % 2;\n }\n\n packed.textureType = RGBAFormat;\n packed.data = data;\n } else if (bitsAllocated === 32 && channels === 1 && pixelType === 0) {\n let data = new Uint8Array(textureSize * textureSize * 4);\n for (let i = startVoxel; i < stopVoxel; i++) {\n frameIndex = ~~(i / frameDimension);\n inFrameIndex = i % frameDimension;\n\n let raw = frame[frameIndex].pixelData[inFrameIndex] + offset;\n if (!Number.isNaN(raw)) {\n data[4 * packIndex] = raw & 0x000000ff;\n data[4 * packIndex + 1] = (raw >>> 8) & 0x000000ff;\n data[4 * packIndex + 2] = (raw >>> 16) & 0x000000ff;\n data[4 * packIndex + 3] = (raw >>> 24) & 0x000000ff;\n }\n\n packIndex++;\n }\n packed.textureType = RGBAFormat;\n packed.data = data;\n } else if (bitsAllocated === 32 && channels === 1 && pixelType === 1) {\n let data = new Uint8Array(textureSize * textureSize * 4);\n\n for (let i = startVoxel; i < stopVoxel; i++) {\n frameIndex = ~~(i / frameDimension);\n inFrameIndex = i % frameDimension;\n\n let raw = frame[frameIndex].pixelData[inFrameIndex] + offset;\n if (!Number.isNaN(raw)) {\n let bitString = binaryString(raw);\n let bitStringArray = bitString.match(/.{1,8}/g);\n\n data[4 * packIndex] = parseInt(bitStringArray[0], 2);\n data[4 * packIndex + 1] = parseInt(bitStringArray[1], 2);\n data[4 * packIndex + 2] = parseInt(bitStringArray[2], 2);\n data[4 * packIndex + 3] = parseInt(bitStringArray[3], 2);\n }\n\n packIndex++;\n }\n\n packed.textureType = RGBAFormat;\n packed.data = data;\n } else if (bitsAllocated === 8 && channels === 3) {\n let data = new Uint8Array(textureSize * textureSize * 3);\n\n for (let i = startVoxel; i < stopVoxel; i++) {\n frameIndex = ~~(i / frameDimension);\n inFrameIndex = i % frameDimension;\n\n data[3 * packIndex] = frame[frameIndex].pixelData[3 * inFrameIndex];\n data[3 * packIndex + 1] = frame[frameIndex].pixelData[3 * inFrameIndex + 1];\n data[3 * packIndex + 2] = frame[frameIndex].pixelData[3 * inFrameIndex + 2];\n packIndex++;\n }\n\n packed.textureType = RGBFormat;\n packed.data = data;\n }\n\n return packed;\n }\n\n /**\n * Get the stack world center\n *\n *@return {*}\n */\n worldCenter() {\n let center = this._halfDimensionsIJK\n .clone()\n .addScalar(-0.5)\n .applyMatrix4(this._ijk2LPS);\n return center;\n }\n\n /**\n * Get the stack world bounding box\n * @return {*}\n */\n worldBoundingBox() {\n let bbox = [\n Number.POSITIVE_INFINITY,\n Number.NEGATIVE_INFINITY,\n Number.POSITIVE_INFINITY,\n Number.NEGATIVE_INFINITY,\n Number.POSITIVE_INFINITY,\n Number.NEGATIVE_INFINITY,\n ];\n\n const dims = this._dimensionsIJK;\n\n for (let i = 0; i <= dims.x; i += dims.x) {\n for (let j = 0; j <= dims.y; j += dims.y) {\n for (let k = 0; k <= dims.z; k += dims.z) {\n let world = new Vector3(i, j, k).applyMatrix4(this._ijk2LPS);\n bbox = [\n Math.min(bbox[0], world.x),\n Math.max(bbox[1], world.x), // x min/max\n Math.min(bbox[2], world.y),\n Math.max(bbox[3], world.y),\n Math.min(bbox[4], world.z),\n Math.max(bbox[5], world.z),\n ];\n }\n }\n }\n\n return bbox;\n }\n\n /**\n * Get AABB size in LPS space.\n *\n * @return {*}\n */\n AABBox() {\n let world0 = new Vector3()\n .addScalar(-0.5)\n .applyMatrix4(this._ijk2LPS)\n .applyMatrix4(this._lps2AABB);\n\n let world7 = this._dimensionsIJK\n .clone()\n .addScalar(-0.5)\n .applyMatrix4(this._ijk2LPS)\n .applyMatrix4(this._lps2AABB);\n\n let minBBox = new Vector3(\n Math.abs(world0.x - world7.x),\n Math.abs(world0.y - world7.y),\n Math.abs(world0.z - world7.z)\n );\n\n return minBBox;\n }\n\n /**\n * Get AABB center in LPS space\n */\n centerAABBox() {\n let centerBBox = this.worldCenter();\n centerBBox.applyMatrix4(this._lps2AABB);\n return centerBBox;\n }\n\n static indexInDimensions(index, dimensions) {\n if (\n index.x >= 0 &&\n index.y >= 0 &&\n index.z >= 0 &&\n index.x < dimensions.x &&\n index.y < dimensions.y &&\n index.z < dimensions.z\n ) {\n return true;\n }\n\n return false;\n }\n\n _arrayToVector3(array, index) {\n return new Vector3(array[index], array[index + 1], array[index + 2]);\n }\n\n _orderFrameOnDimensionIndicesArraySort(a, b) {\n if (\n 'dimensionIndexValues' in a &&\n Object.prototype.toString.call(a.dimensionIndexValues) === '[object Array]' &&\n 'dimensionIndexValues' in b &&\n Object.prototype.toString.call(b.dimensionIndexValues) === '[object Array]'\n ) {\n for (let i = 0; i < a.dimensionIndexValues.length; i++) {\n if (parseInt(a.dimensionIndexValues[i], 10) > parseInt(b.dimensionIndexValues[i], 10)) {\n return 1;\n }\n if (parseInt(a.dimensionIndexValues[i], 10) < parseInt(b.dimensionIndexValues[i], 10)) {\n return -1;\n }\n }\n } else {\n window.console.warn(\"One of the frames doesn't have a dimensionIndexValues array.\");\n window.console.warn(a);\n window.console.warn(b);\n }\n\n return 0;\n }\n\n _computeDistanceArrayMap(normal, frame) {\n if (frame.imagePosition) {\n frame.dist =\n frame.imagePosition[0] * normal.x +\n frame.imagePosition[1] * normal.y +\n frame.imagePosition[2] * normal.z;\n }\n return frame;\n }\n\n _sortDistanceArraySort(a, b) {\n return a.dist - b.dist;\n }\n _sortInstanceNumberArraySort(a, b) {\n return a.instanceNumber - b.instanceNumber;\n }\n _sortSopInstanceUIDArraySort(a, b) {\n return a.sopInstanceUID - b.sopInstanceUID;\n }\n\n set numberOfChannels(numberOfChannels) {\n this._numberOfChannels = numberOfChannels;\n }\n\n get numberOfChannels() {\n return this._numberOfChannels;\n }\n\n set frame(frame) {\n this._frame = frame;\n }\n\n get frame() {\n return this._frame;\n }\n\n set prepared(prepared) {\n this._prepared = prepared;\n }\n\n get prepared() {\n return this._prepared;\n }\n\n set packed(packed) {\n this._packed = packed;\n }\n\n get packed() {\n return this._packed;\n }\n\n set packedPerPixel(packedPerPixel) {\n this._packedPerPixel = packedPerPixel;\n }\n\n get packedPerPixel() {\n return this._packedPerPixel;\n }\n\n set dimensionsIJK(dimensionsIJK) {\n this._dimensionsIJK = dimensionsIJK;\n }\n\n get dimensionsIJK() {\n return this._dimensionsIJK;\n }\n\n set halfDimensionsIJK(halfDimensionsIJK) {\n this._halfDimensionsIJK = halfDimensionsIJK;\n }\n\n get halfDimensionsIJK() {\n return this._halfDimensionsIJK;\n }\n\n set regMatrix(regMatrix) {\n this._regMatrix = regMatrix;\n }\n\n get regMatrix() {\n return this._regMatrix;\n }\n\n set ijk2LPS(ijk2LPS) {\n this._ijk2LPS = ijk2LPS;\n }\n\n get ijk2LPS() {\n return this._ijk2LPS;\n }\n\n set lps2IJK(lps2IJK) {\n this._lps2IJK = lps2IJK;\n }\n\n get lps2IJK() {\n return this._lps2IJK;\n }\n\n set lps2AABB(lps2AABB) {\n this._lps2AABB = lps2AABB;\n }\n\n get lps2AABB() {\n return this._lps2AABB;\n }\n\n set textureSize(textureSize) {\n this._textureSize = textureSize;\n }\n\n get textureSize() {\n return this._textureSize;\n }\n\n set textureUnits(textureUnits) {\n this._textureUnits = textureUnits;\n }\n\n get textureUnits() {\n return this._textureUnits;\n }\n\n set textureType(textureType) {\n this._textureType = textureType;\n }\n\n get textureType() {\n return this._textureType;\n }\n\n set bitsAllocated(bitsAllocated) {\n this._bitsAllocated = bitsAllocated;\n }\n\n get bitsAllocated() {\n return this._bitsAllocated;\n }\n\n set rawData(rawData) {\n this._rawData = rawData;\n }\n\n get rawData() {\n return this._rawData;\n }\n\n get windowWidth() {\n return this._windowWidth;\n }\n\n set windowWidth(windowWidth) {\n this._windowWidth = windowWidth;\n }\n\n get windowCenter() {\n return this._windowCenter;\n }\n\n set windowCenter(windowCenter) {\n this._windowCenter = windowCenter;\n }\n\n get rescaleSlope() {\n return this._rescaleSlope;\n }\n\n set rescaleSlope(rescaleSlope) {\n this._rescaleSlope = rescaleSlope;\n }\n\n get rescaleIntercept() {\n return this._rescaleIntercept;\n }\n\n set rescaleIntercept(rescaleIntercept) {\n this._rescaleIntercept = rescaleIntercept;\n }\n\n get xCosine() {\n return this._xCosine;\n }\n\n set xCosine(xCosine) {\n this._xCosine = xCosine;\n }\n\n get yCosine() {\n return this._yCosine;\n }\n\n set yCosine(yCosine) {\n this._yCosine = yCosine;\n }\n\n get zCosine() {\n return this._zCosine;\n }\n\n set zCosine(zCosine) {\n this._zCosine = zCosine;\n }\n\n get minMax() {\n return this._minMax;\n }\n\n set minMax(minMax) {\n this._minMax = minMax;\n }\n\n get stackID() {\n return this._stackID;\n }\n\n set stackID(stackID) {\n this._stackID = stackID;\n }\n\n get pixelType() {\n return this._pixelType;\n }\n\n set pixelType(pixelType) {\n this._pixelType = pixelType;\n }\n\n get pixelRepresentation() {\n return this._pixelRepresentation;\n }\n\n set pixelRepresentation(pixelRepresentation) {\n this._pixelRepresentation = pixelRepresentation;\n }\n\n set invert(invert) {\n this._invert = invert;\n }\n\n get invert() {\n return this._invert;\n }\n\n set modality(modality) {\n this._modality = modality;\n }\n\n get modality() {\n return this._modality;\n }\n\n get rightHanded() {\n return this._rightHanded;\n }\n\n set rightHanded(rightHanded) {\n this._rightHanded = rightHanded;\n }\n\n get spacingBetweenSlices() {\n return this._spacingBetweenSlices;\n }\n\n set spacingBetweenSlices(spacingBetweenSlices) {\n this._spacingBetweenSlices = spacingBetweenSlices;\n }\n\n set segmentationSegments(segmentationSegments) {\n this._segmentationSegments = segmentationSegments;\n }\n\n get segmentationSegments() {\n return this._segmentationSegments;\n }\n\n set segmentationType(segmentationType) {\n this._segmentationType = segmentationType;\n }\n\n get segmentationType() {\n return this._segmentationType;\n }\n\n set segmentationLUT(segmentationLUT) {\n this._segmentationLUT = segmentationLUT;\n }\n\n get segmentationLUT() {\n return this._segmentationLUT;\n }\n\n set segmentationLUTO(segmentationLUTO) {\n this._segmentationLUTO = segmentationLUTO;\n }\n\n get segmentationLUTO() {\n return this._segmentationLUTO;\n }\n\n // DEPRECATED FUNCTION\n\n /**\n * @deprecated for core.utils.value\n *\n * Get voxel value.\n *\n * @param {*} stack\n * @param {*} coordinate\n *\n * @return {*}\n */\n static value(stack, coordinate) {\n window.console.warn(\n `models.stack.value is deprecated.\n Please use core.utils.value instead.`\n );\n return CoreUtils.value(stack, coordinate);\n }\n\n /**\n * @deprecated for core.utils.rescaleSlopeIntercept\n *\n * Apply slope/intercept to a value.\n *\n * @param {*} value\n * @param {*} slope\n * @param {*} intercept\n *\n * @return {*}\n */\n static valueRescaleSlopeIntercept(value, slope, intercept) {\n window.console.warn(\n `models.stack.valueRescaleSlopeIntercept is deprecated.\n Please use core.utils.rescaleSlopeIntercept instead.`\n );\n return CoreUtils.rescaleSlopeIntercept(value, slope, intercept);\n }\n\n /**\n * @deprecated for core.utils.worldToData\n *\n * Transform coordinates from world coordinate to data\n *\n * @param {*} stack\n * @param {*} worldCoordinates\n *\n * @return {*}\n */\n static worldToData(stack, worldCoordinates) {\n window.console.warn(\n `models.stack.worldToData is deprecated.\n Please use core.utils.worldToData instead.`\n );\n\n return CoreUtils.worldToData(stack._lps2IJK, worldCoordinates);\n }\n}\n","/**\n * @module models/voxel\n */\n\nexport default class ModelsVoxel {\n constructor() {\n this._id = -1;\n this._worldCoordinates = null;\n this._dataCoordinates = null;\n this._screenCoordinates = null;\n this._value = null;\n }\n\n set worldCoordinates(worldCoordinates) {\n this._worldCoordinates = worldCoordinates;\n }\n\n get worldCoordinates() {\n return this._worldCoordinates;\n }\n\n set dataCoordinates(dataCoordinates) {\n this._dataCoordinates = dataCoordinates;\n }\n\n get dataCoordinates() {\n return this._dataCoordinates;\n }\n\n set screenCoordinates(screenCoordinates) {\n this._screenCoordinates = screenCoordinates;\n }\n\n get screenCoordinates() {\n return this._screenCoordinates;\n }\n\n set value(value) {\n this._value = value;\n }\n\n get value() {\n return this._value;\n }\n\n set id(id) {\n this._id = id;\n }\n\n get id() {\n return this._id;\n }\n}\n","/** * Imports ***/\nimport UtilsCore from '../core/core.utils';\nimport ParsersVolume from './parsers.volume';\n\nimport * as OpenJPEG from 'OpenJPEG.js/dist/openJPEG-DynamicMemory-browser.js';\n\nimport { RLEDecoder } from '../decoders/decoders.rle';\n\nlet DicomParser = require('dicom-parser');\nlet Jpeg = require('jpeg-lossless-decoder-js');\nlet JpegBaseline = require('../../external/scripts/jpeg');\nlet Jpx = require('../../external/scripts/jpx');\nlet openJPEG; // for one time initialization\n\n/**\n * Dicom parser is a combination of utilities to get a VJS image from dicom files.\n *scripts\n * Relies on dcmjs, jquery, HTML5 fetch API, HTML5 promise API.\n *\n * image-JPEG2000 (jpx) is still in use, because Cornerstone does it and may have identified some edge corners.\n * Ref:\n * https://github.com/cornerstonejs/cornerstoneWADOImageLoader/blob/master/docs/Codecs.md\n * https://github.com/cornerstonejs/cornerstoneWADOImageLoader/blob/a9b408f5562bde5543fc6986bd23fbac9d676562/src/shared/decoders/decodeJPEG2000.js#L127-L134\n *\n * @module parsers/dicom\n *\n * @param arrayBuffer {arraybuffer} - List of files to be parsed. It is urls from which\n * VJS.parsers.dicom can pull the data from.\n */\nexport default class ParsersDicom extends ParsersVolume {\n constructor(data, id) {\n super();\n\n this._id = id;\n\n this._arrayBuffer = data.buffer;\n\n let byteArray = new Uint8Array(this._arrayBuffer);\n\n // catch error\n // throw error if any!\n this._dataSet = null;\n\n try {\n this._dataSet = DicomParser.parseDicom(byteArray);\n } catch (e) {\n console.log(e);\n const error = new Error('parsers.dicom could not parse the file');\n throw error;\n }\n }\n\n /**\n * Series instance UID (0020,000e)\n *\n * @return {String}\n */\n seriesInstanceUID() {\n return this._dataSet.string('x0020000e');\n }\n\n /**\n * Study instance UID (0020,000d)\n *\n * @return {String}\n */\n studyInstanceUID() {\n return this._dataSet.string('x0020000d');\n }\n\n /**\n * Get modality (0008,0060)\n *\n * @return {String}\n */\n modality() {\n return this._dataSet.string('x00080060');\n }\n\n /**\n * Segmentation type (0062,0001)\n *\n * @return {String}\n */\n segmentationType() {\n return this._dataSet.string('x00620001');\n }\n\n /**\n * Segmentation segments\n * -> Sequence of segments (0062,0002)\n * -> Recommended Display CIELab\n * -> Segmentation Code\n * -> Segment Number (0062,0004)\n * -> Segment Label (0062,0005)\n * -> Algorithm Type (0062,0008)\n *\n * @return {*}\n */\n segmentationSegments() {\n let segmentationSegments = [];\n let segmentSequence = this._dataSet.elements.x00620002;\n\n if (!segmentSequence) {\n return segmentationSegments;\n }\n\n for (let i = 0; i < segmentSequence.items.length; i++) {\n let recommendedDisplayCIELab = this._recommendedDisplayCIELab(segmentSequence.items[i]);\n let segmentationCode = this._segmentationCode(segmentSequence.items[i]);\n let segmentNumber = segmentSequence.items[i].dataSet.uint16('x00620004');\n let segmentLabel = segmentSequence.items[i].dataSet.string('x00620005');\n let segmentAlgorithmType = segmentSequence.items[i].dataSet.string('x00620008');\n\n segmentationSegments.push({\n recommendedDisplayCIELab,\n segmentationCodeDesignator: segmentationCode['segmentationCodeDesignator'],\n segmentationCodeValue: segmentationCode['segmentationCodeValue'],\n segmentationCodeMeaning: segmentationCode['segmentationCodeMeaning'],\n segmentNumber,\n segmentLabel,\n segmentAlgorithmType,\n });\n }\n\n return segmentationSegments;\n }\n\n /**\n * Segmentation code\n * -> Code designator (0008,0102)\n * -> Code value (0008,0200)\n * -> Code Meaning Type (0008,0104)\n *\n * @param {*} segment\n *\n * @return {*}\n */\n _segmentationCode(segment) {\n let segmentationCodeDesignator = 'unknown';\n let segmentationCodeValue = 'unknown';\n let segmentationCodeMeaning = 'unknown';\n let element = segment.dataSet.elements.x00082218;\n\n if (element && element.items && element.items.length > 0) {\n segmentationCodeDesignator = element.items[0].dataSet.string('x00080102');\n segmentationCodeValue = element.items[0].dataSet.string('x00080100');\n segmentationCodeMeaning = element.items[0].dataSet.string('x00080104');\n }\n\n return {\n segmentationCodeDesignator,\n segmentationCodeValue,\n segmentationCodeMeaning,\n };\n }\n\n /**\n * Recommended display CIELab\n *\n * @param {*} segment\n *\n * @return {*}\n */\n _recommendedDisplayCIELab(segment) {\n if (!segment.dataSet.elements.x0062000d) {\n return null;\n }\n\n let offset = segment.dataSet.elements.x0062000d.dataOffset;\n let length = segment.dataSet.elements.x0062000d.length;\n let byteArray = segment.dataSet.byteArray.slice(offset, offset + length);\n\n // https://www.dabsoft.ch/dicom/3/C.10.7.1.1/\n let CIELabScaled = new Uint16Array(length / 2);\n for (let i = 0; i < length / 2; i++) {\n CIELabScaled[i] = (byteArray[2 * i + 1] << 8) + byteArray[2 * i];\n }\n\n let CIELabNormalized = [\n (CIELabScaled[0] / 65535) * 100,\n (CIELabScaled[1] / 65535) * 255 - 128,\n (CIELabScaled[2] / 65535) * 255 - 128,\n ];\n\n return CIELabNormalized;\n }\n\n /**\n * Raw dataset\n * \n * @return {*}\n */\n rawHeader() {\n return this._dataSet;\n }\n\n /**\n * SOP Instance UID\n *\n * @param {*} frameIndex\n *\n * @return {*}\n */\n sopInstanceUID(frameIndex = 0) {\n let sopInstanceUID = this._findStringEverywhere('x2005140f', 'x00080018', frameIndex);\n return sopInstanceUID;\n }\n\n /**\n * Transfer syntax UID\n *\n * @return {*}\n */\n transferSyntaxUID() {\n return this._dataSet.string('x00020010');\n }\n\n /**\n * Study date\n *\n * @return {*}\n */\n studyDate() {\n return this._dataSet.string('x00080020');\n }\n\n /**\n * Study description\n *\n * @return {*}\n */\n studyDescription() {\n return this._dataSet.string('x00081030');\n }\n\n /**\n * Series date\n *\n * @return {*}\n */\n seriesDate() {\n return this._dataSet.string('x00080021');\n }\n\n /**\n * Series description\n *\n * @return {*}\n */\n seriesDescription() {\n return this._dataSet.string('x0008103e');\n }\n\n /**\n * Patient name\n *\n * @return {*}\n */\n patientName() {\n return this._dataSet.string('x00100010');\n }\n\n /**\n * Patient ID\n *\n * @return {*}\n */\n patientID() {\n return this._dataSet.string('x00100020');\n }\n\n /**\n * Patient birthdate\n *\n * @return {*}\n */\n patientBirthdate() {\n return this._dataSet.string('x00100030');\n }\n\n /**\n * Patient sex\n *\n * @return {*}\n */\n patientSex() {\n return this._dataSet.string('x00100040');\n }\n\n /**\n * Patient age\n *\n * @return {*}\n */\n patientAge() {\n return this._dataSet.string('x00101010');\n }\n\n /**\n * Photometric interpretation\n *\n * @return {*}\n */\n photometricInterpretation() {\n return this._dataSet.string('x00280004');\n }\n\n planarConfiguration() {\n let planarConfiguration = this._dataSet.uint16('x00280006');\n\n if (typeof planarConfiguration === 'undefined') {\n planarConfiguration = null;\n }\n\n return planarConfiguration;\n }\n\n samplesPerPixel() {\n return this._dataSet.uint16('x00280002');\n }\n\n numberOfFrames() {\n let numberOfFrames = this._dataSet.intString('x00280008');\n\n // need something smarter!\n if (typeof numberOfFrames === 'undefined') {\n numberOfFrames = null;\n }\n\n return numberOfFrames;\n }\n\n numberOfChannels() {\n let numberOfChannels = 1;\n let photometricInterpretation = this.photometricInterpretation();\n\n if (\n !(\n photometricInterpretation !== 'RGB' &&\n photometricInterpretation !== 'PALETTE COLOR' &&\n photometricInterpretation !== 'YBR_FULL' &&\n photometricInterpretation !== 'YBR_FULL_422' &&\n photometricInterpretation !== 'YBR_PARTIAL_422' &&\n photometricInterpretation !== 'YBR_PARTIAL_420' &&\n photometricInterpretation !== 'YBR_RCT'\n )\n ) {\n numberOfChannels = 3;\n }\n\n // make sure we return a number! (not a string!)\n return numberOfChannels;\n }\n\n invert() {\n let photometricInterpretation = this.photometricInterpretation();\n\n return photometricInterpretation === 'MONOCHROME1' ? true : false;\n }\n\n imageOrientation(frameIndex = 0) {\n // expect frame index to start at 0!\n let imageOrientation = this._findStringEverywhere('x00209116', 'x00200037', frameIndex);\n\n // format image orientation ('1\\0\\0\\0\\1\\0') to array containing 6 numbers\n if (imageOrientation) {\n // make sure we return a number! (not a string!)\n // might not need to split (floatString + index)\n imageOrientation = imageOrientation.split('\\\\').map(UtilsCore.stringToNumber);\n }\n\n return imageOrientation;\n }\n\n referencedSegmentNumber(frameIndex = 0) {\n let referencedSegmentNumber = -1;\n let referencedSegmentNumberElement = this._findInGroupSequence(\n 'x52009230',\n 'x0062000a',\n frameIndex\n );\n\n if (referencedSegmentNumberElement !== null) {\n referencedSegmentNumber = referencedSegmentNumberElement.uint16('x0062000b');\n }\n\n return referencedSegmentNumber;\n }\n\n pixelAspectRatio() {\n let pixelAspectRatio = [\n this._dataSet.intString('x00280034', 0),\n this._dataSet.intString('x00280034', 1),\n ];\n\n // need something smarter!\n if (typeof pixelAspectRatio[0] === 'undefined') {\n pixelAspectRatio = null;\n }\n\n // make sure we return a number! (not a string!)\n return pixelAspectRatio;\n }\n\n imagePosition(frameIndex = 0) {\n let imagePosition = this._findStringEverywhere('x00209113', 'x00200032', frameIndex);\n\n // format image orientation ('1\\0\\0\\0\\1\\0') to array containing 6 numbers\n if (imagePosition) {\n // make sure we return a number! (not a string!)\n imagePosition = imagePosition.split('\\\\').map(UtilsCore.stringToNumber);\n }\n\n return imagePosition;\n }\n\n instanceNumber(frameIndex = 0) {\n let instanceNumber = null;\n // first look for frame!\n // per frame functionnal group sequence\n let perFrameFunctionnalGroupSequence = this._dataSet.elements.x52009230;\n\n if (typeof perFrameFunctionnalGroupSequence !== 'undefined') {\n if (perFrameFunctionnalGroupSequence.items[frameIndex].dataSet.elements.x2005140f) {\n let planeOrientationSequence =\n perFrameFunctionnalGroupSequence.items[frameIndex].dataSet.elements.x2005140f.items[0]\n .dataSet;\n instanceNumber = planeOrientationSequence.intString('x00200013');\n } else {\n instanceNumber = this._dataSet.intString('x00200013');\n\n if (typeof instanceNumber === 'undefined') {\n instanceNumber = null;\n }\n }\n } else {\n // should we default to undefined??\n // default orientation\n instanceNumber = this._dataSet.intString('x00200013');\n\n if (typeof instanceNumber === 'undefined') {\n instanceNumber = null;\n }\n }\n\n return instanceNumber;\n }\n\n pixelSpacing(frameIndex = 0) {\n // expect frame index to start at 0!\n let pixelSpacing = this._findStringEverywhere('x00289110', 'x00280030', frameIndex);\n\n if (pixelSpacing === null) {\n pixelSpacing = this._dataSet.string('x00181164');\n\n if (typeof pixelSpacing === 'undefined') {\n pixelSpacing = null;\n }\n }\n\n if (pixelSpacing) {\n const splittedSpacing = pixelSpacing.split('\\\\');\n if (splittedSpacing.length !== 2) {\n console.error(`DICOM spacing format is not supported (could not split string on \"\\\\\"): ${pixelSpacing}`);\n pixelSpacing = null;\n } else {\n pixelSpacing = splittedSpacing.map(UtilsCore.stringToNumber);\n }\n }\n\n return pixelSpacing;\n }\n\n ultrasoundRegions(frameIndex = 0) {\n const sequence = this._dataSet.elements['x00186011'];\n\n if (!sequence || !sequence.items) {\n return [];\n }\n\n const ultrasoundRegions = [];\n\n sequence.items.forEach(item => {\n ultrasoundRegions.push({\n x0: item.dataSet.uint32('x00186018'),\n y0: item.dataSet.uint32('x0018601a'),\n x1: item.dataSet.uint32('x0018601c'),\n y1: item.dataSet.uint32('x0018601e'),\n axisX: item.dataSet.int32('x00186020') || null, // optional\n axisY: item.dataSet.int32('x00186022') || null, // optional\n unitsX: this._getUnitsName(item.dataSet.uint16('x00186024')),\n unitsY: this._getUnitsName(item.dataSet.uint16('x00186026')),\n deltaX: item.dataSet.double('x0018602c'),\n deltaY: item.dataSet.double('x0018602e'),\n });\n });\n\n return ultrasoundRegions;\n }\n\n frameTime(frameIndex = 0) {\n let frameIncrementPointer = this._dataSet.uint16('x00280009', 1);\n let frameRate = this._dataSet.intString('x00082144');\n let frameTime;\n\n if (typeof frameIncrementPointer === 'number') {\n frameIncrementPointer = frameIncrementPointer.toString(16);\n frameTime = this._dataSet.floatString('x0018' + frameIncrementPointer);\n }\n\n if (typeof frameTime === 'undefined' && typeof frameRate === 'number') {\n frameTime = 1000 / frameRate;\n }\n\n if (typeof frameTime === 'undefined') {\n frameTime = null;\n }\n\n return frameTime;\n }\n\n rows(frameIndex = 0) {\n let rows = this._dataSet.uint16('x00280010');\n\n if (typeof rows === 'undefined') {\n rows = null;\n // print warning at least...\n }\n\n return rows;\n }\n\n columns(frameIndex = 0) {\n let columns = this._dataSet.uint16('x00280011');\n\n if (typeof columns === 'undefined') {\n columns = null;\n // print warning at least...\n }\n\n return columns;\n }\n\n pixelType(frameIndex = 0) {\n // 0 integer, 1 float\n // dicom only support integers\n return 0;\n }\n\n pixelRepresentation(frameIndex = 0) {\n let pixelRepresentation = this._dataSet.uint16('x00280103');\n return pixelRepresentation;\n }\n\n pixelPaddingValue(frameIndex = 0) {\n let padding = this._dataSet.int16('x00280120');\n\n if (typeof padding === 'undefined') {\n padding = null;\n }\n\n return padding;\n }\n\n bitsAllocated(frameIndex = 0) {\n // expect frame index to start at 0!\n let bitsAllocated = this._dataSet.uint16('x00280100');\n return bitsAllocated;\n }\n\n highBit(frameIndex = 0) {\n // expect frame index to start at 0!\n let highBit = this._dataSet.uint16('x00280102');\n return highBit;\n }\n\n rescaleIntercept(frameIndex = 0) {\n return this._findFloatStringInFrameGroupSequence('x00289145', 'x00281052', frameIndex);\n }\n\n rescaleSlope(frameIndex = 0) {\n return this._findFloatStringInFrameGroupSequence('x00289145', 'x00281053', frameIndex);\n }\n\n windowCenter(frameIndex = 0) {\n return this._findFloatStringInFrameGroupSequence('x00289132', 'x00281050', frameIndex);\n }\n\n windowWidth(frameIndex = 0) {\n return this._findFloatStringInFrameGroupSequence('x00289132', 'x00281051', frameIndex);\n }\n\n sliceThickness(frameIndex = 0) {\n return this._findFloatStringInFrameGroupSequence('x00289110', 'x00180050', frameIndex);\n }\n\n spacingBetweenSlices(frameIndex = 0) {\n let spacing = this._dataSet.floatString('x00180088');\n\n if (typeof spacing === 'undefined') {\n spacing = null;\n }\n\n return spacing;\n }\n\n dimensionIndexValues(frameIndex = 0) {\n let dimensionIndexValues = null;\n\n // try to get it from enhanced MR images\n // per-frame functionnal group sequence\n let perFrameFunctionnalGroupSequence = this._dataSet.elements.x52009230;\n\n if (typeof perFrameFunctionnalGroupSequence !== 'undefined') {\n let frameContentSequence =\n perFrameFunctionnalGroupSequence.items[frameIndex].dataSet.elements.x00209111;\n if (frameContentSequence !== undefined && frameContentSequence !== null) {\n frameContentSequence = frameContentSequence.items[0].dataSet;\n let dimensionIndexValuesElt = frameContentSequence.elements.x00209157;\n if (dimensionIndexValuesElt !== undefined && dimensionIndexValuesElt !== null) {\n // /4 because UL\n let nbValues = dimensionIndexValuesElt.length / 4;\n dimensionIndexValues = [];\n\n for (let i = 0; i < nbValues; i++) {\n dimensionIndexValues.push(frameContentSequence.uint32('x00209157', i));\n }\n }\n }\n }\n\n return dimensionIndexValues;\n }\n\n inStackPositionNumber(frameIndex = 0) {\n let inStackPositionNumber = null;\n\n // try to get it from enhanced MR images\n // per-frame functionnal group sequence\n let perFrameFunctionnalGroupSequence = this._dataSet.elements.x52009230;\n\n if (typeof perFrameFunctionnalGroupSequence !== 'undefined') {\n // NOT A PHILIPS TRICK!\n let philipsPrivateSequence =\n perFrameFunctionnalGroupSequence.items[frameIndex].dataSet.elements.x00209111.items[0]\n .dataSet;\n inStackPositionNumber = philipsPrivateSequence.uint32('x00209057');\n } else {\n inStackPositionNumber = null;\n }\n\n return inStackPositionNumber;\n }\n\n stackID(frameIndex = 0) {\n let stackID = null;\n\n // try to get it from enhanced MR images\n // per-frame functionnal group sequence\n let perFrameFunctionnalGroupSequence = this._dataSet.elements.x52009230;\n\n if (typeof perFrameFunctionnalGroupSequence !== 'undefined') {\n // NOT A PHILIPS TRICK!\n let philipsPrivateSequence =\n perFrameFunctionnalGroupSequence.items[frameIndex].dataSet.elements.x00209111.items[0]\n .dataSet;\n stackID = philipsPrivateSequence.intString('x00209056');\n } else {\n stackID = null;\n }\n\n return stackID;\n }\n\n extractPixelData(frameIndex = 0) {\n // decompress\n let decompressedData = this._decodePixelData(frameIndex);\n\n let numberOfChannels = this.numberOfChannels();\n\n if (numberOfChannels > 1) {\n return this._convertColorSpace(decompressedData);\n } else {\n return decompressedData;\n }\n }\n\n //\n // private methods\n //\n\n _findInGroupSequence(sequence, subsequence, index) {\n let functionalGroupSequence = this._dataSet.elements[sequence];\n\n if (typeof functionalGroupSequence !== 'undefined') {\n let inSequence = functionalGroupSequence.items[index].dataSet.elements[subsequence];\n\n if (typeof inSequence !== 'undefined') {\n return inSequence.items[0].dataSet;\n }\n }\n\n return null;\n }\n\n _findStringInGroupSequence(sequence, subsequence, tag, index) {\n // index = 0 if shared!!!\n let dataSet = this._findInGroupSequence(sequence, subsequence, index);\n\n if (dataSet !== null) {\n return dataSet.string(tag);\n }\n\n return null;\n }\n\n _findStringInFrameGroupSequence(subsequence, tag, index) {\n return (\n this._findStringInGroupSequence('x52009229', subsequence, tag, 0) ||\n this._findStringInGroupSequence('x52009230', subsequence, tag, index)\n );\n }\n\n _findStringEverywhere(subsequence, tag, index) {\n let targetString = this._findStringInFrameGroupSequence(subsequence, tag, index);\n // PET MODULE\n if (targetString === null) {\n const petModule = 'x00540022';\n targetString = this._findStringInSequence(petModule, tag);\n }\n\n if (targetString === null) {\n targetString = this._dataSet.string(tag);\n }\n\n if (typeof targetString === 'undefined') {\n targetString = null;\n }\n\n return targetString;\n }\n\n _findStringInSequence(sequenceTag, tag, index) {\n const sequence = this._dataSet.elements[sequenceTag];\n\n let targetString;\n if (sequence) {\n targetString = sequence.items[0].dataSet.string(tag);\n }\n\n if (typeof targetString === 'undefined') {\n targetString = null;\n }\n\n return targetString;\n }\n\n _findFloatStringInGroupSequence(sequence, subsequence, tag, index) {\n let dataInGroupSequence = this._dataSet.floatString(tag);\n\n // try to get it from enhanced MR images\n // per-frame functionnal group\n if (typeof dataInGroupSequence === 'undefined') {\n dataInGroupSequence = this._findInGroupSequence(sequence, subsequence, index);\n\n if (dataInGroupSequence !== null) {\n return dataInGroupSequence.floatString(tag);\n }\n }\n\n return dataInGroupSequence;\n }\n\n _findFloatStringInFrameGroupSequence(subsequence, tag, index) {\n return (\n this._findFloatStringInGroupSequence('x52009229', subsequence, tag, 0) ||\n this._findFloatStringInGroupSequence('x52009230', subsequence, tag, index)\n );\n }\n\n _decodePixelData(frameIndex = 0) {\n // if compressed..?\n let transferSyntaxUID = this.transferSyntaxUID();\n\n // find compression scheme\n if (\n transferSyntaxUID === '1.2.840.10008.1.2.4.90' ||\n // JPEG 2000 Lossless\n transferSyntaxUID === '1.2.840.10008.1.2.4.91'\n ) {\n // JPEG 2000 Lossy\n return this._decodeJ2K(frameIndex);\n } else if (\n transferSyntaxUID === '1.2.840.10008.1.2.5'\n // decodeRLE\n ) {\n return this._decodeRLE(frameIndex);\n } else if (\n transferSyntaxUID === '1.2.840.10008.1.2.4.57' ||\n // JPEG Lossless, Nonhierarchical (Processes 14)\n transferSyntaxUID === '1.2.840.10008.1.2.4.70'\n ) {\n // JPEG Lossless, Nonhierarchical (Processes 14 [Selection 1])\n return this._decodeJPEGLossless(frameIndex);\n } else if (\n transferSyntaxUID === '1.2.840.10008.1.2.4.50' ||\n // JPEG Baseline lossy process 1 (8 bit)\n transferSyntaxUID === '1.2.840.10008.1.2.4.51'\n ) {\n // JPEG Baseline lossy process 2 & 4 (12 bit)\n return this._decodeJPEGBaseline(frameIndex);\n } else if (\n transferSyntaxUID === '1.2.840.10008.1.2' ||\n // Implicit VR Little Endian\n transferSyntaxUID === '1.2.840.10008.1.2.1'\n ) {\n // Explicit VR Little Endian\n return this._decodeUncompressed(frameIndex);\n } else if (transferSyntaxUID === '1.2.840.10008.1.2.2') {\n // Explicit VR Big Endian\n let frame = this._decodeUncompressed(frameIndex);\n // and sawp it!\n return this._swapFrame(frame);\n } else {\n throw {\n error: `no decoder for transfer syntax ${transferSyntaxUID}`,\n };\n }\n }\n\n // github.com/chafey/cornerstoneWADOImageLoader/blob/master/src/imageLoader/wadouri/getEncapsulatedImageFrame.js\n framesAreFragmented() {\n const numberOfFrames = this._dataSet.intString('x00280008');\n const pixelDataElement = this._dataSet.elements.x7fe00010;\n\n return numberOfFrames !== pixelDataElement.fragments.length;\n }\n\n getEncapsulatedImageFrame(frameIndex) {\n if (\n this._dataSet.elements.x7fe00010 &&\n this._dataSet.elements.x7fe00010.basicOffsetTable.length\n ) {\n // Basic Offset Table is not empty\n return DicomParser.readEncapsulatedImageFrame(\n this._dataSet,\n this._dataSet.elements.x7fe00010,\n frameIndex\n );\n }\n\n if (this.framesAreFragmented()) {\n // Basic Offset Table is empty\n return DicomParser.readEncapsulatedImageFrame(\n this._dataSet,\n this._dataSet.elements.x7fe00010,\n frameIndex,\n DicomParser.createJPEGBasicOffsetTable(this._dataSet, this._dataSet.elements.x7fe00010)\n );\n }\n\n return DicomParser.readEncapsulatedPixelDataFromFragments(\n this._dataSet,\n this._dataSet.elements.x7fe00010,\n frameIndex\n );\n }\n\n // used if OpenJPEG library isn't loaded (OHIF/image-JPEG2000 isn't supported and can't parse some images)\n _decodeJpx(frameIndex = 0) {\n const jpxImage = new Jpx();\n // https://github.com/OHIF/image-JPEG2000/issues/6\n // It currently returns either Int16 or Uint16 based on whether the codestream is signed or not.\n jpxImage.parse(this.getEncapsulatedImageFrame(frameIndex));\n\n if (jpxImage.componentsCount !== 1) {\n throw new Error(\n 'JPEG2000 decoder returned a componentCount of ${componentsCount}, when 1 is expected'\n );\n }\n\n if (jpxImage.tiles.length !== 1) {\n throw new Error('JPEG2000 decoder returned a tileCount of ${tileCount}, when 1 is expected');\n }\n\n return jpxImage.tiles[0].items;\n }\n\n _decodeOpenJPEG(frameIndex = 0) {\n const encodedPixelData = this.getEncapsulatedImageFrame(frameIndex);\n const bytesPerPixel = this.bitsAllocated(frameIndex) <= 8 ? 1 : 2;\n const signed = this.pixelRepresentation(frameIndex) === 1;\n const dataPtr = openJPEG._malloc(encodedPixelData.length);\n\n openJPEG.writeArrayToMemory(encodedPixelData, dataPtr);\n\n // create param outpout\n const imagePtrPtr = openJPEG._malloc(4);\n const imageSizePtr = openJPEG._malloc(4);\n const imageSizeXPtr = openJPEG._malloc(4);\n const imageSizeYPtr = openJPEG._malloc(4);\n const imageSizeCompPtr = openJPEG._malloc(4);\n const ret = openJPEG.ccall(\n 'jp2_decode',\n 'number',\n ['number', 'number', 'number', 'number', 'number', 'number', 'number'],\n [\n dataPtr,\n encodedPixelData.length,\n imagePtrPtr,\n imageSizePtr,\n imageSizeXPtr,\n imageSizeYPtr,\n imageSizeCompPtr,\n ]\n );\n const imagePtr = openJPEG.getValue(imagePtrPtr, '*');\n\n if (ret !== 0) {\n console.log('[opj_decode] decoding failed!');\n openJPEG._free(dataPtr);\n openJPEG._free(imagePtr);\n openJPEG._free(imageSizeXPtr);\n openJPEG._free(imageSizeYPtr);\n openJPEG._free(imageSizePtr);\n openJPEG._free(imageSizeCompPtr);\n\n return;\n }\n\n // Copy the data from the EMSCRIPTEN heap into the correct type array\n const length =\n openJPEG.getValue(imageSizeXPtr, 'i32') *\n openJPEG.getValue(imageSizeYPtr, 'i32') *\n openJPEG.getValue(imageSizeCompPtr, 'i32');\n const src32 = new Int32Array(openJPEG.HEAP32.buffer, imagePtr, length);\n let pixelData;\n\n if (bytesPerPixel === 1) {\n if (Uint8Array.from) {\n pixelData = Uint8Array.from(src32);\n } else {\n pixelData = new Uint8Array(length);\n for (let i = 0; i < length; i++) {\n pixelData[i] = src32[i];\n }\n }\n } else if (signed) {\n if (Int16Array.from) {\n pixelData = Int16Array.from(src32);\n } else {\n pixelData = new Int16Array(length);\n for (let i = 0; i < length; i++) {\n pixelData[i] = src32[i];\n }\n }\n } else if (Uint16Array.from) {\n pixelData = Uint16Array.from(src32);\n } else {\n pixelData = new Uint16Array(length);\n for (let i = 0; i < length; i++) {\n pixelData[i] = src32[i];\n }\n }\n\n openJPEG._free(dataPtr);\n openJPEG._free(imagePtrPtr);\n openJPEG._free(imagePtr);\n openJPEG._free(imageSizePtr);\n openJPEG._free(imageSizeXPtr);\n openJPEG._free(imageSizeYPtr);\n openJPEG._free(imageSizeCompPtr);\n\n return pixelData;\n }\n\n // from cornerstone\n _decodeJ2K(frameIndex = 0) {\n if (typeof OpenJPEG === 'undefined') {\n // OpenJPEG decoder not loaded\n return this._decodeJpx(frameIndex);\n }\n\n if (!openJPEG) {\n openJPEG = OpenJPEG();\n if (!openJPEG || !openJPEG._jp2_decode) {\n // OpenJPEG failed to initialize\n return this._decodeJpx(frameIndex);\n }\n }\n\n return this._decodeOpenJPEG(frameIndex);\n }\n\n _decodeRLE(frameIndex = 0) {\n const bitsAllocated = this.bitsAllocated(frameIndex);\n const planarConfiguration = this.planarConfiguration();\n const columns = this.columns();\n const rows = this.rows();\n const samplesPerPixel = this.samplesPerPixel(frameIndex);\n const pixelRepresentation = this.pixelRepresentation(frameIndex);\n\n // format data for the RLE decoder\n const imageFrame = {\n pixelRepresentation,\n bitsAllocated,\n planarConfiguration,\n columns,\n rows,\n samplesPerPixel,\n };\n\n const pixelData = DicomParser.readEncapsulatedPixelDataFromFragments(\n this._dataSet,\n this._dataSet.elements.x7fe00010,\n frameIndex\n );\n\n const decoded = RLEDecoder(imageFrame, pixelData);\n return decoded.pixelData;\n }\n\n // from cornerstone\n _decodeJPEGLossless(frameIndex = 0) {\n let encodedPixelData = this.getEncapsulatedImageFrame(frameIndex);\n let pixelRepresentation = this.pixelRepresentation(frameIndex);\n let bitsAllocated = this.bitsAllocated(frameIndex);\n let byteOutput = bitsAllocated <= 8 ? 1 : 2;\n let decoder = new Jpeg.lossless.Decoder();\n let decompressedData = decoder.decode(\n encodedPixelData.buffer,\n encodedPixelData.byteOffset,\n encodedPixelData.length,\n byteOutput\n );\n\n if (pixelRepresentation === 0) {\n if (byteOutput === 2) {\n return new Uint16Array(decompressedData.buffer);\n } else {\n // untested!\n return new Uint8Array(decompressedData.buffer);\n }\n } else {\n return new Int16Array(decompressedData.buffer);\n }\n }\n\n _decodeJPEGBaseline(frameIndex = 0) {\n let encodedPixelData = this.getEncapsulatedImageFrame(frameIndex);\n let rows = this.rows(frameIndex);\n let columns = this.columns(frameIndex);\n let bitsAllocated = this.bitsAllocated(frameIndex);\n let jpegBaseline = new JpegBaseline();\n jpegBaseline.parse(encodedPixelData);\n\n if (bitsAllocated === 8) {\n return jpegBaseline.getData(columns, rows);\n } else if (bitsAllocated === 16) {\n return jpegBaseline.getData16(columns, rows);\n }\n }\n\n _decodeUncompressed(frameIndex = 0) {\n let pixelRepresentation = this.pixelRepresentation(frameIndex);\n let bitsAllocated = this.bitsAllocated(frameIndex);\n let pixelDataElement = this._dataSet.elements.x7fe00010;\n let pixelDataOffset = pixelDataElement.dataOffset;\n let numberOfChannels = this.numberOfChannels();\n let numPixels = this.rows(frameIndex) * this.columns(frameIndex) * numberOfChannels;\n let frameOffset = 0;\n let buffer = this._dataSet.byteArray.buffer;\n\n if (pixelRepresentation === 0 && bitsAllocated === 8) {\n // unsigned 8 bit\n frameOffset = pixelDataOffset + frameIndex * numPixels;\n return new Uint8Array(buffer, frameOffset, numPixels);\n } else if (pixelRepresentation === 0 && bitsAllocated === 16) {\n // unsigned 16 bit\n frameOffset = pixelDataOffset + frameIndex * numPixels * 2;\n return new Uint16Array(buffer, frameOffset, numPixels);\n } else if (pixelRepresentation === 1 && bitsAllocated === 16) {\n // signed 16 bit\n frameOffset = pixelDataOffset + frameIndex * numPixels * 2;\n return new Int16Array(buffer, frameOffset, numPixels);\n } else if (pixelRepresentation === 0 && bitsAllocated === 32) {\n // unsigned 32 bit\n frameOffset = pixelDataOffset + frameIndex * numPixels * 4;\n return new Uint32Array(buffer, frameOffset, numPixels);\n } else if (pixelRepresentation === 0 && bitsAllocated === 1) {\n let newBuffer = new ArrayBuffer(numPixels);\n let newArray = new Uint8Array(newBuffer);\n\n frameOffset = pixelDataOffset + frameIndex * numPixels;\n let index = 0;\n\n let bitStart = frameIndex * numPixels;\n let bitEnd = frameIndex * numPixels + numPixels;\n\n let byteStart = Math.floor(bitStart / 8);\n let bitStartOffset = bitStart - byteStart * 8;\n let byteEnd = Math.ceil(bitEnd / 8);\n\n let targetBuffer = new Uint8Array(buffer, pixelDataOffset);\n\n for (let i = byteStart; i <= byteEnd; i++) {\n while (bitStartOffset < 8) {\n switch (bitStartOffset) {\n case 0:\n newArray[index] = targetBuffer[i] & 0x0001;\n break;\n case 1:\n newArray[index] = (targetBuffer[i] >>> 1) & 0x0001;\n break;\n case 2:\n newArray[index] = (targetBuffer[i] >>> 2) & 0x0001;\n break;\n case 3:\n newArray[index] = (targetBuffer[i] >>> 3) & 0x0001;\n break;\n case 4:\n newArray[index] = (targetBuffer[i] >>> 4) & 0x0001;\n break;\n case 5:\n newArray[index] = (targetBuffer[i] >>> 5) & 0x0001;\n break;\n case 6:\n newArray[index] = (targetBuffer[i] >>> 6) & 0x0001;\n break;\n case 7:\n newArray[index] = (targetBuffer[i] >>> 7) & 0x0001;\n break;\n default:\n break;\n }\n\n bitStartOffset++;\n index++;\n // if return..\n if (index >= numPixels) {\n return newArray;\n }\n }\n bitStartOffset = 0;\n }\n }\n }\n\n _interpretAsRGB(photometricInterpretation) {\n const rgbLikeTypes = ['RGB', 'YBR_RCT', 'YBR_ICT', 'YBR_FULL_422'];\n\n return rgbLikeTypes.indexOf(photometricInterpretation) !== -1;\n }\n\n _convertColorSpace(uncompressedData) {\n let rgbData = null;\n let photometricInterpretation = this.photometricInterpretation();\n let planarConfiguration = this.planarConfiguration();\n if (planarConfiguration === null) {\n planarConfiguration = 0;\n window.console.log('Planar Configuration was not set and was defaulted to 0');\n }\n\n const interpretAsRGB = this._interpretAsRGB(photometricInterpretation);\n\n if (interpretAsRGB && planarConfiguration === 0) {\n // ALL GOOD, ALREADY ORDERED\n // planar or non planar planarConfiguration\n rgbData = uncompressedData;\n } else if (interpretAsRGB && planarConfiguration === 1) {\n if (uncompressedData instanceof Int8Array) {\n rgbData = new Int8Array(uncompressedData.length);\n } else if (uncompressedData instanceof Uint8Array) {\n rgbData = new Uint8Array(uncompressedData.length);\n } else if (uncompressedData instanceof Int16Array) {\n rgbData = new Int16Array(uncompressedData.length);\n } else if (uncompressedData instanceof Uint16Array) {\n rgbData = new Uint16Array(uncompressedData.length);\n } else {\n const error = new Error(`unsuported typed array: ${uncompressedData}`);\n throw error;\n }\n\n let numPixels = uncompressedData.length / 3;\n let rgbaIndex = 0;\n let rIndex = 0;\n let gIndex = numPixels;\n let bIndex = numPixels * 2;\n for (let i = 0; i < numPixels; i++) {\n rgbData[rgbaIndex++] = uncompressedData[rIndex++]; // red\n rgbData[rgbaIndex++] = uncompressedData[gIndex++]; // green\n rgbData[rgbaIndex++] = uncompressedData[bIndex++]; // blue\n }\n } else if (photometricInterpretation === 'YBR_FULL') {\n if (uncompressedData instanceof Int8Array) {\n rgbData = new Int8Array(uncompressedData.length);\n } else if (uncompressedData instanceof Uint8Array) {\n rgbData = new Uint8Array(uncompressedData.length);\n } else if (uncompressedData instanceof Int16Array) {\n rgbData = new Int16Array(uncompressedData.length);\n } else if (uncompressedData instanceof Uint16Array) {\n rgbData = new Uint16Array(uncompressedData.length);\n } else {\n const error = new Error(`unsuported typed array: ${uncompressedData}`);\n throw error;\n }\n\n // https://github.com/chafey/cornerstoneWADOImageLoader/blob/master/src/decodeYBRFull.js\n let nPixels = uncompressedData.length / 3;\n let ybrIndex = 0;\n let rgbaIndex = 0;\n for (let i = 0; i < nPixels; i++) {\n let y = uncompressedData[ybrIndex++];\n let cb = uncompressedData[ybrIndex++];\n let cr = uncompressedData[ybrIndex++];\n rgbData[rgbaIndex++] = y + 1.402 * (cr - 128); // red\n rgbData[rgbaIndex++] = y - 0.34414 * (cb - 128) - 0.71414 * (cr - 128); // green\n rgbData[rgbaIndex++] = y + 1.772 * (cb - 128); // blue\n // rgbData[rgbaIndex++] = 255; //alpha\n }\n } else {\n const error = new Error(\n `photometric interpolation not supported: ${photometricInterpretation}`\n );\n throw error;\n }\n\n return rgbData;\n }\n\n /**\n * Swap bytes in frame.\n */\n _swapFrame(frame) {\n // swap bytes ( if 8bits (1byte), nothing to swap)\n let bitsAllocated = this.bitsAllocated();\n\n if (bitsAllocated === 16) {\n for (let i = 0; i < frame.length; i++) {\n frame[i] = this._swap16(frame[i]);\n }\n } else if (bitsAllocated === 32) {\n for (let i = 0; i < frame.length; i++) {\n frame[i] = this._swap32(frame[i]);\n }\n }\n\n return frame;\n }\n\n _getUnitsName(value) {\n const units = {\n 0: 'none',\n 1: 'percent',\n 2: 'dB',\n 3: 'cm',\n 4: 'seconds',\n 5: 'hertz',\n 6: 'dB/seconds',\n 7: 'cm/sec',\n 8: 'cm2',\n 9: 'cm2/sec',\n 10: 'cm3',\n 11: 'cm3/sec',\n 12: 'degrees',\n };\n\n return units.hasOwnProperty(value) ? units[value] : 'none';\n }\n}\n","import Dicom from './parsers.dicom';\nimport Mgh from './parsers.mgh';\nimport Nifti from './parsers.nifti';\nimport Nrrd from './parsers.nrrd';\n\nexport { Dicom as DicomParser, Mgh as MghParser, Nifti as NiftiParser, Nrrd as NrrdParser };\n","/** * Imports ***/\nimport ParsersVolume from './parsers.volume';\n\nimport { Vector3 } from 'three/src/math/Vector3';\n\n/**\n * @module parsers/mgh\n */\nexport default class ParsersMgh extends ParsersVolume {\n constructor(data, id) {\n super();\n\n /**\n * @member\n * @type {arraybuffer}\n */\n this._id = id;\n this._url = data.url;\n this._buffer = null;\n this._bufferPos = 0;\n this._dataPos = 0;\n this._pixelData = null;\n\n // Default MGH Header as described at:\n // https://surfer.nmr.mgh.harvard.edu/fswiki/FsTutorial/MghFormat\n // Image \"header\" with default values\n this._version = 1;\n this._width = 0;\n this._height = 0;\n this._depth = 0;\n this._nframes = 0;\n this._type = ParsersMgh.MRI_UCHAR; // 0-UCHAR, 4-SHORT, 1-INT, 3-FLOAT\n this._dof = 0;\n this._goodRASFlag = 0; // True: Use directional cosines, false assume CORONAL\n this._spacingXYZ = [1, 1, 1];\n this._Xras = [-1, 0, 0];\n this._Yras = [0, 0, -1];\n this._Zras = [0, 1, 0];\n this._Cras = [0, 0, 0];\n // Image \"footer\"\n this._tr = 0; // ms\n this._flipAngle = 0; // radians\n this._te = 0; // ms\n this._ti = 0; // ms\n this._fov = 0; // from doc: IGNORE THIS FIELD (data is inconsistent)\n this._tags = []; // Will then contain variable length char strings\n\n // Other misc\n this._origin = [0, 0, 0];\n this._imageOrient = [0, 0, 0, 0, 0, 0];\n\n // Read header\n // ArrayBuffer in data.buffer may need endian swap\n this._buffer = data.buffer;\n\n this._version = this._readInt();\n this._swapEndian = false;\n if (this._version == 1) {\n // Life is good\n } else if (this._version == 16777216) {\n this._swapEndian = true;\n this._version = this._swap32(this._version);\n } else {\n const error = new Error('MGH/MGZ parser: Unknown Endian. Version reports: ' + this._version);\n throw error;\n }\n this._width = this._readInt();\n this._height = this._readInt();\n this._depth = this._readInt(); // AMI calls this frames\n this._nframes = this._readInt();\n this._type = this._readInt();\n this._dof = this._readInt();\n this._goodRASFlag = this._readShort();\n this._spacingXYZ = this._readFloat(3);\n this._Xras = this._readFloat(3);\n this._Yras = this._readFloat(3);\n this._Zras = this._readFloat(3);\n this._Cras = this._readFloat(3);\n\n this._bufferPos = 284;\n let dataSize = this._width * this._height * this._depth * this._nframes;\n let vSize = this._width * this._height * this._depth;\n\n switch (this._type) {\n case ParsersMgh.MRI_UCHAR:\n this._pixelData = this._readUChar(dataSize);\n break;\n case ParsersMgh.MRI_INT:\n this._pixelData = this._readInt(dataSize);\n break;\n case ParsersMgh.MRI_FLOAT:\n this._pixelData = this._readFloat(dataSize);\n break;\n case ParsersMgh.MRI_SHORT:\n this._pixelData = this._readShort(dataSize);\n break;\n default:\n throw Error('MGH/MGZ parser: Unknown _type. _type reports: ' + this._type);\n }\n\n this._tr = this._readFloat(1);\n this._flipAngle = this._readFloat(1);\n this._te = this._readFloat(1);\n this._ti = this._readFloat(1);\n this._fov = this._readFloat(1);\n\n let enc = new TextDecoder();\n let t = this._tagReadStart();\n while (t[0] != undefined) {\n let tagType = t[0];\n let tagLen = t[1];\n let tagValue = undefined;\n\n switch (tagType) {\n case ParsersMgh.TAG_OLD_MGH_XFORM:\n case ParsersMgh.TAG_MGH_XFORM:\n tagValue = this._readChar(tagLen);\n break;\n default:\n tagValue = this._readChar(tagLen);\n }\n tagValue = enc.decode(tagValue);\n this._tags.push({ tagType: tagType, tagValue: tagValue });\n\n // read for next loop\n t = this._tagReadStart();\n }\n\n // detect if we are in a right handed coordinate system\n const first = new Vector3().fromArray(this._Xras);\n const second = new Vector3().fromArray(this._Yras);\n const crossFirstSecond = new Vector3().crossVectors(first, second);\n const third = new Vector3().fromArray(this._Zras);\n\n if (crossFirstSecond.angleTo(third) > Math.PI / 2) {\n this._rightHanded = false;\n }\n\n // - sign to move to LPS space\n this._imageOrient = [\n -this._Xras[0],\n -this._Xras[1],\n this._Xras[2],\n -this._Yras[0],\n -this._Yras[1],\n this._Yras[2],\n ];\n\n // Calculate origin\n let fcx = this._width / 2.0;\n let fcy = this._height / 2.0;\n let fcz = this._depth / 2.0;\n\n for (let ui = 0; ui < 3; ++ui) {\n this._origin[ui] =\n this._Cras[ui] -\n (this._Xras[ui] * this._spacingXYZ[0] * fcx +\n this._Yras[ui] * this._spacingXYZ[1] * fcy +\n this._Zras[ui] * this._spacingXYZ[2] * fcz);\n }\n\n // - sign to move to LPS space\n this._origin = [-this._origin[0], -this._origin[1], this._origin[2]];\n }\n\n seriesInstanceUID() {\n // use filename + timestamp..?\n return this._url;\n }\n\n numberOfFrames() {\n // AMI calls Z component frames, not T (_nframes)\n return this._depth;\n }\n\n sopInstanceUID(frameIndex = 0) {\n return frameIndex;\n }\n\n rows(frameIndex = 0) {\n return this._width;\n }\n\n columns(frameIndex = 0) {\n return this._height;\n }\n\n pixelType(frameIndex = 0) {\n // Return: 0 integer, 1 float\n switch (this._type) {\n case ParsersMgh.MRI_UCHAR:\n case ParsersMgh.MRI_INT:\n case ParsersMgh.MRI_SHORT:\n return 0;\n case ParsersMgh.MRI_FLOAT:\n return 1;\n default:\n throw Error('MGH/MGZ parser: Unknown _type. _type reports: ' + this._type);\n }\n }\n\n bitsAllocated(frameIndex = 0) {\n switch (this._type) {\n case ParsersMgh.MRI_UCHAR:\n return 8;\n case ParsersMgh.MRI_SHORT:\n return 16;\n case ParsersMgh.MRI_INT:\n case ParsersMgh.MRI_FLOAT:\n return 32;\n default:\n throw Error('MGH/MGZ parser: Unknown _type. _type reports: ' + this._type);\n }\n }\n\n pixelSpacing(frameIndex = 0) {\n return this._spacingXYZ;\n }\n\n imageOrientation(frameIndex = 0) {\n return this._imageOrient;\n }\n\n imagePosition(frameIndex = 0) {\n return this._origin;\n }\n\n extractPixelData(frameIndex = 0) {\n let sliceSize = this._width * this._height;\n return this._pixelData.slice(frameIndex * sliceSize, (frameIndex + 1) * sliceSize);\n }\n\n // signed int32\n _readInt(len = 1) {\n let tempBuff = new DataView(this._buffer.slice(this._bufferPos, this._bufferPos + len * 4));\n this._bufferPos += len * 4;\n let v = undefined;\n if (len == 1) {\n v = tempBuff.getInt32(0, this._swapEndian);\n } else {\n v = new Int32Array(len);\n for (let i = 0; i < len; i++) {\n v[i] = tempBuff.getInt32(i * 4, this._swapEndian);\n }\n }\n return v;\n }\n\n // signed int16\n _readShort(len = 1) {\n let tempBuff = new DataView(this._buffer.slice(this._bufferPos, this._bufferPos + len * 2));\n this._bufferPos += len * 2;\n let v = undefined;\n if (len == 1) {\n v = tempBuff.getInt16(0, this._swapEndian);\n } else {\n v = new Int16Array(len);\n for (let i = 0; i < len; i++) {\n v[i] = tempBuff.getInt16(i * 2, this._swapEndian);\n }\n }\n return v;\n }\n\n // signed int64\n _readLong(len = 1) {\n let tempBuff = new DataView(this._buffer.slice(this._bufferPos, this._bufferPos + len * 8));\n this._bufferPos += len * 8;\n let v = new Uint16Array(len);\n for (let i = 0; i < len; i++) {\n /* DataView doesn't have Int64.\n * This work around based off Scalajs\n * (https://github.com/scala-js/scala-js/blob/master/library/src/main/scala/scala/scalajs/js/typedarray/DataViewExt.scala)\n * v[i]=tempBuff.getInt64(i*8,this._swapEndian);\n */\n let shiftHigh = 0;\n let shiftLow = 0;\n if (this._swapendian) {\n shiftHigh = 4;\n } else {\n shiftLow = 4;\n }\n let high = tempBuff.getInt32(i * 8 + shiftHigh, this._swapEndian);\n let low = tempBuff.getInt32(i * 8 + shiftLow, this._swapEndian);\n if (high != 0) {\n console.log('Unable to read Int64 with high word: ' + high + 'low word: ' + low);\n low = undefined;\n }\n v[i] = low;\n }\n if (len == 0) {\n return undefined;\n } else if (len == 1) {\n return v[0];\n } else {\n return v;\n }\n }\n\n // signed int8\n _readChar(len = 1) {\n let tempBuff = new DataView(this._buffer.slice(this._bufferPos, this._bufferPos + len));\n this._bufferPos += len;\n let v = undefined;\n if (len == 1) {\n v = tempBuff.getInt8(0, this._swapEndian);\n } else {\n v = new Int8Array(len);\n for (let i = 0; i < len; i++) {\n v[i] = tempBuff.getInt8(i, this._swapEndian);\n }\n }\n return v;\n }\n\n // unsigned int8\n _readUChar(len = 1) {\n let tempBuff = new DataView(this._buffer.slice(this._bufferPos, this._bufferPos + len));\n this._bufferPos += len;\n let v = undefined;\n if (len == 1) {\n v = tempBuff.getUint8(0, this._swapEndian);\n } else {\n v = new Uint8Array(len);\n for (let i = 0; i < len; i++) {\n v[i] = tempBuff.getUint8(i, this._swapEndian);\n }\n }\n return v;\n }\n\n // float32\n _readFloat(len = 1) {\n let tempBuff = new DataView(this._buffer.slice(this._bufferPos, this._bufferPos + len * 4));\n this._bufferPos += len * 4;\n let v = undefined;\n if (len == 1) {\n v = tempBuff.getFloat32(0, this._swapEndian);\n } else {\n v = new Float32Array(len);\n for (let i = 0; i < len; i++) {\n v[i] = tempBuff.getFloat32(i * 4, this._swapEndian);\n }\n }\n return v;\n }\n\n _tagReadStart() {\n if (this._bufferPos >= this._buffer.byteLength) {\n return [undefined, undefined];\n }\n let tagType = this._readInt();\n let tagLen = undefined;\n switch (tagType) {\n case ParsersMgh.TAG_OLD_MGH_XFORM:\n tagLen = this._readInt();\n tagLen -= 1;\n break;\n case ParsersMgh.TAG_OLD_SURF_GEOM:\n case ParsersMgh.TAG_OLD_USEREALRAS:\n case ParsersMgh.TAG_OLD_COLORTABLE:\n tagLen = 0;\n break;\n default:\n tagLen = this._readLong();\n }\n if (tagLen == undefined) {\n tagType = undefined;\n }\n return [tagType, tagLen];\n }\n}\n\n// https://github.com/freesurfer/freesurfer/\n// See include/mri.h\nParsersMgh.MRI_UCHAR = 0;\nParsersMgh.MRI_INT = 1;\nParsersMgh.MRI_LONG = 2;\nParsersMgh.MRI_FLOAT = 3;\nParsersMgh.MRI_SHORT = 4;\nParsersMgh.MRI_BITMAP = 5;\nParsersMgh.MRI_TENSOR = 6;\nParsersMgh.MRI_FLOAT_COMPLEX = 7;\nParsersMgh.MRI_DOUBLE_COMPLEX = 8;\nParsersMgh.MRI_RGB = 9;\n\n// https://github.com/freesurfer/freesurfer/\n// See include/tags.h\nParsersMgh.TAG_OLD_COLORTABLE = 1;\nParsersMgh.TAG_OLD_USEREALRAS = 2;\nParsersMgh.TAG_CMDLINE = 3;\nParsersMgh.TAG_USEREALRAS = 4;\nParsersMgh.TAG_COLORTABLE = 5;\nParsersMgh.TAG_GCAMORPH_GEOM = 10;\nParsersMgh.TAG_GCAMORPH_TYPE = 11;\nParsersMgh.TAG_GCAMORPH_LABELS = 12;\nParsersMgh.TAG_OLD_SURF_GEOM = 20;\nParsersMgh.TAG_SURF_GEOM = 21;\nParsersMgh.TAG_OLD_MGH_XFORM = 30;\nParsersMgh.TAG_MGH_XFORM = 31;\nParsersMgh.TAG_GROUP_AVG_SURFACE_AREA = 32;\nParsersMgh.TAG_AUTO_ALIGN = 33;\nParsersMgh.TAG_SCALAR_DOUBLE = 40;\nParsersMgh.TAG_PEDIR = 41;\nParsersMgh.TAG_MRI_FRAME = 42;\nParsersMgh.TAG_FIELDSTRENGTH = 43;\n","/** * Imports ***/\nimport ParsersVolume from './parsers.volume';\n\nimport { Vector3 } from 'three/src/math/Vector3';\n\n/**\n * @module parsers/mhd\n */\nexport default class ParsersMHD extends ParsersVolume {\n constructor(data, id) {\n super();\n\n /**\n * @member\n * @type {arraybuffer}\n */\n this._id = id;\n this._url = data.url;\n this._header = {};\n this._buffer = null;\n\n try {\n // parse header (mhd) data\n let lines = new TextDecoder().decode(data.mhdBuffer).split('\\n');\n lines.forEach(line => {\n let keyvalue = line.split('=');\n if (keyvalue.length === 2) {\n this._header[keyvalue[0].trim()] = keyvalue[1].trim();\n }\n });\n\n this._header.DimSize = this._header.DimSize.split(' ');\n this._header.ElementSpacing = this._header.ElementSpacing.split(' ');\n this._header.TransformMatrix = this._header.TransformMatrix.split(' ');\n this._header.Offset = this._header.Offset.split(' ');\n //\n this._buffer = data.rawBuffer;\n } catch (error) {\n window.console.log('ooops... :(');\n }\n }\n\n rightHanded() {\n let anatomicalOrientation = this._header.AnatomicalOrientation;\n if (\n anatomicalOrientation === 'RAS' ||\n anatomicalOrientation === 'RPI' ||\n anatomicalOrientation === 'LPS' ||\n anatomicalOrientation === 'LAI'\n ) {\n this._rightHanded = true;\n } else {\n this._rightHanded = false;\n }\n\n return this._rightHanded;\n }\n\n seriesInstanceUID() {\n // use filename + timestamp..?\n return this._url;\n }\n\n numberOfFrames() {\n return parseInt(this._header.DimSize[2], 10);\n }\n\n sopInstanceUID(frameIndex = 0) {\n return frameIndex;\n }\n\n rows(frameIndex = 0) {\n return parseInt(this._header.DimSize[1], 10);\n }\n\n columns(frameIndex = 0) {\n return parseInt(this._header.DimSize[0], 10);\n }\n\n pixelType(frameIndex = 0) {\n // 0 - int\n // 1 - float\n let type = 0;\n if (this._header.ElementType === 'MET_UFLOAT' || this._header.ElementType === 'MET_FLOAT') {\n type = 1;\n }\n return type;\n }\n\n bitsAllocated(frameIndex = 0) {\n let bitsAllocated = 1;\n\n if (this._header.ElementType === 'MET_UCHAR' || this._header.ElementType === 'MET_CHAR') {\n bitsAllocated = 8;\n } else if (\n this._header.ElementType === 'MET_USHORT' ||\n this._header.ElementType === 'MET_SHORT'\n ) {\n bitsAllocated = 16;\n } else if (\n this._header.ElementType === 'MET_UINT' ||\n this._header.ElementType === 'MET_INT' ||\n this._header.ElementType === 'MET_UFLOAT' ||\n this._header.ElementType === 'MET_FLOAT'\n ) {\n bitsAllocated = 32;\n }\n\n return bitsAllocated;\n }\n\n /**\n * https://itk.org/Wiki/ITK/MetaIO/Documentation\n * ElementSpacing[0] spacing between elements along X axis (i.e. column spacing)\n * ElementSpacing[1] spacing between elements along Y axis (i.e. row spacing)\n *\n * @param {*} frameIndex\n */\n pixelSpacing(frameIndex = 0) {\n let x = parseFloat(this._header.ElementSpacing[1], 10);\n let y = parseFloat(this._header.ElementSpacing[0], 10);\n let z = parseFloat(this._header.ElementSpacing[2], 10);\n return [x, y, z];\n }\n\n imageOrientation(frameIndex = 0) {\n let invertX = this._header.AnatomicalOrientation.match(/L/) ? -1 : 1;\n let invertY = this._header.AnatomicalOrientation.match(/P/) ? -1 : 1;\n\n let x = new Vector3(\n parseFloat(this._header.TransformMatrix[0]) * invertX,\n parseFloat(this._header.TransformMatrix[1]) * invertY,\n parseFloat(this._header.TransformMatrix[2])\n );\n x.normalize();\n\n let y = new Vector3(\n parseFloat(this._header.TransformMatrix[3]) * invertX,\n parseFloat(this._header.TransformMatrix[4]) * invertY,\n parseFloat(this._header.TransformMatrix[5])\n );\n y.normalize();\n\n return [x.x, x.y, x.z, y.x, y.y, y.z];\n }\n\n imagePosition(frameIndex = 0) {\n return [\n parseFloat(this._header.Offset[0]),\n parseFloat(this._header.Offset[1]),\n parseFloat(this._header.Offset[2]),\n ];\n }\n\n extractPixelData(frameIndex = 0) {\n return this._decompressUncompressed(frameIndex);\n }\n\n _decompressUncompressed(frameIndex = 0) {\n let buffer = this._buffer;\n let numberOfChannels = this.numberOfChannels();\n let numPixels = this.rows(frameIndex) * this.columns(frameIndex) * numberOfChannels;\n if (!this.rightHanded()) {\n frameIndex = this.numberOfFrames() - 1 - frameIndex;\n }\n let frameOffset = frameIndex * numPixels;\n\n if (this._header.ElementType === 'MET_CHAR') {\n return new Int8Array(buffer, frameOffset, numPixels);\n } else if (this._header.ElementType === 'MET_UCHAR') {\n return new Uint8Array(buffer, frameOffset, numPixels);\n } else if (this._header.ElementType === 'MET_SHORT') {\n frameOffset = frameOffset * 2;\n return new Int16Array(buffer, frameOffset, numPixels);\n } else if (this._header.ElementType === 'MET_USHORT') {\n frameOffset = frameOffset * 2;\n return new Uint16Array(buffer, frameOffset, numPixels);\n } else if (this._header.ElementType === 'MET_INT') {\n frameOffset = frameOffset * 4;\n return new Int32Array(buffer, frameOffset, numPixels);\n } else if (this._header.ElementType === 'MET_UINT') {\n frameOffset = frameOffset * 4;\n return new Uint32Array(buffer, frameOffset, numPixels);\n } else if (this._header.ElementType === 'MET_FLOAT') {\n frameOffset = frameOffset * 4;\n return new Float32Array(buffer, frameOffset, numPixels);\n }\n }\n}\n","/** * Imports ***/\nimport ParsersVolume from './parsers.volume';\n\nimport NiftiReader from 'nifti-reader-js/src/nifti';\n\n/**\n * @module parsers/nifti\n */\nexport default class ParsersNifti extends ParsersVolume {\n constructor(data, id) {\n super();\n\n /**\n * @member\n * @type {arraybuffer}\n */\n this._id = id;\n this._arrayBuffer = data.buffer;\n this._url = data.url;\n this._dataSet = null;\n this._niftiHeader = null;\n this._niftiImage = null;\n this._ordered = true;\n this._orderedData = null;\n\n //\n this._qfac = 1.0;\n\n if (NiftiReader.isNIFTI(this._arrayBuffer)) {\n this._dataSet = NiftiReader.readHeader(this._arrayBuffer);\n this._niftiImage = NiftiReader.readImage(this._dataSet, this._arrayBuffer);\n } else {\n const error = new Error('parsers.nifti could not parse the file');\n throw error;\n }\n }\n\n seriesInstanceUID() {\n // use filename + timestamp..?\n return this._url;\n }\n\n numberOfFrames() {\n return this._dataSet.dims[3];\n }\n\n numberOfChannels() {\n let numberOfChannels = 1;\n\n // can dims[0] >= 5 and not multi channels with RGB datatypecode?\n\n if (this._dataSet.dims[0] >= 5) {\n numberOfChannels = this._dataSet.dims[5];\n this._ordered = false;\n } else if (this._dataSet.datatypeCode === 128) {\n numberOfChannels = 3;\n } else if (this._dataSet.datatypeCode === 2304) {\n numberOfChannels = 4;\n }\n\n return numberOfChannels;\n }\n\n sopInstanceUID(frameIndex = 0) {\n return frameIndex;\n }\n\n rows(frameIndex = 0) {\n return this._dataSet.dims[2];\n }\n\n columns(frameIndex = 0) {\n return this._dataSet.dims[1];\n }\n\n pixelType(frameIndex = 0) {\n // papaya.volume.nifti.NIFTI_TYPE_UINT8 = 2;\n // papaya.volume.nifti.NIFTI_TYPE_INT16 = 4;\n // papaya.volume.nifti.NIFTI_TYPE_INT32 = 8;\n // papaya.volume.nifti.NIFTI_TYPE_FLOAT32 = 16;\n // papaya.volume.nifti.NIFTI_TYPE_COMPLEX64 = 32;\n // papaya.volume.nifti.NIFTI_TYPE_FLOAT64 = 64;\n // papaya.volume.nifti.NIFTI_TYPE_RGB24 = 128;\n // papaya.volume.nifti.NIFTI_TYPE_INT8 = 256;\n // papaya.volume.nifti.NIFTI_TYPE_UINT16 = 512;\n // papaya.volume.nifti.NIFTI_TYPE_UINT32 = 768;\n // papaya.volume.nifti.NIFTI_TYPE_INT64 = 1024;\n // papaya.volume.nifti.NIFTI_TYPE_UINT64 = 1280;\n // papaya.volume.nifti.NIFTI_TYPE_FLOAT128 = 1536;\n // papaya.volume.nifti.NIFTI_TYPE_COMPLEX128 = 1792;\n // papaya.volume.nifti.NIFTI_TYPE_COMPLEX256 = 2048;\n\n // 0 integer, 1 float\n\n let pixelType = 0;\n if (\n this._dataSet.datatypeCode === 16 ||\n this._dataSet.datatypeCode === 64 ||\n this._dataSet.datatypeCode === 1536\n ) {\n pixelType = 1;\n }\n return pixelType;\n }\n\n bitsAllocated(frameIndex = 0) {\n return this._dataSet.numBitsPerVoxel;\n }\n\n pixelSpacing(frameIndex = 0) {\n return [this._dataSet.pixDims[1], this._dataSet.pixDims[2], this._dataSet.pixDims[3]];\n }\n\n sliceThickness() {\n // should be a string...\n return null; // this._dataSet.pixDims[3].toString();\n }\n\n imageOrientation(frameIndex = 0) {\n // http://nifti.nimh.nih.gov/pub/dist/src/niftilib/nifti1.h\n // http://nifti.nimh.nih.gov/pub/dist/src/niftilib/nifti1_io.c\n if (this._dataSet.qform_code > 0) {\n // METHOD 2 (used when qform_code > 0, which should be the \"normal\" case):\n // ---------------------------------------------------------------------\n // The (x,y,z) coordinates are given by the pixdim[] scales, a rotation\n // matrix, and a shift. This method is intended to represent\n // \"scanner-anatomical\" coordinates, which are often embedded in the\n // image header (e.g., DICOM fields (0020,0032), (0020,0037), (0028,0030),\n // and (0018,0050)), and represent the nominal orientation and location of\n // the data. This method can also be used to represent \"aligned\"\n // coordinates, which would typically result from some post-acquisition\n // alignment of the volume to a standard orientation (e.g., the same\n // subject on another day, or a rigid rotation to true anatomical\n // orientation from the tilted position of the subject in the scanner).\n // The formula for (x,y,z) in terms of header parameters and (i,j,k) is:\n\n // [ x ] [ R11 R12 R13 ] [ pixdim[1] * i ] [ qoffset_x ]\n // [ y ] = [ R21 R22 R23 ] [ pixdim[2] * j ] + [ qoffset_y ]\n // [ z ] [ R31 R32 R33 ] [ qfac * pixdim[3] * k ] [ qoffset_z ]\n\n // The qoffset_* shifts are in the NIFTI-1 header. Note that the center\n // of the (i,j,k)=(0,0,0) voxel (first value in the dataset array) is\n // just (x,y,z)=(qoffset_x,qoffset_y,qoffset_z).\n\n // The rotation matrix R is calculated from the quatern_* parameters.\n // This calculation is described below.\n\n // The scaling factor qfac is either 1 or -1. The rotation matrix R\n // defined by the quaternion parameters is \"proper\" (has determinant 1).\n // This may not fit the needs of the data; for example, if the image\n // grid is\n // i increases from Left-to-Right\n // j increases from Anterior-to-Posterior\n // k increases from Inferior-to-Superior\n // Then (i,j,k) is a left-handed triple. In this example, if qfac=1,\n // the R matrix would have to be\n\n // [ 1 0 0 ]\n // [ 0 -1 0 ] which is \"improper\" (determinant = -1).\n // [ 0 0 1 ]\n\n // If we set qfac=-1, then the R matrix would be\n\n // [ 1 0 0 ]\n // [ 0 -1 0 ] which is proper.\n // [ 0 0 -1 ]\n\n // This R matrix is represented by quaternion [a,b,c,d] = [0,1,0,0]\n // (which encodes a 180 degree rotation about the x-axis).\n // https://github.com/Kitware/ITK/blob/master/Modules/IO/NIFTI/src/itkNiftiImageIO.cxx\n let a = 0.0;\n let b = this._dataSet.quatern_b;\n let c = this._dataSet.quatern_c;\n let d = this._dataSet.quatern_d;\n // compute a\n a = 1.0 - (b * b + c * c + d * d);\n if (a < 0.0000001) {\n /* special case */\n\n a = 1.0 / Math.sqrt(b * b + c * c + d * d);\n b *= a;\n c *= a;\n d *= a; /* normalize (b,c,d) vector */\n a = 0.0; /* a = 0 ==> 180 degree rotation */\n } else {\n a = Math.sqrt(a); /* angle = 2*arccos(a) */\n }\n\n if (this._dataSet.pixDims[0] < 0.0) {\n this._rightHanded = false;\n }\n\n return [\n -(a * a + b * b - c * c - d * d),\n -2 * (b * c + a * d),\n 2 * (b * d - a * c),\n -2 * (b * c - a * d),\n -(a * a + c * c - b * b - d * d),\n 2 * (c * d + a * b),\n ];\n } else if (this._dataSet.sform_code > 0) {\n // METHOD 3 (used when sform_code > 0):\n // -----------------------------------\n // The (x,y,z) coordinates are given by a general affine transformation\n // of the (i,j,k) indexes:\n\n // x = srow_x[0] * i + srow_x[1] * j + srow_x[2] * k + srow_x[3]\n // y = srow_y[0] * i + srow_y[1] * j + srow_y[2] * k + srow_y[3]\n // z = srow_z[0] * i + srow_z[1] * j + srow_z[2] * k + srow_z[3]\n\n // The srow_* vectors are in the NIFTI_1 header. Note that no use is\n // made of pixdim[] in this method.\n const rowX = [\n -this._dataSet.affine[0][0],\n -this._dataSet.affine[0][1],\n this._dataSet.affine[0][2],\n ];\n const rowY = [\n -this._dataSet.affine[1][0],\n -this._dataSet.affine[1][1],\n this._dataSet.affine[0][2],\n ];\n return [...rowX, ...rowY];\n } else if (this._dataSet.qform_code === 0) {\n // METHOD 1 (the \"old\" way, used only when qform_code = 0):\n // -------------------------------------------------------\n // The coordinate mapping from (i,j,k) to (x,y,z) is the ANALYZE\n // 7.5 way. This is a simple scaling relationship:\n // x = pixdim[1] * i\n // y = pixdim[2] * j\n // z = pixdim[3] * k\n // No particular spatial orientation is attached to these (x,y,z)\n // coordinates. (NIFTI-1 does not have the ANALYZE 7.5 orient field,\n // which is not general and is often not set properly.) This method\n // is not recommended, and is present mainly for compatibility with\n // ANALYZE 7.5 files.\n }\n return [1, 0, 0, 0, 1, 0];\n }\n\n imagePosition(frameIndex = 0) {\n // qoffset is RAS\n return [-this._dataSet.qoffset_x, -this._dataSet.qoffset_y, this._dataSet.qoffset_z];\n }\n\n dimensionIndexValues(frameIndex = 0) {\n return null;\n }\n\n instanceNumber(frameIndex = 0) {\n return frameIndex;\n }\n\n windowCenter(frameIndex = 0) {\n // calc min and calc max\n return null;\n }\n\n windowWidth(frameIndex = 0) {\n // calc min and calc max\n return null;\n }\n\n rescaleSlope(frameIndex = 0) {\n return this._dataSet.scl_slope;\n }\n\n rescaleIntercept(frameIndex = 0) {\n return this._dataSet.scl_inter;\n }\n\n extractPixelData(frameIndex = 0) {\n return this._decompressUncompressed(frameIndex);\n }\n\n _decompressUncompressed(frameIndex = 0) {\n // papaya.volume.nifti.NIFTI_TYPE_UINT8 = 2;\n // papaya.volume.nifti.NIFTI_TYPE_INT16 = 4;\n // papaya.volume.nifti.NIFTI_TYPE_INT32 = 8;\n // papaya.volume.nifti.NIFTI_TYPE_FLOAT32 = 16;\n // papaya.volume.nifti.NIFTI_TYPE_COMPLEX64 = 32;\n // papaya.volume.nifti.NIFTI_TYPE_FLOAT64 = 64;\n // papaya.volume.nifti.NIFTI_TYPE_RGB24 = 128;\n // papaya.volume.nifti.NIFTI_TYPE_INT8 = 256;\n // papaya.volume.nifti.NIFTI_TYPE_UINT16 = 512;\n // papaya.volume.nifti.NIFTI_TYPE_UINT32 = 768;\n // papaya.volume.nifti.NIFTI_TYPE_INT64 = 1024;\n // papaya.volume.nifti.NIFTI_TYPE_UINT64 = 1280;\n // papaya.volume.nifti.NIFTI_TYPE_FLOAT128 = 1536;\n // papaya.volume.nifti.NIFTI_TYPE_COMPLEX128 = 1792;\n // papaya.volume.nifti.NIFTI_TYPE_COMPLEX256 = 2048;\n\n let numberOfChannels = this.numberOfChannels();\n let numPixels = this.rows(frameIndex) * this.columns(frameIndex) * numberOfChannels;\n // if( !this.rightHanded() ){\n // frameIndex = this.numberOfFrames() - 1 - frameIndex;\n // }\n let frameOffset = frameIndex * numPixels;\n let buffer = this._niftiImage;\n\n // use bits allocated && pixel reprensentation too\n if (!this._ordered && this._orderedData === null) {\n // order then\n this._reorderData();\n }\n\n if (this._orderedData !== null) {\n // just a slice...\n return this._orderedData.slice(frameOffset, frameOffset + numPixels);\n } else if (this._dataSet.datatypeCode === 2) {\n // unsigned int 8 bit\n return new Uint8Array(buffer, frameOffset, numPixels);\n } else if (this._dataSet.datatypeCode === 256) {\n // signed int 8 bit\n return new Int8Array(buffer, frameOffset, numPixels);\n } else if (this._dataSet.datatypeCode === 512) {\n // unsigned int 16 bit\n frameOffset = frameOffset * 2;\n return new Uint16Array(buffer, frameOffset, numPixels);\n } else if (this._dataSet.datatypeCode === 4) {\n // signed int 16 bit\n frameOffset = frameOffset * 2;\n return new Int16Array(buffer, frameOffset, numPixels);\n } else if (this._dataSet.datatypeCode === 8) {\n // signed int 32 bit\n frameOffset = frameOffset * 4;\n return new Int32Array(buffer, frameOffset, numPixels);\n } else if (this._dataSet.datatypeCode === 16) {\n // signed float 32 bit\n frameOffset = frameOffset * 4;\n const data = new Float32Array(buffer, frameOffset, numPixels);\n for (let i = 0; i < data.length; i++) {\n if (data[i] === Infinity || data[i] === -Infinity) {\n data[i] = 0;\n }\n }\n return data;\n } else {\n window.console.warn(`Unknown data type: datatypeCode : ${this._dataSet.datatypeCode}`);\n }\n }\n\n _reorderData() {\n let numberOfChannels = this.numberOfChannels();\n let numPixels = this.rows() * this.columns() * numberOfChannels;\n let buffer = this._niftiImage;\n\n let totalNumPixels = numPixels * this.numberOfFrames();\n let tmp = null;\n this._orderedData = null;\n\n if (this._dataSet.datatypeCode === 2) {\n // unsigned 8 bit\n tmp = new Uint8Array(buffer, 0, totalNumPixels);\n this._orderedData = new Uint8Array(tmp.length);\n } else if (this._dataSet.datatypeCode === 256) {\n // signed 8 bit\n tmp = new Int8Array(buffer, 0, totalNumPixels);\n this._orderedData = new Int8Array(tmp.length);\n } else if (this._dataSet.datatypeCode === 512) {\n tmp = new Uint16Array(buffer, 0, totalNumPixels);\n this._orderedData = new Uint16Array(tmp.length);\n } else if (this._dataSet.datatypeCode === 4) {\n tmp = new Int16Array(buffer, 0, totalNumPixels);\n this._orderedData = new Int16Array(tmp.length);\n } else if (this._dataSet.datatypeCode === 16) {\n tmp = new Float32Array(buffer, 0, totalNumPixels);\n this._orderedData = new Float32Array(tmp.length);\n }\n\n // re-order pixels...\n let numPixels2 = tmp.length / 3;\n let rgbaIndex = 0;\n let rIndex = 0;\n let gIndex = numPixels2;\n let bIndex = numPixels2 * 2;\n\n for (let i = 0; i < numPixels2; i++) {\n this._orderedData[rgbaIndex++] = tmp[rIndex++]; // red\n this._orderedData[rgbaIndex++] = tmp[gIndex++]; // green\n this._orderedData[rgbaIndex++] = tmp[bIndex++]; // blue\n }\n\n this._ordered = true;\n }\n}\n","/** * Imports ***/\nimport ParsersVolume from './parsers.volume';\nimport { Vector3 } from 'three/src/math/Vector3';\n\nlet pako = require('pako');\nlet NrrdReader = require('nrrd-js');\n/**\n * @module parsers/nifti\n */\nexport default class ParsersNifti extends ParsersVolume {\n /**\n * Constructor\n *\n * @param {*} data\n * @param {*} id\n */\n constructor(data, id) {\n super();\n\n /**\n * @member\n * @type {arraybuffer}\n */\n this._id = id;\n this._arrayBuffer = data.buffer;\n this._url = data.url;\n this._dataSet = null;\n this._unpackedData = null;\n\n try {\n this._dataSet = NrrdReader.parse(this._arrayBuffer);\n } catch (error) {\n window.console.log('ooops... :(');\n }\n }\n\n /**\n * Is the data right-handed\n *\n * @return {*}\n */\n rightHanded() {\n if (\n this._dataSet.space.match(/^right-anterior-superior/) ||\n this._dataSet.space.match(/^left-posterior-superior/)\n ) {\n this._rightHanded = true;\n } else {\n this._rightHanded = false;\n }\n\n return this._rightHanded;\n }\n\n /**\n * Series instance UID\n *\n * @return {*}\n */\n seriesInstanceUID() {\n // use filename + timestamp..?\n return this._url;\n }\n\n /**\n * Number of frames\n *\n * @return {*}\n */\n numberOfFrames() {\n return this._dataSet.sizes[2];\n }\n\n /**\n * Number of channels\n *\n * @return {*}\n */\n numberOfChannels() {\n return 1;\n }\n\n /**\n * SOP instance UID\n *\n * @param {*} frameIndex\n *\n * @return {*}\n */\n sopInstanceUID(frameIndex = 0) {\n return frameIndex;\n }\n\n /**\n * Rows\n *\n * @param {*} frameIndex\n *\n * @return {*}\n */\n rows(frameIndex = 0) {\n return this._dataSet.sizes[1];\n }\n\n /**\n * Columns\n *\n * @param {*} frameIndex\n *\n * @return {*}\n */\n columns(frameIndex = 0) {\n return this._dataSet.sizes[0];\n }\n\n /**\n * Pixel type\n *\n * @param {*} frameIndex\n *\n * @return {*}\n */\n pixelType(frameIndex = 0) {\n // 0 - int\n // 1 - float\n let pixelType = 0;\n if (this._dataSet.type === 'float') {\n pixelType = 1;\n }\n return pixelType;\n }\n\n /**\n * Bits allocated\n *\n * @param {*} frameIndex\n *\n * @return {*}\n */\n bitsAllocated(frameIndex = 0) {\n let bitsAllocated = 1;\n\n if (\n this._dataSet.type === 'int8' ||\n this._dataSet.type === 'uint8' ||\n this._dataSet.type === 'char'\n ) {\n bitsAllocated = 8;\n } else if (\n this._dataSet.type === 'int16' ||\n this._dataSet.type === 'uint16' ||\n this._dataSet.type === 'short'\n ) {\n bitsAllocated = 16;\n } else if (\n this._dataSet.type === 'int32' ||\n this._dataSet.type === 'uint32' ||\n this._dataSet.type === 'float'\n ) {\n bitsAllocated = 32;\n }\n\n return bitsAllocated;\n }\n\n /**\n * Pixel spacing\n *\n * @param {*} frameIndex\n *\n * @return {*}\n */\n pixelSpacing(frameIndex = 0) {\n const x = new Vector3(\n this._dataSet.spaceDirections[0][0],\n this._dataSet.spaceDirections[0][1],\n this._dataSet.spaceDirections[0][2]\n );\n\n const y = new Vector3(\n this._dataSet.spaceDirections[1][0],\n this._dataSet.spaceDirections[1][1],\n this._dataSet.spaceDirections[1][2]\n );\n\n const z = new Vector3(\n this._dataSet.spaceDirections[2][0],\n this._dataSet.spaceDirections[2][1],\n this._dataSet.spaceDirections[2][2]\n );\n\n return [x.length(), y.length(), z.length()];\n }\n\n /**\n * Image orientation\n *\n * @param {*} frameIndex\n *\n * @return {*}\n */\n imageOrientation(frameIndex = 0) {\n let invertX = this._dataSet.space.match(/right/) ? -1 : 1;\n let invertY = this._dataSet.space.match(/anterior/) ? -1 : 1;\n\n let x = new Vector3(\n this._dataSet.spaceDirections[0][0] * invertX,\n this._dataSet.spaceDirections[0][1] * invertY,\n this._dataSet.spaceDirections[0][2]\n );\n x.normalize();\n\n let y = new Vector3(\n this._dataSet.spaceDirections[1][0] * invertX,\n this._dataSet.spaceDirections[1][1] * invertY,\n this._dataSet.spaceDirections[1][2]\n );\n y.normalize();\n\n return [x.x, x.y, x.z, y.x, y.y, y.z];\n }\n\n /**\n * Image position\n *\n * @param {*} frameIndex\n *\n * @return {*}\n */\n imagePosition(frameIndex = 0) {\n return [\n this._dataSet.spaceOrigin[0],\n this._dataSet.spaceOrigin[1],\n this._dataSet.spaceOrigin[2],\n ];\n }\n\n /**\n * Extract pixel data ffrom array buffer\n *\n * @param {*} frameIndex\n *\n * @return {*}\n */\n extractPixelData(frameIndex = 0) {\n return this._decompressUncompressed(frameIndex);\n }\n\n /**\n * Decompress data from uncompressed array buffer\n *\n * @param {*} frameIndex\n *\n * @return {*}\n */\n _decompressUncompressed(frameIndex = 0) {\n let buffer = this._dataSet.buffer;\n const numberOfChannels = this.numberOfChannels();\n const numPixels = this.rows(frameIndex) * this.columns(frameIndex) * numberOfChannels;\n if (!this.rightHanded()) {\n frameIndex = this.numberOfFrames() - 1 - frameIndex;\n }\n let frameOffset = frameIndex * numPixels;\n\n // unpack data if needed\n if (this._unpackedData === null && this._dataSet.encoding === 'gzip') {\n let unpackedData = pako.inflate(this._dataSet.buffer);\n this._unpackedData = unpackedData.buffer;\n buffer = this._unpackedData;\n } else if (this._dataSet.encoding === 'gzip') {\n buffer = this._unpackedData;\n }\n\n if (this._dataSet.type === 'int8' || this._dataSet.type === 'char') {\n return new Int8Array(buffer, frameOffset, numPixels);\n } else if (this._dataSet.type === 'uint8') {\n return new Uint8Array(buffer, frameOffset, numPixels);\n } else if (this._dataSet.type === 'int16' || this._dataSet.type === 'short') {\n frameOffset = frameOffset * 2;\n return new Int16Array(buffer, frameOffset, numPixels);\n } else if (this._dataSet.type === 'uint16') {\n frameOffset = frameOffset * 2;\n return new Uint16Array(buffer, frameOffset, numPixels);\n } else if (this._dataSet.type === 'int32') {\n frameOffset = frameOffset * 4;\n return new Int32Array(buffer, frameOffset, numPixels);\n } else if (this._dataSet.type === 'uint32') {\n frameOffset = frameOffset * 4;\n return new Uint32Array(buffer, frameOffset, numPixels);\n } else if (this._dataSet.type === 'float') {\n frameOffset = frameOffset * 4;\n return new Float32Array(buffer, frameOffset, numPixels);\n }\n }\n}\n","/**\n * @module parsers/volume\n */\nexport default class ParsersVolume {\n constructor() {\n this._rightHanded = true;\n }\n\n pixelRepresentation() {\n return 0;\n }\n\n pixelPaddingValue(frameIndex = 0) {\n return null;\n }\n\n modality() {\n return 'unknown';\n }\n\n segmentationType() {\n return 'unknown';\n }\n\n segmentationSegments() {\n return [];\n }\n\n referencedSegmentNumber(frameIndex) {\n return -1;\n }\n\n rightHanded() {\n return this._rightHanded;\n }\n\n spacingBetweenSlices() {\n return null;\n }\n\n numberOfChannels() {\n return 1;\n }\n\n sliceThickness() {\n return null;\n }\n\n dimensionIndexValues(frameIndex = 0) {\n return null;\n }\n\n instanceNumber(frameIndex = 0) {\n return frameIndex;\n }\n\n windowCenter(frameIndex = 0) {\n return null;\n }\n\n windowWidth(frameIndex = 0) {\n return null;\n }\n\n rescaleSlope(frameIndex = 0) {\n return 1;\n }\n\n rescaleIntercept(frameIndex = 0) {\n return 0;\n }\n\n ultrasoundRegions(frameIndex = 0) {\n return [];\n }\n\n frameTime(frameIndex = 0) {\n return null;\n }\n\n _decompressUncompressed() {}\n\n // http://stackoverflow.com/questions/5320439/how-do-i-swap-endian-ness-byte-order-of-a-variable-in-javascript\n _swap16(val) {\n return ((val & 0xff) << 8) | ((val >> 8) & 0xff);\n }\n\n _swap32(val) {\n return (\n ((val & 0xff) << 24) | ((val & 0xff00) << 8) | ((val >> 8) & 0xff00) | ((val >> 24) & 0xff)\n );\n }\n\n invert() {\n return false;\n }\n\n /**\n * Get the transfer syntax UID.\n * @return {*}\n */\n transferSyntaxUID() {\n return 'no value provided';\n }\n\n /**\n * Get the study date.\n * @return {*}\n */\n studyDate() {\n return 'no value provided';\n }\n\n /**\n * Get the study desciption.\n * @return {*}\n */\n studyDescription() {\n return 'no value provided';\n }\n\n /**\n * Get the series date.\n * @return {*}\n */\n seriesDate() {\n return 'no value provided';\n }\n\n /**\n * Get the series desciption.\n * @return {*}\n */\n seriesDescription() {\n return 'no value provided';\n }\n \n /**\n * Get the raw Header.\n * @return {*}\n */\n rawHeader() {\n return 'no value provided';\n }\n\n /**\n * Get the patient ID.\n * @return {*}\n */\n patientID() {\n return 'no value provided';\n }\n\n /**\n * Get the patient name.\n * @return {*}\n */\n patientName() {\n return 'no value provided';\n }\n\n /**\n * Get the patient age.\n * @return {*}\n */\n patientAge() {\n return 'no value provided';\n }\n\n /**\n * Get the patient birthdate.\n * @return {*}\n */\n patientBirthdate() {\n return 'no value provided';\n }\n\n /**\n * Get the patient sex.\n * @return {*}\n */\n patientSex() {\n return 'no value provided';\n }\n\n /**\n * Get min/max values in array\n *\n * @param {*} pixelData\n *\n * @return {*}\n */\n minMaxPixelData(pixelData = []) {\n let minMax = [Number.POSITIVE_INFINITY, Number.NEGATIVE_INFINITY];\n let numPixels = pixelData.length;\n for (let index = 0; index < numPixels; index++) {\n let spv = pixelData[index];\n minMax[0] = Math.min(minMax[0], spv);\n minMax[1] = Math.max(minMax[1], spv);\n }\n\n return minMax;\n }\n}\n","import Segmentation from './presets.segmentation';\nexport { Segmentation as SegmentationPreset };\n","const segmentationFs = {\n 0: { color: [0, 0, 0], opacity: 0, label: 'Unknown' },\n 1: { color: [70, 130, 180], opacity: 1, label: 'Left-Cerebral-Exterior' },\n 2: { color: [245, 245, 245], opacity: 1, label: 'Left-Cerebral-White-Matter' },\n 3: { color: [205, 62, 78], opacity: 1, label: 'Left-Cerebral-Cortex' },\n 4: { color: [120, 18, 134], opacity: 1, label: 'Left-Lateral-Ventricle' },\n 5: { color: [196, 58, 250], opacity: 1, label: 'Left-Inf-Lat-Vent' },\n 6: { color: [0, 148, 0], opacity: 1, label: 'Left-Cerebellum-Exterior' },\n 7: { color: [220, 248, 164], opacity: 1, label: 'Left-Cerebellum-White-Matter' },\n 8: { color: [230, 148, 34], opacity: 1, label: 'Left-Cerebellum-Cortex' },\n 9: { color: [0, 118, 14], opacity: 1, label: 'Left-Thalamus' },\n 10: { color: [0, 118, 14], opacity: 1, label: 'Left-Thalamus-Proper' },\n 11: { color: [122, 186, 220], opacity: 1, label: 'Left-Caudate' },\n 12: { color: [236, 13, 176], opacity: 1, label: 'Left-Putamen' },\n 13: { color: [12, 48, 255], opacity: 1, label: 'Left-Pallidum' },\n 14: { color: [204, 182, 142], opacity: 1, label: '3rd-Ventricle' },\n 15: { color: [42, 204, 164], opacity: 1, label: '4th-Ventricle' },\n 16: { color: [119, 159, 176], opacity: 1, label: 'Brain-Stem' },\n 17: { color: [220, 216, 20], opacity: 1, label: 'Left-Hippocampus' },\n 18: { color: [103, 255, 255], opacity: 1, label: 'Left-Amygdala' },\n 19: { color: [80, 196, 98], opacity: 1, label: 'Left-Insula' },\n 20: { color: [60, 58, 210], opacity: 1, label: 'Left-Operculum' },\n 21: { color: [60, 58, 210], opacity: 1, label: 'Line-1' },\n 22: { color: [60, 58, 210], opacity: 1, label: 'Line-2' },\n 23: { color: [60, 58, 210], opacity: 1, label: 'Line-3' },\n 24: { color: [60, 60, 60], opacity: 1, label: 'CSF' },\n 25: { color: [255, 165, 0], opacity: 1, label: 'Left-Lesion' },\n 26: { color: [255, 165, 0], opacity: 1, label: 'Left-Accumbens-area' },\n 27: { color: [0, 255, 127], opacity: 1, label: 'Left-Substancia-Nigra' },\n 28: { color: [165, 42, 42], opacity: 1, label: 'Left-VentralDC' },\n 29: { color: [135, 206, 235], opacity: 1, label: 'Left-undetermined' },\n 30: { color: [160, 32, 240], opacity: 1, label: 'Left-vessel' },\n 31: { color: [0, 200, 200], opacity: 1, label: 'Left-choroid-plexus' },\n 32: { color: [100, 50, 100], opacity: 1, label: 'Left-F3orb' },\n 33: { color: [135, 50, 74], opacity: 1, label: 'Left-lOg' },\n 34: { color: [122, 135, 50], opacity: 1, label: 'Left-aOg' },\n 35: { color: [51, 50, 135], opacity: 1, label: 'Left-mOg' },\n 36: { color: [74, 155, 60], opacity: 1, label: 'Left-pOg' },\n 37: { color: [120, 62, 43], opacity: 1, label: 'Left-Stellate' },\n 38: { color: [74, 155, 60], opacity: 1, label: 'Left-Porg' },\n 39: { color: [122, 135, 50], opacity: 1, label: 'Left-Aorg' },\n 40: { color: [70, 130, 180], opacity: 1, label: 'Right-Cerebral-Exterior' },\n 41: { color: [245, 245, 245], opacity: 1, label: 'Right-Cerebral-White-Matter' },\n 42: { color: [205, 62, 78], opacity: 1, label: 'Right-Cerebral-Cortex' },\n 43: { color: [120, 18, 134], opacity: 1, label: 'Right-Lateral-Ventricle' },\n 44: { color: [196, 58, 250], opacity: 1, label: 'Right-Inf-Lat-Vent' },\n 45: { color: [0, 148, 0], opacity: 1, label: 'Right-Cerebellum-Exterior' },\n 46: { color: [220, 248, 164], opacity: 1, label: 'Right-Cerebellum-White-Matter' },\n 47: { color: [230, 148, 34], opacity: 1, label: 'Right-Cerebellum-Cortex' },\n 48: { color: [0, 118, 14], opacity: 1, label: 'Right-Thalamus' },\n 49: { color: [0, 118, 14], opacity: 1, label: 'Right-Thalamus-Proper' },\n 50: { color: [122, 186, 220], opacity: 1, label: 'Right-Caudate' },\n 51: { color: [236, 13, 176], opacity: 1, label: 'Right-Putamen' },\n 52: { color: [13, 48, 255], opacity: 1, label: 'Right-Pallidum' },\n 53: { color: [220, 216, 20], opacity: 1, label: 'Right-Hippocampus' },\n 54: { color: [103, 255, 255], opacity: 1, label: 'Right-Amygdala' },\n 55: { color: [80, 196, 98], opacity: 1, label: 'Right-Insula' },\n 56: { color: [60, 58, 210], opacity: 1, label: 'Right-Operculum' },\n 57: { color: [255, 165, 0], opacity: 1, label: 'Right-Lesion' },\n 58: { color: [255, 165, 0], opacity: 1, label: 'Right-Accumbens-area' },\n 59: { color: [0, 255, 127], opacity: 1, label: 'Right-Substancia-Nigra' },\n 60: { color: [165, 42, 42], opacity: 1, label: 'Right-VentralDC' },\n 61: { color: [135, 206, 235], opacity: 1, label: 'Right-undetermined' },\n 62: { color: [160, 32, 240], opacity: 1, label: 'Right-vessel' },\n 63: { color: [0, 200, 221], opacity: 1, label: 'Right-choroid-plexus' },\n 64: { color: [100, 50, 100], opacity: 1, label: 'Right-F3orb' },\n 65: { color: [135, 50, 74], opacity: 1, label: 'Right-lOg' },\n 66: { color: [122, 135, 50], opacity: 1, label: 'Right-aOg' },\n 67: { color: [51, 50, 135], opacity: 1, label: 'Right-mOg' },\n 68: { color: [74, 155, 60], opacity: 1, label: 'Right-pOg' },\n 69: { color: [120, 62, 43], opacity: 1, label: 'Right-Stellate' },\n 70: { color: [74, 155, 60], opacity: 1, label: 'Right-Porg' },\n 71: { color: [122, 135, 50], opacity: 1, label: 'Right-Aorg' },\n 72: { color: [120, 190, 150], opacity: 1, label: '5th-Ventricle' },\n 73: { color: [122, 135, 50], opacity: 1, label: 'Left-Interior' },\n 74: { color: [122, 135, 50], opacity: 1, label: 'Right-Interior' },\n 77: { color: [200, 70, 255], opacity: 1, label: 'WM-hypointensities' },\n 78: { color: [255, 148, 10], opacity: 1, label: 'Left-WM-hypointensities' },\n 79: { color: [255, 148, 10], opacity: 1, label: 'Right-WM-hypointensities' },\n 80: { color: [164, 108, 226], opacity: 1, label: 'non-WM-hypointensities' },\n 81: { color: [164, 108, 226], opacity: 1, label: 'Left-non-WM-hypointensities' },\n 82: { color: [164, 108, 226], opacity: 1, label: 'Right-non-WM-hypointensities' },\n 83: { color: [255, 218, 185], opacity: 1, label: 'Left-F1' },\n 84: { color: [255, 218, 185], opacity: 1, label: 'Right-F1' },\n 85: { color: [234, 169, 30], opacity: 1, label: 'Optic-Chiasm' },\n 192: { color: [250, 255, 50], opacity: 1, label: 'Corpus_Callosum' },\n 86: { color: [200, 120, 255], opacity: 1, label: 'Left_future_WMSA' },\n 87: { color: [200, 121, 255], opacity: 1, label: 'Right_future_WMSA' },\n 88: { color: [200, 122, 255], opacity: 1, label: 'future_WMSA' },\n 96: { color: [205, 10, 125], opacity: 1, label: 'Left-Amygdala-Anterior' },\n 97: { color: [205, 10, 125], opacity: 1, label: 'Right-Amygdala-Anterior' },\n 98: { color: [160, 32, 240], opacity: 1, label: 'Dura' },\n 100: { color: [124, 140, 178], opacity: 1, label: 'Left-wm-intensity-abnormality' },\n 101: { color: [125, 140, 178], opacity: 1, label: 'Left-caudate-intensity-abnormality' },\n 102: { color: [126, 140, 178], opacity: 1, label: 'Left-putamen-intensity-abnormality' },\n 103: { color: [127, 140, 178], opacity: 1, label: 'Left-accumbens-intensity-abnormality' },\n 104: { color: [124, 141, 178], opacity: 1, label: 'Left-pallidum-intensity-abnormality' },\n 105: { color: [124, 142, 178], opacity: 1, label: 'Left-amygdala-intensity-abnormality' },\n 106: { color: [124, 143, 178], opacity: 1, label: 'Left-hippocampus-intensity-abnormality' },\n 107: { color: [124, 144, 178], opacity: 1, label: 'Left-thalamus-intensity-abnormality' },\n 108: { color: [124, 140, 179], opacity: 1, label: 'Left-VDC-intensity-abnormality' },\n 109: { color: [124, 140, 178], opacity: 1, label: 'Right-wm-intensity-abnormality' },\n 110: { color: [125, 140, 178], opacity: 1, label: 'Right-caudate-intensity-abnormality' },\n 111: { color: [126, 140, 178], opacity: 1, label: 'Right-putamen-intensity-abnormality' },\n 112: { color: [127, 140, 178], opacity: 1, label: 'Right-accumbens-intensity-abnormality' },\n 113: { color: [124, 141, 178], opacity: 1, label: 'Right-pallidum-intensity-abnormality' },\n 114: { color: [124, 142, 178], opacity: 1, label: 'Right-amygdala-intensity-abnormality' },\n 115: { color: [124, 143, 178], opacity: 1, label: 'Right-hippocampus-intensity-abnormality' },\n 116: { color: [124, 144, 178], opacity: 1, label: 'Right-thalamus-intensity-abnormality' },\n 117: { color: [124, 140, 179], opacity: 1, label: 'Right-VDC-intensity-abnormality' },\n 118: { color: [255, 20, 147], opacity: 1, label: 'Epidermis' },\n 119: { color: [205, 179, 139], opacity: 1, label: 'Conn-Tissue' },\n 120: { color: [238, 238, 209], opacity: 1, label: 'SC-Fat-Muscle' },\n 121: { color: [200, 200, 200], opacity: 1, label: 'Cranium' },\n 122: { color: [74, 255, 74], opacity: 1, label: 'CSF-SA' },\n 123: { color: [238, 0, 0], opacity: 1, label: 'Muscle' },\n 124: { color: [0, 0, 139], opacity: 1, label: 'Ear' },\n 125: { color: [173, 255, 47], opacity: 1, label: 'Adipose' },\n 126: { color: [133, 203, 229], opacity: 1, label: 'Spinal-Cord' },\n 127: { color: [26, 237, 57], opacity: 1, label: 'Soft-Tissue' },\n 128: { color: [34, 139, 34], opacity: 1, label: 'Nerve' },\n 129: { color: [30, 144, 255], opacity: 1, label: 'Bone' },\n 130: { color: [147, 19, 173], opacity: 1, label: 'Air' },\n 131: { color: [238, 59, 59], opacity: 1, label: 'Orbital-Fat' },\n 132: { color: [221, 39, 200], opacity: 1, label: 'Tongue' },\n 133: { color: [238, 174, 238], opacity: 1, label: 'Nasal-Structures' },\n 134: { color: [255, 0, 0], opacity: 1, label: 'Globe' },\n 135: { color: [72, 61, 139], opacity: 1, label: 'Teeth' },\n 136: { color: [21, 39, 132], opacity: 1, label: 'Left-Caudate-Putamen' },\n 137: { color: [21, 39, 132], opacity: 1, label: 'Right-Caudate-Putamen' },\n 138: { color: [65, 135, 20], opacity: 1, label: 'Left-Claustrum' },\n 139: { color: [65, 135, 20], opacity: 1, label: 'Right-Claustrum' },\n 140: { color: [134, 4, 160], opacity: 1, label: 'Cornea' },\n 142: { color: [221, 226, 68], opacity: 1, label: 'Diploe' },\n 143: { color: [255, 255, 254], opacity: 1, label: 'Vitreous-Humor' },\n 144: { color: [52, 209, 226], opacity: 1, label: 'Lens' },\n 145: { color: [239, 160, 223], opacity: 1, label: 'Aqueous-Humor' },\n 146: { color: [70, 130, 180], opacity: 1, label: 'Outer-Table' },\n 147: { color: [70, 130, 181], opacity: 1, label: 'Inner-Table' },\n 148: { color: [139, 121, 94], opacity: 1, label: 'Periosteum' },\n 149: { color: [224, 224, 224], opacity: 1, label: 'Endosteum' },\n 150: { color: [255, 0, 0], opacity: 1, label: 'R-C-S' },\n 151: { color: [205, 205, 0], opacity: 1, label: 'Iris' },\n 152: { color: [238, 238, 209], opacity: 1, label: 'SC-Adipose-Muscle' },\n 153: { color: [139, 121, 94], opacity: 1, label: 'SC-Tissue' },\n 154: { color: [238, 59, 59], opacity: 1, label: 'Orbital-Adipose' },\n 155: { color: [238, 59, 59], opacity: 1, label: 'Left-IntCapsule-Ant' },\n 156: { color: [238, 59, 59], opacity: 1, label: 'Right-IntCapsule-Ant' },\n 157: { color: [62, 10, 205], opacity: 1, label: 'Left-IntCapsule-Pos' },\n 158: { color: [62, 10, 205], opacity: 1, label: 'Right-IntCapsule-Pos' },\n 159: { color: [0, 118, 14], opacity: 1, label: 'Left-Cerebral-WM-unmyelinated' },\n 160: { color: [0, 118, 14], opacity: 1, label: 'Right-Cerebral-WM-unmyelinated' },\n 161: { color: [220, 216, 21], opacity: 1, label: 'Left-Cerebral-WM-myelinated' },\n 162: { color: [220, 216, 21], opacity: 1, label: 'Right-Cerebral-WM-myelinated' },\n 163: { color: [122, 186, 220], opacity: 1, label: 'Left-Subcortical-Gray-Matter' },\n 164: { color: [122, 186, 220], opacity: 1, label: 'Right-Subcortical-Gray-Matter' },\n 165: { color: [120, 120, 120], opacity: 1, label: 'Skull' },\n 166: { color: [14, 48, 255], opacity: 1, label: 'Posterior-fossa' },\n 167: { color: [166, 42, 42], opacity: 1, label: 'Scalp' },\n 168: { color: [121, 18, 134], opacity: 1, label: 'Hematoma' },\n 169: { color: [236, 13, 127], opacity: 1, label: 'Left-Basal-Ganglia' },\n 176: { color: [236, 13, 126], opacity: 1, label: 'Right-Basal-Ganglia' },\n 170: { color: [119, 159, 176], opacity: 1, label: 'brainstem' },\n 171: { color: [119, 0, 176], opacity: 1, label: 'DCG' },\n 172: { color: [119, 100, 176], opacity: 1, label: 'Vermis' },\n 173: { color: [242, 104, 76], opacity: 1, label: 'Midbrain' },\n 174: { color: [206, 195, 58], opacity: 1, label: 'Pons' },\n 175: { color: [119, 159, 176], opacity: 1, label: 'Medulla' },\n 177: { color: [119, 50, 176], opacity: 1, label: 'Vermis-White-Matter' },\n 178: { color: [142, 182, 0], opacity: 1, label: 'SCP' },\n 179: { color: [19, 100, 176], opacity: 1, label: 'Floculus' },\n 180: { color: [73, 61, 139], opacity: 1, label: 'Left-Cortical-Dysplasia' },\n 181: { color: [73, 62, 139], opacity: 1, label: 'Right-Cortical-Dysplasia' },\n 182: { color: [10, 100, 176], opacity: 1, label: 'CblumNodulus' },\n 193: { color: [0, 196, 255], opacity: 1, label: 'Left-hippocampal_fissure' },\n 194: { color: [255, 164, 164], opacity: 1, label: 'Left-CADG-head' },\n 195: { color: [196, 196, 0], opacity: 1, label: 'Left-subiculum' },\n 196: { color: [0, 100, 255], opacity: 1, label: 'Left-fimbria' },\n 197: { color: [128, 196, 164], opacity: 1, label: 'Right-hippocampal_fissure' },\n 198: { color: [0, 126, 75], opacity: 1, label: 'Right-CADG-head' },\n 199: { color: [128, 96, 64], opacity: 1, label: 'Right-subiculum' },\n 200: { color: [0, 50, 128], opacity: 1, label: 'Right-fimbria' },\n 201: { color: [255, 204, 153], opacity: 1, label: 'alveus' },\n 202: { color: [255, 128, 128], opacity: 1, label: 'perforant_pathway' },\n 203: { color: [255, 255, 0], opacity: 1, label: 'parasubiculum' },\n 204: { color: [64, 0, 64], opacity: 1, label: 'presubiculum' },\n 205: { color: [0, 0, 255], opacity: 1, label: 'subiculum' },\n 206: { color: [255, 0, 0], opacity: 1, label: 'CA1' },\n 207: { color: [128, 128, 255], opacity: 1, label: 'CA2' },\n 208: { color: [0, 128, 0], opacity: 1, label: 'CA3' },\n 209: { color: [196, 160, 128], opacity: 1, label: 'CA4' },\n 210: { color: [32, 200, 255], opacity: 1, label: 'GC-DG' },\n 211: { color: [128, 255, 128], opacity: 1, label: 'HATA' },\n 212: { color: [204, 153, 204], opacity: 1, label: 'fimbria' },\n 213: { color: [121, 17, 136], opacity: 1, label: 'lateral_ventricle' },\n 214: { color: [128, 0, 0], opacity: 1, label: 'molecular_layer_HP' },\n 215: { color: [128, 32, 255], opacity: 1, label: 'hippocampal_fissure' },\n 216: { color: [255, 204, 102], opacity: 1, label: 'entorhinal_cortex' },\n 217: { color: [128, 128, 128], opacity: 1, label: 'molecular_layer_subiculum' },\n 218: { color: [104, 255, 255], opacity: 1, label: 'Amygdala' },\n 219: { color: [0, 226, 0], opacity: 1, label: 'Cerebral_White_Matter' },\n 220: { color: [205, 63, 78], opacity: 1, label: 'Cerebral_Cortex' },\n 221: { color: [197, 58, 250], opacity: 1, label: 'Inf_Lat_Vent' },\n 222: { color: [33, 150, 250], opacity: 1, label: 'Perirhinal' },\n 223: { color: [226, 0, 0], opacity: 1, label: 'Cerebral_White_Matter_Edge' },\n 224: { color: [100, 100, 100], opacity: 1, label: 'Background' },\n 225: { color: [197, 150, 250], opacity: 1, label: 'Ectorhinal' },\n 226: { color: [170, 170, 255], opacity: 1, label: 'HP_tail' },\n 250: { color: [255, 0, 0], opacity: 1, label: 'Fornix' },\n 251: { color: [0, 0, 64], opacity: 1, label: 'CC_Posterior' },\n 252: { color: [0, 0, 112], opacity: 1, label: 'CC_Mid_Posterior' },\n 253: { color: [0, 0, 160], opacity: 1, label: 'CC_Central' },\n 254: { color: [0, 0, 208], opacity: 1, label: 'CC_Mid_Anterior' },\n 255: { color: [0, 0, 255], opacity: 1, label: 'CC_Anterior' },\n 256: { color: [0, 0, 0], opacity: 1, label: 'Voxel-Unchanged' },\n 257: { color: [60, 60, 60], opacity: 1, label: 'CSF-ExtraCerebral' },\n 258: { color: [150, 150, 200], opacity: 1, label: 'Head-ExtraCerebral' },\n 259: { color: [120, 120, 120], opacity: 1, label: 'SkullApprox' },\n 260: { color: [119, 159, 176], opacity: 1, label: 'BoneOrAir' },\n 261: { color: [120, 18, 134], opacity: 1, label: 'PossibleFluid' },\n 262: { color: [119, 159, 176], opacity: 1, label: 'Sinus' },\n 263: { color: [119, 159, 176], opacity: 1, label: 'Left-Eustachian' },\n 264: { color: [119, 159, 176], opacity: 1, label: 'Right-Eustachian' },\n 331: { color: [255, 0, 0], opacity: 1, label: 'Aorta' },\n 332: { color: [255, 80, 0], opacity: 1, label: 'Left-Common-IliacA' },\n 333: { color: [255, 160, 0], opacity: 1, label: 'Right-Common-IliacA' },\n 334: { color: [255, 255, 0], opacity: 1, label: 'Left-External-IliacA' },\n 335: { color: [0, 255, 0], opacity: 1, label: 'Right-External-IliacA' },\n 336: { color: [255, 0, 160], opacity: 1, label: 'Left-Internal-IliacA' },\n 337: { color: [255, 0, 255], opacity: 1, label: 'Right-Internal-IliacA' },\n 338: { color: [255, 50, 80], opacity: 1, label: 'Left-Lateral-SacralA' },\n 339: { color: [80, 255, 50], opacity: 1, label: 'Right-Lateral-SacralA' },\n 340: { color: [160, 255, 50], opacity: 1, label: 'Left-ObturatorA' },\n 341: { color: [160, 200, 255], opacity: 1, label: 'Right-ObturatorA' },\n 342: { color: [0, 255, 160], opacity: 1, label: 'Left-Internal-PudendalA' },\n 343: { color: [0, 0, 255], opacity: 1, label: 'Right-Internal-PudendalA' },\n 344: { color: [80, 50, 255], opacity: 1, label: 'Left-UmbilicalA' },\n 345: { color: [160, 0, 255], opacity: 1, label: 'Right-UmbilicalA' },\n 346: { color: [255, 210, 0], opacity: 1, label: 'Left-Inf-RectalA' },\n 347: { color: [0, 160, 255], opacity: 1, label: 'Right-Inf-RectalA' },\n 348: { color: [255, 200, 80], opacity: 1, label: 'Left-Common-IliacV' },\n 349: { color: [255, 200, 160], opacity: 1, label: 'Right-Common-IliacV' },\n 350: { color: [255, 80, 200], opacity: 1, label: 'Left-External-IliacV' },\n 351: { color: [255, 160, 200], opacity: 1, label: 'Right-External-IliacV' },\n 352: { color: [30, 255, 80], opacity: 1, label: 'Left-Internal-IliacV' },\n 353: { color: [80, 200, 255], opacity: 1, label: 'Right-Internal-IliacV' },\n 354: { color: [80, 255, 200], opacity: 1, label: 'Left-ObturatorV' },\n 355: { color: [195, 255, 200], opacity: 1, label: 'Right-ObturatorV' },\n 356: { color: [120, 200, 20], opacity: 1, label: 'Left-Internal-PudendalV' },\n 357: { color: [170, 10, 200], opacity: 1, label: 'Right-Internal-PudendalV' },\n 358: { color: [20, 130, 180], opacity: 1, label: 'Pos-Lymph' },\n 359: { color: [20, 180, 130], opacity: 1, label: 'Neg-Lymph' },\n 400: { color: [206, 62, 78], opacity: 1, label: 'V1' },\n 401: { color: [121, 18, 134], opacity: 1, label: 'V2' },\n 402: { color: [199, 58, 250], opacity: 1, label: 'BA44' },\n 403: { color: [1, 148, 0], opacity: 1, label: 'BA45' },\n 404: { color: [221, 248, 164], opacity: 1, label: 'BA4a' },\n 405: { color: [231, 148, 34], opacity: 1, label: 'BA4p' },\n 406: { color: [1, 118, 14], opacity: 1, label: 'BA6' },\n 407: { color: [120, 118, 14], opacity: 1, label: 'BA2' },\n 408: { color: [123, 186, 221], opacity: 1, label: 'BA1_old' },\n 409: { color: [238, 13, 177], opacity: 1, label: 'BAun2' },\n 410: { color: [123, 186, 220], opacity: 1, label: 'BA1' },\n 411: { color: [138, 13, 206], opacity: 1, label: 'BA2b' },\n 412: { color: [238, 130, 176], opacity: 1, label: 'BA3a' },\n 413: { color: [218, 230, 76], opacity: 1, label: 'BA3b' },\n 414: { color: [38, 213, 176], opacity: 1, label: 'MT' },\n 415: { color: [1, 225, 176], opacity: 1, label: 'AIPS_AIP_l' },\n 416: { color: [1, 225, 176], opacity: 1, label: 'AIPS_AIP_r' },\n 417: { color: [200, 2, 100], opacity: 1, label: 'AIPS_VIP_l' },\n 418: { color: [200, 2, 100], opacity: 1, label: 'AIPS_VIP_r' },\n 419: { color: [5, 200, 90], opacity: 1, label: 'IPL_PFcm_l' },\n 420: { color: [5, 200, 90], opacity: 1, label: 'IPL_PFcm_r' },\n 421: { color: [100, 5, 200], opacity: 1, label: 'IPL_PF_l' },\n 422: { color: [25, 255, 100], opacity: 1, label: 'IPL_PFm_l' },\n 423: { color: [25, 255, 100], opacity: 1, label: 'IPL_PFm_r' },\n 424: { color: [230, 7, 100], opacity: 1, label: 'IPL_PFop_l' },\n 425: { color: [230, 7, 100], opacity: 1, label: 'IPL_PFop_r' },\n 426: { color: [100, 5, 200], opacity: 1, label: 'IPL_PF_r' },\n 427: { color: [150, 10, 200], opacity: 1, label: 'IPL_PFt_l' },\n 428: { color: [150, 10, 200], opacity: 1, label: 'IPL_PFt_r' },\n 429: { color: [175, 10, 176], opacity: 1, label: 'IPL_PGa_l' },\n 430: { color: [175, 10, 176], opacity: 1, label: 'IPL_PGa_r' },\n 431: { color: [10, 100, 255], opacity: 1, label: 'IPL_PGp_l' },\n 432: { color: [10, 100, 255], opacity: 1, label: 'IPL_PGp_r' },\n 433: { color: [150, 45, 70], opacity: 1, label: 'Visual_V3d_l' },\n 434: { color: [150, 45, 70], opacity: 1, label: 'Visual_V3d_r' },\n 435: { color: [45, 200, 15], opacity: 1, label: 'Visual_V4_l' },\n 436: { color: [45, 200, 15], opacity: 1, label: 'Visual_V4_r' },\n 437: { color: [227, 45, 100], opacity: 1, label: 'Visual_V5_b' },\n 438: { color: [227, 45, 100], opacity: 1, label: 'Visual_VP_l' },\n 439: { color: [227, 45, 100], opacity: 1, label: 'Visual_VP_r' },\n 498: { color: [143, 188, 143], opacity: 1, label: 'wmsa' },\n 499: { color: [255, 248, 220], opacity: 1, label: 'other_wmsa' },\n 500: { color: [17, 85, 136], opacity: 1, label: 'right_CA2_3' },\n 501: { color: [119, 187, 102], opacity: 1, label: 'right_alveus' },\n 502: { color: [204, 68, 34], opacity: 1, label: 'right_CA1' },\n 503: { color: [204, 0, 255], opacity: 1, label: 'right_fimbria' },\n 504: { color: [221, 187, 17], opacity: 1, label: 'right_presubiculum' },\n 505: { color: [153, 221, 238], opacity: 1, label: 'right_hippocampal_fissure' },\n 506: { color: [51, 17, 17], opacity: 1, label: 'right_CA4_DG' },\n 507: { color: [0, 119, 85], opacity: 1, label: 'right_subiculum' },\n 508: { color: [20, 100, 200], opacity: 1, label: 'right_fornix' },\n 550: { color: [17, 85, 137], opacity: 1, label: 'left_CA2_3' },\n 551: { color: [119, 187, 103], opacity: 1, label: 'left_alveus' },\n 552: { color: [204, 68, 35], opacity: 1, label: 'left_CA1' },\n 553: { color: [204, 0, 254], opacity: 1, label: 'left_fimbria' },\n 554: { color: [221, 187, 16], opacity: 1, label: 'left_presubiculum' },\n 555: { color: [153, 221, 239], opacity: 1, label: 'left_hippocampal_fissure' },\n 556: { color: [51, 17, 18], opacity: 1, label: 'left_CA4_DG' },\n 557: { color: [0, 119, 86], opacity: 1, label: 'left_subiculum' },\n 558: { color: [20, 100, 201], opacity: 1, label: 'left_fornix' },\n 600: { color: [254, 254, 254], opacity: 1, label: 'Tumor' },\n 601: { color: [70, 130, 180], opacity: 1, label: 'Cbm_Left_I_IV' },\n 602: { color: [245, 245, 245], opacity: 1, label: 'Cbm_Right_I_IV' },\n 603: { color: [205, 62, 78], opacity: 1, label: 'Cbm_Left_V' },\n 604: { color: [120, 18, 134], opacity: 1, label: 'Cbm_Right_V' },\n 605: { color: [196, 58, 250], opacity: 1, label: 'Cbm_Left_VI' },\n 606: { color: [0, 148, 0], opacity: 1, label: 'Cbm_Vermis_VI' },\n 607: { color: [220, 248, 164], opacity: 1, label: 'Cbm_Right_VI' },\n 608: { color: [230, 148, 34], opacity: 1, label: 'Cbm_Left_CrusI' },\n 609: { color: [0, 118, 14], opacity: 1, label: 'Cbm_Vermis_CrusI' },\n 610: { color: [0, 118, 14], opacity: 1, label: 'Cbm_Right_CrusI' },\n 611: { color: [122, 186, 220], opacity: 1, label: 'Cbm_Left_CrusII' },\n 612: { color: [236, 13, 176], opacity: 1, label: 'Cbm_Vermis_CrusII' },\n 613: { color: [12, 48, 255], opacity: 1, label: 'Cbm_Right_CrusII' },\n 614: { color: [204, 182, 142], opacity: 1, label: 'Cbm_Left_VIIb' },\n 615: { color: [42, 204, 164], opacity: 1, label: 'Cbm_Vermis_VIIb' },\n 616: { color: [119, 159, 176], opacity: 1, label: 'Cbm_Right_VIIb' },\n 617: { color: [220, 216, 20], opacity: 1, label: 'Cbm_Left_VIIIa' },\n 618: { color: [103, 255, 255], opacity: 1, label: 'Cbm_Vermis_VIIIa' },\n 619: { color: [80, 196, 98], opacity: 1, label: 'Cbm_Right_VIIIa' },\n 620: { color: [60, 58, 210], opacity: 1, label: 'Cbm_Left_VIIIb' },\n 621: { color: [60, 58, 210], opacity: 1, label: 'Cbm_Vermis_VIIIb' },\n 622: { color: [60, 58, 210], opacity: 1, label: 'Cbm_Right_VIIIb' },\n 623: { color: [60, 58, 210], opacity: 1, label: 'Cbm_Left_IX' },\n 624: { color: [60, 60, 60], opacity: 1, label: 'Cbm_Vermis_IX' },\n 625: { color: [255, 165, 0], opacity: 1, label: 'Cbm_Right_IX' },\n 626: { color: [255, 165, 0], opacity: 1, label: 'Cbm_Left_X' },\n 627: { color: [0, 255, 127], opacity: 1, label: 'Cbm_Vermis_X' },\n 628: { color: [165, 42, 42], opacity: 1, label: 'Cbm_Right_X' },\n 640: { color: [204, 0, 0], opacity: 1, label: 'Cbm_Right_I_V_med' },\n 641: { color: [255, 0, 0], opacity: 1, label: 'Cbm_Right_I_V_mid' },\n 642: { color: [0, 0, 255], opacity: 1, label: 'Cbm_Right_VI_med' },\n 643: { color: [30, 144, 255], opacity: 1, label: 'Cbm_Right_VI_mid' },\n 644: { color: [100, 212, 237], opacity: 1, label: 'Cbm_Right_VI_lat' },\n 645: { color: [218, 165, 32], opacity: 1, label: 'Cbm_Right_CrusI_med' },\n 646: { color: [255, 215, 0], opacity: 1, label: 'Cbm_Right_CrusI_mid' },\n 647: { color: [255, 255, 166], opacity: 1, label: 'Cbm_Right_CrusI_lat' },\n 648: { color: [153, 0, 204], opacity: 1, label: 'Cbm_Right_CrusII_med' },\n 649: { color: [153, 141, 209], opacity: 1, label: 'Cbm_Right_CrusII_mid' },\n 650: { color: [204, 204, 255], opacity: 1, label: 'Cbm_Right_CrusII_lat' },\n 651: { color: [31, 212, 194], opacity: 1, label: 'Cbm_Right_7med' },\n 652: { color: [3, 255, 237], opacity: 1, label: 'Cbm_Right_7mid' },\n 653: { color: [204, 255, 255], opacity: 1, label: 'Cbm_Right_7lat' },\n 654: { color: [86, 74, 147], opacity: 1, label: 'Cbm_Right_8med' },\n 655: { color: [114, 114, 190], opacity: 1, label: 'Cbm_Right_8mid' },\n 656: { color: [184, 178, 255], opacity: 1, label: 'Cbm_Right_8lat' },\n 657: { color: [126, 138, 37], opacity: 1, label: 'Cbm_Right_PUNs' },\n 658: { color: [189, 197, 117], opacity: 1, label: 'Cbm_Right_TONs' },\n 659: { color: [240, 230, 140], opacity: 1, label: 'Cbm_Right_FLOs' },\n 660: { color: [204, 0, 0], opacity: 1, label: 'Cbm_Left_I_V_med' },\n 661: { color: [255, 0, 0], opacity: 1, label: 'Cbm_Left_I_V_mid' },\n 662: { color: [0, 0, 255], opacity: 1, label: 'Cbm_Left_VI_med' },\n 663: { color: [30, 144, 255], opacity: 1, label: 'Cbm_Left_VI_mid' },\n 664: { color: [100, 212, 237], opacity: 1, label: 'Cbm_Left_VI_lat' },\n 665: { color: [218, 165, 32], opacity: 1, label: 'Cbm_Left_CrusI_med' },\n 666: { color: [255, 215, 0], opacity: 1, label: 'Cbm_Left_CrusI_mid' },\n 667: { color: [255, 255, 166], opacity: 1, label: 'Cbm_Left_CrusI_lat' },\n 668: { color: [153, 0, 204], opacity: 1, label: 'Cbm_Left_CrusII_med' },\n 669: { color: [153, 141, 209], opacity: 1, label: 'Cbm_Left_CrusII_mid' },\n 670: { color: [204, 204, 255], opacity: 1, label: 'Cbm_Left_CrusII_lat' },\n 671: { color: [31, 212, 194], opacity: 1, label: 'Cbm_Left_7med' },\n 672: { color: [3, 255, 237], opacity: 1, label: 'Cbm_Left_7mid' },\n 673: { color: [204, 255, 255], opacity: 1, label: 'Cbm_Left_7lat' },\n 674: { color: [86, 74, 147], opacity: 1, label: 'Cbm_Left_8med' },\n 675: { color: [114, 114, 190], opacity: 1, label: 'Cbm_Left_8mid' },\n 676: { color: [184, 178, 255], opacity: 1, label: 'Cbm_Left_8lat' },\n 677: { color: [126, 138, 37], opacity: 1, label: 'Cbm_Left_PUNs' },\n 678: { color: [189, 197, 117], opacity: 1, label: 'Cbm_Left_TONs' },\n 679: { color: [240, 230, 140], opacity: 1, label: 'Cbm_Left_FLOs' },\n 690: { color: [122, 135, 50], opacity: 1, label: 'CbmWM_Gyri_Left' },\n 691: { color: [122, 135, 50], opacity: 1, label: 'CbmWM_Gyri_Right' },\n 701: { color: [120, 18, 134], opacity: 1, label: 'CSF-FSL-FAST' },\n 702: { color: [205, 62, 78], opacity: 1, label: 'GrayMatter-FSL-FAST' },\n 703: { color: [0, 225, 0], opacity: 1, label: 'WhiteMatter-FSL-FAST' },\n 999: { color: [255, 100, 100], opacity: 1, label: 'SUSPICIOUS' },\n 1000: { color: [25, 5, 25], opacity: 1, label: 'ctx-lh-unknown' },\n 1001: { color: [25, 100, 40], opacity: 1, label: 'ctx-lh-bankssts' },\n 1002: { color: [125, 100, 160], opacity: 1, label: 'ctx-lh-caudalanteriorcingulate' },\n 1003: { color: [100, 25, 0], opacity: 1, label: 'ctx-lh-caudalmiddlefrontal' },\n 1004: { color: [120, 70, 50], opacity: 1, label: 'ctx-lh-corpuscallosum' },\n 1005: { color: [220, 20, 100], opacity: 1, label: 'ctx-lh-cuneus' },\n 1006: { color: [220, 20, 10], opacity: 1, label: 'ctx-lh-entorhinal' },\n 1007: { color: [180, 220, 140], opacity: 1, label: 'ctx-lh-fusiform' },\n 1008: { color: [220, 60, 220], opacity: 1, label: 'ctx-lh-inferiorparietal' },\n 1009: { color: [180, 40, 120], opacity: 1, label: 'ctx-lh-inferiortemporal' },\n 1010: { color: [140, 20, 140], opacity: 1, label: 'ctx-lh-isthmuscingulate' },\n 1011: { color: [20, 30, 140], opacity: 1, label: 'ctx-lh-lateraloccipital' },\n 1012: { color: [35, 75, 50], opacity: 1, label: 'ctx-lh-lateralorbitofrontal' },\n 1013: { color: [225, 140, 140], opacity: 1, label: 'ctx-lh-lingual' },\n 1014: { color: [200, 35, 75], opacity: 1, label: 'ctx-lh-medialorbitofrontal' },\n 1015: { color: [160, 100, 50], opacity: 1, label: 'ctx-lh-middletemporal' },\n 1016: { color: [20, 220, 60], opacity: 1, label: 'ctx-lh-parahippocampal' },\n 1017: { color: [60, 220, 60], opacity: 1, label: 'ctx-lh-paracentral' },\n 1018: { color: [220, 180, 140], opacity: 1, label: 'ctx-lh-parsopercularis' },\n 1019: { color: [20, 100, 50], opacity: 1, label: 'ctx-lh-parsorbitalis' },\n 1020: { color: [220, 60, 20], opacity: 1, label: 'ctx-lh-parstriangularis' },\n 1021: { color: [120, 100, 60], opacity: 1, label: 'ctx-lh-pericalcarine' },\n 1022: { color: [220, 20, 20], opacity: 1, label: 'ctx-lh-postcentral' },\n 1023: { color: [220, 180, 220], opacity: 1, label: 'ctx-lh-posteriorcingulate' },\n 1024: { color: [60, 20, 220], opacity: 1, label: 'ctx-lh-precentral' },\n 1025: { color: [160, 140, 180], opacity: 1, label: 'ctx-lh-precuneus' },\n 1026: { color: [80, 20, 140], opacity: 1, label: 'ctx-lh-rostralanteriorcingulate' },\n 1027: { color: [75, 50, 125], opacity: 1, label: 'ctx-lh-rostralmiddlefrontal' },\n 1028: { color: [20, 220, 160], opacity: 1, label: 'ctx-lh-superiorfrontal' },\n 1029: { color: [20, 180, 140], opacity: 1, label: 'ctx-lh-superiorparietal' },\n 1030: { color: [140, 220, 220], opacity: 1, label: 'ctx-lh-superiortemporal' },\n 1031: { color: [80, 160, 20], opacity: 1, label: 'ctx-lh-supramarginal' },\n 1032: { color: [100, 0, 100], opacity: 1, label: 'ctx-lh-frontalpole' },\n 1033: { color: [70, 70, 70], opacity: 1, label: 'ctx-lh-temporalpole' },\n 1034: { color: [150, 150, 200], opacity: 1, label: 'ctx-lh-transversetemporal' },\n 1035: { color: [255, 192, 32], opacity: 1, label: 'ctx-lh-insula' },\n 2000: { color: [25, 5, 25], opacity: 1, label: 'ctx-rh-unknown' },\n 2001: { color: [25, 100, 40], opacity: 1, label: 'ctx-rh-bankssts' },\n 2002: { color: [125, 100, 160], opacity: 1, label: 'ctx-rh-caudalanteriorcingulate' },\n 2003: { color: [100, 25, 0], opacity: 1, label: 'ctx-rh-caudalmiddlefrontal' },\n 2004: { color: [120, 70, 50], opacity: 1, label: 'ctx-rh-corpuscallosum' },\n 2005: { color: [220, 20, 100], opacity: 1, label: 'ctx-rh-cuneus' },\n 2006: { color: [220, 20, 10], opacity: 1, label: 'ctx-rh-entorhinal' },\n 2007: { color: [180, 220, 140], opacity: 1, label: 'ctx-rh-fusiform' },\n 2008: { color: [220, 60, 220], opacity: 1, label: 'ctx-rh-inferiorparietal' },\n 2009: { color: [180, 40, 120], opacity: 1, label: 'ctx-rh-inferiortemporal' },\n 2010: { color: [140, 20, 140], opacity: 1, label: 'ctx-rh-isthmuscingulate' },\n 2011: { color: [20, 30, 140], opacity: 1, label: 'ctx-rh-lateraloccipital' },\n 2012: { color: [35, 75, 50], opacity: 1, label: 'ctx-rh-lateralorbitofrontal' },\n 2013: { color: [225, 140, 140], opacity: 1, label: 'ctx-rh-lingual' },\n 2014: { color: [200, 35, 75], opacity: 1, label: 'ctx-rh-medialorbitofrontal' },\n 2015: { color: [160, 100, 50], opacity: 1, label: 'ctx-rh-middletemporal' },\n 2016: { color: [20, 220, 60], opacity: 1, label: 'ctx-rh-parahippocampal' },\n 2017: { color: [60, 220, 60], opacity: 1, label: 'ctx-rh-paracentral' },\n 2018: { color: [220, 180, 140], opacity: 1, label: 'ctx-rh-parsopercularis' },\n 2019: { color: [20, 100, 50], opacity: 1, label: 'ctx-rh-parsorbitalis' },\n 2020: { color: [220, 60, 20], opacity: 1, label: 'ctx-rh-parstriangularis' },\n 2021: { color: [120, 100, 60], opacity: 1, label: 'ctx-rh-pericalcarine' },\n 2022: { color: [220, 20, 20], opacity: 1, label: 'ctx-rh-postcentral' },\n 2023: { color: [220, 180, 220], opacity: 1, label: 'ctx-rh-posteriorcingulate' },\n 2024: { color: [60, 20, 220], opacity: 1, label: 'ctx-rh-precentral' },\n 2025: { color: [160, 140, 180], opacity: 1, label: 'ctx-rh-precuneus' },\n 2026: { color: [80, 20, 140], opacity: 1, label: 'ctx-rh-rostralanteriorcingulate' },\n 2027: { color: [75, 50, 125], opacity: 1, label: 'ctx-rh-rostralmiddlefrontal' },\n 2028: { color: [20, 220, 160], opacity: 1, label: 'ctx-rh-superiorfrontal' },\n 2029: { color: [20, 180, 140], opacity: 1, label: 'ctx-rh-superiorparietal' },\n 2030: { color: [140, 220, 220], opacity: 1, label: 'ctx-rh-superiortemporal' },\n 2031: { color: [80, 160, 20], opacity: 1, label: 'ctx-rh-supramarginal' },\n 2032: { color: [100, 0, 100], opacity: 1, label: 'ctx-rh-frontalpole' },\n 2033: { color: [70, 70, 70], opacity: 1, label: 'ctx-rh-temporalpole' },\n 2034: { color: [150, 150, 200], opacity: 1, label: 'ctx-rh-transversetemporal' },\n 2035: { color: [255, 192, 32], opacity: 1, label: 'ctx-rh-insula' },\n 3000: { color: [230, 250, 230], opacity: 1, label: 'wm-lh-unknown' },\n 3001: { color: [230, 155, 215], opacity: 1, label: 'wm-lh-bankssts' },\n 3002: { color: [130, 155, 95], opacity: 1, label: 'wm-lh-caudalanteriorcingulate' },\n 3003: { color: [155, 230, 255], opacity: 1, label: 'wm-lh-caudalmiddlefrontal' },\n 3004: { color: [135, 185, 205], opacity: 1, label: 'wm-lh-corpuscallosum' },\n 3005: { color: [35, 235, 155], opacity: 1, label: 'wm-lh-cuneus' },\n 3006: { color: [35, 235, 245], opacity: 1, label: 'wm-lh-entorhinal' },\n 3007: { color: [75, 35, 115], opacity: 1, label: 'wm-lh-fusiform' },\n 3008: { color: [35, 195, 35], opacity: 1, label: 'wm-lh-inferiorparietal' },\n 3009: { color: [75, 215, 135], opacity: 1, label: 'wm-lh-inferiortemporal' },\n 3010: { color: [115, 235, 115], opacity: 1, label: 'wm-lh-isthmuscingulate' },\n 3011: { color: [235, 225, 115], opacity: 1, label: 'wm-lh-lateraloccipital' },\n 3012: { color: [220, 180, 205], opacity: 1, label: 'wm-lh-lateralorbitofrontal' },\n 3013: { color: [30, 115, 115], opacity: 1, label: 'wm-lh-lingual' },\n 3014: { color: [55, 220, 180], opacity: 1, label: 'wm-lh-medialorbitofrontal' },\n 3015: { color: [95, 155, 205], opacity: 1, label: 'wm-lh-middletemporal' },\n 3016: { color: [235, 35, 195], opacity: 1, label: 'wm-lh-parahippocampal' },\n 3017: { color: [195, 35, 195], opacity: 1, label: 'wm-lh-paracentral' },\n 3018: { color: [35, 75, 115], opacity: 1, label: 'wm-lh-parsopercularis' },\n 3019: { color: [235, 155, 205], opacity: 1, label: 'wm-lh-parsorbitalis' },\n 3020: { color: [35, 195, 235], opacity: 1, label: 'wm-lh-parstriangularis' },\n 3021: { color: [135, 155, 195], opacity: 1, label: 'wm-lh-pericalcarine' },\n 3022: { color: [35, 235, 235], opacity: 1, label: 'wm-lh-postcentral' },\n 3023: { color: [35, 75, 35], opacity: 1, label: 'wm-lh-posteriorcingulate' },\n 3024: { color: [195, 235, 35], opacity: 1, label: 'wm-lh-precentral' },\n 3025: { color: [95, 115, 75], opacity: 1, label: 'wm-lh-precuneus' },\n 3026: { color: [175, 235, 115], opacity: 1, label: 'wm-lh-rostralanteriorcingulate' },\n 3027: { color: [180, 205, 130], opacity: 1, label: 'wm-lh-rostralmiddlefrontal' },\n 3028: { color: [235, 35, 95], opacity: 1, label: 'wm-lh-superiorfrontal' },\n 3029: { color: [235, 75, 115], opacity: 1, label: 'wm-lh-superiorparietal' },\n 3030: { color: [115, 35, 35], opacity: 1, label: 'wm-lh-superiortemporal' },\n 3031: { color: [175, 95, 235], opacity: 1, label: 'wm-lh-supramarginal' },\n 3032: { color: [155, 255, 155], opacity: 1, label: 'wm-lh-frontalpole' },\n 3033: { color: [185, 185, 185], opacity: 1, label: 'wm-lh-temporalpole' },\n 3034: { color: [105, 105, 55], opacity: 1, label: 'wm-lh-transversetemporal' },\n 3035: { color: [20, 220, 160], opacity: 1, label: 'wm-lh-insula' },\n 4000: { color: [230, 250, 230], opacity: 1, label: 'wm-rh-unknown' },\n 4001: { color: [230, 155, 215], opacity: 1, label: 'wm-rh-bankssts' },\n 4002: { color: [130, 155, 95], opacity: 1, label: 'wm-rh-caudalanteriorcingulate' },\n 4003: { color: [155, 230, 255], opacity: 1, label: 'wm-rh-caudalmiddlefrontal' },\n 4004: { color: [135, 185, 205], opacity: 1, label: 'wm-rh-corpuscallosum' },\n 4005: { color: [35, 235, 155], opacity: 1, label: 'wm-rh-cuneus' },\n 4006: { color: [35, 235, 245], opacity: 1, label: 'wm-rh-entorhinal' },\n 4007: { color: [75, 35, 115], opacity: 1, label: 'wm-rh-fusiform' },\n 4008: { color: [35, 195, 35], opacity: 1, label: 'wm-rh-inferiorparietal' },\n 4009: { color: [75, 215, 135], opacity: 1, label: 'wm-rh-inferiortemporal' },\n 4010: { color: [115, 235, 115], opacity: 1, label: 'wm-rh-isthmuscingulate' },\n 4011: { color: [235, 225, 115], opacity: 1, label: 'wm-rh-lateraloccipital' },\n 4012: { color: [220, 180, 205], opacity: 1, label: 'wm-rh-lateralorbitofrontal' },\n 4013: { color: [30, 115, 115], opacity: 1, label: 'wm-rh-lingual' },\n 4014: { color: [55, 220, 180], opacity: 1, label: 'wm-rh-medialorbitofrontal' },\n 4015: { color: [95, 155, 205], opacity: 1, label: 'wm-rh-middletemporal' },\n 4016: { color: [235, 35, 195], opacity: 1, label: 'wm-rh-parahippocampal' },\n 4017: { color: [195, 35, 195], opacity: 1, label: 'wm-rh-paracentral' },\n 4018: { color: [35, 75, 115], opacity: 1, label: 'wm-rh-parsopercularis' },\n 4019: { color: [235, 155, 205], opacity: 1, label: 'wm-rh-parsorbitalis' },\n 4020: { color: [35, 195, 235], opacity: 1, label: 'wm-rh-parstriangularis' },\n 4021: { color: [135, 155, 195], opacity: 1, label: 'wm-rh-pericalcarine' },\n 4022: { color: [35, 235, 235], opacity: 1, label: 'wm-rh-postcentral' },\n 4023: { color: [35, 75, 35], opacity: 1, label: 'wm-rh-posteriorcingulate' },\n 4024: { color: [195, 235, 35], opacity: 1, label: 'wm-rh-precentral' },\n 4025: { color: [95, 115, 75], opacity: 1, label: 'wm-rh-precuneus' },\n 4026: { color: [175, 235, 115], opacity: 1, label: 'wm-rh-rostralanteriorcingulate' },\n 4027: { color: [180, 205, 130], opacity: 1, label: 'wm-rh-rostralmiddlefrontal' },\n 4028: { color: [235, 35, 95], opacity: 1, label: 'wm-rh-superiorfrontal' },\n 4029: { color: [235, 75, 115], opacity: 1, label: 'wm-rh-superiorparietal' },\n 4030: { color: [115, 35, 35], opacity: 1, label: 'wm-rh-superiortemporal' },\n 4031: { color: [175, 95, 235], opacity: 1, label: 'wm-rh-supramarginal' },\n 4032: { color: [155, 255, 155], opacity: 1, label: 'wm-rh-frontalpole' },\n 4033: { color: [185, 185, 185], opacity: 1, label: 'wm-rh-temporalpole' },\n 4034: { color: [105, 105, 55], opacity: 1, label: 'wm-rh-transversetemporal' },\n 4035: { color: [20, 220, 160], opacity: 1, label: 'wm-rh-insula' },\n 3201: { color: [235, 35, 95], opacity: 1, label: 'wm-lh-frontal-lobe' },\n 3203: { color: [35, 75, 35], opacity: 1, label: 'wm-lh-cingulate-lobe' },\n 3204: { color: [135, 155, 195], opacity: 1, label: 'wm-lh-occiptal-lobe' },\n 3205: { color: [115, 35, 35], opacity: 1, label: 'wm-lh-temporal-lobe' },\n 3206: { color: [35, 195, 35], opacity: 1, label: 'wm-lh-parietal-lobe' },\n 3207: { color: [20, 220, 160], opacity: 1, label: 'wm-lh-insula-lobe' },\n 4201: { color: [235, 35, 95], opacity: 1, label: 'wm-rh-frontal-lobe' },\n 4203: { color: [35, 75, 35], opacity: 1, label: 'wm-rh-cingulate-lobe' },\n 4204: { color: [135, 155, 195], opacity: 1, label: 'wm-rh-occiptal-lobe' },\n 4205: { color: [115, 35, 35], opacity: 1, label: 'wm-rh-temporal-lobe' },\n 4206: { color: [35, 195, 35], opacity: 1, label: 'wm-rh-parietal-lobe' },\n 4207: { color: [20, 220, 160], opacity: 1, label: 'wm-rh-insula-lobe' },\n 1100: { color: [0, 0, 0], opacity: 1, label: 'ctx-lh-Unknown' },\n 1101: { color: [50, 50, 50], opacity: 1, label: 'ctx-lh-Corpus_callosum' },\n 1102: { color: [180, 20, 30], opacity: 1, label: 'ctx-lh-G_and_S_Insula_ONLY_AVERAGE' },\n 1103: { color: [60, 25, 25], opacity: 1, label: 'ctx-lh-G_cingulate-Isthmus' },\n 1104: { color: [25, 60, 60], opacity: 1, label: 'ctx-lh-G_cingulate-Main_part' },\n 1200: { color: [25, 60, 61], opacity: 1, label: 'ctx-lh-G_cingulate-caudal_ACC' },\n 1201: { color: [25, 90, 60], opacity: 1, label: 'ctx-lh-G_cingulate-rostral_ACC' },\n 1202: { color: [25, 120, 60], opacity: 1, label: 'ctx-lh-G_cingulate-posterior' },\n 1205: { color: [25, 150, 60], opacity: 1, label: 'ctx-lh-S_cingulate-caudal_ACC' },\n 1206: { color: [25, 180, 60], opacity: 1, label: 'ctx-lh-S_cingulate-rostral_ACC' },\n 1207: { color: [25, 210, 60], opacity: 1, label: 'ctx-lh-S_cingulate-posterior' },\n 1210: { color: [25, 150, 90], opacity: 1, label: 'ctx-lh-S_pericallosal-caudal' },\n 1211: { color: [25, 180, 90], opacity: 1, label: 'ctx-lh-S_pericallosal-rostral' },\n 1212: { color: [25, 210, 90], opacity: 1, label: 'ctx-lh-S_pericallosal-posterior' },\n 1105: { color: [180, 20, 20], opacity: 1, label: 'ctx-lh-G_cuneus' },\n 1106: { color: [220, 20, 100], opacity: 1, label: 'ctx-lh-G_frontal_inf-Opercular_part' },\n 1107: { color: [140, 60, 60], opacity: 1, label: 'ctx-lh-G_frontal_inf-Orbital_part' },\n 1108: { color: [180, 220, 140], opacity: 1, label: 'ctx-lh-G_frontal_inf-Triangular_part' },\n 1109: { color: [140, 100, 180], opacity: 1, label: 'ctx-lh-G_frontal_middle' },\n 1110: { color: [180, 20, 140], opacity: 1, label: 'ctx-lh-G_frontal_superior' },\n 1111: { color: [140, 20, 140], opacity: 1, label: 'ctx-lh-G_frontomarginal' },\n 1112: { color: [21, 10, 10], opacity: 1, label: 'ctx-lh-G_insular_long' },\n 1113: { color: [225, 140, 140], opacity: 1, label: 'ctx-lh-G_insular_short' },\n 1114: { color: [23, 60, 180], opacity: 1, label: 'ctx-lh-G_and_S_occipital_inferior' },\n 1115: { color: [180, 60, 180], opacity: 1, label: 'ctx-lh-G_occipital_middle' },\n 1116: { color: [20, 220, 60], opacity: 1, label: 'ctx-lh-G_occipital_superior' },\n 1117: { color: [60, 20, 140], opacity: 1, label: 'ctx-lh-G_occipit-temp_lat-Or_fusiform' },\n 1118: { color: [220, 180, 140], opacity: 1, label: 'ctx-lh-G_occipit-temp_med-Lingual_part' },\n 1119: {\n color: [65, 100, 20],\n opacity: 1,\n label: 'ctx-lh-G_occipit-temp_med-Parahippocampal_part',\n },\n 1120: { color: [220, 60, 20], opacity: 1, label: 'ctx-lh-G_orbital' },\n 1121: { color: [60, 100, 60], opacity: 1, label: 'ctx-lh-G_paracentral' },\n 1122: { color: [20, 60, 220], opacity: 1, label: 'ctx-lh-G_parietal_inferior-Angular_part' },\n 1123: {\n color: [100, 100, 60],\n opacity: 1,\n label: 'ctx-lh-G_parietal_inferior-Supramarginal_part',\n },\n 1124: { color: [220, 180, 220], opacity: 1, label: 'ctx-lh-G_parietal_superior' },\n 1125: { color: [20, 180, 140], opacity: 1, label: 'ctx-lh-G_postcentral' },\n 1126: { color: [60, 140, 180], opacity: 1, label: 'ctx-lh-G_precentral' },\n 1127: { color: [25, 20, 140], opacity: 1, label: 'ctx-lh-G_precuneus' },\n 1128: { color: [20, 60, 100], opacity: 1, label: 'ctx-lh-G_rectus' },\n 1129: { color: [60, 220, 20], opacity: 1, label: 'ctx-lh-G_subcallosal' },\n 1130: { color: [60, 20, 220], opacity: 1, label: 'ctx-lh-G_subcentral' },\n 1131: { color: [220, 220, 100], opacity: 1, label: 'ctx-lh-G_temporal_inferior' },\n 1132: { color: [180, 60, 60], opacity: 1, label: 'ctx-lh-G_temporal_middle' },\n 1133: { color: [60, 60, 220], opacity: 1, label: 'ctx-lh-G_temp_sup-G_temp_transv_and_interm_S' },\n 1134: { color: [220, 60, 220], opacity: 1, label: 'ctx-lh-G_temp_sup-Lateral_aspect' },\n 1135: { color: [65, 220, 60], opacity: 1, label: 'ctx-lh-G_temp_sup-Planum_polare' },\n 1136: { color: [25, 140, 20], opacity: 1, label: 'ctx-lh-G_temp_sup-Planum_tempolare' },\n 1137: { color: [13, 0, 250], opacity: 1, label: 'ctx-lh-G_and_S_transverse_frontopolar' },\n 1138: { color: [61, 20, 220], opacity: 1, label: 'ctx-lh-Lat_Fissure-ant_sgt-ramus_horizontal' },\n 1139: { color: [61, 20, 60], opacity: 1, label: 'ctx-lh-Lat_Fissure-ant_sgt-ramus_vertical' },\n 1140: { color: [61, 60, 100], opacity: 1, label: 'ctx-lh-Lat_Fissure-post_sgt' },\n 1141: { color: [25, 25, 25], opacity: 1, label: 'ctx-lh-Medial_wall' },\n 1142: { color: [140, 20, 60], opacity: 1, label: 'ctx-lh-Pole_occipital' },\n 1143: { color: [220, 180, 20], opacity: 1, label: 'ctx-lh-Pole_temporal' },\n 1144: { color: [63, 180, 180], opacity: 1, label: 'ctx-lh-S_calcarine' },\n 1145: { color: [221, 20, 10], opacity: 1, label: 'ctx-lh-S_central' },\n 1146: { color: [21, 220, 20], opacity: 1, label: 'ctx-lh-S_central_insula' },\n 1147: {\n color: [183, 100, 20],\n opacity: 1,\n label: 'ctx-lh-S_cingulate-Main_part_and_Intracingulate',\n },\n 1148: { color: [221, 20, 100], opacity: 1, label: 'ctx-lh-S_cingulate-Marginalis_part' },\n 1149: { color: [221, 60, 140], opacity: 1, label: 'ctx-lh-S_circular_insula_anterior' },\n 1150: { color: [221, 20, 220], opacity: 1, label: 'ctx-lh-S_circular_insula_inferior' },\n 1151: { color: [61, 220, 220], opacity: 1, label: 'ctx-lh-S_circular_insula_superior' },\n 1152: { color: [100, 200, 200], opacity: 1, label: 'ctx-lh-S_collateral_transverse_ant' },\n 1153: { color: [10, 200, 200], opacity: 1, label: 'ctx-lh-S_collateral_transverse_post' },\n 1154: { color: [221, 220, 20], opacity: 1, label: 'ctx-lh-S_frontal_inferior' },\n 1155: { color: [141, 20, 100], opacity: 1, label: 'ctx-lh-S_frontal_middle' },\n 1156: { color: [61, 220, 100], opacity: 1, label: 'ctx-lh-S_frontal_superior' },\n 1157: { color: [21, 220, 60], opacity: 1, label: 'ctx-lh-S_frontomarginal' },\n 1158: { color: [141, 60, 20], opacity: 1, label: 'ctx-lh-S_intermedius_primus-Jensen' },\n 1159: {\n color: [143, 20, 220],\n opacity: 1,\n label: 'ctx-lh-S_intraparietal-and_Parietal_transverse',\n },\n 1160: { color: [61, 20, 180], opacity: 1, label: 'ctx-lh-S_occipital_anterior' },\n 1161: { color: [101, 60, 220], opacity: 1, label: 'ctx-lh-S_occipital_middle_and_Lunatus' },\n 1162: {\n color: [21, 20, 140],\n opacity: 1,\n label: 'ctx-lh-S_occipital_superior_and_transversalis',\n },\n 1163: { color: [221, 140, 20], opacity: 1, label: 'ctx-lh-S_occipito-temporal_lateral' },\n 1164: {\n color: [141, 100, 220],\n opacity: 1,\n label: 'ctx-lh-S_occipito-temporal_medial_and_S_Lingual',\n },\n 1165: { color: [101, 20, 20], opacity: 1, label: 'ctx-lh-S_orbital-H_shapped' },\n 1166: { color: [221, 100, 20], opacity: 1, label: 'ctx-lh-S_orbital_lateral' },\n 1167: { color: [181, 200, 20], opacity: 1, label: 'ctx-lh-S_orbital_medial-Or_olfactory' },\n 1168: { color: [21, 180, 140], opacity: 1, label: 'ctx-lh-S_paracentral' },\n 1169: { color: [101, 100, 180], opacity: 1, label: 'ctx-lh-S_parieto_occipital' },\n 1170: { color: [181, 220, 20], opacity: 1, label: 'ctx-lh-S_pericallosal' },\n 1171: { color: [21, 140, 200], opacity: 1, label: 'ctx-lh-S_postcentral' },\n 1172: { color: [21, 20, 240], opacity: 1, label: 'ctx-lh-S_precentral-Inferior-part' },\n 1173: { color: [21, 20, 200], opacity: 1, label: 'ctx-lh-S_precentral-Superior-part' },\n 1174: { color: [61, 180, 60], opacity: 1, label: 'ctx-lh-S_subcentral_ant' },\n 1175: { color: [61, 180, 250], opacity: 1, label: 'ctx-lh-S_subcentral_post' },\n 1176: { color: [21, 20, 60], opacity: 1, label: 'ctx-lh-S_suborbital' },\n 1177: { color: [101, 60, 60], opacity: 1, label: 'ctx-lh-S_subparietal' },\n 1178: { color: [21, 220, 220], opacity: 1, label: 'ctx-lh-S_supracingulate' },\n 1179: { color: [21, 180, 180], opacity: 1, label: 'ctx-lh-S_temporal_inferior' },\n 1180: { color: [223, 220, 60], opacity: 1, label: 'ctx-lh-S_temporal_superior' },\n 1181: { color: [221, 60, 60], opacity: 1, label: 'ctx-lh-S_temporal_transverse' },\n 2100: { color: [0, 0, 0], opacity: 1, label: 'ctx-rh-Unknown' },\n 2101: { color: [50, 50, 50], opacity: 1, label: 'ctx-rh-Corpus_callosum' },\n 2102: { color: [180, 20, 30], opacity: 1, label: 'ctx-rh-G_and_S_Insula_ONLY_AVERAGE' },\n 2103: { color: [60, 25, 25], opacity: 1, label: 'ctx-rh-G_cingulate-Isthmus' },\n 2104: { color: [25, 60, 60], opacity: 1, label: 'ctx-rh-G_cingulate-Main_part' },\n 2105: { color: [180, 20, 20], opacity: 1, label: 'ctx-rh-G_cuneus' },\n 2106: { color: [220, 20, 100], opacity: 1, label: 'ctx-rh-G_frontal_inf-Opercular_part' },\n 2107: { color: [140, 60, 60], opacity: 1, label: 'ctx-rh-G_frontal_inf-Orbital_part' },\n 2108: { color: [180, 220, 140], opacity: 1, label: 'ctx-rh-G_frontal_inf-Triangular_part' },\n 2109: { color: [140, 100, 180], opacity: 1, label: 'ctx-rh-G_frontal_middle' },\n 2110: { color: [180, 20, 140], opacity: 1, label: 'ctx-rh-G_frontal_superior' },\n 2111: { color: [140, 20, 140], opacity: 1, label: 'ctx-rh-G_frontomarginal' },\n 2112: { color: [21, 10, 10], opacity: 1, label: 'ctx-rh-G_insular_long' },\n 2113: { color: [225, 140, 140], opacity: 1, label: 'ctx-rh-G_insular_short' },\n 2114: { color: [23, 60, 180], opacity: 1, label: 'ctx-rh-G_and_S_occipital_inferior' },\n 2115: { color: [180, 60, 180], opacity: 1, label: 'ctx-rh-G_occipital_middle' },\n 2116: { color: [20, 220, 60], opacity: 1, label: 'ctx-rh-G_occipital_superior' },\n 2117: { color: [60, 20, 140], opacity: 1, label: 'ctx-rh-G_occipit-temp_lat-Or_fusiform' },\n 2118: { color: [220, 180, 140], opacity: 1, label: 'ctx-rh-G_occipit-temp_med-Lingual_part' },\n 2119: {\n color: [65, 100, 20],\n opacity: 1,\n label: 'ctx-rh-G_occipit-temp_med-Parahippocampal_part',\n },\n 2120: { color: [220, 60, 20], opacity: 1, label: 'ctx-rh-G_orbital' },\n 2121: { color: [60, 100, 60], opacity: 1, label: 'ctx-rh-G_paracentral' },\n 2122: { color: [20, 60, 220], opacity: 1, label: 'ctx-rh-G_parietal_inferior-Angular_part' },\n 2123: {\n color: [100, 100, 60],\n opacity: 1,\n label: 'ctx-rh-G_parietal_inferior-Supramarginal_part',\n },\n 2124: { color: [220, 180, 220], opacity: 1, label: 'ctx-rh-G_parietal_superior' },\n 2125: { color: [20, 180, 140], opacity: 1, label: 'ctx-rh-G_postcentral' },\n 2126: { color: [60, 140, 180], opacity: 1, label: 'ctx-rh-G_precentral' },\n 2127: { color: [25, 20, 140], opacity: 1, label: 'ctx-rh-G_precuneus' },\n 2128: { color: [20, 60, 100], opacity: 1, label: 'ctx-rh-G_rectus' },\n 2129: { color: [60, 220, 20], opacity: 1, label: 'ctx-rh-G_subcallosal' },\n 2130: { color: [60, 20, 220], opacity: 1, label: 'ctx-rh-G_subcentral' },\n 2131: { color: [220, 220, 100], opacity: 1, label: 'ctx-rh-G_temporal_inferior' },\n 2132: { color: [180, 60, 60], opacity: 1, label: 'ctx-rh-G_temporal_middle' },\n 2133: { color: [60, 60, 220], opacity: 1, label: 'ctx-rh-G_temp_sup-G_temp_transv_and_interm_S' },\n 2134: { color: [220, 60, 220], opacity: 1, label: 'ctx-rh-G_temp_sup-Lateral_aspect' },\n 2135: { color: [65, 220, 60], opacity: 1, label: 'ctx-rh-G_temp_sup-Planum_polare' },\n 2136: { color: [25, 140, 20], opacity: 1, label: 'ctx-rh-G_temp_sup-Planum_tempolare' },\n 2137: { color: [13, 0, 250], opacity: 1, label: 'ctx-rh-G_and_S_transverse_frontopolar' },\n 2138: { color: [61, 20, 220], opacity: 1, label: 'ctx-rh-Lat_Fissure-ant_sgt-ramus_horizontal' },\n 2139: { color: [61, 20, 60], opacity: 1, label: 'ctx-rh-Lat_Fissure-ant_sgt-ramus_vertical' },\n 2140: { color: [61, 60, 100], opacity: 1, label: 'ctx-rh-Lat_Fissure-post_sgt' },\n 2141: { color: [25, 25, 25], opacity: 1, label: 'ctx-rh-Medial_wall' },\n 2142: { color: [140, 20, 60], opacity: 1, label: 'ctx-rh-Pole_occipital' },\n 2143: { color: [220, 180, 20], opacity: 1, label: 'ctx-rh-Pole_temporal' },\n 2144: { color: [63, 180, 180], opacity: 1, label: 'ctx-rh-S_calcarine' },\n 2145: { color: [221, 20, 10], opacity: 1, label: 'ctx-rh-S_central' },\n 2146: { color: [21, 220, 20], opacity: 1, label: 'ctx-rh-S_central_insula' },\n 2147: {\n color: [183, 100, 20],\n opacity: 1,\n label: 'ctx-rh-S_cingulate-Main_part_and_Intracingulate',\n },\n 2148: { color: [221, 20, 100], opacity: 1, label: 'ctx-rh-S_cingulate-Marginalis_part' },\n 2149: { color: [221, 60, 140], opacity: 1, label: 'ctx-rh-S_circular_insula_anterior' },\n 2150: { color: [221, 20, 220], opacity: 1, label: 'ctx-rh-S_circular_insula_inferior' },\n 2151: { color: [61, 220, 220], opacity: 1, label: 'ctx-rh-S_circular_insula_superior' },\n 2152: { color: [100, 200, 200], opacity: 1, label: 'ctx-rh-S_collateral_transverse_ant' },\n 2153: { color: [10, 200, 200], opacity: 1, label: 'ctx-rh-S_collateral_transverse_post' },\n 2154: { color: [221, 220, 20], opacity: 1, label: 'ctx-rh-S_frontal_inferior' },\n 2155: { color: [141, 20, 100], opacity: 1, label: 'ctx-rh-S_frontal_middle' },\n 2156: { color: [61, 220, 100], opacity: 1, label: 'ctx-rh-S_frontal_superior' },\n 2157: { color: [21, 220, 60], opacity: 1, label: 'ctx-rh-S_frontomarginal' },\n 2158: { color: [141, 60, 20], opacity: 1, label: 'ctx-rh-S_intermedius_primus-Jensen' },\n 2159: {\n color: [143, 20, 220],\n opacity: 1,\n label: 'ctx-rh-S_intraparietal-and_Parietal_transverse',\n },\n 2160: { color: [61, 20, 180], opacity: 1, label: 'ctx-rh-S_occipital_anterior' },\n 2161: { color: [101, 60, 220], opacity: 1, label: 'ctx-rh-S_occipital_middle_and_Lunatus' },\n 2162: {\n color: [21, 20, 140],\n opacity: 1,\n label: 'ctx-rh-S_occipital_superior_and_transversalis',\n },\n 2163: { color: [221, 140, 20], opacity: 1, label: 'ctx-rh-S_occipito-temporal_lateral' },\n 2164: {\n color: [141, 100, 220],\n opacity: 1,\n label: 'ctx-rh-S_occipito-temporal_medial_and_S_Lingual',\n },\n 2165: { color: [101, 20, 20], opacity: 1, label: 'ctx-rh-S_orbital-H_shapped' },\n 2166: { color: [221, 100, 20], opacity: 1, label: 'ctx-rh-S_orbital_lateral' },\n 2167: { color: [181, 200, 20], opacity: 1, label: 'ctx-rh-S_orbital_medial-Or_olfactory' },\n 2168: { color: [21, 180, 140], opacity: 1, label: 'ctx-rh-S_paracentral' },\n 2169: { color: [101, 100, 180], opacity: 1, label: 'ctx-rh-S_parieto_occipital' },\n 2170: { color: [181, 220, 20], opacity: 1, label: 'ctx-rh-S_pericallosal' },\n 2171: { color: [21, 140, 200], opacity: 1, label: 'ctx-rh-S_postcentral' },\n 2172: { color: [21, 20, 240], opacity: 1, label: 'ctx-rh-S_precentral-Inferior-part' },\n 2173: { color: [21, 20, 200], opacity: 1, label: 'ctx-rh-S_precentral-Superior-part' },\n 2174: { color: [61, 180, 60], opacity: 1, label: 'ctx-rh-S_subcentral_ant' },\n 2175: { color: [61, 180, 250], opacity: 1, label: 'ctx-rh-S_subcentral_post' },\n 2176: { color: [21, 20, 60], opacity: 1, label: 'ctx-rh-S_suborbital' },\n 2177: { color: [101, 60, 60], opacity: 1, label: 'ctx-rh-S_subparietal' },\n 2178: { color: [21, 220, 220], opacity: 1, label: 'ctx-rh-S_supracingulate' },\n 2179: { color: [21, 180, 180], opacity: 1, label: 'ctx-rh-S_temporal_inferior' },\n 2180: { color: [223, 220, 60], opacity: 1, label: 'ctx-rh-S_temporal_superior' },\n 2181: { color: [221, 60, 60], opacity: 1, label: 'ctx-rh-S_temporal_transverse' },\n 2200: { color: [25, 60, 61], opacity: 1, label: 'ctx-rh-G_cingulate-caudal_ACC' },\n 2201: { color: [25, 90, 60], opacity: 1, label: 'ctx-rh-G_cingulate-rostral_ACC' },\n 2202: { color: [25, 120, 60], opacity: 1, label: 'ctx-rh-G_cingulate-posterior' },\n 2205: { color: [25, 150, 60], opacity: 1, label: 'ctx-rh-S_cingulate-caudal_ACC' },\n 2206: { color: [25, 180, 60], opacity: 1, label: 'ctx-rh-S_cingulate-rostral_ACC' },\n 2207: { color: [25, 210, 60], opacity: 1, label: 'ctx-rh-S_cingulate-posterior' },\n 2210: { color: [25, 150, 90], opacity: 1, label: 'ctx-rh-S_pericallosal-caudal' },\n 2211: { color: [25, 180, 90], opacity: 1, label: 'ctx-rh-S_pericallosal-rostral' },\n 2212: { color: [25, 210, 90], opacity: 1, label: 'ctx-rh-S_pericallosal-posterior' },\n 3100: { color: [0, 0, 0], opacity: 1, label: 'wm-lh-Unknown' },\n 3101: { color: [50, 50, 50], opacity: 1, label: 'wm-lh-Corpus_callosum' },\n 3102: { color: [180, 20, 30], opacity: 1, label: 'wm-lh-G_and_S_Insula_ONLY_AVERAGE' },\n 3103: { color: [60, 25, 25], opacity: 1, label: 'wm-lh-G_cingulate-Isthmus' },\n 3104: { color: [25, 60, 60], opacity: 1, label: 'wm-lh-G_cingulate-Main_part' },\n 3105: { color: [180, 20, 20], opacity: 1, label: 'wm-lh-G_cuneus' },\n 3106: { color: [220, 20, 100], opacity: 1, label: 'wm-lh-G_frontal_inf-Opercular_part' },\n 3107: { color: [140, 60, 60], opacity: 1, label: 'wm-lh-G_frontal_inf-Orbital_part' },\n 3108: { color: [180, 220, 140], opacity: 1, label: 'wm-lh-G_frontal_inf-Triangular_part' },\n 3109: { color: [140, 100, 180], opacity: 1, label: 'wm-lh-G_frontal_middle' },\n 3110: { color: [180, 20, 140], opacity: 1, label: 'wm-lh-G_frontal_superior' },\n 3111: { color: [140, 20, 140], opacity: 1, label: 'wm-lh-G_frontomarginal' },\n 3112: { color: [21, 10, 10], opacity: 1, label: 'wm-lh-G_insular_long' },\n 3113: { color: [225, 140, 140], opacity: 1, label: 'wm-lh-G_insular_short' },\n 3114: { color: [23, 60, 180], opacity: 1, label: 'wm-lh-G_and_S_occipital_inferior' },\n 3115: { color: [180, 60, 180], opacity: 1, label: 'wm-lh-G_occipital_middle' },\n 3116: { color: [20, 220, 60], opacity: 1, label: 'wm-lh-G_occipital_superior' },\n 3117: { color: [60, 20, 140], opacity: 1, label: 'wm-lh-G_occipit-temp_lat-Or_fusiform' },\n 3118: { color: [220, 180, 140], opacity: 1, label: 'wm-lh-G_occipit-temp_med-Lingual_part' },\n 3119: {\n color: [65, 100, 20],\n opacity: 1,\n label: 'wm-lh-G_occipit-temp_med-Parahippocampal_part',\n },\n 3120: { color: [220, 60, 20], opacity: 1, label: 'wm-lh-G_orbital' },\n 3121: { color: [60, 100, 60], opacity: 1, label: 'wm-lh-G_paracentral' },\n 3122: { color: [20, 60, 220], opacity: 1, label: 'wm-lh-G_parietal_inferior-Angular_part' },\n 3123: {\n color: [100, 100, 60],\n opacity: 1,\n label: 'wm-lh-G_parietal_inferior-Supramarginal_part',\n },\n 3124: { color: [220, 180, 220], opacity: 1, label: 'wm-lh-G_parietal_superior' },\n 3125: { color: [20, 180, 140], opacity: 1, label: 'wm-lh-G_postcentral' },\n 3126: { color: [60, 140, 180], opacity: 1, label: 'wm-lh-G_precentral' },\n 3127: { color: [25, 20, 140], opacity: 1, label: 'wm-lh-G_precuneus' },\n 3128: { color: [20, 60, 100], opacity: 1, label: 'wm-lh-G_rectus' },\n 3129: { color: [60, 220, 20], opacity: 1, label: 'wm-lh-G_subcallosal' },\n 3130: { color: [60, 20, 220], opacity: 1, label: 'wm-lh-G_subcentral' },\n 3131: { color: [220, 220, 100], opacity: 1, label: 'wm-lh-G_temporal_inferior' },\n 3132: { color: [180, 60, 60], opacity: 1, label: 'wm-lh-G_temporal_middle' },\n 3133: { color: [60, 60, 220], opacity: 1, label: 'wm-lh-G_temp_sup-G_temp_transv_and_interm_S' },\n 3134: { color: [220, 60, 220], opacity: 1, label: 'wm-lh-G_temp_sup-Lateral_aspect' },\n 3135: { color: [65, 220, 60], opacity: 1, label: 'wm-lh-G_temp_sup-Planum_polare' },\n 3136: { color: [25, 140, 20], opacity: 1, label: 'wm-lh-G_temp_sup-Planum_tempolare' },\n 3137: { color: [13, 0, 250], opacity: 1, label: 'wm-lh-G_and_S_transverse_frontopolar' },\n 3138: { color: [61, 20, 220], opacity: 1, label: 'wm-lh-Lat_Fissure-ant_sgt-ramus_horizontal' },\n 3139: { color: [61, 20, 60], opacity: 1, label: 'wm-lh-Lat_Fissure-ant_sgt-ramus_vertical' },\n 3140: { color: [61, 60, 100], opacity: 1, label: 'wm-lh-Lat_Fissure-post_sgt' },\n 3141: { color: [25, 25, 25], opacity: 1, label: 'wm-lh-Medial_wall' },\n 3142: { color: [140, 20, 60], opacity: 1, label: 'wm-lh-Pole_occipital' },\n 3143: { color: [220, 180, 20], opacity: 1, label: 'wm-lh-Pole_temporal' },\n 3144: { color: [63, 180, 180], opacity: 1, label: 'wm-lh-S_calcarine' },\n 3145: { color: [221, 20, 10], opacity: 1, label: 'wm-lh-S_central' },\n 3146: { color: [21, 220, 20], opacity: 1, label: 'wm-lh-S_central_insula' },\n 3147: {\n color: [183, 100, 20],\n opacity: 1,\n label: 'wm-lh-S_cingulate-Main_part_and_Intracingulate',\n },\n 3148: { color: [221, 20, 100], opacity: 1, label: 'wm-lh-S_cingulate-Marginalis_part' },\n 3149: { color: [221, 60, 140], opacity: 1, label: 'wm-lh-S_circular_insula_anterior' },\n 3150: { color: [221, 20, 220], opacity: 1, label: 'wm-lh-S_circular_insula_inferior' },\n 3151: { color: [61, 220, 220], opacity: 1, label: 'wm-lh-S_circular_insula_superior' },\n 3152: { color: [100, 200, 200], opacity: 1, label: 'wm-lh-S_collateral_transverse_ant' },\n 3153: { color: [10, 200, 200], opacity: 1, label: 'wm-lh-S_collateral_transverse_post' },\n 3154: { color: [221, 220, 20], opacity: 1, label: 'wm-lh-S_frontal_inferior' },\n 3155: { color: [141, 20, 100], opacity: 1, label: 'wm-lh-S_frontal_middle' },\n 3156: { color: [61, 220, 100], opacity: 1, label: 'wm-lh-S_frontal_superior' },\n 3157: { color: [21, 220, 60], opacity: 1, label: 'wm-lh-S_frontomarginal' },\n 3158: { color: [141, 60, 20], opacity: 1, label: 'wm-lh-S_intermedius_primus-Jensen' },\n 3159: {\n color: [143, 20, 220],\n opacity: 1,\n label: 'wm-lh-S_intraparietal-and_Parietal_transverse',\n },\n 3160: { color: [61, 20, 180], opacity: 1, label: 'wm-lh-S_occipital_anterior' },\n 3161: { color: [101, 60, 220], opacity: 1, label: 'wm-lh-S_occipital_middle_and_Lunatus' },\n 3162: { color: [21, 20, 140], opacity: 1, label: 'wm-lh-S_occipital_superior_and_transversalis' },\n 3163: { color: [221, 140, 20], opacity: 1, label: 'wm-lh-S_occipito-temporal_lateral' },\n 3164: {\n color: [141, 100, 220],\n opacity: 1,\n label: 'wm-lh-S_occipito-temporal_medial_and_S_Lingual',\n },\n 3165: { color: [101, 20, 20], opacity: 1, label: 'wm-lh-S_orbital-H_shapped' },\n 3166: { color: [221, 100, 20], opacity: 1, label: 'wm-lh-S_orbital_lateral' },\n 3167: { color: [181, 200, 20], opacity: 1, label: 'wm-lh-S_orbital_medial-Or_olfactory' },\n 3168: { color: [21, 180, 140], opacity: 1, label: 'wm-lh-S_paracentral' },\n 3169: { color: [101, 100, 180], opacity: 1, label: 'wm-lh-S_parieto_occipital' },\n 3170: { color: [181, 220, 20], opacity: 1, label: 'wm-lh-S_pericallosal' },\n 3171: { color: [21, 140, 200], opacity: 1, label: 'wm-lh-S_postcentral' },\n 3172: { color: [21, 20, 240], opacity: 1, label: 'wm-lh-S_precentral-Inferior-part' },\n 3173: { color: [21, 20, 200], opacity: 1, label: 'wm-lh-S_precentral-Superior-part' },\n 3174: { color: [61, 180, 60], opacity: 1, label: 'wm-lh-S_subcentral_ant' },\n 3175: { color: [61, 180, 250], opacity: 1, label: 'wm-lh-S_subcentral_post' },\n 3176: { color: [21, 20, 60], opacity: 1, label: 'wm-lh-S_suborbital' },\n 3177: { color: [101, 60, 60], opacity: 1, label: 'wm-lh-S_subparietal' },\n 3178: { color: [21, 220, 220], opacity: 1, label: 'wm-lh-S_supracingulate' },\n 3179: { color: [21, 180, 180], opacity: 1, label: 'wm-lh-S_temporal_inferior' },\n 3180: { color: [223, 220, 60], opacity: 1, label: 'wm-lh-S_temporal_superior' },\n 3181: { color: [221, 60, 60], opacity: 1, label: 'wm-lh-S_temporal_transverse' },\n 4100: { color: [0, 0, 0], opacity: 1, label: 'wm-rh-Unknown' },\n 4101: { color: [50, 50, 50], opacity: 1, label: 'wm-rh-Corpus_callosum' },\n 4102: { color: [180, 20, 30], opacity: 1, label: 'wm-rh-G_and_S_Insula_ONLY_AVERAGE' },\n 4103: { color: [60, 25, 25], opacity: 1, label: 'wm-rh-G_cingulate-Isthmus' },\n 4104: { color: [25, 60, 60], opacity: 1, label: 'wm-rh-G_cingulate-Main_part' },\n 4105: { color: [180, 20, 20], opacity: 1, label: 'wm-rh-G_cuneus' },\n 4106: { color: [220, 20, 100], opacity: 1, label: 'wm-rh-G_frontal_inf-Opercular_part' },\n 4107: { color: [140, 60, 60], opacity: 1, label: 'wm-rh-G_frontal_inf-Orbital_part' },\n 4108: { color: [180, 220, 140], opacity: 1, label: 'wm-rh-G_frontal_inf-Triangular_part' },\n 4109: { color: [140, 100, 180], opacity: 1, label: 'wm-rh-G_frontal_middle' },\n 4110: { color: [180, 20, 140], opacity: 1, label: 'wm-rh-G_frontal_superior' },\n 4111: { color: [140, 20, 140], opacity: 1, label: 'wm-rh-G_frontomarginal' },\n 4112: { color: [21, 10, 10], opacity: 1, label: 'wm-rh-G_insular_long' },\n 4113: { color: [225, 140, 140], opacity: 1, label: 'wm-rh-G_insular_short' },\n 4114: { color: [23, 60, 180], opacity: 1, label: 'wm-rh-G_and_S_occipital_inferior' },\n 4115: { color: [180, 60, 180], opacity: 1, label: 'wm-rh-G_occipital_middle' },\n 4116: { color: [20, 220, 60], opacity: 1, label: 'wm-rh-G_occipital_superior' },\n 4117: { color: [60, 20, 140], opacity: 1, label: 'wm-rh-G_occipit-temp_lat-Or_fusiform' },\n 4118: { color: [220, 180, 140], opacity: 1, label: 'wm-rh-G_occipit-temp_med-Lingual_part' },\n 4119: {\n color: [65, 100, 20],\n opacity: 1,\n label: 'wm-rh-G_occipit-temp_med-Parahippocampal_part',\n },\n 4120: { color: [220, 60, 20], opacity: 1, label: 'wm-rh-G_orbital' },\n 4121: { color: [60, 100, 60], opacity: 1, label: 'wm-rh-G_paracentral' },\n 4122: { color: [20, 60, 220], opacity: 1, label: 'wm-rh-G_parietal_inferior-Angular_part' },\n 4123: {\n color: [100, 100, 60],\n opacity: 1,\n label: 'wm-rh-G_parietal_inferior-Supramarginal_part',\n },\n 4124: { color: [220, 180, 220], opacity: 1, label: 'wm-rh-G_parietal_superior' },\n 4125: { color: [20, 180, 140], opacity: 1, label: 'wm-rh-G_postcentral' },\n 4126: { color: [60, 140, 180], opacity: 1, label: 'wm-rh-G_precentral' },\n 4127: { color: [25, 20, 140], opacity: 1, label: 'wm-rh-G_precuneus' },\n 4128: { color: [20, 60, 100], opacity: 1, label: 'wm-rh-G_rectus' },\n 4129: { color: [60, 220, 20], opacity: 1, label: 'wm-rh-G_subcallosal' },\n 4130: { color: [60, 20, 220], opacity: 1, label: 'wm-rh-G_subcentral' },\n 4131: { color: [220, 220, 100], opacity: 1, label: 'wm-rh-G_temporal_inferior' },\n 4132: { color: [180, 60, 60], opacity: 1, label: 'wm-rh-G_temporal_middle' },\n 4133: { color: [60, 60, 220], opacity: 1, label: 'wm-rh-G_temp_sup-G_temp_transv_and_interm_S' },\n 4134: { color: [220, 60, 220], opacity: 1, label: 'wm-rh-G_temp_sup-Lateral_aspect' },\n 4135: { color: [65, 220, 60], opacity: 1, label: 'wm-rh-G_temp_sup-Planum_polare' },\n 4136: { color: [25, 140, 20], opacity: 1, label: 'wm-rh-G_temp_sup-Planum_tempolare' },\n 4137: { color: [13, 0, 250], opacity: 1, label: 'wm-rh-G_and_S_transverse_frontopolar' },\n 4138: { color: [61, 20, 220], opacity: 1, label: 'wm-rh-Lat_Fissure-ant_sgt-ramus_horizontal' },\n 4139: { color: [61, 20, 60], opacity: 1, label: 'wm-rh-Lat_Fissure-ant_sgt-ramus_vertical' },\n 4140: { color: [61, 60, 100], opacity: 1, label: 'wm-rh-Lat_Fissure-post_sgt' },\n 4141: { color: [25, 25, 25], opacity: 1, label: 'wm-rh-Medial_wall' },\n 4142: { color: [140, 20, 60], opacity: 1, label: 'wm-rh-Pole_occipital' },\n 4143: { color: [220, 180, 20], opacity: 1, label: 'wm-rh-Pole_temporal' },\n 4144: { color: [63, 180, 180], opacity: 1, label: 'wm-rh-S_calcarine' },\n 4145: { color: [221, 20, 10], opacity: 1, label: 'wm-rh-S_central' },\n 4146: { color: [21, 220, 20], opacity: 1, label: 'wm-rh-S_central_insula' },\n 4147: {\n color: [183, 100, 20],\n opacity: 1,\n label: 'wm-rh-S_cingulate-Main_part_and_Intracingulate',\n },\n 4148: { color: [221, 20, 100], opacity: 1, label: 'wm-rh-S_cingulate-Marginalis_part' },\n 4149: { color: [221, 60, 140], opacity: 1, label: 'wm-rh-S_circular_insula_anterior' },\n 4150: { color: [221, 20, 220], opacity: 1, label: 'wm-rh-S_circular_insula_inferior' },\n 4151: { color: [61, 220, 220], opacity: 1, label: 'wm-rh-S_circular_insula_superior' },\n 4152: { color: [100, 200, 200], opacity: 1, label: 'wm-rh-S_collateral_transverse_ant' },\n 4153: { color: [10, 200, 200], opacity: 1, label: 'wm-rh-S_collateral_transverse_post' },\n 4154: { color: [221, 220, 20], opacity: 1, label: 'wm-rh-S_frontal_inferior' },\n 4155: { color: [141, 20, 100], opacity: 1, label: 'wm-rh-S_frontal_middle' },\n 4156: { color: [61, 220, 100], opacity: 1, label: 'wm-rh-S_frontal_superior' },\n 4157: { color: [21, 220, 60], opacity: 1, label: 'wm-rh-S_frontomarginal' },\n 4158: { color: [141, 60, 20], opacity: 1, label: 'wm-rh-S_intermedius_primus-Jensen' },\n 4159: {\n color: [143, 20, 220],\n opacity: 1,\n label: 'wm-rh-S_intraparietal-and_Parietal_transverse',\n },\n 4160: { color: [61, 20, 180], opacity: 1, label: 'wm-rh-S_occipital_anterior' },\n 4161: { color: [101, 60, 220], opacity: 1, label: 'wm-rh-S_occipital_middle_and_Lunatus' },\n 4162: { color: [21, 20, 140], opacity: 1, label: 'wm-rh-S_occipital_superior_and_transversalis' },\n 4163: { color: [221, 140, 20], opacity: 1, label: 'wm-rh-S_occipito-temporal_lateral' },\n 4164: {\n color: [141, 100, 220],\n opacity: 1,\n label: 'wm-rh-S_occipito-temporal_medial_and_S_Lingual',\n },\n 4165: { color: [101, 20, 20], opacity: 1, label: 'wm-rh-S_orbital-H_shapped' },\n 4166: { color: [221, 100, 20], opacity: 1, label: 'wm-rh-S_orbital_lateral' },\n 4167: { color: [181, 200, 20], opacity: 1, label: 'wm-rh-S_orbital_medial-Or_olfactory' },\n 4168: { color: [21, 180, 140], opacity: 1, label: 'wm-rh-S_paracentral' },\n 4169: { color: [101, 100, 180], opacity: 1, label: 'wm-rh-S_parieto_occipital' },\n 4170: { color: [181, 220, 20], opacity: 1, label: 'wm-rh-S_pericallosal' },\n 4171: { color: [21, 140, 200], opacity: 1, label: 'wm-rh-S_postcentral' },\n 4172: { color: [21, 20, 240], opacity: 1, label: 'wm-rh-S_precentral-Inferior-part' },\n 4173: { color: [21, 20, 200], opacity: 1, label: 'wm-rh-S_precentral-Superior-part' },\n 4174: { color: [61, 180, 60], opacity: 1, label: 'wm-rh-S_subcentral_ant' },\n 4175: { color: [61, 180, 250], opacity: 1, label: 'wm-rh-S_subcentral_post' },\n 4176: { color: [21, 20, 60], opacity: 1, label: 'wm-rh-S_suborbital' },\n 4177: { color: [101, 60, 60], opacity: 1, label: 'wm-rh-S_subparietal' },\n 4178: { color: [21, 220, 220], opacity: 1, label: 'wm-rh-S_supracingulate' },\n 4179: { color: [21, 180, 180], opacity: 1, label: 'wm-rh-S_temporal_inferior' },\n 4180: { color: [223, 220, 60], opacity: 1, label: 'wm-rh-S_temporal_superior' },\n 4181: { color: [221, 60, 60], opacity: 1, label: 'wm-rh-S_temporal_transverse' },\n 5001: { color: [20, 30, 40], opacity: 1, label: 'Left-UnsegmentedWhiteMatter' },\n 5002: { color: [20, 30, 40], opacity: 1, label: 'Right-UnsegmentedWhiteMatter' },\n 5100: { color: [204, 102, 102], opacity: 1, label: 'fmajor' },\n 5101: { color: [204, 102, 102], opacity: 1, label: 'fminor' },\n 5102: { color: [255, 255, 102], opacity: 1, label: 'lh.atr' },\n 5103: { color: [153, 204, 0], opacity: 1, label: 'lh.cab' },\n 5104: { color: [0, 153, 153], opacity: 1, label: 'lh.ccg' },\n 5105: { color: [204, 153, 255], opacity: 1, label: 'lh.cst' },\n 5106: { color: [255, 153, 51], opacity: 1, label: 'lh.ilf' },\n 5107: { color: [204, 204, 204], opacity: 1, label: 'lh.slfp' },\n 5108: { color: [153, 255, 255], opacity: 1, label: 'lh.slft' },\n 5109: { color: [102, 153, 255], opacity: 1, label: 'lh.unc' },\n 5110: { color: [255, 255, 102], opacity: 1, label: 'rh.atr' },\n 5111: { color: [153, 204, 0], opacity: 1, label: 'rh.cab' },\n 5112: { color: [0, 153, 153], opacity: 1, label: 'rh.ccg' },\n 5113: { color: [204, 153, 255], opacity: 1, label: 'rh.cst' },\n 5114: { color: [255, 153, 51], opacity: 1, label: 'rh.ilf' },\n 5115: { color: [204, 204, 204], opacity: 1, label: 'rh.slfp' },\n 5116: { color: [153, 255, 255], opacity: 1, label: 'rh.slft' },\n 5117: { color: [102, 153, 255], opacity: 1, label: 'rh.unc' },\n 5200: { color: [204, 102, 102], opacity: 1, label: 'CC-ForcepsMajor' },\n 5201: { color: [204, 102, 102], opacity: 1, label: 'CC-ForcepsMinor' },\n 5202: { color: [255, 255, 102], opacity: 1, label: 'LAntThalRadiation' },\n 5203: { color: [153, 204, 0], opacity: 1, label: 'LCingulumAngBundle' },\n 5204: { color: [0, 153, 153], opacity: 1, label: 'LCingulumCingGyrus' },\n 5205: { color: [204, 153, 255], opacity: 1, label: 'LCorticospinalTract' },\n 5206: { color: [255, 153, 51], opacity: 1, label: 'LInfLongFas' },\n 5207: { color: [204, 204, 204], opacity: 1, label: 'LSupLongFasParietal' },\n 5208: { color: [153, 255, 255], opacity: 1, label: 'LSupLongFasTemporal' },\n 5209: { color: [102, 153, 255], opacity: 1, label: 'LUncinateFas' },\n 5210: { color: [255, 255, 102], opacity: 1, label: 'RAntThalRadiation' },\n 5211: { color: [153, 204, 0], opacity: 1, label: 'RCingulumAngBundle' },\n 5212: { color: [0, 153, 153], opacity: 1, label: 'RCingulumCingGyrus' },\n 5213: { color: [204, 153, 255], opacity: 1, label: 'RCorticospinalTract' },\n 5214: { color: [255, 153, 51], opacity: 1, label: 'RInfLongFas' },\n 5215: { color: [204, 204, 204], opacity: 1, label: 'RSupLongFasParietal' },\n 5216: { color: [153, 255, 255], opacity: 1, label: 'RSupLongFasTemporal' },\n 5217: { color: [102, 153, 255], opacity: 1, label: 'RUncinateFas' },\n 6000: { color: [0, 255, 0], opacity: 1, label: 'CST-orig' },\n 6001: { color: [255, 255, 0], opacity: 1, label: 'CST-hammer' },\n 6002: { color: [0, 255, 255], opacity: 1, label: 'CST-CVS' },\n 6003: { color: [0, 0, 255], opacity: 1, label: 'CST-flirt' },\n 6010: { color: [236, 16, 231], opacity: 1, label: 'Left-SLF1' },\n 6020: { color: [237, 18, 232], opacity: 1, label: 'Right-SLF1' },\n 6030: { color: [236, 13, 227], opacity: 1, label: 'Left-SLF3' },\n 6040: { color: [236, 17, 228], opacity: 1, label: 'Right-SLF3' },\n 6050: { color: [1, 255, 1], opacity: 1, label: 'Left-CST' },\n 6060: { color: [2, 255, 1], opacity: 1, label: 'Right-CST' },\n 6070: { color: [236, 14, 230], opacity: 1, label: 'Left-SLF2' },\n 6080: { color: [237, 14, 230], opacity: 1, label: 'Right-SLF2' },\n 7001: { color: [72, 132, 181], opacity: 1, label: 'Lateral-nucleus' },\n 7002: { color: [243, 243, 243], opacity: 1, label: 'Basolateral-nucleus' },\n 7003: { color: [207, 63, 79], opacity: 1, label: 'Basal-nucleus' },\n 7004: { color: [121, 20, 135], opacity: 1, label: 'Centromedial-nucleus' },\n 7005: { color: [197, 60, 248], opacity: 1, label: 'Central-nucleus' },\n 7006: { color: [2, 149, 2], opacity: 1, label: 'Medial-nucleus' },\n 7007: { color: [221, 249, 166], opacity: 1, label: 'Cortical-nucleus' },\n 7008: { color: [232, 146, 35], opacity: 1, label: 'Accessory-Basal-nucleus' },\n 7009: { color: [20, 60, 120], opacity: 1, label: 'Corticoamygdaloid-transitio' },\n 7010: { color: [250, 250, 0], opacity: 1, label: 'Anterior-amygdaloid-area-AAA' },\n 7011: { color: [122, 187, 222], opacity: 1, label: 'Fusion-amygdala-HP-FAH' },\n 7012: { color: [237, 12, 177], opacity: 1, label: 'Hippocampal-amygdala-transition-HATA' },\n 7013: { color: [10, 49, 255], opacity: 1, label: 'Endopiriform-nucleus' },\n 7014: { color: [205, 184, 144], opacity: 1, label: 'Lateral-nucleus-olfactory-tract' },\n 7015: { color: [45, 205, 165], opacity: 1, label: 'Paralaminar-nucleus' },\n 7016: { color: [117, 160, 175], opacity: 1, label: 'Intercalated-nucleus' },\n 7017: { color: [221, 217, 21], opacity: 1, label: 'Prepiriform-cortex' },\n 7018: { color: [20, 60, 120], opacity: 1, label: 'Periamygdaloid-cortex' },\n 7019: { color: [141, 21, 100], opacity: 1, label: 'Envelope-Amygdala' },\n 7020: { color: [225, 140, 141], opacity: 1, label: 'Extranuclear-Amydala' },\n 7100: { color: [42, 201, 168], opacity: 1, label: 'Brainstem-inferior-colliculus' },\n 7101: { color: [168, 104, 162], opacity: 1, label: 'Brainstem-cochlear-nucleus' },\n 8001: { color: [74, 130, 181], opacity: 1, label: 'Thalamus-Anterior' },\n 8002: { color: [242, 241, 240], opacity: 1, label: 'Thalamus-Ventral-anterior' },\n 8003: { color: [206, 65, 78], opacity: 1, label: 'Thalamus-Lateral-dorsal' },\n 8004: { color: [120, 21, 133], opacity: 1, label: 'Thalamus-Lateral-posterior' },\n 8005: { color: [195, 61, 246], opacity: 1, label: 'Thalamus-Ventral-lateral' },\n 8006: { color: [3, 147, 6], opacity: 1, label: 'Thalamus-Ventral-posterior-medial' },\n 8007: { color: [220, 251, 163], opacity: 1, label: 'Thalamus-Ventral-posterior-lateral' },\n 8008: { color: [232, 146, 33], opacity: 1, label: 'Thalamus-intralaminar' },\n 8009: { color: [4, 114, 14], opacity: 1, label: 'Thalamus-centromedian' },\n 8010: { color: [121, 184, 220], opacity: 1, label: 'Thalamus-mediodorsal' },\n 8011: { color: [235, 11, 175], opacity: 1, label: 'Thalamus-medial' },\n 8012: { color: [12, 46, 250], opacity: 1, label: 'Thalamus-pulvinar' },\n 8013: { color: [203, 182, 143], opacity: 1, label: 'Thalamus-lateral-geniculate' },\n 8014: { color: [42, 204, 167], opacity: 1, label: 'Thalamus-medial-geniculate' },\n 9000: { color: [50, 100, 30], opacity: 1, label: 'ctx-lh-prefrontal' },\n 9001: { color: [30, 100, 45], opacity: 1, label: 'ctx-lh-primary-motor' },\n 9002: { color: [130, 100, 165], opacity: 1, label: 'ctx-lh-premotor' },\n 9003: { color: [105, 25, 5], opacity: 1, label: 'ctx-lh-temporal' },\n 9004: { color: [125, 70, 55], opacity: 1, label: 'ctx-lh-posterior-parietal' },\n 9005: { color: [225, 20, 105], opacity: 1, label: 'ctx-lh-prim-sec-somatosensory' },\n 9006: { color: [225, 20, 15], opacity: 1, label: 'ctx-lh-occipital' },\n 9500: { color: [50, 200, 30], opacity: 1, label: 'ctx-rh-prefrontal' },\n 9501: { color: [30, 150, 45], opacity: 1, label: 'ctx-rh-primary-motor' },\n 9502: { color: [130, 150, 165], opacity: 1, label: 'ctx-rh-premotor' },\n 9503: { color: [105, 75, 5], opacity: 1, label: 'ctx-rh-temporal' },\n 9504: { color: [125, 120, 55], opacity: 1, label: 'ctx-rh-posterior-parietal' },\n 9505: { color: [225, 70, 105], opacity: 1, label: 'ctx-rh-prim-sec-somatosensory' },\n 9506: { color: [225, 70, 15], opacity: 1, label: 'ctx-rh-occipital' },\n 11100: { color: [0, 0, 0], opacity: 1, label: 'ctx_lh_Unknown' },\n 11101: { color: [23, 220, 60], opacity: 1, label: 'ctx_lh_G_and_S_frontomargin' },\n 11102: { color: [23, 60, 180], opacity: 1, label: 'ctx_lh_G_and_S_occipital_inf' },\n 11103: { color: [63, 100, 60], opacity: 1, label: 'ctx_lh_G_and_S_paracentral' },\n 11104: { color: [63, 20, 220], opacity: 1, label: 'ctx_lh_G_and_S_subcentral' },\n 11105: { color: [13, 0, 250], opacity: 1, label: 'ctx_lh_G_and_S_transv_frontopol' },\n 11106: { color: [26, 60, 0], opacity: 1, label: 'ctx_lh_G_and_S_cingul-Ant' },\n 11107: { color: [26, 60, 75], opacity: 1, label: 'ctx_lh_G_and_S_cingul-Mid-Ant' },\n 11108: { color: [26, 60, 150], opacity: 1, label: 'ctx_lh_G_and_S_cingul-Mid-Post' },\n 11109: { color: [25, 60, 250], opacity: 1, label: 'ctx_lh_G_cingul-Post-dorsal' },\n 11110: { color: [60, 25, 25], opacity: 1, label: 'ctx_lh_G_cingul-Post-ventral' },\n 11111: { color: [180, 20, 20], opacity: 1, label: 'ctx_lh_G_cuneus' },\n 11112: { color: [220, 20, 100], opacity: 1, label: 'ctx_lh_G_front_inf-Opercular' },\n 11113: { color: [140, 60, 60], opacity: 1, label: 'ctx_lh_G_front_inf-Orbital' },\n 11114: { color: [180, 220, 140], opacity: 1, label: 'ctx_lh_G_front_inf-Triangul' },\n 11115: { color: [140, 100, 180], opacity: 1, label: 'ctx_lh_G_front_middle' },\n 11116: { color: [180, 20, 140], opacity: 1, label: 'ctx_lh_G_front_sup' },\n 11117: { color: [23, 10, 10], opacity: 1, label: 'ctx_lh_G_Ins_lg_and_S_cent_ins' },\n 11118: { color: [225, 140, 140], opacity: 1, label: 'ctx_lh_G_insular_short' },\n 11119: { color: [180, 60, 180], opacity: 1, label: 'ctx_lh_G_occipital_middle' },\n 11120: { color: [20, 220, 60], opacity: 1, label: 'ctx_lh_G_occipital_sup' },\n 11121: { color: [60, 20, 140], opacity: 1, label: 'ctx_lh_G_oc-temp_lat-fusifor' },\n 11122: { color: [220, 180, 140], opacity: 1, label: 'ctx_lh_G_oc-temp_med-Lingual' },\n 11123: { color: [65, 100, 20], opacity: 1, label: 'ctx_lh_G_oc-temp_med-Parahip' },\n 11124: { color: [220, 60, 20], opacity: 1, label: 'ctx_lh_G_orbital' },\n 11125: { color: [20, 60, 220], opacity: 1, label: 'ctx_lh_G_pariet_inf-Angular' },\n 11126: { color: [100, 100, 60], opacity: 1, label: 'ctx_lh_G_pariet_inf-Supramar' },\n 11127: { color: [220, 180, 220], opacity: 1, label: 'ctx_lh_G_parietal_sup' },\n 11128: { color: [20, 180, 140], opacity: 1, label: 'ctx_lh_G_postcentral' },\n 11129: { color: [60, 140, 180], opacity: 1, label: 'ctx_lh_G_precentral' },\n 11130: { color: [25, 20, 140], opacity: 1, label: 'ctx_lh_G_precuneus' },\n 11131: { color: [20, 60, 100], opacity: 1, label: 'ctx_lh_G_rectus' },\n 11132: { color: [60, 220, 20], opacity: 1, label: 'ctx_lh_G_subcallosal' },\n 11133: { color: [60, 60, 220], opacity: 1, label: 'ctx_lh_G_temp_sup-G_T_transv' },\n 11134: { color: [220, 60, 220], opacity: 1, label: 'ctx_lh_G_temp_sup-Lateral' },\n 11135: { color: [65, 220, 60], opacity: 1, label: 'ctx_lh_G_temp_sup-Plan_polar' },\n 11136: { color: [25, 140, 20], opacity: 1, label: 'ctx_lh_G_temp_sup-Plan_tempo' },\n 11137: { color: [220, 220, 100], opacity: 1, label: 'ctx_lh_G_temporal_inf' },\n 11138: { color: [180, 60, 60], opacity: 1, label: 'ctx_lh_G_temporal_middle' },\n 11139: { color: [61, 20, 220], opacity: 1, label: 'ctx_lh_Lat_Fis-ant-Horizont' },\n 11140: { color: [61, 20, 60], opacity: 1, label: 'ctx_lh_Lat_Fis-ant-Vertical' },\n 11141: { color: [61, 60, 100], opacity: 1, label: 'ctx_lh_Lat_Fis-post' },\n 11142: { color: [25, 25, 25], opacity: 1, label: 'ctx_lh_Medial_wall' },\n 11143: { color: [140, 20, 60], opacity: 1, label: 'ctx_lh_Pole_occipital' },\n 11144: { color: [220, 180, 20], opacity: 1, label: 'ctx_lh_Pole_temporal' },\n 11145: { color: [63, 180, 180], opacity: 1, label: 'ctx_lh_S_calcarine' },\n 11146: { color: [221, 20, 10], opacity: 1, label: 'ctx_lh_S_central' },\n 11147: { color: [221, 20, 100], opacity: 1, label: 'ctx_lh_S_cingul-Marginalis' },\n 11148: { color: [221, 60, 140], opacity: 1, label: 'ctx_lh_S_circular_insula_ant' },\n 11149: { color: [221, 20, 220], opacity: 1, label: 'ctx_lh_S_circular_insula_inf' },\n 11150: { color: [61, 220, 220], opacity: 1, label: 'ctx_lh_S_circular_insula_sup' },\n 11151: { color: [100, 200, 200], opacity: 1, label: 'ctx_lh_S_collat_transv_ant' },\n 11152: { color: [10, 200, 200], opacity: 1, label: 'ctx_lh_S_collat_transv_post' },\n 11153: { color: [221, 220, 20], opacity: 1, label: 'ctx_lh_S_front_inf' },\n 11154: { color: [141, 20, 100], opacity: 1, label: 'ctx_lh_S_front_middle' },\n 11155: { color: [61, 220, 100], opacity: 1, label: 'ctx_lh_S_front_sup' },\n 11156: { color: [141, 60, 20], opacity: 1, label: 'ctx_lh_S_interm_prim-Jensen' },\n 11157: { color: [143, 20, 220], opacity: 1, label: 'ctx_lh_S_intrapariet_and_P_trans' },\n 11158: { color: [101, 60, 220], opacity: 1, label: 'ctx_lh_S_oc_middle_and_Lunatus' },\n 11159: { color: [21, 20, 140], opacity: 1, label: 'ctx_lh_S_oc_sup_and_transversal' },\n 11160: { color: [61, 20, 180], opacity: 1, label: 'ctx_lh_S_occipital_ant' },\n 11161: { color: [221, 140, 20], opacity: 1, label: 'ctx_lh_S_oc-temp_lat' },\n 11162: { color: [141, 100, 220], opacity: 1, label: 'ctx_lh_S_oc-temp_med_and_Lingual' },\n 11163: { color: [221, 100, 20], opacity: 1, label: 'ctx_lh_S_orbital_lateral' },\n 11164: { color: [181, 200, 20], opacity: 1, label: 'ctx_lh_S_orbital_med-olfact' },\n 11165: { color: [101, 20, 20], opacity: 1, label: 'ctx_lh_S_orbital-H_Shaped' },\n 11166: { color: [101, 100, 180], opacity: 1, label: 'ctx_lh_S_parieto_occipital' },\n 11167: { color: [181, 220, 20], opacity: 1, label: 'ctx_lh_S_pericallosal' },\n 11168: { color: [21, 140, 200], opacity: 1, label: 'ctx_lh_S_postcentral' },\n 11169: { color: [21, 20, 240], opacity: 1, label: 'ctx_lh_S_precentral-inf-part' },\n 11170: { color: [21, 20, 200], opacity: 1, label: 'ctx_lh_S_precentral-sup-part' },\n 11171: { color: [21, 20, 60], opacity: 1, label: 'ctx_lh_S_suborbital' },\n 11172: { color: [101, 60, 60], opacity: 1, label: 'ctx_lh_S_subparietal' },\n 11173: { color: [21, 180, 180], opacity: 1, label: 'ctx_lh_S_temporal_inf' },\n 11174: { color: [223, 220, 60], opacity: 1, label: 'ctx_lh_S_temporal_sup' },\n 11175: { color: [221, 60, 60], opacity: 1, label: 'ctx_lh_S_temporal_transverse' },\n 12100: { color: [0, 0, 0], opacity: 1, label: 'ctx_rh_Unknown' },\n 12101: { color: [23, 220, 60], opacity: 1, label: 'ctx_rh_G_and_S_frontomargin' },\n 12102: { color: [23, 60, 180], opacity: 1, label: 'ctx_rh_G_and_S_occipital_inf' },\n 12103: { color: [63, 100, 60], opacity: 1, label: 'ctx_rh_G_and_S_paracentral' },\n 12104: { color: [63, 20, 220], opacity: 1, label: 'ctx_rh_G_and_S_subcentral' },\n 12105: { color: [13, 0, 250], opacity: 1, label: 'ctx_rh_G_and_S_transv_frontopol' },\n 12106: { color: [26, 60, 0], opacity: 1, label: 'ctx_rh_G_and_S_cingul-Ant' },\n 12107: { color: [26, 60, 75], opacity: 1, label: 'ctx_rh_G_and_S_cingul-Mid-Ant' },\n 12108: { color: [26, 60, 150], opacity: 1, label: 'ctx_rh_G_and_S_cingul-Mid-Post' },\n 12109: { color: [25, 60, 250], opacity: 1, label: 'ctx_rh_G_cingul-Post-dorsal' },\n 12110: { color: [60, 25, 25], opacity: 1, label: 'ctx_rh_G_cingul-Post-ventral' },\n 12111: { color: [180, 20, 20], opacity: 1, label: 'ctx_rh_G_cuneus' },\n 12112: { color: [220, 20, 100], opacity: 1, label: 'ctx_rh_G_front_inf-Opercular' },\n 12113: { color: [140, 60, 60], opacity: 1, label: 'ctx_rh_G_front_inf-Orbital' },\n 12114: { color: [180, 220, 140], opacity: 1, label: 'ctx_rh_G_front_inf-Triangul' },\n 12115: { color: [140, 100, 180], opacity: 1, label: 'ctx_rh_G_front_middle' },\n 12116: { color: [180, 20, 140], opacity: 1, label: 'ctx_rh_G_front_sup' },\n 12117: { color: [23, 10, 10], opacity: 1, label: 'ctx_rh_G_Ins_lg_and_S_cent_ins' },\n 12118: { color: [225, 140, 140], opacity: 1, label: 'ctx_rh_G_insular_short' },\n 12119: { color: [180, 60, 180], opacity: 1, label: 'ctx_rh_G_occipital_middle' },\n 12120: { color: [20, 220, 60], opacity: 1, label: 'ctx_rh_G_occipital_sup' },\n 12121: { color: [60, 20, 140], opacity: 1, label: 'ctx_rh_G_oc-temp_lat-fusifor' },\n 12122: { color: [220, 180, 140], opacity: 1, label: 'ctx_rh_G_oc-temp_med-Lingual' },\n 12123: { color: [65, 100, 20], opacity: 1, label: 'ctx_rh_G_oc-temp_med-Parahip' },\n 12124: { color: [220, 60, 20], opacity: 1, label: 'ctx_rh_G_orbital' },\n 12125: { color: [20, 60, 220], opacity: 1, label: 'ctx_rh_G_pariet_inf-Angular' },\n 12126: { color: [100, 100, 60], opacity: 1, label: 'ctx_rh_G_pariet_inf-Supramar' },\n 12127: { color: [220, 180, 220], opacity: 1, label: 'ctx_rh_G_parietal_sup' },\n 12128: { color: [20, 180, 140], opacity: 1, label: 'ctx_rh_G_postcentral' },\n 12129: { color: [60, 140, 180], opacity: 1, label: 'ctx_rh_G_precentral' },\n 12130: { color: [25, 20, 140], opacity: 1, label: 'ctx_rh_G_precuneus' },\n 12131: { color: [20, 60, 100], opacity: 1, label: 'ctx_rh_G_rectus' },\n 12132: { color: [60, 220, 20], opacity: 1, label: 'ctx_rh_G_subcallosal' },\n 12133: { color: [60, 60, 220], opacity: 1, label: 'ctx_rh_G_temp_sup-G_T_transv' },\n 12134: { color: [220, 60, 220], opacity: 1, label: 'ctx_rh_G_temp_sup-Lateral' },\n 12135: { color: [65, 220, 60], opacity: 1, label: 'ctx_rh_G_temp_sup-Plan_polar' },\n 12136: { color: [25, 140, 20], opacity: 1, label: 'ctx_rh_G_temp_sup-Plan_tempo' },\n 12137: { color: [220, 220, 100], opacity: 1, label: 'ctx_rh_G_temporal_inf' },\n 12138: { color: [180, 60, 60], opacity: 1, label: 'ctx_rh_G_temporal_middle' },\n 12139: { color: [61, 20, 220], opacity: 1, label: 'ctx_rh_Lat_Fis-ant-Horizont' },\n 12140: { color: [61, 20, 60], opacity: 1, label: 'ctx_rh_Lat_Fis-ant-Vertical' },\n 12141: { color: [61, 60, 100], opacity: 1, label: 'ctx_rh_Lat_Fis-post' },\n 12142: { color: [25, 25, 25], opacity: 1, label: 'ctx_rh_Medial_wall' },\n 12143: { color: [140, 20, 60], opacity: 1, label: 'ctx_rh_Pole_occipital' },\n 12144: { color: [220, 180, 20], opacity: 1, label: 'ctx_rh_Pole_temporal' },\n 12145: { color: [63, 180, 180], opacity: 1, label: 'ctx_rh_S_calcarine' },\n 12146: { color: [221, 20, 10], opacity: 1, label: 'ctx_rh_S_central' },\n 12147: { color: [221, 20, 100], opacity: 1, label: 'ctx_rh_S_cingul-Marginalis' },\n 12148: { color: [221, 60, 140], opacity: 1, label: 'ctx_rh_S_circular_insula_ant' },\n 12149: { color: [221, 20, 220], opacity: 1, label: 'ctx_rh_S_circular_insula_inf' },\n 12150: { color: [61, 220, 220], opacity: 1, label: 'ctx_rh_S_circular_insula_sup' },\n 12151: { color: [100, 200, 200], opacity: 1, label: 'ctx_rh_S_collat_transv_ant' },\n 12152: { color: [10, 200, 200], opacity: 1, label: 'ctx_rh_S_collat_transv_post' },\n 12153: { color: [221, 220, 20], opacity: 1, label: 'ctx_rh_S_front_inf' },\n 12154: { color: [141, 20, 100], opacity: 1, label: 'ctx_rh_S_front_middle' },\n 12155: { color: [61, 220, 100], opacity: 1, label: 'ctx_rh_S_front_sup' },\n 12156: { color: [141, 60, 20], opacity: 1, label: 'ctx_rh_S_interm_prim-Jensen' },\n 12157: { color: [143, 20, 220], opacity: 1, label: 'ctx_rh_S_intrapariet_and_P_trans' },\n 12158: { color: [101, 60, 220], opacity: 1, label: 'ctx_rh_S_oc_middle_and_Lunatus' },\n 12159: { color: [21, 20, 140], opacity: 1, label: 'ctx_rh_S_oc_sup_and_transversal' },\n 12160: { color: [61, 20, 180], opacity: 1, label: 'ctx_rh_S_occipital_ant' },\n 12161: { color: [221, 140, 20], opacity: 1, label: 'ctx_rh_S_oc-temp_lat' },\n 12162: { color: [141, 100, 220], opacity: 1, label: 'ctx_rh_S_oc-temp_med_and_Lingual' },\n 12163: { color: [221, 100, 20], opacity: 1, label: 'ctx_rh_S_orbital_lateral' },\n 12164: { color: [181, 200, 20], opacity: 1, label: 'ctx_rh_S_orbital_med-olfact' },\n 12165: { color: [101, 20, 20], opacity: 1, label: 'ctx_rh_S_orbital-H_Shaped' },\n 12166: { color: [101, 100, 180], opacity: 1, label: 'ctx_rh_S_parieto_occipital' },\n 12167: { color: [181, 220, 20], opacity: 1, label: 'ctx_rh_S_pericallosal' },\n 12168: { color: [21, 140, 200], opacity: 1, label: 'ctx_rh_S_postcentral' },\n 12169: { color: [21, 20, 240], opacity: 1, label: 'ctx_rh_S_precentral-inf-part' },\n 12170: { color: [21, 20, 200], opacity: 1, label: 'ctx_rh_S_precentral-sup-part' },\n 12171: { color: [21, 20, 60], opacity: 1, label: 'ctx_rh_S_suborbital' },\n 12172: { color: [101, 60, 60], opacity: 1, label: 'ctx_rh_S_subparietal' },\n 12173: { color: [21, 180, 180], opacity: 1, label: 'ctx_rh_S_temporal_inf' },\n 12174: { color: [223, 220, 60], opacity: 1, label: 'ctx_rh_S_temporal_sup' },\n 12175: { color: [221, 60, 60], opacity: 1, label: 'ctx_rh_S_temporal_transverse' },\n 13100: { color: [0, 0, 0], opacity: 1, label: 'wm_lh_Unknown' },\n 13101: { color: [23, 220, 60], opacity: 1, label: 'wm_lh_G_and_S_frontomargin' },\n 13102: { color: [23, 60, 180], opacity: 1, label: 'wm_lh_G_and_S_occipital_inf' },\n 13103: { color: [63, 100, 60], opacity: 1, label: 'wm_lh_G_and_S_paracentral' },\n 13104: { color: [63, 20, 220], opacity: 1, label: 'wm_lh_G_and_S_subcentral' },\n 13105: { color: [13, 0, 250], opacity: 1, label: 'wm_lh_G_and_S_transv_frontopol' },\n 13106: { color: [26, 60, 0], opacity: 1, label: 'wm_lh_G_and_S_cingul-Ant' },\n 13107: { color: [26, 60, 75], opacity: 1, label: 'wm_lh_G_and_S_cingul-Mid-Ant' },\n 13108: { color: [26, 60, 150], opacity: 1, label: 'wm_lh_G_and_S_cingul-Mid-Post' },\n 13109: { color: [25, 60, 250], opacity: 1, label: 'wm_lh_G_cingul-Post-dorsal' },\n 13110: { color: [60, 25, 25], opacity: 1, label: 'wm_lh_G_cingul-Post-ventral' },\n 13111: { color: [180, 20, 20], opacity: 1, label: 'wm_lh_G_cuneus' },\n 13112: { color: [220, 20, 100], opacity: 1, label: 'wm_lh_G_front_inf-Opercular' },\n 13113: { color: [140, 60, 60], opacity: 1, label: 'wm_lh_G_front_inf-Orbital' },\n 13114: { color: [180, 220, 140], opacity: 1, label: 'wm_lh_G_front_inf-Triangul' },\n 13115: { color: [140, 100, 180], opacity: 1, label: 'wm_lh_G_front_middle' },\n 13116: { color: [180, 20, 140], opacity: 1, label: 'wm_lh_G_front_sup' },\n 13117: { color: [23, 10, 10], opacity: 1, label: 'wm_lh_G_Ins_lg_and_S_cent_ins' },\n 13118: { color: [225, 140, 140], opacity: 1, label: 'wm_lh_G_insular_short' },\n 13119: { color: [180, 60, 180], opacity: 1, label: 'wm_lh_G_occipital_middle' },\n 13120: { color: [20, 220, 60], opacity: 1, label: 'wm_lh_G_occipital_sup' },\n 13121: { color: [60, 20, 140], opacity: 1, label: 'wm_lh_G_oc-temp_lat-fusifor' },\n 13122: { color: [220, 180, 140], opacity: 1, label: 'wm_lh_G_oc-temp_med-Lingual' },\n 13123: { color: [65, 100, 20], opacity: 1, label: 'wm_lh_G_oc-temp_med-Parahip' },\n 13124: { color: [220, 60, 20], opacity: 1, label: 'wm_lh_G_orbital' },\n 13125: { color: [20, 60, 220], opacity: 1, label: 'wm_lh_G_pariet_inf-Angular' },\n 13126: { color: [100, 100, 60], opacity: 1, label: 'wm_lh_G_pariet_inf-Supramar' },\n 13127: { color: [220, 180, 220], opacity: 1, label: 'wm_lh_G_parietal_sup' },\n 13128: { color: [20, 180, 140], opacity: 1, label: 'wm_lh_G_postcentral' },\n 13129: { color: [60, 140, 180], opacity: 1, label: 'wm_lh_G_precentral' },\n 13130: { color: [25, 20, 140], opacity: 1, label: 'wm_lh_G_precuneus' },\n 13131: { color: [20, 60, 100], opacity: 1, label: 'wm_lh_G_rectus' },\n 13132: { color: [60, 220, 20], opacity: 1, label: 'wm_lh_G_subcallosal' },\n 13133: { color: [60, 60, 220], opacity: 1, label: 'wm_lh_G_temp_sup-G_T_transv' },\n 13134: { color: [220, 60, 220], opacity: 1, label: 'wm_lh_G_temp_sup-Lateral' },\n 13135: { color: [65, 220, 60], opacity: 1, label: 'wm_lh_G_temp_sup-Plan_polar' },\n 13136: { color: [25, 140, 20], opacity: 1, label: 'wm_lh_G_temp_sup-Plan_tempo' },\n 13137: { color: [220, 220, 100], opacity: 1, label: 'wm_lh_G_temporal_inf' },\n 13138: { color: [180, 60, 60], opacity: 1, label: 'wm_lh_G_temporal_middle' },\n 13139: { color: [61, 20, 220], opacity: 1, label: 'wm_lh_Lat_Fis-ant-Horizont' },\n 13140: { color: [61, 20, 60], opacity: 1, label: 'wm_lh_Lat_Fis-ant-Vertical' },\n 13141: { color: [61, 60, 100], opacity: 1, label: 'wm_lh_Lat_Fis-post' },\n 13142: { color: [25, 25, 25], opacity: 1, label: 'wm_lh_Medial_wall' },\n 13143: { color: [140, 20, 60], opacity: 1, label: 'wm_lh_Pole_occipital' },\n 13144: { color: [220, 180, 20], opacity: 1, label: 'wm_lh_Pole_temporal' },\n 13145: { color: [63, 180, 180], opacity: 1, label: 'wm_lh_S_calcarine' },\n 13146: { color: [221, 20, 10], opacity: 1, label: 'wm_lh_S_central' },\n 13147: { color: [221, 20, 100], opacity: 1, label: 'wm_lh_S_cingul-Marginalis' },\n 13148: { color: [221, 60, 140], opacity: 1, label: 'wm_lh_S_circular_insula_ant' },\n 13149: { color: [221, 20, 220], opacity: 1, label: 'wm_lh_S_circular_insula_inf' },\n 13150: { color: [61, 220, 220], opacity: 1, label: 'wm_lh_S_circular_insula_sup' },\n 13151: { color: [100, 200, 200], opacity: 1, label: 'wm_lh_S_collat_transv_ant' },\n 13152: { color: [10, 200, 200], opacity: 1, label: 'wm_lh_S_collat_transv_post' },\n 13153: { color: [221, 220, 20], opacity: 1, label: 'wm_lh_S_front_inf' },\n 13154: { color: [141, 20, 100], opacity: 1, label: 'wm_lh_S_front_middle' },\n 13155: { color: [61, 220, 100], opacity: 1, label: 'wm_lh_S_front_sup' },\n 13156: { color: [141, 60, 20], opacity: 1, label: 'wm_lh_S_interm_prim-Jensen' },\n 13157: { color: [143, 20, 220], opacity: 1, label: 'wm_lh_S_intrapariet_and_P_trans' },\n 13158: { color: [101, 60, 220], opacity: 1, label: 'wm_lh_S_oc_middle_and_Lunatus' },\n 13159: { color: [21, 20, 140], opacity: 1, label: 'wm_lh_S_oc_sup_and_transversal' },\n 13160: { color: [61, 20, 180], opacity: 1, label: 'wm_lh_S_occipital_ant' },\n 13161: { color: [221, 140, 20], opacity: 1, label: 'wm_lh_S_oc-temp_lat' },\n 13162: { color: [141, 100, 220], opacity: 1, label: 'wm_lh_S_oc-temp_med_and_Lingual' },\n 13163: { color: [221, 100, 20], opacity: 1, label: 'wm_lh_S_orbital_lateral' },\n 13164: { color: [181, 200, 20], opacity: 1, label: 'wm_lh_S_orbital_med-olfact' },\n 13165: { color: [101, 20, 20], opacity: 1, label: 'wm_lh_S_orbital-H_Shaped' },\n 13166: { color: [101, 100, 180], opacity: 1, label: 'wm_lh_S_parieto_occipital' },\n 13167: { color: [181, 220, 20], opacity: 1, label: 'wm_lh_S_pericallosal' },\n 13168: { color: [21, 140, 200], opacity: 1, label: 'wm_lh_S_postcentral' },\n 13169: { color: [21, 20, 240], opacity: 1, label: 'wm_lh_S_precentral-inf-part' },\n 13170: { color: [21, 20, 200], opacity: 1, label: 'wm_lh_S_precentral-sup-part' },\n 13171: { color: [21, 20, 60], opacity: 1, label: 'wm_lh_S_suborbital' },\n 13172: { color: [101, 60, 60], opacity: 1, label: 'wm_lh_S_subparietal' },\n 13173: { color: [21, 180, 180], opacity: 1, label: 'wm_lh_S_temporal_inf' },\n 13174: { color: [223, 220, 60], opacity: 1, label: 'wm_lh_S_temporal_sup' },\n 13175: { color: [221, 60, 60], opacity: 1, label: 'wm_lh_S_temporal_transverse' },\n 14100: { color: [0, 0, 0], opacity: 1, label: 'wm_rh_Unknown' },\n 14101: { color: [23, 220, 60], opacity: 1, label: 'wm_rh_G_and_S_frontomargin' },\n 14102: { color: [23, 60, 180], opacity: 1, label: 'wm_rh_G_and_S_occipital_inf' },\n 14103: { color: [63, 100, 60], opacity: 1, label: 'wm_rh_G_and_S_paracentral' },\n 14104: { color: [63, 20, 220], opacity: 1, label: 'wm_rh_G_and_S_subcentral' },\n 14105: { color: [13, 0, 250], opacity: 1, label: 'wm_rh_G_and_S_transv_frontopol' },\n 14106: { color: [26, 60, 0], opacity: 1, label: 'wm_rh_G_and_S_cingul-Ant' },\n 14107: { color: [26, 60, 75], opacity: 1, label: 'wm_rh_G_and_S_cingul-Mid-Ant' },\n 14108: { color: [26, 60, 150], opacity: 1, label: 'wm_rh_G_and_S_cingul-Mid-Post' },\n 14109: { color: [25, 60, 250], opacity: 1, label: 'wm_rh_G_cingul-Post-dorsal' },\n 14110: { color: [60, 25, 25], opacity: 1, label: 'wm_rh_G_cingul-Post-ventral' },\n 14111: { color: [180, 20, 20], opacity: 1, label: 'wm_rh_G_cuneus' },\n 14112: { color: [220, 20, 100], opacity: 1, label: 'wm_rh_G_front_inf-Opercular' },\n 14113: { color: [140, 60, 60], opacity: 1, label: 'wm_rh_G_front_inf-Orbital' },\n 14114: { color: [180, 220, 140], opacity: 1, label: 'wm_rh_G_front_inf-Triangul' },\n 14115: { color: [140, 100, 180], opacity: 1, label: 'wm_rh_G_front_middle' },\n 14116: { color: [180, 20, 140], opacity: 1, label: 'wm_rh_G_front_sup' },\n 14117: { color: [23, 10, 10], opacity: 1, label: 'wm_rh_G_Ins_lg_and_S_cent_ins' },\n 14118: { color: [225, 140, 140], opacity: 1, label: 'wm_rh_G_insular_short' },\n 14119: { color: [180, 60, 180], opacity: 1, label: 'wm_rh_G_occipital_middle' },\n 14120: { color: [20, 220, 60], opacity: 1, label: 'wm_rh_G_occipital_sup' },\n 14121: { color: [60, 20, 140], opacity: 1, label: 'wm_rh_G_oc-temp_lat-fusifor' },\n 14122: { color: [220, 180, 140], opacity: 1, label: 'wm_rh_G_oc-temp_med-Lingual' },\n 14123: { color: [65, 100, 20], opacity: 1, label: 'wm_rh_G_oc-temp_med-Parahip' },\n 14124: { color: [220, 60, 20], opacity: 1, label: 'wm_rh_G_orbital' },\n 14125: { color: [20, 60, 220], opacity: 1, label: 'wm_rh_G_pariet_inf-Angular' },\n 14126: { color: [100, 100, 60], opacity: 1, label: 'wm_rh_G_pariet_inf-Supramar' },\n 14127: { color: [220, 180, 220], opacity: 1, label: 'wm_rh_G_parietal_sup' },\n 14128: { color: [20, 180, 140], opacity: 1, label: 'wm_rh_G_postcentral' },\n 14129: { color: [60, 140, 180], opacity: 1, label: 'wm_rh_G_precentral' },\n 14130: { color: [25, 20, 140], opacity: 1, label: 'wm_rh_G_precuneus' },\n 14131: { color: [20, 60, 100], opacity: 1, label: 'wm_rh_G_rectus' },\n 14132: { color: [60, 220, 20], opacity: 1, label: 'wm_rh_G_subcallosal' },\n 14133: { color: [60, 60, 220], opacity: 1, label: 'wm_rh_G_temp_sup-G_T_transv' },\n 14134: { color: [220, 60, 220], opacity: 1, label: 'wm_rh_G_temp_sup-Lateral' },\n 14135: { color: [65, 220, 60], opacity: 1, label: 'wm_rh_G_temp_sup-Plan_polar' },\n 14136: { color: [25, 140, 20], opacity: 1, label: 'wm_rh_G_temp_sup-Plan_tempo' },\n 14137: { color: [220, 220, 100], opacity: 1, label: 'wm_rh_G_temporal_inf' },\n 14138: { color: [180, 60, 60], opacity: 1, label: 'wm_rh_G_temporal_middle' },\n 14139: { color: [61, 20, 220], opacity: 1, label: 'wm_rh_Lat_Fis-ant-Horizont' },\n 14140: { color: [61, 20, 60], opacity: 1, label: 'wm_rh_Lat_Fis-ant-Vertical' },\n 14141: { color: [61, 60, 100], opacity: 1, label: 'wm_rh_Lat_Fis-post' },\n 14142: { color: [25, 25, 25], opacity: 1, label: 'wm_rh_Medial_wall' },\n 14143: { color: [140, 20, 60], opacity: 1, label: 'wm_rh_Pole_occipital' },\n 14144: { color: [220, 180, 20], opacity: 1, label: 'wm_rh_Pole_temporal' },\n 14145: { color: [63, 180, 180], opacity: 1, label: 'wm_rh_S_calcarine' },\n 14146: { color: [221, 20, 10], opacity: 1, label: 'wm_rh_S_central' },\n 14147: { color: [221, 20, 100], opacity: 1, label: 'wm_rh_S_cingul-Marginalis' },\n 14148: { color: [221, 60, 140], opacity: 1, label: 'wm_rh_S_circular_insula_ant' },\n 14149: { color: [221, 20, 220], opacity: 1, label: 'wm_rh_S_circular_insula_inf' },\n 14150: { color: [61, 220, 220], opacity: 1, label: 'wm_rh_S_circular_insula_sup' },\n 14151: { color: [100, 200, 200], opacity: 1, label: 'wm_rh_S_collat_transv_ant' },\n 14152: { color: [10, 200, 200], opacity: 1, label: 'wm_rh_S_collat_transv_post' },\n 14153: { color: [221, 220, 20], opacity: 1, label: 'wm_rh_S_front_inf' },\n 14154: { color: [141, 20, 100], opacity: 1, label: 'wm_rh_S_front_middle' },\n 14155: { color: [61, 220, 100], opacity: 1, label: 'wm_rh_S_front_sup' },\n 14156: { color: [141, 60, 20], opacity: 1, label: 'wm_rh_S_interm_prim-Jensen' },\n 14157: { color: [143, 20, 220], opacity: 1, label: 'wm_rh_S_intrapariet_and_P_trans' },\n 14158: { color: [101, 60, 220], opacity: 1, label: 'wm_rh_S_oc_middle_and_Lunatus' },\n 14159: { color: [21, 20, 140], opacity: 1, label: 'wm_rh_S_oc_sup_and_transversal' },\n 14160: { color: [61, 20, 180], opacity: 1, label: 'wm_rh_S_occipital_ant' },\n 14161: { color: [221, 140, 20], opacity: 1, label: 'wm_rh_S_oc-temp_lat' },\n 14162: { color: [141, 100, 220], opacity: 1, label: 'wm_rh_S_oc-temp_med_and_Lingual' },\n 14163: { color: [221, 100, 20], opacity: 1, label: 'wm_rh_S_orbital_lateral' },\n 14164: { color: [181, 200, 20], opacity: 1, label: 'wm_rh_S_orbital_med-olfact' },\n 14165: { color: [101, 20, 20], opacity: 1, label: 'wm_rh_S_orbital-H_Shaped' },\n 14166: { color: [101, 100, 180], opacity: 1, label: 'wm_rh_S_parieto_occipital' },\n 14167: { color: [181, 220, 20], opacity: 1, label: 'wm_rh_S_pericallosal' },\n 14168: { color: [21, 140, 200], opacity: 1, label: 'wm_rh_S_postcentral' },\n 14169: { color: [21, 20, 240], opacity: 1, label: 'wm_rh_S_precentral-inf-part' },\n 14170: { color: [21, 20, 200], opacity: 1, label: 'wm_rh_S_precentral-sup-part' },\n 14171: { color: [21, 20, 60], opacity: 1, label: 'wm_rh_S_suborbital' },\n 14172: { color: [101, 60, 60], opacity: 1, label: 'wm_rh_S_subparietal' },\n 14173: { color: [21, 180, 180], opacity: 1, label: 'wm_rh_S_temporal_inf' },\n 14174: { color: [223, 220, 60], opacity: 1, label: 'wm_rh_S_temporal_sup' },\n 14175: { color: [221, 60, 60], opacity: 1, label: 'wm_rh_S_temporal_transverse' },\n};\n\nexport default segmentationFs;\n","/**\n * @module presets/segmentation\n */\n\nimport freesurferSegmentation from './presets.segmentation.freesurfer';\n\nexport default class PresetsSegmentation {\n constructor(presetID = 'Freesurfer') {\n this._presetID = presetID;\n this._presets = this.presetSegs();\n }\n\n set preset(targetPreset) {\n this._presetID = targetPreset;\n }\n\n get preset() {\n return this.fetchPreset(this._presetID);\n }\n\n fetchPreset(presetID) {\n let presets = this._presets;\n return presets[presetID];\n }\n\n addPreset(presetObj) {\n this._presets.push(presetObj);\n }\n\n presetsAvailable(type = 'segmentation') {\n let available = [];\n let presets = this._presets;\n\n for (let i in presets) {\n available.push(i);\n }\n\n return available;\n }\n\n presetSegs() {\n return {\n Freesurfer: freesurferSegmentation,\n };\n }\n}\n","import ShadersBase from '../shaders.base';\n\nclass IntersectBox extends ShadersBase {\n constructor() {\n super();\n this.name = 'intersectBox';\n\n // default properties names\n this._rayOrigin = 'rayOrigin';\n this._rayDirection = 'rayDirection';\n this._aabbMin = 'aabbMin';\n this._aabbMax = 'aabbMax';\n this._tNear = 'tNear';\n this._tFar = 'tFar';\n this._intersect = 'intersect';\n }\n\n api(\n baseFragment = this._base,\n rayOrigin = this._rayOrigin,\n rayDirection = this._rayDirection,\n aabbMin = this._aabbMin,\n aabbMax = this._aabbMax,\n tNear = this._tNear,\n tFar = this._tFar,\n intersect = this._intersect\n ) {\n this._base = baseFragment;\n return this.compute(rayOrigin, rayDirection, aabbMin, aabbMax, tNear, tFar, intersect);\n }\n\n compute(rayOrigin, rayDirection, aabbMin, aabbMax, tNear, tFar, intersect) {\n this.computeDefinition();\n this._base._functions[this._name] = this._definition;\n return `${\n this._name\n }(${rayOrigin}, ${rayDirection}, ${aabbMin}, ${aabbMax}, ${tNear}, ${tFar}, ${intersect});`;\n }\n\n computeDefinition() {\n this._definition = `\nvoid ${\n this._name\n }(vec3 rayOrigin, vec3 rayDirection, vec3 boxMin, vec3 boxMax, out float tNear, out float tFar, out bool intersect){\n // compute intersection of ray with all six bbox planes\n vec3 invRay = vec3(1.) / rayDirection;\n vec3 tBot = invRay * (boxMin - rayOrigin);\n vec3 tTop = invRay * (boxMax - rayOrigin);\n // re-order intersections to find smallest and largest on each axis\n vec3 tMin = min(tTop, tBot);\n vec3 tMax = max(tTop, tBot);\n // find the largest tMin and the smallest tMax\n float largest_tMin = max(max(tMin.x, tMin.y), max(tMin.x, tMin.z));\n float smallest_tMax = min(min(tMax.x, tMax.y), min(tMax.x, tMax.z));\n tNear = largest_tMin;\n tFar = smallest_tMax;\n intersect = smallest_tMax > largest_tMin;\n}\n\n `;\n }\n}\n\nexport default new IntersectBox();\n","import ShadersBase from '../shaders.base';\n\nclass Texture3d extends ShadersBase {\n constructor() {\n super();\n this.name = 'texture3d';\n\n // default properties names\n this._dataCoordinates = 'dataCoordinates';\n this._dataValue = 'dataValue';\n this._offset = 'offset';\n }\n\n api(\n baseFragment = this._base,\n dataCoordinates = this._dataCoordinates,\n dataValue = this._dataValue,\n offset = this._offset\n ) {\n this._base = baseFragment;\n return this.compute(dataCoordinates, dataValue, offset);\n }\n\n compute(dataCoordinates, dataValue, offset) {\n this.computeDefinition();\n this._base._functions[this._name] = this._definition;\n return `${this._name}(${dataCoordinates}, ${dataValue}, ${offset});`;\n }\n\n computeDefinition() {\n let content = `\n step( abs( textureIndexF - 0.0 ), 0.0 ) * texture2D(uTextureContainer[0], uv) +\n step( abs( textureIndexF - 1.0 ), 0.0 ) * texture2D(uTextureContainer[1], uv) +\n step( abs( textureIndexF - 2.0 ), 0.0 ) * texture2D(uTextureContainer[2], uv) +\n step( abs( textureIndexF - 3.0 ), 0.0 ) * texture2D(uTextureContainer[3], uv) +\n step( abs( textureIndexF - 4.0 ), 0.0 ) * texture2D(uTextureContainer[4], uv) +\n step( abs( textureIndexF - 5.0 ), 0.0 ) * texture2D(uTextureContainer[5], uv) +\n step( abs( textureIndexF - 6.0 ), 0.0 ) * texture2D(uTextureContainer[6], uv)`;\n\n if (this._base._uniforms.uTextureContainer.length === 14) {\n content += ` +\n step( abs( textureIndexF - 7.0 ), 0.0 ) * texture2D(uTextureContainer[7], uv) +\n step( abs( textureIndexF - 8.0 ), 0.0 ) * texture2D(uTextureContainer[8], uv) +\n step( abs( textureIndexF - 9.0 ), 0.0 ) * texture2D(uTextureContainer[9], uv) +\n step( abs( textureIndexF - 10.0 ), 0.0 ) * texture2D(uTextureContainer[10], uv) +\n step( abs( textureIndexF - 11.0 ), 0.0 ) * texture2D(uTextureContainer[11], uv) +\n step( abs( textureIndexF - 12.0 ), 0.0 ) * texture2D(uTextureContainer[12], uv) +\n step( abs( textureIndexF - 13.0 ), 0.0 ) * texture2D(uTextureContainer[13], uv)`;\n }\n\n this._definition = `\nvoid ${this._name}(in ivec3 dataCoordinates, out vec4 dataValue, out int offset){\n float textureSizeF = float(uTextureSize);\n int voxelsPerTexture = uTextureSize*uTextureSize;\n\n int index = dataCoordinates.x\n + dataCoordinates.y * uDataDimensions.x\n + dataCoordinates.z * uDataDimensions.y * uDataDimensions.x;\n \n // dividing an integer by an integer will give you an integer result, rounded down\n // can not get float numbers to work :(\n int packedIndex = index/uPackedPerPixel;\n offset = index - uPackedPerPixel*packedIndex;\n\n // Map data index to right sampler2D texture\n int textureIndex = packedIndex/voxelsPerTexture;\n int inTextureIndex = packedIndex - voxelsPerTexture*textureIndex;\n\n // Get row and column in the texture\n int rowIndex = inTextureIndex/uTextureSize;\n float rowIndexF = float(rowIndex);\n float colIndex = float(inTextureIndex - uTextureSize * rowIndex);\n\n // Map row and column to uv\n vec2 uv = vec2(0,0);\n uv.x = (0.5 + colIndex) / textureSizeF;\n uv.y = 1. - (0.5 + rowIndexF) / textureSizeF;\n\n float textureIndexF = float(textureIndex);\n dataValue = vec4(0.) + ${content};\n}\n `;\n }\n}\n\nexport default new Texture3d();\n","import ShadersBase from '../shaders.base';\n\n/**\n * Set of methods to unpack values from [r][b][g][a] -> float\n */\nclass Unpack extends ShadersBase {\n /**\n * Constructor\n */\n constructor() {\n super();\n this.name = 'unpack';\n\n // default properties names\n this._packedData = 'packedData';\n this._offset = 'offset';\n this._unpackedData = 'unpackedData';\n\n this._base._uniforms = {\n uNumberOfChannels: {\n value: 1,\n },\n uBitsAllocated: {\n value: 16,\n },\n uPixelType: {\n value: 0,\n },\n };\n }\n\n api(\n baseFragment = this._base,\n packedData = this._packedData,\n offset = this._offset,\n unpackedData = this._unpackedData\n ) {\n this._base = baseFragment;\n return this.compute(packedData, offset, unpackedData);\n }\n\n compute(packedData, offset, unpackedData) {\n this.computeDefinition();\n this._base._functions[this._name] = this._definition;\n return `${this._name}(${packedData}, ${offset}, ${unpackedData});`;\n }\n\n computeDefinition() {\n // fun stuff\n let content = '';\n if (this._base._uniforms.uNumberOfChannels.value === 1) {\n switch (this._base._uniforms.uBitsAllocated.value) {\n case 1:\n case 8:\n content = this.upack8();\n break;\n\n case 16:\n content = this.upack16();\n break;\n\n case 32:\n content = this.upack32();\n break;\n\n default:\n content = this.upackIdentity();\n break;\n }\n } else {\n content = this.upackIdentity();\n }\n\n this._definition = `\nvoid ${this._name}(in vec4 packedData, in int offset, out vec4 unpackedData){\n\n${content}\n\n} \n `;\n }\n\n upack8() {\n this._base._functions['uInt8'] = this.uInt8();\n\n return `\nfloat floatedOffset = float(offset);\nfloat floatedOffsetSquared = floatedOffset * floatedOffset;\nuInt8(\n step( floatedOffsetSquared , 0.0 ) * packedData.r +\n step( floatedOffsetSquared - 2. * floatedOffset + 1., 0.0 ) * packedData.g +\n step( floatedOffsetSquared - 2. * 2. * floatedOffset + 4., 0.0 ) * packedData.b +\n step( floatedOffsetSquared - 2. * 3. * floatedOffset + 9., 0.0 ) * packedData.a\n ,\n unpackedData.x);\n `;\n }\n\n upack16() {\n this._base._functions['uInt16'] = this.uInt16();\n\n return `\nfloat floatedOffset = float(offset);\nuInt16(\n packedData.r * (1. - floatedOffset) + packedData.b * floatedOffset,\n packedData.g * (1. - floatedOffset) + packedData.a * floatedOffset,\n unpackedData.x);\n `;\n }\n\n upack32() {\n if (this._base._uniforms.uPixelType.value === 0) {\n this._base._functions['uInt32'] = this.uInt32();\n\n return `\nuInt32(\n packedData.r,\n packedData.g,\n packedData.b,\n packedData.a,\n unpackedData.x);\n `;\n } else {\n this._base._functions['uFloat32'] = this.uFloat32();\n\n return `\nuFloat32(\n packedData.r,\n packedData.g,\n packedData.b,\n packedData.a,\n unpackedData.x);\n `;\n }\n }\n\n upackIdentity() {\n return `\nunpackedData = packedData;\n `;\n }\n\n uInt8() {\n return `\nvoid uInt8(in float r, out float value){\n value = r * 255.;\n}\n `;\n }\n\n uInt16() {\n return `\nvoid uInt16(in float r, in float a, out float value){\n value = r * 255. + a * 255. * 256.;\n}\n `;\n }\n\n uInt32() {\n return `\nvoid uInt32(in float r, in float g, in float b, in float a, out float value){\n value = r * 255. + g * 255. * 256. + b * 255. * 256. * 256. + a * 255. * 256. * 256. * 256.;\n // value = r * 255. + g * 65025. + b * 16581375. + a * 4228250625.;\n}\n `;\n }\n\n uFloat32() {\n return `\nvoid uFloat32(in float r, in float g, in float b, in float a, out float value){\n\n // create arrays containing bits for rgba values\n // value between 0 and 255\n value = r * 255.;\n int bytemeR[8];\n bytemeR[0] = int(floor(value / 128.));\n value -= float(bytemeR[0] * 128);\n bytemeR[1] = int(floor(value / 64.));\n value -= float(bytemeR[1] * 64);\n bytemeR[2] = int(floor(value / 32.));\n value -= float(bytemeR[2] * 32);\n bytemeR[3] = int(floor(value / 16.));\n value -= float(bytemeR[3] * 16);\n bytemeR[4] = int(floor(value / 8.));\n value -= float(bytemeR[4] * 8);\n bytemeR[5] = int(floor(value / 4.));\n value -= float(bytemeR[5] * 4);\n bytemeR[6] = int(floor(value / 2.));\n value -= float(bytemeR[6] * 2);\n bytemeR[7] = int(floor(value));\n\n value = g * 255.;\n int bytemeG[8];\n bytemeG[0] = int(floor(value / 128.));\n value -= float(bytemeG[0] * 128);\n bytemeG[1] = int(floor(value / 64.));\n value -= float(bytemeG[1] * 64);\n bytemeG[2] = int(floor(value / 32.));\n value -= float(bytemeG[2] * 32);\n bytemeG[3] = int(floor(value / 16.));\n value -= float(bytemeG[3] * 16);\n bytemeG[4] = int(floor(value / 8.));\n value -= float(bytemeG[4] * 8);\n bytemeG[5] = int(floor(value / 4.));\n value -= float(bytemeG[5] * 4);\n bytemeG[6] = int(floor(value / 2.));\n value -= float(bytemeG[6] * 2);\n bytemeG[7] = int(floor(value));\n\n value = b * 255.;\n int bytemeB[8];\n bytemeB[0] = int(floor(value / 128.));\n value -= float(bytemeB[0] * 128);\n bytemeB[1] = int(floor(value / 64.));\n value -= float(bytemeB[1] * 64);\n bytemeB[2] = int(floor(value / 32.));\n value -= float(bytemeB[2] * 32);\n bytemeB[3] = int(floor(value / 16.));\n value -= float(bytemeB[3] * 16);\n bytemeB[4] = int(floor(value / 8.));\n value -= float(bytemeB[4] * 8);\n bytemeB[5] = int(floor(value / 4.));\n value -= float(bytemeB[5] * 4);\n bytemeB[6] = int(floor(value / 2.));\n value -= float(bytemeB[6] * 2);\n bytemeB[7] = int(floor(value));\n\n value = a * 255.;\n int bytemeA[8];\n bytemeA[0] = int(floor(value / 128.));\n value -= float(bytemeA[0] * 128);\n bytemeA[1] = int(floor(value / 64.));\n value -= float(bytemeA[1] * 64);\n bytemeA[2] = int(floor(value / 32.));\n value -= float(bytemeA[2] * 32);\n bytemeA[3] = int(floor(value / 16.));\n value -= float(bytemeA[3] * 16);\n bytemeA[4] = int(floor(value / 8.));\n value -= float(bytemeA[4] * 8);\n bytemeA[5] = int(floor(value / 4.));\n value -= float(bytemeA[5] * 4);\n bytemeA[6] = int(floor(value / 2.));\n value -= float(bytemeA[6] * 2);\n bytemeA[7] = int(floor(value));\n\n // compute float32 value from bit arrays\n\n // sign\n int issigned = 1 - 2 * bytemeR[0];\n // issigned = int(pow(-1., float(bytemeR[0])));\n\n // exponent\n int exponent = 0;\n\n exponent += bytemeR[1] * int(pow(2., 7.));\n exponent += bytemeR[2] * int(pow(2., 6.));\n exponent += bytemeR[3] * int(pow(2., 5.));\n exponent += bytemeR[4] * int(pow(2., 4.));\n exponent += bytemeR[5] * int(pow(2., 3.));\n exponent += bytemeR[6] * int(pow(2., 2.));\n exponent += bytemeR[7] * int(pow(2., 1.));\n\n exponent += bytemeG[0];\n\n\n // fraction\n float fraction = 0.;\n\n fraction = float(bytemeG[1]) * pow(2., -1.);\n fraction += float(bytemeG[2]) * pow(2., -2.);\n fraction += float(bytemeG[3]) * pow(2., -3.);\n fraction += float(bytemeG[4]) * pow(2., -4.);\n fraction += float(bytemeG[5]) * pow(2., -5.);\n fraction += float(bytemeG[6]) * pow(2., -6.);\n fraction += float(bytemeG[7]) * pow(2., -7.);\n\n fraction += float(bytemeB[0]) * pow(2., -8.);\n fraction += float(bytemeB[1]) * pow(2., -9.);\n fraction += float(bytemeB[2]) * pow(2., -10.);\n fraction += float(bytemeB[3]) * pow(2., -11.);\n fraction += float(bytemeB[4]) * pow(2., -12.);\n fraction += float(bytemeB[5]) * pow(2., -13.);\n fraction += float(bytemeB[6]) * pow(2., -14.);\n fraction += float(bytemeB[7]) * pow(2., -15.);\n\n fraction += float(bytemeA[0]) * pow(2., -16.);\n fraction += float(bytemeA[1]) * pow(2., -17.);\n fraction += float(bytemeA[2]) * pow(2., -18.);\n fraction += float(bytemeA[3]) * pow(2., -19.);\n fraction += float(bytemeA[4]) * pow(2., -20.);\n fraction += float(bytemeA[5]) * pow(2., -21.);\n fraction += float(bytemeA[6]) * pow(2., -22.);\n fraction += float(bytemeA[7]) * pow(2., -23.);\n\n value = float(issigned) * pow( 2., float(exponent - 127)) * (1. + fraction);\n}\n `;\n }\n}\n\nexport default new Unpack();\n","import ShadersBase from '../shaders.base';\nimport Unpack from '../helpers/shaders.helpers.unpack';\nimport Texture3d from '../helpers/shaders.helpers.texture3d';\n\nclass InterpolationIdentity extends ShadersBase {\n constructor() {\n super();\n this.name = 'interpolationIdentity';\n\n // default properties names\n this._currentVoxel = 'currentVoxel';\n this._dataValue = 'dataValue';\n }\n\n api(baseFragment = this._base, currentVoxel = this._currentVoxel, dataValue = this._dataValue) {\n this._base = baseFragment;\n return this.compute(currentVoxel, dataValue);\n }\n\n compute(currentVoxel, dataValue) {\n this.computeDefinition();\n this._base._functions[this._name] = this._definition;\n return `${this._name}(${currentVoxel}, ${dataValue});`;\n }\n\n computeDefinition() {\n this._definition = `\nvoid ${this._name}(in vec3 currentVoxel, out vec4 dataValue){\n // lower bound\n vec3 rcurrentVoxel = vec3(floor(currentVoxel.x + 0.5 ), floor(currentVoxel.y + 0.5 ), floor(currentVoxel.z + 0.5 ));\n ivec3 voxel = ivec3(int(rcurrentVoxel.x), int(rcurrentVoxel.y), int(rcurrentVoxel.z));\n\n vec4 tmp = vec4(0., 0., 0., 0.);\n int offset = 0;\n\n ${Texture3d.api(this._base, 'voxel', 'tmp', 'offset')}\n ${Unpack.api(this._base, 'tmp', 'offset', 'dataValue')}\n}\n `;\n }\n}\n\nexport default new InterpolationIdentity();\n","import InterpolationIdentity from './shaders.interpolation.identity';\nimport InterpolationTrilinear from './shaders.interpolation.trilinear';\n\nfunction shadersInterpolation(baseFragment, currentVoxel, dataValue, gradient) {\n switch (baseFragment._uniforms.uInterpolation.value) {\n case 0:\n // no interpolation\n return InterpolationIdentity.api(baseFragment, currentVoxel, dataValue);\n\n case 1:\n // trilinear interpolation\n return InterpolationTrilinear.api(baseFragment, currentVoxel, dataValue, gradient);\n\n default:\n return InterpolationIdentity.api(baseFragment, currentVoxel, dataValue);\n }\n}\n\nexport default shadersInterpolation;\n","import ShadersBase from '../shaders.base';\nimport InterpolationIdentity from './shaders.interpolation.identity';\n\nclass InterpolationTrilinear extends ShadersBase {\n constructor() {\n super();\n this.name = 'interpolationTrilinear';\n\n // default properties names\n this._currentVoxel = 'currentVoxel';\n this._dataValue = 'dataValue';\n this._gradient = 'gradient';\n }\n\n api(\n baseFragment = this._base,\n currentVoxel = this._currentVoxel,\n dataValue = this._dataValue,\n gradient = this._gradient\n ) {\n this._base = baseFragment;\n return this.compute(currentVoxel, dataValue, gradient);\n }\n\n compute(currentVoxel, dataValue, gradient) {\n this.computeDefinition();\n this._base._functions[this._name] = this._definition;\n return `${this._name}(${currentVoxel}, ${dataValue}, ${gradient});`;\n }\n\n computeDefinition() {\n this._definition = `\nvoid trilinearInterpolation(\n in vec3 normalizedPosition,\n out vec4 interpolatedValue,\n in vec4 v000, in vec4 v100,\n in vec4 v001, in vec4 v101,\n in vec4 v010, in vec4 v110,\n in vec4 v011, in vec4 v111) {\n // https://en.wikipedia.org/wiki/Trilinear_interpolation\n vec4 c00 = v000 * ( 1.0 - normalizedPosition.x ) + v100 * normalizedPosition.x;\n vec4 c01 = v001 * ( 1.0 - normalizedPosition.x ) + v101 * normalizedPosition.x;\n vec4 c10 = v010 * ( 1.0 - normalizedPosition.x ) + v110 * normalizedPosition.x;\n vec4 c11 = v011 * ( 1.0 - normalizedPosition.x ) + v111 * normalizedPosition.x;\n\n // c0 and c1\n vec4 c0 = c00 * ( 1.0 - normalizedPosition.y) + c10 * normalizedPosition.y;\n vec4 c1 = c01 * ( 1.0 - normalizedPosition.y) + c11 * normalizedPosition.y;\n\n // c\n vec4 c = c0 * ( 1.0 - normalizedPosition.z) + c1 * normalizedPosition.z;\n interpolatedValue = c;\n}\n\nvoid ${this._name}(in vec3 currentVoxel, out vec4 dataValue, out vec3 gradient){\n\n vec3 lower_bound = floor(currentVoxel);\n lower_bound = max(vec3(0.), lower_bound);\n \n vec3 higher_bound = lower_bound + vec3(1.);\n\n vec3 normalizedPosition = (currentVoxel - lower_bound);\n normalizedPosition = max(vec3(0.), normalizedPosition);\n\n vec4 interpolatedValue = vec4(0.);\n\n //\n // fetch values required for interpolation\n //\n vec4 v000 = vec4(0.0, 0.0, 0.0, 0.0);\n vec3 c000 = vec3(lower_bound.x, lower_bound.y, lower_bound.z);\n ${InterpolationIdentity.api(this._base, 'c000', 'v000')}\n\n //\n vec4 v100 = vec4(0.0, 0.0, 0.0, 0.0);\n vec3 c100 = vec3(higher_bound.x, lower_bound.y, lower_bound.z);\n ${InterpolationIdentity.api(this._base, 'c100', 'v100')}\n\n //\n vec4 v001 = vec4(0.0, 0.0, 0.0, 0.0);\n vec3 c001 = vec3(lower_bound.x, lower_bound.y, higher_bound.z);\n ${InterpolationIdentity.api(this._base, 'c001', 'v001')}\n\n //\n vec4 v101 = vec4(0.0, 0.0, 0.0, 0.0);\n vec3 c101 = vec3(higher_bound.x, lower_bound.y, higher_bound.z);\n ${InterpolationIdentity.api(this._base, 'c101', 'v101')}\n \n //\n vec4 v010 = vec4(0.0, 0.0, 0.0, 0.0);\n vec3 c010 = vec3(lower_bound.x, higher_bound.y, lower_bound.z);\n ${InterpolationIdentity.api(this._base, 'c010', 'v010')}\n\n vec4 v110 = vec4(0.0, 0.0, 0.0, 0.0);\n vec3 c110 = vec3(higher_bound.x, higher_bound.y, lower_bound.z);\n ${InterpolationIdentity.api(this._base, 'c110', 'v110')}\n\n //\n vec4 v011 = vec4(0.0, 0.0, 0.0, 0.0);\n vec3 c011 = vec3(lower_bound.x, higher_bound.y, higher_bound.z);\n ${InterpolationIdentity.api(this._base, 'c011', 'v011')}\n\n vec4 v111 = vec4(0.0, 0.0, 0.0, 0.0);\n vec3 c111 = vec3(higher_bound.x, higher_bound.y, higher_bound.z);\n ${InterpolationIdentity.api(this._base, 'c111', 'v111')}\n\n // compute interpolation at position\n trilinearInterpolation(normalizedPosition, interpolatedValue ,v000, v100, v001, v101, v010,v110, v011,v111);\n dataValue = interpolatedValue;\n\n // That breaks shading in volume rendering\n // if (gradient.x == 1.) { // skip gradient calculation for slice helper\n // return;\n // }\n\n // compute gradient\n float gradientStep = 0.005;\n\n // x axis\n vec3 g100 = vec3(1., 0., 0.);\n vec3 ng100 = normalizedPosition + g100 * gradientStep;\n ng100.x = min(1., ng100.x);\n\n vec4 vg100 = vec4(0.);\n trilinearInterpolation(ng100, vg100 ,v000, v100, v001, v101, v010,v110, v011,v111);\n\n vec3 go100 = -g100;\n vec3 ngo100 = normalizedPosition + go100 * gradientStep;\n ngo100.x = max(0., ngo100.x);\n\n vec4 vgo100 = vec4(0.);\n trilinearInterpolation(ngo100, vgo100 ,v000, v100, v001, v101, v010,v110, v011,v111);\n\n gradient.x = (g100.x * vg100.x + go100.x * vgo100.x);\n\n // y axis\n vec3 g010 = vec3(0., 1., 0.);\n vec3 ng010 = normalizedPosition + g010 * gradientStep;\n ng010.y = min(1., ng010.y);\n\n vec4 vg010 = vec4(0.);\n trilinearInterpolation(ng010, vg010 ,v000, v100, v001, v101, v010,v110, v011,v111);\n\n vec3 go010 = -g010;\n vec3 ngo010 = normalizedPosition + go010 * gradientStep;\n ngo010.y = max(0., ngo010.y);\n\n vec4 vgo010 = vec4(0.);\n trilinearInterpolation(ngo010, vgo010 ,v000, v100, v001, v101, v010,v110, v011,v111);\n\n gradient.y = (g010.y * vg010.x + go010.y * vgo010.x);\n\n // z axis\n vec3 g001 = vec3(0., 0., 1.);\n vec3 ng001 = normalizedPosition + g001 * gradientStep;\n ng001.z = min(1., ng001.z);\n\n vec4 vg001 = vec4(0.);\n trilinearInterpolation(ng001, vg001 ,v000, v100, v001, v101, v010,v110, v011,v111);\n\n vec3 go001 = -g001;\n vec3 ngo001 = normalizedPosition + go001 * gradientStep;\n ngo001.z = max(0., ngo001.z);\n\n vec4 vgo001 = vec4(0.);\n trilinearInterpolation(ngo001, vgo001 ,v000, v100, v001, v101, v010,v110, v011,v111);\n\n gradient.z = (g001.z * vg001.x + go001.z * vgo001.x);\n\n // normalize gradient\n // +0.0001 instead of if?\n float gradientMagnitude = length(gradient);\n if (gradientMagnitude > 0.0) {\n gradient = -(1. / gradientMagnitude) * gradient;\n }\n}\n `;\n }\n}\n\nexport default new InterpolationTrilinear();\n","export default class ShadersBase {\n constructor() {\n this._name = 'shadersBase';\n this._base = {\n _functions: {},\n _uniforms: {},\n };\n this._definition = '';\n }\n\n get name() {\n return this._name;\n }\n\n set name(name) {\n this._name = name;\n }\n}\n","export default class ShadersFragment {\n // pass uniforms object\n constructor(uniforms) {\n this._uniforms = uniforms;\n this._functions = {};\n this._main = '';\n }\n\n functions() {\n if (this._main === '') {\n // if main is empty, functions can not have been computed\n this.main();\n }\n\n let content = '';\n for (let property in this._functions) {\n content += this._functions[property] + '\\n';\n }\n\n return content;\n }\n\n uniforms() {\n let content = '';\n for (let property in this._uniforms) {\n let uniform = this._uniforms[property];\n content += `uniform ${uniform.typeGLSL} ${property}`;\n\n if (uniform && uniform.length) {\n content += `[${uniform.length}]`;\n }\n\n content += ';\\n';\n }\n\n return content;\n }\n\n main() {\n // need to pre-call main to fill up the functions list\n this._main = `\n\nfloat luma (vec3 rgb) {\n return (rgb.r + rgb.g + rgb.b)/3.0;\n}\n\nconst float T = 0.04;\nconst float M = 1.0;\nconst float L = 0.002;\n\nvoid main(void) {\n\n vec2 texCoord = vec2(((vProjectedCoords.x / vProjectedCoords.w) + 1.0 ) / 2.0,\n ((vProjectedCoords.y / vProjectedCoords.w) + 1.0 ) / 2.0 );\n\n float borderWidth = uWidth; // in px\n float step_u = borderWidth * 1.0 / uCanvasWidth;\n float step_v = borderWidth * 1.0 / uCanvasHeight;\n vec4 centerPixel = texture2D(uTextureFilled, texCoord);\n\n vec4 rightPixel = texture2D(uTextureFilled, texCoord + vec2(step_u, 0.0));\n vec4 bottomPixel = texture2D(uTextureFilled, texCoord + vec2(0.0, step_v));\n\n // now manually compute the derivatives\n float _dFdX = length(rightPixel - centerPixel) / step_u;\n float _dFdY = length(bottomPixel - centerPixel) / step_v;\n\n // gl_FragColor.r = _dFdX;\n // gl_FragColor.g = _dFdY;\n gl_FragColor.r = max(max(centerPixel.r, rightPixel.r), bottomPixel.r);\n gl_FragColor.g = max(max(centerPixel.g, rightPixel.g), bottomPixel.g);\n gl_FragColor.b = max(max(centerPixel.b, rightPixel.b), bottomPixel.b);\n float maxDerivative = max(_dFdX, _dFdY);\n float clampedDerivative = clamp(maxDerivative, 0., 1.);\n gl_FragColor.a = uOpacity * clampedDerivative;\n\n return;\n // float h = 1./uCanvasHeight;\n // float w = 1./uCanvasWidth;\n // vec4 n[9];\n // n[0] = texture2D(uTextureFilled, vProjectedTextCoords + vec2( -w, -h));\n // n[1] = texture2D(uTextureFilled, vProjectedTextCoords + vec2(0.0, -h));\n // n[2] = texture2D(uTextureFilled, vProjectedTextCoords + vec2( w, -h));\n // n[3] = texture2D(uTextureFilled, vProjectedTextCoords + vec2( -w, 0.0));\n // n[4] = texture2D(uTextureFilled, vProjectedTextCoords);\n // n[5] = texture2D(uTextureFilled, texCoord + vec2( w, 0.0));\n // n[6] = texture2D(uTextureFilled, texCoord + vec2( -w, h));\n // n[7] = texture2D(uTextureFilled, texCoord + vec2(0.0, h));\n // n[8] = texture2D(uTextureFilled, texCoord + vec2( w, h));\n // vec4 sobel_horizEdge = n[2] + (2.0*n[5]) + n[8] - (n[0] + (2.0*n[3]) + n[6]);\n // vec4 sobel_vertEdge = n[0] + (2.0*n[1]) + n[2] - (n[6] + (2.0*n[7]) + n[8]);\n // vec3 sobel = sqrt((sobel_horizEdge.rgb * sobel_horizEdge.rgb) + (sobel_vertEdge.rgb * sobel_vertEdge.rgb));\n // gl_FragColor = vec4( sobel, max(max(sobel.r, sobel.g), sobel.b) );\n\n // return;\n}\n `;\n }\n\n compute() {\n let shaderInterpolation = '';\n // shaderInterpolation.inline(args) //true/false\n // shaderInterpolation.functions(args)\n\n return `\n// uniforms\n${this.uniforms()}\n\n// varying (should fetch it from vertex directly)\nvarying vec4 vProjectedCoords;\n\n// tailored functions\n${this.functions()}\n\n// main loop\n${this._main}\n `;\n }\n}\n","/**\n * @module shaders/data\n */\nexport default class ShadersUniform {\n static uniforms() {\n return {\n uCanvasWidth: {\n type: 'f',\n value: 0,\n typeGLSL: 'float',\n },\n uCanvasHeight: {\n type: 'f',\n value: 0,\n typeGLSL: 'float',\n },\n uWidth: {\n type: 'f',\n value: 1,\n typeGLSL: 'float',\n },\n uOpacity: {\n type: 'f',\n value: 1,\n typeGLSL: 'float',\n },\n uTextureFilled: {\n type: 't',\n value: [],\n typeGLSL: 'sampler2D',\n },\n };\n }\n}\n","export default class ShadersVertex {\n compute() {\n return `\nvarying vec4 vProjectedCoords;\n\n//\n// main\n//\nvoid main() {\n\n vec4 vPos = modelMatrix * vec4(position, 1.0 );\n mat4 vProjectionViewMatrix = projectionMatrix * viewMatrix;\n vProjectedCoords = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\n gl_Position = projectionMatrix * modelViewMatrix * vec4(position, 1.0 );\n\n}\n `;\n }\n}\n","import shadersInterpolation from './interpolation/shaders.interpolation';\n\nexport default class ShadersFragment {\n // pass uniforms object\n constructor(uniforms) {\n this._uniforms = uniforms;\n this._functions = {};\n this._main = '';\n }\n\n functions() {\n if (this._main === '') {\n // if main is empty, functions can not have been computed\n this.main();\n }\n\n let content = '';\n for (let property in this._functions) {\n content += this._functions[property] + '\\n';\n }\n\n return content;\n }\n\n uniforms() {\n let content = '';\n for (let property in this._uniforms) {\n let uniform = this._uniforms[property];\n content += `uniform ${uniform.typeGLSL} ${property}`;\n\n if (uniform && uniform.length) {\n content += `[${uniform.length}]`;\n }\n\n content += ';\\n';\n }\n\n return content;\n }\n\n main() {\n // need to pre-call main to fill up the functions list\n this._main = `\nvoid main(void) {\n\n // draw border if slice is cropped\n // float uBorderDashLength = 10.;\n\n if( uCanvasWidth > 0. &&\n ((gl_FragCoord.x > uBorderMargin && (gl_FragCoord.x - uBorderMargin) < uBorderWidth) ||\n (gl_FragCoord.x < (uCanvasWidth - uBorderMargin) && (gl_FragCoord.x + uBorderMargin) > (uCanvasWidth - uBorderWidth) ))){\n float valueY = mod(gl_FragCoord.y, 2. * uBorderDashLength);\n if( valueY < uBorderDashLength && gl_FragCoord.y > uBorderMargin && gl_FragCoord.y < (uCanvasHeight - uBorderMargin) ){\n gl_FragColor = vec4(uBorderColor, 1.);\n return;\n }\n }\n\n if( uCanvasHeight > 0. &&\n ((gl_FragCoord.y > uBorderMargin && (gl_FragCoord.y - uBorderMargin) < uBorderWidth) ||\n (gl_FragCoord.y < (uCanvasHeight - uBorderMargin) && (gl_FragCoord.y + uBorderMargin) > (uCanvasHeight - uBorderWidth) ))){\n float valueX = mod(gl_FragCoord.x, 2. * uBorderDashLength);\n if( valueX < uBorderDashLength && gl_FragCoord.x > uBorderMargin && gl_FragCoord.x < (uCanvasWidth - uBorderMargin) ){\n gl_FragColor = vec4(uBorderColor, 1.);\n return;\n }\n }\n\n // get texture coordinates of current pixel\n vec4 dataValue = vec4(0.);\n vec3 gradient = vec3(1.); // gradient calculations will be skipped if it is equal to vec3(1.) \n float steps = floor(uThickness / uSpacing + 0.5);\n\n if (steps > 1.) {\n vec3 origin = vPos - uThickness * 0.5 * vNormal;\n vec4 dataValueAcc = vec4(0.);\n for (float step = 0.; step < 128.; step++) {\n if (step >= steps) {\n break;\n }\n\n vec4 dataCoordinates = uWorldToData * vec4(origin + step * uSpacing * vNormal, 1.);\n vec3 currentVoxel = dataCoordinates.xyz;\n ${shadersInterpolation(this, 'currentVoxel', 'dataValueAcc', 'gradient')};\n\n if (step == 0.) {\n dataValue.r = dataValueAcc.r;\n continue;\n }\n\n if (uThicknessMethod == 0) {\n dataValue.r = max(dataValueAcc.r, dataValue.r);\n }\n if (uThicknessMethod == 1) {\n dataValue.r += dataValueAcc.r;\n }\n if (uThicknessMethod == 2) {\n dataValue.r = min(dataValueAcc.r, dataValue.r);\n }\n }\n\n if (uThicknessMethod == 1) {\n dataValue.r /= steps;\n }\n } else {\n vec4 dataCoordinates = uWorldToData * vec4(vPos, 1.);\n vec3 currentVoxel = dataCoordinates.xyz;\n ${shadersInterpolation(this, 'currentVoxel', 'dataValue', 'gradient')}\n }\n\n if(uNumberOfChannels == 1){\n // rescale/slope\n float realIntensity = dataValue.r * uRescaleSlopeIntercept[0] + uRescaleSlopeIntercept[1];\n \n // threshold\n if (realIntensity < uLowerUpperThreshold[0] || realIntensity > uLowerUpperThreshold[1]) {\n discard;\n }\n \n // normalize\n float windowMin = uWindowCenterWidth[0] - uWindowCenterWidth[1] * 0.5;\n float normalizedIntensity =\n ( realIntensity - windowMin ) / uWindowCenterWidth[1];\n dataValue.r = dataValue.g = dataValue.b = normalizedIntensity;\n dataValue.a = 1.;\n\n // apply LUT\n if(uLut == 1){\n // should opacity be grabbed there?\n dataValue = texture2D( uTextureLUT, vec2( normalizedIntensity , 1.0) );\n }\n \n // apply segmentation\n if(uLutSegmentation == 1){\n // should opacity be grabbed there?\n //\n float textureWidth = 256.;\n float textureHeight = 128.;\n float min = 0.;\n // start at 0!\n int adjustedIntensity = int(floor(realIntensity + 0.5));\n \n // Get row and column in the texture\n int colIndex = int(mod(float(adjustedIntensity), textureWidth));\n int rowIndex = int(floor(float(adjustedIntensity)/textureWidth));\n \n float texWidth = 1./textureWidth;\n float texHeight = 1./textureHeight;\n \n // Map row and column to uv\n vec2 uv = vec2(0,0);\n uv.x = 0.5 * texWidth + (texWidth * float(colIndex));\n uv.y = 1. - (0.5 * texHeight + float(rowIndex) * texHeight);\n \n dataValue = texture2D( uTextureLUTSegmentation, uv );\n }\n }\n\n if(uInvert == 1){\n dataValue.xyz = vec3(1.) - dataValue.xyz;\n }\n\n dataValue.a = dataValue.a*uOpacity;\n\n gl_FragColor = dataValue;\n}\n `;\n }\n\n compute() {\n return `\n// uniforms\n${this.uniforms()}\n\n// varying (should fetch it from vertex directly)\nvarying vec3 vPos;\nvarying vec3 vNormal;\n\n// tailored functions\n${this.functions()}\n\n// main loop\n${this._main}\n `;\n }\n}\n","import { Matrix4 } from 'three/src/math/Matrix4';\n\n/**\n * @module shaders/data\n */\nexport default class ShadersUniform {\n /**\n * Shaders data uniforms\n */\n static uniforms() {\n return {\n uTextureSize: {\n type: 'i',\n value: 0,\n typeGLSL: 'int',\n },\n uTextureContainer: {\n type: 'tv',\n value: [],\n typeGLSL: 'sampler2D',\n length: 7,\n },\n uDataDimensions: {\n type: 'iv',\n value: [0, 0, 0],\n typeGLSL: 'ivec3',\n },\n uWorldToData: {\n type: 'm4',\n value: new Matrix4(),\n typeGLSL: 'mat4',\n },\n uWindowCenterWidth: {\n type: 'fv1',\n value: [0.0, 0.0],\n typeGLSL: 'float',\n length: 2,\n },\n uLowerUpperThreshold: {\n type: 'fv1',\n value: [0.0, 0.0],\n typeGLSL: 'float',\n length: 2,\n },\n uRescaleSlopeIntercept: {\n type: 'fv1',\n value: [0.0, 0.0],\n typeGLSL: 'float',\n length: 2,\n },\n uNumberOfChannels: {\n type: 'i',\n value: 1,\n typeGLSL: 'int',\n },\n uBitsAllocated: {\n type: 'i',\n value: 8,\n typeGLSL: 'int',\n },\n uInvert: {\n type: 'i',\n value: 0,\n typeGLSL: 'int',\n },\n uLut: {\n type: 'i',\n value: 0,\n typeGLSL: 'int',\n },\n uTextureLUT: {\n type: 't',\n value: [],\n typeGLSL: 'sampler2D',\n },\n uLutSegmentation: {\n type: 'i',\n value: 0,\n typeGLSL: 'int',\n },\n uTextureLUTSegmentation: {\n type: 't',\n value: [],\n typeGLSL: 'sampler2D',\n },\n uPixelType: {\n type: 'i',\n value: 0,\n typeGLSL: 'int',\n },\n uPackedPerPixel: {\n type: 'i',\n value: 1,\n typeGLSL: 'int',\n },\n uInterpolation: {\n type: 'i',\n value: 1,\n typeGLSL: 'int',\n },\n uCanvasWidth: {\n type: 'f',\n value: 0,\n typeGLSL: 'float',\n },\n uCanvasHeight: {\n type: 'f',\n value: 0,\n typeGLSL: 'float',\n },\n uBorderColor: {\n type: 'v3',\n value: [1.0, 0.0, 0.5],\n typeGLSL: 'vec3',\n },\n uBorderWidth: {\n type: 'f',\n value: 2,\n typeGLSL: 'float',\n },\n uBorderMargin: {\n type: 'f',\n value: 2,\n typeGLSL: 'float',\n },\n uBorderDashLength: {\n type: 'f',\n value: 10,\n typeGLSL: 'float',\n },\n uOpacity: {\n type: 'f',\n value: 1.0,\n typeGLSL: 'float',\n },\n uSpacing: {\n type: 'f',\n value: 0,\n typeGLSL: 'float',\n },\n uThickness: {\n type: 'f',\n value: 0,\n typeGLSL: 'float',\n },\n uThicknessMethod: {\n type: 'i',\n value: 0,\n typeGLSL: 'int',\n },\n };\n }\n}\n","export default class ShadersVertex {\n compute() {\n return `\nvarying vec3 vPos;\nvarying vec3 vNormal;\n\nvoid main() {\n vNormal = normal;\n vPos = (modelMatrix * vec4(position, 1.0 )).xyz;\n gl_Position = projectionMatrix * modelViewMatrix * vec4(position, 1.0 );\n\n}\n `;\n }\n}\n","import ContourUniform from './shaders.contour.uniform';\nimport ContourFragment from './shaders.contour.fragment';\nimport ContourVertex from './shaders.contour.vertex';\n\nimport DataUniform from './shaders.data.uniform';\nimport DataFragment from './shaders.data.fragment';\nimport DataVertex from './shaders.data.vertex';\n\nimport VRUniform from './shaders.vr.uniform';\nimport VRFragment from './shaders.vr.fragment';\nimport VRVertex from './shaders.vr.vertex';\n\nimport LayerUniform from './shaders.layer.uniform';\nimport LayerFragment from './shaders.layer.fragment';\nimport LayerVertex from './shaders.layer.vertex';\n\nimport LocalizerUniform from './shaders.localizer.uniform';\nimport LocalizerFragment from './shaders.localizer.fragment';\nimport LocalizerVertex from './shaders.localizer.vertex';\n\nexport {\n ContourUniform as ContourUniformShader,\n ContourFragment as ContourFragmentShader,\n ContourVertex as ContourVertexShader,\n DataUniform as DataUniformShader,\n DataFragment as DataFragmentShader,\n DataVertex as DataVertexShader,\n VRUniform as VRUniformShader,\n VRFragment as VRFragmentShader,\n VRVertex as VRVertexShader,\n LayerUniform as LayerUniformShader,\n LayerFragment as LayerFragmentShader,\n LayerVertex as LayerVertexShader,\n LocalizerUniform as LocalizerUniformShader,\n LocalizerFragment as LocalizerFragmentShader,\n LocalizerVertex as LocalizerVertexShader,\n};\n","export default class ShadersFragment {\n // pass uniforms object\n constructor(uniforms) {\n this._uniforms = uniforms;\n this._functions = {};\n this._main = '';\n }\n\n functions() {\n if (this._main === '') {\n // if main is empty, functions can not have been computed\n this.main();\n }\n\n let content = '';\n for (let property in this._functions) {\n content += this._functions[property] + '\\n';\n }\n\n return content;\n }\n\n uniforms() {\n let content = '';\n for (let property in this._uniforms) {\n let uniform = this._uniforms[property];\n content += `uniform ${uniform.typeGLSL} ${property}`;\n\n if (uniform && uniform.length) {\n content += `[${uniform.length}]`;\n }\n\n content += ';\\n';\n }\n\n return content;\n }\n\n main() {\n // need to pre-call main to fill up the functions list\n this._main = `\nvoid main(void) {\n\n vec2 texc = vec2(((vProjectedCoords.x / vProjectedCoords.w) + 1.0 ) / 2.0,\n ((vProjectedCoords.y / vProjectedCoords.w) + 1.0 ) / 2.0 );\n\n // just silence warning for\n // vec4 dummy = vPos;\n\n //The back position is the world space position stored in the texture.\n vec4 baseColor0 = texture2D(uTextureBackTest0, texc);\n vec4 baseColor1 = texture2D(uTextureBackTest1, texc);\n\n if( uTrackMouse == 1 ){\n\n if( vProjectedCoords.x < uMouse.x ){\n\n gl_FragColor = baseColor0;\n\n }\n else{\n\n gl_FragColor = mix( baseColor0, baseColor1, uOpacity1 );\n\n }\n\n }\n else{\n\n if( uType1 == 0 ){\n\n //merge an image into\n gl_FragColor = mix( baseColor0, baseColor1, uOpacity1 );\n\n }\n else{\n\n float opacity = baseColor1.a;\n gl_FragColor = mix( baseColor0, baseColor1, opacity * uOpacity1 );\n\n }\n\n }\n\n return;\n}\n `;\n }\n\n compute() {\n let shaderInterpolation = '';\n // shaderInterpolation.inline(args) //true/false\n // shaderInterpolation.functions(args)\n\n return `\n// uniforms\n${this.uniforms()}\n\n// varying (should fetch it from vertex directly)\n// varying vec4 vPos;\nvarying vec4 vProjectedCoords;\n\n// tailored functions\n${this.functions()}\n\n// main loop\n${this._main}\n `;\n }\n}\n","import { Vector2 } from 'three/src/math/Vector2';\n\n/**\n * @module shaders/data\n */\nexport default class ShadersUniform {\n static uniforms() {\n return {\n uTextureBackTest0: {\n type: 't',\n value: [],\n typeGLSL: 'sampler2D',\n },\n uTextureBackTest1: {\n type: 't',\n value: [],\n typeGLSL: 'sampler2D',\n },\n uOpacity0: {\n type: 'f',\n value: 1.0,\n typeGLSL: 'float',\n },\n uOpacity1: {\n type: 'f',\n value: 1.0,\n typeGLSL: 'float',\n },\n uType0: {\n type: 'i',\n value: 0,\n typeGLSL: 'int',\n },\n uType1: {\n type: 'i',\n value: 1,\n typeGLSL: 'int',\n },\n uTrackMouse: {\n type: 'i',\n value: 0,\n typeGLSL: 'int',\n },\n uMouse: {\n type: 'v2',\n value: new Vector2(),\n typeGLSL: 'vec2',\n },\n };\n }\n}\n","export default class ShadersVertex {\n compute() {\n return `\n// varying vec4 vPos;\nvarying vec4 vProjectedCoords;\n\n//\n// main\n//\nvoid main() {\n\n vec4 vPos = modelMatrix * vec4(position, 1.0 );\n vProjectedCoords = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\n gl_Position = projectionMatrix * modelViewMatrix * vec4(position, 1.0 );\n\n}\n `;\n }\n}\n","/**\n * Localizer fragment shader\n */\nexport default class {\n /**\n *\n */\n constructor(uniforms) {\n this._uniforms = uniforms;\n this._functions = {};\n this._main = '';\n }\n\n /**\n *\n */\n functions() {\n if (this._main === '') {\n // if main is empty, functions can not have been computed\n this.main();\n }\n\n let content = '';\n for (let property in this._functions) {\n content += this._functions[property] + '\\n';\n }\n\n return content;\n }\n\n /**\n *\n */\n uniforms() {\n let content = '';\n for (let property in this._uniforms) {\n let uniform = this._uniforms[property];\n content += `uniform ${uniform.typeGLSL} ${property}`;\n\n if (uniform && uniform.length) {\n content += `[${uniform.length}]`;\n }\n\n content += ';\\n';\n }\n\n return content;\n }\n\n /**\n *\n */\n main() {\n // need to pre-call main to fill up the functions list\n this._main = `\nvoid intersectionProjection(\n in vec4 plane,\n in vec4 slice,\n out vec3 intersectionProjection){\n\n vec3 intersectionDirection = normalize(cross(plane.xyz, slice.xyz));\n vec3 intersectionPoint = \n cross(intersectionDirection,slice.xyz) * plane.w +\n cross(plane.xyz, intersectionDirection) * slice.w;\n\n intersectionProjection =\n intersectionPoint.xyz +\n (dot(vPos.xyz - intersectionPoint, intersectionDirection)\n * intersectionDirection);\n\n}\n\nvoid main(void) {\n vec4 c1 = vec4(0., 0., 0., 0.);\n vec4 c2 = vec4(0., 0., 0., 0.);\n vec4 c3 = vec4(0., 0., 0., 0.);\n\n // localizer #1\n // must be normalized!\n if(length(uPlane1.xyz) > 0.5) {\n vec3 projection1 = vec3(1.);\n intersectionProjection(\n uPlane1,\n uSlice,\n projection1\n );\n\n vec4 projInter1 = (vProjectionViewMatrix * vec4(projection1, 1.));\n vec3 ndc1 = projInter1.xyz / projInter1.w;\n vec2 screenSpace1 = (ndc1.xy * .5 + .5) * vec2(uCanvasWidth, uCanvasHeight);\n\n float d1 = distance(gl_FragCoord.xy, screenSpace1.xy);\n c1 = vec4(uPlaneColor1, 1. - smoothstep(.5, .7, d1));\n }\n\n // localizer #2\n if(length(uPlane2.xyz) > 0.5) {\n vec3 projection2 = vec3(1.);\n intersectionProjection(\n uPlane2,\n uSlice,\n projection2\n );\n\n vec4 projInter2 = (vProjectionViewMatrix * vec4(projection2, 1.));\n vec3 ndc2 = projInter2.xyz / projInter2.w;\n vec2 screenSpace2 = (ndc2.xy * .5 + .5) * vec2(uCanvasWidth, uCanvasHeight);\n\n float d2 = distance(gl_FragCoord.xy, screenSpace2.xy);\n c2 = vec4(uPlaneColor2, 1. - smoothstep(.5, .7, d2));\n }\n\n // localizer #3\n if(length(uPlane3.xyz) > 0.5) {\n vec3 projection3 = vec3(1.);\n intersectionProjection(\n uPlane3,\n uSlice,\n projection3\n );\n\n vec4 projInter3 = (vProjectionViewMatrix * vec4(projection3, 1.));\n vec3 ndc3 = projInter3.xyz / projInter3.w;\n vec2 screenSpace3 = (ndc3.xy * .5 + .5) * vec2(uCanvasWidth, uCanvasHeight);\n\n float d3 = distance(gl_FragCoord.xy, screenSpace3.xy);\n c3 = vec4(uPlaneColor3, 1. - smoothstep(.5, .7, d3));\n }\n\n // float uBorderDashLength = 10.0;\n // float uBorderWidth = 2.0;\n // float valueX = mod(gl_FragCoord.x, 2. * uBorderDashLength);\n // float valueY = mod(gl_FragCoord.y, 2. * uBorderDashLength);\n // if( valueX < uBorderDashLength || valueY < uBorderDashLength ){\n vec3 colorMix = c1.xyz*c1.w + c2.xyz*c2.w + c3.xyz*c3.w;\n gl_FragColor = vec4(colorMix, max(max(c1.w, c2.w),c3.w)*0.5);\n return;\n // }\n \n // gl_FragColor = vec4(0., 0., 0., 0.);\n // return;\n}\n `;\n }\n\n /**\n *\n */\n compute() {\n return `\n// uniforms\n${this.uniforms()}\n\n// varying (should fetch it from vertex directly)\nvarying vec4 vPos;\nvarying mat4 vProjectionViewMatrix;\n\n// tailored functions\n${this.functions()}\n\n// main loop\n${this._main}\n `;\n }\n}\n","/**\n * @module shaders/localizer/uniforms\n */\n\nexport default class {\n /**\n * Shaders data uniforms\n */\n static uniforms() {\n return {\n uCanvasWidth: {\n type: 'f',\n value: 0,\n typeGLSL: 'float',\n },\n uCanvasHeight: {\n type: 'f',\n value: 0,\n typeGLSL: 'float',\n },\n uSlice: {\n type: 'v4',\n value: [0.0, 0.0, 0.0, 0.0],\n typeGLSL: 'vec4',\n },\n uPlane1: {\n type: 'v4',\n value: [0.0, 0.0, 0.0, 0.0],\n typeGLSL: 'vec4',\n },\n uPlaneColor1: {\n type: 'v3',\n value: [1.0, 1.0, 0.0],\n typeGLSL: 'vec3',\n },\n uPlane2: {\n type: 'v4',\n value: [0.0, 0.0, 0.0, 0.0],\n typeGLSL: 'vec4',\n },\n uPlaneColor2: {\n type: 'v3',\n value: [1.0, 1.0, 0.0],\n typeGLSL: 'vec3',\n },\n uPlane3: {\n type: 'v4',\n value: [0.0, 0.0, 0.0, 0.0],\n typeGLSL: 'vec4',\n },\n uPlaneColor3: {\n type: 'v3',\n value: [1.0, 1.0, 0.0],\n typeGLSL: 'vec3',\n },\n };\n }\n}\n","/**\n *\n */\nexport default class {\n /**\n *\n */\n compute() {\n return `\nvarying vec4 vPos;\nvarying mat4 vProjectionViewMatrix;\n\n//\n// main\n//\nvoid main() {\n\n vPos = modelMatrix * vec4(position, 1.0 );\n vProjectionViewMatrix = projectionMatrix * viewMatrix;\n gl_Position = projectionMatrix * modelViewMatrix * vec4(position, 1.0 );\n\n}\n `;\n }\n}\n","import shadersInterpolation from './interpolation/shaders.interpolation';\nimport shadersIntersectBox from './helpers/shaders.helpers.intersectBox';\n\nexport default class ShadersFragment {\n // pass uniforms object\n constructor(uniforms) {\n this._uniforms = uniforms;\n this._functions = {};\n this._main = '';\n }\n\n functions() {\n if (this._main === '') {\n // if main is empty, functions can not have been computed\n this.main();\n }\n\n let content = '';\n for (let property in this._functions) {\n content += this._functions[property] + '\\n';\n }\n\n return content;\n }\n\n uniforms() {\n let content = '';\n for (let property in this._uniforms) {\n let uniform = this._uniforms[property];\n content += `uniform ${uniform.typeGLSL} ${property}`;\n\n if (uniform && uniform.length) {\n content += `[${uniform.length}]`;\n }\n\n content += ';\\n';\n }\n\n return content;\n }\n\n main() {\n // need to pre-call main to fill up the functions list\n this._main = `\nvoid getIntensity(in vec3 dataCoordinates, out float intensity, out vec3 gradient){\n\n vec4 dataValue = vec4(0., 0., 0., 0.);\n ${shadersInterpolation(this, 'dataCoordinates', 'dataValue', 'gradient')}\n\n intensity = dataValue.r;\n\n // rescale/slope\n intensity = intensity*uRescaleSlopeIntercept[0] + uRescaleSlopeIntercept[1];\n // window level\n float windowMin = uWindowCenterWidth[0] - uWindowCenterWidth[1] * 0.5;\n intensity = ( intensity - windowMin ) / uWindowCenterWidth[1];\n}\n\nmat4 inverse(mat4 m) {\n float\n a00 = m[0][0], a01 = m[0][1], a02 = m[0][2], a03 = m[0][3],\n a10 = m[1][0], a11 = m[1][1], a12 = m[1][2], a13 = m[1][3],\n a20 = m[2][0], a21 = m[2][1], a22 = m[2][2], a23 = m[2][3],\n a30 = m[3][0], a31 = m[3][1], a32 = m[3][2], a33 = m[3][3],\n\n b00 = a00 * a11 - a01 * a10,\n b01 = a00 * a12 - a02 * a10,\n b02 = a00 * a13 - a03 * a10,\n b03 = a01 * a12 - a02 * a11,\n b04 = a01 * a13 - a03 * a11,\n b05 = a02 * a13 - a03 * a12,\n b06 = a20 * a31 - a21 * a30,\n b07 = a20 * a32 - a22 * a30,\n b08 = a20 * a33 - a23 * a30,\n b09 = a21 * a32 - a22 * a31,\n b10 = a21 * a33 - a23 * a31,\n b11 = a22 * a33 - a23 * a32,\n\n det = b00 * b11 - b01 * b10 + b02 * b09 + b03 * b08 - b04 * b07 + b05 * b06;\n\n return mat4(\n a11 * b11 - a12 * b10 + a13 * b09,\n a02 * b10 - a01 * b11 - a03 * b09,\n a31 * b05 - a32 * b04 + a33 * b03,\n a22 * b04 - a21 * b05 - a23 * b03,\n a12 * b08 - a10 * b11 - a13 * b07,\n a00 * b11 - a02 * b08 + a03 * b07,\n a32 * b02 - a30 * b05 - a33 * b01,\n a20 * b05 - a22 * b02 + a23 * b01,\n a10 * b10 - a11 * b08 + a13 * b06,\n a01 * b08 - a00 * b10 - a03 * b06,\n a30 * b04 - a31 * b02 + a33 * b00,\n a21 * b02 - a20 * b04 - a23 * b00,\n a11 * b07 - a10 * b09 - a12 * b06,\n a00 * b09 - a01 * b07 + a02 * b06,\n a31 * b01 - a30 * b03 - a32 * b00,\n a20 * b03 - a21 * b01 + a22 * b00) / det;\n}\n\n/**\n * Adapted from original sources\n * \n * Original code: \n * http://jamie-wong.com/2016/07/15/ray-marching-signed-distance-functions/\n * https://www.shadertoy.com/view/lt33z7\n * \n * The vec3 returned is the RGB color of the light's contribution.\n *\n * k_a: Ambient color\n * k_d: Diffuse color\n * k_s: Specular color\n * alpha: Shininess coefficient\n * p: position of point being lit\n * eye: the position of the camera\n * lightPos: the position of the light\n * lightIntensity: color/intensity of the light\n *\n * See https://en.wikipedia.org/wiki/Phong_reflection_model#Description\n */\nvec3 phongShading(vec3 k_a, vec3 k_d, vec3 k_s, float shininess, vec3 p, vec3 eye,\n vec3 lightPos, vec3 lightIntensity, vec3 normal) {\n vec3 N = normal;\n vec3 L = lightPos - p;\n if (length(L) > 0.) {\n L = L / length(L);\n }\n vec3 V = eye - p;\n if (length(V) > 0.) {\n V = V / length(V);\n }\n vec3 R = reflect(-L, N);\n if (length(R) > 0.) {\n R = R / length(R);\n }\n\n // https://en.wikipedia.org/wiki/Blinn%E2%80%93Phong_shading_model\n vec3 h = L + V;\n vec3 H = h;\n if (length(h) > 0.) {\n H = H / length(h);\n }\n\n float dotLN = dot(L, N);\n float dotRV = dot(R, V);\n\n if (dotLN < 0.) {\n // Light not visible from this point on the surface\n return k_a;\n } \n\n if (dotRV < 0.) {\n // Light reflection in opposite direction as viewer, apply only diffuse\n // component\n return k_a + lightIntensity * (k_d * dotLN);\n }\n\n float specAngle = max(dot(H, normal), 0.0);\n float specular = pow(dotRV, shininess); //pow(specAngle, shininess); // \n return k_a + lightIntensity * (k_d * dotLN + k_s * specular);\n}\n\nfloat PI = 3.14159265358979323846264 * 00000.1; // PI\n\n// expects values in the range of [0,1]x[0,1], returns values in the [0,1] range.\n// do not collapse into a single function per: http://byteblacksmith.com/improvements-to-the-canonical-one-liner-glsl-rand-for-opengl-es-2-0/\nhighp float rand( const in vec2 uv) {\n const highp float a = 12.9898;\n const highp float b = 78.233;\n const highp float c = 43758.5453;\n highp float dt = dot(uv.xy, vec2(a, b)), sn = mod(dt, PI);\n return fract(sin(sn) * c);\n}\n\nvoid main(void) {\n const int maxSteps = 1024;\n\n // the ray\n vec3 rayOrigin = cameraPosition;\n vec3 rayDirection = normalize(vPos.xyz - rayOrigin);\n\n vec3 lightOrigin = uLightPositionInCamera == 1 ? cameraPosition : uLightPosition;\n\n // the Axe-Aligned B-Box\n vec3 AABBMin = vec3(uWorldBBox[0], uWorldBBox[2], uWorldBBox[4]);\n vec3 AABBMax = vec3(uWorldBBox[1], uWorldBBox[3], uWorldBBox[5]);\n\n // Intersection ray/bbox\n float tNear, tFar;\n bool intersect = false;\n ${shadersIntersectBox.api(\n this,\n 'rayOrigin',\n 'rayDirection',\n 'AABBMin',\n 'AABBMax',\n 'tNear',\n 'tFar',\n 'intersect'\n )}\n if (tNear < 0.0) tNear = 0.0;\n\n // x / y should be within o-1\n // should\n float offset = rand(gl_FragCoord.xy);\n\n // init the ray marching\n float tStep = (tFar - tNear) / float(uSteps);\n float tCurrent = tNear + offset * tStep;\n vec4 accumulatedColor = vec4(0.0);\n float accumulatedAlpha = 0.0;\n\n // MIP volume rendering\n float maxIntensity = 0.0;\n\n mat4 dataToWorld = inverse(uWorldToData);\n\n // rayOrigin -= rayDirection * 0.1; // gold_noise(vPos.xz, vPos.y) / 100.; \n\n for(int rayStep = 0; rayStep < maxSteps; rayStep++){\n vec3 currentPosition = rayOrigin + rayDirection * tCurrent;\n // some non-linear FUN\n // some occlusion issue to be fixed\n vec3 transformedPosition = currentPosition; //transformPoint(currentPosition, uAmplitude, uFrequence);\n // world to data coordinates\n // rounding trick\n // first center of first voxel in data space is CENTERED on (0,0,0)\n vec4 dataCoordinatesRaw = uWorldToData * vec4(transformedPosition, 1.0);\n vec3 currentVoxel = vec3(dataCoordinatesRaw.x, dataCoordinatesRaw.y, dataCoordinatesRaw.z);\n float intensity = 0.0;\n vec3 gradient = vec3(0., 0., 0.);\n getIntensity(currentVoxel, intensity, gradient);\n // map gradient to world space and normalize before using\n // we avoid to call \"normalize\" as it may be undefined if vector length == 0.\n gradient = (vec3(dataToWorld * vec4(gradient, 0.)));\n if (length(gradient) > 0.0) {\n gradient = normalize(gradient);\n }\n\n vec4 colorSample;\n float alphaSample;\n if(uLut == 1){\n vec4 colorFromLUT = texture2D( uTextureLUT, vec2( intensity, 1.0) );\n // 256 colors\n colorSample = colorFromLUT;\n alphaSample = colorFromLUT.a;\n }\n else{\n alphaSample = intensity;\n colorSample.r = colorSample.g = colorSample.b = intensity;\n }\n\n // ray marching algorithm\n // shading on\n // interpolation on\n if (uAlgorithm == 0 && uShading == 1 && uInterpolation != 0) {\n // && alphaSample > .3\n vec3 ambientComponent = uSampleColorToAmbient == 1 ? colorSample.xyz : uAmbientColor;\n ambientComponent *= uAmbient;\n vec3 diffuseComponent = uSampleColorToDiffuse == 1 ? colorSample.xyz : uDiffuseColor;\n diffuseComponent *= uDiffuse;\n vec3 specularComponent = uSpecular * uSpecularColor;\n float shininess = uShininess;\n vec3 vIntensity = uIntensity;\n\n colorSample.xyz += phongShading(\n ambientComponent,\n diffuseComponent,\n specularComponent,\n shininess,\n currentPosition.xyz,\n rayOrigin.xyz,\n lightOrigin.xyz,\n vIntensity,\n gradient);\n }\n\n alphaSample = 1.0 - pow((1.0- alphaSample),tStep*uAlphaCorrection);\n alphaSample *= (1.0 - accumulatedAlpha);\n\n accumulatedColor += alphaSample * colorSample;\n accumulatedAlpha += alphaSample;\n\n tCurrent += tStep;\n\n if (tCurrent > tFar || (uAlgorithm == 0 && accumulatedAlpha >= 1.0)) break;\n\n if (uAlgorithm == 1 && (intensity >= maxIntensity)) {\n maxIntensity = intensity;\n accumulatedColor = colorSample;\n accumulatedAlpha = 1.;\n }\n }\n\n gl_FragColor = vec4(accumulatedColor.xyz, accumulatedAlpha);\n}\n `;\n }\n\n compute() {\n let shaderInterpolation = '';\n // shaderInterpolation.inline(args) //true/false\n // shaderInterpolation.functions(args)\n\n return `\n// uniforms\n${this.uniforms()}\n\n// varying (should fetch it from vertex directly)\nvarying vec4 vPos;\n\n// tailored functions\n${this.functions()}\n\n// main loop\n${this._main}\n `;\n }\n}\n","import { Matrix4 } from 'three/src/math/Matrix4';\n\n/**\n * @module shaders/data\n */\nexport default class ShadersUniform {\n static uniforms() {\n return {\n uTextureSize: {\n type: 'i',\n value: 0,\n typeGLSL: 'int',\n },\n uTextureContainer: {\n type: 'tv',\n value: [],\n typeGLSL: 'sampler2D',\n length: 7,\n },\n uDataDimensions: {\n type: 'iv',\n value: [0, 0, 0],\n typeGLSL: 'ivec3',\n },\n uWorldToData: {\n type: 'm4',\n value: new Matrix4(),\n typeGLSL: 'mat4',\n },\n uWindowCenterWidth: {\n type: 'fv1',\n value: [0.0, 0.0],\n typeGLSL: 'float',\n length: 2,\n },\n uRescaleSlopeIntercept: {\n type: 'fv1',\n value: [0.0, 0.0],\n typeGLSL: 'float',\n length: 2,\n },\n uNumberOfChannels: {\n type: 'i',\n value: 1,\n typeGLSL: 'int',\n },\n uBitsAllocated: {\n type: 'i',\n value: 8,\n typeGLSL: 'int',\n },\n uInvert: {\n type: 'i',\n value: 0,\n typeGLSL: 'int',\n },\n uLut: {\n type: 'i',\n value: 0,\n typeGLSL: 'int',\n },\n uTextureLUT: {\n type: 't',\n value: [],\n typeGLSL: 'sampler2D',\n },\n uPixelType: {\n type: 'i',\n value: 0,\n typeGLSL: 'int',\n },\n uPackedPerPixel: {\n type: 'i',\n value: 1,\n typeGLSL: 'int',\n },\n uInterpolation: {\n type: 'i',\n value: 1,\n typeGLSL: 'int',\n },\n uWorldBBox: {\n type: 'fv1',\n value: [0.0, 0.0, 0.0, 0.0, 0.0, 0.0],\n typeGLSL: 'float',\n length: 6,\n },\n uSteps: {\n type: 'i',\n value: 256,\n typeGLSL: 'int',\n },\n uAlphaCorrection: {\n type: 'f',\n value: 0.5,\n typeGLSL: 'float',\n },\n uFrequence: {\n type: 'f',\n value: 0,\n typeGLSL: 'float',\n },\n uAmplitude: {\n type: 'f',\n value: 0,\n typeGLSL: 'float',\n },\n uShading: {\n type: 'i',\n value: 1,\n typeGLSL: 'int',\n },\n uAmbient: {\n type: 'f',\n value: 0.1,\n typeGLSL: 'float',\n },\n uAmbientColor: {\n type: 'v3',\n value: [1.0, 1.0, 0.0],\n typeGLSL: 'vec3',\n },\n uSampleColorToAmbient: {\n type: 'i',\n value: 1,\n typeGLSL: 'int',\n },\n uSpecular: {\n type: 'f',\n value: 1,\n typeGLSL: 'float',\n },\n uSpecularColor: {\n type: 'v3',\n value: [1.0, 1.0, 1.0],\n typeGLSL: 'vec3',\n },\n uDiffuse: {\n type: 'f',\n value: 0.3,\n typeGLSL: 'float',\n },\n uDiffuseColor: {\n type: 'v3',\n value: [1.0, 1.0, 0.0],\n typeGLSL: 'vec3',\n },\n uSampleColorToDiffuse: {\n type: 'i',\n value: 1,\n typeGLSL: 'int',\n },\n uShininess: {\n type: 'f',\n value: 5,\n typeGLSL: 'float',\n },\n uLightPosition: {\n type: 'v3',\n value: [0.0, 0.0, 0.0],\n typeGLSL: 'vec3',\n },\n uLightPositionInCamera: {\n type: 'i',\n value: 1,\n typeGLSL: 'int',\n },\n uIntensity: {\n type: 'v3',\n value: [0.8, 0.8, 0.8],\n typeGLSL: 'vec3',\n },\n uAlgorithm: {\n type: 'i',\n value: 0,\n typeGLSL: 'int',\n },\n };\n }\n}\n","export default class ShadersVertex {\n compute() {\n return `\nvarying vec4 vPos;\n\n//\n// main\n//\nvoid main() {\n\n vPos = modelMatrix * vec4(position, 1.0 );\n gl_Position = projectionMatrix * modelViewMatrix * vec4(position, 1.0 );\n\n}\n `;\n }\n}\n","import { widgetsBase } from './widgets.base';\nimport { widgetsHandle as widgetsHandleFactory } from './widgets.handle';\n\n/**\n * @module widgets/angle\n */\nconst widgetsAngle = (three = window.THREE) => {\n if (three === undefined || three.Object3D === undefined) {\n return null;\n }\n\n const Constructor = widgetsBase(three);\n return class extends Constructor {\n constructor(targetMesh, controls, params = {}) {\n super(targetMesh, controls, params);\n\n this._widgetType = 'Angle';\n\n // incoming parameters (optional: worldPosition)\n\n // outgoing values\n this._opangle = null;\n\n this._moving = false;\n this._domHovered = false;\n this._defaultAngle = true;\n\n // mesh stuff\n this._material = null;\n this._geometry = null;\n this._mesh = null;\n\n // dom stuff\n this._line = null;\n this._line2 = null;\n this._label = null;\n\n // add handles\n this._handles = [];\n\n let handle;\n const WidgetsHandle = widgetsHandleFactory(three);\n for (let i = 0; i < 3; i++) {\n handle = new WidgetsHandle(targetMesh, controls, params);\n this.add(handle);\n this._handles.push(handle);\n }\n this._handles[1].active = true;\n this._handles[1].tracking = true;\n this._handles[2].active = true;\n this._handles[2].tracking = true;\n\n this._moveHandle = new WidgetsHandle(targetMesh, controls, params);\n this.add(this._moveHandle);\n this._handles.push(this._moveHandle);\n this._moveHandle.hide();\n\n this.create();\n\n this.onMove = this.onMove.bind(this);\n this.onHover = this.onHover.bind(this);\n this.addEventListeners();\n }\n\n addEventListeners() {\n this._container.addEventListener('wheel', this.onMove);\n\n this._line.addEventListener('mouseenter', this.onHover);\n this._line.addEventListener('mouseleave', this.onHover);\n this._line2.addEventListener('mouseenter', this.onHover);\n this._line2.addEventListener('mouseleave', this.onHover);\n this._label.addEventListener('mouseenter', this.onHover);\n this._label.addEventListener('mouseleave', this.onHover);\n }\n\n removeEventListeners() {\n this._container.removeEventListener('wheel', this.onMove);\n\n this._line.removeEventListener('mouseenter', this.onHover);\n this._line.removeEventListener('mouseleave', this.onHover);\n this._line2.removeEventListener('mouseenter', this.onHover);\n this._line2.removeEventListener('mouseleave', this.onHover);\n this._label.removeEventListener('mouseenter', this.onHover);\n this._label.removeEventListener('mouseleave', this.onHover);\n }\n\n onHover(evt) {\n if (evt) {\n this.hoverDom(evt);\n }\n\n this.hoverMesh();\n\n this._hovered =\n this._handles[0].hovered ||\n this._handles[1].hovered ||\n this._handles[2].hovered ||\n this._domHovered;\n this._container.style.cursor = this._hovered ? 'pointer' : 'default';\n }\n\n hoverMesh() {\n // check raycast intersection, do we want to hover on mesh or just css?\n }\n\n hoverDom(evt) {\n this._domHovered = evt.type === 'mouseenter';\n }\n\n onStart(evt) {\n this._moveHandle.onMove(evt, true);\n\n this._handles[0].onStart(evt);\n this._handles[1].onStart(evt);\n this._handles[2].onStart(evt);\n\n this._active =\n this._handles[0].active ||\n this._handles[1].active ||\n this._handles[2].active ||\n this._domHovered;\n\n if (this._domHovered && !this._handles[1].tracking && !this._handles[2].tracking) {\n this._moving = true;\n this._controls.enabled = false;\n }\n\n this.update();\n }\n\n onMove(evt) {\n if (this._active) {\n const prevPosition = this._moveHandle.worldPosition.clone();\n\n this._dragged = true;\n this._moveHandle.onMove(evt, true);\n\n if (this._moving) {\n this._handles.slice(0, -1).forEach(handle => {\n handle.worldPosition.add(this._moveHandle.worldPosition.clone().sub(prevPosition));\n });\n }\n } else {\n this.onHover(null);\n }\n\n this._handles[0].onMove(evt);\n this._handles[1].onMove(evt);\n this._handles[2].onMove(evt);\n\n this.update();\n }\n\n onEnd() {\n this._handles[0].onEnd(); // First Handle\n\n if (\n (this._handles[1].tracking &&\n this._handles[0].screenPosition.distanceTo(this._handles[1].screenPosition) < 10) ||\n (!this._handles[1].tracking &&\n this._handles[2].tracking &&\n this._handles[1].screenPosition.distanceTo(this._handles[2].screenPosition) < 10)\n ) {\n return;\n }\n\n if (!this._dragged && this._active && !this._handles[2].tracking) {\n this._selected = !this._selected; // change state if there was no dragging\n this._handles[0].selected = this._selected;\n }\n\n // Third Handle\n if (this._handles[1].active) {\n this._handles[2].onEnd();\n } else if (this._dragged || !this._handles[2].tracking) {\n this._handles[2].tracking = false;\n this._handles[2].onEnd();\n } else {\n this._handles[2].tracking = false;\n }\n this._handles[2].selected = this._selected;\n\n // Second Handle\n if (this._dragged || !this._handles[1].tracking) {\n this._handles[1].tracking = false;\n this._handles[1].onEnd();\n } else {\n this._handles[1].tracking = false;\n }\n this._handles[1].selected = this._selected;\n\n this._active = this._handles[0].active || this._handles[1].active || this._handles[2].active;\n this._dragged = this._handles[2].tracking;\n this._moving = false;\n this.update();\n }\n\n create() {\n this.createMesh();\n this.createDOM();\n }\n\n createMesh() {\n // geometry\n this._geometry = new three.Geometry();\n this._geometry.vertices = [\n this._handles[0].worldPosition,\n this._handles[1].worldPosition,\n this._handles[1].worldPosition,\n this._handles[2].worldPosition,\n ];\n\n // material\n this._material = new three.LineBasicMaterial();\n\n this.updateMeshColor();\n\n // mesh\n this._mesh = new three.LineSegments(this._geometry, this._material);\n this._mesh.visible = true;\n this.add(this._mesh);\n }\n\n createDOM() {\n this._line = document.createElement('div');\n this._line.className = 'widgets-line';\n this._container.appendChild(this._line);\n\n this._line2 = document.createElement('div');\n this._line2.className = 'widgets-line';\n this._container.appendChild(this._line2);\n\n this._label = document.createElement('div');\n this._label.className = 'widgets-label';\n this._container.appendChild(this._label);\n\n this.updateDOMColor();\n }\n\n hideDOM() {\n this._line.style.display = 'none';\n this._line2.style.display = 'none';\n this._label.style.display = 'none';\n\n this._handles.forEach(elem => elem.hideDOM());\n }\n\n showDOM() {\n this._line.style.display = '';\n this._line2.style.display = '';\n this._label.style.display = '';\n\n this._handles[0].showDOM();\n this._handles[1].showDOM();\n this._handles[2].showDOM();\n }\n\n update() {\n this.updateColor();\n\n this._handles[0].update();\n this._handles[1].update();\n this._handles[2].update();\n\n // calculate values\n this._opangle =\n (this._handles[1].worldPosition\n .clone()\n .sub(this._handles[0].worldPosition)\n .angleTo(this._handles[1].worldPosition.clone().sub(this._handles[2].worldPosition)) *\n 180) /\n Math.PI || 0.0;\n this._opangle = this._defaultAngle ? this._opangle : 360 - this._opangle;\n\n this.updateMeshColor();\n this.updateMeshPosition();\n\n this.updateDOM();\n }\n\n updateMeshColor() {\n if (this._material) {\n this._material.color.set(this._color);\n }\n }\n\n updateMeshPosition() {\n if (this._geometry) {\n this._geometry.verticesNeedUpdate = true;\n }\n }\n\n updateDOM() {\n this.updateDOMColor();\n\n // update first line\n const lineData = this.getLineData(\n this._handles[1].screenPosition,\n this._handles[0].screenPosition\n );\n\n this._line.style.transform = `translate3D(${lineData.transformX}px, ${\n lineData.transformY\n }px, 0)\n rotate(${lineData.transformAngle}rad)`;\n this._line.style.width = lineData.length + 'px';\n\n // update second line\n const line2Data = this.getLineData(\n this._handles[1].screenPosition,\n this._handles[2].screenPosition\n );\n\n this._line2.style.transform = `translate3D(${line2Data.transformX}px, ${\n line2Data.transformY\n }px, 0)\n rotate(${line2Data.transformAngle}rad)`;\n this._line2.style.width = line2Data.length + 'px';\n\n // update angle and label\n this._label.innerHTML = `${this._opangle.toFixed(2)}°`;\n\n let paddingNormVector = lineData.line\n .clone()\n .add(line2Data.line)\n .normalize()\n .negate();\n let normAngle = paddingNormVector.angleTo(new three.Vector3(1, 0, 0));\n\n if (normAngle > Math.PI / 2) {\n normAngle = Math.PI - normAngle;\n }\n\n const labelPadding =\n Math.tan(normAngle) < this._label.offsetHeight / this._label.offsetWidth\n ? this._label.offsetWidth / 2 / Math.cos(normAngle) + 15 // 15px padding\n : this._label.offsetHeight / 2 / Math.cos(Math.PI / 2 - normAngle) + 15;\n const paddingPoint = this._handles[1].screenPosition\n .clone()\n .add(paddingNormVector.multiplyScalar(labelPadding));\n const transform = this.adjustLabelTransform(this._label, paddingPoint);\n\n this._label.style.transform = `translate3D(${transform.x}px, ${transform.y}px, 0)`;\n }\n\n updateDOMColor() {\n this._line.style.backgroundColor = this._color;\n this._line2.style.backgroundColor = this._color;\n this._label.style.borderColor = this._color;\n }\n\n free() {\n this.removeEventListeners();\n\n this._handles.forEach(h => {\n this.remove(h);\n h.free();\n });\n this._handles = [];\n\n this._container.removeChild(this._line);\n this._container.removeChild(this._line2);\n this._container.removeChild(this._label);\n\n // mesh, geometry, material\n this.remove(this._mesh);\n this._mesh.geometry.dispose();\n this._mesh.geometry = null;\n this._mesh.material.dispose();\n this._mesh.material = null;\n this._mesh = null;\n this._geometry.dispose();\n this._geometry = null;\n this._material.vertexShader = null;\n this._material.fragmentShader = null;\n this._material.uniforms = null;\n this._material.dispose();\n this._material = null;\n\n super.free();\n }\n\n toggleDefaultAngle() {\n this._defaultAngle = !this._defaultAngle;\n }\n\n get targetMesh() {\n return this._targetMesh;\n }\n\n set targetMesh(targetMesh) {\n this._targetMesh = targetMesh;\n this._handles.forEach(elem => (elem.targetMesh = targetMesh));\n this.update();\n }\n\n get worldPosition() {\n return this._worldPosition;\n }\n\n set worldPosition(worldPosition) {\n this._handles[0].worldPosition.copy(worldPosition);\n this._handles[1].worldPosition.copy(worldPosition);\n this._handles[2].worldPosition.copy(worldPosition);\n this._worldPosition.copy(worldPosition);\n this.update();\n }\n\n get angle() {\n return this._opangle;\n }\n };\n};\n\nexport { widgetsAngle };\nexport default widgetsAngle();\n","import { widgetsBase } from './widgets.base';\nimport { widgetsHandle as widgetsHandleFactory } from './widgets.handle';\n\n/**\n * @module widgets/annotation\n * @todo: add option to show only label (without mesh, dots and lines)\n */\nconst widgetsAnnotation = (three = window.THREE) => {\n if (three === undefined || three.Object3D === undefined) {\n return null;\n }\n\n const Constructor = widgetsBase(three);\n return class extends Constructor {\n constructor(targetMesh, controls, params = {}) {\n super(targetMesh, controls, params);\n\n this._widgetType = 'Annotation';\n\n // incoming parameters (optional: worldPosition)\n\n this._initialized = false; // set to true when the name of the label is entered\n this._movinglabel = null; // bool that turns true when the label is moving with the mouse\n this._labelmoved = false; // bool that turns true once the label is moved by the user (at least once)\n this._labelhovered = false;\n this._manuallabeldisplay = false; // Make true to force the label to be displayed\n\n // mesh stuff\n this._material = null;\n this._geometry = null;\n this._meshline = null;\n this._cone = null;\n\n // dom stuff\n this._line = null;\n this._dashline = null;\n this._label = null;\n this._labeltext = null;\n\n // var\n this._labelOffset = new three.Vector3(); // difference between label center and second handle\n this._mouseLabelOffset = new three.Vector3(); // difference between mouse coordinates and label center\n\n // add handles\n this._handles = [];\n\n let handle;\n const WidgetsHandle = widgetsHandleFactory(three);\n for (let i = 0; i < 2; i++) {\n handle = new WidgetsHandle(targetMesh, controls, params);\n this.add(handle);\n this._handles.push(handle);\n }\n this._handles[1].active = true;\n\n this.create();\n this.initOffsets();\n\n this.onResize = this.onResize.bind(this);\n this.onMove = this.onMove.bind(this);\n this.onHoverlabel = this.onHoverlabel.bind(this);\n this.notonHoverlabel = this.notonHoverlabel.bind(this);\n this.changelabeltext = this.changelabeltext.bind(this);\n\n this.addEventListeners();\n }\n\n addEventListeners() {\n window.addEventListener('resize', this.onResize);\n\n this._label.addEventListener('mouseenter', this.onHoverlabel);\n this._label.addEventListener('mouseleave', this.notonHoverlabel);\n this._label.addEventListener('dblclick', this.changelabeltext);\n\n this._container.addEventListener('wheel', this.onMove);\n }\n\n removeEventListeners() {\n window.removeEventListener('resize', this.onResize);\n\n this._label.removeEventListener('mouseenter', this.onHoverlabel);\n this._label.removeEventListener('mouseleave', this.notonHoverlabel);\n this._label.removeEventListener('dblclick', this.changelabeltext);\n\n this._container.removeEventListener('wheel', this.onMove);\n }\n\n onResize() {\n this.initOffsets();\n }\n\n onHoverlabel() {\n // this function is called when mouse enters the label with \"mouseenter\" event\n this._labelhovered = true;\n this._container.style.cursor = 'pointer';\n }\n\n notonHoverlabel() {\n // this function is called when mouse leaves the label with \"mouseleave\" event\n this._labelhovered = false;\n this._container.style.cursor = 'default';\n }\n\n onStart(evt) {\n if (this._labelhovered) {\n // if label hovered then it should be moved\n // save mouse coordinates offset from label center\n const offsets = this.getMouseOffsets(evt, this._container);\n const paddingPoint = this._handles[1].screenPosition.clone().sub(this._labelOffset);\n\n this._mouseLabelOffset = new three.Vector3(\n offsets.screenX - paddingPoint.x,\n offsets.screenY - paddingPoint.y,\n 0\n );\n this._movinglabel = true;\n this._labelmoved = true;\n }\n\n this._handles[0].onStart(evt);\n this._handles[1].onStart(evt);\n\n this._active = this._handles[0].active || this._handles[1].active || this._labelhovered;\n\n this.update();\n }\n\n onMove(evt) {\n if (this._movinglabel) {\n const offsets = this.getMouseOffsets(evt, this._container);\n\n this._labelOffset = new three.Vector3(\n this._handles[1].screenPosition.x - offsets.screenX + this._mouseLabelOffset.x,\n this._handles[1].screenPosition.y - offsets.screenY + this._mouseLabelOffset.y,\n 0\n );\n this._controls.enabled = false;\n }\n\n if (this._active) {\n this._dragged = true;\n }\n\n this._handles[0].onMove(evt);\n this._handles[1].onMove(evt);\n\n this._hovered = this._handles[0].hovered || this._handles[1].hovered || this._labelhovered;\n\n this.update();\n }\n\n onEnd() {\n this._handles[0].onEnd(); // First Handle\n\n // Second Handle\n if (this._dragged || !this._handles[1].tracking) {\n this._handles[1].tracking = false;\n this._handles[1].onEnd();\n } else {\n this._handles[1].tracking = false;\n }\n\n if (!this._dragged && this._active && this._initialized) {\n this._selected = !this._selected; // change state if there was no dragging\n this._handles[0].selected = this._selected;\n this._handles[1].selected = this._selected;\n }\n\n if (!this._initialized) {\n this._labelOffset = this._handles[1].screenPosition\n .clone()\n .sub(this._handles[0].screenPosition)\n .multiplyScalar(0.5);\n this.setlabeltext();\n this._initialized = true;\n }\n\n this._active = this._handles[0].active || this._handles[1].active;\n this._dragged = false;\n this._movinglabel = false;\n this.update();\n }\n\n setlabeltext() {\n // called when the user creates a new arrow\n while (!this._labeltext) {\n this._labeltext = prompt('Please enter the annotation text', '');\n }\n this.displaylabel();\n }\n\n changelabeltext() {\n // called when the user does double click in the label\n this._labeltext = prompt('Please enter a new annotation text', this._label.innerHTML);\n this.displaylabel();\n }\n\n displaylabel() {\n this._label.innerHTML =\n typeof this._labeltext === 'string' && this._labeltext.length > 0 // avoid error\n ? this._labeltext\n : ''; // empty string is passed or Cancel is pressed\n // show the label (in css an empty string is used to revert display=none)\n this._label.style.display = '';\n this._dashline.style.display = '';\n this._label.style.transform = `translate3D(\n ${this._handles[1].screenPosition.x - this._labelOffset.x - this._label.offsetWidth / 2}px,\n ${this._handles[1].screenPosition.y -\n this._labelOffset.y -\n this._label.offsetHeight / 2 -\n this._container.offsetHeight}px, 0)`;\n }\n\n create() {\n this.createMesh();\n this.createDOM();\n }\n\n createMesh() {\n // material\n this._material = new three.LineBasicMaterial();\n\n this.updateMeshColor();\n\n // line geometry\n this._geometry = new three.Geometry();\n this._geometry.vertices.push(this._handles[0].worldPosition);\n this._geometry.vertices.push(this._handles[1].worldPosition);\n\n // line mesh\n this._meshline = new three.Line(this._geometry, this._material);\n this._meshline.visible = true;\n\n this.add(this._meshline);\n\n // cone geometry\n this._conegeometry = new three.CylinderGeometry(0, 2, 10);\n this._conegeometry.translate(0, -5, 0);\n this._conegeometry.rotateX(-Math.PI / 2);\n\n // cone mesh\n this._cone = new three.Mesh(this._conegeometry, this._material);\n this._cone.visible = true;\n\n this.add(this._cone);\n }\n\n createDOM() {\n this._line = document.createElement('div');\n this._line.className = 'widgets-line';\n this._container.appendChild(this._line);\n\n this._dashline = document.createElement('div');\n this._dashline.className = 'widgets-dashline';\n this._dashline.style.display = 'none';\n this._container.appendChild(this._dashline);\n\n this._label = document.createElement('div');\n this._label.className = 'widgets-label';\n this._label.style.display = 'none';\n this._container.appendChild(this._label);\n\n this.updateDOMColor();\n }\n\n update() {\n this.updateColor();\n\n this._handles[0].update();\n this._handles[1].update();\n\n this.updateMeshColor();\n this.updateMeshPosition();\n\n this.updateDOM();\n }\n\n updateMeshColor() {\n if (this._material) {\n this._material.color.set(this._color);\n }\n }\n\n updateMeshPosition() {\n if (this._geometry) {\n this._geometry.verticesNeedUpdate = true;\n }\n\n if (this._cone) {\n this._cone.position.copy(this._handles[1].worldPosition);\n this._cone.lookAt(this._handles[0].worldPosition);\n }\n }\n\n updateDOM() {\n this.updateDOMColor();\n\n // update line\n const lineData = this.getLineData(\n this._handles[0].screenPosition,\n this._handles[1].screenPosition\n );\n\n this._line.style.transform = `translate3D(${lineData.transformX}px, ${\n lineData.transformY\n }px, 0)\n rotate(${lineData.transformAngle}rad)`;\n this._line.style.width = lineData.length + 'px';\n\n // update label\n const paddingVector = lineData.line.multiplyScalar(0.5);\n const paddingPoint = this._handles[1].screenPosition.clone().sub(\n this._labelmoved\n ? this._labelOffset // if the label is moved, then its position is defined by labelOffset\n : paddingVector\n ); // otherwise it's placed in the center of the line\n const labelPosition = this.adjustLabelTransform(this._label, paddingPoint);\n\n this._label.style.transform = `translate3D(${labelPosition.x}px, ${labelPosition.y}px, 0)`;\n\n // create the label without the interaction of the user. Useful when we need to create the label manually\n if (this._manuallabeldisplay) {\n this.displaylabel();\n }\n\n // update dash line\n let minLine = this.getLineData(this._handles[0].screenPosition, paddingPoint);\n let lineCL = this.getLineData(lineData.center, paddingPoint);\n let line1L = this.getLineData(this._handles[1].screenPosition, paddingPoint);\n\n if (minLine.length > lineCL.length) {\n minLine = lineCL;\n }\n if (minLine.length > line1L.length) {\n minLine = line1L;\n }\n\n this._dashline.style.transform = `translate3D(${minLine.transformX}px, ${\n minLine.transformY\n }px, 0)\n rotate(${minLine.transformAngle}rad)`;\n this._dashline.style.width = minLine.length + 'px';\n }\n\n updateDOMColor() {\n this._line.style.backgroundColor = this._color;\n this._dashline.style.borderTop = '1.5px dashed ' + this._color;\n this._label.style.borderColor = this._color;\n }\n\n hideDOM() {\n this._line.style.display = 'none';\n this._dashline.style.display = 'none';\n this._label.style.display = 'none';\n this._handles.forEach(elem => elem.hideDOM());\n }\n\n showDOM() {\n this._line.style.display = '';\n this._dashline.style.display = '';\n this._label.style.display = '';\n this._handles.forEach(elem => elem.showDOM());\n }\n\n free() {\n this.removeEventListeners();\n\n this._handles.forEach(h => {\n this.remove(h);\n h.free();\n });\n this._handles = [];\n\n this._container.removeChild(this._line);\n this._container.removeChild(this._dashline);\n this._container.removeChild(this._label);\n\n // mesh, geometry, material\n this.remove(this._meshline);\n this._meshline.geometry.dispose();\n this._meshline.geometry = null;\n this._meshline.material.dispose();\n this._meshline.material = null;\n this._meshline = null;\n this._geometry.dispose();\n this._geometry = null;\n this._material.vertexShader = null;\n this._material.fragmentShader = null;\n this._material.uniforms = null;\n this._material.dispose();\n this._material = null;\n this.remove(this._cone);\n this._cone.geometry.dispose();\n this._cone.geometry = null;\n this._cone.material.dispose();\n this._cone.material = null;\n this._cone = null;\n this._conegeometry.dispose();\n this._conegeometry = null;\n\n super.free();\n }\n\n get targetMesh() {\n return this._targetMesh;\n }\n\n set targetMesh(targetMesh) {\n this._targetMesh = targetMesh;\n this._handles.forEach(elem => (elem.targetMesh = targetMesh));\n this.update();\n }\n\n get worldPosition() {\n return this._worldPosition;\n }\n\n set worldPosition(worldPosition) {\n this._handles[0].worldPosition.copy(worldPosition);\n this._handles[1].worldPosition.copy(worldPosition);\n this._worldPosition.copy(worldPosition);\n this.update();\n }\n };\n};\n\nexport { widgetsAnnotation };\nexport default widgetsAnnotation();\n","import WidgetsCss from './widgets.css';\n\nimport {COLORS} from '../core/core.colors';\nimport CoreUtils from '../core/core.utils';\n\ninterface WidgetParameter {\n calibrationFactor: number;\n frameIndex: number;\n hideMesh: boolean;\n hideHandleMesh: boolean;\n ijk2LPS: THREE.Matrix4;\n lps2IJK: THREE.Matrix4;\n pixelSpacing: number;\n stack: {};\n ultrasoundRegions: Array<{}>;\n worldPosition: THREE.Vector3;\n}\n\ninterface USRegion {\n x0: number;\n x1: number;\n y0: number;\n y1: number;\n axisX: number;\n axisY: number;\n deltaX: number;\n deltaY: number;\n}\n\n/**\n * @module Abstract Widget\n */\n// tslint:disable-next-line\nconst widgetsBase = (three = (window as any).THREE) => {\n if (three === undefined || three.Object3D === undefined) {\n return null;\n }\n\n const Constructor = three.Object3D;\n return class extends Constructor {\n constructor(targetMesh: THREE.Mesh, controls: THREE.OrbitControls, params: WidgetParameter) {\n super();\n\n this._widgetType = 'Base';\n\n this._params = params;\n if (params.hideMesh === true) {\n this.visible = false;\n }\n\n const elementStyle = document.getElementById('ami-widgets');\n if (elementStyle === null) {\n const styleEl = document.createElement('style');\n styleEl.id = 'ami-widgets';\n styleEl.innerHTML = WidgetsCss.code;\n document.head.appendChild(styleEl);\n }\n\n this._enabled = true;\n this._selected = false;\n this._hovered = true;\n this._active = true;\n\n this._colors = {\n default: COLORS.blue,\n active: COLORS.yellow,\n hover: COLORS.red,\n select: COLORS.green,\n text: COLORS.white,\n error: COLORS.lightRed,\n };\n this._color = this._colors.default;\n\n this._dragged = false;\n // can not call it visible because it conflicts with THREE.Object3D\n this._displayed = true;\n\n this._targetMesh = targetMesh;\n this._controls = controls;\n this._camera = controls.object;\n this._container = controls.domElement;\n\n this._worldPosition = new three.Vector3(); // LPS position\n if (params.worldPosition) {\n this._worldPosition.copy(params.worldPosition);\n } else if (this._targetMesh !== null) {\n this._worldPosition.copy(this._targetMesh.position);\n }\n }\n\n public initOffsets() {\n const box = this._container.getBoundingClientRect();\n\n const body = document.body;\n const docEl = document.documentElement;\n\n const scrollTop = window.pageYOffset || docEl.scrollTop || body.scrollTop;\n const scrollLeft = window.pageXOffset || docEl.scrollLeft || body.scrollLeft;\n\n const clientTop = docEl.clientTop || body.clientTop || 0;\n const clientLeft = docEl.clientLeft || body.clientLeft || 0;\n\n this._offsets = {\n top: Math.round(box.top + scrollTop - clientTop),\n left: Math.round(box.left + scrollLeft - clientLeft),\n };\n }\n\n public getMouseOffsets(event: MouseEvent, container: HTMLDivElement) {\n return {\n x: ((event.clientX - this._offsets.left) / container.offsetWidth) * 2 - 1,\n y: -((event.clientY - this._offsets.top) / container.offsetHeight) * 2 + 1,\n screenX: event.clientX - this._offsets.left,\n screenY: event.clientY - this._offsets.top,\n };\n }\n\n /**\n * Get area of polygon.\n *\n * @param {Array} points Ordered vertices' coordinates\n *\n * @returns {Number}\n */\n public getArea(points: THREE.Vector3[]) {\n let area = 0;\n let j = points.length - 1; // the last vertex is the 'previous' one to the first\n\n for (let i = 0; i < points.length; i++) {\n area += (points[j].x + points[i].x) * (points[j].y - points[i].y);\n j = i; // j is the previous vertex to i\n }\n\n return Math.abs(area / 2);\n }\n\n /**\n * Get index of ultrasound region by data coordinates.\n *\n * @param {Array} regions US regions\n * @param {Vector3} point Data coordinates\n *\n * @returns {Number|null}\n */\n public getRegionByXY(regions: USRegion[], point: THREE.Vector3) {\n let result = null;\n\n regions.some((region, ind) => {\n if (\n point.x >= region.x0 &&\n point.x <= region.x1 &&\n point.y >= region.y0 &&\n point.y <= region.y1\n ) {\n result = ind;\n\n return true;\n }\n });\n\n return result;\n }\n\n /**\n * Get point inside ultrasound region by data coordinates.\n *\n * @param {Object} region US region data\n * @param {Vector3} point Data coordinates\n *\n * @returns {Vector2|null}\n */\n public getPointInRegion(region: USRegion, point: THREE.Vector3) {\n if (!region) {\n return null;\n }\n\n return new three.Vector2(\n (point.x - region.x0 - (region.axisX || 0)) * region.deltaX,\n (point.y - region.y0 - (region.axisY || 0)) * region.deltaY\n );\n }\n\n /**\n * Get point's ultrasound coordinates by data coordinates.\n *\n * @param {Array} regions US regions\n * @param {Vector3} point Data coordinates\n *\n * @returns {Vector2|null}\n */\n public getUsPoint(regions: USRegion[], point: THREE.Vector3) {\n return this.getPointInRegion(regions[this.getRegionByXY(regions, point)], point);\n }\n\n /**\n * Get distance between points inside ultrasound region.\n *\n * @param {Vector3} pointA Begin data coordinates\n * @param {Vector3} pointB End data coordinates\n *\n * @returns {Number|null}\n */\n public getUsDistance(pointA: THREE.Vector3, pointB: THREE.Vector3) {\n const regions = this._params.ultrasoundRegions || [];\n\n if (regions.length < 1) {\n return null;\n }\n\n const regionA = this.getRegionByXY(regions, pointA);\n const regionB = this.getRegionByXY(regions, pointB);\n\n if (\n regionA === null ||\n regionB === null ||\n regionA !== regionB ||\n regions[regionA].unitsX !== 'cm' ||\n regions[regionA].unitsY !== 'cm'\n ) {\n return null;\n }\n\n return this.getPointInRegion(regions[regionA], pointA).distanceTo(\n this.getPointInRegion(regions[regionA], pointB)\n );\n }\n\n /**\n * Get distance between points\n *\n * @param {Vector3} pointA Begin world coordinates\n * @param {Vector3} pointB End world coordinates\n * @param {number} cf Calibration factor\n *\n * @returns {Object}\n */\n public getDistanceData(pointA: THREE.Vector3, pointB: THREE.Vector3, calibrationFactor: number) {\n let distance = null;\n let units = null;\n\n if (calibrationFactor) {\n distance = pointA.distanceTo(pointB) * calibrationFactor;\n } else if (this._params.ultrasoundRegions && this._params.lps2IJK) {\n const usDistance = this.getUsDistance(\n CoreUtils.worldToData(this._params.lps2IJK, pointA),\n CoreUtils.worldToData(this._params.lps2IJK, pointB)\n );\n\n if (usDistance !== null) {\n distance = usDistance * 10;\n units = 'mm';\n } else {\n distance = pointA.distanceTo(pointB);\n units = this._params.pixelSpacing ? 'mm' : 'units';\n }\n } else {\n distance = pointA.distanceTo(pointB);\n }\n\n return {\n distance,\n units,\n };\n }\n\n public getLineData(pointA: THREE.Vector3, pointB: THREE.Vector3) {\n const line = pointB.clone().sub(pointA);\n const center = pointB\n .clone()\n .add(pointA)\n .multiplyScalar(0.5);\n const length = line.length();\n const angle = line.angleTo(new three.Vector3(1, 0, 0));\n\n return {\n line,\n length,\n transformX: center.x - length / 2,\n transformY: center.y - this._container.offsetHeight,\n transformAngle: pointA.y < pointB.y ? angle : -angle,\n center,\n };\n }\n\n public getRectData(pointA: THREE.Vector3, pointB: THREE.Vector3) {\n const line = pointB.clone().sub(pointA);\n const vertical = line.clone().projectOnVector(new three.Vector3(0, 1, 0));\n const min = pointA.clone().min(pointB); // coordinates of the top left corner\n\n return {\n width: line\n .clone()\n .projectOnVector(new three.Vector3(1, 0, 0))\n .length(),\n height: vertical.length(),\n transformX: min.x,\n transformY: min.y - this._container.offsetHeight,\n paddingVector: vertical.clone().normalize(),\n };\n }\n\n /**\n * @param {HTMLElement} label\n * @param {Vector3} point label's center coordinates (default)\n * @param {Boolean} corner if true, then point is the label's top left corner coordinates\n */\n public adjustLabelTransform(label: HTMLDivElement, point: THREE.Vector3, corner: boolean) {\n let x = Math.round(point.x - (corner ? 0 : label.offsetWidth / 2));\n let y =\n Math.round(point.y - (corner ? 0 : label.offsetHeight / 2)) - this._container.offsetHeight;\n\n if (x < 0) {\n x = x > -label.offsetWidth ? 0 : x + label.offsetWidth;\n } else if (x > this._container.offsetWidth - label.offsetWidth) {\n x =\n x < this._container.offsetWidth\n ? this._container.offsetWidth - label.offsetWidth\n : x - label.offsetWidth;\n }\n\n if (y < -this._container.offsetHeight) {\n y =\n y > -this._container.offsetHeight - label.offsetHeight\n ? -this._container.offsetHeight\n : y + label.offsetHeight;\n } else if (y > -label.offsetHeight) {\n y = y < 0 ? -label.offsetHeight : y - label.offsetHeight;\n }\n\n return new three.Vector2(x, y);\n }\n\n public worldToScreen(worldCoordinate: THREE.Vector3) {\n const screenCoordinates = worldCoordinate.clone();\n screenCoordinates.project(this._camera);\n\n screenCoordinates.x = Math.round(\n ((screenCoordinates.x + 1) * this._container.offsetWidth) / 2\n );\n screenCoordinates.y = Math.round(\n ((-screenCoordinates.y + 1) * this._container.offsetHeight) / 2\n );\n screenCoordinates.z = 0;\n\n return screenCoordinates;\n }\n\n public update() {\n // to be overloaded\n window.console.log('update() should be overloaded!');\n }\n\n public updateColor() {\n if (this._active) {\n this._color = this._colors.active;\n } else if (this._hovered) {\n this._color = this._colors.hover;\n } else if (this._selected) {\n this._color = this._colors.select;\n } else {\n this._color = this._colors.default;\n }\n }\n\n // tslint:disable-next-line\n public setDefaultColor(color: any) {\n this._colors.default = color;\n if (this._handles) {\n this._handles.forEach(elem => (elem._colors.default = color));\n }\n this.update();\n }\n\n public show() {\n this.showDOM();\n this.showMesh();\n this.update();\n this._displayed = true;\n }\n\n public hide() {\n this.hideDOM();\n this.hideMesh();\n this._displayed = false;\n }\n\n public hideDOM() {\n // to be overloaded\n window.console.log('hideDOM() should be overloaded!');\n }\n\n public showDOM() {\n // to be overloaded\n window.console.log('showDOM() should be overloaded!');\n }\n\n public hideMesh() {\n this.visible = false;\n }\n\n public showMesh() {\n if (this._params.hideMesh === true) {\n return;\n }\n\n this.visible = true;\n }\n\n public free() {\n this._camera = null;\n this._container = null;\n this._controls = null;\n this._params = null;\n this._targetMesh = null;\n }\n\n get widgetType() {\n return this._widgetType;\n }\n\n get targetMesh() {\n return this._targetMesh;\n }\n\n set targetMesh(targetMesh: THREE.Mesh) {\n this._targetMesh = targetMesh;\n this.update();\n }\n\n get worldPosition() {\n return this._worldPosition;\n }\n\n set worldPosition(worldPosition: THREE.Vector3) {\n this._worldPosition.copy(worldPosition);\n this.update();\n }\n\n get enabled() {\n return this._enabled;\n }\n\n set enabled(enabled: boolean) {\n this._enabled = enabled;\n this.update();\n }\n\n get selected() {\n return this._selected;\n }\n\n set selected(selected: boolean) {\n this._selected = selected;\n this.update();\n }\n\n get hovered() {\n return this._hovered;\n }\n\n set hovered(hovered: boolean) {\n this._hovered = hovered;\n this.update();\n }\n\n get dragged() {\n return this._dragged;\n }\n\n set dragged(dragged: boolean) {\n this._dragged = dragged;\n this.update();\n }\n\n get displayed() {\n return this._displayed;\n }\n\n set displayed(displayed: boolean) {\n this._displayed = displayed;\n this.update();\n }\n\n get active() {\n return this._active;\n }\n\n set active(active: boolean) {\n this._active = active;\n this.update();\n }\n\n get color() {\n return this._color;\n }\n\n // tslint:disable-next-line\n set color(color: any) {\n this._color = color;\n this.update();\n }\n };\n};\n\nexport { widgetsBase };\nexport default widgetsBase();\n","import { widgetsBase } from './widgets.base';\nimport { widgetsHandle as widgetsHandleFactory } from './widgets.handle';\n\n/**\n * @module widgets/biruler\n */\nconst widgetsBiruler = (three = window.THREE) => {\n if (three === undefined || three.Object3D === undefined) {\n return null;\n }\n\n const Constructor = widgetsBase(three);\n return class extends Constructor {\n constructor(targetMesh, controls, params = {}) {\n super(targetMesh, controls, params);\n\n this._widgetType = 'BiRuler';\n\n // incoming parameters (optional: lps2IJK, pixelSpacing, ultrasoundRegions, worldPosition)\n this._calibrationFactor = params.calibrationFactor || null;\n\n // outgoing values\n this._distance = null;\n this._distance2 = null;\n this._units = !this._calibrationFactor && !params.pixelSpacing ? 'units' : 'mm';\n\n // mesh stuff\n this._material = null;\n this._geometry = null;\n this._mesh = null;\n\n // dom stuff\n this._line = null;\n this._label = null;\n this._line2 = null;\n this._label2 = null;\n this._dashline = null;\n\n // add handles\n this._handles = [];\n\n let handle;\n const WidgetsHandle = widgetsHandleFactory(three);\n for (let i = 0; i < 4; i++) {\n handle = new WidgetsHandle(targetMesh, controls, params);\n this.add(handle);\n this._handles.push(handle);\n }\n this._handles[1].active = true;\n this._handles[1].tracking = true;\n this._handles[3].active = true;\n this._handles[3].tracking = true;\n\n this.create();\n\n this.onMove = this.onMove.bind(this);\n this.addEventListeners();\n }\n\n addEventListeners() {\n this._container.addEventListener('wheel', this.onMove);\n }\n\n removeEventListeners() {\n this._container.removeEventListener('wheel', this.onMove);\n }\n\n onStart(evt) {\n this._handles.forEach(elem => elem.onStart(evt));\n\n this._active =\n this._handles[0].active ||\n this._handles[1].active ||\n this._handles[2].active ||\n this._handles[3].active;\n\n this.update();\n }\n\n onMove(evt) {\n if (this._active) {\n this._dragged = true;\n } else {\n this._hovered =\n this._handles[0].hovered ||\n this._handles[1].hovered ||\n this._handles[2].hovered ||\n this._handles[3].hovered;\n this._container.style.cursor = this._hovered ? 'pointer' : 'default';\n }\n\n this._handles.forEach(elem => elem.onMove(evt));\n\n this.update();\n }\n\n onEnd() {\n this._handles[0].onEnd();\n this._handles[2].onEnd();\n\n if (\n this._handles[1].tracking &&\n this._handles[0].screenPosition.distanceTo(this._handles[1].screenPosition) < 10\n ) {\n return;\n }\n\n if (!this._dragged && this._active && !this._handles[3].tracking) {\n this._selected = !this._selected; // change state if there was no dragging\n this._handles[0].selected = this._selected;\n this._handles[2].selected = this._selected;\n }\n\n // Fourth Handle\n if (this._handles[1].active) {\n this._handles[3].onEnd();\n } else if (this._dragged || !this._handles[3].tracking) {\n this._handles[3].tracking = false;\n this._handles[3].onEnd();\n } else {\n this._handles[3].tracking = false;\n }\n this._handles[3].selected = this._selected;\n\n // Second Handle\n if (this._dragged || !this._handles[1].tracking) {\n this._handles[1].tracking = false;\n this._handles[1].onEnd();\n } else {\n this._handles[1].tracking = false;\n }\n this._handles[1].selected = this._selected;\n\n this._active =\n this._handles[0].active ||\n this._handles[1].active ||\n this._handles[2].active ||\n this._handles[3].active;\n this._dragged = false;\n this.update();\n }\n\n create() {\n this.createMesh();\n this.createDOM();\n }\n\n createMesh() {\n // geometry\n this._geometry = new three.Geometry();\n this._geometry.vertices = [\n this._handles[0].worldPosition,\n this._handles[1].worldPosition,\n this._handles[2].worldPosition,\n this._handles[3].worldPosition,\n ];\n\n // material\n this._material = new three.LineBasicMaterial();\n\n this.updateMeshColor();\n\n // mesh\n this._mesh = new three.LineSegments(this._geometry, this._material);\n this._mesh.visible = true;\n this.add(this._mesh);\n }\n\n createDOM() {\n this._line = document.createElement('div');\n this._line.className = 'widgets-line';\n this._container.appendChild(this._line);\n\n this._label = document.createElement('div');\n this._label.className = 'widgets-label';\n this._container.appendChild(this._label);\n\n this._line2 = document.createElement('div');\n this._line2.className = 'widgets-line';\n this._container.appendChild(this._line2);\n\n this._label2 = document.createElement('div');\n this._label2.className = 'widgets-label';\n this._container.appendChild(this._label2);\n\n this._dashline = document.createElement('div');\n this._dashline.className = 'widgets-dashline';\n this._container.appendChild(this._dashline);\n\n this.updateDOMColor();\n }\n\n hideDOM() {\n this._line.style.display = 'none';\n this._label.style.display = 'none';\n this._line2.style.display = 'none';\n this._label2.style.display = 'none';\n this._dashline.style.display = 'none';\n\n this._handles.forEach(elem => elem.hideDOM());\n }\n\n showDOM() {\n this._line.style.display = '';\n this._label.style.display = '';\n this._line2.style.display = '';\n this._label2.style.display = '';\n this._dashline.style.display = '';\n\n this._handles.forEach(elem => elem.showDOM());\n }\n\n update() {\n this.updateColor();\n\n this._handles.forEach(elem => elem.update());\n\n this.updateMeshColor();\n this.updateMeshPosition();\n\n this.updateDOM();\n }\n\n updateMeshColor() {\n if (this._material) {\n this._material.color.set(this._color);\n }\n }\n\n updateMeshPosition() {\n if (this._geometry) {\n this._geometry.verticesNeedUpdate = true;\n }\n }\n\n updateDOM() {\n this.updateDOMColor();\n\n // update first line\n const lineData = this.getLineData(\n this._handles[0].screenPosition,\n this._handles[1].screenPosition\n );\n\n this._line.style.transform = `translate3D(${lineData.transformX}px, ${\n lineData.transformY\n }px, 0)\n rotate(${lineData.transformAngle}rad)`;\n this._line.style.width = lineData.length + 'px';\n\n // update second line\n const line2Data = this.getLineData(\n this._handles[2].screenPosition,\n this._handles[3].screenPosition\n );\n\n this._line2.style.transform = `translate3D(${line2Data.transformX}px, ${\n line2Data.transformY\n }px, 0)\n rotate(${line2Data.transformAngle}rad)`;\n this._line2.style.width = line2Data.length + 'px';\n\n // update dash line\n const line1Center = this._handles[0].worldPosition\n .clone()\n .add(this._handles[1].worldPosition)\n .multiplyScalar(0.5);\n const line2Center = this._handles[2].worldPosition\n .clone()\n .add(this._handles[3].worldPosition)\n .multiplyScalar(0.5);\n const dashLineData = this.getLineData(\n this.worldToScreen(line1Center),\n this.worldToScreen(line2Center)\n );\n\n this._dashline.style.transform = `translate3D(${dashLineData.transformX}px, ${\n dashLineData.transformY\n }px, 0)\n rotate(${dashLineData.transformAngle}rad)`;\n this._dashline.style.width = dashLineData.length + 'px';\n\n // update labels\n const distanceData = this.getDistanceData(\n this._handles[0].worldPosition,\n this._handles[1].worldPosition,\n this._calibrationFactor\n );\n const distanceData2 = this.getDistanceData(\n this._handles[2].worldPosition,\n this._handles[3].worldPosition,\n this._calibrationFactor\n );\n const title = 'Calibration is required to display the distance in mm';\n\n this._distance = distanceData.distance;\n this._distance2 = distanceData2.distance;\n if (distanceData.units && distanceData2.units && distanceData.units === distanceData2.units) {\n this._units = distanceData.units;\n } else {\n if (!distanceData.units) {\n distanceData.units = this._units;\n }\n if (!distanceData2.units) {\n distanceData2.units = this._units;\n }\n }\n\n if (distanceData.units === 'units' && !this._label.hasAttribute('title')) {\n this._label.setAttribute('title', title);\n this._label.style.color = this._colors.error;\n } else if (distanceData.units !== 'units' && this._label.hasAttribute('title')) {\n this._label.removeAttribute('title');\n this._label.style.color = this._colors.text;\n }\n if (distanceData2.units === 'units' && !this._label2.hasAttribute('title')) {\n this._label2.setAttribute('title', title);\n this._label2.style.color = this._colors.error;\n } else if (distanceData2.units !== 'units' && this._label2.hasAttribute('title')) {\n this._label2.removeAttribute('title');\n this._label2.style.color = this._colors.text;\n }\n this._label.innerHTML = `${this._distance.toFixed(2)} ${distanceData.units}`;\n this._label2.innerHTML = `${this._distance2.toFixed(2)} ${distanceData2.units}`;\n\n let angle = Math.abs(lineData.transformAngle);\n if (angle > Math.PI / 2) {\n angle = Math.PI - angle;\n }\n\n const labelPadding =\n Math.tan(angle) < this._label.offsetHeight / this._label.offsetWidth\n ? this._label.offsetWidth / 2 / Math.cos(angle) + 15 // 5px for each handle + padding\n : this._label.offsetHeight / 2 / Math.cos(Math.PI / 2 - angle) + 15;\n const paddingVector = lineData.line.normalize().multiplyScalar(labelPadding);\n const paddingPoint =\n lineData.length > labelPadding * 2\n ? this._handles[1].screenPosition.clone().sub(paddingVector)\n : this._handles[1].screenPosition.clone().add(paddingVector);\n const transform = this.adjustLabelTransform(this._label, paddingPoint);\n\n this._label.style.transform = `translate3D(${transform.x}px, ${transform.y}px, 0)`;\n\n let angle2 = Math.abs(line2Data.transformAngle);\n if (angle2 > Math.PI / 2) {\n angle2 = Math.PI - angle2;\n }\n\n const label2Padding =\n Math.tan(angle2) < this._label2.offsetHeight / this._label2.offsetWidth\n ? this._label2.offsetWidth / 2 / Math.cos(angle2) + 15 // 5px for each handle + padding\n : this._label2.offsetHeight / 2 / Math.cos(Math.PI / 2 - angle2) + 15;\n const paddingVector2 = line2Data.line.normalize().multiplyScalar(label2Padding);\n const paddingPoint2 =\n line2Data.length > label2Padding * 2\n ? this._handles[3].screenPosition.clone().sub(paddingVector2)\n : this._handles[3].screenPosition.clone().add(paddingVector2);\n const transform2 = this.adjustLabelTransform(this._label2, paddingPoint2);\n\n this._label2.style.transform = `translate3D(${transform2.x}px, ${transform2.y}px, 0)`;\n }\n\n updateDOMColor() {\n this._line.style.backgroundColor = this._color;\n this._label.style.borderColor = this._color;\n\n this._line2.style.backgroundColor = this._color;\n this._label2.style.borderColor = this._color;\n\n this._dashline.style.borderTop = '1.5px dashed ' + this._color;\n }\n\n free() {\n this.removeEventListeners();\n\n this._handles.forEach(h => {\n this.remove(h);\n h.free();\n });\n this._handles = [];\n\n this._container.removeChild(this._line);\n this._container.removeChild(this._label);\n this._container.removeChild(this._line2);\n this._container.removeChild(this._label2);\n this._container.removeChild(this._dashline);\n\n // mesh, geometry, material\n this.remove(this._mesh);\n this._mesh.geometry.dispose();\n this._mesh.geometry = null;\n this._mesh.material.dispose();\n this._mesh.material = null;\n this._mesh = null;\n this._geometry.dispose();\n this._geometry = null;\n this._material.vertexShader = null;\n this._material.fragmentShader = null;\n this._material.uniforms = null;\n this._material.dispose();\n this._material = null;\n\n super.free();\n }\n\n /**\n * Get length of rulers\n *\n * @return {Array}\n */\n getDistances() {\n return [this._distance, this._distance2];\n }\n\n get targetMesh() {\n return this._targetMesh;\n }\n\n set targetMesh(targetMesh) {\n this._targetMesh = targetMesh;\n this._handles.forEach(elem => (elem.targetMesh = targetMesh));\n this.update();\n }\n\n get worldPosition() {\n return this._worldPosition;\n }\n\n set worldPosition(worldPosition) {\n this._handles.forEach(elem => elem.worldPosition.copy(worldPosition));\n this._worldPosition.copy(worldPosition);\n this.update();\n }\n\n get calibrationFactor() {\n return this._calibrationFactor;\n }\n\n set calibrationFactor(calibrationFactor) {\n this._calibrationFactor = calibrationFactor;\n this._units = 'mm';\n this.update();\n }\n\n get shotestDistance() {\n return this._distance < this._distance2 ? this._distance : this._distance2;\n }\n\n get longestDistance() {\n return this._distance > this._distance2 ? this._distance : this._distance2;\n }\n };\n};\n\nexport { widgetsBiruler };\nexport default widgetsBiruler();\n","import { widgetsBase } from './widgets.base';\nimport { widgetsHandle as widgetsHandleFactory } from './widgets.handle';\n\n/**\n * @module widgets/crossRuler\n */\nconst widgetsCrossRuler = (three = window.THREE) => {\n if (three === undefined || three.Object3D === undefined) {\n return null;\n }\n\n const Constructor = widgetsBase(three);\n return class extends Constructor {\n constructor(targetMesh, controls, params = {}) {\n super(targetMesh, controls, params);\n\n this._widgetType = 'CrossRuler';\n\n // incoming parameters (optional: lps2IJK, pixelSpacing, ultrasoundRegions, worldPosition)\n this._calibrationFactor = params.calibrationFactor || null;\n\n this._distances = null; // from intersection point to handles\n this._line01 = null; // vector from 0 to 1st handle\n this._normal = null; // normal vector to line01\n\n // outgoing values\n this._distance = null;\n this._distance2 = null;\n this._units = !this._calibrationFactor && !params.pixelSpacing ? 'units' : 'mm';\n\n this._domHovered = false;\n this._moving = false;\n\n // mesh stuff\n this._material = null;\n this._geometry = null;\n this._mesh = null;\n\n // dom stuff\n this._line = null;\n this._line2 = null;\n this._label = null;\n this._label2 = null;\n\n // add handles\n this._handles = [];\n\n let handle;\n const WidgetsHandle = widgetsHandleFactory(three);\n for (let i = 0; i < 4; i++) {\n handle = new WidgetsHandle(targetMesh, controls, params);\n this.add(handle);\n this._handles.push(handle);\n }\n this._handles[1].active = true;\n this._handles[1].tracking = true;\n\n this._moveHandle = new WidgetsHandle(targetMesh, controls, params);\n this.add(this._moveHandle);\n this._handles.push(this._moveHandle);\n this._moveHandle.hide();\n\n this.onHover = this.onHover.bind(this);\n this.onMove = this.onMove.bind(this);\n\n this.create();\n\n this.addEventListeners();\n }\n\n addEventListeners() {\n this._line.addEventListener('mouseenter', this.onHover);\n this._line.addEventListener('mouseleave', this.onHover);\n this._line2.addEventListener('mouseenter', this.onHover);\n this._line2.addEventListener('mouseleave', this.onHover);\n\n this._container.addEventListener('wheel', this.onMove);\n }\n\n removeEventListeners() {\n this._line.removeEventListener('mouseenter', this.onHover);\n this._line.removeEventListener('mouseleave', this.onHover);\n this._line2.removeEventListener('mouseenter', this.onHover);\n this._line2.removeEventListener('mouseleave', this.onHover);\n\n this._container.removeEventListener('wheel', this.onMove);\n }\n\n onHover(evt) {\n if (evt) {\n this.hoverDom(evt);\n }\n\n this.hoverMesh();\n\n this._hovered =\n this._handles[0].hovered ||\n this._handles[1].hovered ||\n this._handles[2].hovered ||\n this._handles[3].hovered ||\n this._domHovered;\n this._container.style.cursor = this._hovered ? 'pointer' : 'default';\n }\n\n hoverMesh() {\n // check raycast intersection, do we want to hover on mesh or just css?\n }\n\n hoverDom(evt) {\n this._domHovered = evt.type === 'mouseenter';\n }\n\n onStart(evt) {\n this._moveHandle.onMove(evt, true);\n\n this._handles.slice(0, -1).forEach(elem => elem.onStart(evt));\n\n this._active =\n this._handles[0].active ||\n this._handles[1].active ||\n this._handles[2].active ||\n this._handles[3].active ||\n this._domHovered;\n\n if (this._domHovered && this._distances) {\n this._moving = true;\n this._controls.enabled = false;\n }\n\n this.update();\n }\n\n onMove(evt) {\n if (this._active) {\n const prevPosition = this._moveHandle.worldPosition.clone();\n\n this._dragged = true;\n this._moveHandle.onMove(evt, true);\n\n if (this._moving) {\n this._handles.slice(0, -1).forEach(handle => {\n handle.worldPosition.add(this._moveHandle.worldPosition.clone().sub(prevPosition));\n });\n }\n } else {\n this.onHover(null);\n }\n\n this._handles.slice(0, -1).forEach(elem => elem.onMove(evt));\n\n if (this._distances) {\n if (this._handles[0].active || this._handles[1].active) {\n this.repositionOrtho(); // change worldPosition of 2nd and 3rd handle\n } else if (this._handles[2].active || this._handles[3].active) {\n this.recalculateOrtho();\n }\n }\n this.update();\n }\n\n onEnd() {\n this._handles[0].onEnd();\n this._handles[2].onEnd();\n this._handles[3].onEnd();\n\n if (\n this._handles[1].tracking &&\n this._handles[0].screenPosition.distanceTo(this._handles[1].screenPosition) < 10\n ) {\n return;\n }\n\n if (!this._dragged && this._active && !this._handles[1].tracking) {\n this._selected = !this._selected; // change state if there was no dragging\n this._handles[0].selected = this._selected;\n this._handles[2].selected = this._selected;\n this._handles[3].selected = this._selected;\n }\n\n // Second Handle\n if (this._dragged || !this._handles[1].tracking) {\n this._handles[1].tracking = false;\n this._handles[1].onEnd();\n } else {\n this._handles[1].tracking = false;\n }\n this._handles[1].selected = this._selected;\n\n this._active =\n this._handles[0].active ||\n this._handles[1].active ||\n this._handles[2].active ||\n this._handles[3].active;\n this._dragged = false;\n this._moving = false;\n\n if (!this._distances) {\n this.initOrtho();\n }\n this.update();\n }\n\n create() {\n this.createMesh();\n this.createDOM();\n }\n\n createMesh() {\n // geometry\n this._geometry = new three.Geometry();\n this._geometry.vertices = [\n this._handles[0].worldPosition,\n this._handles[1].worldPosition,\n this._handles[2].worldPosition,\n this._handles[3].worldPosition,\n ];\n\n // material\n this._material = new three.LineBasicMaterial();\n\n this.updateMeshColor();\n\n // mesh\n this._mesh = new three.LineSegments(this._geometry, this._material);\n this._mesh.visible = true;\n this.add(this._mesh);\n }\n\n createDOM() {\n this._line = document.createElement('div');\n this._line.className = 'widgets-line';\n this._container.appendChild(this._line);\n\n this._line2 = document.createElement('div');\n this._line2.className = 'widgets-line';\n this._container.appendChild(this._line2);\n\n this._label = document.createElement('div');\n this._label.className = 'widgets-label';\n this._container.appendChild(this._label);\n\n this._label2 = document.createElement('div');\n this._label2.className = 'widgets-label';\n this._container.appendChild(this._label2);\n\n this.updateDOMColor();\n }\n\n hideDOM() {\n this._line.style.display = 'none';\n this._line2.style.display = 'none';\n this._label.style.display = 'none';\n this._label2.style.display = 'none';\n\n this._handles.slice(0, -1).forEach(elem => elem.hideDOM());\n }\n\n showDOM() {\n this._line.style.display = '';\n this._line2.style.display = '';\n this._label.style.display = '';\n this._label2.style.display = '';\n\n this._handles.slice(0, -1).forEach(elem => elem.showDOM());\n }\n\n update() {\n this.updateColor();\n\n this._handles.slice(0, -1).forEach(elem => elem.update());\n\n this.updateMeshColor();\n this.updateMeshPosition();\n\n this.updateDOM();\n }\n\n updateMeshColor() {\n if (this._material) {\n this._material.color.set(this._color);\n }\n }\n\n updateMeshPosition() {\n if (this._geometry) {\n this._geometry.verticesNeedUpdate = true;\n }\n }\n\n updateDOM() {\n this.updateDOMColor();\n\n // update first line\n const lineData = this.getLineData(\n this._handles[0].screenPosition,\n this._handles[1].screenPosition\n );\n\n this._line.style.transform = `translate3D(${lineData.transformX}px, ${\n lineData.transformY\n }px, 0)\n rotate(${lineData.transformAngle}rad)`;\n this._line.style.width = lineData.length + 'px';\n\n // update second line\n const line2Data = this.getLineData(\n this._handles[2].screenPosition,\n this._handles[3].screenPosition\n );\n\n this._line2.style.transform = `translate3D(${line2Data.transformX}px, ${\n line2Data.transformY\n }px, 0)\n rotate(${line2Data.transformAngle}rad)`;\n this._line2.style.width = line2Data.length + 'px';\n\n // update labels\n const distanceData = this.getDistanceData(\n this._handles[0].worldPosition,\n this._handles[1].worldPosition,\n this._calibrationFactor\n );\n const distanceData2 = this.getDistanceData(\n this._handles[2].worldPosition,\n this._handles[3].worldPosition,\n this._calibrationFactor\n );\n const title = 'Calibration is required to display the distance in mm';\n\n this._distance = distanceData.distance;\n this._distance2 = distanceData2.distance;\n if (distanceData.units && distanceData2.units && distanceData.units === distanceData2.units) {\n this._units = distanceData.units;\n } else {\n if (!distanceData.units) {\n distanceData.units = this._units;\n }\n if (!distanceData2.units) {\n distanceData2.units = this._units;\n }\n }\n\n if (distanceData.units === 'units' && !this._label.hasAttribute('title')) {\n this._label.setAttribute('title', title);\n this._label.style.color = this._colors.error;\n } else if (distanceData.units !== 'units' && this._label.hasAttribute('title')) {\n this._label.removeAttribute('title');\n this._label.style.color = this._colors.text;\n }\n if (distanceData2.units === 'units' && !this._label2.hasAttribute('title')) {\n this._label2.setAttribute('title', title);\n this._label2.style.color = this._colors.error;\n } else if (distanceData2.units !== 'units' && this._label2.hasAttribute('title')) {\n this._label2.removeAttribute('title');\n this._label2.style.color = this._colors.text;\n }\n this._label.innerHTML = `${this._distance.toFixed(2)} ${distanceData.units}`;\n this._label2.innerHTML = `${this._distance2.toFixed(2)} ${distanceData2.units}`;\n\n let angle = Math.abs(lineData.transformAngle);\n if (angle > Math.PI / 2) {\n angle = Math.PI - angle;\n }\n\n const labelPadding =\n Math.tan(angle) < this._label.offsetHeight / this._label.offsetWidth\n ? this._label.offsetWidth / 2 / Math.cos(angle) + 15 // 5px for each handle + padding\n : this._label.offsetHeight / 2 / Math.cos(Math.PI / 2 - angle) + 15,\n paddingVector = lineData.line.normalize().multiplyScalar(labelPadding),\n paddingPoint =\n lineData.length > labelPadding * 4\n ? this._handles[1].screenPosition.clone().sub(paddingVector)\n : this._handles[1].screenPosition.clone().add(paddingVector),\n transform = this.adjustLabelTransform(this._label, paddingPoint);\n\n this._label.style.transform = `translate3D(${transform.x}px, ${transform.y}px, 0)`;\n\n let angle2 = Math.abs(line2Data.transformAngle);\n if (angle2 > Math.PI / 2) {\n angle2 = Math.PI - angle2;\n }\n\n const label2Padding =\n Math.tan(angle2) < this._label2.offsetHeight / this._label2.offsetWidth\n ? this._label2.offsetWidth / 2 / Math.cos(angle2) + 15 // 5px for each handle + padding\n : this._label2.offsetHeight / 2 / Math.cos(Math.PI / 2 - angle2) + 15,\n paddingVector2 = line2Data.line.normalize().multiplyScalar(label2Padding),\n paddingPoint2 =\n line2Data.length > label2Padding * 4\n ? this._handles[3].screenPosition.clone().sub(paddingVector2)\n : this._handles[3].screenPosition.clone().add(paddingVector2),\n transform2 = this.adjustLabelTransform(this._label2, paddingPoint2);\n\n this._label2.style.transform = `translate3D(${transform2.x}px, ${transform2.y}px, 0)`;\n }\n\n updateDOMColor() {\n this._line.style.backgroundColor = this._color;\n this._line2.style.backgroundColor = this._color;\n this._label.style.borderColor = this._color;\n this._label2.style.borderColor = this._color;\n }\n\n free() {\n this.removeEventListeners();\n\n this._handles.forEach(h => {\n this.remove(h);\n h.free();\n });\n this._handles = [];\n\n this._container.removeChild(this._line);\n this._container.removeChild(this._line2);\n this._container.removeChild(this._label);\n this._container.removeChild(this._label2);\n\n // mesh, geometry, material\n this.remove(this._mesh);\n this._mesh.geometry.dispose();\n this._mesh.geometry = null;\n this._mesh.material.dispose();\n this._mesh.material = null;\n this._mesh = null;\n this._geometry.dispose();\n this._geometry = null;\n this._material.vertexShader = null;\n this._material.fragmentShader = null;\n this._material.uniforms = null;\n this._material.dispose();\n this._material = null;\n\n super.free();\n }\n\n initLineAndNormal() {\n this._line01 = this._handles[1].worldPosition.clone().sub(this._handles[0].worldPosition);\n this._normal = this._line01\n .clone()\n .cross(this._camera._direction)\n .normalize();\n }\n\n initOrtho() {\n // called onEnd if distances are null\n this.initLineAndNormal();\n\n const center = this._handles[1].worldPosition\n .clone()\n .add(this._handles[0].worldPosition)\n .multiplyScalar(0.5);\n const halfLength = this._line01.length() / 2;\n const normLine = this._normal.clone().multiplyScalar(halfLength * 0.8);\n const normLength = normLine.length();\n\n this._handles[2].worldPosition.copy(center.clone().add(normLine));\n this._handles[3].worldPosition.copy(center.clone().sub(normLine));\n\n this._distances = [halfLength, halfLength, normLength, normLength];\n }\n\n repositionOrtho() {\n // called onMove if 0 or 1st handle is active\n this.initLineAndNormal();\n this._distances[0] *= this._line01.length() / (this._distances[0] + this._distances[1]);\n this._distances[1] = this._line01.length() - this._distances[0];\n\n const intersect = this._handles[0].worldPosition.clone().add(\n this._line01\n .clone()\n .normalize()\n .multiplyScalar(this._distances[0])\n );\n\n this._handles[2].worldPosition.copy(\n intersect.clone().add(this._normal.clone().multiplyScalar(this._distances[2]))\n );\n this._handles[3].worldPosition.copy(\n intersect.clone().sub(this._normal.clone().multiplyScalar(this._distances[3]))\n );\n }\n\n recalculateOrtho() {\n // called onMove if 2nd or 3rd handle is active\n const activeInd = this._handles[2].active ? 2 : 3;\n const lines = [];\n const intersect = new three.Vector3();\n\n lines[2] = this._handles[2].worldPosition.clone().sub(this._handles[0].worldPosition);\n lines[3] = this._handles[3].worldPosition.clone().sub(this._handles[0].worldPosition);\n new three.Ray(\n this._handles[0].worldPosition,\n this._line01.clone().normalize()\n ).closestPointToPoint(this._handles[activeInd].worldPosition, intersect);\n\n const isOutside =\n intersect\n .clone()\n .sub(this._handles[0].worldPosition)\n .length() > this._line01.length();\n // if intersection is outside of the line01 then change worldPosition of active handle\n if (isOutside || intersect.equals(this._handles[0].worldPosition)) {\n if (isOutside) {\n intersect.copy(this._handles[1].worldPosition);\n }\n\n this._handles[activeInd].worldPosition.copy(\n intersect.clone().add(lines[activeInd].clone().projectOnVector(this._normal))\n );\n }\n\n if (lines[2].cross(this._line01).angleTo(this._camera._direction) > 0.01) {\n this._handles[2].worldPosition.copy(intersect); // 2nd handle should always be above line01\n }\n if (lines[3].cross(this._line01).angleTo(this._camera._direction) < Math.PI - 0.01) {\n this._handles[3].worldPosition.copy(intersect); // 3nd handle should always be below line01\n }\n\n lines[0] = this._normal.clone().multiplyScalar(this._distances[5 - activeInd]);\n if (activeInd === 2) {\n lines[0].negate();\n }\n this._handles[5 - activeInd].worldPosition.copy(intersect.clone().add(lines[0]));\n\n this._distances[activeInd] = intersect.distanceTo(this._handles[activeInd].worldPosition);\n this._distances[0] = intersect.distanceTo(this._handles[0].worldPosition);\n this._distances[1] = intersect.distanceTo(this._handles[1].worldPosition);\n }\n\n /**\n * Get length of rulers\n *\n * @return {Array}\n */\n getDimensions() {\n return [this._distance, this._distance2];\n }\n\n /**\n * Get CrossRuler handles position\n *\n * @return {Array.} First begin, first end, second begin, second end\n */\n getCoordinates() {\n return [\n this._handles[0].worldPosition,\n this._handles[1].worldPosition,\n this._handles[2].worldPosition,\n this._handles[3].worldPosition,\n ];\n }\n\n /**\n * Set CrossRuler handles position\n *\n * @param {Vector3} first The beginning of the first line\n * @param {Vector3} second The end of the first line\n * @param {Vector3} third The beginning of the second line (clockwise relative to the first line)\n * @param {Vector3} fourth The end of the second line\n */\n initCoordinates(first, second, third, fourth) {\n const intersectR = new three.Vector3();\n const intersectS = new three.Vector3();\n const ray = new three.Ray(first);\n\n ray.lookAt(second);\n ray.distanceSqToSegment(third, fourth, intersectR, intersectS);\n\n if (\n intersectR.distanceTo(intersectS) > 0.01 &&\n intersectR.distanceTo(first) > second.distanceTo(first) + 0.01\n ) {\n window.console.warn('Lines do not intersect');\n\n return;\n }\n\n this.active = false;\n this.hovered = false;\n this.setDefaultColor('#198');\n this._worldPosition.copy(first);\n this._handles[0].worldPosition.copy(first);\n this._handles[1].worldPosition.copy(second);\n this._handles[1].active = false;\n this._handles[1].tracking = false;\n this._handles[2].worldPosition.copy(third);\n this._handles[3].worldPosition.copy(fourth);\n this._distances = [\n intersectR.distanceTo(first),\n intersectR.distanceTo(second),\n intersectR.distanceTo(third),\n intersectR.distanceTo(fourth),\n ];\n\n this.initLineAndNormal();\n this.update();\n }\n\n get targetMesh() {\n return this._targetMesh;\n }\n\n set targetMesh(targetMesh) {\n this._targetMesh = targetMesh;\n this._handles.forEach(elem => (elem.targetMesh = targetMesh));\n this.update();\n }\n\n get worldPosition() {\n return this._worldPosition;\n }\n\n set worldPosition(worldPosition) {\n this._handles.slice(0, -1).forEach(elem => elem.worldPosition.copy(worldPosition));\n this._worldPosition.copy(worldPosition);\n this.update();\n }\n\n get calibrationFactor() {\n return this._calibrationFactor;\n }\n\n set calibrationFactor(calibrationFactor) {\n this._calibrationFactor = calibrationFactor;\n this._units = 'mm';\n this.update();\n }\n };\n};\n\nexport { widgetsCrossRuler };\nexport default widgetsCrossRuler();\n","/**\n * @module CSS Code for all Widgets\n */\nexport default class WidgetsCss {\n static get code() {\n return `\n .widgets-handle {\n position: absolute;\n border: 1px solid;\n border-radius: 50%;\n width: 10px;\n height: 10px;\n margin: -6px; /* border + width / 2 */\n z-index: 3;\n }\n .widgets-line {\n position: absolute;\n width: 1px;\n height: 1px;\n margin-top: -0.5px; /* height / 2 */\n }\n .widgets-dashline {\n position: absolute;\n border-top: 1px dashed;\n margin-top: -0.5px; /* border / 2 */\n }\n .widgets-line:before,\n .widgets-dashline:before { /* for dragging */\n content: \" \";\n position: absolute;\n height: 12px;\n left: 0;\n right: 0;\n margin-top: -6px;\n }\n .widgets-rectangle {\n position: absolute;\n border: 1px solid;\n margin: -1px; /* border */\n }\n .widgets-rectangle-helper {\n position: absolute;\n border: 1px dashed;\n margin: -1px; /* border */\n }\n .widgets-ellipse {\n position: absolute;\n border: 1px solid;\n border-radius: 50%;\n margin: -1px; /* border */\n z-index: 2;\n }\n .widgets-label {\n position: absolute;\n border: 1px solid;\n background-color: rgba(0, 0, 0, 0.7);\n color: rgb(255, 255, 255);\n padding: 4px;\n z-index: 3;\n }\n `;\n }\n}\n","import { widgetsBase } from './widgets.base';\nimport { widgetsHandle as widgetsHandleFactory } from './widgets.handle';\nimport CoreUtils from '../core/core.utils';\n\n/**\n * @module widgets/ellipse\n */\nconst widgetsEllipse = (three = window.THREE) => {\n if (three === undefined || three.Object3D === undefined) {\n return null;\n }\n\n const Constructor = widgetsBase(three);\n return class extends Constructor {\n constructor(targetMesh, controls, params = {}) {\n super(targetMesh, controls, params);\n\n this._widgetType = 'Ellipse';\n\n // incoming parameters (optional: frameIndex, worldPosition)\n this._stack = params.stack; // required\n this._calibrationFactor = params.calibrationFactor || null;\n\n // outgoing values\n this._area = null;\n this._units =\n !this._calibrationFactor && !params.stack.frame[params.frameIndex].pixelSpacing\n ? 'units'\n : 'cm²';\n\n this._moving = false;\n this._domHovered = false;\n\n // mesh stuff\n this._material = null;\n this._geometry = null;\n this._mesh = null;\n\n // dom stuff\n this._rectangle = null;\n this._ellipse = null;\n this._label = null;\n\n // add handles\n this._handles = [];\n\n let handle;\n const WidgetsHandle = widgetsHandleFactory(three);\n for (let i = 0; i < 2; i++) {\n handle = new WidgetsHandle(targetMesh, controls, params);\n this.add(handle);\n this._handles.push(handle);\n }\n this._handles[1].active = true;\n this._handles[1].tracking = true;\n\n this._moveHandle = new WidgetsHandle(targetMesh, controls, params);\n this.add(this._moveHandle);\n this._handles.push(this._moveHandle);\n this._moveHandle.hide();\n\n this.create();\n\n this.onMove = this.onMove.bind(this);\n this.onHover = this.onHover.bind(this);\n this.addEventListeners();\n }\n\n addEventListeners() {\n this._container.addEventListener('wheel', this.onMove);\n\n this._rectangle.addEventListener('mouseenter', this.onHover);\n this._rectangle.addEventListener('mouseleave', this.onHover);\n this._ellipse.addEventListener('mouseenter', this.onHover);\n this._ellipse.addEventListener('mouseleave', this.onHover);\n this._label.addEventListener('mouseenter', this.onHover);\n this._label.addEventListener('mouseleave', this.onHover);\n }\n\n removeEventListeners() {\n this._container.removeEventListener('wheel', this.onMove);\n\n this._rectangle.removeEventListener('mouseenter', this.onHover);\n this._rectangle.removeEventListener('mouseleave', this.onHover);\n this._ellipse.removeEventListener('mouseenter', this.onHover);\n this._ellipse.removeEventListener('mouseleave', this.onHover);\n this._label.removeEventListener('mouseenter', this.onHover);\n this._label.removeEventListener('mouseleave', this.onHover);\n }\n\n onHover(evt) {\n if (evt) {\n this.hoverDom(evt);\n }\n\n this.hoverMesh();\n\n this._hovered = this._handles[0].hovered || this._handles[1].hovered || this._domHovered;\n this._container.style.cursor = this._hovered ? 'pointer' : 'default';\n }\n\n hoverMesh() {\n // check raycast intersection, if we want to hover on mesh instead of just css\n }\n\n hoverDom(evt) {\n this._domHovered = evt.type === 'mouseenter';\n }\n\n onStart(evt) {\n this._moveHandle.onMove(evt, true);\n\n this._handles[0].onStart(evt);\n this._handles[1].onStart(evt);\n\n this._active = this._handles[0].active || this._handles[1].active || this._domHovered;\n\n if (this._domHovered && !this._handles[1].tracking) {\n this._moving = true;\n this._controls.enabled = false;\n }\n\n this.update();\n }\n\n onMove(evt) {\n if (this._active) {\n const prevPosition = this._moveHandle.worldPosition.clone();\n\n this._dragged = true;\n this._moveHandle.onMove(evt, true);\n\n if (this._moving) {\n this._handles.slice(0, -1).forEach(handle => {\n handle.worldPosition.add(this._moveHandle.worldPosition.clone().sub(prevPosition));\n });\n }\n\n this.updateRoI(true);\n } else {\n this.onHover(null);\n }\n\n this._handles[0].onMove(evt);\n this._handles[1].onMove(evt);\n\n this.update();\n }\n\n onEnd() {\n this._handles[0].onEnd(); // First Handle\n\n if (\n this._handles[1].tracking &&\n this._handles[0].screenPosition.distanceTo(this._handles[1].screenPosition) < 10\n ) {\n return;\n }\n\n if (!this._dragged && this._active && !this._handles[1].tracking) {\n this._selected = !this._selected; // change state if there was no dragging\n this._handles[0].selected = this._selected;\n }\n\n // Second Handle\n if (this._dragged || !this._handles[1].tracking) {\n this._handles[1].tracking = false;\n this._handles[1].onEnd();\n } else {\n this._handles[1].tracking = false;\n }\n this._handles[1].selected = this._selected;\n\n this._active = this._handles[0].active || this._handles[1].active;\n this._dragged = false;\n this._moving = false;\n\n this.updateRoI(); // TODO: if (this._dragged || !this._initialized)\n this.update();\n }\n\n hideDOM() {\n this._handles.forEach(elem => elem.hideDOM());\n\n this._rectangle.style.display = 'none';\n this._ellipse.style.display = 'none';\n this._label.style.display = 'none';\n }\n\n showDOM() {\n this._handles[0].showDOM();\n this._handles[1].showDOM();\n\n this._rectangle.style.display = '';\n this._ellipse.style.display = '';\n this._label.style.display = '';\n }\n\n create() {\n this.createMaterial();\n this.createDOM();\n }\n\n createMaterial() {\n this._material = new three.MeshBasicMaterial();\n this._material.transparent = true;\n this._material.opacity = 0.2;\n }\n\n createDOM() {\n this._rectangle = document.createElement('div');\n this._rectangle.className = 'widgets-rectangle-helper';\n this._container.appendChild(this._rectangle);\n\n this._ellipse = document.createElement('div');\n this._ellipse.className = 'widgets-ellipse';\n this._container.appendChild(this._ellipse);\n\n this._label = document.createElement('div');\n this._label.className = 'widgets-label';\n\n // measurements\n const measurementsContainer = document.createElement('div');\n // Mean / SD\n let meanSDContainer = document.createElement('div');\n meanSDContainer.className = 'mean-sd';\n measurementsContainer.appendChild(meanSDContainer);\n // Max / Min\n let maxMinContainer = document.createElement('div');\n maxMinContainer.className = 'max-min';\n measurementsContainer.appendChild(maxMinContainer);\n // Area\n let areaContainer = document.createElement('div');\n areaContainer.className = 'area';\n measurementsContainer.appendChild(areaContainer);\n\n this._label.appendChild(measurementsContainer);\n\n this._container.appendChild(this._label);\n\n this.updateDOMColor();\n }\n\n update() {\n this.updateColor();\n\n this._handles[0].update();\n this._handles[1].update();\n\n this.updateMeshColor();\n this.updateMeshPosition();\n\n this.updateDOM();\n }\n\n updateMeshColor() {\n if (this._material) {\n this._material.color.set(this._color);\n }\n }\n\n updateMeshPosition() {\n if (this._mesh) {\n this.remove(this._mesh);\n }\n\n const vec01 = this._handles[1].worldPosition.clone().sub(this._handles[0].worldPosition);\n const height = vec01\n .clone()\n .projectOnVector(this._camera.up)\n .length();\n const width = vec01\n .clone()\n .projectOnVector(this._camera._right)\n .length();\n\n if (width === 0 || height === 0) {\n return;\n }\n\n this._geometry = new three.ShapeGeometry(\n new three.Shape(\n new three.EllipseCurve(0, 0, width / 2, height / 2, 0, 2 * Math.PI, false).getPoints(50)\n )\n );\n\n this._mesh = new three.Mesh(this._geometry, this._material);\n this._mesh.position.copy(\n this._handles[0].worldPosition.clone().add(vec01.multiplyScalar(0.5))\n );\n this._mesh.rotation.copy(this._camera.rotation);\n this._mesh.visible = true;\n this.add(this._mesh);\n }\n\n updateRoI(clear) {\n if (!this._geometry) {\n return;\n }\n\n const meanSDContainer = this._label.querySelector('.mean-sd');\n const maxMinContainer = this._label.querySelector('.max-min');\n\n if (clear) {\n meanSDContainer.innerHTML = '';\n maxMinContainer.innerHTML = '';\n\n return;\n }\n\n const roi = CoreUtils.getRoI(this._mesh, this._camera, this._stack);\n\n if (roi !== null) {\n meanSDContainer.innerHTML = `Mean: ${roi.mean.toFixed(1)} / SD: ${roi.sd.toFixed(1)}`;\n maxMinContainer.innerHTML = `Max: ${roi.max.toFixed()} / Min: ${roi.min.toFixed()}`;\n } else {\n meanSDContainer.innerHTML = '';\n maxMinContainer.innerHTML = '';\n }\n }\n\n updateDOMColor() {\n this._rectangle.style.borderColor = this._color;\n this._ellipse.style.borderColor = this._color;\n this._label.style.borderColor = this._color;\n }\n\n updateDOM() {\n if (!this._geometry) {\n return;\n }\n\n this.updateDOMColor();\n\n const regions = this._stack.frame[this._params.frameIndex].ultrasoundRegions || [];\n\n this._area = CoreUtils.getGeometryArea(this._geometry);\n if (this._calibrationFactor) {\n this._area *= Math.pow(this._calibrationFactor, 2);\n } else if (regions && regions.length > 0 && this._stack.lps2IJK) {\n const region0 = this.getRegionByXY(\n regions,\n CoreUtils.worldToData(this._stack.lps2IJK, this._handles[0].worldPosition)\n );\n const region1 = this.getRegionByXY(\n regions,\n CoreUtils.worldToData(this._stack.lps2IJK, this._handles[1].worldPosition)\n );\n\n if (\n region0 !== null &&\n region1 !== null &&\n region0 === region1 &&\n regions[region0].unitsX === 'cm' &&\n regions[region0].unitsY === 'cm'\n ) {\n this._area *= Math.pow(regions[region0].deltaX, 2);\n this._units = 'cm²';\n } else if (this._stack.frame[this._params.frameIndex].pixelSpacing) {\n this._area /= 100;\n this._units = 'cm²';\n } else {\n this._units = 'units';\n }\n } else if (this._units === 'cm²') {\n this._area /= 100;\n }\n\n if (this._units === 'units' && !this._label.hasAttribute('title')) {\n this._label.setAttribute('title', 'Calibration is required to display the area in cm²');\n this._label.style.color = this._colors.error;\n } else if (this._units !== 'units' && this._label.hasAttribute('title')) {\n this._label.removeAttribute('title');\n this._label.style.color = this._colors.text;\n }\n this._label.querySelector('.area').innerHTML = `Area: ${this._area.toFixed(2)} ${\n this._units\n }`;\n\n const rectData = this.getRectData(\n this._handles[0].screenPosition,\n this._handles[1].screenPosition\n );\n const labelTransform = this.adjustLabelTransform(\n this._label,\n this._handles[1].screenPosition\n .clone()\n .add(rectData.paddingVector.multiplyScalar(15 + this._label.offsetHeight / 2))\n );\n\n // update rectangle\n this._rectangle.style.transform = `translate3D(${rectData.transformX}px, ${\n rectData.transformY\n }px, 0)`;\n this._rectangle.style.width = rectData.width + 'px';\n this._rectangle.style.height = rectData.height + 'px';\n\n // update ellipse\n this._ellipse.style.transform = `translate3D(${rectData.transformX}px, ${\n rectData.transformY\n }px, 0)`;\n this._ellipse.style.width = rectData.width + 'px';\n this._ellipse.style.height = rectData.height + 'px';\n\n // update label\n this._label.style.transform =\n 'translate3D(' + labelTransform.x + 'px,' + labelTransform.y + 'px, 0)';\n }\n\n free() {\n this.removeEventListeners();\n\n this._handles.forEach(h => {\n this.remove(h);\n h.free();\n });\n this._handles = [];\n\n this._container.removeChild(this._rectangle);\n this._container.removeChild(this._ellipse);\n this._container.removeChild(this._label);\n\n // mesh, geometry, material\n if (this._mesh) {\n this.remove(this._mesh);\n this._mesh.geometry.dispose();\n this._mesh.geometry = null;\n this._mesh.material.dispose();\n this._mesh.material = null;\n this._mesh = null;\n }\n if (this._geometry) {\n this._geometry.dispose();\n this._geometry = null;\n }\n this._material.vertexShader = null;\n this._material.fragmentShader = null;\n this._material.uniforms = null;\n this._material.dispose();\n this._material = null;\n\n this._stack = null;\n\n super.free();\n }\n\n getMeasurements() {\n return {\n area: this._area,\n units: this._units,\n };\n }\n\n get targetMesh() {\n return this._targetMesh;\n }\n\n set targetMesh(targetMesh) {\n this._targetMesh = targetMesh;\n this._handles.forEach(elem => (elem.targetMesh = targetMesh));\n this.update();\n }\n\n get worldPosition() {\n return this._worldPosition;\n }\n\n set worldPosition(worldPosition) {\n this._handles[0].worldPosition.copy(worldPosition);\n this._handles[1].worldPosition.copy(worldPosition);\n this._worldPosition.copy(worldPosition);\n this.update();\n }\n\n get calibrationFactor() {\n return this._calibrationFactor;\n }\n\n set calibrationFactor(calibrationFactor) {\n this._calibrationFactor = calibrationFactor;\n this._units = 'cm²';\n this.update();\n }\n };\n};\n\nexport { widgetsEllipse };\nexport default widgetsEllipse();\n","import { widgetsBase } from './widgets.base';\nimport { widgetsHandle as widgetsHandleFactory } from './widgets.handle';\nimport CoreUtils from '../core/core.utils';\n\n/**\n * @module widgets/freehand\n */\nconst widgetsFreehand = (three = window.THREE) => {\n if (three === undefined || three.Object3D === undefined) {\n return null;\n }\n\n const Constructor = widgetsBase(three);\n return class extends Constructor {\n constructor(targetMesh, controls, params = {}) {\n super(targetMesh, controls, params);\n\n this._widgetType = 'Freehand';\n\n // incoming parameters (optional: frameIndex, worldPosition)\n this._stack = params.stack; // required\n this._calibrationFactor = params.calibrationFactor || null;\n\n // outgoing values\n this._area = null;\n this._units =\n !this._calibrationFactor && !params.stack.frame[params.frameIndex].pixelSpacing\n ? 'units'\n : 'cm²';\n\n this._initialized = false; // set to true onEnd if number of handles > 2\n this._moving = false;\n this._domHovered = false;\n\n // mesh stuff\n this._material = null;\n this._geometry = null;\n this._mesh = null;\n\n // dom stuff\n this._lines = [];\n this._label = null;\n\n // add handles\n this._handles = [];\n const WidgetsHandle = widgetsHandleFactory(three);\n\n let handle = new WidgetsHandle(targetMesh, controls, params);\n this.add(handle);\n this._handles.push(handle);\n\n this._moveHandle = new WidgetsHandle(targetMesh, controls, params);\n this.add(this._moveHandle);\n this._moveHandle.hide();\n\n this.onMove = this.onMove.bind(this);\n this.onHover = this.onHover.bind(this);\n\n this.create();\n\n this.addEventListeners();\n }\n\n addEventListeners() {\n this._container.addEventListener('wheel', this.onMove);\n\n this._label.addEventListener('mouseenter', this.onHover);\n this._label.addEventListener('mouseleave', this.onHover);\n }\n\n removeEventListeners() {\n this._container.removeEventListener('wheel', this.onMove);\n\n this._label.removeEventListener('mouseenter', this.onHover);\n this._label.removeEventListener('mouseleave', this.onHover);\n }\n\n onHover(evt) {\n if (evt) {\n this.hoverDom(evt);\n }\n\n this.hoverMesh();\n\n let hovered = false;\n\n this._handles.forEach(elem => (hovered = hovered || elem.hovered));\n\n this._hovered = hovered || this._domHovered;\n this._container.style.cursor = this._hovered ? 'pointer' : 'default';\n }\n\n hoverMesh() {\n // check raycast intersection, if we want to hover on mesh instead of just css\n }\n\n hoverDom(evt) {\n this._domHovered = evt.type === 'mouseenter';\n }\n\n onStart(evt) {\n let active = false;\n\n this._moveHandle.onMove(evt, true);\n this._handles.forEach(elem => {\n elem.onStart(evt);\n active = active || elem.active;\n });\n\n this._active = active || this._domHovered;\n\n if (this._domHovered && this._initialized) {\n this._moving = true;\n this._controls.enabled = false;\n }\n\n this.update();\n }\n\n onMove(evt) {\n let hovered = false;\n\n if (this.active) {\n this._dragged = true;\n\n if (!this._initialized) {\n this._handles[this._handles.length - 1].hovered = false;\n this._handles[this._handles.length - 1].active = false;\n this._handles[this._handles.length - 1].tracking = false;\n\n const WidgetsHandle = widgetsHandleFactory(three);\n let handle = new WidgetsHandle(this._targetMesh, this._controls, this._params);\n\n handle.hovered = true;\n handle.active = true;\n handle.tracking = true;\n this.add(handle);\n this._handles.push(handle);\n\n this.createLine();\n } else {\n const prevPosition = this._moveHandle.worldPosition.clone();\n\n this._moveHandle.onMove(evt, true);\n if (this._mesh) {\n this.remove(this._mesh);\n }\n this.updateDOMContent(true);\n if (this._moving) {\n this._handles.forEach(handle => {\n handle.worldPosition.add(this._moveHandle.worldPosition.clone().sub(prevPosition));\n });\n }\n }\n }\n\n this._handles.forEach(elem => {\n elem.onMove(evt);\n hovered = hovered || elem.hovered;\n });\n\n this._hovered = hovered || this._domHovered;\n this._container.style.cursor = this._hovered ? 'pointer' : 'default';\n\n if (this.active && this._handles.length > 2) {\n this.pushPopHandle();\n }\n\n this.update();\n }\n\n onEnd() {\n if (this._handles.length < 3) {\n return;\n }\n\n let active = false;\n\n this._handles.slice(0, -1).forEach(elem => {\n elem.onEnd();\n active = active || elem.active;\n });\n\n // Last Handle\n if (this._dragged || !this._handles[this._handles.length - 1].tracking) {\n this._handles[this._handles.length - 1].tracking = false;\n this._handles[this._handles.length - 1].onEnd();\n } else {\n this._handles[this._handles.length - 1].tracking = false;\n }\n\n if (this._lines.length < this._handles.length) {\n this.createLine();\n }\n\n if (this._dragged || !this._initialized) {\n this.updateMesh();\n this.updateDOMContent();\n }\n\n if (!this._dragged && this._active) {\n this._selected = !this._selected; // change state if there was no dragging\n this._handles.forEach(elem => (elem.selected = this._selected));\n }\n this._active = active || this._handles[this._handles.length - 1].active;\n this._dragged = false;\n this._moving = false;\n this._initialized = true;\n\n this.update();\n }\n\n create() {\n this.createMaterial();\n this.createDOM();\n }\n\n createMaterial() {\n this._material = new three.MeshBasicMaterial({ side: three.DoubleSide });\n this._material.transparent = true;\n this._material.opacity = 0.2;\n }\n\n createDOM() {\n this._label = document.createElement('div');\n this._label.className = 'widgets-label';\n\n // measurements\n const measurementsContainer = document.createElement('div');\n // Mean / SD\n let meanSDContainer = document.createElement('div');\n meanSDContainer.className = 'mean-sd';\n measurementsContainer.appendChild(meanSDContainer);\n // Max / Min\n let maxMinContainer = document.createElement('div');\n maxMinContainer.className = 'max-min';\n measurementsContainer.appendChild(maxMinContainer);\n // Area\n let areaContainer = document.createElement('div');\n areaContainer.className = 'area';\n measurementsContainer.appendChild(areaContainer);\n\n this._label.appendChild(measurementsContainer);\n\n this._container.appendChild(this._label);\n\n this.updateDOMColor();\n }\n\n createLine() {\n const line = document.createElement('div');\n\n line.className = 'widgets-line';\n line.addEventListener('mouseenter', this.onHover);\n line.addEventListener('mouseleave', this.onHover);\n this._lines.push(line);\n this._container.appendChild(line);\n }\n\n hideDOM() {\n this._handles.forEach(elem => elem.hideDOM());\n\n this._lines.forEach(elem => (elem.style.display = 'none'));\n this._label.style.display = 'none';\n }\n\n showDOM() {\n this._handles.forEach(elem => elem.showDOM());\n\n this._lines.forEach(elem => (elem.style.display = ''));\n this._label.style.display = '';\n }\n\n update() {\n this.updateColor();\n\n // update handles\n this._handles.forEach(elem => elem.update());\n\n // mesh stuff\n this.updateMeshColor();\n this.updateMeshPosition();\n\n // DOM stuff\n this.updateDOMColor();\n this.updateDOMPosition();\n }\n\n updateMesh() {\n if (this._mesh) {\n this.remove(this._mesh);\n }\n\n let points = [];\n\n this._handles.forEach(elem => points.push(elem.worldPosition));\n\n let center = CoreUtils.centerOfMass(points);\n // direction from first point to center\n let referenceDirection = new three.Vector3().subVectors(points[0], center).normalize();\n let direction = new three.Vector3().crossVectors(\n new three.Vector3().subVectors(points[0], center), // side 1\n new three.Vector3().subVectors(points[1], center) // side 2\n );\n let base = new three.Vector3().crossVectors(referenceDirection, direction).normalize();\n let orderedpoints = [];\n\n // other lines // if inter, return location + angle\n for (let j = 0; j < points.length; j++) {\n let point = new three.Vector3(points[j].x, points[j].y, points[j].z);\n point.direction = new three.Vector3().subVectors(points[j], center).normalize();\n\n let x = referenceDirection.dot(point.direction);\n let y = base.dot(point.direction);\n point.xy = { x, y };\n point.angle = Math.atan2(y, x) * (180 / Math.PI);\n\n orderedpoints.push(point);\n }\n\n // override to catch console.warn \"THREE.ShapeUtils: Unable to triangulate polygon! in triangulate()\"\n this._shapeWarn = false;\n const oldWarn = console.warn;\n console.warn = function(...rest) {\n if (rest[0] === 'three.ShapeUtils: Unable to triangulate polygon! in triangulate()') {\n this._shapeWarn = true;\n }\n return oldWarn.apply(console, rest);\n }.bind(this);\n\n // create the shape\n let shape = new three.Shape();\n // move to first point!\n shape.moveTo(orderedpoints[0].xy.x, orderedpoints[0].xy.y);\n\n // loop through all points!\n for (let l = 1; l < orderedpoints.length; l++) {\n // project each on plane!\n shape.lineTo(orderedpoints[l].xy.x, orderedpoints[l].xy.y);\n }\n\n // close the shape!\n shape.lineTo(orderedpoints[0].xy.x, orderedpoints[0].xy.y);\n\n this._geometry = new three.ShapeGeometry(shape);\n\n console.warn = oldWarn;\n\n this._geometry.vertices = orderedpoints;\n this._geometry.verticesNeedUpdate = true;\n this._geometry.elementsNeedUpdate = true;\n\n this.updateMeshColor();\n\n this._mesh = new three.Mesh(this._geometry, this._material);\n this._mesh.visible = true;\n this.add(this._mesh);\n }\n\n updateMeshColor() {\n if (this._material) {\n this._material.color.set(this._color);\n }\n }\n\n updateMeshPosition() {\n if (this._geometry) {\n this._geometry.verticesNeedUpdate = true;\n }\n }\n\n isPointOnLine(pointA, pointB, pointToCheck) {\n let c = new three.Vector3();\n c.crossVectors(pointA.clone().sub(pointToCheck), pointB.clone().sub(pointToCheck));\n return !c.length();\n }\n\n pushPopHandle() {\n let handle0 = this._handles[this._handles.length - 3];\n let handle1 = this._handles[this._handles.length - 2];\n let newhandle = this._handles[this._handles.length - 1];\n\n let isOnLine = this.isPointOnLine(\n handle0.worldPosition,\n handle1.worldPosition,\n newhandle.worldPosition\n );\n\n if (isOnLine || handle0.screenPosition.distanceTo(newhandle.screenPosition) < 25) {\n this.remove(handle1);\n handle1.free();\n\n this._handles[this._handles.length - 2] = newhandle;\n this._handles.pop();\n\n this._container.removeChild(this._lines.pop());\n }\n\n return isOnLine;\n }\n\n updateDOMColor() {\n if (this._handles.length >= 2) {\n this._lines.forEach(elem => (elem.style.backgroundColor = this._color));\n }\n this._label.style.borderColor = this._color;\n }\n\n updateDOMContent(clear) {\n const meanSDContainer = this._label.querySelector('.mean-sd');\n const maxMinContainer = this._label.querySelector('.max-min');\n const areaContainer = this._label.querySelector('.area');\n\n if (clear) {\n meanSDContainer.innerHTML = '';\n maxMinContainer.innerHTML = '';\n areaContainer.innerHTML = '';\n\n return;\n }\n\n const regions = this._stack.frame[this._params.frameIndex].ultrasoundRegions || [];\n\n this._area = CoreUtils.getGeometryArea(this._geometry); // this.getArea result is changed on dragging\n if (this._calibrationFactor) {\n this._area *= Math.pow(this._calibrationFactor, 2);\n } else if (regions && regions.length > 0 && this._stack.lps2IJK) {\n let same = true;\n let cRegion;\n let pRegion;\n\n this._handles.forEach(elem => {\n cRegion = this.getRegionByXY(\n regions,\n CoreUtils.worldToData(this._stack.lps2IJK, elem.worldPosition)\n );\n if (\n cRegion === null ||\n regions[cRegion].unitsX !== 'cm' ||\n (pRegion !== undefined && pRegion !== cRegion)\n ) {\n same = false;\n }\n pRegion = cRegion;\n });\n\n if (same) {\n this._area *= Math.pow(regions[cRegion].deltaX, 2);\n this._units = 'cm²';\n } else if (this._stack.frame[this._params.frameIndex].pixelSpacing) {\n this._area /= 100;\n this._units = 'cm²';\n } else {\n this._units = 'units';\n }\n } else if (this._units === 'cm²') {\n this._area /= 100;\n }\n\n let title =\n this._units === 'units' ? 'Calibration is required to display the area in cm². ' : '';\n\n if (this._shapeWarn) {\n title += 'Values may be incorrect due to triangulation error.';\n }\n if (title !== '' && !this._label.hasAttribute('title')) {\n this._label.setAttribute('title', title);\n this._label.style.color = this._colors.error;\n } else if (title === '' && this._label.hasAttribute('title')) {\n this._label.removeAttribute('title');\n this._label.style.color = this._colors.text;\n }\n\n const roi = CoreUtils.getRoI(this._mesh, this._camera, this._stack);\n\n if (roi !== null) {\n meanSDContainer.innerHTML = `Mean: ${roi.mean.toFixed(1)} / SD: ${roi.sd.toFixed(1)}`;\n maxMinContainer.innerHTML = `Max: ${roi.max.toFixed()} / Min: ${roi.min.toFixed()}`;\n } else {\n meanSDContainer.innerHTML = '';\n maxMinContainer.innerHTML = '';\n }\n areaContainer.innerHTML = `Area: ${this._area.toFixed(2)} ${this._units}`;\n }\n\n updateDOMPosition() {\n if (this._handles.length < 2) {\n return;\n }\n // update lines and get coordinates of lowest handle\n let labelPosition = null;\n\n this._lines.forEach((elem, ind) => {\n const lineData = this.getLineData(\n this._handles[ind].screenPosition,\n this._handles[ind + 1 === this._handles.length ? 0 : ind + 1].screenPosition\n );\n\n elem.style.transform = `translate3D(${lineData.transformX}px, ${lineData.transformY}px, 0)\n rotate(${lineData.transformAngle}rad)`;\n elem.style.width = lineData.length + 'px';\n\n if (labelPosition === null || labelPosition.y < this._handles[ind].screenPosition.y) {\n labelPosition = this._handles[ind].screenPosition.clone();\n }\n });\n\n if (!this._initialized) {\n return;\n }\n\n // update label\n labelPosition.y += 15 + this._label.offsetHeight / 2;\n labelPosition = this.adjustLabelTransform(this._label, labelPosition);\n\n this._label.style.transform = `translate3D(${labelPosition.x}px, ${labelPosition.y}px, 0)`;\n }\n\n free() {\n this.removeEventListeners();\n\n this._handles.forEach(h => {\n this.remove(h);\n h.free();\n });\n this._handles = [];\n\n this.remove(this._moveHandle);\n this._moveHandle.free();\n this._moveHandle = null;\n\n this._lines.forEach(elem => {\n elem.removeEventListener('mouseenter', this.onHover);\n elem.removeEventListener('mouseleave', this.onHover);\n this._container.removeChild(elem);\n });\n this._lines = [];\n this._container.removeChild(this._label);\n\n // mesh, geometry, material\n if (this._mesh) {\n this.remove(this._mesh);\n this._mesh.geometry.dispose();\n this._mesh.geometry = null;\n this._mesh.material.dispose();\n this._mesh.material = null;\n this._mesh = null;\n }\n if (this._geometry) {\n this._geometry.dispose();\n this._geometry = null;\n }\n this._material.vertexShader = null;\n this._material.fragmentShader = null;\n this._material.uniforms = null;\n this._material.dispose();\n this._material = null;\n\n this._stack = null;\n\n super.free();\n }\n\n getMeasurements() {\n return {\n area: this._area,\n units: this._units,\n };\n }\n\n get targetMesh() {\n return this._targetMesh;\n }\n\n set targetMesh(targetMesh) {\n this._targetMesh = targetMesh;\n this._handles.forEach(elem => (elem.targetMesh = targetMesh));\n this._moveHandle.targetMesh = targetMesh;\n this.update();\n }\n\n get worldPosition() {\n return this._worldPosition;\n }\n\n set worldPosition(worldPosition) {\n this._handles.forEach(elem => elem._worldPosition.copy(worldPosition));\n this._worldPosition.copy(worldPosition);\n this.update();\n }\n\n get calibrationFactor() {\n return this._calibrationFactor;\n }\n\n set calibrationFactor(calibrationFactor) {\n this._calibrationFactor = calibrationFactor;\n this._units = 'cm²';\n this.update();\n }\n };\n};\n\nexport { widgetsFreehand };\nexport default widgetsFreehand();\n","import { widgetsBase } from './widgets.base';\nimport CoreIntersections from '../core/core.intersections';\n\n/**\n * @module widgets/handle\n */\nconst widgetsHandle = (three = window.THREE) => {\n if (three === undefined || three.Object3D === undefined) {\n return null;\n }\n\n const Constructor = widgetsBase(three);\n return class extends Constructor {\n constructor(targetMesh, controls, params = {}) {\n super(targetMesh, controls, params);\n\n this._widgetType = 'Handle';\n\n // incoming parameters (optional: worldPosition)\n if (params.hideHandleMesh === true) {\n this.visible = false;\n }\n\n // if no target mesh, use plane for FREE dragging.\n this._plane = {\n position: new three.Vector3(),\n direction: new three.Vector3(),\n };\n this._offset = new three.Vector3();\n this._raycaster = new three.Raycaster();\n\n this._active = false;\n this._hovered = false;\n this._tracking = false;\n\n this._mouse = new three.Vector2();\n\n this._initialized = false;\n\n // mesh stuff\n this._material = null;\n this._geometry = null;\n this._mesh = null;\n this._meshHovered = false;\n\n // dom stuff\n this._dom = null;\n this._domHovered = false;\n\n this._screenPosition = this.worldToScreen(this._worldPosition);\n\n this.create();\n this.initOffsets();\n\n // event listeners\n this.onResize = this.onResize.bind(this);\n this.onMove = this.onMove.bind(this);\n this.onHover = this.onHover.bind(this);\n this.addEventListeners();\n }\n\n addEventListeners() {\n window.addEventListener('resize', this.onResize);\n\n this._dom.addEventListener('mouseenter', this.onHover);\n this._dom.addEventListener('mouseleave', this.onHover);\n\n this._container.addEventListener('wheel', this.onMove);\n }\n\n removeEventListeners() {\n window.removeEventListener('resize', this.onResize);\n\n this._dom.removeEventListener('mouseenter', this.onHover);\n this._dom.removeEventListener('mouseleave', this.onHover);\n\n this._container.removeEventListener('wheel', this.onMove);\n }\n\n onResize() {\n this.initOffsets();\n }\n\n onHover(evt) {\n if (evt) {\n this.hoverDom(evt);\n }\n\n this.hoverMesh();\n\n this._hovered = this._meshHovered || this._domHovered;\n this._container.style.cursor = this._hovered ? 'pointer' : 'default';\n }\n\n hoverMesh() {\n // check raycast intersection, do we want to hover on mesh or just css?\n let intersectsHandle = this._raycaster.intersectObject(this._mesh);\n this._meshHovered = intersectsHandle.length > 0;\n }\n\n hoverDom(evt) {\n this._domHovered = evt.type === 'mouseenter';\n }\n\n onStart(evt) {\n const offsets = this.getMouseOffsets(evt, this._container);\n this._mouse.set(offsets.x, offsets.y);\n\n // update raycaster\n this._raycaster.setFromCamera(this._mouse, this._camera);\n this._raycaster.ray.position = this._raycaster.ray.origin;\n\n if (this._hovered) {\n this._active = true;\n this._controls.enabled = false;\n\n if (this._targetMesh) {\n let intersectsTarget = this._raycaster.intersectObject(this._targetMesh);\n if (intersectsTarget.length > 0) {\n this._offset.copy(intersectsTarget[0].point).sub(this._worldPosition);\n }\n } else {\n this._plane.position.copy(this._worldPosition);\n this._plane.direction.copy(this._camera.getWorldDirection());\n let intersection = CoreIntersections.rayPlane(this._raycaster.ray, this._plane);\n if (intersection !== null) {\n this._offset.copy(intersection).sub(this._plane.position);\n }\n }\n\n this.update();\n }\n }\n\n /**\n * @param {Object} evt - Browser event\n * @param {Boolean} forced - true to move inactive handles\n */\n onMove(evt, forced) {\n const offsets = this.getMouseOffsets(evt, this._container);\n this._mouse.set(offsets.x, offsets.y);\n\n // update raycaster\n // set ray.position to satisfy CoreIntersections::rayPlane API\n this._raycaster.setFromCamera(this._mouse, this._camera);\n this._raycaster.ray.position = this._raycaster.ray.origin;\n\n if (this._active || forced) {\n this._dragged = true;\n\n if (this._targetMesh !== null) {\n let intersectsTarget = this._raycaster.intersectObject(this._targetMesh);\n if (intersectsTarget.length > 0) {\n this._worldPosition.copy(intersectsTarget[0].point.sub(this._offset));\n }\n } else {\n if (this._plane.direction.length() === 0) {\n // free mode!this._targetMesh\n this._plane.position.copy(this._worldPosition);\n this._plane.direction.copy(this._camera.getWorldDirection());\n }\n\n let intersection = CoreIntersections.rayPlane(this._raycaster.ray, this._plane);\n if (intersection !== null) {\n this._worldPosition.copy(intersection.sub(this._offset));\n }\n }\n } else {\n this.onHover(null);\n }\n\n this.update();\n }\n\n onEnd() {\n if (this._tracking === true) {\n // stay active and keep controls disabled\n return;\n }\n\n if (!this._dragged && this._active && this._initialized) {\n this._selected = !this._selected; // change state if there was no dragging\n }\n\n this._initialized = true;\n this._active = false;\n this._dragged = false;\n this._controls.enabled = true;\n\n this.update();\n }\n\n create() {\n this.createMesh();\n this.createDOM();\n }\n\n createMesh() {\n // geometry\n this._geometry = new three.SphereGeometry(1, 16, 16);\n\n // material\n this._material = new three.MeshBasicMaterial({\n wireframe: true,\n wireframeLinewidth: 2,\n });\n\n this.updateMeshColor();\n\n // mesh\n this._mesh = new three.Mesh(this._geometry, this._material);\n this._mesh.position.copy(this._worldPosition);\n this._mesh.visible = true;\n\n this.add(this._mesh);\n }\n\n createDOM() {\n this._dom = document.createElement('div');\n this._dom.className = 'widgets-handle';\n\n this._dom.style.transform = `translate3D(\n ${this._screenPosition.x}px,\n ${this._screenPosition.y - this._container.offsetHeight}px, 0)`;\n\n this.updateDOMColor();\n\n this._container.appendChild(this._dom);\n }\n\n update() {\n // general update\n this.updateColor();\n\n // update screen position of handle\n this._screenPosition = this.worldToScreen(this._worldPosition);\n\n // mesh stuff\n this.updateMeshColor();\n this.updateMeshPosition();\n\n // DOM stuff\n this.updateDOMColor();\n this.updateDOMPosition();\n }\n\n updateMeshColor() {\n if (this._material) {\n this._material.color.set(this._color);\n }\n }\n\n updateMeshPosition() {\n if (this._mesh) {\n this._mesh.position.copy(this._worldPosition);\n }\n }\n\n updateDOMPosition() {\n if (this._dom) {\n this._dom.style.transform = `translate3D(${this._screenPosition.x}px,\n ${this._screenPosition.y - this._container.offsetHeight}px, 0)`;\n }\n }\n\n updateDOMColor() {\n this._dom.style.borderColor = this._color;\n }\n\n showMesh() {\n if (this._params.hideMesh === true || this._params.hideHandleMesh === true) {\n return;\n }\n\n this.visible = true;\n }\n\n free() {\n // events\n this.removeEventListeners();\n // dom\n this._container.removeChild(this._dom);\n // mesh, geometry, material\n this.remove(this._mesh);\n this._mesh.geometry.dispose();\n this._mesh.geometry = null;\n this._mesh.material.dispose();\n this._mesh.material = null;\n this._mesh = null;\n this._geometry.dispose();\n this._geometry = null;\n this._material.vertexShader = null;\n this._material.fragmentShader = null;\n this._material.uniforms = null;\n this._material.dispose();\n this._material = null;\n\n super.free();\n }\n\n hideDOM() {\n this._dom.style.display = 'none';\n }\n\n showDOM() {\n this._dom.style.display = '';\n }\n\n get screenPosition() {\n return this._screenPosition;\n }\n\n set screenPosition(screenPosition) {\n this._screenPosition = screenPosition;\n }\n\n get active() {\n return this._active;\n }\n\n set active(active) {\n this._active = active;\n // this._tracking = this._active;\n this._controls.enabled = !this._active;\n\n this.update();\n }\n\n get tracking() {\n return this._tracking;\n }\n\n set tracking(tracking) {\n this._tracking = tracking;\n this.update();\n }\n };\n};\n\nexport { widgetsHandle };\nexport default widgetsHandle();\n","import Css from './widgets.css';\n\nimport Angle, { widgetsAngle } from './widgets.angle';\nimport Annotation, { widgetsAnnotation } from './widgets.annotation';\nimport BiRuler, { widgetsBiruler } from './widgets.biruler';\nimport CrossRuler, { widgetsCrossRuler } from './widgets.crossRuler';\nimport Ellipse, { widgetsEllipse } from './widgets.ellipse';\nimport Freehand, { widgetsFreehand } from './widgets.freehand';\nimport Handle, { widgetsHandle } from './widgets.handle';\nimport PeakVelocity, { widgetsPeakVelocity } from './widgets.peakVelocity';\nimport PressureHalfTime, { widgetsPressureHalfTime } from './widgets.pressureHalfTime';\nimport Polygon, { widgetsPolygon } from './widgets.polygon';\nimport Rectangle, { widgetsRectangle } from './widgets.rectangle';\nimport Ruler, { widgetsRuler } from './widgets.ruler';\nimport VelocityTimeIntegral, { widgetsVelocityTimeIntegral } from './widgets.velocityTimeIntegral';\nimport VoxelProbe, { widgetsVoxelprobe } from './widgets.voxelProbe';\n\nexport {\n Css as WidgetsCss,\n Angle as AngleWidget,\n widgetsAngle as angleWidgetFactory,\n Annotation as AnnotationWidget,\n widgetsAnnotation as annotationWidgetFactory,\n BiRuler as BiRulerWidget,\n widgetsBiruler as birulerWidgetFactory,\n CrossRuler as CrossRulerWidget,\n widgetsCrossRuler as crossrulerWidgetFactory,\n Ellipse as EllipseWidget,\n widgetsEllipse as ellipseWidgetFactory,\n Freehand as FreehandWidget,\n widgetsFreehand as freehandWidgetFactory,\n Handle as HandleWidget,\n widgetsHandle as handleWidgetFactory,\n PeakVelocity as PeakVelocityWidget,\n widgetsPeakVelocity as peakVelocityWidgetFactory,\n PressureHalfTime as PressureHalfTimeWidget,\n widgetsPressureHalfTime as pressureHalfTimeWidgetFactory,\n Polygon as PolygonWidget,\n widgetsPolygon as polygonWidgetFactory,\n Rectangle as RectangleWidget,\n widgetsRectangle as rectangleWidgetFactory,\n Ruler as RulerWidget,\n widgetsRuler as rulerWidgetFactory,\n VelocityTimeIntegral as VelocityTimeIntegralWidget,\n widgetsVelocityTimeIntegral as velocityTimeIntegralWidgetFactory,\n VoxelProbe as VoxelProbeWidget,\n widgetsVoxelprobe as voxelprobeWidgetFactory,\n};\n","import { widgetsBase } from './widgets.base';\nimport { widgetsHandle as widgetsHandleFactory } from './widgets.handle';\nimport CoreUtils from '../core/core.utils';\n\n/**\n * @module widgets/peakVelocity (Gradient)\n */\nconst widgetsPeakVelocity = (three = window.THREE) => {\n if (three === undefined || three.Object3D === undefined) {\n return null;\n }\n\n const Constructor = widgetsBase(three);\n\n return class extends Constructor {\n constructor(targetMesh, controls, params = {}) {\n super(targetMesh, controls, params);\n\n this._widgetType = 'PeakVelocity';\n\n // incoming parameters (required: lps2IJK, worldPosition)\n this._regions = params.ultrasoundRegions || []; // required\n if (this._regions.length < 1) {\n throw new Error('Ultrasound regions should not be empty!');\n }\n\n // outgoing values\n this._velocity = null;\n this._gradient = null;\n\n this._container.style.cursor = 'pointer';\n this._controls.enabled = false; // controls should be disabled for widgets with a single handle\n this._initialized = false; // set to true onEnd\n this._active = true;\n this._domHovered = false;\n this._initialRegion = this.getRegionByXY(\n this._regions,\n CoreUtils.worldToData(params.lps2IJK, params.worldPosition)\n );\n if (this._initialRegion === null) {\n throw new Error('Invalid initial UltraSound region!');\n }\n\n // dom stuff\n this._line = null;\n this._label = null;\n\n // handle (represent line)\n const WidgetsHandle = widgetsHandleFactory(three);\n this._handle = new WidgetsHandle(targetMesh, controls, params);\n this.add(this._handle);\n\n this._moveHandle = new WidgetsHandle(targetMesh, controls, params);\n this.add(this._moveHandle);\n this._moveHandle.hide();\n\n this.create();\n\n // event listeners\n this.onMove = this.onMove.bind(this);\n this.onHover = this.onHover.bind(this);\n this.addEventListeners();\n }\n\n addEventListeners() {\n this._container.addEventListener('wheel', this.onMove);\n\n this._line.addEventListener('mouseenter', this.onHover);\n this._line.addEventListener('mouseleave', this.onHover);\n this._label.addEventListener('mouseenter', this.onHover);\n this._label.addEventListener('mouseleave', this.onHover);\n }\n\n removeEventListeners() {\n this._container.removeEventListener('wheel', this.onMove);\n\n this._line.removeEventListener('mouseenter', this.onHover);\n this._line.removeEventListener('mouseleave', this.onHover);\n this._label.removeEventListener('mouseenter', this.onHover);\n this._label.removeEventListener('mouseleave', this.onHover);\n }\n\n onHover(evt) {\n if (evt) {\n this.hoverDom(evt);\n }\n\n this._hovered = this._handle.hovered || this._domHovered;\n this._container.style.cursor = this._hovered ? 'pointer' : 'default';\n }\n\n hoverDom(evt) {\n this._domHovered = evt.type === 'mouseenter';\n }\n\n onStart(evt) {\n this._moveHandle.onMove(evt, true);\n this._handle.onStart(evt);\n\n this._active = this._handle.active || this._domHovered;\n\n if (this._domHovered) {\n this._controls.enabled = false;\n }\n\n this.update();\n }\n\n onMove(evt) {\n if (this._active) {\n const prevPosition = this._moveHandle.worldPosition.clone();\n\n this._moveHandle.onMove(evt, true);\n\n const shift = this._moveHandle.worldPosition.clone().sub(prevPosition);\n\n if (!this.isCorrectRegion(shift)) {\n this._moveHandle.worldPosition.copy(prevPosition);\n\n return;\n }\n\n if (!this._handle.active) {\n this._handle.worldPosition.add(shift);\n }\n this._dragged = true;\n } else {\n this.onHover(null);\n }\n\n this._handle.onMove(evt);\n this.update();\n }\n\n onEnd() {\n this._handle.onEnd();\n\n if (!this._dragged && this._active && this._initialized) {\n this._selected = !this._selected; // change state if there was no dragging\n this._handle.selected = this._selected;\n }\n\n this._initialized = true;\n this._active = false;\n this._dragged = false;\n\n this.update();\n }\n\n isCorrectRegion(shift) {\n const region = this.getRegionByXY(\n this._regions,\n CoreUtils.worldToData(this._params.lps2IJK, this._handle.worldPosition.clone().add(shift))\n );\n\n return (\n region !== null &&\n region === this._initialRegion &&\n this._regions[region].unitsY === 'cm/sec'\n );\n }\n\n create() {\n this.createDOM();\n }\n\n createDOM() {\n this._line = document.createElement('div');\n this._line.className = 'widgets-dashline';\n this._container.appendChild(this._line);\n\n this._label = document.createElement('div');\n this._label.className = 'widgets-label';\n\n // Measurements\n let measurementsContainer = document.createElement('div');\n // Peak Velocity\n let pvContainer = document.createElement('div');\n pvContainer.className = 'peakVelocity';\n measurementsContainer.appendChild(pvContainer);\n // Gradient\n let gradientContainer = document.createElement('div');\n gradientContainer.className = 'gradient';\n measurementsContainer.appendChild(gradientContainer);\n\n this._label.appendChild(measurementsContainer);\n this._container.appendChild(this._label);\n\n this.updateDOMColor();\n }\n\n update() {\n this.updateColor();\n\n this._handle.update();\n this._worldPosition.copy(this._handle.worldPosition);\n\n this.updateDOM();\n }\n\n updateDOM() {\n this.updateDOMColor();\n\n const point = CoreUtils.worldToData(this._params.lps2IJK, this._worldPosition);\n const region = this._regions[this.getRegionByXY(this._regions, point)];\n const usPosition = this.getPointInRegion(region, point);\n\n this._velocity = Math.abs(usPosition.y / 100);\n this._gradient = 4 * Math.pow(this._velocity, 2);\n\n // content\n this._label.querySelector('.peakVelocity').innerHTML = `${this._velocity.toFixed(2)} m/s`;\n this._label.querySelector('.gradient').innerHTML = `${this._gradient.toFixed(2)} mmhg`;\n\n // position\n const transform = this.adjustLabelTransform(this._label, this._handle.screenPosition, true);\n\n this._line.style.transform = `translate3D(${transform.x -\n (point.x - region.x0) * this._camera.zoom}px, ${transform.y}px, 0)`;\n this._line.style.width = (region.x1 - region.x0) * this._camera.zoom + 'px';\n this._label.style.transform = `translate3D(${transform.x + 10}px, ${transform.y + 10}px, 0)`;\n }\n\n updateDOMColor() {\n this._line.style.backgroundColor = this._color;\n this._label.style.borderColor = this._color;\n }\n\n hideDOM() {\n this._line.style.display = 'none';\n this._label.style.display = 'none';\n this._handle.hideDOM();\n }\n\n showDOM() {\n this._line.style.display = '';\n this._label.style.display = '';\n this._handle.showDOM();\n }\n\n free() {\n this.removeEventListeners();\n\n this.remove(this._handle);\n this._handle.free();\n this._handle = null;\n this.remove(this._moveHandle);\n this._moveHandle.free();\n this._moveHandle = null;\n\n this._container.removeChild(this._line);\n this._container.removeChild(this._label);\n\n super.free();\n }\n\n getMeasurements() {\n return {\n velocity: this._velocity,\n gradient: this._gradient,\n };\n }\n\n get targetMesh() {\n return this._targetMesh;\n }\n\n set targetMesh(targetMesh) {\n this._targetMesh = targetMesh;\n this._handle.targetMesh = targetMesh;\n this._moveHandle.targetMesh = targetMesh;\n this.update();\n }\n\n get worldPosition() {\n return this._worldPosition;\n }\n\n set worldPosition(worldPosition) {\n this._handle.worldPosition.copy(worldPosition);\n this._moveHandle.worldPosition.copy(worldPosition);\n this._worldPosition.copy(worldPosition);\n this.update();\n }\n\n get active() {\n return this._active;\n }\n\n set active(active) {\n this._active = active;\n this._controls.enabled = !this._active;\n\n this.update();\n }\n };\n};\n\nexport { widgetsPeakVelocity };\nexport default widgetsPeakVelocity();\n","import { widgetsBase } from './widgets.base';\nimport { widgetsHandle as widgetsHandleFactory } from './widgets.handle';\nimport CoreUtils from '../core/core.utils';\n\n/**\n * @module widgets/polygon\n */\nconst widgetsPolygon = (three = window.THREE) => {\n if (three === undefined || three.Object3D === undefined) {\n return null;\n }\n\n const Constructor = widgetsBase(three);\n return class extends Constructor {\n constructor(targetMesh, controls, params = {}) {\n super(targetMesh, controls, params);\n\n this._widgetType = 'Polygon';\n\n // incoming parameters (optional: frameIndex, worldPosition)\n this._stack = params.stack; // required\n this._calibrationFactor = params.calibrationFactor || null;\n\n // outgoing values\n this._area = null;\n this._units =\n !this._calibrationFactor && !params.stack.frame[params.frameIndex].pixelSpacing\n ? 'units'\n : 'cm²';\n\n this._initialized = false; // set to true onDblClick if number of handles > 2\n this._newHandleRequired = true; // should handle be created onMove?\n this._moving = false;\n this._domHovered = false;\n\n // mesh stuff\n this._material = null;\n this._geometry = null;\n this._mesh = null;\n\n // dom stuff\n this._lines = [];\n this._label = null;\n\n // add handles\n this._handles = [];\n const WidgetsHandle = widgetsHandleFactory(three);\n\n let handle = new WidgetsHandle(targetMesh, controls, params);\n this.add(handle);\n this._handles.push(handle);\n\n this._moveHandle = new WidgetsHandle(targetMesh, controls, params);\n this.add(this._moveHandle);\n this._moveHandle.hide();\n\n this.onDoubleClick = this.onDoubleClick.bind(this);\n this.onMove = this.onMove.bind(this);\n this.onHover = this.onHover.bind(this);\n\n this.create();\n\n this.addEventListeners();\n }\n\n addEventListeners() {\n this._container.addEventListener('dblclick', this.onDoubleClick);\n this._container.addEventListener('wheel', this.onMove);\n\n this._label.addEventListener('mouseenter', this.onHover);\n this._label.addEventListener('mouseleave', this.onHover);\n }\n\n removeEventListeners() {\n this._container.removeEventListener('dblclick', this.onDoubleClick);\n this._container.removeEventListener('wheel', this.onMove);\n\n this._label.removeEventListener('mouseenter', this.onHover);\n this._label.removeEventListener('mouseleave', this.onHover);\n }\n\n onHover(evt) {\n if (evt) {\n this.hoverDom(evt);\n }\n\n this.hoverMesh();\n\n let hovered = false;\n\n this._handles.forEach(elem => (hovered = hovered || elem.hovered));\n\n this._hovered = hovered || this._domHovered;\n this._container.style.cursor = this._hovered ? 'pointer' : 'default';\n }\n\n hoverMesh() {\n // check raycast intersection, if we want to hover on mesh instead of just css\n }\n\n hoverDom(evt) {\n this._domHovered = evt.type === 'mouseenter';\n }\n\n onStart(evt) {\n let active = false;\n\n this._handles.forEach(elem => {\n elem.onStart(evt);\n active = active || elem.active;\n });\n\n if (!this._initialized) {\n return;\n }\n\n this._moveHandle.onMove(evt, true);\n this._active = active || this._domHovered;\n\n if (this._domHovered && this._initialized) {\n this._moving = true;\n this._controls.enabled = false;\n }\n\n this.update();\n }\n\n onMove(evt) {\n let hovered = false;\n\n if (this.active) {\n this._dragged = true;\n\n if (this._newHandleRequired && !this._initialized) {\n this._handles[this._handles.length - 1].hovered = false;\n this._handles[this._handles.length - 1].active = false;\n this._handles[this._handles.length - 1].tracking = false;\n\n const WidgetsHandle = widgetsHandleFactory(three);\n let handle = new WidgetsHandle(this._targetMesh, this._controls, this._params);\n\n handle.hovered = true;\n handle.active = true;\n handle.tracking = true;\n this.add(handle);\n this._handles.push(handle);\n\n this.createLine();\n this._newHandleRequired = false;\n } else {\n const prevPosition = this._moveHandle.worldPosition.clone();\n\n this._moveHandle.onMove(evt, true);\n if (this._mesh) {\n this.remove(this._mesh);\n }\n this.updateDOMContent(true);\n if (this._moving) {\n this._handles.forEach(handle => {\n handle.worldPosition.add(this._moveHandle.worldPosition.clone().sub(prevPosition));\n });\n }\n }\n }\n\n this._handles.forEach(elem => {\n elem.onMove(evt);\n hovered = hovered || elem.hovered;\n });\n\n this._hovered = hovered || this._domHovered;\n this._container.style.cursor = this._hovered ? 'pointer' : 'default';\n\n this.update();\n }\n\n onEnd() {\n let numHandles = this._handles.length;\n let active = false;\n\n if (\n !this._initialized &&\n numHandles > 1 &&\n this._handles[numHandles - 2].screenPosition.distanceTo(\n this._handles[numHandles - 1].screenPosition\n ) < 10\n ) {\n return;\n }\n\n this._handles.forEach(elem => {\n elem.onEnd();\n active = active || elem.active;\n });\n\n if (!this._initialized) {\n this._newHandleRequired = true;\n\n return;\n }\n\n if (this._dragged) {\n this.updateMesh();\n this.updateDOMContent();\n }\n\n if (!this._dragged && this._active) {\n this._selected = !this._selected; // change state if there was no dragging\n this._handles.forEach(elem => (elem.selected = this._selected));\n }\n this._active = active || this._handles[numHandles - 1].active;\n this._dragged = false;\n this._moving = false;\n\n this.update();\n }\n\n onDoubleClick() {\n let numHandles = this._handles.length;\n\n if (\n numHandles < 3 ||\n this._initialized ||\n (numHandles > 1 &&\n this._handles[numHandles - 2].screenPosition.distanceTo(\n this._handles[numHandles - 1].screenPosition\n ) < 10)\n ) {\n return;\n }\n\n this._handles[numHandles - 1].tracking = false;\n this._handles.forEach(elem => elem.onEnd());\n\n this._active = false;\n this._dragged = false;\n this._moving = false;\n this._initialized = true;\n\n this.updateMesh();\n this.updateDOMContent();\n this.update();\n }\n\n create() {\n this.createMaterial();\n this.createDOM();\n }\n\n createMaterial() {\n this._material = new three.MeshBasicMaterial({ side: THREE.DoubleSide });\n this._material.transparent = true;\n this._material.opacity = 0.2;\n }\n\n createDOM() {\n this.createLine();\n\n this._label = document.createElement('div');\n this._label.className = 'widgets-label';\n\n // measurements\n const measurementsContainer = document.createElement('div');\n // Mean / SD\n let meanSDContainer = document.createElement('div');\n meanSDContainer.className = 'mean-sd';\n measurementsContainer.appendChild(meanSDContainer);\n // Max / Min\n let maxMinContainer = document.createElement('div');\n maxMinContainer.className = 'max-min';\n measurementsContainer.appendChild(maxMinContainer);\n // Area\n let areaContainer = document.createElement('div');\n areaContainer.className = 'area';\n measurementsContainer.appendChild(areaContainer);\n\n this._label.appendChild(measurementsContainer);\n\n this._container.appendChild(this._label);\n\n this.updateDOMColor();\n }\n\n createLine() {\n const line = document.createElement('div');\n\n line.className = 'widgets-line';\n line.addEventListener('mouseenter', this.onHover);\n line.addEventListener('mouseleave', this.onHover);\n this._lines.push(line);\n this._container.appendChild(line);\n }\n\n hideDOM() {\n this._handles.forEach(elem => elem.hideDOM());\n\n this._lines.forEach(elem => (elem.style.display = 'none'));\n this._label.style.display = 'none';\n }\n\n showDOM() {\n this._handles.forEach(elem => elem.showDOM());\n\n this._lines.forEach(elem => (elem.style.display = ''));\n this._label.style.display = '';\n }\n\n update() {\n this.updateColor();\n\n // update handles\n this._handles.forEach(elem => elem.update());\n\n // mesh stuff\n this.updateMeshColor();\n this.updateMeshPosition();\n\n // DOM stuff\n this.updateDOMColor();\n this.updateDOMPosition();\n }\n\n updateMesh() {\n if (this._mesh) {\n this.remove(this._mesh);\n }\n\n let points = [];\n\n this._handles.forEach(elem => points.push(elem.worldPosition));\n\n let center = CoreUtils.centerOfMass(points);\n // direction from first point to center\n let referenceDirection = new three.Vector3().subVectors(points[0], center).normalize();\n let direction = new three.Vector3().crossVectors(\n new three.Vector3().subVectors(points[0], center), // side 1\n new three.Vector3().subVectors(points[1], center) // side 2\n );\n let base = new three.Vector3().crossVectors(referenceDirection, direction).normalize();\n let orderedpoints = [];\n\n // other lines // if inter, return location + angle\n for (let j = 0; j < points.length; j++) {\n let point = new three.Vector3(points[j].x, points[j].y, points[j].z);\n\n point.direction = new three.Vector3().subVectors(points[j], center).normalize();\n\n let x = referenceDirection.dot(point.direction);\n let y = base.dot(point.direction);\n\n point.xy = { x, y };\n point.angle = Math.atan2(y, x) * (180 / Math.PI);\n\n orderedpoints.push(point);\n }\n\n // override to catch console.warn \"THREE.ShapeUtils: Unable to triangulate polygon! in triangulate()\"\n this._shapeWarn = false;\n const oldWarn = console.warn;\n console.warn = function(...rest) {\n if (rest[0] === 'THREE.ShapeUtils: Unable to triangulate polygon! in triangulate()') {\n this._shapeWarn = true;\n }\n return oldWarn.apply(console, rest);\n }.bind(this);\n\n // create the shape\n let shape = new three.Shape();\n // move to first point!\n shape.moveTo(orderedpoints[0].xy.x, orderedpoints[0].xy.y);\n\n // loop through all points!\n for (let l = 1; l < orderedpoints.length; l++) {\n // project each on plane!\n shape.lineTo(orderedpoints[l].xy.x, orderedpoints[l].xy.y);\n }\n\n // close the shape!\n shape.lineTo(orderedpoints[0].xy.x, orderedpoints[0].xy.y);\n\n this._geometry = new three.ShapeGeometry(shape);\n\n console.warn = oldWarn;\n\n this._geometry.vertices = orderedpoints;\n this._geometry.verticesNeedUpdate = true;\n this._geometry.elementsNeedUpdate = true;\n\n this.updateMeshColor();\n\n this._mesh = new three.Mesh(this._geometry, this._material);\n this._mesh.visible = true;\n this.add(this._mesh);\n }\n\n updateMeshColor() {\n if (this._material) {\n this._material.color.set(this._color);\n }\n }\n\n updateMeshPosition() {\n if (this._geometry) {\n this._geometry.verticesNeedUpdate = true;\n }\n }\n\n updateDOMColor() {\n this._lines.forEach(elem => (elem.style.backgroundColor = this._color));\n this._label.style.borderColor = this._color;\n }\n\n updateDOMContent(clear) {\n const meanSDContainer = this._label.querySelector('.mean-sd');\n const maxMinContainer = this._label.querySelector('.max-min');\n const areaContainer = this._label.querySelector('.area');\n\n if (clear) {\n meanSDContainer.innerHTML = '';\n maxMinContainer.innerHTML = '';\n areaContainer.innerHTML = '';\n\n return;\n }\n\n const regions = this._stack.frame[this._params.frameIndex].ultrasoundRegions || [];\n\n this._area = CoreUtils.getGeometryArea(this._geometry); // this.getArea result is changed on dragging\n if (this._calibrationFactor) {\n this._area *= Math.pow(this._calibrationFactor, 2);\n } else if (regions && regions.length > 0 && this._stack.lps2IJK) {\n let same = true;\n let cRegion;\n let pRegion;\n\n this._handles.forEach(elem => {\n cRegion = this.getRegionByXY(\n regions,\n CoreUtils.worldToData(this._stack.lps2IJK, elem.worldPosition)\n );\n if (\n cRegion === null ||\n regions[cRegion].unitsX !== 'cm' ||\n (pRegion !== undefined && pRegion !== cRegion)\n ) {\n same = false;\n }\n pRegion = cRegion;\n });\n\n if (same) {\n this._area *= Math.pow(regions[cRegion].deltaX, 2);\n this._units = 'cm²';\n } else if (this._stack.frame[this._params.frameIndex].pixelSpacing) {\n this._area /= 100;\n this._units = 'cm²';\n } else {\n this._units = 'units';\n }\n } else if (this._units === 'cm²') {\n this._area /= 100;\n }\n\n let title =\n this._units === 'units' ? 'Calibration is required to display the area in cm². ' : '';\n\n if (this._shapeWarn) {\n title += 'Values may be incorrect due to triangulation error.';\n }\n if (title !== '' && !this._label.hasAttribute('title')) {\n this._label.setAttribute('title', title);\n this._label.style.color = this._colors.error;\n } else if (title === '' && this._label.hasAttribute('title')) {\n this._label.removeAttribute('title');\n this._label.style.color = this._colors.text;\n }\n\n const roi = CoreUtils.getRoI(this._mesh, this._camera, this._stack);\n\n if (roi !== null) {\n meanSDContainer.innerHTML = `Mean: ${roi.mean.toFixed(1)} / SD: ${roi.sd.toFixed(1)}`;\n maxMinContainer.innerHTML = `Max: ${roi.max.toFixed()} / Min: ${roi.min.toFixed()}`;\n } else {\n meanSDContainer.innerHTML = '';\n maxMinContainer.innerHTML = '';\n }\n areaContainer.innerHTML = `Area: ${this._area.toFixed(2)} ${this._units}`;\n }\n\n updateDOMPosition() {\n // update lines and get coordinates of lowest handle\n let labelPosition = null;\n\n this._lines.forEach((elem, ind) => {\n const lineData = this.getLineData(\n this._handles[ind].screenPosition,\n this._handles[ind + 1 === this._handles.length ? 0 : ind + 1].screenPosition\n );\n\n elem.style.transform = `translate3D(${lineData.transformX}px, ${lineData.transformY}px, 0)\n rotate(${lineData.transformAngle}rad)`;\n elem.style.width = lineData.length + 'px';\n\n if (labelPosition === null || labelPosition.y < this._handles[ind].screenPosition.y) {\n labelPosition = this._handles[ind].screenPosition.clone();\n }\n });\n\n if (!this._initialized) {\n return;\n }\n\n // update label\n labelPosition.y += 15 + this._label.offsetHeight / 2;\n labelPosition = this.adjustLabelTransform(this._label, labelPosition);\n\n this._label.style.transform = `translate3D(${labelPosition.x}px, ${labelPosition.y}px, 0)`;\n }\n\n free() {\n this.removeEventListeners();\n\n this._handles.forEach(h => {\n this.remove(h);\n h.free();\n });\n this._handles = [];\n\n this.remove(this._moveHandle);\n this._moveHandle.free();\n this._moveHandle = null;\n\n this._lines.forEach(elem => {\n elem.removeEventListener('mouseenter', this.onHover);\n elem.removeEventListener('mouseleave', this.onHover);\n this._container.removeChild(elem);\n });\n this._lines = [];\n this._container.removeChild(this._label);\n\n // mesh, geometry, material\n if (this._mesh) {\n this.remove(this._mesh);\n this._mesh.geometry.dispose();\n this._mesh.geometry = null;\n this._mesh.material.dispose();\n this._mesh.material = null;\n this._mesh = null;\n }\n if (this._geometry) {\n this._geometry.dispose();\n this._geometry = null;\n }\n this._material.vertexShader = null;\n this._material.fragmentShader = null;\n this._material.uniforms = null;\n this._material.dispose();\n this._material = null;\n\n this._stack = null;\n\n super.free();\n }\n\n getMeasurements() {\n return {\n area: this._area,\n units: this._units,\n };\n }\n\n get targetMesh() {\n return this._targetMesh;\n }\n\n set targetMesh(targetMesh) {\n this._targetMesh = targetMesh;\n this._handles.forEach(elem => (elem.targetMesh = targetMesh));\n this._moveHandle.targetMesh = targetMesh;\n this.update();\n }\n\n get worldPosition() {\n return this._worldPosition;\n }\n\n set worldPosition(worldPosition) {\n this._handles.forEach(elem => elem.worldPosition.copy(worldPosition));\n this._worldPosition.copy(worldPosition);\n this.update();\n }\n\n get calibrationFactor() {\n return this._calibrationFactor;\n }\n\n set calibrationFactor(calibrationFactor) {\n this._calibrationFactor = calibrationFactor;\n this._units = 'cm²';\n this.update();\n }\n };\n};\n\nexport { widgetsPolygon };\nexport default widgetsPolygon();\n","import { widgetsBase } from './widgets.base';\nimport { widgetsHandle as widgetsHandleFactory } from './widgets.handle';\nimport CoreUtils from '../core/core.utils';\n\n/**\n * @module widgets/pressureHalfTime\n */\nconst widgetsPressureHalfTime = (three = window.THREE) => {\n if (three === undefined || three.Object3D === undefined) {\n return null;\n }\n\n const Constructor = widgetsBase(three);\n\n return class extends Constructor {\n constructor(targetMesh, controls, params = {}) {\n super(targetMesh, controls, params);\n\n this._widgetType = 'PressureHalfTime';\n\n // incoming parameters (required: lps2IJK, worldPosition)\n this._regions = params.ultrasoundRegions || []; // required\n if (this._regions.length < 1) {\n throw new Error('Ultrasound regions should not be empty!');\n }\n\n // outgoing values\n this._vMax = null; // Maximum Velocity (Vmax)\n this._gMax = null; // Maximum Gradient (Gmax)\n this._pht = null; // Pressure Half Time (PHT)\n this._mva = null; // Mitral Valve Area (MVA)\n this._dt = null; // Deceleration Time (DT)\n this._ds = null; // Deceleration Slope (DS)\n\n this._domHovered = false;\n this._initialRegion = this.getRegionByXY(\n this._regions,\n CoreUtils.worldToData(params.lps2IJK, params.worldPosition)\n );\n if (this._initialRegion === null) {\n throw new Error('Invalid initial UltraSound region!');\n }\n\n // mesh stuff\n this._material = null;\n this._geometry = null;\n this._mesh = null;\n\n // dom stuff\n this._line = null;\n this._label = null;\n\n // add handles\n this._handles = [];\n const WidgetsHandle = widgetsHandleFactory(three);\n\n let handle;\n for (let i = 0; i < 2; i++) {\n handle = new WidgetsHandle(targetMesh, controls, params);\n this.add(handle);\n this._handles.push(handle);\n }\n this._handles[1].active = true;\n this._handles[1].tracking = true;\n\n this._moveHandle = new WidgetsHandle(targetMesh, controls, params);\n this.add(this._moveHandle);\n this._handles.push(this._moveHandle);\n this._moveHandle.hide();\n\n this.create();\n\n this.onMove = this.onMove.bind(this);\n this.onHover = this.onHover.bind(this);\n this.addEventListeners();\n }\n\n addEventListeners() {\n this._container.addEventListener('wheel', this.onMove);\n\n this._line.addEventListener('mouseenter', this.onHover);\n this._line.addEventListener('mouseleave', this.onHover);\n this._label.addEventListener('mouseenter', this.onHover);\n this._label.addEventListener('mouseleave', this.onHover);\n }\n\n removeEventListeners() {\n this._container.removeEventListener('wheel', this.onMove);\n\n this._line.removeEventListener('mouseenter', this.onHover);\n this._line.removeEventListener('mouseleave', this.onHover);\n this._label.removeEventListener('mouseenter', this.onHover);\n this._label.removeEventListener('mouseleave', this.onHover);\n }\n\n onHover(evt) {\n if (evt) {\n this.hoverDom(evt);\n }\n\n this.hoverMesh();\n\n this._hovered = this._handles[0].hovered || this._handles[1].hovered || this._domHovered;\n this._container.style.cursor = this._hovered ? 'pointer' : 'default';\n }\n\n hoverMesh() {\n // check raycast intersection, do we want to hover on mesh or just css?\n }\n\n hoverDom(evt) {\n this._domHovered = evt.type === 'mouseenter';\n }\n\n onStart(evt) {\n this._moveHandle.onMove(evt, true);\n\n this._handles[0].onStart(evt);\n this._handles[1].onStart(evt);\n\n this._active = this._handles[0].active || this._handles[1].active || this._domHovered;\n\n if (this._domHovered) {\n this._controls.enabled = false;\n }\n\n this.update();\n }\n\n onMove(evt) {\n if (this._active) {\n const prevPosition = this._moveHandle.worldPosition.clone();\n\n this._moveHandle.onMove(evt, true);\n\n const shift = this._moveHandle.worldPosition.clone().sub(prevPosition);\n\n if (!this.isCorrectRegion(shift)) {\n this._moveHandle.worldPosition.copy(prevPosition);\n\n return;\n }\n\n if (!this._handles[0].active && !this._handles[1].active) {\n this._handles.slice(0, -1).forEach(handle => {\n handle.worldPosition.add(shift);\n });\n }\n this._dragged = true;\n } else {\n this.onHover(null);\n }\n\n this._handles[0].onMove(evt);\n this._handles[1].onMove(evt);\n this.update();\n }\n\n onEnd() {\n this._handles[0].onEnd(); // First Handle\n\n if (\n this._handles[1].tracking &&\n this._handles[0].screenPosition.distanceTo(this._handles[1].screenPosition) < 10\n ) {\n return;\n }\n\n if (!this._dragged && this._active && !this._handles[1].tracking) {\n this._selected = !this._selected; // change state if there was no dragging\n this._handles[0].selected = this._selected;\n }\n\n // Second Handle\n if (this._dragged || !this._handles[1].tracking) {\n this._handles[1].tracking = false;\n this._handles[1].onEnd();\n } else {\n this._handles[1].tracking = false;\n }\n this._handles[1].selected = this._selected;\n\n this._active = this._handles[0].active || this._handles[1].active;\n this._dragged = false;\n\n this.update();\n }\n\n isCorrectRegion(shift) {\n const inActive = !(this._handles[0].active || this._handles[1].active);\n let isCorrect = true;\n\n if (this._handles[0].active || inActive) {\n isCorrect = isCorrect && this.checkHandle(0, shift);\n }\n if (this._handles[1].active || inActive) {\n isCorrect = isCorrect && this.checkHandle(1, shift);\n }\n\n return isCorrect;\n }\n\n checkHandle(index, shift) {\n const region = this.getRegionByXY(\n this._regions,\n CoreUtils.worldToData(\n this._params.lps2IJK,\n this._handles[index].worldPosition.clone().add(shift)\n )\n );\n\n return (\n region !== null &&\n region === this._initialRegion &&\n this._regions[region].unitsY === 'cm/sec'\n );\n }\n\n create() {\n this.createMesh();\n this.createDOM();\n }\n\n createMesh() {\n // geometry\n this._geometry = new three.Geometry();\n this._geometry.vertices = [this._handles[0].worldPosition, this._handles[1].worldPosition];\n\n // material\n this._material = new three.LineBasicMaterial();\n\n this.updateMeshColor();\n\n // mesh\n this._mesh = new three.Line(this._geometry, this._material);\n this._mesh.visible = true;\n\n this.add(this._mesh);\n }\n\n createDOM() {\n this._line = document.createElement('div');\n this._line.className = 'widgets-line';\n this._container.appendChild(this._line);\n\n this._label = document.createElement('div');\n this._label.className = 'widgets-label';\n\n const measurementsContainer = document.createElement('div');\n\n ['vmax', 'gmax', 'pht', 'mva', 'dt', 'ds'].forEach(name => {\n const div = document.createElement('div');\n\n div.className = name;\n measurementsContainer.appendChild(div);\n });\n this._label.appendChild(measurementsContainer);\n\n this._container.appendChild(this._label);\n\n this.updateDOMColor();\n }\n\n hideDOM() {\n this._line.style.display = 'none';\n this._label.style.display = 'none';\n this._handles.forEach(elem => elem.hideDOM());\n }\n\n showDOM() {\n this._line.style.display = '';\n this._label.style.display = '';\n this._handles[0].showDOM();\n this._handles[1].showDOM();\n }\n\n update() {\n this.updateColor();\n\n this._handles[0].update();\n this._handles[1].update();\n\n this.updateValues();\n\n this.updateMeshColor();\n this.updateMeshPosition();\n\n this.updateDOM();\n }\n\n updateValues() {\n const usPosition0 = this.getUsPoint(\n this._regions,\n CoreUtils.worldToData(this._params.lps2IJK, this._handles[0].worldPosition)\n );\n const usPosition1 = this.getUsPoint(\n this._regions,\n CoreUtils.worldToData(this._params.lps2IJK, this._handles[1].worldPosition)\n );\n const velocity0 = Math.abs(usPosition0.y / 100);\n const velocity1 = Math.abs(usPosition1.y / 100);\n const time0 = Math.abs(usPosition0.x);\n const time1 = Math.abs(usPosition1.x);\n const vMaxTime = this._vMax === velocity0 ? time0 : time1;\n\n this._vMax = Math.max(velocity0, velocity1);\n this._gMax = 4 * Math.pow(this._vMax, 2);\n\n const phtVelocity = this._vMax / Math.sqrt(2);\n const phtKoeff = (velocity0 - phtVelocity) / (velocity1 - phtVelocity);\n const dtKoeff = velocity0 / velocity1;\n\n this._pht =\n phtKoeff === 1\n ? Number.POSITIVE_INFINITY\n : Math.abs(vMaxTime - (time0 - phtKoeff * time1) / (1 - phtKoeff)) * 1000;\n this._mva = 220 / this._pht;\n this._dt =\n dtKoeff === 1\n ? Number.POSITIVE_INFINITY\n : Math.abs(vMaxTime - (time0 - dtKoeff * time1) / (1 - dtKoeff)) * 1000;\n this._ds = this._dt === 0 ? Number.POSITIVE_INFINITY : (this._vMax / this._dt) * 1000;\n }\n\n updateMeshColor() {\n if (this._material) {\n this._material.color.set(this._color);\n }\n }\n\n updateMeshPosition() {\n if (this._geometry) {\n this._geometry.verticesNeedUpdate = true;\n }\n }\n\n updateDOM() {\n this.updateDOMColor();\n\n // update line\n const lineData = this.getLineData(\n this._handles[0].screenPosition,\n this._handles[1].screenPosition\n );\n\n this._line.style.transform = `translate3D(${lineData.transformX}px, ${\n lineData.transformY\n }px, 0)\n rotate(${lineData.transformAngle}rad)`;\n this._line.style.width = lineData.length + 'px';\n\n // update label\n this._label.querySelector('.vmax').innerHTML = `Vmax: ${this._vMax.toFixed(2)} m/s`;\n this._label.querySelector('.gmax').innerHTML = `Gmax: ${this._gMax.toFixed(2)} mmhg`;\n this._label.querySelector('.pht').innerHTML = `PHT: ${this._pht.toFixed(1)} ms`;\n this._label.querySelector('.mva').innerHTML = `MVA: ${this._mva.toFixed(2)} cm²`;\n this._label.querySelector('.dt').innerHTML = `DT: ${this._dt.toFixed(1)} ms`;\n this._label.querySelector('.ds').innerHTML = `DS: ${this._ds.toFixed(2)} m/s²`;\n\n let angle = Math.abs(lineData.transformAngle);\n\n if (angle > Math.PI / 2) {\n angle = Math.PI - angle;\n }\n\n const labelPadding =\n Math.tan(angle) < this._label.offsetHeight / this._label.offsetWidth\n ? this._label.offsetWidth / 2 / Math.cos(angle) + 15 // 5px for each handle + padding\n : this._label.offsetHeight / 2 / Math.cos(Math.PI / 2 - angle) + 15;\n const paddingVector = lineData.line.normalize().multiplyScalar(labelPadding);\n const paddingPoint =\n lineData.length > labelPadding * 2\n ? this._handles[1].screenPosition.clone().sub(paddingVector)\n : this._handles[1].screenPosition.clone().add(paddingVector);\n const transform = this.adjustLabelTransform(this._label, paddingPoint);\n\n this._label.style.transform = `translate3D(${transform.x}px, ${transform.y}px, 0)`;\n }\n\n updateDOMColor() {\n this._line.style.backgroundColor = this._color;\n this._label.style.borderColor = this._color;\n }\n\n free() {\n this.removeEventListeners();\n\n this._handles.forEach(h => {\n this.remove(h);\n h.free();\n });\n this._handles = [];\n\n this._container.removeChild(this._line);\n this._container.removeChild(this._label);\n\n // mesh, geometry, material\n this.remove(this._mesh);\n this._mesh.geometry.dispose();\n this._mesh.geometry = null;\n this._mesh.material.dispose();\n this._mesh.material = null;\n this._mesh = null;\n this._geometry.dispose();\n this._geometry = null;\n this._material.vertexShader = null;\n this._material.fragmentShader = null;\n this._material.uniforms = null;\n this._material.dispose();\n this._material = null;\n\n super.free();\n }\n\n getMeasurements() {\n return {\n vMax: this._vMax,\n gMax: this._gMax,\n pht: this._pht,\n mva: this._mva,\n dt: this._dt,\n ds: this._ds,\n };\n }\n\n get targetMesh() {\n return this._targetMesh;\n }\n\n set targetMesh(targetMesh) {\n this._targetMesh = targetMesh;\n this._handles.forEach(elem => (elem.targetMesh = targetMesh));\n this.update();\n }\n\n get worldPosition() {\n return this._worldPosition;\n }\n\n set worldPosition(worldPosition) {\n this._handles[0].worldPosition.copy(worldPosition);\n this._handles[1].worldPosition.copy(worldPosition);\n this._worldPosition.copy(worldPosition);\n this.update();\n }\n };\n};\n\nexport { widgetsPressureHalfTime };\nexport default widgetsPressureHalfTime();\n","import { widgetsBase } from './widgets.base';\nimport { widgetsHandle as widgetsHandleFactory } from './widgets.handle';\nimport CoreUtils from '../core/core.utils';\n\n/**\n * @module widgets/rectangle\n */\nconst widgetsRectangle = (three = window.THREE) => {\n if (three === undefined || three.Object3D === undefined) {\n return null;\n }\n\n const Constructor = widgetsBase(three);\n return class extends Constructor {\n constructor(targetMesh, controls, params = {}) {\n super(targetMesh, controls, params);\n\n this._widgetType = 'Rectangle';\n\n // incoming parameters (optional: frameIndex, worldPosition)\n this._stack = params.stack; // required\n this._calibrationFactor = params.calibrationFactor || null;\n\n // outgoing values\n this._area = null;\n this._units =\n !this._calibrationFactor && !params.stack.frame[params.frameIndex].pixelSpacing\n ? 'units'\n : 'cm²';\n\n this._moving = false;\n this._domHovered = false;\n\n // mesh stuff\n this._material = null;\n this._geometry = null;\n this._mesh = null;\n\n // dom stuff\n this._rectangle = null;\n this._label = null;\n\n // add handles\n this._handles = [];\n const WidgetsHandle = widgetsHandleFactory(three);\n\n let handle;\n for (let i = 0; i < 2; i++) {\n handle = new WidgetsHandle(targetMesh, controls, params);\n this.add(handle);\n this._handles.push(handle);\n }\n this._handles[1].active = true;\n this._handles[1].tracking = true;\n\n this._moveHandle = new WidgetsHandle(targetMesh, controls, params);\n this.add(this._moveHandle);\n this._handles.push(this._moveHandle);\n this._moveHandle.hide();\n\n this.create();\n\n this.onMove = this.onMove.bind(this);\n this.onHover = this.onHover.bind(this);\n this.addEventListeners();\n }\n\n addEventListeners() {\n this._container.addEventListener('wheel', this.onMove);\n\n this._rectangle.addEventListener('mouseenter', this.onHover);\n this._rectangle.addEventListener('mouseleave', this.onHover);\n this._label.addEventListener('mouseenter', this.onHover);\n this._label.addEventListener('mouseleave', this.onHover);\n }\n\n removeEventListeners() {\n this._container.removeEventListener('wheel', this.onMove);\n\n this._rectangle.removeEventListener('mouseenter', this.onHover);\n this._rectangle.removeEventListener('mouseleave', this.onHover);\n this._label.removeEventListener('mouseenter', this.onHover);\n this._label.removeEventListener('mouseleave', this.onHover);\n }\n\n onHover(evt) {\n if (evt) {\n this.hoverDom(evt);\n }\n\n this.hoverMesh();\n\n this._hovered = this._handles[0].hovered || this._handles[1].hovered || this._domHovered;\n this._container.style.cursor = this._hovered ? 'pointer' : 'default';\n }\n\n hoverMesh() {\n // check raycast intersection, if we want to hover on mesh instead of just css\n }\n\n hoverDom(evt) {\n this._domHovered = evt.type === 'mouseenter';\n }\n\n onStart(evt) {\n this._moveHandle.onMove(evt, true);\n\n this._handles[0].onStart(evt);\n this._handles[1].onStart(evt);\n\n this._active = this._handles[0].active || this._handles[1].active || this._domHovered;\n\n if (this._domHovered && !this._handles[1].tracking) {\n this._moving = true;\n this._controls.enabled = false;\n }\n\n this.update();\n }\n\n onMove(evt) {\n if (this._active) {\n const prevPosition = this._moveHandle.worldPosition.clone();\n\n this._dragged = true;\n this._moveHandle.onMove(evt, true);\n\n if (this._moving) {\n this._handles.slice(0, -1).forEach(handle => {\n handle.worldPosition.add(this._moveHandle.worldPosition.clone().sub(prevPosition));\n });\n }\n\n this.updateRoI(true);\n } else {\n this.onHover(null);\n }\n\n this._handles[0].onMove(evt);\n this._handles[1].onMove(evt);\n\n this.update();\n }\n\n onEnd() {\n this._handles[0].onEnd(); // First Handle\n\n if (\n this._handles[1].tracking &&\n this._handles[0].screenPosition.distanceTo(this._handles[1].screenPosition) < 10\n ) {\n return;\n }\n\n if (!this._dragged && this._active && !this._handles[1].tracking) {\n this._selected = !this._selected; // change state if there was no dragging\n this._handles[0].selected = this._selected;\n }\n\n // Second Handle\n if (this._dragged || !this._handles[1].tracking) {\n this._handles[1].tracking = false;\n this._handles[1].onEnd();\n } else {\n this._handles[1].tracking = false;\n }\n this._handles[1].selected = this._selected;\n\n this._active = this._handles[0].active || this._handles[1].active;\n this._dragged = false;\n this._moving = false;\n\n this.updateRoI(); // TODO: if (this._dragged || !this._initialized)\n this.update();\n }\n\n hideDOM() {\n this._handles.forEach(elem => elem.hideDOM());\n\n this._rectangle.style.display = 'none';\n this._label.style.display = 'none';\n }\n\n showDOM() {\n this._handles[0].showDOM();\n this._handles[1].showDOM();\n\n this._rectangle.style.display = '';\n this._label.style.display = '';\n }\n\n create() {\n this.createMesh();\n this.createDOM();\n }\n\n createMesh() {\n this._geometry = new three.PlaneGeometry(1, 1);\n\n this._material = new three.MeshBasicMaterial({ side: three.DoubleSide });\n this._material.transparent = true;\n this._material.opacity = 0.2;\n\n this.updateMeshColor();\n\n this._mesh = new three.Mesh(this._geometry, this._material);\n this._mesh.visible = true;\n\n this.add(this._mesh);\n }\n\n createDOM() {\n this._rectangle = document.createElement('div');\n this._rectangle.className = 'widgets-rectangle';\n this._container.appendChild(this._rectangle);\n\n this._label = document.createElement('div');\n this._label.className = 'widgets-label';\n\n // measurements\n const measurementsContainer = document.createElement('div');\n // Mean / SD\n let meanSDContainer = document.createElement('div');\n meanSDContainer.className = 'mean-sd';\n measurementsContainer.appendChild(meanSDContainer);\n // Max / Min\n let maxMinContainer = document.createElement('div');\n maxMinContainer.className = 'max-min';\n measurementsContainer.appendChild(maxMinContainer);\n // Area\n let areaContainer = document.createElement('div');\n areaContainer.className = 'area';\n measurementsContainer.appendChild(areaContainer);\n\n this._label.appendChild(measurementsContainer);\n\n this._container.appendChild(this._label);\n\n this.updateDOMColor();\n }\n\n update() {\n this.updateColor();\n\n this._handles[0].update();\n this._handles[1].update();\n\n this.updateMeshColor();\n this.updateMeshPosition();\n\n this.updateDOM();\n }\n\n updateMeshColor() {\n if (this._material) {\n this._material.color.set(this._color);\n }\n }\n\n updateMeshPosition() {\n if (this._geometry) {\n const progection = new three.Vector3()\n .subVectors(this._handles[1].worldPosition, this._handles[0].worldPosition)\n .projectOnVector(this._camera.up);\n\n this._geometry.vertices[0].copy(this._handles[0].worldPosition);\n this._geometry.vertices[1].copy(\n new three.Vector3().addVectors(this._handles[0].worldPosition, progection)\n );\n this._geometry.vertices[2].copy(\n new three.Vector3().subVectors(this._handles[1].worldPosition, progection)\n );\n this._geometry.vertices[3].copy(this._handles[1].worldPosition);\n\n this._geometry.verticesNeedUpdate = true;\n this._geometry.computeBoundingSphere();\n }\n }\n\n updateRoI(clear) {\n const meanSDContainer = this._label.querySelector('.mean-sd');\n const maxMinContainer = this._label.querySelector('.max-min');\n\n if (clear) {\n meanSDContainer.innerHTML = '';\n maxMinContainer.innerHTML = '';\n\n return;\n }\n\n const roi = CoreUtils.getRoI(this._mesh, this._camera, this._stack);\n\n if (roi !== null) {\n meanSDContainer.innerHTML = `Mean: ${roi.mean.toFixed(1)} / SD: ${roi.sd.toFixed(1)}`;\n maxMinContainer.innerHTML = `Max: ${roi.max.toFixed()} / Min: ${roi.min.toFixed()}`;\n } else {\n meanSDContainer.innerHTML = '';\n maxMinContainer.innerHTML = '';\n }\n }\n\n updateDOMColor() {\n this._rectangle.style.borderColor = this._color;\n this._label.style.borderColor = this._color;\n }\n\n updateDOM() {\n this.updateDOMColor();\n\n const regions = this._stack.frame[this._params.frameIndex].ultrasoundRegions || [];\n\n this._area = CoreUtils.getGeometryArea(this._geometry);\n if (this._calibrationFactor) {\n this._area *= Math.pow(this._calibrationFactor, 2);\n } else if (regions && regions.length > 0 && this._stack.lps2IJK) {\n const region0 = this.getRegionByXY(\n regions,\n CoreUtils.worldToData(this._stack.lps2IJK, this._handles[0].worldPosition)\n );\n const region1 = this.getRegionByXY(\n regions,\n CoreUtils.worldToData(this._stack.lps2IJK, this._handles[1].worldPosition)\n );\n\n if (\n region0 !== null &&\n region1 !== null &&\n region0 === region1 &&\n regions[region0].unitsX === 'cm' &&\n regions[region0].unitsY === 'cm'\n ) {\n this._area *= Math.pow(regions[region0].deltaX, 2);\n this._units = 'cm²';\n } else if (this._stack.frame[this._params.frameIndex].pixelSpacing) {\n this._area /= 100;\n this._units = 'cm²';\n } else {\n this._units = 'units';\n }\n } else if (this._units === 'cm²') {\n this._area /= 100;\n }\n\n if (this._units === 'units' && !this._label.hasAttribute('title')) {\n this._label.setAttribute('title', 'Calibration is required to display the area in cm²');\n this._label.style.color = this._colors.error;\n } else if (this._units !== 'units' && this._label.hasAttribute('title')) {\n this._label.removeAttribute('title');\n this._label.style.color = this._colors.text;\n }\n this._label.querySelector('.area').innerHTML = `Area: ${this._area.toFixed(2)} ${\n this._units\n }`;\n\n const rectData = this.getRectData(\n this._handles[0].screenPosition,\n this._handles[1].screenPosition\n );\n const labelTransform = this.adjustLabelTransform(\n this._label,\n this._handles[1].screenPosition\n .clone()\n .add(rectData.paddingVector.multiplyScalar(15 + this._label.offsetHeight / 2))\n );\n\n // update rectangle\n this._rectangle.style.transform = `translate3D(${rectData.transformX}px, ${\n rectData.transformY\n }px, 0)`;\n this._rectangle.style.width = rectData.width + 'px';\n this._rectangle.style.height = rectData.height + 'px';\n\n // update label\n this._label.style.transform =\n 'translate3D(' + labelTransform.x + 'px,' + labelTransform.y + 'px, 0)';\n }\n\n free() {\n this.removeEventListeners();\n\n this._handles.forEach(h => {\n this.remove(h);\n h.free();\n });\n this._handles = [];\n\n this._container.removeChild(this._rectangle);\n this._container.removeChild(this._label);\n\n // mesh, geometry, material\n this.remove(this._mesh);\n this._mesh.geometry.dispose();\n this._mesh.geometry = null;\n this._mesh.material.dispose();\n this._mesh.material = null;\n this._mesh = null;\n this._geometry.dispose();\n this._geometry = null;\n this._material.vertexShader = null;\n this._material.fragmentShader = null;\n this._material.uniforms = null;\n this._material.dispose();\n this._material = null;\n\n this._stack = null;\n\n super.free();\n }\n\n getMeasurements() {\n return {\n area: this._area,\n units: this._units,\n };\n }\n\n get targetMesh() {\n return this._targetMesh;\n }\n\n set targetMesh(targetMesh) {\n this._targetMesh = targetMesh;\n this._handles.forEach(elem => (elem.targetMesh = targetMesh));\n this.update();\n }\n\n get worldPosition() {\n return this._worldPosition;\n }\n\n set worldPosition(worldPosition) {\n this._handles[0].worldPosition.copy(worldPosition);\n this._handles[1].worldPosition.copy(worldPosition);\n this._worldPosition.copy(worldPosition);\n this.update();\n }\n\n get calibrationFactor() {\n return this._calibrationFactor;\n }\n\n set calibrationFactor(calibrationFactor) {\n this._calibrationFactor = calibrationFactor;\n this._units = 'cm²';\n this.update();\n }\n };\n};\n\nexport { widgetsRectangle };\nexport default widgetsRectangle();\n","import { widgetsBase } from './widgets.base';\nimport { widgetsHandle as widgetsHandleFactory } from './widgets.handle';\n\n/**\n * @module widgets/ruler\n */\nconst widgetsRuler = (three = window.THREE) => {\n if (three === undefined || three.Object3D === undefined) {\n return null;\n }\n\n const Constructor = widgetsBase(three);\n return class extends Constructor {\n constructor(targetMesh, controls, params = {}) {\n super(targetMesh, controls, params);\n\n this._widgetType = 'Ruler';\n\n // incoming parameters (optional: lps2IJK, pixelSpacing, ultrasoundRegions, worldPosition)\n this._calibrationFactor = params.calibrationFactor || null;\n\n // outgoing values\n this._distance = null;\n this._units = !this._calibrationFactor && !params.pixelSpacing ? 'units' : 'mm';\n\n this._moving = false;\n this._domHovered = false;\n\n // mesh stuff\n this._material = null;\n this._geometry = null;\n this._mesh = null;\n\n // dom stuff\n this._line = null;\n this._label = null;\n\n // add handles\n this._handles = [];\n const WidgetsHandle = widgetsHandleFactory(three);\n\n let handle;\n for (let i = 0; i < 2; i++) {\n handle = new WidgetsHandle(targetMesh, controls, params);\n this.add(handle);\n this._handles.push(handle);\n }\n this._handles[1].active = true;\n this._handles[1].tracking = true;\n\n this._moveHandle = new WidgetsHandle(targetMesh, controls, params);\n this.add(this._moveHandle);\n this._handles.push(this._moveHandle);\n this._moveHandle.hide();\n\n this.create();\n\n this.onMove = this.onMove.bind(this);\n this.onHover = this.onHover.bind(this);\n this.addEventListeners();\n }\n\n addEventListeners() {\n this._container.addEventListener('wheel', this.onMove);\n\n this._line.addEventListener('mouseenter', this.onHover);\n this._line.addEventListener('mouseleave', this.onHover);\n this._label.addEventListener('mouseenter', this.onHover);\n this._label.addEventListener('mouseleave', this.onHover);\n }\n\n removeEventListeners() {\n this._container.removeEventListener('wheel', this.onMove);\n\n this._line.removeEventListener('mouseenter', this.onHover);\n this._line.removeEventListener('mouseleave', this.onHover);\n this._label.removeEventListener('mouseenter', this.onHover);\n this._label.removeEventListener('mouseleave', this.onHover);\n }\n\n onHover(evt) {\n if (evt) {\n this.hoverDom(evt);\n }\n\n this.hoverMesh();\n\n this._hovered = this._handles[0].hovered || this._handles[1].hovered || this._domHovered;\n this._container.style.cursor = this._hovered ? 'pointer' : 'default';\n }\n\n hoverMesh() {\n // check raycast intersection, do we want to hover on mesh or just css?\n }\n\n hoverDom(evt) {\n this._domHovered = evt.type === 'mouseenter';\n }\n\n onStart(evt) {\n this._moveHandle.onMove(evt, true);\n\n this._handles[0].onStart(evt);\n this._handles[1].onStart(evt);\n\n this._active = this._handles[0].active || this._handles[1].active || this._domHovered;\n\n if (this._domHovered && !this._handles[1].tracking) {\n this._moving = true;\n this._controls.enabled = false;\n }\n\n this.update();\n }\n\n onMove(evt) {\n if (this._active) {\n const prevPosition = this._moveHandle.worldPosition.clone();\n\n this._dragged = true;\n this._moveHandle.onMove(evt, true);\n\n if (this._moving) {\n this._handles.slice(0, -1).forEach(handle => {\n handle.worldPosition.add(this._moveHandle.worldPosition.clone().sub(prevPosition));\n });\n }\n } else {\n this.onHover(null);\n }\n\n this._handles[0].onMove(evt);\n this._handles[1].onMove(evt);\n\n this.update();\n }\n\n onEnd() {\n this._handles[0].onEnd(); // First Handle\n\n if (\n this._handles[1].tracking &&\n this._handles[0].screenPosition.distanceTo(this._handles[1].screenPosition) < 10\n ) {\n return;\n }\n\n if (!this._dragged && this._active && !this._handles[1].tracking) {\n this._selected = !this._selected; // change state if there was no dragging\n this._handles[0].selected = this._selected;\n }\n\n // Second Handle\n if (this._dragged || !this._handles[1].tracking) {\n this._handles[1].tracking = false;\n this._handles[1].onEnd();\n } else {\n this._handles[1].tracking = false;\n }\n this._handles[1].selected = this._selected;\n\n this._active = this._handles[0].active || this._handles[1].active;\n this._dragged = false;\n this._moving = false;\n\n this.update();\n }\n\n create() {\n this.createMesh();\n this.createDOM();\n }\n\n createMesh() {\n // geometry\n this._geometry = new three.Geometry();\n this._geometry.vertices.push(this._handles[0].worldPosition);\n this._geometry.vertices.push(this._handles[1].worldPosition);\n\n // material\n this._material = new three.LineBasicMaterial();\n\n this.updateMeshColor();\n\n // mesh\n this._mesh = new three.Line(this._geometry, this._material);\n this._mesh.visible = true;\n\n this.add(this._mesh);\n }\n\n createDOM() {\n this._line = document.createElement('div');\n this._line.className = 'widgets-line';\n this._container.appendChild(this._line);\n\n this._label = document.createElement('div');\n this._label.className = 'widgets-label';\n this._container.appendChild(this._label);\n\n this.updateDOMColor();\n }\n\n hideDOM() {\n this._line.style.display = 'none';\n this._label.style.display = 'none';\n this._handles.forEach(elem => elem.hideDOM());\n }\n\n showDOM() {\n this._line.style.display = '';\n this._label.style.display = '';\n this._handles[0].showDOM();\n this._handles[1].showDOM();\n }\n\n update() {\n this.updateColor();\n\n this._handles[0].update();\n this._handles[1].update();\n\n // calculate values\n const distanceData = this.getDistanceData(\n this._handles[0].worldPosition,\n this._handles[1].worldPosition,\n this._calibrationFactor\n );\n\n this._distance = distanceData.distance;\n if (distanceData.units) {\n this._units = distanceData.units;\n }\n\n this.updateMeshColor();\n this.updateMeshPosition();\n\n this.updateDOM();\n }\n\n updateMeshColor() {\n if (this._material) {\n this._material.color.set(this._color);\n }\n }\n\n updateMeshPosition() {\n if (this._geometry) {\n this._geometry.verticesNeedUpdate = true;\n }\n }\n\n updateDOM() {\n this.updateDOMColor();\n\n // update line\n const lineData = this.getLineData(\n this._handles[0].screenPosition,\n this._handles[1].screenPosition\n );\n\n this._line.style.transform = `translate3D(${lineData.transformX}px, ${\n lineData.transformY\n }px, 0)\n rotate(${lineData.transformAngle}rad)`;\n this._line.style.width = lineData.length + 'px';\n\n // update label\n if (this._units === 'units' && !this._label.hasAttribute('title')) {\n this._label.setAttribute('title', 'Calibration is required to display the distance in mm');\n this._label.style.color = this._colors.error;\n } else if (this._units !== 'units' && this._label.hasAttribute('title')) {\n this._label.removeAttribute('title');\n this._label.style.color = this._colors.text;\n }\n this._label.innerHTML = `${this._distance.toFixed(2)} ${this._units}`;\n\n let angle = Math.abs(lineData.transformAngle);\n if (angle > Math.PI / 2) {\n angle = Math.PI - angle;\n }\n\n const labelPadding =\n Math.tan(angle) < this._label.offsetHeight / this._label.offsetWidth\n ? this._label.offsetWidth / 2 / Math.cos(angle) + 15 // 5px for each handle + padding\n : this._label.offsetHeight / 2 / Math.cos(Math.PI / 2 - angle) + 15;\n const paddingVector = lineData.line.normalize().multiplyScalar(labelPadding);\n const paddingPoint =\n lineData.length > labelPadding * 2\n ? this._handles[1].screenPosition.clone().sub(paddingVector)\n : this._handles[1].screenPosition.clone().add(paddingVector);\n const transform = this.adjustLabelTransform(this._label, paddingPoint);\n\n this._label.style.transform = `translate3D(${transform.x}px, ${transform.y}px, 0)`;\n }\n\n updateDOMColor() {\n this._line.style.backgroundColor = this._color;\n this._label.style.borderColor = this._color;\n }\n\n free() {\n this.removeEventListeners();\n\n this._handles.forEach(h => {\n this.remove(h);\n h.free();\n });\n this._handles = [];\n\n this._container.removeChild(this._line);\n this._container.removeChild(this._label);\n\n // mesh, geometry, material\n this.remove(this._mesh);\n this._mesh.geometry.dispose();\n this._mesh.geometry = null;\n this._mesh.material.dispose();\n this._mesh.material = null;\n this._mesh = null;\n this._geometry.dispose();\n this._geometry = null;\n this._material.vertexShader = null;\n this._material.fragmentShader = null;\n this._material.uniforms = null;\n this._material.dispose();\n this._material = null;\n\n super.free();\n }\n\n getMeasurements() {\n return {\n distance: this._distance,\n units: this._units,\n };\n }\n\n get targetMesh() {\n return this._targetMesh;\n }\n\n set targetMesh(targetMesh) {\n this._targetMesh = targetMesh;\n this._handles.forEach(elem => (elem.targetMesh = targetMesh));\n this.update();\n }\n\n get worldPosition() {\n return this._worldPosition;\n }\n\n set worldPosition(worldPosition) {\n this._handles[0].worldPosition.copy(worldPosition);\n this._handles[1].worldPosition.copy(worldPosition);\n this._worldPosition.copy(worldPosition);\n this.update();\n }\n\n get calibrationFactor() {\n return this._calibrationFactor;\n }\n\n set calibrationFactor(calibrationFactor) {\n this._calibrationFactor = calibrationFactor;\n this._units = 'mm';\n this.update();\n }\n };\n};\n\nexport { widgetsRuler };\nexport default widgetsRuler();\n","import { widgetsBase } from './widgets.base';\nimport { widgetsHandle as widgetsHandleFactory } from './widgets.handle';\nimport CoreUtils from '../core/core.utils';\n\n/**\n * @module widgets/velocityTimeIntegral\n */\nconst widgetsVelocityTimeIntegral = (three = window.THREE) => {\n if (three === undefined || three.Object3D === undefined) {\n return null;\n }\n\n const Constructor = widgetsBase(three);\n return class extends Constructor {\n constructor(targetMesh, controls, params = {}) {\n super(targetMesh, controls, params);\n\n this._widgetType = 'VelocityTimeIntegral';\n\n // incoming parameters (+ ijk2LPS, lps2IJK, worldPosition)\n this._regions = params.ultrasoundRegions || []; // required\n if (this._regions.length < 1) {\n throw new Error('Ultrasound regions should not be empty!');\n }\n\n // outgoing values\n this._vMax = null; // Maximum Velocity (Vmax)\n this._vMean = null; // Mean Velocity (Vmean)\n this._gMax = null; // Maximum Gradient (Gmax)\n this._gMean = null; // Mean Gradient (Gmean)\n this._envTi = null; // Envelope Duration (Env.Ti)\n this._vti = null; // Velocity Time Integral (VTI)\n this._extraInfo = null; // extra information which is added to label\n\n this._initialized = false; // set to true onEnd if number of handles > 2\n this._isHandleActive = true;\n this._domHovered = false;\n this._initialRegion = this.getRegionByXY(\n this._regions,\n CoreUtils.worldToData(params.lps2IJK, params.worldPosition)\n );\n if (this._initialRegion === null) {\n throw new Error('Invalid initial UltraSound region!');\n }\n this._usPoints = [];\n\n // mesh stuff\n this._material = null;\n this._geometry = null;\n this._mesh = null;\n\n // dom stuff\n this._lines = [];\n this._label = null;\n\n // add handles\n this._handles = [];\n const WidgetsHandle = widgetsHandleFactory(three);\n\n let handle = new WidgetsHandle(targetMesh, controls, params);\n this.add(handle);\n this._handles.push(handle);\n\n this._moveHandle = new WidgetsHandle(targetMesh, controls, params);\n this.add(this._moveHandle);\n this._moveHandle.hide();\n\n this.onMove = this.onMove.bind(this);\n this.onHover = this.onHover.bind(this);\n\n this.create();\n\n this.addEventListeners();\n }\n\n addEventListeners() {\n this._container.addEventListener('wheel', this.onMove);\n\n this._label.addEventListener('mouseenter', this.onHover);\n this._label.addEventListener('mouseleave', this.onHover);\n }\n\n removeEventListeners() {\n this._container.removeEventListener('wheel', this.onMove);\n\n this._label.removeEventListener('mouseenter', this.onHover);\n this._label.removeEventListener('mouseleave', this.onHover);\n }\n\n onHover(evt) {\n if (evt) {\n this.hoverDom(evt);\n }\n\n this.hoverMesh();\n\n let hovered = false;\n\n this._handles.forEach(elem => (hovered = hovered || elem.hovered));\n\n this._hovered = hovered || this._domHovered;\n this._container.style.cursor = this._hovered ? 'pointer' : 'default';\n }\n\n hoverMesh() {\n // check raycast intersection, if we want to hover on mesh instead of just css\n }\n\n hoverDom(evt) {\n this._domHovered = evt.type === 'mouseenter';\n }\n\n onStart(evt) {\n let active = false;\n\n this._moveHandle.onMove(evt, true);\n this._handles.forEach(elem => {\n elem.onStart(evt);\n active = active || elem.active;\n });\n\n this._active = active || this._domHovered;\n this._isHandleActive = active;\n\n if (this._domHovered) {\n this._controls.enabled = false;\n }\n\n this.update();\n }\n\n onMove(evt) {\n if (this.active) {\n const prevPosition = this._moveHandle.worldPosition.clone();\n\n this._moveHandle.onMove(evt, true);\n\n const shift = this._moveHandle.worldPosition.clone().sub(prevPosition);\n\n if (!this.isCorrectRegion(shift)) {\n this._moveHandle.worldPosition.copy(prevPosition);\n\n return;\n }\n\n if (!this._initialized) {\n this._handles[this._handles.length - 1].hovered = false;\n this._handles[this._handles.length - 1].active = false;\n this._handles[this._handles.length - 1].tracking = false;\n\n const WidgetsHandle = widgetsHandleFactory(three);\n let handle = new WidgetsHandle(this._targetMesh, this._controls, this._params);\n\n handle.hovered = true;\n handle.active = true;\n handle.tracking = true;\n this.add(handle);\n this._handles.push(handle);\n\n this.createLine();\n } else {\n this.updateDOMContent(true);\n\n if (\n !this._isHandleActive ||\n this._handles[this._handles.length - 2].active ||\n this._handles[this._handles.length - 1].active\n ) {\n this._handles.forEach(handle => {\n handle.worldPosition.add(shift);\n });\n this._isHandleActive = false;\n this._handles[this._handles.length - 2].active = false;\n this._handles[this._handles.length - 1].active = false;\n this._controls.enabled = false;\n }\n }\n this._dragged = true;\n } else {\n this.onHover(null);\n }\n\n this._handles.forEach(elem => {\n elem.onMove(evt);\n });\n if (this.active && this._handles.length > 2) {\n this.pushPopHandle();\n }\n this.update();\n }\n\n onEnd() {\n if (this._handles.length < 3) {\n return;\n }\n\n let active = false;\n\n this._handles.slice(0, -1).forEach(elem => {\n elem.onEnd();\n active = active || elem.active;\n });\n\n // Last Handle\n if (this._dragged || !this._handles[this._handles.length - 1].tracking) {\n this._handles[this._handles.length - 1].tracking = false;\n this._handles[this._handles.length - 1].onEnd();\n } else {\n this._handles[this._handles.length - 1].tracking = false;\n }\n\n if (this._dragged || !this._initialized) {\n this.finalize();\n this.updateDOMContent();\n }\n\n if (!this._dragged && this._active) {\n this._selected = !this._selected; // change state if there was no dragging\n this._handles.forEach(elem => (elem.selected = this._selected));\n }\n this._active = active || this._handles[this._handles.length - 1].active;\n this._isHandleActive = active;\n this._dragged = false;\n this._initialized = true;\n\n this.update();\n }\n\n isCorrectRegion(shift) {\n let isCorrect = true;\n\n this._handles.forEach((handle, index) => {\n if (handle.active || !this._isHandleActive) {\n isCorrect = isCorrect && this.checkHandle(index, shift);\n }\n });\n\n return isCorrect;\n }\n\n checkHandle(index, shift) {\n const region = this.getRegionByXY(\n this._regions,\n CoreUtils.worldToData(\n this._params.lps2IJK,\n this._handles[index].worldPosition.clone().add(shift)\n )\n );\n\n return (\n region !== null &&\n region === this._initialRegion &&\n this._regions[region].unitsY === 'cm/sec'\n );\n }\n\n create() {\n this.createMaterial();\n this.createDOM();\n }\n\n createMaterial() {\n this._material = new three.LineBasicMaterial();\n }\n\n createDOM() {\n this._label = document.createElement('div');\n this._label.className = 'widgets-label';\n\n const measurementsContainer = document.createElement('div');\n\n ['vmax', 'vmean', 'gmax', 'gmean', 'envti', 'vti', 'info'].forEach(name => {\n const div = document.createElement('div');\n\n div.className = name;\n measurementsContainer.appendChild(div);\n });\n this._label.appendChild(measurementsContainer);\n\n this._container.appendChild(this._label);\n\n this.updateDOMColor();\n }\n\n createLine() {\n const line = document.createElement('div');\n\n line.className = 'widgets-line';\n line.addEventListener('mouseenter', this.onHover);\n line.addEventListener('mouseleave', this.onHover);\n this._lines.push(line);\n this._container.appendChild(line);\n }\n\n pushPopHandle() {\n let handle0 = this._handles[this._handles.length - 3];\n let handle1 = this._handles[this._handles.length - 2];\n let newhandle = this._handles[this._handles.length - 1];\n let isOnLine = this.isPointOnLine(\n handle0.worldPosition,\n handle1.worldPosition,\n newhandle.worldPosition\n );\n\n if (isOnLine || handle0.screenPosition.distanceTo(newhandle.screenPosition) < 25) {\n this.remove(handle1);\n handle1.free();\n\n this._handles[this._handles.length - 2] = newhandle;\n this._handles.pop();\n\n this._container.removeChild(this._lines.pop());\n }\n\n return isOnLine;\n }\n\n isPointOnLine(pointA, pointB, pointToCheck) {\n return !new three.Vector3()\n .crossVectors(pointA.clone().sub(pointToCheck), pointB.clone().sub(pointToCheck))\n .length();\n }\n\n finalize() {\n if (this._initialized) {\n // remove old axis handles\n this._handles.splice(-2).forEach(elem => {\n this.remove(elem);\n elem.free();\n });\n }\n\n const pointF = CoreUtils.worldToData(this._params.lps2IJK, this._handles[0]._worldPosition);\n const pointL = CoreUtils.worldToData(\n this._params.lps2IJK,\n this._handles[this._handles.length - 1]._worldPosition\n );\n const region = this._regions[this.getRegionByXY(this._regions, pointF)];\n const axisY = region.y0 + (region.axisY || 0); // data coordinate equal to US region's zero Y coordinate\n\n const WidgetsHandle = widgetsHandleFactory(three);\n const params = { hideHandleMesh: this._params.hideHandleMesh || false };\n\n pointF.y = axisY;\n pointL.y = axisY;\n this._usPoints = [\n this.getPointInRegion(region, pointL),\n this.getPointInRegion(region, pointF),\n ];\n\n params.worldPosition = pointL.applyMatrix4(this._params.ijk2LPS); // projection of last point on Y axis\n this._handles.push(new WidgetsHandle(this._targetMesh, this._controls, params));\n this.add(this._handles[this._handles.length - 1]);\n\n params.worldPosition = pointF.applyMatrix4(this._params.ijk2LPS); // projection of first point on Y axis\n this._handles.push(new WidgetsHandle(this._targetMesh, this._controls, params));\n this.add(this._handles[this._handles.length - 1]);\n\n while (this._lines.length < this._handles.length) {\n this.createLine();\n }\n }\n\n update() {\n this.updateColor();\n\n // update handles\n this._handles.forEach(elem => elem.update());\n\n // mesh stuff\n this.updateMesh();\n\n // DOM stuff\n this.updateDOMColor();\n this.updateDOMPosition();\n }\n\n updateValues() {\n const region = this._regions[\n this.getRegionByXY(\n this._regions,\n CoreUtils.worldToData(this._params.lps2IJK, this._handles[0]._worldPosition)\n )\n ];\n const boundaries = {\n xMin: Number.POSITIVE_INFINITY,\n xMax: Number.NEGATIVE_INFINITY,\n yMin: Number.POSITIVE_INFINITY,\n yMax: Number.NEGATIVE_INFINITY,\n };\n let pVelocity;\n let pGradient;\n let pTime;\n let totalTime = 0;\n\n this._vMax = 0;\n this._vMean = 0;\n this._gMean = 0;\n this._usPoints.splice(2);\n this._handles.slice(0, -2).forEach(elem => {\n const usPosition = this.getPointInRegion(\n region,\n CoreUtils.worldToData(this._params.lps2IJK, elem._worldPosition)\n );\n const velocity = Math.abs(usPosition.y / 100);\n const gradient = 4 * Math.pow(velocity, 2);\n\n if (this._vMax === null || velocity > this._vMax) {\n this._vMax = velocity;\n }\n boundaries.xMin = Math.min(usPosition.x, boundaries.xMin);\n boundaries.xMax = Math.max(usPosition.x, boundaries.xMax);\n boundaries.yMin = Math.min(usPosition.y, boundaries.yMin);\n boundaries.yMax = Math.max(usPosition.y, boundaries.yMax);\n\n if (pTime) {\n const length = Math.abs(usPosition.x - pTime);\n\n totalTime += length;\n this._vMean += (length * (pVelocity + velocity)) / 2;\n this._gMean += (length * (pGradient + gradient)) / 2;\n }\n\n pVelocity = velocity;\n pGradient = gradient;\n pTime = usPosition.x;\n this._usPoints.push(usPosition);\n });\n\n this._gMax = 4 * Math.pow(this._vMax, 2);\n this._vMean /= totalTime;\n this._gMean /= totalTime;\n this._envTi = totalTime * 1000;\n this._vti = this.getArea(this._usPoints);\n\n this._shapeWarn =\n boundaries.xMax - boundaries.xMin !== totalTime ||\n boundaries.yMin < 0 !== boundaries.yMax < 0;\n }\n\n updateMesh() {\n if (this._mesh) {\n this.remove(this._mesh);\n }\n\n this._geometry = new three.Geometry();\n this._handles.forEach(elem => this._geometry.vertices.push(elem.worldPosition));\n this._geometry.vertices.push(this._handles[0].worldPosition);\n this._geometry.verticesNeedUpdate = true;\n\n this.updateMeshColor();\n\n this._mesh = new three.Line(this._geometry, this._material);\n this._mesh.visible = true;\n this.add(this._mesh);\n }\n\n updateMeshColor() {\n if (this._material) {\n this._material.color.set(this._color);\n }\n }\n\n updateDOMColor() {\n if (this._handles.length >= 2) {\n this._lines.forEach(elem => (elem.style.backgroundColor = this._color));\n }\n this._label.style.borderColor = this._color;\n }\n\n updateDOMContent(clear) {\n const vMaxContainer = this._label.querySelector('.vmax');\n const vMeanContainer = this._label.querySelector('.vmean');\n const gMaxContainer = this._label.querySelector('.gmax');\n const gMeanContainer = this._label.querySelector('.gmean');\n const envTiContainer = this._label.querySelector('.envti');\n const vtiContainer = this._label.querySelector('.vti');\n const infoContainer = this._label.querySelector('.info');\n\n if (clear) {\n vMaxContainer.innerHTML = '';\n vMeanContainer.innerHTML = '';\n gMaxContainer.innerHTML = '';\n gMeanContainer.innerHTML = '';\n envTiContainer.innerHTML = '';\n vtiContainer.innerHTML = '';\n infoContainer.innerHTML = '';\n\n return;\n }\n\n this.updateValues();\n\n if (this._shapeWarn && !this._label.hasAttribute('title')) {\n this._label.setAttribute('title', 'Values may be incorrect due to invalid curve.');\n this._label.style.color = this._colors.error;\n } else if (!this._shapeWarn && this._label.hasAttribute('title')) {\n this._label.removeAttribute('title');\n this._label.style.color = this._colors.text;\n }\n\n vMaxContainer.innerHTML = `Vmax: ${this._vMax.toFixed(2)} m/s`;\n vMeanContainer.innerHTML = `Vmean: ${this._vMean.toFixed(2)} m/s`;\n gMaxContainer.innerHTML = `Gmax: ${this._gMax.toFixed(2)} mmhg`;\n gMeanContainer.innerHTML = `Gmean: ${this._gMean.toFixed(2)} mmhg`;\n envTiContainer.innerHTML = `Env.Ti: ${this._envTi.toFixed(1)} ms`;\n vtiContainer.innerHTML = `VTI: ${this._vti.toFixed(2)} cm`;\n infoContainer.innerHTML = this._extraInfo;\n }\n\n updateDOMPosition() {\n if (this._handles.length < 2) {\n return;\n }\n // update lines and get coordinates of lowest handle\n let labelPosition = null;\n\n this._lines.forEach((elem, ind) => {\n const lineData = this.getLineData(\n this._handles[ind].screenPosition,\n this._handles[ind + 1 === this._handles.length ? 0 : ind + 1].screenPosition\n );\n\n elem.style.transform = `translate3D(${lineData.transformX}px, ${lineData.transformY}px, 0)\n rotate(${lineData.transformAngle}rad)`;\n elem.style.width = lineData.length + 'px';\n\n if (labelPosition === null || labelPosition.y < this._handles[ind].screenPosition.y) {\n labelPosition = this._handles[ind].screenPosition.clone();\n }\n });\n\n if (!this._initialized) {\n return;\n }\n\n // update label\n labelPosition.y += 15 + this._label.offsetHeight / 2;\n labelPosition = this.adjustLabelTransform(this._label, labelPosition);\n\n this._label.style.transform = `translate3D(${labelPosition.x}px, ${labelPosition.y}px, 0)`;\n }\n\n hideDOM() {\n this._handles.forEach(elem => elem.hideDOM());\n\n this._lines.forEach(elem => (elem.style.display = 'none'));\n this._label.style.display = 'none';\n }\n\n showDOM() {\n this._handles.forEach(elem => elem.showDOM());\n\n this._lines.forEach(elem => (elem.style.display = ''));\n this._label.style.display = '';\n }\n\n free() {\n this.removeEventListeners();\n\n this._handles.forEach(elem => {\n this.remove(elem);\n elem.free();\n });\n this._handles = [];\n this._usPoints = [];\n\n this.remove(this._moveHandle);\n this._moveHandle.free();\n this._moveHandle = null;\n\n this._lines.forEach(elem => {\n elem.removeEventListener('mouseenter', this.onHover);\n elem.removeEventListener('mouseleave', this.onHover);\n this._container.removeChild(elem);\n });\n this._lines = [];\n this._container.removeChild(this._label);\n\n // mesh, geometry, material\n if (this._mesh) {\n this.remove(this._mesh);\n this._mesh.geometry.dispose();\n this._mesh.geometry = null;\n this._mesh.material.dispose();\n this._mesh.material = null;\n this._mesh = null;\n }\n if (this._geometry) {\n this._geometry.dispose();\n this._geometry = null;\n }\n this._material.vertexShader = null;\n this._material.fragmentShader = null;\n this._material.uniforms = null;\n this._material.dispose();\n this._material = null;\n\n super.free();\n }\n\n getMeasurements() {\n return {\n vMax: this._vMax,\n vMean: this._vMean,\n gMax: this._gMax,\n gMean: this._gMean,\n envTi: this._envTi,\n vti: this._vti,\n };\n }\n\n get targetMesh() {\n return this._targetMesh;\n }\n\n set targetMesh(targetMesh) {\n this._targetMesh = targetMesh;\n this._handles.forEach(elem => (elem.targetMesh = targetMesh));\n this._moveHandle.targetMesh = targetMesh;\n this.update();\n }\n\n get worldPosition() {\n return this._worldPosition;\n }\n\n set worldPosition(worldPosition) {\n this._handles.forEach(elem => elem._worldPosition.copy(worldPosition));\n this._worldPosition.copy(worldPosition);\n this.update();\n }\n\n get extraInfo() {\n return this._extraInfo;\n }\n\n set extraInfo(info) {\n this._extraInfo = info;\n this._label.querySelector('.info').innerHTML = info;\n }\n };\n};\n\nexport { widgetsVelocityTimeIntegral };\nexport default widgetsVelocityTimeIntegral();\n","import { widgetsBase } from './widgets.base';\nimport { widgetsHandle as widgetsHandleFactory } from './widgets.handle';\nimport ModelsVoxel from '../models/models.voxel';\nimport CoreUtils from '../core/core.utils';\n\n/**\n * @module widgets/voxelProbe\n */\nconst widgetsVoxelprobe = (three = window.THREE) => {\n if (three === undefined || three.Object3D === undefined) {\n return null;\n }\n\n const Constructor = widgetsBase(three);\n return class extends Constructor {\n constructor(targetMesh, controls, params = {}) {\n super(targetMesh, controls, params);\n\n this._widgetType = 'VoxelProbe';\n\n // incoming parameters (optional: worldPosition)\n this._stack = params.stack; // required\n\n this._container.style.cursor = 'pointer';\n this._controls.enabled = false; // controls should be disabled for widgets with a single handle\n this._initialized = false; // set to true onEnd\n this._active = true;\n this._moving = true;\n this._domHovered = false;\n\n // dom stuff\n this._label = null;\n\n // handle (represent voxel)\n const WidgetsHandle = widgetsHandleFactory(three);\n this._handle = new WidgetsHandle(targetMesh, controls, params);\n this.add(this._handle);\n\n this._moveHandle = new WidgetsHandle(targetMesh, controls, params);\n this.add(this._moveHandle);\n this._moveHandle.hide();\n\n this.create();\n\n // event listeners\n this.onMove = this.onMove.bind(this);\n this.onHover = this.onHover.bind(this);\n this.addEventListeners();\n }\n\n addEventListeners() {\n this._label.addEventListener('mouseenter', this.onHover);\n this._label.addEventListener('mouseleave', this.onHover);\n\n this._container.addEventListener('wheel', this.onMove);\n }\n\n removeEventListeners() {\n this._label.removeEventListener('mouseenter', this.onHover);\n this._label.removeEventListener('mouseleave', this.onHover);\n\n this._container.removeEventListener('wheel', this.onMove);\n }\n\n onStart(evt) {\n this._moveHandle.onMove(evt, true);\n this._handle.onStart(evt);\n\n this._active = this._handle.active || this._domHovered;\n\n if (this._domHovered) {\n this._moving = true;\n this._controls.enabled = false;\n }\n\n this.update();\n }\n\n onMove(evt) {\n if (this._active) {\n const prevPosition = this._moveHandle.worldPosition.clone();\n\n this._dragged = true;\n this._moveHandle.onMove(evt, true);\n\n if (this._moving) {\n this._handle.worldPosition.add(this._moveHandle.worldPosition.clone().sub(prevPosition));\n }\n } else {\n this.onHover(null);\n }\n\n this._handle.onMove(evt);\n\n this.update();\n }\n\n onEnd() {\n this._handle.onEnd();\n\n if (!this._dragged && this._active && this._initialized) {\n this._selected = !this._selected; // change state if there was no dragging\n this._handle.selected = this._selected;\n }\n\n this._initialized = true;\n this._active = this._handle.active;\n this._dragged = false;\n this._moving = false;\n\n this.update();\n }\n\n onHover(evt) {\n if (evt) {\n this.hoverDom(evt);\n }\n\n this._hovered = this._handle.hovered || this._domHovered;\n this._container.style.cursor = this._hovered ? 'pointer' : 'default';\n }\n\n hoverDom(evt) {\n this._domHovered = evt.type === 'mouseenter';\n }\n\n create() {\n this.createVoxel();\n this.createDOM();\n }\n\n createVoxel() {\n this._voxel = new ModelsVoxel();\n this._voxel.id = this.id;\n }\n\n createDOM() {\n this._label = document.createElement('div');\n this._label.className = 'widgets-label';\n\n // measurements\n let measurementsContainer = document.createElement('div');\n // LPS\n let lpsContainer = document.createElement('div');\n lpsContainer.className = 'lpsPosition';\n measurementsContainer.appendChild(lpsContainer);\n // IJK\n let ijkContainer = document.createElement('div');\n ijkContainer.className = 'ijkPosition';\n measurementsContainer.appendChild(ijkContainer);\n // Value\n let valueContainer = document.createElement('div');\n valueContainer.className = 'value';\n measurementsContainer.appendChild(valueContainer);\n\n this._label.appendChild(measurementsContainer);\n\n this._container.appendChild(this._label);\n\n this.updateDOMColor();\n }\n\n update() {\n this.updateColor();\n\n this._handle.update();\n this._worldPosition.copy(this._handle.worldPosition);\n\n this.updateVoxel(); // set data coordinates && value\n\n this.updateDOM();\n }\n\n updateVoxel() {\n this._voxel.worldCoordinates = this._worldPosition;\n this._voxel.dataCoordinates = CoreUtils.worldToData(this._stack.lps2IJK, this._worldPosition);\n\n // update value\n let value = CoreUtils.getPixelData(this._stack, this._voxel.dataCoordinates);\n\n this._voxel.value =\n value === null || this._stack.numberOfChannels > 1\n ? 'NA' // coordinates outside the image or RGB\n : CoreUtils.rescaleSlopeIntercept(\n value,\n this._stack.rescaleSlope,\n this._stack.rescaleIntercept\n ).toFixed();\n }\n\n updateDOM() {\n const rasContainer = this._label.querySelector('.lpsPosition');\n const ijkContainer = this._label.querySelector('.ijkPosition');\n const valueContainer = this._label.querySelector('.value');\n\n rasContainer.innerHTML = `LPS: \n ${this._voxel.worldCoordinates.x.toFixed(2)} :\n ${this._voxel.worldCoordinates.y.toFixed(2)} :\n ${this._voxel.worldCoordinates.z.toFixed(2)}`;\n ijkContainer.innerHTML = `IJK: \n ${this._voxel.dataCoordinates.x} :\n ${this._voxel.dataCoordinates.y} :\n ${this._voxel.dataCoordinates.z}`;\n valueContainer.innerHTML = `Value: ${this._voxel.value}`;\n\n this.updateDOMColor();\n\n const transform = this.adjustLabelTransform(this._label, this._handle.screenPosition, true);\n\n this._label.style.transform = `translate3D(${transform.x}px, ${transform.y}px, 0)`;\n }\n\n updateDOMColor() {\n this._label.style.borderColor = this._color;\n }\n\n free() {\n this.removeEventListeners();\n\n this.remove(this._handle);\n this._handle.free();\n this._handle = null;\n this.remove(this._moveHandle);\n this._moveHandle.free();\n this._moveHandle = null;\n\n this._container.removeChild(this._label);\n\n this._stack = null;\n this._voxel = null;\n\n super.free();\n }\n\n hideDOM() {\n this._label.style.display = 'none';\n this._handle.hideDOM();\n }\n\n showDOM() {\n this._label.style.display = '';\n this._handle.showDOM();\n }\n\n get targetMesh() {\n return this._targetMesh;\n }\n\n set targetMesh(targetMesh) {\n this._targetMesh = targetMesh;\n this._handle.targetMesh = targetMesh;\n this._moveHandle.targetMesh = targetMesh;\n this.update();\n }\n\n get worldPosition() {\n return this._worldPosition;\n }\n\n set worldPosition(worldPosition) {\n this._handle.worldPosition.copy(worldPosition);\n this._moveHandle.worldPosition.copy(worldPosition);\n this._worldPosition.copy(worldPosition);\n this.update();\n }\n\n get active() {\n return this._active;\n }\n\n set active(active) {\n this._active = active;\n this._controls.enabled = !this._active;\n\n this.update();\n }\n };\n};\n\nexport { widgetsVoxelprobe };\nexport default widgetsVoxelprobe();\n","/*!\n * assign-symbols \n *\n * Copyright (c) 2015, Jon Schlinkert.\n * Licensed under the MIT License.\n */\n\n'use strict';\n\nmodule.exports = function(receiver, objects) {\n if (receiver === null || typeof receiver === 'undefined') {\n throw new TypeError('expected first argument to be an object.');\n }\n\n if (typeof objects === 'undefined' || typeof Symbol === 'undefined') {\n return receiver;\n }\n\n if (typeof Object.getOwnPropertySymbols !== 'function') {\n return receiver;\n }\n\n var isEnumerable = Object.prototype.propertyIsEnumerable;\n var target = Object(receiver);\n var len = arguments.length, i = 0;\n\n while (++i < len) {\n var provider = Object(arguments[i]);\n var names = Object.getOwnPropertySymbols(provider);\n\n for (var j = 0; j < names.length; j++) {\n var key = names[j];\n\n if (isEnumerable.call(provider, key)) {\n target[key] = provider[key];\n }\n }\n }\n return target;\n};\n","\"use strict\";\n\nexports.__esModule = true;\n\nexports.default = function (file, acceptedFiles) {\n if (file && acceptedFiles) {\n var acceptedFilesArray = Array.isArray(acceptedFiles) ? acceptedFiles : acceptedFiles.split(',');\n var fileName = file.name || '';\n var mimeType = (file.type || '').toLowerCase();\n var baseMimeType = mimeType.replace(/\\/.*$/, '');\n return acceptedFilesArray.some(function (type) {\n var validType = type.trim().toLowerCase();\n\n if (validType.charAt(0) === '.') {\n return fileName.toLowerCase().endsWith(validType);\n } else if (validType.endsWith('/*')) {\n // This is something like a image/* mime type\n return baseMimeType === validType.replace(/\\/.*$/, '');\n }\n\n return mimeType === validType;\n });\n }\n\n return true;\n};","'use strict'\n\nexports.byteLength = byteLength\nexports.toByteArray = toByteArray\nexports.fromByteArray = fromByteArray\n\nvar lookup = []\nvar revLookup = []\nvar Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array\n\nvar code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'\nfor (var i = 0, len = code.length; i < len; ++i) {\n lookup[i] = code[i]\n revLookup[code.charCodeAt(i)] = i\n}\n\n// Support decoding URL-safe base64 strings, as Node.js does.\n// See: https://en.wikipedia.org/wiki/Base64#URL_applications\nrevLookup['-'.charCodeAt(0)] = 62\nrevLookup['_'.charCodeAt(0)] = 63\n\nfunction getLens (b64) {\n var len = b64.length\n\n if (len % 4 > 0) {\n throw new Error('Invalid string. Length must be a multiple of 4')\n }\n\n // Trim off extra bytes after placeholder bytes are found\n // See: https://github.com/beatgammit/base64-js/issues/42\n var validLen = b64.indexOf('=')\n if (validLen === -1) validLen = len\n\n var placeHoldersLen = validLen === len\n ? 0\n : 4 - (validLen % 4)\n\n return [validLen, placeHoldersLen]\n}\n\n// base64 is 4/3 + up to two characters of the original data\nfunction byteLength (b64) {\n var lens = getLens(b64)\n var validLen = lens[0]\n var placeHoldersLen = lens[1]\n return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction _byteLength (b64, validLen, placeHoldersLen) {\n return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction toByteArray (b64) {\n var tmp\n var lens = getLens(b64)\n var validLen = lens[0]\n var placeHoldersLen = lens[1]\n\n var arr = new Arr(_byteLength(b64, validLen, placeHoldersLen))\n\n var curByte = 0\n\n // if there are placeholders, only get up to the last complete 4 chars\n var len = placeHoldersLen > 0\n ? validLen - 4\n : validLen\n\n var i\n for (i = 0; i < len; i += 4) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 18) |\n (revLookup[b64.charCodeAt(i + 1)] << 12) |\n (revLookup[b64.charCodeAt(i + 2)] << 6) |\n revLookup[b64.charCodeAt(i + 3)]\n arr[curByte++] = (tmp >> 16) & 0xFF\n arr[curByte++] = (tmp >> 8) & 0xFF\n arr[curByte++] = tmp & 0xFF\n }\n\n if (placeHoldersLen === 2) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 2) |\n (revLookup[b64.charCodeAt(i + 1)] >> 4)\n arr[curByte++] = tmp & 0xFF\n }\n\n if (placeHoldersLen === 1) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 10) |\n (revLookup[b64.charCodeAt(i + 1)] << 4) |\n (revLookup[b64.charCodeAt(i + 2)] >> 2)\n arr[curByte++] = (tmp >> 8) & 0xFF\n arr[curByte++] = tmp & 0xFF\n }\n\n return arr\n}\n\nfunction tripletToBase64 (num) {\n return lookup[num >> 18 & 0x3F] +\n lookup[num >> 12 & 0x3F] +\n lookup[num >> 6 & 0x3F] +\n lookup[num & 0x3F]\n}\n\nfunction encodeChunk (uint8, start, end) {\n var tmp\n var output = []\n for (var i = start; i < end; i += 3) {\n tmp =\n ((uint8[i] << 16) & 0xFF0000) +\n ((uint8[i + 1] << 8) & 0xFF00) +\n (uint8[i + 2] & 0xFF)\n output.push(tripletToBase64(tmp))\n }\n return output.join('')\n}\n\nfunction fromByteArray (uint8) {\n var tmp\n var len = uint8.length\n var extraBytes = len % 3 // if we have 1 byte left, pad 2 bytes\n var parts = []\n var maxChunkLength = 16383 // must be multiple of 3\n\n // go through the array every three bytes, we'll deal with trailing stuff later\n for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) {\n parts.push(encodeChunk(uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength)))\n }\n\n // pad the end with zeros, but make sure to not forget the extra bytes\n if (extraBytes === 1) {\n tmp = uint8[len - 1]\n parts.push(\n lookup[tmp >> 2] +\n lookup[(tmp << 4) & 0x3F] +\n '=='\n )\n } else if (extraBytes === 2) {\n tmp = (uint8[len - 2] << 8) + uint8[len - 1]\n parts.push(\n lookup[tmp >> 10] +\n lookup[(tmp >> 4) & 0x3F] +\n lookup[(tmp << 2) & 0x3F] +\n '='\n )\n }\n\n return parts.join('')\n}\n","var DuplexStream = require('readable-stream').Duplex\n , util = require('util')\n\nfunction BufferList (callback) {\n if (!(this instanceof BufferList))\n return new BufferList(callback)\n\n this._bufs = []\n this.length = 0\n\n if (typeof callback == 'function') {\n this._callback = callback\n\n var piper = function (err) {\n if (this._callback) {\n this._callback(err)\n this._callback = null\n }\n }.bind(this)\n\n this.on('pipe', function (src) {\n src.on('error', piper)\n })\n this.on('unpipe', function (src) {\n src.removeListener('error', piper)\n })\n }\n else if (Buffer.isBuffer(callback))\n this.append(callback)\n else if (Array.isArray(callback)) {\n callback.forEach(function (b) {\n Buffer.isBuffer(b) && this.append(b)\n }.bind(this))\n }\n\n DuplexStream.call(this)\n}\n\nutil.inherits(BufferList, DuplexStream)\n\nBufferList.prototype._offset = function (offset) {\n var tot = 0, i = 0, _t\n for (; i < this._bufs.length; i++) {\n _t = tot + this._bufs[i].length\n if (offset < _t)\n return [ i, offset - tot ]\n tot = _t\n }\n}\n\nBufferList.prototype.append = function (buf) {\n this._bufs.push(Buffer.isBuffer(buf) ? buf : new Buffer(buf))\n this.length += buf.length\n return this\n}\n\nBufferList.prototype._write = function (buf, encoding, callback) {\n this.append(buf)\n if (callback)\n callback()\n}\n\nBufferList.prototype._read = function (size) {\n if (!this.length)\n return this.push(null)\n size = Math.min(size, this.length)\n this.push(this.slice(0, size))\n this.consume(size)\n}\n\nBufferList.prototype.end = function (chunk) {\n DuplexStream.prototype.end.call(this, chunk)\n\n if (this._callback) {\n this._callback(null, this.slice())\n this._callback = null\n }\n}\n\nBufferList.prototype.get = function (index) {\n return this.slice(index, index + 1)[0]\n}\n\nBufferList.prototype.slice = function (start, end) {\n return this.copy(null, 0, start, end)\n}\n\nBufferList.prototype.copy = function (dst, dstStart, srcStart, srcEnd) {\n if (typeof srcStart != 'number' || srcStart < 0)\n srcStart = 0\n if (typeof srcEnd != 'number' || srcEnd > this.length)\n srcEnd = this.length\n if (srcStart >= this.length)\n return dst || new Buffer(0)\n if (srcEnd <= 0)\n return dst || new Buffer(0)\n\n var copy = !!dst\n , off = this._offset(srcStart)\n , len = srcEnd - srcStart\n , bytes = len\n , bufoff = (copy && dstStart) || 0\n , start = off[1]\n , l\n , i\n\n // copy/slice everything\n if (srcStart === 0 && srcEnd == this.length) {\n if (!copy) // slice, just return a full concat\n return Buffer.concat(this._bufs)\n\n // copy, need to copy individual buffers\n for (i = 0; i < this._bufs.length; i++) {\n this._bufs[i].copy(dst, bufoff)\n bufoff += this._bufs[i].length\n }\n\n return dst\n }\n\n // easy, cheap case where it's a subset of one of the buffers\n if (bytes <= this._bufs[off[0]].length - start) {\n return copy\n ? this._bufs[off[0]].copy(dst, dstStart, start, start + bytes)\n : this._bufs[off[0]].slice(start, start + bytes)\n }\n\n if (!copy) // a slice, we need something to copy in to\n dst = new Buffer(len)\n\n for (i = off[0]; i < this._bufs.length; i++) {\n l = this._bufs[i].length - start\n\n if (bytes > l) {\n this._bufs[i].copy(dst, bufoff, start)\n } else {\n this._bufs[i].copy(dst, bufoff, start, start + bytes)\n break\n }\n\n bufoff += l\n bytes -= l\n\n if (start)\n start = 0\n }\n\n return dst\n}\n\nBufferList.prototype.toString = function (encoding, start, end) {\n return this.slice(start, end).toString(encoding)\n}\n\nBufferList.prototype.consume = function (bytes) {\n while (this._bufs.length) {\n if (bytes > this._bufs[0].length) {\n bytes -= this._bufs[0].length\n this.length -= this._bufs[0].length\n this._bufs.shift()\n } else {\n this._bufs[0] = this._bufs[0].slice(bytes)\n this.length -= bytes\n break\n }\n }\n return this\n}\n\nBufferList.prototype.duplicate = function () {\n var i = 0\n , copy = new BufferList()\n\n for (; i < this._bufs.length; i++)\n copy.append(this._bufs[i])\n\n return copy\n}\n\nBufferList.prototype.destroy = function () {\n this._bufs.length = 0;\n this.length = 0;\n this.push(null);\n}\n\n;(function () {\n var methods = {\n 'readDoubleBE' : 8\n , 'readDoubleLE' : 8\n , 'readFloatBE' : 4\n , 'readFloatLE' : 4\n , 'readInt32BE' : 4\n , 'readInt32LE' : 4\n , 'readUInt32BE' : 4\n , 'readUInt32LE' : 4\n , 'readInt16BE' : 2\n , 'readInt16LE' : 2\n , 'readUInt16BE' : 2\n , 'readUInt16LE' : 2\n , 'readInt8' : 1\n , 'readUInt8' : 1\n }\n\n for (var m in methods) {\n (function (m) {\n BufferList.prototype[m] = function (offset) {\n return this.slice(offset, offset + methods[m])[m](0)\n }\n }(m))\n }\n}())\n\nmodule.exports = BufferList\n","module.exports = Array.isArray || function (arr) {\n return Object.prototype.toString.call(arr) == '[object Array]';\n};\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// a duplex stream is just a stream that is both readable and writable.\n// Since JS doesn't have multiple prototypal inheritance, this class\n// prototypally inherits from Readable, and then parasitically from\n// Writable.\n\nmodule.exports = Duplex;\n\n/**/\nvar objectKeys = Object.keys || function (obj) {\n var keys = [];\n for (var key in obj) keys.push(key);\n return keys;\n}\n/**/\n\n\n/**/\nvar util = require('core-util-is');\nutil.inherits = require('inherits');\n/**/\n\nvar Readable = require('./_stream_readable');\nvar Writable = require('./_stream_writable');\n\nutil.inherits(Duplex, Readable);\n\nforEach(objectKeys(Writable.prototype), function(method) {\n if (!Duplex.prototype[method])\n Duplex.prototype[method] = Writable.prototype[method];\n});\n\nfunction Duplex(options) {\n if (!(this instanceof Duplex))\n return new Duplex(options);\n\n Readable.call(this, options);\n Writable.call(this, options);\n\n if (options && options.readable === false)\n this.readable = false;\n\n if (options && options.writable === false)\n this.writable = false;\n\n this.allowHalfOpen = true;\n if (options && options.allowHalfOpen === false)\n this.allowHalfOpen = false;\n\n this.once('end', onend);\n}\n\n// the no-half-open enforcer\nfunction onend() {\n // if we allow half-open state, or if the writable side ended,\n // then we're ok.\n if (this.allowHalfOpen || this._writableState.ended)\n return;\n\n // no more data can be written.\n // But allow more writes to happen in this tick.\n process.nextTick(this.end.bind(this));\n}\n\nfunction forEach (xs, f) {\n for (var i = 0, l = xs.length; i < l; i++) {\n f(xs[i], i);\n }\n}\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// a passthrough stream.\n// basically just the most minimal sort of Transform stream.\n// Every written chunk gets output as-is.\n\nmodule.exports = PassThrough;\n\nvar Transform = require('./_stream_transform');\n\n/**/\nvar util = require('core-util-is');\nutil.inherits = require('inherits');\n/**/\n\nutil.inherits(PassThrough, Transform);\n\nfunction PassThrough(options) {\n if (!(this instanceof PassThrough))\n return new PassThrough(options);\n\n Transform.call(this, options);\n}\n\nPassThrough.prototype._transform = function(chunk, encoding, cb) {\n cb(null, chunk);\n};\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\nmodule.exports = Readable;\n\n/**/\nvar isArray = require('isarray');\n/**/\n\n\n/**/\nvar Buffer = require('buffer').Buffer;\n/**/\n\nReadable.ReadableState = ReadableState;\n\nvar EE = require('events').EventEmitter;\n\n/**/\nif (!EE.listenerCount) EE.listenerCount = function(emitter, type) {\n return emitter.listeners(type).length;\n};\n/**/\n\nvar Stream = require('stream');\n\n/**/\nvar util = require('core-util-is');\nutil.inherits = require('inherits');\n/**/\n\nvar StringDecoder;\n\nutil.inherits(Readable, Stream);\n\nfunction ReadableState(options, stream) {\n options = options || {};\n\n // the point at which it stops calling _read() to fill the buffer\n // Note: 0 is a valid value, means \"don't call _read preemptively ever\"\n var hwm = options.highWaterMark;\n this.highWaterMark = (hwm || hwm === 0) ? hwm : 16 * 1024;\n\n // cast to ints.\n this.highWaterMark = ~~this.highWaterMark;\n\n this.buffer = [];\n this.length = 0;\n this.pipes = null;\n this.pipesCount = 0;\n this.flowing = false;\n this.ended = false;\n this.endEmitted = false;\n this.reading = false;\n\n // In streams that never have any data, and do push(null) right away,\n // the consumer can miss the 'end' event if they do some I/O before\n // consuming the stream. So, we don't emit('end') until some reading\n // happens.\n this.calledRead = false;\n\n // a flag to be able to tell if the onwrite cb is called immediately,\n // or on a later tick. We set this to true at first, becuase any\n // actions that shouldn't happen until \"later\" should generally also\n // not happen before the first write call.\n this.sync = true;\n\n // whenever we return null, then we set a flag to say\n // that we're awaiting a 'readable' event emission.\n this.needReadable = false;\n this.emittedReadable = false;\n this.readableListening = false;\n\n\n // object stream flag. Used to make read(n) ignore n and to\n // make all the buffer merging and length checks go away\n this.objectMode = !!options.objectMode;\n\n // Crypto is kind of old and crusty. Historically, its default string\n // encoding is 'binary' so we have to make this configurable.\n // Everything else in the universe uses 'utf8', though.\n this.defaultEncoding = options.defaultEncoding || 'utf8';\n\n // when piping, we only care about 'readable' events that happen\n // after read()ing all the bytes and not getting any pushback.\n this.ranOut = false;\n\n // the number of writers that are awaiting a drain event in .pipe()s\n this.awaitDrain = 0;\n\n // if true, a maybeReadMore has been scheduled\n this.readingMore = false;\n\n this.decoder = null;\n this.encoding = null;\n if (options.encoding) {\n if (!StringDecoder)\n StringDecoder = require('string_decoder/').StringDecoder;\n this.decoder = new StringDecoder(options.encoding);\n this.encoding = options.encoding;\n }\n}\n\nfunction Readable(options) {\n if (!(this instanceof Readable))\n return new Readable(options);\n\n this._readableState = new ReadableState(options, this);\n\n // legacy\n this.readable = true;\n\n Stream.call(this);\n}\n\n// Manually shove something into the read() buffer.\n// This returns true if the highWaterMark has not been hit yet,\n// similar to how Writable.write() returns true if you should\n// write() some more.\nReadable.prototype.push = function(chunk, encoding) {\n var state = this._readableState;\n\n if (typeof chunk === 'string' && !state.objectMode) {\n encoding = encoding || state.defaultEncoding;\n if (encoding !== state.encoding) {\n chunk = new Buffer(chunk, encoding);\n encoding = '';\n }\n }\n\n return readableAddChunk(this, state, chunk, encoding, false);\n};\n\n// Unshift should *always* be something directly out of read()\nReadable.prototype.unshift = function(chunk) {\n var state = this._readableState;\n return readableAddChunk(this, state, chunk, '', true);\n};\n\nfunction readableAddChunk(stream, state, chunk, encoding, addToFront) {\n var er = chunkInvalid(state, chunk);\n if (er) {\n stream.emit('error', er);\n } else if (chunk === null || chunk === undefined) {\n state.reading = false;\n if (!state.ended)\n onEofChunk(stream, state);\n } else if (state.objectMode || chunk && chunk.length > 0) {\n if (state.ended && !addToFront) {\n var e = new Error('stream.push() after EOF');\n stream.emit('error', e);\n } else if (state.endEmitted && addToFront) {\n var e = new Error('stream.unshift() after end event');\n stream.emit('error', e);\n } else {\n if (state.decoder && !addToFront && !encoding)\n chunk = state.decoder.write(chunk);\n\n // update the buffer info.\n state.length += state.objectMode ? 1 : chunk.length;\n if (addToFront) {\n state.buffer.unshift(chunk);\n } else {\n state.reading = false;\n state.buffer.push(chunk);\n }\n\n if (state.needReadable)\n emitReadable(stream);\n\n maybeReadMore(stream, state);\n }\n } else if (!addToFront) {\n state.reading = false;\n }\n\n return needMoreData(state);\n}\n\n\n\n// if it's past the high water mark, we can push in some more.\n// Also, if we have no data yet, we can stand some\n// more bytes. This is to work around cases where hwm=0,\n// such as the repl. Also, if the push() triggered a\n// readable event, and the user called read(largeNumber) such that\n// needReadable was set, then we ought to push more, so that another\n// 'readable' event will be triggered.\nfunction needMoreData(state) {\n return !state.ended &&\n (state.needReadable ||\n state.length < state.highWaterMark ||\n state.length === 0);\n}\n\n// backwards compatibility.\nReadable.prototype.setEncoding = function(enc) {\n if (!StringDecoder)\n StringDecoder = require('string_decoder/').StringDecoder;\n this._readableState.decoder = new StringDecoder(enc);\n this._readableState.encoding = enc;\n};\n\n// Don't raise the hwm > 128MB\nvar MAX_HWM = 0x800000;\nfunction roundUpToNextPowerOf2(n) {\n if (n >= MAX_HWM) {\n n = MAX_HWM;\n } else {\n // Get the next highest power of 2\n n--;\n for (var p = 1; p < 32; p <<= 1) n |= n >> p;\n n++;\n }\n return n;\n}\n\nfunction howMuchToRead(n, state) {\n if (state.length === 0 && state.ended)\n return 0;\n\n if (state.objectMode)\n return n === 0 ? 0 : 1;\n\n if (n === null || isNaN(n)) {\n // only flow one buffer at a time\n if (state.flowing && state.buffer.length)\n return state.buffer[0].length;\n else\n return state.length;\n }\n\n if (n <= 0)\n return 0;\n\n // If we're asking for more than the target buffer level,\n // then raise the water mark. Bump up to the next highest\n // power of 2, to prevent increasing it excessively in tiny\n // amounts.\n if (n > state.highWaterMark)\n state.highWaterMark = roundUpToNextPowerOf2(n);\n\n // don't have that much. return null, unless we've ended.\n if (n > state.length) {\n if (!state.ended) {\n state.needReadable = true;\n return 0;\n } else\n return state.length;\n }\n\n return n;\n}\n\n// you can override either this method, or the async _read(n) below.\nReadable.prototype.read = function(n) {\n var state = this._readableState;\n state.calledRead = true;\n var nOrig = n;\n var ret;\n\n if (typeof n !== 'number' || n > 0)\n state.emittedReadable = false;\n\n // if we're doing read(0) to trigger a readable event, but we\n // already have a bunch of data in the buffer, then just trigger\n // the 'readable' event and move on.\n if (n === 0 &&\n state.needReadable &&\n (state.length >= state.highWaterMark || state.ended)) {\n emitReadable(this);\n return null;\n }\n\n n = howMuchToRead(n, state);\n\n // if we've ended, and we're now clear, then finish it up.\n if (n === 0 && state.ended) {\n ret = null;\n\n // In cases where the decoder did not receive enough data\n // to produce a full chunk, then immediately received an\n // EOF, state.buffer will contain [, ].\n // howMuchToRead will see this and coerce the amount to\n // read to zero (because it's looking at the length of the\n // first in state.buffer), and we'll end up here.\n //\n // This can only happen via state.decoder -- no other venue\n // exists for pushing a zero-length chunk into state.buffer\n // and triggering this behavior. In this case, we return our\n // remaining data and end the stream, if appropriate.\n if (state.length > 0 && state.decoder) {\n ret = fromList(n, state);\n state.length -= ret.length;\n }\n\n if (state.length === 0)\n endReadable(this);\n\n return ret;\n }\n\n // All the actual chunk generation logic needs to be\n // *below* the call to _read. The reason is that in certain\n // synthetic stream cases, such as passthrough streams, _read\n // may be a completely synchronous operation which may change\n // the state of the read buffer, providing enough data when\n // before there was *not* enough.\n //\n // So, the steps are:\n // 1. Figure out what the state of things will be after we do\n // a read from the buffer.\n //\n // 2. If that resulting state will trigger a _read, then call _read.\n // Note that this may be asynchronous, or synchronous. Yes, it is\n // deeply ugly to write APIs this way, but that still doesn't mean\n // that the Readable class should behave improperly, as streams are\n // designed to be sync/async agnostic.\n // Take note if the _read call is sync or async (ie, if the read call\n // has returned yet), so that we know whether or not it's safe to emit\n // 'readable' etc.\n //\n // 3. Actually pull the requested chunks out of the buffer and return.\n\n // if we need a readable event, then we need to do some reading.\n var doRead = state.needReadable;\n\n // if we currently have less than the highWaterMark, then also read some\n if (state.length - n <= state.highWaterMark)\n doRead = true;\n\n // however, if we've ended, then there's no point, and if we're already\n // reading, then it's unnecessary.\n if (state.ended || state.reading)\n doRead = false;\n\n if (doRead) {\n state.reading = true;\n state.sync = true;\n // if the length is currently zero, then we *need* a readable event.\n if (state.length === 0)\n state.needReadable = true;\n // call internal read method\n this._read(state.highWaterMark);\n state.sync = false;\n }\n\n // If _read called its callback synchronously, then `reading`\n // will be false, and we need to re-evaluate how much data we\n // can return to the user.\n if (doRead && !state.reading)\n n = howMuchToRead(nOrig, state);\n\n if (n > 0)\n ret = fromList(n, state);\n else\n ret = null;\n\n if (ret === null) {\n state.needReadable = true;\n n = 0;\n }\n\n state.length -= n;\n\n // If we have nothing in the buffer, then we want to know\n // as soon as we *do* get something into the buffer.\n if (state.length === 0 && !state.ended)\n state.needReadable = true;\n\n // If we happened to read() exactly the remaining amount in the\n // buffer, and the EOF has been seen at this point, then make sure\n // that we emit 'end' on the very next tick.\n if (state.ended && !state.endEmitted && state.length === 0)\n endReadable(this);\n\n return ret;\n};\n\nfunction chunkInvalid(state, chunk) {\n var er = null;\n if (!Buffer.isBuffer(chunk) &&\n 'string' !== typeof chunk &&\n chunk !== null &&\n chunk !== undefined &&\n !state.objectMode) {\n er = new TypeError('Invalid non-string/buffer chunk');\n }\n return er;\n}\n\n\nfunction onEofChunk(stream, state) {\n if (state.decoder && !state.ended) {\n var chunk = state.decoder.end();\n if (chunk && chunk.length) {\n state.buffer.push(chunk);\n state.length += state.objectMode ? 1 : chunk.length;\n }\n }\n state.ended = true;\n\n // if we've ended and we have some data left, then emit\n // 'readable' now to make sure it gets picked up.\n if (state.length > 0)\n emitReadable(stream);\n else\n endReadable(stream);\n}\n\n// Don't emit readable right away in sync mode, because this can trigger\n// another read() call => stack overflow. This way, it might trigger\n// a nextTick recursion warning, but that's not so bad.\nfunction emitReadable(stream) {\n var state = stream._readableState;\n state.needReadable = false;\n if (state.emittedReadable)\n return;\n\n state.emittedReadable = true;\n if (state.sync)\n process.nextTick(function() {\n emitReadable_(stream);\n });\n else\n emitReadable_(stream);\n}\n\nfunction emitReadable_(stream) {\n stream.emit('readable');\n}\n\n\n// at this point, the user has presumably seen the 'readable' event,\n// and called read() to consume some data. that may have triggered\n// in turn another _read(n) call, in which case reading = true if\n// it's in progress.\n// However, if we're not ended, or reading, and the length < hwm,\n// then go ahead and try to read some more preemptively.\nfunction maybeReadMore(stream, state) {\n if (!state.readingMore) {\n state.readingMore = true;\n process.nextTick(function() {\n maybeReadMore_(stream, state);\n });\n }\n}\n\nfunction maybeReadMore_(stream, state) {\n var len = state.length;\n while (!state.reading && !state.flowing && !state.ended &&\n state.length < state.highWaterMark) {\n stream.read(0);\n if (len === state.length)\n // didn't get any data, stop spinning.\n break;\n else\n len = state.length;\n }\n state.readingMore = false;\n}\n\n// abstract method. to be overridden in specific implementation classes.\n// call cb(er, data) where data is <= n in length.\n// for virtual (non-string, non-buffer) streams, \"length\" is somewhat\n// arbitrary, and perhaps not very meaningful.\nReadable.prototype._read = function(n) {\n this.emit('error', new Error('not implemented'));\n};\n\nReadable.prototype.pipe = function(dest, pipeOpts) {\n var src = this;\n var state = this._readableState;\n\n switch (state.pipesCount) {\n case 0:\n state.pipes = dest;\n break;\n case 1:\n state.pipes = [state.pipes, dest];\n break;\n default:\n state.pipes.push(dest);\n break;\n }\n state.pipesCount += 1;\n\n var doEnd = (!pipeOpts || pipeOpts.end !== false) &&\n dest !== process.stdout &&\n dest !== process.stderr;\n\n var endFn = doEnd ? onend : cleanup;\n if (state.endEmitted)\n process.nextTick(endFn);\n else\n src.once('end', endFn);\n\n dest.on('unpipe', onunpipe);\n function onunpipe(readable) {\n if (readable !== src) return;\n cleanup();\n }\n\n function onend() {\n dest.end();\n }\n\n // when the dest drains, it reduces the awaitDrain counter\n // on the source. This would be more elegant with a .once()\n // handler in flow(), but adding and removing repeatedly is\n // too slow.\n var ondrain = pipeOnDrain(src);\n dest.on('drain', ondrain);\n\n function cleanup() {\n // cleanup event handlers once the pipe is broken\n dest.removeListener('close', onclose);\n dest.removeListener('finish', onfinish);\n dest.removeListener('drain', ondrain);\n dest.removeListener('error', onerror);\n dest.removeListener('unpipe', onunpipe);\n src.removeListener('end', onend);\n src.removeListener('end', cleanup);\n\n // if the reader is waiting for a drain event from this\n // specific writer, then it would cause it to never start\n // flowing again.\n // So, if this is awaiting a drain, then we just call it now.\n // If we don't know, then assume that we are waiting for one.\n if (!dest._writableState || dest._writableState.needDrain)\n ondrain();\n }\n\n // if the dest has an error, then stop piping into it.\n // however, don't suppress the throwing behavior for this.\n function onerror(er) {\n unpipe();\n dest.removeListener('error', onerror);\n if (EE.listenerCount(dest, 'error') === 0)\n dest.emit('error', er);\n }\n // This is a brutally ugly hack to make sure that our error handler\n // is attached before any userland ones. NEVER DO THIS.\n if (!dest._events || !dest._events.error)\n dest.on('error', onerror);\n else if (isArray(dest._events.error))\n dest._events.error.unshift(onerror);\n else\n dest._events.error = [onerror, dest._events.error];\n\n\n\n // Both close and finish should trigger unpipe, but only once.\n function onclose() {\n dest.removeListener('finish', onfinish);\n unpipe();\n }\n dest.once('close', onclose);\n function onfinish() {\n dest.removeListener('close', onclose);\n unpipe();\n }\n dest.once('finish', onfinish);\n\n function unpipe() {\n src.unpipe(dest);\n }\n\n // tell the dest that it's being piped to\n dest.emit('pipe', src);\n\n // start the flow if it hasn't been started already.\n if (!state.flowing) {\n // the handler that waits for readable events after all\n // the data gets sucked out in flow.\n // This would be easier to follow with a .once() handler\n // in flow(), but that is too slow.\n this.on('readable', pipeOnReadable);\n\n state.flowing = true;\n process.nextTick(function() {\n flow(src);\n });\n }\n\n return dest;\n};\n\nfunction pipeOnDrain(src) {\n return function() {\n var dest = this;\n var state = src._readableState;\n state.awaitDrain--;\n if (state.awaitDrain === 0)\n flow(src);\n };\n}\n\nfunction flow(src) {\n var state = src._readableState;\n var chunk;\n state.awaitDrain = 0;\n\n function write(dest, i, list) {\n var written = dest.write(chunk);\n if (false === written) {\n state.awaitDrain++;\n }\n }\n\n while (state.pipesCount && null !== (chunk = src.read())) {\n\n if (state.pipesCount === 1)\n write(state.pipes, 0, null);\n else\n forEach(state.pipes, write);\n\n src.emit('data', chunk);\n\n // if anyone needs a drain, then we have to wait for that.\n if (state.awaitDrain > 0)\n return;\n }\n\n // if every destination was unpiped, either before entering this\n // function, or in the while loop, then stop flowing.\n //\n // NB: This is a pretty rare edge case.\n if (state.pipesCount === 0) {\n state.flowing = false;\n\n // if there were data event listeners added, then switch to old mode.\n if (EE.listenerCount(src, 'data') > 0)\n emitDataEvents(src);\n return;\n }\n\n // at this point, no one needed a drain, so we just ran out of data\n // on the next readable event, start it over again.\n state.ranOut = true;\n}\n\nfunction pipeOnReadable() {\n if (this._readableState.ranOut) {\n this._readableState.ranOut = false;\n flow(this);\n }\n}\n\n\nReadable.prototype.unpipe = function(dest) {\n var state = this._readableState;\n\n // if we're not piping anywhere, then do nothing.\n if (state.pipesCount === 0)\n return this;\n\n // just one destination. most common case.\n if (state.pipesCount === 1) {\n // passed in one, but it's not the right one.\n if (dest && dest !== state.pipes)\n return this;\n\n if (!dest)\n dest = state.pipes;\n\n // got a match.\n state.pipes = null;\n state.pipesCount = 0;\n this.removeListener('readable', pipeOnReadable);\n state.flowing = false;\n if (dest)\n dest.emit('unpipe', this);\n return this;\n }\n\n // slow case. multiple pipe destinations.\n\n if (!dest) {\n // remove all.\n var dests = state.pipes;\n var len = state.pipesCount;\n state.pipes = null;\n state.pipesCount = 0;\n this.removeListener('readable', pipeOnReadable);\n state.flowing = false;\n\n for (var i = 0; i < len; i++)\n dests[i].emit('unpipe', this);\n return this;\n }\n\n // try to find the right one.\n var i = indexOf(state.pipes, dest);\n if (i === -1)\n return this;\n\n state.pipes.splice(i, 1);\n state.pipesCount -= 1;\n if (state.pipesCount === 1)\n state.pipes = state.pipes[0];\n\n dest.emit('unpipe', this);\n\n return this;\n};\n\n// set up data events if they are asked for\n// Ensure readable listeners eventually get something\nReadable.prototype.on = function(ev, fn) {\n var res = Stream.prototype.on.call(this, ev, fn);\n\n if (ev === 'data' && !this._readableState.flowing)\n emitDataEvents(this);\n\n if (ev === 'readable' && this.readable) {\n var state = this._readableState;\n if (!state.readableListening) {\n state.readableListening = true;\n state.emittedReadable = false;\n state.needReadable = true;\n if (!state.reading) {\n this.read(0);\n } else if (state.length) {\n emitReadable(this, state);\n }\n }\n }\n\n return res;\n};\nReadable.prototype.addListener = Readable.prototype.on;\n\n// pause() and resume() are remnants of the legacy readable stream API\n// If the user uses them, then switch into old mode.\nReadable.prototype.resume = function() {\n emitDataEvents(this);\n this.read(0);\n this.emit('resume');\n};\n\nReadable.prototype.pause = function() {\n emitDataEvents(this, true);\n this.emit('pause');\n};\n\nfunction emitDataEvents(stream, startPaused) {\n var state = stream._readableState;\n\n if (state.flowing) {\n // https://github.com/isaacs/readable-stream/issues/16\n throw new Error('Cannot switch to old mode now.');\n }\n\n var paused = startPaused || false;\n var readable = false;\n\n // convert to an old-style stream.\n stream.readable = true;\n stream.pipe = Stream.prototype.pipe;\n stream.on = stream.addListener = Stream.prototype.on;\n\n stream.on('readable', function() {\n readable = true;\n\n var c;\n while (!paused && (null !== (c = stream.read())))\n stream.emit('data', c);\n\n if (c === null) {\n readable = false;\n stream._readableState.needReadable = true;\n }\n });\n\n stream.pause = function() {\n paused = true;\n this.emit('pause');\n };\n\n stream.resume = function() {\n paused = false;\n if (readable)\n process.nextTick(function() {\n stream.emit('readable');\n });\n else\n this.read(0);\n this.emit('resume');\n };\n\n // now make it start, just in case it hadn't already.\n stream.emit('readable');\n}\n\n// wrap an old-style stream as the async data source.\n// This is *not* part of the readable stream interface.\n// It is an ugly unfortunate mess of history.\nReadable.prototype.wrap = function(stream) {\n var state = this._readableState;\n var paused = false;\n\n var self = this;\n stream.on('end', function() {\n if (state.decoder && !state.ended) {\n var chunk = state.decoder.end();\n if (chunk && chunk.length)\n self.push(chunk);\n }\n\n self.push(null);\n });\n\n stream.on('data', function(chunk) {\n if (state.decoder)\n chunk = state.decoder.write(chunk);\n\n // don't skip over falsy values in objectMode\n //if (state.objectMode && util.isNullOrUndefined(chunk))\n if (state.objectMode && (chunk === null || chunk === undefined))\n return;\n else if (!state.objectMode && (!chunk || !chunk.length))\n return;\n\n var ret = self.push(chunk);\n if (!ret) {\n paused = true;\n stream.pause();\n }\n });\n\n // proxy all the other methods.\n // important when wrapping filters and duplexes.\n for (var i in stream) {\n if (typeof stream[i] === 'function' &&\n typeof this[i] === 'undefined') {\n this[i] = function(method) { return function() {\n return stream[method].apply(stream, arguments);\n }}(i);\n }\n }\n\n // proxy certain important events.\n var events = ['error', 'close', 'destroy', 'pause', 'resume'];\n forEach(events, function(ev) {\n stream.on(ev, self.emit.bind(self, ev));\n });\n\n // when we try to consume some more bytes, simply unpause the\n // underlying stream.\n self._read = function(n) {\n if (paused) {\n paused = false;\n stream.resume();\n }\n };\n\n return self;\n};\n\n\n\n// exposed for testing purposes only.\nReadable._fromList = fromList;\n\n// Pluck off n bytes from an array of buffers.\n// Length is the combined lengths of all the buffers in the list.\nfunction fromList(n, state) {\n var list = state.buffer;\n var length = state.length;\n var stringMode = !!state.decoder;\n var objectMode = !!state.objectMode;\n var ret;\n\n // nothing in the list, definitely empty.\n if (list.length === 0)\n return null;\n\n if (length === 0)\n ret = null;\n else if (objectMode)\n ret = list.shift();\n else if (!n || n >= length) {\n // read it all, truncate the array.\n if (stringMode)\n ret = list.join('');\n else\n ret = Buffer.concat(list, length);\n list.length = 0;\n } else {\n // read just some of it.\n if (n < list[0].length) {\n // just take a part of the first list item.\n // slice is the same for buffers and strings.\n var buf = list[0];\n ret = buf.slice(0, n);\n list[0] = buf.slice(n);\n } else if (n === list[0].length) {\n // first list is a perfect match\n ret = list.shift();\n } else {\n // complex case.\n // we have enough to cover it, but it spans past the first buffer.\n if (stringMode)\n ret = '';\n else\n ret = new Buffer(n);\n\n var c = 0;\n for (var i = 0, l = list.length; i < l && c < n; i++) {\n var buf = list[0];\n var cpy = Math.min(n - c, buf.length);\n\n if (stringMode)\n ret += buf.slice(0, cpy);\n else\n buf.copy(ret, c, 0, cpy);\n\n if (cpy < buf.length)\n list[0] = buf.slice(cpy);\n else\n list.shift();\n\n c += cpy;\n }\n }\n }\n\n return ret;\n}\n\nfunction endReadable(stream) {\n var state = stream._readableState;\n\n // If we get here before consuming all the bytes, then that is a\n // bug in node. Should never happen.\n if (state.length > 0)\n throw new Error('endReadable called on non-empty stream');\n\n if (!state.endEmitted && state.calledRead) {\n state.ended = true;\n process.nextTick(function() {\n // Check that we didn't get one last unshift.\n if (!state.endEmitted && state.length === 0) {\n state.endEmitted = true;\n stream.readable = false;\n stream.emit('end');\n }\n });\n }\n}\n\nfunction forEach (xs, f) {\n for (var i = 0, l = xs.length; i < l; i++) {\n f(xs[i], i);\n }\n}\n\nfunction indexOf (xs, x) {\n for (var i = 0, l = xs.length; i < l; i++) {\n if (xs[i] === x) return i;\n }\n return -1;\n}\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n\n// a transform stream is a readable/writable stream where you do\n// something with the data. Sometimes it's called a \"filter\",\n// but that's not a great name for it, since that implies a thing where\n// some bits pass through, and others are simply ignored. (That would\n// be a valid example of a transform, of course.)\n//\n// While the output is causally related to the input, it's not a\n// necessarily symmetric or synchronous transformation. For example,\n// a zlib stream might take multiple plain-text writes(), and then\n// emit a single compressed chunk some time in the future.\n//\n// Here's how this works:\n//\n// The Transform stream has all the aspects of the readable and writable\n// stream classes. When you write(chunk), that calls _write(chunk,cb)\n// internally, and returns false if there's a lot of pending writes\n// buffered up. When you call read(), that calls _read(n) until\n// there's enough pending readable data buffered up.\n//\n// In a transform stream, the written data is placed in a buffer. When\n// _read(n) is called, it transforms the queued up data, calling the\n// buffered _write cb's as it consumes chunks. If consuming a single\n// written chunk would result in multiple output chunks, then the first\n// outputted bit calls the readcb, and subsequent chunks just go into\n// the read buffer, and will cause it to emit 'readable' if necessary.\n//\n// This way, back-pressure is actually determined by the reading side,\n// since _read has to be called to start processing a new chunk. However,\n// a pathological inflate type of transform can cause excessive buffering\n// here. For example, imagine a stream where every byte of input is\n// interpreted as an integer from 0-255, and then results in that many\n// bytes of output. Writing the 4 bytes {ff,ff,ff,ff} would result in\n// 1kb of data being output. In this case, you could write a very small\n// amount of input, and end up with a very large amount of output. In\n// such a pathological inflating mechanism, there'd be no way to tell\n// the system to stop doing the transform. A single 4MB write could\n// cause the system to run out of memory.\n//\n// However, even in such a pathological case, only a single written chunk\n// would be consumed, and then the rest would wait (un-transformed) until\n// the results of the previous transformed chunk were consumed.\n\nmodule.exports = Transform;\n\nvar Duplex = require('./_stream_duplex');\n\n/**/\nvar util = require('core-util-is');\nutil.inherits = require('inherits');\n/**/\n\nutil.inherits(Transform, Duplex);\n\n\nfunction TransformState(options, stream) {\n this.afterTransform = function(er, data) {\n return afterTransform(stream, er, data);\n };\n\n this.needTransform = false;\n this.transforming = false;\n this.writecb = null;\n this.writechunk = null;\n}\n\nfunction afterTransform(stream, er, data) {\n var ts = stream._transformState;\n ts.transforming = false;\n\n var cb = ts.writecb;\n\n if (!cb)\n return stream.emit('error', new Error('no writecb in Transform class'));\n\n ts.writechunk = null;\n ts.writecb = null;\n\n if (data !== null && data !== undefined)\n stream.push(data);\n\n if (cb)\n cb(er);\n\n var rs = stream._readableState;\n rs.reading = false;\n if (rs.needReadable || rs.length < rs.highWaterMark) {\n stream._read(rs.highWaterMark);\n }\n}\n\n\nfunction Transform(options) {\n if (!(this instanceof Transform))\n return new Transform(options);\n\n Duplex.call(this, options);\n\n var ts = this._transformState = new TransformState(options, this);\n\n // when the writable side finishes, then flush out anything remaining.\n var stream = this;\n\n // start out asking for a readable event once data is transformed.\n this._readableState.needReadable = true;\n\n // we have implemented the _read method, and done the other things\n // that Readable wants before the first _read call, so unset the\n // sync guard flag.\n this._readableState.sync = false;\n\n this.once('finish', function() {\n if ('function' === typeof this._flush)\n this._flush(function(er) {\n done(stream, er);\n });\n else\n done(stream);\n });\n}\n\nTransform.prototype.push = function(chunk, encoding) {\n this._transformState.needTransform = false;\n return Duplex.prototype.push.call(this, chunk, encoding);\n};\n\n// This is the part where you do stuff!\n// override this function in implementation classes.\n// 'chunk' is an input chunk.\n//\n// Call `push(newChunk)` to pass along transformed output\n// to the readable side. You may call 'push' zero or more times.\n//\n// Call `cb(err)` when you are done with this chunk. If you pass\n// an error, then that'll put the hurt on the whole operation. If you\n// never call cb(), then you'll never get another chunk.\nTransform.prototype._transform = function(chunk, encoding, cb) {\n throw new Error('not implemented');\n};\n\nTransform.prototype._write = function(chunk, encoding, cb) {\n var ts = this._transformState;\n ts.writecb = cb;\n ts.writechunk = chunk;\n ts.writeencoding = encoding;\n if (!ts.transforming) {\n var rs = this._readableState;\n if (ts.needTransform ||\n rs.needReadable ||\n rs.length < rs.highWaterMark)\n this._read(rs.highWaterMark);\n }\n};\n\n// Doesn't matter what the args are here.\n// _transform does all the work.\n// That we got here means that the readable side wants more data.\nTransform.prototype._read = function(n) {\n var ts = this._transformState;\n\n if (ts.writechunk !== null && ts.writecb && !ts.transforming) {\n ts.transforming = true;\n this._transform(ts.writechunk, ts.writeencoding, ts.afterTransform);\n } else {\n // mark that we need a transform, so that any data that comes in\n // will get processed, now that we've asked for it.\n ts.needTransform = true;\n }\n};\n\n\nfunction done(stream, er) {\n if (er)\n return stream.emit('error', er);\n\n // if there's nothing in the write buffer, then that means\n // that nothing more will ever be provided\n var ws = stream._writableState;\n var rs = stream._readableState;\n var ts = stream._transformState;\n\n if (ws.length)\n throw new Error('calling transform done when ws.length != 0');\n\n if (ts.transforming)\n throw new Error('calling transform done when still transforming');\n\n return stream.push(null);\n}\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// A bit simpler than readable streams.\n// Implement an async ._write(chunk, cb), and it'll handle all\n// the drain event emission and buffering.\n\nmodule.exports = Writable;\n\n/**/\nvar Buffer = require('buffer').Buffer;\n/**/\n\nWritable.WritableState = WritableState;\n\n\n/**/\nvar util = require('core-util-is');\nutil.inherits = require('inherits');\n/**/\n\nvar Stream = require('stream');\n\nutil.inherits(Writable, Stream);\n\nfunction WriteReq(chunk, encoding, cb) {\n this.chunk = chunk;\n this.encoding = encoding;\n this.callback = cb;\n}\n\nfunction WritableState(options, stream) {\n options = options || {};\n\n // the point at which write() starts returning false\n // Note: 0 is a valid value, means that we always return false if\n // the entire buffer is not flushed immediately on write()\n var hwm = options.highWaterMark;\n this.highWaterMark = (hwm || hwm === 0) ? hwm : 16 * 1024;\n\n // object stream flag to indicate whether or not this stream\n // contains buffers or objects.\n this.objectMode = !!options.objectMode;\n\n // cast to ints.\n this.highWaterMark = ~~this.highWaterMark;\n\n this.needDrain = false;\n // at the start of calling end()\n this.ending = false;\n // when end() has been called, and returned\n this.ended = false;\n // when 'finish' is emitted\n this.finished = false;\n\n // should we decode strings into buffers before passing to _write?\n // this is here so that some node-core streams can optimize string\n // handling at a lower level.\n var noDecode = options.decodeStrings === false;\n this.decodeStrings = !noDecode;\n\n // Crypto is kind of old and crusty. Historically, its default string\n // encoding is 'binary' so we have to make this configurable.\n // Everything else in the universe uses 'utf8', though.\n this.defaultEncoding = options.defaultEncoding || 'utf8';\n\n // not an actual buffer we keep track of, but a measurement\n // of how much we're waiting to get pushed to some underlying\n // socket or file.\n this.length = 0;\n\n // a flag to see when we're in the middle of a write.\n this.writing = false;\n\n // a flag to be able to tell if the onwrite cb is called immediately,\n // or on a later tick. We set this to true at first, becuase any\n // actions that shouldn't happen until \"later\" should generally also\n // not happen before the first write call.\n this.sync = true;\n\n // a flag to know if we're processing previously buffered items, which\n // may call the _write() callback in the same tick, so that we don't\n // end up in an overlapped onwrite situation.\n this.bufferProcessing = false;\n\n // the callback that's passed to _write(chunk,cb)\n this.onwrite = function(er) {\n onwrite(stream, er);\n };\n\n // the callback that the user supplies to write(chunk,encoding,cb)\n this.writecb = null;\n\n // the amount that is being written when _write is called.\n this.writelen = 0;\n\n this.buffer = [];\n\n // True if the error was already emitted and should not be thrown again\n this.errorEmitted = false;\n}\n\nfunction Writable(options) {\n var Duplex = require('./_stream_duplex');\n\n // Writable ctor is applied to Duplexes, though they're not\n // instanceof Writable, they're instanceof Readable.\n if (!(this instanceof Writable) && !(this instanceof Duplex))\n return new Writable(options);\n\n this._writableState = new WritableState(options, this);\n\n // legacy.\n this.writable = true;\n\n Stream.call(this);\n}\n\n// Otherwise people can pipe Writable streams, which is just wrong.\nWritable.prototype.pipe = function() {\n this.emit('error', new Error('Cannot pipe. Not readable.'));\n};\n\n\nfunction writeAfterEnd(stream, state, cb) {\n var er = new Error('write after end');\n // TODO: defer error events consistently everywhere, not just the cb\n stream.emit('error', er);\n process.nextTick(function() {\n cb(er);\n });\n}\n\n// If we get something that is not a buffer, string, null, or undefined,\n// and we're not in objectMode, then that's an error.\n// Otherwise stream chunks are all considered to be of length=1, and the\n// watermarks determine how many objects to keep in the buffer, rather than\n// how many bytes or characters.\nfunction validChunk(stream, state, chunk, cb) {\n var valid = true;\n if (!Buffer.isBuffer(chunk) &&\n 'string' !== typeof chunk &&\n chunk !== null &&\n chunk !== undefined &&\n !state.objectMode) {\n var er = new TypeError('Invalid non-string/buffer chunk');\n stream.emit('error', er);\n process.nextTick(function() {\n cb(er);\n });\n valid = false;\n }\n return valid;\n}\n\nWritable.prototype.write = function(chunk, encoding, cb) {\n var state = this._writableState;\n var ret = false;\n\n if (typeof encoding === 'function') {\n cb = encoding;\n encoding = null;\n }\n\n if (Buffer.isBuffer(chunk))\n encoding = 'buffer';\n else if (!encoding)\n encoding = state.defaultEncoding;\n\n if (typeof cb !== 'function')\n cb = function() {};\n\n if (state.ended)\n writeAfterEnd(this, state, cb);\n else if (validChunk(this, state, chunk, cb))\n ret = writeOrBuffer(this, state, chunk, encoding, cb);\n\n return ret;\n};\n\nfunction decodeChunk(state, chunk, encoding) {\n if (!state.objectMode &&\n state.decodeStrings !== false &&\n typeof chunk === 'string') {\n chunk = new Buffer(chunk, encoding);\n }\n return chunk;\n}\n\n// if we're already writing something, then just put this\n// in the queue, and wait our turn. Otherwise, call _write\n// If we return false, then we need a drain event, so set that flag.\nfunction writeOrBuffer(stream, state, chunk, encoding, cb) {\n chunk = decodeChunk(state, chunk, encoding);\n if (Buffer.isBuffer(chunk))\n encoding = 'buffer';\n var len = state.objectMode ? 1 : chunk.length;\n\n state.length += len;\n\n var ret = state.length < state.highWaterMark;\n // we must ensure that previous needDrain will not be reset to false.\n if (!ret)\n state.needDrain = true;\n\n if (state.writing)\n state.buffer.push(new WriteReq(chunk, encoding, cb));\n else\n doWrite(stream, state, len, chunk, encoding, cb);\n\n return ret;\n}\n\nfunction doWrite(stream, state, len, chunk, encoding, cb) {\n state.writelen = len;\n state.writecb = cb;\n state.writing = true;\n state.sync = true;\n stream._write(chunk, encoding, state.onwrite);\n state.sync = false;\n}\n\nfunction onwriteError(stream, state, sync, er, cb) {\n if (sync)\n process.nextTick(function() {\n cb(er);\n });\n else\n cb(er);\n\n stream._writableState.errorEmitted = true;\n stream.emit('error', er);\n}\n\nfunction onwriteStateUpdate(state) {\n state.writing = false;\n state.writecb = null;\n state.length -= state.writelen;\n state.writelen = 0;\n}\n\nfunction onwrite(stream, er) {\n var state = stream._writableState;\n var sync = state.sync;\n var cb = state.writecb;\n\n onwriteStateUpdate(state);\n\n if (er)\n onwriteError(stream, state, sync, er, cb);\n else {\n // Check if we're actually ready to finish, but don't emit yet\n var finished = needFinish(stream, state);\n\n if (!finished && !state.bufferProcessing && state.buffer.length)\n clearBuffer(stream, state);\n\n if (sync) {\n process.nextTick(function() {\n afterWrite(stream, state, finished, cb);\n });\n } else {\n afterWrite(stream, state, finished, cb);\n }\n }\n}\n\nfunction afterWrite(stream, state, finished, cb) {\n if (!finished)\n onwriteDrain(stream, state);\n cb();\n if (finished)\n finishMaybe(stream, state);\n}\n\n// Must force callback to be called on nextTick, so that we don't\n// emit 'drain' before the write() consumer gets the 'false' return\n// value, and has a chance to attach a 'drain' listener.\nfunction onwriteDrain(stream, state) {\n if (state.length === 0 && state.needDrain) {\n state.needDrain = false;\n stream.emit('drain');\n }\n}\n\n\n// if there's something in the buffer waiting, then process it\nfunction clearBuffer(stream, state) {\n state.bufferProcessing = true;\n\n for (var c = 0; c < state.buffer.length; c++) {\n var entry = state.buffer[c];\n var chunk = entry.chunk;\n var encoding = entry.encoding;\n var cb = entry.callback;\n var len = state.objectMode ? 1 : chunk.length;\n\n doWrite(stream, state, len, chunk, encoding, cb);\n\n // if we didn't call the onwrite immediately, then\n // it means that we need to wait until it does.\n // also, that means that the chunk and cb are currently\n // being processed, so move the buffer counter past them.\n if (state.writing) {\n c++;\n break;\n }\n }\n\n state.bufferProcessing = false;\n if (c < state.buffer.length)\n state.buffer = state.buffer.slice(c);\n else\n state.buffer.length = 0;\n}\n\nWritable.prototype._write = function(chunk, encoding, cb) {\n cb(new Error('not implemented'));\n};\n\nWritable.prototype.end = function(chunk, encoding, cb) {\n var state = this._writableState;\n\n if (typeof chunk === 'function') {\n cb = chunk;\n chunk = null;\n encoding = null;\n } else if (typeof encoding === 'function') {\n cb = encoding;\n encoding = null;\n }\n\n if (typeof chunk !== 'undefined' && chunk !== null)\n this.write(chunk, encoding);\n\n // ignore unnecessary end() calls.\n if (!state.ending && !state.finished)\n endWritable(this, state, cb);\n};\n\n\nfunction needFinish(stream, state) {\n return (state.ending &&\n state.length === 0 &&\n !state.finished &&\n !state.writing);\n}\n\nfunction finishMaybe(stream, state) {\n var need = needFinish(stream, state);\n if (need) {\n state.finished = true;\n stream.emit('finish');\n }\n return need;\n}\n\nfunction endWritable(stream, state, cb) {\n state.ending = true;\n finishMaybe(stream, state);\n if (cb) {\n if (state.finished)\n process.nextTick(cb);\n else\n stream.once('finish', cb);\n }\n state.ended = true;\n}\n","var Stream = require('stream'); // hack to fix a circular dependency issue when used with browserify\nexports = module.exports = require('./lib/_stream_readable.js');\nexports.Stream = Stream;\nexports.Readable = exports;\nexports.Writable = require('./lib/_stream_writable.js');\nexports.Duplex = require('./lib/_stream_duplex.js');\nexports.Transform = require('./lib/_stream_transform.js');\nexports.PassThrough = require('./lib/_stream_passthrough.js');\nif (!process.browser && process.env.READABLE_STREAM === 'disable') {\n module.exports = require('stream');\n}\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\nvar Buffer = require('buffer').Buffer;\n\nvar isBufferEncoding = Buffer.isEncoding\n || function(encoding) {\n switch (encoding && encoding.toLowerCase()) {\n case 'hex': case 'utf8': case 'utf-8': case 'ascii': case 'binary': case 'base64': case 'ucs2': case 'ucs-2': case 'utf16le': case 'utf-16le': case 'raw': return true;\n default: return false;\n }\n }\n\n\nfunction assertEncoding(encoding) {\n if (encoding && !isBufferEncoding(encoding)) {\n throw new Error('Unknown encoding: ' + encoding);\n }\n}\n\n// StringDecoder provides an interface for efficiently splitting a series of\n// buffers into a series of JS strings without breaking apart multi-byte\n// characters. CESU-8 is handled as part of the UTF-8 encoding.\n//\n// @TODO Handling all encodings inside a single object makes it very difficult\n// to reason about this code, so it should be split up in the future.\n// @TODO There should be a utf8-strict encoding that rejects invalid UTF-8 code\n// points as used by CESU-8.\nvar StringDecoder = exports.StringDecoder = function(encoding) {\n this.encoding = (encoding || 'utf8').toLowerCase().replace(/[-_]/, '');\n assertEncoding(encoding);\n switch (this.encoding) {\n case 'utf8':\n // CESU-8 represents each of Surrogate Pair by 3-bytes\n this.surrogateSize = 3;\n break;\n case 'ucs2':\n case 'utf16le':\n // UTF-16 represents each of Surrogate Pair by 2-bytes\n this.surrogateSize = 2;\n this.detectIncompleteChar = utf16DetectIncompleteChar;\n break;\n case 'base64':\n // Base-64 stores 3 bytes in 4 chars, and pads the remainder.\n this.surrogateSize = 3;\n this.detectIncompleteChar = base64DetectIncompleteChar;\n break;\n default:\n this.write = passThroughWrite;\n return;\n }\n\n // Enough space to store all bytes of a single character. UTF-8 needs 4\n // bytes, but CESU-8 may require up to 6 (3 bytes per surrogate).\n this.charBuffer = new Buffer(6);\n // Number of bytes received for the current incomplete multi-byte character.\n this.charReceived = 0;\n // Number of bytes expected for the current incomplete multi-byte character.\n this.charLength = 0;\n};\n\n\n// write decodes the given buffer and returns it as JS string that is\n// guaranteed to not contain any partial multi-byte characters. Any partial\n// character found at the end of the buffer is buffered up, and will be\n// returned when calling write again with the remaining bytes.\n//\n// Note: Converting a Buffer containing an orphan surrogate to a String\n// currently works, but converting a String to a Buffer (via `new Buffer`, or\n// Buffer#write) will replace incomplete surrogates with the unicode\n// replacement character. See https://codereview.chromium.org/121173009/ .\nStringDecoder.prototype.write = function(buffer) {\n var charStr = '';\n // if our last write ended with an incomplete multibyte character\n while (this.charLength) {\n // determine how many remaining bytes this buffer has to offer for this char\n var available = (buffer.length >= this.charLength - this.charReceived) ?\n this.charLength - this.charReceived :\n buffer.length;\n\n // add the new bytes to the char buffer\n buffer.copy(this.charBuffer, this.charReceived, 0, available);\n this.charReceived += available;\n\n if (this.charReceived < this.charLength) {\n // still not enough chars in this buffer? wait for more ...\n return '';\n }\n\n // remove bytes belonging to the current character from the buffer\n buffer = buffer.slice(available, buffer.length);\n\n // get the character that was split\n charStr = this.charBuffer.slice(0, this.charLength).toString(this.encoding);\n\n // CESU-8: lead surrogate (D800-DBFF) is also the incomplete character\n var charCode = charStr.charCodeAt(charStr.length - 1);\n if (charCode >= 0xD800 && charCode <= 0xDBFF) {\n this.charLength += this.surrogateSize;\n charStr = '';\n continue;\n }\n this.charReceived = this.charLength = 0;\n\n // if there are no more bytes in this buffer, just emit our char\n if (buffer.length === 0) {\n return charStr;\n }\n break;\n }\n\n // determine and set charLength / charReceived\n this.detectIncompleteChar(buffer);\n\n var end = buffer.length;\n if (this.charLength) {\n // buffer the incomplete character bytes we got\n buffer.copy(this.charBuffer, 0, buffer.length - this.charReceived, end);\n end -= this.charReceived;\n }\n\n charStr += buffer.toString(this.encoding, 0, end);\n\n var end = charStr.length - 1;\n var charCode = charStr.charCodeAt(end);\n // CESU-8: lead surrogate (D800-DBFF) is also the incomplete character\n if (charCode >= 0xD800 && charCode <= 0xDBFF) {\n var size = this.surrogateSize;\n this.charLength += size;\n this.charReceived += size;\n this.charBuffer.copy(this.charBuffer, size, 0, size);\n buffer.copy(this.charBuffer, 0, 0, size);\n return charStr.substring(0, end);\n }\n\n // or just emit the charStr\n return charStr;\n};\n\n// detectIncompleteChar determines if there is an incomplete UTF-8 character at\n// the end of the given buffer. If so, it sets this.charLength to the byte\n// length that character, and sets this.charReceived to the number of bytes\n// that are available for this character.\nStringDecoder.prototype.detectIncompleteChar = function(buffer) {\n // determine how many bytes we have to check at the end of this buffer\n var i = (buffer.length >= 3) ? 3 : buffer.length;\n\n // Figure out if one of the last i bytes of our buffer announces an\n // incomplete char.\n for (; i > 0; i--) {\n var c = buffer[buffer.length - i];\n\n // See http://en.wikipedia.org/wiki/UTF-8#Description\n\n // 110XXXXX\n if (i == 1 && c >> 5 == 0x06) {\n this.charLength = 2;\n break;\n }\n\n // 1110XXXX\n if (i <= 2 && c >> 4 == 0x0E) {\n this.charLength = 3;\n break;\n }\n\n // 11110XXX\n if (i <= 3 && c >> 3 == 0x1E) {\n this.charLength = 4;\n break;\n }\n }\n this.charReceived = i;\n};\n\nStringDecoder.prototype.end = function(buffer) {\n var res = '';\n if (buffer && buffer.length)\n res = this.write(buffer);\n\n if (this.charReceived) {\n var cr = this.charReceived;\n var buf = this.charBuffer;\n var enc = this.encoding;\n res += buf.slice(0, cr).toString(enc);\n }\n\n return res;\n};\n\nfunction passThroughWrite(buffer) {\n return buffer.toString(this.encoding);\n}\n\nfunction utf16DetectIncompleteChar(buffer) {\n this.charReceived = buffer.length % 2;\n this.charLength = this.charReceived ? 2 : 0;\n}\n\nfunction base64DetectIncompleteChar(buffer) {\n this.charReceived = buffer.length % 3;\n this.charLength = this.charReceived ? 3 : 0;\n}\n","var leveljs = require('level-js');\nvar levelup = require('levelup');\nvar fs = require('level-filesystem');\n\nvar db = levelup('level-filesystem', {db:leveljs});\nmodule.exports = fs(db);","/* eslint-disable node/no-deprecated-api */\n\nvar toString = Object.prototype.toString\n\nvar isModern = (\n typeof Buffer !== 'undefined' &&\n typeof Buffer.alloc === 'function' &&\n typeof Buffer.allocUnsafe === 'function' &&\n typeof Buffer.from === 'function'\n)\n\nfunction isArrayBuffer (input) {\n return toString.call(input).slice(8, -1) === 'ArrayBuffer'\n}\n\nfunction fromArrayBuffer (obj, byteOffset, length) {\n byteOffset >>>= 0\n\n var maxLength = obj.byteLength - byteOffset\n\n if (maxLength < 0) {\n throw new RangeError(\"'offset' is out of bounds\")\n }\n\n if (length === undefined) {\n length = maxLength\n } else {\n length >>>= 0\n\n if (length > maxLength) {\n throw new RangeError(\"'length' is out of bounds\")\n }\n }\n\n return isModern\n ? Buffer.from(obj.slice(byteOffset, byteOffset + length))\n : new Buffer(new Uint8Array(obj.slice(byteOffset, byteOffset + length)))\n}\n\nfunction fromString (string, encoding) {\n if (typeof encoding !== 'string' || encoding === '') {\n encoding = 'utf8'\n }\n\n if (!Buffer.isEncoding(encoding)) {\n throw new TypeError('\"encoding\" must be a valid string encoding')\n }\n\n return isModern\n ? Buffer.from(string, encoding)\n : new Buffer(string, encoding)\n}\n\nfunction bufferFrom (value, encodingOrOffset, length) {\n if (typeof value === 'number') {\n throw new TypeError('\"value\" argument must not be a number')\n }\n\n if (isArrayBuffer(value)) {\n return fromArrayBuffer(value, encodingOrOffset, length)\n }\n\n if (typeof value === 'string') {\n return fromString(value, encodingOrOffset)\n }\n\n return isModern\n ? Buffer.from(value)\n : new Buffer(value)\n}\n\nmodule.exports = bufferFrom\n","/*!\n * The buffer module from node.js, for the browser.\n *\n * @author Feross Aboukhadijeh \n * @license MIT\n */\n/* eslint-disable no-proto */\n\n'use strict'\n\nconst base64 = require('base64-js')\nconst ieee754 = require('ieee754')\nconst customInspectSymbol =\n (typeof Symbol === 'function' && typeof Symbol['for'] === 'function') // eslint-disable-line dot-notation\n ? Symbol['for']('nodejs.util.inspect.custom') // eslint-disable-line dot-notation\n : null\n\nexports.Buffer = Buffer\nexports.SlowBuffer = SlowBuffer\nexports.INSPECT_MAX_BYTES = 50\n\nconst K_MAX_LENGTH = 0x7fffffff\nexports.kMaxLength = K_MAX_LENGTH\n\n/**\n * If `Buffer.TYPED_ARRAY_SUPPORT`:\n * === true Use Uint8Array implementation (fastest)\n * === false Print warning and recommend using `buffer` v4.x which has an Object\n * implementation (most compatible, even IE6)\n *\n * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+,\n * Opera 11.6+, iOS 4.2+.\n *\n * We report that the browser does not support typed arrays if the are not subclassable\n * using __proto__. Firefox 4-29 lacks support for adding new properties to `Uint8Array`\n * (See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438). IE 10 lacks support\n * for __proto__ and has a buggy typed array implementation.\n */\nBuffer.TYPED_ARRAY_SUPPORT = typedArraySupport()\n\nif (!Buffer.TYPED_ARRAY_SUPPORT && typeof console !== 'undefined' &&\n typeof console.error === 'function') {\n console.error(\n 'This browser lacks typed array (Uint8Array) support which is required by ' +\n '`buffer` v5.x. Use `buffer` v4.x if you require old browser support.'\n )\n}\n\nfunction typedArraySupport () {\n // Can typed array instances can be augmented?\n try {\n const arr = new Uint8Array(1)\n const proto = { foo: function () { return 42 } }\n Object.setPrototypeOf(proto, Uint8Array.prototype)\n Object.setPrototypeOf(arr, proto)\n return arr.foo() === 42\n } catch (e) {\n return false\n }\n}\n\nObject.defineProperty(Buffer.prototype, 'parent', {\n enumerable: true,\n get: function () {\n if (!Buffer.isBuffer(this)) return undefined\n return this.buffer\n }\n})\n\nObject.defineProperty(Buffer.prototype, 'offset', {\n enumerable: true,\n get: function () {\n if (!Buffer.isBuffer(this)) return undefined\n return this.byteOffset\n }\n})\n\nfunction createBuffer (length) {\n if (length > K_MAX_LENGTH) {\n throw new RangeError('The value \"' + length + '\" is invalid for option \"size\"')\n }\n // Return an augmented `Uint8Array` instance\n const buf = new Uint8Array(length)\n Object.setPrototypeOf(buf, Buffer.prototype)\n return buf\n}\n\n/**\n * The Buffer constructor returns instances of `Uint8Array` that have their\n * prototype changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of\n * `Uint8Array`, so the returned instances will have all the node `Buffer` methods\n * and the `Uint8Array` methods. Square bracket notation works as expected -- it\n * returns a single octet.\n *\n * The `Uint8Array` prototype remains unmodified.\n */\n\nfunction Buffer (arg, encodingOrOffset, length) {\n // Common case.\n if (typeof arg === 'number') {\n if (typeof encodingOrOffset === 'string') {\n throw new TypeError(\n 'The \"string\" argument must be of type string. Received type number'\n )\n }\n return allocUnsafe(arg)\n }\n return from(arg, encodingOrOffset, length)\n}\n\nBuffer.poolSize = 8192 // not used by this implementation\n\nfunction from (value, encodingOrOffset, length) {\n if (typeof value === 'string') {\n return fromString(value, encodingOrOffset)\n }\n\n if (ArrayBuffer.isView(value)) {\n return fromArrayView(value)\n }\n\n if (value == null) {\n throw new TypeError(\n 'The first argument must be one of type string, Buffer, ArrayBuffer, Array, ' +\n 'or Array-like Object. Received type ' + (typeof value)\n )\n }\n\n if (isInstance(value, ArrayBuffer) ||\n (value && isInstance(value.buffer, ArrayBuffer))) {\n return fromArrayBuffer(value, encodingOrOffset, length)\n }\n\n if (typeof SharedArrayBuffer !== 'undefined' &&\n (isInstance(value, SharedArrayBuffer) ||\n (value && isInstance(value.buffer, SharedArrayBuffer)))) {\n return fromArrayBuffer(value, encodingOrOffset, length)\n }\n\n if (typeof value === 'number') {\n throw new TypeError(\n 'The \"value\" argument must not be of type number. Received type number'\n )\n }\n\n const valueOf = value.valueOf && value.valueOf()\n if (valueOf != null && valueOf !== value) {\n return Buffer.from(valueOf, encodingOrOffset, length)\n }\n\n const b = fromObject(value)\n if (b) return b\n\n if (typeof Symbol !== 'undefined' && Symbol.toPrimitive != null &&\n typeof value[Symbol.toPrimitive] === 'function') {\n return Buffer.from(value[Symbol.toPrimitive]('string'), encodingOrOffset, length)\n }\n\n throw new TypeError(\n 'The first argument must be one of type string, Buffer, ArrayBuffer, Array, ' +\n 'or Array-like Object. Received type ' + (typeof value)\n )\n}\n\n/**\n * Functionally equivalent to Buffer(arg, encoding) but throws a TypeError\n * if value is a number.\n * Buffer.from(str[, encoding])\n * Buffer.from(array)\n * Buffer.from(buffer)\n * Buffer.from(arrayBuffer[, byteOffset[, length]])\n **/\nBuffer.from = function (value, encodingOrOffset, length) {\n return from(value, encodingOrOffset, length)\n}\n\n// Note: Change prototype *after* Buffer.from is defined to workaround Chrome bug:\n// https://github.com/feross/buffer/pull/148\nObject.setPrototypeOf(Buffer.prototype, Uint8Array.prototype)\nObject.setPrototypeOf(Buffer, Uint8Array)\n\nfunction assertSize (size) {\n if (typeof size !== 'number') {\n throw new TypeError('\"size\" argument must be of type number')\n } else if (size < 0) {\n throw new RangeError('The value \"' + size + '\" is invalid for option \"size\"')\n }\n}\n\nfunction alloc (size, fill, encoding) {\n assertSize(size)\n if (size <= 0) {\n return createBuffer(size)\n }\n if (fill !== undefined) {\n // Only pay attention to encoding if it's a string. This\n // prevents accidentally sending in a number that would\n // be interpreted as a start offset.\n return typeof encoding === 'string'\n ? createBuffer(size).fill(fill, encoding)\n : createBuffer(size).fill(fill)\n }\n return createBuffer(size)\n}\n\n/**\n * Creates a new filled Buffer instance.\n * alloc(size[, fill[, encoding]])\n **/\nBuffer.alloc = function (size, fill, encoding) {\n return alloc(size, fill, encoding)\n}\n\nfunction allocUnsafe (size) {\n assertSize(size)\n return createBuffer(size < 0 ? 0 : checked(size) | 0)\n}\n\n/**\n * Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance.\n * */\nBuffer.allocUnsafe = function (size) {\n return allocUnsafe(size)\n}\n/**\n * Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance.\n */\nBuffer.allocUnsafeSlow = function (size) {\n return allocUnsafe(size)\n}\n\nfunction fromString (string, encoding) {\n if (typeof encoding !== 'string' || encoding === '') {\n encoding = 'utf8'\n }\n\n if (!Buffer.isEncoding(encoding)) {\n throw new TypeError('Unknown encoding: ' + encoding)\n }\n\n const length = byteLength(string, encoding) | 0\n let buf = createBuffer(length)\n\n const actual = buf.write(string, encoding)\n\n if (actual !== length) {\n // Writing a hex string, for example, that contains invalid characters will\n // cause everything after the first invalid character to be ignored. (e.g.\n // 'abxxcd' will be treated as 'ab')\n buf = buf.slice(0, actual)\n }\n\n return buf\n}\n\nfunction fromArrayLike (array) {\n const length = array.length < 0 ? 0 : checked(array.length) | 0\n const buf = createBuffer(length)\n for (let i = 0; i < length; i += 1) {\n buf[i] = array[i] & 255\n }\n return buf\n}\n\nfunction fromArrayView (arrayView) {\n if (isInstance(arrayView, Uint8Array)) {\n const copy = new Uint8Array(arrayView)\n return fromArrayBuffer(copy.buffer, copy.byteOffset, copy.byteLength)\n }\n return fromArrayLike(arrayView)\n}\n\nfunction fromArrayBuffer (array, byteOffset, length) {\n if (byteOffset < 0 || array.byteLength < byteOffset) {\n throw new RangeError('\"offset\" is outside of buffer bounds')\n }\n\n if (array.byteLength < byteOffset + (length || 0)) {\n throw new RangeError('\"length\" is outside of buffer bounds')\n }\n\n let buf\n if (byteOffset === undefined && length === undefined) {\n buf = new Uint8Array(array)\n } else if (length === undefined) {\n buf = new Uint8Array(array, byteOffset)\n } else {\n buf = new Uint8Array(array, byteOffset, length)\n }\n\n // Return an augmented `Uint8Array` instance\n Object.setPrototypeOf(buf, Buffer.prototype)\n\n return buf\n}\n\nfunction fromObject (obj) {\n if (Buffer.isBuffer(obj)) {\n const len = checked(obj.length) | 0\n const buf = createBuffer(len)\n\n if (buf.length === 0) {\n return buf\n }\n\n obj.copy(buf, 0, 0, len)\n return buf\n }\n\n if (obj.length !== undefined) {\n if (typeof obj.length !== 'number' || numberIsNaN(obj.length)) {\n return createBuffer(0)\n }\n return fromArrayLike(obj)\n }\n\n if (obj.type === 'Buffer' && Array.isArray(obj.data)) {\n return fromArrayLike(obj.data)\n }\n}\n\nfunction checked (length) {\n // Note: cannot use `length < K_MAX_LENGTH` here because that fails when\n // length is NaN (which is otherwise coerced to zero.)\n if (length >= K_MAX_LENGTH) {\n throw new RangeError('Attempt to allocate Buffer larger than maximum ' +\n 'size: 0x' + K_MAX_LENGTH.toString(16) + ' bytes')\n }\n return length | 0\n}\n\nfunction SlowBuffer (length) {\n if (+length != length) { // eslint-disable-line eqeqeq\n length = 0\n }\n return Buffer.alloc(+length)\n}\n\nBuffer.isBuffer = function isBuffer (b) {\n return b != null && b._isBuffer === true &&\n b !== Buffer.prototype // so Buffer.isBuffer(Buffer.prototype) will be false\n}\n\nBuffer.compare = function compare (a, b) {\n if (isInstance(a, Uint8Array)) a = Buffer.from(a, a.offset, a.byteLength)\n if (isInstance(b, Uint8Array)) b = Buffer.from(b, b.offset, b.byteLength)\n if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) {\n throw new TypeError(\n 'The \"buf1\", \"buf2\" arguments must be one of type Buffer or Uint8Array'\n )\n }\n\n if (a === b) return 0\n\n let x = a.length\n let y = b.length\n\n for (let i = 0, len = Math.min(x, y); i < len; ++i) {\n if (a[i] !== b[i]) {\n x = a[i]\n y = b[i]\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\nBuffer.isEncoding = function isEncoding (encoding) {\n switch (String(encoding).toLowerCase()) {\n case 'hex':\n case 'utf8':\n case 'utf-8':\n case 'ascii':\n case 'latin1':\n case 'binary':\n case 'base64':\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return true\n default:\n return false\n }\n}\n\nBuffer.concat = function concat (list, length) {\n if (!Array.isArray(list)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n }\n\n if (list.length === 0) {\n return Buffer.alloc(0)\n }\n\n let i\n if (length === undefined) {\n length = 0\n for (i = 0; i < list.length; ++i) {\n length += list[i].length\n }\n }\n\n const buffer = Buffer.allocUnsafe(length)\n let pos = 0\n for (i = 0; i < list.length; ++i) {\n let buf = list[i]\n if (isInstance(buf, Uint8Array)) {\n if (pos + buf.length > buffer.length) {\n if (!Buffer.isBuffer(buf)) buf = Buffer.from(buf)\n buf.copy(buffer, pos)\n } else {\n Uint8Array.prototype.set.call(\n buffer,\n buf,\n pos\n )\n }\n } else if (!Buffer.isBuffer(buf)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n } else {\n buf.copy(buffer, pos)\n }\n pos += buf.length\n }\n return buffer\n}\n\nfunction byteLength (string, encoding) {\n if (Buffer.isBuffer(string)) {\n return string.length\n }\n if (ArrayBuffer.isView(string) || isInstance(string, ArrayBuffer)) {\n return string.byteLength\n }\n if (typeof string !== 'string') {\n throw new TypeError(\n 'The \"string\" argument must be one of type string, Buffer, or ArrayBuffer. ' +\n 'Received type ' + typeof string\n )\n }\n\n const len = string.length\n const mustMatch = (arguments.length > 2 && arguments[2] === true)\n if (!mustMatch && len === 0) return 0\n\n // Use a for loop to avoid recursion\n let loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'ascii':\n case 'latin1':\n case 'binary':\n return len\n case 'utf8':\n case 'utf-8':\n return utf8ToBytes(string).length\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return len * 2\n case 'hex':\n return len >>> 1\n case 'base64':\n return base64ToBytes(string).length\n default:\n if (loweredCase) {\n return mustMatch ? -1 : utf8ToBytes(string).length // assume utf8\n }\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\nBuffer.byteLength = byteLength\n\nfunction slowToString (encoding, start, end) {\n let loweredCase = false\n\n // No need to verify that \"this.length <= MAX_UINT32\" since it's a read-only\n // property of a typed array.\n\n // This behaves neither like String nor Uint8Array in that we set start/end\n // to their upper/lower bounds if the value passed is out of range.\n // undefined is handled specially as per ECMA-262 6th Edition,\n // Section 13.3.3.7 Runtime Semantics: KeyedBindingInitialization.\n if (start === undefined || start < 0) {\n start = 0\n }\n // Return early if start > this.length. Done here to prevent potential uint32\n // coercion fail below.\n if (start > this.length) {\n return ''\n }\n\n if (end === undefined || end > this.length) {\n end = this.length\n }\n\n if (end <= 0) {\n return ''\n }\n\n // Force coercion to uint32. This will also coerce falsey/NaN values to 0.\n end >>>= 0\n start >>>= 0\n\n if (end <= start) {\n return ''\n }\n\n if (!encoding) encoding = 'utf8'\n\n while (true) {\n switch (encoding) {\n case 'hex':\n return hexSlice(this, start, end)\n\n case 'utf8':\n case 'utf-8':\n return utf8Slice(this, start, end)\n\n case 'ascii':\n return asciiSlice(this, start, end)\n\n case 'latin1':\n case 'binary':\n return latin1Slice(this, start, end)\n\n case 'base64':\n return base64Slice(this, start, end)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return utf16leSlice(this, start, end)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = (encoding + '').toLowerCase()\n loweredCase = true\n }\n }\n}\n\n// This property is used by `Buffer.isBuffer` (and the `is-buffer` npm package)\n// to detect a Buffer instance. It's not possible to use `instanceof Buffer`\n// reliably in a browserify context because there could be multiple different\n// copies of the 'buffer' package in use. This method works even for Buffer\n// instances that were created from another copy of the `buffer` package.\n// See: https://github.com/feross/buffer/issues/154\nBuffer.prototype._isBuffer = true\n\nfunction swap (b, n, m) {\n const i = b[n]\n b[n] = b[m]\n b[m] = i\n}\n\nBuffer.prototype.swap16 = function swap16 () {\n const len = this.length\n if (len % 2 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 16-bits')\n }\n for (let i = 0; i < len; i += 2) {\n swap(this, i, i + 1)\n }\n return this\n}\n\nBuffer.prototype.swap32 = function swap32 () {\n const len = this.length\n if (len % 4 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 32-bits')\n }\n for (let i = 0; i < len; i += 4) {\n swap(this, i, i + 3)\n swap(this, i + 1, i + 2)\n }\n return this\n}\n\nBuffer.prototype.swap64 = function swap64 () {\n const len = this.length\n if (len % 8 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 64-bits')\n }\n for (let i = 0; i < len; i += 8) {\n swap(this, i, i + 7)\n swap(this, i + 1, i + 6)\n swap(this, i + 2, i + 5)\n swap(this, i + 3, i + 4)\n }\n return this\n}\n\nBuffer.prototype.toString = function toString () {\n const length = this.length\n if (length === 0) return ''\n if (arguments.length === 0) return utf8Slice(this, 0, length)\n return slowToString.apply(this, arguments)\n}\n\nBuffer.prototype.toLocaleString = Buffer.prototype.toString\n\nBuffer.prototype.equals = function equals (b) {\n if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer')\n if (this === b) return true\n return Buffer.compare(this, b) === 0\n}\n\nBuffer.prototype.inspect = function inspect () {\n let str = ''\n const max = exports.INSPECT_MAX_BYTES\n str = this.toString('hex', 0, max).replace(/(.{2})/g, '$1 ').trim()\n if (this.length > max) str += ' ... '\n return ''\n}\nif (customInspectSymbol) {\n Buffer.prototype[customInspectSymbol] = Buffer.prototype.inspect\n}\n\nBuffer.prototype.compare = function compare (target, start, end, thisStart, thisEnd) {\n if (isInstance(target, Uint8Array)) {\n target = Buffer.from(target, target.offset, target.byteLength)\n }\n if (!Buffer.isBuffer(target)) {\n throw new TypeError(\n 'The \"target\" argument must be one of type Buffer or Uint8Array. ' +\n 'Received type ' + (typeof target)\n )\n }\n\n if (start === undefined) {\n start = 0\n }\n if (end === undefined) {\n end = target ? target.length : 0\n }\n if (thisStart === undefined) {\n thisStart = 0\n }\n if (thisEnd === undefined) {\n thisEnd = this.length\n }\n\n if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) {\n throw new RangeError('out of range index')\n }\n\n if (thisStart >= thisEnd && start >= end) {\n return 0\n }\n if (thisStart >= thisEnd) {\n return -1\n }\n if (start >= end) {\n return 1\n }\n\n start >>>= 0\n end >>>= 0\n thisStart >>>= 0\n thisEnd >>>= 0\n\n if (this === target) return 0\n\n let x = thisEnd - thisStart\n let y = end - start\n const len = Math.min(x, y)\n\n const thisCopy = this.slice(thisStart, thisEnd)\n const targetCopy = target.slice(start, end)\n\n for (let i = 0; i < len; ++i) {\n if (thisCopy[i] !== targetCopy[i]) {\n x = thisCopy[i]\n y = targetCopy[i]\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\n// Finds either the first index of `val` in `buffer` at offset >= `byteOffset`,\n// OR the last index of `val` in `buffer` at offset <= `byteOffset`.\n//\n// Arguments:\n// - buffer - a Buffer to search\n// - val - a string, Buffer, or number\n// - byteOffset - an index into `buffer`; will be clamped to an int32\n// - encoding - an optional encoding, relevant is val is a string\n// - dir - true for indexOf, false for lastIndexOf\nfunction bidirectionalIndexOf (buffer, val, byteOffset, encoding, dir) {\n // Empty buffer means no match\n if (buffer.length === 0) return -1\n\n // Normalize byteOffset\n if (typeof byteOffset === 'string') {\n encoding = byteOffset\n byteOffset = 0\n } else if (byteOffset > 0x7fffffff) {\n byteOffset = 0x7fffffff\n } else if (byteOffset < -0x80000000) {\n byteOffset = -0x80000000\n }\n byteOffset = +byteOffset // Coerce to Number.\n if (numberIsNaN(byteOffset)) {\n // byteOffset: it it's undefined, null, NaN, \"foo\", etc, search whole buffer\n byteOffset = dir ? 0 : (buffer.length - 1)\n }\n\n // Normalize byteOffset: negative offsets start from the end of the buffer\n if (byteOffset < 0) byteOffset = buffer.length + byteOffset\n if (byteOffset >= buffer.length) {\n if (dir) return -1\n else byteOffset = buffer.length - 1\n } else if (byteOffset < 0) {\n if (dir) byteOffset = 0\n else return -1\n }\n\n // Normalize val\n if (typeof val === 'string') {\n val = Buffer.from(val, encoding)\n }\n\n // Finally, search either indexOf (if dir is true) or lastIndexOf\n if (Buffer.isBuffer(val)) {\n // Special case: looking for empty string/buffer always fails\n if (val.length === 0) {\n return -1\n }\n return arrayIndexOf(buffer, val, byteOffset, encoding, dir)\n } else if (typeof val === 'number') {\n val = val & 0xFF // Search for a byte value [0-255]\n if (typeof Uint8Array.prototype.indexOf === 'function') {\n if (dir) {\n return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset)\n } else {\n return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset)\n }\n }\n return arrayIndexOf(buffer, [val], byteOffset, encoding, dir)\n }\n\n throw new TypeError('val must be string, number or Buffer')\n}\n\nfunction arrayIndexOf (arr, val, byteOffset, encoding, dir) {\n let indexSize = 1\n let arrLength = arr.length\n let valLength = val.length\n\n if (encoding !== undefined) {\n encoding = String(encoding).toLowerCase()\n if (encoding === 'ucs2' || encoding === 'ucs-2' ||\n encoding === 'utf16le' || encoding === 'utf-16le') {\n if (arr.length < 2 || val.length < 2) {\n return -1\n }\n indexSize = 2\n arrLength /= 2\n valLength /= 2\n byteOffset /= 2\n }\n }\n\n function read (buf, i) {\n if (indexSize === 1) {\n return buf[i]\n } else {\n return buf.readUInt16BE(i * indexSize)\n }\n }\n\n let i\n if (dir) {\n let foundIndex = -1\n for (i = byteOffset; i < arrLength; i++) {\n if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) {\n if (foundIndex === -1) foundIndex = i\n if (i - foundIndex + 1 === valLength) return foundIndex * indexSize\n } else {\n if (foundIndex !== -1) i -= i - foundIndex\n foundIndex = -1\n }\n }\n } else {\n if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength\n for (i = byteOffset; i >= 0; i--) {\n let found = true\n for (let j = 0; j < valLength; j++) {\n if (read(arr, i + j) !== read(val, j)) {\n found = false\n break\n }\n }\n if (found) return i\n }\n }\n\n return -1\n}\n\nBuffer.prototype.includes = function includes (val, byteOffset, encoding) {\n return this.indexOf(val, byteOffset, encoding) !== -1\n}\n\nBuffer.prototype.indexOf = function indexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, true)\n}\n\nBuffer.prototype.lastIndexOf = function lastIndexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, false)\n}\n\nfunction hexWrite (buf, string, offset, length) {\n offset = Number(offset) || 0\n const remaining = buf.length - offset\n if (!length) {\n length = remaining\n } else {\n length = Number(length)\n if (length > remaining) {\n length = remaining\n }\n }\n\n const strLen = string.length\n\n if (length > strLen / 2) {\n length = strLen / 2\n }\n let i\n for (i = 0; i < length; ++i) {\n const parsed = parseInt(string.substr(i * 2, 2), 16)\n if (numberIsNaN(parsed)) return i\n buf[offset + i] = parsed\n }\n return i\n}\n\nfunction utf8Write (buf, string, offset, length) {\n return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nfunction asciiWrite (buf, string, offset, length) {\n return blitBuffer(asciiToBytes(string), buf, offset, length)\n}\n\nfunction base64Write (buf, string, offset, length) {\n return blitBuffer(base64ToBytes(string), buf, offset, length)\n}\n\nfunction ucs2Write (buf, string, offset, length) {\n return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nBuffer.prototype.write = function write (string, offset, length, encoding) {\n // Buffer#write(string)\n if (offset === undefined) {\n encoding = 'utf8'\n length = this.length\n offset = 0\n // Buffer#write(string, encoding)\n } else if (length === undefined && typeof offset === 'string') {\n encoding = offset\n length = this.length\n offset = 0\n // Buffer#write(string, offset[, length][, encoding])\n } else if (isFinite(offset)) {\n offset = offset >>> 0\n if (isFinite(length)) {\n length = length >>> 0\n if (encoding === undefined) encoding = 'utf8'\n } else {\n encoding = length\n length = undefined\n }\n } else {\n throw new Error(\n 'Buffer.write(string, encoding, offset[, length]) is no longer supported'\n )\n }\n\n const remaining = this.length - offset\n if (length === undefined || length > remaining) length = remaining\n\n if ((string.length > 0 && (length < 0 || offset < 0)) || offset > this.length) {\n throw new RangeError('Attempt to write outside buffer bounds')\n }\n\n if (!encoding) encoding = 'utf8'\n\n let loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'hex':\n return hexWrite(this, string, offset, length)\n\n case 'utf8':\n case 'utf-8':\n return utf8Write(this, string, offset, length)\n\n case 'ascii':\n case 'latin1':\n case 'binary':\n return asciiWrite(this, string, offset, length)\n\n case 'base64':\n // Warning: maxLength not taken into account in base64Write\n return base64Write(this, string, offset, length)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return ucs2Write(this, string, offset, length)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\n\nBuffer.prototype.toJSON = function toJSON () {\n return {\n type: 'Buffer',\n data: Array.prototype.slice.call(this._arr || this, 0)\n }\n}\n\nfunction base64Slice (buf, start, end) {\n if (start === 0 && end === buf.length) {\n return base64.fromByteArray(buf)\n } else {\n return base64.fromByteArray(buf.slice(start, end))\n }\n}\n\nfunction utf8Slice (buf, start, end) {\n end = Math.min(buf.length, end)\n const res = []\n\n let i = start\n while (i < end) {\n const firstByte = buf[i]\n let codePoint = null\n let bytesPerSequence = (firstByte > 0xEF)\n ? 4\n : (firstByte > 0xDF)\n ? 3\n : (firstByte > 0xBF)\n ? 2\n : 1\n\n if (i + bytesPerSequence <= end) {\n let secondByte, thirdByte, fourthByte, tempCodePoint\n\n switch (bytesPerSequence) {\n case 1:\n if (firstByte < 0x80) {\n codePoint = firstByte\n }\n break\n case 2:\n secondByte = buf[i + 1]\n if ((secondByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0x1F) << 0x6 | (secondByte & 0x3F)\n if (tempCodePoint > 0x7F) {\n codePoint = tempCodePoint\n }\n }\n break\n case 3:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | (thirdByte & 0x3F)\n if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) {\n codePoint = tempCodePoint\n }\n }\n break\n case 4:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n fourthByte = buf[i + 3]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | (fourthByte & 0x3F)\n if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) {\n codePoint = tempCodePoint\n }\n }\n }\n }\n\n if (codePoint === null) {\n // we did not generate a valid codePoint so insert a\n // replacement char (U+FFFD) and advance only 1 byte\n codePoint = 0xFFFD\n bytesPerSequence = 1\n } else if (codePoint > 0xFFFF) {\n // encode to utf16 (surrogate pair dance)\n codePoint -= 0x10000\n res.push(codePoint >>> 10 & 0x3FF | 0xD800)\n codePoint = 0xDC00 | codePoint & 0x3FF\n }\n\n res.push(codePoint)\n i += bytesPerSequence\n }\n\n return decodeCodePointsArray(res)\n}\n\n// Based on http://stackoverflow.com/a/22747272/680742, the browser with\n// the lowest limit is Chrome, with 0x10000 args.\n// We go 1 magnitude less, for safety\nconst MAX_ARGUMENTS_LENGTH = 0x1000\n\nfunction decodeCodePointsArray (codePoints) {\n const len = codePoints.length\n if (len <= MAX_ARGUMENTS_LENGTH) {\n return String.fromCharCode.apply(String, codePoints) // avoid extra slice()\n }\n\n // Decode in chunks to avoid \"call stack size exceeded\".\n let res = ''\n let i = 0\n while (i < len) {\n res += String.fromCharCode.apply(\n String,\n codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH)\n )\n }\n return res\n}\n\nfunction asciiSlice (buf, start, end) {\n let ret = ''\n end = Math.min(buf.length, end)\n\n for (let i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i] & 0x7F)\n }\n return ret\n}\n\nfunction latin1Slice (buf, start, end) {\n let ret = ''\n end = Math.min(buf.length, end)\n\n for (let i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i])\n }\n return ret\n}\n\nfunction hexSlice (buf, start, end) {\n const len = buf.length\n\n if (!start || start < 0) start = 0\n if (!end || end < 0 || end > len) end = len\n\n let out = ''\n for (let i = start; i < end; ++i) {\n out += hexSliceLookupTable[buf[i]]\n }\n return out\n}\n\nfunction utf16leSlice (buf, start, end) {\n const bytes = buf.slice(start, end)\n let res = ''\n // If bytes.length is odd, the last 8 bits must be ignored (same as node.js)\n for (let i = 0; i < bytes.length - 1; i += 2) {\n res += String.fromCharCode(bytes[i] + (bytes[i + 1] * 256))\n }\n return res\n}\n\nBuffer.prototype.slice = function slice (start, end) {\n const len = this.length\n start = ~~start\n end = end === undefined ? len : ~~end\n\n if (start < 0) {\n start += len\n if (start < 0) start = 0\n } else if (start > len) {\n start = len\n }\n\n if (end < 0) {\n end += len\n if (end < 0) end = 0\n } else if (end > len) {\n end = len\n }\n\n if (end < start) end = start\n\n const newBuf = this.subarray(start, end)\n // Return an augmented `Uint8Array` instance\n Object.setPrototypeOf(newBuf, Buffer.prototype)\n\n return newBuf\n}\n\n/*\n * Need to make sure that buffer isn't trying to write out of bounds.\n */\nfunction checkOffset (offset, ext, length) {\n if ((offset % 1) !== 0 || offset < 0) throw new RangeError('offset is not uint')\n if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length')\n}\n\nBuffer.prototype.readUintLE =\nBuffer.prototype.readUIntLE = function readUIntLE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n let val = this[offset]\n let mul = 1\n let i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUintBE =\nBuffer.prototype.readUIntBE = function readUIntBE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) {\n checkOffset(offset, byteLength, this.length)\n }\n\n let val = this[offset + --byteLength]\n let mul = 1\n while (byteLength > 0 && (mul *= 0x100)) {\n val += this[offset + --byteLength] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUint8 =\nBuffer.prototype.readUInt8 = function readUInt8 (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 1, this.length)\n return this[offset]\n}\n\nBuffer.prototype.readUint16LE =\nBuffer.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n return this[offset] | (this[offset + 1] << 8)\n}\n\nBuffer.prototype.readUint16BE =\nBuffer.prototype.readUInt16BE = function readUInt16BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n return (this[offset] << 8) | this[offset + 1]\n}\n\nBuffer.prototype.readUint32LE =\nBuffer.prototype.readUInt32LE = function readUInt32LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return ((this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16)) +\n (this[offset + 3] * 0x1000000)\n}\n\nBuffer.prototype.readUint32BE =\nBuffer.prototype.readUInt32BE = function readUInt32BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] * 0x1000000) +\n ((this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n this[offset + 3])\n}\n\nBuffer.prototype.readBigUInt64LE = defineBigIntMethod(function readBigUInt64LE (offset) {\n offset = offset >>> 0\n validateNumber(offset, 'offset')\n const first = this[offset]\n const last = this[offset + 7]\n if (first === undefined || last === undefined) {\n boundsError(offset, this.length - 8)\n }\n\n const lo = first +\n this[++offset] * 2 ** 8 +\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 24\n\n const hi = this[++offset] +\n this[++offset] * 2 ** 8 +\n this[++offset] * 2 ** 16 +\n last * 2 ** 24\n\n return BigInt(lo) + (BigInt(hi) << BigInt(32))\n})\n\nBuffer.prototype.readBigUInt64BE = defineBigIntMethod(function readBigUInt64BE (offset) {\n offset = offset >>> 0\n validateNumber(offset, 'offset')\n const first = this[offset]\n const last = this[offset + 7]\n if (first === undefined || last === undefined) {\n boundsError(offset, this.length - 8)\n }\n\n const hi = first * 2 ** 24 +\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 8 +\n this[++offset]\n\n const lo = this[++offset] * 2 ** 24 +\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 8 +\n last\n\n return (BigInt(hi) << BigInt(32)) + BigInt(lo)\n})\n\nBuffer.prototype.readIntLE = function readIntLE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n let val = this[offset]\n let mul = 1\n let i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readIntBE = function readIntBE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n let i = byteLength\n let mul = 1\n let val = this[offset + --i]\n while (i > 0 && (mul *= 0x100)) {\n val += this[offset + --i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readInt8 = function readInt8 (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 1, this.length)\n if (!(this[offset] & 0x80)) return (this[offset])\n return ((0xff - this[offset] + 1) * -1)\n}\n\nBuffer.prototype.readInt16LE = function readInt16LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n const val = this[offset] | (this[offset + 1] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt16BE = function readInt16BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n const val = this[offset + 1] | (this[offset] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt32LE = function readInt32LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16) |\n (this[offset + 3] << 24)\n}\n\nBuffer.prototype.readInt32BE = function readInt32BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] << 24) |\n (this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n (this[offset + 3])\n}\n\nBuffer.prototype.readBigInt64LE = defineBigIntMethod(function readBigInt64LE (offset) {\n offset = offset >>> 0\n validateNumber(offset, 'offset')\n const first = this[offset]\n const last = this[offset + 7]\n if (first === undefined || last === undefined) {\n boundsError(offset, this.length - 8)\n }\n\n const val = this[offset + 4] +\n this[offset + 5] * 2 ** 8 +\n this[offset + 6] * 2 ** 16 +\n (last << 24) // Overflow\n\n return (BigInt(val) << BigInt(32)) +\n BigInt(first +\n this[++offset] * 2 ** 8 +\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 24)\n})\n\nBuffer.prototype.readBigInt64BE = defineBigIntMethod(function readBigInt64BE (offset) {\n offset = offset >>> 0\n validateNumber(offset, 'offset')\n const first = this[offset]\n const last = this[offset + 7]\n if (first === undefined || last === undefined) {\n boundsError(offset, this.length - 8)\n }\n\n const val = (first << 24) + // Overflow\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 8 +\n this[++offset]\n\n return (BigInt(val) << BigInt(32)) +\n BigInt(this[++offset] * 2 ** 24 +\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 8 +\n last)\n})\n\nBuffer.prototype.readFloatLE = function readFloatLE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, true, 23, 4)\n}\n\nBuffer.prototype.readFloatBE = function readFloatBE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, false, 23, 4)\n}\n\nBuffer.prototype.readDoubleLE = function readDoubleLE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, true, 52, 8)\n}\n\nBuffer.prototype.readDoubleBE = function readDoubleBE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, false, 52, 8)\n}\n\nfunction checkInt (buf, value, offset, ext, max, min) {\n if (!Buffer.isBuffer(buf)) throw new TypeError('\"buffer\" argument must be a Buffer instance')\n if (value > max || value < min) throw new RangeError('\"value\" argument is out of bounds')\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n}\n\nBuffer.prototype.writeUintLE =\nBuffer.prototype.writeUIntLE = function writeUIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) {\n const maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n let mul = 1\n let i = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUintBE =\nBuffer.prototype.writeUIntBE = function writeUIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) {\n const maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n let i = byteLength - 1\n let mul = 1\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUint8 =\nBuffer.prototype.writeUInt8 = function writeUInt8 (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0)\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nBuffer.prototype.writeUint16LE =\nBuffer.prototype.writeUInt16LE = function writeUInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n return offset + 2\n}\n\nBuffer.prototype.writeUint16BE =\nBuffer.prototype.writeUInt16BE = function writeUInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n return offset + 2\n}\n\nBuffer.prototype.writeUint32LE =\nBuffer.prototype.writeUInt32LE = function writeUInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n this[offset + 3] = (value >>> 24)\n this[offset + 2] = (value >>> 16)\n this[offset + 1] = (value >>> 8)\n this[offset] = (value & 0xff)\n return offset + 4\n}\n\nBuffer.prototype.writeUint32BE =\nBuffer.prototype.writeUInt32BE = function writeUInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n return offset + 4\n}\n\nfunction wrtBigUInt64LE (buf, value, offset, min, max) {\n checkIntBI(value, min, max, buf, offset, 7)\n\n let lo = Number(value & BigInt(0xffffffff))\n buf[offset++] = lo\n lo = lo >> 8\n buf[offset++] = lo\n lo = lo >> 8\n buf[offset++] = lo\n lo = lo >> 8\n buf[offset++] = lo\n let hi = Number(value >> BigInt(32) & BigInt(0xffffffff))\n buf[offset++] = hi\n hi = hi >> 8\n buf[offset++] = hi\n hi = hi >> 8\n buf[offset++] = hi\n hi = hi >> 8\n buf[offset++] = hi\n return offset\n}\n\nfunction wrtBigUInt64BE (buf, value, offset, min, max) {\n checkIntBI(value, min, max, buf, offset, 7)\n\n let lo = Number(value & BigInt(0xffffffff))\n buf[offset + 7] = lo\n lo = lo >> 8\n buf[offset + 6] = lo\n lo = lo >> 8\n buf[offset + 5] = lo\n lo = lo >> 8\n buf[offset + 4] = lo\n let hi = Number(value >> BigInt(32) & BigInt(0xffffffff))\n buf[offset + 3] = hi\n hi = hi >> 8\n buf[offset + 2] = hi\n hi = hi >> 8\n buf[offset + 1] = hi\n hi = hi >> 8\n buf[offset] = hi\n return offset + 8\n}\n\nBuffer.prototype.writeBigUInt64LE = defineBigIntMethod(function writeBigUInt64LE (value, offset = 0) {\n return wrtBigUInt64LE(this, value, offset, BigInt(0), BigInt('0xffffffffffffffff'))\n})\n\nBuffer.prototype.writeBigUInt64BE = defineBigIntMethod(function writeBigUInt64BE (value, offset = 0) {\n return wrtBigUInt64BE(this, value, offset, BigInt(0), BigInt('0xffffffffffffffff'))\n})\n\nBuffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n const limit = Math.pow(2, (8 * byteLength) - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n let i = 0\n let mul = 1\n let sub = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) {\n sub = 1\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeIntBE = function writeIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n const limit = Math.pow(2, (8 * byteLength) - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n let i = byteLength - 1\n let mul = 1\n let sub = 0\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) {\n sub = 1\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeInt8 = function writeInt8 (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80)\n if (value < 0) value = 0xff + value + 1\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nBuffer.prototype.writeInt16LE = function writeInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n return offset + 2\n}\n\nBuffer.prototype.writeInt16BE = function writeInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n return offset + 2\n}\n\nBuffer.prototype.writeInt32LE = function writeInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n this[offset + 2] = (value >>> 16)\n this[offset + 3] = (value >>> 24)\n return offset + 4\n}\n\nBuffer.prototype.writeInt32BE = function writeInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n if (value < 0) value = 0xffffffff + value + 1\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n return offset + 4\n}\n\nBuffer.prototype.writeBigInt64LE = defineBigIntMethod(function writeBigInt64LE (value, offset = 0) {\n return wrtBigUInt64LE(this, value, offset, -BigInt('0x8000000000000000'), BigInt('0x7fffffffffffffff'))\n})\n\nBuffer.prototype.writeBigInt64BE = defineBigIntMethod(function writeBigInt64BE (value, offset = 0) {\n return wrtBigUInt64BE(this, value, offset, -BigInt('0x8000000000000000'), BigInt('0x7fffffffffffffff'))\n})\n\nfunction checkIEEE754 (buf, value, offset, ext, max, min) {\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n if (offset < 0) throw new RangeError('Index out of range')\n}\n\nfunction writeFloat (buf, value, offset, littleEndian, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 4, 3.4028234663852886e+38, -3.4028234663852886e+38)\n }\n ieee754.write(buf, value, offset, littleEndian, 23, 4)\n return offset + 4\n}\n\nBuffer.prototype.writeFloatLE = function writeFloatLE (value, offset, noAssert) {\n return writeFloat(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeFloatBE = function writeFloatBE (value, offset, noAssert) {\n return writeFloat(this, value, offset, false, noAssert)\n}\n\nfunction writeDouble (buf, value, offset, littleEndian, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 8, 1.7976931348623157E+308, -1.7976931348623157E+308)\n }\n ieee754.write(buf, value, offset, littleEndian, 52, 8)\n return offset + 8\n}\n\nBuffer.prototype.writeDoubleLE = function writeDoubleLE (value, offset, noAssert) {\n return writeDouble(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeDoubleBE = function writeDoubleBE (value, offset, noAssert) {\n return writeDouble(this, value, offset, false, noAssert)\n}\n\n// copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length)\nBuffer.prototype.copy = function copy (target, targetStart, start, end) {\n if (!Buffer.isBuffer(target)) throw new TypeError('argument should be a Buffer')\n if (!start) start = 0\n if (!end && end !== 0) end = this.length\n if (targetStart >= target.length) targetStart = target.length\n if (!targetStart) targetStart = 0\n if (end > 0 && end < start) end = start\n\n // Copy 0 bytes; we're done\n if (end === start) return 0\n if (target.length === 0 || this.length === 0) return 0\n\n // Fatal error conditions\n if (targetStart < 0) {\n throw new RangeError('targetStart out of bounds')\n }\n if (start < 0 || start >= this.length) throw new RangeError('Index out of range')\n if (end < 0) throw new RangeError('sourceEnd out of bounds')\n\n // Are we oob?\n if (end > this.length) end = this.length\n if (target.length - targetStart < end - start) {\n end = target.length - targetStart + start\n }\n\n const len = end - start\n\n if (this === target && typeof Uint8Array.prototype.copyWithin === 'function') {\n // Use built-in when available, missing from IE11\n this.copyWithin(targetStart, start, end)\n } else {\n Uint8Array.prototype.set.call(\n target,\n this.subarray(start, end),\n targetStart\n )\n }\n\n return len\n}\n\n// Usage:\n// buffer.fill(number[, offset[, end]])\n// buffer.fill(buffer[, offset[, end]])\n// buffer.fill(string[, offset[, end]][, encoding])\nBuffer.prototype.fill = function fill (val, start, end, encoding) {\n // Handle string cases:\n if (typeof val === 'string') {\n if (typeof start === 'string') {\n encoding = start\n start = 0\n end = this.length\n } else if (typeof end === 'string') {\n encoding = end\n end = this.length\n }\n if (encoding !== undefined && typeof encoding !== 'string') {\n throw new TypeError('encoding must be a string')\n }\n if (typeof encoding === 'string' && !Buffer.isEncoding(encoding)) {\n throw new TypeError('Unknown encoding: ' + encoding)\n }\n if (val.length === 1) {\n const code = val.charCodeAt(0)\n if ((encoding === 'utf8' && code < 128) ||\n encoding === 'latin1') {\n // Fast path: If `val` fits into a single byte, use that numeric value.\n val = code\n }\n }\n } else if (typeof val === 'number') {\n val = val & 255\n } else if (typeof val === 'boolean') {\n val = Number(val)\n }\n\n // Invalid ranges are not set to a default, so can range check early.\n if (start < 0 || this.length < start || this.length < end) {\n throw new RangeError('Out of range index')\n }\n\n if (end <= start) {\n return this\n }\n\n start = start >>> 0\n end = end === undefined ? this.length : end >>> 0\n\n if (!val) val = 0\n\n let i\n if (typeof val === 'number') {\n for (i = start; i < end; ++i) {\n this[i] = val\n }\n } else {\n const bytes = Buffer.isBuffer(val)\n ? val\n : Buffer.from(val, encoding)\n const len = bytes.length\n if (len === 0) {\n throw new TypeError('The value \"' + val +\n '\" is invalid for argument \"value\"')\n }\n for (i = 0; i < end - start; ++i) {\n this[i + start] = bytes[i % len]\n }\n }\n\n return this\n}\n\n// CUSTOM ERRORS\n// =============\n\n// Simplified versions from Node, changed for Buffer-only usage\nconst errors = {}\nfunction E (sym, getMessage, Base) {\n errors[sym] = class NodeError extends Base {\n constructor () {\n super()\n\n Object.defineProperty(this, 'message', {\n value: getMessage.apply(this, arguments),\n writable: true,\n configurable: true\n })\n\n // Add the error code to the name to include it in the stack trace.\n this.name = `${this.name} [${sym}]`\n // Access the stack to generate the error message including the error code\n // from the name.\n this.stack // eslint-disable-line no-unused-expressions\n // Reset the name to the actual name.\n delete this.name\n }\n\n get code () {\n return sym\n }\n\n set code (value) {\n Object.defineProperty(this, 'code', {\n configurable: true,\n enumerable: true,\n value,\n writable: true\n })\n }\n\n toString () {\n return `${this.name} [${sym}]: ${this.message}`\n }\n }\n}\n\nE('ERR_BUFFER_OUT_OF_BOUNDS',\n function (name) {\n if (name) {\n return `${name} is outside of buffer bounds`\n }\n\n return 'Attempt to access memory outside buffer bounds'\n }, RangeError)\nE('ERR_INVALID_ARG_TYPE',\n function (name, actual) {\n return `The \"${name}\" argument must be of type number. Received type ${typeof actual}`\n }, TypeError)\nE('ERR_OUT_OF_RANGE',\n function (str, range, input) {\n let msg = `The value of \"${str}\" is out of range.`\n let received = input\n if (Number.isInteger(input) && Math.abs(input) > 2 ** 32) {\n received = addNumericalSeparator(String(input))\n } else if (typeof input === 'bigint') {\n received = String(input)\n if (input > BigInt(2) ** BigInt(32) || input < -(BigInt(2) ** BigInt(32))) {\n received = addNumericalSeparator(received)\n }\n received += 'n'\n }\n msg += ` It must be ${range}. Received ${received}`\n return msg\n }, RangeError)\n\nfunction addNumericalSeparator (val) {\n let res = ''\n let i = val.length\n const start = val[0] === '-' ? 1 : 0\n for (; i >= start + 4; i -= 3) {\n res = `_${val.slice(i - 3, i)}${res}`\n }\n return `${val.slice(0, i)}${res}`\n}\n\n// CHECK FUNCTIONS\n// ===============\n\nfunction checkBounds (buf, offset, byteLength) {\n validateNumber(offset, 'offset')\n if (buf[offset] === undefined || buf[offset + byteLength] === undefined) {\n boundsError(offset, buf.length - (byteLength + 1))\n }\n}\n\nfunction checkIntBI (value, min, max, buf, offset, byteLength) {\n if (value > max || value < min) {\n const n = typeof min === 'bigint' ? 'n' : ''\n let range\n if (byteLength > 3) {\n if (min === 0 || min === BigInt(0)) {\n range = `>= 0${n} and < 2${n} ** ${(byteLength + 1) * 8}${n}`\n } else {\n range = `>= -(2${n} ** ${(byteLength + 1) * 8 - 1}${n}) and < 2 ** ` +\n `${(byteLength + 1) * 8 - 1}${n}`\n }\n } else {\n range = `>= ${min}${n} and <= ${max}${n}`\n }\n throw new errors.ERR_OUT_OF_RANGE('value', range, value)\n }\n checkBounds(buf, offset, byteLength)\n}\n\nfunction validateNumber (value, name) {\n if (typeof value !== 'number') {\n throw new errors.ERR_INVALID_ARG_TYPE(name, 'number', value)\n }\n}\n\nfunction boundsError (value, length, type) {\n if (Math.floor(value) !== value) {\n validateNumber(value, type)\n throw new errors.ERR_OUT_OF_RANGE(type || 'offset', 'an integer', value)\n }\n\n if (length < 0) {\n throw new errors.ERR_BUFFER_OUT_OF_BOUNDS()\n }\n\n throw new errors.ERR_OUT_OF_RANGE(type || 'offset',\n `>= ${type ? 1 : 0} and <= ${length}`,\n value)\n}\n\n// HELPER FUNCTIONS\n// ================\n\nconst INVALID_BASE64_RE = /[^+/0-9A-Za-z-_]/g\n\nfunction base64clean (str) {\n // Node takes equal signs as end of the Base64 encoding\n str = str.split('=')[0]\n // Node strips out invalid characters like \\n and \\t from the string, base64-js does not\n str = str.trim().replace(INVALID_BASE64_RE, '')\n // Node converts strings with length < 2 to ''\n if (str.length < 2) return ''\n // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not\n while (str.length % 4 !== 0) {\n str = str + '='\n }\n return str\n}\n\nfunction utf8ToBytes (string, units) {\n units = units || Infinity\n let codePoint\n const length = string.length\n let leadSurrogate = null\n const bytes = []\n\n for (let i = 0; i < length; ++i) {\n codePoint = string.charCodeAt(i)\n\n // is surrogate component\n if (codePoint > 0xD7FF && codePoint < 0xE000) {\n // last char was a lead\n if (!leadSurrogate) {\n // no lead yet\n if (codePoint > 0xDBFF) {\n // unexpected trail\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n } else if (i + 1 === length) {\n // unpaired lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n }\n\n // valid lead\n leadSurrogate = codePoint\n\n continue\n }\n\n // 2 leads in a row\n if (codePoint < 0xDC00) {\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n leadSurrogate = codePoint\n continue\n }\n\n // valid surrogate pair\n codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000\n } else if (leadSurrogate) {\n // valid bmp char, but last char was a lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n }\n\n leadSurrogate = null\n\n // encode utf8\n if (codePoint < 0x80) {\n if ((units -= 1) < 0) break\n bytes.push(codePoint)\n } else if (codePoint < 0x800) {\n if ((units -= 2) < 0) break\n bytes.push(\n codePoint >> 0x6 | 0xC0,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x10000) {\n if ((units -= 3) < 0) break\n bytes.push(\n codePoint >> 0xC | 0xE0,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x110000) {\n if ((units -= 4) < 0) break\n bytes.push(\n codePoint >> 0x12 | 0xF0,\n codePoint >> 0xC & 0x3F | 0x80,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else {\n throw new Error('Invalid code point')\n }\n }\n\n return bytes\n}\n\nfunction asciiToBytes (str) {\n const byteArray = []\n for (let i = 0; i < str.length; ++i) {\n // Node's code seems to be doing this and not & 0x7F..\n byteArray.push(str.charCodeAt(i) & 0xFF)\n }\n return byteArray\n}\n\nfunction utf16leToBytes (str, units) {\n let c, hi, lo\n const byteArray = []\n for (let i = 0; i < str.length; ++i) {\n if ((units -= 2) < 0) break\n\n c = str.charCodeAt(i)\n hi = c >> 8\n lo = c % 256\n byteArray.push(lo)\n byteArray.push(hi)\n }\n\n return byteArray\n}\n\nfunction base64ToBytes (str) {\n return base64.toByteArray(base64clean(str))\n}\n\nfunction blitBuffer (src, dst, offset, length) {\n let i\n for (i = 0; i < length; ++i) {\n if ((i + offset >= dst.length) || (i >= src.length)) break\n dst[i + offset] = src[i]\n }\n return i\n}\n\n// ArrayBuffer or Uint8Array objects from other contexts (i.e. iframes) do not pass\n// the `instanceof` check but they should be treated as of that type.\n// See: https://github.com/feross/buffer/issues/166\nfunction isInstance (obj, type) {\n return obj instanceof type ||\n (obj != null && obj.constructor != null && obj.constructor.name != null &&\n obj.constructor.name === type.name)\n}\nfunction numberIsNaN (obj) {\n // For IE11 support\n return obj !== obj // eslint-disable-line no-self-compare\n}\n\n// Create lookup table for `toString('hex')`\n// See: https://github.com/feross/buffer/issues/219\nconst hexSliceLookupTable = (function () {\n const alphabet = '0123456789abcdef'\n const table = new Array(256)\n for (let i = 0; i < 16; ++i) {\n const i16 = i * 16\n for (let j = 0; j < 16; ++j) {\n table[i16 + j] = alphabet[i] + alphabet[j]\n }\n }\n return table\n})()\n\n// Return not function with Error if BigInt not supported\nfunction defineBigIntMethod (fn) {\n return typeof BigInt === 'undefined' ? BufferBigIntNotDefined : fn\n}\n\nfunction BufferBigIntNotDefined () {\n throw new Error('BigInt not supported')\n}\n","'use strict';\n\nvar GetIntrinsic = require('get-intrinsic');\n\nvar callBind = require('./');\n\nvar $indexOf = callBind(GetIntrinsic('String.prototype.indexOf'));\n\nmodule.exports = function callBoundIntrinsic(name, allowMissing) {\n\tvar intrinsic = GetIntrinsic(name, !!allowMissing);\n\tif (typeof intrinsic === 'function' && $indexOf(name, '.prototype.') > -1) {\n\t\treturn callBind(intrinsic);\n\t}\n\treturn intrinsic;\n};\n","'use strict';\n\nvar bind = require('function-bind');\nvar GetIntrinsic = require('get-intrinsic');\n\nvar $apply = GetIntrinsic('%Function.prototype.apply%');\nvar $call = GetIntrinsic('%Function.prototype.call%');\nvar $reflectApply = GetIntrinsic('%Reflect.apply%', true) || bind.call($call, $apply);\n\nvar $gOPD = GetIntrinsic('%Object.getOwnPropertyDescriptor%', true);\nvar $defineProperty = GetIntrinsic('%Object.defineProperty%', true);\nvar $max = GetIntrinsic('%Math.max%');\n\nif ($defineProperty) {\n\ttry {\n\t\t$defineProperty({}, 'a', { value: 1 });\n\t} catch (e) {\n\t\t// IE 8 has a broken defineProperty\n\t\t$defineProperty = null;\n\t}\n}\n\nmodule.exports = function callBind(originalFunction) {\n\tvar func = $reflectApply(bind, $call, arguments);\n\tif ($gOPD && $defineProperty) {\n\t\tvar desc = $gOPD(func, 'length');\n\t\tif (desc.configurable) {\n\t\t\t// original length, plus the receiver, minus any additional arguments (after the receiver)\n\t\t\t$defineProperty(\n\t\t\t\tfunc,\n\t\t\t\t'length',\n\t\t\t\t{ value: 1 + $max(0, originalFunction.length - (arguments.length - 1)) }\n\t\t\t);\n\t\t}\n\t}\n\treturn func;\n};\n\nvar applyBind = function applyBind() {\n\treturn $reflectApply(bind, $apply, arguments);\n};\n\nif ($defineProperty) {\n\t$defineProperty(module.exports, 'apply', { value: applyBind });\n} else {\n\tmodule.exports.apply = applyBind;\n}\n","/*!\n Copyright (c) 2018 Jed Watson.\n Licensed under the MIT License (MIT), see\n http://jedwatson.github.io/classnames\n*/\n/* global define */\n\n(function () {\n\t'use strict';\n\n\tvar hasOwn = {}.hasOwnProperty;\n\n\tfunction classNames() {\n\t\tvar classes = [];\n\n\t\tfor (var i = 0; i < arguments.length; i++) {\n\t\t\tvar arg = arguments[i];\n\t\t\tif (!arg) continue;\n\n\t\t\tvar argType = typeof arg;\n\n\t\t\tif (argType === 'string' || argType === 'number') {\n\t\t\t\tclasses.push(arg);\n\t\t\t} else if (Array.isArray(arg)) {\n\t\t\t\tif (arg.length) {\n\t\t\t\t\tvar inner = classNames.apply(null, arg);\n\t\t\t\t\tif (inner) {\n\t\t\t\t\t\tclasses.push(inner);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else if (argType === 'object') {\n\t\t\t\tif (arg.toString === Object.prototype.toString) {\n\t\t\t\t\tfor (var key in arg) {\n\t\t\t\t\t\tif (hasOwn.call(arg, key) && arg[key]) {\n\t\t\t\t\t\t\tclasses.push(key);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tclasses.push(arg.toString());\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn classes.join(' ');\n\t}\n\n\tif (typeof module !== 'undefined' && module.exports) {\n\t\tclassNames.default = classNames;\n\t\tmodule.exports = classNames;\n\t} else if (typeof define === 'function' && typeof define.amd === 'object' && define.amd) {\n\t\t// register as 'classnames', consistent with npm package name\n\t\tdefine('classnames', [], function () {\n\t\t\treturn classNames;\n\t\t});\n\t} else {\n\t\twindow.classNames = classNames;\n\t}\n}());\n","'use strict';\n\nfunction objectToString(o) {\n return Object.prototype.toString.call(o);\n}\n\n// shim for Node's 'util' package\n// DO NOT REMOVE THIS! It is required for compatibility with EnderJS (http://enderjs.com/).\nvar util = {\n isArray: function (ar) {\n return Array.isArray(ar) || (typeof ar === 'object' && objectToString(ar) === '[object Array]');\n },\n isDate: function (d) {\n return typeof d === 'object' && objectToString(d) === '[object Date]';\n },\n isRegExp: function (re) {\n return typeof re === 'object' && objectToString(re) === '[object RegExp]';\n },\n getRegExpFlags: function (re) {\n var flags = '';\n re.global && (flags += 'g');\n re.ignoreCase && (flags += 'i');\n re.multiline && (flags += 'm');\n return flags;\n }\n};\n\n\nif (typeof module === 'object')\n module.exports = clone;\n\n/**\n * Clones (copies) an Object using deep copying.\n *\n * This function supports circular references by default, but if you are certain\n * there are no circular references in your object, you can save some CPU time\n * by calling clone(obj, false).\n *\n * Caution: if `circular` is false and `parent` contains circular references,\n * your program may enter an infinite loop and crash.\n *\n * @param `parent` - the object to be cloned\n * @param `circular` - set to true if the object to be cloned may contain\n * circular references. (optional - true by default)\n * @param `depth` - set to a number if the object is only to be cloned to\n * a particular depth. (optional - defaults to Infinity)\n * @param `prototype` - sets the prototype to be used when cloning an object.\n * (optional - defaults to parent prototype).\n*/\n\nfunction clone(parent, circular, depth, prototype) {\n // maintain two arrays for circular references, where corresponding parents\n // and children have the same index\n var allParents = [];\n var allChildren = [];\n\n var useBuffer = typeof Buffer != 'undefined';\n\n if (typeof circular == 'undefined')\n circular = true;\n\n if (typeof depth == 'undefined')\n depth = Infinity;\n\n // recurse this function so we don't reset allParents and allChildren\n function _clone(parent, depth) {\n // cloning null always returns null\n if (parent === null)\n return null;\n\n if (depth == 0)\n return parent;\n\n var child;\n var proto;\n if (typeof parent != 'object') {\n return parent;\n }\n\n if (util.isArray(parent)) {\n child = [];\n } else if (util.isRegExp(parent)) {\n child = new RegExp(parent.source, util.getRegExpFlags(parent));\n if (parent.lastIndex) child.lastIndex = parent.lastIndex;\n } else if (util.isDate(parent)) {\n child = new Date(parent.getTime());\n } else if (useBuffer && Buffer.isBuffer(parent)) {\n child = new Buffer(parent.length);\n parent.copy(child);\n return child;\n } else {\n if (typeof prototype == 'undefined') {\n proto = Object.getPrototypeOf(parent);\n child = Object.create(proto);\n }\n else {\n child = Object.create(prototype);\n proto = prototype;\n }\n }\n\n if (circular) {\n var index = allParents.indexOf(parent);\n\n if (index != -1) {\n return allChildren[index];\n }\n allParents.push(parent);\n allChildren.push(child);\n }\n\n for (var i in parent) {\n var attrs;\n if (proto) {\n attrs = Object.getOwnPropertyDescriptor(proto, i);\n }\n \n if (attrs && attrs.set == null) {\n continue;\n }\n child[i] = _clone(parent[i], depth - 1);\n }\n\n return child;\n }\n\n return _clone(parent, depth);\n}\n\n/**\n * Simple flat clone using prototype, accepts only objects, usefull for property\n * override on FLAT configuration object (no nested props).\n *\n * USE WITH CAUTION! This may not behave as you wish if you do not know how this\n * works.\n */\nclone.clonePrototype = function(parent) {\n if (parent === null)\n return null;\n\n var c = function () {};\n c.prototype = parent;\n return new c();\n};\n","function toVal(mix) {\n\tvar k, y, str='';\n\n\tif (typeof mix === 'string' || typeof mix === 'number') {\n\t\tstr += mix;\n\t} else if (typeof mix === 'object') {\n\t\tif (Array.isArray(mix)) {\n\t\t\tfor (k=0; k < mix.length; k++) {\n\t\t\t\tif (mix[k]) {\n\t\t\t\t\tif (y = toVal(mix[k])) {\n\t\t\t\t\t\tstr && (str += ' ');\n\t\t\t\t\t\tstr += y;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tfor (k in mix) {\n\t\t\t\tif (mix[k]) {\n\t\t\t\t\tstr && (str += ' ');\n\t\t\t\t\tstr += k;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn str;\n}\n\nexport default function () {\n\tvar i=0, tmp, x, str='';\n\twhile (i < arguments.length) {\n\t\tif (tmp = arguments[i++]) {\n\t\t\tif (x = toVal(tmp)) {\n\t\t\t\tstr && (str += ' ');\n\t\t\t\tstr += x\n\t\t\t}\n\t\t}\n\t}\n\treturn str;\n}\n","var Writable = require('readable-stream').Writable\nvar inherits = require('inherits')\nvar bufferFrom = require('buffer-from')\n\nif (typeof Uint8Array === 'undefined') {\n var U8 = require('typedarray').Uint8Array\n} else {\n var U8 = Uint8Array\n}\n\nfunction ConcatStream(opts, cb) {\n if (!(this instanceof ConcatStream)) return new ConcatStream(opts, cb)\n\n if (typeof opts === 'function') {\n cb = opts\n opts = {}\n }\n if (!opts) opts = {}\n\n var encoding = opts.encoding\n var shouldInferEncoding = false\n\n if (!encoding) {\n shouldInferEncoding = true\n } else {\n encoding = String(encoding).toLowerCase()\n if (encoding === 'u8' || encoding === 'uint8') {\n encoding = 'uint8array'\n }\n }\n\n Writable.call(this, { objectMode: true })\n\n this.encoding = encoding\n this.shouldInferEncoding = shouldInferEncoding\n\n if (cb) this.on('finish', function () { cb(this.getBody()) })\n this.body = []\n}\n\nmodule.exports = ConcatStream\ninherits(ConcatStream, Writable)\n\nConcatStream.prototype._write = function(chunk, enc, next) {\n this.body.push(chunk)\n next()\n}\n\nConcatStream.prototype.inferEncoding = function (buff) {\n var firstBuffer = buff === undefined ? this.body[0] : buff;\n if (Buffer.isBuffer(firstBuffer)) return 'buffer'\n if (typeof Uint8Array !== 'undefined' && firstBuffer instanceof Uint8Array) return 'uint8array'\n if (Array.isArray(firstBuffer)) return 'array'\n if (typeof firstBuffer === 'string') return 'string'\n if (Object.prototype.toString.call(firstBuffer) === \"[object Object]\") return 'object'\n return 'buffer'\n}\n\nConcatStream.prototype.getBody = function () {\n if (!this.encoding && this.body.length === 0) return []\n if (this.shouldInferEncoding) this.encoding = this.inferEncoding()\n if (this.encoding === 'array') return arrayConcat(this.body)\n if (this.encoding === 'string') return stringConcat(this.body)\n if (this.encoding === 'buffer') return bufferConcat(this.body)\n if (this.encoding === 'uint8array') return u8Concat(this.body)\n return this.body\n}\n\nvar isArray = Array.isArray || function (arr) {\n return Object.prototype.toString.call(arr) == '[object Array]'\n}\n\nfunction isArrayish (arr) {\n return /Array\\]$/.test(Object.prototype.toString.call(arr))\n}\n\nfunction isBufferish (p) {\n return typeof p === 'string' || isArrayish(p) || (p && typeof p.subarray === 'function')\n}\n\nfunction stringConcat (parts) {\n var strings = []\n var needsToString = false\n for (var i = 0; i < parts.length; i++) {\n var p = parts[i]\n if (typeof p === 'string') {\n strings.push(p)\n } else if (Buffer.isBuffer(p)) {\n strings.push(p)\n } else if (isBufferish(p)) {\n strings.push(bufferFrom(p))\n } else {\n strings.push(bufferFrom(String(p)))\n }\n }\n if (Buffer.isBuffer(parts[0])) {\n strings = Buffer.concat(strings)\n strings = strings.toString('utf8')\n } else {\n strings = strings.join('')\n }\n return strings\n}\n\nfunction bufferConcat (parts) {\n var bufs = []\n for (var i = 0; i < parts.length; i++) {\n var p = parts[i]\n if (Buffer.isBuffer(p)) {\n bufs.push(p)\n } else if (isBufferish(p)) {\n bufs.push(bufferFrom(p))\n } else {\n bufs.push(bufferFrom(String(p)))\n }\n }\n return Buffer.concat(bufs)\n}\n\nfunction arrayConcat (parts) {\n var res = []\n for (var i = 0; i < parts.length; i++) {\n res.push.apply(res, parts[i])\n }\n return res\n}\n\nfunction u8Concat (parts) {\n var len = 0\n for (var i = 0; i < parts.length; i++) {\n if (typeof parts[i] === 'string') {\n parts[i] = bufferFrom(parts[i])\n }\n len += parts[i].length\n }\n var u8 = new U8(len)\n for (var i = 0, offset = 0; i < parts.length; i++) {\n var part = parts[i]\n for (var j = 0; j < part.length; j++) {\n u8[offset++] = part[j]\n }\n }\n return u8\n}\n","/*!\n * cookie\n * Copyright(c) 2012-2014 Roman Shtylman\n * Copyright(c) 2015 Douglas Christopher Wilson\n * MIT Licensed\n */\n\n'use strict';\n\n/**\n * Module exports.\n * @public\n */\n\nexports.parse = parse;\nexports.serialize = serialize;\n\n/**\n * Module variables.\n * @private\n */\n\nvar decode = decodeURIComponent;\nvar encode = encodeURIComponent;\n\n/**\n * RegExp to match field-content in RFC 7230 sec 3.2\n *\n * field-content = field-vchar [ 1*( SP / HTAB ) field-vchar ]\n * field-vchar = VCHAR / obs-text\n * obs-text = %x80-FF\n */\n\nvar fieldContentRegExp = /^[\\u0009\\u0020-\\u007e\\u0080-\\u00ff]+$/;\n\n/**\n * Parse a cookie header.\n *\n * Parse the given cookie header string into an object\n * The object has the various cookies as keys(names) => values\n *\n * @param {string} str\n * @param {object} [options]\n * @return {object}\n * @public\n */\n\nfunction parse(str, options) {\n if (typeof str !== 'string') {\n throw new TypeError('argument str must be a string');\n }\n\n var obj = {}\n var opt = options || {};\n var pairs = str.split(';')\n var dec = opt.decode || decode;\n\n for (var i = 0; i < pairs.length; i++) {\n var pair = pairs[i];\n var index = pair.indexOf('=')\n\n // skip things that don't look like key=value\n if (index < 0) {\n continue;\n }\n\n var key = pair.substring(0, index).trim()\n\n // only assign once\n if (undefined == obj[key]) {\n var val = pair.substring(index + 1, pair.length).trim()\n\n // quoted values\n if (val[0] === '\"') {\n val = val.slice(1, -1)\n }\n\n obj[key] = tryDecode(val, dec);\n }\n }\n\n return obj;\n}\n\n/**\n * Serialize data into a cookie header.\n *\n * Serialize the a name value pair into a cookie string suitable for\n * http headers. An optional options object specified cookie parameters.\n *\n * serialize('foo', 'bar', { httpOnly: true })\n * => \"foo=bar; httpOnly\"\n *\n * @param {string} name\n * @param {string} val\n * @param {object} [options]\n * @return {string}\n * @public\n */\n\nfunction serialize(name, val, options) {\n var opt = options || {};\n var enc = opt.encode || encode;\n\n if (typeof enc !== 'function') {\n throw new TypeError('option encode is invalid');\n }\n\n if (!fieldContentRegExp.test(name)) {\n throw new TypeError('argument name is invalid');\n }\n\n var value = enc(val);\n\n if (value && !fieldContentRegExp.test(value)) {\n throw new TypeError('argument val is invalid');\n }\n\n var str = name + '=' + value;\n\n if (null != opt.maxAge) {\n var maxAge = opt.maxAge - 0;\n\n if (isNaN(maxAge) || !isFinite(maxAge)) {\n throw new TypeError('option maxAge is invalid')\n }\n\n str += '; Max-Age=' + Math.floor(maxAge);\n }\n\n if (opt.domain) {\n if (!fieldContentRegExp.test(opt.domain)) {\n throw new TypeError('option domain is invalid');\n }\n\n str += '; Domain=' + opt.domain;\n }\n\n if (opt.path) {\n if (!fieldContentRegExp.test(opt.path)) {\n throw new TypeError('option path is invalid');\n }\n\n str += '; Path=' + opt.path;\n }\n\n if (opt.expires) {\n if (typeof opt.expires.toUTCString !== 'function') {\n throw new TypeError('option expires is invalid');\n }\n\n str += '; Expires=' + opt.expires.toUTCString();\n }\n\n if (opt.httpOnly) {\n str += '; HttpOnly';\n }\n\n if (opt.secure) {\n str += '; Secure';\n }\n\n if (opt.sameSite) {\n var sameSite = typeof opt.sameSite === 'string'\n ? opt.sameSite.toLowerCase() : opt.sameSite;\n\n switch (sameSite) {\n case true:\n str += '; SameSite=Strict';\n break;\n case 'lax':\n str += '; SameSite=Lax';\n break;\n case 'strict':\n str += '; SameSite=Strict';\n break;\n case 'none':\n str += '; SameSite=None';\n break;\n default:\n throw new TypeError('option sameSite is invalid');\n }\n }\n\n return str;\n}\n\n/**\n * Try decoding a string using a decoding function.\n *\n * @param {string} str\n * @param {function} decode\n * @private\n */\n\nfunction tryDecode(str, decode) {\n try {\n return decode(str);\n } catch (e) {\n return str;\n }\n}\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// NOTE: These type checking functions intentionally don't use `instanceof`\n// because it is fragile and can be easily faked with `Object.create()`.\n\nfunction isArray(arg) {\n if (Array.isArray) {\n return Array.isArray(arg);\n }\n return objectToString(arg) === '[object Array]';\n}\nexports.isArray = isArray;\n\nfunction isBoolean(arg) {\n return typeof arg === 'boolean';\n}\nexports.isBoolean = isBoolean;\n\nfunction isNull(arg) {\n return arg === null;\n}\nexports.isNull = isNull;\n\nfunction isNullOrUndefined(arg) {\n return arg == null;\n}\nexports.isNullOrUndefined = isNullOrUndefined;\n\nfunction isNumber(arg) {\n return typeof arg === 'number';\n}\nexports.isNumber = isNumber;\n\nfunction isString(arg) {\n return typeof arg === 'string';\n}\nexports.isString = isString;\n\nfunction isSymbol(arg) {\n return typeof arg === 'symbol';\n}\nexports.isSymbol = isSymbol;\n\nfunction isUndefined(arg) {\n return arg === void 0;\n}\nexports.isUndefined = isUndefined;\n\nfunction isRegExp(re) {\n return objectToString(re) === '[object RegExp]';\n}\nexports.isRegExp = isRegExp;\n\nfunction isObject(arg) {\n return typeof arg === 'object' && arg !== null;\n}\nexports.isObject = isObject;\n\nfunction isDate(d) {\n return objectToString(d) === '[object Date]';\n}\nexports.isDate = isDate;\n\nfunction isError(e) {\n return (objectToString(e) === '[object Error]' || e instanceof Error);\n}\nexports.isError = isError;\n\nfunction isFunction(arg) {\n return typeof arg === 'function';\n}\nexports.isFunction = isFunction;\n\nfunction isPrimitive(arg) {\n return arg === null ||\n typeof arg === 'boolean' ||\n typeof arg === 'number' ||\n typeof arg === 'string' ||\n typeof arg === 'symbol' || // ES6 symbol\n typeof arg === 'undefined';\n}\nexports.isPrimitive = isPrimitive;\n\nexports.isBuffer = require('buffer').Buffer.isBuffer;\n\nfunction objectToString(o) {\n return Object.prototype.toString.call(o);\n}\n","/**\n * Returns a function, that, as long as it continues to be invoked, will not\n * be triggered. The function will be called after it stops being called for\n * N milliseconds. If `immediate` is passed, trigger the function on the\n * leading edge, instead of the trailing. The function also has a property 'clear' \n * that is a function which will clear the timer to prevent previously scheduled executions. \n *\n * @source underscore.js\n * @see http://unscriptable.com/2009/03/20/debouncing-javascript-methods/\n * @param {Function} function to wrap\n * @param {Number} timeout in ms (`100`)\n * @param {Boolean} whether to execute at the beginning (`false`)\n * @api public\n */\nfunction debounce(func, wait, immediate){\n var timeout, args, context, timestamp, result;\n if (null == wait) wait = 100;\n\n function later() {\n var last = Date.now() - timestamp;\n\n if (last < wait && last >= 0) {\n timeout = setTimeout(later, wait - last);\n } else {\n timeout = null;\n if (!immediate) {\n result = func.apply(context, args);\n context = args = null;\n }\n }\n };\n\n var debounced = function(){\n context = this;\n args = arguments;\n timestamp = Date.now();\n var callNow = immediate && !timeout;\n if (!timeout) timeout = setTimeout(later, wait);\n if (callNow) {\n result = func.apply(context, args);\n context = args = null;\n }\n\n return result;\n };\n\n debounced.clear = function() {\n if (timeout) {\n clearTimeout(timeout);\n timeout = null;\n }\n };\n \n debounced.flush = function() {\n if (timeout) {\n result = func.apply(context, args);\n context = args = null;\n \n clearTimeout(timeout);\n timeout = null;\n }\n };\n\n return debounced;\n};\n\n// Adds compatibility for ES modules\ndebounce.debounce = debounce;\n\nmodule.exports = debounce;\n","var util = require('util')\n , AbstractLevelDOWN = require('abstract-leveldown').AbstractLevelDOWN\n\nfunction DeferredLevelDOWN (location) {\n AbstractLevelDOWN.call(this, typeof location == 'string' ? location : '') // optional location, who cares?\n this._db = undefined\n this._operations = []\n}\n\nutil.inherits(DeferredLevelDOWN, AbstractLevelDOWN)\n\n// called by LevelUP when we have a real DB to take its place\nDeferredLevelDOWN.prototype.setDb = function (db) {\n this._db = db\n this._operations.forEach(function (op) {\n db[op.method].apply(db, op.args)\n })\n}\n\nDeferredLevelDOWN.prototype._open = function (options, callback) {\n return process.nextTick(callback)\n}\n\n// queue a new deferred operation\nDeferredLevelDOWN.prototype._operation = function (method, args) {\n if (this._db)\n return this._db[method].apply(this._db, args)\n this._operations.push({ method: method, args: args })\n}\n\n// deferrables\n'put get del batch approximateSize'.split(' ').forEach(function (m) {\n DeferredLevelDOWN.prototype['_' + m] = function () {\n this._operation(m, arguments)\n }\n})\n\nDeferredLevelDOWN.prototype._isBuffer = function (obj) {\n return Buffer.isBuffer(obj)\n}\n\n// don't need to implement this as LevelUP's ReadStream checks for 'ready' state\nDeferredLevelDOWN.prototype._iterator = function () {\n throw new TypeError('not implemented')\n}\n\nmodule.exports = DeferredLevelDOWN\n","/* @flow */\n/*::\n\ntype DotenvParseOptions = {\n debug?: boolean\n}\n\n// keys and values from src\ntype DotenvParseOutput = { [string]: string }\n\ntype DotenvConfigOptions = {\n path?: string, // path to .env file\n encoding?: string, // encoding of .env file\n debug?: string // turn on logging for debugging purposes\n}\n\ntype DotenvConfigOutput = {\n parsed?: DotenvParseOutput,\n error?: Error\n}\n\n*/\n\nconst fs = require('fs')\nconst path = require('path')\nconst os = require('os')\n\nfunction log (message /*: string */) {\n console.log(`[dotenv][DEBUG] ${message}`)\n}\n\nconst NEWLINE = '\\n'\nconst RE_INI_KEY_VAL = /^\\s*([\\w.-]+)\\s*=\\s*(.*)?\\s*$/\nconst RE_NEWLINES = /\\\\n/g\nconst NEWLINES_MATCH = /\\r\\n|\\n|\\r/\n\n// Parses src into an Object\nfunction parse (src /*: string | Buffer */, options /*: ?DotenvParseOptions */) /*: DotenvParseOutput */ {\n const debug = Boolean(options && options.debug)\n const obj = {}\n\n // convert Buffers before splitting into lines and processing\n src.toString().split(NEWLINES_MATCH).forEach(function (line, idx) {\n // matching \"KEY' and 'VAL' in 'KEY=VAL'\n const keyValueArr = line.match(RE_INI_KEY_VAL)\n // matched?\n if (keyValueArr != null) {\n const key = keyValueArr[1]\n // default undefined or missing values to empty string\n let val = (keyValueArr[2] || '')\n const end = val.length - 1\n const isDoubleQuoted = val[0] === '\"' && val[end] === '\"'\n const isSingleQuoted = val[0] === \"'\" && val[end] === \"'\"\n\n // if single or double quoted, remove quotes\n if (isSingleQuoted || isDoubleQuoted) {\n val = val.substring(1, end)\n\n // if double quoted, expand newlines\n if (isDoubleQuoted) {\n val = val.replace(RE_NEWLINES, NEWLINE)\n }\n } else {\n // remove surrounding whitespace\n val = val.trim()\n }\n\n obj[key] = val\n } else if (debug) {\n log(`did not match key and value when parsing line ${idx + 1}: ${line}`)\n }\n })\n\n return obj\n}\n\nfunction resolveHome (envPath) {\n return envPath[0] === '~' ? path.join(os.homedir(), envPath.slice(1)) : envPath\n}\n\n// Populates process.env from .env file\nfunction config (options /*: ?DotenvConfigOptions */) /*: DotenvConfigOutput */ {\n let dotenvPath = path.resolve(process.cwd(), '.env')\n let encoding /*: string */ = 'utf8'\n let debug = false\n\n if (options) {\n if (options.path != null) {\n dotenvPath = resolveHome(options.path)\n }\n if (options.encoding != null) {\n encoding = options.encoding\n }\n if (options.debug != null) {\n debug = true\n }\n }\n\n try {\n // specifying an encoding returns a string instead of a buffer\n const parsed = parse(fs.readFileSync(dotenvPath, { encoding }), { debug })\n\n Object.keys(parsed).forEach(function (key) {\n if (!Object.prototype.hasOwnProperty.call(process.env, key)) {\n process.env[key] = parsed[key]\n } else if (debug) {\n log(`\"${key}\" is already defined in \\`process.env\\` and will not be overwritten`)\n }\n })\n\n return { parsed }\n } catch (e) {\n return { error: e }\n }\n}\n\nmodule.exports.config = config\nmodule.exports.parse = parse\n","var prr = require('prr')\n\nfunction init (type, message, cause) {\n if (!!message && typeof message != 'string') {\n message = message.message || message.name\n }\n prr(this, {\n type : type\n , name : type\n // can be passed just a 'cause'\n , cause : typeof message != 'string' ? message : cause\n , message : message\n }, 'ewr')\n}\n\n// generic prototype, not intended to be actually used - helpful for `instanceof`\nfunction CustomError (message, cause) {\n Error.call(this)\n if (Error.captureStackTrace)\n Error.captureStackTrace(this, this.constructor)\n init.call(this, 'CustomError', message, cause)\n}\n\nCustomError.prototype = new Error()\n\nfunction createError (errno, type, proto) {\n var err = function (message, cause) {\n init.call(this, type, message, cause)\n //TODO: the specificity here is stupid, errno should be available everywhere\n if (type == 'FilesystemError') {\n this.code = this.cause.code\n this.path = this.cause.path\n this.errno = this.cause.errno\n this.message =\n (errno.errno[this.cause.errno]\n ? errno.errno[this.cause.errno].description\n : this.cause.message)\n + (this.cause.path ? ' [' + this.cause.path + ']' : '')\n }\n Error.call(this)\n if (Error.captureStackTrace)\n Error.captureStackTrace(this, err)\n }\n err.prototype = !!proto ? new proto() : new CustomError()\n return err\n}\n\nmodule.exports = function (errno) {\n var ce = function (type, proto) {\n return createError(errno, type, proto)\n }\n return {\n CustomError : CustomError\n , FilesystemError : ce('FilesystemError')\n , createError : ce\n }\n}\n","var all = module.exports.all = [\n {\n errno: -2,\n code: 'ENOENT',\n description: 'no such file or directory'\n },\n {\n errno: -1,\n code: 'UNKNOWN',\n description: 'unknown error'\n },\n {\n errno: 0,\n code: 'OK',\n description: 'success'\n },\n {\n errno: 1,\n code: 'EOF',\n description: 'end of file'\n },\n {\n errno: 2,\n code: 'EADDRINFO',\n description: 'getaddrinfo error'\n },\n {\n errno: 3,\n code: 'EACCES',\n description: 'permission denied'\n },\n {\n errno: 4,\n code: 'EAGAIN',\n description: 'resource temporarily unavailable'\n },\n {\n errno: 5,\n code: 'EADDRINUSE',\n description: 'address already in use'\n },\n {\n errno: 6,\n code: 'EADDRNOTAVAIL',\n description: 'address not available'\n },\n {\n errno: 7,\n code: 'EAFNOSUPPORT',\n description: 'address family not supported'\n },\n {\n errno: 8,\n code: 'EALREADY',\n description: 'connection already in progress'\n },\n {\n errno: 9,\n code: 'EBADF',\n description: 'bad file descriptor'\n },\n {\n errno: 10,\n code: 'EBUSY',\n description: 'resource busy or locked'\n },\n {\n errno: 11,\n code: 'ECONNABORTED',\n description: 'software caused connection abort'\n },\n {\n errno: 12,\n code: 'ECONNREFUSED',\n description: 'connection refused'\n },\n {\n errno: 13,\n code: 'ECONNRESET',\n description: 'connection reset by peer'\n },\n {\n errno: 14,\n code: 'EDESTADDRREQ',\n description: 'destination address required'\n },\n {\n errno: 15,\n code: 'EFAULT',\n description: 'bad address in system call argument'\n },\n {\n errno: 16,\n code: 'EHOSTUNREACH',\n description: 'host is unreachable'\n },\n {\n errno: 17,\n code: 'EINTR',\n description: 'interrupted system call'\n },\n {\n errno: 18,\n code: 'EINVAL',\n description: 'invalid argument'\n },\n {\n errno: 19,\n code: 'EISCONN',\n description: 'socket is already connected'\n },\n {\n errno: 20,\n code: 'EMFILE',\n description: 'too many open files'\n },\n {\n errno: 21,\n code: 'EMSGSIZE',\n description: 'message too long'\n },\n {\n errno: 22,\n code: 'ENETDOWN',\n description: 'network is down'\n },\n {\n errno: 23,\n code: 'ENETUNREACH',\n description: 'network is unreachable'\n },\n {\n errno: 24,\n code: 'ENFILE',\n description: 'file table overflow'\n },\n {\n errno: 25,\n code: 'ENOBUFS',\n description: 'no buffer space available'\n },\n {\n errno: 26,\n code: 'ENOMEM',\n description: 'not enough memory'\n },\n {\n errno: 27,\n code: 'ENOTDIR',\n description: 'not a directory'\n },\n {\n errno: 28,\n code: 'EISDIR',\n description: 'illegal operation on a directory'\n },\n {\n errno: 29,\n code: 'ENONET',\n description: 'machine is not on the network'\n },\n {\n errno: 31,\n code: 'ENOTCONN',\n description: 'socket is not connected'\n },\n {\n errno: 32,\n code: 'ENOTSOCK',\n description: 'socket operation on non-socket'\n },\n {\n errno: 33,\n code: 'ENOTSUP',\n description: 'operation not supported on socket'\n },\n {\n errno: 34,\n code: 'ENOENT',\n description: 'no such file or directory'\n },\n {\n errno: 35,\n code: 'ENOSYS',\n description: 'function not implemented'\n },\n {\n errno: 36,\n code: 'EPIPE',\n description: 'broken pipe'\n },\n {\n errno: 37,\n code: 'EPROTO',\n description: 'protocol error'\n },\n {\n errno: 38,\n code: 'EPROTONOSUPPORT',\n description: 'protocol not supported'\n },\n {\n errno: 39,\n code: 'EPROTOTYPE',\n description: 'protocol wrong type for socket'\n },\n {\n errno: 40,\n code: 'ETIMEDOUT',\n description: 'connection timed out'\n },\n {\n errno: 41,\n code: 'ECHARSET',\n description: 'invalid Unicode character'\n },\n {\n errno: 42,\n code: 'EAIFAMNOSUPPORT',\n description: 'address family for hostname not supported'\n },\n {\n errno: 44,\n code: 'EAISERVICE',\n description: 'servname not supported for ai_socktype'\n },\n {\n errno: 45,\n code: 'EAISOCKTYPE',\n description: 'ai_socktype not supported'\n },\n {\n errno: 46,\n code: 'ESHUTDOWN',\n description: 'cannot send after transport endpoint shutdown'\n },\n {\n errno: 47,\n code: 'EEXIST',\n description: 'file already exists'\n },\n {\n errno: 48,\n code: 'ESRCH',\n description: 'no such process'\n },\n {\n errno: 49,\n code: 'ENAMETOOLONG',\n description: 'name too long'\n },\n {\n errno: 50,\n code: 'EPERM',\n description: 'operation not permitted'\n },\n {\n errno: 51,\n code: 'ELOOP',\n description: 'too many symbolic links encountered'\n },\n {\n errno: 52,\n code: 'EXDEV',\n description: 'cross-device link not permitted'\n },\n {\n errno: 53,\n code: 'ENOTEMPTY',\n description: 'directory not empty'\n },\n {\n errno: 54,\n code: 'ENOSPC',\n description: 'no space left on device'\n },\n {\n errno: 55,\n code: 'EIO',\n description: 'i/o error'\n },\n {\n errno: 56,\n code: 'EROFS',\n description: 'read-only file system'\n },\n {\n errno: 57,\n code: 'ENODEV',\n description: 'no such device'\n },\n {\n errno: 58,\n code: 'ESPIPE',\n description: 'invalid seek'\n },\n {\n errno: 59,\n code: 'ECANCELED',\n description: 'operation canceled'\n }\n]\n\nmodule.exports.errno = {}\nmodule.exports.code = {}\n\nall.forEach(function (error) {\n module.exports.errno[error.errno] = error\n module.exports.code[error.code] = error\n})\n\nmodule.exports.custom = require('./custom')(module.exports)\nmodule.exports.create = module.exports.custom.createError\n","/*!\n * prr\n * (c) 2013 Rod Vagg \n * https://github.com/rvagg/prr\n * License: MIT\n */\n\n(function (name, context, definition) {\n if (typeof module != 'undefined' && module.exports)\n module.exports = definition()\n else\n context[name] = definition()\n})('prr', this, function() {\n\n var setProperty = typeof Object.defineProperty == 'function'\n ? function (obj, key, options) {\n Object.defineProperty(obj, key, options)\n return obj\n }\n : function (obj, key, options) { // < es5\n obj[key] = options.value\n return obj\n }\n\n , makeOptions = function (value, options) {\n var oo = typeof options == 'object'\n , os = !oo && typeof options == 'string'\n , op = function (p) {\n return oo\n ? !!options[p]\n : os\n ? options.indexOf(p[0]) > -1\n : false\n }\n\n return {\n enumerable : op('enumerable')\n , configurable : op('configurable')\n , writable : op('writable')\n , value : value\n }\n }\n\n , prr = function (obj, key, value, options) {\n var k\n\n options = makeOptions(value, options)\n\n if (typeof key == 'object') {\n for (k in key) {\n if (Object.hasOwnProperty.call(key, k)) {\n options.value = key[k]\n setProperty(obj, k, options)\n }\n }\n return obj\n }\n\n return setProperty(obj, key, options)\n }\n\n return prr\n})","'use strict';\n\nvar has = Object.prototype.hasOwnProperty\n , prefix = '~';\n\n/**\n * Constructor to create a storage for our `EE` objects.\n * An `Events` instance is a plain object whose properties are event names.\n *\n * @constructor\n * @private\n */\nfunction Events() {}\n\n//\n// We try to not inherit from `Object.prototype`. In some engines creating an\n// instance in this way is faster than calling `Object.create(null)` directly.\n// If `Object.create(null)` is not supported we prefix the event names with a\n// character to make sure that the built-in object properties are not\n// overridden or used as an attack vector.\n//\nif (Object.create) {\n Events.prototype = Object.create(null);\n\n //\n // This hack is needed because the `__proto__` property is still inherited in\n // some old browsers like Android 4, iPhone 5.1, Opera 11 and Safari 5.\n //\n if (!new Events().__proto__) prefix = false;\n}\n\n/**\n * Representation of a single event listener.\n *\n * @param {Function} fn The listener function.\n * @param {*} context The context to invoke the listener with.\n * @param {Boolean} [once=false] Specify if the listener is a one-time listener.\n * @constructor\n * @private\n */\nfunction EE(fn, context, once) {\n this.fn = fn;\n this.context = context;\n this.once = once || false;\n}\n\n/**\n * Add a listener for a given event.\n *\n * @param {EventEmitter} emitter Reference to the `EventEmitter` instance.\n * @param {(String|Symbol)} event The event name.\n * @param {Function} fn The listener function.\n * @param {*} context The context to invoke the listener with.\n * @param {Boolean} once Specify if the listener is a one-time listener.\n * @returns {EventEmitter}\n * @private\n */\nfunction addListener(emitter, event, fn, context, once) {\n if (typeof fn !== 'function') {\n throw new TypeError('The listener must be a function');\n }\n\n var listener = new EE(fn, context || emitter, once)\n , evt = prefix ? prefix + event : event;\n\n if (!emitter._events[evt]) emitter._events[evt] = listener, emitter._eventsCount++;\n else if (!emitter._events[evt].fn) emitter._events[evt].push(listener);\n else emitter._events[evt] = [emitter._events[evt], listener];\n\n return emitter;\n}\n\n/**\n * Clear event by name.\n *\n * @param {EventEmitter} emitter Reference to the `EventEmitter` instance.\n * @param {(String|Symbol)} evt The Event name.\n * @private\n */\nfunction clearEvent(emitter, evt) {\n if (--emitter._eventsCount === 0) emitter._events = new Events();\n else delete emitter._events[evt];\n}\n\n/**\n * Minimal `EventEmitter` interface that is molded against the Node.js\n * `EventEmitter` interface.\n *\n * @constructor\n * @public\n */\nfunction EventEmitter() {\n this._events = new Events();\n this._eventsCount = 0;\n}\n\n/**\n * Return an array listing the events for which the emitter has registered\n * listeners.\n *\n * @returns {Array}\n * @public\n */\nEventEmitter.prototype.eventNames = function eventNames() {\n var names = []\n , events\n , name;\n\n if (this._eventsCount === 0) return names;\n\n for (name in (events = this._events)) {\n if (has.call(events, name)) names.push(prefix ? name.slice(1) : name);\n }\n\n if (Object.getOwnPropertySymbols) {\n return names.concat(Object.getOwnPropertySymbols(events));\n }\n\n return names;\n};\n\n/**\n * Return the listeners registered for a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @returns {Array} The registered listeners.\n * @public\n */\nEventEmitter.prototype.listeners = function listeners(event) {\n var evt = prefix ? prefix + event : event\n , handlers = this._events[evt];\n\n if (!handlers) return [];\n if (handlers.fn) return [handlers.fn];\n\n for (var i = 0, l = handlers.length, ee = new Array(l); i < l; i++) {\n ee[i] = handlers[i].fn;\n }\n\n return ee;\n};\n\n/**\n * Return the number of listeners listening to a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @returns {Number} The number of listeners.\n * @public\n */\nEventEmitter.prototype.listenerCount = function listenerCount(event) {\n var evt = prefix ? prefix + event : event\n , listeners = this._events[evt];\n\n if (!listeners) return 0;\n if (listeners.fn) return 1;\n return listeners.length;\n};\n\n/**\n * Calls each of the listeners registered for a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @returns {Boolean} `true` if the event had listeners, else `false`.\n * @public\n */\nEventEmitter.prototype.emit = function emit(event, a1, a2, a3, a4, a5) {\n var evt = prefix ? prefix + event : event;\n\n if (!this._events[evt]) return false;\n\n var listeners = this._events[evt]\n , len = arguments.length\n , args\n , i;\n\n if (listeners.fn) {\n if (listeners.once) this.removeListener(event, listeners.fn, undefined, true);\n\n switch (len) {\n case 1: return listeners.fn.call(listeners.context), true;\n case 2: return listeners.fn.call(listeners.context, a1), true;\n case 3: return listeners.fn.call(listeners.context, a1, a2), true;\n case 4: return listeners.fn.call(listeners.context, a1, a2, a3), true;\n case 5: return listeners.fn.call(listeners.context, a1, a2, a3, a4), true;\n case 6: return listeners.fn.call(listeners.context, a1, a2, a3, a4, a5), true;\n }\n\n for (i = 1, args = new Array(len -1); i < len; i++) {\n args[i - 1] = arguments[i];\n }\n\n listeners.fn.apply(listeners.context, args);\n } else {\n var length = listeners.length\n , j;\n\n for (i = 0; i < length; i++) {\n if (listeners[i].once) this.removeListener(event, listeners[i].fn, undefined, true);\n\n switch (len) {\n case 1: listeners[i].fn.call(listeners[i].context); break;\n case 2: listeners[i].fn.call(listeners[i].context, a1); break;\n case 3: listeners[i].fn.call(listeners[i].context, a1, a2); break;\n case 4: listeners[i].fn.call(listeners[i].context, a1, a2, a3); break;\n default:\n if (!args) for (j = 1, args = new Array(len -1); j < len; j++) {\n args[j - 1] = arguments[j];\n }\n\n listeners[i].fn.apply(listeners[i].context, args);\n }\n }\n }\n\n return true;\n};\n\n/**\n * Add a listener for a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @param {Function} fn The listener function.\n * @param {*} [context=this] The context to invoke the listener with.\n * @returns {EventEmitter} `this`.\n * @public\n */\nEventEmitter.prototype.on = function on(event, fn, context) {\n return addListener(this, event, fn, context, false);\n};\n\n/**\n * Add a one-time listener for a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @param {Function} fn The listener function.\n * @param {*} [context=this] The context to invoke the listener with.\n * @returns {EventEmitter} `this`.\n * @public\n */\nEventEmitter.prototype.once = function once(event, fn, context) {\n return addListener(this, event, fn, context, true);\n};\n\n/**\n * Remove the listeners of a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @param {Function} fn Only remove the listeners that match this function.\n * @param {*} context Only remove the listeners that have this context.\n * @param {Boolean} once Only remove one-time listeners.\n * @returns {EventEmitter} `this`.\n * @public\n */\nEventEmitter.prototype.removeListener = function removeListener(event, fn, context, once) {\n var evt = prefix ? prefix + event : event;\n\n if (!this._events[evt]) return this;\n if (!fn) {\n clearEvent(this, evt);\n return this;\n }\n\n var listeners = this._events[evt];\n\n if (listeners.fn) {\n if (\n listeners.fn === fn &&\n (!once || listeners.once) &&\n (!context || listeners.context === context)\n ) {\n clearEvent(this, evt);\n }\n } else {\n for (var i = 0, events = [], length = listeners.length; i < length; i++) {\n if (\n listeners[i].fn !== fn ||\n (once && !listeners[i].once) ||\n (context && listeners[i].context !== context)\n ) {\n events.push(listeners[i]);\n }\n }\n\n //\n // Reset the array, or remove it completely if we have no more listeners.\n //\n if (events.length) this._events[evt] = events.length === 1 ? events[0] : events;\n else clearEvent(this, evt);\n }\n\n return this;\n};\n\n/**\n * Remove all listeners, or those of the specified event.\n *\n * @param {(String|Symbol)} [event] The event name.\n * @returns {EventEmitter} `this`.\n * @public\n */\nEventEmitter.prototype.removeAllListeners = function removeAllListeners(event) {\n var evt;\n\n if (event) {\n evt = prefix ? prefix + event : event;\n if (this._events[evt]) clearEvent(this, evt);\n } else {\n this._events = new Events();\n this._eventsCount = 0;\n }\n\n return this;\n};\n\n//\n// Alias methods names because people roll like that.\n//\nEventEmitter.prototype.off = EventEmitter.prototype.removeListener;\nEventEmitter.prototype.addListener = EventEmitter.prototype.on;\n\n//\n// Expose the prefix.\n//\nEventEmitter.prefixed = prefix;\n\n//\n// Allow `EventEmitter` to be imported as module namespace.\n//\nEventEmitter.EventEmitter = EventEmitter;\n\n//\n// Expose the module.\n//\nif ('undefined' !== typeof module) {\n module.exports = EventEmitter;\n}\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\nvar R = typeof Reflect === 'object' ? Reflect : null\nvar ReflectApply = R && typeof R.apply === 'function'\n ? R.apply\n : function ReflectApply(target, receiver, args) {\n return Function.prototype.apply.call(target, receiver, args);\n }\n\nvar ReflectOwnKeys\nif (R && typeof R.ownKeys === 'function') {\n ReflectOwnKeys = R.ownKeys\n} else if (Object.getOwnPropertySymbols) {\n ReflectOwnKeys = function ReflectOwnKeys(target) {\n return Object.getOwnPropertyNames(target)\n .concat(Object.getOwnPropertySymbols(target));\n };\n} else {\n ReflectOwnKeys = function ReflectOwnKeys(target) {\n return Object.getOwnPropertyNames(target);\n };\n}\n\nfunction ProcessEmitWarning(warning) {\n if (console && console.warn) console.warn(warning);\n}\n\nvar NumberIsNaN = Number.isNaN || function NumberIsNaN(value) {\n return value !== value;\n}\n\nfunction EventEmitter() {\n EventEmitter.init.call(this);\n}\nmodule.exports = EventEmitter;\nmodule.exports.once = once;\n\n// Backwards-compat with node 0.10.x\nEventEmitter.EventEmitter = EventEmitter;\n\nEventEmitter.prototype._events = undefined;\nEventEmitter.prototype._eventsCount = 0;\nEventEmitter.prototype._maxListeners = undefined;\n\n// By default EventEmitters will print a warning if more than 10 listeners are\n// added to it. This is a useful default which helps finding memory leaks.\nvar defaultMaxListeners = 10;\n\nfunction checkListener(listener) {\n if (typeof listener !== 'function') {\n throw new TypeError('The \"listener\" argument must be of type Function. Received type ' + typeof listener);\n }\n}\n\nObject.defineProperty(EventEmitter, 'defaultMaxListeners', {\n enumerable: true,\n get: function() {\n return defaultMaxListeners;\n },\n set: function(arg) {\n if (typeof arg !== 'number' || arg < 0 || NumberIsNaN(arg)) {\n throw new RangeError('The value of \"defaultMaxListeners\" is out of range. It must be a non-negative number. Received ' + arg + '.');\n }\n defaultMaxListeners = arg;\n }\n});\n\nEventEmitter.init = function() {\n\n if (this._events === undefined ||\n this._events === Object.getPrototypeOf(this)._events) {\n this._events = Object.create(null);\n this._eventsCount = 0;\n }\n\n this._maxListeners = this._maxListeners || undefined;\n};\n\n// Obviously not all Emitters should be limited to 10. This function allows\n// that to be increased. Set to zero for unlimited.\nEventEmitter.prototype.setMaxListeners = function setMaxListeners(n) {\n if (typeof n !== 'number' || n < 0 || NumberIsNaN(n)) {\n throw new RangeError('The value of \"n\" is out of range. It must be a non-negative number. Received ' + n + '.');\n }\n this._maxListeners = n;\n return this;\n};\n\nfunction _getMaxListeners(that) {\n if (that._maxListeners === undefined)\n return EventEmitter.defaultMaxListeners;\n return that._maxListeners;\n}\n\nEventEmitter.prototype.getMaxListeners = function getMaxListeners() {\n return _getMaxListeners(this);\n};\n\nEventEmitter.prototype.emit = function emit(type) {\n var args = [];\n for (var i = 1; i < arguments.length; i++) args.push(arguments[i]);\n var doError = (type === 'error');\n\n var events = this._events;\n if (events !== undefined)\n doError = (doError && events.error === undefined);\n else if (!doError)\n return false;\n\n // If there is no 'error' event listener then throw.\n if (doError) {\n var er;\n if (args.length > 0)\n er = args[0];\n if (er instanceof Error) {\n // Note: The comments on the `throw` lines are intentional, they show\n // up in Node's output if this results in an unhandled exception.\n throw er; // Unhandled 'error' event\n }\n // At least give some kind of context to the user\n var err = new Error('Unhandled error.' + (er ? ' (' + er.message + ')' : ''));\n err.context = er;\n throw err; // Unhandled 'error' event\n }\n\n var handler = events[type];\n\n if (handler === undefined)\n return false;\n\n if (typeof handler === 'function') {\n ReflectApply(handler, this, args);\n } else {\n var len = handler.length;\n var listeners = arrayClone(handler, len);\n for (var i = 0; i < len; ++i)\n ReflectApply(listeners[i], this, args);\n }\n\n return true;\n};\n\nfunction _addListener(target, type, listener, prepend) {\n var m;\n var events;\n var existing;\n\n checkListener(listener);\n\n events = target._events;\n if (events === undefined) {\n events = target._events = Object.create(null);\n target._eventsCount = 0;\n } else {\n // To avoid recursion in the case that type === \"newListener\"! Before\n // adding it to the listeners, first emit \"newListener\".\n if (events.newListener !== undefined) {\n target.emit('newListener', type,\n listener.listener ? listener.listener : listener);\n\n // Re-assign `events` because a newListener handler could have caused the\n // this._events to be assigned to a new object\n events = target._events;\n }\n existing = events[type];\n }\n\n if (existing === undefined) {\n // Optimize the case of one listener. Don't need the extra array object.\n existing = events[type] = listener;\n ++target._eventsCount;\n } else {\n if (typeof existing === 'function') {\n // Adding the second element, need to change to array.\n existing = events[type] =\n prepend ? [listener, existing] : [existing, listener];\n // If we've already got an array, just append.\n } else if (prepend) {\n existing.unshift(listener);\n } else {\n existing.push(listener);\n }\n\n // Check for listener leak\n m = _getMaxListeners(target);\n if (m > 0 && existing.length > m && !existing.warned) {\n existing.warned = true;\n // No error code for this since it is a Warning\n // eslint-disable-next-line no-restricted-syntax\n var w = new Error('Possible EventEmitter memory leak detected. ' +\n existing.length + ' ' + String(type) + ' listeners ' +\n 'added. Use emitter.setMaxListeners() to ' +\n 'increase limit');\n w.name = 'MaxListenersExceededWarning';\n w.emitter = target;\n w.type = type;\n w.count = existing.length;\n ProcessEmitWarning(w);\n }\n }\n\n return target;\n}\n\nEventEmitter.prototype.addListener = function addListener(type, listener) {\n return _addListener(this, type, listener, false);\n};\n\nEventEmitter.prototype.on = EventEmitter.prototype.addListener;\n\nEventEmitter.prototype.prependListener =\n function prependListener(type, listener) {\n return _addListener(this, type, listener, true);\n };\n\nfunction onceWrapper() {\n if (!this.fired) {\n this.target.removeListener(this.type, this.wrapFn);\n this.fired = true;\n if (arguments.length === 0)\n return this.listener.call(this.target);\n return this.listener.apply(this.target, arguments);\n }\n}\n\nfunction _onceWrap(target, type, listener) {\n var state = { fired: false, wrapFn: undefined, target: target, type: type, listener: listener };\n var wrapped = onceWrapper.bind(state);\n wrapped.listener = listener;\n state.wrapFn = wrapped;\n return wrapped;\n}\n\nEventEmitter.prototype.once = function once(type, listener) {\n checkListener(listener);\n this.on(type, _onceWrap(this, type, listener));\n return this;\n};\n\nEventEmitter.prototype.prependOnceListener =\n function prependOnceListener(type, listener) {\n checkListener(listener);\n this.prependListener(type, _onceWrap(this, type, listener));\n return this;\n };\n\n// Emits a 'removeListener' event if and only if the listener was removed.\nEventEmitter.prototype.removeListener =\n function removeListener(type, listener) {\n var list, events, position, i, originalListener;\n\n checkListener(listener);\n\n events = this._events;\n if (events === undefined)\n return this;\n\n list = events[type];\n if (list === undefined)\n return this;\n\n if (list === listener || list.listener === listener) {\n if (--this._eventsCount === 0)\n this._events = Object.create(null);\n else {\n delete events[type];\n if (events.removeListener)\n this.emit('removeListener', type, list.listener || listener);\n }\n } else if (typeof list !== 'function') {\n position = -1;\n\n for (i = list.length - 1; i >= 0; i--) {\n if (list[i] === listener || list[i].listener === listener) {\n originalListener = list[i].listener;\n position = i;\n break;\n }\n }\n\n if (position < 0)\n return this;\n\n if (position === 0)\n list.shift();\n else {\n spliceOne(list, position);\n }\n\n if (list.length === 1)\n events[type] = list[0];\n\n if (events.removeListener !== undefined)\n this.emit('removeListener', type, originalListener || listener);\n }\n\n return this;\n };\n\nEventEmitter.prototype.off = EventEmitter.prototype.removeListener;\n\nEventEmitter.prototype.removeAllListeners =\n function removeAllListeners(type) {\n var listeners, events, i;\n\n events = this._events;\n if (events === undefined)\n return this;\n\n // not listening for removeListener, no need to emit\n if (events.removeListener === undefined) {\n if (arguments.length === 0) {\n this._events = Object.create(null);\n this._eventsCount = 0;\n } else if (events[type] !== undefined) {\n if (--this._eventsCount === 0)\n this._events = Object.create(null);\n else\n delete events[type];\n }\n return this;\n }\n\n // emit removeListener for all listeners on all events\n if (arguments.length === 0) {\n var keys = Object.keys(events);\n var key;\n for (i = 0; i < keys.length; ++i) {\n key = keys[i];\n if (key === 'removeListener') continue;\n this.removeAllListeners(key);\n }\n this.removeAllListeners('removeListener');\n this._events = Object.create(null);\n this._eventsCount = 0;\n return this;\n }\n\n listeners = events[type];\n\n if (typeof listeners === 'function') {\n this.removeListener(type, listeners);\n } else if (listeners !== undefined) {\n // LIFO order\n for (i = listeners.length - 1; i >= 0; i--) {\n this.removeListener(type, listeners[i]);\n }\n }\n\n return this;\n };\n\nfunction _listeners(target, type, unwrap) {\n var events = target._events;\n\n if (events === undefined)\n return [];\n\n var evlistener = events[type];\n if (evlistener === undefined)\n return [];\n\n if (typeof evlistener === 'function')\n return unwrap ? [evlistener.listener || evlistener] : [evlistener];\n\n return unwrap ?\n unwrapListeners(evlistener) : arrayClone(evlistener, evlistener.length);\n}\n\nEventEmitter.prototype.listeners = function listeners(type) {\n return _listeners(this, type, true);\n};\n\nEventEmitter.prototype.rawListeners = function rawListeners(type) {\n return _listeners(this, type, false);\n};\n\nEventEmitter.listenerCount = function(emitter, type) {\n if (typeof emitter.listenerCount === 'function') {\n return emitter.listenerCount(type);\n } else {\n return listenerCount.call(emitter, type);\n }\n};\n\nEventEmitter.prototype.listenerCount = listenerCount;\nfunction listenerCount(type) {\n var events = this._events;\n\n if (events !== undefined) {\n var evlistener = events[type];\n\n if (typeof evlistener === 'function') {\n return 1;\n } else if (evlistener !== undefined) {\n return evlistener.length;\n }\n }\n\n return 0;\n}\n\nEventEmitter.prototype.eventNames = function eventNames() {\n return this._eventsCount > 0 ? ReflectOwnKeys(this._events) : [];\n};\n\nfunction arrayClone(arr, n) {\n var copy = new Array(n);\n for (var i = 0; i < n; ++i)\n copy[i] = arr[i];\n return copy;\n}\n\nfunction spliceOne(list, index) {\n for (; index + 1 < list.length; index++)\n list[index] = list[index + 1];\n list.pop();\n}\n\nfunction unwrapListeners(arr) {\n var ret = new Array(arr.length);\n for (var i = 0; i < ret.length; ++i) {\n ret[i] = arr[i].listener || arr[i];\n }\n return ret;\n}\n\nfunction once(emitter, name) {\n return new Promise(function (resolve, reject) {\n function errorListener(err) {\n emitter.removeListener(name, resolver);\n reject(err);\n }\n\n function resolver() {\n if (typeof emitter.removeListener === 'function') {\n emitter.removeListener('error', errorListener);\n }\n resolve([].slice.call(arguments));\n };\n\n eventTargetAgnosticAddListener(emitter, name, resolver, { once: true });\n if (name !== 'error') {\n addErrorHandlerIfEventEmitter(emitter, errorListener, { once: true });\n }\n });\n}\n\nfunction addErrorHandlerIfEventEmitter(emitter, handler, flags) {\n if (typeof emitter.on === 'function') {\n eventTargetAgnosticAddListener(emitter, 'error', handler, flags);\n }\n}\n\nfunction eventTargetAgnosticAddListener(emitter, name, listener, flags) {\n if (typeof emitter.on === 'function') {\n if (flags.once) {\n emitter.once(name, listener);\n } else {\n emitter.on(name, listener);\n }\n } else if (typeof emitter.addEventListener === 'function') {\n // EventTarget does not have `error` event semantics like Node\n // EventEmitters, we do not listen for `error` events here.\n emitter.addEventListener(name, function wrapListener(arg) {\n // IE does not have builtin `{ once: true }` support so we\n // have to do it manually.\n if (flags.once) {\n emitter.removeEventListener(name, wrapListener);\n }\n listener(arg);\n });\n } else {\n throw new TypeError('The \"emitter\" argument must be of type EventEmitter. Received type ' + typeof emitter);\n }\n}\n","'use strict';\n\nvar isObject = require('is-extendable');\n\nmodule.exports = function extend(o/*, objects*/) {\n if (!isObject(o)) { o = {}; }\n\n var len = arguments.length;\n for (var i = 1; i < len; i++) {\n var obj = arguments[i];\n\n if (isObject(obj)) {\n assign(o, obj);\n }\n }\n return o;\n};\n\nfunction assign(a, b) {\n for (var key in b) {\n if (hasOwn(b, key)) {\n a[key] = b[key];\n }\n }\n}\n\n/**\n * Returns true if the given `key` is an own property of `obj`.\n */\n\nfunction hasOwn(obj, key) {\n return Object.prototype.hasOwnProperty.call(obj, key);\n}\n","'use strict';\n\n// do not edit .js files directly - edit src/index.jst\n\n\n\nmodule.exports = function equal(a, b) {\n if (a === b) return true;\n\n if (a && b && typeof a == 'object' && typeof b == 'object') {\n if (a.constructor !== b.constructor) return false;\n\n var length, i, keys;\n if (Array.isArray(a)) {\n length = a.length;\n if (length != b.length) return false;\n for (i = length; i-- !== 0;)\n if (!equal(a[i], b[i])) return false;\n return true;\n }\n\n\n\n if (a.constructor === RegExp) return a.source === b.source && a.flags === b.flags;\n if (a.valueOf !== Object.prototype.valueOf) return a.valueOf() === b.valueOf();\n if (a.toString !== Object.prototype.toString) return a.toString() === b.toString();\n\n keys = Object.keys(a);\n length = keys.length;\n if (length !== Object.keys(b).length) return false;\n\n for (i = length; i-- !== 0;)\n if (!Object.prototype.hasOwnProperty.call(b, keys[i])) return false;\n\n for (i = length; i-- !== 0;) {\n var key = keys[i];\n\n if (!equal(a[key], b[key])) return false;\n }\n\n return true;\n }\n\n // true if both NaN, false otherwise\n return a!==a && b!==b;\n};\n","/*!\n * for-in \n *\n * Copyright (c) 2014-2017, Jon Schlinkert.\n * Released under the MIT License.\n */\n\n'use strict';\n\nmodule.exports = function forIn(obj, fn, thisArg) {\n for (var key in obj) {\n if (fn.call(thisArg, obj[key], key, obj) === false) {\n break;\n }\n }\n};\n","\nvar hasOwn = Object.prototype.hasOwnProperty;\nvar toString = Object.prototype.toString;\n\nmodule.exports = function forEach (obj, fn, ctx) {\n if (toString.call(fn) !== '[object Function]') {\n throw new TypeError('iterator must be a function');\n }\n var l = obj.length;\n if (l === +l) {\n for (var i = 0; i < l; i++) {\n fn.call(ctx, obj[i], i, obj);\n }\n } else {\n for (var k in obj) {\n if (hasOwn.call(obj, k)) {\n fn.call(ctx, obj[k], k, obj);\n }\n }\n }\n};\n\n","'use strict';\n\n/* eslint no-invalid-this: 1 */\n\nvar ERROR_MESSAGE = 'Function.prototype.bind called on incompatible ';\nvar slice = Array.prototype.slice;\nvar toStr = Object.prototype.toString;\nvar funcType = '[object Function]';\n\nmodule.exports = function bind(that) {\n var target = this;\n if (typeof target !== 'function' || toStr.call(target) !== funcType) {\n throw new TypeError(ERROR_MESSAGE + target);\n }\n var args = slice.call(arguments, 1);\n\n var bound;\n var binder = function () {\n if (this instanceof bound) {\n var result = target.apply(\n this,\n args.concat(slice.call(arguments))\n );\n if (Object(result) === result) {\n return result;\n }\n return this;\n } else {\n return target.apply(\n that,\n args.concat(slice.call(arguments))\n );\n }\n };\n\n var boundLength = Math.max(0, target.length - args.length);\n var boundArgs = [];\n for (var i = 0; i < boundLength; i++) {\n boundArgs.push('$' + i);\n }\n\n bound = Function('binder', 'return function (' + boundArgs.join(',') + '){ return binder.apply(this,arguments); }')(binder);\n\n if (target.prototype) {\n var Empty = function Empty() {};\n Empty.prototype = target.prototype;\n bound.prototype = new Empty();\n Empty.prototype = null;\n }\n\n return bound;\n};\n","'use strict';\n\nvar implementation = require('./implementation');\n\nmodule.exports = Function.prototype.bind || implementation;\n","var Writable = require('readable-stream/writable');\nvar Readable = require('readable-stream/readable');\nvar Duplex = require('readable-stream/duplex');\n\nvar DUMMY = new Buffer(0);\nvar noop = function() {};\n\nvar toFunction = function(fn) {\n\tif (typeof fn === 'function') return fn;\n\treturn function(cb) {\n\t\tcb(null, fn);\n\t};\n};\n\nvar onreadable = function(rs, init) {\n\tvar reading = false;\n\tvar destroyed = false;\n\n\trs._read = function() {\n\t\treading = true;\n\t};\n\n\trs.destroy = function() {\n\t\tdestroyed = true;\n\t};\n\n\tinit(function(err, source) {\n\t\tif (err) return rs.emit('error', err);\n\n\t\tvar fwd = function() {\n\t\t\tvar data;\n\t\t\twhile ((data = source.read()) !== null) {\n\t\t\t\treading = false;\n\t\t\t\trs.push(data);\n\t\t\t}\n\t\t};\n\n\t\tsource.on('readable', function() {\n\t\t\tif (reading) fwd();\n\t\t});\n\n\t\tsource.on('end', function() {\n\t\t\tfwd();\n\t\t\trs.push(null);\n\t\t});\n\n\t\tsource.on('error', function(err) {\n\t\t\trs.emit('error', err);\n\t\t});\n\n\t\tsource.on('close', function() {\n\t\t\tfwd();\n\t\t\tprocess.nextTick(function() {\n\t\t\t\trs.emit('close');\n\t\t\t});\n\t\t});\n\n\t\trs._read = function() {\n\t\t\treading = true;\n\t\t\tfwd();\n\t\t};\n\n\t\trs.destroy = function() {\n\t\t\tif (destroyed) return;\n\t\t\tdestroyed = true;\n\t\t\tif (source.destroy) source.destroy();\n\t\t};\n\n\t\tif (destroyed) {\n\t\t\tdestroyed = false;\n\t\t\trs.destroy();\n\t\t\treturn;\n\t\t}\n\n\t\tif (reading) fwd();\n\t});\n\n\treturn rs;\n};\n\nvar onwritable = function(ws, init) {\n\tvar ready = noop;\n\tvar destroyed = false;\n\n\tws._write = function(data, enc, cb) {\n\t\tready = cb;\n\t};\n\n\tws.destroy = function() {\n\t\tdestroyed = true;\n\t};\n\n\tws.write(DUMMY);\n\n\tinit(function(err, source) {\n\t\tif (err) return ws.emit('error', err);\n\n\t\tsource.on('close', function() {\n\t\t\tws.emit('close');\n\t\t});\n\n\t\tsource.on('error', function(err) {\n\t\t\tws.emit('error', err);\n\t\t});\n\n\t\tws._write = function(data, enc, cb) {\n\t\t\tif (data === DUMMY) return cb();\n\t\t\tsource.write(data, enc, cb);\n\t\t};\n\n\t\tvar emit = ws.emit;\n\n\t\tsource.on('finish', function() {\n\t\t\temit.call(ws, 'finish');\n\t\t});\n\n\t\tws.destroy = function() {\n\t\t\tif (destroyed) return;\n\t\t\tdestroyed = true;\n\t\t\tif (source.destroy) source.destroy();\n\t\t};\n\n\t\tws.emit = function(name) {\n\t\t\tif (name !== 'finish') return emit.apply(ws, arguments);\n\t\t\tsource.end();\n\t\t};\n\n\t\tif (destroyed) {\n\t\t\tdestroyed = false;\n\t\t\tws.destroy();\n\t\t\treturn;\n\t\t}\n\n\t\tready();\n\t});\n\n\treturn ws;\n};\n\nexports.readable = function(opts, init) {\n\tif (arguments.length === 1) return exports.readable(null, opts);\n\tif (!opts) opts = {};\n\treturn onreadable(new Readable(opts), toFunction(init));\n};\n\nexports.writable = function(opts, init) {\n\tif (arguments.length === 1) return exports.writable(null, opts);\n\tif (!opts) opts = {};\n\treturn onwritable(new Writable(opts), toFunction(init));\n};\n\nexports.duplex = function(opts, initWritable, initReadable) {\n\tif (arguments.length === 2) return exports.duplex(null, opts, initWritable);\n\tif (!opts) opts = {};\n\tvar dupl = new Duplex(opts);\n\tonwritable(dupl, toFunction(initWritable));\n\tonreadable(dupl, toFunction(initReadable));\n\treturn dupl;\n};","module.exports = Array.isArray || function (arr) {\n return Object.prototype.toString.call(arr) == '[object Array]';\n};\n","module.exports = require(\"./lib/_stream_duplex.js\")\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// a duplex stream is just a stream that is both readable and writable.\n// Since JS doesn't have multiple prototypal inheritance, this class\n// prototypally inherits from Readable, and then parasitically from\n// Writable.\n\nmodule.exports = Duplex;\n\n/**/\nvar objectKeys = Object.keys || function (obj) {\n var keys = [];\n for (var key in obj) keys.push(key);\n return keys;\n}\n/**/\n\n\n/**/\nvar util = require('core-util-is');\nutil.inherits = require('inherits');\n/**/\n\nvar Readable = require('./_stream_readable');\nvar Writable = require('./_stream_writable');\n\nutil.inherits(Duplex, Readable);\n\nforEach(objectKeys(Writable.prototype), function(method) {\n if (!Duplex.prototype[method])\n Duplex.prototype[method] = Writable.prototype[method];\n});\n\nfunction Duplex(options) {\n if (!(this instanceof Duplex))\n return new Duplex(options);\n\n Readable.call(this, options);\n Writable.call(this, options);\n\n if (options && options.readable === false)\n this.readable = false;\n\n if (options && options.writable === false)\n this.writable = false;\n\n this.allowHalfOpen = true;\n if (options && options.allowHalfOpen === false)\n this.allowHalfOpen = false;\n\n this.once('end', onend);\n}\n\n// the no-half-open enforcer\nfunction onend() {\n // if we allow half-open state, or if the writable side ended,\n // then we're ok.\n if (this.allowHalfOpen || this._writableState.ended)\n return;\n\n // no more data can be written.\n // But allow more writes to happen in this tick.\n process.nextTick(this.end.bind(this));\n}\n\nfunction forEach (xs, f) {\n for (var i = 0, l = xs.length; i < l; i++) {\n f(xs[i], i);\n }\n}\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// a passthrough stream.\n// basically just the most minimal sort of Transform stream.\n// Every written chunk gets output as-is.\n\nmodule.exports = PassThrough;\n\nvar Transform = require('./_stream_transform');\n\n/**/\nvar util = require('core-util-is');\nutil.inherits = require('inherits');\n/**/\n\nutil.inherits(PassThrough, Transform);\n\nfunction PassThrough(options) {\n if (!(this instanceof PassThrough))\n return new PassThrough(options);\n\n Transform.call(this, options);\n}\n\nPassThrough.prototype._transform = function(chunk, encoding, cb) {\n cb(null, chunk);\n};\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\nmodule.exports = Readable;\n\n/**/\nvar isArray = require('isarray');\n/**/\n\n\n/**/\nvar Buffer = require('buffer').Buffer;\n/**/\n\nReadable.ReadableState = ReadableState;\n\nvar EE = require('events').EventEmitter;\n\n/**/\nif (!EE.listenerCount) EE.listenerCount = function(emitter, type) {\n return emitter.listeners(type).length;\n};\n/**/\n\nvar Stream = require('stream');\n\n/**/\nvar util = require('core-util-is');\nutil.inherits = require('inherits');\n/**/\n\nvar StringDecoder;\n\nutil.inherits(Readable, Stream);\n\nfunction ReadableState(options, stream) {\n options = options || {};\n\n // the point at which it stops calling _read() to fill the buffer\n // Note: 0 is a valid value, means \"don't call _read preemptively ever\"\n var hwm = options.highWaterMark;\n this.highWaterMark = (hwm || hwm === 0) ? hwm : 16 * 1024;\n\n // cast to ints.\n this.highWaterMark = ~~this.highWaterMark;\n\n this.buffer = [];\n this.length = 0;\n this.pipes = null;\n this.pipesCount = 0;\n this.flowing = false;\n this.ended = false;\n this.endEmitted = false;\n this.reading = false;\n\n // In streams that never have any data, and do push(null) right away,\n // the consumer can miss the 'end' event if they do some I/O before\n // consuming the stream. So, we don't emit('end') until some reading\n // happens.\n this.calledRead = false;\n\n // a flag to be able to tell if the onwrite cb is called immediately,\n // or on a later tick. We set this to true at first, becuase any\n // actions that shouldn't happen until \"later\" should generally also\n // not happen before the first write call.\n this.sync = true;\n\n // whenever we return null, then we set a flag to say\n // that we're awaiting a 'readable' event emission.\n this.needReadable = false;\n this.emittedReadable = false;\n this.readableListening = false;\n\n\n // object stream flag. Used to make read(n) ignore n and to\n // make all the buffer merging and length checks go away\n this.objectMode = !!options.objectMode;\n\n // Crypto is kind of old and crusty. Historically, its default string\n // encoding is 'binary' so we have to make this configurable.\n // Everything else in the universe uses 'utf8', though.\n this.defaultEncoding = options.defaultEncoding || 'utf8';\n\n // when piping, we only care about 'readable' events that happen\n // after read()ing all the bytes and not getting any pushback.\n this.ranOut = false;\n\n // the number of writers that are awaiting a drain event in .pipe()s\n this.awaitDrain = 0;\n\n // if true, a maybeReadMore has been scheduled\n this.readingMore = false;\n\n this.decoder = null;\n this.encoding = null;\n if (options.encoding) {\n if (!StringDecoder)\n StringDecoder = require('string_decoder/').StringDecoder;\n this.decoder = new StringDecoder(options.encoding);\n this.encoding = options.encoding;\n }\n}\n\nfunction Readable(options) {\n if (!(this instanceof Readable))\n return new Readable(options);\n\n this._readableState = new ReadableState(options, this);\n\n // legacy\n this.readable = true;\n\n Stream.call(this);\n}\n\n// Manually shove something into the read() buffer.\n// This returns true if the highWaterMark has not been hit yet,\n// similar to how Writable.write() returns true if you should\n// write() some more.\nReadable.prototype.push = function(chunk, encoding) {\n var state = this._readableState;\n\n if (typeof chunk === 'string' && !state.objectMode) {\n encoding = encoding || state.defaultEncoding;\n if (encoding !== state.encoding) {\n chunk = new Buffer(chunk, encoding);\n encoding = '';\n }\n }\n\n return readableAddChunk(this, state, chunk, encoding, false);\n};\n\n// Unshift should *always* be something directly out of read()\nReadable.prototype.unshift = function(chunk) {\n var state = this._readableState;\n return readableAddChunk(this, state, chunk, '', true);\n};\n\nfunction readableAddChunk(stream, state, chunk, encoding, addToFront) {\n var er = chunkInvalid(state, chunk);\n if (er) {\n stream.emit('error', er);\n } else if (chunk === null || chunk === undefined) {\n state.reading = false;\n if (!state.ended)\n onEofChunk(stream, state);\n } else if (state.objectMode || chunk && chunk.length > 0) {\n if (state.ended && !addToFront) {\n var e = new Error('stream.push() after EOF');\n stream.emit('error', e);\n } else if (state.endEmitted && addToFront) {\n var e = new Error('stream.unshift() after end event');\n stream.emit('error', e);\n } else {\n if (state.decoder && !addToFront && !encoding)\n chunk = state.decoder.write(chunk);\n\n // update the buffer info.\n state.length += state.objectMode ? 1 : chunk.length;\n if (addToFront) {\n state.buffer.unshift(chunk);\n } else {\n state.reading = false;\n state.buffer.push(chunk);\n }\n\n if (state.needReadable)\n emitReadable(stream);\n\n maybeReadMore(stream, state);\n }\n } else if (!addToFront) {\n state.reading = false;\n }\n\n return needMoreData(state);\n}\n\n\n\n// if it's past the high water mark, we can push in some more.\n// Also, if we have no data yet, we can stand some\n// more bytes. This is to work around cases where hwm=0,\n// such as the repl. Also, if the push() triggered a\n// readable event, and the user called read(largeNumber) such that\n// needReadable was set, then we ought to push more, so that another\n// 'readable' event will be triggered.\nfunction needMoreData(state) {\n return !state.ended &&\n (state.needReadable ||\n state.length < state.highWaterMark ||\n state.length === 0);\n}\n\n// backwards compatibility.\nReadable.prototype.setEncoding = function(enc) {\n if (!StringDecoder)\n StringDecoder = require('string_decoder/').StringDecoder;\n this._readableState.decoder = new StringDecoder(enc);\n this._readableState.encoding = enc;\n};\n\n// Don't raise the hwm > 128MB\nvar MAX_HWM = 0x800000;\nfunction roundUpToNextPowerOf2(n) {\n if (n >= MAX_HWM) {\n n = MAX_HWM;\n } else {\n // Get the next highest power of 2\n n--;\n for (var p = 1; p < 32; p <<= 1) n |= n >> p;\n n++;\n }\n return n;\n}\n\nfunction howMuchToRead(n, state) {\n if (state.length === 0 && state.ended)\n return 0;\n\n if (state.objectMode)\n return n === 0 ? 0 : 1;\n\n if (n === null || isNaN(n)) {\n // only flow one buffer at a time\n if (state.flowing && state.buffer.length)\n return state.buffer[0].length;\n else\n return state.length;\n }\n\n if (n <= 0)\n return 0;\n\n // If we're asking for more than the target buffer level,\n // then raise the water mark. Bump up to the next highest\n // power of 2, to prevent increasing it excessively in tiny\n // amounts.\n if (n > state.highWaterMark)\n state.highWaterMark = roundUpToNextPowerOf2(n);\n\n // don't have that much. return null, unless we've ended.\n if (n > state.length) {\n if (!state.ended) {\n state.needReadable = true;\n return 0;\n } else\n return state.length;\n }\n\n return n;\n}\n\n// you can override either this method, or the async _read(n) below.\nReadable.prototype.read = function(n) {\n var state = this._readableState;\n state.calledRead = true;\n var nOrig = n;\n var ret;\n\n if (typeof n !== 'number' || n > 0)\n state.emittedReadable = false;\n\n // if we're doing read(0) to trigger a readable event, but we\n // already have a bunch of data in the buffer, then just trigger\n // the 'readable' event and move on.\n if (n === 0 &&\n state.needReadable &&\n (state.length >= state.highWaterMark || state.ended)) {\n emitReadable(this);\n return null;\n }\n\n n = howMuchToRead(n, state);\n\n // if we've ended, and we're now clear, then finish it up.\n if (n === 0 && state.ended) {\n ret = null;\n\n // In cases where the decoder did not receive enough data\n // to produce a full chunk, then immediately received an\n // EOF, state.buffer will contain [, ].\n // howMuchToRead will see this and coerce the amount to\n // read to zero (because it's looking at the length of the\n // first in state.buffer), and we'll end up here.\n //\n // This can only happen via state.decoder -- no other venue\n // exists for pushing a zero-length chunk into state.buffer\n // and triggering this behavior. In this case, we return our\n // remaining data and end the stream, if appropriate.\n if (state.length > 0 && state.decoder) {\n ret = fromList(n, state);\n state.length -= ret.length;\n }\n\n if (state.length === 0)\n endReadable(this);\n\n return ret;\n }\n\n // All the actual chunk generation logic needs to be\n // *below* the call to _read. The reason is that in certain\n // synthetic stream cases, such as passthrough streams, _read\n // may be a completely synchronous operation which may change\n // the state of the read buffer, providing enough data when\n // before there was *not* enough.\n //\n // So, the steps are:\n // 1. Figure out what the state of things will be after we do\n // a read from the buffer.\n //\n // 2. If that resulting state will trigger a _read, then call _read.\n // Note that this may be asynchronous, or synchronous. Yes, it is\n // deeply ugly to write APIs this way, but that still doesn't mean\n // that the Readable class should behave improperly, as streams are\n // designed to be sync/async agnostic.\n // Take note if the _read call is sync or async (ie, if the read call\n // has returned yet), so that we know whether or not it's safe to emit\n // 'readable' etc.\n //\n // 3. Actually pull the requested chunks out of the buffer and return.\n\n // if we need a readable event, then we need to do some reading.\n var doRead = state.needReadable;\n\n // if we currently have less than the highWaterMark, then also read some\n if (state.length - n <= state.highWaterMark)\n doRead = true;\n\n // however, if we've ended, then there's no point, and if we're already\n // reading, then it's unnecessary.\n if (state.ended || state.reading)\n doRead = false;\n\n if (doRead) {\n state.reading = true;\n state.sync = true;\n // if the length is currently zero, then we *need* a readable event.\n if (state.length === 0)\n state.needReadable = true;\n // call internal read method\n this._read(state.highWaterMark);\n state.sync = false;\n }\n\n // If _read called its callback synchronously, then `reading`\n // will be false, and we need to re-evaluate how much data we\n // can return to the user.\n if (doRead && !state.reading)\n n = howMuchToRead(nOrig, state);\n\n if (n > 0)\n ret = fromList(n, state);\n else\n ret = null;\n\n if (ret === null) {\n state.needReadable = true;\n n = 0;\n }\n\n state.length -= n;\n\n // If we have nothing in the buffer, then we want to know\n // as soon as we *do* get something into the buffer.\n if (state.length === 0 && !state.ended)\n state.needReadable = true;\n\n // If we happened to read() exactly the remaining amount in the\n // buffer, and the EOF has been seen at this point, then make sure\n // that we emit 'end' on the very next tick.\n if (state.ended && !state.endEmitted && state.length === 0)\n endReadable(this);\n\n return ret;\n};\n\nfunction chunkInvalid(state, chunk) {\n var er = null;\n if (!Buffer.isBuffer(chunk) &&\n 'string' !== typeof chunk &&\n chunk !== null &&\n chunk !== undefined &&\n !state.objectMode) {\n er = new TypeError('Invalid non-string/buffer chunk');\n }\n return er;\n}\n\n\nfunction onEofChunk(stream, state) {\n if (state.decoder && !state.ended) {\n var chunk = state.decoder.end();\n if (chunk && chunk.length) {\n state.buffer.push(chunk);\n state.length += state.objectMode ? 1 : chunk.length;\n }\n }\n state.ended = true;\n\n // if we've ended and we have some data left, then emit\n // 'readable' now to make sure it gets picked up.\n if (state.length > 0)\n emitReadable(stream);\n else\n endReadable(stream);\n}\n\n// Don't emit readable right away in sync mode, because this can trigger\n// another read() call => stack overflow. This way, it might trigger\n// a nextTick recursion warning, but that's not so bad.\nfunction emitReadable(stream) {\n var state = stream._readableState;\n state.needReadable = false;\n if (state.emittedReadable)\n return;\n\n state.emittedReadable = true;\n if (state.sync)\n process.nextTick(function() {\n emitReadable_(stream);\n });\n else\n emitReadable_(stream);\n}\n\nfunction emitReadable_(stream) {\n stream.emit('readable');\n}\n\n\n// at this point, the user has presumably seen the 'readable' event,\n// and called read() to consume some data. that may have triggered\n// in turn another _read(n) call, in which case reading = true if\n// it's in progress.\n// However, if we're not ended, or reading, and the length < hwm,\n// then go ahead and try to read some more preemptively.\nfunction maybeReadMore(stream, state) {\n if (!state.readingMore) {\n state.readingMore = true;\n process.nextTick(function() {\n maybeReadMore_(stream, state);\n });\n }\n}\n\nfunction maybeReadMore_(stream, state) {\n var len = state.length;\n while (!state.reading && !state.flowing && !state.ended &&\n state.length < state.highWaterMark) {\n stream.read(0);\n if (len === state.length)\n // didn't get any data, stop spinning.\n break;\n else\n len = state.length;\n }\n state.readingMore = false;\n}\n\n// abstract method. to be overridden in specific implementation classes.\n// call cb(er, data) where data is <= n in length.\n// for virtual (non-string, non-buffer) streams, \"length\" is somewhat\n// arbitrary, and perhaps not very meaningful.\nReadable.prototype._read = function(n) {\n this.emit('error', new Error('not implemented'));\n};\n\nReadable.prototype.pipe = function(dest, pipeOpts) {\n var src = this;\n var state = this._readableState;\n\n switch (state.pipesCount) {\n case 0:\n state.pipes = dest;\n break;\n case 1:\n state.pipes = [state.pipes, dest];\n break;\n default:\n state.pipes.push(dest);\n break;\n }\n state.pipesCount += 1;\n\n var doEnd = (!pipeOpts || pipeOpts.end !== false) &&\n dest !== process.stdout &&\n dest !== process.stderr;\n\n var endFn = doEnd ? onend : cleanup;\n if (state.endEmitted)\n process.nextTick(endFn);\n else\n src.once('end', endFn);\n\n dest.on('unpipe', onunpipe);\n function onunpipe(readable) {\n if (readable !== src) return;\n cleanup();\n }\n\n function onend() {\n dest.end();\n }\n\n // when the dest drains, it reduces the awaitDrain counter\n // on the source. This would be more elegant with a .once()\n // handler in flow(), but adding and removing repeatedly is\n // too slow.\n var ondrain = pipeOnDrain(src);\n dest.on('drain', ondrain);\n\n function cleanup() {\n // cleanup event handlers once the pipe is broken\n dest.removeListener('close', onclose);\n dest.removeListener('finish', onfinish);\n dest.removeListener('drain', ondrain);\n dest.removeListener('error', onerror);\n dest.removeListener('unpipe', onunpipe);\n src.removeListener('end', onend);\n src.removeListener('end', cleanup);\n\n // if the reader is waiting for a drain event from this\n // specific writer, then it would cause it to never start\n // flowing again.\n // So, if this is awaiting a drain, then we just call it now.\n // If we don't know, then assume that we are waiting for one.\n if (!dest._writableState || dest._writableState.needDrain)\n ondrain();\n }\n\n // if the dest has an error, then stop piping into it.\n // however, don't suppress the throwing behavior for this.\n function onerror(er) {\n unpipe();\n dest.removeListener('error', onerror);\n if (EE.listenerCount(dest, 'error') === 0)\n dest.emit('error', er);\n }\n // This is a brutally ugly hack to make sure that our error handler\n // is attached before any userland ones. NEVER DO THIS.\n if (!dest._events || !dest._events.error)\n dest.on('error', onerror);\n else if (isArray(dest._events.error))\n dest._events.error.unshift(onerror);\n else\n dest._events.error = [onerror, dest._events.error];\n\n\n\n // Both close and finish should trigger unpipe, but only once.\n function onclose() {\n dest.removeListener('finish', onfinish);\n unpipe();\n }\n dest.once('close', onclose);\n function onfinish() {\n dest.removeListener('close', onclose);\n unpipe();\n }\n dest.once('finish', onfinish);\n\n function unpipe() {\n src.unpipe(dest);\n }\n\n // tell the dest that it's being piped to\n dest.emit('pipe', src);\n\n // start the flow if it hasn't been started already.\n if (!state.flowing) {\n // the handler that waits for readable events after all\n // the data gets sucked out in flow.\n // This would be easier to follow with a .once() handler\n // in flow(), but that is too slow.\n this.on('readable', pipeOnReadable);\n\n state.flowing = true;\n process.nextTick(function() {\n flow(src);\n });\n }\n\n return dest;\n};\n\nfunction pipeOnDrain(src) {\n return function() {\n var dest = this;\n var state = src._readableState;\n state.awaitDrain--;\n if (state.awaitDrain === 0)\n flow(src);\n };\n}\n\nfunction flow(src) {\n var state = src._readableState;\n var chunk;\n state.awaitDrain = 0;\n\n function write(dest, i, list) {\n var written = dest.write(chunk);\n if (false === written) {\n state.awaitDrain++;\n }\n }\n\n while (state.pipesCount && null !== (chunk = src.read())) {\n\n if (state.pipesCount === 1)\n write(state.pipes, 0, null);\n else\n forEach(state.pipes, write);\n\n src.emit('data', chunk);\n\n // if anyone needs a drain, then we have to wait for that.\n if (state.awaitDrain > 0)\n return;\n }\n\n // if every destination was unpiped, either before entering this\n // function, or in the while loop, then stop flowing.\n //\n // NB: This is a pretty rare edge case.\n if (state.pipesCount === 0) {\n state.flowing = false;\n\n // if there were data event listeners added, then switch to old mode.\n if (EE.listenerCount(src, 'data') > 0)\n emitDataEvents(src);\n return;\n }\n\n // at this point, no one needed a drain, so we just ran out of data\n // on the next readable event, start it over again.\n state.ranOut = true;\n}\n\nfunction pipeOnReadable() {\n if (this._readableState.ranOut) {\n this._readableState.ranOut = false;\n flow(this);\n }\n}\n\n\nReadable.prototype.unpipe = function(dest) {\n var state = this._readableState;\n\n // if we're not piping anywhere, then do nothing.\n if (state.pipesCount === 0)\n return this;\n\n // just one destination. most common case.\n if (state.pipesCount === 1) {\n // passed in one, but it's not the right one.\n if (dest && dest !== state.pipes)\n return this;\n\n if (!dest)\n dest = state.pipes;\n\n // got a match.\n state.pipes = null;\n state.pipesCount = 0;\n this.removeListener('readable', pipeOnReadable);\n state.flowing = false;\n if (dest)\n dest.emit('unpipe', this);\n return this;\n }\n\n // slow case. multiple pipe destinations.\n\n if (!dest) {\n // remove all.\n var dests = state.pipes;\n var len = state.pipesCount;\n state.pipes = null;\n state.pipesCount = 0;\n this.removeListener('readable', pipeOnReadable);\n state.flowing = false;\n\n for (var i = 0; i < len; i++)\n dests[i].emit('unpipe', this);\n return this;\n }\n\n // try to find the right one.\n var i = indexOf(state.pipes, dest);\n if (i === -1)\n return this;\n\n state.pipes.splice(i, 1);\n state.pipesCount -= 1;\n if (state.pipesCount === 1)\n state.pipes = state.pipes[0];\n\n dest.emit('unpipe', this);\n\n return this;\n};\n\n// set up data events if they are asked for\n// Ensure readable listeners eventually get something\nReadable.prototype.on = function(ev, fn) {\n var res = Stream.prototype.on.call(this, ev, fn);\n\n if (ev === 'data' && !this._readableState.flowing)\n emitDataEvents(this);\n\n if (ev === 'readable' && this.readable) {\n var state = this._readableState;\n if (!state.readableListening) {\n state.readableListening = true;\n state.emittedReadable = false;\n state.needReadable = true;\n if (!state.reading) {\n this.read(0);\n } else if (state.length) {\n emitReadable(this, state);\n }\n }\n }\n\n return res;\n};\nReadable.prototype.addListener = Readable.prototype.on;\n\n// pause() and resume() are remnants of the legacy readable stream API\n// If the user uses them, then switch into old mode.\nReadable.prototype.resume = function() {\n emitDataEvents(this);\n this.read(0);\n this.emit('resume');\n};\n\nReadable.prototype.pause = function() {\n emitDataEvents(this, true);\n this.emit('pause');\n};\n\nfunction emitDataEvents(stream, startPaused) {\n var state = stream._readableState;\n\n if (state.flowing) {\n // https://github.com/isaacs/readable-stream/issues/16\n throw new Error('Cannot switch to old mode now.');\n }\n\n var paused = startPaused || false;\n var readable = false;\n\n // convert to an old-style stream.\n stream.readable = true;\n stream.pipe = Stream.prototype.pipe;\n stream.on = stream.addListener = Stream.prototype.on;\n\n stream.on('readable', function() {\n readable = true;\n\n var c;\n while (!paused && (null !== (c = stream.read())))\n stream.emit('data', c);\n\n if (c === null) {\n readable = false;\n stream._readableState.needReadable = true;\n }\n });\n\n stream.pause = function() {\n paused = true;\n this.emit('pause');\n };\n\n stream.resume = function() {\n paused = false;\n if (readable)\n process.nextTick(function() {\n stream.emit('readable');\n });\n else\n this.read(0);\n this.emit('resume');\n };\n\n // now make it start, just in case it hadn't already.\n stream.emit('readable');\n}\n\n// wrap an old-style stream as the async data source.\n// This is *not* part of the readable stream interface.\n// It is an ugly unfortunate mess of history.\nReadable.prototype.wrap = function(stream) {\n var state = this._readableState;\n var paused = false;\n\n var self = this;\n stream.on('end', function() {\n if (state.decoder && !state.ended) {\n var chunk = state.decoder.end();\n if (chunk && chunk.length)\n self.push(chunk);\n }\n\n self.push(null);\n });\n\n stream.on('data', function(chunk) {\n if (state.decoder)\n chunk = state.decoder.write(chunk);\n\n // don't skip over falsy values in objectMode\n //if (state.objectMode && util.isNullOrUndefined(chunk))\n if (state.objectMode && (chunk === null || chunk === undefined))\n return;\n else if (!state.objectMode && (!chunk || !chunk.length))\n return;\n\n var ret = self.push(chunk);\n if (!ret) {\n paused = true;\n stream.pause();\n }\n });\n\n // proxy all the other methods.\n // important when wrapping filters and duplexes.\n for (var i in stream) {\n if (typeof stream[i] === 'function' &&\n typeof this[i] === 'undefined') {\n this[i] = function(method) { return function() {\n return stream[method].apply(stream, arguments);\n }}(i);\n }\n }\n\n // proxy certain important events.\n var events = ['error', 'close', 'destroy', 'pause', 'resume'];\n forEach(events, function(ev) {\n stream.on(ev, self.emit.bind(self, ev));\n });\n\n // when we try to consume some more bytes, simply unpause the\n // underlying stream.\n self._read = function(n) {\n if (paused) {\n paused = false;\n stream.resume();\n }\n };\n\n return self;\n};\n\n\n\n// exposed for testing purposes only.\nReadable._fromList = fromList;\n\n// Pluck off n bytes from an array of buffers.\n// Length is the combined lengths of all the buffers in the list.\nfunction fromList(n, state) {\n var list = state.buffer;\n var length = state.length;\n var stringMode = !!state.decoder;\n var objectMode = !!state.objectMode;\n var ret;\n\n // nothing in the list, definitely empty.\n if (list.length === 0)\n return null;\n\n if (length === 0)\n ret = null;\n else if (objectMode)\n ret = list.shift();\n else if (!n || n >= length) {\n // read it all, truncate the array.\n if (stringMode)\n ret = list.join('');\n else\n ret = Buffer.concat(list, length);\n list.length = 0;\n } else {\n // read just some of it.\n if (n < list[0].length) {\n // just take a part of the first list item.\n // slice is the same for buffers and strings.\n var buf = list[0];\n ret = buf.slice(0, n);\n list[0] = buf.slice(n);\n } else if (n === list[0].length) {\n // first list is a perfect match\n ret = list.shift();\n } else {\n // complex case.\n // we have enough to cover it, but it spans past the first buffer.\n if (stringMode)\n ret = '';\n else\n ret = new Buffer(n);\n\n var c = 0;\n for (var i = 0, l = list.length; i < l && c < n; i++) {\n var buf = list[0];\n var cpy = Math.min(n - c, buf.length);\n\n if (stringMode)\n ret += buf.slice(0, cpy);\n else\n buf.copy(ret, c, 0, cpy);\n\n if (cpy < buf.length)\n list[0] = buf.slice(cpy);\n else\n list.shift();\n\n c += cpy;\n }\n }\n }\n\n return ret;\n}\n\nfunction endReadable(stream) {\n var state = stream._readableState;\n\n // If we get here before consuming all the bytes, then that is a\n // bug in node. Should never happen.\n if (state.length > 0)\n throw new Error('endReadable called on non-empty stream');\n\n if (!state.endEmitted && state.calledRead) {\n state.ended = true;\n process.nextTick(function() {\n // Check that we didn't get one last unshift.\n if (!state.endEmitted && state.length === 0) {\n state.endEmitted = true;\n stream.readable = false;\n stream.emit('end');\n }\n });\n }\n}\n\nfunction forEach (xs, f) {\n for (var i = 0, l = xs.length; i < l; i++) {\n f(xs[i], i);\n }\n}\n\nfunction indexOf (xs, x) {\n for (var i = 0, l = xs.length; i < l; i++) {\n if (xs[i] === x) return i;\n }\n return -1;\n}\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n\n// a transform stream is a readable/writable stream where you do\n// something with the data. Sometimes it's called a \"filter\",\n// but that's not a great name for it, since that implies a thing where\n// some bits pass through, and others are simply ignored. (That would\n// be a valid example of a transform, of course.)\n//\n// While the output is causally related to the input, it's not a\n// necessarily symmetric or synchronous transformation. For example,\n// a zlib stream might take multiple plain-text writes(), and then\n// emit a single compressed chunk some time in the future.\n//\n// Here's how this works:\n//\n// The Transform stream has all the aspects of the readable and writable\n// stream classes. When you write(chunk), that calls _write(chunk,cb)\n// internally, and returns false if there's a lot of pending writes\n// buffered up. When you call read(), that calls _read(n) until\n// there's enough pending readable data buffered up.\n//\n// In a transform stream, the written data is placed in a buffer. When\n// _read(n) is called, it transforms the queued up data, calling the\n// buffered _write cb's as it consumes chunks. If consuming a single\n// written chunk would result in multiple output chunks, then the first\n// outputted bit calls the readcb, and subsequent chunks just go into\n// the read buffer, and will cause it to emit 'readable' if necessary.\n//\n// This way, back-pressure is actually determined by the reading side,\n// since _read has to be called to start processing a new chunk. However,\n// a pathological inflate type of transform can cause excessive buffering\n// here. For example, imagine a stream where every byte of input is\n// interpreted as an integer from 0-255, and then results in that many\n// bytes of output. Writing the 4 bytes {ff,ff,ff,ff} would result in\n// 1kb of data being output. In this case, you could write a very small\n// amount of input, and end up with a very large amount of output. In\n// such a pathological inflating mechanism, there'd be no way to tell\n// the system to stop doing the transform. A single 4MB write could\n// cause the system to run out of memory.\n//\n// However, even in such a pathological case, only a single written chunk\n// would be consumed, and then the rest would wait (un-transformed) until\n// the results of the previous transformed chunk were consumed.\n\nmodule.exports = Transform;\n\nvar Duplex = require('./_stream_duplex');\n\n/**/\nvar util = require('core-util-is');\nutil.inherits = require('inherits');\n/**/\n\nutil.inherits(Transform, Duplex);\n\n\nfunction TransformState(options, stream) {\n this.afterTransform = function(er, data) {\n return afterTransform(stream, er, data);\n };\n\n this.needTransform = false;\n this.transforming = false;\n this.writecb = null;\n this.writechunk = null;\n}\n\nfunction afterTransform(stream, er, data) {\n var ts = stream._transformState;\n ts.transforming = false;\n\n var cb = ts.writecb;\n\n if (!cb)\n return stream.emit('error', new Error('no writecb in Transform class'));\n\n ts.writechunk = null;\n ts.writecb = null;\n\n if (data !== null && data !== undefined)\n stream.push(data);\n\n if (cb)\n cb(er);\n\n var rs = stream._readableState;\n rs.reading = false;\n if (rs.needReadable || rs.length < rs.highWaterMark) {\n stream._read(rs.highWaterMark);\n }\n}\n\n\nfunction Transform(options) {\n if (!(this instanceof Transform))\n return new Transform(options);\n\n Duplex.call(this, options);\n\n var ts = this._transformState = new TransformState(options, this);\n\n // when the writable side finishes, then flush out anything remaining.\n var stream = this;\n\n // start out asking for a readable event once data is transformed.\n this._readableState.needReadable = true;\n\n // we have implemented the _read method, and done the other things\n // that Readable wants before the first _read call, so unset the\n // sync guard flag.\n this._readableState.sync = false;\n\n this.once('finish', function() {\n if ('function' === typeof this._flush)\n this._flush(function(er) {\n done(stream, er);\n });\n else\n done(stream);\n });\n}\n\nTransform.prototype.push = function(chunk, encoding) {\n this._transformState.needTransform = false;\n return Duplex.prototype.push.call(this, chunk, encoding);\n};\n\n// This is the part where you do stuff!\n// override this function in implementation classes.\n// 'chunk' is an input chunk.\n//\n// Call `push(newChunk)` to pass along transformed output\n// to the readable side. You may call 'push' zero or more times.\n//\n// Call `cb(err)` when you are done with this chunk. If you pass\n// an error, then that'll put the hurt on the whole operation. If you\n// never call cb(), then you'll never get another chunk.\nTransform.prototype._transform = function(chunk, encoding, cb) {\n throw new Error('not implemented');\n};\n\nTransform.prototype._write = function(chunk, encoding, cb) {\n var ts = this._transformState;\n ts.writecb = cb;\n ts.writechunk = chunk;\n ts.writeencoding = encoding;\n if (!ts.transforming) {\n var rs = this._readableState;\n if (ts.needTransform ||\n rs.needReadable ||\n rs.length < rs.highWaterMark)\n this._read(rs.highWaterMark);\n }\n};\n\n// Doesn't matter what the args are here.\n// _transform does all the work.\n// That we got here means that the readable side wants more data.\nTransform.prototype._read = function(n) {\n var ts = this._transformState;\n\n if (ts.writechunk !== null && ts.writecb && !ts.transforming) {\n ts.transforming = true;\n this._transform(ts.writechunk, ts.writeencoding, ts.afterTransform);\n } else {\n // mark that we need a transform, so that any data that comes in\n // will get processed, now that we've asked for it.\n ts.needTransform = true;\n }\n};\n\n\nfunction done(stream, er) {\n if (er)\n return stream.emit('error', er);\n\n // if there's nothing in the write buffer, then that means\n // that nothing more will ever be provided\n var ws = stream._writableState;\n var rs = stream._readableState;\n var ts = stream._transformState;\n\n if (ws.length)\n throw new Error('calling transform done when ws.length != 0');\n\n if (ts.transforming)\n throw new Error('calling transform done when still transforming');\n\n return stream.push(null);\n}\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// A bit simpler than readable streams.\n// Implement an async ._write(chunk, cb), and it'll handle all\n// the drain event emission and buffering.\n\nmodule.exports = Writable;\n\n/**/\nvar Buffer = require('buffer').Buffer;\n/**/\n\nWritable.WritableState = WritableState;\n\n\n/**/\nvar util = require('core-util-is');\nutil.inherits = require('inherits');\n/**/\n\nvar Stream = require('stream');\n\nutil.inherits(Writable, Stream);\n\nfunction WriteReq(chunk, encoding, cb) {\n this.chunk = chunk;\n this.encoding = encoding;\n this.callback = cb;\n}\n\nfunction WritableState(options, stream) {\n options = options || {};\n\n // the point at which write() starts returning false\n // Note: 0 is a valid value, means that we always return false if\n // the entire buffer is not flushed immediately on write()\n var hwm = options.highWaterMark;\n this.highWaterMark = (hwm || hwm === 0) ? hwm : 16 * 1024;\n\n // object stream flag to indicate whether or not this stream\n // contains buffers or objects.\n this.objectMode = !!options.objectMode;\n\n // cast to ints.\n this.highWaterMark = ~~this.highWaterMark;\n\n this.needDrain = false;\n // at the start of calling end()\n this.ending = false;\n // when end() has been called, and returned\n this.ended = false;\n // when 'finish' is emitted\n this.finished = false;\n\n // should we decode strings into buffers before passing to _write?\n // this is here so that some node-core streams can optimize string\n // handling at a lower level.\n var noDecode = options.decodeStrings === false;\n this.decodeStrings = !noDecode;\n\n // Crypto is kind of old and crusty. Historically, its default string\n // encoding is 'binary' so we have to make this configurable.\n // Everything else in the universe uses 'utf8', though.\n this.defaultEncoding = options.defaultEncoding || 'utf8';\n\n // not an actual buffer we keep track of, but a measurement\n // of how much we're waiting to get pushed to some underlying\n // socket or file.\n this.length = 0;\n\n // a flag to see when we're in the middle of a write.\n this.writing = false;\n\n // a flag to be able to tell if the onwrite cb is called immediately,\n // or on a later tick. We set this to true at first, becuase any\n // actions that shouldn't happen until \"later\" should generally also\n // not happen before the first write call.\n this.sync = true;\n\n // a flag to know if we're processing previously buffered items, which\n // may call the _write() callback in the same tick, so that we don't\n // end up in an overlapped onwrite situation.\n this.bufferProcessing = false;\n\n // the callback that's passed to _write(chunk,cb)\n this.onwrite = function(er) {\n onwrite(stream, er);\n };\n\n // the callback that the user supplies to write(chunk,encoding,cb)\n this.writecb = null;\n\n // the amount that is being written when _write is called.\n this.writelen = 0;\n\n this.buffer = [];\n\n // True if the error was already emitted and should not be thrown again\n this.errorEmitted = false;\n}\n\nfunction Writable(options) {\n var Duplex = require('./_stream_duplex');\n\n // Writable ctor is applied to Duplexes, though they're not\n // instanceof Writable, they're instanceof Readable.\n if (!(this instanceof Writable) && !(this instanceof Duplex))\n return new Writable(options);\n\n this._writableState = new WritableState(options, this);\n\n // legacy.\n this.writable = true;\n\n Stream.call(this);\n}\n\n// Otherwise people can pipe Writable streams, which is just wrong.\nWritable.prototype.pipe = function() {\n this.emit('error', new Error('Cannot pipe. Not readable.'));\n};\n\n\nfunction writeAfterEnd(stream, state, cb) {\n var er = new Error('write after end');\n // TODO: defer error events consistently everywhere, not just the cb\n stream.emit('error', er);\n process.nextTick(function() {\n cb(er);\n });\n}\n\n// If we get something that is not a buffer, string, null, or undefined,\n// and we're not in objectMode, then that's an error.\n// Otherwise stream chunks are all considered to be of length=1, and the\n// watermarks determine how many objects to keep in the buffer, rather than\n// how many bytes or characters.\nfunction validChunk(stream, state, chunk, cb) {\n var valid = true;\n if (!Buffer.isBuffer(chunk) &&\n 'string' !== typeof chunk &&\n chunk !== null &&\n chunk !== undefined &&\n !state.objectMode) {\n var er = new TypeError('Invalid non-string/buffer chunk');\n stream.emit('error', er);\n process.nextTick(function() {\n cb(er);\n });\n valid = false;\n }\n return valid;\n}\n\nWritable.prototype.write = function(chunk, encoding, cb) {\n var state = this._writableState;\n var ret = false;\n\n if (typeof encoding === 'function') {\n cb = encoding;\n encoding = null;\n }\n\n if (Buffer.isBuffer(chunk))\n encoding = 'buffer';\n else if (!encoding)\n encoding = state.defaultEncoding;\n\n if (typeof cb !== 'function')\n cb = function() {};\n\n if (state.ended)\n writeAfterEnd(this, state, cb);\n else if (validChunk(this, state, chunk, cb))\n ret = writeOrBuffer(this, state, chunk, encoding, cb);\n\n return ret;\n};\n\nfunction decodeChunk(state, chunk, encoding) {\n if (!state.objectMode &&\n state.decodeStrings !== false &&\n typeof chunk === 'string') {\n chunk = new Buffer(chunk, encoding);\n }\n return chunk;\n}\n\n// if we're already writing something, then just put this\n// in the queue, and wait our turn. Otherwise, call _write\n// If we return false, then we need a drain event, so set that flag.\nfunction writeOrBuffer(stream, state, chunk, encoding, cb) {\n chunk = decodeChunk(state, chunk, encoding);\n if (Buffer.isBuffer(chunk))\n encoding = 'buffer';\n var len = state.objectMode ? 1 : chunk.length;\n\n state.length += len;\n\n var ret = state.length < state.highWaterMark;\n // we must ensure that previous needDrain will not be reset to false.\n if (!ret)\n state.needDrain = true;\n\n if (state.writing)\n state.buffer.push(new WriteReq(chunk, encoding, cb));\n else\n doWrite(stream, state, len, chunk, encoding, cb);\n\n return ret;\n}\n\nfunction doWrite(stream, state, len, chunk, encoding, cb) {\n state.writelen = len;\n state.writecb = cb;\n state.writing = true;\n state.sync = true;\n stream._write(chunk, encoding, state.onwrite);\n state.sync = false;\n}\n\nfunction onwriteError(stream, state, sync, er, cb) {\n if (sync)\n process.nextTick(function() {\n cb(er);\n });\n else\n cb(er);\n\n stream._writableState.errorEmitted = true;\n stream.emit('error', er);\n}\n\nfunction onwriteStateUpdate(state) {\n state.writing = false;\n state.writecb = null;\n state.length -= state.writelen;\n state.writelen = 0;\n}\n\nfunction onwrite(stream, er) {\n var state = stream._writableState;\n var sync = state.sync;\n var cb = state.writecb;\n\n onwriteStateUpdate(state);\n\n if (er)\n onwriteError(stream, state, sync, er, cb);\n else {\n // Check if we're actually ready to finish, but don't emit yet\n var finished = needFinish(stream, state);\n\n if (!finished && !state.bufferProcessing && state.buffer.length)\n clearBuffer(stream, state);\n\n if (sync) {\n process.nextTick(function() {\n afterWrite(stream, state, finished, cb);\n });\n } else {\n afterWrite(stream, state, finished, cb);\n }\n }\n}\n\nfunction afterWrite(stream, state, finished, cb) {\n if (!finished)\n onwriteDrain(stream, state);\n cb();\n if (finished)\n finishMaybe(stream, state);\n}\n\n// Must force callback to be called on nextTick, so that we don't\n// emit 'drain' before the write() consumer gets the 'false' return\n// value, and has a chance to attach a 'drain' listener.\nfunction onwriteDrain(stream, state) {\n if (state.length === 0 && state.needDrain) {\n state.needDrain = false;\n stream.emit('drain');\n }\n}\n\n\n// if there's something in the buffer waiting, then process it\nfunction clearBuffer(stream, state) {\n state.bufferProcessing = true;\n\n for (var c = 0; c < state.buffer.length; c++) {\n var entry = state.buffer[c];\n var chunk = entry.chunk;\n var encoding = entry.encoding;\n var cb = entry.callback;\n var len = state.objectMode ? 1 : chunk.length;\n\n doWrite(stream, state, len, chunk, encoding, cb);\n\n // if we didn't call the onwrite immediately, then\n // it means that we need to wait until it does.\n // also, that means that the chunk and cb are currently\n // being processed, so move the buffer counter past them.\n if (state.writing) {\n c++;\n break;\n }\n }\n\n state.bufferProcessing = false;\n if (c < state.buffer.length)\n state.buffer = state.buffer.slice(c);\n else\n state.buffer.length = 0;\n}\n\nWritable.prototype._write = function(chunk, encoding, cb) {\n cb(new Error('not implemented'));\n};\n\nWritable.prototype.end = function(chunk, encoding, cb) {\n var state = this._writableState;\n\n if (typeof chunk === 'function') {\n cb = chunk;\n chunk = null;\n encoding = null;\n } else if (typeof encoding === 'function') {\n cb = encoding;\n encoding = null;\n }\n\n if (typeof chunk !== 'undefined' && chunk !== null)\n this.write(chunk, encoding);\n\n // ignore unnecessary end() calls.\n if (!state.ending && !state.finished)\n endWritable(this, state, cb);\n};\n\n\nfunction needFinish(stream, state) {\n return (state.ending &&\n state.length === 0 &&\n !state.finished &&\n !state.writing);\n}\n\nfunction finishMaybe(stream, state) {\n var need = needFinish(stream, state);\n if (need) {\n state.finished = true;\n stream.emit('finish');\n }\n return need;\n}\n\nfunction endWritable(stream, state, cb) {\n state.ending = true;\n finishMaybe(stream, state);\n if (cb) {\n if (state.finished)\n process.nextTick(cb);\n else\n stream.once('finish', cb);\n }\n state.ended = true;\n}\n","var Stream = require('stream'); // hack to fix a circular dependency issue when used with browserify\nexports = module.exports = require('./lib/_stream_readable.js');\nexports.Stream = Stream;\nexports.Readable = exports;\nexports.Writable = require('./lib/_stream_writable.js');\nexports.Duplex = require('./lib/_stream_duplex.js');\nexports.Transform = require('./lib/_stream_transform.js');\nexports.PassThrough = require('./lib/_stream_passthrough.js');\nif (!process.browser && process.env.READABLE_STREAM === 'disable') {\n module.exports = require('stream');\n}\n","module.exports = require(\"./lib/_stream_writable.js\")\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\nvar Buffer = require('buffer').Buffer;\n\nvar isBufferEncoding = Buffer.isEncoding\n || function(encoding) {\n switch (encoding && encoding.toLowerCase()) {\n case 'hex': case 'utf8': case 'utf-8': case 'ascii': case 'binary': case 'base64': case 'ucs2': case 'ucs-2': case 'utf16le': case 'utf-16le': case 'raw': return true;\n default: return false;\n }\n }\n\n\nfunction assertEncoding(encoding) {\n if (encoding && !isBufferEncoding(encoding)) {\n throw new Error('Unknown encoding: ' + encoding);\n }\n}\n\n// StringDecoder provides an interface for efficiently splitting a series of\n// buffers into a series of JS strings without breaking apart multi-byte\n// characters. CESU-8 is handled as part of the UTF-8 encoding.\n//\n// @TODO Handling all encodings inside a single object makes it very difficult\n// to reason about this code, so it should be split up in the future.\n// @TODO There should be a utf8-strict encoding that rejects invalid UTF-8 code\n// points as used by CESU-8.\nvar StringDecoder = exports.StringDecoder = function(encoding) {\n this.encoding = (encoding || 'utf8').toLowerCase().replace(/[-_]/, '');\n assertEncoding(encoding);\n switch (this.encoding) {\n case 'utf8':\n // CESU-8 represents each of Surrogate Pair by 3-bytes\n this.surrogateSize = 3;\n break;\n case 'ucs2':\n case 'utf16le':\n // UTF-16 represents each of Surrogate Pair by 2-bytes\n this.surrogateSize = 2;\n this.detectIncompleteChar = utf16DetectIncompleteChar;\n break;\n case 'base64':\n // Base-64 stores 3 bytes in 4 chars, and pads the remainder.\n this.surrogateSize = 3;\n this.detectIncompleteChar = base64DetectIncompleteChar;\n break;\n default:\n this.write = passThroughWrite;\n return;\n }\n\n // Enough space to store all bytes of a single character. UTF-8 needs 4\n // bytes, but CESU-8 may require up to 6 (3 bytes per surrogate).\n this.charBuffer = new Buffer(6);\n // Number of bytes received for the current incomplete multi-byte character.\n this.charReceived = 0;\n // Number of bytes expected for the current incomplete multi-byte character.\n this.charLength = 0;\n};\n\n\n// write decodes the given buffer and returns it as JS string that is\n// guaranteed to not contain any partial multi-byte characters. Any partial\n// character found at the end of the buffer is buffered up, and will be\n// returned when calling write again with the remaining bytes.\n//\n// Note: Converting a Buffer containing an orphan surrogate to a String\n// currently works, but converting a String to a Buffer (via `new Buffer`, or\n// Buffer#write) will replace incomplete surrogates with the unicode\n// replacement character. See https://codereview.chromium.org/121173009/ .\nStringDecoder.prototype.write = function(buffer) {\n var charStr = '';\n // if our last write ended with an incomplete multibyte character\n while (this.charLength) {\n // determine how many remaining bytes this buffer has to offer for this char\n var available = (buffer.length >= this.charLength - this.charReceived) ?\n this.charLength - this.charReceived :\n buffer.length;\n\n // add the new bytes to the char buffer\n buffer.copy(this.charBuffer, this.charReceived, 0, available);\n this.charReceived += available;\n\n if (this.charReceived < this.charLength) {\n // still not enough chars in this buffer? wait for more ...\n return '';\n }\n\n // remove bytes belonging to the current character from the buffer\n buffer = buffer.slice(available, buffer.length);\n\n // get the character that was split\n charStr = this.charBuffer.slice(0, this.charLength).toString(this.encoding);\n\n // CESU-8: lead surrogate (D800-DBFF) is also the incomplete character\n var charCode = charStr.charCodeAt(charStr.length - 1);\n if (charCode >= 0xD800 && charCode <= 0xDBFF) {\n this.charLength += this.surrogateSize;\n charStr = '';\n continue;\n }\n this.charReceived = this.charLength = 0;\n\n // if there are no more bytes in this buffer, just emit our char\n if (buffer.length === 0) {\n return charStr;\n }\n break;\n }\n\n // determine and set charLength / charReceived\n this.detectIncompleteChar(buffer);\n\n var end = buffer.length;\n if (this.charLength) {\n // buffer the incomplete character bytes we got\n buffer.copy(this.charBuffer, 0, buffer.length - this.charReceived, end);\n end -= this.charReceived;\n }\n\n charStr += buffer.toString(this.encoding, 0, end);\n\n var end = charStr.length - 1;\n var charCode = charStr.charCodeAt(end);\n // CESU-8: lead surrogate (D800-DBFF) is also the incomplete character\n if (charCode >= 0xD800 && charCode <= 0xDBFF) {\n var size = this.surrogateSize;\n this.charLength += size;\n this.charReceived += size;\n this.charBuffer.copy(this.charBuffer, size, 0, size);\n buffer.copy(this.charBuffer, 0, 0, size);\n return charStr.substring(0, end);\n }\n\n // or just emit the charStr\n return charStr;\n};\n\n// detectIncompleteChar determines if there is an incomplete UTF-8 character at\n// the end of the given buffer. If so, it sets this.charLength to the byte\n// length that character, and sets this.charReceived to the number of bytes\n// that are available for this character.\nStringDecoder.prototype.detectIncompleteChar = function(buffer) {\n // determine how many bytes we have to check at the end of this buffer\n var i = (buffer.length >= 3) ? 3 : buffer.length;\n\n // Figure out if one of the last i bytes of our buffer announces an\n // incomplete char.\n for (; i > 0; i--) {\n var c = buffer[buffer.length - i];\n\n // See http://en.wikipedia.org/wiki/UTF-8#Description\n\n // 110XXXXX\n if (i == 1 && c >> 5 == 0x06) {\n this.charLength = 2;\n break;\n }\n\n // 1110XXXX\n if (i <= 2 && c >> 4 == 0x0E) {\n this.charLength = 3;\n break;\n }\n\n // 11110XXX\n if (i <= 3 && c >> 3 == 0x1E) {\n this.charLength = 4;\n break;\n }\n }\n this.charReceived = i;\n};\n\nStringDecoder.prototype.end = function(buffer) {\n var res = '';\n if (buffer && buffer.length)\n res = this.write(buffer);\n\n if (this.charReceived) {\n var cr = this.charReceived;\n var buf = this.charBuffer;\n var enc = this.encoding;\n res += buf.slice(0, cr).toString(enc);\n }\n\n return res;\n};\n\nfunction passThroughWrite(buffer) {\n return buffer.toString(this.encoding);\n}\n\nfunction utf16DetectIncompleteChar(buffer) {\n this.charReceived = buffer.length % 2;\n this.charLength = this.charReceived ? 2 : 0;\n}\n\nfunction base64DetectIncompleteChar(buffer) {\n this.charReceived = buffer.length % 3;\n this.charLength = this.charReceived ? 3 : 0;\n}\n","'use strict';\n\nvar undefined;\n\nvar $SyntaxError = SyntaxError;\nvar $Function = Function;\nvar $TypeError = TypeError;\n\n// eslint-disable-next-line consistent-return\nvar getEvalledConstructor = function (expressionSyntax) {\n\ttry {\n\t\treturn $Function('\"use strict\"; return (' + expressionSyntax + ').constructor;')();\n\t} catch (e) {}\n};\n\nvar $gOPD = Object.getOwnPropertyDescriptor;\nif ($gOPD) {\n\ttry {\n\t\t$gOPD({}, '');\n\t} catch (e) {\n\t\t$gOPD = null; // this is IE 8, which has a broken gOPD\n\t}\n}\n\nvar throwTypeError = function () {\n\tthrow new $TypeError();\n};\nvar ThrowTypeError = $gOPD\n\t? (function () {\n\t\ttry {\n\t\t\t// eslint-disable-next-line no-unused-expressions, no-caller, no-restricted-properties\n\t\t\targuments.callee; // IE 8 does not throw here\n\t\t\treturn throwTypeError;\n\t\t} catch (calleeThrows) {\n\t\t\ttry {\n\t\t\t\t// IE 8 throws on Object.getOwnPropertyDescriptor(arguments, '')\n\t\t\t\treturn $gOPD(arguments, 'callee').get;\n\t\t\t} catch (gOPDthrows) {\n\t\t\t\treturn throwTypeError;\n\t\t\t}\n\t\t}\n\t}())\n\t: throwTypeError;\n\nvar hasSymbols = require('has-symbols')();\n\nvar getProto = Object.getPrototypeOf || function (x) { return x.__proto__; }; // eslint-disable-line no-proto\n\nvar needsEval = {};\n\nvar TypedArray = typeof Uint8Array === 'undefined' ? undefined : getProto(Uint8Array);\n\nvar INTRINSICS = {\n\t'%AggregateError%': typeof AggregateError === 'undefined' ? undefined : AggregateError,\n\t'%Array%': Array,\n\t'%ArrayBuffer%': typeof ArrayBuffer === 'undefined' ? undefined : ArrayBuffer,\n\t'%ArrayIteratorPrototype%': hasSymbols ? getProto([][Symbol.iterator]()) : undefined,\n\t'%AsyncFromSyncIteratorPrototype%': undefined,\n\t'%AsyncFunction%': needsEval,\n\t'%AsyncGenerator%': needsEval,\n\t'%AsyncGeneratorFunction%': needsEval,\n\t'%AsyncIteratorPrototype%': needsEval,\n\t'%Atomics%': typeof Atomics === 'undefined' ? undefined : Atomics,\n\t'%BigInt%': typeof BigInt === 'undefined' ? undefined : BigInt,\n\t'%Boolean%': Boolean,\n\t'%DataView%': typeof DataView === 'undefined' ? undefined : DataView,\n\t'%Date%': Date,\n\t'%decodeURI%': decodeURI,\n\t'%decodeURIComponent%': decodeURIComponent,\n\t'%encodeURI%': encodeURI,\n\t'%encodeURIComponent%': encodeURIComponent,\n\t'%Error%': Error,\n\t'%eval%': eval, // eslint-disable-line no-eval\n\t'%EvalError%': EvalError,\n\t'%Float32Array%': typeof Float32Array === 'undefined' ? undefined : Float32Array,\n\t'%Float64Array%': typeof Float64Array === 'undefined' ? undefined : Float64Array,\n\t'%FinalizationRegistry%': typeof FinalizationRegistry === 'undefined' ? undefined : FinalizationRegistry,\n\t'%Function%': $Function,\n\t'%GeneratorFunction%': needsEval,\n\t'%Int8Array%': typeof Int8Array === 'undefined' ? undefined : Int8Array,\n\t'%Int16Array%': typeof Int16Array === 'undefined' ? undefined : Int16Array,\n\t'%Int32Array%': typeof Int32Array === 'undefined' ? undefined : Int32Array,\n\t'%isFinite%': isFinite,\n\t'%isNaN%': isNaN,\n\t'%IteratorPrototype%': hasSymbols ? getProto(getProto([][Symbol.iterator]())) : undefined,\n\t'%JSON%': typeof JSON === 'object' ? JSON : undefined,\n\t'%Map%': typeof Map === 'undefined' ? undefined : Map,\n\t'%MapIteratorPrototype%': typeof Map === 'undefined' || !hasSymbols ? undefined : getProto(new Map()[Symbol.iterator]()),\n\t'%Math%': Math,\n\t'%Number%': Number,\n\t'%Object%': Object,\n\t'%parseFloat%': parseFloat,\n\t'%parseInt%': parseInt,\n\t'%Promise%': typeof Promise === 'undefined' ? undefined : Promise,\n\t'%Proxy%': typeof Proxy === 'undefined' ? undefined : Proxy,\n\t'%RangeError%': RangeError,\n\t'%ReferenceError%': ReferenceError,\n\t'%Reflect%': typeof Reflect === 'undefined' ? undefined : Reflect,\n\t'%RegExp%': RegExp,\n\t'%Set%': typeof Set === 'undefined' ? undefined : Set,\n\t'%SetIteratorPrototype%': typeof Set === 'undefined' || !hasSymbols ? undefined : getProto(new Set()[Symbol.iterator]()),\n\t'%SharedArrayBuffer%': typeof SharedArrayBuffer === 'undefined' ? undefined : SharedArrayBuffer,\n\t'%String%': String,\n\t'%StringIteratorPrototype%': hasSymbols ? getProto(''[Symbol.iterator]()) : undefined,\n\t'%Symbol%': hasSymbols ? Symbol : undefined,\n\t'%SyntaxError%': $SyntaxError,\n\t'%ThrowTypeError%': ThrowTypeError,\n\t'%TypedArray%': TypedArray,\n\t'%TypeError%': $TypeError,\n\t'%Uint8Array%': typeof Uint8Array === 'undefined' ? undefined : Uint8Array,\n\t'%Uint8ClampedArray%': typeof Uint8ClampedArray === 'undefined' ? undefined : Uint8ClampedArray,\n\t'%Uint16Array%': typeof Uint16Array === 'undefined' ? undefined : Uint16Array,\n\t'%Uint32Array%': typeof Uint32Array === 'undefined' ? undefined : Uint32Array,\n\t'%URIError%': URIError,\n\t'%WeakMap%': typeof WeakMap === 'undefined' ? undefined : WeakMap,\n\t'%WeakRef%': typeof WeakRef === 'undefined' ? undefined : WeakRef,\n\t'%WeakSet%': typeof WeakSet === 'undefined' ? undefined : WeakSet\n};\n\nvar doEval = function doEval(name) {\n\tvar value;\n\tif (name === '%AsyncFunction%') {\n\t\tvalue = getEvalledConstructor('async function () {}');\n\t} else if (name === '%GeneratorFunction%') {\n\t\tvalue = getEvalledConstructor('function* () {}');\n\t} else if (name === '%AsyncGeneratorFunction%') {\n\t\tvalue = getEvalledConstructor('async function* () {}');\n\t} else if (name === '%AsyncGenerator%') {\n\t\tvar fn = doEval('%AsyncGeneratorFunction%');\n\t\tif (fn) {\n\t\t\tvalue = fn.prototype;\n\t\t}\n\t} else if (name === '%AsyncIteratorPrototype%') {\n\t\tvar gen = doEval('%AsyncGenerator%');\n\t\tif (gen) {\n\t\t\tvalue = getProto(gen.prototype);\n\t\t}\n\t}\n\n\tINTRINSICS[name] = value;\n\n\treturn value;\n};\n\nvar LEGACY_ALIASES = {\n\t'%ArrayBufferPrototype%': ['ArrayBuffer', 'prototype'],\n\t'%ArrayPrototype%': ['Array', 'prototype'],\n\t'%ArrayProto_entries%': ['Array', 'prototype', 'entries'],\n\t'%ArrayProto_forEach%': ['Array', 'prototype', 'forEach'],\n\t'%ArrayProto_keys%': ['Array', 'prototype', 'keys'],\n\t'%ArrayProto_values%': ['Array', 'prototype', 'values'],\n\t'%AsyncFunctionPrototype%': ['AsyncFunction', 'prototype'],\n\t'%AsyncGenerator%': ['AsyncGeneratorFunction', 'prototype'],\n\t'%AsyncGeneratorPrototype%': ['AsyncGeneratorFunction', 'prototype', 'prototype'],\n\t'%BooleanPrototype%': ['Boolean', 'prototype'],\n\t'%DataViewPrototype%': ['DataView', 'prototype'],\n\t'%DatePrototype%': ['Date', 'prototype'],\n\t'%ErrorPrototype%': ['Error', 'prototype'],\n\t'%EvalErrorPrototype%': ['EvalError', 'prototype'],\n\t'%Float32ArrayPrototype%': ['Float32Array', 'prototype'],\n\t'%Float64ArrayPrototype%': ['Float64Array', 'prototype'],\n\t'%FunctionPrototype%': ['Function', 'prototype'],\n\t'%Generator%': ['GeneratorFunction', 'prototype'],\n\t'%GeneratorPrototype%': ['GeneratorFunction', 'prototype', 'prototype'],\n\t'%Int8ArrayPrototype%': ['Int8Array', 'prototype'],\n\t'%Int16ArrayPrototype%': ['Int16Array', 'prototype'],\n\t'%Int32ArrayPrototype%': ['Int32Array', 'prototype'],\n\t'%JSONParse%': ['JSON', 'parse'],\n\t'%JSONStringify%': ['JSON', 'stringify'],\n\t'%MapPrototype%': ['Map', 'prototype'],\n\t'%NumberPrototype%': ['Number', 'prototype'],\n\t'%ObjectPrototype%': ['Object', 'prototype'],\n\t'%ObjProto_toString%': ['Object', 'prototype', 'toString'],\n\t'%ObjProto_valueOf%': ['Object', 'prototype', 'valueOf'],\n\t'%PromisePrototype%': ['Promise', 'prototype'],\n\t'%PromiseProto_then%': ['Promise', 'prototype', 'then'],\n\t'%Promise_all%': ['Promise', 'all'],\n\t'%Promise_reject%': ['Promise', 'reject'],\n\t'%Promise_resolve%': ['Promise', 'resolve'],\n\t'%RangeErrorPrototype%': ['RangeError', 'prototype'],\n\t'%ReferenceErrorPrototype%': ['ReferenceError', 'prototype'],\n\t'%RegExpPrototype%': ['RegExp', 'prototype'],\n\t'%SetPrototype%': ['Set', 'prototype'],\n\t'%SharedArrayBufferPrototype%': ['SharedArrayBuffer', 'prototype'],\n\t'%StringPrototype%': ['String', 'prototype'],\n\t'%SymbolPrototype%': ['Symbol', 'prototype'],\n\t'%SyntaxErrorPrototype%': ['SyntaxError', 'prototype'],\n\t'%TypedArrayPrototype%': ['TypedArray', 'prototype'],\n\t'%TypeErrorPrototype%': ['TypeError', 'prototype'],\n\t'%Uint8ArrayPrototype%': ['Uint8Array', 'prototype'],\n\t'%Uint8ClampedArrayPrototype%': ['Uint8ClampedArray', 'prototype'],\n\t'%Uint16ArrayPrototype%': ['Uint16Array', 'prototype'],\n\t'%Uint32ArrayPrototype%': ['Uint32Array', 'prototype'],\n\t'%URIErrorPrototype%': ['URIError', 'prototype'],\n\t'%WeakMapPrototype%': ['WeakMap', 'prototype'],\n\t'%WeakSetPrototype%': ['WeakSet', 'prototype']\n};\n\nvar bind = require('function-bind');\nvar hasOwn = require('has');\nvar $concat = bind.call(Function.call, Array.prototype.concat);\nvar $spliceApply = bind.call(Function.apply, Array.prototype.splice);\nvar $replace = bind.call(Function.call, String.prototype.replace);\nvar $strSlice = bind.call(Function.call, String.prototype.slice);\n\n/* adapted from https://github.com/lodash/lodash/blob/4.17.15/dist/lodash.js#L6735-L6744 */\nvar rePropName = /[^%.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|%$))/g;\nvar reEscapeChar = /\\\\(\\\\)?/g; /** Used to match backslashes in property paths. */\nvar stringToPath = function stringToPath(string) {\n\tvar first = $strSlice(string, 0, 1);\n\tvar last = $strSlice(string, -1);\n\tif (first === '%' && last !== '%') {\n\t\tthrow new $SyntaxError('invalid intrinsic syntax, expected closing `%`');\n\t} else if (last === '%' && first !== '%') {\n\t\tthrow new $SyntaxError('invalid intrinsic syntax, expected opening `%`');\n\t}\n\tvar result = [];\n\t$replace(string, rePropName, function (match, number, quote, subString) {\n\t\tresult[result.length] = quote ? $replace(subString, reEscapeChar, '$1') : number || match;\n\t});\n\treturn result;\n};\n/* end adaptation */\n\nvar getBaseIntrinsic = function getBaseIntrinsic(name, allowMissing) {\n\tvar intrinsicName = name;\n\tvar alias;\n\tif (hasOwn(LEGACY_ALIASES, intrinsicName)) {\n\t\talias = LEGACY_ALIASES[intrinsicName];\n\t\tintrinsicName = '%' + alias[0] + '%';\n\t}\n\n\tif (hasOwn(INTRINSICS, intrinsicName)) {\n\t\tvar value = INTRINSICS[intrinsicName];\n\t\tif (value === needsEval) {\n\t\t\tvalue = doEval(intrinsicName);\n\t\t}\n\t\tif (typeof value === 'undefined' && !allowMissing) {\n\t\t\tthrow new $TypeError('intrinsic ' + name + ' exists, but is not available. Please file an issue!');\n\t\t}\n\n\t\treturn {\n\t\t\talias: alias,\n\t\t\tname: intrinsicName,\n\t\t\tvalue: value\n\t\t};\n\t}\n\n\tthrow new $SyntaxError('intrinsic ' + name + ' does not exist!');\n};\n\nmodule.exports = function GetIntrinsic(name, allowMissing) {\n\tif (typeof name !== 'string' || name.length === 0) {\n\t\tthrow new $TypeError('intrinsic name must be a non-empty string');\n\t}\n\tif (arguments.length > 1 && typeof allowMissing !== 'boolean') {\n\t\tthrow new $TypeError('\"allowMissing\" argument must be a boolean');\n\t}\n\n\tvar parts = stringToPath(name);\n\tvar intrinsicBaseName = parts.length > 0 ? parts[0] : '';\n\n\tvar intrinsic = getBaseIntrinsic('%' + intrinsicBaseName + '%', allowMissing);\n\tvar intrinsicRealName = intrinsic.name;\n\tvar value = intrinsic.value;\n\tvar skipFurtherCaching = false;\n\n\tvar alias = intrinsic.alias;\n\tif (alias) {\n\t\tintrinsicBaseName = alias[0];\n\t\t$spliceApply(parts, $concat([0, 1], alias));\n\t}\n\n\tfor (var i = 1, isOwn = true; i < parts.length; i += 1) {\n\t\tvar part = parts[i];\n\t\tvar first = $strSlice(part, 0, 1);\n\t\tvar last = $strSlice(part, -1);\n\t\tif (\n\t\t\t(\n\t\t\t\t(first === '\"' || first === \"'\" || first === '`')\n\t\t\t\t|| (last === '\"' || last === \"'\" || last === '`')\n\t\t\t)\n\t\t\t&& first !== last\n\t\t) {\n\t\t\tthrow new $SyntaxError('property names with quotes must have matching quotes');\n\t\t}\n\t\tif (part === 'constructor' || !isOwn) {\n\t\t\tskipFurtherCaching = true;\n\t\t}\n\n\t\tintrinsicBaseName += '.' + part;\n\t\tintrinsicRealName = '%' + intrinsicBaseName + '%';\n\n\t\tif (hasOwn(INTRINSICS, intrinsicRealName)) {\n\t\t\tvalue = INTRINSICS[intrinsicRealName];\n\t\t} else if (value != null) {\n\t\t\tif (!(part in value)) {\n\t\t\t\tif (!allowMissing) {\n\t\t\t\t\tthrow new $TypeError('base intrinsic for ' + name + ' exists, but the property is not available.');\n\t\t\t\t}\n\t\t\t\treturn void undefined;\n\t\t\t}\n\t\t\tif ($gOPD && (i + 1) >= parts.length) {\n\t\t\t\tvar desc = $gOPD(value, part);\n\t\t\t\tisOwn = !!desc;\n\n\t\t\t\t// By convention, when a data property is converted to an accessor\n\t\t\t\t// property to emulate a data property that does not suffer from\n\t\t\t\t// the override mistake, that accessor's getter is marked with\n\t\t\t\t// an `originalValue` property. Here, when we detect this, we\n\t\t\t\t// uphold the illusion by pretending to see that original data\n\t\t\t\t// property, i.e., returning the value rather than the getter\n\t\t\t\t// itself.\n\t\t\t\tif (isOwn && 'get' in desc && !('originalValue' in desc.get)) {\n\t\t\t\t\tvalue = desc.get;\n\t\t\t\t} else {\n\t\t\t\t\tvalue = value[part];\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tisOwn = hasOwn(value, part);\n\t\t\t\tvalue = value[part];\n\t\t\t}\n\n\t\t\tif (isOwn && !skipFurtherCaching) {\n\t\t\t\tINTRINSICS[intrinsicRealName] = value;\n\t\t\t}\n\t\t}\n\t}\n\treturn value;\n};\n","/*!\n * get-value \n *\n * Copyright (c) 2014-2015, Jon Schlinkert.\n * Licensed under the MIT License.\n */\n\nmodule.exports = function(obj, prop, a, b, c) {\n if (!isObject(obj) || !prop) {\n return obj;\n }\n\n prop = toString(prop);\n\n // allowing for multiple properties to be passed as\n // a string or array, but much faster (3-4x) than doing\n // `[].slice.call(arguments)`\n if (a) prop += '.' + toString(a);\n if (b) prop += '.' + toString(b);\n if (c) prop += '.' + toString(c);\n\n if (prop in obj) {\n return obj[prop];\n }\n\n var segs = prop.split('.');\n var len = segs.length;\n var i = -1;\n\n while (obj && (++i < len)) {\n var key = segs[i];\n while (key[key.length - 1] === '\\\\') {\n key = key.slice(0, -1) + '.' + segs[++i];\n }\n obj = obj[key];\n }\n return obj;\n};\n\nfunction isObject(val) {\n return val !== null && (typeof val === 'object' || typeof val === 'function');\n}\n\nfunction toString(val) {\n if (!val) return '';\n if (Array.isArray(val)) {\n return val.join('.');\n }\n return val;\n}\n","'use strict';\n\nvar origSymbol = typeof Symbol !== 'undefined' && Symbol;\nvar hasSymbolSham = require('./shams');\n\nmodule.exports = function hasNativeSymbols() {\n\tif (typeof origSymbol !== 'function') { return false; }\n\tif (typeof Symbol !== 'function') { return false; }\n\tif (typeof origSymbol('foo') !== 'symbol') { return false; }\n\tif (typeof Symbol('bar') !== 'symbol') { return false; }\n\n\treturn hasSymbolSham();\n};\n","'use strict';\n\n/* eslint complexity: [2, 18], max-statements: [2, 33] */\nmodule.exports = function hasSymbols() {\n\tif (typeof Symbol !== 'function' || typeof Object.getOwnPropertySymbols !== 'function') { return false; }\n\tif (typeof Symbol.iterator === 'symbol') { return true; }\n\n\tvar obj = {};\n\tvar sym = Symbol('test');\n\tvar symObj = Object(sym);\n\tif (typeof sym === 'string') { return false; }\n\n\tif (Object.prototype.toString.call(sym) !== '[object Symbol]') { return false; }\n\tif (Object.prototype.toString.call(symObj) !== '[object Symbol]') { return false; }\n\n\t// temp disabled per https://github.com/ljharb/object.assign/issues/17\n\t// if (sym instanceof Symbol) { return false; }\n\t// temp disabled per https://github.com/WebReflection/get-own-property-symbols/issues/4\n\t// if (!(symObj instanceof Symbol)) { return false; }\n\n\t// if (typeof Symbol.prototype.toString !== 'function') { return false; }\n\t// if (String(sym) !== Symbol.prototype.toString.call(sym)) { return false; }\n\n\tvar symVal = 42;\n\tobj[sym] = symVal;\n\tfor (sym in obj) { return false; } // eslint-disable-line no-restricted-syntax, no-unreachable-loop\n\tif (typeof Object.keys === 'function' && Object.keys(obj).length !== 0) { return false; }\n\n\tif (typeof Object.getOwnPropertyNames === 'function' && Object.getOwnPropertyNames(obj).length !== 0) { return false; }\n\n\tvar syms = Object.getOwnPropertySymbols(obj);\n\tif (syms.length !== 1 || syms[0] !== sym) { return false; }\n\n\tif (!Object.prototype.propertyIsEnumerable.call(obj, sym)) { return false; }\n\n\tif (typeof Object.getOwnPropertyDescriptor === 'function') {\n\t\tvar descriptor = Object.getOwnPropertyDescriptor(obj, sym);\n\t\tif (descriptor.value !== symVal || descriptor.enumerable !== true) { return false; }\n\t}\n\n\treturn true;\n};\n","'use strict';\n\nvar hasSymbols = require('has-symbols/shams');\n\nmodule.exports = function hasToStringTagShams() {\n\treturn hasSymbols() && !!Symbol.toStringTag;\n};\n","'use strict';\n\nvar bind = require('function-bind');\n\nmodule.exports = bind.call(Function.call, Object.prototype.hasOwnProperty);\n","/*global window:false, self:false, define:false, module:false */\n\n/**\n * @license IDBWrapper - A cross-browser wrapper for IndexedDB\n * Version 1.7.2\n * Copyright (c) 2011 - 2017 Jens Arps\n * http://jensarps.de/\n *\n * Licensed under the MIT license\n */\n\n(function (name, definition, global) {\n\n 'use strict';\n\n if (typeof define === 'function') {\n define(definition);\n } else if (typeof module !== 'undefined' && module.exports) {\n module.exports = definition();\n } else {\n global[name] = definition();\n }\n})('IDBStore', function () {\n\n 'use strict';\n\n var defaultErrorHandler = function (error) {\n throw error;\n };\n var defaultSuccessHandler = function () {\n };\n\n var defaults = {\n storeName: 'Store',\n storePrefix: 'IDBWrapper-',\n dbVersion: 1,\n keyPath: 'id',\n autoIncrement: true,\n onStoreReady: function () {\n },\n onError: defaultErrorHandler,\n indexes: [],\n implementationPreference: [\n 'indexedDB',\n 'webkitIndexedDB',\n 'mozIndexedDB',\n 'shimIndexedDB'\n ]\n };\n\n /**\n *\n * The IDBStore constructor\n *\n * @constructor\n * @name IDBStore\n * @version 1.7.2\n *\n * @param {Object} [kwArgs] An options object used to configure the store and\n * set callbacks\n * @param {String} [kwArgs.storeName='Store'] The name of the store\n * @param {String} [kwArgs.storePrefix='IDBWrapper-'] A prefix that is\n * internally used to construct the name of the database, which will be\n * kwArgs.storePrefix + kwArgs.storeName\n * @param {Number} [kwArgs.dbVersion=1] The version of the store\n * @param {String} [kwArgs.keyPath='id'] The key path to use. If you want to\n * setup IDBWrapper to work with out-of-line keys, you need to set this to\n * `null`\n * @param {Boolean} [kwArgs.autoIncrement=true] If set to true, IDBStore will\n * automatically make sure a unique keyPath value is present on each object\n * that is stored.\n * @param {Function} [kwArgs.onStoreReady] A callback to be called when the\n * store is ready to be used.\n * @param {Function} [kwArgs.onError=throw] A callback to be called when an\n * error occurred during instantiation of the store.\n * @param {Array} [kwArgs.indexes=[]] An array of indexData objects\n * defining the indexes to use with the store. For every index to be used\n * one indexData object needs to be passed in the array.\n * An indexData object is defined as follows:\n * @param {Object} [kwArgs.indexes.indexData] An object defining the index to\n * use\n * @param {String} kwArgs.indexes.indexData.name The name of the index\n * @param {String} [kwArgs.indexes.indexData.keyPath] The key path of the index\n * @param {Boolean} [kwArgs.indexes.indexData.unique] Whether the index is unique\n * @param {Boolean} [kwArgs.indexes.indexData.multiEntry] Whether the index is multi entry\n * @param {Array} [kwArgs.implementationPreference=['indexedDB','webkitIndexedDB','mozIndexedDB','shimIndexedDB']] An array of strings naming implementations to be used, in order or preference\n * @param {Function} [onStoreReady] A callback to be called when the store\n * is ready to be used.\n * @example\n // create a store for customers with an additional index over the\n // `lastname` property.\n var myCustomerStore = new IDBStore({\n dbVersion: 1,\n storeName: 'customer-index',\n keyPath: 'customerid',\n autoIncrement: true,\n onStoreReady: populateTable,\n indexes: [\n { name: 'lastname', keyPath: 'lastname', unique: false, multiEntry: false }\n ]\n });\n * @example\n // create a generic store\n var myCustomerStore = new IDBStore({\n storeName: 'my-data-store',\n onStoreReady: function(){\n // start working with the store.\n }\n });\n */\n var IDBStore = function (kwArgs, onStoreReady) {\n\n if (typeof onStoreReady == 'undefined' && typeof kwArgs == 'function') {\n onStoreReady = kwArgs;\n }\n if (Object.prototype.toString.call(kwArgs) != '[object Object]') {\n kwArgs = {};\n }\n\n for (var key in defaults) {\n this[key] = typeof kwArgs[key] != 'undefined' ? kwArgs[key] : defaults[key];\n }\n\n this.dbName = this.storePrefix + this.storeName;\n this.dbVersion = parseInt(this.dbVersion, 10) || 1;\n\n onStoreReady && (this.onStoreReady = onStoreReady);\n\n var env = typeof window == 'object' ? window : self;\n var availableImplementations = this.implementationPreference.filter(function (implName) {\n return implName in env;\n });\n this.implementation = availableImplementations[0];\n this.idb = env[this.implementation];\n this.keyRange = env.IDBKeyRange || env.webkitIDBKeyRange || env.mozIDBKeyRange;\n\n this.consts = {\n 'READ_ONLY': 'readonly',\n 'READ_WRITE': 'readwrite',\n 'VERSION_CHANGE': 'versionchange',\n 'NEXT': 'next',\n 'NEXT_NO_DUPLICATE': 'nextunique',\n 'PREV': 'prev',\n 'PREV_NO_DUPLICATE': 'prevunique'\n };\n\n this.openDB();\n };\n\n /** @lends IDBStore.prototype */\n var proto = {\n\n /**\n * A pointer to the IDBStore ctor\n *\n * @private\n * @type {Function}\n * @constructs\n */\n constructor: IDBStore,\n\n /**\n * The version of IDBStore\n *\n * @type {String}\n */\n version: '1.7.2',\n\n /**\n * A reference to the IndexedDB object\n *\n * @type {IDBDatabase}\n */\n db: null,\n\n /**\n * The full name of the IndexedDB used by IDBStore, composed of\n * this.storePrefix + this.storeName\n *\n * @type {String}\n */\n dbName: null,\n\n /**\n * The version of the IndexedDB used by IDBStore\n *\n * @type {Number}\n */\n dbVersion: null,\n\n /**\n * A reference to the objectStore used by IDBStore\n *\n * @type {IDBObjectStore}\n */\n store: null,\n\n /**\n * The store name\n *\n * @type {String}\n */\n storeName: null,\n\n /**\n * The prefix to prepend to the store name\n *\n * @type {String}\n */\n storePrefix: null,\n\n /**\n * The key path\n *\n * @type {String}\n */\n keyPath: null,\n\n /**\n * Whether IDBStore uses autoIncrement\n *\n * @type {Boolean}\n */\n autoIncrement: null,\n\n /**\n * The indexes used by IDBStore\n *\n * @type {Array}\n */\n indexes: null,\n\n /**\n * The implemantations to try to use, in order of preference\n *\n * @type {Array}\n */\n implementationPreference: null,\n\n /**\n * The actual implementation being used\n *\n * @type {String}\n */\n implementation: '',\n\n /**\n * The callback to be called when the store is ready to be used\n *\n * @type {Function}\n */\n onStoreReady: null,\n\n /**\n * The callback to be called if an error occurred during instantiation\n * of the store\n *\n * @type {Function}\n */\n onError: null,\n\n /**\n * The internal insertID counter\n *\n * @type {Number}\n * @private\n */\n _insertIdCount: 0,\n\n /**\n * Opens an IndexedDB; called by the constructor.\n *\n * Will check if versions match and compare provided index configuration\n * with existing ones, and update indexes if necessary.\n *\n * Will call this.onStoreReady() if everything went well and the store\n * is ready to use, and this.onError() is something went wrong.\n *\n * @private\n *\n */\n openDB: function () {\n\n var openRequest = this.idb.open(this.dbName, this.dbVersion);\n var preventSuccessCallback = false;\n\n openRequest.onerror = function (errorEvent) {\n\n if (hasVersionError(errorEvent)) {\n this.onError(new Error('The version number provided is lower than the existing one.'));\n } else {\n var error;\n\n if (errorEvent.target.error) {\n error = errorEvent.target.error;\n } else {\n var errorMessage = 'IndexedDB unknown error occurred when opening DB ' + this.dbName + ' version ' + this.dbVersion;\n if ('errorCode' in errorEvent.target) {\n errorMessage += ' with error code ' + errorEvent.target.errorCode;\n }\n error = new Error(errorMessage);\n }\n\n this.onError(error);\n }\n }.bind(this);\n\n openRequest.onsuccess = function (event) {\n\n if (preventSuccessCallback) {\n return;\n }\n\n if (this.db) {\n this.onStoreReady();\n return;\n }\n\n this.db = event.target.result;\n\n if (typeof this.db.version == 'string') {\n this.onError(new Error('The IndexedDB implementation in this browser is outdated. Please upgrade your browser.'));\n return;\n }\n\n if (!this.db.objectStoreNames.contains(this.storeName)) {\n // We should never ever get here.\n // Lets notify the user anyway.\n this.onError(new Error('Object store couldn\\'t be created.'));\n return;\n }\n\n var emptyTransaction = this.db.transaction([this.storeName], this.consts.READ_ONLY);\n this.store = emptyTransaction.objectStore(this.storeName);\n\n // check indexes\n var existingIndexes = Array.prototype.slice.call(this.getIndexList());\n this.indexes.forEach(function (indexData) {\n var indexName = indexData.name;\n\n if (!indexName) {\n preventSuccessCallback = true;\n this.onError(new Error('Cannot create index: No index name given.'));\n return;\n }\n\n this.normalizeIndexData(indexData);\n\n if (this.hasIndex(indexName)) {\n // check if it complies\n var actualIndex = this.store.index(indexName);\n var complies = this.indexComplies(actualIndex, indexData);\n if (!complies) {\n preventSuccessCallback = true;\n this.onError(new Error('Cannot modify index \"' + indexName + '\" for current version. Please bump version number to ' + ( this.dbVersion + 1 ) + '.'));\n }\n\n existingIndexes.splice(existingIndexes.indexOf(indexName), 1);\n } else {\n preventSuccessCallback = true;\n this.onError(new Error('Cannot create new index \"' + indexName + '\" for current version. Please bump version number to ' + ( this.dbVersion + 1 ) + '.'));\n }\n\n }, this);\n\n if (existingIndexes.length) {\n preventSuccessCallback = true;\n this.onError(new Error('Cannot delete index(es) \"' + existingIndexes.toString() + '\" for current version. Please bump version number to ' + ( this.dbVersion + 1 ) + '.'));\n }\n\n preventSuccessCallback || this.onStoreReady();\n }.bind(this);\n\n openRequest.onupgradeneeded = function (/* IDBVersionChangeEvent */ event) {\n\n this.db = event.target.result;\n\n if (this.db.objectStoreNames.contains(this.storeName)) {\n this.store = event.target.transaction.objectStore(this.storeName);\n } else {\n var optionalParameters = {autoIncrement: this.autoIncrement};\n if (this.keyPath !== null) {\n optionalParameters.keyPath = this.keyPath;\n }\n this.store = this.db.createObjectStore(this.storeName, optionalParameters);\n }\n\n var existingIndexes = Array.prototype.slice.call(this.getIndexList());\n this.indexes.forEach(function (indexData) {\n var indexName = indexData.name;\n\n if (!indexName) {\n preventSuccessCallback = true;\n this.onError(new Error('Cannot create index: No index name given.'));\n }\n\n this.normalizeIndexData(indexData);\n\n if (this.hasIndex(indexName)) {\n // check if it complies\n var actualIndex = this.store.index(indexName);\n var complies = this.indexComplies(actualIndex, indexData);\n if (!complies) {\n // index differs, need to delete and re-create\n this.store.deleteIndex(indexName);\n this.store.createIndex(indexName, indexData.keyPath, {\n unique: indexData.unique,\n multiEntry: indexData.multiEntry\n });\n }\n\n existingIndexes.splice(existingIndexes.indexOf(indexName), 1);\n } else {\n this.store.createIndex(indexName, indexData.keyPath, {\n unique: indexData.unique,\n multiEntry: indexData.multiEntry\n });\n }\n\n }, this);\n\n if (existingIndexes.length) {\n existingIndexes.forEach(function (_indexName) {\n this.store.deleteIndex(_indexName);\n }, this);\n }\n\n }.bind(this);\n },\n\n /**\n * Deletes the database used for this store if the IDB implementations\n * provides that functionality.\n *\n * @param {Function} [onSuccess] A callback that is called if deletion\n * was successful.\n * @param {Function} [onError] A callback that is called if deletion\n * failed.\n */\n deleteDatabase: function (onSuccess, onError) {\n if (this.idb.deleteDatabase) {\n this.db.close();\n var deleteRequest = this.idb.deleteDatabase(this.dbName);\n deleteRequest.onsuccess = onSuccess;\n deleteRequest.onerror = onError;\n } else {\n onError(new Error('Browser does not support IndexedDB deleteDatabase!'));\n }\n },\n\n /*********************\n * data manipulation *\n *********************/\n\n /**\n * Puts an object into the store. If an entry with the given id exists,\n * it will be overwritten. This method has a different signature for inline\n * keys and out-of-line keys; please see the examples below.\n *\n * @param {*} [key] The key to store. This is only needed if IDBWrapper\n * is set to use out-of-line keys. For inline keys - the default scenario -\n * this can be omitted.\n * @param {Object} value The data object to store.\n * @param {Function} [onSuccess] A callback that is called if insertion\n * was successful.\n * @param {Function} [onError] A callback that is called if insertion\n * failed.\n * @returns {IDBTransaction} The transaction used for this operation.\n * @example\n // Storing an object, using inline keys (the default scenario):\n var myCustomer = {\n customerid: 2346223,\n lastname: 'Doe',\n firstname: 'John'\n };\n myCustomerStore.put(myCustomer, mySuccessHandler, myErrorHandler);\n // Note that passing success- and error-handlers is optional.\n * @example\n // Storing an object, using out-of-line keys:\n var myCustomer = {\n lastname: 'Doe',\n firstname: 'John'\n };\n myCustomerStore.put(2346223, myCustomer, mySuccessHandler, myErrorHandler);\n // Note that passing success- and error-handlers is optional.\n */\n put: function (key, value, onSuccess, onError) {\n if (this.keyPath !== null) {\n onError = onSuccess;\n onSuccess = value;\n value = key;\n }\n onError || (onError = defaultErrorHandler);\n onSuccess || (onSuccess = defaultSuccessHandler);\n\n var hasSuccess = false,\n result = null,\n putRequest;\n\n var putTransaction = this.db.transaction([this.storeName], this.consts.READ_WRITE);\n putTransaction.oncomplete = function () {\n var callback = hasSuccess ? onSuccess : onError;\n callback(result);\n };\n putTransaction.onabort = onError;\n putTransaction.onerror = onError;\n\n if (this.keyPath !== null) { // in-line keys\n this._addIdPropertyIfNeeded(value);\n putRequest = putTransaction.objectStore(this.storeName).put(value);\n } else { // out-of-line keys\n putRequest = putTransaction.objectStore(this.storeName).put(value, key);\n }\n putRequest.onsuccess = function (event) {\n hasSuccess = true;\n result = event.target.result;\n };\n putRequest.onerror = onError;\n\n return putTransaction;\n },\n\n /**\n * Retrieves an object from the store. If no entry exists with the given id,\n * the success handler will be called with null as first and only argument.\n *\n * @param {*} key The id of the object to fetch.\n * @param {Function} [onSuccess] A callback that is called if fetching\n * was successful. Will receive the object as only argument.\n * @param {Function} [onError] A callback that will be called if an error\n * occurred during the operation.\n * @returns {IDBTransaction} The transaction used for this operation.\n */\n get: function (key, onSuccess, onError) {\n onError || (onError = defaultErrorHandler);\n onSuccess || (onSuccess = defaultSuccessHandler);\n\n var hasSuccess = false,\n result = null;\n\n var getTransaction = this.db.transaction([this.storeName], this.consts.READ_ONLY);\n getTransaction.oncomplete = function () {\n var callback = hasSuccess ? onSuccess : onError;\n callback(result);\n };\n getTransaction.onabort = onError;\n getTransaction.onerror = onError;\n var getRequest = getTransaction.objectStore(this.storeName).get(key);\n getRequest.onsuccess = function (event) {\n hasSuccess = true;\n result = event.target.result;\n };\n getRequest.onerror = onError;\n\n return getTransaction;\n },\n\n /**\n * Removes an object from the store.\n *\n * @param {*} key The id of the object to remove.\n * @param {Function} [onSuccess] A callback that is called if the removal\n * was successful.\n * @param {Function} [onError] A callback that will be called if an error\n * occurred during the operation.\n * @returns {IDBTransaction} The transaction used for this operation.\n */\n remove: function (key, onSuccess, onError) {\n onError || (onError = defaultErrorHandler);\n onSuccess || (onSuccess = defaultSuccessHandler);\n\n var hasSuccess = false,\n result = null;\n\n var removeTransaction = this.db.transaction([this.storeName], this.consts.READ_WRITE);\n removeTransaction.oncomplete = function () {\n var callback = hasSuccess ? onSuccess : onError;\n callback(result);\n };\n removeTransaction.onabort = onError;\n removeTransaction.onerror = onError;\n\n var deleteRequest = removeTransaction.objectStore(this.storeName)['delete'](key);\n deleteRequest.onsuccess = function (event) {\n hasSuccess = true;\n result = event.target.result;\n };\n deleteRequest.onerror = onError;\n\n return removeTransaction;\n },\n\n /**\n * Runs a batch of put and/or remove operations on the store.\n *\n * @param {Array} dataArray An array of objects containing the operation to run\n * and the data object (for put operations).\n * @param {Function} [onSuccess] A callback that is called if all operations\n * were successful.\n * @param {Function} [onError] A callback that is called if an error\n * occurred during one of the operations.\n * @returns {IDBTransaction} The transaction used for this operation.\n */\n batch: function (dataArray, onSuccess, onError) {\n onError || (onError = defaultErrorHandler);\n onSuccess || (onSuccess = defaultSuccessHandler);\n\n if (Object.prototype.toString.call(dataArray) != '[object Array]') {\n onError(new Error('dataArray argument must be of type Array.'));\n } else if (dataArray.length === 0) {\n return onSuccess(true);\n }\n\n var count = dataArray.length;\n var called = false;\n var hasSuccess = false;\n\n var batchTransaction = this.db.transaction([this.storeName], this.consts.READ_WRITE);\n batchTransaction.oncomplete = function () {\n var callback = hasSuccess ? onSuccess : onError;\n callback(hasSuccess);\n };\n batchTransaction.onabort = onError;\n batchTransaction.onerror = onError;\n\n\n var onItemSuccess = function () {\n count--;\n if (count === 0 && !called) {\n called = true;\n hasSuccess = true;\n }\n };\n\n dataArray.forEach(function (operation) {\n var type = operation.type;\n var key = operation.key;\n var value = operation.value;\n\n var onItemError = function (err) {\n batchTransaction.abort();\n if (!called) {\n called = true;\n onError(err, type, key);\n }\n };\n\n if (type == 'remove') {\n var deleteRequest = batchTransaction.objectStore(this.storeName)['delete'](key);\n deleteRequest.onsuccess = onItemSuccess;\n deleteRequest.onerror = onItemError;\n } else if (type == 'put') {\n var putRequest;\n if (this.keyPath !== null) { // in-line keys\n this._addIdPropertyIfNeeded(value);\n putRequest = batchTransaction.objectStore(this.storeName).put(value);\n } else { // out-of-line keys\n putRequest = batchTransaction.objectStore(this.storeName).put(value, key);\n }\n putRequest.onsuccess = onItemSuccess;\n putRequest.onerror = onItemError;\n }\n }, this);\n\n return batchTransaction;\n },\n\n /**\n * Takes an array of objects and stores them in a single transaction.\n *\n * @param {Array} dataArray An array of objects to store\n * @param {Function} [onSuccess] A callback that is called if all operations\n * were successful.\n * @param {Function} [onError] A callback that is called if an error\n * occurred during one of the operations.\n * @returns {IDBTransaction} The transaction used for this operation.\n */\n putBatch: function (dataArray, onSuccess, onError) {\n var batchData = dataArray.map(function (item) {\n return {type: 'put', value: item};\n });\n\n return this.batch(batchData, onSuccess, onError);\n },\n\n /**\n * Like putBatch, takes an array of objects and stores them in a single\n * transaction, but allows processing of the result values. Returns the\n * processed records containing the key for newly created records to the\n * onSuccess calllback instead of only returning true or false for success.\n * In addition, added the option for the caller to specify a key field that\n * should be set to the newly created key.\n *\n * @param {Array} dataArray An array of objects to store\n * @param {Object} [options] An object containing optional options\n * @param {String} [options.keyField=this.keyPath] Specifies a field in the record to update\n * with the auto-incrementing key. Defaults to the store's keyPath.\n * @param {Function} [onSuccess] A callback that is called if all operations\n * were successful.\n * @param {Function} [onError] A callback that is called if an error\n * occurred during one of the operations.\n * @returns {IDBTransaction} The transaction used for this operation.\n *\n */\n upsertBatch: function (dataArray, options, onSuccess, onError) {\n // handle `dataArray, onSuccess, onError` signature\n if (typeof options == 'function') {\n onSuccess = options;\n onError = onSuccess;\n options = {};\n }\n\n onError || (onError = defaultErrorHandler);\n onSuccess || (onSuccess = defaultSuccessHandler);\n options || (options = {});\n\n if (Object.prototype.toString.call(dataArray) != '[object Array]') {\n onError(new Error('dataArray argument must be of type Array.'));\n }\n\n var keyField = options.keyField || this.keyPath;\n var count = dataArray.length;\n var called = false;\n var hasSuccess = false;\n var index = 0; // assume success callbacks are executed in order\n\n var batchTransaction = this.db.transaction([this.storeName], this.consts.READ_WRITE);\n batchTransaction.oncomplete = function () {\n if (hasSuccess) {\n onSuccess(dataArray);\n } else {\n onError(false);\n }\n };\n batchTransaction.onabort = onError;\n batchTransaction.onerror = onError;\n\n var onItemSuccess = function (event) {\n var record = dataArray[index++];\n record[keyField] = event.target.result;\n\n count--;\n if (count === 0 && !called) {\n called = true;\n hasSuccess = true;\n }\n };\n\n dataArray.forEach(function (record) {\n var key = record.key;\n\n var onItemError = function (err) {\n batchTransaction.abort();\n if (!called) {\n called = true;\n onError(err);\n }\n };\n\n var putRequest;\n if (this.keyPath !== null) { // in-line keys\n this._addIdPropertyIfNeeded(record);\n putRequest = batchTransaction.objectStore(this.storeName).put(record);\n } else { // out-of-line keys\n putRequest = batchTransaction.objectStore(this.storeName).put(record, key);\n }\n putRequest.onsuccess = onItemSuccess;\n putRequest.onerror = onItemError;\n }, this);\n\n return batchTransaction;\n },\n\n /**\n * Takes an array of keys and removes matching objects in a single\n * transaction.\n *\n * @param {Array} keyArray An array of keys to remove\n * @param {Function} [onSuccess] A callback that is called if all operations\n * were successful.\n * @param {Function} [onError] A callback that is called if an error\n * occurred during one of the operations.\n * @returns {IDBTransaction} The transaction used for this operation.\n */\n removeBatch: function (keyArray, onSuccess, onError) {\n var batchData = keyArray.map(function (key) {\n return {type: 'remove', key: key};\n });\n\n return this.batch(batchData, onSuccess, onError);\n },\n\n /**\n * Takes an array of keys and fetches matching objects\n *\n * @param {Array} keyArray An array of keys identifying the objects to fetch\n * @param {Function} [onSuccess] A callback that is called if all operations\n * were successful.\n * @param {Function} [onError] A callback that is called if an error\n * occurred during one of the operations.\n * @param {String} [arrayType='sparse'] The type of array to pass to the\n * success handler. May be one of 'sparse', 'dense' or 'skip'. Defaults to\n * 'sparse'. This parameter specifies how to handle the situation if a get\n * operation did not throw an error, but there was no matching object in\n * the database. In most cases, 'sparse' provides the most desired\n * behavior. See the examples for details.\n * @returns {IDBTransaction} The transaction used for this operation.\n * @example\n // given that there are two objects in the database with the keypath\n // values 1 and 2, and the call looks like this:\n myStore.getBatch([1, 5, 2], onError, function (data) { … }, arrayType);\n\n // this is what the `data` array will be like:\n\n // arrayType == 'sparse':\n // data is a sparse array containing two entries and having a length of 3:\n [Object, 2: Object]\n 0: Object\n 2: Object\n length: 3\n // calling forEach on data will result in the callback being called two\n // times, with the index parameter matching the index of the key in the\n // keyArray.\n\n // arrayType == 'dense':\n // data is a dense array containing three entries and having a length of 3,\n // where data[1] is of type undefined:\n [Object, undefined, Object]\n 0: Object\n 1: undefined\n 2: Object\n length: 3\n // calling forEach on data will result in the callback being called three\n // times, with the index parameter matching the index of the key in the\n // keyArray, but the second call will have undefined as first argument.\n\n // arrayType == 'skip':\n // data is a dense array containing two entries and having a length of 2:\n [Object, Object]\n 0: Object\n 1: Object\n length: 2\n // calling forEach on data will result in the callback being called two\n // times, with the index parameter not matching the index of the key in the\n // keyArray.\n */\n getBatch: function (keyArray, onSuccess, onError, arrayType) {\n onError || (onError = defaultErrorHandler);\n onSuccess || (onSuccess = defaultSuccessHandler);\n arrayType || (arrayType = 'sparse');\n\n if (Object.prototype.toString.call(keyArray) != '[object Array]') {\n onError(new Error('keyArray argument must be of type Array.'));\n } else if (keyArray.length === 0) {\n return onSuccess([]);\n }\n\n var data = [];\n var count = keyArray.length;\n var called = false;\n var hasSuccess = false;\n var result = null;\n\n var batchTransaction = this.db.transaction([this.storeName], this.consts.READ_ONLY);\n batchTransaction.oncomplete = function () {\n var callback = hasSuccess ? onSuccess : onError;\n callback(result);\n };\n batchTransaction.onabort = onError;\n batchTransaction.onerror = onError;\n\n var onItemSuccess = function (event) {\n if (event.target.result || arrayType == 'dense') {\n data.push(event.target.result);\n } else if (arrayType == 'sparse') {\n data.length++;\n }\n count--;\n if (count === 0) {\n called = true;\n hasSuccess = true;\n result = data;\n }\n };\n\n keyArray.forEach(function (key) {\n\n var onItemError = function (err) {\n called = true;\n result = err;\n onError(err);\n batchTransaction.abort();\n };\n\n var getRequest = batchTransaction.objectStore(this.storeName).get(key);\n getRequest.onsuccess = onItemSuccess;\n getRequest.onerror = onItemError;\n\n }, this);\n\n return batchTransaction;\n },\n\n /**\n * Fetches all entries in the store.\n *\n * @param {Function} [onSuccess] A callback that is called if the operation\n * was successful. Will receive an array of objects.\n * @param {Function} [onError] A callback that will be called if an error\n * occurred during the operation.\n * @returns {IDBTransaction} The transaction used for this operation.\n */\n getAll: function (onSuccess, onError) {\n onError || (onError = defaultErrorHandler);\n onSuccess || (onSuccess = defaultSuccessHandler);\n var getAllTransaction = this.db.transaction([this.storeName], this.consts.READ_ONLY);\n var store = getAllTransaction.objectStore(this.storeName);\n if (store.getAll) {\n this._getAllNative(getAllTransaction, store, onSuccess, onError);\n } else {\n this._getAllCursor(getAllTransaction, store, onSuccess, onError);\n }\n\n return getAllTransaction;\n },\n\n /**\n * Implements getAll for IDB implementations that have a non-standard\n * getAll() method.\n *\n * @param {IDBTransaction} getAllTransaction An open READ transaction.\n * @param {IDBObjectStore} store A reference to the store.\n * @param {Function} onSuccess A callback that will be called if the\n * operation was successful.\n * @param {Function} onError A callback that will be called if an\n * error occurred during the operation.\n * @private\n */\n _getAllNative: function (getAllTransaction, store, onSuccess, onError) {\n var hasSuccess = false,\n result = null;\n\n getAllTransaction.oncomplete = function () {\n var callback = hasSuccess ? onSuccess : onError;\n callback(result);\n };\n getAllTransaction.onabort = onError;\n getAllTransaction.onerror = onError;\n\n var getAllRequest = store.getAll();\n getAllRequest.onsuccess = function (event) {\n hasSuccess = true;\n result = event.target.result;\n };\n getAllRequest.onerror = onError;\n },\n\n /**\n * Implements getAll for IDB implementations that do not have a getAll()\n * method.\n *\n * @param {IDBTransaction} getAllTransaction An open READ transaction.\n * @param {IDBObjectStore} store A reference to the store.\n * @param {Function} onSuccess A callback that will be called if the\n * operation was successful.\n * @param {Function} onError A callback that will be called if an\n * error occurred during the operation.\n * @private\n */\n _getAllCursor: function (getAllTransaction, store, onSuccess, onError) {\n var all = [],\n hasSuccess = false,\n result = null;\n\n getAllTransaction.oncomplete = function () {\n var callback = hasSuccess ? onSuccess : onError;\n callback(result);\n };\n getAllTransaction.onabort = onError;\n getAllTransaction.onerror = onError;\n\n var cursorRequest = store.openCursor();\n cursorRequest.onsuccess = function (event) {\n var cursor = event.target.result;\n if (cursor) {\n all.push(cursor.value);\n cursor['continue']();\n }\n else {\n hasSuccess = true;\n result = all;\n }\n };\n cursorRequest.onError = onError;\n },\n\n /**\n * Clears the store, i.e. deletes all entries in the store.\n *\n * @param {Function} [onSuccess] A callback that will be called if the\n * operation was successful.\n * @param {Function} [onError] A callback that will be called if an\n * error occurred during the operation.\n * @returns {IDBTransaction} The transaction used for this operation.\n */\n clear: function (onSuccess, onError) {\n onError || (onError = defaultErrorHandler);\n onSuccess || (onSuccess = defaultSuccessHandler);\n\n var hasSuccess = false,\n result = null;\n\n var clearTransaction = this.db.transaction([this.storeName], this.consts.READ_WRITE);\n clearTransaction.oncomplete = function () {\n var callback = hasSuccess ? onSuccess : onError;\n callback(result);\n };\n clearTransaction.onabort = onError;\n clearTransaction.onerror = onError;\n\n var clearRequest = clearTransaction.objectStore(this.storeName).clear();\n clearRequest.onsuccess = function (event) {\n hasSuccess = true;\n result = event.target.result;\n };\n clearRequest.onerror = onError;\n\n return clearTransaction;\n },\n\n /**\n * Checks if an id property needs to present on a object and adds one if\n * necessary.\n *\n * @param {Object} dataObj The data object that is about to be stored\n * @private\n */\n _addIdPropertyIfNeeded: function (dataObj) {\n if (typeof dataObj[this.keyPath] == 'undefined') {\n dataObj[this.keyPath] = this._insertIdCount++ + Date.now();\n }\n },\n\n /************\n * indexing *\n ************/\n\n /**\n * Returns a DOMStringList of index names of the store.\n *\n * @return {DOMStringList} The list of index names\n */\n getIndexList: function () {\n return this.store.indexNames;\n },\n\n /**\n * Checks if an index with the given name exists in the store.\n *\n * @param {String} indexName The name of the index to look for\n * @return {Boolean} Whether the store contains an index with the given name\n */\n hasIndex: function (indexName) {\n return this.store.indexNames.contains(indexName);\n },\n\n /**\n * Normalizes an object containing index data and assures that all\n * properties are set.\n *\n * @param {Object} indexData The index data object to normalize\n * @param {String} indexData.name The name of the index\n * @param {String} [indexData.keyPath] The key path of the index\n * @param {Boolean} [indexData.unique] Whether the index is unique\n * @param {Boolean} [indexData.multiEntry] Whether the index is multi entry\n */\n normalizeIndexData: function (indexData) {\n indexData.keyPath = indexData.keyPath || indexData.name;\n indexData.unique = !!indexData.unique;\n indexData.multiEntry = !!indexData.multiEntry;\n },\n\n /**\n * Checks if an actual index complies with an expected index.\n *\n * @param {IDBIndex} actual The actual index found in the store\n * @param {Object} expected An Object describing an expected index\n * @return {Boolean} Whether both index definitions are identical\n */\n indexComplies: function (actual, expected) {\n var complies = ['keyPath', 'unique', 'multiEntry'].every(function (key) {\n // IE10 returns undefined for no multiEntry\n if (key == 'multiEntry' && actual[key] === undefined && expected[key] === false) {\n return true;\n }\n // Compound keys\n if (key == 'keyPath' && Object.prototype.toString.call(expected[key]) == '[object Array]') {\n var exp = expected.keyPath;\n var act = actual.keyPath;\n\n // IE10 can't handle keyPath sequences and stores them as a string.\n // The index will be unusable there, but let's still return true if\n // the keyPath sequence matches.\n if (typeof act == 'string') {\n return exp.toString() == act;\n }\n\n // Chrome/Opera stores keyPath squences as DOMStringList, Firefox\n // as Array\n if (!(typeof act.contains == 'function' || typeof act.indexOf == 'function')) {\n return false;\n }\n\n if (act.length !== exp.length) {\n return false;\n }\n\n for (var i = 0, m = exp.length; i < m; i++) {\n if (!( (act.contains && act.contains(exp[i])) || act.indexOf(exp[i] !== -1) )) {\n return false;\n }\n }\n return true;\n }\n return expected[key] == actual[key];\n });\n return complies;\n },\n\n /**********\n * cursor *\n **********/\n\n /**\n * Iterates over the store using the given options and calling onItem\n * for each entry matching the options.\n *\n * @param {Function} onItem A callback to be called for each match\n * @param {Object} [options] An object defining specific options\n * @param {String} [options.index=null] A name of an IDBIndex to operate on\n * @param {String} [options.order=ASC] The order in which to provide the\n * results, can be 'DESC' or 'ASC'\n * @param {Boolean} [options.autoContinue=true] Whether to automatically\n * iterate the cursor to the next result\n * @param {Boolean} [options.filterDuplicates=false] Whether to exclude\n * duplicate matches\n * @param {IDBKeyRange} [options.keyRange=null] An IDBKeyRange to use\n * @param {Boolean} [options.writeAccess=false] Whether grant write access\n * to the store in the onItem callback\n * @param {Function} [options.onEnd=null] A callback to be called after\n * iteration has ended\n * @param {Function} [options.onError=throw] A callback to be called\n * if an error occurred during the operation.\n * @param {Number} [options.limit=Infinity] Limit the number of returned\n * results to this number\n * @param {Number} [options.offset=0] Skip the provided number of results\n * in the resultset\n * @param {Boolean} [options.allowItemRejection=false] Allows the onItem\n * function to return a Boolean to accept or reject the current item\n * @returns {IDBTransaction} The transaction used for this operation.\n */\n iterate: function (onItem, options) {\n options = mixin({\n index: null,\n order: 'ASC',\n autoContinue: true,\n filterDuplicates: false,\n keyRange: null,\n writeAccess: false,\n onEnd: null,\n onError: defaultErrorHandler,\n limit: Infinity,\n offset: 0,\n allowItemRejection: false\n }, options || {});\n\n var directionType = options.order.toLowerCase() == 'desc' ? 'PREV' : 'NEXT';\n if (options.filterDuplicates) {\n directionType += '_NO_DUPLICATE';\n }\n\n var hasSuccess = false;\n var cursorTransaction = this.db.transaction([this.storeName], this.consts[options.writeAccess ? 'READ_WRITE' : 'READ_ONLY']);\n var cursorTarget = cursorTransaction.objectStore(this.storeName);\n if (options.index) {\n cursorTarget = cursorTarget.index(options.index);\n }\n var recordCount = 0;\n\n cursorTransaction.oncomplete = function () {\n if (!hasSuccess) {\n options.onError(null);\n return;\n }\n if (options.onEnd) {\n options.onEnd();\n } else {\n onItem(null);\n }\n };\n cursorTransaction.onabort = options.onError;\n cursorTransaction.onerror = options.onError;\n\n var cursorRequest = cursorTarget.openCursor(options.keyRange, this.consts[directionType]);\n cursorRequest.onerror = options.onError;\n cursorRequest.onsuccess = function (event) {\n var cursor = event.target.result;\n if (cursor) {\n if (options.offset) {\n cursor.advance(options.offset);\n options.offset = 0;\n } else {\n var onItemReturn = onItem(cursor.value, cursor, cursorTransaction);\n if (!options.allowItemRejection || onItemReturn !== false) {\n recordCount++;\n }\n if (options.autoContinue) {\n if (recordCount + options.offset < options.limit) {\n cursor['continue']();\n } else {\n hasSuccess = true;\n }\n }\n }\n } else {\n hasSuccess = true;\n }\n };\n\n return cursorTransaction;\n },\n\n /**\n * Runs a query against the store and passes an array containing matched\n * objects to the success handler.\n *\n * @param {Function} onSuccess A callback to be called when the operation\n * was successful.\n * @param {Object} [options] An object defining specific options\n * @param {String} [options.index=null] A name of an IDBIndex to operate on\n * @param {String} [options.order=ASC] The order in which to provide the\n * results, can be 'DESC' or 'ASC'\n * @param {Boolean} [options.filterDuplicates=false] Whether to exclude\n * duplicate matches\n * @param {IDBKeyRange} [options.keyRange=null] An IDBKeyRange to use\n * @param {Function} [options.onError=throw] A callback to be called\n * if an error occurred during the operation.\n * @param {Number} [options.limit=Infinity] Limit the number of returned\n * results to this number\n * @param {Number} [options.offset=0] Skip the provided number of results\n * in the resultset\n * @param {Function} [options.filter=null] A custom filter function to\n * apply to query resuts before returning. Must return `false` to reject\n * an item. Can be combined with keyRanges.\n * @returns {IDBTransaction} The transaction used for this operation.\n */\n query: function (onSuccess, options) {\n var result = [],\n processedItems = 0;\n options = options || {};\n options.autoContinue = true;\n options.writeAccess = false;\n options.allowItemRejection = !!options.filter;\n options.onEnd = function () {\n onSuccess(result, processedItems);\n };\n return this.iterate(function (item) {\n processedItems++;\n var accept = options.filter ? options.filter(item) : true;\n if (accept !== false) {\n result.push(item);\n }\n return accept;\n }, options);\n },\n\n /**\n *\n * Runs a query against the store, but only returns the number of matches\n * instead of the matches itself.\n *\n * @param {Function} onSuccess A callback to be called if the opration\n * was successful.\n * @param {Object} [options] An object defining specific options\n * @param {String} [options.index=null] A name of an IDBIndex to operate on\n * @param {IDBKeyRange} [options.keyRange=null] An IDBKeyRange to use\n * @param {Function} [options.onError=throw] A callback to be called if an error\n * occurred during the operation.\n * @returns {IDBTransaction} The transaction used for this operation.\n */\n count: function (onSuccess, options) {\n\n options = mixin({\n index: null,\n keyRange: null\n }, options || {});\n\n var onError = options.onError || defaultErrorHandler;\n\n var hasSuccess = false,\n result = null;\n\n var cursorTransaction = this.db.transaction([this.storeName], this.consts.READ_ONLY);\n cursorTransaction.oncomplete = function () {\n var callback = hasSuccess ? onSuccess : onError;\n callback(result);\n };\n cursorTransaction.onabort = onError;\n cursorTransaction.onerror = onError;\n\n var cursorTarget = cursorTransaction.objectStore(this.storeName);\n if (options.index) {\n cursorTarget = cursorTarget.index(options.index);\n }\n var countRequest = cursorTarget.count(options.keyRange);\n countRequest.onsuccess = function (evt) {\n hasSuccess = true;\n result = evt.target.result;\n };\n countRequest.onError = onError;\n\n return cursorTransaction;\n },\n\n /**************/\n /* key ranges */\n /**************/\n\n /**\n * Creates a key range using specified options. This key range can be\n * handed over to the count() and iterate() methods.\n *\n * Note: You must provide at least one or both of \"lower\" or \"upper\" value.\n *\n * @param {Object} options The options for the key range to create\n * @param {*} [options.lower] The lower bound\n * @param {Boolean} [options.excludeLower] Whether to exclude the lower\n * bound passed in options.lower from the key range\n * @param {*} [options.upper] The upper bound\n * @param {Boolean} [options.excludeUpper] Whether to exclude the upper\n * bound passed in options.upper from the key range\n * @param {*} [options.only] A single key value. Use this if you need a key\n * range that only includes one value for a key. Providing this\n * property invalidates all other properties.\n * @return {IDBKeyRange} The IDBKeyRange representing the specified options\n */\n makeKeyRange: function (options) {\n /*jshint onecase:true */\n var keyRange,\n hasLower = typeof options.lower != 'undefined',\n hasUpper = typeof options.upper != 'undefined',\n isOnly = typeof options.only != 'undefined';\n\n switch (true) {\n case isOnly:\n keyRange = this.keyRange.only(options.only);\n break;\n case hasLower && hasUpper:\n keyRange = this.keyRange.bound(options.lower, options.upper, options.excludeLower, options.excludeUpper);\n break;\n case hasLower:\n keyRange = this.keyRange.lowerBound(options.lower, options.excludeLower);\n break;\n case hasUpper:\n keyRange = this.keyRange.upperBound(options.upper, options.excludeUpper);\n break;\n default:\n throw new Error('Cannot create KeyRange. Provide one or both of \"lower\" or \"upper\" value, or an \"only\" value.');\n }\n\n return keyRange;\n\n }\n\n };\n\n /** helpers **/\n var empty = {};\n\n function mixin (target, source) {\n var name, s;\n for (name in source) {\n s = source[name];\n if (s !== empty[name] && s !== target[name]) {\n target[name] = s;\n }\n }\n return target;\n }\n\n function hasVersionError(errorEvent) {\n if ('error' in errorEvent.target) {\n return errorEvent.target.error.name == 'VersionError';\n } else if ('errorCode' in errorEvent.target) {\n return errorEvent.target.errorCode == 12;\n }\n return false;\n }\n\n IDBStore.prototype = proto;\n IDBStore.version = proto.version;\n\n return IDBStore;\n\n}, this);\n","/*! ieee754. BSD-3-Clause License. Feross Aboukhadijeh */\nexports.read = function (buffer, offset, isLE, mLen, nBytes) {\n var e, m\n var eLen = (nBytes * 8) - mLen - 1\n var eMax = (1 << eLen) - 1\n var eBias = eMax >> 1\n var nBits = -7\n var i = isLE ? (nBytes - 1) : 0\n var d = isLE ? -1 : 1\n var s = buffer[offset + i]\n\n i += d\n\n e = s & ((1 << (-nBits)) - 1)\n s >>= (-nBits)\n nBits += eLen\n for (; nBits > 0; e = (e * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n m = e & ((1 << (-nBits)) - 1)\n e >>= (-nBits)\n nBits += mLen\n for (; nBits > 0; m = (m * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n if (e === 0) {\n e = 1 - eBias\n } else if (e === eMax) {\n return m ? NaN : ((s ? -1 : 1) * Infinity)\n } else {\n m = m + Math.pow(2, mLen)\n e = e - eBias\n }\n return (s ? -1 : 1) * m * Math.pow(2, e - mLen)\n}\n\nexports.write = function (buffer, value, offset, isLE, mLen, nBytes) {\n var e, m, c\n var eLen = (nBytes * 8) - mLen - 1\n var eMax = (1 << eLen) - 1\n var eBias = eMax >> 1\n var rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0)\n var i = isLE ? 0 : (nBytes - 1)\n var d = isLE ? 1 : -1\n var s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0\n\n value = Math.abs(value)\n\n if (isNaN(value) || value === Infinity) {\n m = isNaN(value) ? 1 : 0\n e = eMax\n } else {\n e = Math.floor(Math.log(value) / Math.LN2)\n if (value * (c = Math.pow(2, -e)) < 1) {\n e--\n c *= 2\n }\n if (e + eBias >= 1) {\n value += rt / c\n } else {\n value += rt * Math.pow(2, 1 - eBias)\n }\n if (value * c >= 2) {\n e++\n c /= 2\n }\n\n if (e + eBias >= eMax) {\n m = 0\n e = eMax\n } else if (e + eBias >= 1) {\n m = ((value * c) - 1) * Math.pow(2, mLen)\n e = e + eBias\n } else {\n m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen)\n e = 0\n }\n }\n\n for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {}\n\n e = (e << mLen) | m\n eLen += mLen\n for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {}\n\n buffer[offset + i - d] |= s * 128\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nfunction stringifiable(obj) {\n // Safely stringify Object.create(null)\n /* istanbul ignore next */\n return typeof obj === 'object' && !('toString' in obj) ?\n Object.prototype.toString.call(obj).slice(8, -1) :\n obj;\n}\nvar isProduction = typeof process === 'object' && process.env.NODE_ENV === 'production';\nfunction invariant(condition, message) {\n if (!condition) {\n /* istanbul ignore next */\n if (isProduction) {\n throw new Error('Invariant failed');\n }\n throw new Error(message());\n }\n}\nexports.invariant = invariant;\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\nvar splice = Array.prototype.splice;\nvar toString = Object.prototype.toString;\nfunction type(obj) {\n return toString.call(obj).slice(8, -1);\n}\nvar assign = Object.assign || /* istanbul ignore next */ (function (target, source) {\n getAllKeys(source).forEach(function (key) {\n if (hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n });\n return target;\n});\nvar getAllKeys = typeof Object.getOwnPropertySymbols === 'function'\n ? function (obj) { return Object.keys(obj).concat(Object.getOwnPropertySymbols(obj)); }\n /* istanbul ignore next */\n : function (obj) { return Object.keys(obj); };\nfunction copy(object) {\n return Array.isArray(object)\n ? assign(object.constructor(object.length), object)\n : (type(object) === 'Map')\n ? new Map(object)\n : (type(object) === 'Set')\n ? new Set(object)\n : (object && typeof object === 'object')\n ? assign(Object.create(Object.getPrototypeOf(object)), object)\n /* istanbul ignore next */\n : object;\n}\nvar Context = /** @class */ (function () {\n function Context() {\n this.commands = assign({}, defaultCommands);\n this.update = this.update.bind(this);\n // Deprecated: update.extend, update.isEquals and update.newContext\n this.update.extend = this.extend = this.extend.bind(this);\n this.update.isEquals = function (x, y) { return x === y; };\n this.update.newContext = function () { return new Context().update; };\n }\n Object.defineProperty(Context.prototype, \"isEquals\", {\n get: function () {\n return this.update.isEquals;\n },\n set: function (value) {\n this.update.isEquals = value;\n },\n enumerable: true,\n configurable: true\n });\n Context.prototype.extend = function (directive, fn) {\n this.commands[directive] = fn;\n };\n Context.prototype.update = function (object, $spec) {\n var _this = this;\n var spec = (typeof $spec === 'function') ? { $apply: $spec } : $spec;\n if (!(Array.isArray(object) && Array.isArray(spec))) {\n invariant(!Array.isArray(spec), function () { return \"update(): You provided an invalid spec to update(). The spec may \" +\n \"not contain an array except as the value of $set, $push, $unshift, \" +\n \"$splice or any custom command allowing an array value.\"; });\n }\n invariant(typeof spec === 'object' && spec !== null, function () { return \"update(): You provided an invalid spec to update(). The spec and \" +\n \"every included key path must be plain objects containing one of the \" +\n (\"following commands: \" + Object.keys(_this.commands).join(', ') + \".\"); });\n var nextObject = object;\n getAllKeys(spec).forEach(function (key) {\n if (hasOwnProperty.call(_this.commands, key)) {\n var objectWasNextObject = object === nextObject;\n nextObject = _this.commands[key](spec[key], nextObject, spec, object);\n if (objectWasNextObject && _this.isEquals(nextObject, object)) {\n nextObject = object;\n }\n }\n else {\n var nextValueForKey = type(object) === 'Map'\n ? _this.update(object.get(key), spec[key])\n : _this.update(object[key], spec[key]);\n var nextObjectValue = type(nextObject) === 'Map'\n ? nextObject.get(key)\n : nextObject[key];\n if (!_this.isEquals(nextValueForKey, nextObjectValue)\n || typeof nextValueForKey === 'undefined'\n && !hasOwnProperty.call(object, key)) {\n if (nextObject === object) {\n nextObject = copy(object);\n }\n if (type(nextObject) === 'Map') {\n nextObject.set(key, nextValueForKey);\n }\n else {\n nextObject[key] = nextValueForKey;\n }\n }\n }\n });\n return nextObject;\n };\n return Context;\n}());\nexports.Context = Context;\nvar defaultCommands = {\n $push: function (value, nextObject, spec) {\n invariantPushAndUnshift(nextObject, spec, '$push');\n return value.length ? nextObject.concat(value) : nextObject;\n },\n $unshift: function (value, nextObject, spec) {\n invariantPushAndUnshift(nextObject, spec, '$unshift');\n return value.length ? value.concat(nextObject) : nextObject;\n },\n $splice: function (value, nextObject, spec, originalObject) {\n invariantSplices(nextObject, spec);\n value.forEach(function (args) {\n invariantSplice(args);\n if (nextObject === originalObject && args.length) {\n nextObject = copy(originalObject);\n }\n splice.apply(nextObject, args);\n });\n return nextObject;\n },\n $set: function (value, _nextObject, spec) {\n invariantSet(spec);\n return value;\n },\n $toggle: function (targets, nextObject) {\n invariantSpecArray(targets, '$toggle');\n var nextObjectCopy = targets.length ? copy(nextObject) : nextObject;\n targets.forEach(function (target) {\n nextObjectCopy[target] = !nextObject[target];\n });\n return nextObjectCopy;\n },\n $unset: function (value, nextObject, _spec, originalObject) {\n invariantSpecArray(value, '$unset');\n value.forEach(function (key) {\n if (Object.hasOwnProperty.call(nextObject, key)) {\n if (nextObject === originalObject) {\n nextObject = copy(originalObject);\n }\n delete nextObject[key];\n }\n });\n return nextObject;\n },\n $add: function (values, nextObject, _spec, originalObject) {\n invariantMapOrSet(nextObject, '$add');\n invariantSpecArray(values, '$add');\n if (type(nextObject) === 'Map') {\n values.forEach(function (_a) {\n var key = _a[0], value = _a[1];\n if (nextObject === originalObject && nextObject.get(key) !== value) {\n nextObject = copy(originalObject);\n }\n nextObject.set(key, value);\n });\n }\n else {\n values.forEach(function (value) {\n if (nextObject === originalObject && !nextObject.has(value)) {\n nextObject = copy(originalObject);\n }\n nextObject.add(value);\n });\n }\n return nextObject;\n },\n $remove: function (value, nextObject, _spec, originalObject) {\n invariantMapOrSet(nextObject, '$remove');\n invariantSpecArray(value, '$remove');\n value.forEach(function (key) {\n if (nextObject === originalObject && nextObject.has(key)) {\n nextObject = copy(originalObject);\n }\n nextObject.delete(key);\n });\n return nextObject;\n },\n $merge: function (value, nextObject, _spec, originalObject) {\n invariantMerge(nextObject, value);\n getAllKeys(value).forEach(function (key) {\n if (value[key] !== nextObject[key]) {\n if (nextObject === originalObject) {\n nextObject = copy(originalObject);\n }\n nextObject[key] = value[key];\n }\n });\n return nextObject;\n },\n $apply: function (value, original) {\n invariantApply(value);\n return value(original);\n },\n};\nvar defaultContext = new Context();\nexports.isEquals = defaultContext.update.isEquals;\nexports.extend = defaultContext.extend;\nexports.default = defaultContext.update;\n// @ts-ignore\nexports.default.default = module.exports = assign(exports.default, exports);\n// invariants\nfunction invariantPushAndUnshift(value, spec, command) {\n invariant(Array.isArray(value), function () { return \"update(): expected target of \" + stringifiable(command) + \" to be an array; got \" + stringifiable(value) + \".\"; });\n invariantSpecArray(spec[command], command);\n}\nfunction invariantSpecArray(spec, command) {\n invariant(Array.isArray(spec), function () { return \"update(): expected spec of \" + stringifiable(command) + \" to be an array; got \" + stringifiable(spec) + \". \" +\n \"Did you forget to wrap your parameter in an array?\"; });\n}\nfunction invariantSplices(value, spec) {\n invariant(Array.isArray(value), function () { return \"Expected $splice target to be an array; got \" + stringifiable(value); });\n invariantSplice(spec.$splice);\n}\nfunction invariantSplice(value) {\n invariant(Array.isArray(value), function () { return \"update(): expected spec of $splice to be an array of arrays; got \" + stringifiable(value) + \". \" +\n \"Did you forget to wrap your parameters in an array?\"; });\n}\nfunction invariantApply(fn) {\n invariant(typeof fn === 'function', function () { return \"update(): expected spec of $apply to be a function; got \" + stringifiable(fn) + \".\"; });\n}\nfunction invariantSet(spec) {\n invariant(Object.keys(spec).length === 1, function () { return \"Cannot have more than one key in an object with $set\"; });\n}\nfunction invariantMerge(target, specValue) {\n invariant(specValue && typeof specValue === 'object', function () { return \"update(): $merge expects a spec of type 'object'; got \" + stringifiable(specValue); });\n invariant(target && typeof target === 'object', function () { return \"update(): $merge expects a target of type 'object'; got \" + stringifiable(target); });\n}\nfunction invariantMapOrSet(target, command) {\n var typeOfTarget = type(target);\n invariant(typeOfTarget === 'Map' || typeOfTarget === 'Set', function () { return \"update(): \" + stringifiable(command) + \" expects a target of type Set or Map; got \" + stringifiable(typeOfTarget); });\n}\n","if (typeof Object.create === 'function') {\n // implementation from standard node.js 'util' module\n module.exports = function inherits(ctor, superCtor) {\n if (superCtor) {\n ctor.super_ = superCtor\n ctor.prototype = Object.create(superCtor.prototype, {\n constructor: {\n value: ctor,\n enumerable: false,\n writable: true,\n configurable: true\n }\n })\n }\n };\n} else {\n // old school shim for old browsers\n module.exports = function inherits(ctor, superCtor) {\n if (superCtor) {\n ctor.super_ = superCtor\n var TempCtor = function () {}\n TempCtor.prototype = superCtor.prototype\n ctor.prototype = new TempCtor()\n ctor.prototype.constructor = ctor\n }\n }\n}\n","'use strict';\n\nvar hasToStringTag = require('has-tostringtag/shams')();\nvar callBound = require('call-bind/callBound');\n\nvar $toString = callBound('Object.prototype.toString');\n\nvar isStandardArguments = function isArguments(value) {\n\tif (hasToStringTag && value && typeof value === 'object' && Symbol.toStringTag in value) {\n\t\treturn false;\n\t}\n\treturn $toString(value) === '[object Arguments]';\n};\n\nvar isLegacyArguments = function isArguments(value) {\n\tif (isStandardArguments(value)) {\n\t\treturn true;\n\t}\n\treturn value !== null &&\n\t\ttypeof value === 'object' &&\n\t\ttypeof value.length === 'number' &&\n\t\tvalue.length >= 0 &&\n\t\t$toString(value) !== '[object Array]' &&\n\t\t$toString(value.callee) === '[object Function]';\n};\n\nvar supportsStandardArguments = (function () {\n\treturn isStandardArguments(arguments);\n}());\n\nisStandardArguments.isLegacyArguments = isLegacyArguments; // for tests\n\nmodule.exports = supportsStandardArguments ? isStandardArguments : isLegacyArguments;\n","/*!\n * is-extendable \n *\n * Copyright (c) 2015, Jon Schlinkert.\n * Licensed under the MIT License.\n */\n\n'use strict';\n\nmodule.exports = function isExtendable(val) {\n return typeof val !== 'undefined' && val !== null\n && (typeof val === 'object' || typeof val === 'function');\n};\n","'use strict';\n\nvar toStr = Object.prototype.toString;\nvar fnToStr = Function.prototype.toString;\nvar isFnRegex = /^\\s*(?:function)?\\*/;\nvar hasToStringTag = require('has-tostringtag/shams')();\nvar getProto = Object.getPrototypeOf;\nvar getGeneratorFunc = function () { // eslint-disable-line consistent-return\n\tif (!hasToStringTag) {\n\t\treturn false;\n\t}\n\ttry {\n\t\treturn Function('return function*() {}')();\n\t} catch (e) {\n\t}\n};\nvar GeneratorFunction;\n\nmodule.exports = function isGeneratorFunction(fn) {\n\tif (typeof fn !== 'function') {\n\t\treturn false;\n\t}\n\tif (isFnRegex.test(fnToStr.call(fn))) {\n\t\treturn true;\n\t}\n\tif (!hasToStringTag) {\n\t\tvar str = toStr.call(fn);\n\t\treturn str === '[object GeneratorFunction]';\n\t}\n\tif (!getProto) {\n\t\treturn false;\n\t}\n\tif (typeof GeneratorFunction === 'undefined') {\n\t\tvar generatorFunc = getGeneratorFunc();\n\t\tGeneratorFunction = generatorFunc ? getProto(generatorFunc) : false;\n\t}\n\treturn getProto(fn) === GeneratorFunction;\n};\n","/*!\n * is-plain-object \n *\n * Copyright (c) 2014-2017, Jon Schlinkert.\n * Released under the MIT License.\n */\n\n'use strict';\n\nvar isObject = require('isobject');\n\nfunction isObjectObject(o) {\n return isObject(o) === true\n && Object.prototype.toString.call(o) === '[object Object]';\n}\n\nmodule.exports = function isPlainObject(o) {\n var ctor,prot;\n\n if (isObjectObject(o) === false) return false;\n\n // If has modified constructor\n ctor = o.constructor;\n if (typeof ctor !== 'function') return false;\n\n // If has modified prototype\n prot = ctor.prototype;\n if (isObjectObject(prot) === false) return false;\n\n // If constructor does not have an Object-specific method\n if (prot.hasOwnProperty('isPrototypeOf') === false) {\n return false;\n }\n\n // Most likely a plain Object\n return true;\n};\n","'use strict';\n\nvar forEach = require('foreach');\nvar availableTypedArrays = require('available-typed-arrays');\nvar callBound = require('call-bind/callBound');\n\nvar $toString = callBound('Object.prototype.toString');\nvar hasToStringTag = require('has-tostringtag/shams')();\n\nvar g = typeof globalThis === 'undefined' ? global : globalThis;\nvar typedArrays = availableTypedArrays();\n\nvar $indexOf = callBound('Array.prototype.indexOf', true) || function indexOf(array, value) {\n\tfor (var i = 0; i < array.length; i += 1) {\n\t\tif (array[i] === value) {\n\t\t\treturn i;\n\t\t}\n\t}\n\treturn -1;\n};\nvar $slice = callBound('String.prototype.slice');\nvar toStrTags = {};\nvar gOPD = require('es-abstract/helpers/getOwnPropertyDescriptor');\nvar getPrototypeOf = Object.getPrototypeOf; // require('getprototypeof');\nif (hasToStringTag && gOPD && getPrototypeOf) {\n\tforEach(typedArrays, function (typedArray) {\n\t\tvar arr = new g[typedArray]();\n\t\tif (Symbol.toStringTag in arr) {\n\t\t\tvar proto = getPrototypeOf(arr);\n\t\t\tvar descriptor = gOPD(proto, Symbol.toStringTag);\n\t\t\tif (!descriptor) {\n\t\t\t\tvar superProto = getPrototypeOf(proto);\n\t\t\t\tdescriptor = gOPD(superProto, Symbol.toStringTag);\n\t\t\t}\n\t\t\ttoStrTags[typedArray] = descriptor.get;\n\t\t}\n\t});\n}\n\nvar tryTypedArrays = function tryAllTypedArrays(value) {\n\tvar anyTrue = false;\n\tforEach(toStrTags, function (getter, typedArray) {\n\t\tif (!anyTrue) {\n\t\t\ttry {\n\t\t\t\tanyTrue = getter.call(value) === typedArray;\n\t\t\t} catch (e) { /**/ }\n\t\t}\n\t});\n\treturn anyTrue;\n};\n\nmodule.exports = function isTypedArray(value) {\n\tif (!value || typeof value !== 'object') { return false; }\n\tif (!hasToStringTag || !(Symbol.toStringTag in value)) {\n\t\tvar tag = $slice($toString(value), 8, -1);\n\t\treturn $indexOf(typedArrays, tag) > -1;\n\t}\n\tif (!gOPD) { return false; }\n\treturn tryTypedArrays(value);\n};\n","\n/**!\n * is\n * the definitive JavaScript type testing library\n * \n * @copyright 2013 Enrico Marino\n * @license MIT\n */\n\nvar objProto = Object.prototype;\nvar owns = objProto.hasOwnProperty;\nvar toString = objProto.toString;\nvar isActualNaN = function (value) {\n return value !== value;\n};\nvar NON_HOST_TYPES = {\n \"boolean\": 1,\n \"number\": 1,\n \"string\": 1,\n \"undefined\": 1\n};\n\n/**\n * Expose `is`\n */\n\nvar is = module.exports = {};\n\n/**\n * Test general.\n */\n\n/**\n * is.type\n * Test if `value` is a type of `type`.\n *\n * @param {Mixed} value value to test\n * @param {String} type type\n * @return {Boolean} true if `value` is a type of `type`, false otherwise\n * @api public\n */\n\nis.a =\nis.type = function (value, type) {\n return typeof value === type;\n};\n\n/**\n * is.defined\n * Test if `value` is defined.\n *\n * @param {Mixed} value value to test\n * @return {Boolean} true if 'value' is defined, false otherwise\n * @api public\n */\n\nis.defined = function (value) {\n return value !== undefined;\n};\n\n/**\n * is.empty\n * Test if `value` is empty.\n *\n * @param {Mixed} value value to test\n * @return {Boolean} true if `value` is empty, false otherwise\n * @api public\n */\n\nis.empty = function (value) {\n var type = toString.call(value);\n var key;\n\n if ('[object Array]' === type || '[object Arguments]' === type) {\n return value.length === 0;\n }\n\n if ('[object Object]' === type) {\n for (key in value) if (owns.call(value, key)) return false;\n return true;\n }\n\n if ('[object String]' === type) {\n return '' === value;\n }\n\n return false;\n};\n\n/**\n * is.equal\n * Test if `value` is equal to `other`.\n *\n * @param {Mixed} value value to test\n * @param {Mixed} other value to compare with\n * @return {Boolean} true if `value` is equal to `other`, false otherwise\n */\n\nis.equal = function (value, other) {\n var type = toString.call(value)\n var key;\n\n if (type !== toString.call(other)) {\n return false;\n }\n\n if ('[object Object]' === type) {\n for (key in value) {\n if (!is.equal(value[key], other[key])) {\n return false;\n }\n }\n return true;\n }\n\n if ('[object Array]' === type) {\n key = value.length;\n if (key !== other.length) {\n return false;\n }\n while (--key) {\n if (!is.equal(value[key], other[key])) {\n return false;\n }\n }\n return true;\n }\n\n if ('[object Function]' === type) {\n return value.prototype === other.prototype;\n }\n\n if ('[object Date]' === type) {\n return value.getTime() === other.getTime();\n }\n\n return value === other;\n};\n\n/**\n * is.hosted\n * Test if `value` is hosted by `host`.\n *\n * @param {Mixed} value to test\n * @param {Mixed} host host to test with\n * @return {Boolean} true if `value` is hosted by `host`, false otherwise\n * @api public\n */\n\nis.hosted = function (value, host) {\n var type = typeof host[value];\n return type === 'object' ? !!host[value] : !NON_HOST_TYPES[type];\n};\n\n/**\n * is.instance\n * Test if `value` is an instance of `constructor`.\n *\n * @param {Mixed} value value to test\n * @return {Boolean} true if `value` is an instance of `constructor`\n * @api public\n */\n\nis.instance = is['instanceof'] = function (value, constructor) {\n return value instanceof constructor;\n};\n\n/**\n * is.null\n * Test if `value` is null.\n *\n * @param {Mixed} value value to test\n * @return {Boolean} true if `value` is null, false otherwise\n * @api public\n */\n\nis['null'] = function (value) {\n return value === null;\n};\n\n/**\n * is.undefined\n * Test if `value` is undefined.\n *\n * @param {Mixed} value value to test\n * @return {Boolean} true if `value` is undefined, false otherwise\n * @api public\n */\n\nis.undefined = function (value) {\n return value === undefined;\n};\n\n/**\n * Test arguments.\n */\n\n/**\n * is.arguments\n * Test if `value` is an arguments object.\n *\n * @param {Mixed} value value to test\n * @return {Boolean} true if `value` is an arguments object, false otherwise\n * @api public\n */\n\nis.arguments = function (value) {\n var isStandardArguments = '[object Arguments]' === toString.call(value);\n var isOldArguments = !is.array(value) && is.arraylike(value) && is.object(value) && is.fn(value.callee);\n return isStandardArguments || isOldArguments;\n};\n\n/**\n * Test array.\n */\n\n/**\n * is.array\n * Test if 'value' is an array.\n *\n * @param {Mixed} value value to test\n * @return {Boolean} true if `value` is an array, false otherwise\n * @api public\n */\n\nis.array = function (value) {\n return '[object Array]' === toString.call(value);\n};\n\n/**\n * is.arguments.empty\n * Test if `value` is an empty arguments object.\n *\n * @param {Mixed} value value to test\n * @return {Boolean} true if `value` is an empty arguments object, false otherwise\n * @api public\n */\nis.arguments.empty = function (value) {\n return is.arguments(value) && value.length === 0;\n};\n\n/**\n * is.array.empty\n * Test if `value` is an empty array.\n *\n * @param {Mixed} value value to test\n * @return {Boolean} true if `value` is an empty array, false otherwise\n * @api public\n */\nis.array.empty = function (value) {\n return is.array(value) && value.length === 0;\n};\n\n/**\n * is.arraylike\n * Test if `value` is an arraylike object.\n *\n * @param {Mixed} value value to test\n * @return {Boolean} true if `value` is an arguments object, false otherwise\n * @api public\n */\n\nis.arraylike = function (value) {\n return !!value && !is.boolean(value)\n && owns.call(value, 'length')\n && isFinite(value.length)\n && is.number(value.length)\n && value.length >= 0;\n};\n\n/**\n * Test boolean.\n */\n\n/**\n * is.boolean\n * Test if `value` is a boolean.\n *\n * @param {Mixed} value value to test\n * @return {Boolean} true if `value` is a boolean, false otherwise\n * @api public\n */\n\nis.boolean = function (value) {\n return '[object Boolean]' === toString.call(value);\n};\n\n/**\n * is.false\n * Test if `value` is false.\n *\n * @param {Mixed} value value to test\n * @return {Boolean} true if `value` is false, false otherwise\n * @api public\n */\n\nis['false'] = function (value) {\n return is.boolean(value) && (value === false || value.valueOf() === false);\n};\n\n/**\n * is.true\n * Test if `value` is true.\n *\n * @param {Mixed} value value to test\n * @return {Boolean} true if `value` is true, false otherwise\n * @api public\n */\n\nis['true'] = function (value) {\n return is.boolean(value) && (value === true || value.valueOf() === true);\n};\n\n/**\n * Test date.\n */\n\n/**\n * is.date\n * Test if `value` is a date.\n *\n * @param {Mixed} value value to test\n * @return {Boolean} true if `value` is a date, false otherwise\n * @api public\n */\n\nis.date = function (value) {\n return '[object Date]' === toString.call(value);\n};\n\n/**\n * Test element.\n */\n\n/**\n * is.element\n * Test if `value` is an html element.\n *\n * @param {Mixed} value value to test\n * @return {Boolean} true if `value` is an HTML Element, false otherwise\n * @api public\n */\n\nis.element = function (value) {\n return value !== undefined\n && typeof HTMLElement !== 'undefined'\n && value instanceof HTMLElement\n && value.nodeType === 1;\n};\n\n/**\n * Test error.\n */\n\n/**\n * is.error\n * Test if `value` is an error object.\n *\n * @param {Mixed} value value to test\n * @return {Boolean} true if `value` is an error object, false otherwise\n * @api public\n */\n\nis.error = function (value) {\n return '[object Error]' === toString.call(value);\n};\n\n/**\n * Test function.\n */\n\n/**\n * is.fn / is.function (deprecated)\n * Test if `value` is a function.\n *\n * @param {Mixed} value value to test\n * @return {Boolean} true if `value` is a function, false otherwise\n * @api public\n */\n\nis.fn = is['function'] = function (value) {\n var isAlert = typeof window !== 'undefined' && value === window.alert;\n return isAlert || '[object Function]' === toString.call(value);\n};\n\n/**\n * Test number.\n */\n\n/**\n * is.number\n * Test if `value` is a number.\n *\n * @param {Mixed} value value to test\n * @return {Boolean} true if `value` is a number, false otherwise\n * @api public\n */\n\nis.number = function (value) {\n return '[object Number]' === toString.call(value);\n};\n\n/**\n * is.infinite\n * Test if `value` is positive or negative infinity.\n *\n * @param {Mixed} value value to test\n * @return {Boolean} true if `value` is positive or negative Infinity, false otherwise\n * @api public\n */\nis.infinite = function (value) {\n return value === Infinity || value === -Infinity;\n};\n\n/**\n * is.decimal\n * Test if `value` is a decimal number.\n *\n * @param {Mixed} value value to test\n * @return {Boolean} true if `value` is a decimal number, false otherwise\n * @api public\n */\n\nis.decimal = function (value) {\n return is.number(value) && !isActualNaN(value) && !is.infinite(value) && value % 1 !== 0;\n};\n\n/**\n * is.divisibleBy\n * Test if `value` is divisible by `n`.\n *\n * @param {Number} value value to test\n * @param {Number} n dividend\n * @return {Boolean} true if `value` is divisible by `n`, false otherwise\n * @api public\n */\n\nis.divisibleBy = function (value, n) {\n var isDividendInfinite = is.infinite(value);\n var isDivisorInfinite = is.infinite(n);\n var isNonZeroNumber = is.number(value) && !isActualNaN(value) && is.number(n) && !isActualNaN(n) && n !== 0;\n return isDividendInfinite || isDivisorInfinite || (isNonZeroNumber && value % n === 0);\n};\n\n/**\n * is.int\n * Test if `value` is an integer.\n *\n * @param value to test\n * @return {Boolean} true if `value` is an integer, false otherwise\n * @api public\n */\n\nis.int = function (value) {\n return is.number(value) && !isActualNaN(value) && value % 1 === 0;\n};\n\n/**\n * is.maximum\n * Test if `value` is greater than 'others' values.\n *\n * @param {Number} value value to test\n * @param {Array} others values to compare with\n * @return {Boolean} true if `value` is greater than `others` values\n * @api public\n */\n\nis.maximum = function (value, others) {\n if (isActualNaN(value)) {\n throw new TypeError('NaN is not a valid value');\n } else if (!is.arraylike(others)) {\n throw new TypeError('second argument must be array-like');\n }\n var len = others.length;\n\n while (--len >= 0) {\n if (value < others[len]) {\n return false;\n }\n }\n\n return true;\n};\n\n/**\n * is.minimum\n * Test if `value` is less than `others` values.\n *\n * @param {Number} value value to test\n * @param {Array} others values to compare with\n * @return {Boolean} true if `value` is less than `others` values\n * @api public\n */\n\nis.minimum = function (value, others) {\n if (isActualNaN(value)) {\n throw new TypeError('NaN is not a valid value');\n } else if (!is.arraylike(others)) {\n throw new TypeError('second argument must be array-like');\n }\n var len = others.length;\n\n while (--len >= 0) {\n if (value > others[len]) {\n return false;\n }\n }\n\n return true;\n};\n\n/**\n * is.nan\n * Test if `value` is not a number.\n *\n * @param {Mixed} value value to test\n * @return {Boolean} true if `value` is not a number, false otherwise\n * @api public\n */\n\nis.nan = function (value) {\n return !is.number(value) || value !== value;\n};\n\n/**\n * is.even\n * Test if `value` is an even number.\n *\n * @param {Number} value value to test\n * @return {Boolean} true if `value` is an even number, false otherwise\n * @api public\n */\n\nis.even = function (value) {\n return is.infinite(value) || (is.number(value) && value === value && value % 2 === 0);\n};\n\n/**\n * is.odd\n * Test if `value` is an odd number.\n *\n * @param {Number} value value to test\n * @return {Boolean} true if `value` is an odd number, false otherwise\n * @api public\n */\n\nis.odd = function (value) {\n return is.infinite(value) || (is.number(value) && value === value && value % 2 !== 0);\n};\n\n/**\n * is.ge\n * Test if `value` is greater than or equal to `other`.\n *\n * @param {Number} value value to test\n * @param {Number} other value to compare with\n * @return {Boolean}\n * @api public\n */\n\nis.ge = function (value, other) {\n if (isActualNaN(value) || isActualNaN(other)) {\n throw new TypeError('NaN is not a valid value');\n }\n return !is.infinite(value) && !is.infinite(other) && value >= other;\n};\n\n/**\n * is.gt\n * Test if `value` is greater than `other`.\n *\n * @param {Number} value value to test\n * @param {Number} other value to compare with\n * @return {Boolean}\n * @api public\n */\n\nis.gt = function (value, other) {\n if (isActualNaN(value) || isActualNaN(other)) {\n throw new TypeError('NaN is not a valid value');\n }\n return !is.infinite(value) && !is.infinite(other) && value > other;\n};\n\n/**\n * is.le\n * Test if `value` is less than or equal to `other`.\n *\n * @param {Number} value value to test\n * @param {Number} other value to compare with\n * @return {Boolean} if 'value' is less than or equal to 'other'\n * @api public\n */\n\nis.le = function (value, other) {\n if (isActualNaN(value) || isActualNaN(other)) {\n throw new TypeError('NaN is not a valid value');\n }\n return !is.infinite(value) && !is.infinite(other) && value <= other;\n};\n\n/**\n * is.lt\n * Test if `value` is less than `other`.\n *\n * @param {Number} value value to test\n * @param {Number} other value to compare with\n * @return {Boolean} if `value` is less than `other`\n * @api public\n */\n\nis.lt = function (value, other) {\n if (isActualNaN(value) || isActualNaN(other)) {\n throw new TypeError('NaN is not a valid value');\n }\n return !is.infinite(value) && !is.infinite(other) && value < other;\n};\n\n/**\n * is.within\n * Test if `value` is within `start` and `finish`.\n *\n * @param {Number} value value to test\n * @param {Number} start lower bound\n * @param {Number} finish upper bound\n * @return {Boolean} true if 'value' is is within 'start' and 'finish'\n * @api public\n */\nis.within = function (value, start, finish) {\n if (isActualNaN(value) || isActualNaN(start) || isActualNaN(finish)) {\n throw new TypeError('NaN is not a valid value');\n } else if (!is.number(value) || !is.number(start) || !is.number(finish)) {\n throw new TypeError('all arguments must be numbers');\n }\n var isAnyInfinite = is.infinite(value) || is.infinite(start) || is.infinite(finish);\n return isAnyInfinite || (value >= start && value <= finish);\n};\n\n/**\n * Test object.\n */\n\n/**\n * is.object\n * Test if `value` is an object.\n *\n * @param {Mixed} value value to test\n * @return {Boolean} true if `value` is an object, false otherwise\n * @api public\n */\n\nis.object = function (value) {\n return value && '[object Object]' === toString.call(value);\n};\n\n/**\n * is.hash\n * Test if `value` is a hash - a plain object literal.\n *\n * @param {Mixed} value value to test\n * @return {Boolean} true if `value` is a hash, false otherwise\n * @api public\n */\n\nis.hash = function (value) {\n return is.object(value) && value.constructor === Object && !value.nodeType && !value.setInterval;\n};\n\n/**\n * Test regexp.\n */\n\n/**\n * is.regexp\n * Test if `value` is a regular expression.\n *\n * @param {Mixed} value value to test\n * @return {Boolean} true if `value` is a regexp, false otherwise\n * @api public\n */\n\nis.regexp = function (value) {\n return '[object RegExp]' === toString.call(value);\n};\n\n/**\n * Test string.\n */\n\n/**\n * is.string\n * Test if `value` is a string.\n *\n * @param {Mixed} value value to test\n * @return {Boolean} true if 'value' is a string, false otherwise\n * @api public\n */\n\nis.string = function (value) {\n return '[object String]' === toString.call(value);\n};\n\n","var toString = {}.toString;\n\nmodule.exports = Array.isArray || function (arr) {\n return toString.call(arr) == '[object Array]';\n};\n","var Buffer = require('buffer').Buffer;\n\nmodule.exports = isBuffer;\n\nfunction isBuffer (o) {\n return Buffer.isBuffer(o)\n || /\\[object (.+Array|Array.+)\\]/.test(Object.prototype.toString.call(o));\n}\n","/*!\n * isobject \n *\n * Copyright (c) 2014-2017, Jon Schlinkert.\n * Released under the MIT License.\n */\n\n'use strict';\n\nmodule.exports = function isObject(val) {\n return val != null && typeof val === 'object' && Array.isArray(val) === false;\n};\n","var Writable = require('readable-stream/writable');\nvar Readable = require('readable-stream/readable');\nvar peek = require('level-peek');\nvar util = require('util');\nvar once = require('once');\n\nvar EMPTY = new Buffer(0);\nvar ENCODER = {\n\tencode: function(data) {\n\t\treturn typeof data === 'string' ? data = new Buffer(data) : data;\n\t},\n\tdecode: function(data) {\n\t\treturn Buffer.isBuffer(data) ? data : new Buffer(data);\n\t},\n\tbuffer: true,\n\ttype: 'raw'\n};\n\nvar noop = function() {};\n\nvar pad = function(n) {\n\tn = n.toString(16);\n\treturn '00000000'.slice(0, -n.length)+n;\n};\n\nvar expand = function(buf, len) {\n\tvar tmp = new Buffer(len);\n\tbuf.copy(tmp);\n\treturn tmp;\n};\n\nmodule.exports = function(db, opts) {\n\tif (!opts) opts = {};\n\n\tvar blobs = {};\n\n\tvar blockSize = opts.blockSize || 65536;\n\tvar maxBatch = opts.batch || 100;\n\tvar blank = new Buffer(blockSize);\n\n\tdb.put('\\x00', 'ignore', noop); // memdown#12 workaround\n\n\tvar reservations = {};\n\tvar mutateBlock = function(key, offset, block, append, cb) {\n\t\tvar release = function() {\n\t\t\tif (!--reservations[key].locks) delete reservations[key];\n\t\t};\n\n\t\tvar onreservation = function(r) {\n\t\t\tr.locks++;\n\n\t\t\tif (!r.block && !offset) {\n\t\t\t\tr.block = block;\n\t\t\t\tcb(null, r.block, release);\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (!r.block) r.block = new Buffer(blockSize);\n\t\t\tif (r.block.length < offset + block.length) r.block = expand(r.block, offset + block.length);\n\n\t\t\tblock.copy(r.block, offset);\n\n\t\t\tif (!append && offset + block.length < r.block.length) r.block = r.block.slice(0, offset+block.length);\n\t\t\tcb(null, r.block, release);\n\t\t};\n\n\t\tif (reservations[key]) return onreservation(reservations[key]);\n\n\t\tdb.get(key, {valueEncoding:ENCODER}, function(err, block) {\n\t\t\tif (err && !err.notFound) return cb(err);\n\t\t\tif (!reservations[key]) reservations[key] = {locks:0, block:block};\n\t\t\tonreservation(reservations[key]);\n\t\t});\n\t};\n\n\tvar WriteStream = function(name, opts) {\n\t\tif (!(this instanceof WriteStream)) return new WriteStream(name, opts);\n\t\tif (!opts) opts = {};\n\n\t\tthis.name = name;\n\t\tthis.blocks = [];\n\t\tthis.batch = [];\n\t\tthis.bytesWritten = 0;\n\t\tthis.truncate = !opts.append;\n\t\tthis.append = opts.append;\n\n\t\tthis._shouldInitAppend = this.append && opts.start === undefined;\n\t\tthis._destroyed = false;\n\t\tthis._init(opts.start || 0);\n\n\t\tWritable.call(this);\n\t};\n\n\tutil.inherits(WriteStream, Writable);\n\n\tWriteStream.prototype._init = function(start) {\n\t\tthis.blockIndex = (start / blockSize) | 0;\n\t\tthis.blockOffset = start - this.blockIndex * blockSize;\n\t\tthis.blockLength = this.blockOffset;\n\t};\n\n\tWriteStream.prototype._flush = function(cb) {\n\t\tif (!this.batch.length) return cb();\n\n\t\tvar key = this.batch[this.batch.length-1].key;\n\t\tvar batch = this.batch;\n\t\tthis.batch = [];\n\n\t\tif (!this.truncate) return db.batch(batch, cb);\n\t\tthis.truncate = false;\n\t\tthis._truncate(batch, key, cb);\n\t};\n\n\tWriteStream.prototype._truncate = function(batch, key, cb) {\n\t\tcb = once(cb);\n\n\t\tvar dels = [];\n\t\tvar keys = db.createKeyStream({\n\t\t\tstart: key,\n\t\t\tend: this.name+'\\xff\\xff'\n\t\t});\n\n\t\tkeys.on('error', cb);\n\n\t\tkeys.on('data', function(key) {\n\t\t\tdels.push({type:'del', key:key});\n\t\t});\n\n\t\tkeys.on('end', function() {\n\t\t\tdels.push.apply(dels, batch);\n\t\t\tdb.batch(dels, cb);\n\t\t});\n\t};\n\n\tWriteStream.prototype._writeBlock = function(cb) {\n\t\tvar block = this.blocks.length === 1 ? this.blocks[0] : Buffer.concat(this.blocks, this.blockLength - this.blockOffset);\n\t\tvar index = this.blockIndex;\n\t\tvar offset = this.blockOffset;\n\t\tvar self = this;\n\n\t\tthis.blockOffset = 0;\n\t\tthis.blockLength = 0;\n\t\tthis.blockIndex++;\n\t\tthis.blocks = [];\n\n\t\tvar key = this.name+'\\xff'+pad(index);\n\n\t\tvar append = function(block, force, cb) {\n\t\t\tif (block.length) {\n\t\t\t\tself.batch.push({\n\t\t\t\t\ttype: 'put',\n\t\t\t\t\tkey: key,\n\t\t\t\t\tvalue: block,\n\t\t\t\t\tvalueEncoding: ENCODER\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tif (!force && self.batch.length < maxBatch) return cb();\n\t\t\treturn self._flush(cb);\n\t\t};\n\n\t\tif (!offset && block.length === blockSize) return append(block, false, cb);\n\t\tif (!offset && !this.append) return append(block, false, cb);\n\n\t\t// partial write\n\t\tmutateBlock(key, offset, block, this.append, function(err, block, release) {\n\t\t\tif (err) return cb(err);\n\t\t\tappend(block, true, function(err) {\n\t\t\t\trelease();\n\t\t\t\tcb(err);\n\t\t\t});\n\t\t});\n\t};\n\n\tWriteStream.prototype._initAppend = function(data, enc, cb) {\n\t\tvar self = this;\n\t\tthis._shouldInitAppend = false;\n\t\tblobs.size(this.name, function(err, size) {\n\t\t\tif (err) return cb(err);\n\t\t\tself._init(size);\n\t\t\tself._write(data, enc, cb);\n\t\t});\n\t};\n\n\tWriteStream.prototype._write = function(data, enc, cb) {\n\t\tif (!data.length || this._destroyed) return cb();\n\t\tif (this._shouldInitAppend) return this._initAppend(data, enc, cb);\n\n\t\tvar self = this;\n\t\tvar overflow;\n\t\tvar free = blockSize - this.blockLength;\n\n\t\tvar done = function(err) {\n\t\t\tif (err) return cb(err);\n\t\t\tif (overflow) return self._write(overflow, enc, cb);\n\t\t\tcb();\n\t\t};\n\n\t\tif (data.length > free) {\n\t\t\toverflow = data.slice(free);\n\t\t\tdata = data.slice(0, free);\n\t\t}\n\n\t\tthis.bytesWritten += data.length;\n\t\tthis.blockLength += data.length;\n\t\tthis.blocks.push(data);\n\n\t\tif (data.length < free) return done();\n\t\tthis._writeBlock(done);\n\t};\n\n\tWriteStream.prototype.destroy = function() {\n\t\tif (this._destroyed) return;\n\t\tthis._destroyed = true;\n\t\tprocess.nextTick(this.emit.bind(this, 'close'));\n\t};\n\n\tWriteStream.prototype.end = function(data) {\n\t\tvar self = this;\n\t\tvar args = arguments;\n\n\t\tif (data && typeof data !== 'function') {\n\t\t\tthis.write(data);\n\t\t\tdata = EMPTY;\n\t\t}\n\n\t\tthis.write(EMPTY, function() {\n\t\t\tself._writeBlock(function(err) {\n\t\t\t\tif (err) return self.emit('error', err);\n\t\t\t\tself._flush(function(err) {\n\t\t\t\t\tif (err) return self.emit('error', err);\n\t\t\t\t\tWritable.prototype.end.apply(self, args);\n\t\t\t\t});\n\t\t\t});\n\t\t});\n\t};\n\n\tvar ReadStream = function(name, opts) {\n\t\tif (!opts) opts = {};\n\n\t\tvar self = this;\n\n\t\tvar start = opts.start || 0;\n\t\tvar blockIndex = (start / blockSize) | 0;\n\t\tvar blockOffset = start - blockIndex * blockSize;\n\t\tvar key = name+'\\xff'+pad(blockIndex);\n\n\t\tthis.name = name;\n\t\tthis._missing = (typeof opts.end === 'number' ? opts.end : Infinity) - start + 1;\n\t\tthis._paused = false;\n\t\tthis._destroyed = false;\n\n\t\tthis._reader = db.createReadStream({\n\t\t\tstart: key,\n\t\t\tend: name+'\\xff\\xff',\n\t\t\tvalueEncoding: ENCODER\n\t\t});\n\n\t\tvar onblock = function(val) {\n\t\t\tkey = name+'\\xff'+pad(++blockIndex);\n\n\t\t\tif (!self._missing) return false;\n\n\t\t\tif (blockOffset) {\n\t\t\t\tval = val.slice(blockOffset);\n\t\t\t\tblockOffset = 0;\n\t\t\t\tif (!val.length) return true;\n\t\t\t}\n\n\t\t\tif (val.length > self._missing) val = val.slice(0, self._missing);\n\n\t\t\tself._missing -= val.length;\n\t\t\tself._pause(!self.push(val));\n\n\t\t\treturn !!self._missing;\n\t\t};\n\n\t\tthis._reader.on('data', function(data) {\n\t\t\twhile (data.key > key) {\n\t\t\t\tif (!onblock(blank)) return;\n\t\t\t}\n\n\t\t\tonblock(data.value);\n\t\t});\n\n\t\tthis._reader.on('error', function(err) {\n\t\t\tself.emit('error', err);\n\t\t});\n\n\t\tthis._reader.on('end', function() {\n\t\t\tself.push(null);\n\t\t});\n\n\t\tReadable.call(this);\n\t};\n\n\tutil.inherits(ReadStream, Readable);\n\n\tReadStream.prototype.destroy = function() {\n\t\tif (this._destroyed) return;\n\t\tthis._destroyed = true;\n\t\tthis._reader.destroy();\n\t\tprocess.nextTick(this.emit.bind(this, 'close'));\n\t};\n\n\tReadStream.prototype._pause = function(paused) {\n\t\tif (this._paused === paused) return;\n\t\tthis._paused = paused;\n\t\tif (this._paused) this._reader.pause();\n\t\telse this._reader.resume();\n\t};\n\n\tReadStream.prototype._read = function() {\n\t\tthis._pause(false);\n\t};\n\n\tblobs.remove = function(name, cb) {\n\t\tcb = once(cb || noop);\n\n\t\tvar batch = [];\n\t\tvar keys = db.createKeyStream({\n\t\t\tstart: name+'\\xff',\n\t\t\tend: name+'\\xff\\xff'\n\t\t});\n\n\t\tkeys.on('error', cb);\n\n\t\tkeys.on('data', function(key) {\n\t\t\tbatch.push({type:'del', key:key});\n\t\t});\n\n\t\tkeys.on('end', function() {\n\t\t\tdb.batch(batch, cb);\n\t\t});\n\t};\n\n\tblobs.size = function(name, cb) {\n\t\tpeek.last(db, {\n\t\t\tstart: name+'\\xff',\n\t\t\tend: name+'\\xff\\xff',\n\t\t\tvalueEncoding:ENCODER\n\t\t}, function(err, latest, val) {\n\t\t\tif (err && err.message === 'range not found') return cb(null, 0);\n\t\t\tif (err) return cb(err);\n\t\t\tif (latest.slice(0, name.length+1) !== name+'\\xff') return cb(null, 0);\n\n\t\t\tcb(null, parseInt(latest.toString().slice(name.length+1), 16) * blockSize + val.length);\n\t\t});\n\t};\n\n\tblobs.write = function(name, data, opts, cb) {\n\t\tif (typeof opts === 'function') return blobs.write(name, data, null, opts);\n\t\tif (!opts) opts = {};\n\t\tif (!cb) cb = noop;\n\n\t\tvar ws = blobs.createWriteStream(name, opts);\n\n\t\tws.on('error', cb);\n\t\tws.on('finish', function() {\n\t\t\tcb();\n\t\t});\n\n\t\tws.write(data);\n\t\tws.end();\n\t}\n\n\tblobs.read = function(name, opts, cb) {\n\t\tif (typeof opts === 'function') return blobs.read(name, null, opts);\n\t\tif (!opts) opts = {};\n\n\t\tvar rs = blobs.createReadStream(name, opts);\n\t\tvar list = [];\n\n\t\trs.on('error', cb);\n\t\trs.on('data', function(data) {\n\t\t\tlist.push(data);\n\t\t});\n\t\trs.on('end', function() {\n\t\t\tcb(null, list.length === 1 ? list[0] : Buffer.concat(list));\n\t\t});\n\t};\n\n\tblobs.createReadStream = function(name, opts) {\n\t\treturn new ReadStream(name, opts);\n\t};\n\n\tblobs.createWriteStream = function(name, opts) {\n\t\treturn new WriteStream(name, opts);\n\t};\n\n\treturn blobs;\n};","module.exports = Array.isArray || function (arr) {\n return Object.prototype.toString.call(arr) == '[object Array]';\n};\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// a duplex stream is just a stream that is both readable and writable.\n// Since JS doesn't have multiple prototypal inheritance, this class\n// prototypally inherits from Readable, and then parasitically from\n// Writable.\n\nmodule.exports = Duplex;\n\n/**/\nvar objectKeys = Object.keys || function (obj) {\n var keys = [];\n for (var key in obj) keys.push(key);\n return keys;\n}\n/**/\n\n\n/**/\nvar util = require('core-util-is');\nutil.inherits = require('inherits');\n/**/\n\nvar Readable = require('./_stream_readable');\nvar Writable = require('./_stream_writable');\n\nutil.inherits(Duplex, Readable);\n\nforEach(objectKeys(Writable.prototype), function(method) {\n if (!Duplex.prototype[method])\n Duplex.prototype[method] = Writable.prototype[method];\n});\n\nfunction Duplex(options) {\n if (!(this instanceof Duplex))\n return new Duplex(options);\n\n Readable.call(this, options);\n Writable.call(this, options);\n\n if (options && options.readable === false)\n this.readable = false;\n\n if (options && options.writable === false)\n this.writable = false;\n\n this.allowHalfOpen = true;\n if (options && options.allowHalfOpen === false)\n this.allowHalfOpen = false;\n\n this.once('end', onend);\n}\n\n// the no-half-open enforcer\nfunction onend() {\n // if we allow half-open state, or if the writable side ended,\n // then we're ok.\n if (this.allowHalfOpen || this._writableState.ended)\n return;\n\n // no more data can be written.\n // But allow more writes to happen in this tick.\n process.nextTick(this.end.bind(this));\n}\n\nfunction forEach (xs, f) {\n for (var i = 0, l = xs.length; i < l; i++) {\n f(xs[i], i);\n }\n}\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// a passthrough stream.\n// basically just the most minimal sort of Transform stream.\n// Every written chunk gets output as-is.\n\nmodule.exports = PassThrough;\n\nvar Transform = require('./_stream_transform');\n\n/**/\nvar util = require('core-util-is');\nutil.inherits = require('inherits');\n/**/\n\nutil.inherits(PassThrough, Transform);\n\nfunction PassThrough(options) {\n if (!(this instanceof PassThrough))\n return new PassThrough(options);\n\n Transform.call(this, options);\n}\n\nPassThrough.prototype._transform = function(chunk, encoding, cb) {\n cb(null, chunk);\n};\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\nmodule.exports = Readable;\n\n/**/\nvar isArray = require('isarray');\n/**/\n\n\n/**/\nvar Buffer = require('buffer').Buffer;\n/**/\n\nReadable.ReadableState = ReadableState;\n\nvar EE = require('events').EventEmitter;\n\n/**/\nif (!EE.listenerCount) EE.listenerCount = function(emitter, type) {\n return emitter.listeners(type).length;\n};\n/**/\n\nvar Stream = require('stream');\n\n/**/\nvar util = require('core-util-is');\nutil.inherits = require('inherits');\n/**/\n\nvar StringDecoder;\n\n\n/**/\nvar debug = require('util');\nif (debug && debug.debuglog) {\n debug = debug.debuglog('stream');\n} else {\n debug = function () {};\n}\n/**/\n\n\nutil.inherits(Readable, Stream);\n\nfunction ReadableState(options, stream) {\n var Duplex = require('./_stream_duplex');\n\n options = options || {};\n\n // the point at which it stops calling _read() to fill the buffer\n // Note: 0 is a valid value, means \"don't call _read preemptively ever\"\n var hwm = options.highWaterMark;\n var defaultHwm = options.objectMode ? 16 : 16 * 1024;\n this.highWaterMark = (hwm || hwm === 0) ? hwm : defaultHwm;\n\n // cast to ints.\n this.highWaterMark = ~~this.highWaterMark;\n\n this.buffer = [];\n this.length = 0;\n this.pipes = null;\n this.pipesCount = 0;\n this.flowing = null;\n this.ended = false;\n this.endEmitted = false;\n this.reading = false;\n\n // a flag to be able to tell if the onwrite cb is called immediately,\n // or on a later tick. We set this to true at first, because any\n // actions that shouldn't happen until \"later\" should generally also\n // not happen before the first write call.\n this.sync = true;\n\n // whenever we return null, then we set a flag to say\n // that we're awaiting a 'readable' event emission.\n this.needReadable = false;\n this.emittedReadable = false;\n this.readableListening = false;\n\n\n // object stream flag. Used to make read(n) ignore n and to\n // make all the buffer merging and length checks go away\n this.objectMode = !!options.objectMode;\n\n if (stream instanceof Duplex)\n this.objectMode = this.objectMode || !!options.readableObjectMode;\n\n // Crypto is kind of old and crusty. Historically, its default string\n // encoding is 'binary' so we have to make this configurable.\n // Everything else in the universe uses 'utf8', though.\n this.defaultEncoding = options.defaultEncoding || 'utf8';\n\n // when piping, we only care about 'readable' events that happen\n // after read()ing all the bytes and not getting any pushback.\n this.ranOut = false;\n\n // the number of writers that are awaiting a drain event in .pipe()s\n this.awaitDrain = 0;\n\n // if true, a maybeReadMore has been scheduled\n this.readingMore = false;\n\n this.decoder = null;\n this.encoding = null;\n if (options.encoding) {\n if (!StringDecoder)\n StringDecoder = require('string_decoder/').StringDecoder;\n this.decoder = new StringDecoder(options.encoding);\n this.encoding = options.encoding;\n }\n}\n\nfunction Readable(options) {\n var Duplex = require('./_stream_duplex');\n\n if (!(this instanceof Readable))\n return new Readable(options);\n\n this._readableState = new ReadableState(options, this);\n\n // legacy\n this.readable = true;\n\n Stream.call(this);\n}\n\n// Manually shove something into the read() buffer.\n// This returns true if the highWaterMark has not been hit yet,\n// similar to how Writable.write() returns true if you should\n// write() some more.\nReadable.prototype.push = function(chunk, encoding) {\n var state = this._readableState;\n\n if (util.isString(chunk) && !state.objectMode) {\n encoding = encoding || state.defaultEncoding;\n if (encoding !== state.encoding) {\n chunk = new Buffer(chunk, encoding);\n encoding = '';\n }\n }\n\n return readableAddChunk(this, state, chunk, encoding, false);\n};\n\n// Unshift should *always* be something directly out of read()\nReadable.prototype.unshift = function(chunk) {\n var state = this._readableState;\n return readableAddChunk(this, state, chunk, '', true);\n};\n\nfunction readableAddChunk(stream, state, chunk, encoding, addToFront) {\n var er = chunkInvalid(state, chunk);\n if (er) {\n stream.emit('error', er);\n } else if (util.isNullOrUndefined(chunk)) {\n state.reading = false;\n if (!state.ended)\n onEofChunk(stream, state);\n } else if (state.objectMode || chunk && chunk.length > 0) {\n if (state.ended && !addToFront) {\n var e = new Error('stream.push() after EOF');\n stream.emit('error', e);\n } else if (state.endEmitted && addToFront) {\n var e = new Error('stream.unshift() after end event');\n stream.emit('error', e);\n } else {\n if (state.decoder && !addToFront && !encoding)\n chunk = state.decoder.write(chunk);\n\n if (!addToFront)\n state.reading = false;\n\n // if we want the data now, just emit it.\n if (state.flowing && state.length === 0 && !state.sync) {\n stream.emit('data', chunk);\n stream.read(0);\n } else {\n // update the buffer info.\n state.length += state.objectMode ? 1 : chunk.length;\n if (addToFront)\n state.buffer.unshift(chunk);\n else\n state.buffer.push(chunk);\n\n if (state.needReadable)\n emitReadable(stream);\n }\n\n maybeReadMore(stream, state);\n }\n } else if (!addToFront) {\n state.reading = false;\n }\n\n return needMoreData(state);\n}\n\n\n\n// if it's past the high water mark, we can push in some more.\n// Also, if we have no data yet, we can stand some\n// more bytes. This is to work around cases where hwm=0,\n// such as the repl. Also, if the push() triggered a\n// readable event, and the user called read(largeNumber) such that\n// needReadable was set, then we ought to push more, so that another\n// 'readable' event will be triggered.\nfunction needMoreData(state) {\n return !state.ended &&\n (state.needReadable ||\n state.length < state.highWaterMark ||\n state.length === 0);\n}\n\n// backwards compatibility.\nReadable.prototype.setEncoding = function(enc) {\n if (!StringDecoder)\n StringDecoder = require('string_decoder/').StringDecoder;\n this._readableState.decoder = new StringDecoder(enc);\n this._readableState.encoding = enc;\n return this;\n};\n\n// Don't raise the hwm > 128MB\nvar MAX_HWM = 0x800000;\nfunction roundUpToNextPowerOf2(n) {\n if (n >= MAX_HWM) {\n n = MAX_HWM;\n } else {\n // Get the next highest power of 2\n n--;\n for (var p = 1; p < 32; p <<= 1) n |= n >> p;\n n++;\n }\n return n;\n}\n\nfunction howMuchToRead(n, state) {\n if (state.length === 0 && state.ended)\n return 0;\n\n if (state.objectMode)\n return n === 0 ? 0 : 1;\n\n if (isNaN(n) || util.isNull(n)) {\n // only flow one buffer at a time\n if (state.flowing && state.buffer.length)\n return state.buffer[0].length;\n else\n return state.length;\n }\n\n if (n <= 0)\n return 0;\n\n // If we're asking for more than the target buffer level,\n // then raise the water mark. Bump up to the next highest\n // power of 2, to prevent increasing it excessively in tiny\n // amounts.\n if (n > state.highWaterMark)\n state.highWaterMark = roundUpToNextPowerOf2(n);\n\n // don't have that much. return null, unless we've ended.\n if (n > state.length) {\n if (!state.ended) {\n state.needReadable = true;\n return 0;\n } else\n return state.length;\n }\n\n return n;\n}\n\n// you can override either this method, or the async _read(n) below.\nReadable.prototype.read = function(n) {\n debug('read', n);\n var state = this._readableState;\n var nOrig = n;\n\n if (!util.isNumber(n) || n > 0)\n state.emittedReadable = false;\n\n // if we're doing read(0) to trigger a readable event, but we\n // already have a bunch of data in the buffer, then just trigger\n // the 'readable' event and move on.\n if (n === 0 &&\n state.needReadable &&\n (state.length >= state.highWaterMark || state.ended)) {\n debug('read: emitReadable', state.length, state.ended);\n if (state.length === 0 && state.ended)\n endReadable(this);\n else\n emitReadable(this);\n return null;\n }\n\n n = howMuchToRead(n, state);\n\n // if we've ended, and we're now clear, then finish it up.\n if (n === 0 && state.ended) {\n if (state.length === 0)\n endReadable(this);\n return null;\n }\n\n // All the actual chunk generation logic needs to be\n // *below* the call to _read. The reason is that in certain\n // synthetic stream cases, such as passthrough streams, _read\n // may be a completely synchronous operation which may change\n // the state of the read buffer, providing enough data when\n // before there was *not* enough.\n //\n // So, the steps are:\n // 1. Figure out what the state of things will be after we do\n // a read from the buffer.\n //\n // 2. If that resulting state will trigger a _read, then call _read.\n // Note that this may be asynchronous, or synchronous. Yes, it is\n // deeply ugly to write APIs this way, but that still doesn't mean\n // that the Readable class should behave improperly, as streams are\n // designed to be sync/async agnostic.\n // Take note if the _read call is sync or async (ie, if the read call\n // has returned yet), so that we know whether or not it's safe to emit\n // 'readable' etc.\n //\n // 3. Actually pull the requested chunks out of the buffer and return.\n\n // if we need a readable event, then we need to do some reading.\n var doRead = state.needReadable;\n debug('need readable', doRead);\n\n // if we currently have less than the highWaterMark, then also read some\n if (state.length === 0 || state.length - n < state.highWaterMark) {\n doRead = true;\n debug('length less than watermark', doRead);\n }\n\n // however, if we've ended, then there's no point, and if we're already\n // reading, then it's unnecessary.\n if (state.ended || state.reading) {\n doRead = false;\n debug('reading or ended', doRead);\n }\n\n if (doRead) {\n debug('do read');\n state.reading = true;\n state.sync = true;\n // if the length is currently zero, then we *need* a readable event.\n if (state.length === 0)\n state.needReadable = true;\n // call internal read method\n this._read(state.highWaterMark);\n state.sync = false;\n }\n\n // If _read pushed data synchronously, then `reading` will be false,\n // and we need to re-evaluate how much data we can return to the user.\n if (doRead && !state.reading)\n n = howMuchToRead(nOrig, state);\n\n var ret;\n if (n > 0)\n ret = fromList(n, state);\n else\n ret = null;\n\n if (util.isNull(ret)) {\n state.needReadable = true;\n n = 0;\n }\n\n state.length -= n;\n\n // If we have nothing in the buffer, then we want to know\n // as soon as we *do* get something into the buffer.\n if (state.length === 0 && !state.ended)\n state.needReadable = true;\n\n // If we tried to read() past the EOF, then emit end on the next tick.\n if (nOrig !== n && state.ended && state.length === 0)\n endReadable(this);\n\n if (!util.isNull(ret))\n this.emit('data', ret);\n\n return ret;\n};\n\nfunction chunkInvalid(state, chunk) {\n var er = null;\n if (!util.isBuffer(chunk) &&\n !util.isString(chunk) &&\n !util.isNullOrUndefined(chunk) &&\n !state.objectMode) {\n er = new TypeError('Invalid non-string/buffer chunk');\n }\n return er;\n}\n\n\nfunction onEofChunk(stream, state) {\n if (state.decoder && !state.ended) {\n var chunk = state.decoder.end();\n if (chunk && chunk.length) {\n state.buffer.push(chunk);\n state.length += state.objectMode ? 1 : chunk.length;\n }\n }\n state.ended = true;\n\n // emit 'readable' now to make sure it gets picked up.\n emitReadable(stream);\n}\n\n// Don't emit readable right away in sync mode, because this can trigger\n// another read() call => stack overflow. This way, it might trigger\n// a nextTick recursion warning, but that's not so bad.\nfunction emitReadable(stream) {\n var state = stream._readableState;\n state.needReadable = false;\n if (!state.emittedReadable) {\n debug('emitReadable', state.flowing);\n state.emittedReadable = true;\n if (state.sync)\n process.nextTick(function() {\n emitReadable_(stream);\n });\n else\n emitReadable_(stream);\n }\n}\n\nfunction emitReadable_(stream) {\n debug('emit readable');\n stream.emit('readable');\n flow(stream);\n}\n\n\n// at this point, the user has presumably seen the 'readable' event,\n// and called read() to consume some data. that may have triggered\n// in turn another _read(n) call, in which case reading = true if\n// it's in progress.\n// However, if we're not ended, or reading, and the length < hwm,\n// then go ahead and try to read some more preemptively.\nfunction maybeReadMore(stream, state) {\n if (!state.readingMore) {\n state.readingMore = true;\n process.nextTick(function() {\n maybeReadMore_(stream, state);\n });\n }\n}\n\nfunction maybeReadMore_(stream, state) {\n var len = state.length;\n while (!state.reading && !state.flowing && !state.ended &&\n state.length < state.highWaterMark) {\n debug('maybeReadMore read 0');\n stream.read(0);\n if (len === state.length)\n // didn't get any data, stop spinning.\n break;\n else\n len = state.length;\n }\n state.readingMore = false;\n}\n\n// abstract method. to be overridden in specific implementation classes.\n// call cb(er, data) where data is <= n in length.\n// for virtual (non-string, non-buffer) streams, \"length\" is somewhat\n// arbitrary, and perhaps not very meaningful.\nReadable.prototype._read = function(n) {\n this.emit('error', new Error('not implemented'));\n};\n\nReadable.prototype.pipe = function(dest, pipeOpts) {\n var src = this;\n var state = this._readableState;\n\n switch (state.pipesCount) {\n case 0:\n state.pipes = dest;\n break;\n case 1:\n state.pipes = [state.pipes, dest];\n break;\n default:\n state.pipes.push(dest);\n break;\n }\n state.pipesCount += 1;\n debug('pipe count=%d opts=%j', state.pipesCount, pipeOpts);\n\n var doEnd = (!pipeOpts || pipeOpts.end !== false) &&\n dest !== process.stdout &&\n dest !== process.stderr;\n\n var endFn = doEnd ? onend : cleanup;\n if (state.endEmitted)\n process.nextTick(endFn);\n else\n src.once('end', endFn);\n\n dest.on('unpipe', onunpipe);\n function onunpipe(readable) {\n debug('onunpipe');\n if (readable === src) {\n cleanup();\n }\n }\n\n function onend() {\n debug('onend');\n dest.end();\n }\n\n // when the dest drains, it reduces the awaitDrain counter\n // on the source. This would be more elegant with a .once()\n // handler in flow(), but adding and removing repeatedly is\n // too slow.\n var ondrain = pipeOnDrain(src);\n dest.on('drain', ondrain);\n\n function cleanup() {\n debug('cleanup');\n // cleanup event handlers once the pipe is broken\n dest.removeListener('close', onclose);\n dest.removeListener('finish', onfinish);\n dest.removeListener('drain', ondrain);\n dest.removeListener('error', onerror);\n dest.removeListener('unpipe', onunpipe);\n src.removeListener('end', onend);\n src.removeListener('end', cleanup);\n src.removeListener('data', ondata);\n\n // if the reader is waiting for a drain event from this\n // specific writer, then it would cause it to never start\n // flowing again.\n // So, if this is awaiting a drain, then we just call it now.\n // If we don't know, then assume that we are waiting for one.\n if (state.awaitDrain &&\n (!dest._writableState || dest._writableState.needDrain))\n ondrain();\n }\n\n src.on('data', ondata);\n function ondata(chunk) {\n debug('ondata');\n var ret = dest.write(chunk);\n if (false === ret) {\n debug('false write response, pause',\n src._readableState.awaitDrain);\n src._readableState.awaitDrain++;\n src.pause();\n }\n }\n\n // if the dest has an error, then stop piping into it.\n // however, don't suppress the throwing behavior for this.\n function onerror(er) {\n debug('onerror', er);\n unpipe();\n dest.removeListener('error', onerror);\n if (EE.listenerCount(dest, 'error') === 0)\n dest.emit('error', er);\n }\n // This is a brutally ugly hack to make sure that our error handler\n // is attached before any userland ones. NEVER DO THIS.\n if (!dest._events || !dest._events.error)\n dest.on('error', onerror);\n else if (isArray(dest._events.error))\n dest._events.error.unshift(onerror);\n else\n dest._events.error = [onerror, dest._events.error];\n\n\n\n // Both close and finish should trigger unpipe, but only once.\n function onclose() {\n dest.removeListener('finish', onfinish);\n unpipe();\n }\n dest.once('close', onclose);\n function onfinish() {\n debug('onfinish');\n dest.removeListener('close', onclose);\n unpipe();\n }\n dest.once('finish', onfinish);\n\n function unpipe() {\n debug('unpipe');\n src.unpipe(dest);\n }\n\n // tell the dest that it's being piped to\n dest.emit('pipe', src);\n\n // start the flow if it hasn't been started already.\n if (!state.flowing) {\n debug('pipe resume');\n src.resume();\n }\n\n return dest;\n};\n\nfunction pipeOnDrain(src) {\n return function() {\n var state = src._readableState;\n debug('pipeOnDrain', state.awaitDrain);\n if (state.awaitDrain)\n state.awaitDrain--;\n if (state.awaitDrain === 0 && EE.listenerCount(src, 'data')) {\n state.flowing = true;\n flow(src);\n }\n };\n}\n\n\nReadable.prototype.unpipe = function(dest) {\n var state = this._readableState;\n\n // if we're not piping anywhere, then do nothing.\n if (state.pipesCount === 0)\n return this;\n\n // just one destination. most common case.\n if (state.pipesCount === 1) {\n // passed in one, but it's not the right one.\n if (dest && dest !== state.pipes)\n return this;\n\n if (!dest)\n dest = state.pipes;\n\n // got a match.\n state.pipes = null;\n state.pipesCount = 0;\n state.flowing = false;\n if (dest)\n dest.emit('unpipe', this);\n return this;\n }\n\n // slow case. multiple pipe destinations.\n\n if (!dest) {\n // remove all.\n var dests = state.pipes;\n var len = state.pipesCount;\n state.pipes = null;\n state.pipesCount = 0;\n state.flowing = false;\n\n for (var i = 0; i < len; i++)\n dests[i].emit('unpipe', this);\n return this;\n }\n\n // try to find the right one.\n var i = indexOf(state.pipes, dest);\n if (i === -1)\n return this;\n\n state.pipes.splice(i, 1);\n state.pipesCount -= 1;\n if (state.pipesCount === 1)\n state.pipes = state.pipes[0];\n\n dest.emit('unpipe', this);\n\n return this;\n};\n\n// set up data events if they are asked for\n// Ensure readable listeners eventually get something\nReadable.prototype.on = function(ev, fn) {\n var res = Stream.prototype.on.call(this, ev, fn);\n\n // If listening to data, and it has not explicitly been paused,\n // then call resume to start the flow of data on the next tick.\n if (ev === 'data' && false !== this._readableState.flowing) {\n this.resume();\n }\n\n if (ev === 'readable' && this.readable) {\n var state = this._readableState;\n if (!state.readableListening) {\n state.readableListening = true;\n state.emittedReadable = false;\n state.needReadable = true;\n if (!state.reading) {\n var self = this;\n process.nextTick(function() {\n debug('readable nexttick read 0');\n self.read(0);\n });\n } else if (state.length) {\n emitReadable(this, state);\n }\n }\n }\n\n return res;\n};\nReadable.prototype.addListener = Readable.prototype.on;\n\n// pause() and resume() are remnants of the legacy readable stream API\n// If the user uses them, then switch into old mode.\nReadable.prototype.resume = function() {\n var state = this._readableState;\n if (!state.flowing) {\n debug('resume');\n state.flowing = true;\n if (!state.reading) {\n debug('resume read 0');\n this.read(0);\n }\n resume(this, state);\n }\n return this;\n};\n\nfunction resume(stream, state) {\n if (!state.resumeScheduled) {\n state.resumeScheduled = true;\n process.nextTick(function() {\n resume_(stream, state);\n });\n }\n}\n\nfunction resume_(stream, state) {\n state.resumeScheduled = false;\n stream.emit('resume');\n flow(stream);\n if (state.flowing && !state.reading)\n stream.read(0);\n}\n\nReadable.prototype.pause = function() {\n debug('call pause flowing=%j', this._readableState.flowing);\n if (false !== this._readableState.flowing) {\n debug('pause');\n this._readableState.flowing = false;\n this.emit('pause');\n }\n return this;\n};\n\nfunction flow(stream) {\n var state = stream._readableState;\n debug('flow', state.flowing);\n if (state.flowing) {\n do {\n var chunk = stream.read();\n } while (null !== chunk && state.flowing);\n }\n}\n\n// wrap an old-style stream as the async data source.\n// This is *not* part of the readable stream interface.\n// It is an ugly unfortunate mess of history.\nReadable.prototype.wrap = function(stream) {\n var state = this._readableState;\n var paused = false;\n\n var self = this;\n stream.on('end', function() {\n debug('wrapped end');\n if (state.decoder && !state.ended) {\n var chunk = state.decoder.end();\n if (chunk && chunk.length)\n self.push(chunk);\n }\n\n self.push(null);\n });\n\n stream.on('data', function(chunk) {\n debug('wrapped data');\n if (state.decoder)\n chunk = state.decoder.write(chunk);\n if (!chunk || !state.objectMode && !chunk.length)\n return;\n\n var ret = self.push(chunk);\n if (!ret) {\n paused = true;\n stream.pause();\n }\n });\n\n // proxy all the other methods.\n // important when wrapping filters and duplexes.\n for (var i in stream) {\n if (util.isFunction(stream[i]) && util.isUndefined(this[i])) {\n this[i] = function(method) { return function() {\n return stream[method].apply(stream, arguments);\n }}(i);\n }\n }\n\n // proxy certain important events.\n var events = ['error', 'close', 'destroy', 'pause', 'resume'];\n forEach(events, function(ev) {\n stream.on(ev, self.emit.bind(self, ev));\n });\n\n // when we try to consume some more bytes, simply unpause the\n // underlying stream.\n self._read = function(n) {\n debug('wrapped _read', n);\n if (paused) {\n paused = false;\n stream.resume();\n }\n };\n\n return self;\n};\n\n\n\n// exposed for testing purposes only.\nReadable._fromList = fromList;\n\n// Pluck off n bytes from an array of buffers.\n// Length is the combined lengths of all the buffers in the list.\nfunction fromList(n, state) {\n var list = state.buffer;\n var length = state.length;\n var stringMode = !!state.decoder;\n var objectMode = !!state.objectMode;\n var ret;\n\n // nothing in the list, definitely empty.\n if (list.length === 0)\n return null;\n\n if (length === 0)\n ret = null;\n else if (objectMode)\n ret = list.shift();\n else if (!n || n >= length) {\n // read it all, truncate the array.\n if (stringMode)\n ret = list.join('');\n else\n ret = Buffer.concat(list, length);\n list.length = 0;\n } else {\n // read just some of it.\n if (n < list[0].length) {\n // just take a part of the first list item.\n // slice is the same for buffers and strings.\n var buf = list[0];\n ret = buf.slice(0, n);\n list[0] = buf.slice(n);\n } else if (n === list[0].length) {\n // first list is a perfect match\n ret = list.shift();\n } else {\n // complex case.\n // we have enough to cover it, but it spans past the first buffer.\n if (stringMode)\n ret = '';\n else\n ret = new Buffer(n);\n\n var c = 0;\n for (var i = 0, l = list.length; i < l && c < n; i++) {\n var buf = list[0];\n var cpy = Math.min(n - c, buf.length);\n\n if (stringMode)\n ret += buf.slice(0, cpy);\n else\n buf.copy(ret, c, 0, cpy);\n\n if (cpy < buf.length)\n list[0] = buf.slice(cpy);\n else\n list.shift();\n\n c += cpy;\n }\n }\n }\n\n return ret;\n}\n\nfunction endReadable(stream) {\n var state = stream._readableState;\n\n // If we get here before consuming all the bytes, then that is a\n // bug in node. Should never happen.\n if (state.length > 0)\n throw new Error('endReadable called on non-empty stream');\n\n if (!state.endEmitted) {\n state.ended = true;\n process.nextTick(function() {\n // Check that we didn't get one last unshift.\n if (!state.endEmitted && state.length === 0) {\n state.endEmitted = true;\n stream.readable = false;\n stream.emit('end');\n }\n });\n }\n}\n\nfunction forEach (xs, f) {\n for (var i = 0, l = xs.length; i < l; i++) {\n f(xs[i], i);\n }\n}\n\nfunction indexOf (xs, x) {\n for (var i = 0, l = xs.length; i < l; i++) {\n if (xs[i] === x) return i;\n }\n return -1;\n}\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n\n// a transform stream is a readable/writable stream where you do\n// something with the data. Sometimes it's called a \"filter\",\n// but that's not a great name for it, since that implies a thing where\n// some bits pass through, and others are simply ignored. (That would\n// be a valid example of a transform, of course.)\n//\n// While the output is causally related to the input, it's not a\n// necessarily symmetric or synchronous transformation. For example,\n// a zlib stream might take multiple plain-text writes(), and then\n// emit a single compressed chunk some time in the future.\n//\n// Here's how this works:\n//\n// The Transform stream has all the aspects of the readable and writable\n// stream classes. When you write(chunk), that calls _write(chunk,cb)\n// internally, and returns false if there's a lot of pending writes\n// buffered up. When you call read(), that calls _read(n) until\n// there's enough pending readable data buffered up.\n//\n// In a transform stream, the written data is placed in a buffer. When\n// _read(n) is called, it transforms the queued up data, calling the\n// buffered _write cb's as it consumes chunks. If consuming a single\n// written chunk would result in multiple output chunks, then the first\n// outputted bit calls the readcb, and subsequent chunks just go into\n// the read buffer, and will cause it to emit 'readable' if necessary.\n//\n// This way, back-pressure is actually determined by the reading side,\n// since _read has to be called to start processing a new chunk. However,\n// a pathological inflate type of transform can cause excessive buffering\n// here. For example, imagine a stream where every byte of input is\n// interpreted as an integer from 0-255, and then results in that many\n// bytes of output. Writing the 4 bytes {ff,ff,ff,ff} would result in\n// 1kb of data being output. In this case, you could write a very small\n// amount of input, and end up with a very large amount of output. In\n// such a pathological inflating mechanism, there'd be no way to tell\n// the system to stop doing the transform. A single 4MB write could\n// cause the system to run out of memory.\n//\n// However, even in such a pathological case, only a single written chunk\n// would be consumed, and then the rest would wait (un-transformed) until\n// the results of the previous transformed chunk were consumed.\n\nmodule.exports = Transform;\n\nvar Duplex = require('./_stream_duplex');\n\n/**/\nvar util = require('core-util-is');\nutil.inherits = require('inherits');\n/**/\n\nutil.inherits(Transform, Duplex);\n\n\nfunction TransformState(options, stream) {\n this.afterTransform = function(er, data) {\n return afterTransform(stream, er, data);\n };\n\n this.needTransform = false;\n this.transforming = false;\n this.writecb = null;\n this.writechunk = null;\n}\n\nfunction afterTransform(stream, er, data) {\n var ts = stream._transformState;\n ts.transforming = false;\n\n var cb = ts.writecb;\n\n if (!cb)\n return stream.emit('error', new Error('no writecb in Transform class'));\n\n ts.writechunk = null;\n ts.writecb = null;\n\n if (!util.isNullOrUndefined(data))\n stream.push(data);\n\n if (cb)\n cb(er);\n\n var rs = stream._readableState;\n rs.reading = false;\n if (rs.needReadable || rs.length < rs.highWaterMark) {\n stream._read(rs.highWaterMark);\n }\n}\n\n\nfunction Transform(options) {\n if (!(this instanceof Transform))\n return new Transform(options);\n\n Duplex.call(this, options);\n\n this._transformState = new TransformState(options, this);\n\n // when the writable side finishes, then flush out anything remaining.\n var stream = this;\n\n // start out asking for a readable event once data is transformed.\n this._readableState.needReadable = true;\n\n // we have implemented the _read method, and done the other things\n // that Readable wants before the first _read call, so unset the\n // sync guard flag.\n this._readableState.sync = false;\n\n this.once('prefinish', function() {\n if (util.isFunction(this._flush))\n this._flush(function(er) {\n done(stream, er);\n });\n else\n done(stream);\n });\n}\n\nTransform.prototype.push = function(chunk, encoding) {\n this._transformState.needTransform = false;\n return Duplex.prototype.push.call(this, chunk, encoding);\n};\n\n// This is the part where you do stuff!\n// override this function in implementation classes.\n// 'chunk' is an input chunk.\n//\n// Call `push(newChunk)` to pass along transformed output\n// to the readable side. You may call 'push' zero or more times.\n//\n// Call `cb(err)` when you are done with this chunk. If you pass\n// an error, then that'll put the hurt on the whole operation. If you\n// never call cb(), then you'll never get another chunk.\nTransform.prototype._transform = function(chunk, encoding, cb) {\n throw new Error('not implemented');\n};\n\nTransform.prototype._write = function(chunk, encoding, cb) {\n var ts = this._transformState;\n ts.writecb = cb;\n ts.writechunk = chunk;\n ts.writeencoding = encoding;\n if (!ts.transforming) {\n var rs = this._readableState;\n if (ts.needTransform ||\n rs.needReadable ||\n rs.length < rs.highWaterMark)\n this._read(rs.highWaterMark);\n }\n};\n\n// Doesn't matter what the args are here.\n// _transform does all the work.\n// That we got here means that the readable side wants more data.\nTransform.prototype._read = function(n) {\n var ts = this._transformState;\n\n if (!util.isNull(ts.writechunk) && ts.writecb && !ts.transforming) {\n ts.transforming = true;\n this._transform(ts.writechunk, ts.writeencoding, ts.afterTransform);\n } else {\n // mark that we need a transform, so that any data that comes in\n // will get processed, now that we've asked for it.\n ts.needTransform = true;\n }\n};\n\n\nfunction done(stream, er) {\n if (er)\n return stream.emit('error', er);\n\n // if there's nothing in the write buffer, then that means\n // that nothing more will ever be provided\n var ws = stream._writableState;\n var ts = stream._transformState;\n\n if (ws.length)\n throw new Error('calling transform done when ws.length != 0');\n\n if (ts.transforming)\n throw new Error('calling transform done when still transforming');\n\n return stream.push(null);\n}\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// A bit simpler than readable streams.\n// Implement an async ._write(chunk, cb), and it'll handle all\n// the drain event emission and buffering.\n\nmodule.exports = Writable;\n\n/**/\nvar Buffer = require('buffer').Buffer;\n/**/\n\nWritable.WritableState = WritableState;\n\n\n/**/\nvar util = require('core-util-is');\nutil.inherits = require('inherits');\n/**/\n\nvar Stream = require('stream');\n\nutil.inherits(Writable, Stream);\n\nfunction WriteReq(chunk, encoding, cb) {\n this.chunk = chunk;\n this.encoding = encoding;\n this.callback = cb;\n}\n\nfunction WritableState(options, stream) {\n var Duplex = require('./_stream_duplex');\n\n options = options || {};\n\n // the point at which write() starts returning false\n // Note: 0 is a valid value, means that we always return false if\n // the entire buffer is not flushed immediately on write()\n var hwm = options.highWaterMark;\n var defaultHwm = options.objectMode ? 16 : 16 * 1024;\n this.highWaterMark = (hwm || hwm === 0) ? hwm : defaultHwm;\n\n // object stream flag to indicate whether or not this stream\n // contains buffers or objects.\n this.objectMode = !!options.objectMode;\n\n if (stream instanceof Duplex)\n this.objectMode = this.objectMode || !!options.writableObjectMode;\n\n // cast to ints.\n this.highWaterMark = ~~this.highWaterMark;\n\n this.needDrain = false;\n // at the start of calling end()\n this.ending = false;\n // when end() has been called, and returned\n this.ended = false;\n // when 'finish' is emitted\n this.finished = false;\n\n // should we decode strings into buffers before passing to _write?\n // this is here so that some node-core streams can optimize string\n // handling at a lower level.\n var noDecode = options.decodeStrings === false;\n this.decodeStrings = !noDecode;\n\n // Crypto is kind of old and crusty. Historically, its default string\n // encoding is 'binary' so we have to make this configurable.\n // Everything else in the universe uses 'utf8', though.\n this.defaultEncoding = options.defaultEncoding || 'utf8';\n\n // not an actual buffer we keep track of, but a measurement\n // of how much we're waiting to get pushed to some underlying\n // socket or file.\n this.length = 0;\n\n // a flag to see when we're in the middle of a write.\n this.writing = false;\n\n // when true all writes will be buffered until .uncork() call\n this.corked = 0;\n\n // a flag to be able to tell if the onwrite cb is called immediately,\n // or on a later tick. We set this to true at first, because any\n // actions that shouldn't happen until \"later\" should generally also\n // not happen before the first write call.\n this.sync = true;\n\n // a flag to know if we're processing previously buffered items, which\n // may call the _write() callback in the same tick, so that we don't\n // end up in an overlapped onwrite situation.\n this.bufferProcessing = false;\n\n // the callback that's passed to _write(chunk,cb)\n this.onwrite = function(er) {\n onwrite(stream, er);\n };\n\n // the callback that the user supplies to write(chunk,encoding,cb)\n this.writecb = null;\n\n // the amount that is being written when _write is called.\n this.writelen = 0;\n\n this.buffer = [];\n\n // number of pending user-supplied write callbacks\n // this must be 0 before 'finish' can be emitted\n this.pendingcb = 0;\n\n // emit prefinish if the only thing we're waiting for is _write cbs\n // This is relevant for synchronous Transform streams\n this.prefinished = false;\n\n // True if the error was already emitted and should not be thrown again\n this.errorEmitted = false;\n}\n\nfunction Writable(options) {\n var Duplex = require('./_stream_duplex');\n\n // Writable ctor is applied to Duplexes, though they're not\n // instanceof Writable, they're instanceof Readable.\n if (!(this instanceof Writable) && !(this instanceof Duplex))\n return new Writable(options);\n\n this._writableState = new WritableState(options, this);\n\n // legacy.\n this.writable = true;\n\n Stream.call(this);\n}\n\n// Otherwise people can pipe Writable streams, which is just wrong.\nWritable.prototype.pipe = function() {\n this.emit('error', new Error('Cannot pipe. Not readable.'));\n};\n\n\nfunction writeAfterEnd(stream, state, cb) {\n var er = new Error('write after end');\n // TODO: defer error events consistently everywhere, not just the cb\n stream.emit('error', er);\n process.nextTick(function() {\n cb(er);\n });\n}\n\n// If we get something that is not a buffer, string, null, or undefined,\n// and we're not in objectMode, then that's an error.\n// Otherwise stream chunks are all considered to be of length=1, and the\n// watermarks determine how many objects to keep in the buffer, rather than\n// how many bytes or characters.\nfunction validChunk(stream, state, chunk, cb) {\n var valid = true;\n if (!util.isBuffer(chunk) &&\n !util.isString(chunk) &&\n !util.isNullOrUndefined(chunk) &&\n !state.objectMode) {\n var er = new TypeError('Invalid non-string/buffer chunk');\n stream.emit('error', er);\n process.nextTick(function() {\n cb(er);\n });\n valid = false;\n }\n return valid;\n}\n\nWritable.prototype.write = function(chunk, encoding, cb) {\n var state = this._writableState;\n var ret = false;\n\n if (util.isFunction(encoding)) {\n cb = encoding;\n encoding = null;\n }\n\n if (util.isBuffer(chunk))\n encoding = 'buffer';\n else if (!encoding)\n encoding = state.defaultEncoding;\n\n if (!util.isFunction(cb))\n cb = function() {};\n\n if (state.ended)\n writeAfterEnd(this, state, cb);\n else if (validChunk(this, state, chunk, cb)) {\n state.pendingcb++;\n ret = writeOrBuffer(this, state, chunk, encoding, cb);\n }\n\n return ret;\n};\n\nWritable.prototype.cork = function() {\n var state = this._writableState;\n\n state.corked++;\n};\n\nWritable.prototype.uncork = function() {\n var state = this._writableState;\n\n if (state.corked) {\n state.corked--;\n\n if (!state.writing &&\n !state.corked &&\n !state.finished &&\n !state.bufferProcessing &&\n state.buffer.length)\n clearBuffer(this, state);\n }\n};\n\nfunction decodeChunk(state, chunk, encoding) {\n if (!state.objectMode &&\n state.decodeStrings !== false &&\n util.isString(chunk)) {\n chunk = new Buffer(chunk, encoding);\n }\n return chunk;\n}\n\n// if we're already writing something, then just put this\n// in the queue, and wait our turn. Otherwise, call _write\n// If we return false, then we need a drain event, so set that flag.\nfunction writeOrBuffer(stream, state, chunk, encoding, cb) {\n chunk = decodeChunk(state, chunk, encoding);\n if (util.isBuffer(chunk))\n encoding = 'buffer';\n var len = state.objectMode ? 1 : chunk.length;\n\n state.length += len;\n\n var ret = state.length < state.highWaterMark;\n // we must ensure that previous needDrain will not be reset to false.\n if (!ret)\n state.needDrain = true;\n\n if (state.writing || state.corked)\n state.buffer.push(new WriteReq(chunk, encoding, cb));\n else\n doWrite(stream, state, false, len, chunk, encoding, cb);\n\n return ret;\n}\n\nfunction doWrite(stream, state, writev, len, chunk, encoding, cb) {\n state.writelen = len;\n state.writecb = cb;\n state.writing = true;\n state.sync = true;\n if (writev)\n stream._writev(chunk, state.onwrite);\n else\n stream._write(chunk, encoding, state.onwrite);\n state.sync = false;\n}\n\nfunction onwriteError(stream, state, sync, er, cb) {\n if (sync)\n process.nextTick(function() {\n state.pendingcb--;\n cb(er);\n });\n else {\n state.pendingcb--;\n cb(er);\n }\n\n stream._writableState.errorEmitted = true;\n stream.emit('error', er);\n}\n\nfunction onwriteStateUpdate(state) {\n state.writing = false;\n state.writecb = null;\n state.length -= state.writelen;\n state.writelen = 0;\n}\n\nfunction onwrite(stream, er) {\n var state = stream._writableState;\n var sync = state.sync;\n var cb = state.writecb;\n\n onwriteStateUpdate(state);\n\n if (er)\n onwriteError(stream, state, sync, er, cb);\n else {\n // Check if we're actually ready to finish, but don't emit yet\n var finished = needFinish(stream, state);\n\n if (!finished &&\n !state.corked &&\n !state.bufferProcessing &&\n state.buffer.length) {\n clearBuffer(stream, state);\n }\n\n if (sync) {\n process.nextTick(function() {\n afterWrite(stream, state, finished, cb);\n });\n } else {\n afterWrite(stream, state, finished, cb);\n }\n }\n}\n\nfunction afterWrite(stream, state, finished, cb) {\n if (!finished)\n onwriteDrain(stream, state);\n state.pendingcb--;\n cb();\n finishMaybe(stream, state);\n}\n\n// Must force callback to be called on nextTick, so that we don't\n// emit 'drain' before the write() consumer gets the 'false' return\n// value, and has a chance to attach a 'drain' listener.\nfunction onwriteDrain(stream, state) {\n if (state.length === 0 && state.needDrain) {\n state.needDrain = false;\n stream.emit('drain');\n }\n}\n\n\n// if there's something in the buffer waiting, then process it\nfunction clearBuffer(stream, state) {\n state.bufferProcessing = true;\n\n if (stream._writev && state.buffer.length > 1) {\n // Fast case, write everything using _writev()\n var cbs = [];\n for (var c = 0; c < state.buffer.length; c++)\n cbs.push(state.buffer[c].callback);\n\n // count the one we are adding, as well.\n // TODO(isaacs) clean this up\n state.pendingcb++;\n doWrite(stream, state, true, state.length, state.buffer, '', function(err) {\n for (var i = 0; i < cbs.length; i++) {\n state.pendingcb--;\n cbs[i](err);\n }\n });\n\n // Clear buffer\n state.buffer = [];\n } else {\n // Slow case, write chunks one-by-one\n for (var c = 0; c < state.buffer.length; c++) {\n var entry = state.buffer[c];\n var chunk = entry.chunk;\n var encoding = entry.encoding;\n var cb = entry.callback;\n var len = state.objectMode ? 1 : chunk.length;\n\n doWrite(stream, state, false, len, chunk, encoding, cb);\n\n // if we didn't call the onwrite immediately, then\n // it means that we need to wait until it does.\n // also, that means that the chunk and cb are currently\n // being processed, so move the buffer counter past them.\n if (state.writing) {\n c++;\n break;\n }\n }\n\n if (c < state.buffer.length)\n state.buffer = state.buffer.slice(c);\n else\n state.buffer.length = 0;\n }\n\n state.bufferProcessing = false;\n}\n\nWritable.prototype._write = function(chunk, encoding, cb) {\n cb(new Error('not implemented'));\n\n};\n\nWritable.prototype._writev = null;\n\nWritable.prototype.end = function(chunk, encoding, cb) {\n var state = this._writableState;\n\n if (util.isFunction(chunk)) {\n cb = chunk;\n chunk = null;\n encoding = null;\n } else if (util.isFunction(encoding)) {\n cb = encoding;\n encoding = null;\n }\n\n if (!util.isNullOrUndefined(chunk))\n this.write(chunk, encoding);\n\n // .end() fully uncorks\n if (state.corked) {\n state.corked = 1;\n this.uncork();\n }\n\n // ignore unnecessary end() calls.\n if (!state.ending && !state.finished)\n endWritable(this, state, cb);\n};\n\n\nfunction needFinish(stream, state) {\n return (state.ending &&\n state.length === 0 &&\n !state.finished &&\n !state.writing);\n}\n\nfunction prefinish(stream, state) {\n if (!state.prefinished) {\n state.prefinished = true;\n stream.emit('prefinish');\n }\n}\n\nfunction finishMaybe(stream, state) {\n var need = needFinish(stream, state);\n if (need) {\n if (state.pendingcb === 0) {\n prefinish(stream, state);\n state.finished = true;\n stream.emit('finish');\n } else\n prefinish(stream, state);\n }\n return need;\n}\n\nfunction endWritable(stream, state, cb) {\n state.ending = true;\n finishMaybe(stream, state);\n if (cb) {\n if (state.finished)\n process.nextTick(cb);\n else\n stream.once('finish', cb);\n }\n state.ended = true;\n}\n","exports = module.exports = require('./lib/_stream_readable.js');\nexports.Stream = require('stream');\nexports.Readable = exports;\nexports.Writable = require('./lib/_stream_writable.js');\nexports.Duplex = require('./lib/_stream_duplex.js');\nexports.Transform = require('./lib/_stream_transform.js');\nexports.PassThrough = require('./lib/_stream_passthrough.js');\nif (!process.browser && process.env.READABLE_STREAM === 'disable') {\n module.exports = require('stream');\n}\n","module.exports = require(\"./lib/_stream_writable.js\")\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\nvar Buffer = require('buffer').Buffer;\n\nvar isBufferEncoding = Buffer.isEncoding\n || function(encoding) {\n switch (encoding && encoding.toLowerCase()) {\n case 'hex': case 'utf8': case 'utf-8': case 'ascii': case 'binary': case 'base64': case 'ucs2': case 'ucs-2': case 'utf16le': case 'utf-16le': case 'raw': return true;\n default: return false;\n }\n }\n\n\nfunction assertEncoding(encoding) {\n if (encoding && !isBufferEncoding(encoding)) {\n throw new Error('Unknown encoding: ' + encoding);\n }\n}\n\n// StringDecoder provides an interface for efficiently splitting a series of\n// buffers into a series of JS strings without breaking apart multi-byte\n// characters. CESU-8 is handled as part of the UTF-8 encoding.\n//\n// @TODO Handling all encodings inside a single object makes it very difficult\n// to reason about this code, so it should be split up in the future.\n// @TODO There should be a utf8-strict encoding that rejects invalid UTF-8 code\n// points as used by CESU-8.\nvar StringDecoder = exports.StringDecoder = function(encoding) {\n this.encoding = (encoding || 'utf8').toLowerCase().replace(/[-_]/, '');\n assertEncoding(encoding);\n switch (this.encoding) {\n case 'utf8':\n // CESU-8 represents each of Surrogate Pair by 3-bytes\n this.surrogateSize = 3;\n break;\n case 'ucs2':\n case 'utf16le':\n // UTF-16 represents each of Surrogate Pair by 2-bytes\n this.surrogateSize = 2;\n this.detectIncompleteChar = utf16DetectIncompleteChar;\n break;\n case 'base64':\n // Base-64 stores 3 bytes in 4 chars, and pads the remainder.\n this.surrogateSize = 3;\n this.detectIncompleteChar = base64DetectIncompleteChar;\n break;\n default:\n this.write = passThroughWrite;\n return;\n }\n\n // Enough space to store all bytes of a single character. UTF-8 needs 4\n // bytes, but CESU-8 may require up to 6 (3 bytes per surrogate).\n this.charBuffer = new Buffer(6);\n // Number of bytes received for the current incomplete multi-byte character.\n this.charReceived = 0;\n // Number of bytes expected for the current incomplete multi-byte character.\n this.charLength = 0;\n};\n\n\n// write decodes the given buffer and returns it as JS string that is\n// guaranteed to not contain any partial multi-byte characters. Any partial\n// character found at the end of the buffer is buffered up, and will be\n// returned when calling write again with the remaining bytes.\n//\n// Note: Converting a Buffer containing an orphan surrogate to a String\n// currently works, but converting a String to a Buffer (via `new Buffer`, or\n// Buffer#write) will replace incomplete surrogates with the unicode\n// replacement character. See https://codereview.chromium.org/121173009/ .\nStringDecoder.prototype.write = function(buffer) {\n var charStr = '';\n // if our last write ended with an incomplete multibyte character\n while (this.charLength) {\n // determine how many remaining bytes this buffer has to offer for this char\n var available = (buffer.length >= this.charLength - this.charReceived) ?\n this.charLength - this.charReceived :\n buffer.length;\n\n // add the new bytes to the char buffer\n buffer.copy(this.charBuffer, this.charReceived, 0, available);\n this.charReceived += available;\n\n if (this.charReceived < this.charLength) {\n // still not enough chars in this buffer? wait for more ...\n return '';\n }\n\n // remove bytes belonging to the current character from the buffer\n buffer = buffer.slice(available, buffer.length);\n\n // get the character that was split\n charStr = this.charBuffer.slice(0, this.charLength).toString(this.encoding);\n\n // CESU-8: lead surrogate (D800-DBFF) is also the incomplete character\n var charCode = charStr.charCodeAt(charStr.length - 1);\n if (charCode >= 0xD800 && charCode <= 0xDBFF) {\n this.charLength += this.surrogateSize;\n charStr = '';\n continue;\n }\n this.charReceived = this.charLength = 0;\n\n // if there are no more bytes in this buffer, just emit our char\n if (buffer.length === 0) {\n return charStr;\n }\n break;\n }\n\n // determine and set charLength / charReceived\n this.detectIncompleteChar(buffer);\n\n var end = buffer.length;\n if (this.charLength) {\n // buffer the incomplete character bytes we got\n buffer.copy(this.charBuffer, 0, buffer.length - this.charReceived, end);\n end -= this.charReceived;\n }\n\n charStr += buffer.toString(this.encoding, 0, end);\n\n var end = charStr.length - 1;\n var charCode = charStr.charCodeAt(end);\n // CESU-8: lead surrogate (D800-DBFF) is also the incomplete character\n if (charCode >= 0xD800 && charCode <= 0xDBFF) {\n var size = this.surrogateSize;\n this.charLength += size;\n this.charReceived += size;\n this.charBuffer.copy(this.charBuffer, size, 0, size);\n buffer.copy(this.charBuffer, 0, 0, size);\n return charStr.substring(0, end);\n }\n\n // or just emit the charStr\n return charStr;\n};\n\n// detectIncompleteChar determines if there is an incomplete UTF-8 character at\n// the end of the given buffer. If so, it sets this.charLength to the byte\n// length that character, and sets this.charReceived to the number of bytes\n// that are available for this character.\nStringDecoder.prototype.detectIncompleteChar = function(buffer) {\n // determine how many bytes we have to check at the end of this buffer\n var i = (buffer.length >= 3) ? 3 : buffer.length;\n\n // Figure out if one of the last i bytes of our buffer announces an\n // incomplete char.\n for (; i > 0; i--) {\n var c = buffer[buffer.length - i];\n\n // See http://en.wikipedia.org/wiki/UTF-8#Description\n\n // 110XXXXX\n if (i == 1 && c >> 5 == 0x06) {\n this.charLength = 2;\n break;\n }\n\n // 1110XXXX\n if (i <= 2 && c >> 4 == 0x0E) {\n this.charLength = 3;\n break;\n }\n\n // 11110XXX\n if (i <= 3 && c >> 3 == 0x1E) {\n this.charLength = 4;\n break;\n }\n }\n this.charReceived = i;\n};\n\nStringDecoder.prototype.end = function(buffer) {\n var res = '';\n if (buffer && buffer.length)\n res = this.write(buffer);\n\n if (this.charReceived) {\n var cr = this.charReceived;\n var buf = this.charBuffer;\n var enc = this.encoding;\n res += buf.slice(0, cr).toString(enc);\n }\n\n return res;\n};\n\nfunction passThroughWrite(buffer) {\n return buffer.toString(this.encoding);\n}\n\nfunction utf16DetectIncompleteChar(buffer) {\n this.charReceived = buffer.length % 2;\n this.charLength = this.charReceived ? 2 : 0;\n}\n\nfunction base64DetectIncompleteChar(buffer) {\n this.charReceived = buffer.length % 3;\n this.charLength = this.charReceived ? 3 : 0;\n}\n","var errno = require('errno');\n\nObject.keys(errno.code).forEach(function(code) {\n\tvar e = errno.code[code];\n\n\texports[code] = function(path) {\n\t\tvar err = new Error(code+', '+e.description+(path ? ' \\''+path+'\\'' : ''));\n\t\terr.errno = e.errno;\n\t\terr.code = code;\n\t\terr.path = path;\n\t\treturn err;\n\t};\n});","var fwd = require('fwd-stream');\nvar sublevel = require('level-sublevel');\nvar blobs = require('level-blobs');\nvar peek = require('level-peek');\nvar once = require('once');\nvar octal = require('octal')\nvar errno = require('./errno');\nvar paths = require('./paths');\nvar watchers = require('./watchers');\n\nvar nextTick = function(cb, err, val) {\n\tprocess.nextTick(function() {\n\t\tcb(err, val);\n\t});\n};\n\nvar noop = function() {};\n\nmodule.exports = function(db, opts) {\n\tvar fs = {};\n\n\tdb = sublevel(db);\n\n\tvar bl = blobs(db.sublevel('blobs'), opts);\n\tvar ps = paths(db.sublevel('stats'));\n\tvar links = db.sublevel('links');\n\n\tvar listeners = watchers();\n\tvar fds = [];\n\n\tvar now = Date.now();\n\tvar inc = function() {\n\t\treturn ++now;\n\t};\n\n\tfs.mkdir = function(key, mode, cb) {\n\t\tif (typeof mode === 'function') return fs.mkdir(key, null, mode);\n\t\tif (!mode) mode = octal(777);\n\t\tif (!cb) cb = noop;\n\n\t\tps.follow(key, function(err, stat, key) {\n\t\t\tif (err && err.code !== 'ENOENT') return cb(err);\n\t\t\tif (stat) return cb(errno.EEXIST(key));\n\n\t\t\tps.put(key, {\n\t\t\t\ttype:'directory',\n\t\t\t\tmode: mode,\n\t\t\t\tsize: 4096\n\t\t\t}, listeners.cb(key, cb));\n\t\t});\n\t};\n\n\tfs.rmdir = function(key, cb) {\n\t\tif (!cb) cb = noop;\n\t\tps.follow(key, function(err, stat, key) {\n\t\t\tif (err) return cb(err);\n\t\t\tfs.readdir(key, function(err, files) {\n\t\t\t\tif (err) return cb(err);\n\t\t\t\tif (files.length) return cb(errno.ENOTEMPTY(key));\n\t\t\t\tps.del(key, listeners.cb(key, cb));\n\t\t\t});\n\t\t});\n\n\t};\n\n\tfs.readdir = function(key, cb) {\n\t\tps.follow(key, function(err, stat, key) {\n\t\t\tif (err) return cb(err);\n\t\t\tif (!stat) return cb(errno.ENOENT(key));\n\t\t\tif (!stat.isDirectory()) return cb(errno.ENOTDIR(key));\n\t\t\tps.list(key, cb);\n\t\t});\n\t};\n\n\tvar stat = function(key, lookup, cb) {\n\t\tlookup(key, function(err, stat, key) {\n\t\t\tif (err) return cb(err);\n\t\t\tif (!stat.isFile()) return cb(null, stat);\n\t\t\tvar blob = stat && stat.blob || key;\n\t\t\tbl.size(blob, function(err, size) {\n\t\t\t\tif (err) return cb(err);\n\t\t\t\tstat.size = size;\n\t\t\t\tcb(null, stat);\n\t\t\t});\n\t\t});\n\t};\n\n\tfs.stat = function(key, cb) {\n\t\tstat(key, ps.follow, cb);\n\t};\n\n\tfs.lstat = function(key, cb) {\n\t\tstat(key, ps.get, cb);\n\t};\n\n\tfs.exists = function(key, cb) {\n\t\tps.follow(key, function(err) {\n\t\t\tcb(!err);\n\t\t});\n\t};\n\n\tvar chmod = function(key, lookup, mode, cb) {\n\t\tif (!cb) cb = noop;\n\t\tlookup(key, function(err, stat, key) {\n\t\t\tif (err) return cb(err);\n\t\t\tps.update(key, {mode:mode}, listeners.cb(key, cb));\n\t\t});\n\t};\n\n\tfs.chmod = function(key, mode, cb) {\n\t\tchmod(key, ps.follow, mode, cb);\n\t};\n\n\tfs.lchmod = function(key, mode, cb) {\n\t\tchmod(key, ps.get, mode, cb);\n\t};\n\n\tvar chown = function(key, lookup, uid, gid, cb) {\n\t\tif (!cb) cb = noop;\n\t\tlookup(key, function(err, stat, key) {\n\t\t\tif (err) return cb(err);\n\t\t\tps.update(key, {uid:uid, gid:gid}, listeners.cb(key, cb));\n\t\t});\n\t};\n\n\tfs.chown = function(key, uid, gid, cb) {\n\t\tchown(key, ps.follow, uid, gid, cb);\n\t};\n\n\tfs.lchown = function(key, uid, gid, cb) {\n\t\tchown(key, ps.get, uid, gid, cb);\n\t};\n\n\tfs.utimes = function(key, atime, mtime, cb) {\n\t\tif (!cb) cb = noop;\n\t\tps.follow(key, function(err, stat, key) {\n\t\t\tif (err) return cb(err);\n\t\t\tvar upd = {};\n\t\t\tif (atime) upd.atime = atime;\n\t\t\tif (mtime) upd.mtime = mtime;\n\t\t\tps.update(key, upd, listeners.cb(key, cb));\n\t\t});\n\t};\n\n\tfs.rename = function(from, to, cb) {\n\t\tif (!cb) cb = noop;\n\n\t\tps.follow(from, function(err, statFrom, from) {\n\t\t\tif (err) return cb(err);\n\n\t\t\tvar rename = function() {\n\t\t\t\tcb = listeners.cb(to, listeners.cb(from, cb));\n\t\t\t\tps.put(to, statFrom, function(err) {\n\t\t\t\t\tif (err) return cb(err);\n\t\t\t\t\tps.del(from, cb);\n\t\t\t\t});\n\t\t\t};\n\n\t\t\tps.follow(to, function(err, statTo, to) {\n\t\t\t\tif (err && err.code !== 'ENOENT') return cb(err);\n\t\t\t\tif (!statTo) return rename();\n\t\t\t\tif (statFrom.isDirectory() !== statTo.isDirectory()) return cb(errno.EISDIR(from));\n\n\t\t\t\tif (statTo.isDirectory()) {\n\t\t\t\t\tfs.readdir(to, function(err, list) {\n\t\t\t\t\t\tif (err) return cb(err);\n\t\t\t\t\t\tif (list.length) return cb(errno.ENOTEMPTY(from));\n\t\t\t\t\t\trename();\n\t\t\t\t\t});\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\trename();\n\t\t\t});\n\t\t});\n\t};\n\n\tfs.realpath = function(key, cache, cb) {\n\t\tif (typeof cache === 'function') return fs.realpath(key, null, cache);\n\t\tps.follow(key, function(err, stat, key) {\n\t\t\tif (err) return cb(err);\n\t\t\tcb(null, key);\n\t\t});\n\t};\n\n\tfs.writeFile = function(key, data, opts, cb) {\n\t\tif (typeof opts === 'function') return fs.writeFile(key, data, null, opts);\n\t\tif (typeof opts === 'string') opts = {encoding:opts};\n\t\tif (!opts) opts = {};\n\t\tif (!cb) cb = noop;\n\n\t\tif (!Buffer.isBuffer(data)) data = new Buffer(data, opts.encoding || 'utf-8');\n\n\t\tvar flags = opts.flags || 'w';\n\t\topts.append = flags[0] !== 'w';\n\n\t\tps.follow(key, function(err, stat, key) {\n\t\t\tif (err && err.code !== 'ENOENT') return cb(err);\n\t\t\tif (stat && stat.isDirectory()) return cb(errno.EISDIR(key));\n\t\t\tif (stat && flags[1] === 'x') return cb(errno.EEXIST(key));\n\n\t\t\tvar blob = stat && stat.blob || key;\n\t\t\tps.writable(key, function(err) {\n\t\t\t\tif (err) return cb(err);\n\n\t\t\t\tbl.write(blob, data, opts, function(err) {\n\t\t\t\t\tif (err) return cb(err);\n\n\t\t\t\t\tps.put(key, {\n\t\t\t\t\t\tctime: stat && stat.ctime,\n\t\t\t\t\t\tmtime: new Date(),\n\t\t\t\t\t\tmode: opts.mode || octal(666),\n\t\t\t\t\t\ttype:'file'\n\t\t\t\t\t}, listeners.cb(key, cb));\n\t\t\t\t});\n\t\t\t});\n\t\t});\n\t};\n\n\tfs.appendFile = function(key, data, opts, cb) {\n\t\tif (typeof opts === 'function') return fs.appendFile(key, data, null, opts);\n\t\tif (typeof opts === 'string') opts = {encoding:opts};\n\t\tif (!opts) opts = {};\n\n\t\topts.flags = 'a';\n\t\tfs.writeFile(key, data, opts, cb);\n\t};\n\n\tfs.unlink = function(key, cb) {\n\t\tif (!cb) cb = noop;\n\n\t\tps.get(key, function(err, stat, key) {\n\t\t\tif (err) return cb(err);\n\t\t\tif (stat.isDirectory()) return cb(errno.EISDIR(key));\n\n\t\t\tvar clean = function(target) {\n\t\t\t\tpeek(links, {start:target+'\\xff', end:target+'\\xff\\xff'}, function(err) {\n\t\t\t\t\tif (err) return bl.remove(target, cb); // no more links\n\t\t\t\t\tcb();\n\t\t\t\t});\n\t\t\t};\n\n\t\t\tvar onlink = function() {\n\t\t\t\tvar target = stat.link.slice(0, stat.link.indexOf('\\xff'));\n\t\t\t\tlinks.del(stat.link, function(err) {\n\t\t\t\t\tif (err) return cb(err);\n\t\t\t\t\tclean(target);\n\t\t\t\t});\n\t\t\t};\n\n\t\t\tps.del(key, listeners.cb(key, function(err) {\n\t\t\t\tif (err) return cb(err);\n\t\t\t\tif (stat.link) return onlink();\n\t\t\t\tlinks.del(key+'\\xff', function(err) {\n\t\t\t\t\tif (err) return cb(err);\n\t\t\t\t\tclean(key);\n\t\t\t\t});\n\t\t\t}));\n\t\t});\n\t};\n\n\tfs.readFile = function(key, opts, cb) {\n\t\tif (typeof opts === 'function') return fs.readFile(key, null, opts);\n\t\tif (typeof opts === 'string') opts = {encoding:opts};\n\t\tif (!opts) opts = {};\n\n\t\tvar encoding = opts.encoding || 'binary';\n\t\tvar flag = opts.flag || 'r';\n\n\t\tps.follow(key, function(err, stat, key) {\n\t\t\tif (err) return cb(err);\n\t\t\tif (stat.isDirectory()) return cb(errno.EISDIR(key));\n\n\t\t\tvar blob = stat && stat.blob || key;\n\t\t\tbl.read(blob, function(err, data) {\n\t\t\t\tif (err) return cb(err);\n\t\t\t\tcb(null, opts.encoding ? data.toString(opts.encoding) : data);\n\t\t\t});\n\t\t});\n\t};\n\n\tfs.createReadStream = function(key, opts) {\n\t\tif (!opts) opts = {};\n\n\t\tvar closed = false;\n\t\tvar rs = fwd.readable(function(cb) {\n\t\t\tps.follow(key, function(err, stat, key) {\n\t\t\t\tif (err) return cb(err);\n\t\t\t\tif (stat.isDirectory()) return cb(errno.EISDIR(key));\n\n\t\t\t\tvar blob = stat && stat.blob || key;\n\t\t\t\tvar r = bl.createReadStream(blob, opts);\n\n\t\t\t\trs.emit('open');\n\t\t\t\tr.on('end', function() {\n\t\t\t\t\tprocess.nextTick(function() {\n\t\t\t\t\t\tif (!closed) rs.emit('close');\n\t\t\t\t\t});\n\t\t\t\t});\n\n\t\t\t\tcb(null, r);\n\t\t\t});\n\t\t});\n\n\t\trs.on('close', function() {\n\t\t\tclosed = true;\n\t\t});\n\n\t\treturn rs;\n\t};\n\n\tfs.createWriteStream = function(key, opts) {\n\t\tif (!opts) opts = {};\n\n\t\tvar flags = opts.flags || 'w';\n\t\tvar closed = false;\n\t\tvar mode = opts.mode || octal(666);\n\n\t\topts.append = flags[0] === 'a';\n\n\t\tvar ws = fwd.writable(function(cb) {\n\t\t\tps.follow(key, function(err, stat, key) {\n\t\t\t\tif (err && err.code !== 'ENOENT') return cb(err);\n\t\t\t\tif (stat && stat.isDirectory()) return cb(errno.EISDIR(key));\n\t\t\t\tif (stat && flags[1] === 'x') return cb(errno.EEXIST(key));\n\n\t\t\t\tvar blob = stat && stat.blob || key;\n\t\t\t\tps.writable(blob, function(err) {\n\t\t\t\t\tif (err) return cb(err);\n\n\t\t\t\t\tvar ctime = stat ? stat.ctime : new Date();\n\t\t\t\t\tvar s = {\n\t\t\t\t\t\tctime: ctime,\n\t\t\t\t\t\tmtime: new Date(),\n\t\t\t\t\t\tmode: mode,\n\t\t\t\t\t\ttype:'file'\n\t\t\t\t\t};\n\n\t\t\t\t\tps.put(key, s, function(err) {\n\t\t\t\t\t\tif (err) return cb(err);\n\n\t\t\t\t\t\tvar w = bl.createWriteStream(blob, opts);\n\n\t\t\t\t\t\tws.emit('open');\n\t\t\t\t\t\tw.on('finish', function() {\n\t\t\t\t\t\t\ts.mtime = new Date();\n\t\t\t\t\t\t\tps.put(key, s, function() {\n\t\t\t\t\t\t\t\tlisteners.change(key);\n\t\t\t\t\t\t\t\tif (!closed) ws.emit('close');\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t});\n\n\t\t\t\t\t\tcb(null, w);\n\t\t\t\t\t});\n\t\t\t\t});\n\t\t\t});\n\t\t});\n\n\t\tws.on('close', function() {\n\t\t\tclosed = true;\n\t\t});\n\n\t\treturn ws;\n\t};\n\n\tfs.truncate = function(key, len, cb) {\n\t\tps.follow(key, function(err, stat, key) {\n\t\t\tif (err) return cb(err);\n\n\t\t\tvar blob = stat && stat.blob || key;\n\t\t\tbl.size(blob, function(err, size) {\n\t\t\t\tif (err) return cb(err);\n\n\t\t\t\tps.writable(key, function(err) {\n\t\t\t\t\tif (err) return cb(err);\n\n\t\t\t\t\tcb = once(listeners.cb(key, cb));\n\t\t\t\t\tif (!len) return bl.remove(blob, cb);\n\n\t\t\t\t\tvar ws = bl.createWriteStream(blob, {\n\t\t\t\t\t\tstart:size < len ? len-1 : len\n\t\t\t\t\t});\n\n\t\t\t\t\tws.on('error', cb);\n\t\t\t\t\tws.on('finish', cb);\n\n\t\t\t\t\tif (size < len) ws.write(new Buffer([0]));\n\t\t\t\t\tws.end();\n\t\t\t\t});\n\t\t\t});\n\t\t});\n\t};\n\n\tfs.watchFile = function(key, opts, cb) {\n\t\tif (typeof opts === 'function') return fs.watchFile(key, null, opts);\n\t\treturn listeners.watch(ps.normalize(key), cb);\n\t};\n\n\tfs.unwatchFile = function(key, cb) {\n\t\tlisteners.unwatch(ps.normalize(key), cb);\n\t};\n\n\tfs.watch = function(key, opts, cb) {\n\t\tif (typeof opts === 'function') return fs.watch(key, null, opts)\n\t\treturn listeners.watcher(ps.normalize(key), cb);\n\t};\n\n\tfs.notify = function(cb) {\n\t\tlisteners.on('change', cb)\n\t}\n\n\tfs.open = function(key, flags, mode, cb) {\n\t\tif (typeof mode === 'function') return fs.open(key, flags, null, mode);\n\n\t\tps.follow(key, function(err, stat, key) {\n\t\t\tif (err && err.code !== 'ENOENT') return cb(err);\n\n\t\t\tvar fl = flags[0];\n\t\t\tvar plus = flags[1] === '+' || flags[2] === '+';\n\t\t\tvar blob = stat && stat.blob || key;\n\n\t\t\tvar f = {\n\t\t\t\tkey: key,\n\t\t\t\tblob: blob,\n\t\t\t\tmode: mode || octal(666),\n\t\t\t\treadable: fl === 'r' || ((fl === 'w' || fl === 'a') && plus),\n\t\t\t\twritable: fl === 'w' || fl === 'a' || (fl === 'r' && plus),\n\t\t\t\tappend: fl === 'a'\n\t\t\t};\n\n\t\t\tif (fl === 'r' && err) return cb(err);\n\t\t\tif (flags[1] === 'x' && stat) return cb(errno.EEXIST(key));\n\t\t\tif (stat && stat.isDirectory()) return cb(errno.EISDIR(key));\n\n\t\t\tbl.size(blob, function(err, size) {\n\t\t\t\tif (err) return cb(err);\n\n\t\t\t\tif (f.append) f.writePos = size;\n\n\t\t\t\tps.writable(key, function(err) {\n\t\t\t\t\tif (err) return cb(err);\n\n\t\t\t\t\tvar onready = function(err) {\n\t\t\t\t\t\tif (err) return cb(err);\n\n\t\t\t\t\t\tvar i = fds.indexOf(null);\n\t\t\t\t\t\tif (i === -1) i = 10+fds.push(fds.length+10)-1;\n\n\t\t\t\t\t\tf.fd = i;\n\t\t\t\t\t\tfds[i] = f;\n\t\t\t\t\t\tlisteners.change(key);\n\n\t\t\t\t\t\tcb(null, f.fd);\n\t\t\t\t\t};\n\n\t\t\t\t\tvar ontruncate = function(err) {\n\t\t\t\t\t\tif (err) return cb(err);\n\t\t\t\t\t\tif (stat) return onready();\n\t\t\t\t\t\tps.put(blob, {ctime:stat && stat.ctime, type:'file'}, onready);\n\t\t\t\t\t};\n\n\t\t\t\t\tif (!f.append && f.writable) return bl.remove(blob, ontruncate);\n\t\t\t\t\tontruncate();\n\t\t\t\t});\n\t\t\t});\n\t\t});\n\t};\n\n\tfs.close = function(fd, cb) {\n\t\tvar f = fds[fd];\n\t\tif (!f) return nextTick(cb, errno.EBADF());\n\n\t\tfds[fd] = null;\n\t\tnextTick(listeners.cb(f.key, cb));\n\t};\n\n\tfs.write = function(fd, buf, off, len, pos, cb) {\n\t\tvar f = fds[fd];\n\t\tif (!cb) cb = noop;\n\t\tif (!f || !f.writable) return nextTick(cb, errno.EBADF());\n\n\t\tif (pos === null) pos = f.writePos || 0;\n\n\t\tvar slice = buf.slice(off, off+len);\n\t\tf.writePos = pos + slice.length;\n\n\t\tbl.write(f.blob, slice, {start:pos, append:true}, function(err) {\n\t\t\tif (err) return cb(err);\n\t\t\tcb(null, len, buf);\n\t\t});\n\t};\n\n\tfs.read = function(fd, buf, off, len, pos, cb) {\n\t\tvar f = fds[fd];\n\t\tif (!cb) cb = noop;\n\t\tif (!f || !f.readable) return nextTick(cb, errno.EBADF());\n\n\t\tif (pos === null) pos = fs.readPos || 0;\n\n\t\tbl.read(f.blob, {start:pos, end:pos+len-1}, function(err, read) {\n\t\t\tif (err) return cb(err);\n\t\t\tvar slice = read.slice(0, len);\n\t\t\tslice.copy(buf, off);\n\t\t\tfs.readPos = pos+slice.length;\n\t\t\tcb(null, slice.length, buf);\n\t\t});\n\t};\n\n\tfs.fsync = function(fd, cb) {\n\t\tvar f = fds[fd];\n\t\tif (!cb) cb = noop;\n\t\tif (!f || !f.writable) return nextTick(cb, errno.EBADF());\n\n\t\tnextTick(cb);\n\t};\n\n\tfs.ftruncate = function(fd, len, cb) {\n\t\tvar f = fds[fd];\n\t\tif (!cb) cb = noop;\n\t\tif (!f) return nextTick(cb, errno.EBADF());\n\n\t\tfs.truncate(f.blob, len, cb);\n\t};\n\n\tfs.fchown = function(fd, uid, gid, cb) {\n\t\tvar f = fds[fd];\n\t\tif (!cb) cb = noop;\n\t\tif (!f) return nextTick(cb, errno.EBADF());\n\n\t\tfs.chown(f.key, uid, gid, cb);\n\t};\n\n\tfs.fchmod = function(fd, mode, cb) {\n\t\tvar f = fds[fd];\n\t\tif (!cb) cb = noop;\n\t\tif (!f) return nextTick(cb, errno.EBADF());\n\n\t\tfs.chmod(f.key, mode, cb);\n\t};\n\n\tfs.futimes = function(fd, atime, mtime, cb) {\n\t\tvar f = fds[fd];\n\t\tif (!cb) cb = noop;\n\t\tif (!f) return nextTick(cb, errno.EBADF());\n\n\t\tfs.utimes(f.key, atime, mtime, cb);\n\t};\n\n\tfs.fstat = function(fd, cb) {\n\t\tvar f = fds[fd];\n\t\tif (!f) return nextTick(cb, errno.EBADF());\n\n\t\tfs.stat(f.key, cb);\n\t};\n\n\tfs.symlink = function(target, name, cb) {\n\t\tif (!cb) cb = noop;\n\t\tps.follow(target, function(err, stat, target) {\n\t\t\tif (err) return cb(err);\n\t\t\tps.get(name, function(err, stat) {\n\t\t\t\tif (err && err.code !== 'ENOENT') return cb(err);\n\t\t\t\tif (stat) return cb(errno.EEXIST(name));\n\t\t\t\tps.put(name, {type:'symlink', target:target, mode:octal(777)}, cb);\n\t\t\t});\n\t\t});\n\t};\n\n\tfs.readlink = function(key, cb) {\n\t\tps.get(key, function(err, stat) {\n\t\t\tif (err) return cb(err);\n\t\t\tif (!stat.target) return cb(errno.EINVAL(key));\n\t\t\tcb(null, stat.target);\n\t\t});\n\t};\n\n\tfs.link = function(target, name, cb) {\n\t\tif (!cb) cb = noop;\n\t\tps.follow(target, function(err, stat, target) {\n\t\t\tif (err) return cb(err);\n\t\t\tif (!stat.isFile()) return cb(errno.EINVAL(target));\n\t\t\tps.get(name, function(err, st) {\n\t\t\t\tif (err && err.code !== 'ENOENT') return cb(err);\n\t\t\t\tif (st) return cb(errno.EEXIST(name));\n\t\t\t\tvar link = target+'\\xff'+inc();\n\t\t\t\tlinks.put(target+'\\xff', target, function(err) {\n\t\t\t\t\tif (err) return cb(err);\n\t\t\t\t\tlinks.put(link, target, function(err) {\n\t\t\t\t\t\tif (err) return cb(err);\n\t\t\t\t\t\tps.put(name, {type:'file', link:link, blob:target, mode:stat.mode}, cb);\n\t\t\t\t\t});\n\t\t\t\t});\n\t\t\t});\n\t\t});\n\t};\n\n\treturn fs;\n};\n","module.exports = hasKeys\n\nfunction hasKeys(source) {\n return source !== null &&\n (typeof source === \"object\" ||\n typeof source === \"function\")\n}\n","var hasKeys = require(\"./has-keys\")\n\nmodule.exports = extend\n\nfunction extend() {\n var target = {}\n\n for (var i = 0; i < arguments.length; i++) {\n var source = arguments[i]\n\n if (!hasKeys(source)) {\n continue\n }\n\n for (var key in source) {\n if (source.hasOwnProperty(key)) {\n target[key] = source[key]\n }\n }\n }\n\n return target\n}\n","var path = require('path');\nvar once = require('once');\nvar concat = require('concat-stream');\nvar octal = require('octal')\nvar stat = require('./stat');\nvar xtend = require('xtend');\nvar errno = require('./errno');\n\nvar ROOT = stat({\n\ttype: 'directory',\n\tmode: octal(777),\n\tsize: 4096\n});\n\nvar normalize = function(key) {\n\tkey = key[0] === '/' ? key : '/' + key;\n\tkey = path.normalize(key);\n\tif (key === '/') return key;\n\treturn key[key.length-1] === '/' ? key.slice(0, -1) : key;\n};\n\nvar prefix = function(key) {\n\tvar depth = key.split('/').length.toString(36);\n\treturn '0000000000'.slice(depth.length)+depth+key;\n};\n\nmodule.exports = function(db) {\n\tvar that = {};\n\n\tthat.normalize = normalize;\n\n\tthat.get = function(key, cb) {\n\t\tkey = normalize(key);\n\t\tif (key === '/') return process.nextTick(cb.bind(null, null, ROOT, '/'));\n\t\tdb.get(prefix(key), {valueEncoding:'json'}, function(err, doc) {\n\t\t\tif (err && err.notFound) return cb(errno.ENOENT(key), null, key);\n\t\t\tif (err) return cb(err, null, key);\n\t\t\tcb(null, stat(doc), key);\n\t\t});\n\t};\n\n\tthat.writable = function(key, cb) {\n\t\tkey = normalize(key);\n\t\tif (key === '/') return process.nextTick(cb.bind(null, errno.EPERM(key)));\n\t\tthat.follow(path.dirname(key), function(err, parent) {\n\t\t\tif (err) return cb(err);\n\t\t\tif (!parent.isDirectory()) return cb(errno.ENOTDIR(key));\n\t\t\tcb(null, key);\n\t\t});\n\t};\n\n\tthat.list = function(key, cb) {\n\t\tkey = normalize(key);\n\n\t\tvar start = prefix(key === '/' ? key : key + '/');\n\t\tvar keys = db.createKeyStream({start: start, end: start+'\\xff'});\n\n\t\tcb = once(cb);\n\n\t\tkeys.on('error', cb);\n\t\tkeys.pipe(concat({encoding:'object'}, function(files) {\n\t\t\tfiles = files.map(function(file) {\n\t\t\t\treturn file.split('/').pop();\n\t\t\t});\n\n\t\t\tcb(null, files);\n\t\t}));\n\t};\n\n\tvar resolve = function(dir, cb) {\n\t\tvar root = '/';\n\t\tvar parts = dir.split('/').slice(1);\n\n\t\tvar loop = function() {\n\t\t\tthat.get(path.join(root, parts.shift()), function(err, doc, key) {\n\t\t\t\tif (err) return cb(err, doc, dir);\n\t\t\t\troot = doc.target || key;\n\t\t\t\tif (!parts.length) return cb(null, doc, key);\n\t\t\t\tloop();\n\t\t\t});\n\t\t};\n\n\t\tloop();\n\t};\n\n\tthat.follow = function(key, cb) {\n\t\tresolve(normalize(key), function loop(err, doc, key) {\n\t\t\tif (err) return cb(err, null, key);\n\t\t\tif (doc.target) return that.get(doc.target, loop);\n\t\t\tcb(null, stat(doc), key);\n\t\t});\n\t};\n\n\tthat.update = function(key, opts, cb) {\n\t\tthat.get(key, function(err, doc, key) {\n\t\t\tif (err) return cb(err);\n\t\t\tif (key === '/') return cb(errno.EPERM(key));\n\t\t\tthat.put(key, xtend(doc, opts), cb);\n\t\t});\n\t};\n\n\tthat.put = function(key, opts, cb) {\n\t\tthat.writable(key, function(err, key) {\n\t\t\tif (err) return cb(err);\n\t\t\tdb.put(prefix(key), stat(opts), {valueEncoding:'json'}, cb);\n\t\t});\n\t};\n\n\tthat.del = function(key, cb) {\n\t\tkey = normalize(key);\n\t\tif (key === '/') return process.nextTick(cb.bind(null, errno.EPERM(key)));\n\t\tdb.del(prefix(key), cb);\n\t};\n\n\treturn that;\n};\n","var toDate = function(date) {\n\tif (!date) return new Date();\n\tif (typeof date === 'string') return new Date(date);\n\treturn date;\n};\n\nvar Stat = function(opts) {\n\tthis.uid = opts.uid || 0;\n\tthis.gid = opts.gid || 0;\n\tthis.mode = opts.mode || 0;\n\tthis.size = opts.size || 0;\n\tthis.mtime = toDate(opts.mtime);\n\tthis.atime = toDate(opts.atime);\n\tthis.ctime = toDate(opts.ctime);\n\tthis.type = opts.type;\n\tthis.target = opts.target;\n\tthis.link = opts.link;\n\tthis.blob = opts.blob;\n};\n\nStat.prototype.isDirectory = function() {\n\treturn this.type === 'directory';\n};\n\nStat.prototype.isFile = function() {\n\treturn this.type === 'file';\n};\n\nStat.prototype.isBlockDevice = function() {\n\treturn false;\n};\n\nStat.prototype.isCharacterDevice = function() {\n\treturn false;\n};\n\nStat.prototype.isSymbolicLink = function() {\n\treturn this.type === 'symlink';\n};\n\nStat.prototype.isFIFO = function() {\n\treturn false;\n};\n\nStat.prototype.isSocket = function() {\n\treturn false;\n};\n\nmodule.exports = function(opts) {\n\treturn new Stat(opts);\n};","var events = require('events');\n\nmodule.exports = function() {\n\tvar listeners = {};\n\tvar that = new events.EventEmitter();\n\n\tthat.watch = function(key, cb) {\n\t\tif (!listeners[key]) {\n\t\t\tlisteners[key] = new events.EventEmitter();\n\t\t\tlisteners[key].setMaxListeners(0);\n\t\t}\n\n\t\tif (cb) listeners[key].on('change', cb);\n\t\treturn listeners[key];\n\t};\n\n\tthat.watcher = function(key, cb) {\n\t\tvar watcher = new events.EventEmitter();\n\t\tvar onchange = function() {\n\t\t\twatcher.emit('change', 'change', key);\n\t\t};\n\n\t\tthat.watch(key, onchange);\n\t\tif (cb) watcher.on('change', cb);\n\t\twatcher.close = function() {\n\t\t\tthat.unwatch(key, onchange);\n\t\t};\n\n\t\treturn watcher;\n\t};\n\n\tthat.unwatch = function(key, cb) {\n\t\tif (!listeners[key]) return;\n\t\tif (cb) listeners[key].removeListener('change', cb);\n\t\telse listeners[key].removeAllListeners('change');\n\t\tif (!listeners[key].listeners('change').length) delete listeners[key];;\n\t};\n\n\tthat.change = function(key) {\n\t\tif (listeners[key]) listeners[key].emit('change');\n\t\tthat.emit('change', key);\n\t};\n\n\tthat.cb = function(key, cb) {\n\t\treturn function(err, val) {\n\t\t\tif (key) that.change(key);\n\t\t\tif (cb) cb(err, val);\n\t\t};\n\t};\n\n\treturn that;\n};","var clone = require('clone')\n\nmodule.exports = \nfunction fixRange(opts) {\n opts = clone(opts)\n\n var reverse = opts.reverse\n var end = opts.max || opts.end\n var start = opts.min || opts.start\n\n var range = [start, end]\n if(start != null && end != null)\n range.sort()\n if(reverse)\n range = range.reverse()\n\n opts.start = range[0]\n opts.end = range[1]\n\n delete opts.min\n delete opts.max\n\n return opts\n}\n","var ranges = require('string-range')\n\nmodule.exports = function (db) {\n\n if(db.hooks) {\n return \n }\n\n var posthooks = []\n var prehooks = []\n\n function getPrefix (p) {\n return p && (\n 'string' === typeof p ? p\n : 'string' === typeof p.prefix ? p.prefix\n : 'function' === typeof p.prefix ? p.prefix()\n : ''\n )\n }\n\n function getKeyEncoding (db) {\n if(db && db._getKeyEncoding)\n return db._getKeyEncoding(db)\n }\n\n function getValueEncoding (db) {\n if(db && db._getValueEncoding)\n return db._getValueEncoding(db)\n }\n\n function remover (array, item) {\n return function () {\n var i = array.indexOf(item)\n if(!~i) return false \n array.splice(i, 1)\n return true\n }\n }\n\n db.hooks = {\n post: function (prefix, hook) {\n if(!hook) hook = prefix, prefix = ''\n var h = {test: ranges.checker(prefix), hook: hook}\n posthooks.push(h)\n return remover(posthooks, h)\n },\n pre: function (prefix, hook) {\n if(!hook) hook = prefix, prefix = ''\n var h = {\n test: ranges.checker(prefix),\n hook: hook,\n safe: false !== prefix.safe\n }\n prehooks.push(h)\n return remover(prehooks, h)\n },\n posthooks: posthooks,\n prehooks: prehooks\n }\n\n //POST HOOKS\n\n function each (e) {\n if(e && e.type) {\n posthooks.forEach(function (h) {\n if(h.test(e.key)) h.hook(e)\n })\n }\n }\n\n db.on('put', function (key, val) {\n each({type: 'put', key: key, value: val})\n })\n db.on('del', function (key, val) {\n each({type: 'del', key: key, value: val})\n })\n db.on('batch', function onBatch (ary) {\n ary.forEach(each)\n })\n\n //PRE HOOKS\n\n var put = db.put\n var del = db.del\n var batch = db.batch\n\n function callHooks (isBatch, b, opts, cb) {\n try {\n b.forEach(function hook(e, i) {\n prehooks.forEach(function (h) {\n if(h.test(String(e.key))) {\n //optimize this?\n //maybe faster to not create a new object each time?\n //have one object and expose scope to it?\n var context = {\n add: function (ch, db) {\n if(typeof ch === 'undefined') {\n return this\n }\n if(ch === false)\n return delete b[i]\n var prefix = (\n getPrefix(ch.prefix) || \n getPrefix(db) || \n h.prefix || ''\n ) \n //don't leave a circular json object there incase using multilevel.\n if(prefix) ch.prefix = prefix\n ch.key = prefix + ch.key\n if(h.safe && h.test(String(ch.key))) {\n //this usually means a stack overflow.\n throw new Error('prehook cannot insert into own range')\n }\n var ke = ch.keyEncoding || getKeyEncoding(ch.prefix)\n var ve = ch.valueEncoding || getValueEncoding(ch.prefix)\n if(ke) ch.keyEncoding = ke\n if(ve) ch.valueEncoding = ve\n\n b.push(ch)\n hook(ch, b.length - 1)\n return this\n },\n put: function (ch, db) {\n if('object' === typeof ch) ch.type = 'put'\n return this.add(ch, db)\n },\n del: function (ch, db) {\n if('object' === typeof ch) ch.type = 'del'\n return this.add(ch, db)\n },\n veto: function () {\n return this.add(false)\n }\n }\n h.hook.call(context, e, context.add, b)\n }\n })\n })\n } catch (err) {\n return (cb || opts)(err)\n }\n b = b.filter(function (e) {\n return e && e.type //filter out empty items\n })\n\n if(b.length == 1 && !isBatch) {\n var change = b[0]\n return change.type == 'put' \n ? put.call(db, change.key, change.value, opts, cb) \n : del.call(db, change.key, opts, cb) \n }\n return batch.call(db, b, opts, cb)\n }\n\n db.put = function (key, value, opts, cb ) {\n var batch = [{key: key, value: value, type: 'put'}]\n return callHooks(false, batch, opts, cb)\n }\n\n db.del = function (key, opts, cb) {\n var batch = [{key: key, type: 'del'}]\n return callHooks(false, batch, opts, cb)\n }\n\n db.batch = function (batch, opts, cb) {\n return callHooks(true, batch, opts, cb)\n }\n}\n","module.exports = Level\n\nvar IDB = require('idb-wrapper')\nvar AbstractLevelDOWN = require('abstract-leveldown').AbstractLevelDOWN\nvar util = require('util')\nvar Iterator = require('./iterator')\nvar isBuffer = require('isbuffer')\nvar xtend = require('xtend')\nvar toBuffer = require('typedarray-to-buffer')\n\nfunction Level(location) {\n if (!(this instanceof Level)) return new Level(location)\n if (!location) throw new Error(\"constructor requires at least a location argument\")\n this.IDBOptions = {}\n this.location = location\n}\n\nutil.inherits(Level, AbstractLevelDOWN)\n\nLevel.prototype._open = function(options, callback) {\n var self = this\n \n var idbOpts = {\n storeName: this.location,\n autoIncrement: false,\n keyPath: null,\n onStoreReady: function () {\n callback && callback(null, self.idb)\n }, \n onError: function(err) {\n callback && callback(err)\n }\n }\n \n xtend(idbOpts, options)\n this.IDBOptions = idbOpts\n this.idb = new IDB(idbOpts)\n}\n\nLevel.prototype._get = function (key, options, callback) {\n this.idb.get(key, function (value) {\n if (value === undefined) {\n // 'NotFound' error, consistent with LevelDOWN API\n return callback(new Error('NotFound'))\n }\n // by default return buffers, unless explicitly told not to\n var asBuffer = true\n if (options.asBuffer === false) asBuffer = false\n if (options.raw) asBuffer = false\n if (asBuffer) {\n if (value instanceof Uint8Array) value = toBuffer(value)\n else value = new Buffer(String(value))\n }\n return callback(null, value, key)\n }, callback)\n}\n\nLevel.prototype._del = function(id, options, callback) {\n this.idb.remove(id, callback, callback)\n}\n\nLevel.prototype._put = function (key, value, options, callback) {\n if (value instanceof ArrayBuffer) {\n value = toBuffer(new Uint8Array(value))\n }\n var obj = this.convertEncoding(key, value, options)\n if (Buffer.isBuffer(obj.value)) {\n if (typeof value.toArrayBuffer === 'function') {\n obj.value = new Uint8Array(value.toArrayBuffer())\n } else {\n obj.value = new Uint8Array(value)\n }\n }\n this.idb.put(obj.key, obj.value, function() { callback() }, callback)\n}\n\nLevel.prototype.convertEncoding = function(key, value, options) {\n if (options.raw) return {key: key, value: value}\n if (value) {\n var stringed = value.toString()\n if (stringed === 'NaN') value = 'NaN'\n }\n var valEnc = options.valueEncoding\n var obj = {key: key, value: value}\n if (value && (!valEnc || valEnc !== 'binary')) {\n if (typeof obj.value !== 'object') {\n obj.value = stringed\n }\n }\n return obj\n}\n\nLevel.prototype.iterator = function (options) {\n if (typeof options !== 'object') options = {}\n return new Iterator(this.idb, options)\n}\n\nLevel.prototype._batch = function (array, options, callback) {\n var op\n var i\n var k\n var copiedOp\n var currentOp\n var modified = []\n \n if (array.length === 0) return setTimeout(callback, 0)\n \n for (i = 0; i < array.length; i++) {\n copiedOp = {}\n currentOp = array[i]\n modified[i] = copiedOp\n \n var converted = this.convertEncoding(currentOp.key, currentOp.value, options)\n currentOp.key = converted.key\n currentOp.value = converted.value\n\n for (k in currentOp) {\n if (k === 'type' && currentOp[k] == 'del') {\n copiedOp[k] = 'remove'\n } else {\n copiedOp[k] = currentOp[k]\n }\n }\n }\n\n return this.idb.batch(modified, function(){ callback() }, callback)\n}\n\nLevel.prototype._close = function (callback) {\n this.idb.db.close()\n callback()\n}\n\nLevel.prototype._approximateSize = function (start, end, callback) {\n var err = new Error('Not implemented')\n if (callback)\n return callback(err)\n\n throw err\n}\n\nLevel.prototype._isBuffer = function (obj) {\n return Buffer.isBuffer(obj)\n}\n\nLevel.destroy = function (db, callback) {\n if (typeof db === 'object') {\n var prefix = db.IDBOptions.storePrefix || 'IDBWrapper-'\n var dbname = db.location\n } else {\n var prefix = 'IDBWrapper-'\n var dbname = db\n }\n var request = indexedDB.deleteDatabase(prefix + dbname)\n request.onsuccess = function() {\n callback()\n }\n request.onerror = function(err) {\n callback(err)\n }\n}\n\nvar checkKeyValue = Level.prototype._checkKeyValue = function (obj, type) {\n if (obj === null || obj === undefined)\n return new Error(type + ' cannot be `null` or `undefined`')\n if (obj === null || obj === undefined)\n return new Error(type + ' cannot be `null` or `undefined`')\n if (isBuffer(obj) && obj.byteLength === 0)\n return new Error(type + ' cannot be an empty ArrayBuffer')\n if (String(obj) === '')\n return new Error(type + ' cannot be an empty String')\n if (obj.length === 0)\n return new Error(type + ' cannot be an empty Array')\n}\n","var util = require('util')\nvar AbstractIterator = require('abstract-leveldown').AbstractIterator\nvar ltgt = require('ltgt')\n\nmodule.exports = Iterator\n\nfunction Iterator (db, options) {\n if (!options) options = {}\n this.options = options\n AbstractIterator.call(this, db)\n this._order = options.reverse ? 'DESC': 'ASC'\n this._limit = options.limit\n this._count = 0\n this._done = false\n var lower = ltgt.lowerBound(options)\n var upper = ltgt.upperBound(options)\n try {\n this._keyRange = lower || upper ? this.db.makeKeyRange({\n lower: lower,\n upper: upper,\n excludeLower: ltgt.lowerBoundExclusive(options),\n excludeUpper: ltgt.upperBoundExclusive(options)\n }) : null\n } catch (e) {\n // The lower key is greater than the upper key.\n // IndexedDB throws an error, but we'll just return 0 results.\n this._keyRangeError = true\n }\n this.callback = null\n}\n\nutil.inherits(Iterator, AbstractIterator)\n\nIterator.prototype.createIterator = function() {\n var self = this\n\n self.iterator = self.db.iterate(function () {\n self.onItem.apply(self, arguments)\n }, {\n keyRange: self._keyRange,\n autoContinue: false,\n order: self._order,\n onError: function(err) { console.log('horrible error', err) },\n })\n}\n\n// TODO the limit implementation here just ignores all reads after limit has been reached\n// it should cancel the iterator instead but I don't know how\nIterator.prototype.onItem = function (value, cursor, cursorTransaction) {\n if (!cursor && this.callback) {\n this.callback()\n this.callback = false\n return\n }\n var shouldCall = true\n\n if (!!this._limit && this._limit > 0 && this._count++ >= this._limit)\n shouldCall = false\n\n if (shouldCall) this.callback(false, cursor.key, cursor.value)\n if (cursor) cursor['continue']()\n}\n\nIterator.prototype._next = function (callback) {\n if (!callback) return new Error('next() requires a callback argument')\n if (this._keyRangeError) return callback()\n if (!this._started) {\n this.createIterator()\n this._started = true\n }\n this.callback = callback\n}\n","var hasOwn = Object.prototype.hasOwnProperty;\nvar toString = Object.prototype.toString;\n\nvar isFunction = function (fn) {\n\tvar isFunc = (typeof fn === 'function' && !(fn instanceof RegExp)) || toString.call(fn) === '[object Function]';\n\tif (!isFunc && typeof window !== 'undefined') {\n\t\tisFunc = fn === window.setTimeout || fn === window.alert || fn === window.confirm || fn === window.prompt;\n\t}\n\treturn isFunc;\n};\n\nmodule.exports = function forEach(obj, fn) {\n\tif (!isFunction(fn)) {\n\t\tthrow new TypeError('iterator must be a function');\n\t}\n\tvar i, k,\n\t\tisString = typeof obj === 'string',\n\t\tl = obj.length,\n\t\tcontext = arguments.length > 2 ? arguments[2] : null;\n\tif (l === +l) {\n\t\tfor (i = 0; i < l; i++) {\n\t\t\tif (context === null) {\n\t\t\t\tfn(isString ? obj.charAt(i) : obj[i], i, obj);\n\t\t\t} else {\n\t\t\t\tfn.call(context, isString ? obj.charAt(i) : obj[i], i, obj);\n\t\t\t}\n\t\t}\n\t} else {\n\t\tfor (k in obj) {\n\t\t\tif (hasOwn.call(obj, k)) {\n\t\t\t\tif (context === null) {\n\t\t\t\t\tfn(obj[k], k, obj);\n\t\t\t\t} else {\n\t\t\t\t\tfn.call(context, obj[k], k, obj);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n};\n\n","module.exports = Object.keys || require('./shim');\n\n","var toString = Object.prototype.toString;\n\nmodule.exports = function isArguments(value) {\n\tvar str = toString.call(value);\n\tvar isArguments = str === '[object Arguments]';\n\tif (!isArguments) {\n\t\tisArguments = str !== '[object Array]'\n\t\t\t&& value !== null\n\t\t\t&& typeof value === 'object'\n\t\t\t&& typeof value.length === 'number'\n\t\t\t&& value.length >= 0\n\t\t\t&& toString.call(value.callee) === '[object Function]';\n\t}\n\treturn isArguments;\n};\n\n","(function () {\n\t\"use strict\";\n\n\t// modified from https://github.com/kriskowal/es5-shim\n\tvar has = Object.prototype.hasOwnProperty,\n\t\ttoString = Object.prototype.toString,\n\t\tforEach = require('./foreach'),\n\t\tisArgs = require('./isArguments'),\n\t\thasDontEnumBug = !({'toString': null}).propertyIsEnumerable('toString'),\n\t\thasProtoEnumBug = (function () {}).propertyIsEnumerable('prototype'),\n\t\tdontEnums = [\n\t\t\t\"toString\",\n\t\t\t\"toLocaleString\",\n\t\t\t\"valueOf\",\n\t\t\t\"hasOwnProperty\",\n\t\t\t\"isPrototypeOf\",\n\t\t\t\"propertyIsEnumerable\",\n\t\t\t\"constructor\"\n\t\t],\n\t\tkeysShim;\n\n\tkeysShim = function keys(object) {\n\t\tvar isObject = object !== null && typeof object === 'object',\n\t\t\tisFunction = toString.call(object) === '[object Function]',\n\t\t\tisArguments = isArgs(object),\n\t\t\ttheKeys = [];\n\n\t\tif (!isObject && !isFunction && !isArguments) {\n\t\t\tthrow new TypeError(\"Object.keys called on a non-object\");\n\t\t}\n\n\t\tif (isArguments) {\n\t\t\tforEach(object, function (value) {\n\t\t\t\ttheKeys.push(value);\n\t\t\t});\n\t\t} else {\n\t\t\tvar name,\n\t\t\t\tskipProto = hasProtoEnumBug && isFunction;\n\n\t\t\tfor (name in object) {\n\t\t\t\tif (!(skipProto && name === 'prototype') && has.call(object, name)) {\n\t\t\t\t\ttheKeys.push(name);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif (hasDontEnumBug) {\n\t\t\tvar ctor = object.constructor,\n\t\t\t\tskipConstructor = ctor && ctor.prototype === object;\n\n\t\t\tforEach(dontEnums, function (dontEnum) {\n\t\t\t\tif (!(skipConstructor && dontEnum === 'constructor') && has.call(object, dontEnum)) {\n\t\t\t\t\ttheKeys.push(dontEnum);\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t\treturn theKeys;\n\t};\n\n\tmodule.exports = keysShim;\n}());\n\n","/**\n * Convert a typed array to a Buffer without a copy\n *\n * Author: Feross Aboukhadijeh \n * License: MIT\n *\n * `npm install typedarray-to-buffer`\n */\n\nmodule.exports = function (arr) {\n if (typeof Buffer._augment === 'function' && Buffer.TYPED_ARRAY_SUPPORT) {\n // If `Buffer` is from the `buffer` module and this browser supports typed arrays,\n // then augment it with all the `Buffer` methods.\n return Buffer._augment(arr)\n } else {\n // Otherwise, fallback to creating a `Buffer` with a copy.\n return new Buffer(arr)\n }\n}\n","module.exports = hasKeys\n\nfunction hasKeys(source) {\n return source !== null &&\n (typeof source === \"object\" ||\n typeof source === \"function\")\n}\n","var Keys = require(\"object-keys\")\nvar hasKeys = require(\"./has-keys\")\n\nmodule.exports = extend\n\nfunction extend() {\n var target = {}\n\n for (var i = 0; i < arguments.length; i++) {\n var source = arguments[i]\n\n if (!hasKeys(source)) {\n continue\n }\n\n var keys = Keys(source)\n\n for (var j = 0; j < keys.length; j++) {\n var name = keys[j]\n target[name] = source[name]\n }\n }\n\n return target\n}\n","var fixRange = require('level-fix-range')\n//get the first/last record in a range\n\nexports = module.exports = peek\nexports.first = first\nexports.last = last\n\nfunction once(emitter, events, listener) {\n var remove = []\n events.forEach(function (e) {\n function onEvent (arg) {\n if(listener(e, arg) === false) return\n remove.forEach(function (r) {\n r()\n })\n }\n emitter.on(e, onEvent)\n remove.push(function () {\n emitter.removeListener(e, onEvent)\n })\n })\n return emitter\n}\n\n\nfunction peek (db, opts, cb) {\n opts.limit = opts.reverse ? 2 : 1\n var stream = once(db.createReadStream(opts), \n ['data', 'error', 'end'],\n function (event, data) {\n if(opts.reverse && data && opts.start \n && (data.key.toString() > opts.start))\n return false\n if(event == 'error') cb(data)\n else if(event == 'end') cb(new Error('range not found'), null, null)\n else cb(null, data.key, data.value)\n })\n}\n\nfunction first (db, opts, cb) {\n if (!cb) {\n cb = opts;\n opts = {};\n }\n opts.reverse = false\n return peek(db, fixRange(opts), cb) \n}\n\n//SO, this is pretty horrible,\n//but it's works around an issue here\n//https://github.com/rvagg/node-levelup/issues/110\n\nfunction last (db, opts, cb) {\n if (!cb) {\n cb = opts;\n opts = {};\n }\n var start = opts.start\n opts.reverse = true\n return peek(db, fixRange(opts), function (err, key, value) {\n if(err) {\n var _start = opts.start\n opts.start = null\n peek (db, opts, function (_, key, value) {\n if(!key) return cb(err, null, null)\n var _key = key.toString()\n if(_key <= _start && (!opts.end || _key >= opts.end))\n cb(_, key, value)\n else cb(err, null, null)\n })\n }\n else cb(err, key, value)\n })\n}\n\n","\nmodule.exports = \nfunction fixRange(opts) {\n var reverse = opts.reverse\n var end = opts.end\n var start = opts.start\n\n var range = [start, end]\n if(start != null && end != null)\n range.sort()\n if(reverse)\n range = range.reverse()\n\n opts.start = range[0]\n opts.end = range[1]\n return opts\n}\n\n","function addOperation (type, key, value, options) {\n var operation = {\n type: type,\n key: key,\n value: value,\n options: options\n }\n\n if (options && options.prefix) {\n operation.prefix = options.prefix\n delete options.prefix\n }\n\n this._operations.push(operation)\n\n return this\n}\n\nfunction Batch(sdb) {\n this._operations = []\n this._sdb = sdb\n\n this.put = addOperation.bind(this, 'put')\n this.del = addOperation.bind(this, 'del')\n}\n\nvar B = Batch.prototype\n\n\nB.clear = function () {\n this._operations = []\n}\n\nB.write = function (cb) {\n this._sdb.batch(this._operations, cb)\n}\n\nmodule.exports = Batch\n","var EventEmitter = require('events').EventEmitter\nvar next = process.nextTick\nvar SubDb = require('./sub')\nvar Batch = require('./batch')\nvar fixRange = require('level-fix-range')\n\nvar Hooks = require('level-hooks')\n\nmodule.exports = function (_db, options) {\n function DB () {}\n DB.prototype = _db\n var db = new DB()\n\n if (db.sublevel) return db\n\n options = options || {}\n\n //use \\xff (255) as the seperator,\n //so that sections of the database will sort after the regular keys\n var sep = options.sep = options.sep || '\\xff'\n db._options = options\n\n Hooks(db)\n\n db.sublevels = {}\n\n db.sublevel = function (prefix, options) {\n if(db.sublevels[prefix])\n return db.sublevels[prefix]\n return new SubDb(db, prefix, options || this._options)\n }\n\n db.methods = {}\n\n db.prefix = function (key) {\n return '' + (key || '')\n }\n\n db.pre = function (range, hook) {\n if(!hook)\n hook = range, range = {\n max : sep\n }\n return db.hooks.pre(range, hook)\n }\n\n db.post = function (range, hook) {\n if(!hook)\n hook = range, range = {\n max : sep\n }\n return db.hooks.post(range, hook)\n }\n\n function safeRange(fun) {\n return function (opts) {\n opts = opts || {}\n opts = fixRange(opts)\n\n if(opts.reverse) opts.start = opts.start || sep\n else opts.end = opts.end || sep\n\n return fun.call(db, opts)\n }\n }\n\n db.readStream =\n db.createReadStream = safeRange(db.createReadStream)\n db.keyStream =\n db.createKeyStream = safeRange(db.createKeyStream)\n db.valuesStream =\n db.createValueStream = safeRange(db.createValueStream)\n\n var batch = db.batch\n db.batch = function (changes, opts, cb) {\n if(!Array.isArray(changes))\n return new Batch(db)\n changes.forEach(function (e) {\n if(e.prefix) {\n if('function' === typeof e.prefix.prefix)\n e.key = e.prefix.prefix(e.key)\n else if('string' === typeof e.prefix)\n e.key = e.prefix + e.key\n }\n })\n batch.call(db, changes, opts, cb)\n }\n return db\n}\n\n","module.exports = Object.keys || require('./shim');\n\n","(function () {\n\t\"use strict\";\n\n\t// modified from https://github.com/kriskowal/es5-shim\n\tvar has = Object.prototype.hasOwnProperty,\n\t\tis = require('is'),\n\t\tforEach = require('foreach'),\n\t\thasDontEnumBug = !({'toString': null}).propertyIsEnumerable('toString'),\n\t\tdontEnums = [\n\t\t\t\"toString\",\n\t\t\t\"toLocaleString\",\n\t\t\t\"valueOf\",\n\t\t\t\"hasOwnProperty\",\n\t\t\t\"isPrototypeOf\",\n\t\t\t\"propertyIsEnumerable\",\n\t\t\t\"constructor\"\n\t\t],\n\t\tkeysShim;\n\n\tkeysShim = function keys(object) {\n\t\tif (!is.object(object) && !is.array(object)) {\n\t\t\tthrow new TypeError(\"Object.keys called on a non-object\");\n\t\t}\n\n\t\tvar name, theKeys = [];\n\t\tfor (name in object) {\n\t\t\tif (has.call(object, name)) {\n\t\t\t\ttheKeys.push(name);\n\t\t\t}\n\t\t}\n\n\t\tif (hasDontEnumBug) {\n\t\t\tforEach(dontEnums, function (dontEnum) {\n\t\t\t\tif (has.call(object, dontEnum)) {\n\t\t\t\t\ttheKeys.push(dontEnum);\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t\treturn theKeys;\n\t};\n\n\tmodule.exports = keysShim;\n}());\n\n","module.exports = hasKeys\n\nfunction hasKeys(source) {\n return source !== null &&\n (typeof source === \"object\" ||\n typeof source === \"function\")\n}\n","var Keys = require(\"object-keys\")\nvar hasKeys = require(\"./has-keys\")\n\nmodule.exports = extend\n\nfunction extend() {\n var target = {}\n\n for (var i = 0; i < arguments.length; i++) {\n var source = arguments[i]\n\n if (!hasKeys(source)) {\n continue\n }\n\n var keys = Keys(source)\n\n for (var j = 0; j < keys.length; j++) {\n var name = keys[j]\n target[name] = source[name]\n }\n }\n\n return target\n}\n","var EventEmitter = require('events').EventEmitter\nvar inherits = require('util').inherits\nvar ranges = require('string-range')\nvar fixRange = require('level-fix-range')\nvar xtend = require('xtend')\nvar Batch = require('./batch')\n\ninherits(SubDB, EventEmitter)\n\nfunction SubDB (db, prefix, options) {\n if('string' === typeof options) {\n console.error('db.sublevel(name, seperator) is depreciated')\n console.error('use db.sublevel(name, {sep: separator})) if you must')\n options = {sep: options}\n }\n if(!(this instanceof SubDB)) return new SubDB(db, prefix, options)\n if(!db) throw new Error('must provide db')\n if(!prefix) throw new Error('must provide prefix')\n\n options = options || {}\n options.sep = options.sep || '\\xff'\n\n this._parent = db\n this._options = options\n this.options = options\n this._prefix = prefix\n this._root = root(this)\n db.sublevels[prefix] = this\n this.sublevels = {}\n this.methods = {}\n var self = this\n this.hooks = {\n pre: function () {\n return self.pre.apply(self, arguments)\n },\n post: function () {\n return self.post.apply(self, arguments)\n }\n }\n}\n\nvar SDB = SubDB.prototype\n\nSDB._key = function (key) {\n var sep = this._options.sep\n return sep\n + this._prefix\n + sep\n + key\n}\n\nSDB._getOptsAndCb = function (opts, cb) {\n if (typeof opts == 'function') {\n cb = opts\n opts = {}\n }\n return { opts: xtend(opts, this._options), cb: cb }\n}\n\nSDB.sublevel = function (prefix, options) {\n if(this.sublevels[prefix])\n return this.sublevels[prefix]\n return new SubDB(this, prefix, options || this._options)\n}\n\nSDB.put = function (key, value, opts, cb) {\n var res = this._getOptsAndCb(opts, cb)\n this._root.put(this.prefix(key), value, res.opts, res.cb)\n}\n\nSDB.get = function (key, opts, cb) {\n var res = this._getOptsAndCb(opts, cb)\n this._root.get(this.prefix(key), res.opts, res.cb)\n}\n\nSDB.del = function (key, opts, cb) {\n var res = this._getOptsAndCb(opts, cb)\n this._root.del(this.prefix(key), res.opts, res.cb)\n}\n\nSDB.batch = function (changes, opts, cb) {\n if(!Array.isArray(changes))\n return new Batch(this)\n var self = this,\n res = this._getOptsAndCb(opts, cb)\n changes.forEach(function (ch) {\n\n //OH YEAH, WE NEED TO VALIDATE THAT UPDATING THIS KEY/PREFIX IS ALLOWED\n if('string' === typeof ch.prefix)\n ch.key = ch.prefix + ch.key\n else\n ch.key = (ch.prefix || self).prefix(ch.key)\n\n if(ch.prefix) ch.prefix = null\n })\n this._root.batch(changes, res.opts, res.cb)\n}\n\nSDB._getKeyEncoding = function () {\n if(this.options.keyEncoding)\n return this.options.keyEncoding\n if(this._parent && this._parent._getKeyEncoding)\n return this._parent._getKeyEncoding()\n}\n\nSDB._getValueEncoding = function () {\n if(this.options.valueEncoding)\n return this.options.valueEncoding\n if(this._parent && this._parent._getValueEncoding)\n return this._parent._getValueEncoding()\n}\n\nSDB.prefix = function (key) {\n var sep = this._options.sep\n return this._parent.prefix() + sep + this._prefix + sep + (key || '')\n}\n\nSDB.keyStream =\nSDB.createKeyStream = function (opts) {\n opts = opts || {}\n opts.keys = true\n opts.values = false\n return this.createReadStream(opts)\n}\n\nSDB.valueStream =\nSDB.createValueStream = function (opts) {\n opts = opts || {}\n opts.keys = false\n opts.values = true\n opts.keys = false\n return this.createReadStream(opts)\n}\n\nfunction selectivelyMerge(_opts, opts) {\n [ 'valueEncoding'\n , 'encoding'\n , 'keyEncoding'\n , 'reverse'\n , 'values'\n , 'keys'\n , 'limit'\n , 'fillCache'\n ]\n .forEach(function (k) {\n if (opts.hasOwnProperty(k)) _opts[k] = opts[k]\n })\n}\n\nSDB.readStream =\nSDB.createReadStream = function (opts) {\n opts = opts || {}\n var r = root(this)\n var p = this.prefix()\n\n var _opts = ranges.prefix(opts, p)\n selectivelyMerge(_opts, xtend(opts, this._options))\n\n var s = r.createReadStream(_opts)\n\n if(_opts.values === false) {\n var read = s.read\n if (read) {\n s.read = function (size) {\n var val = read.call(this, size)\n if (val) val = val.substring(p.length)\n return val\n }\n } else {\n var emit = s.emit\n s.emit = function (event, val) {\n if(event === 'data') {\n emit.call(this, 'data', val.substring(p.length))\n } else\n emit.call(this, event, val)\n }\n }\n return s\n } else if(_opts.keys === false)\n return s\n else {\n var read = s.read\n if (read) {\n s.read = function (size) {\n var d = read.call(this, size)\n if (d) d.key = d.key.substring(p.length)\n return d\n }\n } else {\n s.on('data', function (d) {\n //mutate the prefix!\n //this doesn't work for createKeyStream admittedly.\n d.key = d.key.substring(p.length)\n })\n }\n return s\n }\n}\n\n\nSDB.writeStream =\nSDB.createWriteStream = function () {\n var r = root(this)\n var p = this.prefix()\n var ws = r.createWriteStream.apply(r, arguments)\n var write = ws.write\n\n var encoding = this._options.encoding\n var valueEncoding = this._options.valueEncoding\n var keyEncoding = this._options.keyEncoding\n\n // slight optimization, if no encoding was specified at all,\n // which will be the case most times, make write not check at all\n var nocheck = !encoding && !valueEncoding && !keyEncoding\n\n ws.write = nocheck\n ? function (data) {\n data.key = p + data.key\n return write.call(ws, data)\n }\n : function (data) {\n data.key = p + data.key\n\n // not merging all options here since this happens on every write and things could get slowed down\n // at this point we only consider encoding important to propagate\n if (encoding && typeof data.encoding === 'undefined')\n data.encoding = encoding\n if (valueEncoding && typeof data.valueEncoding === 'undefined')\n data.valueEncoding = valueEncoding\n if (keyEncoding && typeof data.keyEncoding === 'undefined')\n data.keyEncoding = keyEncoding\n\n return write.call(ws, data)\n }\n return ws\n}\n\nSDB.approximateSize = function () {\n var r = root(db)\n return r.approximateSize.apply(r, arguments)\n}\n\nfunction root(db) {\n if(!db._parent) return db\n return root(db._parent)\n}\n\nSDB.pre = function (range, hook) {\n if(!hook) hook = range, range = null\n range = ranges.prefix(range, this.prefix(), this._options.sep)\n var r = root(this._parent)\n var p = this.prefix()\n return r.hooks.pre(fixRange(range), function (ch, add, batch) {\n hook({\n key: ch.key.substring(p.length),\n value: ch.value,\n type: ch.type\n }, function (ch, _p) {\n //maybe remove the second add arg now\n //that op can have prefix?\n add(ch, ch.prefix ? _p : (_p || p))\n }, batch)\n })\n}\n\nSDB.post = function (range, hook) {\n if(!hook) hook = range, range = null\n var r = root(this._parent)\n var p = this.prefix()\n range = ranges.prefix(range, p, this._options.sep)\n return r.hooks.post(fixRange(range), function (data) {\n hook({key: data.key.substring(p.length), value: data.value, type: data.type})\n })\n}\n\nvar exports = module.exports = SubDB\n\n","/* Copyright (c) 2012-2014 LevelUP contributors\n * See list at \n * MIT License\n * \n */\n\nvar util = require('./util')\n , WriteError = require('./errors').WriteError\n\n , getOptions = util.getOptions\n , dispatchError = util.dispatchError\n\nfunction Batch (levelup) {\n this._levelup = levelup\n this.batch = levelup.db.batch()\n this.ops = []\n}\n\nBatch.prototype.put = function (key_, value_, options) {\n options = getOptions(this._levelup, options)\n\n var key = util.encodeKey(key_, options)\n , value = util.encodeValue(value_, options)\n\n try {\n this.batch.put(key, value)\n } catch (e) {\n throw new WriteError(e)\n }\n this.ops.push({ type : 'put', key : key, value : value })\n\n return this\n}\n\nBatch.prototype.del = function (key_, options) {\n options = getOptions(this._levelup, options)\n\n var key = util.encodeKey(key_, options)\n\n try {\n this.batch.del(key)\n } catch (err) {\n throw new WriteError(err)\n }\n this.ops.push({ type : 'del', key : key })\n\n return this\n}\n\nBatch.prototype.clear = function () {\n try {\n this.batch.clear()\n } catch (err) {\n throw new WriteError(err)\n }\n\n this.ops = []\n return this\n}\n\nBatch.prototype.write = function (callback) {\n var levelup = this._levelup\n , ops = this.ops\n\n try {\n this.batch.write(function (err) {\n if (err)\n return dispatchError(levelup, new WriteError(err), callback)\n levelup.emit('batch', ops)\n if (callback)\n callback()\n })\n } catch (err) {\n throw new WriteError(err)\n }\n}\n\nmodule.exports = Batch\n","/* Copyright (c) 2012-2014 LevelUP contributors\n * See list at \n * MIT License\n * \n */\n\nvar createError = require('errno').create\n , LevelUPError = createError('LevelUPError')\n , NotFoundError = createError('NotFoundError', LevelUPError)\n\nNotFoundError.prototype.notFound = true\nNotFoundError.prototype.status = 404\n\nmodule.exports = {\n LevelUPError : LevelUPError\n , InitializationError : createError('InitializationError', LevelUPError)\n , OpenError : createError('OpenError', LevelUPError)\n , ReadError : createError('ReadError', LevelUPError)\n , WriteError : createError('WriteError', LevelUPError)\n , NotFoundError : NotFoundError\n , EncodingError : createError('EncodingError', LevelUPError)\n}\n","/* Copyright (c) 2012-2014 LevelUP contributors\n * See list at \n * MIT License\n * \n */\n\nvar EventEmitter = require('events').EventEmitter\n , inherits = require('util').inherits\n , extend = require('xtend')\n , prr = require('prr')\n , DeferredLevelDOWN = require('deferred-leveldown')\n\n , WriteError = require('./errors').WriteError\n , ReadError = require('./errors').ReadError\n , NotFoundError = require('./errors').NotFoundError\n , OpenError = require('./errors').OpenError\n , EncodingError = require('./errors').EncodingError\n , InitializationError = require('./errors').InitializationError\n\n , ReadStream = require('./read-stream')\n , WriteStream = require('./write-stream')\n , util = require('./util')\n , Batch = require('./batch')\n\n , getOptions = util.getOptions\n , defaultOptions = util.defaultOptions\n , getLevelDOWN = util.getLevelDOWN\n , dispatchError = util.dispatchError\n\nfunction getCallback (options, callback) {\n return typeof options == 'function' ? options : callback\n}\n\n// Possible LevelUP#_status values:\n// - 'new' - newly created, not opened or closed\n// - 'opening' - waiting for the database to be opened, post open()\n// - 'open' - successfully opened the database, available for use\n// - 'closing' - waiting for the database to be closed, post close()\n// - 'closed' - database has been successfully closed, should not be\n// used except for another open() operation\n\nfunction LevelUP (location, options, callback) {\n if (!(this instanceof LevelUP))\n return new LevelUP(location, options, callback)\n\n var error\n\n EventEmitter.call(this)\n this.setMaxListeners(Infinity)\n\n if (typeof location == 'function') {\n options = typeof options == 'object' ? options : {}\n options.db = location\n location = null\n } else if (typeof location == 'object' && typeof location.db == 'function') {\n options = location\n location = null\n }\n\n if (typeof options == 'function') {\n callback = options\n options = {}\n }\n\n if ((!options || typeof options.db != 'function') && typeof location != 'string') {\n error = new InitializationError(\n 'Must provide a location for the database')\n if (callback) {\n return process.nextTick(function () {\n callback(error)\n })\n }\n throw error\n }\n\n options = getOptions(this, options)\n this.options = extend(defaultOptions, options)\n this._status = 'new'\n // set this.location as enumerable but not configurable or writable\n prr(this, 'location', location, 'e')\n\n this.open(callback)\n}\n\ninherits(LevelUP, EventEmitter)\n\nLevelUP.prototype.open = function (callback) {\n var self = this\n , dbFactory\n , db\n\n if (this.isOpen()) {\n if (callback)\n process.nextTick(function () { callback(null, self) })\n return this\n }\n\n if (this._isOpening()) {\n return callback && this.once(\n 'open'\n , function () { callback(null, self) }\n )\n }\n\n this.emit('opening')\n\n this._status = 'opening'\n this.db = new DeferredLevelDOWN(this.location)\n dbFactory = this.options.db || getLevelDOWN()\n db = dbFactory(this.location)\n\n db.open(this.options, function (err) {\n if (err) {\n return dispatchError(self, new OpenError(err), callback)\n } else {\n self.db.setDb(db)\n self.db = db\n self._status = 'open'\n if (callback)\n callback(null, self)\n self.emit('open')\n self.emit('ready')\n }\n })\n}\n\nLevelUP.prototype.close = function (callback) {\n var self = this\n\n if (this.isOpen()) {\n this._status = 'closing'\n this.db.close(function () {\n self._status = 'closed'\n self.emit('closed')\n if (callback)\n callback.apply(null, arguments)\n })\n this.emit('closing')\n this.db = null\n } else if (this._status == 'closed' && callback) {\n return process.nextTick(callback)\n } else if (this._status == 'closing' && callback) {\n this.once('closed', callback)\n } else if (this._isOpening()) {\n this.once('open', function () {\n self.close(callback)\n })\n }\n}\n\nLevelUP.prototype.isOpen = function () {\n return this._status == 'open'\n}\n\nLevelUP.prototype._isOpening = function () {\n return this._status == 'opening'\n}\n\nLevelUP.prototype.isClosed = function () {\n return (/^clos/).test(this._status)\n}\n\nLevelUP.prototype.get = function (key_, options, callback) {\n var self = this\n , key\n\n callback = getCallback(options, callback)\n\n if (typeof callback != 'function') {\n return dispatchError(\n this\n , new ReadError('get() requires key and callback arguments')\n )\n }\n\n if (!this._isOpening() && !this.isOpen()) {\n return dispatchError(\n this\n , new ReadError('Database is not open')\n , callback\n )\n }\n\n options = util.getOptions(this, options)\n key = util.encodeKey(key_, options)\n\n options.asBuffer = util.isValueAsBuffer(options)\n\n this.db.get(key, options, function (err, value) {\n if (err) {\n if ((/notfound/i).test(err)) {\n err = new NotFoundError(\n 'Key not found in database [' + key_ + ']', err)\n } else {\n err = new ReadError(err)\n }\n return dispatchError(self, err, callback)\n }\n if (callback) {\n try {\n value = util.decodeValue(value, options)\n } catch (e) {\n return callback(new EncodingError(e))\n }\n callback(null, value)\n }\n })\n}\n\nLevelUP.prototype.put = function (key_, value_, options, callback) {\n var self = this\n , key\n , value\n\n callback = getCallback(options, callback)\n\n if (key_ === null || key_ === undefined\n || value_ === null || value_ === undefined) {\n return dispatchError(\n this\n , new WriteError('put() requires key and value arguments')\n , callback\n )\n }\n\n if (!this._isOpening() && !this.isOpen()) {\n return dispatchError(\n this\n , new WriteError('Database is not open')\n , callback\n )\n }\n\n options = getOptions(this, options)\n key = util.encodeKey(key_, options)\n value = util.encodeValue(value_, options)\n\n this.db.put(key, value, options, function (err) {\n if (err) {\n return dispatchError(self, new WriteError(err), callback)\n } else {\n self.emit('put', key_, value_)\n if (callback)\n callback()\n }\n })\n}\n\nLevelUP.prototype.del = function (key_, options, callback) {\n var self = this\n , key\n\n callback = getCallback(options, callback)\n\n if (key_ === null || key_ === undefined) {\n return dispatchError(\n this\n , new WriteError('del() requires a key argument')\n , callback\n )\n }\n\n if (!this._isOpening() && !this.isOpen()) {\n return dispatchError(\n this\n , new WriteError('Database is not open')\n , callback\n )\n }\n\n options = getOptions(this, options)\n key = util.encodeKey(key_, options)\n\n this.db.del(key, options, function (err) {\n if (err) {\n return dispatchError(self, new WriteError(err), callback)\n } else {\n self.emit('del', key_)\n if (callback)\n callback()\n }\n })\n}\n\nLevelUP.prototype.batch = function (arr_, options, callback) {\n var self = this\n , keyEnc\n , valueEnc\n , arr\n\n if (!arguments.length)\n return new Batch(this)\n\n callback = getCallback(options, callback)\n\n if (!Array.isArray(arr_)) {\n return dispatchError(\n this\n , new WriteError('batch() requires an array argument')\n , callback\n )\n }\n\n if (!this._isOpening() && !this.isOpen()) {\n return dispatchError(\n this\n , new WriteError('Database is not open')\n , callback\n )\n }\n\n options = getOptions(this, options)\n keyEnc = options.keyEncoding\n valueEnc = options.valueEncoding\n\n arr = arr_.map(function (e) {\n if (e.type === undefined || e.key === undefined)\n return {}\n\n // inherit encoding\n var kEnc = e.keyEncoding || keyEnc\n , vEnc = e.valueEncoding || e.encoding || valueEnc\n , o\n\n // If we're not dealing with plain utf8 strings or plain\n // Buffers then we have to do some work on the array to\n // encode the keys and/or values. This includes JSON types.\n\n if (kEnc != 'utf8' && kEnc != 'binary'\n || vEnc != 'utf8' && vEnc != 'binary') {\n o = {\n type: e.type\n , key: util.encodeKey(e.key, options, e)\n }\n\n if (e.value !== undefined)\n o.value = util.encodeValue(e.value, options, e)\n\n return o\n } else {\n return e\n }\n })\n\n this.db.batch(arr, options, function (err) {\n if (err) {\n return dispatchError(self, new WriteError(err), callback)\n } else {\n self.emit('batch', arr_)\n if (callback)\n callback()\n }\n })\n}\n\n// DEPRECATED: prefer accessing LevelDOWN for this: db.db.approximateSize()\nLevelUP.prototype.approximateSize = function (start_, end_, callback) {\n var self = this\n , start\n , end\n\n if (start_ === null || start_ === undefined\n || end_ === null || end_ === undefined\n || typeof callback != 'function') {\n return dispatchError(\n this\n , new ReadError('approximateSize() requires start, end and callback arguments')\n , callback\n )\n }\n\n start = util.encodeKey(start_, this.options)\n end = util.encodeKey(end_, this.options)\n\n if (!this._isOpening() && !this.isOpen()) {\n return dispatchError(\n this\n , new WriteError('Database is not open')\n , callback\n )\n }\n\n this.db.approximateSize(start, end, function (err, size) {\n if (err) {\n return dispatchError(self, new OpenError(err), callback)\n } else if (callback) {\n callback(null, size)\n }\n })\n}\n\nLevelUP.prototype.readStream =\nLevelUP.prototype.createReadStream = function (options) {\n var self = this\n options = extend(this.options, options)\n return new ReadStream(\n options\n , this\n , function (options) {\n return self.db.iterator(options)\n }\n )\n}\n\nLevelUP.prototype.keyStream =\nLevelUP.prototype.createKeyStream = function (options) {\n return this.createReadStream(extend(options, { keys: true, values: false }))\n}\n\nLevelUP.prototype.valueStream =\nLevelUP.prototype.createValueStream = function (options) {\n return this.createReadStream(extend(options, { keys: false, values: true }))\n}\n\nLevelUP.prototype.writeStream =\nLevelUP.prototype.createWriteStream = function (options) {\n return new WriteStream(extend(options), this)\n}\n\nLevelUP.prototype.toString = function () {\n return 'LevelUP'\n}\n\nfunction utilStatic (name) {\n return function (location, callback) {\n getLevelDOWN()[name](location, callback || function () {})\n }\n}\n\nmodule.exports = LevelUP\nmodule.exports.copy = util.copy\n// DEPRECATED: prefer accessing LevelDOWN for this: require('leveldown').destroy()\nmodule.exports.destroy = utilStatic('destroy')\n// DEPRECATED: prefer accessing LevelDOWN for this: require('leveldown').repair()\nmodule.exports.repair = utilStatic('repair')\n","/* Copyright (c) 2012-2014 LevelUP contributors\n * See list at \n * MIT License \n */\n\n// NOTE: we are fixed to readable-stream@1.0.x for now\n// for pure Streams2 across Node versions\nvar Readable = require('readable-stream').Readable\n , inherits = require('util').inherits\n , extend = require('xtend')\n , EncodingError = require('./errors').EncodingError\n , util = require('./util')\n\n , defaultOptions = { keys: true, values: true }\n\n , makeKeyValueData = function (key, value) {\n return {\n key: util.decodeKey(key, this._options)\n , value: util.decodeValue(value, this._options)\n }\n }\n , makeKeyData = function (key) {\n return util.decodeKey(key, this._options)\n }\n , makeValueData = function (_, value) {\n return util.decodeValue(value, this._options)\n }\n , makeNoData = function () { return null }\n\nfunction ReadStream (options, db, iteratorFactory) {\n if (!(this instanceof ReadStream))\n return new ReadStream(options, db, iteratorFactory)\n\n Readable.call(this, { objectMode: true, highWaterMark: options.highWaterMark })\n\n // purely to keep `db` around until we're done so it's not GCed if the user doesn't keep a ref\n this._db = db\n\n options = this._options = extend(defaultOptions, options)\n\n this._keyEncoding = options.keyEncoding || options.encoding\n this._valueEncoding = options.valueEncoding || options.encoding\n\n if (typeof this._options.start != 'undefined')\n this._options.start = util.encodeKey(this._options.start, this._options)\n if (typeof this._options.end != 'undefined')\n this._options.end = util.encodeKey(this._options.end, this._options)\n if (typeof this._options.limit != 'number')\n this._options.limit = -1\n\n this._options.keyAsBuffer = util.isKeyAsBuffer(this._options)\n\n this._options.valueAsBuffer = util.isValueAsBuffer(this._options)\n\n this._makeData = this._options.keys && this._options.values\n ? makeKeyValueData : this._options.keys\n ? makeKeyData : this._options.values\n ? makeValueData : makeNoData\n\n var self = this\n if (!this._db.isOpen()) {\n this._db.once('ready', function () {\n if (!self._destroyed) {\n self._iterator = iteratorFactory(self._options)\n }\n })\n } else\n this._iterator = iteratorFactory(this._options)\n}\n\ninherits(ReadStream, Readable)\n\nReadStream.prototype._read = function read () {\n var self = this\n if (!self._db.isOpen()) {\n return self._db.once('ready', function () { read.call(self) })\n }\n if (self._destroyed)\n return\n \n self._iterator.next(function(err, key, value) {\n if (err || (key === undefined && value === undefined)) {\n if (!err && !self._destroyed)\n self.push(null)\n return self._cleanup(err)\n }\n\n try {\n value = self._makeData(key, value)\n } catch (e) {\n return self._cleanup(new EncodingError(e))\n }\n if (!self._destroyed)\n self.push(value)\n })\n}\n\nReadStream.prototype._cleanup = function (err) {\n if (this._destroyed)\n return\n\n this._destroyed = true\n\n var self = this\n if (err)\n self.emit('error', err)\n\n if (self._iterator) {\n self._iterator.end(function () {\n self._iterator = null\n self.emit('close')\n })\n } else {\n self.emit('close')\n }\n}\n\nReadStream.prototype.destroy = function () {\n this._cleanup()\n}\n\nReadStream.prototype.toString = function () {\n return 'LevelUP.ReadStream'\n}\n\nmodule.exports = ReadStream\n","/* Copyright (c) 2012-2014 LevelUP contributors\n * See list at \n * MIT License\n * \n */\n\nvar extend = require('xtend')\n , LevelUPError = require('./errors').LevelUPError\n\n , encodingNames = [\n 'hex'\n , 'utf8'\n , 'utf-8'\n , 'ascii'\n , 'binary'\n , 'base64'\n , 'ucs2'\n , 'ucs-2'\n , 'utf16le'\n , 'utf-16le'\n ]\n\n , defaultOptions = {\n createIfMissing : true\n , errorIfExists : false\n , keyEncoding : 'utf8'\n , valueEncoding : 'utf8'\n , compression : true\n }\n\n , leveldown\n\n , encodings = (function () {\n function isBinary (data) {\n return data === undefined || data === null || Buffer.isBuffer(data)\n }\n\n var encodings = {}\n encodings.utf8 = encodings['utf-8'] = {\n encode : function (data) {\n return isBinary(data) ? data : String(data)\n }\n , decode : function (data) {\n return data\n }\n , buffer : false\n , type : 'utf8'\n }\n encodings.json = {\n encode : JSON.stringify\n , decode : JSON.parse\n , buffer : false\n , type : 'json'\n }\n encodingNames.forEach(function (type) {\n if (encodings[type])\n return\n encodings[type] = {\n encode : function (data) {\n return isBinary(data) ? data : new Buffer(data, type)\n }\n , decode : function (buffer) {\n return process.browser ? buffer.toString(type) : buffer;\n }\n , buffer : true\n , type : type // useful for debugging purposes\n }\n })\n return encodings\n })()\n\n , encodingOpts = (function () {\n var eo = {}\n encodingNames.forEach(function (e) {\n eo[e] = { valueEncoding : e }\n })\n return eo\n }())\n\nfunction copy (srcdb, dstdb, callback) {\n srcdb.readStream()\n .pipe(dstdb.writeStream())\n .on('close', callback ? callback : function () {})\n .on('error', callback ? callback : function (err) { throw err })\n}\n\nfunction getOptions (levelup, options) {\n var s = typeof options == 'string' // just an encoding\n if (!s && options && options.encoding && !options.valueEncoding)\n options.valueEncoding = options.encoding\n return extend(\n (levelup && levelup.options) || {}\n , s ? encodingOpts[options] || encodingOpts[defaultOptions.valueEncoding]\n : options\n )\n}\n\nfunction getLevelDOWN () {\n if (leveldown)\n return leveldown\n\n var requiredVersion = require('../package.json').devDependencies.leveldown\n , missingLevelDOWNError = 'Could not locate LevelDOWN, try `npm install leveldown`'\n , leveldownVersion\n\n try {\n leveldownVersion = require('leveldown/package').version\n } catch (e) {\n throw new LevelUPError(missingLevelDOWNError)\n }\n\n if (!require('semver').satisfies(leveldownVersion, requiredVersion)) {\n throw new LevelUPError(\n 'Installed version of LevelDOWN ('\n + leveldownVersion\n + ') does not match required version ('\n + requiredVersion\n + ')'\n )\n }\n\n try {\n return leveldown = require('leveldown')\n } catch (e) {\n throw new LevelUPError(missingLevelDOWNError)\n }\n}\n\nfunction dispatchError (levelup, error, callback) {\n return typeof callback == 'function'\n ? callback(error)\n : levelup.emit('error', error)\n}\n\nfunction getKeyEncoder (options, op) {\n var type = ((op && op.keyEncoding) || options.keyEncoding) || 'utf8'\n return encodings[type] || type\n}\n\nfunction getValueEncoder (options, op) {\n var type = (((op && (op.valueEncoding || op.encoding))\n || options.valueEncoding || options.encoding)) || 'utf8'\n return encodings[type] || type\n}\n\nfunction encodeKey (key, options, op) {\n return getKeyEncoder(options, op).encode(key)\n}\n\nfunction encodeValue (value, options, op) {\n return getValueEncoder(options, op).encode(value)\n}\n\nfunction decodeKey (key, options) {\n return getKeyEncoder(options).decode(key)\n}\n\nfunction decodeValue (value, options) {\n return getValueEncoder(options).decode(value)\n}\n\nfunction isValueAsBuffer (options, op) {\n return getValueEncoder(options, op).buffer\n}\n\nfunction isKeyAsBuffer (options, op) {\n return getKeyEncoder(options, op).buffer\n}\n\nmodule.exports = {\n defaultOptions : defaultOptions\n , copy : copy\n , getOptions : getOptions\n , getLevelDOWN : getLevelDOWN\n , dispatchError : dispatchError\n , encodeKey : encodeKey\n , encodeValue : encodeValue\n , isValueAsBuffer : isValueAsBuffer\n , isKeyAsBuffer : isKeyAsBuffer\n , decodeValue : decodeValue\n , decodeKey : decodeKey\n}\n","/* Copyright (c) 2012-2014 LevelUP contributors\n * See list at \n * MIT License\n * \n */\n\nvar Stream = require('stream').Stream\n , inherits = require('util').inherits\n , extend = require('xtend')\n , bl = require('bl')\n\n , setImmediate = global.setImmediate || process.nextTick\n\n , getOptions = require('./util').getOptions\n\n , defaultOptions = { type: 'put' }\n\nfunction WriteStream (options, db) {\n if (!(this instanceof WriteStream))\n return new WriteStream(options, db)\n\n Stream.call(this)\n this._options = extend(defaultOptions, getOptions(db, options))\n this._db = db\n this._buffer = []\n this._status = 'init'\n this._end = false\n this.writable = true\n this.readable = false\n\n var self = this\n , ready = function () {\n if (!self.writable)\n return\n self._status = 'ready'\n self.emit('ready')\n self._process()\n }\n\n if (db.isOpen())\n setImmediate(ready)\n else\n db.once('ready', ready)\n}\n\ninherits(WriteStream, Stream)\n\nWriteStream.prototype.write = function (data) {\n if (!this.writable)\n return false\n this._buffer.push(data)\n if (this._status != 'init')\n this._processDelayed()\n if (this._options.maxBufferLength &&\n this._buffer.length > this._options.maxBufferLength) {\n this._writeBlock = true\n return false\n }\n return true\n}\n\nWriteStream.prototype.end = function (data) {\n var self = this\n if (data)\n this.write(data)\n setImmediate(function () {\n self._end = true\n self._process()\n })\n}\n\nWriteStream.prototype.destroy = function () {\n this.writable = false\n this.end()\n}\n\nWriteStream.prototype.destroySoon = function () {\n this.end()\n}\n\nWriteStream.prototype.add = function (entry) {\n if (!entry.props)\n return\n if (entry.props.Directory)\n entry.pipe(this._db.writeStream(this._options))\n else if (entry.props.File || entry.File || entry.type == 'File')\n this._write(entry)\n return true\n}\n\nWriteStream.prototype._processDelayed = function () {\n var self = this\n setImmediate(function () {\n self._process()\n })\n}\n\nWriteStream.prototype._process = function () {\n var buffer\n , self = this\n\n , cb = function (err) {\n if (!self.writable)\n return\n if (self._status != 'closed')\n self._status = 'ready'\n if (err) {\n self.writable = false\n return self.emit('error', err)\n }\n self._process()\n }\n\n if (self._status != 'ready' && self.writable) {\n if (self._buffer.length && self._status != 'closed')\n self._processDelayed()\n return\n }\n\n if (self._buffer.length && self.writable) {\n self._status = 'writing'\n buffer = self._buffer\n self._buffer = []\n\n self._db.batch(buffer.map(function (d) {\n return {\n type : d.type || self._options.type\n , key : d.key\n , value : d.value\n , keyEncoding : d.keyEncoding || self._options.keyEncoding\n , valueEncoding : d.valueEncoding\n || d.encoding\n || self._options.valueEncoding\n }\n }), cb)\n\n if (self._writeBlock) {\n self._writeBlock = false\n self.emit('drain')\n }\n\n // don't allow close until callback has returned\n return\n }\n\n if (self._end && self._status != 'closed') {\n self._status = 'closed'\n self.writable = false\n self.emit('close')\n }\n}\n\nWriteStream.prototype._write = function (entry) {\n var key = entry.path || entry.props.path\n , self = this\n\n if (!key)\n return\n\n entry.pipe(bl(function (err, data) {\n if (err) {\n self.writable = false\n return self.emit('error', err)\n }\n\n if (self._options.fstreamRoot &&\n key.indexOf(self._options.fstreamRoot) > -1)\n key = key.substr(self._options.fstreamRoot.length + 1)\n\n self.write({ key: key, value: data.slice(0) })\n }))\n}\n\nWriteStream.prototype.toString = function () {\n return 'LevelUP.WriteStream'\n}\n\nmodule.exports = WriteStream\n","module.exports = Array.isArray || function (arr) {\n return Object.prototype.toString.call(arr) == '[object Array]';\n};\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// a duplex stream is just a stream that is both readable and writable.\n// Since JS doesn't have multiple prototypal inheritance, this class\n// prototypally inherits from Readable, and then parasitically from\n// Writable.\n\nmodule.exports = Duplex;\n\n/**/\nvar objectKeys = Object.keys || function (obj) {\n var keys = [];\n for (var key in obj) keys.push(key);\n return keys;\n}\n/**/\n\n\n/**/\nvar util = require('core-util-is');\nutil.inherits = require('inherits');\n/**/\n\nvar Readable = require('./_stream_readable');\nvar Writable = require('./_stream_writable');\n\nutil.inherits(Duplex, Readable);\n\nforEach(objectKeys(Writable.prototype), function(method) {\n if (!Duplex.prototype[method])\n Duplex.prototype[method] = Writable.prototype[method];\n});\n\nfunction Duplex(options) {\n if (!(this instanceof Duplex))\n return new Duplex(options);\n\n Readable.call(this, options);\n Writable.call(this, options);\n\n if (options && options.readable === false)\n this.readable = false;\n\n if (options && options.writable === false)\n this.writable = false;\n\n this.allowHalfOpen = true;\n if (options && options.allowHalfOpen === false)\n this.allowHalfOpen = false;\n\n this.once('end', onend);\n}\n\n// the no-half-open enforcer\nfunction onend() {\n // if we allow half-open state, or if the writable side ended,\n // then we're ok.\n if (this.allowHalfOpen || this._writableState.ended)\n return;\n\n // no more data can be written.\n // But allow more writes to happen in this tick.\n process.nextTick(this.end.bind(this));\n}\n\nfunction forEach (xs, f) {\n for (var i = 0, l = xs.length; i < l; i++) {\n f(xs[i], i);\n }\n}\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// a passthrough stream.\n// basically just the most minimal sort of Transform stream.\n// Every written chunk gets output as-is.\n\nmodule.exports = PassThrough;\n\nvar Transform = require('./_stream_transform');\n\n/**/\nvar util = require('core-util-is');\nutil.inherits = require('inherits');\n/**/\n\nutil.inherits(PassThrough, Transform);\n\nfunction PassThrough(options) {\n if (!(this instanceof PassThrough))\n return new PassThrough(options);\n\n Transform.call(this, options);\n}\n\nPassThrough.prototype._transform = function(chunk, encoding, cb) {\n cb(null, chunk);\n};\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\nmodule.exports = Readable;\n\n/**/\nvar isArray = require('isarray');\n/**/\n\n\n/**/\nvar Buffer = require('buffer').Buffer;\n/**/\n\nReadable.ReadableState = ReadableState;\n\nvar EE = require('events').EventEmitter;\n\n/**/\nif (!EE.listenerCount) EE.listenerCount = function(emitter, type) {\n return emitter.listeners(type).length;\n};\n/**/\n\nvar Stream = require('stream');\n\n/**/\nvar util = require('core-util-is');\nutil.inherits = require('inherits');\n/**/\n\nvar StringDecoder;\n\nutil.inherits(Readable, Stream);\n\nfunction ReadableState(options, stream) {\n options = options || {};\n\n // the point at which it stops calling _read() to fill the buffer\n // Note: 0 is a valid value, means \"don't call _read preemptively ever\"\n var hwm = options.highWaterMark;\n this.highWaterMark = (hwm || hwm === 0) ? hwm : 16 * 1024;\n\n // cast to ints.\n this.highWaterMark = ~~this.highWaterMark;\n\n this.buffer = [];\n this.length = 0;\n this.pipes = null;\n this.pipesCount = 0;\n this.flowing = false;\n this.ended = false;\n this.endEmitted = false;\n this.reading = false;\n\n // In streams that never have any data, and do push(null) right away,\n // the consumer can miss the 'end' event if they do some I/O before\n // consuming the stream. So, we don't emit('end') until some reading\n // happens.\n this.calledRead = false;\n\n // a flag to be able to tell if the onwrite cb is called immediately,\n // or on a later tick. We set this to true at first, becuase any\n // actions that shouldn't happen until \"later\" should generally also\n // not happen before the first write call.\n this.sync = true;\n\n // whenever we return null, then we set a flag to say\n // that we're awaiting a 'readable' event emission.\n this.needReadable = false;\n this.emittedReadable = false;\n this.readableListening = false;\n\n\n // object stream flag. Used to make read(n) ignore n and to\n // make all the buffer merging and length checks go away\n this.objectMode = !!options.objectMode;\n\n // Crypto is kind of old and crusty. Historically, its default string\n // encoding is 'binary' so we have to make this configurable.\n // Everything else in the universe uses 'utf8', though.\n this.defaultEncoding = options.defaultEncoding || 'utf8';\n\n // when piping, we only care about 'readable' events that happen\n // after read()ing all the bytes and not getting any pushback.\n this.ranOut = false;\n\n // the number of writers that are awaiting a drain event in .pipe()s\n this.awaitDrain = 0;\n\n // if true, a maybeReadMore has been scheduled\n this.readingMore = false;\n\n this.decoder = null;\n this.encoding = null;\n if (options.encoding) {\n if (!StringDecoder)\n StringDecoder = require('string_decoder/').StringDecoder;\n this.decoder = new StringDecoder(options.encoding);\n this.encoding = options.encoding;\n }\n}\n\nfunction Readable(options) {\n if (!(this instanceof Readable))\n return new Readable(options);\n\n this._readableState = new ReadableState(options, this);\n\n // legacy\n this.readable = true;\n\n Stream.call(this);\n}\n\n// Manually shove something into the read() buffer.\n// This returns true if the highWaterMark has not been hit yet,\n// similar to how Writable.write() returns true if you should\n// write() some more.\nReadable.prototype.push = function(chunk, encoding) {\n var state = this._readableState;\n\n if (typeof chunk === 'string' && !state.objectMode) {\n encoding = encoding || state.defaultEncoding;\n if (encoding !== state.encoding) {\n chunk = new Buffer(chunk, encoding);\n encoding = '';\n }\n }\n\n return readableAddChunk(this, state, chunk, encoding, false);\n};\n\n// Unshift should *always* be something directly out of read()\nReadable.prototype.unshift = function(chunk) {\n var state = this._readableState;\n return readableAddChunk(this, state, chunk, '', true);\n};\n\nfunction readableAddChunk(stream, state, chunk, encoding, addToFront) {\n var er = chunkInvalid(state, chunk);\n if (er) {\n stream.emit('error', er);\n } else if (chunk === null || chunk === undefined) {\n state.reading = false;\n if (!state.ended)\n onEofChunk(stream, state);\n } else if (state.objectMode || chunk && chunk.length > 0) {\n if (state.ended && !addToFront) {\n var e = new Error('stream.push() after EOF');\n stream.emit('error', e);\n } else if (state.endEmitted && addToFront) {\n var e = new Error('stream.unshift() after end event');\n stream.emit('error', e);\n } else {\n if (state.decoder && !addToFront && !encoding)\n chunk = state.decoder.write(chunk);\n\n // update the buffer info.\n state.length += state.objectMode ? 1 : chunk.length;\n if (addToFront) {\n state.buffer.unshift(chunk);\n } else {\n state.reading = false;\n state.buffer.push(chunk);\n }\n\n if (state.needReadable)\n emitReadable(stream);\n\n maybeReadMore(stream, state);\n }\n } else if (!addToFront) {\n state.reading = false;\n }\n\n return needMoreData(state);\n}\n\n\n\n// if it's past the high water mark, we can push in some more.\n// Also, if we have no data yet, we can stand some\n// more bytes. This is to work around cases where hwm=0,\n// such as the repl. Also, if the push() triggered a\n// readable event, and the user called read(largeNumber) such that\n// needReadable was set, then we ought to push more, so that another\n// 'readable' event will be triggered.\nfunction needMoreData(state) {\n return !state.ended &&\n (state.needReadable ||\n state.length < state.highWaterMark ||\n state.length === 0);\n}\n\n// backwards compatibility.\nReadable.prototype.setEncoding = function(enc) {\n if (!StringDecoder)\n StringDecoder = require('string_decoder/').StringDecoder;\n this._readableState.decoder = new StringDecoder(enc);\n this._readableState.encoding = enc;\n};\n\n// Don't raise the hwm > 128MB\nvar MAX_HWM = 0x800000;\nfunction roundUpToNextPowerOf2(n) {\n if (n >= MAX_HWM) {\n n = MAX_HWM;\n } else {\n // Get the next highest power of 2\n n--;\n for (var p = 1; p < 32; p <<= 1) n |= n >> p;\n n++;\n }\n return n;\n}\n\nfunction howMuchToRead(n, state) {\n if (state.length === 0 && state.ended)\n return 0;\n\n if (state.objectMode)\n return n === 0 ? 0 : 1;\n\n if (n === null || isNaN(n)) {\n // only flow one buffer at a time\n if (state.flowing && state.buffer.length)\n return state.buffer[0].length;\n else\n return state.length;\n }\n\n if (n <= 0)\n return 0;\n\n // If we're asking for more than the target buffer level,\n // then raise the water mark. Bump up to the next highest\n // power of 2, to prevent increasing it excessively in tiny\n // amounts.\n if (n > state.highWaterMark)\n state.highWaterMark = roundUpToNextPowerOf2(n);\n\n // don't have that much. return null, unless we've ended.\n if (n > state.length) {\n if (!state.ended) {\n state.needReadable = true;\n return 0;\n } else\n return state.length;\n }\n\n return n;\n}\n\n// you can override either this method, or the async _read(n) below.\nReadable.prototype.read = function(n) {\n var state = this._readableState;\n state.calledRead = true;\n var nOrig = n;\n var ret;\n\n if (typeof n !== 'number' || n > 0)\n state.emittedReadable = false;\n\n // if we're doing read(0) to trigger a readable event, but we\n // already have a bunch of data in the buffer, then just trigger\n // the 'readable' event and move on.\n if (n === 0 &&\n state.needReadable &&\n (state.length >= state.highWaterMark || state.ended)) {\n emitReadable(this);\n return null;\n }\n\n n = howMuchToRead(n, state);\n\n // if we've ended, and we're now clear, then finish it up.\n if (n === 0 && state.ended) {\n ret = null;\n\n // In cases where the decoder did not receive enough data\n // to produce a full chunk, then immediately received an\n // EOF, state.buffer will contain [, ].\n // howMuchToRead will see this and coerce the amount to\n // read to zero (because it's looking at the length of the\n // first in state.buffer), and we'll end up here.\n //\n // This can only happen via state.decoder -- no other venue\n // exists for pushing a zero-length chunk into state.buffer\n // and triggering this behavior. In this case, we return our\n // remaining data and end the stream, if appropriate.\n if (state.length > 0 && state.decoder) {\n ret = fromList(n, state);\n state.length -= ret.length;\n }\n\n if (state.length === 0)\n endReadable(this);\n\n return ret;\n }\n\n // All the actual chunk generation logic needs to be\n // *below* the call to _read. The reason is that in certain\n // synthetic stream cases, such as passthrough streams, _read\n // may be a completely synchronous operation which may change\n // the state of the read buffer, providing enough data when\n // before there was *not* enough.\n //\n // So, the steps are:\n // 1. Figure out what the state of things will be after we do\n // a read from the buffer.\n //\n // 2. If that resulting state will trigger a _read, then call _read.\n // Note that this may be asynchronous, or synchronous. Yes, it is\n // deeply ugly to write APIs this way, but that still doesn't mean\n // that the Readable class should behave improperly, as streams are\n // designed to be sync/async agnostic.\n // Take note if the _read call is sync or async (ie, if the read call\n // has returned yet), so that we know whether or not it's safe to emit\n // 'readable' etc.\n //\n // 3. Actually pull the requested chunks out of the buffer and return.\n\n // if we need a readable event, then we need to do some reading.\n var doRead = state.needReadable;\n\n // if we currently have less than the highWaterMark, then also read some\n if (state.length - n <= state.highWaterMark)\n doRead = true;\n\n // however, if we've ended, then there's no point, and if we're already\n // reading, then it's unnecessary.\n if (state.ended || state.reading)\n doRead = false;\n\n if (doRead) {\n state.reading = true;\n state.sync = true;\n // if the length is currently zero, then we *need* a readable event.\n if (state.length === 0)\n state.needReadable = true;\n // call internal read method\n this._read(state.highWaterMark);\n state.sync = false;\n }\n\n // If _read called its callback synchronously, then `reading`\n // will be false, and we need to re-evaluate how much data we\n // can return to the user.\n if (doRead && !state.reading)\n n = howMuchToRead(nOrig, state);\n\n if (n > 0)\n ret = fromList(n, state);\n else\n ret = null;\n\n if (ret === null) {\n state.needReadable = true;\n n = 0;\n }\n\n state.length -= n;\n\n // If we have nothing in the buffer, then we want to know\n // as soon as we *do* get something into the buffer.\n if (state.length === 0 && !state.ended)\n state.needReadable = true;\n\n // If we happened to read() exactly the remaining amount in the\n // buffer, and the EOF has been seen at this point, then make sure\n // that we emit 'end' on the very next tick.\n if (state.ended && !state.endEmitted && state.length === 0)\n endReadable(this);\n\n return ret;\n};\n\nfunction chunkInvalid(state, chunk) {\n var er = null;\n if (!Buffer.isBuffer(chunk) &&\n 'string' !== typeof chunk &&\n chunk !== null &&\n chunk !== undefined &&\n !state.objectMode) {\n er = new TypeError('Invalid non-string/buffer chunk');\n }\n return er;\n}\n\n\nfunction onEofChunk(stream, state) {\n if (state.decoder && !state.ended) {\n var chunk = state.decoder.end();\n if (chunk && chunk.length) {\n state.buffer.push(chunk);\n state.length += state.objectMode ? 1 : chunk.length;\n }\n }\n state.ended = true;\n\n // if we've ended and we have some data left, then emit\n // 'readable' now to make sure it gets picked up.\n if (state.length > 0)\n emitReadable(stream);\n else\n endReadable(stream);\n}\n\n// Don't emit readable right away in sync mode, because this can trigger\n// another read() call => stack overflow. This way, it might trigger\n// a nextTick recursion warning, but that's not so bad.\nfunction emitReadable(stream) {\n var state = stream._readableState;\n state.needReadable = false;\n if (state.emittedReadable)\n return;\n\n state.emittedReadable = true;\n if (state.sync)\n process.nextTick(function() {\n emitReadable_(stream);\n });\n else\n emitReadable_(stream);\n}\n\nfunction emitReadable_(stream) {\n stream.emit('readable');\n}\n\n\n// at this point, the user has presumably seen the 'readable' event,\n// and called read() to consume some data. that may have triggered\n// in turn another _read(n) call, in which case reading = true if\n// it's in progress.\n// However, if we're not ended, or reading, and the length < hwm,\n// then go ahead and try to read some more preemptively.\nfunction maybeReadMore(stream, state) {\n if (!state.readingMore) {\n state.readingMore = true;\n process.nextTick(function() {\n maybeReadMore_(stream, state);\n });\n }\n}\n\nfunction maybeReadMore_(stream, state) {\n var len = state.length;\n while (!state.reading && !state.flowing && !state.ended &&\n state.length < state.highWaterMark) {\n stream.read(0);\n if (len === state.length)\n // didn't get any data, stop spinning.\n break;\n else\n len = state.length;\n }\n state.readingMore = false;\n}\n\n// abstract method. to be overridden in specific implementation classes.\n// call cb(er, data) where data is <= n in length.\n// for virtual (non-string, non-buffer) streams, \"length\" is somewhat\n// arbitrary, and perhaps not very meaningful.\nReadable.prototype._read = function(n) {\n this.emit('error', new Error('not implemented'));\n};\n\nReadable.prototype.pipe = function(dest, pipeOpts) {\n var src = this;\n var state = this._readableState;\n\n switch (state.pipesCount) {\n case 0:\n state.pipes = dest;\n break;\n case 1:\n state.pipes = [state.pipes, dest];\n break;\n default:\n state.pipes.push(dest);\n break;\n }\n state.pipesCount += 1;\n\n var doEnd = (!pipeOpts || pipeOpts.end !== false) &&\n dest !== process.stdout &&\n dest !== process.stderr;\n\n var endFn = doEnd ? onend : cleanup;\n if (state.endEmitted)\n process.nextTick(endFn);\n else\n src.once('end', endFn);\n\n dest.on('unpipe', onunpipe);\n function onunpipe(readable) {\n if (readable !== src) return;\n cleanup();\n }\n\n function onend() {\n dest.end();\n }\n\n // when the dest drains, it reduces the awaitDrain counter\n // on the source. This would be more elegant with a .once()\n // handler in flow(), but adding and removing repeatedly is\n // too slow.\n var ondrain = pipeOnDrain(src);\n dest.on('drain', ondrain);\n\n function cleanup() {\n // cleanup event handlers once the pipe is broken\n dest.removeListener('close', onclose);\n dest.removeListener('finish', onfinish);\n dest.removeListener('drain', ondrain);\n dest.removeListener('error', onerror);\n dest.removeListener('unpipe', onunpipe);\n src.removeListener('end', onend);\n src.removeListener('end', cleanup);\n\n // if the reader is waiting for a drain event from this\n // specific writer, then it would cause it to never start\n // flowing again.\n // So, if this is awaiting a drain, then we just call it now.\n // If we don't know, then assume that we are waiting for one.\n if (!dest._writableState || dest._writableState.needDrain)\n ondrain();\n }\n\n // if the dest has an error, then stop piping into it.\n // however, don't suppress the throwing behavior for this.\n function onerror(er) {\n unpipe();\n dest.removeListener('error', onerror);\n if (EE.listenerCount(dest, 'error') === 0)\n dest.emit('error', er);\n }\n // This is a brutally ugly hack to make sure that our error handler\n // is attached before any userland ones. NEVER DO THIS.\n if (!dest._events || !dest._events.error)\n dest.on('error', onerror);\n else if (isArray(dest._events.error))\n dest._events.error.unshift(onerror);\n else\n dest._events.error = [onerror, dest._events.error];\n\n\n\n // Both close and finish should trigger unpipe, but only once.\n function onclose() {\n dest.removeListener('finish', onfinish);\n unpipe();\n }\n dest.once('close', onclose);\n function onfinish() {\n dest.removeListener('close', onclose);\n unpipe();\n }\n dest.once('finish', onfinish);\n\n function unpipe() {\n src.unpipe(dest);\n }\n\n // tell the dest that it's being piped to\n dest.emit('pipe', src);\n\n // start the flow if it hasn't been started already.\n if (!state.flowing) {\n // the handler that waits for readable events after all\n // the data gets sucked out in flow.\n // This would be easier to follow with a .once() handler\n // in flow(), but that is too slow.\n this.on('readable', pipeOnReadable);\n\n state.flowing = true;\n process.nextTick(function() {\n flow(src);\n });\n }\n\n return dest;\n};\n\nfunction pipeOnDrain(src) {\n return function() {\n var dest = this;\n var state = src._readableState;\n state.awaitDrain--;\n if (state.awaitDrain === 0)\n flow(src);\n };\n}\n\nfunction flow(src) {\n var state = src._readableState;\n var chunk;\n state.awaitDrain = 0;\n\n function write(dest, i, list) {\n var written = dest.write(chunk);\n if (false === written) {\n state.awaitDrain++;\n }\n }\n\n while (state.pipesCount && null !== (chunk = src.read())) {\n\n if (state.pipesCount === 1)\n write(state.pipes, 0, null);\n else\n forEach(state.pipes, write);\n\n src.emit('data', chunk);\n\n // if anyone needs a drain, then we have to wait for that.\n if (state.awaitDrain > 0)\n return;\n }\n\n // if every destination was unpiped, either before entering this\n // function, or in the while loop, then stop flowing.\n //\n // NB: This is a pretty rare edge case.\n if (state.pipesCount === 0) {\n state.flowing = false;\n\n // if there were data event listeners added, then switch to old mode.\n if (EE.listenerCount(src, 'data') > 0)\n emitDataEvents(src);\n return;\n }\n\n // at this point, no one needed a drain, so we just ran out of data\n // on the next readable event, start it over again.\n state.ranOut = true;\n}\n\nfunction pipeOnReadable() {\n if (this._readableState.ranOut) {\n this._readableState.ranOut = false;\n flow(this);\n }\n}\n\n\nReadable.prototype.unpipe = function(dest) {\n var state = this._readableState;\n\n // if we're not piping anywhere, then do nothing.\n if (state.pipesCount === 0)\n return this;\n\n // just one destination. most common case.\n if (state.pipesCount === 1) {\n // passed in one, but it's not the right one.\n if (dest && dest !== state.pipes)\n return this;\n\n if (!dest)\n dest = state.pipes;\n\n // got a match.\n state.pipes = null;\n state.pipesCount = 0;\n this.removeListener('readable', pipeOnReadable);\n state.flowing = false;\n if (dest)\n dest.emit('unpipe', this);\n return this;\n }\n\n // slow case. multiple pipe destinations.\n\n if (!dest) {\n // remove all.\n var dests = state.pipes;\n var len = state.pipesCount;\n state.pipes = null;\n state.pipesCount = 0;\n this.removeListener('readable', pipeOnReadable);\n state.flowing = false;\n\n for (var i = 0; i < len; i++)\n dests[i].emit('unpipe', this);\n return this;\n }\n\n // try to find the right one.\n var i = indexOf(state.pipes, dest);\n if (i === -1)\n return this;\n\n state.pipes.splice(i, 1);\n state.pipesCount -= 1;\n if (state.pipesCount === 1)\n state.pipes = state.pipes[0];\n\n dest.emit('unpipe', this);\n\n return this;\n};\n\n// set up data events if they are asked for\n// Ensure readable listeners eventually get something\nReadable.prototype.on = function(ev, fn) {\n var res = Stream.prototype.on.call(this, ev, fn);\n\n if (ev === 'data' && !this._readableState.flowing)\n emitDataEvents(this);\n\n if (ev === 'readable' && this.readable) {\n var state = this._readableState;\n if (!state.readableListening) {\n state.readableListening = true;\n state.emittedReadable = false;\n state.needReadable = true;\n if (!state.reading) {\n this.read(0);\n } else if (state.length) {\n emitReadable(this, state);\n }\n }\n }\n\n return res;\n};\nReadable.prototype.addListener = Readable.prototype.on;\n\n// pause() and resume() are remnants of the legacy readable stream API\n// If the user uses them, then switch into old mode.\nReadable.prototype.resume = function() {\n emitDataEvents(this);\n this.read(0);\n this.emit('resume');\n};\n\nReadable.prototype.pause = function() {\n emitDataEvents(this, true);\n this.emit('pause');\n};\n\nfunction emitDataEvents(stream, startPaused) {\n var state = stream._readableState;\n\n if (state.flowing) {\n // https://github.com/isaacs/readable-stream/issues/16\n throw new Error('Cannot switch to old mode now.');\n }\n\n var paused = startPaused || false;\n var readable = false;\n\n // convert to an old-style stream.\n stream.readable = true;\n stream.pipe = Stream.prototype.pipe;\n stream.on = stream.addListener = Stream.prototype.on;\n\n stream.on('readable', function() {\n readable = true;\n\n var c;\n while (!paused && (null !== (c = stream.read())))\n stream.emit('data', c);\n\n if (c === null) {\n readable = false;\n stream._readableState.needReadable = true;\n }\n });\n\n stream.pause = function() {\n paused = true;\n this.emit('pause');\n };\n\n stream.resume = function() {\n paused = false;\n if (readable)\n process.nextTick(function() {\n stream.emit('readable');\n });\n else\n this.read(0);\n this.emit('resume');\n };\n\n // now make it start, just in case it hadn't already.\n stream.emit('readable');\n}\n\n// wrap an old-style stream as the async data source.\n// This is *not* part of the readable stream interface.\n// It is an ugly unfortunate mess of history.\nReadable.prototype.wrap = function(stream) {\n var state = this._readableState;\n var paused = false;\n\n var self = this;\n stream.on('end', function() {\n if (state.decoder && !state.ended) {\n var chunk = state.decoder.end();\n if (chunk && chunk.length)\n self.push(chunk);\n }\n\n self.push(null);\n });\n\n stream.on('data', function(chunk) {\n if (state.decoder)\n chunk = state.decoder.write(chunk);\n\n // don't skip over falsy values in objectMode\n //if (state.objectMode && util.isNullOrUndefined(chunk))\n if (state.objectMode && (chunk === null || chunk === undefined))\n return;\n else if (!state.objectMode && (!chunk || !chunk.length))\n return;\n\n var ret = self.push(chunk);\n if (!ret) {\n paused = true;\n stream.pause();\n }\n });\n\n // proxy all the other methods.\n // important when wrapping filters and duplexes.\n for (var i in stream) {\n if (typeof stream[i] === 'function' &&\n typeof this[i] === 'undefined') {\n this[i] = function(method) { return function() {\n return stream[method].apply(stream, arguments);\n }}(i);\n }\n }\n\n // proxy certain important events.\n var events = ['error', 'close', 'destroy', 'pause', 'resume'];\n forEach(events, function(ev) {\n stream.on(ev, self.emit.bind(self, ev));\n });\n\n // when we try to consume some more bytes, simply unpause the\n // underlying stream.\n self._read = function(n) {\n if (paused) {\n paused = false;\n stream.resume();\n }\n };\n\n return self;\n};\n\n\n\n// exposed for testing purposes only.\nReadable._fromList = fromList;\n\n// Pluck off n bytes from an array of buffers.\n// Length is the combined lengths of all the buffers in the list.\nfunction fromList(n, state) {\n var list = state.buffer;\n var length = state.length;\n var stringMode = !!state.decoder;\n var objectMode = !!state.objectMode;\n var ret;\n\n // nothing in the list, definitely empty.\n if (list.length === 0)\n return null;\n\n if (length === 0)\n ret = null;\n else if (objectMode)\n ret = list.shift();\n else if (!n || n >= length) {\n // read it all, truncate the array.\n if (stringMode)\n ret = list.join('');\n else\n ret = Buffer.concat(list, length);\n list.length = 0;\n } else {\n // read just some of it.\n if (n < list[0].length) {\n // just take a part of the first list item.\n // slice is the same for buffers and strings.\n var buf = list[0];\n ret = buf.slice(0, n);\n list[0] = buf.slice(n);\n } else if (n === list[0].length) {\n // first list is a perfect match\n ret = list.shift();\n } else {\n // complex case.\n // we have enough to cover it, but it spans past the first buffer.\n if (stringMode)\n ret = '';\n else\n ret = new Buffer(n);\n\n var c = 0;\n for (var i = 0, l = list.length; i < l && c < n; i++) {\n var buf = list[0];\n var cpy = Math.min(n - c, buf.length);\n\n if (stringMode)\n ret += buf.slice(0, cpy);\n else\n buf.copy(ret, c, 0, cpy);\n\n if (cpy < buf.length)\n list[0] = buf.slice(cpy);\n else\n list.shift();\n\n c += cpy;\n }\n }\n }\n\n return ret;\n}\n\nfunction endReadable(stream) {\n var state = stream._readableState;\n\n // If we get here before consuming all the bytes, then that is a\n // bug in node. Should never happen.\n if (state.length > 0)\n throw new Error('endReadable called on non-empty stream');\n\n if (!state.endEmitted && state.calledRead) {\n state.ended = true;\n process.nextTick(function() {\n // Check that we didn't get one last unshift.\n if (!state.endEmitted && state.length === 0) {\n state.endEmitted = true;\n stream.readable = false;\n stream.emit('end');\n }\n });\n }\n}\n\nfunction forEach (xs, f) {\n for (var i = 0, l = xs.length; i < l; i++) {\n f(xs[i], i);\n }\n}\n\nfunction indexOf (xs, x) {\n for (var i = 0, l = xs.length; i < l; i++) {\n if (xs[i] === x) return i;\n }\n return -1;\n}\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n\n// a transform stream is a readable/writable stream where you do\n// something with the data. Sometimes it's called a \"filter\",\n// but that's not a great name for it, since that implies a thing where\n// some bits pass through, and others are simply ignored. (That would\n// be a valid example of a transform, of course.)\n//\n// While the output is causally related to the input, it's not a\n// necessarily symmetric or synchronous transformation. For example,\n// a zlib stream might take multiple plain-text writes(), and then\n// emit a single compressed chunk some time in the future.\n//\n// Here's how this works:\n//\n// The Transform stream has all the aspects of the readable and writable\n// stream classes. When you write(chunk), that calls _write(chunk,cb)\n// internally, and returns false if there's a lot of pending writes\n// buffered up. When you call read(), that calls _read(n) until\n// there's enough pending readable data buffered up.\n//\n// In a transform stream, the written data is placed in a buffer. When\n// _read(n) is called, it transforms the queued up data, calling the\n// buffered _write cb's as it consumes chunks. If consuming a single\n// written chunk would result in multiple output chunks, then the first\n// outputted bit calls the readcb, and subsequent chunks just go into\n// the read buffer, and will cause it to emit 'readable' if necessary.\n//\n// This way, back-pressure is actually determined by the reading side,\n// since _read has to be called to start processing a new chunk. However,\n// a pathological inflate type of transform can cause excessive buffering\n// here. For example, imagine a stream where every byte of input is\n// interpreted as an integer from 0-255, and then results in that many\n// bytes of output. Writing the 4 bytes {ff,ff,ff,ff} would result in\n// 1kb of data being output. In this case, you could write a very small\n// amount of input, and end up with a very large amount of output. In\n// such a pathological inflating mechanism, there'd be no way to tell\n// the system to stop doing the transform. A single 4MB write could\n// cause the system to run out of memory.\n//\n// However, even in such a pathological case, only a single written chunk\n// would be consumed, and then the rest would wait (un-transformed) until\n// the results of the previous transformed chunk were consumed.\n\nmodule.exports = Transform;\n\nvar Duplex = require('./_stream_duplex');\n\n/**/\nvar util = require('core-util-is');\nutil.inherits = require('inherits');\n/**/\n\nutil.inherits(Transform, Duplex);\n\n\nfunction TransformState(options, stream) {\n this.afterTransform = function(er, data) {\n return afterTransform(stream, er, data);\n };\n\n this.needTransform = false;\n this.transforming = false;\n this.writecb = null;\n this.writechunk = null;\n}\n\nfunction afterTransform(stream, er, data) {\n var ts = stream._transformState;\n ts.transforming = false;\n\n var cb = ts.writecb;\n\n if (!cb)\n return stream.emit('error', new Error('no writecb in Transform class'));\n\n ts.writechunk = null;\n ts.writecb = null;\n\n if (data !== null && data !== undefined)\n stream.push(data);\n\n if (cb)\n cb(er);\n\n var rs = stream._readableState;\n rs.reading = false;\n if (rs.needReadable || rs.length < rs.highWaterMark) {\n stream._read(rs.highWaterMark);\n }\n}\n\n\nfunction Transform(options) {\n if (!(this instanceof Transform))\n return new Transform(options);\n\n Duplex.call(this, options);\n\n var ts = this._transformState = new TransformState(options, this);\n\n // when the writable side finishes, then flush out anything remaining.\n var stream = this;\n\n // start out asking for a readable event once data is transformed.\n this._readableState.needReadable = true;\n\n // we have implemented the _read method, and done the other things\n // that Readable wants before the first _read call, so unset the\n // sync guard flag.\n this._readableState.sync = false;\n\n this.once('finish', function() {\n if ('function' === typeof this._flush)\n this._flush(function(er) {\n done(stream, er);\n });\n else\n done(stream);\n });\n}\n\nTransform.prototype.push = function(chunk, encoding) {\n this._transformState.needTransform = false;\n return Duplex.prototype.push.call(this, chunk, encoding);\n};\n\n// This is the part where you do stuff!\n// override this function in implementation classes.\n// 'chunk' is an input chunk.\n//\n// Call `push(newChunk)` to pass along transformed output\n// to the readable side. You may call 'push' zero or more times.\n//\n// Call `cb(err)` when you are done with this chunk. If you pass\n// an error, then that'll put the hurt on the whole operation. If you\n// never call cb(), then you'll never get another chunk.\nTransform.prototype._transform = function(chunk, encoding, cb) {\n throw new Error('not implemented');\n};\n\nTransform.prototype._write = function(chunk, encoding, cb) {\n var ts = this._transformState;\n ts.writecb = cb;\n ts.writechunk = chunk;\n ts.writeencoding = encoding;\n if (!ts.transforming) {\n var rs = this._readableState;\n if (ts.needTransform ||\n rs.needReadable ||\n rs.length < rs.highWaterMark)\n this._read(rs.highWaterMark);\n }\n};\n\n// Doesn't matter what the args are here.\n// _transform does all the work.\n// That we got here means that the readable side wants more data.\nTransform.prototype._read = function(n) {\n var ts = this._transformState;\n\n if (ts.writechunk !== null && ts.writecb && !ts.transforming) {\n ts.transforming = true;\n this._transform(ts.writechunk, ts.writeencoding, ts.afterTransform);\n } else {\n // mark that we need a transform, so that any data that comes in\n // will get processed, now that we've asked for it.\n ts.needTransform = true;\n }\n};\n\n\nfunction done(stream, er) {\n if (er)\n return stream.emit('error', er);\n\n // if there's nothing in the write buffer, then that means\n // that nothing more will ever be provided\n var ws = stream._writableState;\n var rs = stream._readableState;\n var ts = stream._transformState;\n\n if (ws.length)\n throw new Error('calling transform done when ws.length != 0');\n\n if (ts.transforming)\n throw new Error('calling transform done when still transforming');\n\n return stream.push(null);\n}\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// A bit simpler than readable streams.\n// Implement an async ._write(chunk, cb), and it'll handle all\n// the drain event emission and buffering.\n\nmodule.exports = Writable;\n\n/**/\nvar Buffer = require('buffer').Buffer;\n/**/\n\nWritable.WritableState = WritableState;\n\n\n/**/\nvar util = require('core-util-is');\nutil.inherits = require('inherits');\n/**/\n\nvar Stream = require('stream');\n\nutil.inherits(Writable, Stream);\n\nfunction WriteReq(chunk, encoding, cb) {\n this.chunk = chunk;\n this.encoding = encoding;\n this.callback = cb;\n}\n\nfunction WritableState(options, stream) {\n options = options || {};\n\n // the point at which write() starts returning false\n // Note: 0 is a valid value, means that we always return false if\n // the entire buffer is not flushed immediately on write()\n var hwm = options.highWaterMark;\n this.highWaterMark = (hwm || hwm === 0) ? hwm : 16 * 1024;\n\n // object stream flag to indicate whether or not this stream\n // contains buffers or objects.\n this.objectMode = !!options.objectMode;\n\n // cast to ints.\n this.highWaterMark = ~~this.highWaterMark;\n\n this.needDrain = false;\n // at the start of calling end()\n this.ending = false;\n // when end() has been called, and returned\n this.ended = false;\n // when 'finish' is emitted\n this.finished = false;\n\n // should we decode strings into buffers before passing to _write?\n // this is here so that some node-core streams can optimize string\n // handling at a lower level.\n var noDecode = options.decodeStrings === false;\n this.decodeStrings = !noDecode;\n\n // Crypto is kind of old and crusty. Historically, its default string\n // encoding is 'binary' so we have to make this configurable.\n // Everything else in the universe uses 'utf8', though.\n this.defaultEncoding = options.defaultEncoding || 'utf8';\n\n // not an actual buffer we keep track of, but a measurement\n // of how much we're waiting to get pushed to some underlying\n // socket or file.\n this.length = 0;\n\n // a flag to see when we're in the middle of a write.\n this.writing = false;\n\n // a flag to be able to tell if the onwrite cb is called immediately,\n // or on a later tick. We set this to true at first, becuase any\n // actions that shouldn't happen until \"later\" should generally also\n // not happen before the first write call.\n this.sync = true;\n\n // a flag to know if we're processing previously buffered items, which\n // may call the _write() callback in the same tick, so that we don't\n // end up in an overlapped onwrite situation.\n this.bufferProcessing = false;\n\n // the callback that's passed to _write(chunk,cb)\n this.onwrite = function(er) {\n onwrite(stream, er);\n };\n\n // the callback that the user supplies to write(chunk,encoding,cb)\n this.writecb = null;\n\n // the amount that is being written when _write is called.\n this.writelen = 0;\n\n this.buffer = [];\n\n // True if the error was already emitted and should not be thrown again\n this.errorEmitted = false;\n}\n\nfunction Writable(options) {\n var Duplex = require('./_stream_duplex');\n\n // Writable ctor is applied to Duplexes, though they're not\n // instanceof Writable, they're instanceof Readable.\n if (!(this instanceof Writable) && !(this instanceof Duplex))\n return new Writable(options);\n\n this._writableState = new WritableState(options, this);\n\n // legacy.\n this.writable = true;\n\n Stream.call(this);\n}\n\n// Otherwise people can pipe Writable streams, which is just wrong.\nWritable.prototype.pipe = function() {\n this.emit('error', new Error('Cannot pipe. Not readable.'));\n};\n\n\nfunction writeAfterEnd(stream, state, cb) {\n var er = new Error('write after end');\n // TODO: defer error events consistently everywhere, not just the cb\n stream.emit('error', er);\n process.nextTick(function() {\n cb(er);\n });\n}\n\n// If we get something that is not a buffer, string, null, or undefined,\n// and we're not in objectMode, then that's an error.\n// Otherwise stream chunks are all considered to be of length=1, and the\n// watermarks determine how many objects to keep in the buffer, rather than\n// how many bytes or characters.\nfunction validChunk(stream, state, chunk, cb) {\n var valid = true;\n if (!Buffer.isBuffer(chunk) &&\n 'string' !== typeof chunk &&\n chunk !== null &&\n chunk !== undefined &&\n !state.objectMode) {\n var er = new TypeError('Invalid non-string/buffer chunk');\n stream.emit('error', er);\n process.nextTick(function() {\n cb(er);\n });\n valid = false;\n }\n return valid;\n}\n\nWritable.prototype.write = function(chunk, encoding, cb) {\n var state = this._writableState;\n var ret = false;\n\n if (typeof encoding === 'function') {\n cb = encoding;\n encoding = null;\n }\n\n if (Buffer.isBuffer(chunk))\n encoding = 'buffer';\n else if (!encoding)\n encoding = state.defaultEncoding;\n\n if (typeof cb !== 'function')\n cb = function() {};\n\n if (state.ended)\n writeAfterEnd(this, state, cb);\n else if (validChunk(this, state, chunk, cb))\n ret = writeOrBuffer(this, state, chunk, encoding, cb);\n\n return ret;\n};\n\nfunction decodeChunk(state, chunk, encoding) {\n if (!state.objectMode &&\n state.decodeStrings !== false &&\n typeof chunk === 'string') {\n chunk = new Buffer(chunk, encoding);\n }\n return chunk;\n}\n\n// if we're already writing something, then just put this\n// in the queue, and wait our turn. Otherwise, call _write\n// If we return false, then we need a drain event, so set that flag.\nfunction writeOrBuffer(stream, state, chunk, encoding, cb) {\n chunk = decodeChunk(state, chunk, encoding);\n if (Buffer.isBuffer(chunk))\n encoding = 'buffer';\n var len = state.objectMode ? 1 : chunk.length;\n\n state.length += len;\n\n var ret = state.length < state.highWaterMark;\n // we must ensure that previous needDrain will not be reset to false.\n if (!ret)\n state.needDrain = true;\n\n if (state.writing)\n state.buffer.push(new WriteReq(chunk, encoding, cb));\n else\n doWrite(stream, state, len, chunk, encoding, cb);\n\n return ret;\n}\n\nfunction doWrite(stream, state, len, chunk, encoding, cb) {\n state.writelen = len;\n state.writecb = cb;\n state.writing = true;\n state.sync = true;\n stream._write(chunk, encoding, state.onwrite);\n state.sync = false;\n}\n\nfunction onwriteError(stream, state, sync, er, cb) {\n if (sync)\n process.nextTick(function() {\n cb(er);\n });\n else\n cb(er);\n\n stream._writableState.errorEmitted = true;\n stream.emit('error', er);\n}\n\nfunction onwriteStateUpdate(state) {\n state.writing = false;\n state.writecb = null;\n state.length -= state.writelen;\n state.writelen = 0;\n}\n\nfunction onwrite(stream, er) {\n var state = stream._writableState;\n var sync = state.sync;\n var cb = state.writecb;\n\n onwriteStateUpdate(state);\n\n if (er)\n onwriteError(stream, state, sync, er, cb);\n else {\n // Check if we're actually ready to finish, but don't emit yet\n var finished = needFinish(stream, state);\n\n if (!finished && !state.bufferProcessing && state.buffer.length)\n clearBuffer(stream, state);\n\n if (sync) {\n process.nextTick(function() {\n afterWrite(stream, state, finished, cb);\n });\n } else {\n afterWrite(stream, state, finished, cb);\n }\n }\n}\n\nfunction afterWrite(stream, state, finished, cb) {\n if (!finished)\n onwriteDrain(stream, state);\n cb();\n if (finished)\n finishMaybe(stream, state);\n}\n\n// Must force callback to be called on nextTick, so that we don't\n// emit 'drain' before the write() consumer gets the 'false' return\n// value, and has a chance to attach a 'drain' listener.\nfunction onwriteDrain(stream, state) {\n if (state.length === 0 && state.needDrain) {\n state.needDrain = false;\n stream.emit('drain');\n }\n}\n\n\n// if there's something in the buffer waiting, then process it\nfunction clearBuffer(stream, state) {\n state.bufferProcessing = true;\n\n for (var c = 0; c < state.buffer.length; c++) {\n var entry = state.buffer[c];\n var chunk = entry.chunk;\n var encoding = entry.encoding;\n var cb = entry.callback;\n var len = state.objectMode ? 1 : chunk.length;\n\n doWrite(stream, state, len, chunk, encoding, cb);\n\n // if we didn't call the onwrite immediately, then\n // it means that we need to wait until it does.\n // also, that means that the chunk and cb are currently\n // being processed, so move the buffer counter past them.\n if (state.writing) {\n c++;\n break;\n }\n }\n\n state.bufferProcessing = false;\n if (c < state.buffer.length)\n state.buffer = state.buffer.slice(c);\n else\n state.buffer.length = 0;\n}\n\nWritable.prototype._write = function(chunk, encoding, cb) {\n cb(new Error('not implemented'));\n};\n\nWritable.prototype.end = function(chunk, encoding, cb) {\n var state = this._writableState;\n\n if (typeof chunk === 'function') {\n cb = chunk;\n chunk = null;\n encoding = null;\n } else if (typeof encoding === 'function') {\n cb = encoding;\n encoding = null;\n }\n\n if (typeof chunk !== 'undefined' && chunk !== null)\n this.write(chunk, encoding);\n\n // ignore unnecessary end() calls.\n if (!state.ending && !state.finished)\n endWritable(this, state, cb);\n};\n\n\nfunction needFinish(stream, state) {\n return (state.ending &&\n state.length === 0 &&\n !state.finished &&\n !state.writing);\n}\n\nfunction finishMaybe(stream, state) {\n var need = needFinish(stream, state);\n if (need) {\n state.finished = true;\n stream.emit('finish');\n }\n return need;\n}\n\nfunction endWritable(stream, state, cb) {\n state.ending = true;\n finishMaybe(stream, state);\n if (cb) {\n if (state.finished)\n process.nextTick(cb);\n else\n stream.once('finish', cb);\n }\n state.ended = true;\n}\n","var Stream = require('stream'); // hack to fix a circular dependency issue when used with browserify\nexports = module.exports = require('./lib/_stream_readable.js');\nexports.Stream = Stream;\nexports.Readable = exports;\nexports.Writable = require('./lib/_stream_writable.js');\nexports.Duplex = require('./lib/_stream_duplex.js');\nexports.Transform = require('./lib/_stream_transform.js');\nexports.PassThrough = require('./lib/_stream_passthrough.js');\nif (!process.browser && process.env.READABLE_STREAM === 'disable') {\n module.exports = require('stream');\n}\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\nvar Buffer = require('buffer').Buffer;\n\nvar isBufferEncoding = Buffer.isEncoding\n || function(encoding) {\n switch (encoding && encoding.toLowerCase()) {\n case 'hex': case 'utf8': case 'utf-8': case 'ascii': case 'binary': case 'base64': case 'ucs2': case 'ucs-2': case 'utf16le': case 'utf-16le': case 'raw': return true;\n default: return false;\n }\n }\n\n\nfunction assertEncoding(encoding) {\n if (encoding && !isBufferEncoding(encoding)) {\n throw new Error('Unknown encoding: ' + encoding);\n }\n}\n\n// StringDecoder provides an interface for efficiently splitting a series of\n// buffers into a series of JS strings without breaking apart multi-byte\n// characters. CESU-8 is handled as part of the UTF-8 encoding.\n//\n// @TODO Handling all encodings inside a single object makes it very difficult\n// to reason about this code, so it should be split up in the future.\n// @TODO There should be a utf8-strict encoding that rejects invalid UTF-8 code\n// points as used by CESU-8.\nvar StringDecoder = exports.StringDecoder = function(encoding) {\n this.encoding = (encoding || 'utf8').toLowerCase().replace(/[-_]/, '');\n assertEncoding(encoding);\n switch (this.encoding) {\n case 'utf8':\n // CESU-8 represents each of Surrogate Pair by 3-bytes\n this.surrogateSize = 3;\n break;\n case 'ucs2':\n case 'utf16le':\n // UTF-16 represents each of Surrogate Pair by 2-bytes\n this.surrogateSize = 2;\n this.detectIncompleteChar = utf16DetectIncompleteChar;\n break;\n case 'base64':\n // Base-64 stores 3 bytes in 4 chars, and pads the remainder.\n this.surrogateSize = 3;\n this.detectIncompleteChar = base64DetectIncompleteChar;\n break;\n default:\n this.write = passThroughWrite;\n return;\n }\n\n // Enough space to store all bytes of a single character. UTF-8 needs 4\n // bytes, but CESU-8 may require up to 6 (3 bytes per surrogate).\n this.charBuffer = new Buffer(6);\n // Number of bytes received for the current incomplete multi-byte character.\n this.charReceived = 0;\n // Number of bytes expected for the current incomplete multi-byte character.\n this.charLength = 0;\n};\n\n\n// write decodes the given buffer and returns it as JS string that is\n// guaranteed to not contain any partial multi-byte characters. Any partial\n// character found at the end of the buffer is buffered up, and will be\n// returned when calling write again with the remaining bytes.\n//\n// Note: Converting a Buffer containing an orphan surrogate to a String\n// currently works, but converting a String to a Buffer (via `new Buffer`, or\n// Buffer#write) will replace incomplete surrogates with the unicode\n// replacement character. See https://codereview.chromium.org/121173009/ .\nStringDecoder.prototype.write = function(buffer) {\n var charStr = '';\n // if our last write ended with an incomplete multibyte character\n while (this.charLength) {\n // determine how many remaining bytes this buffer has to offer for this char\n var available = (buffer.length >= this.charLength - this.charReceived) ?\n this.charLength - this.charReceived :\n buffer.length;\n\n // add the new bytes to the char buffer\n buffer.copy(this.charBuffer, this.charReceived, 0, available);\n this.charReceived += available;\n\n if (this.charReceived < this.charLength) {\n // still not enough chars in this buffer? wait for more ...\n return '';\n }\n\n // remove bytes belonging to the current character from the buffer\n buffer = buffer.slice(available, buffer.length);\n\n // get the character that was split\n charStr = this.charBuffer.slice(0, this.charLength).toString(this.encoding);\n\n // CESU-8: lead surrogate (D800-DBFF) is also the incomplete character\n var charCode = charStr.charCodeAt(charStr.length - 1);\n if (charCode >= 0xD800 && charCode <= 0xDBFF) {\n this.charLength += this.surrogateSize;\n charStr = '';\n continue;\n }\n this.charReceived = this.charLength = 0;\n\n // if there are no more bytes in this buffer, just emit our char\n if (buffer.length === 0) {\n return charStr;\n }\n break;\n }\n\n // determine and set charLength / charReceived\n this.detectIncompleteChar(buffer);\n\n var end = buffer.length;\n if (this.charLength) {\n // buffer the incomplete character bytes we got\n buffer.copy(this.charBuffer, 0, buffer.length - this.charReceived, end);\n end -= this.charReceived;\n }\n\n charStr += buffer.toString(this.encoding, 0, end);\n\n var end = charStr.length - 1;\n var charCode = charStr.charCodeAt(end);\n // CESU-8: lead surrogate (D800-DBFF) is also the incomplete character\n if (charCode >= 0xD800 && charCode <= 0xDBFF) {\n var size = this.surrogateSize;\n this.charLength += size;\n this.charReceived += size;\n this.charBuffer.copy(this.charBuffer, size, 0, size);\n buffer.copy(this.charBuffer, 0, 0, size);\n return charStr.substring(0, end);\n }\n\n // or just emit the charStr\n return charStr;\n};\n\n// detectIncompleteChar determines if there is an incomplete UTF-8 character at\n// the end of the given buffer. If so, it sets this.charLength to the byte\n// length that character, and sets this.charReceived to the number of bytes\n// that are available for this character.\nStringDecoder.prototype.detectIncompleteChar = function(buffer) {\n // determine how many bytes we have to check at the end of this buffer\n var i = (buffer.length >= 3) ? 3 : buffer.length;\n\n // Figure out if one of the last i bytes of our buffer announces an\n // incomplete char.\n for (; i > 0; i--) {\n var c = buffer[buffer.length - i];\n\n // See http://en.wikipedia.org/wiki/UTF-8#Description\n\n // 110XXXXX\n if (i == 1 && c >> 5 == 0x06) {\n this.charLength = 2;\n break;\n }\n\n // 1110XXXX\n if (i <= 2 && c >> 4 == 0x0E) {\n this.charLength = 3;\n break;\n }\n\n // 11110XXX\n if (i <= 3 && c >> 3 == 0x1E) {\n this.charLength = 4;\n break;\n }\n }\n this.charReceived = i;\n};\n\nStringDecoder.prototype.end = function(buffer) {\n var res = '';\n if (buffer && buffer.length)\n res = this.write(buffer);\n\n if (this.charReceived) {\n var cr = this.charReceived;\n var buf = this.charBuffer;\n var enc = this.encoding;\n res += buf.slice(0, cr).toString(enc);\n }\n\n return res;\n};\n\nfunction passThroughWrite(buffer) {\n return buffer.toString(this.encoding);\n}\n\nfunction utf16DetectIncompleteChar(buffer) {\n this.charReceived = buffer.length % 2;\n this.charLength = this.charReceived ? 2 : 0;\n}\n\nfunction base64DetectIncompleteChar(buffer) {\n this.charReceived = buffer.length % 3;\n this.charLength = this.charReceived ? 3 : 0;\n}\n","module.exports = extend\n\nfunction extend() {\n var target = {}\n\n for (var i = 0; i < arguments.length; i++) {\n var source = arguments[i]\n\n for (var key in source) {\n if (source.hasOwnProperty(key)) {\n target[key] = source[key]\n }\n }\n }\n\n return target\n}\n","'use strict';\n\n\n////////////////////////////////////////////////////////////////////////////////\n// Helpers\n\n// Merge objects\n//\nfunction assign(obj /*from1, from2, from3, ...*/) {\n var sources = Array.prototype.slice.call(arguments, 1);\n\n sources.forEach(function (source) {\n if (!source) { return; }\n\n Object.keys(source).forEach(function (key) {\n obj[key] = source[key];\n });\n });\n\n return obj;\n}\n\nfunction _class(obj) { return Object.prototype.toString.call(obj); }\nfunction isString(obj) { return _class(obj) === '[object String]'; }\nfunction isObject(obj) { return _class(obj) === '[object Object]'; }\nfunction isRegExp(obj) { return _class(obj) === '[object RegExp]'; }\nfunction isFunction(obj) { return _class(obj) === '[object Function]'; }\n\n\nfunction escapeRE(str) { return str.replace(/[.?*+^$[\\]\\\\(){}|-]/g, '\\\\$&'); }\n\n////////////////////////////////////////////////////////////////////////////////\n\n\nvar defaultOptions = {\n fuzzyLink: true,\n fuzzyEmail: true,\n fuzzyIP: false\n};\n\n\nfunction isOptionsObj(obj) {\n return Object.keys(obj || {}).reduce(function (acc, k) {\n return acc || defaultOptions.hasOwnProperty(k);\n }, false);\n}\n\n\nvar defaultSchemas = {\n 'http:': {\n validate: function (text, pos, self) {\n var tail = text.slice(pos);\n\n if (!self.re.http) {\n // compile lazily, because \"host\"-containing variables can change on tlds update.\n self.re.http = new RegExp(\n '^\\\\/\\\\/' + self.re.src_auth + self.re.src_host_port_strict + self.re.src_path, 'i'\n );\n }\n if (self.re.http.test(tail)) {\n return tail.match(self.re.http)[0].length;\n }\n return 0;\n }\n },\n 'https:': 'http:',\n 'ftp:': 'http:',\n '//': {\n validate: function (text, pos, self) {\n var tail = text.slice(pos);\n\n if (!self.re.no_http) {\n // compile lazily, because \"host\"-containing variables can change on tlds update.\n self.re.no_http = new RegExp(\n '^' +\n self.re.src_auth +\n // Don't allow single-level domains, because of false positives like '//test'\n // with code comments\n '(?:localhost|(?:(?:' + self.re.src_domain + ')\\\\.)+' + self.re.src_domain_root + ')' +\n self.re.src_port +\n self.re.src_host_terminator +\n self.re.src_path,\n\n 'i'\n );\n }\n\n if (self.re.no_http.test(tail)) {\n // should not be `://` & `///`, that protects from errors in protocol name\n if (pos >= 3 && text[pos - 3] === ':') { return 0; }\n if (pos >= 3 && text[pos - 3] === '/') { return 0; }\n return tail.match(self.re.no_http)[0].length;\n }\n return 0;\n }\n },\n 'mailto:': {\n validate: function (text, pos, self) {\n var tail = text.slice(pos);\n\n if (!self.re.mailto) {\n self.re.mailto = new RegExp(\n '^' + self.re.src_email_name + '@' + self.re.src_host_strict, 'i'\n );\n }\n if (self.re.mailto.test(tail)) {\n return tail.match(self.re.mailto)[0].length;\n }\n return 0;\n }\n }\n};\n\n/*eslint-disable max-len*/\n\n// RE pattern for 2-character tlds (autogenerated by ./support/tlds_2char_gen.js)\nvar tlds_2ch_src_re = 'a[cdefgilmnoqrstuwxz]|b[abdefghijmnorstvwyz]|c[acdfghiklmnoruvwxyz]|d[ejkmoz]|e[cegrstu]|f[ijkmor]|g[abdefghilmnpqrstuwy]|h[kmnrtu]|i[delmnoqrst]|j[emop]|k[eghimnprwyz]|l[abcikrstuvy]|m[acdeghklmnopqrstuvwxyz]|n[acefgilopruz]|om|p[aefghklmnrstwy]|qa|r[eosuw]|s[abcdeghijklmnortuvxyz]|t[cdfghjklmnortvwz]|u[agksyz]|v[aceginu]|w[fs]|y[et]|z[amw]';\n\n// DON'T try to make PRs with changes. Extend TLDs with LinkifyIt.tlds() instead\nvar tlds_default = 'biz|com|edu|gov|net|org|pro|web|xxx|aero|asia|coop|info|museum|name|shop|рф'.split('|');\n\n/*eslint-enable max-len*/\n\n////////////////////////////////////////////////////////////////////////////////\n\nfunction resetScanCache(self) {\n self.__index__ = -1;\n self.__text_cache__ = '';\n}\n\nfunction createValidator(re) {\n return function (text, pos) {\n var tail = text.slice(pos);\n\n if (re.test(tail)) {\n return tail.match(re)[0].length;\n }\n return 0;\n };\n}\n\nfunction createNormalizer() {\n return function (match, self) {\n self.normalize(match);\n };\n}\n\n// Schemas compiler. Build regexps.\n//\nfunction compile(self) {\n\n // Load & clone RE patterns.\n var re = self.re = require('./lib/re')(self.__opts__);\n\n // Define dynamic patterns\n var tlds = self.__tlds__.slice();\n\n self.onCompile();\n\n if (!self.__tlds_replaced__) {\n tlds.push(tlds_2ch_src_re);\n }\n tlds.push(re.src_xn);\n\n re.src_tlds = tlds.join('|');\n\n function untpl(tpl) { return tpl.replace('%TLDS%', re.src_tlds); }\n\n re.email_fuzzy = RegExp(untpl(re.tpl_email_fuzzy), 'i');\n re.link_fuzzy = RegExp(untpl(re.tpl_link_fuzzy), 'i');\n re.link_no_ip_fuzzy = RegExp(untpl(re.tpl_link_no_ip_fuzzy), 'i');\n re.host_fuzzy_test = RegExp(untpl(re.tpl_host_fuzzy_test), 'i');\n\n //\n // Compile each schema\n //\n\n var aliases = [];\n\n self.__compiled__ = {}; // Reset compiled data\n\n function schemaError(name, val) {\n throw new Error('(LinkifyIt) Invalid schema \"' + name + '\": ' + val);\n }\n\n Object.keys(self.__schemas__).forEach(function (name) {\n var val = self.__schemas__[name];\n\n // skip disabled methods\n if (val === null) { return; }\n\n var compiled = { validate: null, link: null };\n\n self.__compiled__[name] = compiled;\n\n if (isObject(val)) {\n if (isRegExp(val.validate)) {\n compiled.validate = createValidator(val.validate);\n } else if (isFunction(val.validate)) {\n compiled.validate = val.validate;\n } else {\n schemaError(name, val);\n }\n\n if (isFunction(val.normalize)) {\n compiled.normalize = val.normalize;\n } else if (!val.normalize) {\n compiled.normalize = createNormalizer();\n } else {\n schemaError(name, val);\n }\n\n return;\n }\n\n if (isString(val)) {\n aliases.push(name);\n return;\n }\n\n schemaError(name, val);\n });\n\n //\n // Compile postponed aliases\n //\n\n aliases.forEach(function (alias) {\n if (!self.__compiled__[self.__schemas__[alias]]) {\n // Silently fail on missed schemas to avoid errons on disable.\n // schemaError(alias, self.__schemas__[alias]);\n return;\n }\n\n self.__compiled__[alias].validate =\n self.__compiled__[self.__schemas__[alias]].validate;\n self.__compiled__[alias].normalize =\n self.__compiled__[self.__schemas__[alias]].normalize;\n });\n\n //\n // Fake record for guessed links\n //\n self.__compiled__[''] = { validate: null, normalize: createNormalizer() };\n\n //\n // Build schema condition\n //\n var slist = Object.keys(self.__compiled__)\n .filter(function (name) {\n // Filter disabled & fake schemas\n return name.length > 0 && self.__compiled__[name];\n })\n .map(escapeRE)\n .join('|');\n // (?!_) cause 1.5x slowdown\n self.re.schema_test = RegExp('(^|(?!_)(?:[><\\uff5c]|' + re.src_ZPCc + '))(' + slist + ')', 'i');\n self.re.schema_search = RegExp('(^|(?!_)(?:[><\\uff5c]|' + re.src_ZPCc + '))(' + slist + ')', 'ig');\n self.re.schema_at_start = RegExp('^' + self.re.schema_search.source, 'i');\n\n self.re.pretest = RegExp(\n '(' + self.re.schema_test.source + ')|(' + self.re.host_fuzzy_test.source + ')|@',\n 'i'\n );\n\n //\n // Cleanup\n //\n\n resetScanCache(self);\n}\n\n/**\n * class Match\n *\n * Match result. Single element of array, returned by [[LinkifyIt#match]]\n **/\nfunction Match(self, shift) {\n var start = self.__index__,\n end = self.__last_index__,\n text = self.__text_cache__.slice(start, end);\n\n /**\n * Match#schema -> String\n *\n * Prefix (protocol) for matched string.\n **/\n this.schema = self.__schema__.toLowerCase();\n /**\n * Match#index -> Number\n *\n * First position of matched string.\n **/\n this.index = start + shift;\n /**\n * Match#lastIndex -> Number\n *\n * Next position after matched string.\n **/\n this.lastIndex = end + shift;\n /**\n * Match#raw -> String\n *\n * Matched string.\n **/\n this.raw = text;\n /**\n * Match#text -> String\n *\n * Notmalized text of matched string.\n **/\n this.text = text;\n /**\n * Match#url -> String\n *\n * Normalized url of matched string.\n **/\n this.url = text;\n}\n\nfunction createMatch(self, shift) {\n var match = new Match(self, shift);\n\n self.__compiled__[match.schema].normalize(match, self);\n\n return match;\n}\n\n\n/**\n * class LinkifyIt\n **/\n\n/**\n * new LinkifyIt(schemas, options)\n * - schemas (Object): Optional. Additional schemas to validate (prefix/validator)\n * - options (Object): { fuzzyLink|fuzzyEmail|fuzzyIP: true|false }\n *\n * Creates new linkifier instance with optional additional schemas.\n * Can be called without `new` keyword for convenience.\n *\n * By default understands:\n *\n * - `http(s)://...` , `ftp://...`, `mailto:...` & `//...` links\n * - \"fuzzy\" links and emails (example.com, foo@bar.com).\n *\n * `schemas` is an object, where each key/value describes protocol/rule:\n *\n * - __key__ - link prefix (usually, protocol name with `:` at the end, `skype:`\n * for example). `linkify-it` makes shure that prefix is not preceeded with\n * alphanumeric char and symbols. Only whitespaces and punctuation allowed.\n * - __value__ - rule to check tail after link prefix\n * - _String_ - just alias to existing rule\n * - _Object_\n * - _validate_ - validator function (should return matched length on success),\n * or `RegExp`.\n * - _normalize_ - optional function to normalize text & url of matched result\n * (for example, for @twitter mentions).\n *\n * `options`:\n *\n * - __fuzzyLink__ - recognige URL-s without `http(s):` prefix. Default `true`.\n * - __fuzzyIP__ - allow IPs in fuzzy links above. Can conflict with some texts\n * like version numbers. Default `false`.\n * - __fuzzyEmail__ - recognize emails without `mailto:` prefix.\n *\n **/\nfunction LinkifyIt(schemas, options) {\n if (!(this instanceof LinkifyIt)) {\n return new LinkifyIt(schemas, options);\n }\n\n if (!options) {\n if (isOptionsObj(schemas)) {\n options = schemas;\n schemas = {};\n }\n }\n\n this.__opts__ = assign({}, defaultOptions, options);\n\n // Cache last tested result. Used to skip repeating steps on next `match` call.\n this.__index__ = -1;\n this.__last_index__ = -1; // Next scan position\n this.__schema__ = '';\n this.__text_cache__ = '';\n\n this.__schemas__ = assign({}, defaultSchemas, schemas);\n this.__compiled__ = {};\n\n this.__tlds__ = tlds_default;\n this.__tlds_replaced__ = false;\n\n this.re = {};\n\n compile(this);\n}\n\n\n/** chainable\n * LinkifyIt#add(schema, definition)\n * - schema (String): rule name (fixed pattern prefix)\n * - definition (String|RegExp|Object): schema definition\n *\n * Add new rule definition. See constructor description for details.\n **/\nLinkifyIt.prototype.add = function add(schema, definition) {\n this.__schemas__[schema] = definition;\n compile(this);\n return this;\n};\n\n\n/** chainable\n * LinkifyIt#set(options)\n * - options (Object): { fuzzyLink|fuzzyEmail|fuzzyIP: true|false }\n *\n * Set recognition options for links without schema.\n **/\nLinkifyIt.prototype.set = function set(options) {\n this.__opts__ = assign(this.__opts__, options);\n return this;\n};\n\n\n/**\n * LinkifyIt#test(text) -> Boolean\n *\n * Searches linkifiable pattern and returns `true` on success or `false` on fail.\n **/\nLinkifyIt.prototype.test = function test(text) {\n // Reset scan cache\n this.__text_cache__ = text;\n this.__index__ = -1;\n\n if (!text.length) { return false; }\n\n var m, ml, me, len, shift, next, re, tld_pos, at_pos;\n\n // try to scan for link with schema - that's the most simple rule\n if (this.re.schema_test.test(text)) {\n re = this.re.schema_search;\n re.lastIndex = 0;\n while ((m = re.exec(text)) !== null) {\n len = this.testSchemaAt(text, m[2], re.lastIndex);\n if (len) {\n this.__schema__ = m[2];\n this.__index__ = m.index + m[1].length;\n this.__last_index__ = m.index + m[0].length + len;\n break;\n }\n }\n }\n\n if (this.__opts__.fuzzyLink && this.__compiled__['http:']) {\n // guess schemaless links\n tld_pos = text.search(this.re.host_fuzzy_test);\n if (tld_pos >= 0) {\n // if tld is located after found link - no need to check fuzzy pattern\n if (this.__index__ < 0 || tld_pos < this.__index__) {\n if ((ml = text.match(this.__opts__.fuzzyIP ? this.re.link_fuzzy : this.re.link_no_ip_fuzzy)) !== null) {\n\n shift = ml.index + ml[1].length;\n\n if (this.__index__ < 0 || shift < this.__index__) {\n this.__schema__ = '';\n this.__index__ = shift;\n this.__last_index__ = ml.index + ml[0].length;\n }\n }\n }\n }\n }\n\n if (this.__opts__.fuzzyEmail && this.__compiled__['mailto:']) {\n // guess schemaless emails\n at_pos = text.indexOf('@');\n if (at_pos >= 0) {\n // We can't skip this check, because this cases are possible:\n // 192.168.1.1@gmail.com, my.in@example.com\n if ((me = text.match(this.re.email_fuzzy)) !== null) {\n\n shift = me.index + me[1].length;\n next = me.index + me[0].length;\n\n if (this.__index__ < 0 || shift < this.__index__ ||\n (shift === this.__index__ && next > this.__last_index__)) {\n this.__schema__ = 'mailto:';\n this.__index__ = shift;\n this.__last_index__ = next;\n }\n }\n }\n }\n\n return this.__index__ >= 0;\n};\n\n\n/**\n * LinkifyIt#pretest(text) -> Boolean\n *\n * Very quick check, that can give false positives. Returns true if link MAY BE\n * can exists. Can be used for speed optimization, when you need to check that\n * link NOT exists.\n **/\nLinkifyIt.prototype.pretest = function pretest(text) {\n return this.re.pretest.test(text);\n};\n\n\n/**\n * LinkifyIt#testSchemaAt(text, name, position) -> Number\n * - text (String): text to scan\n * - name (String): rule (schema) name\n * - position (Number): text offset to check from\n *\n * Similar to [[LinkifyIt#test]] but checks only specific protocol tail exactly\n * at given position. Returns length of found pattern (0 on fail).\n **/\nLinkifyIt.prototype.testSchemaAt = function testSchemaAt(text, schema, pos) {\n // If not supported schema check requested - terminate\n if (!this.__compiled__[schema.toLowerCase()]) {\n return 0;\n }\n return this.__compiled__[schema.toLowerCase()].validate(text, pos, this);\n};\n\n\n/**\n * LinkifyIt#match(text) -> Array|null\n *\n * Returns array of found link descriptions or `null` on fail. We strongly\n * recommend to use [[LinkifyIt#test]] first, for best speed.\n *\n * ##### Result match description\n *\n * - __schema__ - link schema, can be empty for fuzzy links, or `//` for\n * protocol-neutral links.\n * - __index__ - offset of matched text\n * - __lastIndex__ - index of next char after mathch end\n * - __raw__ - matched text\n * - __text__ - normalized text\n * - __url__ - link, generated from matched text\n **/\nLinkifyIt.prototype.match = function match(text) {\n var shift = 0, result = [];\n\n // Try to take previous element from cache, if .test() called before\n if (this.__index__ >= 0 && this.__text_cache__ === text) {\n result.push(createMatch(this, shift));\n shift = this.__last_index__;\n }\n\n // Cut head if cache was used\n var tail = shift ? text.slice(shift) : text;\n\n // Scan string until end reached\n while (this.test(tail)) {\n result.push(createMatch(this, shift));\n\n tail = tail.slice(this.__last_index__);\n shift += this.__last_index__;\n }\n\n if (result.length) {\n return result;\n }\n\n return null;\n};\n\n\n/**\n * LinkifyIt#matchAtStart(text) -> Match|null\n *\n * Returns fully-formed (not fuzzy) link if it starts at the beginning\n * of the string, and null otherwise.\n **/\nLinkifyIt.prototype.matchAtStart = function matchAtStart(text) {\n // Reset scan cache\n this.__text_cache__ = text;\n this.__index__ = -1;\n\n if (!text.length) return null;\n\n var m = this.re.schema_at_start.exec(text);\n if (!m) return null;\n\n var len = this.testSchemaAt(text, m[2], m[0].length);\n if (!len) return null;\n\n this.__schema__ = m[2];\n this.__index__ = m.index + m[1].length;\n this.__last_index__ = m.index + m[0].length + len;\n\n return createMatch(this, 0);\n};\n\n\n/** chainable\n * LinkifyIt#tlds(list [, keepOld]) -> this\n * - list (Array): list of tlds\n * - keepOld (Boolean): merge with current list if `true` (`false` by default)\n *\n * Load (or merge) new tlds list. Those are user for fuzzy links (without prefix)\n * to avoid false positives. By default this algorythm used:\n *\n * - hostname with any 2-letter root zones are ok.\n * - biz|com|edu|gov|net|org|pro|web|xxx|aero|asia|coop|info|museum|name|shop|рф\n * are ok.\n * - encoded (`xn--...`) root zones are ok.\n *\n * If list is replaced, then exact match for 2-chars root zones will be checked.\n **/\nLinkifyIt.prototype.tlds = function tlds(list, keepOld) {\n list = Array.isArray(list) ? list : [ list ];\n\n if (!keepOld) {\n this.__tlds__ = list.slice();\n this.__tlds_replaced__ = true;\n compile(this);\n return this;\n }\n\n this.__tlds__ = this.__tlds__.concat(list)\n .sort()\n .filter(function (el, idx, arr) {\n return el !== arr[idx - 1];\n })\n .reverse();\n\n compile(this);\n return this;\n};\n\n/**\n * LinkifyIt#normalize(match)\n *\n * Default normalizer (if schema does not define it's own).\n **/\nLinkifyIt.prototype.normalize = function normalize(match) {\n\n // Do minimal possible changes by default. Need to collect feedback prior\n // to move forward https://github.com/markdown-it/linkify-it/issues/1\n\n if (!match.schema) { match.url = 'http://' + match.url; }\n\n if (match.schema === 'mailto:' && !/^mailto:/i.test(match.url)) {\n match.url = 'mailto:' + match.url;\n }\n};\n\n\n/**\n * LinkifyIt#onCompile()\n *\n * Override to modify basic RegExp-s.\n **/\nLinkifyIt.prototype.onCompile = function onCompile() {\n};\n\n\nmodule.exports = LinkifyIt;\n","'use strict';\n\n\nmodule.exports = function (opts) {\n var re = {};\n opts = opts || {};\n\n // Use direct extract instead of `regenerate` to reduse browserified size\n re.src_Any = require('uc.micro/properties/Any/regex').source;\n re.src_Cc = require('uc.micro/categories/Cc/regex').source;\n re.src_Z = require('uc.micro/categories/Z/regex').source;\n re.src_P = require('uc.micro/categories/P/regex').source;\n\n // \\p{\\Z\\P\\Cc\\CF} (white spaces + control + format + punctuation)\n re.src_ZPCc = [ re.src_Z, re.src_P, re.src_Cc ].join('|');\n\n // \\p{\\Z\\Cc} (white spaces + control)\n re.src_ZCc = [ re.src_Z, re.src_Cc ].join('|');\n\n // Experimental. List of chars, completely prohibited in links\n // because can separate it from other part of text\n var text_separators = '[><\\uff5c]';\n\n // All possible word characters (everything without punctuation, spaces & controls)\n // Defined via punctuation & spaces to save space\n // Should be something like \\p{\\L\\N\\S\\M} (\\w but without `_`)\n re.src_pseudo_letter = '(?:(?!' + text_separators + '|' + re.src_ZPCc + ')' + re.src_Any + ')';\n // The same as abothe but without [0-9]\n // var src_pseudo_letter_non_d = '(?:(?![0-9]|' + src_ZPCc + ')' + src_Any + ')';\n\n ////////////////////////////////////////////////////////////////////////////////\n\n re.src_ip4 =\n\n '(?:(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\\\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)';\n\n // Prohibit any of \"@/[]()\" in user/pass to avoid wrong domain fetch.\n re.src_auth = '(?:(?:(?!' + re.src_ZCc + '|[@/\\\\[\\\\]()]).)+@)?';\n\n re.src_port =\n\n '(?::(?:6(?:[0-4]\\\\d{3}|5(?:[0-4]\\\\d{2}|5(?:[0-2]\\\\d|3[0-5])))|[1-5]?\\\\d{1,4}))?';\n\n re.src_host_terminator =\n\n '(?=$|' + text_separators + '|' + re.src_ZPCc + ')' +\n '(?!' + (opts['---'] ? '-(?!--)|' : '-|') + '_|:\\\\d|\\\\.-|\\\\.(?!$|' + re.src_ZPCc + '))';\n\n re.src_path =\n\n '(?:' +\n '[/?#]' +\n '(?:' +\n '(?!' + re.src_ZCc + '|' + text_separators + '|[()[\\\\]{}.,\"\\'?!\\\\-;]).|' +\n '\\\\[(?:(?!' + re.src_ZCc + '|\\\\]).)*\\\\]|' +\n '\\\\((?:(?!' + re.src_ZCc + '|[)]).)*\\\\)|' +\n '\\\\{(?:(?!' + re.src_ZCc + '|[}]).)*\\\\}|' +\n '\\\\\"(?:(?!' + re.src_ZCc + '|[\"]).)+\\\\\"|' +\n \"\\\\'(?:(?!\" + re.src_ZCc + \"|[']).)+\\\\'|\" +\n \"\\\\'(?=\" + re.src_pseudo_letter + '|[-])|' + // allow `I'm_king` if no pair found\n '\\\\.{2,}[a-zA-Z0-9%/&]|' + // google has many dots in \"google search\" links (#66, #81).\n // github has ... in commit range links,\n // Restrict to\n // - english\n // - percent-encoded\n // - parts of file path\n // - params separator\n // until more examples found.\n '\\\\.(?!' + re.src_ZCc + '|[.]|$)|' +\n (opts['---'] ?\n '\\\\-(?!--(?:[^-]|$))(?:-*)|' // `---` => long dash, terminate\n :\n '\\\\-+|'\n ) +\n ',(?!' + re.src_ZCc + '|$)|' + // allow `,,,` in paths\n ';(?!' + re.src_ZCc + '|$)|' + // allow `;` if not followed by space-like char\n '\\\\!+(?!' + re.src_ZCc + '|[!]|$)|' + // allow `!!!` in paths, but not at the end\n '\\\\?(?!' + re.src_ZCc + '|[?]|$)' +\n ')+' +\n '|\\\\/' +\n ')?';\n\n // Allow anything in markdown spec, forbid quote (\") at the first position\n // because emails enclosed in quotes are far more common\n re.src_email_name =\n\n '[\\\\-;:&=\\\\+\\\\$,\\\\.a-zA-Z0-9_][\\\\-;:&=\\\\+\\\\$,\\\\\"\\\\.a-zA-Z0-9_]*';\n\n re.src_xn =\n\n 'xn--[a-z0-9\\\\-]{1,59}';\n\n // More to read about domain names\n // http://serverfault.com/questions/638260/\n\n re.src_domain_root =\n\n // Allow letters & digits (http://test1)\n '(?:' +\n re.src_xn +\n '|' +\n re.src_pseudo_letter + '{1,63}' +\n ')';\n\n re.src_domain =\n\n '(?:' +\n re.src_xn +\n '|' +\n '(?:' + re.src_pseudo_letter + ')' +\n '|' +\n '(?:' + re.src_pseudo_letter + '(?:-|' + re.src_pseudo_letter + '){0,61}' + re.src_pseudo_letter + ')' +\n ')';\n\n re.src_host =\n\n '(?:' +\n // Don't need IP check, because digits are already allowed in normal domain names\n // src_ip4 +\n // '|' +\n '(?:(?:(?:' + re.src_domain + ')\\\\.)*' + re.src_domain/*_root*/ + ')' +\n ')';\n\n re.tpl_host_fuzzy =\n\n '(?:' +\n re.src_ip4 +\n '|' +\n '(?:(?:(?:' + re.src_domain + ')\\\\.)+(?:%TLDS%))' +\n ')';\n\n re.tpl_host_no_ip_fuzzy =\n\n '(?:(?:(?:' + re.src_domain + ')\\\\.)+(?:%TLDS%))';\n\n re.src_host_strict =\n\n re.src_host + re.src_host_terminator;\n\n re.tpl_host_fuzzy_strict =\n\n re.tpl_host_fuzzy + re.src_host_terminator;\n\n re.src_host_port_strict =\n\n re.src_host + re.src_port + re.src_host_terminator;\n\n re.tpl_host_port_fuzzy_strict =\n\n re.tpl_host_fuzzy + re.src_port + re.src_host_terminator;\n\n re.tpl_host_port_no_ip_fuzzy_strict =\n\n re.tpl_host_no_ip_fuzzy + re.src_port + re.src_host_terminator;\n\n\n ////////////////////////////////////////////////////////////////////////////////\n // Main rules\n\n // Rude test fuzzy links by host, for quick deny\n re.tpl_host_fuzzy_test =\n\n 'localhost|www\\\\.|\\\\.\\\\d{1,3}\\\\.|(?:\\\\.(?:%TLDS%)(?:' + re.src_ZPCc + '|>|$))';\n\n re.tpl_email_fuzzy =\n\n '(^|' + text_separators + '|\"|\\\\(|' + re.src_ZCc + ')' +\n '(' + re.src_email_name + '@' + re.tpl_host_fuzzy_strict + ')';\n\n re.tpl_link_fuzzy =\n // Fuzzy link can't be prepended with .:/\\- and non punctuation.\n // but can start with > (markdown blockquote)\n '(^|(?![.:/\\\\-_@])(?:[$+<=>^`|\\uff5c]|' + re.src_ZPCc + '))' +\n '((?![$+<=>^`|\\uff5c])' + re.tpl_host_port_fuzzy_strict + re.src_path + ')';\n\n re.tpl_link_no_ip_fuzzy =\n // Fuzzy link can't be prepended with .:/\\- and non punctuation.\n // but can start with > (markdown blockquote)\n '(^|(?![.:/\\\\-_@])(?:[$+<=>^`|\\uff5c]|' + re.src_ZPCc + '))' +\n '((?![$+<=>^`|\\uff5c])' + re.tpl_host_port_no_ip_fuzzy_strict + re.src_path + ')';\n\n return re;\n};\n","\nexports.compare = function (a, b) {\n\n if(Buffer.isBuffer(a)) {\n var l = Math.min(a.length, b.length)\n for(var i = 0; i < l; i++) {\n var cmp = a[i] - b[i]\n if(cmp) return cmp\n }\n return a.length - b.length\n }\n\n return a < b ? -1 : a > b ? 1 : 0\n}\n\n// to be compatible with the current abstract-leveldown tests\n// nullish or empty strings.\n// I could use !!val but I want to permit numbers and booleans,\n// if possible.\n\nfunction isDef (val) {\n return val !== undefined && val !== ''\n}\n\nfunction has (range, name) {\n return Object.hasOwnProperty.call(range, name)\n}\n\nfunction hasKey(range, name) {\n return Object.hasOwnProperty.call(range, name) && name\n}\n\nvar lowerBoundKey = exports.lowerBoundKey = function (range) {\n return (\n hasKey(range, 'gt')\n || hasKey(range, 'gte')\n || hasKey(range, 'min')\n || (range.reverse ? hasKey(range, 'end') : hasKey(range, 'start'))\n || undefined\n )\n}\n\nvar lowerBound = exports.lowerBound = function (range, def) {\n var k = lowerBoundKey(range)\n return k ? range[k] : def\n}\n\nvar lowerBoundInclusive = exports.lowerBoundInclusive = function (range) {\n return has(range, 'gt') ? false : true\n}\n\nvar upperBoundInclusive = exports.upperBoundInclusive =\n function (range) {\n return (has(range, 'lt') /*&& !range.maxEx*/) ? false : true\n }\n\nvar lowerBoundExclusive = exports.lowerBoundExclusive =\n function (range) {\n return !lowerBoundInclusive(range)\n }\n\nvar upperBoundExclusive = exports.upperBoundExclusive =\n function (range) {\n return !upperBoundInclusive(range)\n }\n\nvar upperBoundKey = exports.upperBoundKey = function (range) {\n return (\n hasKey(range, 'lt')\n || hasKey(range, 'lte')\n || hasKey(range, 'max')\n || (range.reverse ? hasKey(range, 'start') : hasKey(range, 'end'))\n || undefined\n )\n}\n\nvar upperBound = exports.upperBound = function (range, def) {\n var k = upperBoundKey(range)\n return k ? range[k] : def\n}\n\nexports.start = function (range, def) {\n return range.reverse ? upperBound(range, def) : lowerBound(range, def)\n}\nexports.end = function (range, def) {\n return range.reverse ? lowerBound(range, def) : upperBound(range, def)\n}\nexports.startInclusive = function (range) {\n return (\n range.reverse\n ? upperBoundInclusive(range)\n : lowerBoundInclusive(range)\n )\n}\nexports.endInclusive = function (range) {\n return (\n range.reverse\n ? lowerBoundInclusive(range)\n : upperBoundInclusive(range)\n )\n}\n\nfunction id (e) { return e }\n\nexports.toLtgt = function (range, _range, map, lower, upper) {\n _range = _range || {}\n map = map || id\n var defaults = arguments.length > 3\n var lb = exports.lowerBoundKey(range)\n var ub = exports.upperBoundKey(range)\n if(lb) {\n if(lb === 'gt') _range.gt = map(range.gt, false)\n else _range.gte = map(range[lb], false)\n }\n else if(defaults)\n _range.gte = map(lower, false)\n\n if(ub) {\n if(ub === 'lt') _range.lt = map(range.lt, true)\n else _range.lte = map(range[ub], true)\n }\n else if(defaults)\n _range.lte = map(upper, true)\n\n if(range.reverse != null)\n _range.reverse = !!range.reverse\n\n //if range was used mutably\n //(in level-sublevel it's part of an options object\n //that has more properties on it.)\n if(has(_range, 'max')) delete _range.max\n if(has(_range, 'min')) delete _range.min\n if(has(_range, 'start')) delete _range.start\n if(has(_range, 'end')) delete _range.end\n\n return _range\n}\n\nexports.contains = function (range, key, compare) {\n compare = compare || exports.compare\n\n var lb = lowerBound(range)\n if(isDef(lb)) {\n var cmp = compare(key, lb)\n if(cmp < 0 || (cmp === 0 && lowerBoundExclusive(range)))\n return false\n }\n\n var ub = upperBound(range)\n if(isDef(ub)) {\n var cmp = compare(key, ub)\n if(cmp > 0 || (cmp === 0) && upperBoundExclusive(range))\n return false\n }\n\n return true\n}\n\nexports.filter = function (range, compare) {\n return function (key) {\n return exports.contains(range, key, compare)\n }\n}\n\n\n","'use strict';\n\n\nmodule.exports = require('./lib/');\n","// HTML5 entities map: { name -> utf16string }\n//\n'use strict';\n\n/*eslint quotes:0*/\nmodule.exports = require('entities/lib/maps/entities.json');\n","// List of valid html blocks names, accorting to commonmark spec\n// http://jgm.github.io/CommonMark/spec.html#html-blocks\n\n'use strict';\n\n\nmodule.exports = [\n 'address',\n 'article',\n 'aside',\n 'base',\n 'basefont',\n 'blockquote',\n 'body',\n 'caption',\n 'center',\n 'col',\n 'colgroup',\n 'dd',\n 'details',\n 'dialog',\n 'dir',\n 'div',\n 'dl',\n 'dt',\n 'fieldset',\n 'figcaption',\n 'figure',\n 'footer',\n 'form',\n 'frame',\n 'frameset',\n 'h1',\n 'h2',\n 'h3',\n 'h4',\n 'h5',\n 'h6',\n 'head',\n 'header',\n 'hr',\n 'html',\n 'iframe',\n 'legend',\n 'li',\n 'link',\n 'main',\n 'menu',\n 'menuitem',\n 'nav',\n 'noframes',\n 'ol',\n 'optgroup',\n 'option',\n 'p',\n 'param',\n 'section',\n 'source',\n 'summary',\n 'table',\n 'tbody',\n 'td',\n 'tfoot',\n 'th',\n 'thead',\n 'title',\n 'tr',\n 'track',\n 'ul'\n];\n","// Regexps to match html elements\n\n'use strict';\n\nvar attr_name = '[a-zA-Z_:][a-zA-Z0-9:._-]*';\n\nvar unquoted = '[^\"\\'=<>`\\\\x00-\\\\x20]+';\nvar single_quoted = \"'[^']*'\";\nvar double_quoted = '\"[^\"]*\"';\n\nvar attr_value = '(?:' + unquoted + '|' + single_quoted + '|' + double_quoted + ')';\n\nvar attribute = '(?:\\\\s+' + attr_name + '(?:\\\\s*=\\\\s*' + attr_value + ')?)';\n\nvar open_tag = '<[A-Za-z][A-Za-z0-9\\\\-]*' + attribute + '*\\\\s*\\\\/?>';\n\nvar close_tag = '<\\\\/[A-Za-z][A-Za-z0-9\\\\-]*\\\\s*>';\nvar comment = '|';\nvar processing = '<[?][\\\\s\\\\S]*?[?]>';\nvar declaration = ']*>';\nvar cdata = '';\n\nvar HTML_TAG_RE = new RegExp('^(?:' + open_tag + '|' + close_tag + '|' + comment +\n '|' + processing + '|' + declaration + '|' + cdata + ')');\nvar HTML_OPEN_CLOSE_TAG_RE = new RegExp('^(?:' + open_tag + '|' + close_tag + ')');\n\nmodule.exports.HTML_TAG_RE = HTML_TAG_RE;\nmodule.exports.HTML_OPEN_CLOSE_TAG_RE = HTML_OPEN_CLOSE_TAG_RE;\n","// Utilities\n//\n'use strict';\n\n\nfunction _class(obj) { return Object.prototype.toString.call(obj); }\n\nfunction isString(obj) { return _class(obj) === '[object String]'; }\n\nvar _hasOwnProperty = Object.prototype.hasOwnProperty;\n\nfunction has(object, key) {\n return _hasOwnProperty.call(object, key);\n}\n\n// Merge objects\n//\nfunction assign(obj /*from1, from2, from3, ...*/) {\n var sources = Array.prototype.slice.call(arguments, 1);\n\n sources.forEach(function (source) {\n if (!source) { return; }\n\n if (typeof source !== 'object') {\n throw new TypeError(source + 'must be object');\n }\n\n Object.keys(source).forEach(function (key) {\n obj[key] = source[key];\n });\n });\n\n return obj;\n}\n\n// Remove element from array and put another array at those position.\n// Useful for some operations with tokens\nfunction arrayReplaceAt(src, pos, newElements) {\n return [].concat(src.slice(0, pos), newElements, src.slice(pos + 1));\n}\n\n////////////////////////////////////////////////////////////////////////////////\n\nfunction isValidEntityCode(c) {\n /*eslint no-bitwise:0*/\n // broken sequence\n if (c >= 0xD800 && c <= 0xDFFF) { return false; }\n // never used\n if (c >= 0xFDD0 && c <= 0xFDEF) { return false; }\n if ((c & 0xFFFF) === 0xFFFF || (c & 0xFFFF) === 0xFFFE) { return false; }\n // control codes\n if (c >= 0x00 && c <= 0x08) { return false; }\n if (c === 0x0B) { return false; }\n if (c >= 0x0E && c <= 0x1F) { return false; }\n if (c >= 0x7F && c <= 0x9F) { return false; }\n // out of range\n if (c > 0x10FFFF) { return false; }\n return true;\n}\n\nfunction fromCodePoint(c) {\n /*eslint no-bitwise:0*/\n if (c > 0xffff) {\n c -= 0x10000;\n var surrogate1 = 0xd800 + (c >> 10),\n surrogate2 = 0xdc00 + (c & 0x3ff);\n\n return String.fromCharCode(surrogate1, surrogate2);\n }\n return String.fromCharCode(c);\n}\n\n\nvar UNESCAPE_MD_RE = /\\\\([!\"#$%&'()*+,\\-.\\/:;<=>?@[\\\\\\]^_`{|}~])/g;\nvar ENTITY_RE = /&([a-z#][a-z0-9]{1,31});/gi;\nvar UNESCAPE_ALL_RE = new RegExp(UNESCAPE_MD_RE.source + '|' + ENTITY_RE.source, 'gi');\n\nvar DIGITAL_ENTITY_TEST_RE = /^#((?:x[a-f0-9]{1,8}|[0-9]{1,8}))/i;\n\nvar entities = require('./entities');\n\nfunction replaceEntityPattern(match, name) {\n var code = 0;\n\n if (has(entities, name)) {\n return entities[name];\n }\n\n if (name.charCodeAt(0) === 0x23/* # */ && DIGITAL_ENTITY_TEST_RE.test(name)) {\n code = name[1].toLowerCase() === 'x' ?\n parseInt(name.slice(2), 16) : parseInt(name.slice(1), 10);\n\n if (isValidEntityCode(code)) {\n return fromCodePoint(code);\n }\n }\n\n return match;\n}\n\n/*function replaceEntities(str) {\n if (str.indexOf('&') < 0) { return str; }\n\n return str.replace(ENTITY_RE, replaceEntityPattern);\n}*/\n\nfunction unescapeMd(str) {\n if (str.indexOf('\\\\') < 0) { return str; }\n return str.replace(UNESCAPE_MD_RE, '$1');\n}\n\nfunction unescapeAll(str) {\n if (str.indexOf('\\\\') < 0 && str.indexOf('&') < 0) { return str; }\n\n return str.replace(UNESCAPE_ALL_RE, function (match, escaped, entity) {\n if (escaped) { return escaped; }\n return replaceEntityPattern(match, entity);\n });\n}\n\n////////////////////////////////////////////////////////////////////////////////\n\nvar HTML_ESCAPE_TEST_RE = /[&<>\"]/;\nvar HTML_ESCAPE_REPLACE_RE = /[&<>\"]/g;\nvar HTML_REPLACEMENTS = {\n '&': '&',\n '<': '<',\n '>': '>',\n '\"': '"'\n};\n\nfunction replaceUnsafeChar(ch) {\n return HTML_REPLACEMENTS[ch];\n}\n\nfunction escapeHtml(str) {\n if (HTML_ESCAPE_TEST_RE.test(str)) {\n return str.replace(HTML_ESCAPE_REPLACE_RE, replaceUnsafeChar);\n }\n return str;\n}\n\n////////////////////////////////////////////////////////////////////////////////\n\nvar REGEXP_ESCAPE_RE = /[.?*+^$[\\]\\\\(){}|-]/g;\n\nfunction escapeRE(str) {\n return str.replace(REGEXP_ESCAPE_RE, '\\\\$&');\n}\n\n////////////////////////////////////////////////////////////////////////////////\n\nfunction isSpace(code) {\n switch (code) {\n case 0x09:\n case 0x20:\n return true;\n }\n return false;\n}\n\n// Zs (unicode class) || [\\t\\f\\v\\r\\n]\nfunction isWhiteSpace(code) {\n if (code >= 0x2000 && code <= 0x200A) { return true; }\n switch (code) {\n case 0x09: // \\t\n case 0x0A: // \\n\n case 0x0B: // \\v\n case 0x0C: // \\f\n case 0x0D: // \\r\n case 0x20:\n case 0xA0:\n case 0x1680:\n case 0x202F:\n case 0x205F:\n case 0x3000:\n return true;\n }\n return false;\n}\n\n////////////////////////////////////////////////////////////////////////////////\n\n/*eslint-disable max-len*/\nvar UNICODE_PUNCT_RE = require('uc.micro/categories/P/regex');\n\n// Currently without astral characters support.\nfunction isPunctChar(ch) {\n return UNICODE_PUNCT_RE.test(ch);\n}\n\n\n// Markdown ASCII punctuation characters.\n//\n// !, \", #, $, %, &, ', (, ), *, +, ,, -, ., /, :, ;, <, =, >, ?, @, [, \\, ], ^, _, `, {, |, }, or ~\n// http://spec.commonmark.org/0.15/#ascii-punctuation-character\n//\n// Don't confuse with unicode punctuation !!! It lacks some chars in ascii range.\n//\nfunction isMdAsciiPunct(ch) {\n switch (ch) {\n case 0x21/* ! */:\n case 0x22/* \" */:\n case 0x23/* # */:\n case 0x24/* $ */:\n case 0x25/* % */:\n case 0x26/* & */:\n case 0x27/* ' */:\n case 0x28/* ( */:\n case 0x29/* ) */:\n case 0x2A/* * */:\n case 0x2B/* + */:\n case 0x2C/* , */:\n case 0x2D/* - */:\n case 0x2E/* . */:\n case 0x2F/* / */:\n case 0x3A/* : */:\n case 0x3B/* ; */:\n case 0x3C/* < */:\n case 0x3D/* = */:\n case 0x3E/* > */:\n case 0x3F/* ? */:\n case 0x40/* @ */:\n case 0x5B/* [ */:\n case 0x5C/* \\ */:\n case 0x5D/* ] */:\n case 0x5E/* ^ */:\n case 0x5F/* _ */:\n case 0x60/* ` */:\n case 0x7B/* { */:\n case 0x7C/* | */:\n case 0x7D/* } */:\n case 0x7E/* ~ */:\n return true;\n default:\n return false;\n }\n}\n\n// Hepler to unify [reference labels].\n//\nfunction normalizeReference(str) {\n // Trim and collapse whitespace\n //\n str = str.trim().replace(/\\s+/g, ' ');\n\n // In node v10 'ẞ'.toLowerCase() === 'Ṿ', which is presumed to be a bug\n // fixed in v12 (couldn't find any details).\n //\n // So treat this one as a special case\n // (remove this when node v10 is no longer supported).\n //\n if ('ẞ'.toLowerCase() === 'Ṿ') {\n str = str.replace(/ẞ/g, 'ß');\n }\n\n // .toLowerCase().toUpperCase() should get rid of all differences\n // between letter variants.\n //\n // Simple .toLowerCase() doesn't normalize 125 code points correctly,\n // and .toUpperCase doesn't normalize 6 of them (list of exceptions:\n // İ, ϴ, ẞ, Ω, K, Å - those are already uppercased, but have differently\n // uppercased versions).\n //\n // Here's an example showing how it happens. Lets take greek letter omega:\n // uppercase U+0398 (Θ), U+03f4 (ϴ) and lowercase U+03b8 (θ), U+03d1 (ϑ)\n //\n // Unicode entries:\n // 0398;GREEK CAPITAL LETTER THETA;Lu;0;L;;;;;N;;;;03B8;\n // 03B8;GREEK SMALL LETTER THETA;Ll;0;L;;;;;N;;;0398;;0398\n // 03D1;GREEK THETA SYMBOL;Ll;0;L; 03B8;;;;N;GREEK SMALL LETTER SCRIPT THETA;;0398;;0398\n // 03F4;GREEK CAPITAL THETA SYMBOL;Lu;0;L; 0398;;;;N;;;;03B8;\n //\n // Case-insensitive comparison should treat all of them as equivalent.\n //\n // But .toLowerCase() doesn't change ϑ (it's already lowercase),\n // and .toUpperCase() doesn't change ϴ (already uppercase).\n //\n // Applying first lower then upper case normalizes any character:\n // '\\u0398\\u03f4\\u03b8\\u03d1'.toLowerCase().toUpperCase() === '\\u0398\\u0398\\u0398\\u0398'\n //\n // Note: this is equivalent to unicode case folding; unicode normalization\n // is a different step that is not required here.\n //\n // Final result should be uppercased, because it's later stored in an object\n // (this avoid a conflict with Object.prototype members,\n // most notably, `__proto__`)\n //\n return str.toLowerCase().toUpperCase();\n}\n\n////////////////////////////////////////////////////////////////////////////////\n\n// Re-export libraries commonly used in both markdown-it and its plugins,\n// so plugins won't have to depend on them explicitly, which reduces their\n// bundled size (e.g. a browser build).\n//\nexports.lib = {};\nexports.lib.mdurl = require('mdurl');\nexports.lib.ucmicro = require('uc.micro');\n\nexports.assign = assign;\nexports.isString = isString;\nexports.has = has;\nexports.unescapeMd = unescapeMd;\nexports.unescapeAll = unescapeAll;\nexports.isValidEntityCode = isValidEntityCode;\nexports.fromCodePoint = fromCodePoint;\n// exports.replaceEntities = replaceEntities;\nexports.escapeHtml = escapeHtml;\nexports.arrayReplaceAt = arrayReplaceAt;\nexports.isSpace = isSpace;\nexports.isWhiteSpace = isWhiteSpace;\nexports.isMdAsciiPunct = isMdAsciiPunct;\nexports.isPunctChar = isPunctChar;\nexports.escapeRE = escapeRE;\nexports.normalizeReference = normalizeReference;\n","// Just a shortcut for bulk export\n'use strict';\n\n\nexports.parseLinkLabel = require('./parse_link_label');\nexports.parseLinkDestination = require('./parse_link_destination');\nexports.parseLinkTitle = require('./parse_link_title');\n","// Parse link destination\n//\n'use strict';\n\n\nvar unescapeAll = require('../common/utils').unescapeAll;\n\n\nmodule.exports = function parseLinkDestination(str, pos, max) {\n var code, level,\n lines = 0,\n start = pos,\n result = {\n ok: false,\n pos: 0,\n lines: 0,\n str: ''\n };\n\n if (str.charCodeAt(pos) === 0x3C /* < */) {\n pos++;\n while (pos < max) {\n code = str.charCodeAt(pos);\n if (code === 0x0A /* \\n */) { return result; }\n if (code === 0x3C /* < */) { return result; }\n if (code === 0x3E /* > */) {\n result.pos = pos + 1;\n result.str = unescapeAll(str.slice(start + 1, pos));\n result.ok = true;\n return result;\n }\n if (code === 0x5C /* \\ */ && pos + 1 < max) {\n pos += 2;\n continue;\n }\n\n pos++;\n }\n\n // no closing '>'\n return result;\n }\n\n // this should be ... } else { ... branch\n\n level = 0;\n while (pos < max) {\n code = str.charCodeAt(pos);\n\n if (code === 0x20) { break; }\n\n // ascii control characters\n if (code < 0x20 || code === 0x7F) { break; }\n\n if (code === 0x5C /* \\ */ && pos + 1 < max) {\n if (str.charCodeAt(pos + 1) === 0x20) { break; }\n pos += 2;\n continue;\n }\n\n if (code === 0x28 /* ( */) {\n level++;\n if (level > 32) { return result; }\n }\n\n if (code === 0x29 /* ) */) {\n if (level === 0) { break; }\n level--;\n }\n\n pos++;\n }\n\n if (start === pos) { return result; }\n if (level !== 0) { return result; }\n\n result.str = unescapeAll(str.slice(start, pos));\n result.lines = lines;\n result.pos = pos;\n result.ok = true;\n return result;\n};\n","// Parse link label\n//\n// this function assumes that first character (\"[\") already matches;\n// returns the end of the label\n//\n'use strict';\n\nmodule.exports = function parseLinkLabel(state, start, disableNested) {\n var level, found, marker, prevPos,\n labelEnd = -1,\n max = state.posMax,\n oldPos = state.pos;\n\n state.pos = start + 1;\n level = 1;\n\n while (state.pos < max) {\n marker = state.src.charCodeAt(state.pos);\n if (marker === 0x5D /* ] */) {\n level--;\n if (level === 0) {\n found = true;\n break;\n }\n }\n\n prevPos = state.pos;\n state.md.inline.skipToken(state);\n if (marker === 0x5B /* [ */) {\n if (prevPos === state.pos - 1) {\n // increase level if we find text `[`, which is not a part of any token\n level++;\n } else if (disableNested) {\n state.pos = oldPos;\n return -1;\n }\n }\n }\n\n if (found) {\n labelEnd = state.pos;\n }\n\n // restore old state\n state.pos = oldPos;\n\n return labelEnd;\n};\n","// Parse link title\n//\n'use strict';\n\n\nvar unescapeAll = require('../common/utils').unescapeAll;\n\n\nmodule.exports = function parseLinkTitle(str, pos, max) {\n var code,\n marker,\n lines = 0,\n start = pos,\n result = {\n ok: false,\n pos: 0,\n lines: 0,\n str: ''\n };\n\n if (pos >= max) { return result; }\n\n marker = str.charCodeAt(pos);\n\n if (marker !== 0x22 /* \" */ && marker !== 0x27 /* ' */ && marker !== 0x28 /* ( */) { return result; }\n\n pos++;\n\n // if opening marker is \"(\", switch it to closing marker \")\"\n if (marker === 0x28) { marker = 0x29; }\n\n while (pos < max) {\n code = str.charCodeAt(pos);\n if (code === marker) {\n result.pos = pos + 1;\n result.lines = lines;\n result.str = unescapeAll(str.slice(start + 1, pos));\n result.ok = true;\n return result;\n } else if (code === 0x28 /* ( */ && marker === 0x29 /* ) */) {\n return result;\n } else if (code === 0x0A) {\n lines++;\n } else if (code === 0x5C /* \\ */ && pos + 1 < max) {\n pos++;\n if (str.charCodeAt(pos) === 0x0A) {\n lines++;\n }\n }\n\n pos++;\n }\n\n return result;\n};\n","// Main parser class\n\n'use strict';\n\n\nvar utils = require('./common/utils');\nvar helpers = require('./helpers');\nvar Renderer = require('./renderer');\nvar ParserCore = require('./parser_core');\nvar ParserBlock = require('./parser_block');\nvar ParserInline = require('./parser_inline');\nvar LinkifyIt = require('linkify-it');\nvar mdurl = require('mdurl');\nvar punycode = require('punycode');\n\n\nvar config = {\n default: require('./presets/default'),\n zero: require('./presets/zero'),\n commonmark: require('./presets/commonmark')\n};\n\n////////////////////////////////////////////////////////////////////////////////\n//\n// This validator can prohibit more than really needed to prevent XSS. It's a\n// tradeoff to keep code simple and to be secure by default.\n//\n// If you need different setup - override validator method as you wish. Or\n// replace it with dummy function and use external sanitizer.\n//\n\nvar BAD_PROTO_RE = /^(vbscript|javascript|file|data):/;\nvar GOOD_DATA_RE = /^data:image\\/(gif|png|jpeg|webp);/;\n\nfunction validateLink(url) {\n // url should be normalized at this point, and existing entities are decoded\n var str = url.trim().toLowerCase();\n\n return BAD_PROTO_RE.test(str) ? (GOOD_DATA_RE.test(str) ? true : false) : true;\n}\n\n////////////////////////////////////////////////////////////////////////////////\n\n\nvar RECODE_HOSTNAME_FOR = [ 'http:', 'https:', 'mailto:' ];\n\nfunction normalizeLink(url) {\n var parsed = mdurl.parse(url, true);\n\n if (parsed.hostname) {\n // Encode hostnames in urls like:\n // `http://host/`, `https://host/`, `mailto:user@host`, `//host/`\n //\n // We don't encode unknown schemas, because it's likely that we encode\n // something we shouldn't (e.g. `skype:name` treated as `skype:host`)\n //\n if (!parsed.protocol || RECODE_HOSTNAME_FOR.indexOf(parsed.protocol) >= 0) {\n try {\n parsed.hostname = punycode.toASCII(parsed.hostname);\n } catch (er) { /**/ }\n }\n }\n\n return mdurl.encode(mdurl.format(parsed));\n}\n\nfunction normalizeLinkText(url) {\n var parsed = mdurl.parse(url, true);\n\n if (parsed.hostname) {\n // Encode hostnames in urls like:\n // `http://host/`, `https://host/`, `mailto:user@host`, `//host/`\n //\n // We don't encode unknown schemas, because it's likely that we encode\n // something we shouldn't (e.g. `skype:name` treated as `skype:host`)\n //\n if (!parsed.protocol || RECODE_HOSTNAME_FOR.indexOf(parsed.protocol) >= 0) {\n try {\n parsed.hostname = punycode.toUnicode(parsed.hostname);\n } catch (er) { /**/ }\n }\n }\n\n // add '%' to exclude list because of https://github.com/markdown-it/markdown-it/issues/720\n return mdurl.decode(mdurl.format(parsed), mdurl.decode.defaultChars + '%');\n}\n\n\n/**\n * class MarkdownIt\n *\n * Main parser/renderer class.\n *\n * ##### Usage\n *\n * ```javascript\n * // node.js, \"classic\" way:\n * var MarkdownIt = require('markdown-it'),\n * md = new MarkdownIt();\n * var result = md.render('# markdown-it rulezz!');\n *\n * // node.js, the same, but with sugar:\n * var md = require('markdown-it')();\n * var result = md.render('# markdown-it rulezz!');\n *\n * // browser without AMD, added to \"window\" on script load\n * // Note, there are no dash.\n * var md = window.markdownit();\n * var result = md.render('# markdown-it rulezz!');\n * ```\n *\n * Single line rendering, without paragraph wrap:\n *\n * ```javascript\n * var md = require('markdown-it')();\n * var result = md.renderInline('__markdown-it__ rulezz!');\n * ```\n **/\n\n/**\n * new MarkdownIt([presetName, options])\n * - presetName (String): optional, `commonmark` / `zero`\n * - options (Object)\n *\n * Creates parser instanse with given config. Can be called without `new`.\n *\n * ##### presetName\n *\n * MarkdownIt provides named presets as a convenience to quickly\n * enable/disable active syntax rules and options for common use cases.\n *\n * - [\"commonmark\"](https://github.com/markdown-it/markdown-it/blob/master/lib/presets/commonmark.js) -\n * configures parser to strict [CommonMark](http://commonmark.org/) mode.\n * - [default](https://github.com/markdown-it/markdown-it/blob/master/lib/presets/default.js) -\n * similar to GFM, used when no preset name given. Enables all available rules,\n * but still without html, typographer & autolinker.\n * - [\"zero\"](https://github.com/markdown-it/markdown-it/blob/master/lib/presets/zero.js) -\n * all rules disabled. Useful to quickly setup your config via `.enable()`.\n * For example, when you need only `bold` and `italic` markup and nothing else.\n *\n * ##### options:\n *\n * - __html__ - `false`. Set `true` to enable HTML tags in source. Be careful!\n * That's not safe! You may need external sanitizer to protect output from XSS.\n * It's better to extend features via plugins, instead of enabling HTML.\n * - __xhtmlOut__ - `false`. Set `true` to add '/' when closing single tags\n * (`
`). This is needed only for full CommonMark compatibility. In real\n * world you will need HTML output.\n * - __breaks__ - `false`. Set `true` to convert `\\n` in paragraphs into `
`.\n * - __langPrefix__ - `language-`. CSS language class prefix for fenced blocks.\n * Can be useful for external highlighters.\n * - __linkify__ - `false`. Set `true` to autoconvert URL-like text to links.\n * - __typographer__ - `false`. Set `true` to enable [some language-neutral\n * replacement](https://github.com/markdown-it/markdown-it/blob/master/lib/rules_core/replacements.js) +\n * quotes beautification (smartquotes).\n * - __quotes__ - `“”‘’`, String or Array. Double + single quotes replacement\n * pairs, when typographer enabled and smartquotes on. For example, you can\n * use `'«»„“'` for Russian, `'„“‚‘'` for German, and\n * `['«\\xA0', '\\xA0»', '‹\\xA0', '\\xA0›']` for French (including nbsp).\n * - __highlight__ - `null`. Highlighter function for fenced code blocks.\n * Highlighter `function (str, lang)` should return escaped HTML. It can also\n * return empty string if the source was not changed and should be escaped\n * externaly. If result starts with `):\n *\n * ```javascript\n * var hljs = require('highlight.js') // https://highlightjs.org/\n *\n * // Actual default values\n * var md = require('markdown-it')({\n * highlight: function (str, lang) {\n * if (lang && hljs.getLanguage(lang)) {\n * try {\n * return '
' +\n *                hljs.highlight(str, { language: lang, ignoreIllegals: true }).value +\n *                '
';\n * } catch (__) {}\n * }\n *\n * return '
' + md.utils.escapeHtml(str) + '
';\n * }\n * });\n * ```\n *\n **/\nfunction MarkdownIt(presetName, options) {\n if (!(this instanceof MarkdownIt)) {\n return new MarkdownIt(presetName, options);\n }\n\n if (!options) {\n if (!utils.isString(presetName)) {\n options = presetName || {};\n presetName = 'default';\n }\n }\n\n /**\n * MarkdownIt#inline -> ParserInline\n *\n * Instance of [[ParserInline]]. You may need it to add new rules when\n * writing plugins. For simple rules control use [[MarkdownIt.disable]] and\n * [[MarkdownIt.enable]].\n **/\n this.inline = new ParserInline();\n\n /**\n * MarkdownIt#block -> ParserBlock\n *\n * Instance of [[ParserBlock]]. You may need it to add new rules when\n * writing plugins. For simple rules control use [[MarkdownIt.disable]] and\n * [[MarkdownIt.enable]].\n **/\n this.block = new ParserBlock();\n\n /**\n * MarkdownIt#core -> Core\n *\n * Instance of [[Core]] chain executor. You may need it to add new rules when\n * writing plugins. For simple rules control use [[MarkdownIt.disable]] and\n * [[MarkdownIt.enable]].\n **/\n this.core = new ParserCore();\n\n /**\n * MarkdownIt#renderer -> Renderer\n *\n * Instance of [[Renderer]]. Use it to modify output look. Or to add rendering\n * rules for new token types, generated by plugins.\n *\n * ##### Example\n *\n * ```javascript\n * var md = require('markdown-it')();\n *\n * function myToken(tokens, idx, options, env, self) {\n * //...\n * return result;\n * };\n *\n * md.renderer.rules['my_token'] = myToken\n * ```\n *\n * See [[Renderer]] docs and [source code](https://github.com/markdown-it/markdown-it/blob/master/lib/renderer.js).\n **/\n this.renderer = new Renderer();\n\n /**\n * MarkdownIt#linkify -> LinkifyIt\n *\n * [linkify-it](https://github.com/markdown-it/linkify-it) instance.\n * Used by [linkify](https://github.com/markdown-it/markdown-it/blob/master/lib/rules_core/linkify.js)\n * rule.\n **/\n this.linkify = new LinkifyIt();\n\n /**\n * MarkdownIt#validateLink(url) -> Boolean\n *\n * Link validation function. CommonMark allows too much in links. By default\n * we disable `javascript:`, `vbscript:`, `file:` schemas, and almost all `data:...` schemas\n * except some embedded image types.\n *\n * You can change this behaviour:\n *\n * ```javascript\n * var md = require('markdown-it')();\n * // enable everything\n * md.validateLink = function () { return true; }\n * ```\n **/\n this.validateLink = validateLink;\n\n /**\n * MarkdownIt#normalizeLink(url) -> String\n *\n * Function used to encode link url to a machine-readable format,\n * which includes url-encoding, punycode, etc.\n **/\n this.normalizeLink = normalizeLink;\n\n /**\n * MarkdownIt#normalizeLinkText(url) -> String\n *\n * Function used to decode link url to a human-readable format`\n **/\n this.normalizeLinkText = normalizeLinkText;\n\n\n // Expose utils & helpers for easy acces from plugins\n\n /**\n * MarkdownIt#utils -> utils\n *\n * Assorted utility functions, useful to write plugins. See details\n * [here](https://github.com/markdown-it/markdown-it/blob/master/lib/common/utils.js).\n **/\n this.utils = utils;\n\n /**\n * MarkdownIt#helpers -> helpers\n *\n * Link components parser functions, useful to write plugins. See details\n * [here](https://github.com/markdown-it/markdown-it/blob/master/lib/helpers).\n **/\n this.helpers = utils.assign({}, helpers);\n\n\n this.options = {};\n this.configure(presetName);\n\n if (options) { this.set(options); }\n}\n\n\n/** chainable\n * MarkdownIt.set(options)\n *\n * Set parser options (in the same format as in constructor). Probably, you\n * will never need it, but you can change options after constructor call.\n *\n * ##### Example\n *\n * ```javascript\n * var md = require('markdown-it')()\n * .set({ html: true, breaks: true })\n * .set({ typographer, true });\n * ```\n *\n * __Note:__ To achieve the best possible performance, don't modify a\n * `markdown-it` instance options on the fly. If you need multiple configurations\n * it's best to create multiple instances and initialize each with separate\n * config.\n **/\nMarkdownIt.prototype.set = function (options) {\n utils.assign(this.options, options);\n return this;\n};\n\n\n/** chainable, internal\n * MarkdownIt.configure(presets)\n *\n * Batch load of all options and compenent settings. This is internal method,\n * and you probably will not need it. But if you will - see available presets\n * and data structure [here](https://github.com/markdown-it/markdown-it/tree/master/lib/presets)\n *\n * We strongly recommend to use presets instead of direct config loads. That\n * will give better compatibility with next versions.\n **/\nMarkdownIt.prototype.configure = function (presets) {\n var self = this, presetName;\n\n if (utils.isString(presets)) {\n presetName = presets;\n presets = config[presetName];\n if (!presets) { throw new Error('Wrong `markdown-it` preset \"' + presetName + '\", check name'); }\n }\n\n if (!presets) { throw new Error('Wrong `markdown-it` preset, can\\'t be empty'); }\n\n if (presets.options) { self.set(presets.options); }\n\n if (presets.components) {\n Object.keys(presets.components).forEach(function (name) {\n if (presets.components[name].rules) {\n self[name].ruler.enableOnly(presets.components[name].rules);\n }\n if (presets.components[name].rules2) {\n self[name].ruler2.enableOnly(presets.components[name].rules2);\n }\n });\n }\n return this;\n};\n\n\n/** chainable\n * MarkdownIt.enable(list, ignoreInvalid)\n * - list (String|Array): rule name or list of rule names to enable\n * - ignoreInvalid (Boolean): set `true` to ignore errors when rule not found.\n *\n * Enable list or rules. It will automatically find appropriate components,\n * containing rules with given names. If rule not found, and `ignoreInvalid`\n * not set - throws exception.\n *\n * ##### Example\n *\n * ```javascript\n * var md = require('markdown-it')()\n * .enable(['sub', 'sup'])\n * .disable('smartquotes');\n * ```\n **/\nMarkdownIt.prototype.enable = function (list, ignoreInvalid) {\n var result = [];\n\n if (!Array.isArray(list)) { list = [ list ]; }\n\n [ 'core', 'block', 'inline' ].forEach(function (chain) {\n result = result.concat(this[chain].ruler.enable(list, true));\n }, this);\n\n result = result.concat(this.inline.ruler2.enable(list, true));\n\n var missed = list.filter(function (name) { return result.indexOf(name) < 0; });\n\n if (missed.length && !ignoreInvalid) {\n throw new Error('MarkdownIt. Failed to enable unknown rule(s): ' + missed);\n }\n\n return this;\n};\n\n\n/** chainable\n * MarkdownIt.disable(list, ignoreInvalid)\n * - list (String|Array): rule name or list of rule names to disable.\n * - ignoreInvalid (Boolean): set `true` to ignore errors when rule not found.\n *\n * The same as [[MarkdownIt.enable]], but turn specified rules off.\n **/\nMarkdownIt.prototype.disable = function (list, ignoreInvalid) {\n var result = [];\n\n if (!Array.isArray(list)) { list = [ list ]; }\n\n [ 'core', 'block', 'inline' ].forEach(function (chain) {\n result = result.concat(this[chain].ruler.disable(list, true));\n }, this);\n\n result = result.concat(this.inline.ruler2.disable(list, true));\n\n var missed = list.filter(function (name) { return result.indexOf(name) < 0; });\n\n if (missed.length && !ignoreInvalid) {\n throw new Error('MarkdownIt. Failed to disable unknown rule(s): ' + missed);\n }\n return this;\n};\n\n\n/** chainable\n * MarkdownIt.use(plugin, params)\n *\n * Load specified plugin with given params into current parser instance.\n * It's just a sugar to call `plugin(md, params)` with curring.\n *\n * ##### Example\n *\n * ```javascript\n * var iterator = require('markdown-it-for-inline');\n * var md = require('markdown-it')()\n * .use(iterator, 'foo_replace', 'text', function (tokens, idx) {\n * tokens[idx].content = tokens[idx].content.replace(/foo/g, 'bar');\n * });\n * ```\n **/\nMarkdownIt.prototype.use = function (plugin /*, params, ... */) {\n var args = [ this ].concat(Array.prototype.slice.call(arguments, 1));\n plugin.apply(plugin, args);\n return this;\n};\n\n\n/** internal\n * MarkdownIt.parse(src, env) -> Array\n * - src (String): source string\n * - env (Object): environment sandbox\n *\n * Parse input string and return list of block tokens (special token type\n * \"inline\" will contain list of inline tokens). You should not call this\n * method directly, until you write custom renderer (for example, to produce\n * AST).\n *\n * `env` is used to pass data between \"distributed\" rules and return additional\n * metadata like reference info, needed for the renderer. It also can be used to\n * inject data in specific cases. Usually, you will be ok to pass `{}`,\n * and then pass updated object to renderer.\n **/\nMarkdownIt.prototype.parse = function (src, env) {\n if (typeof src !== 'string') {\n throw new Error('Input data should be a String');\n }\n\n var state = new this.core.State(src, this, env);\n\n this.core.process(state);\n\n return state.tokens;\n};\n\n\n/**\n * MarkdownIt.render(src [, env]) -> String\n * - src (String): source string\n * - env (Object): environment sandbox\n *\n * Render markdown string into html. It does all magic for you :).\n *\n * `env` can be used to inject additional metadata (`{}` by default).\n * But you will not need it with high probability. See also comment\n * in [[MarkdownIt.parse]].\n **/\nMarkdownIt.prototype.render = function (src, env) {\n env = env || {};\n\n return this.renderer.render(this.parse(src, env), this.options, env);\n};\n\n\n/** internal\n * MarkdownIt.parseInline(src, env) -> Array\n * - src (String): source string\n * - env (Object): environment sandbox\n *\n * The same as [[MarkdownIt.parse]] but skip all block rules. It returns the\n * block tokens list with the single `inline` element, containing parsed inline\n * tokens in `children` property. Also updates `env` object.\n **/\nMarkdownIt.prototype.parseInline = function (src, env) {\n var state = new this.core.State(src, this, env);\n\n state.inlineMode = true;\n this.core.process(state);\n\n return state.tokens;\n};\n\n\n/**\n * MarkdownIt.renderInline(src [, env]) -> String\n * - src (String): source string\n * - env (Object): environment sandbox\n *\n * Similar to [[MarkdownIt.render]] but for single paragraph content. Result\n * will NOT be wrapped into `

` tags.\n **/\nMarkdownIt.prototype.renderInline = function (src, env) {\n env = env || {};\n\n return this.renderer.render(this.parseInline(src, env), this.options, env);\n};\n\n\nmodule.exports = MarkdownIt;\n","/** internal\n * class ParserBlock\n *\n * Block-level tokenizer.\n **/\n'use strict';\n\n\nvar Ruler = require('./ruler');\n\n\nvar _rules = [\n // First 2 params - rule name & source. Secondary array - list of rules,\n // which can be terminated by this one.\n [ 'table', require('./rules_block/table'), [ 'paragraph', 'reference' ] ],\n [ 'code', require('./rules_block/code') ],\n [ 'fence', require('./rules_block/fence'), [ 'paragraph', 'reference', 'blockquote', 'list' ] ],\n [ 'blockquote', require('./rules_block/blockquote'), [ 'paragraph', 'reference', 'blockquote', 'list' ] ],\n [ 'hr', require('./rules_block/hr'), [ 'paragraph', 'reference', 'blockquote', 'list' ] ],\n [ 'list', require('./rules_block/list'), [ 'paragraph', 'reference', 'blockquote' ] ],\n [ 'reference', require('./rules_block/reference') ],\n [ 'html_block', require('./rules_block/html_block'), [ 'paragraph', 'reference', 'blockquote' ] ],\n [ 'heading', require('./rules_block/heading'), [ 'paragraph', 'reference', 'blockquote' ] ],\n [ 'lheading', require('./rules_block/lheading') ],\n [ 'paragraph', require('./rules_block/paragraph') ]\n];\n\n\n/**\n * new ParserBlock()\n **/\nfunction ParserBlock() {\n /**\n * ParserBlock#ruler -> Ruler\n *\n * [[Ruler]] instance. Keep configuration of block rules.\n **/\n this.ruler = new Ruler();\n\n for (var i = 0; i < _rules.length; i++) {\n this.ruler.push(_rules[i][0], _rules[i][1], { alt: (_rules[i][2] || []).slice() });\n }\n}\n\n\n// Generate tokens for input range\n//\nParserBlock.prototype.tokenize = function (state, startLine, endLine) {\n var ok, i,\n rules = this.ruler.getRules(''),\n len = rules.length,\n line = startLine,\n hasEmptyLines = false,\n maxNesting = state.md.options.maxNesting;\n\n while (line < endLine) {\n state.line = line = state.skipEmptyLines(line);\n if (line >= endLine) { break; }\n\n // Termination condition for nested calls.\n // Nested calls currently used for blockquotes & lists\n if (state.sCount[line] < state.blkIndent) { break; }\n\n // If nesting level exceeded - skip tail to the end. That's not ordinary\n // situation and we should not care about content.\n if (state.level >= maxNesting) {\n state.line = endLine;\n break;\n }\n\n // Try all possible rules.\n // On success, rule should:\n //\n // - update `state.line`\n // - update `state.tokens`\n // - return true\n\n for (i = 0; i < len; i++) {\n ok = rules[i](state, line, endLine, false);\n if (ok) { break; }\n }\n\n // set state.tight if we had an empty line before current tag\n // i.e. latest empty line should not count\n state.tight = !hasEmptyLines;\n\n // paragraph might \"eat\" one newline after it in nested lists\n if (state.isEmpty(state.line - 1)) {\n hasEmptyLines = true;\n }\n\n line = state.line;\n\n if (line < endLine && state.isEmpty(line)) {\n hasEmptyLines = true;\n line++;\n state.line = line;\n }\n }\n};\n\n\n/**\n * ParserBlock.parse(str, md, env, outTokens)\n *\n * Process input string and push block tokens into `outTokens`\n **/\nParserBlock.prototype.parse = function (src, md, env, outTokens) {\n var state;\n\n if (!src) { return; }\n\n state = new this.State(src, md, env, outTokens);\n\n this.tokenize(state, state.line, state.lineMax);\n};\n\n\nParserBlock.prototype.State = require('./rules_block/state_block');\n\n\nmodule.exports = ParserBlock;\n","/** internal\n * class Core\n *\n * Top-level rules executor. Glues block/inline parsers and does intermediate\n * transformations.\n **/\n'use strict';\n\n\nvar Ruler = require('./ruler');\n\n\nvar _rules = [\n [ 'normalize', require('./rules_core/normalize') ],\n [ 'block', require('./rules_core/block') ],\n [ 'inline', require('./rules_core/inline') ],\n [ 'linkify', require('./rules_core/linkify') ],\n [ 'replacements', require('./rules_core/replacements') ],\n [ 'smartquotes', require('./rules_core/smartquotes') ],\n // `text_join` finds `text_special` tokens (for escape sequences)\n // and joins them with the rest of the text\n [ 'text_join', require('./rules_core/text_join') ]\n];\n\n\n/**\n * new Core()\n **/\nfunction Core() {\n /**\n * Core#ruler -> Ruler\n *\n * [[Ruler]] instance. Keep configuration of core rules.\n **/\n this.ruler = new Ruler();\n\n for (var i = 0; i < _rules.length; i++) {\n this.ruler.push(_rules[i][0], _rules[i][1]);\n }\n}\n\n\n/**\n * Core.process(state)\n *\n * Executes core chain rules.\n **/\nCore.prototype.process = function (state) {\n var i, l, rules;\n\n rules = this.ruler.getRules('');\n\n for (i = 0, l = rules.length; i < l; i++) {\n rules[i](state);\n }\n};\n\nCore.prototype.State = require('./rules_core/state_core');\n\n\nmodule.exports = Core;\n","/** internal\n * class ParserInline\n *\n * Tokenizes paragraph content.\n **/\n'use strict';\n\n\nvar Ruler = require('./ruler');\n\n\n////////////////////////////////////////////////////////////////////////////////\n// Parser rules\n\nvar _rules = [\n [ 'text', require('./rules_inline/text') ],\n [ 'linkify', require('./rules_inline/linkify') ],\n [ 'newline', require('./rules_inline/newline') ],\n [ 'escape', require('./rules_inline/escape') ],\n [ 'backticks', require('./rules_inline/backticks') ],\n [ 'strikethrough', require('./rules_inline/strikethrough').tokenize ],\n [ 'emphasis', require('./rules_inline/emphasis').tokenize ],\n [ 'link', require('./rules_inline/link') ],\n [ 'image', require('./rules_inline/image') ],\n [ 'autolink', require('./rules_inline/autolink') ],\n [ 'html_inline', require('./rules_inline/html_inline') ],\n [ 'entity', require('./rules_inline/entity') ]\n];\n\n// `rule2` ruleset was created specifically for emphasis/strikethrough\n// post-processing and may be changed in the future.\n//\n// Don't use this for anything except pairs (plugins working with `balance_pairs`).\n//\nvar _rules2 = [\n [ 'balance_pairs', require('./rules_inline/balance_pairs') ],\n [ 'strikethrough', require('./rules_inline/strikethrough').postProcess ],\n [ 'emphasis', require('./rules_inline/emphasis').postProcess ],\n // rules for pairs separate '**' into its own text tokens, which may be left unused,\n // rule below merges unused segments back with the rest of the text\n [ 'fragments_join', require('./rules_inline/fragments_join') ]\n];\n\n\n/**\n * new ParserInline()\n **/\nfunction ParserInline() {\n var i;\n\n /**\n * ParserInline#ruler -> Ruler\n *\n * [[Ruler]] instance. Keep configuration of inline rules.\n **/\n this.ruler = new Ruler();\n\n for (i = 0; i < _rules.length; i++) {\n this.ruler.push(_rules[i][0], _rules[i][1]);\n }\n\n /**\n * ParserInline#ruler2 -> Ruler\n *\n * [[Ruler]] instance. Second ruler used for post-processing\n * (e.g. in emphasis-like rules).\n **/\n this.ruler2 = new Ruler();\n\n for (i = 0; i < _rules2.length; i++) {\n this.ruler2.push(_rules2[i][0], _rules2[i][1]);\n }\n}\n\n\n// Skip single token by running all rules in validation mode;\n// returns `true` if any rule reported success\n//\nParserInline.prototype.skipToken = function (state) {\n var ok, i, pos = state.pos,\n rules = this.ruler.getRules(''),\n len = rules.length,\n maxNesting = state.md.options.maxNesting,\n cache = state.cache;\n\n\n if (typeof cache[pos] !== 'undefined') {\n state.pos = cache[pos];\n return;\n }\n\n if (state.level < maxNesting) {\n for (i = 0; i < len; i++) {\n // Increment state.level and decrement it later to limit recursion.\n // It's harmless to do here, because no tokens are created. But ideally,\n // we'd need a separate private state variable for this purpose.\n //\n state.level++;\n ok = rules[i](state, true);\n state.level--;\n\n if (ok) { break; }\n }\n } else {\n // Too much nesting, just skip until the end of the paragraph.\n //\n // NOTE: this will cause links to behave incorrectly in the following case,\n // when an amount of `[` is exactly equal to `maxNesting + 1`:\n //\n // [[[[[[[[[[[[[[[[[[[[[foo]()\n //\n // TODO: remove this workaround when CM standard will allow nested links\n // (we can replace it by preventing links from being parsed in\n // validation mode)\n //\n state.pos = state.posMax;\n }\n\n if (!ok) { state.pos++; }\n cache[pos] = state.pos;\n};\n\n\n// Generate tokens for input range\n//\nParserInline.prototype.tokenize = function (state) {\n var ok, i,\n rules = this.ruler.getRules(''),\n len = rules.length,\n end = state.posMax,\n maxNesting = state.md.options.maxNesting;\n\n while (state.pos < end) {\n // Try all possible rules.\n // On success, rule should:\n //\n // - update `state.pos`\n // - update `state.tokens`\n // - return true\n\n if (state.level < maxNesting) {\n for (i = 0; i < len; i++) {\n ok = rules[i](state, false);\n if (ok) { break; }\n }\n }\n\n if (ok) {\n if (state.pos >= end) { break; }\n continue;\n }\n\n state.pending += state.src[state.pos++];\n }\n\n if (state.pending) {\n state.pushPending();\n }\n};\n\n\n/**\n * ParserInline.parse(str, md, env, outTokens)\n *\n * Process input string and push inline tokens into `outTokens`\n **/\nParserInline.prototype.parse = function (str, md, env, outTokens) {\n var i, rules, len;\n var state = new this.State(str, md, env, outTokens);\n\n this.tokenize(state);\n\n rules = this.ruler2.getRules('');\n len = rules.length;\n\n for (i = 0; i < len; i++) {\n rules[i](state);\n }\n};\n\n\nParserInline.prototype.State = require('./rules_inline/state_inline');\n\n\nmodule.exports = ParserInline;\n","// Commonmark default options\n\n'use strict';\n\n\nmodule.exports = {\n options: {\n html: true, // Enable HTML tags in source\n xhtmlOut: true, // Use '/' to close single tags (
)\n breaks: false, // Convert '\\n' in paragraphs into
\n langPrefix: 'language-', // CSS language prefix for fenced blocks\n linkify: false, // autoconvert URL-like texts to links\n\n // Enable some language-neutral replacements + quotes beautification\n typographer: false,\n\n // Double + single quotes replacement pairs, when typographer enabled,\n // and smartquotes on. Could be either a String or an Array.\n //\n // For example, you can use '«»„“' for Russian, '„“‚‘' for German,\n // and ['«\\xA0', '\\xA0»', '‹\\xA0', '\\xA0›'] for French (including nbsp).\n quotes: '\\u201c\\u201d\\u2018\\u2019', /* “”‘’ */\n\n // Highlighter function. Should return escaped HTML,\n // or '' if the source string is not changed and should be escaped externaly.\n // If result starts with )\n breaks: false, // Convert '\\n' in paragraphs into
\n langPrefix: 'language-', // CSS language prefix for fenced blocks\n linkify: false, // autoconvert URL-like texts to links\n\n // Enable some language-neutral replacements + quotes beautification\n typographer: false,\n\n // Double + single quotes replacement pairs, when typographer enabled,\n // and smartquotes on. Could be either a String or an Array.\n //\n // For example, you can use '«»„“' for Russian, '„“‚‘' for German,\n // and ['«\\xA0', '\\xA0»', '‹\\xA0', '\\xA0›'] for French (including nbsp).\n quotes: '\\u201c\\u201d\\u2018\\u2019', /* “”‘’ */\n\n // Highlighter function. Should return escaped HTML,\n // or '' if the source string is not changed and should be escaped externaly.\n // If result starts with )\n breaks: false, // Convert '\\n' in paragraphs into
\n langPrefix: 'language-', // CSS language prefix for fenced blocks\n linkify: false, // autoconvert URL-like texts to links\n\n // Enable some language-neutral replacements + quotes beautification\n typographer: false,\n\n // Double + single quotes replacement pairs, when typographer enabled,\n // and smartquotes on. Could be either a String or an Array.\n //\n // For example, you can use '«»„“' for Russian, '„“‚‘' for German,\n // and ['«\\xA0', '\\xA0»', '‹\\xA0', '\\xA0›'] for French (including nbsp).\n quotes: '\\u201c\\u201d\\u2018\\u2019', /* “”‘’ */\n\n // Highlighter function. Should return escaped HTML,\n // or '' if the source string is not changed and should be escaped externaly.\n // If result starts with ' +\n escapeHtml(tokens[idx].content) +\n '';\n};\n\n\ndefault_rules.code_block = function (tokens, idx, options, env, slf) {\n var token = tokens[idx];\n\n return '' +\n escapeHtml(tokens[idx].content) +\n '\\n';\n};\n\n\ndefault_rules.fence = function (tokens, idx, options, env, slf) {\n var token = tokens[idx],\n info = token.info ? unescapeAll(token.info).trim() : '',\n langName = '',\n langAttrs = '',\n highlighted, i, arr, tmpAttrs, tmpToken;\n\n if (info) {\n arr = info.split(/(\\s+)/g);\n langName = arr[0];\n langAttrs = arr.slice(2).join('');\n }\n\n if (options.highlight) {\n highlighted = options.highlight(token.content, langName, langAttrs) || escapeHtml(token.content);\n } else {\n highlighted = escapeHtml(token.content);\n }\n\n if (highlighted.indexOf(''\n + highlighted\n + '\\n';\n }\n\n\n return '

'\n        + highlighted\n        + '
\\n';\n};\n\n\ndefault_rules.image = function (tokens, idx, options, env, slf) {\n var token = tokens[idx];\n\n // \"alt\" attr MUST be set, even if empty. Because it's mandatory and\n // should be placed on proper position for tests.\n //\n // Replace content with actual value\n\n token.attrs[token.attrIndex('alt')][1] =\n slf.renderInlineAsText(token.children, options, env);\n\n return slf.renderToken(tokens, idx, options);\n};\n\n\ndefault_rules.hardbreak = function (tokens, idx, options /*, env */) {\n return options.xhtmlOut ? '
\\n' : '
\\n';\n};\ndefault_rules.softbreak = function (tokens, idx, options /*, env */) {\n return options.breaks ? (options.xhtmlOut ? '
\\n' : '
\\n') : '\\n';\n};\n\n\ndefault_rules.text = function (tokens, idx /*, options, env */) {\n return escapeHtml(tokens[idx].content);\n};\n\n\ndefault_rules.html_block = function (tokens, idx /*, options, env */) {\n return tokens[idx].content;\n};\ndefault_rules.html_inline = function (tokens, idx /*, options, env */) {\n return tokens[idx].content;\n};\n\n\n/**\n * new Renderer()\n *\n * Creates new [[Renderer]] instance and fill [[Renderer#rules]] with defaults.\n **/\nfunction Renderer() {\n\n /**\n * Renderer#rules -> Object\n *\n * Contains render rules for tokens. Can be updated and extended.\n *\n * ##### Example\n *\n * ```javascript\n * var md = require('markdown-it')();\n *\n * md.renderer.rules.strong_open = function () { return ''; };\n * md.renderer.rules.strong_close = function () { return ''; };\n *\n * var result = md.renderInline(...);\n * ```\n *\n * Each rule is called as independent static function with fixed signature:\n *\n * ```javascript\n * function my_token_render(tokens, idx, options, env, renderer) {\n * // ...\n * return renderedHTML;\n * }\n * ```\n *\n * See [source code](https://github.com/markdown-it/markdown-it/blob/master/lib/renderer.js)\n * for more details and examples.\n **/\n this.rules = assign({}, default_rules);\n}\n\n\n/**\n * Renderer.renderAttrs(token) -> String\n *\n * Render token attributes to string.\n **/\nRenderer.prototype.renderAttrs = function renderAttrs(token) {\n var i, l, result;\n\n if (!token.attrs) { return ''; }\n\n result = '';\n\n for (i = 0, l = token.attrs.length; i < l; i++) {\n result += ' ' + escapeHtml(token.attrs[i][0]) + '=\"' + escapeHtml(token.attrs[i][1]) + '\"';\n }\n\n return result;\n};\n\n\n/**\n * Renderer.renderToken(tokens, idx, options) -> String\n * - tokens (Array): list of tokens\n * - idx (Numbed): token index to render\n * - options (Object): params of parser instance\n *\n * Default token renderer. Can be overriden by custom function\n * in [[Renderer#rules]].\n **/\nRenderer.prototype.renderToken = function renderToken(tokens, idx, options) {\n var nextToken,\n result = '',\n needLf = false,\n token = tokens[idx];\n\n // Tight list paragraphs\n if (token.hidden) {\n return '';\n }\n\n // Insert a newline between hidden paragraph and subsequent opening\n // block-level tag.\n //\n // For example, here we should insert a newline before blockquote:\n // - a\n // >\n //\n if (token.block && token.nesting !== -1 && idx && tokens[idx - 1].hidden) {\n result += '\\n';\n }\n\n // Add token name, e.g. ``.\n //\n needLf = false;\n }\n }\n }\n }\n\n result += needLf ? '>\\n' : '>';\n\n return result;\n};\n\n\n/**\n * Renderer.renderInline(tokens, options, env) -> String\n * - tokens (Array): list on block tokens to render\n * - options (Object): params of parser instance\n * - env (Object): additional data from parsed input (references, for example)\n *\n * The same as [[Renderer.render]], but for single token of `inline` type.\n **/\nRenderer.prototype.renderInline = function (tokens, options, env) {\n var type,\n result = '',\n rules = this.rules;\n\n for (var i = 0, len = tokens.length; i < len; i++) {\n type = tokens[i].type;\n\n if (typeof rules[type] !== 'undefined') {\n result += rules[type](tokens, i, options, env, this);\n } else {\n result += this.renderToken(tokens, i, options);\n }\n }\n\n return result;\n};\n\n\n/** internal\n * Renderer.renderInlineAsText(tokens, options, env) -> String\n * - tokens (Array): list on block tokens to render\n * - options (Object): params of parser instance\n * - env (Object): additional data from parsed input (references, for example)\n *\n * Special kludge for image `alt` attributes to conform CommonMark spec.\n * Don't try to use it! Spec requires to show `alt` content with stripped markup,\n * instead of simple escaping.\n **/\nRenderer.prototype.renderInlineAsText = function (tokens, options, env) {\n var result = '';\n\n for (var i = 0, len = tokens.length; i < len; i++) {\n if (tokens[i].type === 'text') {\n result += tokens[i].content;\n } else if (tokens[i].type === 'image') {\n result += this.renderInlineAsText(tokens[i].children, options, env);\n } else if (tokens[i].type === 'softbreak') {\n result += '\\n';\n }\n }\n\n return result;\n};\n\n\n/**\n * Renderer.render(tokens, options, env) -> String\n * - tokens (Array): list on block tokens to render\n * - options (Object): params of parser instance\n * - env (Object): additional data from parsed input (references, for example)\n *\n * Takes token stream and generates HTML. Probably, you will never need to call\n * this method directly.\n **/\nRenderer.prototype.render = function (tokens, options, env) {\n var i, len, type,\n result = '',\n rules = this.rules;\n\n for (i = 0, len = tokens.length; i < len; i++) {\n type = tokens[i].type;\n\n if (type === 'inline') {\n result += this.renderInline(tokens[i].children, options, env);\n } else if (typeof rules[type] !== 'undefined') {\n result += rules[tokens[i].type](tokens, i, options, env, this);\n } else {\n result += this.renderToken(tokens, i, options, env);\n }\n }\n\n return result;\n};\n\nmodule.exports = Renderer;\n","/**\n * class Ruler\n *\n * Helper class, used by [[MarkdownIt#core]], [[MarkdownIt#block]] and\n * [[MarkdownIt#inline]] to manage sequences of functions (rules):\n *\n * - keep rules in defined order\n * - assign the name to each rule\n * - enable/disable rules\n * - add/replace rules\n * - allow assign rules to additional named chains (in the same)\n * - cacheing lists of active rules\n *\n * You will not need use this class directly until write plugins. For simple\n * rules control use [[MarkdownIt.disable]], [[MarkdownIt.enable]] and\n * [[MarkdownIt.use]].\n **/\n'use strict';\n\n\n/**\n * new Ruler()\n **/\nfunction Ruler() {\n // List of added rules. Each element is:\n //\n // {\n // name: XXX,\n // enabled: Boolean,\n // fn: Function(),\n // alt: [ name2, name3 ]\n // }\n //\n this.__rules__ = [];\n\n // Cached rule chains.\n //\n // First level - chain name, '' for default.\n // Second level - diginal anchor for fast filtering by charcodes.\n //\n this.__cache__ = null;\n}\n\n////////////////////////////////////////////////////////////////////////////////\n// Helper methods, should not be used directly\n\n\n// Find rule index by name\n//\nRuler.prototype.__find__ = function (name) {\n for (var i = 0; i < this.__rules__.length; i++) {\n if (this.__rules__[i].name === name) {\n return i;\n }\n }\n return -1;\n};\n\n\n// Build rules lookup cache\n//\nRuler.prototype.__compile__ = function () {\n var self = this;\n var chains = [ '' ];\n\n // collect unique names\n self.__rules__.forEach(function (rule) {\n if (!rule.enabled) { return; }\n\n rule.alt.forEach(function (altName) {\n if (chains.indexOf(altName) < 0) {\n chains.push(altName);\n }\n });\n });\n\n self.__cache__ = {};\n\n chains.forEach(function (chain) {\n self.__cache__[chain] = [];\n self.__rules__.forEach(function (rule) {\n if (!rule.enabled) { return; }\n\n if (chain && rule.alt.indexOf(chain) < 0) { return; }\n\n self.__cache__[chain].push(rule.fn);\n });\n });\n};\n\n\n/**\n * Ruler.at(name, fn [, options])\n * - name (String): rule name to replace.\n * - fn (Function): new rule function.\n * - options (Object): new rule options (not mandatory).\n *\n * Replace rule by name with new function & options. Throws error if name not\n * found.\n *\n * ##### Options:\n *\n * - __alt__ - array with names of \"alternate\" chains.\n *\n * ##### Example\n *\n * Replace existing typographer replacement rule with new one:\n *\n * ```javascript\n * var md = require('markdown-it')();\n *\n * md.core.ruler.at('replacements', function replace(state) {\n * //...\n * });\n * ```\n **/\nRuler.prototype.at = function (name, fn, options) {\n var index = this.__find__(name);\n var opt = options || {};\n\n if (index === -1) { throw new Error('Parser rule not found: ' + name); }\n\n this.__rules__[index].fn = fn;\n this.__rules__[index].alt = opt.alt || [];\n this.__cache__ = null;\n};\n\n\n/**\n * Ruler.before(beforeName, ruleName, fn [, options])\n * - beforeName (String): new rule will be added before this one.\n * - ruleName (String): name of added rule.\n * - fn (Function): rule function.\n * - options (Object): rule options (not mandatory).\n *\n * Add new rule to chain before one with given name. See also\n * [[Ruler.after]], [[Ruler.push]].\n *\n * ##### Options:\n *\n * - __alt__ - array with names of \"alternate\" chains.\n *\n * ##### Example\n *\n * ```javascript\n * var md = require('markdown-it')();\n *\n * md.block.ruler.before('paragraph', 'my_rule', function replace(state) {\n * //...\n * });\n * ```\n **/\nRuler.prototype.before = function (beforeName, ruleName, fn, options) {\n var index = this.__find__(beforeName);\n var opt = options || {};\n\n if (index === -1) { throw new Error('Parser rule not found: ' + beforeName); }\n\n this.__rules__.splice(index, 0, {\n name: ruleName,\n enabled: true,\n fn: fn,\n alt: opt.alt || []\n });\n\n this.__cache__ = null;\n};\n\n\n/**\n * Ruler.after(afterName, ruleName, fn [, options])\n * - afterName (String): new rule will be added after this one.\n * - ruleName (String): name of added rule.\n * - fn (Function): rule function.\n * - options (Object): rule options (not mandatory).\n *\n * Add new rule to chain after one with given name. See also\n * [[Ruler.before]], [[Ruler.push]].\n *\n * ##### Options:\n *\n * - __alt__ - array with names of \"alternate\" chains.\n *\n * ##### Example\n *\n * ```javascript\n * var md = require('markdown-it')();\n *\n * md.inline.ruler.after('text', 'my_rule', function replace(state) {\n * //...\n * });\n * ```\n **/\nRuler.prototype.after = function (afterName, ruleName, fn, options) {\n var index = this.__find__(afterName);\n var opt = options || {};\n\n if (index === -1) { throw new Error('Parser rule not found: ' + afterName); }\n\n this.__rules__.splice(index + 1, 0, {\n name: ruleName,\n enabled: true,\n fn: fn,\n alt: opt.alt || []\n });\n\n this.__cache__ = null;\n};\n\n/**\n * Ruler.push(ruleName, fn [, options])\n * - ruleName (String): name of added rule.\n * - fn (Function): rule function.\n * - options (Object): rule options (not mandatory).\n *\n * Push new rule to the end of chain. See also\n * [[Ruler.before]], [[Ruler.after]].\n *\n * ##### Options:\n *\n * - __alt__ - array with names of \"alternate\" chains.\n *\n * ##### Example\n *\n * ```javascript\n * var md = require('markdown-it')();\n *\n * md.core.ruler.push('my_rule', function replace(state) {\n * //...\n * });\n * ```\n **/\nRuler.prototype.push = function (ruleName, fn, options) {\n var opt = options || {};\n\n this.__rules__.push({\n name: ruleName,\n enabled: true,\n fn: fn,\n alt: opt.alt || []\n });\n\n this.__cache__ = null;\n};\n\n\n/**\n * Ruler.enable(list [, ignoreInvalid]) -> Array\n * - list (String|Array): list of rule names to enable.\n * - ignoreInvalid (Boolean): set `true` to ignore errors when rule not found.\n *\n * Enable rules with given names. If any rule name not found - throw Error.\n * Errors can be disabled by second param.\n *\n * Returns list of found rule names (if no exception happened).\n *\n * See also [[Ruler.disable]], [[Ruler.enableOnly]].\n **/\nRuler.prototype.enable = function (list, ignoreInvalid) {\n if (!Array.isArray(list)) { list = [ list ]; }\n\n var result = [];\n\n // Search by name and enable\n list.forEach(function (name) {\n var idx = this.__find__(name);\n\n if (idx < 0) {\n if (ignoreInvalid) { return; }\n throw new Error('Rules manager: invalid rule name ' + name);\n }\n this.__rules__[idx].enabled = true;\n result.push(name);\n }, this);\n\n this.__cache__ = null;\n return result;\n};\n\n\n/**\n * Ruler.enableOnly(list [, ignoreInvalid])\n * - list (String|Array): list of rule names to enable (whitelist).\n * - ignoreInvalid (Boolean): set `true` to ignore errors when rule not found.\n *\n * Enable rules with given names, and disable everything else. If any rule name\n * not found - throw Error. Errors can be disabled by second param.\n *\n * See also [[Ruler.disable]], [[Ruler.enable]].\n **/\nRuler.prototype.enableOnly = function (list, ignoreInvalid) {\n if (!Array.isArray(list)) { list = [ list ]; }\n\n this.__rules__.forEach(function (rule) { rule.enabled = false; });\n\n this.enable(list, ignoreInvalid);\n};\n\n\n/**\n * Ruler.disable(list [, ignoreInvalid]) -> Array\n * - list (String|Array): list of rule names to disable.\n * - ignoreInvalid (Boolean): set `true` to ignore errors when rule not found.\n *\n * Disable rules with given names. If any rule name not found - throw Error.\n * Errors can be disabled by second param.\n *\n * Returns list of found rule names (if no exception happened).\n *\n * See also [[Ruler.enable]], [[Ruler.enableOnly]].\n **/\nRuler.prototype.disable = function (list, ignoreInvalid) {\n if (!Array.isArray(list)) { list = [ list ]; }\n\n var result = [];\n\n // Search by name and disable\n list.forEach(function (name) {\n var idx = this.__find__(name);\n\n if (idx < 0) {\n if (ignoreInvalid) { return; }\n throw new Error('Rules manager: invalid rule name ' + name);\n }\n this.__rules__[idx].enabled = false;\n result.push(name);\n }, this);\n\n this.__cache__ = null;\n return result;\n};\n\n\n/**\n * Ruler.getRules(chainName) -> Array\n *\n * Return array of active functions (rules) for given chain name. It analyzes\n * rules configuration, compiles caches if not exists and returns result.\n *\n * Default chain name is `''` (empty string). It can't be skipped. That's\n * done intentionally, to keep signature monomorphic for high speed.\n **/\nRuler.prototype.getRules = function (chainName) {\n if (this.__cache__ === null) {\n this.__compile__();\n }\n\n // Chain can be empty, if rules disabled. But we still have to return Array.\n return this.__cache__[chainName] || [];\n};\n\nmodule.exports = Ruler;\n","// Block quotes\n\n'use strict';\n\nvar isSpace = require('../common/utils').isSpace;\n\n\nmodule.exports = function blockquote(state, startLine, endLine, silent) {\n var adjustTab,\n ch,\n i,\n initial,\n l,\n lastLineEmpty,\n lines,\n nextLine,\n offset,\n oldBMarks,\n oldBSCount,\n oldIndent,\n oldParentType,\n oldSCount,\n oldTShift,\n spaceAfterMarker,\n terminate,\n terminatorRules,\n token,\n isOutdented,\n oldLineMax = state.lineMax,\n pos = state.bMarks[startLine] + state.tShift[startLine],\n max = state.eMarks[startLine];\n\n // if it's indented more than 3 spaces, it should be a code block\n if (state.sCount[startLine] - state.blkIndent >= 4) { return false; }\n\n // check the block quote marker\n if (state.src.charCodeAt(pos++) !== 0x3E/* > */) { return false; }\n\n // we know that it's going to be a valid blockquote,\n // so no point trying to find the end of it in silent mode\n if (silent) { return true; }\n\n // set offset past spaces and \">\"\n initial = offset = state.sCount[startLine] + 1;\n\n // skip one optional space after '>'\n if (state.src.charCodeAt(pos) === 0x20 /* space */) {\n // ' > test '\n // ^ -- position start of line here:\n pos++;\n initial++;\n offset++;\n adjustTab = false;\n spaceAfterMarker = true;\n } else if (state.src.charCodeAt(pos) === 0x09 /* tab */) {\n spaceAfterMarker = true;\n\n if ((state.bsCount[startLine] + offset) % 4 === 3) {\n // ' >\\t test '\n // ^ -- position start of line here (tab has width===1)\n pos++;\n initial++;\n offset++;\n adjustTab = false;\n } else {\n // ' >\\t test '\n // ^ -- position start of line here + shift bsCount slightly\n // to make extra space appear\n adjustTab = true;\n }\n } else {\n spaceAfterMarker = false;\n }\n\n oldBMarks = [ state.bMarks[startLine] ];\n state.bMarks[startLine] = pos;\n\n while (pos < max) {\n ch = state.src.charCodeAt(pos);\n\n if (isSpace(ch)) {\n if (ch === 0x09) {\n offset += 4 - (offset + state.bsCount[startLine] + (adjustTab ? 1 : 0)) % 4;\n } else {\n offset++;\n }\n } else {\n break;\n }\n\n pos++;\n }\n\n oldBSCount = [ state.bsCount[startLine] ];\n state.bsCount[startLine] = state.sCount[startLine] + 1 + (spaceAfterMarker ? 1 : 0);\n\n lastLineEmpty = pos >= max;\n\n oldSCount = [ state.sCount[startLine] ];\n state.sCount[startLine] = offset - initial;\n\n oldTShift = [ state.tShift[startLine] ];\n state.tShift[startLine] = pos - state.bMarks[startLine];\n\n terminatorRules = state.md.block.ruler.getRules('blockquote');\n\n oldParentType = state.parentType;\n state.parentType = 'blockquote';\n\n // Search the end of the block\n //\n // Block ends with either:\n // 1. an empty line outside:\n // ```\n // > test\n //\n // ```\n // 2. an empty line inside:\n // ```\n // >\n // test\n // ```\n // 3. another tag:\n // ```\n // > test\n // - - -\n // ```\n for (nextLine = startLine + 1; nextLine < endLine; nextLine++) {\n // check if it's outdented, i.e. it's inside list item and indented\n // less than said list item:\n //\n // ```\n // 1. anything\n // > current blockquote\n // 2. checking this line\n // ```\n isOutdented = state.sCount[nextLine] < state.blkIndent;\n\n pos = state.bMarks[nextLine] + state.tShift[nextLine];\n max = state.eMarks[nextLine];\n\n if (pos >= max) {\n // Case 1: line is not inside the blockquote, and this line is empty.\n break;\n }\n\n if (state.src.charCodeAt(pos++) === 0x3E/* > */ && !isOutdented) {\n // This line is inside the blockquote.\n\n // set offset past spaces and \">\"\n initial = offset = state.sCount[nextLine] + 1;\n\n // skip one optional space after '>'\n if (state.src.charCodeAt(pos) === 0x20 /* space */) {\n // ' > test '\n // ^ -- position start of line here:\n pos++;\n initial++;\n offset++;\n adjustTab = false;\n spaceAfterMarker = true;\n } else if (state.src.charCodeAt(pos) === 0x09 /* tab */) {\n spaceAfterMarker = true;\n\n if ((state.bsCount[nextLine] + offset) % 4 === 3) {\n // ' >\\t test '\n // ^ -- position start of line here (tab has width===1)\n pos++;\n initial++;\n offset++;\n adjustTab = false;\n } else {\n // ' >\\t test '\n // ^ -- position start of line here + shift bsCount slightly\n // to make extra space appear\n adjustTab = true;\n }\n } else {\n spaceAfterMarker = false;\n }\n\n oldBMarks.push(state.bMarks[nextLine]);\n state.bMarks[nextLine] = pos;\n\n while (pos < max) {\n ch = state.src.charCodeAt(pos);\n\n if (isSpace(ch)) {\n if (ch === 0x09) {\n offset += 4 - (offset + state.bsCount[nextLine] + (adjustTab ? 1 : 0)) % 4;\n } else {\n offset++;\n }\n } else {\n break;\n }\n\n pos++;\n }\n\n lastLineEmpty = pos >= max;\n\n oldBSCount.push(state.bsCount[nextLine]);\n state.bsCount[nextLine] = state.sCount[nextLine] + 1 + (spaceAfterMarker ? 1 : 0);\n\n oldSCount.push(state.sCount[nextLine]);\n state.sCount[nextLine] = offset - initial;\n\n oldTShift.push(state.tShift[nextLine]);\n state.tShift[nextLine] = pos - state.bMarks[nextLine];\n continue;\n }\n\n // Case 2: line is not inside the blockquote, and the last line was empty.\n if (lastLineEmpty) { break; }\n\n // Case 3: another tag found.\n terminate = false;\n for (i = 0, l = terminatorRules.length; i < l; i++) {\n if (terminatorRules[i](state, nextLine, endLine, true)) {\n terminate = true;\n break;\n }\n }\n\n if (terminate) {\n // Quirk to enforce \"hard termination mode\" for paragraphs;\n // normally if you call `tokenize(state, startLine, nextLine)`,\n // paragraphs will look below nextLine for paragraph continuation,\n // but if blockquote is terminated by another tag, they shouldn't\n state.lineMax = nextLine;\n\n if (state.blkIndent !== 0) {\n // state.blkIndent was non-zero, we now set it to zero,\n // so we need to re-calculate all offsets to appear as\n // if indent wasn't changed\n oldBMarks.push(state.bMarks[nextLine]);\n oldBSCount.push(state.bsCount[nextLine]);\n oldTShift.push(state.tShift[nextLine]);\n oldSCount.push(state.sCount[nextLine]);\n state.sCount[nextLine] -= state.blkIndent;\n }\n\n break;\n }\n\n oldBMarks.push(state.bMarks[nextLine]);\n oldBSCount.push(state.bsCount[nextLine]);\n oldTShift.push(state.tShift[nextLine]);\n oldSCount.push(state.sCount[nextLine]);\n\n // A negative indentation means that this is a paragraph continuation\n //\n state.sCount[nextLine] = -1;\n }\n\n oldIndent = state.blkIndent;\n state.blkIndent = 0;\n\n token = state.push('blockquote_open', 'blockquote', 1);\n token.markup = '>';\n token.map = lines = [ startLine, 0 ];\n\n state.md.block.tokenize(state, startLine, nextLine);\n\n token = state.push('blockquote_close', 'blockquote', -1);\n token.markup = '>';\n\n state.lineMax = oldLineMax;\n state.parentType = oldParentType;\n lines[1] = state.line;\n\n // Restore original tShift; this might not be necessary since the parser\n // has already been here, but just to make sure we can do that.\n for (i = 0; i < oldTShift.length; i++) {\n state.bMarks[i + startLine] = oldBMarks[i];\n state.tShift[i + startLine] = oldTShift[i];\n state.sCount[i + startLine] = oldSCount[i];\n state.bsCount[i + startLine] = oldBSCount[i];\n }\n state.blkIndent = oldIndent;\n\n return true;\n};\n","// Code block (4 spaces padded)\n\n'use strict';\n\n\nmodule.exports = function code(state, startLine, endLine/*, silent*/) {\n var nextLine, last, token;\n\n if (state.sCount[startLine] - state.blkIndent < 4) { return false; }\n\n last = nextLine = startLine + 1;\n\n while (nextLine < endLine) {\n if (state.isEmpty(nextLine)) {\n nextLine++;\n continue;\n }\n\n if (state.sCount[nextLine] - state.blkIndent >= 4) {\n nextLine++;\n last = nextLine;\n continue;\n }\n break;\n }\n\n state.line = last;\n\n token = state.push('code_block', 'code', 0);\n token.content = state.getLines(startLine, last, 4 + state.blkIndent, false) + '\\n';\n token.map = [ startLine, state.line ];\n\n return true;\n};\n","// fences (``` lang, ~~~ lang)\n\n'use strict';\n\n\nmodule.exports = function fence(state, startLine, endLine, silent) {\n var marker, len, params, nextLine, mem, token, markup,\n haveEndMarker = false,\n pos = state.bMarks[startLine] + state.tShift[startLine],\n max = state.eMarks[startLine];\n\n // if it's indented more than 3 spaces, it should be a code block\n if (state.sCount[startLine] - state.blkIndent >= 4) { return false; }\n\n if (pos + 3 > max) { return false; }\n\n marker = state.src.charCodeAt(pos);\n\n if (marker !== 0x7E/* ~ */ && marker !== 0x60 /* ` */) {\n return false;\n }\n\n // scan marker length\n mem = pos;\n pos = state.skipChars(pos, marker);\n\n len = pos - mem;\n\n if (len < 3) { return false; }\n\n markup = state.src.slice(mem, pos);\n params = state.src.slice(pos, max);\n\n if (marker === 0x60 /* ` */) {\n if (params.indexOf(String.fromCharCode(marker)) >= 0) {\n return false;\n }\n }\n\n // Since start is found, we can report success here in validation mode\n if (silent) { return true; }\n\n // search end of block\n nextLine = startLine;\n\n for (;;) {\n nextLine++;\n if (nextLine >= endLine) {\n // unclosed block should be autoclosed by end of document.\n // also block seems to be autoclosed by end of parent\n break;\n }\n\n pos = mem = state.bMarks[nextLine] + state.tShift[nextLine];\n max = state.eMarks[nextLine];\n\n if (pos < max && state.sCount[nextLine] < state.blkIndent) {\n // non-empty line with negative indent should stop the list:\n // - ```\n // test\n break;\n }\n\n if (state.src.charCodeAt(pos) !== marker) { continue; }\n\n if (state.sCount[nextLine] - state.blkIndent >= 4) {\n // closing fence should be indented less than 4 spaces\n continue;\n }\n\n pos = state.skipChars(pos, marker);\n\n // closing code fence must be at least as long as the opening one\n if (pos - mem < len) { continue; }\n\n // make sure tail has spaces only\n pos = state.skipSpaces(pos);\n\n if (pos < max) { continue; }\n\n haveEndMarker = true;\n // found!\n break;\n }\n\n // If a fence has heading spaces, they should be removed from its inner block\n len = state.sCount[startLine];\n\n state.line = nextLine + (haveEndMarker ? 1 : 0);\n\n token = state.push('fence', 'code', 0);\n token.info = params;\n token.content = state.getLines(startLine + 1, nextLine, len, true);\n token.markup = markup;\n token.map = [ startLine, state.line ];\n\n return true;\n};\n","// heading (#, ##, ...)\n\n'use strict';\n\nvar isSpace = require('../common/utils').isSpace;\n\n\nmodule.exports = function heading(state, startLine, endLine, silent) {\n var ch, level, tmp, token,\n pos = state.bMarks[startLine] + state.tShift[startLine],\n max = state.eMarks[startLine];\n\n // if it's indented more than 3 spaces, it should be a code block\n if (state.sCount[startLine] - state.blkIndent >= 4) { return false; }\n\n ch = state.src.charCodeAt(pos);\n\n if (ch !== 0x23/* # */ || pos >= max) { return false; }\n\n // count heading level\n level = 1;\n ch = state.src.charCodeAt(++pos);\n while (ch === 0x23/* # */ && pos < max && level <= 6) {\n level++;\n ch = state.src.charCodeAt(++pos);\n }\n\n if (level > 6 || (pos < max && !isSpace(ch))) { return false; }\n\n if (silent) { return true; }\n\n // Let's cut tails like ' ### ' from the end of string\n\n max = state.skipSpacesBack(max, pos);\n tmp = state.skipCharsBack(max, 0x23, pos); // #\n if (tmp > pos && isSpace(state.src.charCodeAt(tmp - 1))) {\n max = tmp;\n }\n\n state.line = startLine + 1;\n\n token = state.push('heading_open', 'h' + String(level), 1);\n token.markup = '########'.slice(0, level);\n token.map = [ startLine, state.line ];\n\n token = state.push('inline', '', 0);\n token.content = state.src.slice(pos, max).trim();\n token.map = [ startLine, state.line ];\n token.children = [];\n\n token = state.push('heading_close', 'h' + String(level), -1);\n token.markup = '########'.slice(0, level);\n\n return true;\n};\n","// Horizontal rule\n\n'use strict';\n\nvar isSpace = require('../common/utils').isSpace;\n\n\nmodule.exports = function hr(state, startLine, endLine, silent) {\n var marker, cnt, ch, token,\n pos = state.bMarks[startLine] + state.tShift[startLine],\n max = state.eMarks[startLine];\n\n // if it's indented more than 3 spaces, it should be a code block\n if (state.sCount[startLine] - state.blkIndent >= 4) { return false; }\n\n marker = state.src.charCodeAt(pos++);\n\n // Check hr marker\n if (marker !== 0x2A/* * */ &&\n marker !== 0x2D/* - */ &&\n marker !== 0x5F/* _ */) {\n return false;\n }\n\n // markers can be mixed with spaces, but there should be at least 3 of them\n\n cnt = 1;\n while (pos < max) {\n ch = state.src.charCodeAt(pos++);\n if (ch !== marker && !isSpace(ch)) { return false; }\n if (ch === marker) { cnt++; }\n }\n\n if (cnt < 3) { return false; }\n\n if (silent) { return true; }\n\n state.line = startLine + 1;\n\n token = state.push('hr', 'hr', 0);\n token.map = [ startLine, state.line ];\n token.markup = Array(cnt + 1).join(String.fromCharCode(marker));\n\n return true;\n};\n","// HTML block\n\n'use strict';\n\n\nvar block_names = require('../common/html_blocks');\nvar HTML_OPEN_CLOSE_TAG_RE = require('../common/html_re').HTML_OPEN_CLOSE_TAG_RE;\n\n// An array of opening and corresponding closing sequences for html tags,\n// last argument defines whether it can terminate a paragraph or not\n//\nvar HTML_SEQUENCES = [\n [ /^<(script|pre|style|textarea)(?=(\\s|>|$))/i, /<\\/(script|pre|style|textarea)>/i, true ],\n [ /^/, true ],\n [ /^<\\?/, /\\?>/, true ],\n [ /^/, true ],\n [ /^/, true ],\n [ new RegExp('^|$))', 'i'), /^$/, true ],\n [ new RegExp(HTML_OPEN_CLOSE_TAG_RE.source + '\\\\s*$'), /^$/, false ]\n];\n\n\nmodule.exports = function html_block(state, startLine, endLine, silent) {\n var i, nextLine, token, lineText,\n pos = state.bMarks[startLine] + state.tShift[startLine],\n max = state.eMarks[startLine];\n\n // if it's indented more than 3 spaces, it should be a code block\n if (state.sCount[startLine] - state.blkIndent >= 4) { return false; }\n\n if (!state.md.options.html) { return false; }\n\n if (state.src.charCodeAt(pos) !== 0x3C/* < */) { return false; }\n\n lineText = state.src.slice(pos, max);\n\n for (i = 0; i < HTML_SEQUENCES.length; i++) {\n if (HTML_SEQUENCES[i][0].test(lineText)) { break; }\n }\n\n if (i === HTML_SEQUENCES.length) { return false; }\n\n if (silent) {\n // true if this sequence can be a terminator, false otherwise\n return HTML_SEQUENCES[i][2];\n }\n\n nextLine = startLine + 1;\n\n // If we are here - we detected HTML block.\n // Let's roll down till block end.\n if (!HTML_SEQUENCES[i][1].test(lineText)) {\n for (; nextLine < endLine; nextLine++) {\n if (state.sCount[nextLine] < state.blkIndent) { break; }\n\n pos = state.bMarks[nextLine] + state.tShift[nextLine];\n max = state.eMarks[nextLine];\n lineText = state.src.slice(pos, max);\n\n if (HTML_SEQUENCES[i][1].test(lineText)) {\n if (lineText.length !== 0) { nextLine++; }\n break;\n }\n }\n }\n\n state.line = nextLine;\n\n token = state.push('html_block', '', 0);\n token.map = [ startLine, nextLine ];\n token.content = state.getLines(startLine, nextLine, state.blkIndent, true);\n\n return true;\n};\n","// lheading (---, ===)\n\n'use strict';\n\n\nmodule.exports = function lheading(state, startLine, endLine/*, silent*/) {\n var content, terminate, i, l, token, pos, max, level, marker,\n nextLine = startLine + 1, oldParentType,\n terminatorRules = state.md.block.ruler.getRules('paragraph');\n\n // if it's indented more than 3 spaces, it should be a code block\n if (state.sCount[startLine] - state.blkIndent >= 4) { return false; }\n\n oldParentType = state.parentType;\n state.parentType = 'paragraph'; // use paragraph to match terminatorRules\n\n // jump line-by-line until empty one or EOF\n for (; nextLine < endLine && !state.isEmpty(nextLine); nextLine++) {\n // this would be a code block normally, but after paragraph\n // it's considered a lazy continuation regardless of what's there\n if (state.sCount[nextLine] - state.blkIndent > 3) { continue; }\n\n //\n // Check for underline in setext header\n //\n if (state.sCount[nextLine] >= state.blkIndent) {\n pos = state.bMarks[nextLine] + state.tShift[nextLine];\n max = state.eMarks[nextLine];\n\n if (pos < max) {\n marker = state.src.charCodeAt(pos);\n\n if (marker === 0x2D/* - */ || marker === 0x3D/* = */) {\n pos = state.skipChars(pos, marker);\n pos = state.skipSpaces(pos);\n\n if (pos >= max) {\n level = (marker === 0x3D/* = */ ? 1 : 2);\n break;\n }\n }\n }\n }\n\n // quirk for blockquotes, this line should already be checked by that rule\n if (state.sCount[nextLine] < 0) { continue; }\n\n // Some tags can terminate paragraph without empty line.\n terminate = false;\n for (i = 0, l = terminatorRules.length; i < l; i++) {\n if (terminatorRules[i](state, nextLine, endLine, true)) {\n terminate = true;\n break;\n }\n }\n if (terminate) { break; }\n }\n\n if (!level) {\n // Didn't find valid underline\n return false;\n }\n\n content = state.getLines(startLine, nextLine, state.blkIndent, false).trim();\n\n state.line = nextLine + 1;\n\n token = state.push('heading_open', 'h' + String(level), 1);\n token.markup = String.fromCharCode(marker);\n token.map = [ startLine, state.line ];\n\n token = state.push('inline', '', 0);\n token.content = content;\n token.map = [ startLine, state.line - 1 ];\n token.children = [];\n\n token = state.push('heading_close', 'h' + String(level), -1);\n token.markup = String.fromCharCode(marker);\n\n state.parentType = oldParentType;\n\n return true;\n};\n","// Lists\n\n'use strict';\n\nvar isSpace = require('../common/utils').isSpace;\n\n\n// Search `[-+*][\\n ]`, returns next pos after marker on success\n// or -1 on fail.\nfunction skipBulletListMarker(state, startLine) {\n var marker, pos, max, ch;\n\n pos = state.bMarks[startLine] + state.tShift[startLine];\n max = state.eMarks[startLine];\n\n marker = state.src.charCodeAt(pos++);\n // Check bullet\n if (marker !== 0x2A/* * */ &&\n marker !== 0x2D/* - */ &&\n marker !== 0x2B/* + */) {\n return -1;\n }\n\n if (pos < max) {\n ch = state.src.charCodeAt(pos);\n\n if (!isSpace(ch)) {\n // \" -test \" - is not a list item\n return -1;\n }\n }\n\n return pos;\n}\n\n// Search `\\d+[.)][\\n ]`, returns next pos after marker on success\n// or -1 on fail.\nfunction skipOrderedListMarker(state, startLine) {\n var ch,\n start = state.bMarks[startLine] + state.tShift[startLine],\n pos = start,\n max = state.eMarks[startLine];\n\n // List marker should have at least 2 chars (digit + dot)\n if (pos + 1 >= max) { return -1; }\n\n ch = state.src.charCodeAt(pos++);\n\n if (ch < 0x30/* 0 */ || ch > 0x39/* 9 */) { return -1; }\n\n for (;;) {\n // EOL -> fail\n if (pos >= max) { return -1; }\n\n ch = state.src.charCodeAt(pos++);\n\n if (ch >= 0x30/* 0 */ && ch <= 0x39/* 9 */) {\n\n // List marker should have no more than 9 digits\n // (prevents integer overflow in browsers)\n if (pos - start >= 10) { return -1; }\n\n continue;\n }\n\n // found valid marker\n if (ch === 0x29/* ) */ || ch === 0x2e/* . */) {\n break;\n }\n\n return -1;\n }\n\n\n if (pos < max) {\n ch = state.src.charCodeAt(pos);\n\n if (!isSpace(ch)) {\n // \" 1.test \" - is not a list item\n return -1;\n }\n }\n return pos;\n}\n\nfunction markTightParagraphs(state, idx) {\n var i, l,\n level = state.level + 2;\n\n for (i = idx + 2, l = state.tokens.length - 2; i < l; i++) {\n if (state.tokens[i].level === level && state.tokens[i].type === 'paragraph_open') {\n state.tokens[i + 2].hidden = true;\n state.tokens[i].hidden = true;\n i += 2;\n }\n }\n}\n\n\nmodule.exports = function list(state, startLine, endLine, silent) {\n var ch,\n contentStart,\n i,\n indent,\n indentAfterMarker,\n initial,\n isOrdered,\n itemLines,\n l,\n listLines,\n listTokIdx,\n markerCharCode,\n markerValue,\n max,\n nextLine,\n offset,\n oldListIndent,\n oldParentType,\n oldSCount,\n oldTShift,\n oldTight,\n pos,\n posAfterMarker,\n prevEmptyEnd,\n start,\n terminate,\n terminatorRules,\n token,\n isTerminatingParagraph = false,\n tight = true;\n\n // if it's indented more than 3 spaces, it should be a code block\n if (state.sCount[startLine] - state.blkIndent >= 4) { return false; }\n\n // Special case:\n // - item 1\n // - item 2\n // - item 3\n // - item 4\n // - this one is a paragraph continuation\n if (state.listIndent >= 0 &&\n state.sCount[startLine] - state.listIndent >= 4 &&\n state.sCount[startLine] < state.blkIndent) {\n return false;\n }\n\n // limit conditions when list can interrupt\n // a paragraph (validation mode only)\n if (silent && state.parentType === 'paragraph') {\n // Next list item should still terminate previous list item;\n //\n // This code can fail if plugins use blkIndent as well as lists,\n // but I hope the spec gets fixed long before that happens.\n //\n if (state.sCount[startLine] >= state.blkIndent) {\n isTerminatingParagraph = true;\n }\n }\n\n // Detect list type and position after marker\n if ((posAfterMarker = skipOrderedListMarker(state, startLine)) >= 0) {\n isOrdered = true;\n start = state.bMarks[startLine] + state.tShift[startLine];\n markerValue = Number(state.src.slice(start, posAfterMarker - 1));\n\n // If we're starting a new ordered list right after\n // a paragraph, it should start with 1.\n if (isTerminatingParagraph && markerValue !== 1) return false;\n\n } else if ((posAfterMarker = skipBulletListMarker(state, startLine)) >= 0) {\n isOrdered = false;\n\n } else {\n return false;\n }\n\n // If we're starting a new unordered list right after\n // a paragraph, first line should not be empty.\n if (isTerminatingParagraph) {\n if (state.skipSpaces(posAfterMarker) >= state.eMarks[startLine]) return false;\n }\n\n // We should terminate list on style change. Remember first one to compare.\n markerCharCode = state.src.charCodeAt(posAfterMarker - 1);\n\n // For validation mode we can terminate immediately\n if (silent) { return true; }\n\n // Start list\n listTokIdx = state.tokens.length;\n\n if (isOrdered) {\n token = state.push('ordered_list_open', 'ol', 1);\n if (markerValue !== 1) {\n token.attrs = [ [ 'start', markerValue ] ];\n }\n\n } else {\n token = state.push('bullet_list_open', 'ul', 1);\n }\n\n token.map = listLines = [ startLine, 0 ];\n token.markup = String.fromCharCode(markerCharCode);\n\n //\n // Iterate list items\n //\n\n nextLine = startLine;\n prevEmptyEnd = false;\n terminatorRules = state.md.block.ruler.getRules('list');\n\n oldParentType = state.parentType;\n state.parentType = 'list';\n\n while (nextLine < endLine) {\n pos = posAfterMarker;\n max = state.eMarks[nextLine];\n\n initial = offset = state.sCount[nextLine] + posAfterMarker - (state.bMarks[startLine] + state.tShift[startLine]);\n\n while (pos < max) {\n ch = state.src.charCodeAt(pos);\n\n if (ch === 0x09) {\n offset += 4 - (offset + state.bsCount[nextLine]) % 4;\n } else if (ch === 0x20) {\n offset++;\n } else {\n break;\n }\n\n pos++;\n }\n\n contentStart = pos;\n\n if (contentStart >= max) {\n // trimming space in \"- \\n 3\" case, indent is 1 here\n indentAfterMarker = 1;\n } else {\n indentAfterMarker = offset - initial;\n }\n\n // If we have more than 4 spaces, the indent is 1\n // (the rest is just indented code block)\n if (indentAfterMarker > 4) { indentAfterMarker = 1; }\n\n // \" - test\"\n // ^^^^^ - calculating total length of this thing\n indent = initial + indentAfterMarker;\n\n // Run subparser & write tokens\n token = state.push('list_item_open', 'li', 1);\n token.markup = String.fromCharCode(markerCharCode);\n token.map = itemLines = [ startLine, 0 ];\n if (isOrdered) {\n token.info = state.src.slice(start, posAfterMarker - 1);\n }\n\n // change current state, then restore it after parser subcall\n oldTight = state.tight;\n oldTShift = state.tShift[startLine];\n oldSCount = state.sCount[startLine];\n\n // - example list\n // ^ listIndent position will be here\n // ^ blkIndent position will be here\n //\n oldListIndent = state.listIndent;\n state.listIndent = state.blkIndent;\n state.blkIndent = indent;\n\n state.tight = true;\n state.tShift[startLine] = contentStart - state.bMarks[startLine];\n state.sCount[startLine] = offset;\n\n if (contentStart >= max && state.isEmpty(startLine + 1)) {\n // workaround for this case\n // (list item is empty, list terminates before \"foo\"):\n // ~~~~~~~~\n // -\n //\n // foo\n // ~~~~~~~~\n state.line = Math.min(state.line + 2, endLine);\n } else {\n state.md.block.tokenize(state, startLine, endLine, true);\n }\n\n // If any of list item is tight, mark list as tight\n if (!state.tight || prevEmptyEnd) {\n tight = false;\n }\n // Item become loose if finish with empty line,\n // but we should filter last element, because it means list finish\n prevEmptyEnd = (state.line - startLine) > 1 && state.isEmpty(state.line - 1);\n\n state.blkIndent = state.listIndent;\n state.listIndent = oldListIndent;\n state.tShift[startLine] = oldTShift;\n state.sCount[startLine] = oldSCount;\n state.tight = oldTight;\n\n token = state.push('list_item_close', 'li', -1);\n token.markup = String.fromCharCode(markerCharCode);\n\n nextLine = startLine = state.line;\n itemLines[1] = nextLine;\n contentStart = state.bMarks[startLine];\n\n if (nextLine >= endLine) { break; }\n\n //\n // Try to check if list is terminated or continued.\n //\n if (state.sCount[nextLine] < state.blkIndent) { break; }\n\n // if it's indented more than 3 spaces, it should be a code block\n if (state.sCount[startLine] - state.blkIndent >= 4) { break; }\n\n // fail if terminating block found\n terminate = false;\n for (i = 0, l = terminatorRules.length; i < l; i++) {\n if (terminatorRules[i](state, nextLine, endLine, true)) {\n terminate = true;\n break;\n }\n }\n if (terminate) { break; }\n\n // fail if list has another type\n if (isOrdered) {\n posAfterMarker = skipOrderedListMarker(state, nextLine);\n if (posAfterMarker < 0) { break; }\n start = state.bMarks[nextLine] + state.tShift[nextLine];\n } else {\n posAfterMarker = skipBulletListMarker(state, nextLine);\n if (posAfterMarker < 0) { break; }\n }\n\n if (markerCharCode !== state.src.charCodeAt(posAfterMarker - 1)) { break; }\n }\n\n // Finalize list\n if (isOrdered) {\n token = state.push('ordered_list_close', 'ol', -1);\n } else {\n token = state.push('bullet_list_close', 'ul', -1);\n }\n token.markup = String.fromCharCode(markerCharCode);\n\n listLines[1] = nextLine;\n state.line = nextLine;\n\n state.parentType = oldParentType;\n\n // mark paragraphs tight if needed\n if (tight) {\n markTightParagraphs(state, listTokIdx);\n }\n\n return true;\n};\n","// Paragraph\n\n'use strict';\n\n\nmodule.exports = function paragraph(state, startLine/*, endLine*/) {\n var content, terminate, i, l, token, oldParentType,\n nextLine = startLine + 1,\n terminatorRules = state.md.block.ruler.getRules('paragraph'),\n endLine = state.lineMax;\n\n oldParentType = state.parentType;\n state.parentType = 'paragraph';\n\n // jump line-by-line until empty one or EOF\n for (; nextLine < endLine && !state.isEmpty(nextLine); nextLine++) {\n // this would be a code block normally, but after paragraph\n // it's considered a lazy continuation regardless of what's there\n if (state.sCount[nextLine] - state.blkIndent > 3) { continue; }\n\n // quirk for blockquotes, this line should already be checked by that rule\n if (state.sCount[nextLine] < 0) { continue; }\n\n // Some tags can terminate paragraph without empty line.\n terminate = false;\n for (i = 0, l = terminatorRules.length; i < l; i++) {\n if (terminatorRules[i](state, nextLine, endLine, true)) {\n terminate = true;\n break;\n }\n }\n if (terminate) { break; }\n }\n\n content = state.getLines(startLine, nextLine, state.blkIndent, false).trim();\n\n state.line = nextLine;\n\n token = state.push('paragraph_open', 'p', 1);\n token.map = [ startLine, state.line ];\n\n token = state.push('inline', '', 0);\n token.content = content;\n token.map = [ startLine, state.line ];\n token.children = [];\n\n token = state.push('paragraph_close', 'p', -1);\n\n state.parentType = oldParentType;\n\n return true;\n};\n","'use strict';\n\n\nvar normalizeReference = require('../common/utils').normalizeReference;\nvar isSpace = require('../common/utils').isSpace;\n\n\nmodule.exports = function reference(state, startLine, _endLine, silent) {\n var ch,\n destEndPos,\n destEndLineNo,\n endLine,\n href,\n i,\n l,\n label,\n labelEnd,\n oldParentType,\n res,\n start,\n str,\n terminate,\n terminatorRules,\n title,\n lines = 0,\n pos = state.bMarks[startLine] + state.tShift[startLine],\n max = state.eMarks[startLine],\n nextLine = startLine + 1;\n\n // if it's indented more than 3 spaces, it should be a code block\n if (state.sCount[startLine] - state.blkIndent >= 4) { return false; }\n\n if (state.src.charCodeAt(pos) !== 0x5B/* [ */) { return false; }\n\n // Simple check to quickly interrupt scan on [link](url) at the start of line.\n // Can be useful on practice: https://github.com/markdown-it/markdown-it/issues/54\n while (++pos < max) {\n if (state.src.charCodeAt(pos) === 0x5D /* ] */ &&\n state.src.charCodeAt(pos - 1) !== 0x5C/* \\ */) {\n if (pos + 1 === max) { return false; }\n if (state.src.charCodeAt(pos + 1) !== 0x3A/* : */) { return false; }\n break;\n }\n }\n\n endLine = state.lineMax;\n\n // jump line-by-line until empty one or EOF\n terminatorRules = state.md.block.ruler.getRules('reference');\n\n oldParentType = state.parentType;\n state.parentType = 'reference';\n\n for (; nextLine < endLine && !state.isEmpty(nextLine); nextLine++) {\n // this would be a code block normally, but after paragraph\n // it's considered a lazy continuation regardless of what's there\n if (state.sCount[nextLine] - state.blkIndent > 3) { continue; }\n\n // quirk for blockquotes, this line should already be checked by that rule\n if (state.sCount[nextLine] < 0) { continue; }\n\n // Some tags can terminate paragraph without empty line.\n terminate = false;\n for (i = 0, l = terminatorRules.length; i < l; i++) {\n if (terminatorRules[i](state, nextLine, endLine, true)) {\n terminate = true;\n break;\n }\n }\n if (terminate) { break; }\n }\n\n str = state.getLines(startLine, nextLine, state.blkIndent, false).trim();\n max = str.length;\n\n for (pos = 1; pos < max; pos++) {\n ch = str.charCodeAt(pos);\n if (ch === 0x5B /* [ */) {\n return false;\n } else if (ch === 0x5D /* ] */) {\n labelEnd = pos;\n break;\n } else if (ch === 0x0A /* \\n */) {\n lines++;\n } else if (ch === 0x5C /* \\ */) {\n pos++;\n if (pos < max && str.charCodeAt(pos) === 0x0A) {\n lines++;\n }\n }\n }\n\n if (labelEnd < 0 || str.charCodeAt(labelEnd + 1) !== 0x3A/* : */) { return false; }\n\n // [label]: destination 'title'\n // ^^^ skip optional whitespace here\n for (pos = labelEnd + 2; pos < max; pos++) {\n ch = str.charCodeAt(pos);\n if (ch === 0x0A) {\n lines++;\n } else if (isSpace(ch)) {\n /*eslint no-empty:0*/\n } else {\n break;\n }\n }\n\n // [label]: destination 'title'\n // ^^^^^^^^^^^ parse this\n res = state.md.helpers.parseLinkDestination(str, pos, max);\n if (!res.ok) { return false; }\n\n href = state.md.normalizeLink(res.str);\n if (!state.md.validateLink(href)) { return false; }\n\n pos = res.pos;\n lines += res.lines;\n\n // save cursor state, we could require to rollback later\n destEndPos = pos;\n destEndLineNo = lines;\n\n // [label]: destination 'title'\n // ^^^ skipping those spaces\n start = pos;\n for (; pos < max; pos++) {\n ch = str.charCodeAt(pos);\n if (ch === 0x0A) {\n lines++;\n } else if (isSpace(ch)) {\n /*eslint no-empty:0*/\n } else {\n break;\n }\n }\n\n // [label]: destination 'title'\n // ^^^^^^^ parse this\n res = state.md.helpers.parseLinkTitle(str, pos, max);\n if (pos < max && start !== pos && res.ok) {\n title = res.str;\n pos = res.pos;\n lines += res.lines;\n } else {\n title = '';\n pos = destEndPos;\n lines = destEndLineNo;\n }\n\n // skip trailing spaces until the rest of the line\n while (pos < max) {\n ch = str.charCodeAt(pos);\n if (!isSpace(ch)) { break; }\n pos++;\n }\n\n if (pos < max && str.charCodeAt(pos) !== 0x0A) {\n if (title) {\n // garbage at the end of the line after title,\n // but it could still be a valid reference if we roll back\n title = '';\n pos = destEndPos;\n lines = destEndLineNo;\n while (pos < max) {\n ch = str.charCodeAt(pos);\n if (!isSpace(ch)) { break; }\n pos++;\n }\n }\n }\n\n if (pos < max && str.charCodeAt(pos) !== 0x0A) {\n // garbage at the end of the line\n return false;\n }\n\n label = normalizeReference(str.slice(1, labelEnd));\n if (!label) {\n // CommonMark 0.20 disallows empty labels\n return false;\n }\n\n // Reference can not terminate anything. This check is for safety only.\n /*istanbul ignore if*/\n if (silent) { return true; }\n\n if (typeof state.env.references === 'undefined') {\n state.env.references = {};\n }\n if (typeof state.env.references[label] === 'undefined') {\n state.env.references[label] = { title: title, href: href };\n }\n\n state.parentType = oldParentType;\n\n state.line = startLine + lines + 1;\n return true;\n};\n","// Parser state class\n\n'use strict';\n\nvar Token = require('../token');\nvar isSpace = require('../common/utils').isSpace;\n\n\nfunction StateBlock(src, md, env, tokens) {\n var ch, s, start, pos, len, indent, offset, indent_found;\n\n this.src = src;\n\n // link to parser instance\n this.md = md;\n\n this.env = env;\n\n //\n // Internal state vartiables\n //\n\n this.tokens = tokens;\n\n this.bMarks = []; // line begin offsets for fast jumps\n this.eMarks = []; // line end offsets for fast jumps\n this.tShift = []; // offsets of the first non-space characters (tabs not expanded)\n this.sCount = []; // indents for each line (tabs expanded)\n\n // An amount of virtual spaces (tabs expanded) between beginning\n // of each line (bMarks) and real beginning of that line.\n //\n // It exists only as a hack because blockquotes override bMarks\n // losing information in the process.\n //\n // It's used only when expanding tabs, you can think about it as\n // an initial tab length, e.g. bsCount=21 applied to string `\\t123`\n // means first tab should be expanded to 4-21%4 === 3 spaces.\n //\n this.bsCount = [];\n\n // block parser variables\n this.blkIndent = 0; // required block content indent (for example, if we are\n // inside a list, it would be positioned after list marker)\n this.line = 0; // line index in src\n this.lineMax = 0; // lines count\n this.tight = false; // loose/tight mode for lists\n this.ddIndent = -1; // indent of the current dd block (-1 if there isn't any)\n this.listIndent = -1; // indent of the current list block (-1 if there isn't any)\n\n // can be 'blockquote', 'list', 'root', 'paragraph' or 'reference'\n // used in lists to determine if they interrupt a paragraph\n this.parentType = 'root';\n\n this.level = 0;\n\n // renderer\n this.result = '';\n\n // Create caches\n // Generate markers.\n s = this.src;\n indent_found = false;\n\n for (start = pos = indent = offset = 0, len = s.length; pos < len; pos++) {\n ch = s.charCodeAt(pos);\n\n if (!indent_found) {\n if (isSpace(ch)) {\n indent++;\n\n if (ch === 0x09) {\n offset += 4 - offset % 4;\n } else {\n offset++;\n }\n continue;\n } else {\n indent_found = true;\n }\n }\n\n if (ch === 0x0A || pos === len - 1) {\n if (ch !== 0x0A) { pos++; }\n this.bMarks.push(start);\n this.eMarks.push(pos);\n this.tShift.push(indent);\n this.sCount.push(offset);\n this.bsCount.push(0);\n\n indent_found = false;\n indent = 0;\n offset = 0;\n start = pos + 1;\n }\n }\n\n // Push fake entry to simplify cache bounds checks\n this.bMarks.push(s.length);\n this.eMarks.push(s.length);\n this.tShift.push(0);\n this.sCount.push(0);\n this.bsCount.push(0);\n\n this.lineMax = this.bMarks.length - 1; // don't count last fake line\n}\n\n// Push new token to \"stream\".\n//\nStateBlock.prototype.push = function (type, tag, nesting) {\n var token = new Token(type, tag, nesting);\n token.block = true;\n\n if (nesting < 0) this.level--; // closing tag\n token.level = this.level;\n if (nesting > 0) this.level++; // opening tag\n\n this.tokens.push(token);\n return token;\n};\n\nStateBlock.prototype.isEmpty = function isEmpty(line) {\n return this.bMarks[line] + this.tShift[line] >= this.eMarks[line];\n};\n\nStateBlock.prototype.skipEmptyLines = function skipEmptyLines(from) {\n for (var max = this.lineMax; from < max; from++) {\n if (this.bMarks[from] + this.tShift[from] < this.eMarks[from]) {\n break;\n }\n }\n return from;\n};\n\n// Skip spaces from given position.\nStateBlock.prototype.skipSpaces = function skipSpaces(pos) {\n var ch;\n\n for (var max = this.src.length; pos < max; pos++) {\n ch = this.src.charCodeAt(pos);\n if (!isSpace(ch)) { break; }\n }\n return pos;\n};\n\n// Skip spaces from given position in reverse.\nStateBlock.prototype.skipSpacesBack = function skipSpacesBack(pos, min) {\n if (pos <= min) { return pos; }\n\n while (pos > min) {\n if (!isSpace(this.src.charCodeAt(--pos))) { return pos + 1; }\n }\n return pos;\n};\n\n// Skip char codes from given position\nStateBlock.prototype.skipChars = function skipChars(pos, code) {\n for (var max = this.src.length; pos < max; pos++) {\n if (this.src.charCodeAt(pos) !== code) { break; }\n }\n return pos;\n};\n\n// Skip char codes reverse from given position - 1\nStateBlock.prototype.skipCharsBack = function skipCharsBack(pos, code, min) {\n if (pos <= min) { return pos; }\n\n while (pos > min) {\n if (code !== this.src.charCodeAt(--pos)) { return pos + 1; }\n }\n return pos;\n};\n\n// cut lines range from source.\nStateBlock.prototype.getLines = function getLines(begin, end, indent, keepLastLF) {\n var i, lineIndent, ch, first, last, queue, lineStart,\n line = begin;\n\n if (begin >= end) {\n return '';\n }\n\n queue = new Array(end - begin);\n\n for (i = 0; line < end; line++, i++) {\n lineIndent = 0;\n lineStart = first = this.bMarks[line];\n\n if (line + 1 < end || keepLastLF) {\n // No need for bounds check because we have fake entry on tail.\n last = this.eMarks[line] + 1;\n } else {\n last = this.eMarks[line];\n }\n\n while (first < last && lineIndent < indent) {\n ch = this.src.charCodeAt(first);\n\n if (isSpace(ch)) {\n if (ch === 0x09) {\n lineIndent += 4 - (lineIndent + this.bsCount[line]) % 4;\n } else {\n lineIndent++;\n }\n } else if (first - lineStart < this.tShift[line]) {\n // patched tShift masked characters to look like spaces (blockquotes, list markers)\n lineIndent++;\n } else {\n break;\n }\n\n first++;\n }\n\n if (lineIndent > indent) {\n // partially expanding tabs in code blocks, e.g '\\t\\tfoobar'\n // with indent=2 becomes ' \\tfoobar'\n queue[i] = new Array(lineIndent - indent + 1).join(' ') + this.src.slice(first, last);\n } else {\n queue[i] = this.src.slice(first, last);\n }\n }\n\n return queue.join('');\n};\n\n// re-export Token class to use in block rules\nStateBlock.prototype.Token = Token;\n\n\nmodule.exports = StateBlock;\n","// GFM table, https://github.github.com/gfm/#tables-extension-\n\n'use strict';\n\nvar isSpace = require('../common/utils').isSpace;\n\n\nfunction getLine(state, line) {\n var pos = state.bMarks[line] + state.tShift[line],\n max = state.eMarks[line];\n\n return state.src.slice(pos, max);\n}\n\nfunction escapedSplit(str) {\n var result = [],\n pos = 0,\n max = str.length,\n ch,\n isEscaped = false,\n lastPos = 0,\n current = '';\n\n ch = str.charCodeAt(pos);\n\n while (pos < max) {\n if (ch === 0x7c/* | */) {\n if (!isEscaped) {\n // pipe separating cells, '|'\n result.push(current + str.substring(lastPos, pos));\n current = '';\n lastPos = pos + 1;\n } else {\n // escaped pipe, '\\|'\n current += str.substring(lastPos, pos - 1);\n lastPos = pos;\n }\n }\n\n isEscaped = (ch === 0x5c/* \\ */);\n pos++;\n\n ch = str.charCodeAt(pos);\n }\n\n result.push(current + str.substring(lastPos));\n\n return result;\n}\n\n\nmodule.exports = function table(state, startLine, endLine, silent) {\n var ch, lineText, pos, i, l, nextLine, columns, columnCount, token,\n aligns, t, tableLines, tbodyLines, oldParentType, terminate,\n terminatorRules, firstCh, secondCh;\n\n // should have at least two lines\n if (startLine + 2 > endLine) { return false; }\n\n nextLine = startLine + 1;\n\n if (state.sCount[nextLine] < state.blkIndent) { return false; }\n\n // if it's indented more than 3 spaces, it should be a code block\n if (state.sCount[nextLine] - state.blkIndent >= 4) { return false; }\n\n // first character of the second line should be '|', '-', ':',\n // and no other characters are allowed but spaces;\n // basically, this is the equivalent of /^[-:|][-:|\\s]*$/ regexp\n\n pos = state.bMarks[nextLine] + state.tShift[nextLine];\n if (pos >= state.eMarks[nextLine]) { return false; }\n\n firstCh = state.src.charCodeAt(pos++);\n if (firstCh !== 0x7C/* | */ && firstCh !== 0x2D/* - */ && firstCh !== 0x3A/* : */) { return false; }\n\n if (pos >= state.eMarks[nextLine]) { return false; }\n\n secondCh = state.src.charCodeAt(pos++);\n if (secondCh !== 0x7C/* | */ && secondCh !== 0x2D/* - */ && secondCh !== 0x3A/* : */ && !isSpace(secondCh)) {\n return false;\n }\n\n // if first character is '-', then second character must not be a space\n // (due to parsing ambiguity with list)\n if (firstCh === 0x2D/* - */ && isSpace(secondCh)) { return false; }\n\n while (pos < state.eMarks[nextLine]) {\n ch = state.src.charCodeAt(pos);\n\n if (ch !== 0x7C/* | */ && ch !== 0x2D/* - */ && ch !== 0x3A/* : */ && !isSpace(ch)) { return false; }\n\n pos++;\n }\n\n lineText = getLine(state, startLine + 1);\n\n columns = lineText.split('|');\n aligns = [];\n for (i = 0; i < columns.length; i++) {\n t = columns[i].trim();\n if (!t) {\n // allow empty columns before and after table, but not in between columns;\n // e.g. allow ` |---| `, disallow ` ---||--- `\n if (i === 0 || i === columns.length - 1) {\n continue;\n } else {\n return false;\n }\n }\n\n if (!/^:?-+:?$/.test(t)) { return false; }\n if (t.charCodeAt(t.length - 1) === 0x3A/* : */) {\n aligns.push(t.charCodeAt(0) === 0x3A/* : */ ? 'center' : 'right');\n } else if (t.charCodeAt(0) === 0x3A/* : */) {\n aligns.push('left');\n } else {\n aligns.push('');\n }\n }\n\n lineText = getLine(state, startLine).trim();\n if (lineText.indexOf('|') === -1) { return false; }\n if (state.sCount[startLine] - state.blkIndent >= 4) { return false; }\n columns = escapedSplit(lineText);\n if (columns.length && columns[0] === '') columns.shift();\n if (columns.length && columns[columns.length - 1] === '') columns.pop();\n\n // header row will define an amount of columns in the entire table,\n // and align row should be exactly the same (the rest of the rows can differ)\n columnCount = columns.length;\n if (columnCount === 0 || columnCount !== aligns.length) { return false; }\n\n if (silent) { return true; }\n\n oldParentType = state.parentType;\n state.parentType = 'table';\n\n // use 'blockquote' lists for termination because it's\n // the most similar to tables\n terminatorRules = state.md.block.ruler.getRules('blockquote');\n\n token = state.push('table_open', 'table', 1);\n token.map = tableLines = [ startLine, 0 ];\n\n token = state.push('thead_open', 'thead', 1);\n token.map = [ startLine, startLine + 1 ];\n\n token = state.push('tr_open', 'tr', 1);\n token.map = [ startLine, startLine + 1 ];\n\n for (i = 0; i < columns.length; i++) {\n token = state.push('th_open', 'th', 1);\n if (aligns[i]) {\n token.attrs = [ [ 'style', 'text-align:' + aligns[i] ] ];\n }\n\n token = state.push('inline', '', 0);\n token.content = columns[i].trim();\n token.children = [];\n\n token = state.push('th_close', 'th', -1);\n }\n\n token = state.push('tr_close', 'tr', -1);\n token = state.push('thead_close', 'thead', -1);\n\n for (nextLine = startLine + 2; nextLine < endLine; nextLine++) {\n if (state.sCount[nextLine] < state.blkIndent) { break; }\n\n terminate = false;\n for (i = 0, l = terminatorRules.length; i < l; i++) {\n if (terminatorRules[i](state, nextLine, endLine, true)) {\n terminate = true;\n break;\n }\n }\n\n if (terminate) { break; }\n lineText = getLine(state, nextLine).trim();\n if (!lineText) { break; }\n if (state.sCount[nextLine] - state.blkIndent >= 4) { break; }\n columns = escapedSplit(lineText);\n if (columns.length && columns[0] === '') columns.shift();\n if (columns.length && columns[columns.length - 1] === '') columns.pop();\n\n if (nextLine === startLine + 2) {\n token = state.push('tbody_open', 'tbody', 1);\n token.map = tbodyLines = [ startLine + 2, 0 ];\n }\n\n token = state.push('tr_open', 'tr', 1);\n token.map = [ nextLine, nextLine + 1 ];\n\n for (i = 0; i < columnCount; i++) {\n token = state.push('td_open', 'td', 1);\n if (aligns[i]) {\n token.attrs = [ [ 'style', 'text-align:' + aligns[i] ] ];\n }\n\n token = state.push('inline', '', 0);\n token.content = columns[i] ? columns[i].trim() : '';\n token.children = [];\n\n token = state.push('td_close', 'td', -1);\n }\n token = state.push('tr_close', 'tr', -1);\n }\n\n if (tbodyLines) {\n token = state.push('tbody_close', 'tbody', -1);\n tbodyLines[1] = nextLine;\n }\n\n token = state.push('table_close', 'table', -1);\n tableLines[1] = nextLine;\n\n state.parentType = oldParentType;\n state.line = nextLine;\n return true;\n};\n","'use strict';\n\n\nmodule.exports = function block(state) {\n var token;\n\n if (state.inlineMode) {\n token = new state.Token('inline', '', 0);\n token.content = state.src;\n token.map = [ 0, 1 ];\n token.children = [];\n state.tokens.push(token);\n } else {\n state.md.block.parse(state.src, state.md, state.env, state.tokens);\n }\n};\n","'use strict';\n\nmodule.exports = function inline(state) {\n var tokens = state.tokens, tok, i, l;\n\n // Parse inlines\n for (i = 0, l = tokens.length; i < l; i++) {\n tok = tokens[i];\n if (tok.type === 'inline') {\n state.md.inline.parse(tok.content, state.md, state.env, tok.children);\n }\n }\n};\n","// Replace link-like texts with link nodes.\n//\n// Currently restricted by `md.validateLink()` to http/https/ftp\n//\n'use strict';\n\n\nvar arrayReplaceAt = require('../common/utils').arrayReplaceAt;\n\n\nfunction isLinkOpen(str) {\n return /^\\s]/i.test(str);\n}\nfunction isLinkClose(str) {\n return /^<\\/a\\s*>/i.test(str);\n}\n\n\nmodule.exports = function linkify(state) {\n var i, j, l, tokens, token, currentToken, nodes, ln, text, pos, lastPos,\n level, htmlLinkLevel, url, fullUrl, urlText,\n blockTokens = state.tokens,\n links;\n\n if (!state.md.options.linkify) { return; }\n\n for (j = 0, l = blockTokens.length; j < l; j++) {\n if (blockTokens[j].type !== 'inline' ||\n !state.md.linkify.pretest(blockTokens[j].content)) {\n continue;\n }\n\n tokens = blockTokens[j].children;\n\n htmlLinkLevel = 0;\n\n // We scan from the end, to keep position when new tags added.\n // Use reversed logic in links start/end match\n for (i = tokens.length - 1; i >= 0; i--) {\n currentToken = tokens[i];\n\n // Skip content of markdown links\n if (currentToken.type === 'link_close') {\n i--;\n while (tokens[i].level !== currentToken.level && tokens[i].type !== 'link_open') {\n i--;\n }\n continue;\n }\n\n // Skip content of html tag links\n if (currentToken.type === 'html_inline') {\n if (isLinkOpen(currentToken.content) && htmlLinkLevel > 0) {\n htmlLinkLevel--;\n }\n if (isLinkClose(currentToken.content)) {\n htmlLinkLevel++;\n }\n }\n if (htmlLinkLevel > 0) { continue; }\n\n if (currentToken.type === 'text' && state.md.linkify.test(currentToken.content)) {\n\n text = currentToken.content;\n links = state.md.linkify.match(text);\n\n // Now split string to nodes\n nodes = [];\n level = currentToken.level;\n lastPos = 0;\n\n // forbid escape sequence at the start of the string,\n // this avoids http\\://example.com/ from being linkified as\n // http://example.com/\n if (links.length > 0 &&\n links[0].index === 0 &&\n i > 0 &&\n tokens[i - 1].type === 'text_special') {\n links = links.slice(1);\n }\n\n for (ln = 0; ln < links.length; ln++) {\n url = links[ln].url;\n fullUrl = state.md.normalizeLink(url);\n if (!state.md.validateLink(fullUrl)) { continue; }\n\n urlText = links[ln].text;\n\n // Linkifier might send raw hostnames like \"example.com\", where url\n // starts with domain name. So we prepend http:// in those cases,\n // and remove it afterwards.\n //\n if (!links[ln].schema) {\n urlText = state.md.normalizeLinkText('http://' + urlText).replace(/^http:\\/\\//, '');\n } else if (links[ln].schema === 'mailto:' && !/^mailto:/i.test(urlText)) {\n urlText = state.md.normalizeLinkText('mailto:' + urlText).replace(/^mailto:/, '');\n } else {\n urlText = state.md.normalizeLinkText(urlText);\n }\n\n pos = links[ln].index;\n\n if (pos > lastPos) {\n token = new state.Token('text', '', 0);\n token.content = text.slice(lastPos, pos);\n token.level = level;\n nodes.push(token);\n }\n\n token = new state.Token('link_open', 'a', 1);\n token.attrs = [ [ 'href', fullUrl ] ];\n token.level = level++;\n token.markup = 'linkify';\n token.info = 'auto';\n nodes.push(token);\n\n token = new state.Token('text', '', 0);\n token.content = urlText;\n token.level = level;\n nodes.push(token);\n\n token = new state.Token('link_close', 'a', -1);\n token.level = --level;\n token.markup = 'linkify';\n token.info = 'auto';\n nodes.push(token);\n\n lastPos = links[ln].lastIndex;\n }\n if (lastPos < text.length) {\n token = new state.Token('text', '', 0);\n token.content = text.slice(lastPos);\n token.level = level;\n nodes.push(token);\n }\n\n // replace current node\n blockTokens[j].children = tokens = arrayReplaceAt(tokens, i, nodes);\n }\n }\n }\n};\n","// Normalize input string\n\n'use strict';\n\n\n// https://spec.commonmark.org/0.29/#line-ending\nvar NEWLINES_RE = /\\r\\n?|\\n/g;\nvar NULL_RE = /\\0/g;\n\n\nmodule.exports = function normalize(state) {\n var str;\n\n // Normalize newlines\n str = state.src.replace(NEWLINES_RE, '\\n');\n\n // Replace NULL characters\n str = str.replace(NULL_RE, '\\uFFFD');\n\n state.src = str;\n};\n","// Simple typographic replacements\n//\n// (c) (C) → ©\n// (tm) (TM) → ™\n// (r) (R) → ®\n// +- → ±\n// (p) (P) -> §\n// ... → … (also ?.... → ?.., !.... → !..)\n// ???????? → ???, !!!!! → !!!, `,,` → `,`\n// -- → –, --- → —\n//\n'use strict';\n\n// TODO:\n// - fractionals 1/2, 1/4, 3/4 -> ½, ¼, ¾\n// - multiplications 2 x 4 -> 2 × 4\n\nvar RARE_RE = /\\+-|\\.\\.|\\?\\?\\?\\?|!!!!|,,|--/;\n\n// Workaround for phantomjs - need regex without /g flag,\n// or root check will fail every second time\nvar SCOPED_ABBR_TEST_RE = /\\((c|tm|r)\\)/i;\n\nvar SCOPED_ABBR_RE = /\\((c|tm|r)\\)/ig;\nvar SCOPED_ABBR = {\n c: '©',\n r: '®',\n tm: '™'\n};\n\nfunction replaceFn(match, name) {\n return SCOPED_ABBR[name.toLowerCase()];\n}\n\nfunction replace_scoped(inlineTokens) {\n var i, token, inside_autolink = 0;\n\n for (i = inlineTokens.length - 1; i >= 0; i--) {\n token = inlineTokens[i];\n\n if (token.type === 'text' && !inside_autolink) {\n token.content = token.content.replace(SCOPED_ABBR_RE, replaceFn);\n }\n\n if (token.type === 'link_open' && token.info === 'auto') {\n inside_autolink--;\n }\n\n if (token.type === 'link_close' && token.info === 'auto') {\n inside_autolink++;\n }\n }\n}\n\nfunction replace_rare(inlineTokens) {\n var i, token, inside_autolink = 0;\n\n for (i = inlineTokens.length - 1; i >= 0; i--) {\n token = inlineTokens[i];\n\n if (token.type === 'text' && !inside_autolink) {\n if (RARE_RE.test(token.content)) {\n token.content = token.content\n .replace(/\\+-/g, '±')\n // .., ..., ....... -> …\n // but ?..... & !..... -> ?.. & !..\n .replace(/\\.{2,}/g, '…').replace(/([?!])…/g, '$1..')\n .replace(/([?!]){4,}/g, '$1$1$1').replace(/,{2,}/g, ',')\n // em-dash\n .replace(/(^|[^-])---(?=[^-]|$)/mg, '$1\\u2014')\n // en-dash\n .replace(/(^|\\s)--(?=\\s|$)/mg, '$1\\u2013')\n .replace(/(^|[^-\\s])--(?=[^-\\s]|$)/mg, '$1\\u2013');\n }\n }\n\n if (token.type === 'link_open' && token.info === 'auto') {\n inside_autolink--;\n }\n\n if (token.type === 'link_close' && token.info === 'auto') {\n inside_autolink++;\n }\n }\n}\n\n\nmodule.exports = function replace(state) {\n var blkIdx;\n\n if (!state.md.options.typographer) { return; }\n\n for (blkIdx = state.tokens.length - 1; blkIdx >= 0; blkIdx--) {\n\n if (state.tokens[blkIdx].type !== 'inline') { continue; }\n\n if (SCOPED_ABBR_TEST_RE.test(state.tokens[blkIdx].content)) {\n replace_scoped(state.tokens[blkIdx].children);\n }\n\n if (RARE_RE.test(state.tokens[blkIdx].content)) {\n replace_rare(state.tokens[blkIdx].children);\n }\n\n }\n};\n","// Convert straight quotation marks to typographic ones\n//\n'use strict';\n\n\nvar isWhiteSpace = require('../common/utils').isWhiteSpace;\nvar isPunctChar = require('../common/utils').isPunctChar;\nvar isMdAsciiPunct = require('../common/utils').isMdAsciiPunct;\n\nvar QUOTE_TEST_RE = /['\"]/;\nvar QUOTE_RE = /['\"]/g;\nvar APOSTROPHE = '\\u2019'; /* ’ */\n\n\nfunction replaceAt(str, index, ch) {\n return str.slice(0, index) + ch + str.slice(index + 1);\n}\n\nfunction process_inlines(tokens, state) {\n var i, token, text, t, pos, max, thisLevel, item, lastChar, nextChar,\n isLastPunctChar, isNextPunctChar, isLastWhiteSpace, isNextWhiteSpace,\n canOpen, canClose, j, isSingle, stack, openQuote, closeQuote;\n\n stack = [];\n\n for (i = 0; i < tokens.length; i++) {\n token = tokens[i];\n\n thisLevel = tokens[i].level;\n\n for (j = stack.length - 1; j >= 0; j--) {\n if (stack[j].level <= thisLevel) { break; }\n }\n stack.length = j + 1;\n\n if (token.type !== 'text') { continue; }\n\n text = token.content;\n pos = 0;\n max = text.length;\n\n /*eslint no-labels:0,block-scoped-var:0*/\n OUTER:\n while (pos < max) {\n QUOTE_RE.lastIndex = pos;\n t = QUOTE_RE.exec(text);\n if (!t) { break; }\n\n canOpen = canClose = true;\n pos = t.index + 1;\n isSingle = (t[0] === \"'\");\n\n // Find previous character,\n // default to space if it's the beginning of the line\n //\n lastChar = 0x20;\n\n if (t.index - 1 >= 0) {\n lastChar = text.charCodeAt(t.index - 1);\n } else {\n for (j = i - 1; j >= 0; j--) {\n if (tokens[j].type === 'softbreak' || tokens[j].type === 'hardbreak') break; // lastChar defaults to 0x20\n if (!tokens[j].content) continue; // should skip all tokens except 'text', 'html_inline' or 'code_inline'\n\n lastChar = tokens[j].content.charCodeAt(tokens[j].content.length - 1);\n break;\n }\n }\n\n // Find next character,\n // default to space if it's the end of the line\n //\n nextChar = 0x20;\n\n if (pos < max) {\n nextChar = text.charCodeAt(pos);\n } else {\n for (j = i + 1; j < tokens.length; j++) {\n if (tokens[j].type === 'softbreak' || tokens[j].type === 'hardbreak') break; // nextChar defaults to 0x20\n if (!tokens[j].content) continue; // should skip all tokens except 'text', 'html_inline' or 'code_inline'\n\n nextChar = tokens[j].content.charCodeAt(0);\n break;\n }\n }\n\n isLastPunctChar = isMdAsciiPunct(lastChar) || isPunctChar(String.fromCharCode(lastChar));\n isNextPunctChar = isMdAsciiPunct(nextChar) || isPunctChar(String.fromCharCode(nextChar));\n\n isLastWhiteSpace = isWhiteSpace(lastChar);\n isNextWhiteSpace = isWhiteSpace(nextChar);\n\n if (isNextWhiteSpace) {\n canOpen = false;\n } else if (isNextPunctChar) {\n if (!(isLastWhiteSpace || isLastPunctChar)) {\n canOpen = false;\n }\n }\n\n if (isLastWhiteSpace) {\n canClose = false;\n } else if (isLastPunctChar) {\n if (!(isNextWhiteSpace || isNextPunctChar)) {\n canClose = false;\n }\n }\n\n if (nextChar === 0x22 /* \" */ && t[0] === '\"') {\n if (lastChar >= 0x30 /* 0 */ && lastChar <= 0x39 /* 9 */) {\n // special case: 1\"\" - count first quote as an inch\n canClose = canOpen = false;\n }\n }\n\n if (canOpen && canClose) {\n // Replace quotes in the middle of punctuation sequence, but not\n // in the middle of the words, i.e.:\n //\n // 1. foo \" bar \" baz - not replaced\n // 2. foo-\"-bar-\"-baz - replaced\n // 3. foo\"bar\"baz - not replaced\n //\n canOpen = isLastPunctChar;\n canClose = isNextPunctChar;\n }\n\n if (!canOpen && !canClose) {\n // middle of word\n if (isSingle) {\n token.content = replaceAt(token.content, t.index, APOSTROPHE);\n }\n continue;\n }\n\n if (canClose) {\n // this could be a closing quote, rewind the stack to get a match\n for (j = stack.length - 1; j >= 0; j--) {\n item = stack[j];\n if (stack[j].level < thisLevel) { break; }\n if (item.single === isSingle && stack[j].level === thisLevel) {\n item = stack[j];\n\n if (isSingle) {\n openQuote = state.md.options.quotes[2];\n closeQuote = state.md.options.quotes[3];\n } else {\n openQuote = state.md.options.quotes[0];\n closeQuote = state.md.options.quotes[1];\n }\n\n // replace token.content *before* tokens[item.token].content,\n // because, if they are pointing at the same token, replaceAt\n // could mess up indices when quote length != 1\n token.content = replaceAt(token.content, t.index, closeQuote);\n tokens[item.token].content = replaceAt(\n tokens[item.token].content, item.pos, openQuote);\n\n pos += closeQuote.length - 1;\n if (item.token === i) { pos += openQuote.length - 1; }\n\n text = token.content;\n max = text.length;\n\n stack.length = j;\n continue OUTER;\n }\n }\n }\n\n if (canOpen) {\n stack.push({\n token: i,\n pos: t.index,\n single: isSingle,\n level: thisLevel\n });\n } else if (canClose && isSingle) {\n token.content = replaceAt(token.content, t.index, APOSTROPHE);\n }\n }\n }\n}\n\n\nmodule.exports = function smartquotes(state) {\n /*eslint max-depth:0*/\n var blkIdx;\n\n if (!state.md.options.typographer) { return; }\n\n for (blkIdx = state.tokens.length - 1; blkIdx >= 0; blkIdx--) {\n\n if (state.tokens[blkIdx].type !== 'inline' ||\n !QUOTE_TEST_RE.test(state.tokens[blkIdx].content)) {\n continue;\n }\n\n process_inlines(state.tokens[blkIdx].children, state);\n }\n};\n","// Core state object\n//\n'use strict';\n\nvar Token = require('../token');\n\n\nfunction StateCore(src, md, env) {\n this.src = src;\n this.env = env;\n this.tokens = [];\n this.inlineMode = false;\n this.md = md; // link to parser instance\n}\n\n// re-export Token class to use in core rules\nStateCore.prototype.Token = Token;\n\n\nmodule.exports = StateCore;\n","// Join raw text tokens with the rest of the text\n//\n// This is set as a separate rule to provide an opportunity for plugins\n// to run text replacements after text join, but before escape join.\n//\n// For example, `\\:)` shouldn't be replaced with an emoji.\n//\n'use strict';\n\n\nmodule.exports = function text_join(state) {\n var j, l, tokens, curr, max, last,\n blockTokens = state.tokens;\n\n for (j = 0, l = blockTokens.length; j < l; j++) {\n if (blockTokens[j].type !== 'inline') continue;\n\n tokens = blockTokens[j].children;\n max = tokens.length;\n\n for (curr = 0; curr < max; curr++) {\n if (tokens[curr].type === 'text_special') {\n tokens[curr].type = 'text';\n }\n }\n\n for (curr = last = 0; curr < max; curr++) {\n if (tokens[curr].type === 'text' &&\n curr + 1 < max &&\n tokens[curr + 1].type === 'text') {\n\n // collapse two adjacent text nodes\n tokens[curr + 1].content = tokens[curr].content + tokens[curr + 1].content;\n } else {\n if (curr !== last) { tokens[last] = tokens[curr]; }\n\n last++;\n }\n }\n\n if (curr !== last) {\n tokens.length = last;\n }\n }\n};\n","// Process autolinks ''\n\n'use strict';\n\n\n/*eslint max-len:0*/\nvar EMAIL_RE = /^([a-zA-Z0-9.!#$%&'*+\\/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*)$/;\nvar AUTOLINK_RE = /^([a-zA-Z][a-zA-Z0-9+.\\-]{1,31}):([^<>\\x00-\\x20]*)$/;\n\n\nmodule.exports = function autolink(state, silent) {\n var url, fullUrl, token, ch, start, max,\n pos = state.pos;\n\n if (state.src.charCodeAt(pos) !== 0x3C/* < */) { return false; }\n\n start = state.pos;\n max = state.posMax;\n\n for (;;) {\n if (++pos >= max) return false;\n\n ch = state.src.charCodeAt(pos);\n\n if (ch === 0x3C /* < */) return false;\n if (ch === 0x3E /* > */) break;\n }\n\n url = state.src.slice(start + 1, pos);\n\n if (AUTOLINK_RE.test(url)) {\n fullUrl = state.md.normalizeLink(url);\n if (!state.md.validateLink(fullUrl)) { return false; }\n\n if (!silent) {\n token = state.push('link_open', 'a', 1);\n token.attrs = [ [ 'href', fullUrl ] ];\n token.markup = 'autolink';\n token.info = 'auto';\n\n token = state.push('text', '', 0);\n token.content = state.md.normalizeLinkText(url);\n\n token = state.push('link_close', 'a', -1);\n token.markup = 'autolink';\n token.info = 'auto';\n }\n\n state.pos += url.length + 2;\n return true;\n }\n\n if (EMAIL_RE.test(url)) {\n fullUrl = state.md.normalizeLink('mailto:' + url);\n if (!state.md.validateLink(fullUrl)) { return false; }\n\n if (!silent) {\n token = state.push('link_open', 'a', 1);\n token.attrs = [ [ 'href', fullUrl ] ];\n token.markup = 'autolink';\n token.info = 'auto';\n\n token = state.push('text', '', 0);\n token.content = state.md.normalizeLinkText(url);\n\n token = state.push('link_close', 'a', -1);\n token.markup = 'autolink';\n token.info = 'auto';\n }\n\n state.pos += url.length + 2;\n return true;\n }\n\n return false;\n};\n","// Parse backticks\n\n'use strict';\n\n\nmodule.exports = function backtick(state, silent) {\n var start, max, marker, token, matchStart, matchEnd, openerLength, closerLength,\n pos = state.pos,\n ch = state.src.charCodeAt(pos);\n\n if (ch !== 0x60/* ` */) { return false; }\n\n start = pos;\n pos++;\n max = state.posMax;\n\n // scan marker length\n while (pos < max && state.src.charCodeAt(pos) === 0x60/* ` */) { pos++; }\n\n marker = state.src.slice(start, pos);\n openerLength = marker.length;\n\n if (state.backticksScanned && (state.backticks[openerLength] || 0) <= start) {\n if (!silent) state.pending += marker;\n state.pos += openerLength;\n return true;\n }\n\n matchStart = matchEnd = pos;\n\n // Nothing found in the cache, scan until the end of the line (or until marker is found)\n while ((matchStart = state.src.indexOf('`', matchEnd)) !== -1) {\n matchEnd = matchStart + 1;\n\n // scan marker length\n while (matchEnd < max && state.src.charCodeAt(matchEnd) === 0x60/* ` */) { matchEnd++; }\n\n closerLength = matchEnd - matchStart;\n\n if (closerLength === openerLength) {\n // Found matching closer length.\n if (!silent) {\n token = state.push('code_inline', 'code', 0);\n token.markup = marker;\n token.content = state.src.slice(pos, matchStart)\n .replace(/\\n/g, ' ')\n .replace(/^ (.+) $/, '$1');\n }\n state.pos = matchEnd;\n return true;\n }\n\n // Some different length found, put it in cache as upper limit of where closer can be found\n state.backticks[closerLength] = matchStart;\n }\n\n // Scanned through the end, didn't find anything\n state.backticksScanned = true;\n\n if (!silent) state.pending += marker;\n state.pos += openerLength;\n return true;\n};\n","// For each opening emphasis-like marker find a matching closing one\n//\n'use strict';\n\n\nfunction processDelimiters(state, delimiters) {\n var closerIdx, openerIdx, closer, opener, minOpenerIdx, newMinOpenerIdx,\n isOddMatch, lastJump,\n openersBottom = {},\n max = delimiters.length;\n\n if (!max) return;\n\n // headerIdx is the first delimiter of the current (where closer is) delimiter run\n var headerIdx = 0;\n var lastTokenIdx = -2; // needs any value lower than -1\n var jumps = [];\n\n for (closerIdx = 0; closerIdx < max; closerIdx++) {\n closer = delimiters[closerIdx];\n\n jumps.push(0);\n\n // markers belong to same delimiter run if:\n // - they have adjacent tokens\n // - AND markers are the same\n //\n if (delimiters[headerIdx].marker !== closer.marker || lastTokenIdx !== closer.token - 1) {\n headerIdx = closerIdx;\n }\n\n lastTokenIdx = closer.token;\n\n // Length is only used for emphasis-specific \"rule of 3\",\n // if it's not defined (in strikethrough or 3rd party plugins),\n // we can default it to 0 to disable those checks.\n //\n closer.length = closer.length || 0;\n\n if (!closer.close) continue;\n\n // Previously calculated lower bounds (previous fails)\n // for each marker, each delimiter length modulo 3,\n // and for whether this closer can be an opener;\n // https://github.com/commonmark/cmark/commit/34250e12ccebdc6372b8b49c44fab57c72443460\n if (!openersBottom.hasOwnProperty(closer.marker)) {\n openersBottom[closer.marker] = [ -1, -1, -1, -1, -1, -1 ];\n }\n\n minOpenerIdx = openersBottom[closer.marker][(closer.open ? 3 : 0) + (closer.length % 3)];\n\n openerIdx = headerIdx - jumps[headerIdx] - 1;\n\n newMinOpenerIdx = openerIdx;\n\n for (; openerIdx > minOpenerIdx; openerIdx -= jumps[openerIdx] + 1) {\n opener = delimiters[openerIdx];\n\n if (opener.marker !== closer.marker) continue;\n\n if (opener.open && opener.end < 0) {\n\n isOddMatch = false;\n\n // from spec:\n //\n // If one of the delimiters can both open and close emphasis, then the\n // sum of the lengths of the delimiter runs containing the opening and\n // closing delimiters must not be a multiple of 3 unless both lengths\n // are multiples of 3.\n //\n if (opener.close || closer.open) {\n if ((opener.length + closer.length) % 3 === 0) {\n if (opener.length % 3 !== 0 || closer.length % 3 !== 0) {\n isOddMatch = true;\n }\n }\n }\n\n if (!isOddMatch) {\n // If previous delimiter cannot be an opener, we can safely skip\n // the entire sequence in future checks. This is required to make\n // sure algorithm has linear complexity (see *_*_*_*_*_... case).\n //\n lastJump = openerIdx > 0 && !delimiters[openerIdx - 1].open ?\n jumps[openerIdx - 1] + 1 :\n 0;\n\n jumps[closerIdx] = closerIdx - openerIdx + lastJump;\n jumps[openerIdx] = lastJump;\n\n closer.open = false;\n opener.end = closerIdx;\n opener.close = false;\n newMinOpenerIdx = -1;\n // treat next token as start of run,\n // it optimizes skips in **<...>**a**<...>** pathological case\n lastTokenIdx = -2;\n break;\n }\n }\n }\n\n if (newMinOpenerIdx !== -1) {\n // If match for this delimiter run failed, we want to set lower bound for\n // future lookups. This is required to make sure algorithm has linear\n // complexity.\n //\n // See details here:\n // https://github.com/commonmark/cmark/issues/178#issuecomment-270417442\n //\n openersBottom[closer.marker][(closer.open ? 3 : 0) + ((closer.length || 0) % 3)] = newMinOpenerIdx;\n }\n }\n}\n\n\nmodule.exports = function link_pairs(state) {\n var curr,\n tokens_meta = state.tokens_meta,\n max = state.tokens_meta.length;\n\n processDelimiters(state, state.delimiters);\n\n for (curr = 0; curr < max; curr++) {\n if (tokens_meta[curr] && tokens_meta[curr].delimiters) {\n processDelimiters(state, tokens_meta[curr].delimiters);\n }\n }\n};\n","// Process *this* and _that_\n//\n'use strict';\n\n\n// Insert each marker as a separate text token, and add it to delimiter list\n//\nmodule.exports.tokenize = function emphasis(state, silent) {\n var i, scanned, token,\n start = state.pos,\n marker = state.src.charCodeAt(start);\n\n if (silent) { return false; }\n\n if (marker !== 0x5F /* _ */ && marker !== 0x2A /* * */) { return false; }\n\n scanned = state.scanDelims(state.pos, marker === 0x2A);\n\n for (i = 0; i < scanned.length; i++) {\n token = state.push('text', '', 0);\n token.content = String.fromCharCode(marker);\n\n state.delimiters.push({\n // Char code of the starting marker (number).\n //\n marker: marker,\n\n // Total length of these series of delimiters.\n //\n length: scanned.length,\n\n // A position of the token this delimiter corresponds to.\n //\n token: state.tokens.length - 1,\n\n // If this delimiter is matched as a valid opener, `end` will be\n // equal to its position, otherwise it's `-1`.\n //\n end: -1,\n\n // Boolean flags that determine if this delimiter could open or close\n // an emphasis.\n //\n open: scanned.can_open,\n close: scanned.can_close\n });\n }\n\n state.pos += scanned.length;\n\n return true;\n};\n\n\nfunction postProcess(state, delimiters) {\n var i,\n startDelim,\n endDelim,\n token,\n ch,\n isStrong,\n max = delimiters.length;\n\n for (i = max - 1; i >= 0; i--) {\n startDelim = delimiters[i];\n\n if (startDelim.marker !== 0x5F/* _ */ && startDelim.marker !== 0x2A/* * */) {\n continue;\n }\n\n // Process only opening markers\n if (startDelim.end === -1) {\n continue;\n }\n\n endDelim = delimiters[startDelim.end];\n\n // If the previous delimiter has the same marker and is adjacent to this one,\n // merge those into one strong delimiter.\n //\n // `whatever` -> `whatever`\n //\n isStrong = i > 0 &&\n delimiters[i - 1].end === startDelim.end + 1 &&\n // check that first two markers match and adjacent\n delimiters[i - 1].marker === startDelim.marker &&\n delimiters[i - 1].token === startDelim.token - 1 &&\n // check that last two markers are adjacent (we can safely assume they match)\n delimiters[startDelim.end + 1].token === endDelim.token + 1;\n\n ch = String.fromCharCode(startDelim.marker);\n\n token = state.tokens[startDelim.token];\n token.type = isStrong ? 'strong_open' : 'em_open';\n token.tag = isStrong ? 'strong' : 'em';\n token.nesting = 1;\n token.markup = isStrong ? ch + ch : ch;\n token.content = '';\n\n token = state.tokens[endDelim.token];\n token.type = isStrong ? 'strong_close' : 'em_close';\n token.tag = isStrong ? 'strong' : 'em';\n token.nesting = -1;\n token.markup = isStrong ? ch + ch : ch;\n token.content = '';\n\n if (isStrong) {\n state.tokens[delimiters[i - 1].token].content = '';\n state.tokens[delimiters[startDelim.end + 1].token].content = '';\n i--;\n }\n }\n}\n\n\n// Walk through delimiter list and replace text tokens with tags\n//\nmodule.exports.postProcess = function emphasis(state) {\n var curr,\n tokens_meta = state.tokens_meta,\n max = state.tokens_meta.length;\n\n postProcess(state, state.delimiters);\n\n for (curr = 0; curr < max; curr++) {\n if (tokens_meta[curr] && tokens_meta[curr].delimiters) {\n postProcess(state, tokens_meta[curr].delimiters);\n }\n }\n};\n","// Process html entity - {, ¯, ", ...\n\n'use strict';\n\nvar entities = require('../common/entities');\nvar has = require('../common/utils').has;\nvar isValidEntityCode = require('../common/utils').isValidEntityCode;\nvar fromCodePoint = require('../common/utils').fromCodePoint;\n\n\nvar DIGITAL_RE = /^&#((?:x[a-f0-9]{1,6}|[0-9]{1,7}));/i;\nvar NAMED_RE = /^&([a-z][a-z0-9]{1,31});/i;\n\n\nmodule.exports = function entity(state, silent) {\n var ch, code, match, token, pos = state.pos, max = state.posMax;\n\n if (state.src.charCodeAt(pos) !== 0x26/* & */) return false;\n\n if (pos + 1 >= max) return false;\n\n ch = state.src.charCodeAt(pos + 1);\n\n if (ch === 0x23 /* # */) {\n match = state.src.slice(pos).match(DIGITAL_RE);\n if (match) {\n if (!silent) {\n code = match[1][0].toLowerCase() === 'x' ? parseInt(match[1].slice(1), 16) : parseInt(match[1], 10);\n\n token = state.push('text_special', '', 0);\n token.content = isValidEntityCode(code) ? fromCodePoint(code) : fromCodePoint(0xFFFD);\n token.markup = match[0];\n token.info = 'entity';\n }\n state.pos += match[0].length;\n return true;\n }\n } else {\n match = state.src.slice(pos).match(NAMED_RE);\n if (match) {\n if (has(entities, match[1])) {\n if (!silent) {\n token = state.push('text_special', '', 0);\n token.content = entities[match[1]];\n token.markup = match[0];\n token.info = 'entity';\n }\n state.pos += match[0].length;\n return true;\n }\n }\n }\n\n return false;\n};\n","// Process escaped chars and hardbreaks\n\n'use strict';\n\nvar isSpace = require('../common/utils').isSpace;\n\nvar ESCAPED = [];\n\nfor (var i = 0; i < 256; i++) { ESCAPED.push(0); }\n\n'\\\\!\"#$%&\\'()*+,./:;<=>?@[]^_`{|}~-'\n .split('').forEach(function (ch) { ESCAPED[ch.charCodeAt(0)] = 1; });\n\n\nmodule.exports = function escape(state, silent) {\n var ch1, ch2, origStr, escapedStr, token, pos = state.pos, max = state.posMax;\n\n if (state.src.charCodeAt(pos) !== 0x5C/* \\ */) return false;\n pos++;\n\n // '\\' at the end of the inline block\n if (pos >= max) return false;\n\n ch1 = state.src.charCodeAt(pos);\n\n if (ch1 === 0x0A) {\n if (!silent) {\n state.push('hardbreak', 'br', 0);\n }\n\n pos++;\n // skip leading whitespaces from next line\n while (pos < max) {\n ch1 = state.src.charCodeAt(pos);\n if (!isSpace(ch1)) break;\n pos++;\n }\n\n state.pos = pos;\n return true;\n }\n\n escapedStr = state.src[pos];\n\n if (ch1 >= 0xD800 && ch1 <= 0xDBFF && pos + 1 < max) {\n ch2 = state.src.charCodeAt(pos + 1);\n\n if (ch2 >= 0xDC00 && ch2 <= 0xDFFF) {\n escapedStr += state.src[pos + 1];\n pos++;\n }\n }\n\n origStr = '\\\\' + escapedStr;\n\n if (!silent) {\n token = state.push('text_special', '', 0);\n\n if (ch1 < 256 && ESCAPED[ch1] !== 0) {\n token.content = escapedStr;\n } else {\n token.content = origStr;\n }\n\n token.markup = origStr;\n token.info = 'escape';\n }\n\n state.pos = pos + 1;\n return true;\n};\n","// Clean up tokens after emphasis and strikethrough postprocessing:\n// merge adjacent text nodes into one and re-calculate all token levels\n//\n// This is necessary because initially emphasis delimiter markers (*, _, ~)\n// are treated as their own separate text tokens. Then emphasis rule either\n// leaves them as text (needed to merge with adjacent text) or turns them\n// into opening/closing tags (which messes up levels inside).\n//\n'use strict';\n\n\nmodule.exports = function fragments_join(state) {\n var curr, last,\n level = 0,\n tokens = state.tokens,\n max = state.tokens.length;\n\n for (curr = last = 0; curr < max; curr++) {\n // re-calculate levels after emphasis/strikethrough turns some text nodes\n // into opening/closing tags\n if (tokens[curr].nesting < 0) level--; // closing tag\n tokens[curr].level = level;\n if (tokens[curr].nesting > 0) level++; // opening tag\n\n if (tokens[curr].type === 'text' &&\n curr + 1 < max &&\n tokens[curr + 1].type === 'text') {\n\n // collapse two adjacent text nodes\n tokens[curr + 1].content = tokens[curr].content + tokens[curr + 1].content;\n } else {\n if (curr !== last) { tokens[last] = tokens[curr]; }\n\n last++;\n }\n }\n\n if (curr !== last) {\n tokens.length = last;\n }\n};\n","// Process html tags\n\n'use strict';\n\n\nvar HTML_TAG_RE = require('../common/html_re').HTML_TAG_RE;\n\n\nfunction isLinkOpen(str) {\n return /^\\s]/i.test(str);\n}\nfunction isLinkClose(str) {\n return /^<\\/a\\s*>/i.test(str);\n}\n\n\nfunction isLetter(ch) {\n /*eslint no-bitwise:0*/\n var lc = ch | 0x20; // to lower case\n return (lc >= 0x61/* a */) && (lc <= 0x7a/* z */);\n}\n\n\nmodule.exports = function html_inline(state, silent) {\n var ch, match, max, token,\n pos = state.pos;\n\n if (!state.md.options.html) { return false; }\n\n // Check start\n max = state.posMax;\n if (state.src.charCodeAt(pos) !== 0x3C/* < */ ||\n pos + 2 >= max) {\n return false;\n }\n\n // Quick fail on second char\n ch = state.src.charCodeAt(pos + 1);\n if (ch !== 0x21/* ! */ &&\n ch !== 0x3F/* ? */ &&\n ch !== 0x2F/* / */ &&\n !isLetter(ch)) {\n return false;\n }\n\n match = state.src.slice(pos).match(HTML_TAG_RE);\n if (!match) { return false; }\n\n if (!silent) {\n token = state.push('html_inline', '', 0);\n token.content = state.src.slice(pos, pos + match[0].length);\n\n if (isLinkOpen(token.content)) state.linkLevel++;\n if (isLinkClose(token.content)) state.linkLevel--;\n }\n state.pos += match[0].length;\n return true;\n};\n","// Process ![image]( \"title\")\n\n'use strict';\n\nvar normalizeReference = require('../common/utils').normalizeReference;\nvar isSpace = require('../common/utils').isSpace;\n\n\nmodule.exports = function image(state, silent) {\n var attrs,\n code,\n content,\n label,\n labelEnd,\n labelStart,\n pos,\n ref,\n res,\n title,\n token,\n tokens,\n start,\n href = '',\n oldPos = state.pos,\n max = state.posMax;\n\n if (state.src.charCodeAt(state.pos) !== 0x21/* ! */) { return false; }\n if (state.src.charCodeAt(state.pos + 1) !== 0x5B/* [ */) { return false; }\n\n labelStart = state.pos + 2;\n labelEnd = state.md.helpers.parseLinkLabel(state, state.pos + 1, false);\n\n // parser failed to find ']', so it's not a valid link\n if (labelEnd < 0) { return false; }\n\n pos = labelEnd + 1;\n if (pos < max && state.src.charCodeAt(pos) === 0x28/* ( */) {\n //\n // Inline link\n //\n\n // [link]( \"title\" )\n // ^^ skipping these spaces\n pos++;\n for (; pos < max; pos++) {\n code = state.src.charCodeAt(pos);\n if (!isSpace(code) && code !== 0x0A) { break; }\n }\n if (pos >= max) { return false; }\n\n // [link]( \"title\" )\n // ^^^^^^ parsing link destination\n start = pos;\n res = state.md.helpers.parseLinkDestination(state.src, pos, state.posMax);\n if (res.ok) {\n href = state.md.normalizeLink(res.str);\n if (state.md.validateLink(href)) {\n pos = res.pos;\n } else {\n href = '';\n }\n }\n\n // [link]( \"title\" )\n // ^^ skipping these spaces\n start = pos;\n for (; pos < max; pos++) {\n code = state.src.charCodeAt(pos);\n if (!isSpace(code) && code !== 0x0A) { break; }\n }\n\n // [link]( \"title\" )\n // ^^^^^^^ parsing link title\n res = state.md.helpers.parseLinkTitle(state.src, pos, state.posMax);\n if (pos < max && start !== pos && res.ok) {\n title = res.str;\n pos = res.pos;\n\n // [link]( \"title\" )\n // ^^ skipping these spaces\n for (; pos < max; pos++) {\n code = state.src.charCodeAt(pos);\n if (!isSpace(code) && code !== 0x0A) { break; }\n }\n } else {\n title = '';\n }\n\n if (pos >= max || state.src.charCodeAt(pos) !== 0x29/* ) */) {\n state.pos = oldPos;\n return false;\n }\n pos++;\n } else {\n //\n // Link reference\n //\n if (typeof state.env.references === 'undefined') { return false; }\n\n if (pos < max && state.src.charCodeAt(pos) === 0x5B/* [ */) {\n start = pos + 1;\n pos = state.md.helpers.parseLinkLabel(state, pos);\n if (pos >= 0) {\n label = state.src.slice(start, pos++);\n } else {\n pos = labelEnd + 1;\n }\n } else {\n pos = labelEnd + 1;\n }\n\n // covers label === '' and label === undefined\n // (collapsed reference link and shortcut reference link respectively)\n if (!label) { label = state.src.slice(labelStart, labelEnd); }\n\n ref = state.env.references[normalizeReference(label)];\n if (!ref) {\n state.pos = oldPos;\n return false;\n }\n href = ref.href;\n title = ref.title;\n }\n\n //\n // We found the end of the link, and know for a fact it's a valid link;\n // so all that's left to do is to call tokenizer.\n //\n if (!silent) {\n content = state.src.slice(labelStart, labelEnd);\n\n state.md.inline.parse(\n content,\n state.md,\n state.env,\n tokens = []\n );\n\n token = state.push('image', 'img', 0);\n token.attrs = attrs = [ [ 'src', href ], [ 'alt', '' ] ];\n token.children = tokens;\n token.content = content;\n\n if (title) {\n attrs.push([ 'title', title ]);\n }\n }\n\n state.pos = pos;\n state.posMax = max;\n return true;\n};\n","// Process [link]( \"stuff\")\n\n'use strict';\n\nvar normalizeReference = require('../common/utils').normalizeReference;\nvar isSpace = require('../common/utils').isSpace;\n\n\nmodule.exports = function link(state, silent) {\n var attrs,\n code,\n label,\n labelEnd,\n labelStart,\n pos,\n res,\n ref,\n token,\n href = '',\n title = '',\n oldPos = state.pos,\n max = state.posMax,\n start = state.pos,\n parseReference = true;\n\n if (state.src.charCodeAt(state.pos) !== 0x5B/* [ */) { return false; }\n\n labelStart = state.pos + 1;\n labelEnd = state.md.helpers.parseLinkLabel(state, state.pos, true);\n\n // parser failed to find ']', so it's not a valid link\n if (labelEnd < 0) { return false; }\n\n pos = labelEnd + 1;\n if (pos < max && state.src.charCodeAt(pos) === 0x28/* ( */) {\n //\n // Inline link\n //\n\n // might have found a valid shortcut link, disable reference parsing\n parseReference = false;\n\n // [link]( \"title\" )\n // ^^ skipping these spaces\n pos++;\n for (; pos < max; pos++) {\n code = state.src.charCodeAt(pos);\n if (!isSpace(code) && code !== 0x0A) { break; }\n }\n if (pos >= max) { return false; }\n\n // [link]( \"title\" )\n // ^^^^^^ parsing link destination\n start = pos;\n res = state.md.helpers.parseLinkDestination(state.src, pos, state.posMax);\n if (res.ok) {\n href = state.md.normalizeLink(res.str);\n if (state.md.validateLink(href)) {\n pos = res.pos;\n } else {\n href = '';\n }\n\n // [link]( \"title\" )\n // ^^ skipping these spaces\n start = pos;\n for (; pos < max; pos++) {\n code = state.src.charCodeAt(pos);\n if (!isSpace(code) && code !== 0x0A) { break; }\n }\n\n // [link]( \"title\" )\n // ^^^^^^^ parsing link title\n res = state.md.helpers.parseLinkTitle(state.src, pos, state.posMax);\n if (pos < max && start !== pos && res.ok) {\n title = res.str;\n pos = res.pos;\n\n // [link]( \"title\" )\n // ^^ skipping these spaces\n for (; pos < max; pos++) {\n code = state.src.charCodeAt(pos);\n if (!isSpace(code) && code !== 0x0A) { break; }\n }\n }\n }\n\n if (pos >= max || state.src.charCodeAt(pos) !== 0x29/* ) */) {\n // parsing a valid shortcut link failed, fallback to reference\n parseReference = true;\n }\n pos++;\n }\n\n if (parseReference) {\n //\n // Link reference\n //\n if (typeof state.env.references === 'undefined') { return false; }\n\n if (pos < max && state.src.charCodeAt(pos) === 0x5B/* [ */) {\n start = pos + 1;\n pos = state.md.helpers.parseLinkLabel(state, pos);\n if (pos >= 0) {\n label = state.src.slice(start, pos++);\n } else {\n pos = labelEnd + 1;\n }\n } else {\n pos = labelEnd + 1;\n }\n\n // covers label === '' and label === undefined\n // (collapsed reference link and shortcut reference link respectively)\n if (!label) { label = state.src.slice(labelStart, labelEnd); }\n\n ref = state.env.references[normalizeReference(label)];\n if (!ref) {\n state.pos = oldPos;\n return false;\n }\n href = ref.href;\n title = ref.title;\n }\n\n //\n // We found the end of the link, and know for a fact it's a valid link;\n // so all that's left to do is to call tokenizer.\n //\n if (!silent) {\n state.pos = labelStart;\n state.posMax = labelEnd;\n\n token = state.push('link_open', 'a', 1);\n token.attrs = attrs = [ [ 'href', href ] ];\n if (title) {\n attrs.push([ 'title', title ]);\n }\n\n state.linkLevel++;\n state.md.inline.tokenize(state);\n state.linkLevel--;\n\n token = state.push('link_close', 'a', -1);\n }\n\n state.pos = pos;\n state.posMax = max;\n return true;\n};\n","// Process links like https://example.org/\n\n'use strict';\n\n\n// RFC3986: scheme = ALPHA *( ALPHA / DIGIT / \"+\" / \"-\" / \".\" )\nvar SCHEME_RE = /(?:^|[^a-z0-9.+-])([a-z][a-z0-9.+-]*)$/i;\n\n\nmodule.exports = function linkify(state, silent) {\n var pos, max, match, proto, link, url, fullUrl, token;\n\n if (!state.md.options.linkify) return false;\n if (state.linkLevel > 0) return false;\n\n pos = state.pos;\n max = state.posMax;\n\n if (pos + 3 > max) return false;\n if (state.src.charCodeAt(pos) !== 0x3A/* : */) return false;\n if (state.src.charCodeAt(pos + 1) !== 0x2F/* / */) return false;\n if (state.src.charCodeAt(pos + 2) !== 0x2F/* / */) return false;\n\n match = state.pending.match(SCHEME_RE);\n if (!match) return false;\n\n proto = match[1];\n\n link = state.md.linkify.matchAtStart(state.src.slice(pos - proto.length));\n if (!link) return false;\n\n url = link.url;\n\n // disallow '*' at the end of the link (conflicts with emphasis)\n url = url.replace(/\\*+$/, '');\n\n fullUrl = state.md.normalizeLink(url);\n if (!state.md.validateLink(fullUrl)) return false;\n\n if (!silent) {\n state.pending = state.pending.slice(0, -proto.length);\n\n token = state.push('link_open', 'a', 1);\n token.attrs = [ [ 'href', fullUrl ] ];\n token.markup = 'linkify';\n token.info = 'auto';\n\n token = state.push('text', '', 0);\n token.content = state.md.normalizeLinkText(url);\n\n token = state.push('link_close', 'a', -1);\n token.markup = 'linkify';\n token.info = 'auto';\n }\n\n state.pos += url.length - proto.length;\n return true;\n};\n","// Proceess '\\n'\n\n'use strict';\n\nvar isSpace = require('../common/utils').isSpace;\n\n\nmodule.exports = function newline(state, silent) {\n var pmax, max, ws, pos = state.pos;\n\n if (state.src.charCodeAt(pos) !== 0x0A/* \\n */) { return false; }\n\n pmax = state.pending.length - 1;\n max = state.posMax;\n\n // ' \\n' -> hardbreak\n // Lookup in pending chars is bad practice! Don't copy to other rules!\n // Pending string is stored in concat mode, indexed lookups will cause\n // convertion to flat mode.\n if (!silent) {\n if (pmax >= 0 && state.pending.charCodeAt(pmax) === 0x20) {\n if (pmax >= 1 && state.pending.charCodeAt(pmax - 1) === 0x20) {\n // Find whitespaces tail of pending chars.\n ws = pmax - 1;\n while (ws >= 1 && state.pending.charCodeAt(ws - 1) === 0x20) ws--;\n\n state.pending = state.pending.slice(0, ws);\n state.push('hardbreak', 'br', 0);\n } else {\n state.pending = state.pending.slice(0, -1);\n state.push('softbreak', 'br', 0);\n }\n\n } else {\n state.push('softbreak', 'br', 0);\n }\n }\n\n pos++;\n\n // skip heading spaces for next line\n while (pos < max && isSpace(state.src.charCodeAt(pos))) { pos++; }\n\n state.pos = pos;\n return true;\n};\n","// Inline parser state\n\n'use strict';\n\n\nvar Token = require('../token');\nvar isWhiteSpace = require('../common/utils').isWhiteSpace;\nvar isPunctChar = require('../common/utils').isPunctChar;\nvar isMdAsciiPunct = require('../common/utils').isMdAsciiPunct;\n\n\nfunction StateInline(src, md, env, outTokens) {\n this.src = src;\n this.env = env;\n this.md = md;\n this.tokens = outTokens;\n this.tokens_meta = Array(outTokens.length);\n\n this.pos = 0;\n this.posMax = this.src.length;\n this.level = 0;\n this.pending = '';\n this.pendingLevel = 0;\n\n // Stores { start: end } pairs. Useful for backtrack\n // optimization of pairs parse (emphasis, strikes).\n this.cache = {};\n\n // List of emphasis-like delimiters for current tag\n this.delimiters = [];\n\n // Stack of delimiter lists for upper level tags\n this._prev_delimiters = [];\n\n // backtick length => last seen position\n this.backticks = {};\n this.backticksScanned = false;\n\n // Counter used to disable inline linkify-it execution\n // inside and markdown links\n this.linkLevel = 0;\n}\n\n\n// Flush pending text\n//\nStateInline.prototype.pushPending = function () {\n var token = new Token('text', '', 0);\n token.content = this.pending;\n token.level = this.pendingLevel;\n this.tokens.push(token);\n this.pending = '';\n return token;\n};\n\n\n// Push new token to \"stream\".\n// If pending text exists - flush it as text token\n//\nStateInline.prototype.push = function (type, tag, nesting) {\n if (this.pending) {\n this.pushPending();\n }\n\n var token = new Token(type, tag, nesting);\n var token_meta = null;\n\n if (nesting < 0) {\n // closing tag\n this.level--;\n this.delimiters = this._prev_delimiters.pop();\n }\n\n token.level = this.level;\n\n if (nesting > 0) {\n // opening tag\n this.level++;\n this._prev_delimiters.push(this.delimiters);\n this.delimiters = [];\n token_meta = { delimiters: this.delimiters };\n }\n\n this.pendingLevel = this.level;\n this.tokens.push(token);\n this.tokens_meta.push(token_meta);\n return token;\n};\n\n\n// Scan a sequence of emphasis-like markers, and determine whether\n// it can start an emphasis sequence or end an emphasis sequence.\n//\n// - start - position to scan from (it should point at a valid marker);\n// - canSplitWord - determine if these markers can be found inside a word\n//\nStateInline.prototype.scanDelims = function (start, canSplitWord) {\n var pos = start, lastChar, nextChar, count, can_open, can_close,\n isLastWhiteSpace, isLastPunctChar,\n isNextWhiteSpace, isNextPunctChar,\n left_flanking = true,\n right_flanking = true,\n max = this.posMax,\n marker = this.src.charCodeAt(start);\n\n // treat beginning of the line as a whitespace\n lastChar = start > 0 ? this.src.charCodeAt(start - 1) : 0x20;\n\n while (pos < max && this.src.charCodeAt(pos) === marker) { pos++; }\n\n count = pos - start;\n\n // treat end of the line as a whitespace\n nextChar = pos < max ? this.src.charCodeAt(pos) : 0x20;\n\n isLastPunctChar = isMdAsciiPunct(lastChar) || isPunctChar(String.fromCharCode(lastChar));\n isNextPunctChar = isMdAsciiPunct(nextChar) || isPunctChar(String.fromCharCode(nextChar));\n\n isLastWhiteSpace = isWhiteSpace(lastChar);\n isNextWhiteSpace = isWhiteSpace(nextChar);\n\n if (isNextWhiteSpace) {\n left_flanking = false;\n } else if (isNextPunctChar) {\n if (!(isLastWhiteSpace || isLastPunctChar)) {\n left_flanking = false;\n }\n }\n\n if (isLastWhiteSpace) {\n right_flanking = false;\n } else if (isLastPunctChar) {\n if (!(isNextWhiteSpace || isNextPunctChar)) {\n right_flanking = false;\n }\n }\n\n if (!canSplitWord) {\n can_open = left_flanking && (!right_flanking || isLastPunctChar);\n can_close = right_flanking && (!left_flanking || isNextPunctChar);\n } else {\n can_open = left_flanking;\n can_close = right_flanking;\n }\n\n return {\n can_open: can_open,\n can_close: can_close,\n length: count\n };\n};\n\n\n// re-export Token class to use in block rules\nStateInline.prototype.Token = Token;\n\n\nmodule.exports = StateInline;\n","// ~~strike through~~\n//\n'use strict';\n\n\n// Insert each marker as a separate text token, and add it to delimiter list\n//\nmodule.exports.tokenize = function strikethrough(state, silent) {\n var i, scanned, token, len, ch,\n start = state.pos,\n marker = state.src.charCodeAt(start);\n\n if (silent) { return false; }\n\n if (marker !== 0x7E/* ~ */) { return false; }\n\n scanned = state.scanDelims(state.pos, true);\n len = scanned.length;\n ch = String.fromCharCode(marker);\n\n if (len < 2) { return false; }\n\n if (len % 2) {\n token = state.push('text', '', 0);\n token.content = ch;\n len--;\n }\n\n for (i = 0; i < len; i += 2) {\n token = state.push('text', '', 0);\n token.content = ch + ch;\n\n state.delimiters.push({\n marker: marker,\n length: 0, // disable \"rule of 3\" length checks meant for emphasis\n token: state.tokens.length - 1,\n end: -1,\n open: scanned.can_open,\n close: scanned.can_close\n });\n }\n\n state.pos += scanned.length;\n\n return true;\n};\n\n\nfunction postProcess(state, delimiters) {\n var i, j,\n startDelim,\n endDelim,\n token,\n loneMarkers = [],\n max = delimiters.length;\n\n for (i = 0; i < max; i++) {\n startDelim = delimiters[i];\n\n if (startDelim.marker !== 0x7E/* ~ */) {\n continue;\n }\n\n if (startDelim.end === -1) {\n continue;\n }\n\n endDelim = delimiters[startDelim.end];\n\n token = state.tokens[startDelim.token];\n token.type = 's_open';\n token.tag = 's';\n token.nesting = 1;\n token.markup = '~~';\n token.content = '';\n\n token = state.tokens[endDelim.token];\n token.type = 's_close';\n token.tag = 's';\n token.nesting = -1;\n token.markup = '~~';\n token.content = '';\n\n if (state.tokens[endDelim.token - 1].type === 'text' &&\n state.tokens[endDelim.token - 1].content === '~') {\n\n loneMarkers.push(endDelim.token - 1);\n }\n }\n\n // If a marker sequence has an odd number of characters, it's splitted\n // like this: `~~~~~` -> `~` + `~~` + `~~`, leaving one marker at the\n // start of the sequence.\n //\n // So, we have to move all those markers after subsequent s_close tags.\n //\n while (loneMarkers.length) {\n i = loneMarkers.pop();\n j = i + 1;\n\n while (j < state.tokens.length && state.tokens[j].type === 's_close') {\n j++;\n }\n\n j--;\n\n if (i !== j) {\n token = state.tokens[j];\n state.tokens[j] = state.tokens[i];\n state.tokens[i] = token;\n }\n }\n}\n\n\n// Walk through delimiter list and replace text tokens with tags\n//\nmodule.exports.postProcess = function strikethrough(state) {\n var curr,\n tokens_meta = state.tokens_meta,\n max = state.tokens_meta.length;\n\n postProcess(state, state.delimiters);\n\n for (curr = 0; curr < max; curr++) {\n if (tokens_meta[curr] && tokens_meta[curr].delimiters) {\n postProcess(state, tokens_meta[curr].delimiters);\n }\n }\n};\n","// Skip text characters for text token, place those to pending buffer\n// and increment current pos\n\n'use strict';\n\n\n// Rule to skip pure text\n// '{}$%@~+=:' reserved for extentions\n\n// !, \", #, $, %, &, ', (, ), *, +, ,, -, ., /, :, ;, <, =, >, ?, @, [, \\, ], ^, _, `, {, |, }, or ~\n\n// !!!! Don't confuse with \"Markdown ASCII Punctuation\" chars\n// http://spec.commonmark.org/0.15/#ascii-punctuation-character\nfunction isTerminatorChar(ch) {\n switch (ch) {\n case 0x0A/* \\n */:\n case 0x21/* ! */:\n case 0x23/* # */:\n case 0x24/* $ */:\n case 0x25/* % */:\n case 0x26/* & */:\n case 0x2A/* * */:\n case 0x2B/* + */:\n case 0x2D/* - */:\n case 0x3A/* : */:\n case 0x3C/* < */:\n case 0x3D/* = */:\n case 0x3E/* > */:\n case 0x40/* @ */:\n case 0x5B/* [ */:\n case 0x5C/* \\ */:\n case 0x5D/* ] */:\n case 0x5E/* ^ */:\n case 0x5F/* _ */:\n case 0x60/* ` */:\n case 0x7B/* { */:\n case 0x7D/* } */:\n case 0x7E/* ~ */:\n return true;\n default:\n return false;\n }\n}\n\nmodule.exports = function text(state, silent) {\n var pos = state.pos;\n\n while (pos < state.posMax && !isTerminatorChar(state.src.charCodeAt(pos))) {\n pos++;\n }\n\n if (pos === state.pos) { return false; }\n\n if (!silent) { state.pending += state.src.slice(state.pos, pos); }\n\n state.pos = pos;\n\n return true;\n};\n\n// Alternative implementation, for memory.\n//\n// It costs 10% of performance, but allows extend terminators list, if place it\n// to `ParcerInline` property. Probably, will switch to it sometime, such\n// flexibility required.\n\n/*\nvar TERMINATOR_RE = /[\\n!#$%&*+\\-:<=>@[\\\\\\]^_`{}~]/;\n\nmodule.exports = function text(state, silent) {\n var pos = state.pos,\n idx = state.src.slice(pos).search(TERMINATOR_RE);\n\n // first char is terminator -> empty text\n if (idx === 0) { return false; }\n\n // no terminator -> text till end of string\n if (idx < 0) {\n if (!silent) { state.pending += state.src.slice(pos); }\n state.pos = state.src.length;\n return true;\n }\n\n if (!silent) { state.pending += state.src.slice(pos, pos + idx); }\n\n state.pos += idx;\n\n return true;\n};*/\n","// Token class\n\n'use strict';\n\n\n/**\n * class Token\n **/\n\n/**\n * new Token(type, tag, nesting)\n *\n * Create new token and fill passed properties.\n **/\nfunction Token(type, tag, nesting) {\n /**\n * Token#type -> String\n *\n * Type of the token (string, e.g. \"paragraph_open\")\n **/\n this.type = type;\n\n /**\n * Token#tag -> String\n *\n * html tag name, e.g. \"p\"\n **/\n this.tag = tag;\n\n /**\n * Token#attrs -> Array\n *\n * Html attributes. Format: `[ [ name1, value1 ], [ name2, value2 ] ]`\n **/\n this.attrs = null;\n\n /**\n * Token#map -> Array\n *\n * Source map info. Format: `[ line_begin, line_end ]`\n **/\n this.map = null;\n\n /**\n * Token#nesting -> Number\n *\n * Level change (number in {-1, 0, 1} set), where:\n *\n * - `1` means the tag is opening\n * - `0` means the tag is self-closing\n * - `-1` means the tag is closing\n **/\n this.nesting = nesting;\n\n /**\n * Token#level -> Number\n *\n * nesting level, the same as `state.level`\n **/\n this.level = 0;\n\n /**\n * Token#children -> Array\n *\n * An array of child nodes (inline and img tokens)\n **/\n this.children = null;\n\n /**\n * Token#content -> String\n *\n * In a case of self-closing tag (code, html, fence, etc.),\n * it has contents of this tag.\n **/\n this.content = '';\n\n /**\n * Token#markup -> String\n *\n * '*' or '_' for emphasis, fence string for fence, etc.\n **/\n this.markup = '';\n\n /**\n * Token#info -> String\n *\n * Additional information:\n *\n * - Info string for \"fence\" tokens\n * - The value \"auto\" for autolink \"link_open\" and \"link_close\" tokens\n * - The string value of the item marker for ordered-list \"list_item_open\" tokens\n **/\n this.info = '';\n\n /**\n * Token#meta -> Object\n *\n * A place for plugins to store an arbitrary data\n **/\n this.meta = null;\n\n /**\n * Token#block -> Boolean\n *\n * True for block-level tokens, false for inline tokens.\n * Used in renderer to calculate line breaks\n **/\n this.block = false;\n\n /**\n * Token#hidden -> Boolean\n *\n * If it's true, ignore this element when rendering. Used for tight lists\n * to hide paragraphs.\n **/\n this.hidden = false;\n}\n\n\n/**\n * Token.attrIndex(name) -> Number\n *\n * Search attribute index by name.\n **/\nToken.prototype.attrIndex = function attrIndex(name) {\n var attrs, i, len;\n\n if (!this.attrs) { return -1; }\n\n attrs = this.attrs;\n\n for (i = 0, len = attrs.length; i < len; i++) {\n if (attrs[i][0] === name) { return i; }\n }\n return -1;\n};\n\n\n/**\n * Token.attrPush(attrData)\n *\n * Add `[ name, value ]` attribute to list. Init attrs if necessary\n **/\nToken.prototype.attrPush = function attrPush(attrData) {\n if (this.attrs) {\n this.attrs.push(attrData);\n } else {\n this.attrs = [ attrData ];\n }\n};\n\n\n/**\n * Token.attrSet(name, value)\n *\n * Set `name` attribute to `value`. Override old value if exists.\n **/\nToken.prototype.attrSet = function attrSet(name, value) {\n var idx = this.attrIndex(name),\n attrData = [ name, value ];\n\n if (idx < 0) {\n this.attrPush(attrData);\n } else {\n this.attrs[idx] = attrData;\n }\n};\n\n\n/**\n * Token.attrGet(name)\n *\n * Get the value of attribute `name`, or null if it does not exist.\n **/\nToken.prototype.attrGet = function attrGet(name) {\n var idx = this.attrIndex(name), value = null;\n if (idx >= 0) {\n value = this.attrs[idx][1];\n }\n return value;\n};\n\n\n/**\n * Token.attrJoin(name, value)\n *\n * Join value to existing attribute via space. Or create new attribute if not\n * exists. Useful to operate with token classes.\n **/\nToken.prototype.attrJoin = function attrJoin(name, value) {\n var idx = this.attrIndex(name);\n\n if (idx < 0) {\n this.attrPush([ name, value ]);\n } else {\n this.attrs[idx][1] = this.attrs[idx][1] + ' ' + value;\n }\n};\n\n\nmodule.exports = Token;\n","\n'use strict';\n\n\n/* eslint-disable no-bitwise */\n\nvar decodeCache = {};\n\nfunction getDecodeCache(exclude) {\n var i, ch, cache = decodeCache[exclude];\n if (cache) { return cache; }\n\n cache = decodeCache[exclude] = [];\n\n for (i = 0; i < 128; i++) {\n ch = String.fromCharCode(i);\n cache.push(ch);\n }\n\n for (i = 0; i < exclude.length; i++) {\n ch = exclude.charCodeAt(i);\n cache[ch] = '%' + ('0' + ch.toString(16).toUpperCase()).slice(-2);\n }\n\n return cache;\n}\n\n\n// Decode percent-encoded string.\n//\nfunction decode(string, exclude) {\n var cache;\n\n if (typeof exclude !== 'string') {\n exclude = decode.defaultChars;\n }\n\n cache = getDecodeCache(exclude);\n\n return string.replace(/(%[a-f0-9]{2})+/gi, function(seq) {\n var i, l, b1, b2, b3, b4, chr,\n result = '';\n\n for (i = 0, l = seq.length; i < l; i += 3) {\n b1 = parseInt(seq.slice(i + 1, i + 3), 16);\n\n if (b1 < 0x80) {\n result += cache[b1];\n continue;\n }\n\n if ((b1 & 0xE0) === 0xC0 && (i + 3 < l)) {\n // 110xxxxx 10xxxxxx\n b2 = parseInt(seq.slice(i + 4, i + 6), 16);\n\n if ((b2 & 0xC0) === 0x80) {\n chr = ((b1 << 6) & 0x7C0) | (b2 & 0x3F);\n\n if (chr < 0x80) {\n result += '\\ufffd\\ufffd';\n } else {\n result += String.fromCharCode(chr);\n }\n\n i += 3;\n continue;\n }\n }\n\n if ((b1 & 0xF0) === 0xE0 && (i + 6 < l)) {\n // 1110xxxx 10xxxxxx 10xxxxxx\n b2 = parseInt(seq.slice(i + 4, i + 6), 16);\n b3 = parseInt(seq.slice(i + 7, i + 9), 16);\n\n if ((b2 & 0xC0) === 0x80 && (b3 & 0xC0) === 0x80) {\n chr = ((b1 << 12) & 0xF000) | ((b2 << 6) & 0xFC0) | (b3 & 0x3F);\n\n if (chr < 0x800 || (chr >= 0xD800 && chr <= 0xDFFF)) {\n result += '\\ufffd\\ufffd\\ufffd';\n } else {\n result += String.fromCharCode(chr);\n }\n\n i += 6;\n continue;\n }\n }\n\n if ((b1 & 0xF8) === 0xF0 && (i + 9 < l)) {\n // 111110xx 10xxxxxx 10xxxxxx 10xxxxxx\n b2 = parseInt(seq.slice(i + 4, i + 6), 16);\n b3 = parseInt(seq.slice(i + 7, i + 9), 16);\n b4 = parseInt(seq.slice(i + 10, i + 12), 16);\n\n if ((b2 & 0xC0) === 0x80 && (b3 & 0xC0) === 0x80 && (b4 & 0xC0) === 0x80) {\n chr = ((b1 << 18) & 0x1C0000) | ((b2 << 12) & 0x3F000) | ((b3 << 6) & 0xFC0) | (b4 & 0x3F);\n\n if (chr < 0x10000 || chr > 0x10FFFF) {\n result += '\\ufffd\\ufffd\\ufffd\\ufffd';\n } else {\n chr -= 0x10000;\n result += String.fromCharCode(0xD800 + (chr >> 10), 0xDC00 + (chr & 0x3FF));\n }\n\n i += 9;\n continue;\n }\n }\n\n result += '\\ufffd';\n }\n\n return result;\n });\n}\n\n\ndecode.defaultChars = ';/?:@&=+$,#';\ndecode.componentChars = '';\n\n\nmodule.exports = decode;\n","\n'use strict';\n\n\nvar encodeCache = {};\n\n\n// Create a lookup array where anything but characters in `chars` string\n// and alphanumeric chars is percent-encoded.\n//\nfunction getEncodeCache(exclude) {\n var i, ch, cache = encodeCache[exclude];\n if (cache) { return cache; }\n\n cache = encodeCache[exclude] = [];\n\n for (i = 0; i < 128; i++) {\n ch = String.fromCharCode(i);\n\n if (/^[0-9a-z]$/i.test(ch)) {\n // always allow unencoded alphanumeric characters\n cache.push(ch);\n } else {\n cache.push('%' + ('0' + i.toString(16).toUpperCase()).slice(-2));\n }\n }\n\n for (i = 0; i < exclude.length; i++) {\n cache[exclude.charCodeAt(i)] = exclude[i];\n }\n\n return cache;\n}\n\n\n// Encode unsafe characters with percent-encoding, skipping already\n// encoded sequences.\n//\n// - string - string to encode\n// - exclude - list of characters to ignore (in addition to a-zA-Z0-9)\n// - keepEscaped - don't encode '%' in a correct escape sequence (default: true)\n//\nfunction encode(string, exclude, keepEscaped) {\n var i, l, code, nextCode, cache,\n result = '';\n\n if (typeof exclude !== 'string') {\n // encode(string, keepEscaped)\n keepEscaped = exclude;\n exclude = encode.defaultChars;\n }\n\n if (typeof keepEscaped === 'undefined') {\n keepEscaped = true;\n }\n\n cache = getEncodeCache(exclude);\n\n for (i = 0, l = string.length; i < l; i++) {\n code = string.charCodeAt(i);\n\n if (keepEscaped && code === 0x25 /* % */ && i + 2 < l) {\n if (/^[0-9a-f]{2}$/i.test(string.slice(i + 1, i + 3))) {\n result += string.slice(i, i + 3);\n i += 2;\n continue;\n }\n }\n\n if (code < 128) {\n result += cache[code];\n continue;\n }\n\n if (code >= 0xD800 && code <= 0xDFFF) {\n if (code >= 0xD800 && code <= 0xDBFF && i + 1 < l) {\n nextCode = string.charCodeAt(i + 1);\n if (nextCode >= 0xDC00 && nextCode <= 0xDFFF) {\n result += encodeURIComponent(string[i] + string[i + 1]);\n i++;\n continue;\n }\n }\n result += '%EF%BF%BD';\n continue;\n }\n\n result += encodeURIComponent(string[i]);\n }\n\n return result;\n}\n\nencode.defaultChars = \";/?:@&=+$,-_.!~*'()#\";\nencode.componentChars = \"-_.!~*'()\";\n\n\nmodule.exports = encode;\n","\n'use strict';\n\n\nmodule.exports = function format(url) {\n var result = '';\n\n result += url.protocol || '';\n result += url.slashes ? '//' : '';\n result += url.auth ? url.auth + '@' : '';\n\n if (url.hostname && url.hostname.indexOf(':') !== -1) {\n // ipv6 address\n result += '[' + url.hostname + ']';\n } else {\n result += url.hostname || '';\n }\n\n result += url.port ? ':' + url.port : '';\n result += url.pathname || '';\n result += url.search || '';\n result += url.hash || '';\n\n return result;\n};\n","'use strict';\n\n\nmodule.exports.encode = require('./encode');\nmodule.exports.decode = require('./decode');\nmodule.exports.format = require('./format');\nmodule.exports.parse = require('./parse');\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\n//\n// Changes from joyent/node:\n//\n// 1. No leading slash in paths,\n// e.g. in `url.parse('http://foo?bar')` pathname is ``, not `/`\n//\n// 2. Backslashes are not replaced with slashes,\n// so `http:\\\\example.org\\` is treated like a relative path\n//\n// 3. Trailing colon is treated like a part of the path,\n// i.e. in `http://example.org:foo` pathname is `:foo`\n//\n// 4. Nothing is URL-encoded in the resulting object,\n// (in joyent/node some chars in auth and paths are encoded)\n//\n// 5. `url.parse()` does not have `parseQueryString` argument\n//\n// 6. Removed extraneous result properties: `host`, `path`, `query`, etc.,\n// which can be constructed using other parts of the url.\n//\n\n\nfunction Url() {\n this.protocol = null;\n this.slashes = null;\n this.auth = null;\n this.port = null;\n this.hostname = null;\n this.hash = null;\n this.search = null;\n this.pathname = null;\n}\n\n// Reference: RFC 3986, RFC 1808, RFC 2396\n\n// define these here so at least they only have to be\n// compiled once on the first module load.\nvar protocolPattern = /^([a-z0-9.+-]+:)/i,\n portPattern = /:[0-9]*$/,\n\n // Special case for a simple path URL\n simplePathPattern = /^(\\/\\/?(?!\\/)[^\\?\\s]*)(\\?[^\\s]*)?$/,\n\n // RFC 2396: characters reserved for delimiting URLs.\n // We actually just auto-escape these.\n delims = [ '<', '>', '\"', '`', ' ', '\\r', '\\n', '\\t' ],\n\n // RFC 2396: characters not allowed for various reasons.\n unwise = [ '{', '}', '|', '\\\\', '^', '`' ].concat(delims),\n\n // Allowed by RFCs, but cause of XSS attacks. Always escape these.\n autoEscape = [ '\\'' ].concat(unwise),\n // Characters that are never ever allowed in a hostname.\n // Note that any invalid chars are also handled, but these\n // are the ones that are *expected* to be seen, so we fast-path\n // them.\n nonHostChars = [ '%', '/', '?', ';', '#' ].concat(autoEscape),\n hostEndingChars = [ '/', '?', '#' ],\n hostnameMaxLen = 255,\n hostnamePartPattern = /^[+a-z0-9A-Z_-]{0,63}$/,\n hostnamePartStart = /^([+a-z0-9A-Z_-]{0,63})(.*)$/,\n // protocols that can allow \"unsafe\" and \"unwise\" chars.\n /* eslint-disable no-script-url */\n // protocols that never have a hostname.\n hostlessProtocol = {\n 'javascript': true,\n 'javascript:': true\n },\n // protocols that always contain a // bit.\n slashedProtocol = {\n 'http': true,\n 'https': true,\n 'ftp': true,\n 'gopher': true,\n 'file': true,\n 'http:': true,\n 'https:': true,\n 'ftp:': true,\n 'gopher:': true,\n 'file:': true\n };\n /* eslint-enable no-script-url */\n\nfunction urlParse(url, slashesDenoteHost) {\n if (url && url instanceof Url) { return url; }\n\n var u = new Url();\n u.parse(url, slashesDenoteHost);\n return u;\n}\n\nUrl.prototype.parse = function(url, slashesDenoteHost) {\n var i, l, lowerProto, hec, slashes,\n rest = url;\n\n // trim before proceeding.\n // This is to support parse stuff like \" http://foo.com \\n\"\n rest = rest.trim();\n\n if (!slashesDenoteHost && url.split('#').length === 1) {\n // Try fast path regexp\n var simplePath = simplePathPattern.exec(rest);\n if (simplePath) {\n this.pathname = simplePath[1];\n if (simplePath[2]) {\n this.search = simplePath[2];\n }\n return this;\n }\n }\n\n var proto = protocolPattern.exec(rest);\n if (proto) {\n proto = proto[0];\n lowerProto = proto.toLowerCase();\n this.protocol = proto;\n rest = rest.substr(proto.length);\n }\n\n // figure out if it's got a host\n // user@server is *always* interpreted as a hostname, and url\n // resolution will treat //foo/bar as host=foo,path=bar because that's\n // how the browser resolves relative URLs.\n if (slashesDenoteHost || proto || rest.match(/^\\/\\/[^@\\/]+@[^@\\/]+/)) {\n slashes = rest.substr(0, 2) === '//';\n if (slashes && !(proto && hostlessProtocol[proto])) {\n rest = rest.substr(2);\n this.slashes = true;\n }\n }\n\n if (!hostlessProtocol[proto] &&\n (slashes || (proto && !slashedProtocol[proto]))) {\n\n // there's a hostname.\n // the first instance of /, ?, ;, or # ends the host.\n //\n // If there is an @ in the hostname, then non-host chars *are* allowed\n // to the left of the last @ sign, unless some host-ending character\n // comes *before* the @-sign.\n // URLs are obnoxious.\n //\n // ex:\n // http://a@b@c/ => user:a@b host:c\n // http://a@b?@c => user:a host:c path:/?@c\n\n // v0.12 TODO(isaacs): This is not quite how Chrome does things.\n // Review our test case against browsers more comprehensively.\n\n // find the first instance of any hostEndingChars\n var hostEnd = -1;\n for (i = 0; i < hostEndingChars.length; i++) {\n hec = rest.indexOf(hostEndingChars[i]);\n if (hec !== -1 && (hostEnd === -1 || hec < hostEnd)) {\n hostEnd = hec;\n }\n }\n\n // at this point, either we have an explicit point where the\n // auth portion cannot go past, or the last @ char is the decider.\n var auth, atSign;\n if (hostEnd === -1) {\n // atSign can be anywhere.\n atSign = rest.lastIndexOf('@');\n } else {\n // atSign must be in auth portion.\n // http://a@b/c@d => host:b auth:a path:/c@d\n atSign = rest.lastIndexOf('@', hostEnd);\n }\n\n // Now we have a portion which is definitely the auth.\n // Pull that off.\n if (atSign !== -1) {\n auth = rest.slice(0, atSign);\n rest = rest.slice(atSign + 1);\n this.auth = auth;\n }\n\n // the host is the remaining to the left of the first non-host char\n hostEnd = -1;\n for (i = 0; i < nonHostChars.length; i++) {\n hec = rest.indexOf(nonHostChars[i]);\n if (hec !== -1 && (hostEnd === -1 || hec < hostEnd)) {\n hostEnd = hec;\n }\n }\n // if we still have not hit it, then the entire thing is a host.\n if (hostEnd === -1) {\n hostEnd = rest.length;\n }\n\n if (rest[hostEnd - 1] === ':') { hostEnd--; }\n var host = rest.slice(0, hostEnd);\n rest = rest.slice(hostEnd);\n\n // pull out port.\n this.parseHost(host);\n\n // we've indicated that there is a hostname,\n // so even if it's empty, it has to be present.\n this.hostname = this.hostname || '';\n\n // if hostname begins with [ and ends with ]\n // assume that it's an IPv6 address.\n var ipv6Hostname = this.hostname[0] === '[' &&\n this.hostname[this.hostname.length - 1] === ']';\n\n // validate a little.\n if (!ipv6Hostname) {\n var hostparts = this.hostname.split(/\\./);\n for (i = 0, l = hostparts.length; i < l; i++) {\n var part = hostparts[i];\n if (!part) { continue; }\n if (!part.match(hostnamePartPattern)) {\n var newpart = '';\n for (var j = 0, k = part.length; j < k; j++) {\n if (part.charCodeAt(j) > 127) {\n // we replace non-ASCII char with a temporary placeholder\n // we need this to make sure size of hostname is not\n // broken by replacing non-ASCII by nothing\n newpart += 'x';\n } else {\n newpart += part[j];\n }\n }\n // we test again with ASCII char only\n if (!newpart.match(hostnamePartPattern)) {\n var validParts = hostparts.slice(0, i);\n var notHost = hostparts.slice(i + 1);\n var bit = part.match(hostnamePartStart);\n if (bit) {\n validParts.push(bit[1]);\n notHost.unshift(bit[2]);\n }\n if (notHost.length) {\n rest = notHost.join('.') + rest;\n }\n this.hostname = validParts.join('.');\n break;\n }\n }\n }\n }\n\n if (this.hostname.length > hostnameMaxLen) {\n this.hostname = '';\n }\n\n // strip [ and ] from the hostname\n // the host field still retains them, though\n if (ipv6Hostname) {\n this.hostname = this.hostname.substr(1, this.hostname.length - 2);\n }\n }\n\n // chop off from the tail first.\n var hash = rest.indexOf('#');\n if (hash !== -1) {\n // got a fragment string.\n this.hash = rest.substr(hash);\n rest = rest.slice(0, hash);\n }\n var qm = rest.indexOf('?');\n if (qm !== -1) {\n this.search = rest.substr(qm);\n rest = rest.slice(0, qm);\n }\n if (rest) { this.pathname = rest; }\n if (slashedProtocol[lowerProto] &&\n this.hostname && !this.pathname) {\n this.pathname = '';\n }\n\n return this;\n};\n\nUrl.prototype.parseHost = function(host) {\n var port = portPattern.exec(host);\n if (port) {\n port = port[0];\n if (port !== ':') {\n this.port = port.substr(1);\n }\n host = host.substr(0, host.length - port.length);\n }\n if (host) { this.hostname = host; }\n};\n\nmodule.exports = urlParse;\n","'use strict';\n\nvar isObject = require('is-extendable');\nvar merge = require('mixin-deep');\nvar get = require('get-value');\nvar set = require('set-value');\n\nmodule.exports = function mergeValue(obj, prop, value) {\n if (!isObject(obj)) {\n throw new TypeError('expected an object');\n }\n\n if (typeof prop !== 'string' || value == null) {\n return merge.apply(null, arguments);\n }\n\n if (typeof value === 'string') {\n set(obj, prop, value);\n return obj;\n }\n\n var current = get(obj, prop);\n if (isObject(value) && isObject(current)) {\n value = merge({}, current, value);\n }\n\n set(obj, prop, value);\n return obj;\n};\n","/*!\n * is-extendable \n *\n * Copyright (c) 2015-2017, Jon Schlinkert.\n * Released under the MIT License.\n */\n\n'use strict';\n\nvar isPlainObject = require('is-plain-object');\n\nmodule.exports = function isExtendable(val) {\n return isPlainObject(val) || typeof val === 'function' || Array.isArray(val);\n};\n","'use strict';\n\nvar isExtendable = require('is-extendable');\nvar forIn = require('for-in');\n\nfunction mixinDeep(target, objects) {\n var len = arguments.length, i = 0;\n while (++i < len) {\n var obj = arguments[i];\n if (isObject(obj)) {\n forIn(obj, copy, target);\n }\n }\n return target;\n}\n\n/**\n * Copy properties from the source object to the\n * target object.\n *\n * @param {*} `val`\n * @param {String} `key`\n */\n\nfunction copy(val, key) {\n if (!isValidKey(key)) {\n return;\n }\n\n var obj = this[key];\n if (isObject(val) && isObject(obj)) {\n mixinDeep(obj, val);\n } else {\n this[key] = val;\n }\n}\n\n/**\n * Returns true if `val` is an object or function.\n *\n * @param {any} val\n * @return {Boolean}\n */\n\nfunction isObject(val) {\n return isExtendable(val) && !Array.isArray(val);\n}\n\n/**\n * Returns true if `key` is a valid key to use when extending objects.\n *\n * @param {String} `key`\n * @return {Boolean}\n */\n\nfunction isValidKey(key) {\n return key !== '__proto__' && key !== 'constructor' && key !== 'prototype';\n};\n\n/**\n * Expose `mixinDeep`\n */\n\nmodule.exports = mixinDeep;\n","/*!\n * is-extendable \n *\n * Copyright (c) 2015-2017, Jon Schlinkert.\n * Released under the MIT License.\n */\n\n'use strict';\n\nvar isPlainObject = require('is-plain-object');\n\nmodule.exports = function isExtendable(val) {\n return isPlainObject(val) || typeof val === 'function' || Array.isArray(val);\n};\n","//! moment.js locale configuration\n//! locale : German [de]\n//! author : lluchs : https://github.com/lluchs\n//! author: Menelion Elensúle: https://github.com/Oire\n//! author : Mikolaj Dadela : https://github.com/mik01aj\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function processRelativeTime(number, withoutSuffix, key, isFuture) {\n var format = {\n m: ['eine Minute', 'einer Minute'],\n h: ['eine Stunde', 'einer Stunde'],\n d: ['ein Tag', 'einem Tag'],\n dd: [number + ' Tage', number + ' Tagen'],\n w: ['eine Woche', 'einer Woche'],\n M: ['ein Monat', 'einem Monat'],\n MM: [number + ' Monate', number + ' Monaten'],\n y: ['ein Jahr', 'einem Jahr'],\n yy: [number + ' Jahre', number + ' Jahren'],\n };\n return withoutSuffix ? format[key][0] : format[key][1];\n }\n\n var de = moment.defineLocale('de', {\n months: 'Januar_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember'.split(\n '_'\n ),\n monthsShort:\n 'Jan._Feb._März_Apr._Mai_Juni_Juli_Aug._Sep._Okt._Nov._Dez.'.split('_'),\n monthsParseExact: true,\n weekdays:\n 'Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag'.split(\n '_'\n ),\n weekdaysShort: 'So._Mo._Di._Mi._Do._Fr._Sa.'.split('_'),\n weekdaysMin: 'So_Mo_Di_Mi_Do_Fr_Sa'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY HH:mm',\n LLLL: 'dddd, D. MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[heute um] LT [Uhr]',\n sameElse: 'L',\n nextDay: '[morgen um] LT [Uhr]',\n nextWeek: 'dddd [um] LT [Uhr]',\n lastDay: '[gestern um] LT [Uhr]',\n lastWeek: '[letzten] dddd [um] LT [Uhr]',\n },\n relativeTime: {\n future: 'in %s',\n past: 'vor %s',\n s: 'ein paar Sekunden',\n ss: '%d Sekunden',\n m: processRelativeTime,\n mm: '%d Minuten',\n h: processRelativeTime,\n hh: '%d Stunden',\n d: processRelativeTime,\n dd: processRelativeTime,\n w: processRelativeTime,\n ww: '%d Wochen',\n M: processRelativeTime,\n MM: processRelativeTime,\n y: processRelativeTime,\n yy: processRelativeTime,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return de;\n\n})));\n","//! moment.js\n//! version : 2.29.3\n//! authors : Tim Wood, Iskren Chernev, Moment.js contributors\n//! license : MIT\n//! momentjs.com\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n typeof define === 'function' && define.amd ? define(factory) :\n global.moment = factory()\n}(this, (function () { 'use strict';\n\n var hookCallback;\n\n function hooks() {\n return hookCallback.apply(null, arguments);\n }\n\n // This is done to register the method called with moment()\n // without creating circular dependencies.\n function setHookCallback(callback) {\n hookCallback = callback;\n }\n\n function isArray(input) {\n return (\n input instanceof Array ||\n Object.prototype.toString.call(input) === '[object Array]'\n );\n }\n\n function isObject(input) {\n // IE8 will treat undefined and null as object if it wasn't for\n // input != null\n return (\n input != null &&\n Object.prototype.toString.call(input) === '[object Object]'\n );\n }\n\n function hasOwnProp(a, b) {\n return Object.prototype.hasOwnProperty.call(a, b);\n }\n\n function isObjectEmpty(obj) {\n if (Object.getOwnPropertyNames) {\n return Object.getOwnPropertyNames(obj).length === 0;\n } else {\n var k;\n for (k in obj) {\n if (hasOwnProp(obj, k)) {\n return false;\n }\n }\n return true;\n }\n }\n\n function isUndefined(input) {\n return input === void 0;\n }\n\n function isNumber(input) {\n return (\n typeof input === 'number' ||\n Object.prototype.toString.call(input) === '[object Number]'\n );\n }\n\n function isDate(input) {\n return (\n input instanceof Date ||\n Object.prototype.toString.call(input) === '[object Date]'\n );\n }\n\n function map(arr, fn) {\n var res = [],\n i,\n arrLen = arr.length;\n for (i = 0; i < arrLen; ++i) {\n res.push(fn(arr[i], i));\n }\n return res;\n }\n\n function extend(a, b) {\n for (var i in b) {\n if (hasOwnProp(b, i)) {\n a[i] = b[i];\n }\n }\n\n if (hasOwnProp(b, 'toString')) {\n a.toString = b.toString;\n }\n\n if (hasOwnProp(b, 'valueOf')) {\n a.valueOf = b.valueOf;\n }\n\n return a;\n }\n\n function createUTC(input, format, locale, strict) {\n return createLocalOrUTC(input, format, locale, strict, true).utc();\n }\n\n function defaultParsingFlags() {\n // We need to deep clone this object.\n return {\n empty: false,\n unusedTokens: [],\n unusedInput: [],\n overflow: -2,\n charsLeftOver: 0,\n nullInput: false,\n invalidEra: null,\n invalidMonth: null,\n invalidFormat: false,\n userInvalidated: false,\n iso: false,\n parsedDateParts: [],\n era: null,\n meridiem: null,\n rfc2822: false,\n weekdayMismatch: false,\n };\n }\n\n function getParsingFlags(m) {\n if (m._pf == null) {\n m._pf = defaultParsingFlags();\n }\n return m._pf;\n }\n\n var some;\n if (Array.prototype.some) {\n some = Array.prototype.some;\n } else {\n some = function (fun) {\n var t = Object(this),\n len = t.length >>> 0,\n i;\n\n for (i = 0; i < len; i++) {\n if (i in t && fun.call(this, t[i], i, t)) {\n return true;\n }\n }\n\n return false;\n };\n }\n\n function isValid(m) {\n if (m._isValid == null) {\n var flags = getParsingFlags(m),\n parsedParts = some.call(flags.parsedDateParts, function (i) {\n return i != null;\n }),\n isNowValid =\n !isNaN(m._d.getTime()) &&\n flags.overflow < 0 &&\n !flags.empty &&\n !flags.invalidEra &&\n !flags.invalidMonth &&\n !flags.invalidWeekday &&\n !flags.weekdayMismatch &&\n !flags.nullInput &&\n !flags.invalidFormat &&\n !flags.userInvalidated &&\n (!flags.meridiem || (flags.meridiem && parsedParts));\n\n if (m._strict) {\n isNowValid =\n isNowValid &&\n flags.charsLeftOver === 0 &&\n flags.unusedTokens.length === 0 &&\n flags.bigHour === undefined;\n }\n\n if (Object.isFrozen == null || !Object.isFrozen(m)) {\n m._isValid = isNowValid;\n } else {\n return isNowValid;\n }\n }\n return m._isValid;\n }\n\n function createInvalid(flags) {\n var m = createUTC(NaN);\n if (flags != null) {\n extend(getParsingFlags(m), flags);\n } else {\n getParsingFlags(m).userInvalidated = true;\n }\n\n return m;\n }\n\n // Plugins that add properties should also add the key here (null value),\n // so we can properly clone ourselves.\n var momentProperties = (hooks.momentProperties = []),\n updateInProgress = false;\n\n function copyConfig(to, from) {\n var i,\n prop,\n val,\n momentPropertiesLen = momentProperties.length;\n\n if (!isUndefined(from._isAMomentObject)) {\n to._isAMomentObject = from._isAMomentObject;\n }\n if (!isUndefined(from._i)) {\n to._i = from._i;\n }\n if (!isUndefined(from._f)) {\n to._f = from._f;\n }\n if (!isUndefined(from._l)) {\n to._l = from._l;\n }\n if (!isUndefined(from._strict)) {\n to._strict = from._strict;\n }\n if (!isUndefined(from._tzm)) {\n to._tzm = from._tzm;\n }\n if (!isUndefined(from._isUTC)) {\n to._isUTC = from._isUTC;\n }\n if (!isUndefined(from._offset)) {\n to._offset = from._offset;\n }\n if (!isUndefined(from._pf)) {\n to._pf = getParsingFlags(from);\n }\n if (!isUndefined(from._locale)) {\n to._locale = from._locale;\n }\n\n if (momentPropertiesLen > 0) {\n for (i = 0; i < momentPropertiesLen; i++) {\n prop = momentProperties[i];\n val = from[prop];\n if (!isUndefined(val)) {\n to[prop] = val;\n }\n }\n }\n\n return to;\n }\n\n // Moment prototype object\n function Moment(config) {\n copyConfig(this, config);\n this._d = new Date(config._d != null ? config._d.getTime() : NaN);\n if (!this.isValid()) {\n this._d = new Date(NaN);\n }\n // Prevent infinite loop in case updateOffset creates new moment\n // objects.\n if (updateInProgress === false) {\n updateInProgress = true;\n hooks.updateOffset(this);\n updateInProgress = false;\n }\n }\n\n function isMoment(obj) {\n return (\n obj instanceof Moment || (obj != null && obj._isAMomentObject != null)\n );\n }\n\n function warn(msg) {\n if (\n hooks.suppressDeprecationWarnings === false &&\n typeof console !== 'undefined' &&\n console.warn\n ) {\n console.warn('Deprecation warning: ' + msg);\n }\n }\n\n function deprecate(msg, fn) {\n var firstTime = true;\n\n return extend(function () {\n if (hooks.deprecationHandler != null) {\n hooks.deprecationHandler(null, msg);\n }\n if (firstTime) {\n var args = [],\n arg,\n i,\n key,\n argLen = arguments.length;\n for (i = 0; i < argLen; i++) {\n arg = '';\n if (typeof arguments[i] === 'object') {\n arg += '\\n[' + i + '] ';\n for (key in arguments[0]) {\n if (hasOwnProp(arguments[0], key)) {\n arg += key + ': ' + arguments[0][key] + ', ';\n }\n }\n arg = arg.slice(0, -2); // Remove trailing comma and space\n } else {\n arg = arguments[i];\n }\n args.push(arg);\n }\n warn(\n msg +\n '\\nArguments: ' +\n Array.prototype.slice.call(args).join('') +\n '\\n' +\n new Error().stack\n );\n firstTime = false;\n }\n return fn.apply(this, arguments);\n }, fn);\n }\n\n var deprecations = {};\n\n function deprecateSimple(name, msg) {\n if (hooks.deprecationHandler != null) {\n hooks.deprecationHandler(name, msg);\n }\n if (!deprecations[name]) {\n warn(msg);\n deprecations[name] = true;\n }\n }\n\n hooks.suppressDeprecationWarnings = false;\n hooks.deprecationHandler = null;\n\n function isFunction(input) {\n return (\n (typeof Function !== 'undefined' && input instanceof Function) ||\n Object.prototype.toString.call(input) === '[object Function]'\n );\n }\n\n function set(config) {\n var prop, i;\n for (i in config) {\n if (hasOwnProp(config, i)) {\n prop = config[i];\n if (isFunction(prop)) {\n this[i] = prop;\n } else {\n this['_' + i] = prop;\n }\n }\n }\n this._config = config;\n // Lenient ordinal parsing accepts just a number in addition to\n // number + (possibly) stuff coming from _dayOfMonthOrdinalParse.\n // TODO: Remove \"ordinalParse\" fallback in next major release.\n this._dayOfMonthOrdinalParseLenient = new RegExp(\n (this._dayOfMonthOrdinalParse.source || this._ordinalParse.source) +\n '|' +\n /\\d{1,2}/.source\n );\n }\n\n function mergeConfigs(parentConfig, childConfig) {\n var res = extend({}, parentConfig),\n prop;\n for (prop in childConfig) {\n if (hasOwnProp(childConfig, prop)) {\n if (isObject(parentConfig[prop]) && isObject(childConfig[prop])) {\n res[prop] = {};\n extend(res[prop], parentConfig[prop]);\n extend(res[prop], childConfig[prop]);\n } else if (childConfig[prop] != null) {\n res[prop] = childConfig[prop];\n } else {\n delete res[prop];\n }\n }\n }\n for (prop in parentConfig) {\n if (\n hasOwnProp(parentConfig, prop) &&\n !hasOwnProp(childConfig, prop) &&\n isObject(parentConfig[prop])\n ) {\n // make sure changes to properties don't modify parent config\n res[prop] = extend({}, res[prop]);\n }\n }\n return res;\n }\n\n function Locale(config) {\n if (config != null) {\n this.set(config);\n }\n }\n\n var keys;\n\n if (Object.keys) {\n keys = Object.keys;\n } else {\n keys = function (obj) {\n var i,\n res = [];\n for (i in obj) {\n if (hasOwnProp(obj, i)) {\n res.push(i);\n }\n }\n return res;\n };\n }\n\n var defaultCalendar = {\n sameDay: '[Today at] LT',\n nextDay: '[Tomorrow at] LT',\n nextWeek: 'dddd [at] LT',\n lastDay: '[Yesterday at] LT',\n lastWeek: '[Last] dddd [at] LT',\n sameElse: 'L',\n };\n\n function calendar(key, mom, now) {\n var output = this._calendar[key] || this._calendar['sameElse'];\n return isFunction(output) ? output.call(mom, now) : output;\n }\n\n function zeroFill(number, targetLength, forceSign) {\n var absNumber = '' + Math.abs(number),\n zerosToFill = targetLength - absNumber.length,\n sign = number >= 0;\n return (\n (sign ? (forceSign ? '+' : '') : '-') +\n Math.pow(10, Math.max(0, zerosToFill)).toString().substr(1) +\n absNumber\n );\n }\n\n var formattingTokens =\n /(\\[[^\\[]*\\])|(\\\\)?([Hh]mm(ss)?|Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Qo?|N{1,5}|YYYYYY|YYYYY|YYYY|YY|y{2,4}|yo?|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|kk?|mm?|ss?|S{1,9}|x|X|zz?|ZZ?|.)/g,\n localFormattingTokens = /(\\[[^\\[]*\\])|(\\\\)?(LTS|LT|LL?L?L?|l{1,4})/g,\n formatFunctions = {},\n formatTokenFunctions = {};\n\n // token: 'M'\n // padded: ['MM', 2]\n // ordinal: 'Mo'\n // callback: function () { this.month() + 1 }\n function addFormatToken(token, padded, ordinal, callback) {\n var func = callback;\n if (typeof callback === 'string') {\n func = function () {\n return this[callback]();\n };\n }\n if (token) {\n formatTokenFunctions[token] = func;\n }\n if (padded) {\n formatTokenFunctions[padded[0]] = function () {\n return zeroFill(func.apply(this, arguments), padded[1], padded[2]);\n };\n }\n if (ordinal) {\n formatTokenFunctions[ordinal] = function () {\n return this.localeData().ordinal(\n func.apply(this, arguments),\n token\n );\n };\n }\n }\n\n function removeFormattingTokens(input) {\n if (input.match(/\\[[\\s\\S]/)) {\n return input.replace(/^\\[|\\]$/g, '');\n }\n return input.replace(/\\\\/g, '');\n }\n\n function makeFormatFunction(format) {\n var array = format.match(formattingTokens),\n i,\n length;\n\n for (i = 0, length = array.length; i < length; i++) {\n if (formatTokenFunctions[array[i]]) {\n array[i] = formatTokenFunctions[array[i]];\n } else {\n array[i] = removeFormattingTokens(array[i]);\n }\n }\n\n return function (mom) {\n var output = '',\n i;\n for (i = 0; i < length; i++) {\n output += isFunction(array[i])\n ? array[i].call(mom, format)\n : array[i];\n }\n return output;\n };\n }\n\n // format date using native date object\n function formatMoment(m, format) {\n if (!m.isValid()) {\n return m.localeData().invalidDate();\n }\n\n format = expandFormat(format, m.localeData());\n formatFunctions[format] =\n formatFunctions[format] || makeFormatFunction(format);\n\n return formatFunctions[format](m);\n }\n\n function expandFormat(format, locale) {\n var i = 5;\n\n function replaceLongDateFormatTokens(input) {\n return locale.longDateFormat(input) || input;\n }\n\n localFormattingTokens.lastIndex = 0;\n while (i >= 0 && localFormattingTokens.test(format)) {\n format = format.replace(\n localFormattingTokens,\n replaceLongDateFormatTokens\n );\n localFormattingTokens.lastIndex = 0;\n i -= 1;\n }\n\n return format;\n }\n\n var defaultLongDateFormat = {\n LTS: 'h:mm:ss A',\n LT: 'h:mm A',\n L: 'MM/DD/YYYY',\n LL: 'MMMM D, YYYY',\n LLL: 'MMMM D, YYYY h:mm A',\n LLLL: 'dddd, MMMM D, YYYY h:mm A',\n };\n\n function longDateFormat(key) {\n var format = this._longDateFormat[key],\n formatUpper = this._longDateFormat[key.toUpperCase()];\n\n if (format || !formatUpper) {\n return format;\n }\n\n this._longDateFormat[key] = formatUpper\n .match(formattingTokens)\n .map(function (tok) {\n if (\n tok === 'MMMM' ||\n tok === 'MM' ||\n tok === 'DD' ||\n tok === 'dddd'\n ) {\n return tok.slice(1);\n }\n return tok;\n })\n .join('');\n\n return this._longDateFormat[key];\n }\n\n var defaultInvalidDate = 'Invalid date';\n\n function invalidDate() {\n return this._invalidDate;\n }\n\n var defaultOrdinal = '%d',\n defaultDayOfMonthOrdinalParse = /\\d{1,2}/;\n\n function ordinal(number) {\n return this._ordinal.replace('%d', number);\n }\n\n var defaultRelativeTime = {\n future: 'in %s',\n past: '%s ago',\n s: 'a few seconds',\n ss: '%d seconds',\n m: 'a minute',\n mm: '%d minutes',\n h: 'an hour',\n hh: '%d hours',\n d: 'a day',\n dd: '%d days',\n w: 'a week',\n ww: '%d weeks',\n M: 'a month',\n MM: '%d months',\n y: 'a year',\n yy: '%d years',\n };\n\n function relativeTime(number, withoutSuffix, string, isFuture) {\n var output = this._relativeTime[string];\n return isFunction(output)\n ? output(number, withoutSuffix, string, isFuture)\n : output.replace(/%d/i, number);\n }\n\n function pastFuture(diff, output) {\n var format = this._relativeTime[diff > 0 ? 'future' : 'past'];\n return isFunction(format) ? format(output) : format.replace(/%s/i, output);\n }\n\n var aliases = {};\n\n function addUnitAlias(unit, shorthand) {\n var lowerCase = unit.toLowerCase();\n aliases[lowerCase] = aliases[lowerCase + 's'] = aliases[shorthand] = unit;\n }\n\n function normalizeUnits(units) {\n return typeof units === 'string'\n ? aliases[units] || aliases[units.toLowerCase()]\n : undefined;\n }\n\n function normalizeObjectUnits(inputObject) {\n var normalizedInput = {},\n normalizedProp,\n prop;\n\n for (prop in inputObject) {\n if (hasOwnProp(inputObject, prop)) {\n normalizedProp = normalizeUnits(prop);\n if (normalizedProp) {\n normalizedInput[normalizedProp] = inputObject[prop];\n }\n }\n }\n\n return normalizedInput;\n }\n\n var priorities = {};\n\n function addUnitPriority(unit, priority) {\n priorities[unit] = priority;\n }\n\n function getPrioritizedUnits(unitsObj) {\n var units = [],\n u;\n for (u in unitsObj) {\n if (hasOwnProp(unitsObj, u)) {\n units.push({ unit: u, priority: priorities[u] });\n }\n }\n units.sort(function (a, b) {\n return a.priority - b.priority;\n });\n return units;\n }\n\n function isLeapYear(year) {\n return (year % 4 === 0 && year % 100 !== 0) || year % 400 === 0;\n }\n\n function absFloor(number) {\n if (number < 0) {\n // -0 -> 0\n return Math.ceil(number) || 0;\n } else {\n return Math.floor(number);\n }\n }\n\n function toInt(argumentForCoercion) {\n var coercedNumber = +argumentForCoercion,\n value = 0;\n\n if (coercedNumber !== 0 && isFinite(coercedNumber)) {\n value = absFloor(coercedNumber);\n }\n\n return value;\n }\n\n function makeGetSet(unit, keepTime) {\n return function (value) {\n if (value != null) {\n set$1(this, unit, value);\n hooks.updateOffset(this, keepTime);\n return this;\n } else {\n return get(this, unit);\n }\n };\n }\n\n function get(mom, unit) {\n return mom.isValid()\n ? mom._d['get' + (mom._isUTC ? 'UTC' : '') + unit]()\n : NaN;\n }\n\n function set$1(mom, unit, value) {\n if (mom.isValid() && !isNaN(value)) {\n if (\n unit === 'FullYear' &&\n isLeapYear(mom.year()) &&\n mom.month() === 1 &&\n mom.date() === 29\n ) {\n value = toInt(value);\n mom._d['set' + (mom._isUTC ? 'UTC' : '') + unit](\n value,\n mom.month(),\n daysInMonth(value, mom.month())\n );\n } else {\n mom._d['set' + (mom._isUTC ? 'UTC' : '') + unit](value);\n }\n }\n }\n\n // MOMENTS\n\n function stringGet(units) {\n units = normalizeUnits(units);\n if (isFunction(this[units])) {\n return this[units]();\n }\n return this;\n }\n\n function stringSet(units, value) {\n if (typeof units === 'object') {\n units = normalizeObjectUnits(units);\n var prioritized = getPrioritizedUnits(units),\n i,\n prioritizedLen = prioritized.length;\n for (i = 0; i < prioritizedLen; i++) {\n this[prioritized[i].unit](units[prioritized[i].unit]);\n }\n } else {\n units = normalizeUnits(units);\n if (isFunction(this[units])) {\n return this[units](value);\n }\n }\n return this;\n }\n\n var match1 = /\\d/, // 0 - 9\n match2 = /\\d\\d/, // 00 - 99\n match3 = /\\d{3}/, // 000 - 999\n match4 = /\\d{4}/, // 0000 - 9999\n match6 = /[+-]?\\d{6}/, // -999999 - 999999\n match1to2 = /\\d\\d?/, // 0 - 99\n match3to4 = /\\d\\d\\d\\d?/, // 999 - 9999\n match5to6 = /\\d\\d\\d\\d\\d\\d?/, // 99999 - 999999\n match1to3 = /\\d{1,3}/, // 0 - 999\n match1to4 = /\\d{1,4}/, // 0 - 9999\n match1to6 = /[+-]?\\d{1,6}/, // -999999 - 999999\n matchUnsigned = /\\d+/, // 0 - inf\n matchSigned = /[+-]?\\d+/, // -inf - inf\n matchOffset = /Z|[+-]\\d\\d:?\\d\\d/gi, // +00:00 -00:00 +0000 -0000 or Z\n matchShortOffset = /Z|[+-]\\d\\d(?::?\\d\\d)?/gi, // +00 -00 +00:00 -00:00 +0000 -0000 or Z\n matchTimestamp = /[+-]?\\d+(\\.\\d{1,3})?/, // 123456789 123456789.123\n // any word (or two) characters or numbers including two/three word month in arabic.\n // includes scottish gaelic two word and hyphenated months\n matchWord =\n /[0-9]{0,256}['a-z\\u00A0-\\u05FF\\u0700-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFF07\\uFF10-\\uFFEF]{1,256}|[\\u0600-\\u06FF\\/]{1,256}(\\s*?[\\u0600-\\u06FF]{1,256}){1,2}/i,\n regexes;\n\n regexes = {};\n\n function addRegexToken(token, regex, strictRegex) {\n regexes[token] = isFunction(regex)\n ? regex\n : function (isStrict, localeData) {\n return isStrict && strictRegex ? strictRegex : regex;\n };\n }\n\n function getParseRegexForToken(token, config) {\n if (!hasOwnProp(regexes, token)) {\n return new RegExp(unescapeFormat(token));\n }\n\n return regexes[token](config._strict, config._locale);\n }\n\n // Code from http://stackoverflow.com/questions/3561493/is-there-a-regexp-escape-function-in-javascript\n function unescapeFormat(s) {\n return regexEscape(\n s\n .replace('\\\\', '')\n .replace(\n /\\\\(\\[)|\\\\(\\])|\\[([^\\]\\[]*)\\]|\\\\(.)/g,\n function (matched, p1, p2, p3, p4) {\n return p1 || p2 || p3 || p4;\n }\n )\n );\n }\n\n function regexEscape(s) {\n return s.replace(/[-\\/\\\\^$*+?.()|[\\]{}]/g, '\\\\$&');\n }\n\n var tokens = {};\n\n function addParseToken(token, callback) {\n var i,\n func = callback,\n tokenLen;\n if (typeof token === 'string') {\n token = [token];\n }\n if (isNumber(callback)) {\n func = function (input, array) {\n array[callback] = toInt(input);\n };\n }\n tokenLen = token.length;\n for (i = 0; i < tokenLen; i++) {\n tokens[token[i]] = func;\n }\n }\n\n function addWeekParseToken(token, callback) {\n addParseToken(token, function (input, array, config, token) {\n config._w = config._w || {};\n callback(input, config._w, config, token);\n });\n }\n\n function addTimeToArrayFromToken(token, input, config) {\n if (input != null && hasOwnProp(tokens, token)) {\n tokens[token](input, config._a, config, token);\n }\n }\n\n var YEAR = 0,\n MONTH = 1,\n DATE = 2,\n HOUR = 3,\n MINUTE = 4,\n SECOND = 5,\n MILLISECOND = 6,\n WEEK = 7,\n WEEKDAY = 8;\n\n function mod(n, x) {\n return ((n % x) + x) % x;\n }\n\n var indexOf;\n\n if (Array.prototype.indexOf) {\n indexOf = Array.prototype.indexOf;\n } else {\n indexOf = function (o) {\n // I know\n var i;\n for (i = 0; i < this.length; ++i) {\n if (this[i] === o) {\n return i;\n }\n }\n return -1;\n };\n }\n\n function daysInMonth(year, month) {\n if (isNaN(year) || isNaN(month)) {\n return NaN;\n }\n var modMonth = mod(month, 12);\n year += (month - modMonth) / 12;\n return modMonth === 1\n ? isLeapYear(year)\n ? 29\n : 28\n : 31 - ((modMonth % 7) % 2);\n }\n\n // FORMATTING\n\n addFormatToken('M', ['MM', 2], 'Mo', function () {\n return this.month() + 1;\n });\n\n addFormatToken('MMM', 0, 0, function (format) {\n return this.localeData().monthsShort(this, format);\n });\n\n addFormatToken('MMMM', 0, 0, function (format) {\n return this.localeData().months(this, format);\n });\n\n // ALIASES\n\n addUnitAlias('month', 'M');\n\n // PRIORITY\n\n addUnitPriority('month', 8);\n\n // PARSING\n\n addRegexToken('M', match1to2);\n addRegexToken('MM', match1to2, match2);\n addRegexToken('MMM', function (isStrict, locale) {\n return locale.monthsShortRegex(isStrict);\n });\n addRegexToken('MMMM', function (isStrict, locale) {\n return locale.monthsRegex(isStrict);\n });\n\n addParseToken(['M', 'MM'], function (input, array) {\n array[MONTH] = toInt(input) - 1;\n });\n\n addParseToken(['MMM', 'MMMM'], function (input, array, config, token) {\n var month = config._locale.monthsParse(input, token, config._strict);\n // if we didn't find a month name, mark the date as invalid.\n if (month != null) {\n array[MONTH] = month;\n } else {\n getParsingFlags(config).invalidMonth = input;\n }\n });\n\n // LOCALES\n\n var defaultLocaleMonths =\n 'January_February_March_April_May_June_July_August_September_October_November_December'.split(\n '_'\n ),\n defaultLocaleMonthsShort =\n 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n MONTHS_IN_FORMAT = /D[oD]?(\\[[^\\[\\]]*\\]|\\s)+MMMM?/,\n defaultMonthsShortRegex = matchWord,\n defaultMonthsRegex = matchWord;\n\n function localeMonths(m, format) {\n if (!m) {\n return isArray(this._months)\n ? this._months\n : this._months['standalone'];\n }\n return isArray(this._months)\n ? this._months[m.month()]\n : this._months[\n (this._months.isFormat || MONTHS_IN_FORMAT).test(format)\n ? 'format'\n : 'standalone'\n ][m.month()];\n }\n\n function localeMonthsShort(m, format) {\n if (!m) {\n return isArray(this._monthsShort)\n ? this._monthsShort\n : this._monthsShort['standalone'];\n }\n return isArray(this._monthsShort)\n ? this._monthsShort[m.month()]\n : this._monthsShort[\n MONTHS_IN_FORMAT.test(format) ? 'format' : 'standalone'\n ][m.month()];\n }\n\n function handleStrictParse(monthName, format, strict) {\n var i,\n ii,\n mom,\n llc = monthName.toLocaleLowerCase();\n if (!this._monthsParse) {\n // this is not used\n this._monthsParse = [];\n this._longMonthsParse = [];\n this._shortMonthsParse = [];\n for (i = 0; i < 12; ++i) {\n mom = createUTC([2000, i]);\n this._shortMonthsParse[i] = this.monthsShort(\n mom,\n ''\n ).toLocaleLowerCase();\n this._longMonthsParse[i] = this.months(mom, '').toLocaleLowerCase();\n }\n }\n\n if (strict) {\n if (format === 'MMM') {\n ii = indexOf.call(this._shortMonthsParse, llc);\n return ii !== -1 ? ii : null;\n } else {\n ii = indexOf.call(this._longMonthsParse, llc);\n return ii !== -1 ? ii : null;\n }\n } else {\n if (format === 'MMM') {\n ii = indexOf.call(this._shortMonthsParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._longMonthsParse, llc);\n return ii !== -1 ? ii : null;\n } else {\n ii = indexOf.call(this._longMonthsParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._shortMonthsParse, llc);\n return ii !== -1 ? ii : null;\n }\n }\n }\n\n function localeMonthsParse(monthName, format, strict) {\n var i, mom, regex;\n\n if (this._monthsParseExact) {\n return handleStrictParse.call(this, monthName, format, strict);\n }\n\n if (!this._monthsParse) {\n this._monthsParse = [];\n this._longMonthsParse = [];\n this._shortMonthsParse = [];\n }\n\n // TODO: add sorting\n // Sorting makes sure if one month (or abbr) is a prefix of another\n // see sorting in computeMonthsParse\n for (i = 0; i < 12; i++) {\n // make the regex if we don't have it already\n mom = createUTC([2000, i]);\n if (strict && !this._longMonthsParse[i]) {\n this._longMonthsParse[i] = new RegExp(\n '^' + this.months(mom, '').replace('.', '') + '$',\n 'i'\n );\n this._shortMonthsParse[i] = new RegExp(\n '^' + this.monthsShort(mom, '').replace('.', '') + '$',\n 'i'\n );\n }\n if (!strict && !this._monthsParse[i]) {\n regex =\n '^' + this.months(mom, '') + '|^' + this.monthsShort(mom, '');\n this._monthsParse[i] = new RegExp(regex.replace('.', ''), 'i');\n }\n // test the regex\n if (\n strict &&\n format === 'MMMM' &&\n this._longMonthsParse[i].test(monthName)\n ) {\n return i;\n } else if (\n strict &&\n format === 'MMM' &&\n this._shortMonthsParse[i].test(monthName)\n ) {\n return i;\n } else if (!strict && this._monthsParse[i].test(monthName)) {\n return i;\n }\n }\n }\n\n // MOMENTS\n\n function setMonth(mom, value) {\n var dayOfMonth;\n\n if (!mom.isValid()) {\n // No op\n return mom;\n }\n\n if (typeof value === 'string') {\n if (/^\\d+$/.test(value)) {\n value = toInt(value);\n } else {\n value = mom.localeData().monthsParse(value);\n // TODO: Another silent failure?\n if (!isNumber(value)) {\n return mom;\n }\n }\n }\n\n dayOfMonth = Math.min(mom.date(), daysInMonth(mom.year(), value));\n mom._d['set' + (mom._isUTC ? 'UTC' : '') + 'Month'](value, dayOfMonth);\n return mom;\n }\n\n function getSetMonth(value) {\n if (value != null) {\n setMonth(this, value);\n hooks.updateOffset(this, true);\n return this;\n } else {\n return get(this, 'Month');\n }\n }\n\n function getDaysInMonth() {\n return daysInMonth(this.year(), this.month());\n }\n\n function monthsShortRegex(isStrict) {\n if (this._monthsParseExact) {\n if (!hasOwnProp(this, '_monthsRegex')) {\n computeMonthsParse.call(this);\n }\n if (isStrict) {\n return this._monthsShortStrictRegex;\n } else {\n return this._monthsShortRegex;\n }\n } else {\n if (!hasOwnProp(this, '_monthsShortRegex')) {\n this._monthsShortRegex = defaultMonthsShortRegex;\n }\n return this._monthsShortStrictRegex && isStrict\n ? this._monthsShortStrictRegex\n : this._monthsShortRegex;\n }\n }\n\n function monthsRegex(isStrict) {\n if (this._monthsParseExact) {\n if (!hasOwnProp(this, '_monthsRegex')) {\n computeMonthsParse.call(this);\n }\n if (isStrict) {\n return this._monthsStrictRegex;\n } else {\n return this._monthsRegex;\n }\n } else {\n if (!hasOwnProp(this, '_monthsRegex')) {\n this._monthsRegex = defaultMonthsRegex;\n }\n return this._monthsStrictRegex && isStrict\n ? this._monthsStrictRegex\n : this._monthsRegex;\n }\n }\n\n function computeMonthsParse() {\n function cmpLenRev(a, b) {\n return b.length - a.length;\n }\n\n var shortPieces = [],\n longPieces = [],\n mixedPieces = [],\n i,\n mom;\n for (i = 0; i < 12; i++) {\n // make the regex if we don't have it already\n mom = createUTC([2000, i]);\n shortPieces.push(this.monthsShort(mom, ''));\n longPieces.push(this.months(mom, ''));\n mixedPieces.push(this.months(mom, ''));\n mixedPieces.push(this.monthsShort(mom, ''));\n }\n // Sorting makes sure if one month (or abbr) is a prefix of another it\n // will match the longer piece.\n shortPieces.sort(cmpLenRev);\n longPieces.sort(cmpLenRev);\n mixedPieces.sort(cmpLenRev);\n for (i = 0; i < 12; i++) {\n shortPieces[i] = regexEscape(shortPieces[i]);\n longPieces[i] = regexEscape(longPieces[i]);\n }\n for (i = 0; i < 24; i++) {\n mixedPieces[i] = regexEscape(mixedPieces[i]);\n }\n\n this._monthsRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');\n this._monthsShortRegex = this._monthsRegex;\n this._monthsStrictRegex = new RegExp(\n '^(' + longPieces.join('|') + ')',\n 'i'\n );\n this._monthsShortStrictRegex = new RegExp(\n '^(' + shortPieces.join('|') + ')',\n 'i'\n );\n }\n\n // FORMATTING\n\n addFormatToken('Y', 0, 0, function () {\n var y = this.year();\n return y <= 9999 ? zeroFill(y, 4) : '+' + y;\n });\n\n addFormatToken(0, ['YY', 2], 0, function () {\n return this.year() % 100;\n });\n\n addFormatToken(0, ['YYYY', 4], 0, 'year');\n addFormatToken(0, ['YYYYY', 5], 0, 'year');\n addFormatToken(0, ['YYYYYY', 6, true], 0, 'year');\n\n // ALIASES\n\n addUnitAlias('year', 'y');\n\n // PRIORITIES\n\n addUnitPriority('year', 1);\n\n // PARSING\n\n addRegexToken('Y', matchSigned);\n addRegexToken('YY', match1to2, match2);\n addRegexToken('YYYY', match1to4, match4);\n addRegexToken('YYYYY', match1to6, match6);\n addRegexToken('YYYYYY', match1to6, match6);\n\n addParseToken(['YYYYY', 'YYYYYY'], YEAR);\n addParseToken('YYYY', function (input, array) {\n array[YEAR] =\n input.length === 2 ? hooks.parseTwoDigitYear(input) : toInt(input);\n });\n addParseToken('YY', function (input, array) {\n array[YEAR] = hooks.parseTwoDigitYear(input);\n });\n addParseToken('Y', function (input, array) {\n array[YEAR] = parseInt(input, 10);\n });\n\n // HELPERS\n\n function daysInYear(year) {\n return isLeapYear(year) ? 366 : 365;\n }\n\n // HOOKS\n\n hooks.parseTwoDigitYear = function (input) {\n return toInt(input) + (toInt(input) > 68 ? 1900 : 2000);\n };\n\n // MOMENTS\n\n var getSetYear = makeGetSet('FullYear', true);\n\n function getIsLeapYear() {\n return isLeapYear(this.year());\n }\n\n function createDate(y, m, d, h, M, s, ms) {\n // can't just apply() to create a date:\n // https://stackoverflow.com/q/181348\n var date;\n // the date constructor remaps years 0-99 to 1900-1999\n if (y < 100 && y >= 0) {\n // preserve leap years using a full 400 year cycle, then reset\n date = new Date(y + 400, m, d, h, M, s, ms);\n if (isFinite(date.getFullYear())) {\n date.setFullYear(y);\n }\n } else {\n date = new Date(y, m, d, h, M, s, ms);\n }\n\n return date;\n }\n\n function createUTCDate(y) {\n var date, args;\n // the Date.UTC function remaps years 0-99 to 1900-1999\n if (y < 100 && y >= 0) {\n args = Array.prototype.slice.call(arguments);\n // preserve leap years using a full 400 year cycle, then reset\n args[0] = y + 400;\n date = new Date(Date.UTC.apply(null, args));\n if (isFinite(date.getUTCFullYear())) {\n date.setUTCFullYear(y);\n }\n } else {\n date = new Date(Date.UTC.apply(null, arguments));\n }\n\n return date;\n }\n\n // start-of-first-week - start-of-year\n function firstWeekOffset(year, dow, doy) {\n var // first-week day -- which january is always in the first week (4 for iso, 1 for other)\n fwd = 7 + dow - doy,\n // first-week day local weekday -- which local weekday is fwd\n fwdlw = (7 + createUTCDate(year, 0, fwd).getUTCDay() - dow) % 7;\n\n return -fwdlw + fwd - 1;\n }\n\n // https://en.wikipedia.org/wiki/ISO_week_date#Calculating_a_date_given_the_year.2C_week_number_and_weekday\n function dayOfYearFromWeeks(year, week, weekday, dow, doy) {\n var localWeekday = (7 + weekday - dow) % 7,\n weekOffset = firstWeekOffset(year, dow, doy),\n dayOfYear = 1 + 7 * (week - 1) + localWeekday + weekOffset,\n resYear,\n resDayOfYear;\n\n if (dayOfYear <= 0) {\n resYear = year - 1;\n resDayOfYear = daysInYear(resYear) + dayOfYear;\n } else if (dayOfYear > daysInYear(year)) {\n resYear = year + 1;\n resDayOfYear = dayOfYear - daysInYear(year);\n } else {\n resYear = year;\n resDayOfYear = dayOfYear;\n }\n\n return {\n year: resYear,\n dayOfYear: resDayOfYear,\n };\n }\n\n function weekOfYear(mom, dow, doy) {\n var weekOffset = firstWeekOffset(mom.year(), dow, doy),\n week = Math.floor((mom.dayOfYear() - weekOffset - 1) / 7) + 1,\n resWeek,\n resYear;\n\n if (week < 1) {\n resYear = mom.year() - 1;\n resWeek = week + weeksInYear(resYear, dow, doy);\n } else if (week > weeksInYear(mom.year(), dow, doy)) {\n resWeek = week - weeksInYear(mom.year(), dow, doy);\n resYear = mom.year() + 1;\n } else {\n resYear = mom.year();\n resWeek = week;\n }\n\n return {\n week: resWeek,\n year: resYear,\n };\n }\n\n function weeksInYear(year, dow, doy) {\n var weekOffset = firstWeekOffset(year, dow, doy),\n weekOffsetNext = firstWeekOffset(year + 1, dow, doy);\n return (daysInYear(year) - weekOffset + weekOffsetNext) / 7;\n }\n\n // FORMATTING\n\n addFormatToken('w', ['ww', 2], 'wo', 'week');\n addFormatToken('W', ['WW', 2], 'Wo', 'isoWeek');\n\n // ALIASES\n\n addUnitAlias('week', 'w');\n addUnitAlias('isoWeek', 'W');\n\n // PRIORITIES\n\n addUnitPriority('week', 5);\n addUnitPriority('isoWeek', 5);\n\n // PARSING\n\n addRegexToken('w', match1to2);\n addRegexToken('ww', match1to2, match2);\n addRegexToken('W', match1to2);\n addRegexToken('WW', match1to2, match2);\n\n addWeekParseToken(\n ['w', 'ww', 'W', 'WW'],\n function (input, week, config, token) {\n week[token.substr(0, 1)] = toInt(input);\n }\n );\n\n // HELPERS\n\n // LOCALES\n\n function localeWeek(mom) {\n return weekOfYear(mom, this._week.dow, this._week.doy).week;\n }\n\n var defaultLocaleWeek = {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n };\n\n function localeFirstDayOfWeek() {\n return this._week.dow;\n }\n\n function localeFirstDayOfYear() {\n return this._week.doy;\n }\n\n // MOMENTS\n\n function getSetWeek(input) {\n var week = this.localeData().week(this);\n return input == null ? week : this.add((input - week) * 7, 'd');\n }\n\n function getSetISOWeek(input) {\n var week = weekOfYear(this, 1, 4).week;\n return input == null ? week : this.add((input - week) * 7, 'd');\n }\n\n // FORMATTING\n\n addFormatToken('d', 0, 'do', 'day');\n\n addFormatToken('dd', 0, 0, function (format) {\n return this.localeData().weekdaysMin(this, format);\n });\n\n addFormatToken('ddd', 0, 0, function (format) {\n return this.localeData().weekdaysShort(this, format);\n });\n\n addFormatToken('dddd', 0, 0, function (format) {\n return this.localeData().weekdays(this, format);\n });\n\n addFormatToken('e', 0, 0, 'weekday');\n addFormatToken('E', 0, 0, 'isoWeekday');\n\n // ALIASES\n\n addUnitAlias('day', 'd');\n addUnitAlias('weekday', 'e');\n addUnitAlias('isoWeekday', 'E');\n\n // PRIORITY\n addUnitPriority('day', 11);\n addUnitPriority('weekday', 11);\n addUnitPriority('isoWeekday', 11);\n\n // PARSING\n\n addRegexToken('d', match1to2);\n addRegexToken('e', match1to2);\n addRegexToken('E', match1to2);\n addRegexToken('dd', function (isStrict, locale) {\n return locale.weekdaysMinRegex(isStrict);\n });\n addRegexToken('ddd', function (isStrict, locale) {\n return locale.weekdaysShortRegex(isStrict);\n });\n addRegexToken('dddd', function (isStrict, locale) {\n return locale.weekdaysRegex(isStrict);\n });\n\n addWeekParseToken(['dd', 'ddd', 'dddd'], function (input, week, config, token) {\n var weekday = config._locale.weekdaysParse(input, token, config._strict);\n // if we didn't get a weekday name, mark the date as invalid\n if (weekday != null) {\n week.d = weekday;\n } else {\n getParsingFlags(config).invalidWeekday = input;\n }\n });\n\n addWeekParseToken(['d', 'e', 'E'], function (input, week, config, token) {\n week[token] = toInt(input);\n });\n\n // HELPERS\n\n function parseWeekday(input, locale) {\n if (typeof input !== 'string') {\n return input;\n }\n\n if (!isNaN(input)) {\n return parseInt(input, 10);\n }\n\n input = locale.weekdaysParse(input);\n if (typeof input === 'number') {\n return input;\n }\n\n return null;\n }\n\n function parseIsoWeekday(input, locale) {\n if (typeof input === 'string') {\n return locale.weekdaysParse(input) % 7 || 7;\n }\n return isNaN(input) ? null : input;\n }\n\n // LOCALES\n function shiftWeekdays(ws, n) {\n return ws.slice(n, 7).concat(ws.slice(0, n));\n }\n\n var defaultLocaleWeekdays =\n 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'),\n defaultLocaleWeekdaysShort = 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n defaultLocaleWeekdaysMin = 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n defaultWeekdaysRegex = matchWord,\n defaultWeekdaysShortRegex = matchWord,\n defaultWeekdaysMinRegex = matchWord;\n\n function localeWeekdays(m, format) {\n var weekdays = isArray(this._weekdays)\n ? this._weekdays\n : this._weekdays[\n m && m !== true && this._weekdays.isFormat.test(format)\n ? 'format'\n : 'standalone'\n ];\n return m === true\n ? shiftWeekdays(weekdays, this._week.dow)\n : m\n ? weekdays[m.day()]\n : weekdays;\n }\n\n function localeWeekdaysShort(m) {\n return m === true\n ? shiftWeekdays(this._weekdaysShort, this._week.dow)\n : m\n ? this._weekdaysShort[m.day()]\n : this._weekdaysShort;\n }\n\n function localeWeekdaysMin(m) {\n return m === true\n ? shiftWeekdays(this._weekdaysMin, this._week.dow)\n : m\n ? this._weekdaysMin[m.day()]\n : this._weekdaysMin;\n }\n\n function handleStrictParse$1(weekdayName, format, strict) {\n var i,\n ii,\n mom,\n llc = weekdayName.toLocaleLowerCase();\n if (!this._weekdaysParse) {\n this._weekdaysParse = [];\n this._shortWeekdaysParse = [];\n this._minWeekdaysParse = [];\n\n for (i = 0; i < 7; ++i) {\n mom = createUTC([2000, 1]).day(i);\n this._minWeekdaysParse[i] = this.weekdaysMin(\n mom,\n ''\n ).toLocaleLowerCase();\n this._shortWeekdaysParse[i] = this.weekdaysShort(\n mom,\n ''\n ).toLocaleLowerCase();\n this._weekdaysParse[i] = this.weekdays(mom, '').toLocaleLowerCase();\n }\n }\n\n if (strict) {\n if (format === 'dddd') {\n ii = indexOf.call(this._weekdaysParse, llc);\n return ii !== -1 ? ii : null;\n } else if (format === 'ddd') {\n ii = indexOf.call(this._shortWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n } else {\n ii = indexOf.call(this._minWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n }\n } else {\n if (format === 'dddd') {\n ii = indexOf.call(this._weekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._shortWeekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._minWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n } else if (format === 'ddd') {\n ii = indexOf.call(this._shortWeekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._weekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._minWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n } else {\n ii = indexOf.call(this._minWeekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._weekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._shortWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n }\n }\n }\n\n function localeWeekdaysParse(weekdayName, format, strict) {\n var i, mom, regex;\n\n if (this._weekdaysParseExact) {\n return handleStrictParse$1.call(this, weekdayName, format, strict);\n }\n\n if (!this._weekdaysParse) {\n this._weekdaysParse = [];\n this._minWeekdaysParse = [];\n this._shortWeekdaysParse = [];\n this._fullWeekdaysParse = [];\n }\n\n for (i = 0; i < 7; i++) {\n // make the regex if we don't have it already\n\n mom = createUTC([2000, 1]).day(i);\n if (strict && !this._fullWeekdaysParse[i]) {\n this._fullWeekdaysParse[i] = new RegExp(\n '^' + this.weekdays(mom, '').replace('.', '\\\\.?') + '$',\n 'i'\n );\n this._shortWeekdaysParse[i] = new RegExp(\n '^' + this.weekdaysShort(mom, '').replace('.', '\\\\.?') + '$',\n 'i'\n );\n this._minWeekdaysParse[i] = new RegExp(\n '^' + this.weekdaysMin(mom, '').replace('.', '\\\\.?') + '$',\n 'i'\n );\n }\n if (!this._weekdaysParse[i]) {\n regex =\n '^' +\n this.weekdays(mom, '') +\n '|^' +\n this.weekdaysShort(mom, '') +\n '|^' +\n this.weekdaysMin(mom, '');\n this._weekdaysParse[i] = new RegExp(regex.replace('.', ''), 'i');\n }\n // test the regex\n if (\n strict &&\n format === 'dddd' &&\n this._fullWeekdaysParse[i].test(weekdayName)\n ) {\n return i;\n } else if (\n strict &&\n format === 'ddd' &&\n this._shortWeekdaysParse[i].test(weekdayName)\n ) {\n return i;\n } else if (\n strict &&\n format === 'dd' &&\n this._minWeekdaysParse[i].test(weekdayName)\n ) {\n return i;\n } else if (!strict && this._weekdaysParse[i].test(weekdayName)) {\n return i;\n }\n }\n }\n\n // MOMENTS\n\n function getSetDayOfWeek(input) {\n if (!this.isValid()) {\n return input != null ? this : NaN;\n }\n var day = this._isUTC ? this._d.getUTCDay() : this._d.getDay();\n if (input != null) {\n input = parseWeekday(input, this.localeData());\n return this.add(input - day, 'd');\n } else {\n return day;\n }\n }\n\n function getSetLocaleDayOfWeek(input) {\n if (!this.isValid()) {\n return input != null ? this : NaN;\n }\n var weekday = (this.day() + 7 - this.localeData()._week.dow) % 7;\n return input == null ? weekday : this.add(input - weekday, 'd');\n }\n\n function getSetISODayOfWeek(input) {\n if (!this.isValid()) {\n return input != null ? this : NaN;\n }\n\n // behaves the same as moment#day except\n // as a getter, returns 7 instead of 0 (1-7 range instead of 0-6)\n // as a setter, sunday should belong to the previous week.\n\n if (input != null) {\n var weekday = parseIsoWeekday(input, this.localeData());\n return this.day(this.day() % 7 ? weekday : weekday - 7);\n } else {\n return this.day() || 7;\n }\n }\n\n function weekdaysRegex(isStrict) {\n if (this._weekdaysParseExact) {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n computeWeekdaysParse.call(this);\n }\n if (isStrict) {\n return this._weekdaysStrictRegex;\n } else {\n return this._weekdaysRegex;\n }\n } else {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n this._weekdaysRegex = defaultWeekdaysRegex;\n }\n return this._weekdaysStrictRegex && isStrict\n ? this._weekdaysStrictRegex\n : this._weekdaysRegex;\n }\n }\n\n function weekdaysShortRegex(isStrict) {\n if (this._weekdaysParseExact) {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n computeWeekdaysParse.call(this);\n }\n if (isStrict) {\n return this._weekdaysShortStrictRegex;\n } else {\n return this._weekdaysShortRegex;\n }\n } else {\n if (!hasOwnProp(this, '_weekdaysShortRegex')) {\n this._weekdaysShortRegex = defaultWeekdaysShortRegex;\n }\n return this._weekdaysShortStrictRegex && isStrict\n ? this._weekdaysShortStrictRegex\n : this._weekdaysShortRegex;\n }\n }\n\n function weekdaysMinRegex(isStrict) {\n if (this._weekdaysParseExact) {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n computeWeekdaysParse.call(this);\n }\n if (isStrict) {\n return this._weekdaysMinStrictRegex;\n } else {\n return this._weekdaysMinRegex;\n }\n } else {\n if (!hasOwnProp(this, '_weekdaysMinRegex')) {\n this._weekdaysMinRegex = defaultWeekdaysMinRegex;\n }\n return this._weekdaysMinStrictRegex && isStrict\n ? this._weekdaysMinStrictRegex\n : this._weekdaysMinRegex;\n }\n }\n\n function computeWeekdaysParse() {\n function cmpLenRev(a, b) {\n return b.length - a.length;\n }\n\n var minPieces = [],\n shortPieces = [],\n longPieces = [],\n mixedPieces = [],\n i,\n mom,\n minp,\n shortp,\n longp;\n for (i = 0; i < 7; i++) {\n // make the regex if we don't have it already\n mom = createUTC([2000, 1]).day(i);\n minp = regexEscape(this.weekdaysMin(mom, ''));\n shortp = regexEscape(this.weekdaysShort(mom, ''));\n longp = regexEscape(this.weekdays(mom, ''));\n minPieces.push(minp);\n shortPieces.push(shortp);\n longPieces.push(longp);\n mixedPieces.push(minp);\n mixedPieces.push(shortp);\n mixedPieces.push(longp);\n }\n // Sorting makes sure if one weekday (or abbr) is a prefix of another it\n // will match the longer piece.\n minPieces.sort(cmpLenRev);\n shortPieces.sort(cmpLenRev);\n longPieces.sort(cmpLenRev);\n mixedPieces.sort(cmpLenRev);\n\n this._weekdaysRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');\n this._weekdaysShortRegex = this._weekdaysRegex;\n this._weekdaysMinRegex = this._weekdaysRegex;\n\n this._weekdaysStrictRegex = new RegExp(\n '^(' + longPieces.join('|') + ')',\n 'i'\n );\n this._weekdaysShortStrictRegex = new RegExp(\n '^(' + shortPieces.join('|') + ')',\n 'i'\n );\n this._weekdaysMinStrictRegex = new RegExp(\n '^(' + minPieces.join('|') + ')',\n 'i'\n );\n }\n\n // FORMATTING\n\n function hFormat() {\n return this.hours() % 12 || 12;\n }\n\n function kFormat() {\n return this.hours() || 24;\n }\n\n addFormatToken('H', ['HH', 2], 0, 'hour');\n addFormatToken('h', ['hh', 2], 0, hFormat);\n addFormatToken('k', ['kk', 2], 0, kFormat);\n\n addFormatToken('hmm', 0, 0, function () {\n return '' + hFormat.apply(this) + zeroFill(this.minutes(), 2);\n });\n\n addFormatToken('hmmss', 0, 0, function () {\n return (\n '' +\n hFormat.apply(this) +\n zeroFill(this.minutes(), 2) +\n zeroFill(this.seconds(), 2)\n );\n });\n\n addFormatToken('Hmm', 0, 0, function () {\n return '' + this.hours() + zeroFill(this.minutes(), 2);\n });\n\n addFormatToken('Hmmss', 0, 0, function () {\n return (\n '' +\n this.hours() +\n zeroFill(this.minutes(), 2) +\n zeroFill(this.seconds(), 2)\n );\n });\n\n function meridiem(token, lowercase) {\n addFormatToken(token, 0, 0, function () {\n return this.localeData().meridiem(\n this.hours(),\n this.minutes(),\n lowercase\n );\n });\n }\n\n meridiem('a', true);\n meridiem('A', false);\n\n // ALIASES\n\n addUnitAlias('hour', 'h');\n\n // PRIORITY\n addUnitPriority('hour', 13);\n\n // PARSING\n\n function matchMeridiem(isStrict, locale) {\n return locale._meridiemParse;\n }\n\n addRegexToken('a', matchMeridiem);\n addRegexToken('A', matchMeridiem);\n addRegexToken('H', match1to2);\n addRegexToken('h', match1to2);\n addRegexToken('k', match1to2);\n addRegexToken('HH', match1to2, match2);\n addRegexToken('hh', match1to2, match2);\n addRegexToken('kk', match1to2, match2);\n\n addRegexToken('hmm', match3to4);\n addRegexToken('hmmss', match5to6);\n addRegexToken('Hmm', match3to4);\n addRegexToken('Hmmss', match5to6);\n\n addParseToken(['H', 'HH'], HOUR);\n addParseToken(['k', 'kk'], function (input, array, config) {\n var kInput = toInt(input);\n array[HOUR] = kInput === 24 ? 0 : kInput;\n });\n addParseToken(['a', 'A'], function (input, array, config) {\n config._isPm = config._locale.isPM(input);\n config._meridiem = input;\n });\n addParseToken(['h', 'hh'], function (input, array, config) {\n array[HOUR] = toInt(input);\n getParsingFlags(config).bigHour = true;\n });\n addParseToken('hmm', function (input, array, config) {\n var pos = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos));\n array[MINUTE] = toInt(input.substr(pos));\n getParsingFlags(config).bigHour = true;\n });\n addParseToken('hmmss', function (input, array, config) {\n var pos1 = input.length - 4,\n pos2 = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos1));\n array[MINUTE] = toInt(input.substr(pos1, 2));\n array[SECOND] = toInt(input.substr(pos2));\n getParsingFlags(config).bigHour = true;\n });\n addParseToken('Hmm', function (input, array, config) {\n var pos = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos));\n array[MINUTE] = toInt(input.substr(pos));\n });\n addParseToken('Hmmss', function (input, array, config) {\n var pos1 = input.length - 4,\n pos2 = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos1));\n array[MINUTE] = toInt(input.substr(pos1, 2));\n array[SECOND] = toInt(input.substr(pos2));\n });\n\n // LOCALES\n\n function localeIsPM(input) {\n // IE8 Quirks Mode & IE7 Standards Mode do not allow accessing strings like arrays\n // Using charAt should be more compatible.\n return (input + '').toLowerCase().charAt(0) === 'p';\n }\n\n var defaultLocaleMeridiemParse = /[ap]\\.?m?\\.?/i,\n // Setting the hour should keep the time, because the user explicitly\n // specified which hour they want. So trying to maintain the same hour (in\n // a new timezone) makes sense. Adding/subtracting hours does not follow\n // this rule.\n getSetHour = makeGetSet('Hours', true);\n\n function localeMeridiem(hours, minutes, isLower) {\n if (hours > 11) {\n return isLower ? 'pm' : 'PM';\n } else {\n return isLower ? 'am' : 'AM';\n }\n }\n\n var baseConfig = {\n calendar: defaultCalendar,\n longDateFormat: defaultLongDateFormat,\n invalidDate: defaultInvalidDate,\n ordinal: defaultOrdinal,\n dayOfMonthOrdinalParse: defaultDayOfMonthOrdinalParse,\n relativeTime: defaultRelativeTime,\n\n months: defaultLocaleMonths,\n monthsShort: defaultLocaleMonthsShort,\n\n week: defaultLocaleWeek,\n\n weekdays: defaultLocaleWeekdays,\n weekdaysMin: defaultLocaleWeekdaysMin,\n weekdaysShort: defaultLocaleWeekdaysShort,\n\n meridiemParse: defaultLocaleMeridiemParse,\n };\n\n // internal storage for locale config files\n var locales = {},\n localeFamilies = {},\n globalLocale;\n\n function commonPrefix(arr1, arr2) {\n var i,\n minl = Math.min(arr1.length, arr2.length);\n for (i = 0; i < minl; i += 1) {\n if (arr1[i] !== arr2[i]) {\n return i;\n }\n }\n return minl;\n }\n\n function normalizeLocale(key) {\n return key ? key.toLowerCase().replace('_', '-') : key;\n }\n\n // pick the locale from the array\n // try ['en-au', 'en-gb'] as 'en-au', 'en-gb', 'en', as in move through the list trying each\n // substring from most specific to least, but move to the next array item if it's a more specific variant than the current root\n function chooseLocale(names) {\n var i = 0,\n j,\n next,\n locale,\n split;\n\n while (i < names.length) {\n split = normalizeLocale(names[i]).split('-');\n j = split.length;\n next = normalizeLocale(names[i + 1]);\n next = next ? next.split('-') : null;\n while (j > 0) {\n locale = loadLocale(split.slice(0, j).join('-'));\n if (locale) {\n return locale;\n }\n if (\n next &&\n next.length >= j &&\n commonPrefix(split, next) >= j - 1\n ) {\n //the next array item is better than a shallower substring of this one\n break;\n }\n j--;\n }\n i++;\n }\n return globalLocale;\n }\n\n function isLocaleNameSane(name) {\n // Prevent names that look like filesystem paths, i.e contain '/' or '\\'\n return name.match('^[^/\\\\\\\\]*$') != null;\n }\n\n function loadLocale(name) {\n var oldLocale = null,\n aliasedRequire;\n // TODO: Find a better way to register and load all the locales in Node\n if (\n locales[name] === undefined &&\n typeof module !== 'undefined' &&\n module &&\n module.exports &&\n isLocaleNameSane(name)\n ) {\n try {\n oldLocale = globalLocale._abbr;\n aliasedRequire = require;\n aliasedRequire('./locale/' + name);\n getSetGlobalLocale(oldLocale);\n } catch (e) {\n // mark as not found to avoid repeating expensive file require call causing high CPU\n // when trying to find en-US, en_US, en-us for every format call\n locales[name] = null; // null means not found\n }\n }\n return locales[name];\n }\n\n // This function will load locale and then set the global locale. If\n // no arguments are passed in, it will simply return the current global\n // locale key.\n function getSetGlobalLocale(key, values) {\n var data;\n if (key) {\n if (isUndefined(values)) {\n data = getLocale(key);\n } else {\n data = defineLocale(key, values);\n }\n\n if (data) {\n // moment.duration._locale = moment._locale = data;\n globalLocale = data;\n } else {\n if (typeof console !== 'undefined' && console.warn) {\n //warn user if arguments are passed but the locale could not be set\n console.warn(\n 'Locale ' + key + ' not found. Did you forget to load it?'\n );\n }\n }\n }\n\n return globalLocale._abbr;\n }\n\n function defineLocale(name, config) {\n if (config !== null) {\n var locale,\n parentConfig = baseConfig;\n config.abbr = name;\n if (locales[name] != null) {\n deprecateSimple(\n 'defineLocaleOverride',\n 'use moment.updateLocale(localeName, config) to change ' +\n 'an existing locale. moment.defineLocale(localeName, ' +\n 'config) should only be used for creating a new locale ' +\n 'See http://momentjs.com/guides/#/warnings/define-locale/ for more info.'\n );\n parentConfig = locales[name]._config;\n } else if (config.parentLocale != null) {\n if (locales[config.parentLocale] != null) {\n parentConfig = locales[config.parentLocale]._config;\n } else {\n locale = loadLocale(config.parentLocale);\n if (locale != null) {\n parentConfig = locale._config;\n } else {\n if (!localeFamilies[config.parentLocale]) {\n localeFamilies[config.parentLocale] = [];\n }\n localeFamilies[config.parentLocale].push({\n name: name,\n config: config,\n });\n return null;\n }\n }\n }\n locales[name] = new Locale(mergeConfigs(parentConfig, config));\n\n if (localeFamilies[name]) {\n localeFamilies[name].forEach(function (x) {\n defineLocale(x.name, x.config);\n });\n }\n\n // backwards compat for now: also set the locale\n // make sure we set the locale AFTER all child locales have been\n // created, so we won't end up with the child locale set.\n getSetGlobalLocale(name);\n\n return locales[name];\n } else {\n // useful for testing\n delete locales[name];\n return null;\n }\n }\n\n function updateLocale(name, config) {\n if (config != null) {\n var locale,\n tmpLocale,\n parentConfig = baseConfig;\n\n if (locales[name] != null && locales[name].parentLocale != null) {\n // Update existing child locale in-place to avoid memory-leaks\n locales[name].set(mergeConfigs(locales[name]._config, config));\n } else {\n // MERGE\n tmpLocale = loadLocale(name);\n if (tmpLocale != null) {\n parentConfig = tmpLocale._config;\n }\n config = mergeConfigs(parentConfig, config);\n if (tmpLocale == null) {\n // updateLocale is called for creating a new locale\n // Set abbr so it will have a name (getters return\n // undefined otherwise).\n config.abbr = name;\n }\n locale = new Locale(config);\n locale.parentLocale = locales[name];\n locales[name] = locale;\n }\n\n // backwards compat for now: also set the locale\n getSetGlobalLocale(name);\n } else {\n // pass null for config to unupdate, useful for tests\n if (locales[name] != null) {\n if (locales[name].parentLocale != null) {\n locales[name] = locales[name].parentLocale;\n if (name === getSetGlobalLocale()) {\n getSetGlobalLocale(name);\n }\n } else if (locales[name] != null) {\n delete locales[name];\n }\n }\n }\n return locales[name];\n }\n\n // returns locale data\n function getLocale(key) {\n var locale;\n\n if (key && key._locale && key._locale._abbr) {\n key = key._locale._abbr;\n }\n\n if (!key) {\n return globalLocale;\n }\n\n if (!isArray(key)) {\n //short-circuit everything else\n locale = loadLocale(key);\n if (locale) {\n return locale;\n }\n key = [key];\n }\n\n return chooseLocale(key);\n }\n\n function listLocales() {\n return keys(locales);\n }\n\n function checkOverflow(m) {\n var overflow,\n a = m._a;\n\n if (a && getParsingFlags(m).overflow === -2) {\n overflow =\n a[MONTH] < 0 || a[MONTH] > 11\n ? MONTH\n : a[DATE] < 1 || a[DATE] > daysInMonth(a[YEAR], a[MONTH])\n ? DATE\n : a[HOUR] < 0 ||\n a[HOUR] > 24 ||\n (a[HOUR] === 24 &&\n (a[MINUTE] !== 0 ||\n a[SECOND] !== 0 ||\n a[MILLISECOND] !== 0))\n ? HOUR\n : a[MINUTE] < 0 || a[MINUTE] > 59\n ? MINUTE\n : a[SECOND] < 0 || a[SECOND] > 59\n ? SECOND\n : a[MILLISECOND] < 0 || a[MILLISECOND] > 999\n ? MILLISECOND\n : -1;\n\n if (\n getParsingFlags(m)._overflowDayOfYear &&\n (overflow < YEAR || overflow > DATE)\n ) {\n overflow = DATE;\n }\n if (getParsingFlags(m)._overflowWeeks && overflow === -1) {\n overflow = WEEK;\n }\n if (getParsingFlags(m)._overflowWeekday && overflow === -1) {\n overflow = WEEKDAY;\n }\n\n getParsingFlags(m).overflow = overflow;\n }\n\n return m;\n }\n\n // iso 8601 regex\n // 0000-00-00 0000-W00 or 0000-W00-0 + T + 00 or 00:00 or 00:00:00 or 00:00:00.000 + +00:00 or +0000 or +00)\n var extendedIsoRegex =\n /^\\s*((?:[+-]\\d{6}|\\d{4})-(?:\\d\\d-\\d\\d|W\\d\\d-\\d|W\\d\\d|\\d\\d\\d|\\d\\d))(?:(T| )(\\d\\d(?::\\d\\d(?::\\d\\d(?:[.,]\\d+)?)?)?)([+-]\\d\\d(?::?\\d\\d)?|\\s*Z)?)?$/,\n basicIsoRegex =\n /^\\s*((?:[+-]\\d{6}|\\d{4})(?:\\d\\d\\d\\d|W\\d\\d\\d|W\\d\\d|\\d\\d\\d|\\d\\d|))(?:(T| )(\\d\\d(?:\\d\\d(?:\\d\\d(?:[.,]\\d+)?)?)?)([+-]\\d\\d(?::?\\d\\d)?|\\s*Z)?)?$/,\n tzRegex = /Z|[+-]\\d\\d(?::?\\d\\d)?/,\n isoDates = [\n ['YYYYYY-MM-DD', /[+-]\\d{6}-\\d\\d-\\d\\d/],\n ['YYYY-MM-DD', /\\d{4}-\\d\\d-\\d\\d/],\n ['GGGG-[W]WW-E', /\\d{4}-W\\d\\d-\\d/],\n ['GGGG-[W]WW', /\\d{4}-W\\d\\d/, false],\n ['YYYY-DDD', /\\d{4}-\\d{3}/],\n ['YYYY-MM', /\\d{4}-\\d\\d/, false],\n ['YYYYYYMMDD', /[+-]\\d{10}/],\n ['YYYYMMDD', /\\d{8}/],\n ['GGGG[W]WWE', /\\d{4}W\\d{3}/],\n ['GGGG[W]WW', /\\d{4}W\\d{2}/, false],\n ['YYYYDDD', /\\d{7}/],\n ['YYYYMM', /\\d{6}/, false],\n ['YYYY', /\\d{4}/, false],\n ],\n // iso time formats and regexes\n isoTimes = [\n ['HH:mm:ss.SSSS', /\\d\\d:\\d\\d:\\d\\d\\.\\d+/],\n ['HH:mm:ss,SSSS', /\\d\\d:\\d\\d:\\d\\d,\\d+/],\n ['HH:mm:ss', /\\d\\d:\\d\\d:\\d\\d/],\n ['HH:mm', /\\d\\d:\\d\\d/],\n ['HHmmss.SSSS', /\\d\\d\\d\\d\\d\\d\\.\\d+/],\n ['HHmmss,SSSS', /\\d\\d\\d\\d\\d\\d,\\d+/],\n ['HHmmss', /\\d\\d\\d\\d\\d\\d/],\n ['HHmm', /\\d\\d\\d\\d/],\n ['HH', /\\d\\d/],\n ],\n aspNetJsonRegex = /^\\/?Date\\((-?\\d+)/i,\n // RFC 2822 regex: For details see https://tools.ietf.org/html/rfc2822#section-3.3\n rfc2822 =\n /^(?:(Mon|Tue|Wed|Thu|Fri|Sat|Sun),?\\s)?(\\d{1,2})\\s(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\\s(\\d{2,4})\\s(\\d\\d):(\\d\\d)(?::(\\d\\d))?\\s(?:(UT|GMT|[ECMP][SD]T)|([Zz])|([+-]\\d{4}))$/,\n obsOffsets = {\n UT: 0,\n GMT: 0,\n EDT: -4 * 60,\n EST: -5 * 60,\n CDT: -5 * 60,\n CST: -6 * 60,\n MDT: -6 * 60,\n MST: -7 * 60,\n PDT: -7 * 60,\n PST: -8 * 60,\n };\n\n // date from iso format\n function configFromISO(config) {\n var i,\n l,\n string = config._i,\n match = extendedIsoRegex.exec(string) || basicIsoRegex.exec(string),\n allowTime,\n dateFormat,\n timeFormat,\n tzFormat,\n isoDatesLen = isoDates.length,\n isoTimesLen = isoTimes.length;\n\n if (match) {\n getParsingFlags(config).iso = true;\n for (i = 0, l = isoDatesLen; i < l; i++) {\n if (isoDates[i][1].exec(match[1])) {\n dateFormat = isoDates[i][0];\n allowTime = isoDates[i][2] !== false;\n break;\n }\n }\n if (dateFormat == null) {\n config._isValid = false;\n return;\n }\n if (match[3]) {\n for (i = 0, l = isoTimesLen; i < l; i++) {\n if (isoTimes[i][1].exec(match[3])) {\n // match[2] should be 'T' or space\n timeFormat = (match[2] || ' ') + isoTimes[i][0];\n break;\n }\n }\n if (timeFormat == null) {\n config._isValid = false;\n return;\n }\n }\n if (!allowTime && timeFormat != null) {\n config._isValid = false;\n return;\n }\n if (match[4]) {\n if (tzRegex.exec(match[4])) {\n tzFormat = 'Z';\n } else {\n config._isValid = false;\n return;\n }\n }\n config._f = dateFormat + (timeFormat || '') + (tzFormat || '');\n configFromStringAndFormat(config);\n } else {\n config._isValid = false;\n }\n }\n\n function extractFromRFC2822Strings(\n yearStr,\n monthStr,\n dayStr,\n hourStr,\n minuteStr,\n secondStr\n ) {\n var result = [\n untruncateYear(yearStr),\n defaultLocaleMonthsShort.indexOf(monthStr),\n parseInt(dayStr, 10),\n parseInt(hourStr, 10),\n parseInt(minuteStr, 10),\n ];\n\n if (secondStr) {\n result.push(parseInt(secondStr, 10));\n }\n\n return result;\n }\n\n function untruncateYear(yearStr) {\n var year = parseInt(yearStr, 10);\n if (year <= 49) {\n return 2000 + year;\n } else if (year <= 999) {\n return 1900 + year;\n }\n return year;\n }\n\n function preprocessRFC2822(s) {\n // Remove comments and folding whitespace and replace multiple-spaces with a single space\n return s\n .replace(/\\([^)]*\\)|[\\n\\t]/g, ' ')\n .replace(/(\\s\\s+)/g, ' ')\n .replace(/^\\s\\s*/, '')\n .replace(/\\s\\s*$/, '');\n }\n\n function checkWeekday(weekdayStr, parsedInput, config) {\n if (weekdayStr) {\n // TODO: Replace the vanilla JS Date object with an independent day-of-week check.\n var weekdayProvided = defaultLocaleWeekdaysShort.indexOf(weekdayStr),\n weekdayActual = new Date(\n parsedInput[0],\n parsedInput[1],\n parsedInput[2]\n ).getDay();\n if (weekdayProvided !== weekdayActual) {\n getParsingFlags(config).weekdayMismatch = true;\n config._isValid = false;\n return false;\n }\n }\n return true;\n }\n\n function calculateOffset(obsOffset, militaryOffset, numOffset) {\n if (obsOffset) {\n return obsOffsets[obsOffset];\n } else if (militaryOffset) {\n // the only allowed military tz is Z\n return 0;\n } else {\n var hm = parseInt(numOffset, 10),\n m = hm % 100,\n h = (hm - m) / 100;\n return h * 60 + m;\n }\n }\n\n // date and time from ref 2822 format\n function configFromRFC2822(config) {\n var match = rfc2822.exec(preprocessRFC2822(config._i)),\n parsedArray;\n if (match) {\n parsedArray = extractFromRFC2822Strings(\n match[4],\n match[3],\n match[2],\n match[5],\n match[6],\n match[7]\n );\n if (!checkWeekday(match[1], parsedArray, config)) {\n return;\n }\n\n config._a = parsedArray;\n config._tzm = calculateOffset(match[8], match[9], match[10]);\n\n config._d = createUTCDate.apply(null, config._a);\n config._d.setUTCMinutes(config._d.getUTCMinutes() - config._tzm);\n\n getParsingFlags(config).rfc2822 = true;\n } else {\n config._isValid = false;\n }\n }\n\n // date from 1) ASP.NET, 2) ISO, 3) RFC 2822 formats, or 4) optional fallback if parsing isn't strict\n function configFromString(config) {\n var matched = aspNetJsonRegex.exec(config._i);\n if (matched !== null) {\n config._d = new Date(+matched[1]);\n return;\n }\n\n configFromISO(config);\n if (config._isValid === false) {\n delete config._isValid;\n } else {\n return;\n }\n\n configFromRFC2822(config);\n if (config._isValid === false) {\n delete config._isValid;\n } else {\n return;\n }\n\n if (config._strict) {\n config._isValid = false;\n } else {\n // Final attempt, use Input Fallback\n hooks.createFromInputFallback(config);\n }\n }\n\n hooks.createFromInputFallback = deprecate(\n 'value provided is not in a recognized RFC2822 or ISO format. moment construction falls back to js Date(), ' +\n 'which is not reliable across all browsers and versions. Non RFC2822/ISO date formats are ' +\n 'discouraged. Please refer to http://momentjs.com/guides/#/warnings/js-date/ for more info.',\n function (config) {\n config._d = new Date(config._i + (config._useUTC ? ' UTC' : ''));\n }\n );\n\n // Pick the first defined of two or three arguments.\n function defaults(a, b, c) {\n if (a != null) {\n return a;\n }\n if (b != null) {\n return b;\n }\n return c;\n }\n\n function currentDateArray(config) {\n // hooks is actually the exported moment object\n var nowValue = new Date(hooks.now());\n if (config._useUTC) {\n return [\n nowValue.getUTCFullYear(),\n nowValue.getUTCMonth(),\n nowValue.getUTCDate(),\n ];\n }\n return [nowValue.getFullYear(), nowValue.getMonth(), nowValue.getDate()];\n }\n\n // convert an array to a date.\n // the array should mirror the parameters below\n // note: all values past the year are optional and will default to the lowest possible value.\n // [year, month, day , hour, minute, second, millisecond]\n function configFromArray(config) {\n var i,\n date,\n input = [],\n currentDate,\n expectedWeekday,\n yearToUse;\n\n if (config._d) {\n return;\n }\n\n currentDate = currentDateArray(config);\n\n //compute day of the year from weeks and weekdays\n if (config._w && config._a[DATE] == null && config._a[MONTH] == null) {\n dayOfYearFromWeekInfo(config);\n }\n\n //if the day of the year is set, figure out what it is\n if (config._dayOfYear != null) {\n yearToUse = defaults(config._a[YEAR], currentDate[YEAR]);\n\n if (\n config._dayOfYear > daysInYear(yearToUse) ||\n config._dayOfYear === 0\n ) {\n getParsingFlags(config)._overflowDayOfYear = true;\n }\n\n date = createUTCDate(yearToUse, 0, config._dayOfYear);\n config._a[MONTH] = date.getUTCMonth();\n config._a[DATE] = date.getUTCDate();\n }\n\n // Default to current date.\n // * if no year, month, day of month are given, default to today\n // * if day of month is given, default month and year\n // * if month is given, default only year\n // * if year is given, don't default anything\n for (i = 0; i < 3 && config._a[i] == null; ++i) {\n config._a[i] = input[i] = currentDate[i];\n }\n\n // Zero out whatever was not defaulted, including time\n for (; i < 7; i++) {\n config._a[i] = input[i] =\n config._a[i] == null ? (i === 2 ? 1 : 0) : config._a[i];\n }\n\n // Check for 24:00:00.000\n if (\n config._a[HOUR] === 24 &&\n config._a[MINUTE] === 0 &&\n config._a[SECOND] === 0 &&\n config._a[MILLISECOND] === 0\n ) {\n config._nextDay = true;\n config._a[HOUR] = 0;\n }\n\n config._d = (config._useUTC ? createUTCDate : createDate).apply(\n null,\n input\n );\n expectedWeekday = config._useUTC\n ? config._d.getUTCDay()\n : config._d.getDay();\n\n // Apply timezone offset from input. The actual utcOffset can be changed\n // with parseZone.\n if (config._tzm != null) {\n config._d.setUTCMinutes(config._d.getUTCMinutes() - config._tzm);\n }\n\n if (config._nextDay) {\n config._a[HOUR] = 24;\n }\n\n // check for mismatching day of week\n if (\n config._w &&\n typeof config._w.d !== 'undefined' &&\n config._w.d !== expectedWeekday\n ) {\n getParsingFlags(config).weekdayMismatch = true;\n }\n }\n\n function dayOfYearFromWeekInfo(config) {\n var w, weekYear, week, weekday, dow, doy, temp, weekdayOverflow, curWeek;\n\n w = config._w;\n if (w.GG != null || w.W != null || w.E != null) {\n dow = 1;\n doy = 4;\n\n // TODO: We need to take the current isoWeekYear, but that depends on\n // how we interpret now (local, utc, fixed offset). So create\n // a now version of current config (take local/utc/offset flags, and\n // create now).\n weekYear = defaults(\n w.GG,\n config._a[YEAR],\n weekOfYear(createLocal(), 1, 4).year\n );\n week = defaults(w.W, 1);\n weekday = defaults(w.E, 1);\n if (weekday < 1 || weekday > 7) {\n weekdayOverflow = true;\n }\n } else {\n dow = config._locale._week.dow;\n doy = config._locale._week.doy;\n\n curWeek = weekOfYear(createLocal(), dow, doy);\n\n weekYear = defaults(w.gg, config._a[YEAR], curWeek.year);\n\n // Default to current week.\n week = defaults(w.w, curWeek.week);\n\n if (w.d != null) {\n // weekday -- low day numbers are considered next week\n weekday = w.d;\n if (weekday < 0 || weekday > 6) {\n weekdayOverflow = true;\n }\n } else if (w.e != null) {\n // local weekday -- counting starts from beginning of week\n weekday = w.e + dow;\n if (w.e < 0 || w.e > 6) {\n weekdayOverflow = true;\n }\n } else {\n // default to beginning of week\n weekday = dow;\n }\n }\n if (week < 1 || week > weeksInYear(weekYear, dow, doy)) {\n getParsingFlags(config)._overflowWeeks = true;\n } else if (weekdayOverflow != null) {\n getParsingFlags(config)._overflowWeekday = true;\n } else {\n temp = dayOfYearFromWeeks(weekYear, week, weekday, dow, doy);\n config._a[YEAR] = temp.year;\n config._dayOfYear = temp.dayOfYear;\n }\n }\n\n // constant that refers to the ISO standard\n hooks.ISO_8601 = function () {};\n\n // constant that refers to the RFC 2822 form\n hooks.RFC_2822 = function () {};\n\n // date from string and format string\n function configFromStringAndFormat(config) {\n // TODO: Move this to another part of the creation flow to prevent circular deps\n if (config._f === hooks.ISO_8601) {\n configFromISO(config);\n return;\n }\n if (config._f === hooks.RFC_2822) {\n configFromRFC2822(config);\n return;\n }\n config._a = [];\n getParsingFlags(config).empty = true;\n\n // This array is used to make a Date, either with `new Date` or `Date.UTC`\n var string = '' + config._i,\n i,\n parsedInput,\n tokens,\n token,\n skipped,\n stringLength = string.length,\n totalParsedInputLength = 0,\n era,\n tokenLen;\n\n tokens =\n expandFormat(config._f, config._locale).match(formattingTokens) || [];\n tokenLen = tokens.length;\n for (i = 0; i < tokenLen; i++) {\n token = tokens[i];\n parsedInput = (string.match(getParseRegexForToken(token, config)) ||\n [])[0];\n if (parsedInput) {\n skipped = string.substr(0, string.indexOf(parsedInput));\n if (skipped.length > 0) {\n getParsingFlags(config).unusedInput.push(skipped);\n }\n string = string.slice(\n string.indexOf(parsedInput) + parsedInput.length\n );\n totalParsedInputLength += parsedInput.length;\n }\n // don't parse if it's not a known token\n if (formatTokenFunctions[token]) {\n if (parsedInput) {\n getParsingFlags(config).empty = false;\n } else {\n getParsingFlags(config).unusedTokens.push(token);\n }\n addTimeToArrayFromToken(token, parsedInput, config);\n } else if (config._strict && !parsedInput) {\n getParsingFlags(config).unusedTokens.push(token);\n }\n }\n\n // add remaining unparsed input length to the string\n getParsingFlags(config).charsLeftOver =\n stringLength - totalParsedInputLength;\n if (string.length > 0) {\n getParsingFlags(config).unusedInput.push(string);\n }\n\n // clear _12h flag if hour is <= 12\n if (\n config._a[HOUR] <= 12 &&\n getParsingFlags(config).bigHour === true &&\n config._a[HOUR] > 0\n ) {\n getParsingFlags(config).bigHour = undefined;\n }\n\n getParsingFlags(config).parsedDateParts = config._a.slice(0);\n getParsingFlags(config).meridiem = config._meridiem;\n // handle meridiem\n config._a[HOUR] = meridiemFixWrap(\n config._locale,\n config._a[HOUR],\n config._meridiem\n );\n\n // handle era\n era = getParsingFlags(config).era;\n if (era !== null) {\n config._a[YEAR] = config._locale.erasConvertYear(era, config._a[YEAR]);\n }\n\n configFromArray(config);\n checkOverflow(config);\n }\n\n function meridiemFixWrap(locale, hour, meridiem) {\n var isPm;\n\n if (meridiem == null) {\n // nothing to do\n return hour;\n }\n if (locale.meridiemHour != null) {\n return locale.meridiemHour(hour, meridiem);\n } else if (locale.isPM != null) {\n // Fallback\n isPm = locale.isPM(meridiem);\n if (isPm && hour < 12) {\n hour += 12;\n }\n if (!isPm && hour === 12) {\n hour = 0;\n }\n return hour;\n } else {\n // this is not supposed to happen\n return hour;\n }\n }\n\n // date from string and array of format strings\n function configFromStringAndArray(config) {\n var tempConfig,\n bestMoment,\n scoreToBeat,\n i,\n currentScore,\n validFormatFound,\n bestFormatIsValid = false,\n configfLen = config._f.length;\n\n if (configfLen === 0) {\n getParsingFlags(config).invalidFormat = true;\n config._d = new Date(NaN);\n return;\n }\n\n for (i = 0; i < configfLen; i++) {\n currentScore = 0;\n validFormatFound = false;\n tempConfig = copyConfig({}, config);\n if (config._useUTC != null) {\n tempConfig._useUTC = config._useUTC;\n }\n tempConfig._f = config._f[i];\n configFromStringAndFormat(tempConfig);\n\n if (isValid(tempConfig)) {\n validFormatFound = true;\n }\n\n // if there is any input that was not parsed add a penalty for that format\n currentScore += getParsingFlags(tempConfig).charsLeftOver;\n\n //or tokens\n currentScore += getParsingFlags(tempConfig).unusedTokens.length * 10;\n\n getParsingFlags(tempConfig).score = currentScore;\n\n if (!bestFormatIsValid) {\n if (\n scoreToBeat == null ||\n currentScore < scoreToBeat ||\n validFormatFound\n ) {\n scoreToBeat = currentScore;\n bestMoment = tempConfig;\n if (validFormatFound) {\n bestFormatIsValid = true;\n }\n }\n } else {\n if (currentScore < scoreToBeat) {\n scoreToBeat = currentScore;\n bestMoment = tempConfig;\n }\n }\n }\n\n extend(config, bestMoment || tempConfig);\n }\n\n function configFromObject(config) {\n if (config._d) {\n return;\n }\n\n var i = normalizeObjectUnits(config._i),\n dayOrDate = i.day === undefined ? i.date : i.day;\n config._a = map(\n [i.year, i.month, dayOrDate, i.hour, i.minute, i.second, i.millisecond],\n function (obj) {\n return obj && parseInt(obj, 10);\n }\n );\n\n configFromArray(config);\n }\n\n function createFromConfig(config) {\n var res = new Moment(checkOverflow(prepareConfig(config)));\n if (res._nextDay) {\n // Adding is smart enough around DST\n res.add(1, 'd');\n res._nextDay = undefined;\n }\n\n return res;\n }\n\n function prepareConfig(config) {\n var input = config._i,\n format = config._f;\n\n config._locale = config._locale || getLocale(config._l);\n\n if (input === null || (format === undefined && input === '')) {\n return createInvalid({ nullInput: true });\n }\n\n if (typeof input === 'string') {\n config._i = input = config._locale.preparse(input);\n }\n\n if (isMoment(input)) {\n return new Moment(checkOverflow(input));\n } else if (isDate(input)) {\n config._d = input;\n } else if (isArray(format)) {\n configFromStringAndArray(config);\n } else if (format) {\n configFromStringAndFormat(config);\n } else {\n configFromInput(config);\n }\n\n if (!isValid(config)) {\n config._d = null;\n }\n\n return config;\n }\n\n function configFromInput(config) {\n var input = config._i;\n if (isUndefined(input)) {\n config._d = new Date(hooks.now());\n } else if (isDate(input)) {\n config._d = new Date(input.valueOf());\n } else if (typeof input === 'string') {\n configFromString(config);\n } else if (isArray(input)) {\n config._a = map(input.slice(0), function (obj) {\n return parseInt(obj, 10);\n });\n configFromArray(config);\n } else if (isObject(input)) {\n configFromObject(config);\n } else if (isNumber(input)) {\n // from milliseconds\n config._d = new Date(input);\n } else {\n hooks.createFromInputFallback(config);\n }\n }\n\n function createLocalOrUTC(input, format, locale, strict, isUTC) {\n var c = {};\n\n if (format === true || format === false) {\n strict = format;\n format = undefined;\n }\n\n if (locale === true || locale === false) {\n strict = locale;\n locale = undefined;\n }\n\n if (\n (isObject(input) && isObjectEmpty(input)) ||\n (isArray(input) && input.length === 0)\n ) {\n input = undefined;\n }\n // object construction must be done this way.\n // https://github.com/moment/moment/issues/1423\n c._isAMomentObject = true;\n c._useUTC = c._isUTC = isUTC;\n c._l = locale;\n c._i = input;\n c._f = format;\n c._strict = strict;\n\n return createFromConfig(c);\n }\n\n function createLocal(input, format, locale, strict) {\n return createLocalOrUTC(input, format, locale, strict, false);\n }\n\n var prototypeMin = deprecate(\n 'moment().min is deprecated, use moment.max instead. http://momentjs.com/guides/#/warnings/min-max/',\n function () {\n var other = createLocal.apply(null, arguments);\n if (this.isValid() && other.isValid()) {\n return other < this ? this : other;\n } else {\n return createInvalid();\n }\n }\n ),\n prototypeMax = deprecate(\n 'moment().max is deprecated, use moment.min instead. http://momentjs.com/guides/#/warnings/min-max/',\n function () {\n var other = createLocal.apply(null, arguments);\n if (this.isValid() && other.isValid()) {\n return other > this ? this : other;\n } else {\n return createInvalid();\n }\n }\n );\n\n // Pick a moment m from moments so that m[fn](other) is true for all\n // other. This relies on the function fn to be transitive.\n //\n // moments should either be an array of moment objects or an array, whose\n // first element is an array of moment objects.\n function pickBy(fn, moments) {\n var res, i;\n if (moments.length === 1 && isArray(moments[0])) {\n moments = moments[0];\n }\n if (!moments.length) {\n return createLocal();\n }\n res = moments[0];\n for (i = 1; i < moments.length; ++i) {\n if (!moments[i].isValid() || moments[i][fn](res)) {\n res = moments[i];\n }\n }\n return res;\n }\n\n // TODO: Use [].sort instead?\n function min() {\n var args = [].slice.call(arguments, 0);\n\n return pickBy('isBefore', args);\n }\n\n function max() {\n var args = [].slice.call(arguments, 0);\n\n return pickBy('isAfter', args);\n }\n\n var now = function () {\n return Date.now ? Date.now() : +new Date();\n };\n\n var ordering = [\n 'year',\n 'quarter',\n 'month',\n 'week',\n 'day',\n 'hour',\n 'minute',\n 'second',\n 'millisecond',\n ];\n\n function isDurationValid(m) {\n var key,\n unitHasDecimal = false,\n i,\n orderLen = ordering.length;\n for (key in m) {\n if (\n hasOwnProp(m, key) &&\n !(\n indexOf.call(ordering, key) !== -1 &&\n (m[key] == null || !isNaN(m[key]))\n )\n ) {\n return false;\n }\n }\n\n for (i = 0; i < orderLen; ++i) {\n if (m[ordering[i]]) {\n if (unitHasDecimal) {\n return false; // only allow non-integers for smallest unit\n }\n if (parseFloat(m[ordering[i]]) !== toInt(m[ordering[i]])) {\n unitHasDecimal = true;\n }\n }\n }\n\n return true;\n }\n\n function isValid$1() {\n return this._isValid;\n }\n\n function createInvalid$1() {\n return createDuration(NaN);\n }\n\n function Duration(duration) {\n var normalizedInput = normalizeObjectUnits(duration),\n years = normalizedInput.year || 0,\n quarters = normalizedInput.quarter || 0,\n months = normalizedInput.month || 0,\n weeks = normalizedInput.week || normalizedInput.isoWeek || 0,\n days = normalizedInput.day || 0,\n hours = normalizedInput.hour || 0,\n minutes = normalizedInput.minute || 0,\n seconds = normalizedInput.second || 0,\n milliseconds = normalizedInput.millisecond || 0;\n\n this._isValid = isDurationValid(normalizedInput);\n\n // representation for dateAddRemove\n this._milliseconds =\n +milliseconds +\n seconds * 1e3 + // 1000\n minutes * 6e4 + // 1000 * 60\n hours * 1000 * 60 * 60; //using 1000 * 60 * 60 instead of 36e5 to avoid floating point rounding errors https://github.com/moment/moment/issues/2978\n // Because of dateAddRemove treats 24 hours as different from a\n // day when working around DST, we need to store them separately\n this._days = +days + weeks * 7;\n // It is impossible to translate months into days without knowing\n // which months you are are talking about, so we have to store\n // it separately.\n this._months = +months + quarters * 3 + years * 12;\n\n this._data = {};\n\n this._locale = getLocale();\n\n this._bubble();\n }\n\n function isDuration(obj) {\n return obj instanceof Duration;\n }\n\n function absRound(number) {\n if (number < 0) {\n return Math.round(-1 * number) * -1;\n } else {\n return Math.round(number);\n }\n }\n\n // compare two arrays, return the number of differences\n function compareArrays(array1, array2, dontConvert) {\n var len = Math.min(array1.length, array2.length),\n lengthDiff = Math.abs(array1.length - array2.length),\n diffs = 0,\n i;\n for (i = 0; i < len; i++) {\n if (\n (dontConvert && array1[i] !== array2[i]) ||\n (!dontConvert && toInt(array1[i]) !== toInt(array2[i]))\n ) {\n diffs++;\n }\n }\n return diffs + lengthDiff;\n }\n\n // FORMATTING\n\n function offset(token, separator) {\n addFormatToken(token, 0, 0, function () {\n var offset = this.utcOffset(),\n sign = '+';\n if (offset < 0) {\n offset = -offset;\n sign = '-';\n }\n return (\n sign +\n zeroFill(~~(offset / 60), 2) +\n separator +\n zeroFill(~~offset % 60, 2)\n );\n });\n }\n\n offset('Z', ':');\n offset('ZZ', '');\n\n // PARSING\n\n addRegexToken('Z', matchShortOffset);\n addRegexToken('ZZ', matchShortOffset);\n addParseToken(['Z', 'ZZ'], function (input, array, config) {\n config._useUTC = true;\n config._tzm = offsetFromString(matchShortOffset, input);\n });\n\n // HELPERS\n\n // timezone chunker\n // '+10:00' > ['10', '00']\n // '-1530' > ['-15', '30']\n var chunkOffset = /([\\+\\-]|\\d\\d)/gi;\n\n function offsetFromString(matcher, string) {\n var matches = (string || '').match(matcher),\n chunk,\n parts,\n minutes;\n\n if (matches === null) {\n return null;\n }\n\n chunk = matches[matches.length - 1] || [];\n parts = (chunk + '').match(chunkOffset) || ['-', 0, 0];\n minutes = +(parts[1] * 60) + toInt(parts[2]);\n\n return minutes === 0 ? 0 : parts[0] === '+' ? minutes : -minutes;\n }\n\n // Return a moment from input, that is local/utc/zone equivalent to model.\n function cloneWithOffset(input, model) {\n var res, diff;\n if (model._isUTC) {\n res = model.clone();\n diff =\n (isMoment(input) || isDate(input)\n ? input.valueOf()\n : createLocal(input).valueOf()) - res.valueOf();\n // Use low-level api, because this fn is low-level api.\n res._d.setTime(res._d.valueOf() + diff);\n hooks.updateOffset(res, false);\n return res;\n } else {\n return createLocal(input).local();\n }\n }\n\n function getDateOffset(m) {\n // On Firefox.24 Date#getTimezoneOffset returns a floating point.\n // https://github.com/moment/moment/pull/1871\n return -Math.round(m._d.getTimezoneOffset());\n }\n\n // HOOKS\n\n // This function will be called whenever a moment is mutated.\n // It is intended to keep the offset in sync with the timezone.\n hooks.updateOffset = function () {};\n\n // MOMENTS\n\n // keepLocalTime = true means only change the timezone, without\n // affecting the local hour. So 5:31:26 +0300 --[utcOffset(2, true)]-->\n // 5:31:26 +0200 It is possible that 5:31:26 doesn't exist with offset\n // +0200, so we adjust the time as needed, to be valid.\n //\n // Keeping the time actually adds/subtracts (one hour)\n // from the actual represented time. That is why we call updateOffset\n // a second time. In case it wants us to change the offset again\n // _changeInProgress == true case, then we have to adjust, because\n // there is no such time in the given timezone.\n function getSetOffset(input, keepLocalTime, keepMinutes) {\n var offset = this._offset || 0,\n localAdjust;\n if (!this.isValid()) {\n return input != null ? this : NaN;\n }\n if (input != null) {\n if (typeof input === 'string') {\n input = offsetFromString(matchShortOffset, input);\n if (input === null) {\n return this;\n }\n } else if (Math.abs(input) < 16 && !keepMinutes) {\n input = input * 60;\n }\n if (!this._isUTC && keepLocalTime) {\n localAdjust = getDateOffset(this);\n }\n this._offset = input;\n this._isUTC = true;\n if (localAdjust != null) {\n this.add(localAdjust, 'm');\n }\n if (offset !== input) {\n if (!keepLocalTime || this._changeInProgress) {\n addSubtract(\n this,\n createDuration(input - offset, 'm'),\n 1,\n false\n );\n } else if (!this._changeInProgress) {\n this._changeInProgress = true;\n hooks.updateOffset(this, true);\n this._changeInProgress = null;\n }\n }\n return this;\n } else {\n return this._isUTC ? offset : getDateOffset(this);\n }\n }\n\n function getSetZone(input, keepLocalTime) {\n if (input != null) {\n if (typeof input !== 'string') {\n input = -input;\n }\n\n this.utcOffset(input, keepLocalTime);\n\n return this;\n } else {\n return -this.utcOffset();\n }\n }\n\n function setOffsetToUTC(keepLocalTime) {\n return this.utcOffset(0, keepLocalTime);\n }\n\n function setOffsetToLocal(keepLocalTime) {\n if (this._isUTC) {\n this.utcOffset(0, keepLocalTime);\n this._isUTC = false;\n\n if (keepLocalTime) {\n this.subtract(getDateOffset(this), 'm');\n }\n }\n return this;\n }\n\n function setOffsetToParsedOffset() {\n if (this._tzm != null) {\n this.utcOffset(this._tzm, false, true);\n } else if (typeof this._i === 'string') {\n var tZone = offsetFromString(matchOffset, this._i);\n if (tZone != null) {\n this.utcOffset(tZone);\n } else {\n this.utcOffset(0, true);\n }\n }\n return this;\n }\n\n function hasAlignedHourOffset(input) {\n if (!this.isValid()) {\n return false;\n }\n input = input ? createLocal(input).utcOffset() : 0;\n\n return (this.utcOffset() - input) % 60 === 0;\n }\n\n function isDaylightSavingTime() {\n return (\n this.utcOffset() > this.clone().month(0).utcOffset() ||\n this.utcOffset() > this.clone().month(5).utcOffset()\n );\n }\n\n function isDaylightSavingTimeShifted() {\n if (!isUndefined(this._isDSTShifted)) {\n return this._isDSTShifted;\n }\n\n var c = {},\n other;\n\n copyConfig(c, this);\n c = prepareConfig(c);\n\n if (c._a) {\n other = c._isUTC ? createUTC(c._a) : createLocal(c._a);\n this._isDSTShifted =\n this.isValid() && compareArrays(c._a, other.toArray()) > 0;\n } else {\n this._isDSTShifted = false;\n }\n\n return this._isDSTShifted;\n }\n\n function isLocal() {\n return this.isValid() ? !this._isUTC : false;\n }\n\n function isUtcOffset() {\n return this.isValid() ? this._isUTC : false;\n }\n\n function isUtc() {\n return this.isValid() ? this._isUTC && this._offset === 0 : false;\n }\n\n // ASP.NET json date format regex\n var aspNetRegex = /^(-|\\+)?(?:(\\d*)[. ])?(\\d+):(\\d+)(?::(\\d+)(\\.\\d*)?)?$/,\n // from http://docs.closure-library.googlecode.com/git/closure_goog_date_date.js.source.html\n // somewhat more in line with 4.4.3.2 2004 spec, but allows decimal anywhere\n // and further modified to allow for strings containing both week and day\n isoRegex =\n /^(-|\\+)?P(?:([-+]?[0-9,.]*)Y)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)W)?(?:([-+]?[0-9,.]*)D)?(?:T(?:([-+]?[0-9,.]*)H)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)S)?)?$/;\n\n function createDuration(input, key) {\n var duration = input,\n // matching against regexp is expensive, do it on demand\n match = null,\n sign,\n ret,\n diffRes;\n\n if (isDuration(input)) {\n duration = {\n ms: input._milliseconds,\n d: input._days,\n M: input._months,\n };\n } else if (isNumber(input) || !isNaN(+input)) {\n duration = {};\n if (key) {\n duration[key] = +input;\n } else {\n duration.milliseconds = +input;\n }\n } else if ((match = aspNetRegex.exec(input))) {\n sign = match[1] === '-' ? -1 : 1;\n duration = {\n y: 0,\n d: toInt(match[DATE]) * sign,\n h: toInt(match[HOUR]) * sign,\n m: toInt(match[MINUTE]) * sign,\n s: toInt(match[SECOND]) * sign,\n ms: toInt(absRound(match[MILLISECOND] * 1000)) * sign, // the millisecond decimal point is included in the match\n };\n } else if ((match = isoRegex.exec(input))) {\n sign = match[1] === '-' ? -1 : 1;\n duration = {\n y: parseIso(match[2], sign),\n M: parseIso(match[3], sign),\n w: parseIso(match[4], sign),\n d: parseIso(match[5], sign),\n h: parseIso(match[6], sign),\n m: parseIso(match[7], sign),\n s: parseIso(match[8], sign),\n };\n } else if (duration == null) {\n // checks for null or undefined\n duration = {};\n } else if (\n typeof duration === 'object' &&\n ('from' in duration || 'to' in duration)\n ) {\n diffRes = momentsDifference(\n createLocal(duration.from),\n createLocal(duration.to)\n );\n\n duration = {};\n duration.ms = diffRes.milliseconds;\n duration.M = diffRes.months;\n }\n\n ret = new Duration(duration);\n\n if (isDuration(input) && hasOwnProp(input, '_locale')) {\n ret._locale = input._locale;\n }\n\n if (isDuration(input) && hasOwnProp(input, '_isValid')) {\n ret._isValid = input._isValid;\n }\n\n return ret;\n }\n\n createDuration.fn = Duration.prototype;\n createDuration.invalid = createInvalid$1;\n\n function parseIso(inp, sign) {\n // We'd normally use ~~inp for this, but unfortunately it also\n // converts floats to ints.\n // inp may be undefined, so careful calling replace on it.\n var res = inp && parseFloat(inp.replace(',', '.'));\n // apply sign while we're at it\n return (isNaN(res) ? 0 : res) * sign;\n }\n\n function positiveMomentsDifference(base, other) {\n var res = {};\n\n res.months =\n other.month() - base.month() + (other.year() - base.year()) * 12;\n if (base.clone().add(res.months, 'M').isAfter(other)) {\n --res.months;\n }\n\n res.milliseconds = +other - +base.clone().add(res.months, 'M');\n\n return res;\n }\n\n function momentsDifference(base, other) {\n var res;\n if (!(base.isValid() && other.isValid())) {\n return { milliseconds: 0, months: 0 };\n }\n\n other = cloneWithOffset(other, base);\n if (base.isBefore(other)) {\n res = positiveMomentsDifference(base, other);\n } else {\n res = positiveMomentsDifference(other, base);\n res.milliseconds = -res.milliseconds;\n res.months = -res.months;\n }\n\n return res;\n }\n\n // TODO: remove 'name' arg after deprecation is removed\n function createAdder(direction, name) {\n return function (val, period) {\n var dur, tmp;\n //invert the arguments, but complain about it\n if (period !== null && !isNaN(+period)) {\n deprecateSimple(\n name,\n 'moment().' +\n name +\n '(period, number) is deprecated. Please use moment().' +\n name +\n '(number, period). ' +\n 'See http://momentjs.com/guides/#/warnings/add-inverted-param/ for more info.'\n );\n tmp = val;\n val = period;\n period = tmp;\n }\n\n dur = createDuration(val, period);\n addSubtract(this, dur, direction);\n return this;\n };\n }\n\n function addSubtract(mom, duration, isAdding, updateOffset) {\n var milliseconds = duration._milliseconds,\n days = absRound(duration._days),\n months = absRound(duration._months);\n\n if (!mom.isValid()) {\n // No op\n return;\n }\n\n updateOffset = updateOffset == null ? true : updateOffset;\n\n if (months) {\n setMonth(mom, get(mom, 'Month') + months * isAdding);\n }\n if (days) {\n set$1(mom, 'Date', get(mom, 'Date') + days * isAdding);\n }\n if (milliseconds) {\n mom._d.setTime(mom._d.valueOf() + milliseconds * isAdding);\n }\n if (updateOffset) {\n hooks.updateOffset(mom, days || months);\n }\n }\n\n var add = createAdder(1, 'add'),\n subtract = createAdder(-1, 'subtract');\n\n function isString(input) {\n return typeof input === 'string' || input instanceof String;\n }\n\n // type MomentInput = Moment | Date | string | number | (number | string)[] | MomentInputObject | void; // null | undefined\n function isMomentInput(input) {\n return (\n isMoment(input) ||\n isDate(input) ||\n isString(input) ||\n isNumber(input) ||\n isNumberOrStringArray(input) ||\n isMomentInputObject(input) ||\n input === null ||\n input === undefined\n );\n }\n\n function isMomentInputObject(input) {\n var objectTest = isObject(input) && !isObjectEmpty(input),\n propertyTest = false,\n properties = [\n 'years',\n 'year',\n 'y',\n 'months',\n 'month',\n 'M',\n 'days',\n 'day',\n 'd',\n 'dates',\n 'date',\n 'D',\n 'hours',\n 'hour',\n 'h',\n 'minutes',\n 'minute',\n 'm',\n 'seconds',\n 'second',\n 's',\n 'milliseconds',\n 'millisecond',\n 'ms',\n ],\n i,\n property,\n propertyLen = properties.length;\n\n for (i = 0; i < propertyLen; i += 1) {\n property = properties[i];\n propertyTest = propertyTest || hasOwnProp(input, property);\n }\n\n return objectTest && propertyTest;\n }\n\n function isNumberOrStringArray(input) {\n var arrayTest = isArray(input),\n dataTypeTest = false;\n if (arrayTest) {\n dataTypeTest =\n input.filter(function (item) {\n return !isNumber(item) && isString(input);\n }).length === 0;\n }\n return arrayTest && dataTypeTest;\n }\n\n function isCalendarSpec(input) {\n var objectTest = isObject(input) && !isObjectEmpty(input),\n propertyTest = false,\n properties = [\n 'sameDay',\n 'nextDay',\n 'lastDay',\n 'nextWeek',\n 'lastWeek',\n 'sameElse',\n ],\n i,\n property;\n\n for (i = 0; i < properties.length; i += 1) {\n property = properties[i];\n propertyTest = propertyTest || hasOwnProp(input, property);\n }\n\n return objectTest && propertyTest;\n }\n\n function getCalendarFormat(myMoment, now) {\n var diff = myMoment.diff(now, 'days', true);\n return diff < -6\n ? 'sameElse'\n : diff < -1\n ? 'lastWeek'\n : diff < 0\n ? 'lastDay'\n : diff < 1\n ? 'sameDay'\n : diff < 2\n ? 'nextDay'\n : diff < 7\n ? 'nextWeek'\n : 'sameElse';\n }\n\n function calendar$1(time, formats) {\n // Support for single parameter, formats only overload to the calendar function\n if (arguments.length === 1) {\n if (!arguments[0]) {\n time = undefined;\n formats = undefined;\n } else if (isMomentInput(arguments[0])) {\n time = arguments[0];\n formats = undefined;\n } else if (isCalendarSpec(arguments[0])) {\n formats = arguments[0];\n time = undefined;\n }\n }\n // We want to compare the start of today, vs this.\n // Getting start-of-today depends on whether we're local/utc/offset or not.\n var now = time || createLocal(),\n sod = cloneWithOffset(now, this).startOf('day'),\n format = hooks.calendarFormat(this, sod) || 'sameElse',\n output =\n formats &&\n (isFunction(formats[format])\n ? formats[format].call(this, now)\n : formats[format]);\n\n return this.format(\n output || this.localeData().calendar(format, this, createLocal(now))\n );\n }\n\n function clone() {\n return new Moment(this);\n }\n\n function isAfter(input, units) {\n var localInput = isMoment(input) ? input : createLocal(input);\n if (!(this.isValid() && localInput.isValid())) {\n return false;\n }\n units = normalizeUnits(units) || 'millisecond';\n if (units === 'millisecond') {\n return this.valueOf() > localInput.valueOf();\n } else {\n return localInput.valueOf() < this.clone().startOf(units).valueOf();\n }\n }\n\n function isBefore(input, units) {\n var localInput = isMoment(input) ? input : createLocal(input);\n if (!(this.isValid() && localInput.isValid())) {\n return false;\n }\n units = normalizeUnits(units) || 'millisecond';\n if (units === 'millisecond') {\n return this.valueOf() < localInput.valueOf();\n } else {\n return this.clone().endOf(units).valueOf() < localInput.valueOf();\n }\n }\n\n function isBetween(from, to, units, inclusivity) {\n var localFrom = isMoment(from) ? from : createLocal(from),\n localTo = isMoment(to) ? to : createLocal(to);\n if (!(this.isValid() && localFrom.isValid() && localTo.isValid())) {\n return false;\n }\n inclusivity = inclusivity || '()';\n return (\n (inclusivity[0] === '('\n ? this.isAfter(localFrom, units)\n : !this.isBefore(localFrom, units)) &&\n (inclusivity[1] === ')'\n ? this.isBefore(localTo, units)\n : !this.isAfter(localTo, units))\n );\n }\n\n function isSame(input, units) {\n var localInput = isMoment(input) ? input : createLocal(input),\n inputMs;\n if (!(this.isValid() && localInput.isValid())) {\n return false;\n }\n units = normalizeUnits(units) || 'millisecond';\n if (units === 'millisecond') {\n return this.valueOf() === localInput.valueOf();\n } else {\n inputMs = localInput.valueOf();\n return (\n this.clone().startOf(units).valueOf() <= inputMs &&\n inputMs <= this.clone().endOf(units).valueOf()\n );\n }\n }\n\n function isSameOrAfter(input, units) {\n return this.isSame(input, units) || this.isAfter(input, units);\n }\n\n function isSameOrBefore(input, units) {\n return this.isSame(input, units) || this.isBefore(input, units);\n }\n\n function diff(input, units, asFloat) {\n var that, zoneDelta, output;\n\n if (!this.isValid()) {\n return NaN;\n }\n\n that = cloneWithOffset(input, this);\n\n if (!that.isValid()) {\n return NaN;\n }\n\n zoneDelta = (that.utcOffset() - this.utcOffset()) * 6e4;\n\n units = normalizeUnits(units);\n\n switch (units) {\n case 'year':\n output = monthDiff(this, that) / 12;\n break;\n case 'month':\n output = monthDiff(this, that);\n break;\n case 'quarter':\n output = monthDiff(this, that) / 3;\n break;\n case 'second':\n output = (this - that) / 1e3;\n break; // 1000\n case 'minute':\n output = (this - that) / 6e4;\n break; // 1000 * 60\n case 'hour':\n output = (this - that) / 36e5;\n break; // 1000 * 60 * 60\n case 'day':\n output = (this - that - zoneDelta) / 864e5;\n break; // 1000 * 60 * 60 * 24, negate dst\n case 'week':\n output = (this - that - zoneDelta) / 6048e5;\n break; // 1000 * 60 * 60 * 24 * 7, negate dst\n default:\n output = this - that;\n }\n\n return asFloat ? output : absFloor(output);\n }\n\n function monthDiff(a, b) {\n if (a.date() < b.date()) {\n // end-of-month calculations work correct when the start month has more\n // days than the end month.\n return -monthDiff(b, a);\n }\n // difference in months\n var wholeMonthDiff = (b.year() - a.year()) * 12 + (b.month() - a.month()),\n // b is in (anchor - 1 month, anchor + 1 month)\n anchor = a.clone().add(wholeMonthDiff, 'months'),\n anchor2,\n adjust;\n\n if (b - anchor < 0) {\n anchor2 = a.clone().add(wholeMonthDiff - 1, 'months');\n // linear across the month\n adjust = (b - anchor) / (anchor - anchor2);\n } else {\n anchor2 = a.clone().add(wholeMonthDiff + 1, 'months');\n // linear across the month\n adjust = (b - anchor) / (anchor2 - anchor);\n }\n\n //check for negative zero, return zero if negative zero\n return -(wholeMonthDiff + adjust) || 0;\n }\n\n hooks.defaultFormat = 'YYYY-MM-DDTHH:mm:ssZ';\n hooks.defaultFormatUtc = 'YYYY-MM-DDTHH:mm:ss[Z]';\n\n function toString() {\n return this.clone().locale('en').format('ddd MMM DD YYYY HH:mm:ss [GMT]ZZ');\n }\n\n function toISOString(keepOffset) {\n if (!this.isValid()) {\n return null;\n }\n var utc = keepOffset !== true,\n m = utc ? this.clone().utc() : this;\n if (m.year() < 0 || m.year() > 9999) {\n return formatMoment(\n m,\n utc\n ? 'YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]'\n : 'YYYYYY-MM-DD[T]HH:mm:ss.SSSZ'\n );\n }\n if (isFunction(Date.prototype.toISOString)) {\n // native implementation is ~50x faster, use it when we can\n if (utc) {\n return this.toDate().toISOString();\n } else {\n return new Date(this.valueOf() + this.utcOffset() * 60 * 1000)\n .toISOString()\n .replace('Z', formatMoment(m, 'Z'));\n }\n }\n return formatMoment(\n m,\n utc ? 'YYYY-MM-DD[T]HH:mm:ss.SSS[Z]' : 'YYYY-MM-DD[T]HH:mm:ss.SSSZ'\n );\n }\n\n /**\n * Return a human readable representation of a moment that can\n * also be evaluated to get a new moment which is the same\n *\n * @link https://nodejs.org/dist/latest/docs/api/util.html#util_custom_inspect_function_on_objects\n */\n function inspect() {\n if (!this.isValid()) {\n return 'moment.invalid(/* ' + this._i + ' */)';\n }\n var func = 'moment',\n zone = '',\n prefix,\n year,\n datetime,\n suffix;\n if (!this.isLocal()) {\n func = this.utcOffset() === 0 ? 'moment.utc' : 'moment.parseZone';\n zone = 'Z';\n }\n prefix = '[' + func + '(\"]';\n year = 0 <= this.year() && this.year() <= 9999 ? 'YYYY' : 'YYYYYY';\n datetime = '-MM-DD[T]HH:mm:ss.SSS';\n suffix = zone + '[\")]';\n\n return this.format(prefix + year + datetime + suffix);\n }\n\n function format(inputString) {\n if (!inputString) {\n inputString = this.isUtc()\n ? hooks.defaultFormatUtc\n : hooks.defaultFormat;\n }\n var output = formatMoment(this, inputString);\n return this.localeData().postformat(output);\n }\n\n function from(time, withoutSuffix) {\n if (\n this.isValid() &&\n ((isMoment(time) && time.isValid()) || createLocal(time).isValid())\n ) {\n return createDuration({ to: this, from: time })\n .locale(this.locale())\n .humanize(!withoutSuffix);\n } else {\n return this.localeData().invalidDate();\n }\n }\n\n function fromNow(withoutSuffix) {\n return this.from(createLocal(), withoutSuffix);\n }\n\n function to(time, withoutSuffix) {\n if (\n this.isValid() &&\n ((isMoment(time) && time.isValid()) || createLocal(time).isValid())\n ) {\n return createDuration({ from: this, to: time })\n .locale(this.locale())\n .humanize(!withoutSuffix);\n } else {\n return this.localeData().invalidDate();\n }\n }\n\n function toNow(withoutSuffix) {\n return this.to(createLocal(), withoutSuffix);\n }\n\n // If passed a locale key, it will set the locale for this\n // instance. Otherwise, it will return the locale configuration\n // variables for this instance.\n function locale(key) {\n var newLocaleData;\n\n if (key === undefined) {\n return this._locale._abbr;\n } else {\n newLocaleData = getLocale(key);\n if (newLocaleData != null) {\n this._locale = newLocaleData;\n }\n return this;\n }\n }\n\n var lang = deprecate(\n 'moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.',\n function (key) {\n if (key === undefined) {\n return this.localeData();\n } else {\n return this.locale(key);\n }\n }\n );\n\n function localeData() {\n return this._locale;\n }\n\n var MS_PER_SECOND = 1000,\n MS_PER_MINUTE = 60 * MS_PER_SECOND,\n MS_PER_HOUR = 60 * MS_PER_MINUTE,\n MS_PER_400_YEARS = (365 * 400 + 97) * 24 * MS_PER_HOUR;\n\n // actual modulo - handles negative numbers (for dates before 1970):\n function mod$1(dividend, divisor) {\n return ((dividend % divisor) + divisor) % divisor;\n }\n\n function localStartOfDate(y, m, d) {\n // the date constructor remaps years 0-99 to 1900-1999\n if (y < 100 && y >= 0) {\n // preserve leap years using a full 400 year cycle, then reset\n return new Date(y + 400, m, d) - MS_PER_400_YEARS;\n } else {\n return new Date(y, m, d).valueOf();\n }\n }\n\n function utcStartOfDate(y, m, d) {\n // Date.UTC remaps years 0-99 to 1900-1999\n if (y < 100 && y >= 0) {\n // preserve leap years using a full 400 year cycle, then reset\n return Date.UTC(y + 400, m, d) - MS_PER_400_YEARS;\n } else {\n return Date.UTC(y, m, d);\n }\n }\n\n function startOf(units) {\n var time, startOfDate;\n units = normalizeUnits(units);\n if (units === undefined || units === 'millisecond' || !this.isValid()) {\n return this;\n }\n\n startOfDate = this._isUTC ? utcStartOfDate : localStartOfDate;\n\n switch (units) {\n case 'year':\n time = startOfDate(this.year(), 0, 1);\n break;\n case 'quarter':\n time = startOfDate(\n this.year(),\n this.month() - (this.month() % 3),\n 1\n );\n break;\n case 'month':\n time = startOfDate(this.year(), this.month(), 1);\n break;\n case 'week':\n time = startOfDate(\n this.year(),\n this.month(),\n this.date() - this.weekday()\n );\n break;\n case 'isoWeek':\n time = startOfDate(\n this.year(),\n this.month(),\n this.date() - (this.isoWeekday() - 1)\n );\n break;\n case 'day':\n case 'date':\n time = startOfDate(this.year(), this.month(), this.date());\n break;\n case 'hour':\n time = this._d.valueOf();\n time -= mod$1(\n time + (this._isUTC ? 0 : this.utcOffset() * MS_PER_MINUTE),\n MS_PER_HOUR\n );\n break;\n case 'minute':\n time = this._d.valueOf();\n time -= mod$1(time, MS_PER_MINUTE);\n break;\n case 'second':\n time = this._d.valueOf();\n time -= mod$1(time, MS_PER_SECOND);\n break;\n }\n\n this._d.setTime(time);\n hooks.updateOffset(this, true);\n return this;\n }\n\n function endOf(units) {\n var time, startOfDate;\n units = normalizeUnits(units);\n if (units === undefined || units === 'millisecond' || !this.isValid()) {\n return this;\n }\n\n startOfDate = this._isUTC ? utcStartOfDate : localStartOfDate;\n\n switch (units) {\n case 'year':\n time = startOfDate(this.year() + 1, 0, 1) - 1;\n break;\n case 'quarter':\n time =\n startOfDate(\n this.year(),\n this.month() - (this.month() % 3) + 3,\n 1\n ) - 1;\n break;\n case 'month':\n time = startOfDate(this.year(), this.month() + 1, 1) - 1;\n break;\n case 'week':\n time =\n startOfDate(\n this.year(),\n this.month(),\n this.date() - this.weekday() + 7\n ) - 1;\n break;\n case 'isoWeek':\n time =\n startOfDate(\n this.year(),\n this.month(),\n this.date() - (this.isoWeekday() - 1) + 7\n ) - 1;\n break;\n case 'day':\n case 'date':\n time = startOfDate(this.year(), this.month(), this.date() + 1) - 1;\n break;\n case 'hour':\n time = this._d.valueOf();\n time +=\n MS_PER_HOUR -\n mod$1(\n time + (this._isUTC ? 0 : this.utcOffset() * MS_PER_MINUTE),\n MS_PER_HOUR\n ) -\n 1;\n break;\n case 'minute':\n time = this._d.valueOf();\n time += MS_PER_MINUTE - mod$1(time, MS_PER_MINUTE) - 1;\n break;\n case 'second':\n time = this._d.valueOf();\n time += MS_PER_SECOND - mod$1(time, MS_PER_SECOND) - 1;\n break;\n }\n\n this._d.setTime(time);\n hooks.updateOffset(this, true);\n return this;\n }\n\n function valueOf() {\n return this._d.valueOf() - (this._offset || 0) * 60000;\n }\n\n function unix() {\n return Math.floor(this.valueOf() / 1000);\n }\n\n function toDate() {\n return new Date(this.valueOf());\n }\n\n function toArray() {\n var m = this;\n return [\n m.year(),\n m.month(),\n m.date(),\n m.hour(),\n m.minute(),\n m.second(),\n m.millisecond(),\n ];\n }\n\n function toObject() {\n var m = this;\n return {\n years: m.year(),\n months: m.month(),\n date: m.date(),\n hours: m.hours(),\n minutes: m.minutes(),\n seconds: m.seconds(),\n milliseconds: m.milliseconds(),\n };\n }\n\n function toJSON() {\n // new Date(NaN).toJSON() === null\n return this.isValid() ? this.toISOString() : null;\n }\n\n function isValid$2() {\n return isValid(this);\n }\n\n function parsingFlags() {\n return extend({}, getParsingFlags(this));\n }\n\n function invalidAt() {\n return getParsingFlags(this).overflow;\n }\n\n function creationData() {\n return {\n input: this._i,\n format: this._f,\n locale: this._locale,\n isUTC: this._isUTC,\n strict: this._strict,\n };\n }\n\n addFormatToken('N', 0, 0, 'eraAbbr');\n addFormatToken('NN', 0, 0, 'eraAbbr');\n addFormatToken('NNN', 0, 0, 'eraAbbr');\n addFormatToken('NNNN', 0, 0, 'eraName');\n addFormatToken('NNNNN', 0, 0, 'eraNarrow');\n\n addFormatToken('y', ['y', 1], 'yo', 'eraYear');\n addFormatToken('y', ['yy', 2], 0, 'eraYear');\n addFormatToken('y', ['yyy', 3], 0, 'eraYear');\n addFormatToken('y', ['yyyy', 4], 0, 'eraYear');\n\n addRegexToken('N', matchEraAbbr);\n addRegexToken('NN', matchEraAbbr);\n addRegexToken('NNN', matchEraAbbr);\n addRegexToken('NNNN', matchEraName);\n addRegexToken('NNNNN', matchEraNarrow);\n\n addParseToken(\n ['N', 'NN', 'NNN', 'NNNN', 'NNNNN'],\n function (input, array, config, token) {\n var era = config._locale.erasParse(input, token, config._strict);\n if (era) {\n getParsingFlags(config).era = era;\n } else {\n getParsingFlags(config).invalidEra = input;\n }\n }\n );\n\n addRegexToken('y', matchUnsigned);\n addRegexToken('yy', matchUnsigned);\n addRegexToken('yyy', matchUnsigned);\n addRegexToken('yyyy', matchUnsigned);\n addRegexToken('yo', matchEraYearOrdinal);\n\n addParseToken(['y', 'yy', 'yyy', 'yyyy'], YEAR);\n addParseToken(['yo'], function (input, array, config, token) {\n var match;\n if (config._locale._eraYearOrdinalRegex) {\n match = input.match(config._locale._eraYearOrdinalRegex);\n }\n\n if (config._locale.eraYearOrdinalParse) {\n array[YEAR] = config._locale.eraYearOrdinalParse(input, match);\n } else {\n array[YEAR] = parseInt(input, 10);\n }\n });\n\n function localeEras(m, format) {\n var i,\n l,\n date,\n eras = this._eras || getLocale('en')._eras;\n for (i = 0, l = eras.length; i < l; ++i) {\n switch (typeof eras[i].since) {\n case 'string':\n // truncate time\n date = hooks(eras[i].since).startOf('day');\n eras[i].since = date.valueOf();\n break;\n }\n\n switch (typeof eras[i].until) {\n case 'undefined':\n eras[i].until = +Infinity;\n break;\n case 'string':\n // truncate time\n date = hooks(eras[i].until).startOf('day').valueOf();\n eras[i].until = date.valueOf();\n break;\n }\n }\n return eras;\n }\n\n function localeErasParse(eraName, format, strict) {\n var i,\n l,\n eras = this.eras(),\n name,\n abbr,\n narrow;\n eraName = eraName.toUpperCase();\n\n for (i = 0, l = eras.length; i < l; ++i) {\n name = eras[i].name.toUpperCase();\n abbr = eras[i].abbr.toUpperCase();\n narrow = eras[i].narrow.toUpperCase();\n\n if (strict) {\n switch (format) {\n case 'N':\n case 'NN':\n case 'NNN':\n if (abbr === eraName) {\n return eras[i];\n }\n break;\n\n case 'NNNN':\n if (name === eraName) {\n return eras[i];\n }\n break;\n\n case 'NNNNN':\n if (narrow === eraName) {\n return eras[i];\n }\n break;\n }\n } else if ([name, abbr, narrow].indexOf(eraName) >= 0) {\n return eras[i];\n }\n }\n }\n\n function localeErasConvertYear(era, year) {\n var dir = era.since <= era.until ? +1 : -1;\n if (year === undefined) {\n return hooks(era.since).year();\n } else {\n return hooks(era.since).year() + (year - era.offset) * dir;\n }\n }\n\n function getEraName() {\n var i,\n l,\n val,\n eras = this.localeData().eras();\n for (i = 0, l = eras.length; i < l; ++i) {\n // truncate time\n val = this.clone().startOf('day').valueOf();\n\n if (eras[i].since <= val && val <= eras[i].until) {\n return eras[i].name;\n }\n if (eras[i].until <= val && val <= eras[i].since) {\n return eras[i].name;\n }\n }\n\n return '';\n }\n\n function getEraNarrow() {\n var i,\n l,\n val,\n eras = this.localeData().eras();\n for (i = 0, l = eras.length; i < l; ++i) {\n // truncate time\n val = this.clone().startOf('day').valueOf();\n\n if (eras[i].since <= val && val <= eras[i].until) {\n return eras[i].narrow;\n }\n if (eras[i].until <= val && val <= eras[i].since) {\n return eras[i].narrow;\n }\n }\n\n return '';\n }\n\n function getEraAbbr() {\n var i,\n l,\n val,\n eras = this.localeData().eras();\n for (i = 0, l = eras.length; i < l; ++i) {\n // truncate time\n val = this.clone().startOf('day').valueOf();\n\n if (eras[i].since <= val && val <= eras[i].until) {\n return eras[i].abbr;\n }\n if (eras[i].until <= val && val <= eras[i].since) {\n return eras[i].abbr;\n }\n }\n\n return '';\n }\n\n function getEraYear() {\n var i,\n l,\n dir,\n val,\n eras = this.localeData().eras();\n for (i = 0, l = eras.length; i < l; ++i) {\n dir = eras[i].since <= eras[i].until ? +1 : -1;\n\n // truncate time\n val = this.clone().startOf('day').valueOf();\n\n if (\n (eras[i].since <= val && val <= eras[i].until) ||\n (eras[i].until <= val && val <= eras[i].since)\n ) {\n return (\n (this.year() - hooks(eras[i].since).year()) * dir +\n eras[i].offset\n );\n }\n }\n\n return this.year();\n }\n\n function erasNameRegex(isStrict) {\n if (!hasOwnProp(this, '_erasNameRegex')) {\n computeErasParse.call(this);\n }\n return isStrict ? this._erasNameRegex : this._erasRegex;\n }\n\n function erasAbbrRegex(isStrict) {\n if (!hasOwnProp(this, '_erasAbbrRegex')) {\n computeErasParse.call(this);\n }\n return isStrict ? this._erasAbbrRegex : this._erasRegex;\n }\n\n function erasNarrowRegex(isStrict) {\n if (!hasOwnProp(this, '_erasNarrowRegex')) {\n computeErasParse.call(this);\n }\n return isStrict ? this._erasNarrowRegex : this._erasRegex;\n }\n\n function matchEraAbbr(isStrict, locale) {\n return locale.erasAbbrRegex(isStrict);\n }\n\n function matchEraName(isStrict, locale) {\n return locale.erasNameRegex(isStrict);\n }\n\n function matchEraNarrow(isStrict, locale) {\n return locale.erasNarrowRegex(isStrict);\n }\n\n function matchEraYearOrdinal(isStrict, locale) {\n return locale._eraYearOrdinalRegex || matchUnsigned;\n }\n\n function computeErasParse() {\n var abbrPieces = [],\n namePieces = [],\n narrowPieces = [],\n mixedPieces = [],\n i,\n l,\n eras = this.eras();\n\n for (i = 0, l = eras.length; i < l; ++i) {\n namePieces.push(regexEscape(eras[i].name));\n abbrPieces.push(regexEscape(eras[i].abbr));\n narrowPieces.push(regexEscape(eras[i].narrow));\n\n mixedPieces.push(regexEscape(eras[i].name));\n mixedPieces.push(regexEscape(eras[i].abbr));\n mixedPieces.push(regexEscape(eras[i].narrow));\n }\n\n this._erasRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');\n this._erasNameRegex = new RegExp('^(' + namePieces.join('|') + ')', 'i');\n this._erasAbbrRegex = new RegExp('^(' + abbrPieces.join('|') + ')', 'i');\n this._erasNarrowRegex = new RegExp(\n '^(' + narrowPieces.join('|') + ')',\n 'i'\n );\n }\n\n // FORMATTING\n\n addFormatToken(0, ['gg', 2], 0, function () {\n return this.weekYear() % 100;\n });\n\n addFormatToken(0, ['GG', 2], 0, function () {\n return this.isoWeekYear() % 100;\n });\n\n function addWeekYearFormatToken(token, getter) {\n addFormatToken(0, [token, token.length], 0, getter);\n }\n\n addWeekYearFormatToken('gggg', 'weekYear');\n addWeekYearFormatToken('ggggg', 'weekYear');\n addWeekYearFormatToken('GGGG', 'isoWeekYear');\n addWeekYearFormatToken('GGGGG', 'isoWeekYear');\n\n // ALIASES\n\n addUnitAlias('weekYear', 'gg');\n addUnitAlias('isoWeekYear', 'GG');\n\n // PRIORITY\n\n addUnitPriority('weekYear', 1);\n addUnitPriority('isoWeekYear', 1);\n\n // PARSING\n\n addRegexToken('G', matchSigned);\n addRegexToken('g', matchSigned);\n addRegexToken('GG', match1to2, match2);\n addRegexToken('gg', match1to2, match2);\n addRegexToken('GGGG', match1to4, match4);\n addRegexToken('gggg', match1to4, match4);\n addRegexToken('GGGGG', match1to6, match6);\n addRegexToken('ggggg', match1to6, match6);\n\n addWeekParseToken(\n ['gggg', 'ggggg', 'GGGG', 'GGGGG'],\n function (input, week, config, token) {\n week[token.substr(0, 2)] = toInt(input);\n }\n );\n\n addWeekParseToken(['gg', 'GG'], function (input, week, config, token) {\n week[token] = hooks.parseTwoDigitYear(input);\n });\n\n // MOMENTS\n\n function getSetWeekYear(input) {\n return getSetWeekYearHelper.call(\n this,\n input,\n this.week(),\n this.weekday(),\n this.localeData()._week.dow,\n this.localeData()._week.doy\n );\n }\n\n function getSetISOWeekYear(input) {\n return getSetWeekYearHelper.call(\n this,\n input,\n this.isoWeek(),\n this.isoWeekday(),\n 1,\n 4\n );\n }\n\n function getISOWeeksInYear() {\n return weeksInYear(this.year(), 1, 4);\n }\n\n function getISOWeeksInISOWeekYear() {\n return weeksInYear(this.isoWeekYear(), 1, 4);\n }\n\n function getWeeksInYear() {\n var weekInfo = this.localeData()._week;\n return weeksInYear(this.year(), weekInfo.dow, weekInfo.doy);\n }\n\n function getWeeksInWeekYear() {\n var weekInfo = this.localeData()._week;\n return weeksInYear(this.weekYear(), weekInfo.dow, weekInfo.doy);\n }\n\n function getSetWeekYearHelper(input, week, weekday, dow, doy) {\n var weeksTarget;\n if (input == null) {\n return weekOfYear(this, dow, doy).year;\n } else {\n weeksTarget = weeksInYear(input, dow, doy);\n if (week > weeksTarget) {\n week = weeksTarget;\n }\n return setWeekAll.call(this, input, week, weekday, dow, doy);\n }\n }\n\n function setWeekAll(weekYear, week, weekday, dow, doy) {\n var dayOfYearData = dayOfYearFromWeeks(weekYear, week, weekday, dow, doy),\n date = createUTCDate(dayOfYearData.year, 0, dayOfYearData.dayOfYear);\n\n this.year(date.getUTCFullYear());\n this.month(date.getUTCMonth());\n this.date(date.getUTCDate());\n return this;\n }\n\n // FORMATTING\n\n addFormatToken('Q', 0, 'Qo', 'quarter');\n\n // ALIASES\n\n addUnitAlias('quarter', 'Q');\n\n // PRIORITY\n\n addUnitPriority('quarter', 7);\n\n // PARSING\n\n addRegexToken('Q', match1);\n addParseToken('Q', function (input, array) {\n array[MONTH] = (toInt(input) - 1) * 3;\n });\n\n // MOMENTS\n\n function getSetQuarter(input) {\n return input == null\n ? Math.ceil((this.month() + 1) / 3)\n : this.month((input - 1) * 3 + (this.month() % 3));\n }\n\n // FORMATTING\n\n addFormatToken('D', ['DD', 2], 'Do', 'date');\n\n // ALIASES\n\n addUnitAlias('date', 'D');\n\n // PRIORITY\n addUnitPriority('date', 9);\n\n // PARSING\n\n addRegexToken('D', match1to2);\n addRegexToken('DD', match1to2, match2);\n addRegexToken('Do', function (isStrict, locale) {\n // TODO: Remove \"ordinalParse\" fallback in next major release.\n return isStrict\n ? locale._dayOfMonthOrdinalParse || locale._ordinalParse\n : locale._dayOfMonthOrdinalParseLenient;\n });\n\n addParseToken(['D', 'DD'], DATE);\n addParseToken('Do', function (input, array) {\n array[DATE] = toInt(input.match(match1to2)[0]);\n });\n\n // MOMENTS\n\n var getSetDayOfMonth = makeGetSet('Date', true);\n\n // FORMATTING\n\n addFormatToken('DDD', ['DDDD', 3], 'DDDo', 'dayOfYear');\n\n // ALIASES\n\n addUnitAlias('dayOfYear', 'DDD');\n\n // PRIORITY\n addUnitPriority('dayOfYear', 4);\n\n // PARSING\n\n addRegexToken('DDD', match1to3);\n addRegexToken('DDDD', match3);\n addParseToken(['DDD', 'DDDD'], function (input, array, config) {\n config._dayOfYear = toInt(input);\n });\n\n // HELPERS\n\n // MOMENTS\n\n function getSetDayOfYear(input) {\n var dayOfYear =\n Math.round(\n (this.clone().startOf('day') - this.clone().startOf('year')) / 864e5\n ) + 1;\n return input == null ? dayOfYear : this.add(input - dayOfYear, 'd');\n }\n\n // FORMATTING\n\n addFormatToken('m', ['mm', 2], 0, 'minute');\n\n // ALIASES\n\n addUnitAlias('minute', 'm');\n\n // PRIORITY\n\n addUnitPriority('minute', 14);\n\n // PARSING\n\n addRegexToken('m', match1to2);\n addRegexToken('mm', match1to2, match2);\n addParseToken(['m', 'mm'], MINUTE);\n\n // MOMENTS\n\n var getSetMinute = makeGetSet('Minutes', false);\n\n // FORMATTING\n\n addFormatToken('s', ['ss', 2], 0, 'second');\n\n // ALIASES\n\n addUnitAlias('second', 's');\n\n // PRIORITY\n\n addUnitPriority('second', 15);\n\n // PARSING\n\n addRegexToken('s', match1to2);\n addRegexToken('ss', match1to2, match2);\n addParseToken(['s', 'ss'], SECOND);\n\n // MOMENTS\n\n var getSetSecond = makeGetSet('Seconds', false);\n\n // FORMATTING\n\n addFormatToken('S', 0, 0, function () {\n return ~~(this.millisecond() / 100);\n });\n\n addFormatToken(0, ['SS', 2], 0, function () {\n return ~~(this.millisecond() / 10);\n });\n\n addFormatToken(0, ['SSS', 3], 0, 'millisecond');\n addFormatToken(0, ['SSSS', 4], 0, function () {\n return this.millisecond() * 10;\n });\n addFormatToken(0, ['SSSSS', 5], 0, function () {\n return this.millisecond() * 100;\n });\n addFormatToken(0, ['SSSSSS', 6], 0, function () {\n return this.millisecond() * 1000;\n });\n addFormatToken(0, ['SSSSSSS', 7], 0, function () {\n return this.millisecond() * 10000;\n });\n addFormatToken(0, ['SSSSSSSS', 8], 0, function () {\n return this.millisecond() * 100000;\n });\n addFormatToken(0, ['SSSSSSSSS', 9], 0, function () {\n return this.millisecond() * 1000000;\n });\n\n // ALIASES\n\n addUnitAlias('millisecond', 'ms');\n\n // PRIORITY\n\n addUnitPriority('millisecond', 16);\n\n // PARSING\n\n addRegexToken('S', match1to3, match1);\n addRegexToken('SS', match1to3, match2);\n addRegexToken('SSS', match1to3, match3);\n\n var token, getSetMillisecond;\n for (token = 'SSSS'; token.length <= 9; token += 'S') {\n addRegexToken(token, matchUnsigned);\n }\n\n function parseMs(input, array) {\n array[MILLISECOND] = toInt(('0.' + input) * 1000);\n }\n\n for (token = 'S'; token.length <= 9; token += 'S') {\n addParseToken(token, parseMs);\n }\n\n getSetMillisecond = makeGetSet('Milliseconds', false);\n\n // FORMATTING\n\n addFormatToken('z', 0, 0, 'zoneAbbr');\n addFormatToken('zz', 0, 0, 'zoneName');\n\n // MOMENTS\n\n function getZoneAbbr() {\n return this._isUTC ? 'UTC' : '';\n }\n\n function getZoneName() {\n return this._isUTC ? 'Coordinated Universal Time' : '';\n }\n\n var proto = Moment.prototype;\n\n proto.add = add;\n proto.calendar = calendar$1;\n proto.clone = clone;\n proto.diff = diff;\n proto.endOf = endOf;\n proto.format = format;\n proto.from = from;\n proto.fromNow = fromNow;\n proto.to = to;\n proto.toNow = toNow;\n proto.get = stringGet;\n proto.invalidAt = invalidAt;\n proto.isAfter = isAfter;\n proto.isBefore = isBefore;\n proto.isBetween = isBetween;\n proto.isSame = isSame;\n proto.isSameOrAfter = isSameOrAfter;\n proto.isSameOrBefore = isSameOrBefore;\n proto.isValid = isValid$2;\n proto.lang = lang;\n proto.locale = locale;\n proto.localeData = localeData;\n proto.max = prototypeMax;\n proto.min = prototypeMin;\n proto.parsingFlags = parsingFlags;\n proto.set = stringSet;\n proto.startOf = startOf;\n proto.subtract = subtract;\n proto.toArray = toArray;\n proto.toObject = toObject;\n proto.toDate = toDate;\n proto.toISOString = toISOString;\n proto.inspect = inspect;\n if (typeof Symbol !== 'undefined' && Symbol.for != null) {\n proto[Symbol.for('nodejs.util.inspect.custom')] = function () {\n return 'Moment<' + this.format() + '>';\n };\n }\n proto.toJSON = toJSON;\n proto.toString = toString;\n proto.unix = unix;\n proto.valueOf = valueOf;\n proto.creationData = creationData;\n proto.eraName = getEraName;\n proto.eraNarrow = getEraNarrow;\n proto.eraAbbr = getEraAbbr;\n proto.eraYear = getEraYear;\n proto.year = getSetYear;\n proto.isLeapYear = getIsLeapYear;\n proto.weekYear = getSetWeekYear;\n proto.isoWeekYear = getSetISOWeekYear;\n proto.quarter = proto.quarters = getSetQuarter;\n proto.month = getSetMonth;\n proto.daysInMonth = getDaysInMonth;\n proto.week = proto.weeks = getSetWeek;\n proto.isoWeek = proto.isoWeeks = getSetISOWeek;\n proto.weeksInYear = getWeeksInYear;\n proto.weeksInWeekYear = getWeeksInWeekYear;\n proto.isoWeeksInYear = getISOWeeksInYear;\n proto.isoWeeksInISOWeekYear = getISOWeeksInISOWeekYear;\n proto.date = getSetDayOfMonth;\n proto.day = proto.days = getSetDayOfWeek;\n proto.weekday = getSetLocaleDayOfWeek;\n proto.isoWeekday = getSetISODayOfWeek;\n proto.dayOfYear = getSetDayOfYear;\n proto.hour = proto.hours = getSetHour;\n proto.minute = proto.minutes = getSetMinute;\n proto.second = proto.seconds = getSetSecond;\n proto.millisecond = proto.milliseconds = getSetMillisecond;\n proto.utcOffset = getSetOffset;\n proto.utc = setOffsetToUTC;\n proto.local = setOffsetToLocal;\n proto.parseZone = setOffsetToParsedOffset;\n proto.hasAlignedHourOffset = hasAlignedHourOffset;\n proto.isDST = isDaylightSavingTime;\n proto.isLocal = isLocal;\n proto.isUtcOffset = isUtcOffset;\n proto.isUtc = isUtc;\n proto.isUTC = isUtc;\n proto.zoneAbbr = getZoneAbbr;\n proto.zoneName = getZoneName;\n proto.dates = deprecate(\n 'dates accessor is deprecated. Use date instead.',\n getSetDayOfMonth\n );\n proto.months = deprecate(\n 'months accessor is deprecated. Use month instead',\n getSetMonth\n );\n proto.years = deprecate(\n 'years accessor is deprecated. Use year instead',\n getSetYear\n );\n proto.zone = deprecate(\n 'moment().zone is deprecated, use moment().utcOffset instead. http://momentjs.com/guides/#/warnings/zone/',\n getSetZone\n );\n proto.isDSTShifted = deprecate(\n 'isDSTShifted is deprecated. See http://momentjs.com/guides/#/warnings/dst-shifted/ for more information',\n isDaylightSavingTimeShifted\n );\n\n function createUnix(input) {\n return createLocal(input * 1000);\n }\n\n function createInZone() {\n return createLocal.apply(null, arguments).parseZone();\n }\n\n function preParsePostFormat(string) {\n return string;\n }\n\n var proto$1 = Locale.prototype;\n\n proto$1.calendar = calendar;\n proto$1.longDateFormat = longDateFormat;\n proto$1.invalidDate = invalidDate;\n proto$1.ordinal = ordinal;\n proto$1.preparse = preParsePostFormat;\n proto$1.postformat = preParsePostFormat;\n proto$1.relativeTime = relativeTime;\n proto$1.pastFuture = pastFuture;\n proto$1.set = set;\n proto$1.eras = localeEras;\n proto$1.erasParse = localeErasParse;\n proto$1.erasConvertYear = localeErasConvertYear;\n proto$1.erasAbbrRegex = erasAbbrRegex;\n proto$1.erasNameRegex = erasNameRegex;\n proto$1.erasNarrowRegex = erasNarrowRegex;\n\n proto$1.months = localeMonths;\n proto$1.monthsShort = localeMonthsShort;\n proto$1.monthsParse = localeMonthsParse;\n proto$1.monthsRegex = monthsRegex;\n proto$1.monthsShortRegex = monthsShortRegex;\n proto$1.week = localeWeek;\n proto$1.firstDayOfYear = localeFirstDayOfYear;\n proto$1.firstDayOfWeek = localeFirstDayOfWeek;\n\n proto$1.weekdays = localeWeekdays;\n proto$1.weekdaysMin = localeWeekdaysMin;\n proto$1.weekdaysShort = localeWeekdaysShort;\n proto$1.weekdaysParse = localeWeekdaysParse;\n\n proto$1.weekdaysRegex = weekdaysRegex;\n proto$1.weekdaysShortRegex = weekdaysShortRegex;\n proto$1.weekdaysMinRegex = weekdaysMinRegex;\n\n proto$1.isPM = localeIsPM;\n proto$1.meridiem = localeMeridiem;\n\n function get$1(format, index, field, setter) {\n var locale = getLocale(),\n utc = createUTC().set(setter, index);\n return locale[field](utc, format);\n }\n\n function listMonthsImpl(format, index, field) {\n if (isNumber(format)) {\n index = format;\n format = undefined;\n }\n\n format = format || '';\n\n if (index != null) {\n return get$1(format, index, field, 'month');\n }\n\n var i,\n out = [];\n for (i = 0; i < 12; i++) {\n out[i] = get$1(format, i, field, 'month');\n }\n return out;\n }\n\n // ()\n // (5)\n // (fmt, 5)\n // (fmt)\n // (true)\n // (true, 5)\n // (true, fmt, 5)\n // (true, fmt)\n function listWeekdaysImpl(localeSorted, format, index, field) {\n if (typeof localeSorted === 'boolean') {\n if (isNumber(format)) {\n index = format;\n format = undefined;\n }\n\n format = format || '';\n } else {\n format = localeSorted;\n index = format;\n localeSorted = false;\n\n if (isNumber(format)) {\n index = format;\n format = undefined;\n }\n\n format = format || '';\n }\n\n var locale = getLocale(),\n shift = localeSorted ? locale._week.dow : 0,\n i,\n out = [];\n\n if (index != null) {\n return get$1(format, (index + shift) % 7, field, 'day');\n }\n\n for (i = 0; i < 7; i++) {\n out[i] = get$1(format, (i + shift) % 7, field, 'day');\n }\n return out;\n }\n\n function listMonths(format, index) {\n return listMonthsImpl(format, index, 'months');\n }\n\n function listMonthsShort(format, index) {\n return listMonthsImpl(format, index, 'monthsShort');\n }\n\n function listWeekdays(localeSorted, format, index) {\n return listWeekdaysImpl(localeSorted, format, index, 'weekdays');\n }\n\n function listWeekdaysShort(localeSorted, format, index) {\n return listWeekdaysImpl(localeSorted, format, index, 'weekdaysShort');\n }\n\n function listWeekdaysMin(localeSorted, format, index) {\n return listWeekdaysImpl(localeSorted, format, index, 'weekdaysMin');\n }\n\n getSetGlobalLocale('en', {\n eras: [\n {\n since: '0001-01-01',\n until: +Infinity,\n offset: 1,\n name: 'Anno Domini',\n narrow: 'AD',\n abbr: 'AD',\n },\n {\n since: '0000-12-31',\n until: -Infinity,\n offset: 1,\n name: 'Before Christ',\n narrow: 'BC',\n abbr: 'BC',\n },\n ],\n dayOfMonthOrdinalParse: /\\d{1,2}(th|st|nd|rd)/,\n ordinal: function (number) {\n var b = number % 10,\n output =\n toInt((number % 100) / 10) === 1\n ? 'th'\n : b === 1\n ? 'st'\n : b === 2\n ? 'nd'\n : b === 3\n ? 'rd'\n : 'th';\n return number + output;\n },\n });\n\n // Side effect imports\n\n hooks.lang = deprecate(\n 'moment.lang is deprecated. Use moment.locale instead.',\n getSetGlobalLocale\n );\n hooks.langData = deprecate(\n 'moment.langData is deprecated. Use moment.localeData instead.',\n getLocale\n );\n\n var mathAbs = Math.abs;\n\n function abs() {\n var data = this._data;\n\n this._milliseconds = mathAbs(this._milliseconds);\n this._days = mathAbs(this._days);\n this._months = mathAbs(this._months);\n\n data.milliseconds = mathAbs(data.milliseconds);\n data.seconds = mathAbs(data.seconds);\n data.minutes = mathAbs(data.minutes);\n data.hours = mathAbs(data.hours);\n data.months = mathAbs(data.months);\n data.years = mathAbs(data.years);\n\n return this;\n }\n\n function addSubtract$1(duration, input, value, direction) {\n var other = createDuration(input, value);\n\n duration._milliseconds += direction * other._milliseconds;\n duration._days += direction * other._days;\n duration._months += direction * other._months;\n\n return duration._bubble();\n }\n\n // supports only 2.0-style add(1, 's') or add(duration)\n function add$1(input, value) {\n return addSubtract$1(this, input, value, 1);\n }\n\n // supports only 2.0-style subtract(1, 's') or subtract(duration)\n function subtract$1(input, value) {\n return addSubtract$1(this, input, value, -1);\n }\n\n function absCeil(number) {\n if (number < 0) {\n return Math.floor(number);\n } else {\n return Math.ceil(number);\n }\n }\n\n function bubble() {\n var milliseconds = this._milliseconds,\n days = this._days,\n months = this._months,\n data = this._data,\n seconds,\n minutes,\n hours,\n years,\n monthsFromDays;\n\n // if we have a mix of positive and negative values, bubble down first\n // check: https://github.com/moment/moment/issues/2166\n if (\n !(\n (milliseconds >= 0 && days >= 0 && months >= 0) ||\n (milliseconds <= 0 && days <= 0 && months <= 0)\n )\n ) {\n milliseconds += absCeil(monthsToDays(months) + days) * 864e5;\n days = 0;\n months = 0;\n }\n\n // The following code bubbles up values, see the tests for\n // examples of what that means.\n data.milliseconds = milliseconds % 1000;\n\n seconds = absFloor(milliseconds / 1000);\n data.seconds = seconds % 60;\n\n minutes = absFloor(seconds / 60);\n data.minutes = minutes % 60;\n\n hours = absFloor(minutes / 60);\n data.hours = hours % 24;\n\n days += absFloor(hours / 24);\n\n // convert days to months\n monthsFromDays = absFloor(daysToMonths(days));\n months += monthsFromDays;\n days -= absCeil(monthsToDays(monthsFromDays));\n\n // 12 months -> 1 year\n years = absFloor(months / 12);\n months %= 12;\n\n data.days = days;\n data.months = months;\n data.years = years;\n\n return this;\n }\n\n function daysToMonths(days) {\n // 400 years have 146097 days (taking into account leap year rules)\n // 400 years have 12 months === 4800\n return (days * 4800) / 146097;\n }\n\n function monthsToDays(months) {\n // the reverse of daysToMonths\n return (months * 146097) / 4800;\n }\n\n function as(units) {\n if (!this.isValid()) {\n return NaN;\n }\n var days,\n months,\n milliseconds = this._milliseconds;\n\n units = normalizeUnits(units);\n\n if (units === 'month' || units === 'quarter' || units === 'year') {\n days = this._days + milliseconds / 864e5;\n months = this._months + daysToMonths(days);\n switch (units) {\n case 'month':\n return months;\n case 'quarter':\n return months / 3;\n case 'year':\n return months / 12;\n }\n } else {\n // handle milliseconds separately because of floating point math errors (issue #1867)\n days = this._days + Math.round(monthsToDays(this._months));\n switch (units) {\n case 'week':\n return days / 7 + milliseconds / 6048e5;\n case 'day':\n return days + milliseconds / 864e5;\n case 'hour':\n return days * 24 + milliseconds / 36e5;\n case 'minute':\n return days * 1440 + milliseconds / 6e4;\n case 'second':\n return days * 86400 + milliseconds / 1000;\n // Math.floor prevents floating point math errors here\n case 'millisecond':\n return Math.floor(days * 864e5) + milliseconds;\n default:\n throw new Error('Unknown unit ' + units);\n }\n }\n }\n\n // TODO: Use this.as('ms')?\n function valueOf$1() {\n if (!this.isValid()) {\n return NaN;\n }\n return (\n this._milliseconds +\n this._days * 864e5 +\n (this._months % 12) * 2592e6 +\n toInt(this._months / 12) * 31536e6\n );\n }\n\n function makeAs(alias) {\n return function () {\n return this.as(alias);\n };\n }\n\n var asMilliseconds = makeAs('ms'),\n asSeconds = makeAs('s'),\n asMinutes = makeAs('m'),\n asHours = makeAs('h'),\n asDays = makeAs('d'),\n asWeeks = makeAs('w'),\n asMonths = makeAs('M'),\n asQuarters = makeAs('Q'),\n asYears = makeAs('y');\n\n function clone$1() {\n return createDuration(this);\n }\n\n function get$2(units) {\n units = normalizeUnits(units);\n return this.isValid() ? this[units + 's']() : NaN;\n }\n\n function makeGetter(name) {\n return function () {\n return this.isValid() ? this._data[name] : NaN;\n };\n }\n\n var milliseconds = makeGetter('milliseconds'),\n seconds = makeGetter('seconds'),\n minutes = makeGetter('minutes'),\n hours = makeGetter('hours'),\n days = makeGetter('days'),\n months = makeGetter('months'),\n years = makeGetter('years');\n\n function weeks() {\n return absFloor(this.days() / 7);\n }\n\n var round = Math.round,\n thresholds = {\n ss: 44, // a few seconds to seconds\n s: 45, // seconds to minute\n m: 45, // minutes to hour\n h: 22, // hours to day\n d: 26, // days to month/week\n w: null, // weeks to month\n M: 11, // months to year\n };\n\n // helper function for moment.fn.from, moment.fn.fromNow, and moment.duration.fn.humanize\n function substituteTimeAgo(string, number, withoutSuffix, isFuture, locale) {\n return locale.relativeTime(number || 1, !!withoutSuffix, string, isFuture);\n }\n\n function relativeTime$1(posNegDuration, withoutSuffix, thresholds, locale) {\n var duration = createDuration(posNegDuration).abs(),\n seconds = round(duration.as('s')),\n minutes = round(duration.as('m')),\n hours = round(duration.as('h')),\n days = round(duration.as('d')),\n months = round(duration.as('M')),\n weeks = round(duration.as('w')),\n years = round(duration.as('y')),\n a =\n (seconds <= thresholds.ss && ['s', seconds]) ||\n (seconds < thresholds.s && ['ss', seconds]) ||\n (minutes <= 1 && ['m']) ||\n (minutes < thresholds.m && ['mm', minutes]) ||\n (hours <= 1 && ['h']) ||\n (hours < thresholds.h && ['hh', hours]) ||\n (days <= 1 && ['d']) ||\n (days < thresholds.d && ['dd', days]);\n\n if (thresholds.w != null) {\n a =\n a ||\n (weeks <= 1 && ['w']) ||\n (weeks < thresholds.w && ['ww', weeks]);\n }\n a = a ||\n (months <= 1 && ['M']) ||\n (months < thresholds.M && ['MM', months]) ||\n (years <= 1 && ['y']) || ['yy', years];\n\n a[2] = withoutSuffix;\n a[3] = +posNegDuration > 0;\n a[4] = locale;\n return substituteTimeAgo.apply(null, a);\n }\n\n // This function allows you to set the rounding function for relative time strings\n function getSetRelativeTimeRounding(roundingFunction) {\n if (roundingFunction === undefined) {\n return round;\n }\n if (typeof roundingFunction === 'function') {\n round = roundingFunction;\n return true;\n }\n return false;\n }\n\n // This function allows you to set a threshold for relative time strings\n function getSetRelativeTimeThreshold(threshold, limit) {\n if (thresholds[threshold] === undefined) {\n return false;\n }\n if (limit === undefined) {\n return thresholds[threshold];\n }\n thresholds[threshold] = limit;\n if (threshold === 's') {\n thresholds.ss = limit - 1;\n }\n return true;\n }\n\n function humanize(argWithSuffix, argThresholds) {\n if (!this.isValid()) {\n return this.localeData().invalidDate();\n }\n\n var withSuffix = false,\n th = thresholds,\n locale,\n output;\n\n if (typeof argWithSuffix === 'object') {\n argThresholds = argWithSuffix;\n argWithSuffix = false;\n }\n if (typeof argWithSuffix === 'boolean') {\n withSuffix = argWithSuffix;\n }\n if (typeof argThresholds === 'object') {\n th = Object.assign({}, thresholds, argThresholds);\n if (argThresholds.s != null && argThresholds.ss == null) {\n th.ss = argThresholds.s - 1;\n }\n }\n\n locale = this.localeData();\n output = relativeTime$1(this, !withSuffix, th, locale);\n\n if (withSuffix) {\n output = locale.pastFuture(+this, output);\n }\n\n return locale.postformat(output);\n }\n\n var abs$1 = Math.abs;\n\n function sign(x) {\n return (x > 0) - (x < 0) || +x;\n }\n\n function toISOString$1() {\n // for ISO strings we do not use the normal bubbling rules:\n // * milliseconds bubble up until they become hours\n // * days do not bubble at all\n // * months bubble up until they become years\n // This is because there is no context-free conversion between hours and days\n // (think of clock changes)\n // and also not between days and months (28-31 days per month)\n if (!this.isValid()) {\n return this.localeData().invalidDate();\n }\n\n var seconds = abs$1(this._milliseconds) / 1000,\n days = abs$1(this._days),\n months = abs$1(this._months),\n minutes,\n hours,\n years,\n s,\n total = this.asSeconds(),\n totalSign,\n ymSign,\n daysSign,\n hmsSign;\n\n if (!total) {\n // this is the same as C#'s (Noda) and python (isodate)...\n // but not other JS (goog.date)\n return 'P0D';\n }\n\n // 3600 seconds -> 60 minutes -> 1 hour\n minutes = absFloor(seconds / 60);\n hours = absFloor(minutes / 60);\n seconds %= 60;\n minutes %= 60;\n\n // 12 months -> 1 year\n years = absFloor(months / 12);\n months %= 12;\n\n // inspired by https://github.com/dordille/moment-isoduration/blob/master/moment.isoduration.js\n s = seconds ? seconds.toFixed(3).replace(/\\.?0+$/, '') : '';\n\n totalSign = total < 0 ? '-' : '';\n ymSign = sign(this._months) !== sign(total) ? '-' : '';\n daysSign = sign(this._days) !== sign(total) ? '-' : '';\n hmsSign = sign(this._milliseconds) !== sign(total) ? '-' : '';\n\n return (\n totalSign +\n 'P' +\n (years ? ymSign + years + 'Y' : '') +\n (months ? ymSign + months + 'M' : '') +\n (days ? daysSign + days + 'D' : '') +\n (hours || minutes || seconds ? 'T' : '') +\n (hours ? hmsSign + hours + 'H' : '') +\n (minutes ? hmsSign + minutes + 'M' : '') +\n (seconds ? hmsSign + s + 'S' : '')\n );\n }\n\n var proto$2 = Duration.prototype;\n\n proto$2.isValid = isValid$1;\n proto$2.abs = abs;\n proto$2.add = add$1;\n proto$2.subtract = subtract$1;\n proto$2.as = as;\n proto$2.asMilliseconds = asMilliseconds;\n proto$2.asSeconds = asSeconds;\n proto$2.asMinutes = asMinutes;\n proto$2.asHours = asHours;\n proto$2.asDays = asDays;\n proto$2.asWeeks = asWeeks;\n proto$2.asMonths = asMonths;\n proto$2.asQuarters = asQuarters;\n proto$2.asYears = asYears;\n proto$2.valueOf = valueOf$1;\n proto$2._bubble = bubble;\n proto$2.clone = clone$1;\n proto$2.get = get$2;\n proto$2.milliseconds = milliseconds;\n proto$2.seconds = seconds;\n proto$2.minutes = minutes;\n proto$2.hours = hours;\n proto$2.days = days;\n proto$2.weeks = weeks;\n proto$2.months = months;\n proto$2.years = years;\n proto$2.humanize = humanize;\n proto$2.toISOString = toISOString$1;\n proto$2.toString = toISOString$1;\n proto$2.toJSON = toISOString$1;\n proto$2.locale = locale;\n proto$2.localeData = localeData;\n\n proto$2.toIsoString = deprecate(\n 'toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)',\n toISOString$1\n );\n proto$2.lang = lang;\n\n // FORMATTING\n\n addFormatToken('X', 0, 0, 'unix');\n addFormatToken('x', 0, 0, 'valueOf');\n\n // PARSING\n\n addRegexToken('x', matchSigned);\n addRegexToken('X', matchTimestamp);\n addParseToken('X', function (input, array, config) {\n config._d = new Date(parseFloat(input) * 1000);\n });\n addParseToken('x', function (input, array, config) {\n config._d = new Date(toInt(input));\n });\n\n //! moment.js\n\n hooks.version = '2.29.3';\n\n setHookCallback(createLocal);\n\n hooks.fn = proto;\n hooks.min = min;\n hooks.max = max;\n hooks.now = now;\n hooks.utc = createUTC;\n hooks.unix = createUnix;\n hooks.months = listMonths;\n hooks.isDate = isDate;\n hooks.locale = getSetGlobalLocale;\n hooks.invalid = createInvalid;\n hooks.duration = createDuration;\n hooks.isMoment = isMoment;\n hooks.weekdays = listWeekdays;\n hooks.parseZone = createInZone;\n hooks.localeData = getLocale;\n hooks.isDuration = isDuration;\n hooks.monthsShort = listMonthsShort;\n hooks.weekdaysMin = listWeekdaysMin;\n hooks.defineLocale = defineLocale;\n hooks.updateLocale = updateLocale;\n hooks.locales = listLocales;\n hooks.weekdaysShort = listWeekdaysShort;\n hooks.normalizeUnits = normalizeUnits;\n hooks.relativeTimeRounding = getSetRelativeTimeRounding;\n hooks.relativeTimeThreshold = getSetRelativeTimeThreshold;\n hooks.calendarFormat = getCalendarFormat;\n hooks.prototype = proto;\n\n // currently HTML5 input type only supports 24-hour formats\n hooks.HTML5_FMT = {\n DATETIME_LOCAL: 'YYYY-MM-DDTHH:mm', // \n DATETIME_LOCAL_SECONDS: 'YYYY-MM-DDTHH:mm:ss', // \n DATETIME_LOCAL_MS: 'YYYY-MM-DDTHH:mm:ss.SSS', // \n DATE: 'YYYY-MM-DD', // \n TIME: 'HH:mm', // \n TIME_SECONDS: 'HH:mm:ss', // \n TIME_MS: 'HH:mm:ss.SSS', // \n WEEK: 'GGGG-[W]WW', // \n MONTH: 'YYYY-MM', // \n };\n\n return hooks;\n\n})));\n","var hasMap = typeof Map === 'function' && Map.prototype;\nvar mapSizeDescriptor = Object.getOwnPropertyDescriptor && hasMap ? Object.getOwnPropertyDescriptor(Map.prototype, 'size') : null;\nvar mapSize = hasMap && mapSizeDescriptor && typeof mapSizeDescriptor.get === 'function' ? mapSizeDescriptor.get : null;\nvar mapForEach = hasMap && Map.prototype.forEach;\nvar hasSet = typeof Set === 'function' && Set.prototype;\nvar setSizeDescriptor = Object.getOwnPropertyDescriptor && hasSet ? Object.getOwnPropertyDescriptor(Set.prototype, 'size') : null;\nvar setSize = hasSet && setSizeDescriptor && typeof setSizeDescriptor.get === 'function' ? setSizeDescriptor.get : null;\nvar setForEach = hasSet && Set.prototype.forEach;\nvar hasWeakMap = typeof WeakMap === 'function' && WeakMap.prototype;\nvar weakMapHas = hasWeakMap ? WeakMap.prototype.has : null;\nvar hasWeakSet = typeof WeakSet === 'function' && WeakSet.prototype;\nvar weakSetHas = hasWeakSet ? WeakSet.prototype.has : null;\nvar hasWeakRef = typeof WeakRef === 'function' && WeakRef.prototype;\nvar weakRefDeref = hasWeakRef ? WeakRef.prototype.deref : null;\nvar booleanValueOf = Boolean.prototype.valueOf;\nvar objectToString = Object.prototype.toString;\nvar functionToString = Function.prototype.toString;\nvar $match = String.prototype.match;\nvar $slice = String.prototype.slice;\nvar $replace = String.prototype.replace;\nvar $toUpperCase = String.prototype.toUpperCase;\nvar $toLowerCase = String.prototype.toLowerCase;\nvar $test = RegExp.prototype.test;\nvar $concat = Array.prototype.concat;\nvar $join = Array.prototype.join;\nvar $arrSlice = Array.prototype.slice;\nvar $floor = Math.floor;\nvar bigIntValueOf = typeof BigInt === 'function' ? BigInt.prototype.valueOf : null;\nvar gOPS = Object.getOwnPropertySymbols;\nvar symToString = typeof Symbol === 'function' && typeof Symbol.iterator === 'symbol' ? Symbol.prototype.toString : null;\nvar hasShammedSymbols = typeof Symbol === 'function' && typeof Symbol.iterator === 'object';\n// ie, `has-tostringtag/shams\nvar toStringTag = typeof Symbol === 'function' && Symbol.toStringTag && (typeof Symbol.toStringTag === hasShammedSymbols ? 'object' : 'symbol')\n ? Symbol.toStringTag\n : null;\nvar isEnumerable = Object.prototype.propertyIsEnumerable;\n\nvar gPO = (typeof Reflect === 'function' ? Reflect.getPrototypeOf : Object.getPrototypeOf) || (\n [].__proto__ === Array.prototype // eslint-disable-line no-proto\n ? function (O) {\n return O.__proto__; // eslint-disable-line no-proto\n }\n : null\n);\n\nfunction addNumericSeparator(num, str) {\n if (\n num === Infinity\n || num === -Infinity\n || num !== num\n || (num && num > -1000 && num < 1000)\n || $test.call(/e/, str)\n ) {\n return str;\n }\n var sepRegex = /[0-9](?=(?:[0-9]{3})+(?![0-9]))/g;\n if (typeof num === 'number') {\n var int = num < 0 ? -$floor(-num) : $floor(num); // trunc(num)\n if (int !== num) {\n var intStr = String(int);\n var dec = $slice.call(str, intStr.length + 1);\n return $replace.call(intStr, sepRegex, '$&_') + '.' + $replace.call($replace.call(dec, /([0-9]{3})/g, '$&_'), /_$/, '');\n }\n }\n return $replace.call(str, sepRegex, '$&_');\n}\n\nvar inspectCustom = require('./util.inspect').custom;\nvar inspectSymbol = inspectCustom && isSymbol(inspectCustom) ? inspectCustom : null;\n\nmodule.exports = function inspect_(obj, options, depth, seen) {\n var opts = options || {};\n\n if (has(opts, 'quoteStyle') && (opts.quoteStyle !== 'single' && opts.quoteStyle !== 'double')) {\n throw new TypeError('option \"quoteStyle\" must be \"single\" or \"double\"');\n }\n if (\n has(opts, 'maxStringLength') && (typeof opts.maxStringLength === 'number'\n ? opts.maxStringLength < 0 && opts.maxStringLength !== Infinity\n : opts.maxStringLength !== null\n )\n ) {\n throw new TypeError('option \"maxStringLength\", if provided, must be a positive integer, Infinity, or `null`');\n }\n var customInspect = has(opts, 'customInspect') ? opts.customInspect : true;\n if (typeof customInspect !== 'boolean' && customInspect !== 'symbol') {\n throw new TypeError('option \"customInspect\", if provided, must be `true`, `false`, or `\\'symbol\\'`');\n }\n\n if (\n has(opts, 'indent')\n && opts.indent !== null\n && opts.indent !== '\\t'\n && !(parseInt(opts.indent, 10) === opts.indent && opts.indent > 0)\n ) {\n throw new TypeError('option \"indent\" must be \"\\\\t\", an integer > 0, or `null`');\n }\n if (has(opts, 'numericSeparator') && typeof opts.numericSeparator !== 'boolean') {\n throw new TypeError('option \"numericSeparator\", if provided, must be `true` or `false`');\n }\n var numericSeparator = opts.numericSeparator;\n\n if (typeof obj === 'undefined') {\n return 'undefined';\n }\n if (obj === null) {\n return 'null';\n }\n if (typeof obj === 'boolean') {\n return obj ? 'true' : 'false';\n }\n\n if (typeof obj === 'string') {\n return inspectString(obj, opts);\n }\n if (typeof obj === 'number') {\n if (obj === 0) {\n return Infinity / obj > 0 ? '0' : '-0';\n }\n var str = String(obj);\n return numericSeparator ? addNumericSeparator(obj, str) : str;\n }\n if (typeof obj === 'bigint') {\n var bigIntStr = String(obj) + 'n';\n return numericSeparator ? addNumericSeparator(obj, bigIntStr) : bigIntStr;\n }\n\n var maxDepth = typeof opts.depth === 'undefined' ? 5 : opts.depth;\n if (typeof depth === 'undefined') { depth = 0; }\n if (depth >= maxDepth && maxDepth > 0 && typeof obj === 'object') {\n return isArray(obj) ? '[Array]' : '[Object]';\n }\n\n var indent = getIndent(opts, depth);\n\n if (typeof seen === 'undefined') {\n seen = [];\n } else if (indexOf(seen, obj) >= 0) {\n return '[Circular]';\n }\n\n function inspect(value, from, noIndent) {\n if (from) {\n seen = $arrSlice.call(seen);\n seen.push(from);\n }\n if (noIndent) {\n var newOpts = {\n depth: opts.depth\n };\n if (has(opts, 'quoteStyle')) {\n newOpts.quoteStyle = opts.quoteStyle;\n }\n return inspect_(value, newOpts, depth + 1, seen);\n }\n return inspect_(value, opts, depth + 1, seen);\n }\n\n if (typeof obj === 'function') {\n var name = nameOf(obj);\n var keys = arrObjKeys(obj, inspect);\n return '[Function' + (name ? ': ' + name : ' (anonymous)') + ']' + (keys.length > 0 ? ' { ' + $join.call(keys, ', ') + ' }' : '');\n }\n if (isSymbol(obj)) {\n var symString = hasShammedSymbols ? $replace.call(String(obj), /^(Symbol\\(.*\\))_[^)]*$/, '$1') : symToString.call(obj);\n return typeof obj === 'object' && !hasShammedSymbols ? markBoxed(symString) : symString;\n }\n if (isElement(obj)) {\n var s = '<' + $toLowerCase.call(String(obj.nodeName));\n var attrs = obj.attributes || [];\n for (var i = 0; i < attrs.length; i++) {\n s += ' ' + attrs[i].name + '=' + wrapQuotes(quote(attrs[i].value), 'double', opts);\n }\n s += '>';\n if (obj.childNodes && obj.childNodes.length) { s += '...'; }\n s += '';\n return s;\n }\n if (isArray(obj)) {\n if (obj.length === 0) { return '[]'; }\n var xs = arrObjKeys(obj, inspect);\n if (indent && !singleLineValues(xs)) {\n return '[' + indentedJoin(xs, indent) + ']';\n }\n return '[ ' + $join.call(xs, ', ') + ' ]';\n }\n if (isError(obj)) {\n var parts = arrObjKeys(obj, inspect);\n if ('cause' in obj && !isEnumerable.call(obj, 'cause')) {\n return '{ [' + String(obj) + '] ' + $join.call($concat.call('[cause]: ' + inspect(obj.cause), parts), ', ') + ' }';\n }\n if (parts.length === 0) { return '[' + String(obj) + ']'; }\n return '{ [' + String(obj) + '] ' + $join.call(parts, ', ') + ' }';\n }\n if (typeof obj === 'object' && customInspect) {\n if (inspectSymbol && typeof obj[inspectSymbol] === 'function') {\n return obj[inspectSymbol]();\n } else if (customInspect !== 'symbol' && typeof obj.inspect === 'function') {\n return obj.inspect();\n }\n }\n if (isMap(obj)) {\n var mapParts = [];\n mapForEach.call(obj, function (value, key) {\n mapParts.push(inspect(key, obj, true) + ' => ' + inspect(value, obj));\n });\n return collectionOf('Map', mapSize.call(obj), mapParts, indent);\n }\n if (isSet(obj)) {\n var setParts = [];\n setForEach.call(obj, function (value) {\n setParts.push(inspect(value, obj));\n });\n return collectionOf('Set', setSize.call(obj), setParts, indent);\n }\n if (isWeakMap(obj)) {\n return weakCollectionOf('WeakMap');\n }\n if (isWeakSet(obj)) {\n return weakCollectionOf('WeakSet');\n }\n if (isWeakRef(obj)) {\n return weakCollectionOf('WeakRef');\n }\n if (isNumber(obj)) {\n return markBoxed(inspect(Number(obj)));\n }\n if (isBigInt(obj)) {\n return markBoxed(inspect(bigIntValueOf.call(obj)));\n }\n if (isBoolean(obj)) {\n return markBoxed(booleanValueOf.call(obj));\n }\n if (isString(obj)) {\n return markBoxed(inspect(String(obj)));\n }\n if (!isDate(obj) && !isRegExp(obj)) {\n var ys = arrObjKeys(obj, inspect);\n var isPlainObject = gPO ? gPO(obj) === Object.prototype : obj instanceof Object || obj.constructor === Object;\n var protoTag = obj instanceof Object ? '' : 'null prototype';\n var stringTag = !isPlainObject && toStringTag && Object(obj) === obj && toStringTag in obj ? $slice.call(toStr(obj), 8, -1) : protoTag ? 'Object' : '';\n var constructorTag = isPlainObject || typeof obj.constructor !== 'function' ? '' : obj.constructor.name ? obj.constructor.name + ' ' : '';\n var tag = constructorTag + (stringTag || protoTag ? '[' + $join.call($concat.call([], stringTag || [], protoTag || []), ': ') + '] ' : '');\n if (ys.length === 0) { return tag + '{}'; }\n if (indent) {\n return tag + '{' + indentedJoin(ys, indent) + '}';\n }\n return tag + '{ ' + $join.call(ys, ', ') + ' }';\n }\n return String(obj);\n};\n\nfunction wrapQuotes(s, defaultStyle, opts) {\n var quoteChar = (opts.quoteStyle || defaultStyle) === 'double' ? '\"' : \"'\";\n return quoteChar + s + quoteChar;\n}\n\nfunction quote(s) {\n return $replace.call(String(s), /\"/g, '"');\n}\n\nfunction isArray(obj) { return toStr(obj) === '[object Array]' && (!toStringTag || !(typeof obj === 'object' && toStringTag in obj)); }\nfunction isDate(obj) { return toStr(obj) === '[object Date]' && (!toStringTag || !(typeof obj === 'object' && toStringTag in obj)); }\nfunction isRegExp(obj) { return toStr(obj) === '[object RegExp]' && (!toStringTag || !(typeof obj === 'object' && toStringTag in obj)); }\nfunction isError(obj) { return toStr(obj) === '[object Error]' && (!toStringTag || !(typeof obj === 'object' && toStringTag in obj)); }\nfunction isString(obj) { return toStr(obj) === '[object String]' && (!toStringTag || !(typeof obj === 'object' && toStringTag in obj)); }\nfunction isNumber(obj) { return toStr(obj) === '[object Number]' && (!toStringTag || !(typeof obj === 'object' && toStringTag in obj)); }\nfunction isBoolean(obj) { return toStr(obj) === '[object Boolean]' && (!toStringTag || !(typeof obj === 'object' && toStringTag in obj)); }\n\n// Symbol and BigInt do have Symbol.toStringTag by spec, so that can't be used to eliminate false positives\nfunction isSymbol(obj) {\n if (hasShammedSymbols) {\n return obj && typeof obj === 'object' && obj instanceof Symbol;\n }\n if (typeof obj === 'symbol') {\n return true;\n }\n if (!obj || typeof obj !== 'object' || !symToString) {\n return false;\n }\n try {\n symToString.call(obj);\n return true;\n } catch (e) {}\n return false;\n}\n\nfunction isBigInt(obj) {\n if (!obj || typeof obj !== 'object' || !bigIntValueOf) {\n return false;\n }\n try {\n bigIntValueOf.call(obj);\n return true;\n } catch (e) {}\n return false;\n}\n\nvar hasOwn = Object.prototype.hasOwnProperty || function (key) { return key in this; };\nfunction has(obj, key) {\n return hasOwn.call(obj, key);\n}\n\nfunction toStr(obj) {\n return objectToString.call(obj);\n}\n\nfunction nameOf(f) {\n if (f.name) { return f.name; }\n var m = $match.call(functionToString.call(f), /^function\\s*([\\w$]+)/);\n if (m) { return m[1]; }\n return null;\n}\n\nfunction indexOf(xs, x) {\n if (xs.indexOf) { return xs.indexOf(x); }\n for (var i = 0, l = xs.length; i < l; i++) {\n if (xs[i] === x) { return i; }\n }\n return -1;\n}\n\nfunction isMap(x) {\n if (!mapSize || !x || typeof x !== 'object') {\n return false;\n }\n try {\n mapSize.call(x);\n try {\n setSize.call(x);\n } catch (s) {\n return true;\n }\n return x instanceof Map; // core-js workaround, pre-v2.5.0\n } catch (e) {}\n return false;\n}\n\nfunction isWeakMap(x) {\n if (!weakMapHas || !x || typeof x !== 'object') {\n return false;\n }\n try {\n weakMapHas.call(x, weakMapHas);\n try {\n weakSetHas.call(x, weakSetHas);\n } catch (s) {\n return true;\n }\n return x instanceof WeakMap; // core-js workaround, pre-v2.5.0\n } catch (e) {}\n return false;\n}\n\nfunction isWeakRef(x) {\n if (!weakRefDeref || !x || typeof x !== 'object') {\n return false;\n }\n try {\n weakRefDeref.call(x);\n return true;\n } catch (e) {}\n return false;\n}\n\nfunction isSet(x) {\n if (!setSize || !x || typeof x !== 'object') {\n return false;\n }\n try {\n setSize.call(x);\n try {\n mapSize.call(x);\n } catch (m) {\n return true;\n }\n return x instanceof Set; // core-js workaround, pre-v2.5.0\n } catch (e) {}\n return false;\n}\n\nfunction isWeakSet(x) {\n if (!weakSetHas || !x || typeof x !== 'object') {\n return false;\n }\n try {\n weakSetHas.call(x, weakSetHas);\n try {\n weakMapHas.call(x, weakMapHas);\n } catch (s) {\n return true;\n }\n return x instanceof WeakSet; // core-js workaround, pre-v2.5.0\n } catch (e) {}\n return false;\n}\n\nfunction isElement(x) {\n if (!x || typeof x !== 'object') { return false; }\n if (typeof HTMLElement !== 'undefined' && x instanceof HTMLElement) {\n return true;\n }\n return typeof x.nodeName === 'string' && typeof x.getAttribute === 'function';\n}\n\nfunction inspectString(str, opts) {\n if (str.length > opts.maxStringLength) {\n var remaining = str.length - opts.maxStringLength;\n var trailer = '... ' + remaining + ' more character' + (remaining > 1 ? 's' : '');\n return inspectString($slice.call(str, 0, opts.maxStringLength), opts) + trailer;\n }\n // eslint-disable-next-line no-control-regex\n var s = $replace.call($replace.call(str, /(['\\\\])/g, '\\\\$1'), /[\\x00-\\x1f]/g, lowbyte);\n return wrapQuotes(s, 'single', opts);\n}\n\nfunction lowbyte(c) {\n var n = c.charCodeAt(0);\n var x = {\n 8: 'b',\n 9: 't',\n 10: 'n',\n 12: 'f',\n 13: 'r'\n }[n];\n if (x) { return '\\\\' + x; }\n return '\\\\x' + (n < 0x10 ? '0' : '') + $toUpperCase.call(n.toString(16));\n}\n\nfunction markBoxed(str) {\n return 'Object(' + str + ')';\n}\n\nfunction weakCollectionOf(type) {\n return type + ' { ? }';\n}\n\nfunction collectionOf(type, size, entries, indent) {\n var joinedEntries = indent ? indentedJoin(entries, indent) : $join.call(entries, ', ');\n return type + ' (' + size + ') {' + joinedEntries + '}';\n}\n\nfunction singleLineValues(xs) {\n for (var i = 0; i < xs.length; i++) {\n if (indexOf(xs[i], '\\n') >= 0) {\n return false;\n }\n }\n return true;\n}\n\nfunction getIndent(opts, depth) {\n var baseIndent;\n if (opts.indent === '\\t') {\n baseIndent = '\\t';\n } else if (typeof opts.indent === 'number' && opts.indent > 0) {\n baseIndent = $join.call(Array(opts.indent + 1), ' ');\n } else {\n return null;\n }\n return {\n base: baseIndent,\n prev: $join.call(Array(depth + 1), baseIndent)\n };\n}\n\nfunction indentedJoin(xs, indent) {\n if (xs.length === 0) { return ''; }\n var lineJoiner = '\\n' + indent.prev + indent.base;\n return lineJoiner + $join.call(xs, ',' + lineJoiner) + '\\n' + indent.prev;\n}\n\nfunction arrObjKeys(obj, inspect) {\n var isArr = isArray(obj);\n var xs = [];\n if (isArr) {\n xs.length = obj.length;\n for (var i = 0; i < obj.length; i++) {\n xs[i] = has(obj, i) ? inspect(obj[i], obj) : '';\n }\n }\n var syms = typeof gOPS === 'function' ? gOPS(obj) : [];\n var symMap;\n if (hasShammedSymbols) {\n symMap = {};\n for (var k = 0; k < syms.length; k++) {\n symMap['$' + syms[k]] = syms[k];\n }\n }\n\n for (var key in obj) { // eslint-disable-line no-restricted-syntax\n if (!has(obj, key)) { continue; } // eslint-disable-line no-restricted-syntax, no-continue\n if (isArr && String(Number(key)) === key && key < obj.length) { continue; } // eslint-disable-line no-restricted-syntax, no-continue\n if (hasShammedSymbols && symMap['$' + key] instanceof Symbol) {\n // this is to prevent shammed Symbols, which are stored as strings, from being included in the string key section\n continue; // eslint-disable-line no-restricted-syntax, no-continue\n } else if ($test.call(/[^\\w$]/, key)) {\n xs.push(inspect(key, obj) + ': ' + inspect(obj[key], obj));\n } else {\n xs.push(key + ': ' + inspect(obj[key], obj));\n }\n }\n if (typeof gOPS === 'function') {\n for (var j = 0; j < syms.length; j++) {\n if (isEnumerable.call(obj, syms[j])) {\n xs.push('[' + inspect(syms[j]) + ']: ' + inspect(obj[syms[j]], obj));\n }\n }\n }\n return xs;\n}\n","module.exports = function (num, base) {\n return parseInt(num.toString(), base || 8)\n}\n","var wrappy = require('wrappy')\nmodule.exports = wrappy(once)\nmodule.exports.strict = wrappy(onceStrict)\n\nonce.proto = once(function () {\n Object.defineProperty(Function.prototype, 'once', {\n value: function () {\n return once(this)\n },\n configurable: true\n })\n\n Object.defineProperty(Function.prototype, 'onceStrict', {\n value: function () {\n return onceStrict(this)\n },\n configurable: true\n })\n})\n\nfunction once (fn) {\n var f = function () {\n if (f.called) return f.value\n f.called = true\n return f.value = fn.apply(this, arguments)\n }\n f.called = false\n return f\n}\n\nfunction onceStrict (fn) {\n var f = function () {\n if (f.called)\n throw new Error(f.onceError)\n f.called = true\n return f.value = fn.apply(this, arguments)\n }\n var name = fn.name || 'Function wrapped with `once`'\n f.onceError = name + \" shouldn't be called more than once\"\n f.called = false\n return f\n}\n","module.exports = require('os');\n","// 'path' module extracted from Node.js v8.11.1 (only the posix part)\n// transplited with Babel\n\n// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\nfunction assertPath(path) {\n if (typeof path !== 'string') {\n throw new TypeError('Path must be a string. Received ' + JSON.stringify(path));\n }\n}\n\n// Resolves . and .. elements in a path with directory names\nfunction normalizeStringPosix(path, allowAboveRoot) {\n var res = '';\n var lastSegmentLength = 0;\n var lastSlash = -1;\n var dots = 0;\n var code;\n for (var i = 0; i <= path.length; ++i) {\n if (i < path.length)\n code = path.charCodeAt(i);\n else if (code === 47 /*/*/)\n break;\n else\n code = 47 /*/*/;\n if (code === 47 /*/*/) {\n if (lastSlash === i - 1 || dots === 1) {\n // NOOP\n } else if (lastSlash !== i - 1 && dots === 2) {\n if (res.length < 2 || lastSegmentLength !== 2 || res.charCodeAt(res.length - 1) !== 46 /*.*/ || res.charCodeAt(res.length - 2) !== 46 /*.*/) {\n if (res.length > 2) {\n var lastSlashIndex = res.lastIndexOf('/');\n if (lastSlashIndex !== res.length - 1) {\n if (lastSlashIndex === -1) {\n res = '';\n lastSegmentLength = 0;\n } else {\n res = res.slice(0, lastSlashIndex);\n lastSegmentLength = res.length - 1 - res.lastIndexOf('/');\n }\n lastSlash = i;\n dots = 0;\n continue;\n }\n } else if (res.length === 2 || res.length === 1) {\n res = '';\n lastSegmentLength = 0;\n lastSlash = i;\n dots = 0;\n continue;\n }\n }\n if (allowAboveRoot) {\n if (res.length > 0)\n res += '/..';\n else\n res = '..';\n lastSegmentLength = 2;\n }\n } else {\n if (res.length > 0)\n res += '/' + path.slice(lastSlash + 1, i);\n else\n res = path.slice(lastSlash + 1, i);\n lastSegmentLength = i - lastSlash - 1;\n }\n lastSlash = i;\n dots = 0;\n } else if (code === 46 /*.*/ && dots !== -1) {\n ++dots;\n } else {\n dots = -1;\n }\n }\n return res;\n}\n\nfunction _format(sep, pathObject) {\n var dir = pathObject.dir || pathObject.root;\n var base = pathObject.base || (pathObject.name || '') + (pathObject.ext || '');\n if (!dir) {\n return base;\n }\n if (dir === pathObject.root) {\n return dir + base;\n }\n return dir + sep + base;\n}\n\nvar posix = {\n // path.resolve([from ...], to)\n resolve: function resolve() {\n var resolvedPath = '';\n var resolvedAbsolute = false;\n var cwd;\n\n for (var i = arguments.length - 1; i >= -1 && !resolvedAbsolute; i--) {\n var path;\n if (i >= 0)\n path = arguments[i];\n else {\n if (cwd === undefined)\n cwd = process.cwd();\n path = cwd;\n }\n\n assertPath(path);\n\n // Skip empty entries\n if (path.length === 0) {\n continue;\n }\n\n resolvedPath = path + '/' + resolvedPath;\n resolvedAbsolute = path.charCodeAt(0) === 47 /*/*/;\n }\n\n // At this point the path should be resolved to a full absolute path, but\n // handle relative paths to be safe (might happen when process.cwd() fails)\n\n // Normalize the path\n resolvedPath = normalizeStringPosix(resolvedPath, !resolvedAbsolute);\n\n if (resolvedAbsolute) {\n if (resolvedPath.length > 0)\n return '/' + resolvedPath;\n else\n return '/';\n } else if (resolvedPath.length > 0) {\n return resolvedPath;\n } else {\n return '.';\n }\n },\n\n normalize: function normalize(path) {\n assertPath(path);\n\n if (path.length === 0) return '.';\n\n var isAbsolute = path.charCodeAt(0) === 47 /*/*/;\n var trailingSeparator = path.charCodeAt(path.length - 1) === 47 /*/*/;\n\n // Normalize the path\n path = normalizeStringPosix(path, !isAbsolute);\n\n if (path.length === 0 && !isAbsolute) path = '.';\n if (path.length > 0 && trailingSeparator) path += '/';\n\n if (isAbsolute) return '/' + path;\n return path;\n },\n\n isAbsolute: function isAbsolute(path) {\n assertPath(path);\n return path.length > 0 && path.charCodeAt(0) === 47 /*/*/;\n },\n\n join: function join() {\n if (arguments.length === 0)\n return '.';\n var joined;\n for (var i = 0; i < arguments.length; ++i) {\n var arg = arguments[i];\n assertPath(arg);\n if (arg.length > 0) {\n if (joined === undefined)\n joined = arg;\n else\n joined += '/' + arg;\n }\n }\n if (joined === undefined)\n return '.';\n return posix.normalize(joined);\n },\n\n relative: function relative(from, to) {\n assertPath(from);\n assertPath(to);\n\n if (from === to) return '';\n\n from = posix.resolve(from);\n to = posix.resolve(to);\n\n if (from === to) return '';\n\n // Trim any leading backslashes\n var fromStart = 1;\n for (; fromStart < from.length; ++fromStart) {\n if (from.charCodeAt(fromStart) !== 47 /*/*/)\n break;\n }\n var fromEnd = from.length;\n var fromLen = fromEnd - fromStart;\n\n // Trim any leading backslashes\n var toStart = 1;\n for (; toStart < to.length; ++toStart) {\n if (to.charCodeAt(toStart) !== 47 /*/*/)\n break;\n }\n var toEnd = to.length;\n var toLen = toEnd - toStart;\n\n // Compare paths to find the longest common path from root\n var length = fromLen < toLen ? fromLen : toLen;\n var lastCommonSep = -1;\n var i = 0;\n for (; i <= length; ++i) {\n if (i === length) {\n if (toLen > length) {\n if (to.charCodeAt(toStart + i) === 47 /*/*/) {\n // We get here if `from` is the exact base path for `to`.\n // For example: from='/foo/bar'; to='/foo/bar/baz'\n return to.slice(toStart + i + 1);\n } else if (i === 0) {\n // We get here if `from` is the root\n // For example: from='/'; to='/foo'\n return to.slice(toStart + i);\n }\n } else if (fromLen > length) {\n if (from.charCodeAt(fromStart + i) === 47 /*/*/) {\n // We get here if `to` is the exact base path for `from`.\n // For example: from='/foo/bar/baz'; to='/foo/bar'\n lastCommonSep = i;\n } else if (i === 0) {\n // We get here if `to` is the root.\n // For example: from='/foo'; to='/'\n lastCommonSep = 0;\n }\n }\n break;\n }\n var fromCode = from.charCodeAt(fromStart + i);\n var toCode = to.charCodeAt(toStart + i);\n if (fromCode !== toCode)\n break;\n else if (fromCode === 47 /*/*/)\n lastCommonSep = i;\n }\n\n var out = '';\n // Generate the relative path based on the path difference between `to`\n // and `from`\n for (i = fromStart + lastCommonSep + 1; i <= fromEnd; ++i) {\n if (i === fromEnd || from.charCodeAt(i) === 47 /*/*/) {\n if (out.length === 0)\n out += '..';\n else\n out += '/..';\n }\n }\n\n // Lastly, append the rest of the destination (`to`) path that comes after\n // the common path parts\n if (out.length > 0)\n return out + to.slice(toStart + lastCommonSep);\n else {\n toStart += lastCommonSep;\n if (to.charCodeAt(toStart) === 47 /*/*/)\n ++toStart;\n return to.slice(toStart);\n }\n },\n\n _makeLong: function _makeLong(path) {\n return path;\n },\n\n dirname: function dirname(path) {\n assertPath(path);\n if (path.length === 0) return '.';\n var code = path.charCodeAt(0);\n var hasRoot = code === 47 /*/*/;\n var end = -1;\n var matchedSlash = true;\n for (var i = path.length - 1; i >= 1; --i) {\n code = path.charCodeAt(i);\n if (code === 47 /*/*/) {\n if (!matchedSlash) {\n end = i;\n break;\n }\n } else {\n // We saw the first non-path separator\n matchedSlash = false;\n }\n }\n\n if (end === -1) return hasRoot ? '/' : '.';\n if (hasRoot && end === 1) return '//';\n return path.slice(0, end);\n },\n\n basename: function basename(path, ext) {\n if (ext !== undefined && typeof ext !== 'string') throw new TypeError('\"ext\" argument must be a string');\n assertPath(path);\n\n var start = 0;\n var end = -1;\n var matchedSlash = true;\n var i;\n\n if (ext !== undefined && ext.length > 0 && ext.length <= path.length) {\n if (ext.length === path.length && ext === path) return '';\n var extIdx = ext.length - 1;\n var firstNonSlashEnd = -1;\n for (i = path.length - 1; i >= 0; --i) {\n var code = path.charCodeAt(i);\n if (code === 47 /*/*/) {\n // If we reached a path separator that was not part of a set of path\n // separators at the end of the string, stop now\n if (!matchedSlash) {\n start = i + 1;\n break;\n }\n } else {\n if (firstNonSlashEnd === -1) {\n // We saw the first non-path separator, remember this index in case\n // we need it if the extension ends up not matching\n matchedSlash = false;\n firstNonSlashEnd = i + 1;\n }\n if (extIdx >= 0) {\n // Try to match the explicit extension\n if (code === ext.charCodeAt(extIdx)) {\n if (--extIdx === -1) {\n // We matched the extension, so mark this as the end of our path\n // component\n end = i;\n }\n } else {\n // Extension does not match, so our result is the entire path\n // component\n extIdx = -1;\n end = firstNonSlashEnd;\n }\n }\n }\n }\n\n if (start === end) end = firstNonSlashEnd;else if (end === -1) end = path.length;\n return path.slice(start, end);\n } else {\n for (i = path.length - 1; i >= 0; --i) {\n if (path.charCodeAt(i) === 47 /*/*/) {\n // If we reached a path separator that was not part of a set of path\n // separators at the end of the string, stop now\n if (!matchedSlash) {\n start = i + 1;\n break;\n }\n } else if (end === -1) {\n // We saw the first non-path separator, mark this as the end of our\n // path component\n matchedSlash = false;\n end = i + 1;\n }\n }\n\n if (end === -1) return '';\n return path.slice(start, end);\n }\n },\n\n extname: function extname(path) {\n assertPath(path);\n var startDot = -1;\n var startPart = 0;\n var end = -1;\n var matchedSlash = true;\n // Track the state of characters (if any) we see before our first dot and\n // after any path separator we find\n var preDotState = 0;\n for (var i = path.length - 1; i >= 0; --i) {\n var code = path.charCodeAt(i);\n if (code === 47 /*/*/) {\n // If we reached a path separator that was not part of a set of path\n // separators at the end of the string, stop now\n if (!matchedSlash) {\n startPart = i + 1;\n break;\n }\n continue;\n }\n if (end === -1) {\n // We saw the first non-path separator, mark this as the end of our\n // extension\n matchedSlash = false;\n end = i + 1;\n }\n if (code === 46 /*.*/) {\n // If this is our first dot, mark it as the start of our extension\n if (startDot === -1)\n startDot = i;\n else if (preDotState !== 1)\n preDotState = 1;\n } else if (startDot !== -1) {\n // We saw a non-dot and non-path separator before our dot, so we should\n // have a good chance at having a non-empty extension\n preDotState = -1;\n }\n }\n\n if (startDot === -1 || end === -1 ||\n // We saw a non-dot character immediately before the dot\n preDotState === 0 ||\n // The (right-most) trimmed path component is exactly '..'\n preDotState === 1 && startDot === end - 1 && startDot === startPart + 1) {\n return '';\n }\n return path.slice(startDot, end);\n },\n\n format: function format(pathObject) {\n if (pathObject === null || typeof pathObject !== 'object') {\n throw new TypeError('The \"pathObject\" argument must be of type Object. Received type ' + typeof pathObject);\n }\n return _format('/', pathObject);\n },\n\n parse: function parse(path) {\n assertPath(path);\n\n var ret = { root: '', dir: '', base: '', ext: '', name: '' };\n if (path.length === 0) return ret;\n var code = path.charCodeAt(0);\n var isAbsolute = code === 47 /*/*/;\n var start;\n if (isAbsolute) {\n ret.root = '/';\n start = 1;\n } else {\n start = 0;\n }\n var startDot = -1;\n var startPart = 0;\n var end = -1;\n var matchedSlash = true;\n var i = path.length - 1;\n\n // Track the state of characters (if any) we see before our first dot and\n // after any path separator we find\n var preDotState = 0;\n\n // Get non-dir info\n for (; i >= start; --i) {\n code = path.charCodeAt(i);\n if (code === 47 /*/*/) {\n // If we reached a path separator that was not part of a set of path\n // separators at the end of the string, stop now\n if (!matchedSlash) {\n startPart = i + 1;\n break;\n }\n continue;\n }\n if (end === -1) {\n // We saw the first non-path separator, mark this as the end of our\n // extension\n matchedSlash = false;\n end = i + 1;\n }\n if (code === 46 /*.*/) {\n // If this is our first dot, mark it as the start of our extension\n if (startDot === -1) startDot = i;else if (preDotState !== 1) preDotState = 1;\n } else if (startDot !== -1) {\n // We saw a non-dot and non-path separator before our dot, so we should\n // have a good chance at having a non-empty extension\n preDotState = -1;\n }\n }\n\n if (startDot === -1 || end === -1 ||\n // We saw a non-dot character immediately before the dot\n preDotState === 0 ||\n // The (right-most) trimmed path component is exactly '..'\n preDotState === 1 && startDot === end - 1 && startDot === startPart + 1) {\n if (end !== -1) {\n if (startPart === 0 && isAbsolute) ret.base = ret.name = path.slice(1, end);else ret.base = ret.name = path.slice(startPart, end);\n }\n } else {\n if (startPart === 0 && isAbsolute) {\n ret.name = path.slice(1, startDot);\n ret.base = path.slice(1, end);\n } else {\n ret.name = path.slice(startPart, startDot);\n ret.base = path.slice(startPart, end);\n }\n ret.ext = path.slice(startDot, end);\n }\n\n if (startPart > 0) ret.dir = path.slice(0, startPart - 1);else if (isAbsolute) ret.dir = '/';\n\n return ret;\n },\n\n sep: '/',\n delimiter: ':',\n win32: null,\n posix: null\n};\n\nposix.posix = posix;\n\nmodule.exports = posix;\n","'use strict';\n\nif (typeof process === 'undefined' ||\n !process.version ||\n process.version.indexOf('v0.') === 0 ||\n process.version.indexOf('v1.') === 0 && process.version.indexOf('v1.8.') !== 0) {\n module.exports = { nextTick: nextTick };\n} else {\n module.exports = process\n}\n\nfunction nextTick(fn, arg1, arg2, arg3) {\n if (typeof fn !== 'function') {\n throw new TypeError('\"callback\" argument must be a function');\n }\n var len = arguments.length;\n var args, i;\n switch (len) {\n case 0:\n case 1:\n return process.nextTick(fn);\n case 2:\n return process.nextTick(function afterTickOne() {\n fn.call(null, arg1);\n });\n case 3:\n return process.nextTick(function afterTickTwo() {\n fn.call(null, arg1, arg2);\n });\n case 4:\n return process.nextTick(function afterTickThree() {\n fn.call(null, arg1, arg2, arg3);\n });\n default:\n args = new Array(len - 1);\n i = 0;\n while (i < args.length) {\n args[i++] = arguments[i];\n }\n return process.nextTick(function afterTick() {\n fn.apply(null, args);\n });\n }\n}\n\n","// shim for using process in browser\nvar process = module.exports = {};\n\n// cached from whatever global is present so that test runners that stub it\n// don't break things. But we need to wrap it in a try catch in case it is\n// wrapped in strict mode code which doesn't define any globals. It's inside a\n// function because try/catches deoptimize in certain engines.\n\nvar cachedSetTimeout;\nvar cachedClearTimeout;\n\nfunction defaultSetTimout() {\n throw new Error('setTimeout has not been defined');\n}\nfunction defaultClearTimeout () {\n throw new Error('clearTimeout has not been defined');\n}\n(function () {\n try {\n if (typeof setTimeout === 'function') {\n cachedSetTimeout = setTimeout;\n } else {\n cachedSetTimeout = defaultSetTimout;\n }\n } catch (e) {\n cachedSetTimeout = defaultSetTimout;\n }\n try {\n if (typeof clearTimeout === 'function') {\n cachedClearTimeout = clearTimeout;\n } else {\n cachedClearTimeout = defaultClearTimeout;\n }\n } catch (e) {\n cachedClearTimeout = defaultClearTimeout;\n }\n} ())\nfunction runTimeout(fun) {\n if (cachedSetTimeout === setTimeout) {\n //normal enviroments in sane situations\n return setTimeout(fun, 0);\n }\n // if setTimeout wasn't available but was latter defined\n if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {\n cachedSetTimeout = setTimeout;\n return setTimeout(fun, 0);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedSetTimeout(fun, 0);\n } catch(e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedSetTimeout.call(null, fun, 0);\n } catch(e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error\n return cachedSetTimeout.call(this, fun, 0);\n }\n }\n\n\n}\nfunction runClearTimeout(marker) {\n if (cachedClearTimeout === clearTimeout) {\n //normal enviroments in sane situations\n return clearTimeout(marker);\n }\n // if clearTimeout wasn't available but was latter defined\n if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {\n cachedClearTimeout = clearTimeout;\n return clearTimeout(marker);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedClearTimeout(marker);\n } catch (e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedClearTimeout.call(null, marker);\n } catch (e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error.\n // Some versions of I.E. have different rules for clearTimeout vs setTimeout\n return cachedClearTimeout.call(this, marker);\n }\n }\n\n\n\n}\nvar queue = [];\nvar draining = false;\nvar currentQueue;\nvar queueIndex = -1;\n\nfunction cleanUpNextTick() {\n if (!draining || !currentQueue) {\n return;\n }\n draining = false;\n if (currentQueue.length) {\n queue = currentQueue.concat(queue);\n } else {\n queueIndex = -1;\n }\n if (queue.length) {\n drainQueue();\n }\n}\n\nfunction drainQueue() {\n if (draining) {\n return;\n }\n var timeout = runTimeout(cleanUpNextTick);\n draining = true;\n\n var len = queue.length;\n while(len) {\n currentQueue = queue;\n queue = [];\n while (++queueIndex < len) {\n if (currentQueue) {\n currentQueue[queueIndex].run();\n }\n }\n queueIndex = -1;\n len = queue.length;\n }\n currentQueue = null;\n draining = false;\n runClearTimeout(timeout);\n}\n\nprocess.nextTick = function (fun) {\n var args = new Array(arguments.length - 1);\n if (arguments.length > 1) {\n for (var i = 1; i < arguments.length; i++) {\n args[i - 1] = arguments[i];\n }\n }\n queue.push(new Item(fun, args));\n if (queue.length === 1 && !draining) {\n runTimeout(drainQueue);\n }\n};\n\n// v8 likes predictible objects\nfunction Item(fun, array) {\n this.fun = fun;\n this.array = array;\n}\nItem.prototype.run = function () {\n this.fun.apply(null, this.array);\n};\nprocess.title = 'browser';\nprocess.browser = true;\nprocess.env = {};\nprocess.argv = [];\nprocess.version = ''; // empty string to avoid regexp issues\nprocess.versions = {};\n\nfunction noop() {}\n\nprocess.on = noop;\nprocess.addListener = noop;\nprocess.once = noop;\nprocess.off = noop;\nprocess.removeListener = noop;\nprocess.removeAllListeners = noop;\nprocess.emit = noop;\nprocess.prependListener = noop;\nprocess.prependOnceListener = noop;\n\nprocess.listeners = function (name) { return [] }\n\nprocess.binding = function (name) {\n throw new Error('process.binding is not supported');\n};\n\nprocess.cwd = function () { return '/' };\nprocess.chdir = function (dir) {\n throw new Error('process.chdir is not supported');\n};\nprocess.umask = function() { return 0; };\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\n\nfunction emptyFunction() {}\nfunction emptyFunctionWithReset() {}\nemptyFunctionWithReset.resetWarningCache = emptyFunction;\n\nmodule.exports = function() {\n function shim(props, propName, componentName, location, propFullName, secret) {\n if (secret === ReactPropTypesSecret) {\n // It is still safe when called from React.\n return;\n }\n var err = new Error(\n 'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +\n 'Use PropTypes.checkPropTypes() to call them. ' +\n 'Read more at http://fb.me/use-check-prop-types'\n );\n err.name = 'Invariant Violation';\n throw err;\n };\n shim.isRequired = shim;\n function getShim() {\n return shim;\n };\n // Important!\n // Keep this list in sync with production version in `./factoryWithTypeCheckers.js`.\n var ReactPropTypes = {\n array: shim,\n bigint: shim,\n bool: shim,\n func: shim,\n number: shim,\n object: shim,\n string: shim,\n symbol: shim,\n\n any: shim,\n arrayOf: getShim,\n element: shim,\n elementType: shim,\n instanceOf: getShim,\n node: shim,\n objectOf: getShim,\n oneOf: getShim,\n oneOfType: getShim,\n shape: getShim,\n exact: getShim,\n\n checkPropTypes: emptyFunctionWithReset,\n resetWarningCache: emptyFunction\n };\n\n ReactPropTypes.PropTypes = ReactPropTypes;\n\n return ReactPropTypes;\n};\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nif (process.env.NODE_ENV !== 'production') {\n var ReactIs = require('react-is');\n\n // By explicitly using `prop-types` you are opting into new development behavior.\n // http://fb.me/prop-types-in-prod\n var throwOnDirectAccess = true;\n module.exports = require('./factoryWithTypeCheckers')(ReactIs.isElement, throwOnDirectAccess);\n} else {\n // By explicitly using `prop-types` you are opting into new production behavior.\n // http://fb.me/prop-types-in-prod\n module.exports = require('./factoryWithThrowingShims')();\n}\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED';\n\nmodule.exports = ReactPropTypesSecret;\n","/*!\n * prr\n * (c) 2013 Rod Vagg \n * https://github.com/rvagg/prr\n * License: MIT\n */\n\n(function (name, context, definition) {\n if (typeof module != 'undefined' && module.exports)\n module.exports = definition()\n else\n context[name] = definition()\n})('prr', this, function() {\n\n var setProperty = typeof Object.defineProperty == 'function'\n ? function (obj, key, options) {\n Object.defineProperty(obj, key, options)\n return obj\n }\n : function (obj, key, options) { // < es5\n obj[key] = options.value\n return obj\n }\n\n , makeOptions = function (value, options) {\n var oo = typeof options == 'object'\n , os = !oo && typeof options == 'string'\n , op = function (p) {\n return oo\n ? !!options[p]\n : os\n ? options.indexOf(p[0]) > -1\n : false\n }\n\n return {\n enumerable : op('enumerable')\n , configurable : op('configurable')\n , writable : op('writable')\n , value : value\n }\n }\n\n , prr = function (obj, key, value, options) {\n var k\n\n options = makeOptions(value, options)\n\n if (typeof key == 'object') {\n for (k in key) {\n if (Object.hasOwnProperty.call(key, k)) {\n options.value = key[k]\n setProperty(obj, k, options)\n }\n }\n return obj\n }\n\n return setProperty(obj, key, options)\n }\n\n return prr\n})","'use strict';\n\n/** Highest positive signed 32-bit float value */\nconst maxInt = 2147483647; // aka. 0x7FFFFFFF or 2^31-1\n\n/** Bootstring parameters */\nconst base = 36;\nconst tMin = 1;\nconst tMax = 26;\nconst skew = 38;\nconst damp = 700;\nconst initialBias = 72;\nconst initialN = 128; // 0x80\nconst delimiter = '-'; // '\\x2D'\n\n/** Regular expressions */\nconst regexPunycode = /^xn--/;\nconst regexNonASCII = /[^\\0-\\x7E]/; // non-ASCII chars\nconst regexSeparators = /[\\x2E\\u3002\\uFF0E\\uFF61]/g; // RFC 3490 separators\n\n/** Error messages */\nconst errors = {\n\t'overflow': 'Overflow: input needs wider integers to process',\n\t'not-basic': 'Illegal input >= 0x80 (not a basic code point)',\n\t'invalid-input': 'Invalid input'\n};\n\n/** Convenience shortcuts */\nconst baseMinusTMin = base - tMin;\nconst floor = Math.floor;\nconst stringFromCharCode = String.fromCharCode;\n\n/*--------------------------------------------------------------------------*/\n\n/**\n * A generic error utility function.\n * @private\n * @param {String} type The error type.\n * @returns {Error} Throws a `RangeError` with the applicable error message.\n */\nfunction error(type) {\n\tthrow new RangeError(errors[type]);\n}\n\n/**\n * A generic `Array#map` utility function.\n * @private\n * @param {Array} array The array to iterate over.\n * @param {Function} callback The function that gets called for every array\n * item.\n * @returns {Array} A new array of values returned by the callback function.\n */\nfunction map(array, fn) {\n\tconst result = [];\n\tlet length = array.length;\n\twhile (length--) {\n\t\tresult[length] = fn(array[length]);\n\t}\n\treturn result;\n}\n\n/**\n * A simple `Array#map`-like wrapper to work with domain name strings or email\n * addresses.\n * @private\n * @param {String} domain The domain name or email address.\n * @param {Function} callback The function that gets called for every\n * character.\n * @returns {Array} A new string of characters returned by the callback\n * function.\n */\nfunction mapDomain(string, fn) {\n\tconst parts = string.split('@');\n\tlet result = '';\n\tif (parts.length > 1) {\n\t\t// In email addresses, only the domain name should be punycoded. Leave\n\t\t// the local part (i.e. everything up to `@`) intact.\n\t\tresult = parts[0] + '@';\n\t\tstring = parts[1];\n\t}\n\t// Avoid `split(regex)` for IE8 compatibility. See #17.\n\tstring = string.replace(regexSeparators, '\\x2E');\n\tconst labels = string.split('.');\n\tconst encoded = map(labels, fn).join('.');\n\treturn result + encoded;\n}\n\n/**\n * Creates an array containing the numeric code points of each Unicode\n * character in the string. While JavaScript uses UCS-2 internally,\n * this function will convert a pair of surrogate halves (each of which\n * UCS-2 exposes as separate characters) into a single code point,\n * matching UTF-16.\n * @see `punycode.ucs2.encode`\n * @see \n * @memberOf punycode.ucs2\n * @name decode\n * @param {String} string The Unicode input string (UCS-2).\n * @returns {Array} The new array of code points.\n */\nfunction ucs2decode(string) {\n\tconst output = [];\n\tlet counter = 0;\n\tconst length = string.length;\n\twhile (counter < length) {\n\t\tconst value = string.charCodeAt(counter++);\n\t\tif (value >= 0xD800 && value <= 0xDBFF && counter < length) {\n\t\t\t// It's a high surrogate, and there is a next character.\n\t\t\tconst extra = string.charCodeAt(counter++);\n\t\t\tif ((extra & 0xFC00) == 0xDC00) { // Low surrogate.\n\t\t\t\toutput.push(((value & 0x3FF) << 10) + (extra & 0x3FF) + 0x10000);\n\t\t\t} else {\n\t\t\t\t// It's an unmatched surrogate; only append this code unit, in case the\n\t\t\t\t// next code unit is the high surrogate of a surrogate pair.\n\t\t\t\toutput.push(value);\n\t\t\t\tcounter--;\n\t\t\t}\n\t\t} else {\n\t\t\toutput.push(value);\n\t\t}\n\t}\n\treturn output;\n}\n\n/**\n * Creates a string based on an array of numeric code points.\n * @see `punycode.ucs2.decode`\n * @memberOf punycode.ucs2\n * @name encode\n * @param {Array} codePoints The array of numeric code points.\n * @returns {String} The new Unicode string (UCS-2).\n */\nconst ucs2encode = array => String.fromCodePoint(...array);\n\n/**\n * Converts a basic code point into a digit/integer.\n * @see `digitToBasic()`\n * @private\n * @param {Number} codePoint The basic numeric code point value.\n * @returns {Number} The numeric value of a basic code point (for use in\n * representing integers) in the range `0` to `base - 1`, or `base` if\n * the code point does not represent a value.\n */\nconst basicToDigit = function(codePoint) {\n\tif (codePoint - 0x30 < 0x0A) {\n\t\treturn codePoint - 0x16;\n\t}\n\tif (codePoint - 0x41 < 0x1A) {\n\t\treturn codePoint - 0x41;\n\t}\n\tif (codePoint - 0x61 < 0x1A) {\n\t\treturn codePoint - 0x61;\n\t}\n\treturn base;\n};\n\n/**\n * Converts a digit/integer into a basic code point.\n * @see `basicToDigit()`\n * @private\n * @param {Number} digit The numeric value of a basic code point.\n * @returns {Number} The basic code point whose value (when used for\n * representing integers) is `digit`, which needs to be in the range\n * `0` to `base - 1`. If `flag` is non-zero, the uppercase form is\n * used; else, the lowercase form is used. The behavior is undefined\n * if `flag` is non-zero and `digit` has no uppercase form.\n */\nconst digitToBasic = function(digit, flag) {\n\t// 0..25 map to ASCII a..z or A..Z\n\t// 26..35 map to ASCII 0..9\n\treturn digit + 22 + 75 * (digit < 26) - ((flag != 0) << 5);\n};\n\n/**\n * Bias adaptation function as per section 3.4 of RFC 3492.\n * https://tools.ietf.org/html/rfc3492#section-3.4\n * @private\n */\nconst adapt = function(delta, numPoints, firstTime) {\n\tlet k = 0;\n\tdelta = firstTime ? floor(delta / damp) : delta >> 1;\n\tdelta += floor(delta / numPoints);\n\tfor (/* no initialization */; delta > baseMinusTMin * tMax >> 1; k += base) {\n\t\tdelta = floor(delta / baseMinusTMin);\n\t}\n\treturn floor(k + (baseMinusTMin + 1) * delta / (delta + skew));\n};\n\n/**\n * Converts a Punycode string of ASCII-only symbols to a string of Unicode\n * symbols.\n * @memberOf punycode\n * @param {String} input The Punycode string of ASCII-only symbols.\n * @returns {String} The resulting string of Unicode symbols.\n */\nconst decode = function(input) {\n\t// Don't use UCS-2.\n\tconst output = [];\n\tconst inputLength = input.length;\n\tlet i = 0;\n\tlet n = initialN;\n\tlet bias = initialBias;\n\n\t// Handle the basic code points: let `basic` be the number of input code\n\t// points before the last delimiter, or `0` if there is none, then copy\n\t// the first basic code points to the output.\n\n\tlet basic = input.lastIndexOf(delimiter);\n\tif (basic < 0) {\n\t\tbasic = 0;\n\t}\n\n\tfor (let j = 0; j < basic; ++j) {\n\t\t// if it's not a basic code point\n\t\tif (input.charCodeAt(j) >= 0x80) {\n\t\t\terror('not-basic');\n\t\t}\n\t\toutput.push(input.charCodeAt(j));\n\t}\n\n\t// Main decoding loop: start just after the last delimiter if any basic code\n\t// points were copied; start at the beginning otherwise.\n\n\tfor (let index = basic > 0 ? basic + 1 : 0; index < inputLength; /* no final expression */) {\n\n\t\t// `index` is the index of the next character to be consumed.\n\t\t// Decode a generalized variable-length integer into `delta`,\n\t\t// which gets added to `i`. The overflow checking is easier\n\t\t// if we increase `i` as we go, then subtract off its starting\n\t\t// value at the end to obtain `delta`.\n\t\tlet oldi = i;\n\t\tfor (let w = 1, k = base; /* no condition */; k += base) {\n\n\t\t\tif (index >= inputLength) {\n\t\t\t\terror('invalid-input');\n\t\t\t}\n\n\t\t\tconst digit = basicToDigit(input.charCodeAt(index++));\n\n\t\t\tif (digit >= base || digit > floor((maxInt - i) / w)) {\n\t\t\t\terror('overflow');\n\t\t\t}\n\n\t\t\ti += digit * w;\n\t\t\tconst t = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias);\n\n\t\t\tif (digit < t) {\n\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tconst baseMinusT = base - t;\n\t\t\tif (w > floor(maxInt / baseMinusT)) {\n\t\t\t\terror('overflow');\n\t\t\t}\n\n\t\t\tw *= baseMinusT;\n\n\t\t}\n\n\t\tconst out = output.length + 1;\n\t\tbias = adapt(i - oldi, out, oldi == 0);\n\n\t\t// `i` was supposed to wrap around from `out` to `0`,\n\t\t// incrementing `n` each time, so we'll fix that now:\n\t\tif (floor(i / out) > maxInt - n) {\n\t\t\terror('overflow');\n\t\t}\n\n\t\tn += floor(i / out);\n\t\ti %= out;\n\n\t\t// Insert `n` at position `i` of the output.\n\t\toutput.splice(i++, 0, n);\n\n\t}\n\n\treturn String.fromCodePoint(...output);\n};\n\n/**\n * Converts a string of Unicode symbols (e.g. a domain name label) to a\n * Punycode string of ASCII-only symbols.\n * @memberOf punycode\n * @param {String} input The string of Unicode symbols.\n * @returns {String} The resulting Punycode string of ASCII-only symbols.\n */\nconst encode = function(input) {\n\tconst output = [];\n\n\t// Convert the input in UCS-2 to an array of Unicode code points.\n\tinput = ucs2decode(input);\n\n\t// Cache the length.\n\tlet inputLength = input.length;\n\n\t// Initialize the state.\n\tlet n = initialN;\n\tlet delta = 0;\n\tlet bias = initialBias;\n\n\t// Handle the basic code points.\n\tfor (const currentValue of input) {\n\t\tif (currentValue < 0x80) {\n\t\t\toutput.push(stringFromCharCode(currentValue));\n\t\t}\n\t}\n\n\tlet basicLength = output.length;\n\tlet handledCPCount = basicLength;\n\n\t// `handledCPCount` is the number of code points that have been handled;\n\t// `basicLength` is the number of basic code points.\n\n\t// Finish the basic string with a delimiter unless it's empty.\n\tif (basicLength) {\n\t\toutput.push(delimiter);\n\t}\n\n\t// Main encoding loop:\n\twhile (handledCPCount < inputLength) {\n\n\t\t// All non-basic code points < n have been handled already. Find the next\n\t\t// larger one:\n\t\tlet m = maxInt;\n\t\tfor (const currentValue of input) {\n\t\t\tif (currentValue >= n && currentValue < m) {\n\t\t\t\tm = currentValue;\n\t\t\t}\n\t\t}\n\n\t\t// Increase `delta` enough to advance the decoder's state to ,\n\t\t// but guard against overflow.\n\t\tconst handledCPCountPlusOne = handledCPCount + 1;\n\t\tif (m - n > floor((maxInt - delta) / handledCPCountPlusOne)) {\n\t\t\terror('overflow');\n\t\t}\n\n\t\tdelta += (m - n) * handledCPCountPlusOne;\n\t\tn = m;\n\n\t\tfor (const currentValue of input) {\n\t\t\tif (currentValue < n && ++delta > maxInt) {\n\t\t\t\terror('overflow');\n\t\t\t}\n\t\t\tif (currentValue == n) {\n\t\t\t\t// Represent delta as a generalized variable-length integer.\n\t\t\t\tlet q = delta;\n\t\t\t\tfor (let k = base; /* no condition */; k += base) {\n\t\t\t\t\tconst t = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias);\n\t\t\t\t\tif (q < t) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t\tconst qMinusT = q - t;\n\t\t\t\t\tconst baseMinusT = base - t;\n\t\t\t\t\toutput.push(\n\t\t\t\t\t\tstringFromCharCode(digitToBasic(t + qMinusT % baseMinusT, 0))\n\t\t\t\t\t);\n\t\t\t\t\tq = floor(qMinusT / baseMinusT);\n\t\t\t\t}\n\n\t\t\t\toutput.push(stringFromCharCode(digitToBasic(q, 0)));\n\t\t\t\tbias = adapt(delta, handledCPCountPlusOne, handledCPCount == basicLength);\n\t\t\t\tdelta = 0;\n\t\t\t\t++handledCPCount;\n\t\t\t}\n\t\t}\n\n\t\t++delta;\n\t\t++n;\n\n\t}\n\treturn output.join('');\n};\n\n/**\n * Converts a Punycode string representing a domain name or an email address\n * to Unicode. Only the Punycoded parts of the input will be converted, i.e.\n * it doesn't matter if you call it on a string that has already been\n * converted to Unicode.\n * @memberOf punycode\n * @param {String} input The Punycoded domain name or email address to\n * convert to Unicode.\n * @returns {String} The Unicode representation of the given Punycode\n * string.\n */\nconst toUnicode = function(input) {\n\treturn mapDomain(input, function(string) {\n\t\treturn regexPunycode.test(string)\n\t\t\t? decode(string.slice(4).toLowerCase())\n\t\t\t: string;\n\t});\n};\n\n/**\n * Converts a Unicode string representing a domain name or an email address to\n * Punycode. Only the non-ASCII parts of the domain name will be converted,\n * i.e. it doesn't matter if you call it with a domain that's already in\n * ASCII.\n * @memberOf punycode\n * @param {String} input The domain name or email address to convert, as a\n * Unicode string.\n * @returns {String} The Punycode representation of the given domain name or\n * email address.\n */\nconst toASCII = function(input) {\n\treturn mapDomain(input, function(string) {\n\t\treturn regexNonASCII.test(string)\n\t\t\t? 'xn--' + encode(string)\n\t\t\t: string;\n\t});\n};\n\n/*--------------------------------------------------------------------------*/\n\n/** Define the public API */\nconst punycode = {\n\t/**\n\t * A string representing the current Punycode.js version number.\n\t * @memberOf punycode\n\t * @type String\n\t */\n\t'version': '2.1.0',\n\t/**\n\t * An object of methods to convert from JavaScript's internal character\n\t * representation (UCS-2) to Unicode code points, and back.\n\t * @see \n\t * @memberOf punycode\n\t * @type Object\n\t */\n\t'ucs2': {\n\t\t'decode': ucs2decode,\n\t\t'encode': ucs2encode\n\t},\n\t'decode': decode,\n\t'encode': encode,\n\t'toASCII': toASCII,\n\t'toUnicode': toUnicode\n};\n\nexport { ucs2decode, ucs2encode, decode, encode, toASCII, toUnicode };\nexport default punycode;\n","'use strict';\n\nvar replace = String.prototype.replace;\nvar percentTwenties = /%20/g;\n\nvar Format = {\n RFC1738: 'RFC1738',\n RFC3986: 'RFC3986'\n};\n\nmodule.exports = {\n 'default': Format.RFC3986,\n formatters: {\n RFC1738: function (value) {\n return replace.call(value, percentTwenties, '+');\n },\n RFC3986: function (value) {\n return String(value);\n }\n },\n RFC1738: Format.RFC1738,\n RFC3986: Format.RFC3986\n};\n","'use strict';\n\nvar stringify = require('./stringify');\nvar parse = require('./parse');\nvar formats = require('./formats');\n\nmodule.exports = {\n formats: formats,\n parse: parse,\n stringify: stringify\n};\n","'use strict';\n\nvar utils = require('./utils');\n\nvar has = Object.prototype.hasOwnProperty;\nvar isArray = Array.isArray;\n\nvar defaults = {\n allowDots: false,\n allowPrototypes: false,\n allowSparse: false,\n arrayLimit: 20,\n charset: 'utf-8',\n charsetSentinel: false,\n comma: false,\n decoder: utils.decode,\n delimiter: '&',\n depth: 5,\n ignoreQueryPrefix: false,\n interpretNumericEntities: false,\n parameterLimit: 1000,\n parseArrays: true,\n plainObjects: false,\n strictNullHandling: false\n};\n\nvar interpretNumericEntities = function (str) {\n return str.replace(/&#(\\d+);/g, function ($0, numberStr) {\n return String.fromCharCode(parseInt(numberStr, 10));\n });\n};\n\nvar parseArrayValue = function (val, options) {\n if (val && typeof val === 'string' && options.comma && val.indexOf(',') > -1) {\n return val.split(',');\n }\n\n return val;\n};\n\n// This is what browsers will submit when the ✓ character occurs in an\n// application/x-www-form-urlencoded body and the encoding of the page containing\n// the form is iso-8859-1, or when the submitted form has an accept-charset\n// attribute of iso-8859-1. Presumably also with other charsets that do not contain\n// the ✓ character, such as us-ascii.\nvar isoSentinel = 'utf8=%26%2310003%3B'; // encodeURIComponent('✓')\n\n// These are the percent-encoded utf-8 octets representing a checkmark, indicating that the request actually is utf-8 encoded.\nvar charsetSentinel = 'utf8=%E2%9C%93'; // encodeURIComponent('✓')\n\nvar parseValues = function parseQueryStringValues(str, options) {\n var obj = {};\n var cleanStr = options.ignoreQueryPrefix ? str.replace(/^\\?/, '') : str;\n var limit = options.parameterLimit === Infinity ? undefined : options.parameterLimit;\n var parts = cleanStr.split(options.delimiter, limit);\n var skipIndex = -1; // Keep track of where the utf8 sentinel was found\n var i;\n\n var charset = options.charset;\n if (options.charsetSentinel) {\n for (i = 0; i < parts.length; ++i) {\n if (parts[i].indexOf('utf8=') === 0) {\n if (parts[i] === charsetSentinel) {\n charset = 'utf-8';\n } else if (parts[i] === isoSentinel) {\n charset = 'iso-8859-1';\n }\n skipIndex = i;\n i = parts.length; // The eslint settings do not allow break;\n }\n }\n }\n\n for (i = 0; i < parts.length; ++i) {\n if (i === skipIndex) {\n continue;\n }\n var part = parts[i];\n\n var bracketEqualsPos = part.indexOf(']=');\n var pos = bracketEqualsPos === -1 ? part.indexOf('=') : bracketEqualsPos + 1;\n\n var key, val;\n if (pos === -1) {\n key = options.decoder(part, defaults.decoder, charset, 'key');\n val = options.strictNullHandling ? null : '';\n } else {\n key = options.decoder(part.slice(0, pos), defaults.decoder, charset, 'key');\n val = utils.maybeMap(\n parseArrayValue(part.slice(pos + 1), options),\n function (encodedVal) {\n return options.decoder(encodedVal, defaults.decoder, charset, 'value');\n }\n );\n }\n\n if (val && options.interpretNumericEntities && charset === 'iso-8859-1') {\n val = interpretNumericEntities(val);\n }\n\n if (part.indexOf('[]=') > -1) {\n val = isArray(val) ? [val] : val;\n }\n\n if (has.call(obj, key)) {\n obj[key] = utils.combine(obj[key], val);\n } else {\n obj[key] = val;\n }\n }\n\n return obj;\n};\n\nvar parseObject = function (chain, val, options, valuesParsed) {\n var leaf = valuesParsed ? val : parseArrayValue(val, options);\n\n for (var i = chain.length - 1; i >= 0; --i) {\n var obj;\n var root = chain[i];\n\n if (root === '[]' && options.parseArrays) {\n obj = [].concat(leaf);\n } else {\n obj = options.plainObjects ? Object.create(null) : {};\n var cleanRoot = root.charAt(0) === '[' && root.charAt(root.length - 1) === ']' ? root.slice(1, -1) : root;\n var index = parseInt(cleanRoot, 10);\n if (!options.parseArrays && cleanRoot === '') {\n obj = { 0: leaf };\n } else if (\n !isNaN(index)\n && root !== cleanRoot\n && String(index) === cleanRoot\n && index >= 0\n && (options.parseArrays && index <= options.arrayLimit)\n ) {\n obj = [];\n obj[index] = leaf;\n } else if (cleanRoot !== '__proto__') {\n obj[cleanRoot] = leaf;\n }\n }\n\n leaf = obj;\n }\n\n return leaf;\n};\n\nvar parseKeys = function parseQueryStringKeys(givenKey, val, options, valuesParsed) {\n if (!givenKey) {\n return;\n }\n\n // Transform dot notation to bracket notation\n var key = options.allowDots ? givenKey.replace(/\\.([^.[]+)/g, '[$1]') : givenKey;\n\n // The regex chunks\n\n var brackets = /(\\[[^[\\]]*])/;\n var child = /(\\[[^[\\]]*])/g;\n\n // Get the parent\n\n var segment = options.depth > 0 && brackets.exec(key);\n var parent = segment ? key.slice(0, segment.index) : key;\n\n // Stash the parent if it exists\n\n var keys = [];\n if (parent) {\n // If we aren't using plain objects, optionally prefix keys that would overwrite object prototype properties\n if (!options.plainObjects && has.call(Object.prototype, parent)) {\n if (!options.allowPrototypes) {\n return;\n }\n }\n\n keys.push(parent);\n }\n\n // Loop through children appending to the array until we hit depth\n\n var i = 0;\n while (options.depth > 0 && (segment = child.exec(key)) !== null && i < options.depth) {\n i += 1;\n if (!options.plainObjects && has.call(Object.prototype, segment[1].slice(1, -1))) {\n if (!options.allowPrototypes) {\n return;\n }\n }\n keys.push(segment[1]);\n }\n\n // If there's a remainder, just add whatever is left\n\n if (segment) {\n keys.push('[' + key.slice(segment.index) + ']');\n }\n\n return parseObject(keys, val, options, valuesParsed);\n};\n\nvar normalizeParseOptions = function normalizeParseOptions(opts) {\n if (!opts) {\n return defaults;\n }\n\n if (opts.decoder !== null && opts.decoder !== undefined && typeof opts.decoder !== 'function') {\n throw new TypeError('Decoder has to be a function.');\n }\n\n if (typeof opts.charset !== 'undefined' && opts.charset !== 'utf-8' && opts.charset !== 'iso-8859-1') {\n throw new TypeError('The charset option must be either utf-8, iso-8859-1, or undefined');\n }\n var charset = typeof opts.charset === 'undefined' ? defaults.charset : opts.charset;\n\n return {\n allowDots: typeof opts.allowDots === 'undefined' ? defaults.allowDots : !!opts.allowDots,\n allowPrototypes: typeof opts.allowPrototypes === 'boolean' ? opts.allowPrototypes : defaults.allowPrototypes,\n allowSparse: typeof opts.allowSparse === 'boolean' ? opts.allowSparse : defaults.allowSparse,\n arrayLimit: typeof opts.arrayLimit === 'number' ? opts.arrayLimit : defaults.arrayLimit,\n charset: charset,\n charsetSentinel: typeof opts.charsetSentinel === 'boolean' ? opts.charsetSentinel : defaults.charsetSentinel,\n comma: typeof opts.comma === 'boolean' ? opts.comma : defaults.comma,\n decoder: typeof opts.decoder === 'function' ? opts.decoder : defaults.decoder,\n delimiter: typeof opts.delimiter === 'string' || utils.isRegExp(opts.delimiter) ? opts.delimiter : defaults.delimiter,\n // eslint-disable-next-line no-implicit-coercion, no-extra-parens\n depth: (typeof opts.depth === 'number' || opts.depth === false) ? +opts.depth : defaults.depth,\n ignoreQueryPrefix: opts.ignoreQueryPrefix === true,\n interpretNumericEntities: typeof opts.interpretNumericEntities === 'boolean' ? opts.interpretNumericEntities : defaults.interpretNumericEntities,\n parameterLimit: typeof opts.parameterLimit === 'number' ? opts.parameterLimit : defaults.parameterLimit,\n parseArrays: opts.parseArrays !== false,\n plainObjects: typeof opts.plainObjects === 'boolean' ? opts.plainObjects : defaults.plainObjects,\n strictNullHandling: typeof opts.strictNullHandling === 'boolean' ? opts.strictNullHandling : defaults.strictNullHandling\n };\n};\n\nmodule.exports = function (str, opts) {\n var options = normalizeParseOptions(opts);\n\n if (str === '' || str === null || typeof str === 'undefined') {\n return options.plainObjects ? Object.create(null) : {};\n }\n\n var tempObj = typeof str === 'string' ? parseValues(str, options) : str;\n var obj = options.plainObjects ? Object.create(null) : {};\n\n // Iterate over the keys and setup the new object\n\n var keys = Object.keys(tempObj);\n for (var i = 0; i < keys.length; ++i) {\n var key = keys[i];\n var newObj = parseKeys(key, tempObj[key], options, typeof str === 'string');\n obj = utils.merge(obj, newObj, options);\n }\n\n if (options.allowSparse === true) {\n return obj;\n }\n\n return utils.compact(obj);\n};\n","'use strict';\n\nvar getSideChannel = require('side-channel');\nvar utils = require('./utils');\nvar formats = require('./formats');\nvar has = Object.prototype.hasOwnProperty;\n\nvar arrayPrefixGenerators = {\n brackets: function brackets(prefix) {\n return prefix + '[]';\n },\n comma: 'comma',\n indices: function indices(prefix, key) {\n return prefix + '[' + key + ']';\n },\n repeat: function repeat(prefix) {\n return prefix;\n }\n};\n\nvar isArray = Array.isArray;\nvar split = String.prototype.split;\nvar push = Array.prototype.push;\nvar pushToArray = function (arr, valueOrArray) {\n push.apply(arr, isArray(valueOrArray) ? valueOrArray : [valueOrArray]);\n};\n\nvar toISO = Date.prototype.toISOString;\n\nvar defaultFormat = formats['default'];\nvar defaults = {\n addQueryPrefix: false,\n allowDots: false,\n charset: 'utf-8',\n charsetSentinel: false,\n delimiter: '&',\n encode: true,\n encoder: utils.encode,\n encodeValuesOnly: false,\n format: defaultFormat,\n formatter: formats.formatters[defaultFormat],\n // deprecated\n indices: false,\n serializeDate: function serializeDate(date) {\n return toISO.call(date);\n },\n skipNulls: false,\n strictNullHandling: false\n};\n\nvar isNonNullishPrimitive = function isNonNullishPrimitive(v) {\n return typeof v === 'string'\n || typeof v === 'number'\n || typeof v === 'boolean'\n || typeof v === 'symbol'\n || typeof v === 'bigint';\n};\n\nvar sentinel = {};\n\nvar stringify = function stringify(\n object,\n prefix,\n generateArrayPrefix,\n strictNullHandling,\n skipNulls,\n encoder,\n filter,\n sort,\n allowDots,\n serializeDate,\n format,\n formatter,\n encodeValuesOnly,\n charset,\n sideChannel\n) {\n var obj = object;\n\n var tmpSc = sideChannel;\n var step = 0;\n var findFlag = false;\n while ((tmpSc = tmpSc.get(sentinel)) !== void undefined && !findFlag) {\n // Where object last appeared in the ref tree\n var pos = tmpSc.get(object);\n step += 1;\n if (typeof pos !== 'undefined') {\n if (pos === step) {\n throw new RangeError('Cyclic object value');\n } else {\n findFlag = true; // Break while\n }\n }\n if (typeof tmpSc.get(sentinel) === 'undefined') {\n step = 0;\n }\n }\n\n if (typeof filter === 'function') {\n obj = filter(prefix, obj);\n } else if (obj instanceof Date) {\n obj = serializeDate(obj);\n } else if (generateArrayPrefix === 'comma' && isArray(obj)) {\n obj = utils.maybeMap(obj, function (value) {\n if (value instanceof Date) {\n return serializeDate(value);\n }\n return value;\n });\n }\n\n if (obj === null) {\n if (strictNullHandling) {\n return encoder && !encodeValuesOnly ? encoder(prefix, defaults.encoder, charset, 'key', format) : prefix;\n }\n\n obj = '';\n }\n\n if (isNonNullishPrimitive(obj) || utils.isBuffer(obj)) {\n if (encoder) {\n var keyValue = encodeValuesOnly ? prefix : encoder(prefix, defaults.encoder, charset, 'key', format);\n if (generateArrayPrefix === 'comma' && encodeValuesOnly) {\n var valuesArray = split.call(String(obj), ',');\n var valuesJoined = '';\n for (var i = 0; i < valuesArray.length; ++i) {\n valuesJoined += (i === 0 ? '' : ',') + formatter(encoder(valuesArray[i], defaults.encoder, charset, 'value', format));\n }\n return [formatter(keyValue) + (isArray(obj) && valuesArray.length === 1 ? '[]' : '') + '=' + valuesJoined];\n }\n return [formatter(keyValue) + '=' + formatter(encoder(obj, defaults.encoder, charset, 'value', format))];\n }\n return [formatter(prefix) + '=' + formatter(String(obj))];\n }\n\n var values = [];\n\n if (typeof obj === 'undefined') {\n return values;\n }\n\n var objKeys;\n if (generateArrayPrefix === 'comma' && isArray(obj)) {\n // we need to join elements in\n objKeys = [{ value: obj.length > 0 ? obj.join(',') || null : void undefined }];\n } else if (isArray(filter)) {\n objKeys = filter;\n } else {\n var keys = Object.keys(obj);\n objKeys = sort ? keys.sort(sort) : keys;\n }\n\n var adjustedPrefix = generateArrayPrefix === 'comma' && isArray(obj) && obj.length === 1 ? prefix + '[]' : prefix;\n\n for (var j = 0; j < objKeys.length; ++j) {\n var key = objKeys[j];\n var value = typeof key === 'object' && typeof key.value !== 'undefined' ? key.value : obj[key];\n\n if (skipNulls && value === null) {\n continue;\n }\n\n var keyPrefix = isArray(obj)\n ? typeof generateArrayPrefix === 'function' ? generateArrayPrefix(adjustedPrefix, key) : adjustedPrefix\n : adjustedPrefix + (allowDots ? '.' + key : '[' + key + ']');\n\n sideChannel.set(object, step);\n var valueSideChannel = getSideChannel();\n valueSideChannel.set(sentinel, sideChannel);\n pushToArray(values, stringify(\n value,\n keyPrefix,\n generateArrayPrefix,\n strictNullHandling,\n skipNulls,\n encoder,\n filter,\n sort,\n allowDots,\n serializeDate,\n format,\n formatter,\n encodeValuesOnly,\n charset,\n valueSideChannel\n ));\n }\n\n return values;\n};\n\nvar normalizeStringifyOptions = function normalizeStringifyOptions(opts) {\n if (!opts) {\n return defaults;\n }\n\n if (opts.encoder !== null && typeof opts.encoder !== 'undefined' && typeof opts.encoder !== 'function') {\n throw new TypeError('Encoder has to be a function.');\n }\n\n var charset = opts.charset || defaults.charset;\n if (typeof opts.charset !== 'undefined' && opts.charset !== 'utf-8' && opts.charset !== 'iso-8859-1') {\n throw new TypeError('The charset option must be either utf-8, iso-8859-1, or undefined');\n }\n\n var format = formats['default'];\n if (typeof opts.format !== 'undefined') {\n if (!has.call(formats.formatters, opts.format)) {\n throw new TypeError('Unknown format option provided.');\n }\n format = opts.format;\n }\n var formatter = formats.formatters[format];\n\n var filter = defaults.filter;\n if (typeof opts.filter === 'function' || isArray(opts.filter)) {\n filter = opts.filter;\n }\n\n return {\n addQueryPrefix: typeof opts.addQueryPrefix === 'boolean' ? opts.addQueryPrefix : defaults.addQueryPrefix,\n allowDots: typeof opts.allowDots === 'undefined' ? defaults.allowDots : !!opts.allowDots,\n charset: charset,\n charsetSentinel: typeof opts.charsetSentinel === 'boolean' ? opts.charsetSentinel : defaults.charsetSentinel,\n delimiter: typeof opts.delimiter === 'undefined' ? defaults.delimiter : opts.delimiter,\n encode: typeof opts.encode === 'boolean' ? opts.encode : defaults.encode,\n encoder: typeof opts.encoder === 'function' ? opts.encoder : defaults.encoder,\n encodeValuesOnly: typeof opts.encodeValuesOnly === 'boolean' ? opts.encodeValuesOnly : defaults.encodeValuesOnly,\n filter: filter,\n format: format,\n formatter: formatter,\n serializeDate: typeof opts.serializeDate === 'function' ? opts.serializeDate : defaults.serializeDate,\n skipNulls: typeof opts.skipNulls === 'boolean' ? opts.skipNulls : defaults.skipNulls,\n sort: typeof opts.sort === 'function' ? opts.sort : null,\n strictNullHandling: typeof opts.strictNullHandling === 'boolean' ? opts.strictNullHandling : defaults.strictNullHandling\n };\n};\n\nmodule.exports = function (object, opts) {\n var obj = object;\n var options = normalizeStringifyOptions(opts);\n\n var objKeys;\n var filter;\n\n if (typeof options.filter === 'function') {\n filter = options.filter;\n obj = filter('', obj);\n } else if (isArray(options.filter)) {\n filter = options.filter;\n objKeys = filter;\n }\n\n var keys = [];\n\n if (typeof obj !== 'object' || obj === null) {\n return '';\n }\n\n var arrayFormat;\n if (opts && opts.arrayFormat in arrayPrefixGenerators) {\n arrayFormat = opts.arrayFormat;\n } else if (opts && 'indices' in opts) {\n arrayFormat = opts.indices ? 'indices' : 'repeat';\n } else {\n arrayFormat = 'indices';\n }\n\n var generateArrayPrefix = arrayPrefixGenerators[arrayFormat];\n\n if (!objKeys) {\n objKeys = Object.keys(obj);\n }\n\n if (options.sort) {\n objKeys.sort(options.sort);\n }\n\n var sideChannel = getSideChannel();\n for (var i = 0; i < objKeys.length; ++i) {\n var key = objKeys[i];\n\n if (options.skipNulls && obj[key] === null) {\n continue;\n }\n pushToArray(keys, stringify(\n obj[key],\n key,\n generateArrayPrefix,\n options.strictNullHandling,\n options.skipNulls,\n options.encode ? options.encoder : null,\n options.filter,\n options.sort,\n options.allowDots,\n options.serializeDate,\n options.format,\n options.formatter,\n options.encodeValuesOnly,\n options.charset,\n sideChannel\n ));\n }\n\n var joined = keys.join(options.delimiter);\n var prefix = options.addQueryPrefix === true ? '?' : '';\n\n if (options.charsetSentinel) {\n if (options.charset === 'iso-8859-1') {\n // encodeURIComponent('✓'), the \"numeric entity\" representation of a checkmark\n prefix += 'utf8=%26%2310003%3B&';\n } else {\n // encodeURIComponent('✓')\n prefix += 'utf8=%E2%9C%93&';\n }\n }\n\n return joined.length > 0 ? prefix + joined : '';\n};\n","'use strict';\n\nvar formats = require('./formats');\n\nvar has = Object.prototype.hasOwnProperty;\nvar isArray = Array.isArray;\n\nvar hexTable = (function () {\n var array = [];\n for (var i = 0; i < 256; ++i) {\n array.push('%' + ((i < 16 ? '0' : '') + i.toString(16)).toUpperCase());\n }\n\n return array;\n}());\n\nvar compactQueue = function compactQueue(queue) {\n while (queue.length > 1) {\n var item = queue.pop();\n var obj = item.obj[item.prop];\n\n if (isArray(obj)) {\n var compacted = [];\n\n for (var j = 0; j < obj.length; ++j) {\n if (typeof obj[j] !== 'undefined') {\n compacted.push(obj[j]);\n }\n }\n\n item.obj[item.prop] = compacted;\n }\n }\n};\n\nvar arrayToObject = function arrayToObject(source, options) {\n var obj = options && options.plainObjects ? Object.create(null) : {};\n for (var i = 0; i < source.length; ++i) {\n if (typeof source[i] !== 'undefined') {\n obj[i] = source[i];\n }\n }\n\n return obj;\n};\n\nvar merge = function merge(target, source, options) {\n /* eslint no-param-reassign: 0 */\n if (!source) {\n return target;\n }\n\n if (typeof source !== 'object') {\n if (isArray(target)) {\n target.push(source);\n } else if (target && typeof target === 'object') {\n if ((options && (options.plainObjects || options.allowPrototypes)) || !has.call(Object.prototype, source)) {\n target[source] = true;\n }\n } else {\n return [target, source];\n }\n\n return target;\n }\n\n if (!target || typeof target !== 'object') {\n return [target].concat(source);\n }\n\n var mergeTarget = target;\n if (isArray(target) && !isArray(source)) {\n mergeTarget = arrayToObject(target, options);\n }\n\n if (isArray(target) && isArray(source)) {\n source.forEach(function (item, i) {\n if (has.call(target, i)) {\n var targetItem = target[i];\n if (targetItem && typeof targetItem === 'object' && item && typeof item === 'object') {\n target[i] = merge(targetItem, item, options);\n } else {\n target.push(item);\n }\n } else {\n target[i] = item;\n }\n });\n return target;\n }\n\n return Object.keys(source).reduce(function (acc, key) {\n var value = source[key];\n\n if (has.call(acc, key)) {\n acc[key] = merge(acc[key], value, options);\n } else {\n acc[key] = value;\n }\n return acc;\n }, mergeTarget);\n};\n\nvar assign = function assignSingleSource(target, source) {\n return Object.keys(source).reduce(function (acc, key) {\n acc[key] = source[key];\n return acc;\n }, target);\n};\n\nvar decode = function (str, decoder, charset) {\n var strWithoutPlus = str.replace(/\\+/g, ' ');\n if (charset === 'iso-8859-1') {\n // unescape never throws, no try...catch needed:\n return strWithoutPlus.replace(/%[0-9a-f]{2}/gi, unescape);\n }\n // utf-8\n try {\n return decodeURIComponent(strWithoutPlus);\n } catch (e) {\n return strWithoutPlus;\n }\n};\n\nvar encode = function encode(str, defaultEncoder, charset, kind, format) {\n // This code was originally written by Brian White (mscdex) for the io.js core querystring library.\n // It has been adapted here for stricter adherence to RFC 3986\n if (str.length === 0) {\n return str;\n }\n\n var string = str;\n if (typeof str === 'symbol') {\n string = Symbol.prototype.toString.call(str);\n } else if (typeof str !== 'string') {\n string = String(str);\n }\n\n if (charset === 'iso-8859-1') {\n return escape(string).replace(/%u[0-9a-f]{4}/gi, function ($0) {\n return '%26%23' + parseInt($0.slice(2), 16) + '%3B';\n });\n }\n\n var out = '';\n for (var i = 0; i < string.length; ++i) {\n var c = string.charCodeAt(i);\n\n if (\n c === 0x2D // -\n || c === 0x2E // .\n || c === 0x5F // _\n || c === 0x7E // ~\n || (c >= 0x30 && c <= 0x39) // 0-9\n || (c >= 0x41 && c <= 0x5A) // a-z\n || (c >= 0x61 && c <= 0x7A) // A-Z\n || (format === formats.RFC1738 && (c === 0x28 || c === 0x29)) // ( )\n ) {\n out += string.charAt(i);\n continue;\n }\n\n if (c < 0x80) {\n out = out + hexTable[c];\n continue;\n }\n\n if (c < 0x800) {\n out = out + (hexTable[0xC0 | (c >> 6)] + hexTable[0x80 | (c & 0x3F)]);\n continue;\n }\n\n if (c < 0xD800 || c >= 0xE000) {\n out = out + (hexTable[0xE0 | (c >> 12)] + hexTable[0x80 | ((c >> 6) & 0x3F)] + hexTable[0x80 | (c & 0x3F)]);\n continue;\n }\n\n i += 1;\n c = 0x10000 + (((c & 0x3FF) << 10) | (string.charCodeAt(i) & 0x3FF));\n /* eslint operator-linebreak: [2, \"before\"] */\n out += hexTable[0xF0 | (c >> 18)]\n + hexTable[0x80 | ((c >> 12) & 0x3F)]\n + hexTable[0x80 | ((c >> 6) & 0x3F)]\n + hexTable[0x80 | (c & 0x3F)];\n }\n\n return out;\n};\n\nvar compact = function compact(value) {\n var queue = [{ obj: { o: value }, prop: 'o' }];\n var refs = [];\n\n for (var i = 0; i < queue.length; ++i) {\n var item = queue[i];\n var obj = item.obj[item.prop];\n\n var keys = Object.keys(obj);\n for (var j = 0; j < keys.length; ++j) {\n var key = keys[j];\n var val = obj[key];\n if (typeof val === 'object' && val !== null && refs.indexOf(val) === -1) {\n queue.push({ obj: obj, prop: key });\n refs.push(val);\n }\n }\n }\n\n compactQueue(queue);\n\n return value;\n};\n\nvar isRegExp = function isRegExp(obj) {\n return Object.prototype.toString.call(obj) === '[object RegExp]';\n};\n\nvar isBuffer = function isBuffer(obj) {\n if (!obj || typeof obj !== 'object') {\n return false;\n }\n\n return !!(obj.constructor && obj.constructor.isBuffer && obj.constructor.isBuffer(obj));\n};\n\nvar combine = function combine(a, b) {\n return [].concat(a, b);\n};\n\nvar maybeMap = function maybeMap(val, fn) {\n if (isArray(val)) {\n var mapped = [];\n for (var i = 0; i < val.length; i += 1) {\n mapped.push(fn(val[i]));\n }\n return mapped;\n }\n return fn(val);\n};\n\nmodule.exports = {\n arrayToObject: arrayToObject,\n assign: assign,\n combine: combine,\n compact: compact,\n decode: decode,\n encode: encode,\n isBuffer: isBuffer,\n isRegExp: isRegExp,\n maybeMap: maybeMap,\n merge: merge\n};\n"," \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 4);\n","module.exports = require(\"react\");","module.exports = require(\"moment\");","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nif (process.env.NODE_ENV !== 'production') {\n var ReactIs = require('react-is');\n\n // By explicitly using `prop-types` you are opting into new development behavior.\n // http://fb.me/prop-types-in-prod\n var throwOnDirectAccess = true;\n module.exports = require('./factoryWithTypeCheckers')(ReactIs.isElement, throwOnDirectAccess);\n} else {\n // By explicitly using `prop-types` you are opting into new production behavior.\n // http://fb.me/prop-types-in-prod\n module.exports = require('./factoryWithThrowingShims')();\n}\n","module.exports = require(\"react-dom\");","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\n\nfunction emptyFunction() {}\nfunction emptyFunctionWithReset() {}\nemptyFunctionWithReset.resetWarningCache = emptyFunction;\n\nmodule.exports = function() {\n function shim(props, propName, componentName, location, propFullName, secret) {\n if (secret === ReactPropTypesSecret) {\n // It is still safe when called from React.\n return;\n }\n var err = new Error(\n 'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +\n 'Use PropTypes.checkPropTypes() to call them. ' +\n 'Read more at http://fb.me/use-check-prop-types'\n );\n err.name = 'Invariant Violation';\n throw err;\n };\n shim.isRequired = shim;\n function getShim() {\n return shim;\n };\n // Important!\n // Keep this list in sync with production version in `./factoryWithTypeCheckers.js`.\n var ReactPropTypes = {\n array: shim,\n bool: shim,\n func: shim,\n number: shim,\n object: shim,\n string: shim,\n symbol: shim,\n\n any: shim,\n arrayOf: getShim,\n element: shim,\n elementType: shim,\n instanceOf: getShim,\n node: shim,\n objectOf: getShim,\n oneOf: getShim,\n oneOfType: getShim,\n shape: getShim,\n exact: getShim,\n\n checkPropTypes: emptyFunctionWithReset,\n resetWarningCache: emptyFunction\n };\n\n ReactPropTypes.PropTypes = ReactPropTypes;\n\n return ReactPropTypes;\n};\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED';\n\nmodule.exports = ReactPropTypesSecret;\n","import React from 'react';\n\nexport default function ViewNavigation( { onClickPrev, onClickSwitch, onClickNext, switchContent, switchColSpan, switchProps } ) {\n\treturn (\n\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\t{ switchContent }\n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t\n\t);\n}\n","import React from 'react';\nimport ViewNavigation from '../parts/ViewNavigation';\n\nexport default class DaysView extends React.Component {\n\tstatic defaultProps = {\n\t\tisValidDate: () => true,\n\t\trenderDay: ( props, date ) => { date.date() },\n\t}\n\n\trender() {\n\t\treturn (\n\t\t\t
\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t{ this.renderNavigation() }\n\t\t\t\t\t\t{ this.renderDayHeaders() }\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t{ this.renderDays() }\n\t\t\t\t\t\n\t\t\t\t\t{ this.renderFooter() }\n\t\t\t\t
\n\t\t\t
\n\t\t);\n\t}\n\n\trenderNavigation() {\n\t\tconst date = this.props.viewDate;\n\t\tconst locale = date.localeData();\n\t\treturn (\n\t\t\t this.props.navigate( -1, 'months' ) }\n\t\t\t\tonClickSwitch={ () => this.props.showView( 'months' ) }\n\t\t\t\tonClickNext={ () => this.props.navigate( 1, 'months' ) }\n\t\t\t\tswitchContent={ locale.months( date ) + ' ' + date.year() }\n\t\t\t\tswitchColSpan={5}\n\t\t\t\tswitchProps={ { 'data-value': this.props.viewDate.month() } }\n\t\t\t/>\n\t\t);\n\t}\n\n\trenderDayHeaders() {\n\t\tconst locale = this.props.viewDate.localeData();\n\t\tlet dayItems = getDaysOfWeek( locale ).map( (day, index) => (\n\t\t\t{ day }\n\t\t));\n\n\t\treturn (\n\t\t\t\n\t\t\t\t{ dayItems }\n\t\t\t\n\t\t);\n\t}\n\n\trenderDays() {\n\t\tconst date = this.props.viewDate;\n\t\tconst startOfMonth = date.clone().startOf('month');\n\t\tconst endOfMonth = date.clone().endOf('month');\n\n\t\t// We need 42 days in 6 rows\n\t\t// starting in the last week of the previous month\n\t\tlet rows = [[], [], [], [], [], []];\n\n\t\tlet startDate = date.clone().subtract( 1, 'months');\n\t\tstartDate.date( startDate.daysInMonth() ).startOf('week');\n\n\t\tlet endDate = startDate.clone().add( 42, 'd' );\n\t\tlet i = 0;\n\n\t\twhile ( startDate.isBefore( endDate ) ) {\n\t\t\tlet row = getRow( rows, i++ );\n\t\t\trow.push( this.renderDay( startDate, startOfMonth, endOfMonth ) );\n\t\t\tstartDate.add( 1, 'd' );\n\t\t}\n\n\t\treturn rows.map( (r, i) => (\n\t\t\t{ r }\n\t\t));\n\t}\n\n\trenderDay( date, startOfMonth, endOfMonth ) {\n\t\tlet selectedDate = this.props.selectedDate;\n\n\t\tlet dayProps = {\n\t\t\tkey: date.format('M_D'),\n\t\t\t'data-value': date.date(),\n\t\t\t'data-month': date.month(),\n\t\t\t'data-year': date.year()\n\t\t};\n\n\t\tlet className = 'rdtDay';\n\t\tif ( date.isBefore( startOfMonth ) ) {\n\t\t\tclassName += ' rdtOld';\n\t\t}\n\t\telse if ( date.isAfter( endOfMonth ) ) {\n\t\t\tclassName += ' rdtNew';\n\t\t}\n\t\tif ( selectedDate && date.isSame( selectedDate, 'day' ) ) {\n\t\t\tclassName += ' rdtActive';\n\t\t}\n\t\tif ( date.isSame( this.props.moment(), 'day' ) ) {\n\t\t\tclassName += ' rdtToday';\n\t\t}\n\n\t\tif ( this.props.isValidDate(date) ) {\n\t\t\tdayProps.onClick = this._setDate;\n\t\t}\n\t\telse {\n\t\t\tclassName += ' rdtDisabled';\n\t\t}\n\n\t\tdayProps.className = className;\n\n\t\treturn this.props.renderDay(\n\t\t\tdayProps, date.clone(), selectedDate && selectedDate.clone()\n\t\t);\n\t}\n\n\trenderFooter() {\n\t\tif ( !this.props.timeFormat ) return;\n\n\t\tconst date = this.props.viewDate;\n\t\treturn (\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t this.props.showView('time') }\n\t\t\t\t\t\tcolSpan={7}\n\t\t\t\t\t\tclassName=\"rdtTimeToggle\">\n\t\t\t\t\t\t{ date.format( this.props.timeFormat ) }\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t);\n\t}\n\n\t_setDate = e => {\n\t\tthis.props.updateDate( e );\n\t}\n}\n\nfunction getRow( rows, day ) {\n\treturn rows[ Math.floor( day / 7 ) ];\n}\n\n/**\n * Get a list of the days of the week\n * depending on the current locale\n * @return {array} A list with the shortname of the days\n */\nfunction getDaysOfWeek( locale ) {\n\tconst first = locale.firstDayOfWeek();\n\tlet dow = [];\n\tlet i = 0;\n\n\tlocale._weekdaysMin.forEach(function (day) {\n\t\tdow[(7 + (i++) - first) % 7] = day;\n\t});\n\n\treturn dow;\n}\n","import React from 'react';\nimport ViewNavigation from '../parts/ViewNavigation';\n\nexport default class MonthsView extends React.Component {\n\trender() {\n\t\treturn (\n\t\t\t
\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t{ this.renderNavigation() }\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t{ this.renderMonths() }\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t
\n\t\t);\n\t}\n\n\trenderNavigation() {\n\t\tlet year = this.props.viewDate.year();\n\n\t\treturn (\n\t\t\t this.props.navigate( -1, 'years' ) }\n\t\t\t\tonClickSwitch={ () => this.props.showView( 'years' ) }\n\t\t\t\tonClickNext={ () => this.props.navigate( 1, 'years' ) }\n\t\t\t\tswitchContent={ year }\n\t\t\t\tswitchColSpan=\"2\"\n\t\t\t/>\n\t\t);\n\t}\n\n\trenderMonths() {\n\t\t// 12 months in 3 rows for every view\n\t\tlet rows = [ [], [], [] ];\n\n\t\tfor ( let month = 0; month < 12; month++ ) {\n\t\t\tlet row = getRow( rows, month );\n\n\t\t\trow.push( this.renderMonth( month ) );\n\t\t}\n\n\t\treturn rows.map( (months, i) => (\n\t\t\t{ months }\n\t\t));\n\t}\n\n\trenderMonth( month ) {\n\t\tconst selectedDate = this.props.selectedDate;\n\t\tlet className = 'rdtMonth';\n\t\tlet onClick;\n\n\t\tif ( this.isDisabledMonth( month ) ) {\n\t\t\tclassName += ' rdtDisabled';\n\t\t}\n\t\telse {\n\t\t\tonClick = this._updateSelectedMonth;\n\t\t}\n\n\t\tif ( selectedDate && selectedDate.year() === this.props.viewDate.year() && selectedDate.month() === month ) {\n\t\t\tclassName += ' rdtActive';\n\t\t}\n\n\t\tlet props = {key: month, className, 'data-value': month, onClick };\n\n\t\tif ( this.props.renderMonth ) {\n\t\t\treturn this.props.renderMonth(\n\t\t\t\tprops,\n\t\t\t\tmonth,\n\t\t\t\tthis.props.viewDate.year(),\n\t\t\t\tthis.props.selectedDate && this.props.selectedDate.clone()\n\t\t\t);\n\t\t}\n\n\t\treturn (\n\t\t\t\n\t\t\t\t{ this.getMonthText( month ) }\n\t\t\t\n\t\t);\n\t}\n\t\n\tisDisabledMonth( month ) {\n\t\tlet isValidDate = this.props.isValidDate;\n\n\t\tif ( !isValidDate ) {\n\t\t\t// If no validator is set, all days are valid\n\t\t\treturn false;\n\t\t}\n\n\t\t// If one day in the month is valid, the year should be clickable\n\t\tlet date = this.props.viewDate.clone().set({month});\n\t\tlet day = date.endOf( 'month' ).date() + 1;\n\n\t\twhile ( day-- > 1 ) {\n\t\t\tif ( isValidDate( date.date(day) ) ) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\t\treturn true;\n\t}\n\n\tgetMonthText( month ) {\n\t\tconst localMoment = this.props.viewDate;\n\t\tconst monthStr = localMoment.localeData().monthsShort( localMoment.month( month ) );\n\n\t\t// Because some months are up to 5 characters long, we want to\n\t\t// use a fixed string length for consistency\n\t\treturn capitalize( monthStr.substring( 0, 3 ) );\n\t}\n\n\t_updateSelectedMonth = event => {\n\t\tthis.props.updateDate( event );\n\t}\n}\n\nfunction getRow( rows, year ) {\n\tif ( year < 4 ) {\n\t\treturn rows[0];\n\t}\n\tif ( year < 8 ) {\n\t\treturn rows[1];\n\t}\n\n\treturn rows[2];\n}\n\nfunction capitalize( str ) {\n\treturn str.charAt( 0 ).toUpperCase() + str.slice( 1 );\n}\n","import React from 'react';\nimport ViewNavigation from '../parts/ViewNavigation';\n\nexport default class YearsView extends React.Component {\n\tstatic defaultProps = {\n\t\trenderYear: ( props, year ) => { year },\n\t};\n\n\trender() {\n\t\treturn (\n\t\t\t
\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t{ this.renderNavigation() }\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t{ this.renderYears() }\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t
\n\t\t);\n\t}\n\n\trenderNavigation() {\n\t\tconst viewYear = this.getViewYear();\n\t\treturn (\n\t\t\t this.props.navigate( -10, 'years' ) }\n\t\t\t\tonClickSwitch={ () => this.props.showView( 'years' ) }\n\t\t\t\tonClickNext={ () => this.props.navigate( 10, 'years' ) }\n\t\t\t\tswitchContent={ `${viewYear}-${viewYear + 9}` }\n\t\t\t/>\n\t\t);\n\t}\n\n\trenderYears() {\n\t\tconst viewYear = this.getViewYear();\n\t\t// 12 years in 3 rows for every view\n\t\tlet rows = [ [], [], [] ];\n\t\tfor ( let year = viewYear - 1; year < viewYear + 11; year++ ) {\n\t\t\tlet row = getRow( rows, year - viewYear );\n\n\t\t\trow.push(\n\t\t\t\tthis.renderYear( year )\n\t\t\t);\n\t\t}\n\n\t\treturn rows.map( (years, i) => (\n\t\t\t{ years }\n\t\t));\n\t}\n\n\trenderYear( year ) {\n\t\tconst selectedYear = this.getSelectedYear();\n\t\tlet className = 'rdtYear';\n\t\tlet onClick;\n\n\t\tif ( this.isDisabledYear( year ) ) {\n\t\t\tclassName += ' rdtDisabled';\n\t\t}\n\t\telse {\n\t\t\tonClick = this._updateSelectedYear;\n\t\t}\n\n\t\tif ( selectedYear === year ) {\n\t\t\tclassName += ' rdtActive';\n\t\t}\n\n\t\tlet props = {key: year, className, 'data-value': year, onClick };\n\n\t\treturn this.props.renderYear(\n\t\t\tprops,\n\t\t\tyear,\n\t\t\tthis.props.selectedDate && this.props.selectedDate.clone()\n\t\t);\n\t}\n\n\tgetViewYear() {\n\t\treturn parseInt( this.props.viewDate.year() / 10, 10 ) * 10;\n\t}\n\n\tgetSelectedYear() {\n\t\treturn this.props.selectedDate && this.props.selectedDate.year();\n\t}\n\n\tdisabledYearsCache = {};\n\tisDisabledYear( year ) {\n\t\tlet cache = this.disabledYearsCache;\n\t\tif ( cache[year] !== undefined ) {\n\t\t\treturn cache[year];\n\t\t}\n\n\t\tlet isValidDate = this.props.isValidDate;\n\n\t\tif ( !isValidDate ) {\n\t\t\t// If no validator is set, all days are valid\n\t\t\treturn false;\n\t\t}\n\n\t\t// If one day in the year is valid, the year should be clickable\n\t\tlet date = this.props.viewDate.clone().set({year});\n\t\tlet day = date.endOf( 'year' ).dayOfYear() + 1;\n\n\t\twhile ( day-- > 1 ) {\n\t\t\tif ( isValidDate( date.dayOfYear(day) ) ) {\n\t\t\t\tcache[year] = false;\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\n\t\tcache[year] = true;\n\t\treturn true;\n\t}\n\n\t_updateSelectedYear = event => {\n\t\tthis.props.updateDate( event );\n\t}\n}\n\nfunction getRow( rows, year ) {\n\tif ( year < 3 ) {\n\t\treturn rows[0];\n\t}\n\tif ( year < 7 ) {\n\t\treturn rows[1];\n\t}\n\n\treturn rows[2];\n}\n","import React from 'react';\n\nconst timeConstraints = {\n\thours: {\n\t\tmin: 0,\n\t\tmax: 23,\n\t\tstep: 1\n\t},\n\tminutes: {\n\t\tmin: 0,\n\t\tmax: 59,\n\t\tstep: 1\n\t},\n\tseconds: {\n\t\tmin: 0,\n\t\tmax: 59,\n\t\tstep: 1\n\t},\n\tmilliseconds: {\n\t\tmin: 0,\n\t\tmax: 999,\n\t\tstep: 1\n\t}\n};\n\nfunction createConstraints( overrideTimeConstraints ) {\n\tlet constraints = {};\n\n\tObject.keys( timeConstraints ).forEach( type => {\n\t\tconstraints[ type ] = { ...timeConstraints[type], ...(overrideTimeConstraints[type] || {}) };\n\t});\n\n\treturn constraints;\n}\n\nexport default class TimeView extends React.Component {\n\tconstructor( props ) {\n\t\tsuper( props );\n\n\t\tthis.constraints = createConstraints( props.timeConstraints );\n\n\t\t// This component buffers the time part values in the state \n\t\t// while the user is pressing down the buttons\n\t\t// and call the prop `setTime` when the buttons are released\n\t\tthis.state = this.getTimeParts( props.selectedDate || props.viewDate );\n\t}\n\n\trender() {\n\t\tlet items = [];\n\t\tconst timeParts = this.state;\n\t\t\n\t\tthis.getCounters().forEach( (c, i) => {\n\t\t\tif ( i && c !== 'ampm' ) {\n\t\t\t\titems.push(\n\t\t\t\t\t
:
\n\t\t\t\t);\n\t\t\t}\n\n\t\t\titems.push( this.renderCounter(c, timeParts[c]) );\n\t\t});\n\n\t\treturn (\n\t\t\t
\n\t\t\t\t\n\t\t\t\t\t{ this.renderHeader() }\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t{ items }\n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t
\n\t\t\t
\n\t\t);\n\t}\n\n\trenderCounter( type, value ) {\n\t\tif ( type === 'hours' && this.isAMPM() ) {\n\t\t\tvalue = ( value - 1 ) % 12 + 1;\n\n\t\t\tif ( value === 0 ) {\n\t\t\t\tvalue = 12;\n\t\t\t}\n\t\t}\n\n\t\tif ( type === 'ampm' ) {\n\t\t\tif ( this.props.timeFormat.indexOf(' A') !== -1 ) {\n\t\t\t\tvalue = this.props.viewDate.format('A');\n\t\t\t}\n\t\t\telse {\n\t\t\t\tvalue = this.props.viewDate.format('a');\n\t\t\t}\n\t\t}\n\n\t\treturn (\n\t\t\t
\n\t\t\t\t this.onStartClicking( e, 'increase', type)}>▲\n\t\t\t\t
{ value }
\n\t\t\t\t this.onStartClicking( e, 'decrease', type)}>▼\n\t\t\t
\n\t\t);\n\t}\n\n\trenderHeader() {\n\t\tif ( !this.props.dateFormat ) return;\n\n\t\tconst date = this.props.selectedDate || this.props.viewDate;\n\n\t\treturn (\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t this.props.showView('days') }>\n\t\t\t\t\t\t{ date.format( this.props.dateFormat ) }\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t);\n\t}\n\n\tonStartClicking( e, action, type ) {\n\t\tif ( e && e.button && e.button !== 0 ) {\n\t\t\t// Only left clicks, thanks\n\t\t\treturn;\n\t\t}\n\t\t\n\t\tif ( type === 'ampm' ) return this.toggleDayPart();\n\n\t\tlet update = {};\n\t\tlet body = document.body;\n\t\tupdate[ type ] = this[ action ]( type );\n\t\tthis.setState( update );\n\n\t\tthis.timer = setTimeout( () => {\n\t\t\tthis.increaseTimer = setInterval( () => {\n\t\t\t\tupdate[ type ] = this[ action ]( type );\n\t\t\t\tthis.setState( update );\n\t\t\t}, 70);\n\t\t}, 500);\n\n\t\tthis.mouseUpListener = () => {\n\t\t\tclearTimeout( this.timer );\n\t\t\tclearInterval( this.increaseTimer );\n\t\t\tthis.props.setTime( type, parseInt( this.state[ type ], 10 ) );\n\t\t\tbody.removeEventListener( 'mouseup', this.mouseUpListener );\n\t\t\tbody.removeEventListener( 'touchend', this.mouseUpListener );\n\t\t};\n\n\t\tbody.addEventListener( 'mouseup', this.mouseUpListener );\n\t\tbody.addEventListener( 'touchend', this.mouseUpListener );\n\t}\n\n\ttoggleDayPart() {\n\t\tlet hours = parseInt( this.state.hours, 10 );\n\t\t\n\t\tif ( hours >= 12 ) {\n\t\t\thours -= 12;\n\t\t}\n\t\telse {\n\t\t\thours += 12;\n\t\t}\n\n\t\tthis.props.setTime( 'hours', hours );\n\t}\n\n\tincrease( type ) {\n\t\tconst tc = this.constraints[ type ];\n\t\tlet value = parseInt( this.state[ type ], 10) + tc.step;\n\t\tif ( value > tc.max )\n\t\t\tvalue = tc.min + ( value - ( tc.max + 1 ) );\n\t\treturn pad( type, value );\n\t}\n\n\tdecrease( type ) {\n\t\tconst tc = this.constraints[ type ];\n\t\tlet value = parseInt( this.state[ type ], 10) - tc.step;\n\t\tif ( value < tc.min )\n\t\t\tvalue = tc.max + 1 - ( tc.min - value );\n\t\treturn pad( type, value );\n\t}\n\n\tgetCounters() {\n\t\tlet counters = [];\n\t\tlet format = this.props.timeFormat;\n\t\t\n\t\tif ( format.toLowerCase().indexOf('h') !== -1 ) {\n\t\t\tcounters.push('hours');\n\t\t\tif ( format.indexOf('m') !== -1 ) {\n\t\t\t\tcounters.push('minutes');\n\t\t\t\tif ( format.indexOf('s') !== -1 ) {\n\t\t\t\t\tcounters.push('seconds');\n\t\t\t\t\tif ( format.indexOf('S') !== -1 ) {\n\t\t\t\t\t\tcounters.push('milliseconds');\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif ( this.isAMPM() ) {\n\t\t\tcounters.push('ampm');\n\t\t}\n\n\t\treturn counters;\n\t}\n\n\tisAMPM() {\n\t\treturn this.props.timeFormat.toLowerCase().indexOf( ' a' ) !== -1;\n\t}\n\n\tgetTimeParts( date ) {\n\t\tconst hours = date.hours();\n\n\t\treturn {\n\t\t\thours: pad( 'hours', hours ),\n\t\t\tminutes: pad( 'minutes', date.minutes() ),\n\t\t\tseconds: pad( 'seconds', date.seconds() ),\n\t\t\tmilliseconds: pad('milliseconds', date.milliseconds() ),\n\t\t\tampm: hours < 12 ? 'am' : 'pm'\n\t\t};\n\t}\n\n\tcomponentDidUpdate( prevProps ) {\n\t\tif ( this.props.selectedDate ) {\n\t\t\tif ( this.props.selectedDate !== prevProps.selectedDate ) {\n\t\t\t\tthis.setState( this.getTimeParts( this.props.selectedDate ) );\n\t\t\t}\n\t\t}\n\t\telse if ( prevProps.viewDate !== this.props.viewDate ) {\n\t\t\tthis.setState( this.getTimeParts( this.props.viewDate ) );\n\t\t}\n\t}\n}\n\nfunction pad( type, value ) {\n\tconst padValues = {\n\t\thours: 1,\n\t\tminutes: 2,\n\t\tseconds: 2,\n\t\tmilliseconds: 3\n\t};\n\n\tlet str = value + '';\n\twhile ( str.length < padValues[ type ] )\n\t\tstr = '0' + str;\n\treturn str;\n}\n","import { Component, createElement } from 'react';\nimport { findDOMNode } from 'react-dom';\n\nfunction _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n subClass.__proto__ = superClass;\n}\n\nfunction _objectWithoutProperties(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n\n if (Object.getOwnPropertySymbols) {\n var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\n\n for (i = 0; i < sourceSymbolKeys.length; i++) {\n key = sourceSymbolKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;\n target[key] = source[key];\n }\n }\n\n return target;\n}\n\n/**\n * Check whether some DOM node is our Component's node.\n */\nfunction isNodeFound(current, componentNode, ignoreClass) {\n if (current === componentNode) {\n return true;\n } // SVG elements do not technically reside in the rendered DOM, so\n // they do not have classList directly, but they offer a link to their\n // corresponding element, which can have classList. This extra check is for\n // that case.\n // See: http://www.w3.org/TR/SVG11/struct.html#InterfaceSVGUseElement\n // Discussion: https://github.com/Pomax/react-onclickoutside/pull/17\n\n\n if (current.correspondingElement) {\n return current.correspondingElement.classList.contains(ignoreClass);\n }\n\n return current.classList.contains(ignoreClass);\n}\n/**\n * Try to find our node in a hierarchy of nodes, returning the document\n * node as highest node if our node is not found in the path up.\n */\n\nfunction findHighest(current, componentNode, ignoreClass) {\n if (current === componentNode) {\n return true;\n } // If source=local then this event came from 'somewhere'\n // inside and should be ignored. We could handle this with\n // a layered approach, too, but that requires going back to\n // thinking in terms of Dom node nesting, running counter\n // to React's 'you shouldn't care about the DOM' philosophy.\n\n\n while (current.parentNode) {\n if (isNodeFound(current, componentNode, ignoreClass)) {\n return true;\n }\n\n current = current.parentNode;\n }\n\n return current;\n}\n/**\n * Check if the browser scrollbar was clicked\n */\n\nfunction clickedScrollbar(evt) {\n return document.documentElement.clientWidth <= evt.clientX || document.documentElement.clientHeight <= evt.clientY;\n}\n\n// ideally will get replaced with external dep\n// when rafrex/detect-passive-events#4 and rafrex/detect-passive-events#5 get merged in\nvar testPassiveEventSupport = function testPassiveEventSupport() {\n if (typeof window === 'undefined' || typeof window.addEventListener !== 'function') {\n return;\n }\n\n var passive = false;\n var options = Object.defineProperty({}, 'passive', {\n get: function get() {\n passive = true;\n }\n });\n\n var noop = function noop() {};\n\n window.addEventListener('testPassiveEventSupport', noop, options);\n window.removeEventListener('testPassiveEventSupport', noop, options);\n return passive;\n};\n\nfunction autoInc(seed) {\n if (seed === void 0) {\n seed = 0;\n }\n\n return function () {\n return ++seed;\n };\n}\n\nvar uid = autoInc();\n\nvar passiveEventSupport;\nvar handlersMap = {};\nvar enabledInstances = {};\nvar touchEvents = ['touchstart', 'touchmove'];\nvar IGNORE_CLASS_NAME = 'ignore-react-onclickoutside';\n/**\n * Options for addEventHandler and removeEventHandler\n */\n\nfunction getEventHandlerOptions(instance, eventName) {\n var handlerOptions = null;\n var isTouchEvent = touchEvents.indexOf(eventName) !== -1;\n\n if (isTouchEvent && passiveEventSupport) {\n handlerOptions = {\n passive: !instance.props.preventDefault\n };\n }\n\n return handlerOptions;\n}\n/**\n * This function generates the HOC function that you'll use\n * in order to impart onOutsideClick listening to an\n * arbitrary component. It gets called at the end of the\n * bootstrapping code to yield an instance of the\n * onClickOutsideHOC function defined inside setupHOC().\n */\n\n\nfunction onClickOutsideHOC(WrappedComponent, config) {\n var _class, _temp;\n\n var componentName = WrappedComponent.displayName || WrappedComponent.name || 'Component';\n return _temp = _class =\n /*#__PURE__*/\n function (_Component) {\n _inheritsLoose(onClickOutside, _Component);\n\n function onClickOutside(props) {\n var _this;\n\n _this = _Component.call(this, props) || this;\n\n _this.__outsideClickHandler = function (event) {\n if (typeof _this.__clickOutsideHandlerProp === 'function') {\n _this.__clickOutsideHandlerProp(event);\n\n return;\n }\n\n var instance = _this.getInstance();\n\n if (typeof instance.props.handleClickOutside === 'function') {\n instance.props.handleClickOutside(event);\n return;\n }\n\n if (typeof instance.handleClickOutside === 'function') {\n instance.handleClickOutside(event);\n return;\n }\n\n throw new Error(\"WrappedComponent: \" + componentName + \" lacks a handleClickOutside(event) function for processing outside click events.\");\n };\n\n _this.__getComponentNode = function () {\n var instance = _this.getInstance();\n\n if (config && typeof config.setClickOutsideRef === 'function') {\n return config.setClickOutsideRef()(instance);\n }\n\n if (typeof instance.setClickOutsideRef === 'function') {\n return instance.setClickOutsideRef();\n }\n\n return findDOMNode(instance);\n };\n\n _this.enableOnClickOutside = function () {\n if (typeof document === 'undefined' || enabledInstances[_this._uid]) {\n return;\n }\n\n if (typeof passiveEventSupport === 'undefined') {\n passiveEventSupport = testPassiveEventSupport();\n }\n\n enabledInstances[_this._uid] = true;\n var events = _this.props.eventTypes;\n\n if (!events.forEach) {\n events = [events];\n }\n\n handlersMap[_this._uid] = function (event) {\n if (_this.componentNode === null) return;\n\n if (_this.props.preventDefault) {\n event.preventDefault();\n }\n\n if (_this.props.stopPropagation) {\n event.stopPropagation();\n }\n\n if (_this.props.excludeScrollbar && clickedScrollbar(event)) return;\n var current = event.target;\n\n if (findHighest(current, _this.componentNode, _this.props.outsideClickIgnoreClass) !== document) {\n return;\n }\n\n _this.__outsideClickHandler(event);\n };\n\n events.forEach(function (eventName) {\n document.addEventListener(eventName, handlersMap[_this._uid], getEventHandlerOptions(_this, eventName));\n });\n };\n\n _this.disableOnClickOutside = function () {\n delete enabledInstances[_this._uid];\n var fn = handlersMap[_this._uid];\n\n if (fn && typeof document !== 'undefined') {\n var events = _this.props.eventTypes;\n\n if (!events.forEach) {\n events = [events];\n }\n\n events.forEach(function (eventName) {\n return document.removeEventListener(eventName, fn, getEventHandlerOptions(_this, eventName));\n });\n delete handlersMap[_this._uid];\n }\n };\n\n _this.getRef = function (ref) {\n return _this.instanceRef = ref;\n };\n\n _this._uid = uid();\n return _this;\n }\n /**\n * Access the WrappedComponent's instance.\n */\n\n\n var _proto = onClickOutside.prototype;\n\n _proto.getInstance = function getInstance() {\n if (!WrappedComponent.prototype.isReactComponent) {\n return this;\n }\n\n var ref = this.instanceRef;\n return ref.getInstance ? ref.getInstance() : ref;\n };\n\n /**\n * Add click listeners to the current document,\n * linked to this component's state.\n */\n _proto.componentDidMount = function componentDidMount() {\n // If we are in an environment without a DOM such\n // as shallow rendering or snapshots then we exit\n // early to prevent any unhandled errors being thrown.\n if (typeof document === 'undefined' || !document.createElement) {\n return;\n }\n\n var instance = this.getInstance();\n\n if (config && typeof config.handleClickOutside === 'function') {\n this.__clickOutsideHandlerProp = config.handleClickOutside(instance);\n\n if (typeof this.__clickOutsideHandlerProp !== 'function') {\n throw new Error(\"WrappedComponent: \" + componentName + \" lacks a function for processing outside click events specified by the handleClickOutside config option.\");\n }\n }\n\n this.componentNode = this.__getComponentNode(); // return early so we dont initiate onClickOutside\n\n if (this.props.disableOnClickOutside) return;\n this.enableOnClickOutside();\n };\n\n _proto.componentDidUpdate = function componentDidUpdate() {\n this.componentNode = this.__getComponentNode();\n };\n /**\n * Remove all document's event listeners for this component\n */\n\n\n _proto.componentWillUnmount = function componentWillUnmount() {\n this.disableOnClickOutside();\n };\n /**\n * Can be called to explicitly enable event listening\n * for clicks and touches outside of this element.\n */\n\n\n /**\n * Pass-through render\n */\n _proto.render = function render() {\n // eslint-disable-next-line no-unused-vars\n var _props = this.props,\n excludeScrollbar = _props.excludeScrollbar,\n props = _objectWithoutProperties(_props, [\"excludeScrollbar\"]);\n\n if (WrappedComponent.prototype.isReactComponent) {\n props.ref = this.getRef;\n } else {\n props.wrappedRef = this.getRef;\n }\n\n props.disableOnClickOutside = this.disableOnClickOutside;\n props.enableOnClickOutside = this.enableOnClickOutside;\n return createElement(WrappedComponent, props);\n };\n\n return onClickOutside;\n }(Component), _class.displayName = \"OnClickOutside(\" + componentName + \")\", _class.defaultProps = {\n eventTypes: ['mousedown', 'touchstart'],\n excludeScrollbar: config && config.excludeScrollbar || false,\n outsideClickIgnoreClass: IGNORE_CLASS_NAME,\n preventDefault: false,\n stopPropagation: false\n }, _class.getClass = function () {\n return WrappedComponent.getClass ? WrappedComponent.getClass() : WrappedComponent;\n }, _temp;\n}\n\nexport { IGNORE_CLASS_NAME };\nexport default onClickOutsideHOC;\n","import PropTypes from 'prop-types';\nimport moment from 'moment';\nimport React from 'react';\nimport DaysView from './views/DaysView';\nimport MonthsView from './views/MonthsView';\nimport YearsView from './views/YearsView';\nimport TimeView from './views/TimeView';\nimport onClickOutside from 'react-onclickoutside';\n\nconst viewModes = {\n\tYEARS: 'years',\n\tMONTHS: 'months',\n\tDAYS: 'days',\n\tTIME: 'time',\n};\n\nconst TYPES = PropTypes;\nconst nofn = function () {};\nconst datetype = TYPES.oneOfType([ TYPES.instanceOf(moment), TYPES.instanceOf(Date), TYPES.string ]);\n\nexport default class Datetime extends React.Component {\n\tstatic propTypes = {\n\t\tvalue: datetype,\n\t\tinitialValue: datetype,\n\t\tinitialViewDate: datetype,\n\t\tinitialViewMode: TYPES.oneOf([viewModes.YEARS, viewModes.MONTHS, viewModes.DAYS, viewModes.TIME]),\n\t\tonOpen: TYPES.func,\n\t\tonClose: TYPES.func,\n\t\tonChange: TYPES.func,\n\t\tonNavigate: TYPES.func,\n\t\tonBeforeNavigate: TYPES.func,\n\t\tonNavigateBack: TYPES.func,\n\t\tonNavigateForward: TYPES.func,\n\t\tupdateOnView: TYPES.string,\n\t\tlocale: TYPES.string,\n\t\tutc: TYPES.bool,\n\t\tdisplayTimeZone: TYPES.string,\n\t\tinput: TYPES.bool,\n\t\tdateFormat: TYPES.oneOfType([TYPES.string, TYPES.bool]),\n\t\ttimeFormat: TYPES.oneOfType([TYPES.string, TYPES.bool]),\n\t\tinputProps: TYPES.object,\n\t\ttimeConstraints: TYPES.object,\n\t\tisValidDate: TYPES.func,\n\t\topen: TYPES.bool,\n\t\tstrictParsing: TYPES.bool,\n\t\tcloseOnSelect: TYPES.bool,\n\t\tcloseOnTab: TYPES.bool,\n\t\trenderView: TYPES.func,\n\t\trenderInput: TYPES.func,\n\t\trenderDay: TYPES.func,\n\t\trenderMonth: TYPES.func,\n\t\trenderYear: TYPES.func,\n\t}\n\n\tstatic defaultProps = {\n\t\tonOpen: nofn,\n\t\tonClose: nofn,\n\t\tonCalendarOpen: nofn,\n\t\tonCalendarClose: nofn,\n\t\tonChange: nofn,\n\t\tonNavigate: nofn,\n\t\tonBeforeNavigate: function(next) { return next; }, \n\t\tonNavigateBack: nofn,\n\t\tonNavigateForward: nofn,\n\t\tdateFormat: true,\n\t\ttimeFormat: true,\n\t\tutc: false,\n\t\tclassName: '',\n\t\tinput: true,\n\t\tinputProps: {},\n\t\ttimeConstraints: {},\n\t\tisValidDate: function() { return true; },\n\t\tstrictParsing: true,\n\t\tcloseOnSelect: false,\n\t\tcloseOnTab: true,\n\t\tcloseOnClickOutside: true,\n\t\trenderView: ( _, renderFunc ) => renderFunc(),\n\t}\n\n\t// Make moment accessible through the Datetime class\n\tstatic moment = moment;\n\n\tconstructor( props ) {\n\t\tsuper( props );\n\t\tthis.state = this.getInitialState();\n\t}\n\n\trender() {\n\t\treturn (\n\t\t\t\n\t\t\t\t{ this.renderInput() }\n\t\t\t\t
\n\t\t\t\t\t{ this.renderView() }\n\t\t\t\t
\n\t\t\t
\n\t\t);\n\t}\n\n\trenderInput() {\n\t\tif ( !this.props.input ) return;\n\n\t\tconst finalInputProps = {\n\t\t\ttype: 'text',\n\t\t\tclassName: 'form-control',\n\t\t\tvalue: this.getInputValue(),\n\t\t\t...this.props.inputProps,\n\t\t\tonFocus: this._onInputFocus,\n\t\t\tonChange: this._onInputChange,\n\t\t\tonKeyDown: this._onInputKeyDown,\n\t\t\tonClick: this._onInputClick\n\t\t};\n\n\t\tif ( this.props.renderInput ) { \n\t\t\treturn (\n\t\t\t\t
\n\t\t\t\t\t{ this.props.renderInput( finalInputProps, this._openCalendar, this._closeCalendar ) }\n\t\t\t\t
\n\t\t\t);\n\t\t}\n\n\t\treturn (\n\t\t\t\n\t\t);\n\t}\n\n\trenderView() {\n\t\treturn this.props.renderView( this.state.currentView, this._renderCalendar );\n\t}\n\n\t_renderCalendar = () => {\n\t\tconst props = this.props;\n\t\tconst state = this.state;\n\n\t\tlet viewProps = {\n\t\t\tviewDate: state.viewDate.clone(),\n\t\t\tselectedDate: this.getSelectedDate(),\n\t\t\tisValidDate: props.isValidDate,\n\t\t\tupdateDate: this._updateDate,\n\t\t\tnavigate: this._viewNavigate,\n\t\t\tmoment: moment,\n\t\t\tshowView: this._showView\n\t\t};\n\n\t\t// Probably updateOn, updateSelectedDate and setDate can be merged in the same method\n\t\t// that would update viewDate or selectedDate depending on the view and the dateFormat\n\t\tswitch ( state.currentView ) {\n\t\t\tcase viewModes.YEARS:\n\t\t\t\t// Used viewProps\n\t\t\t\t// { viewDate, selectedDate, renderYear, isValidDate, navigate, showView, updateDate }\n\t\t\t\tviewProps.renderYear = props.renderYear;\n\t\t\t\treturn ;\n\t\t\t\n\t\t\tcase viewModes.MONTHS:\n\t\t\t\t// { viewDate, selectedDate, renderMonth, isValidDate, navigate, showView, updateDate }\n\t\t\t\tviewProps.renderMonth = props.renderMonth;\n\t\t\t\treturn ;\n\t\t\t\n\t\t\tcase viewModes.DAYS:\n\t\t\t\t// { viewDate, selectedDate, renderDay, isValidDate, navigate, showView, updateDate, timeFormat \n\t\t\t\tviewProps.renderDay = props.renderDay;\n\t\t\t\tviewProps.timeFormat = this.getFormat('time');\n\t\t\t\treturn ;\n\t\t\t\n\t\t\tdefault:\n\t\t\t\t// { viewDate, selectedDate, timeFormat, dateFormat, timeConstraints, setTime, showView }\n\t\t\t\tviewProps.dateFormat = this.getFormat('date');\n\t\t\t\tviewProps.timeFormat = this.getFormat('time');\n\t\t\t\tviewProps.timeConstraints = props.timeConstraints;\n\t\t\t\tviewProps.setTime = this._setTime;\n\t\t\t\treturn ;\n\t\t}\n\t}\n\n\tgetInitialState() {\n\t\tlet props = this.props;\n\t\tlet inputFormat = this.getFormat('datetime');\n\t\tlet selectedDate = this.parseDate( props.value || props.initialValue, inputFormat );\n\n\t\tthis.checkTZ();\n\n\t\treturn {\n\t\t\topen: !props.input,\n\t\t\tcurrentView: props.initialViewMode || this.getInitialView(),\n\t\t\tviewDate: this.getInitialViewDate( selectedDate ),\n\t\t\tselectedDate: selectedDate && selectedDate.isValid() ? selectedDate : undefined,\n\t\t\tinputValue: this.getInitialInputValue( selectedDate )\n\t\t};\n\t}\n\t\n\tgetInitialViewDate( selectedDate ) {\n\t\tconst propDate = this.props.initialViewDate;\n\t\tlet viewDate;\n\t\tif ( propDate ) {\n\t\t\tviewDate = this.parseDate( propDate, this.getFormat('datetime') );\n\t\t\tif ( viewDate && viewDate.isValid() ) {\n\t\t\t\treturn viewDate;\n\t\t\t}\n\t\t\telse {\n\t\t\t\tlog('The initialViewDated given \"' + propDate + '\" is not valid. Using current date instead.');\n\t\t\t}\n\t\t}\n\t\telse if ( selectedDate && selectedDate.isValid() ) {\n\t\t\treturn selectedDate.clone();\n\t\t}\n\t\treturn this.getInitialDate();\n\t}\n\n\tgetInitialDate() {\n\t\tlet m = this.localMoment();\n\t\tm.hour(0).minute(0).second(0).millisecond(0);\n\t\treturn m;\n\t}\n\n\tgetInitialView() {\n\t\tconst dateFormat = this.getFormat( 'date' );\n\t\treturn dateFormat ? this.getUpdateOn( dateFormat ) : viewModes.TIME;\n\t}\n\n\tparseDate(date, dateFormat) {\n\t\tlet parsedDate;\n\n\t\tif (date && typeof date === 'string')\n\t\t\tparsedDate = this.localMoment(date, dateFormat);\n\t\telse if (date)\n\t\t\tparsedDate = this.localMoment(date);\n\n\t\tif (parsedDate && !parsedDate.isValid())\n\t\t\tparsedDate = null;\n\n\t\treturn parsedDate;\n\t}\n\n\tgetClassName() {\n\t\tlet cn = 'rdt';\n\t\tlet props = this.props;\n\t\tlet propCn = props.className;\n\n\t\tif ( Array.isArray( propCn ) ) {\n\t\t\tcn += ' ' + propCn.join(' ');\n\t\t}\n\t\telse if ( propCn ) {\n\t\t\tcn += ' ' + propCn;\n\t\t}\n\n\t\tif ( !props.input ) {\n\t\t\tcn += ' rdtStatic';\n\t\t}\n\t\tif ( this.isOpen() ) {\n\t\t\tcn += ' rdtOpen';\n\t\t}\n\n\t\treturn cn;\n\t}\n\t\n\tisOpen() {\n\t\treturn !this.props.input || (this.props.open === undefined ? this.state.open : this.props.open);\n\t}\n\n\tgetUpdateOn( dateFormat ) {\n\t\tif ( this.props.updateOnView ) {\n\t\t\treturn this.props.updateOnView;\n\t\t}\n\n\t\tif ( dateFormat.match(/[lLD]/) ) {\n\t\t\treturn viewModes.DAYS;\n\t\t}\n\n\t\tif ( dateFormat.indexOf('M') !== -1 ) {\n\t\t\treturn viewModes.MONTHS;\n\t\t}\n\n\t\tif ( dateFormat.indexOf('Y') !== -1 ) {\n\t\t\treturn viewModes.YEARS;\n\t\t}\n\n\t\treturn viewModes.DAYS;\n\t}\n\n\tgetLocaleData() {\n\t\tlet p = this.props;\n\t\treturn this.localMoment( p.value || p.defaultValue || new Date() ).localeData();\n\t}\n\n\tgetDateFormat() {\n\t\tconst locale = this.getLocaleData();\n\t\tlet format = this.props.dateFormat;\n\t\tif ( format === true ) return locale.longDateFormat('L');\n\t\tif ( format ) return format;\n\t\treturn '';\n\t}\n\n\tgetTimeFormat() {\n\t\tconst locale = this.getLocaleData();\n\t\tlet format = this.props.timeFormat;\n\t\tif ( format === true ) {\n\t\t\treturn locale.longDateFormat('LT');\n\t\t}\n\t\treturn format || '';\n\t}\n\n\tgetFormat( type ) {\n\t\tif ( type === 'date' ) {\n\t\t\treturn this.getDateFormat();\n\t\t}\n\t\telse if ( type === 'time' ) {\n\t\t\treturn this.getTimeFormat();\n\t\t}\n\t\t\n\t\tlet dateFormat = this.getDateFormat();\n\t\tlet timeFormat = this.getTimeFormat();\n\t\treturn dateFormat && timeFormat ? dateFormat + ' ' + timeFormat : (dateFormat || timeFormat );\n\t}\n\n\t_showView = ( view, date ) => {\n\t\tconst d = ( date || this.state.viewDate ).clone();\n\t\tconst nextView = this.props.onBeforeNavigate( view, this.state.currentView, d );\n\n\t\tif ( nextView && this.state.currentView !== nextView ) {\n\t\t\tthis.props.onNavigate( nextView );\n\t\t\tthis.setState({ currentView: nextView });\n\t\t}\n\t}\n\n\tupdateTime( op, amount, type, toSelected ) {\n\t\tlet update = {};\n\t\tconst date = toSelected ? 'selectedDate' : 'viewDate';\n\n\t\tupdate[ date ] = this.state[ date ].clone()[ op ]( amount, type );\n\n\t\tthis.setState( update );\n\t}\n\n\tviewToMethod = {days: 'date', months: 'month', years: 'year'};\n\tnextView = { days: 'time', months: 'days', years: 'months'};\n\t_updateDate = e => {\n\t\tlet state = this.state;\n\t\tlet currentView = state.currentView;\n\t\tlet updateOnView = this.getUpdateOn( this.getFormat('date') );\n\t\tlet viewDate = this.state.viewDate.clone();\n\n\t\t// Set the value into day/month/year\n\t\tviewDate[ this.viewToMethod[currentView] ](\n\t\t\tparseInt( e.target.getAttribute('data-value'), 10 )\n\t\t);\n\n\t\t// Need to set month and year will for days view (prev/next month)\n\t\tif ( currentView === 'days' ) {\n\t\t\tviewDate.month( parseInt( e.target.getAttribute('data-month'), 10 ) );\n\t\t\tviewDate.year( parseInt( e.target.getAttribute('data-year'), 10 ) );\n\t\t}\n\n\t\tlet update = {viewDate: viewDate};\n\t\tif ( currentView === updateOnView ) {\n\t\t\tupdate.selectedDate = viewDate.clone();\n\t\t\tupdate.inputValue = viewDate.format( this.getFormat('datetime') );\n\n\t\t\tif ( this.props.open === undefined && this.props.input && this.props.closeOnSelect ) {\n\t\t\t\tthis._closeCalendar();\n\t\t\t}\n\n\t\t\tthis.props.onChange( viewDate.clone() );\n\t\t}\n\t\telse {\n\t\t\tthis._showView( this.nextView[ currentView ], viewDate );\n\t\t}\n\n\t\tthis.setState( update );\n\t}\n\n\t_viewNavigate = ( modifier, unit ) => {\n\t\tlet viewDate = this.state.viewDate.clone();\n\t\t\n\t\t// Subtracting is just adding negative time\n\t\tviewDate.add( modifier, unit );\n\n\t\tif ( modifier > 0 ) {\n\t\t\tthis.props.onNavigateForward( modifier, unit );\n\t\t}\n\t\telse {\n\t\t\tthis.props.onNavigateBack( -(modifier), unit );\n\t\t}\n\n\t\tthis.setState({viewDate});\n\t}\n\t\n\t_setTime = ( type, value ) => {\n\t\tlet date = (this.getSelectedDate() || this.state.viewDate).clone();\n\t\t\n\t\tdate[ type ]( value );\n\n\t\tif ( !this.props.value ) {\n\t\t\tthis.setState({\n\t\t\t\tselectedDate: date,\n\t\t\t\tviewDate: date.clone(),\n\t\t\t\tinputValue: date.format( this.getFormat('datetime') )\n\t\t\t});\n\t\t}\n\n\t\tthis.props.onChange( date );\n\t}\n\n\t_openCalendar = () => {\n\t\tif ( this.isOpen() ) return;\n\t\tthis.setState({open: true}, this.props.onOpen );\n\t}\n\n\t_closeCalendar = () => {\n\t\tif ( !this.isOpen() ) return;\n\n\t\tthis.setState({open: false}, () => {\n\t\t\t this.props.onClose( this.state.selectedDate || this.state.inputValue );\n\t\t});\n\t}\n\n\t_handleClickOutside = () => {\n\t\tlet props = this.props;\n\n\t\tif ( props.input && this.state.open && props.open === undefined && props.closeOnClickOutside ) {\n\t\t\tthis._closeCalendar();\n\t\t}\n\t}\n\n\tlocalMoment( date, format, props ) {\n\t\tprops = props || this.props;\n\t\tlet m = null;\n\n\t\tif (props.utc) {\n\t\t\tm = moment.utc(date, format, props.strictParsing);\n\t\t} else if (props.displayTimeZone) {\n\t\t\tm = moment.tz(date, format, props.displayTimeZone);\n\t\t} else {\n\t\t\tm = moment(date, format, props.strictParsing);\n\t\t}\n\n\t\tif ( props.locale )\n\t\t\tm.locale( props.locale );\n\t\treturn m;\n\t}\n\n\tcheckTZ() {\n\t\tconst { displayTimeZone } = this.props;\n\t\tif ( displayTimeZone && !this.tzWarning && !moment.tz ) {\n\t\t\tthis.tzWarning = true;\n\t\t\tlog('displayTimeZone prop with value \"' + displayTimeZone + '\" is used but moment.js timezone is not loaded.', 'error');\n\t\t}\n\t}\n\n\tcomponentDidUpdate( prevProps ) {\n\t\tif ( prevProps === this.props ) return;\n\n\t\tlet needsUpdate = false;\n\t\tlet thisProps = this.props;\n\n\t\t['locale', 'utc', 'displayZone', 'dateFormat', 'timeFormat'].forEach( function(p) {\n\t\t\tprevProps[p] !== thisProps[p] && (needsUpdate = true);\n\t\t});\n\n\t\tif ( needsUpdate ) {\n\t\t\tthis.regenerateDates();\n\t\t}\n\n\t\tif ( thisProps.value && thisProps.value !== prevProps.value ) {\n\t\t\tthis.setViewDate( thisProps.value );\n\t\t}\n\n\t\tthis.checkTZ();\n\t}\n\n\tregenerateDates() {\n\t\tconst props = this.props;\n\t\tlet viewDate = this.state.viewDate.clone();\n\t\tlet selectedDate = this.state.selectedDate && this.state.selectedDate.clone();\n\n\t\tif ( props.locale ) {\n\t\t\tviewDate.locale( props.locale );\n\t\t\tselectedDate &&\tselectedDate.locale( props.locale );\n\t\t}\n\t\tif ( props.utc ) {\n\t\t\tviewDate.utc();\n\t\t\tselectedDate &&\tselectedDate.utc();\n\t\t}\n\t\telse if ( props.displayTimeZone ) {\n\t\t\tviewDate.tz( props.displayTimeZone );\n\t\t\tselectedDate &&\tselectedDate.tz( props.displayTimeZone );\n\t\t}\n\t\telse {\n\t\t\tviewDate.locale();\n\t\t\tselectedDate &&\tselectedDate.locale();\n\t\t}\n\n\t\tlet update = { viewDate: viewDate, selectedDate: selectedDate};\n\t\tif ( selectedDate && selectedDate.isValid() ) {\n\t\t\tupdate.inputValue = selectedDate.format( this.getFormat('datetime') );\n\t\t}\n\t\t\n\t\tthis.setState( update );\n\t}\n\n\tgetSelectedDate() {\n\t\tif ( this.props.value === undefined ) return this.state.selectedDate;\n\t\tlet selectedDate = this.parseDate( this.props.value, this.getFormat('datetime') );\n\t\treturn selectedDate && selectedDate.isValid() ? selectedDate : false;\n\t}\n\n\tgetInitialInputValue( selectedDate ) {\n\t\tconst props = this.props;\n\t\tif ( props.inputProps.value )\n\t\t\treturn props.inputProps.value;\n\t\t\n\t\tif ( selectedDate && selectedDate.isValid() )\n\t\t\treturn selectedDate.format( this.getFormat('datetime') );\n\t\t\n\t\tif ( props.value && typeof props.value === 'string' )\n\t\t\treturn props.value;\n\t\t\n\t\tif ( props.initialValue && typeof props.initialValue === 'string' )\n\t\t\treturn props.initialValue;\n\t\t\n\t\treturn '';\n\t}\n\n\tgetInputValue() {\n\t\tlet selectedDate = this.getSelectedDate();\n\t\treturn selectedDate ? selectedDate.format( this.getFormat('datetime') ) : this.state.inputValue;\n\t}\n\n\t/**\n\t * Set the date that is currently shown in the calendar.\n\t * This is independent from the selected date and it's the one used to navigate through months or days in the calendar.\n\t * @param dateType date\n\t * @public\n\t */\n\tsetViewDate( date ) {\n\t\tlet logError = function() {\n\t\t\treturn log( 'Invalid date passed to the `setViewDate` method: ' + date );\n\t\t};\n\n\t\tif ( !date ) return logError();\n\t\t\n\t\tlet viewDate;\n\t\tif ( typeof date === 'string' ) {\n\t\t\tviewDate = this.localMoment(date, this.getFormat('datetime') );\n\t\t}\n\t\telse {\n\t\t\tviewDate = this.localMoment( date );\n\t\t}\n\n\t\tif ( !viewDate || !viewDate.isValid() ) return logError();\n\t\tthis.setState({ viewDate: viewDate });\n\t}\n\n\t/**\n\t * Set the view currently shown by the calendar. View modes shipped with react-datetime are 'years', 'months', 'days' and 'time'.\n\t * @param TYPES.string mode \n\t */\n\tnavigate( mode ) {\n\t\tthis._showView( mode );\n\t}\n\n\t_onInputFocus = e => {\n\t\tif ( !this.callHandler( this.props.inputProps.onFocus, e ) ) return;\n\t\tthis._openCalendar();\n\t}\n\n\t_onInputChange = e => {\n\t\tif ( !this.callHandler( this.props.inputProps.onChange, e ) ) return;\n\n\t\tconst value = e.target ? e.target.value : e;\n\t\tconst localMoment = this.localMoment( value, this.getFormat('datetime') );\n\t\tlet update = { inputValue: value };\n\n\t\tif ( localMoment.isValid() ) {\n\t\t\tupdate.selectedDate = localMoment;\n\t\t\tupdate.viewDate = localMoment.clone().startOf('month');\n\t\t}\n\t\telse {\n\t\t\tupdate.selectedDate = null;\n\t\t}\n\n\t\tthis.setState( update, () => {\n\t\t\tthis.props.onChange( localMoment.isValid() ? localMoment : this.state.inputValue );\n\t\t});\n\t}\n\n\t_onInputKeyDown = e => {\n\t\tif ( !this.callHandler( this.props.inputProps.onKeyDown, e ) ) return;\n\n\t\tif ( e.which === 9 && this.props.closeOnTab ) {\n\t\t\tthis._closeCalendar();\n\t\t}\n\t}\n\n\t_onInputClick = e => {\n\t\t// Focus event should open the calendar, but there is some case where\n\t\t// the input is already focused and the picker is closed, so clicking the input\n\t\t// should open it again see https://github.com/arqex/react-datetime/issues/717\n\t\tif ( !this.callHandler( this.props.inputProps.onClick, e ) ) return;\n\t\tthis._openCalendar();\n\t}\n\n\tcallHandler( method, e ) {\n\t\tif ( !method ) return true;\n\t\treturn method(e) !== false;\n\t}\n}\n\nfunction log( message, method ) {\n\tlet con = typeof window !== 'undefined' && window.console;\n\tif ( !con ) return;\n\n\tif ( !method ) {\n\t\tmethod = 'warn';\n\t}\n\tcon[ method ]( '***react-datetime:' + message );\n}\n\nclass ClickOutBase extends React.Component {\n\tcontainer = React.createRef();\n\n\trender() {\n\t\treturn (\n\t\t\t
\n\t\t\t\t{ this.props.children }\n\t\t\t
\n\t\t);\n\t}\n\thandleClickOutside(e) {\n\t\tthis.props.onClickOut( e );\n\t}\n\n\tsetClickOutsideRef() {\n\t\treturn this.container.current;\n\t}\n}\n\nconst ClickableWrapper = onClickOutside( ClickOutBase );\n","'use strict';\n\nObject.defineProperty(exports, '__esModule', { value: true });\n\nfunction _interopDefault (ex) { return (ex && (typeof ex === 'object') && 'default' in ex) ? ex['default'] : ex; }\n\nvar React = require('react');\nvar React__default = _interopDefault(React);\n\nvar UAParser = require('ua-parser-js/dist/ua-parser.min');\n\nvar ClientUAInstance = new UAParser();\nvar browser = ClientUAInstance.getBrowser();\nvar cpu = ClientUAInstance.getCPU();\nvar device = ClientUAInstance.getDevice();\nvar engine = ClientUAInstance.getEngine();\nvar os = ClientUAInstance.getOS();\nvar ua = ClientUAInstance.getUA();\nvar setUa = function setUa(userAgentString) {\n return ClientUAInstance.setUA(userAgentString);\n};\nvar parseUserAgent = function parseUserAgent(userAgent) {\n if (!userAgent) {\n console.error('No userAgent string was provided');\n return;\n }\n\n var UserAgentInstance = new UAParser(userAgent);\n return {\n UA: UserAgentInstance,\n browser: UserAgentInstance.getBrowser(),\n cpu: UserAgentInstance.getCPU(),\n device: UserAgentInstance.getDevice(),\n engine: UserAgentInstance.getEngine(),\n os: UserAgentInstance.getOS(),\n ua: UserAgentInstance.getUA(),\n setUserAgent: function setUserAgent(userAgentString) {\n return UserAgentInstance.setUA(userAgentString);\n }\n };\n};\n\nvar UAHelper = /*#__PURE__*/Object.freeze({\n ClientUAInstance: ClientUAInstance,\n browser: browser,\n cpu: cpu,\n device: device,\n engine: engine,\n os: os,\n ua: ua,\n setUa: setUa,\n parseUserAgent: parseUserAgent\n});\n\nfunction ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n\n if (enumerableOnly) {\n symbols = symbols.filter(function (sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n });\n }\n\n keys.push.apply(keys, symbols);\n }\n\n return keys;\n}\n\nfunction _objectSpread2(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i] != null ? arguments[i] : {};\n\n if (i % 2) {\n ownKeys(Object(source), true).forEach(function (key) {\n _defineProperty(target, key, source[key]);\n });\n } else if (Object.getOwnPropertyDescriptors) {\n Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n } else {\n ownKeys(Object(source)).forEach(function (key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n }\n\n return target;\n}\n\nfunction _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") {\n _typeof = function (obj) {\n return typeof obj;\n };\n } else {\n _typeof = function (obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n }\n\n return _typeof(obj);\n}\n\nfunction _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\n\nfunction _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\n\nfunction _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n return Constructor;\n}\n\nfunction _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n\nfunction _extends() {\n _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n\n return _extends.apply(this, arguments);\n}\n\nfunction _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n if (superClass) _setPrototypeOf(subClass, superClass);\n}\n\nfunction _getPrototypeOf(o) {\n _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n return _getPrototypeOf(o);\n}\n\nfunction _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n\n return _setPrototypeOf(o, p);\n}\n\nfunction _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n\n return target;\n}\n\nfunction _objectWithoutProperties(source, excluded) {\n if (source == null) return {};\n\n var target = _objectWithoutPropertiesLoose(source, excluded);\n\n var key, i;\n\n if (Object.getOwnPropertySymbols) {\n var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\n\n for (i = 0; i < sourceSymbolKeys.length; i++) {\n key = sourceSymbolKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;\n target[key] = source[key];\n }\n }\n\n return target;\n}\n\nfunction _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return self;\n}\n\nfunction _possibleConstructorReturn(self, call) {\n if (call && (typeof call === \"object\" || typeof call === \"function\")) {\n return call;\n } else if (call !== void 0) {\n throw new TypeError(\"Derived constructors may only return object or undefined\");\n }\n\n return _assertThisInitialized(self);\n}\n\nfunction _slicedToArray(arr, i) {\n return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest();\n}\n\nfunction _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n}\n\nfunction _iterableToArrayLimit(arr, i) {\n var _i = arr == null ? null : typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"];\n\n if (_i == null) return;\n var _arr = [];\n var _n = true;\n var _d = false;\n\n var _s, _e;\n\n try {\n for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) {\n _arr.push(_s.value);\n\n if (i && _arr.length === i) break;\n }\n } catch (err) {\n _d = true;\n _e = err;\n } finally {\n try {\n if (!_n && _i[\"return\"] != null) _i[\"return\"]();\n } finally {\n if (_d) throw _e;\n }\n }\n\n return _arr;\n}\n\nfunction _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return _arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);\n}\n\nfunction _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n\n for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];\n\n return arr2;\n}\n\nfunction _nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\n\nvar DeviceTypes = {\n Mobile: 'mobile',\n Tablet: 'tablet',\n SmartTv: 'smarttv',\n Console: 'console',\n Wearable: 'wearable',\n Embedded: 'embedded',\n Browser: undefined\n};\nvar BrowserTypes = {\n Chrome: 'Chrome',\n Firefox: 'Firefox',\n Opera: 'Opera',\n Yandex: 'Yandex',\n Safari: 'Safari',\n InternetExplorer: 'Internet Explorer',\n Edge: 'Edge',\n Chromium: 'Chromium',\n Ie: 'IE',\n MobileSafari: 'Mobile Safari',\n EdgeChromium: 'Edge Chromium',\n MIUI: 'MIUI Browser',\n SamsungBrowser: 'Samsung Browser'\n};\nvar OsTypes = {\n IOS: 'iOS',\n Android: 'Android',\n WindowsPhone: 'Windows Phone',\n Windows: 'Windows',\n MAC_OS: 'Mac OS'\n};\nvar InitialDeviceTypes = {\n isMobile: false,\n isTablet: false,\n isBrowser: false,\n isSmartTV: false,\n isConsole: false,\n isWearable: false\n};\n\nvar checkDeviceType = function checkDeviceType(type) {\n switch (type) {\n case DeviceTypes.Mobile:\n return {\n isMobile: true\n };\n\n case DeviceTypes.Tablet:\n return {\n isTablet: true\n };\n\n case DeviceTypes.SmartTv:\n return {\n isSmartTV: true\n };\n\n case DeviceTypes.Console:\n return {\n isConsole: true\n };\n\n case DeviceTypes.Wearable:\n return {\n isWearable: true\n };\n\n case DeviceTypes.Browser:\n return {\n isBrowser: true\n };\n\n case DeviceTypes.Embedded:\n return {\n isEmbedded: true\n };\n\n default:\n return InitialDeviceTypes;\n }\n};\nvar setUserAgent = function setUserAgent(userAgent) {\n return setUa(userAgent);\n};\nvar setDefaults = function setDefaults(p) {\n var d = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'none';\n return p ? p : d;\n};\nvar getNavigatorInstance = function getNavigatorInstance() {\n if (typeof window !== 'undefined') {\n if (window.navigator || navigator) {\n return window.navigator || navigator;\n }\n }\n\n return false;\n};\nvar isIOS13Check = function isIOS13Check(type) {\n var nav = getNavigatorInstance();\n return nav && nav.platform && (nav.platform.indexOf(type) !== -1 || nav.platform === 'MacIntel' && nav.maxTouchPoints > 1 && !window.MSStream);\n};\n\nvar browserPayload = function browserPayload(isBrowser, browser, engine, os, ua) {\n return {\n isBrowser: isBrowser,\n browserMajorVersion: setDefaults(browser.major),\n browserFullVersion: setDefaults(browser.version),\n browserName: setDefaults(browser.name),\n engineName: setDefaults(engine.name),\n engineVersion: setDefaults(engine.version),\n osName: setDefaults(os.name),\n osVersion: setDefaults(os.version),\n userAgent: setDefaults(ua)\n };\n};\nvar mobilePayload = function mobilePayload(type, device, os, ua) {\n return _objectSpread2({}, type, {\n vendor: setDefaults(device.vendor),\n model: setDefaults(device.model),\n os: setDefaults(os.name),\n osVersion: setDefaults(os.version),\n ua: setDefaults(ua)\n });\n};\nvar smartTvPayload = function smartTvPayload(isSmartTV, engine, os, ua) {\n return {\n isSmartTV: isSmartTV,\n engineName: setDefaults(engine.name),\n engineVersion: setDefaults(engine.version),\n osName: setDefaults(os.name),\n osVersion: setDefaults(os.version),\n userAgent: setDefaults(ua)\n };\n};\nvar consolePayload = function consolePayload(isConsole, engine, os, ua) {\n return {\n isConsole: isConsole,\n engineName: setDefaults(engine.name),\n engineVersion: setDefaults(engine.version),\n osName: setDefaults(os.name),\n osVersion: setDefaults(os.version),\n userAgent: setDefaults(ua)\n };\n};\nvar wearablePayload = function wearablePayload(isWearable, engine, os, ua) {\n return {\n isWearable: isWearable,\n engineName: setDefaults(engine.name),\n engineVersion: setDefaults(engine.version),\n osName: setDefaults(os.name),\n osVersion: setDefaults(os.version),\n userAgent: setDefaults(ua)\n };\n};\nvar embeddedPayload = function embeddedPayload(isEmbedded, device, engine, os, ua) {\n return {\n isEmbedded: isEmbedded,\n vendor: setDefaults(device.vendor),\n model: setDefaults(device.model),\n engineName: setDefaults(engine.name),\n engineVersion: setDefaults(engine.version),\n osName: setDefaults(os.name),\n osVersion: setDefaults(os.version),\n userAgent: setDefaults(ua)\n };\n};\n\nfunction deviceDetect(userAgent) {\n var _ref = userAgent ? parseUserAgent(userAgent) : UAHelper,\n device = _ref.device,\n browser = _ref.browser,\n engine = _ref.engine,\n os = _ref.os,\n ua = _ref.ua;\n\n var type = checkDeviceType(device.type);\n var isBrowser = type.isBrowser,\n isMobile = type.isMobile,\n isTablet = type.isTablet,\n isSmartTV = type.isSmartTV,\n isConsole = type.isConsole,\n isWearable = type.isWearable,\n isEmbedded = type.isEmbedded;\n\n if (isBrowser) {\n return browserPayload(isBrowser, browser, engine, os, ua);\n }\n\n if (isSmartTV) {\n return smartTvPayload(isSmartTV, engine, os, ua);\n }\n\n if (isConsole) {\n return consolePayload(isConsole, engine, os, ua);\n }\n\n if (isMobile) {\n return mobilePayload(type, device, os, ua);\n }\n\n if (isTablet) {\n return mobilePayload(type, device, os, ua);\n }\n\n if (isWearable) {\n return wearablePayload(isWearable, engine, os, ua);\n }\n\n if (isEmbedded) {\n return embeddedPayload(isEmbedded, device, engine, os, ua);\n }\n}\n\nvar isMobileType = function isMobileType(_ref) {\n var type = _ref.type;\n return type === DeviceTypes.Mobile;\n};\nvar isTabletType = function isTabletType(_ref2) {\n var type = _ref2.type;\n return type === DeviceTypes.Tablet;\n};\nvar isMobileAndTabletType = function isMobileAndTabletType(_ref3) {\n var type = _ref3.type;\n return type === DeviceTypes.Mobile || type === DeviceTypes.Tablet;\n};\nvar isSmartTVType = function isSmartTVType(_ref4) {\n var type = _ref4.type;\n return type === DeviceTypes.SmartTv;\n};\nvar isBrowserType = function isBrowserType(_ref5) {\n var type = _ref5.type;\n return type === DeviceTypes.Browser;\n};\nvar isWearableType = function isWearableType(_ref6) {\n var type = _ref6.type;\n return type === DeviceTypes.Wearable;\n};\nvar isConsoleType = function isConsoleType(_ref7) {\n var type = _ref7.type;\n return type === DeviceTypes.Console;\n};\nvar isEmbeddedType = function isEmbeddedType(_ref8) {\n var type = _ref8.type;\n return type === DeviceTypes.Embedded;\n};\nvar getMobileVendor = function getMobileVendor(_ref9) {\n var vendor = _ref9.vendor;\n return setDefaults(vendor);\n};\nvar getMobileModel = function getMobileModel(_ref10) {\n var model = _ref10.model;\n return setDefaults(model);\n};\nvar getDeviceType = function getDeviceType(_ref11) {\n var type = _ref11.type;\n return setDefaults(type, 'browser');\n}; // os types\n\nvar isAndroidType = function isAndroidType(_ref12) {\n var name = _ref12.name;\n return name === OsTypes.Android;\n};\nvar isWindowsType = function isWindowsType(_ref13) {\n var name = _ref13.name;\n return name === OsTypes.Windows;\n};\nvar isMacOsType = function isMacOsType(_ref14) {\n var name = _ref14.name;\n return name === OsTypes.MAC_OS;\n};\nvar isWinPhoneType = function isWinPhoneType(_ref15) {\n var name = _ref15.name;\n return name === OsTypes.WindowsPhone;\n};\nvar isIOSType = function isIOSType(_ref16) {\n var name = _ref16.name;\n return name === OsTypes.IOS;\n};\nvar getOsVersion = function getOsVersion(_ref17) {\n var version = _ref17.version;\n return setDefaults(version);\n};\nvar getOsName = function getOsName(_ref18) {\n var name = _ref18.name;\n return setDefaults(name);\n}; // browser types\n\nvar isChromeType = function isChromeType(_ref19) {\n var name = _ref19.name;\n return name === BrowserTypes.Chrome;\n};\nvar isFirefoxType = function isFirefoxType(_ref20) {\n var name = _ref20.name;\n return name === BrowserTypes.Firefox;\n};\nvar isChromiumType = function isChromiumType(_ref21) {\n var name = _ref21.name;\n return name === BrowserTypes.Chromium;\n};\nvar isEdgeType = function isEdgeType(_ref22) {\n var name = _ref22.name;\n return name === BrowserTypes.Edge;\n};\nvar isYandexType = function isYandexType(_ref23) {\n var name = _ref23.name;\n return name === BrowserTypes.Yandex;\n};\nvar isSafariType = function isSafariType(_ref24) {\n var name = _ref24.name;\n return name === BrowserTypes.Safari || name === BrowserTypes.MobileSafari;\n};\nvar isMobileSafariType = function isMobileSafariType(_ref25) {\n var name = _ref25.name;\n return name === BrowserTypes.MobileSafari;\n};\nvar isOperaType = function isOperaType(_ref26) {\n var name = _ref26.name;\n return name === BrowserTypes.Opera;\n};\nvar isIEType = function isIEType(_ref27) {\n var name = _ref27.name;\n return name === BrowserTypes.InternetExplorer || name === BrowserTypes.Ie;\n};\nvar isMIUIType = function isMIUIType(_ref28) {\n var name = _ref28.name;\n return name === BrowserTypes.MIUI;\n};\nvar isSamsungBrowserType = function isSamsungBrowserType(_ref29) {\n var name = _ref29.name;\n return name === BrowserTypes.SamsungBrowser;\n};\nvar getBrowserFullVersion = function getBrowserFullVersion(_ref30) {\n var version = _ref30.version;\n return setDefaults(version);\n};\nvar getBrowserVersion = function getBrowserVersion(_ref31) {\n var major = _ref31.major;\n return setDefaults(major);\n};\nvar getBrowserName = function getBrowserName(_ref32) {\n var name = _ref32.name;\n return setDefaults(name);\n}; // engine types\n\nvar getEngineName = function getEngineName(_ref33) {\n var name = _ref33.name;\n return setDefaults(name);\n};\nvar getEngineVersion = function getEngineVersion(_ref34) {\n var version = _ref34.version;\n return setDefaults(version);\n};\nvar isElectronType = function isElectronType() {\n var nav = getNavigatorInstance();\n var ua = nav && nav.userAgent && nav.userAgent.toLowerCase();\n return typeof ua === 'string' ? /electron/.test(ua) : false;\n};\nvar isEdgeChromiumType = function isEdgeChromiumType(ua) {\n return typeof ua === 'string' && ua.indexOf('Edg/') !== -1;\n};\nvar getIOS13 = function getIOS13() {\n var nav = getNavigatorInstance();\n return nav && (/iPad|iPhone|iPod/.test(nav.platform) || nav.platform === 'MacIntel' && nav.maxTouchPoints > 1) && !window.MSStream;\n};\nvar getIPad13 = function getIPad13() {\n return isIOS13Check('iPad');\n};\nvar getIphone13 = function getIphone13() {\n return isIOS13Check('iPhone');\n};\nvar getIPod13 = function getIPod13() {\n return isIOS13Check('iPod');\n};\nvar getUseragent = function getUseragent(userAg) {\n return setDefaults(userAg);\n};\n\nfunction buildSelectorsObject(options) {\n var _ref = options ? options : UAHelper,\n device = _ref.device,\n browser = _ref.browser,\n os = _ref.os,\n engine = _ref.engine,\n ua = _ref.ua;\n\n return {\n isSmartTV: isSmartTVType(device),\n isConsole: isConsoleType(device),\n isWearable: isWearableType(device),\n isEmbedded: isEmbeddedType(device),\n isMobileSafari: isMobileSafariType(browser) || getIPad13(),\n isChromium: isChromiumType(browser),\n isMobile: isMobileAndTabletType(device) || getIPad13(),\n isMobileOnly: isMobileType(device),\n isTablet: isTabletType(device) || getIPad13(),\n isBrowser: isBrowserType(device),\n isDesktop: isBrowserType(device),\n isAndroid: isAndroidType(os),\n isWinPhone: isWinPhoneType(os),\n isIOS: isIOSType(os) || getIPad13(),\n isChrome: isChromeType(browser),\n isFirefox: isFirefoxType(browser),\n isSafari: isSafariType(browser),\n isOpera: isOperaType(browser),\n isIE: isIEType(browser),\n osVersion: getOsVersion(os),\n osName: getOsName(os),\n fullBrowserVersion: getBrowserFullVersion(browser),\n browserVersion: getBrowserVersion(browser),\n browserName: getBrowserName(browser),\n mobileVendor: getMobileVendor(device),\n mobileModel: getMobileModel(device),\n engineName: getEngineName(engine),\n engineVersion: getEngineVersion(engine),\n getUA: getUseragent(ua),\n isEdge: isEdgeType(browser) || isEdgeChromiumType(ua),\n isYandex: isYandexType(browser),\n deviceType: getDeviceType(device),\n isIOS13: getIOS13(),\n isIPad13: getIPad13(),\n isIPhone13: getIphone13(),\n isIPod13: getIPod13(),\n isElectron: isElectronType(),\n isEdgeChromium: isEdgeChromiumType(ua),\n isLegacyEdge: isEdgeType(browser) && !isEdgeChromiumType(ua),\n isWindows: isWindowsType(os),\n isMacOs: isMacOsType(os),\n isMIUI: isMIUIType(browser),\n isSamsungBrowser: isSamsungBrowserType(browser)\n };\n}\n\nvar isSmartTV = isSmartTVType(device);\nvar isConsole = isConsoleType(device);\nvar isWearable = isWearableType(device);\nvar isEmbedded = isEmbeddedType(device);\nvar isMobileSafari = isMobileSafariType(browser) || getIPad13();\nvar isChromium = isChromiumType(browser);\nvar isMobile = isMobileAndTabletType(device) || getIPad13();\nvar isMobileOnly = isMobileType(device);\nvar isTablet = isTabletType(device) || getIPad13();\nvar isBrowser = isBrowserType(device);\nvar isDesktop = isBrowserType(device);\nvar isAndroid = isAndroidType(os);\nvar isWinPhone = isWinPhoneType(os);\nvar isIOS = isIOSType(os) || getIPad13();\nvar isChrome = isChromeType(browser);\nvar isFirefox = isFirefoxType(browser);\nvar isSafari = isSafariType(browser);\nvar isOpera = isOperaType(browser);\nvar isIE = isIEType(browser);\nvar osVersion = getOsVersion(os);\nvar osName = getOsName(os);\nvar fullBrowserVersion = getBrowserFullVersion(browser);\nvar browserVersion = getBrowserVersion(browser);\nvar browserName = getBrowserName(browser);\nvar mobileVendor = getMobileVendor(device);\nvar mobileModel = getMobileModel(device);\nvar engineName = getEngineName(engine);\nvar engineVersion = getEngineVersion(engine);\nvar getUA = getUseragent(ua);\nvar isEdge = isEdgeType(browser) || isEdgeChromiumType(ua);\nvar isYandex = isYandexType(browser);\nvar deviceType = getDeviceType(device);\nvar isIOS13 = getIOS13();\nvar isIPad13 = getIPad13();\nvar isIPhone13 = getIphone13();\nvar isIPod13 = getIPod13();\nvar isElectron = isElectronType();\nvar isEdgeChromium = isEdgeChromiumType(ua);\nvar isLegacyEdge = isEdgeType(browser) && !isEdgeChromiumType(ua);\nvar isWindows = isWindowsType(os);\nvar isMacOs = isMacOsType(os);\nvar isMIUI = isMIUIType(browser);\nvar isSamsungBrowser = isSamsungBrowserType(browser);\nvar getSelectorsByUserAgent = function getSelectorsByUserAgent(userAgent) {\n if (!userAgent || typeof userAgent !== 'string') {\n console.error('No valid user agent string was provided');\n return;\n }\n\n var _UAHelper$parseUserAg = parseUserAgent(userAgent),\n device = _UAHelper$parseUserAg.device,\n browser = _UAHelper$parseUserAg.browser,\n os = _UAHelper$parseUserAg.os,\n engine = _UAHelper$parseUserAg.engine,\n ua = _UAHelper$parseUserAg.ua;\n\n return buildSelectorsObject({\n device: device,\n browser: browser,\n os: os,\n engine: engine,\n ua: ua\n });\n};\n\nvar AndroidView = function AndroidView(_ref) {\n var renderWithFragment = _ref.renderWithFragment,\n children = _ref.children,\n props = _objectWithoutProperties(_ref, [\"renderWithFragment\", \"children\"]);\n\n return isAndroid ? renderWithFragment ? React__default.createElement(React.Fragment, null, children) : React__default.createElement(\"div\", props, children) : null;\n};\nvar BrowserView = function BrowserView(_ref2) {\n var renderWithFragment = _ref2.renderWithFragment,\n children = _ref2.children,\n props = _objectWithoutProperties(_ref2, [\"renderWithFragment\", \"children\"]);\n\n return isBrowser ? renderWithFragment ? React__default.createElement(React.Fragment, null, children) : React__default.createElement(\"div\", props, children) : null;\n};\nvar IEView = function IEView(_ref3) {\n var renderWithFragment = _ref3.renderWithFragment,\n children = _ref3.children,\n props = _objectWithoutProperties(_ref3, [\"renderWithFragment\", \"children\"]);\n\n return isIE ? renderWithFragment ? React__default.createElement(React.Fragment, null, children) : React__default.createElement(\"div\", props, children) : null;\n};\nvar IOSView = function IOSView(_ref4) {\n var renderWithFragment = _ref4.renderWithFragment,\n children = _ref4.children,\n props = _objectWithoutProperties(_ref4, [\"renderWithFragment\", \"children\"]);\n\n return isIOS ? renderWithFragment ? React__default.createElement(React.Fragment, null, children) : React__default.createElement(\"div\", props, children) : null;\n};\nvar MobileView = function MobileView(_ref5) {\n var renderWithFragment = _ref5.renderWithFragment,\n children = _ref5.children,\n props = _objectWithoutProperties(_ref5, [\"renderWithFragment\", \"children\"]);\n\n return isMobile ? renderWithFragment ? React__default.createElement(React.Fragment, null, children) : React__default.createElement(\"div\", props, children) : null;\n};\nvar TabletView = function TabletView(_ref6) {\n var renderWithFragment = _ref6.renderWithFragment,\n children = _ref6.children,\n props = _objectWithoutProperties(_ref6, [\"renderWithFragment\", \"children\"]);\n\n return isTablet ? renderWithFragment ? React__default.createElement(React.Fragment, null, children) : React__default.createElement(\"div\", props, children) : null;\n};\nvar WinPhoneView = function WinPhoneView(_ref7) {\n var renderWithFragment = _ref7.renderWithFragment,\n children = _ref7.children,\n props = _objectWithoutProperties(_ref7, [\"renderWithFragment\", \"children\"]);\n\n return isWinPhone ? renderWithFragment ? React__default.createElement(React.Fragment, null, children) : React__default.createElement(\"div\", props, children) : null;\n};\nvar MobileOnlyView = function MobileOnlyView(_ref8) {\n var renderWithFragment = _ref8.renderWithFragment,\n children = _ref8.children,\n viewClassName = _ref8.viewClassName,\n style = _ref8.style,\n props = _objectWithoutProperties(_ref8, [\"renderWithFragment\", \"children\", \"viewClassName\", \"style\"]);\n\n return isMobileOnly ? renderWithFragment ? React__default.createElement(React.Fragment, null, children) : React__default.createElement(\"div\", props, children) : null;\n};\nvar SmartTVView = function SmartTVView(_ref9) {\n var renderWithFragment = _ref9.renderWithFragment,\n children = _ref9.children,\n props = _objectWithoutProperties(_ref9, [\"renderWithFragment\", \"children\"]);\n\n return isSmartTV ? renderWithFragment ? React__default.createElement(React.Fragment, null, children) : React__default.createElement(\"div\", props, children) : null;\n};\nvar ConsoleView = function ConsoleView(_ref10) {\n var renderWithFragment = _ref10.renderWithFragment,\n children = _ref10.children,\n props = _objectWithoutProperties(_ref10, [\"renderWithFragment\", \"children\"]);\n\n return isConsole ? renderWithFragment ? React__default.createElement(React.Fragment, null, children) : React__default.createElement(\"div\", props, children) : null;\n};\nvar WearableView = function WearableView(_ref11) {\n var renderWithFragment = _ref11.renderWithFragment,\n children = _ref11.children,\n props = _objectWithoutProperties(_ref11, [\"renderWithFragment\", \"children\"]);\n\n return isWearable ? renderWithFragment ? React__default.createElement(React.Fragment, null, children) : React__default.createElement(\"div\", props, children) : null;\n};\nvar CustomView = function CustomView(_ref12) {\n var renderWithFragment = _ref12.renderWithFragment,\n children = _ref12.children,\n viewClassName = _ref12.viewClassName,\n style = _ref12.style,\n condition = _ref12.condition,\n props = _objectWithoutProperties(_ref12, [\"renderWithFragment\", \"children\", \"viewClassName\", \"style\", \"condition\"]);\n\n return condition ? renderWithFragment ? React__default.createElement(React.Fragment, null, children) : React__default.createElement(\"div\", props, children) : null;\n};\n\nfunction withOrientationChange(WrappedComponent) {\n return /*#__PURE__*/function (_React$Component) {\n _inherits(_class, _React$Component);\n\n function _class(props) {\n var _this;\n\n _classCallCheck(this, _class);\n\n _this = _possibleConstructorReturn(this, _getPrototypeOf(_class).call(this, props));\n _this.isEventListenerAdded = false;\n _this.handleOrientationChange = _this.handleOrientationChange.bind(_assertThisInitialized(_this));\n _this.onOrientationChange = _this.onOrientationChange.bind(_assertThisInitialized(_this));\n _this.onPageLoad = _this.onPageLoad.bind(_assertThisInitialized(_this));\n _this.state = {\n isLandscape: false,\n isPortrait: false\n };\n return _this;\n }\n\n _createClass(_class, [{\n key: \"handleOrientationChange\",\n value: function handleOrientationChange() {\n if (!this.isEventListenerAdded) {\n this.isEventListenerAdded = true;\n }\n\n var orientation = window.innerWidth > window.innerHeight ? 90 : 0;\n this.setState({\n isPortrait: orientation === 0,\n isLandscape: orientation === 90\n });\n }\n }, {\n key: \"onOrientationChange\",\n value: function onOrientationChange() {\n this.handleOrientationChange();\n }\n }, {\n key: \"onPageLoad\",\n value: function onPageLoad() {\n this.handleOrientationChange();\n }\n }, {\n key: \"componentDidMount\",\n value: function componentDidMount() {\n if ((typeof window === \"undefined\" ? \"undefined\" : _typeof(window)) !== undefined && isMobile) {\n if (!this.isEventListenerAdded) {\n this.handleOrientationChange();\n window.addEventListener(\"load\", this.onPageLoad, false);\n } else {\n window.removeEventListener(\"load\", this.onPageLoad, false);\n }\n\n window.addEventListener(\"resize\", this.onOrientationChange, false);\n }\n }\n }, {\n key: \"componentWillUnmount\",\n value: function componentWillUnmount() {\n window.removeEventListener(\"resize\", this.onOrientationChange, false);\n }\n }, {\n key: \"render\",\n value: function render() {\n return React__default.createElement(WrappedComponent, _extends({}, this.props, {\n isLandscape: this.state.isLandscape,\n isPortrait: this.state.isPortrait\n }));\n }\n }]);\n\n return _class;\n }(React__default.Component);\n}\n\nfunction useMobileOrientation() {\n var _useState = React.useState(function () {\n var orientation = window.innerWidth > window.innerHeight ? 90 : 0;\n return {\n isPortrait: orientation === 0,\n isLandscape: orientation === 90,\n orientation: orientation === 0 ? 'portrait' : 'landscape'\n };\n }),\n _useState2 = _slicedToArray(_useState, 2),\n state = _useState2[0],\n setState = _useState2[1];\n\n var handleOrientationChange = React.useCallback(function () {\n var orientation = window.innerWidth > window.innerHeight ? 90 : 0;\n var next = {\n isPortrait: orientation === 0,\n isLandscape: orientation === 90,\n orientation: orientation === 0 ? 'portrait' : 'landscape'\n };\n state.orientation !== next.orientation && setState(next);\n }, [state.orientation]);\n React.useEffect(function () {\n if ((typeof window === \"undefined\" ? \"undefined\" : _typeof(window)) !== undefined && isMobile) {\n handleOrientationChange();\n window.addEventListener(\"load\", handleOrientationChange, false);\n window.addEventListener(\"resize\", handleOrientationChange, false);\n }\n\n return function () {\n window.removeEventListener(\"resize\", handleOrientationChange, false);\n window.removeEventListener(\"load\", handleOrientationChange, false);\n };\n }, [handleOrientationChange]);\n return state;\n}\n\nfunction useDeviceData(userAgent) {\n var hookUserAgent = userAgent ? userAgent : window.navigator.userAgent;\n return parseUserAgent(hookUserAgent);\n}\n\nfunction useDeviceSelectors(userAgent) {\n var hookUserAgent = userAgent ? userAgent : window.navigator.userAgent;\n var deviceData = useDeviceData(hookUserAgent);\n var selectors = buildSelectorsObject(deviceData);\n return [selectors, deviceData];\n}\n\nexports.AndroidView = AndroidView;\nexports.BrowserTypes = BrowserTypes;\nexports.BrowserView = BrowserView;\nexports.ConsoleView = ConsoleView;\nexports.CustomView = CustomView;\nexports.IEView = IEView;\nexports.IOSView = IOSView;\nexports.MobileOnlyView = MobileOnlyView;\nexports.MobileView = MobileView;\nexports.OsTypes = OsTypes;\nexports.SmartTVView = SmartTVView;\nexports.TabletView = TabletView;\nexports.WearableView = WearableView;\nexports.WinPhoneView = WinPhoneView;\nexports.browserName = browserName;\nexports.browserVersion = browserVersion;\nexports.deviceDetect = deviceDetect;\nexports.deviceType = deviceType;\nexports.engineName = engineName;\nexports.engineVersion = engineVersion;\nexports.fullBrowserVersion = fullBrowserVersion;\nexports.getSelectorsByUserAgent = getSelectorsByUserAgent;\nexports.getUA = getUA;\nexports.isAndroid = isAndroid;\nexports.isBrowser = isBrowser;\nexports.isChrome = isChrome;\nexports.isChromium = isChromium;\nexports.isConsole = isConsole;\nexports.isDesktop = isDesktop;\nexports.isEdge = isEdge;\nexports.isEdgeChromium = isEdgeChromium;\nexports.isElectron = isElectron;\nexports.isEmbedded = isEmbedded;\nexports.isFirefox = isFirefox;\nexports.isIE = isIE;\nexports.isIOS = isIOS;\nexports.isIOS13 = isIOS13;\nexports.isIPad13 = isIPad13;\nexports.isIPhone13 = isIPhone13;\nexports.isIPod13 = isIPod13;\nexports.isLegacyEdge = isLegacyEdge;\nexports.isMIUI = isMIUI;\nexports.isMacOs = isMacOs;\nexports.isMobile = isMobile;\nexports.isMobileOnly = isMobileOnly;\nexports.isMobileSafari = isMobileSafari;\nexports.isOpera = isOpera;\nexports.isSafari = isSafari;\nexports.isSamsungBrowser = isSamsungBrowser;\nexports.isSmartTV = isSmartTV;\nexports.isTablet = isTablet;\nexports.isWearable = isWearable;\nexports.isWinPhone = isWinPhone;\nexports.isWindows = isWindows;\nexports.isYandex = isYandex;\nexports.mobileModel = mobileModel;\nexports.mobileVendor = mobileVendor;\nexports.osName = osName;\nexports.osVersion = osVersion;\nexports.parseUserAgent = parseUserAgent;\nexports.setUserAgent = setUserAgent;\nexports.useDeviceData = useDeviceData;\nexports.useDeviceSelectors = useDeviceSelectors;\nexports.useMobileOrientation = useMobileOrientation;\nexports.withOrientationChange = withOrientationChange;\n","/**\n * @license React\n * react-dom.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n/*\n Modernizr 3.0.0pre (Custom Build) | MIT\n*/\n'use strict';var aa=require(\"react\"),ba=require(\"scheduler\");function p(a){for(var b=\"https://reactjs.org/docs/error-decoder.html?invariant=\"+a,c=1;cb}return!1}function t(a,b,c,d,e,f,g){this.acceptsBooleans=2===b||3===b||4===b;this.attributeName=d;this.attributeNamespace=e;this.mustUseProperty=c;this.propertyName=a;this.type=b;this.sanitizeURL=f;this.removeEmptyString=g}var z={};\n\"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style\".split(\" \").forEach(function(a){z[a]=new t(a,0,!1,a,null,!1,!1)});[[\"acceptCharset\",\"accept-charset\"],[\"className\",\"class\"],[\"htmlFor\",\"for\"],[\"httpEquiv\",\"http-equiv\"]].forEach(function(a){var b=a[0];z[b]=new t(b,1,!1,a[1],null,!1,!1)});[\"contentEditable\",\"draggable\",\"spellCheck\",\"value\"].forEach(function(a){z[a]=new t(a,2,!1,a.toLowerCase(),null,!1,!1)});\n[\"autoReverse\",\"externalResourcesRequired\",\"focusable\",\"preserveAlpha\"].forEach(function(a){z[a]=new t(a,2,!1,a,null,!1,!1)});\"allowFullScreen async autoFocus autoPlay controls default defer disabled disablePictureInPicture disableRemotePlayback formNoValidate hidden loop noModule noValidate open playsInline readOnly required reversed scoped seamless itemScope\".split(\" \").forEach(function(a){z[a]=new t(a,3,!1,a.toLowerCase(),null,!1,!1)});\n[\"checked\",\"multiple\",\"muted\",\"selected\"].forEach(function(a){z[a]=new t(a,3,!0,a,null,!1,!1)});[\"capture\",\"download\"].forEach(function(a){z[a]=new t(a,4,!1,a,null,!1,!1)});[\"cols\",\"rows\",\"size\",\"span\"].forEach(function(a){z[a]=new t(a,6,!1,a,null,!1,!1)});[\"rowSpan\",\"start\"].forEach(function(a){z[a]=new t(a,5,!1,a.toLowerCase(),null,!1,!1)});var qa=/[\\-:]([a-z])/g;function ra(a){return a[1].toUpperCase()}\n\"accent-height alignment-baseline arabic-form baseline-shift cap-height clip-path clip-rule color-interpolation color-interpolation-filters color-profile color-rendering dominant-baseline enable-background fill-opacity fill-rule flood-color flood-opacity font-family font-size font-size-adjust font-stretch font-style font-variant font-weight glyph-name glyph-orientation-horizontal glyph-orientation-vertical horiz-adv-x horiz-origin-x image-rendering letter-spacing lighting-color marker-end marker-mid marker-start overline-position overline-thickness paint-order panose-1 pointer-events rendering-intent shape-rendering stop-color stop-opacity strikethrough-position strikethrough-thickness stroke-dasharray stroke-dashoffset stroke-linecap stroke-linejoin stroke-miterlimit stroke-opacity stroke-width text-anchor text-decoration text-rendering underline-position underline-thickness unicode-bidi unicode-range units-per-em v-alphabetic v-hanging v-ideographic v-mathematical vector-effect vert-adv-y vert-origin-x vert-origin-y word-spacing writing-mode xmlns:xlink x-height\".split(\" \").forEach(function(a){var b=a.replace(qa,\nra);z[b]=new t(b,1,!1,a,null,!1,!1)});\"xlink:actuate xlink:arcrole xlink:role xlink:show xlink:title xlink:type\".split(\" \").forEach(function(a){var b=a.replace(qa,ra);z[b]=new t(b,1,!1,a,\"http://www.w3.org/1999/xlink\",!1,!1)});[\"xml:base\",\"xml:lang\",\"xml:space\"].forEach(function(a){var b=a.replace(qa,ra);z[b]=new t(b,1,!1,a,\"http://www.w3.org/XML/1998/namespace\",!1,!1)});[\"tabIndex\",\"crossOrigin\"].forEach(function(a){z[a]=new t(a,1,!1,a.toLowerCase(),null,!1,!1)});\nz.xlinkHref=new t(\"xlinkHref\",1,!1,\"xlink:href\",\"http://www.w3.org/1999/xlink\",!0,!1);[\"src\",\"href\",\"action\",\"formAction\"].forEach(function(a){z[a]=new t(a,1,!1,a.toLowerCase(),null,!0,!0)});\nfunction sa(a,b,c,d){var e=z.hasOwnProperty(b)?z[b]:null;if(null!==e?0!==e.type:d||!(2h||e[g]!==f[h]){var k=\"\\n\"+e[g].replace(\" at new \",\" at \");a.displayName&&k.includes(\"\")&&(k=k.replace(\"\",a.displayName));return k}while(1<=g&&0<=h)}break}}}finally{Ma=!1,Error.prepareStackTrace=c}return(a=a?a.displayName||a.name:\"\")?La(a):\"\"}\nfunction Oa(a){switch(a.tag){case 5:return La(a.type);case 16:return La(\"Lazy\");case 13:return La(\"Suspense\");case 19:return La(\"SuspenseList\");case 0:case 2:case 15:return a=Na(a.type,!1),a;case 11:return a=Na(a.type.render,!1),a;case 1:return a=Na(a.type,!0),a;default:return\"\"}}\nfunction Pa(a){if(null==a)return null;if(\"function\"===typeof a)return a.displayName||a.name||null;if(\"string\"===typeof a)return a;switch(a){case wa:return\"Fragment\";case va:return\"Portal\";case za:return\"Profiler\";case xa:return\"StrictMode\";case Da:return\"Suspense\";case Ea:return\"SuspenseList\"}if(\"object\"===typeof a)switch(a.$$typeof){case Ba:return(a.displayName||\"Context\")+\".Consumer\";case Aa:return(a._context.displayName||\"Context\")+\".Provider\";case Ca:var b=a.render;a=a.displayName;a||(a=b.displayName||\nb.name||\"\",a=\"\"!==a?\"ForwardRef(\"+a+\")\":\"ForwardRef\");return a;case Fa:return b=a.displayName||null,null!==b?b:Pa(a.type)||\"Memo\";case Ga:b=a._payload;a=a._init;try{return Pa(a(b))}catch(c){}}return null}\nfunction Qa(a){var b=a.type;switch(a.tag){case 24:return\"Cache\";case 9:return(b.displayName||\"Context\")+\".Consumer\";case 10:return(b._context.displayName||\"Context\")+\".Provider\";case 18:return\"DehydratedFragment\";case 11:return a=b.render,a=a.displayName||a.name||\"\",b.displayName||(\"\"!==a?\"ForwardRef(\"+a+\")\":\"ForwardRef\");case 7:return\"Fragment\";case 5:return b;case 4:return\"Portal\";case 3:return\"Root\";case 6:return\"Text\";case 16:return Pa(b);case 8:return b===xa?\"StrictMode\":\"Mode\";case 22:return\"Offscreen\";\ncase 12:return\"Profiler\";case 21:return\"Scope\";case 13:return\"Suspense\";case 19:return\"SuspenseList\";case 25:return\"TracingMarker\";case 1:case 0:case 17:case 2:case 14:case 15:if(\"function\"===typeof b)return b.displayName||b.name||null;if(\"string\"===typeof b)return b}return null}function Ra(a){switch(typeof a){case \"boolean\":case \"number\":case \"string\":case \"undefined\":return a;case \"object\":return a;default:return\"\"}}\nfunction Sa(a){var b=a.type;return(a=a.nodeName)&&\"input\"===a.toLowerCase()&&(\"checkbox\"===b||\"radio\"===b)}\nfunction Ta(a){var b=Sa(a)?\"checked\":\"value\",c=Object.getOwnPropertyDescriptor(a.constructor.prototype,b),d=\"\"+a[b];if(!a.hasOwnProperty(b)&&\"undefined\"!==typeof c&&\"function\"===typeof c.get&&\"function\"===typeof c.set){var e=c.get,f=c.set;Object.defineProperty(a,b,{configurable:!0,get:function(){return e.call(this)},set:function(a){d=\"\"+a;f.call(this,a)}});Object.defineProperty(a,b,{enumerable:c.enumerable});return{getValue:function(){return d},setValue:function(a){d=\"\"+a},stopTracking:function(){a._valueTracker=\nnull;delete a[b]}}}}function Ua(a){a._valueTracker||(a._valueTracker=Ta(a))}function Va(a){if(!a)return!1;var b=a._valueTracker;if(!b)return!0;var c=b.getValue();var d=\"\";a&&(d=Sa(a)?a.checked?\"true\":\"false\":a.value);a=d;return a!==c?(b.setValue(a),!0):!1}function Wa(a){a=a||(\"undefined\"!==typeof document?document:void 0);if(\"undefined\"===typeof a)return null;try{return a.activeElement||a.body}catch(b){return a.body}}\nfunction Xa(a,b){var c=b.checked;return A({},b,{defaultChecked:void 0,defaultValue:void 0,value:void 0,checked:null!=c?c:a._wrapperState.initialChecked})}function Ya(a,b){var c=null==b.defaultValue?\"\":b.defaultValue,d=null!=b.checked?b.checked:b.defaultChecked;c=Ra(null!=b.value?b.value:c);a._wrapperState={initialChecked:d,initialValue:c,controlled:\"checkbox\"===b.type||\"radio\"===b.type?null!=b.checked:null!=b.value}}function Za(a,b){b=b.checked;null!=b&&sa(a,\"checked\",b,!1)}\nfunction $a(a,b){Za(a,b);var c=Ra(b.value),d=b.type;if(null!=c)if(\"number\"===d){if(0===c&&\"\"===a.value||a.value!=c)a.value=\"\"+c}else a.value!==\"\"+c&&(a.value=\"\"+c);else if(\"submit\"===d||\"reset\"===d){a.removeAttribute(\"value\");return}b.hasOwnProperty(\"value\")?bb(a,b.type,c):b.hasOwnProperty(\"defaultValue\")&&bb(a,b.type,Ra(b.defaultValue));null==b.checked&&null!=b.defaultChecked&&(a.defaultChecked=!!b.defaultChecked)}\nfunction cb(a,b,c){if(b.hasOwnProperty(\"value\")||b.hasOwnProperty(\"defaultValue\")){var d=b.type;if(!(\"submit\"!==d&&\"reset\"!==d||void 0!==b.value&&null!==b.value))return;b=\"\"+a._wrapperState.initialValue;c||b===a.value||(a.value=b);a.defaultValue=b}c=a.name;\"\"!==c&&(a.name=\"\");a.defaultChecked=!!a._wrapperState.initialChecked;\"\"!==c&&(a.name=c)}\nfunction bb(a,b,c){if(\"number\"!==b||Wa(a.ownerDocument)!==a)null==c?a.defaultValue=\"\"+a._wrapperState.initialValue:a.defaultValue!==\"\"+c&&(a.defaultValue=\"\"+c)}var db=Array.isArray;\nfunction eb(a,b,c,d){a=a.options;if(b){b={};for(var e=0;e\"+b.valueOf().toString()+\"\";for(b=lb.firstChild;a.firstChild;)a.removeChild(a.firstChild);for(;b.firstChild;)a.appendChild(b.firstChild)}});\nfunction nb(a,b){if(b){var c=a.firstChild;if(c&&c===a.lastChild&&3===c.nodeType){c.nodeValue=b;return}}a.textContent=b}\nvar ob={animationIterationCount:!0,aspectRatio:!0,borderImageOutset:!0,borderImageSlice:!0,borderImageWidth:!0,boxFlex:!0,boxFlexGroup:!0,boxOrdinalGroup:!0,columnCount:!0,columns:!0,flex:!0,flexGrow:!0,flexPositive:!0,flexShrink:!0,flexNegative:!0,flexOrder:!0,gridArea:!0,gridRow:!0,gridRowEnd:!0,gridRowSpan:!0,gridRowStart:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnSpan:!0,gridColumnStart:!0,fontWeight:!0,lineClamp:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,tabSize:!0,widows:!0,zIndex:!0,\nzoom:!0,fillOpacity:!0,floodOpacity:!0,stopOpacity:!0,strokeDasharray:!0,strokeDashoffset:!0,strokeMiterlimit:!0,strokeOpacity:!0,strokeWidth:!0},pb=[\"Webkit\",\"ms\",\"Moz\",\"O\"];Object.keys(ob).forEach(function(a){pb.forEach(function(b){b=b+a.charAt(0).toUpperCase()+a.substring(1);ob[b]=ob[a]})});function qb(a,b,c){return null==b||\"boolean\"===typeof b||\"\"===b?\"\":c||\"number\"!==typeof b||0===b||ob.hasOwnProperty(a)&&ob[a]?(\"\"+b).trim():b+\"px\"}\nfunction rb(a,b){a=a.style;for(var c in b)if(b.hasOwnProperty(c)){var d=0===c.indexOf(\"--\"),e=qb(c,b[c],d);\"float\"===c&&(c=\"cssFloat\");d?a.setProperty(c,e):a[c]=e}}var sb=A({menuitem:!0},{area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0});\nfunction tb(a,b){if(b){if(sb[a]&&(null!=b.children||null!=b.dangerouslySetInnerHTML))throw Error(p(137,a));if(null!=b.dangerouslySetInnerHTML){if(null!=b.children)throw Error(p(60));if(\"object\"!==typeof b.dangerouslySetInnerHTML||!(\"__html\"in b.dangerouslySetInnerHTML))throw Error(p(61));}if(null!=b.style&&\"object\"!==typeof b.style)throw Error(p(62));}}\nfunction ub(a,b){if(-1===a.indexOf(\"-\"))return\"string\"===typeof b.is;switch(a){case \"annotation-xml\":case \"color-profile\":case \"font-face\":case \"font-face-src\":case \"font-face-uri\":case \"font-face-format\":case \"font-face-name\":case \"missing-glyph\":return!1;default:return!0}}var vb=null;function wb(a){a=a.target||a.srcElement||window;a.correspondingUseElement&&(a=a.correspondingUseElement);return 3===a.nodeType?a.parentNode:a}var xb=null,yb=null,zb=null;\nfunction Ab(a){if(a=Bb(a)){if(\"function\"!==typeof xb)throw Error(p(280));var b=a.stateNode;b&&(b=Cb(b),xb(a.stateNode,a.type,b))}}function Db(a){yb?zb?zb.push(a):zb=[a]:yb=a}function Eb(){if(yb){var a=yb,b=zb;zb=yb=null;Ab(a);if(b)for(a=0;a>>=0;return 0===a?32:31-(oc(a)/pc|0)|0}var qc=64,rc=4194304;\nfunction sc(a){switch(a&-a){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return a&4194240;case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:return a&130023424;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 1073741824;\ndefault:return a}}function tc(a,b){var c=a.pendingLanes;if(0===c)return 0;var d=0,e=a.suspendedLanes,f=a.pingedLanes,g=c&268435455;if(0!==g){var h=g&~e;0!==h?d=sc(h):(f&=g,0!==f&&(d=sc(f)))}else g=c&~e,0!==g?d=sc(g):0!==f&&(d=sc(f));if(0===d)return 0;if(0!==b&&b!==d&&0===(b&e)&&(e=d&-d,f=b&-b,e>=f||16===e&&0!==(f&4194240)))return b;0!==(d&4)&&(d|=c&16);b=a.entangledLanes;if(0!==b)for(a=a.entanglements,b&=d;0c;c++)b.push(a);return b}\nfunction zc(a,b,c){a.pendingLanes|=b;536870912!==b&&(a.suspendedLanes=0,a.pingedLanes=0);a=a.eventTimes;b=31-nc(b);a[b]=c}function Ac(a,b){var c=a.pendingLanes&~b;a.pendingLanes=b;a.suspendedLanes=0;a.pingedLanes=0;a.expiredLanes&=b;a.mutableReadLanes&=b;a.entangledLanes&=b;b=a.entanglements;var d=a.eventTimes;for(a=a.expirationTimes;0=ae),de=String.fromCharCode(32),ee=!1;\nfunction fe(a,b){switch(a){case \"keyup\":return-1!==Zd.indexOf(b.keyCode);case \"keydown\":return 229!==b.keyCode;case \"keypress\":case \"mousedown\":case \"focusout\":return!0;default:return!1}}function ge(a){a=a.detail;return\"object\"===typeof a&&\"data\"in a?a.data:null}var he=!1;function ie(a,b){switch(a){case \"compositionend\":return ge(b);case \"keypress\":if(32!==b.which)return null;ee=!0;return de;case \"textInput\":return a=b.data,a===de&&ee?null:a;default:return null}}\nfunction je(a,b){if(he)return\"compositionend\"===a||!$d&&fe(a,b)?(a=md(),ld=kd=jd=null,he=!1,a):null;switch(a){case \"paste\":return null;case \"keypress\":if(!(b.ctrlKey||b.altKey||b.metaKey)||b.ctrlKey&&b.altKey){if(b.char&&1=b)return{node:c,offset:b-a};a=d}a:{for(;c;){if(c.nextSibling){c=c.nextSibling;break a}c=c.parentNode}c=void 0}c=Ie(c)}}function Ke(a,b){return a&&b?a===b?!0:a&&3===a.nodeType?!1:b&&3===b.nodeType?Ke(a,b.parentNode):\"contains\"in a?a.contains(b):a.compareDocumentPosition?!!(a.compareDocumentPosition(b)&16):!1:!1}\nfunction Le(){for(var a=window,b=Wa();b instanceof a.HTMLIFrameElement;){try{var c=\"string\"===typeof b.contentWindow.location.href}catch(d){c=!1}if(c)a=b.contentWindow;else break;b=Wa(a.document)}return b}function Me(a){var b=a&&a.nodeName&&a.nodeName.toLowerCase();return b&&(\"input\"===b&&(\"text\"===a.type||\"search\"===a.type||\"tel\"===a.type||\"url\"===a.type||\"password\"===a.type)||\"textarea\"===b||\"true\"===a.contentEditable)}\nfunction Ne(a){var b=Le(),c=a.focusedElem,d=a.selectionRange;if(b!==c&&c&&c.ownerDocument&&Ke(c.ownerDocument.documentElement,c)){if(null!==d&&Me(c))if(b=d.start,a=d.end,void 0===a&&(a=b),\"selectionStart\"in c)c.selectionStart=b,c.selectionEnd=Math.min(a,c.value.length);else if(a=(b=c.ownerDocument||document)&&b.defaultView||window,a.getSelection){a=a.getSelection();var e=c.textContent.length,f=Math.min(d.start,e);d=void 0===d.end?f:Math.min(d.end,e);!a.extend&&f>d&&(e=d,d=f,f=e);e=Je(c,f);var g=Je(c,\nd);e&&g&&(1!==a.rangeCount||a.anchorNode!==e.node||a.anchorOffset!==e.offset||a.focusNode!==g.node||a.focusOffset!==g.offset)&&(b=b.createRange(),b.setStart(e.node,e.offset),a.removeAllRanges(),f>d?(a.addRange(b),a.extend(g.node,g.offset)):(b.setEnd(g.node,g.offset),a.addRange(b)))}b=[];for(a=c;a=a.parentNode;)1===a.nodeType&&b.push({element:a,left:a.scrollLeft,top:a.scrollTop});\"function\"===typeof c.focus&&c.focus();for(c=0;c=document.documentMode,Pe=null,Qe=null,Re=null,Se=!1;\nfunction Te(a,b,c){var d=c.window===c?c.document:9===c.nodeType?c:c.ownerDocument;Se||null==Pe||Pe!==Wa(d)||(d=Pe,\"selectionStart\"in d&&Me(d)?d={start:d.selectionStart,end:d.selectionEnd}:(d=(d.ownerDocument&&d.ownerDocument.defaultView||window).getSelection(),d={anchorNode:d.anchorNode,anchorOffset:d.anchorOffset,focusNode:d.focusNode,focusOffset:d.focusOffset}),Re&&He(Re,d)||(Re=d,d=ne(Qe,\"onSelect\"),0Sf||(a.current=Rf[Sf],Rf[Sf]=null,Sf--)}function G(a,b){Sf++;Rf[Sf]=a.current;a.current=b}var Uf={},H=Tf(Uf),Vf=Tf(!1),Wf=Uf;function Xf(a,b){var c=a.type.contextTypes;if(!c)return Uf;var d=a.stateNode;if(d&&d.__reactInternalMemoizedUnmaskedChildContext===b)return d.__reactInternalMemoizedMaskedChildContext;var e={},f;for(f in c)e[f]=b[f];d&&(a=a.stateNode,a.__reactInternalMemoizedUnmaskedChildContext=b,a.__reactInternalMemoizedMaskedChildContext=e);return e}\nfunction Yf(a){a=a.childContextTypes;return null!==a&&void 0!==a}function Zf(){E(Vf);E(H)}function $f(a,b,c){if(H.current!==Uf)throw Error(p(168));G(H,b);G(Vf,c)}function ag(a,b,c){var d=a.stateNode;b=b.childContextTypes;if(\"function\"!==typeof d.getChildContext)return c;d=d.getChildContext();for(var e in d)if(!(e in b))throw Error(p(108,Qa(a)||\"Unknown\",e));return A({},c,d)}\nfunction bg(a){a=(a=a.stateNode)&&a.__reactInternalMemoizedMergedChildContext||Uf;Wf=H.current;G(H,a);G(Vf,Vf.current);return!0}function cg(a,b,c){var d=a.stateNode;if(!d)throw Error(p(169));c?(a=ag(a,b,Wf),d.__reactInternalMemoizedMergedChildContext=a,E(Vf),E(H),G(H,a)):E(Vf);G(Vf,c)}var dg=null,eg=!1,fg=!1;function gg(a){null===dg?dg=[a]:dg.push(a)}function hg(a){eg=!0;gg(a)}\nfunction ig(){if(!fg&&null!==dg){fg=!0;var a=0,b=C;try{var c=dg;for(C=1;a>=g;e-=g;Yg=1<<32-nc(b)+e|c<m?(x=r,r=null):x=r.sibling;var v=q(e,r,h[m],k);if(null===v){null===r&&(r=x);break}a&&r&&null===v.alternate&&b(e,r);g=f(v,g,m);null===n?l=v:n.sibling=v;n=v;r=x}if(m===h.length)return c(e,r),I&&$g(e,m),l;if(null===r){for(;mr?(x=m,m=null):x=m.sibling;var w=q(e,m,v.value,k);if(null===w){null===m&&(m=x);break}a&&m&&null===w.alternate&&b(e,m);g=f(w,g,r);null===n?l=w:n.sibling=w;n=w;m=x}if(v.done)return c(e,\nm),I&&$g(e,r),l;if(null===m){for(;!v.done;r++,v=h.next())v=u(e,v.value,k),null!==v&&(g=f(v,g,r),null===n?l=v:n.sibling=v,n=v);I&&$g(e,r);return l}for(m=d(e,m);!v.done;r++,v=h.next())v=y(m,e,r,v.value,k),null!==v&&(a&&null!==v.alternate&&m.delete(null===v.key?r:v.key),g=f(v,g,r),null===n?l=v:n.sibling=v,n=v);a&&m.forEach(function(a){return b(e,a)});I&&$g(e,r);return l}function J(a,d,f,h){\"object\"===typeof f&&null!==f&&f.type===wa&&null===f.key&&(f=f.props.children);if(\"object\"===typeof f&&null!==f){switch(f.$$typeof){case ua:a:{for(var k=\nf.key,l=d;null!==l;){if(l.key===k){k=f.type;if(k===wa){if(7===l.tag){c(a,l.sibling);d=e(l,f.props.children);d.return=a;a=d;break a}}else if(l.elementType===k||\"object\"===typeof k&&null!==k&&k.$$typeof===Ga&&rh(k)===l.type){c(a,l.sibling);d=e(l,f.props);d.ref=ph(a,l,f);d.return=a;a=d;break a}c(a,l);break}else b(a,l);l=l.sibling}f.type===wa?(d=xh(f.props.children,a.mode,h,f.key),d.return=a,a=d):(h=vh(f.type,f.key,f.props,null,a.mode,h),h.ref=ph(a,d,f),h.return=a,a=h)}return g(a);case va:a:{for(l=f.key;null!==\nd;){if(d.key===l)if(4===d.tag&&d.stateNode.containerInfo===f.containerInfo&&d.stateNode.implementation===f.implementation){c(a,d.sibling);d=e(d,f.children||[]);d.return=a;a=d;break a}else{c(a,d);break}else b(a,d);d=d.sibling}d=wh(f,a.mode,h);d.return=a;a=d}return g(a);case Ga:return l=f._init,J(a,d,l(f._payload),h)}if(db(f))return m(a,d,f,h);if(Ja(f))return w(a,d,f,h);qh(a,f)}return\"string\"===typeof f&&\"\"!==f||\"number\"===typeof f?(f=\"\"+f,null!==d&&6===d.tag?(c(a,d.sibling),d=e(d,f),d.return=a,a=d):\n(c(a,d),d=uh(f,a.mode,h),d.return=a,a=d),g(a)):c(a,d)}return J}var yh=sh(!0),zh=sh(!1),Ah={},Bh=Tf(Ah),Ch=Tf(Ah),Dh=Tf(Ah);function Eh(a){if(a===Ah)throw Error(p(174));return a}function Fh(a,b){G(Dh,b);G(Ch,a);G(Bh,Ah);a=b.nodeType;switch(a){case 9:case 11:b=(b=b.documentElement)?b.namespaceURI:kb(null,\"\");break;default:a=8===a?b.parentNode:b,b=a.namespaceURI||null,a=a.tagName,b=kb(b,a)}E(Bh);G(Bh,b)}function Gh(){E(Bh);E(Ch);E(Dh)}\nfunction Hh(a){Eh(Dh.current);var b=Eh(Bh.current);var c=kb(b,a.type);b!==c&&(G(Ch,a),G(Bh,c))}function Ih(a){Ch.current===a&&(E(Bh),E(Ch))}var K=Tf(0);\nfunction Jh(a){for(var b=a;null!==b;){if(13===b.tag){var c=b.memoizedState;if(null!==c&&(c=c.dehydrated,null===c||\"$?\"===c.data||\"$!\"===c.data))return b}else if(19===b.tag&&void 0!==b.memoizedProps.revealOrder){if(0!==(b.flags&128))return b}else if(null!==b.child){b.child.return=b;b=b.child;continue}if(b===a)break;for(;null===b.sibling;){if(null===b.return||b.return===a)return null;b=b.return}b.sibling.return=b.return;b=b.sibling}return null}var Kh=[];\nfunction Lh(){for(var a=0;ac?c:4;a(!0);var d=Nh.transition;Nh.transition={};try{a(!1),b()}finally{C=c,Nh.transition=d}}function Bi(){return ai().memoizedState}\nfunction Ci(a,b,c){var d=Kg(a);c={lane:d,action:c,hasEagerState:!1,eagerState:null,next:null};Di(a)?Ei(b,c):(Fi(a,b,c),c=Jg(),a=Lg(a,d,c),null!==a&&Gi(a,b,d))}\nfunction ni(a,b,c){var d=Kg(a),e={lane:d,action:c,hasEagerState:!1,eagerState:null,next:null};if(Di(a))Ei(b,e);else{Fi(a,b,e);var f=a.alternate;if(0===a.lanes&&(null===f||0===f.lanes)&&(f=b.lastRenderedReducer,null!==f))try{var g=b.lastRenderedState,h=f(g,c);e.hasEagerState=!0;e.eagerState=h;if(Ge(h,g))return}catch(k){}finally{}c=Jg();a=Lg(a,d,c);null!==a&&Gi(a,b,d)}}function Di(a){var b=a.alternate;return a===L||null!==b&&b===L}\nfunction Ei(a,b){Qh=Ph=!0;var c=a.pending;null===c?b.next=b:(b.next=c.next,c.next=b);a.pending=b}function Fi(a,b,c){Bg(a)?(a=b.interleaved,null===a?(c.next=c,null===vg?vg=[b]:vg.push(b)):(c.next=a.next,a.next=c),b.interleaved=c):(a=b.pending,null===a?c.next=c:(c.next=a.next,a.next=c),b.pending=c)}function Gi(a,b,c){if(0!==(c&4194240)){var d=b.lanes;d&=a.pendingLanes;c|=d;b.lanes=c;Bc(a,c)}}\nvar Yh={readContext:ug,useCallback:O,useContext:O,useEffect:O,useImperativeHandle:O,useInsertionEffect:O,useLayoutEffect:O,useMemo:O,useReducer:O,useRef:O,useState:O,useDebugValue:O,useDeferredValue:O,useTransition:O,useMutableSource:O,useSyncExternalStore:O,useId:O,unstable_isNewReconciler:!1},Vh={readContext:ug,useCallback:function(a,b){$h().memoizedState=[a,void 0===b?null:b];return a},useContext:ug,useEffect:ri,useImperativeHandle:function(a,b,c){c=null!==c&&void 0!==c?c.concat([a]):null;return pi(4194308,\n4,ui.bind(null,b,a),c)},useLayoutEffect:function(a,b){return pi(4194308,4,a,b)},useInsertionEffect:function(a,b){return pi(4,2,a,b)},useMemo:function(a,b){var c=$h();b=void 0===b?null:b;a=a();c.memoizedState=[a,b];return a},useReducer:function(a,b,c){var d=$h();b=void 0!==c?c(b):b;d.memoizedState=d.baseState=b;a={pending:null,interleaved:null,lanes:0,dispatch:null,lastRenderedReducer:a,lastRenderedState:b};d.queue=a;a=a.dispatch=Ci.bind(null,L,a);return[d.memoizedState,a]},useRef:function(a){var b=\n$h();a={current:a};return b.memoizedState=a},useState:mi,useDebugValue:wi,useDeferredValue:function(a){return $h().memoizedState=a},useTransition:function(){var a=mi(!1),b=a[0];a=Ai.bind(null,a[1]);$h().memoizedState=a;return[b,a]},useMutableSource:function(){},useSyncExternalStore:function(a,b,c){var d=L,e=$h();if(I){if(void 0===c)throw Error(p(407));c=c()}else{c=b();if(null===P)throw Error(p(349));0!==(Oh&30)||ki(d,b,c)}e.memoizedState=c;var f={value:c,getSnapshot:b};e.queue=f;ri(hi.bind(null,d,\nf,a),[a]);d.flags|=2048;ii(9,ji.bind(null,d,f,c,b),void 0,null);return c},useId:function(){var a=$h(),b=P.identifierPrefix;if(I){var c=Zg;var d=Yg;c=(d&~(1<<32-nc(d)-1)).toString(32)+c;b=\":\"+b+\"R\"+c;c=Rh++;0\\x3c/script>\",a=a.removeChild(a.firstChild)):\n\"string\"===typeof d.is?a=g.createElement(c,{is:d.is}):(a=g.createElement(c),\"select\"===c&&(g=a,d.multiple?g.multiple=!0:d.size&&(g.size=d.size))):a=g.createElementNS(a,c);a[Nf]=b;a[Of]=d;Ti(a,b,!1,!1);b.stateNode=a;a:{g=ub(c,d);switch(c){case \"dialog\":D(\"cancel\",a);D(\"close\",a);e=d;break;case \"iframe\":case \"object\":case \"embed\":D(\"load\",a);e=d;break;case \"video\":case \"audio\":for(e=0;eaj&&(b.flags|=\n128,d=!0,Xi(f,!1),b.lanes=4194304)}else{if(!d)if(a=Jh(g),null!==a){if(b.flags|=128,d=!0,c=a.updateQueue,null!==c&&(b.updateQueue=c,b.flags|=4),Xi(f,!0),null===f.tail&&\"hidden\"===f.tailMode&&!g.alternate&&!I)return Q(b),null}else 2*B()-f.renderingStartTime>aj&&1073741824!==c&&(b.flags|=128,d=!0,Xi(f,!1),b.lanes=4194304);f.isBackwards?(g.sibling=b.child,b.child=g):(c=f.last,null!==c?c.sibling=g:b.child=g,f.last=g)}if(null!==f.tail)return b=f.tail,f.rendering=b,f.tail=b.sibling,f.renderingStartTime=\nB(),b.sibling=null,c=K.current,G(K,d?c&1|2:c&1),b;Q(b);return null;case 22:case 23:return bj(),d=null!==b.memoizedState,null!==a&&null!==a.memoizedState!==d&&(b.flags|=8192),d&&0!==(b.mode&1)?0!==(cj&1073741824)&&(Q(b),b.subtreeFlags&6&&(b.flags|=8192)):Q(b),null;case 24:return null;case 25:return null}throw Error(p(156,b.tag));}var dj=ta.ReactCurrentOwner,tg=!1;function ej(a,b,c,d){b.child=null===a?zh(b,null,c,d):yh(b,a.child,c,d)}\nfunction fj(a,b,c,d,e){c=c.render;var f=b.ref;sg(b,e);d=Uh(a,b,c,d,f,e);c=Zh();if(null!==a&&!tg)return b.updateQueue=a.updateQueue,b.flags&=-2053,a.lanes&=~e,gj(a,b,e);I&&c&&bh(b);b.flags|=1;ej(a,b,d,e);return b.child}\nfunction hj(a,b,c,d,e){if(null===a){var f=c.type;if(\"function\"===typeof f&&!ij(f)&&void 0===f.defaultProps&&null===c.compare&&void 0===c.defaultProps)return b.tag=15,b.type=f,jj(a,b,f,d,e);a=vh(c.type,null,d,b,b.mode,e);a.ref=b.ref;a.return=b;return b.child=a}f=a.child;if(0===(a.lanes&e)){var g=f.memoizedProps;c=c.compare;c=null!==c?c:He;if(c(g,d)&&a.ref===b.ref)return gj(a,b,e)}b.flags|=1;a=th(f,d);a.ref=b.ref;a.return=b;return b.child=a}\nfunction jj(a,b,c,d,e){if(null!==a){var f=a.memoizedProps;if(He(f,d)&&a.ref===b.ref)if(tg=!1,b.pendingProps=d=f,0!==(a.lanes&e))0!==(a.flags&131072)&&(tg=!0);else return b.lanes=a.lanes,gj(a,b,e)}return kj(a,b,c,d,e)}\nfunction lj(a,b,c){var d=b.pendingProps,e=d.children,f=null!==a?a.memoizedState:null;if(\"hidden\"===d.mode)if(0===(b.mode&1))b.memoizedState={baseLanes:0,cachePool:null,transitions:null},G(mj,cj),cj|=c;else if(0!==(c&1073741824))b.memoizedState={baseLanes:0,cachePool:null,transitions:null},d=null!==f?f.baseLanes:c,G(mj,cj),cj|=d;else return a=null!==f?f.baseLanes|c:c,b.lanes=b.childLanes=1073741824,b.memoizedState={baseLanes:a,cachePool:null,transitions:null},b.updateQueue=null,G(mj,cj),cj|=a,null;\nelse null!==f?(d=f.baseLanes|c,b.memoizedState=null):d=c,G(mj,cj),cj|=d;ej(a,b,e,c);return b.child}function nj(a,b){var c=b.ref;if(null===a&&null!==c||null!==a&&a.ref!==c)b.flags|=512,b.flags|=2097152}function kj(a,b,c,d,e){var f=Yf(c)?Wf:H.current;f=Xf(b,f);sg(b,e);c=Uh(a,b,c,d,f,e);d=Zh();if(null!==a&&!tg)return b.updateQueue=a.updateQueue,b.flags&=-2053,a.lanes&=~e,gj(a,b,e);I&&d&&bh(b);b.flags|=1;ej(a,b,c,e);return b.child}\nfunction oj(a,b,c,d,e){if(Yf(c)){var f=!0;bg(b)}else f=!1;sg(b,e);if(null===b.stateNode)null!==a&&(a.alternate=null,b.alternate=null,b.flags|=2),Og(b,c,d),Qg(b,c,d,e),d=!0;else if(null===a){var g=b.stateNode,h=b.memoizedProps;g.props=h;var k=g.context,l=c.contextType;\"object\"===typeof l&&null!==l?l=ug(l):(l=Yf(c)?Wf:H.current,l=Xf(b,l));var n=c.getDerivedStateFromProps,u=\"function\"===typeof n||\"function\"===typeof g.getSnapshotBeforeUpdate;u||\"function\"!==typeof g.UNSAFE_componentWillReceiveProps&&\n\"function\"!==typeof g.componentWillReceiveProps||(h!==d||k!==l)&&Pg(b,g,d,l);wg=!1;var q=b.memoizedState;g.state=q;Eg(b,d,g,e);k=b.memoizedState;h!==d||q!==k||Vf.current||wg?(\"function\"===typeof n&&(Ig(b,c,n,d),k=b.memoizedState),(h=wg||Ng(b,c,h,d,q,k,l))?(u||\"function\"!==typeof g.UNSAFE_componentWillMount&&\"function\"!==typeof g.componentWillMount||(\"function\"===typeof g.componentWillMount&&g.componentWillMount(),\"function\"===typeof g.UNSAFE_componentWillMount&&g.UNSAFE_componentWillMount()),\"function\"===\ntypeof g.componentDidMount&&(b.flags|=4194308)):(\"function\"===typeof g.componentDidMount&&(b.flags|=4194308),b.memoizedProps=d,b.memoizedState=k),g.props=d,g.state=k,g.context=l,d=h):(\"function\"===typeof g.componentDidMount&&(b.flags|=4194308),d=!1)}else{g=b.stateNode;yg(a,b);h=b.memoizedProps;l=b.type===b.elementType?h:kg(b.type,h);g.props=l;u=b.pendingProps;q=g.context;k=c.contextType;\"object\"===typeof k&&null!==k?k=ug(k):(k=Yf(c)?Wf:H.current,k=Xf(b,k));var y=c.getDerivedStateFromProps;(n=\"function\"===\ntypeof y||\"function\"===typeof g.getSnapshotBeforeUpdate)||\"function\"!==typeof g.UNSAFE_componentWillReceiveProps&&\"function\"!==typeof g.componentWillReceiveProps||(h!==u||q!==k)&&Pg(b,g,d,k);wg=!1;q=b.memoizedState;g.state=q;Eg(b,d,g,e);var m=b.memoizedState;h!==u||q!==m||Vf.current||wg?(\"function\"===typeof y&&(Ig(b,c,y,d),m=b.memoizedState),(l=wg||Ng(b,c,l,d,q,m,k)||!1)?(n||\"function\"!==typeof g.UNSAFE_componentWillUpdate&&\"function\"!==typeof g.componentWillUpdate||(\"function\"===typeof g.componentWillUpdate&&\ng.componentWillUpdate(d,m,k),\"function\"===typeof g.UNSAFE_componentWillUpdate&&g.UNSAFE_componentWillUpdate(d,m,k)),\"function\"===typeof g.componentDidUpdate&&(b.flags|=4),\"function\"===typeof g.getSnapshotBeforeUpdate&&(b.flags|=1024)):(\"function\"!==typeof g.componentDidUpdate||h===a.memoizedProps&&q===a.memoizedState||(b.flags|=4),\"function\"!==typeof g.getSnapshotBeforeUpdate||h===a.memoizedProps&&q===a.memoizedState||(b.flags|=1024),b.memoizedProps=d,b.memoizedState=m),g.props=d,g.state=m,g.context=\nk,d=l):(\"function\"!==typeof g.componentDidUpdate||h===a.memoizedProps&&q===a.memoizedState||(b.flags|=4),\"function\"!==typeof g.getSnapshotBeforeUpdate||h===a.memoizedProps&&q===a.memoizedState||(b.flags|=1024),d=!1)}return pj(a,b,c,d,f,e)}\nfunction pj(a,b,c,d,e,f){nj(a,b);var g=0!==(b.flags&128);if(!d&&!g)return e&&cg(b,c,!1),gj(a,b,f);d=b.stateNode;dj.current=b;var h=g&&\"function\"!==typeof c.getDerivedStateFromError?null:d.render();b.flags|=1;null!==a&&g?(b.child=yh(b,a.child,null,f),b.child=yh(b,null,h,f)):ej(a,b,h,f);b.memoizedState=d.state;e&&cg(b,c,!0);return b.child}function qj(a){var b=a.stateNode;b.pendingContext?$f(a,b.pendingContext,b.pendingContext!==b.context):b.context&&$f(a,b.context,!1);Fh(a,b.containerInfo)}\nfunction rj(a,b,c,d,e){nh();oh(e);b.flags|=256;ej(a,b,c,d);return b.child}var sj={dehydrated:null,treeContext:null,retryLane:0};function tj(a){return{baseLanes:a,cachePool:null,transitions:null}}function uj(a,b){return{baseLanes:a.baseLanes|b,cachePool:null,transitions:a.transitions}}\nfunction vj(a,b,c){var d=b.pendingProps,e=K.current,f=!1,g=0!==(b.flags&128),h;(h=g)||(h=null!==a&&null===a.memoizedState?!1:0!==(e&2));if(h)f=!0,b.flags&=-129;else if(null===a||null!==a.memoizedState)e|=1;G(K,e&1);if(null===a){kh(b);a=b.memoizedState;if(null!==a&&(a=a.dehydrated,null!==a))return 0===(b.mode&1)?b.lanes=1:\"$!\"===a.data?b.lanes=8:b.lanes=1073741824,null;e=d.children;a=d.fallback;return f?(d=b.mode,f=b.child,e={mode:\"hidden\",children:e},0===(d&1)&&null!==f?(f.childLanes=0,f.pendingProps=\ne):f=wj(e,d,0,null),a=xh(a,d,c,null),f.return=b,a.return=b,f.sibling=a,b.child=f,b.child.memoizedState=tj(c),b.memoizedState=sj,a):xj(b,e)}e=a.memoizedState;if(null!==e){h=e.dehydrated;if(null!==h){if(g){if(b.flags&256)return b.flags&=-257,yj(a,b,c,Error(p(422)));if(null!==b.memoizedState)return b.child=a.child,b.flags|=128,null;f=d.fallback;e=b.mode;d=wj({mode:\"visible\",children:d.children},e,0,null);f=xh(f,e,c,null);f.flags|=2;d.return=b;f.return=b;d.sibling=f;b.child=d;0!==(b.mode&1)&&yh(b,a.child,\nnull,c);b.child.memoizedState=tj(c);b.memoizedState=sj;return f}if(0===(b.mode&1))b=yj(a,b,c,null);else if(\"$!\"===h.data)b=yj(a,b,c,Error(p(419)));else if(d=0!==(c&a.childLanes),tg||d){d=P;if(null!==d){switch(c&-c){case 4:f=2;break;case 16:f=8;break;case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:f=32;break;case 536870912:f=\n268435456;break;default:f=0}d=0!==(f&(d.suspendedLanes|c))?0:f;0!==d&&d!==e.retryLane&&(e.retryLane=d,Lg(a,d,-1))}$i();b=yj(a,b,c,Error(p(421)))}else\"$?\"===h.data?(b.flags|=128,b.child=a.child,b=zj.bind(null,a),h._reactRetry=b,b=null):(c=e.treeContext,eh=Kf(h.nextSibling),dh=b,I=!0,fh=null,null!==c&&(Vg[Wg++]=Yg,Vg[Wg++]=Zg,Vg[Wg++]=Xg,Yg=c.id,Zg=c.overflow,Xg=b),b=xj(b,b.pendingProps.children),b.flags|=4096);return b}if(f)return d=Aj(a,b,d.children,d.fallback,c),f=b.child,e=a.child.memoizedState,\nf.memoizedState=null===e?tj(c):uj(e,c),f.childLanes=a.childLanes&~c,b.memoizedState=sj,d;c=Bj(a,b,d.children,c);b.memoizedState=null;return c}if(f)return d=Aj(a,b,d.children,d.fallback,c),f=b.child,e=a.child.memoizedState,f.memoizedState=null===e?tj(c):uj(e,c),f.childLanes=a.childLanes&~c,b.memoizedState=sj,d;c=Bj(a,b,d.children,c);b.memoizedState=null;return c}function xj(a,b){b=wj({mode:\"visible\",children:b},a.mode,0,null);b.return=a;return a.child=b}\nfunction Bj(a,b,c,d){var e=a.child;a=e.sibling;c=th(e,{mode:\"visible\",children:c});0===(b.mode&1)&&(c.lanes=d);c.return=b;c.sibling=null;null!==a&&(d=b.deletions,null===d?(b.deletions=[a],b.flags|=16):d.push(a));return b.child=c}\nfunction Aj(a,b,c,d,e){var f=b.mode;a=a.child;var g=a.sibling,h={mode:\"hidden\",children:c};0===(f&1)&&b.child!==a?(c=b.child,c.childLanes=0,c.pendingProps=h,b.deletions=null):(c=th(a,h),c.subtreeFlags=a.subtreeFlags&14680064);null!==g?d=th(g,d):(d=xh(d,f,e,null),d.flags|=2);d.return=b;c.return=b;c.sibling=d;b.child=c;return d}function yj(a,b,c,d){null!==d&&oh(d);yh(b,a.child,null,c);a=xj(b,b.pendingProps.children);a.flags|=2;b.memoizedState=null;return a}\nfunction Cj(a,b,c){a.lanes|=b;var d=a.alternate;null!==d&&(d.lanes|=b);rg(a.return,b,c)}function Dj(a,b,c,d,e){var f=a.memoizedState;null===f?a.memoizedState={isBackwards:b,rendering:null,renderingStartTime:0,last:d,tail:c,tailMode:e}:(f.isBackwards=b,f.rendering=null,f.renderingStartTime=0,f.last=d,f.tail=c,f.tailMode=e)}\nfunction Ej(a,b,c){var d=b.pendingProps,e=d.revealOrder,f=d.tail;ej(a,b,d.children,c);d=K.current;if(0!==(d&2))d=d&1|2,b.flags|=128;else{if(null!==a&&0!==(a.flags&128))a:for(a=b.child;null!==a;){if(13===a.tag)null!==a.memoizedState&&Cj(a,c,b);else if(19===a.tag)Cj(a,c,b);else if(null!==a.child){a.child.return=a;a=a.child;continue}if(a===b)break a;for(;null===a.sibling;){if(null===a.return||a.return===b)break a;a=a.return}a.sibling.return=a.return;a=a.sibling}d&=1}G(K,d);if(0===(b.mode&1))b.memoizedState=\nnull;else switch(e){case \"forwards\":c=b.child;for(e=null;null!==c;)a=c.alternate,null!==a&&null===Jh(a)&&(e=c),c=c.sibling;c=e;null===c?(e=b.child,b.child=null):(e=c.sibling,c.sibling=null);Dj(b,!1,e,c,f);break;case \"backwards\":c=null;e=b.child;for(b.child=null;null!==e;){a=e.alternate;if(null!==a&&null===Jh(a)){b.child=e;break}a=e.sibling;e.sibling=c;c=e;e=a}Dj(b,!0,c,null,f);break;case \"together\":Dj(b,!1,null,null,void 0);break;default:b.memoizedState=null}return b.child}\nfunction gj(a,b,c){null!==a&&(b.dependencies=a.dependencies);Fg|=b.lanes;if(0===(c&b.childLanes))return null;if(null!==a&&b.child!==a.child)throw Error(p(153));if(null!==b.child){a=b.child;c=th(a,a.pendingProps);b.child=c;for(c.return=b;null!==a.sibling;)a=a.sibling,c=c.sibling=th(a,a.pendingProps),c.return=b;c.sibling=null}return b.child}\nfunction Fj(a,b,c){switch(b.tag){case 3:qj(b);nh();break;case 5:Hh(b);break;case 1:Yf(b.type)&&bg(b);break;case 4:Fh(b,b.stateNode.containerInfo);break;case 10:var d=b.type._context,e=b.memoizedProps.value;G(lg,d._currentValue);d._currentValue=e;break;case 13:d=b.memoizedState;if(null!==d){if(null!==d.dehydrated)return G(K,K.current&1),b.flags|=128,null;if(0!==(c&b.child.childLanes))return vj(a,b,c);G(K,K.current&1);a=gj(a,b,c);return null!==a?a.sibling:null}G(K,K.current&1);break;case 19:d=0!==(c&\nb.childLanes);if(0!==(a.flags&128)){if(d)return Ej(a,b,c);b.flags|=128}e=b.memoizedState;null!==e&&(e.rendering=null,e.tail=null,e.lastEffect=null);G(K,K.current);if(d)break;else return null;case 22:case 23:return b.lanes=0,lj(a,b,c)}return gj(a,b,c)}\nfunction Gj(a,b){ch(b);switch(b.tag){case 1:return Yf(b.type)&&Zf(),a=b.flags,a&65536?(b.flags=a&-65537|128,b):null;case 3:return Gh(),E(Vf),E(H),Lh(),a=b.flags,0!==(a&65536)&&0===(a&128)?(b.flags=a&-65537|128,b):null;case 5:return Ih(b),null;case 13:E(K);a=b.memoizedState;if(null!==a&&null!==a.dehydrated){if(null===b.alternate)throw Error(p(340));nh()}a=b.flags;return a&65536?(b.flags=a&-65537|128,b):null;case 19:return E(K),null;case 4:return Gh(),null;case 10:return qg(b.type._context),null;case 22:case 23:return bj(),\nnull;case 24:return null;default:return null}}var Hj=!1,S=!1,Ij=\"function\"===typeof WeakSet?WeakSet:Set,T=null;function Jj(a,b){var c=a.ref;if(null!==c)if(\"function\"===typeof c)try{c(null)}catch(d){U(a,b,d)}else c.current=null}function Kj(a,b,c){try{c()}catch(d){U(a,b,d)}}var Lj=!1;\nfunction Mj(a,b){Bf=cd;a=Le();if(Me(a)){if(\"selectionStart\"in a)var c={start:a.selectionStart,end:a.selectionEnd};else a:{c=(c=a.ownerDocument)&&c.defaultView||window;var d=c.getSelection&&c.getSelection();if(d&&0!==d.rangeCount){c=d.anchorNode;var e=d.anchorOffset,f=d.focusNode;d=d.focusOffset;try{c.nodeType,f.nodeType}catch(Z){c=null;break a}var g=0,h=-1,k=-1,l=0,n=0,u=a,q=null;b:for(;;){for(var y;;){u!==c||0!==e&&3!==u.nodeType||(h=g+e);u!==f||0!==d&&3!==u.nodeType||(k=g+d);3===u.nodeType&&(g+=\nu.nodeValue.length);if(null===(y=u.firstChild))break;q=u;u=y}for(;;){if(u===a)break b;q===c&&++l===e&&(h=g);q===f&&++n===d&&(k=g);if(null!==(y=u.nextSibling))break;u=q;q=u.parentNode}u=y}c=-1===h||-1===k?null:{start:h,end:k}}else c=null}c=c||{start:0,end:0}}else c=null;Cf={focusedElem:a,selectionRange:c};cd=!1;for(T=b;null!==T;)if(b=T,a=b.child,0!==(b.subtreeFlags&1028)&&null!==a)a.return=b,T=a;else for(;null!==T;){b=T;try{var m=b.alternate;if(0!==(b.flags&1024))switch(b.tag){case 0:case 11:case 15:break;\ncase 1:if(null!==m){var w=m.memoizedProps,J=m.memoizedState,v=b.stateNode,x=v.getSnapshotBeforeUpdate(b.elementType===b.type?w:kg(b.type,w),J);v.__reactInternalSnapshotBeforeUpdate=x}break;case 3:var r=b.stateNode.containerInfo;if(1===r.nodeType)r.textContent=\"\";else if(9===r.nodeType){var F=r.body;null!=F&&(F.textContent=\"\")}break;case 5:case 6:case 4:case 17:break;default:throw Error(p(163));}}catch(Z){U(b,b.return,Z)}a=b.sibling;if(null!==a){a.return=b.return;T=a;break}T=b.return}m=Lj;Lj=!1;return m}\nfunction Nj(a,b,c){var d=b.updateQueue;d=null!==d?d.lastEffect:null;if(null!==d){var e=d=d.next;do{if((e.tag&a)===a){var f=e.destroy;e.destroy=void 0;void 0!==f&&Kj(b,c,f)}e=e.next}while(e!==d)}}function Oj(a,b){b=b.updateQueue;b=null!==b?b.lastEffect:null;if(null!==b){var c=b=b.next;do{if((c.tag&a)===a){var d=c.create;c.destroy=d()}c=c.next}while(c!==b)}}function Pj(a){var b=a.ref;if(null!==b){var c=a.stateNode;switch(a.tag){case 5:a=c;break;default:a=c}\"function\"===typeof b?b(a):b.current=a}}\nfunction Qj(a){var b=a.alternate;null!==b&&(a.alternate=null,Qj(b));a.child=null;a.deletions=null;a.sibling=null;5===a.tag&&(b=a.stateNode,null!==b&&(delete b[Nf],delete b[Of],delete b[nf],delete b[Pf],delete b[Qf]));a.stateNode=null;a.return=null;a.dependencies=null;a.memoizedProps=null;a.memoizedState=null;a.pendingProps=null;a.stateNode=null;a.updateQueue=null}function Rj(a){return 5===a.tag||3===a.tag||4===a.tag}\nfunction Sj(a){a:for(;;){for(;null===a.sibling;){if(null===a.return||Rj(a.return))return null;a=a.return}a.sibling.return=a.return;for(a=a.sibling;5!==a.tag&&6!==a.tag&&18!==a.tag;){if(a.flags&2)continue a;if(null===a.child||4===a.tag)continue a;else a.child.return=a,a=a.child}if(!(a.flags&2))return a.stateNode}}\nfunction Tj(a,b,c){var d=a.tag;if(5===d||6===d)a=a.stateNode,b?8===c.nodeType?c.parentNode.insertBefore(a,b):c.insertBefore(a,b):(8===c.nodeType?(b=c.parentNode,b.insertBefore(a,c)):(b=c,b.appendChild(a)),c=c._reactRootContainer,null!==c&&void 0!==c||null!==b.onclick||(b.onclick=Af));else if(4!==d&&(a=a.child,null!==a))for(Tj(a,b,c),a=a.sibling;null!==a;)Tj(a,b,c),a=a.sibling}\nfunction Uj(a,b,c){var d=a.tag;if(5===d||6===d)a=a.stateNode,b?c.insertBefore(a,b):c.appendChild(a);else if(4!==d&&(a=a.child,null!==a))for(Uj(a,b,c),a=a.sibling;null!==a;)Uj(a,b,c),a=a.sibling}var V=null,Vj=!1;function Wj(a,b,c){for(c=c.child;null!==c;)Xj(a,b,c),c=c.sibling}\nfunction Xj(a,b,c){if(kc&&\"function\"===typeof kc.onCommitFiberUnmount)try{kc.onCommitFiberUnmount(jc,c)}catch(h){}switch(c.tag){case 5:S||Jj(c,b);case 6:var d=V,e=Vj;V=null;Wj(a,b,c);V=d;Vj=e;null!==V&&(Vj?(a=V,c=c.stateNode,8===a.nodeType?a.parentNode.removeChild(c):a.removeChild(c)):V.removeChild(c.stateNode));break;case 18:null!==V&&(Vj?(a=V,c=c.stateNode,8===a.nodeType?Jf(a.parentNode,c):1===a.nodeType&&Jf(a,c),ad(a)):Jf(V,c.stateNode));break;case 4:d=V;e=Vj;V=c.stateNode.containerInfo;Vj=!0;\nWj(a,b,c);V=d;Vj=e;break;case 0:case 11:case 14:case 15:if(!S&&(d=c.updateQueue,null!==d&&(d=d.lastEffect,null!==d))){e=d=d.next;do{var f=e,g=f.destroy;f=f.tag;void 0!==g&&(0!==(f&2)?Kj(c,b,g):0!==(f&4)&&Kj(c,b,g));e=e.next}while(e!==d)}Wj(a,b,c);break;case 1:if(!S&&(Jj(c,b),d=c.stateNode,\"function\"===typeof d.componentWillUnmount))try{d.props=c.memoizedProps,d.state=c.memoizedState,d.componentWillUnmount()}catch(h){U(c,b,h)}Wj(a,b,c);break;case 21:Wj(a,b,c);break;case 22:c.mode&1?(S=(d=S)||null!==\nc.memoizedState,Wj(a,b,c),S=d):Wj(a,b,c);break;default:Wj(a,b,c)}}function Yj(a){var b=a.updateQueue;if(null!==b){a.updateQueue=null;var c=a.stateNode;null===c&&(c=a.stateNode=new Ij);b.forEach(function(b){var d=Zj.bind(null,a,b);c.has(b)||(c.add(b),b.then(d,d))})}}\nfunction ak(a,b){var c=b.deletions;if(null!==c)for(var d=0;de&&(e=g);d&=~f}d=e;d=B()-d;d=(120>d?120:480>d?480:1080>d?1080:1920>d?1920:3E3>d?3E3:4320>d?4320:1960*jk(d/1960))-d;if(10a?16:a;if(null===uk)var d=!1;else{a=uk;uk=null;vk=0;if(0!==(W&6))throw Error(p(331));var e=W;W|=4;for(T=a.current;null!==T;){var f=T,g=f.child;if(0!==(T.flags&16)){var h=f.deletions;if(null!==h){for(var k=0;kB()-dk?Jk(a,0):pk|=c);Ck(a,b)}function Xk(a,b){0===b&&(0===(a.mode&1)?b=1:(b=rc,rc<<=1,0===(rc&130023424)&&(rc=4194304)));var c=Jg();a=Ak(a,b);null!==a&&(zc(a,b,c),Ck(a,c))}function zj(a){var b=a.memoizedState,c=0;null!==b&&(c=b.retryLane);Xk(a,c)}\nfunction Zj(a,b){var c=0;switch(a.tag){case 13:var d=a.stateNode;var e=a.memoizedState;null!==e&&(c=e.retryLane);break;case 19:d=a.stateNode;break;default:throw Error(p(314));}null!==d&&d.delete(b);Xk(a,c)}var Uk;\nUk=function(a,b,c){if(null!==a)if(a.memoizedProps!==b.pendingProps||Vf.current)tg=!0;else{if(0===(a.lanes&c)&&0===(b.flags&128))return tg=!1,Fj(a,b,c);tg=0!==(a.flags&131072)?!0:!1}else tg=!1,I&&0!==(b.flags&1048576)&&ah(b,Ug,b.index);b.lanes=0;switch(b.tag){case 2:var d=b.type;null!==a&&(a.alternate=null,b.alternate=null,b.flags|=2);a=b.pendingProps;var e=Xf(b,H.current);sg(b,c);e=Uh(null,b,d,a,e,c);var f=Zh();b.flags|=1;\"object\"===typeof e&&null!==e&&\"function\"===typeof e.render&&void 0===e.$$typeof?\n(b.tag=1,b.memoizedState=null,b.updateQueue=null,Yf(d)?(f=!0,bg(b)):f=!1,b.memoizedState=null!==e.state&&void 0!==e.state?e.state:null,xg(b),e.updater=Mg,b.stateNode=e,e._reactInternals=b,Qg(b,d,a,c),b=pj(null,b,d,!0,f,c)):(b.tag=0,I&&f&&bh(b),ej(null,b,e,c),b=b.child);return b;case 16:d=b.elementType;a:{null!==a&&(a.alternate=null,b.alternate=null,b.flags|=2);a=b.pendingProps;e=d._init;d=e(d._payload);b.type=d;e=b.tag=Yk(d);a=kg(d,a);switch(e){case 0:b=kj(null,b,d,a,c);break a;case 1:b=oj(null,b,\nd,a,c);break a;case 11:b=fj(null,b,d,a,c);break a;case 14:b=hj(null,b,d,kg(d.type,a),c);break a}throw Error(p(306,d,\"\"));}return b;case 0:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:kg(d,e),kj(a,b,d,e,c);case 1:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:kg(d,e),oj(a,b,d,e,c);case 3:a:{qj(b);if(null===a)throw Error(p(387));d=b.pendingProps;f=b.memoizedState;e=f.element;yg(a,b);Eg(b,d,null,c);var g=b.memoizedState;d=g.element;if(f.isDehydrated)if(f={element:d,isDehydrated:!1,\ncache:g.cache,pendingSuspenseBoundaries:g.pendingSuspenseBoundaries,transitions:g.transitions},b.updateQueue.baseState=f,b.memoizedState=f,b.flags&256){e=Error(p(423));b=rj(a,b,d,c,e);break a}else if(d!==e){e=Error(p(424));b=rj(a,b,d,c,e);break a}else for(eh=Kf(b.stateNode.containerInfo.firstChild),dh=b,I=!0,fh=null,c=zh(b,null,d,c),b.child=c;c;)c.flags=c.flags&-3|4096,c=c.sibling;else{nh();if(d===e){b=gj(a,b,c);break a}ej(a,b,d,c)}b=b.child}return b;case 5:return Hh(b),null===a&&kh(b),d=b.type,e=\nb.pendingProps,f=null!==a?a.memoizedProps:null,g=e.children,Df(d,e)?g=null:null!==f&&Df(d,f)&&(b.flags|=32),nj(a,b),ej(a,b,g,c),b.child;case 6:return null===a&&kh(b),null;case 13:return vj(a,b,c);case 4:return Fh(b,b.stateNode.containerInfo),d=b.pendingProps,null===a?b.child=yh(b,null,d,c):ej(a,b,d,c),b.child;case 11:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:kg(d,e),fj(a,b,d,e,c);case 7:return ej(a,b,b.pendingProps,c),b.child;case 8:return ej(a,b,b.pendingProps.children,c),b.child;case 12:return ej(a,\nb,b.pendingProps.children,c),b.child;case 10:a:{d=b.type._context;e=b.pendingProps;f=b.memoizedProps;g=e.value;G(lg,d._currentValue);d._currentValue=g;if(null!==f)if(Ge(f.value,g)){if(f.children===e.children&&!Vf.current){b=gj(a,b,c);break a}}else for(f=b.child,null!==f&&(f.return=b);null!==f;){var h=f.dependencies;if(null!==h){g=f.child;for(var k=h.firstContext;null!==k;){if(k.context===d){if(1===f.tag){k=zg(-1,c&-c);k.tag=2;var l=f.updateQueue;if(null!==l){l=l.shared;var n=l.pending;null===n?k.next=\nk:(k.next=n.next,n.next=k);l.pending=k}}f.lanes|=c;k=f.alternate;null!==k&&(k.lanes|=c);rg(f.return,c,b);h.lanes|=c;break}k=k.next}}else if(10===f.tag)g=f.type===b.type?null:f.child;else if(18===f.tag){g=f.return;if(null===g)throw Error(p(341));g.lanes|=c;h=g.alternate;null!==h&&(h.lanes|=c);rg(g,c,b);g=f.sibling}else g=f.child;if(null!==g)g.return=f;else for(g=f;null!==g;){if(g===b){g=null;break}f=g.sibling;if(null!==f){f.return=g.return;g=f;break}g=g.return}f=g}ej(a,b,e.children,c);b=b.child}return b;\ncase 9:return e=b.type,d=b.pendingProps.children,sg(b,c),e=ug(e),d=d(e),b.flags|=1,ej(a,b,d,c),b.child;case 14:return d=b.type,e=kg(d,b.pendingProps),e=kg(d.type,e),hj(a,b,d,e,c);case 15:return jj(a,b,b.type,b.pendingProps,c);case 17:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:kg(d,e),null!==a&&(a.alternate=null,b.alternate=null,b.flags|=2),b.tag=1,Yf(d)?(a=!0,bg(b)):a=!1,sg(b,c),Og(b,d,e),Qg(b,d,e,c),pj(null,b,d,!0,a,c);case 19:return Ej(a,b,c);case 22:return lj(a,b,c)}throw Error(p(156,\nb.tag));};function Ek(a,b){return $b(a,b)}function Zk(a,b,c,d){this.tag=a;this.key=c;this.sibling=this.child=this.return=this.stateNode=this.type=this.elementType=null;this.index=0;this.ref=null;this.pendingProps=b;this.dependencies=this.memoizedState=this.updateQueue=this.memoizedProps=null;this.mode=d;this.subtreeFlags=this.flags=0;this.deletions=null;this.childLanes=this.lanes=0;this.alternate=null}function hh(a,b,c,d){return new Zk(a,b,c,d)}\nfunction ij(a){a=a.prototype;return!(!a||!a.isReactComponent)}function Yk(a){if(\"function\"===typeof a)return ij(a)?1:0;if(void 0!==a&&null!==a){a=a.$$typeof;if(a===Ca)return 11;if(a===Fa)return 14}return 2}\nfunction th(a,b){var c=a.alternate;null===c?(c=hh(a.tag,b,a.key,a.mode),c.elementType=a.elementType,c.type=a.type,c.stateNode=a.stateNode,c.alternate=a,a.alternate=c):(c.pendingProps=b,c.type=a.type,c.flags=0,c.subtreeFlags=0,c.deletions=null);c.flags=a.flags&14680064;c.childLanes=a.childLanes;c.lanes=a.lanes;c.child=a.child;c.memoizedProps=a.memoizedProps;c.memoizedState=a.memoizedState;c.updateQueue=a.updateQueue;b=a.dependencies;c.dependencies=null===b?null:{lanes:b.lanes,firstContext:b.firstContext};\nc.sibling=a.sibling;c.index=a.index;c.ref=a.ref;return c}\nfunction vh(a,b,c,d,e,f){var g=2;d=a;if(\"function\"===typeof a)ij(a)&&(g=1);else if(\"string\"===typeof a)g=5;else a:switch(a){case wa:return xh(c.children,e,f,b);case xa:g=8;e|=8;break;case za:return a=hh(12,c,b,e|2),a.elementType=za,a.lanes=f,a;case Da:return a=hh(13,c,b,e),a.elementType=Da,a.lanes=f,a;case Ea:return a=hh(19,c,b,e),a.elementType=Ea,a.lanes=f,a;case Ha:return wj(c,e,f,b);default:if(\"object\"===typeof a&&null!==a)switch(a.$$typeof){case Aa:g=10;break a;case Ba:g=9;break a;case Ca:g=11;\nbreak a;case Fa:g=14;break a;case Ga:g=16;d=null;break a}throw Error(p(130,null==a?a:typeof a,\"\"));}b=hh(g,c,b,e);b.elementType=a;b.type=d;b.lanes=f;return b}function xh(a,b,c,d){a=hh(7,a,d,b);a.lanes=c;return a}function wj(a,b,c,d){a=hh(22,a,d,b);a.elementType=Ha;a.lanes=c;a.stateNode={};return a}function uh(a,b,c){a=hh(6,a,null,b);a.lanes=c;return a}\nfunction wh(a,b,c){b=hh(4,null!==a.children?a.children:[],a.key,b);b.lanes=c;b.stateNode={containerInfo:a.containerInfo,pendingChildren:null,implementation:a.implementation};return b}\nfunction $k(a,b,c,d,e){this.tag=b;this.containerInfo=a;this.finishedWork=this.pingCache=this.current=this.pendingChildren=null;this.timeoutHandle=-1;this.callbackNode=this.pendingContext=this.context=null;this.callbackPriority=0;this.eventTimes=yc(0);this.expirationTimes=yc(-1);this.entangledLanes=this.finishedLanes=this.mutableReadLanes=this.expiredLanes=this.pingedLanes=this.suspendedLanes=this.pendingLanes=0;this.entanglements=yc(0);this.identifierPrefix=d;this.onRecoverableError=e;this.mutableSourceEagerHydrationData=\nnull}function al(a,b,c,d,e,f,g,h,k){a=new $k(a,b,c,h,k);1===b?(b=1,!0===f&&(b|=8)):b=0;f=hh(3,null,null,b);a.current=f;f.stateNode=a;f.memoizedState={element:d,isDehydrated:c,cache:null,transitions:null,pendingSuspenseBoundaries:null};xg(f);return a}function bl(a,b,c){var d=3>>1,e=a[d];if(0>>1;dg(C,c))ng(x,C)?(a[d]=x,a[n]=c,d=n):(a[d]=C,a[m]=c,d=m);else if(ng(x,c))a[d]=x,a[n]=c,d=n;else break a}}return b}\nfunction g(a,b){var c=a.sortIndex-b.sortIndex;return 0!==c?c:a.id-b.id}if(\"object\"===typeof performance&&\"function\"===typeof performance.now){var l=performance;exports.unstable_now=function(){return l.now()}}else{var p=Date,q=p.now();exports.unstable_now=function(){return p.now()-q}}var r=[],t=[],u=1,v=null,y=3,z=!1,A=!1,B=!1,D=\"function\"===typeof setTimeout?setTimeout:null,E=\"function\"===typeof clearTimeout?clearTimeout:null,F=\"undefined\"!==typeof setImmediate?setImmediate:null;\n\"undefined\"!==typeof navigator&&void 0!==navigator.scheduling&&void 0!==navigator.scheduling.isInputPending&&navigator.scheduling.isInputPending.bind(navigator.scheduling);function G(a){for(var b=h(t);null!==b;){if(null===b.callback)k(t);else if(b.startTime<=a)k(t),b.sortIndex=b.expirationTime,f(r,b);else break;b=h(t)}}function H(a){B=!1;G(a);if(!A)if(null!==h(r))A=!0,I(J);else{var b=h(t);null!==b&&K(H,b.startTime-a)}}\nfunction J(a,b){A=!1;B&&(B=!1,E(L),L=-1);z=!0;var c=y;try{G(b);for(v=h(r);null!==v&&(!(v.expirationTime>b)||a&&!M());){var d=v.callback;if(\"function\"===typeof d){v.callback=null;y=v.priorityLevel;var e=d(v.expirationTime<=b);b=exports.unstable_now();\"function\"===typeof e?v.callback=e:v===h(r)&&k(r);G(b)}else k(r);v=h(r)}if(null!==v)var w=!0;else{var m=h(t);null!==m&&K(H,m.startTime-b);w=!1}return w}finally{v=null,y=c,z=!1}}var N=!1,O=null,L=-1,P=5,Q=-1;\nfunction M(){return exports.unstable_now()-Qa||125d?(a.sortIndex=c,f(t,a),null===h(r)&&a===h(t)&&(B?(E(L),L=-1):B=!0,K(H,c-d))):(a.sortIndex=e,f(r,a),A||z||(A=!0,I(J)));return a};\nexports.unstable_shouldYield=M;exports.unstable_wrapCallback=function(a){var b=y;return function(){var c=y;y=b;try{return a.apply(this,arguments)}finally{y=c}}};\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/scheduler.production.min.js');\n} else {\n module.exports = require('./cjs/scheduler.development.js');\n}\n","\"use strict\";\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"DraggableCore\", {\n enumerable: true,\n get: function get() {\n return _DraggableCore.default;\n }\n});\nexports.default = void 0;\n\nvar React = _interopRequireWildcard(require(\"react\"));\n\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\n\nvar _reactDom = _interopRequireDefault(require(\"react-dom\"));\n\nvar _clsx2 = _interopRequireDefault(require(\"clsx\"));\n\nvar _domFns = require(\"./utils/domFns\");\n\nvar _positionFns = require(\"./utils/positionFns\");\n\nvar _shims = require(\"./utils/shims\");\n\nvar _DraggableCore = _interopRequireDefault(require(\"./DraggableCore\"));\n\nvar _log = _interopRequireDefault(require(\"./utils/log\"));\n\nvar _excluded = [\"axis\", \"bounds\", \"children\", \"defaultPosition\", \"defaultClassName\", \"defaultClassNameDragging\", \"defaultClassNameDragged\", \"position\", \"positionOffset\", \"scale\"];\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== \"function\") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }\n\nfunction _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== \"object\" && typeof obj !== \"function\") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== \"default\" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); Object.defineProperty(subClass, \"prototype\", { writable: false }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } else if (call !== void 0) { throw new TypeError(\"Derived constructors may only return object or undefined\"); } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\n//\n// Define \n//\nvar Draggable = /*#__PURE__*/function (_React$Component) {\n _inherits(Draggable, _React$Component);\n\n var _super = _createSuper(Draggable);\n\n function Draggable(props\n /*: DraggableProps*/\n ) {\n var _this;\n\n _classCallCheck(this, Draggable);\n\n _this = _super.call(this, props);\n\n _defineProperty(_assertThisInitialized(_this), \"onDragStart\", function (e, coreData) {\n (0, _log.default)('Draggable: onDragStart: %j', coreData); // Short-circuit if user's callback killed it.\n\n var shouldStart = _this.props.onStart(e, (0, _positionFns.createDraggableData)(_assertThisInitialized(_this), coreData)); // Kills start event on core as well, so move handlers are never bound.\n\n\n if (shouldStart === false) return false;\n\n _this.setState({\n dragging: true,\n dragged: true\n });\n });\n\n _defineProperty(_assertThisInitialized(_this), \"onDrag\", function (e, coreData) {\n if (!_this.state.dragging) return false;\n (0, _log.default)('Draggable: onDrag: %j', coreData);\n var uiData = (0, _positionFns.createDraggableData)(_assertThisInitialized(_this), coreData);\n var newState\n /*: $Shape*/\n = {\n x: uiData.x,\n y: uiData.y\n }; // Keep within bounds.\n\n if (_this.props.bounds) {\n // Save original x and y.\n var x = newState.x,\n y = newState.y; // Add slack to the values used to calculate bound position. This will ensure that if\n // we start removing slack, the element won't react to it right away until it's been\n // completely removed.\n\n newState.x += _this.state.slackX;\n newState.y += _this.state.slackY; // Get bound position. This will ceil/floor the x and y within the boundaries.\n\n var _getBoundPosition = (0, _positionFns.getBoundPosition)(_assertThisInitialized(_this), newState.x, newState.y),\n _getBoundPosition2 = _slicedToArray(_getBoundPosition, 2),\n newStateX = _getBoundPosition2[0],\n newStateY = _getBoundPosition2[1];\n\n newState.x = newStateX;\n newState.y = newStateY; // Recalculate slack by noting how much was shaved by the boundPosition handler.\n\n newState.slackX = _this.state.slackX + (x - newState.x);\n newState.slackY = _this.state.slackY + (y - newState.y); // Update the event we fire to reflect what really happened after bounds took effect.\n\n uiData.x = newState.x;\n uiData.y = newState.y;\n uiData.deltaX = newState.x - _this.state.x;\n uiData.deltaY = newState.y - _this.state.y;\n } // Short-circuit if user's callback killed it.\n\n\n var shouldUpdate = _this.props.onDrag(e, uiData);\n\n if (shouldUpdate === false) return false;\n\n _this.setState(newState);\n });\n\n _defineProperty(_assertThisInitialized(_this), \"onDragStop\", function (e, coreData) {\n if (!_this.state.dragging) return false; // Short-circuit if user's callback killed it.\n\n var shouldContinue = _this.props.onStop(e, (0, _positionFns.createDraggableData)(_assertThisInitialized(_this), coreData));\n\n if (shouldContinue === false) return false;\n (0, _log.default)('Draggable: onDragStop: %j', coreData);\n var newState\n /*: $Shape*/\n = {\n dragging: false,\n slackX: 0,\n slackY: 0\n }; // If this is a controlled component, the result of this operation will be to\n // revert back to the old position. We expect a handler on `onDragStop`, at the least.\n\n var controlled = Boolean(_this.props.position);\n\n if (controlled) {\n var _this$props$position = _this.props.position,\n x = _this$props$position.x,\n y = _this$props$position.y;\n newState.x = x;\n newState.y = y;\n }\n\n _this.setState(newState);\n });\n\n _this.state = {\n // Whether or not we are currently dragging.\n dragging: false,\n // Whether or not we have been dragged before.\n dragged: false,\n // Current transform x and y.\n x: props.position ? props.position.x : props.defaultPosition.x,\n y: props.position ? props.position.y : props.defaultPosition.y,\n prevPropsPosition: _objectSpread({}, props.position),\n // Used for compensating for out-of-bounds drags\n slackX: 0,\n slackY: 0,\n // Can only determine if SVG after mounting\n isElementSVG: false\n };\n\n if (props.position && !(props.onDrag || props.onStop)) {\n // eslint-disable-next-line no-console\n console.warn('A `position` was applied to this , without drag handlers. This will make this ' + 'component effectively undraggable. Please attach `onDrag` or `onStop` handlers so you can adjust the ' + '`position` of this element.');\n }\n\n return _this;\n }\n\n _createClass(Draggable, [{\n key: \"componentDidMount\",\n value: function componentDidMount() {\n // Check to see if the element passed is an instanceof SVGElement\n if (typeof window.SVGElement !== 'undefined' && this.findDOMNode() instanceof window.SVGElement) {\n this.setState({\n isElementSVG: true\n });\n }\n }\n }, {\n key: \"componentWillUnmount\",\n value: function componentWillUnmount() {\n this.setState({\n dragging: false\n }); // prevents invariant if unmounted while dragging\n } // React Strict Mode compatibility: if `nodeRef` is passed, we will use it instead of trying to find\n // the underlying DOM node ourselves. See the README for more information.\n\n }, {\n key: \"findDOMNode\",\n value: function findDOMNode()\n /*: ?HTMLElement*/\n {\n var _this$props$nodeRef$c, _this$props, _this$props$nodeRef;\n\n return (_this$props$nodeRef$c = (_this$props = this.props) === null || _this$props === void 0 ? void 0 : (_this$props$nodeRef = _this$props.nodeRef) === null || _this$props$nodeRef === void 0 ? void 0 : _this$props$nodeRef.current) !== null && _this$props$nodeRef$c !== void 0 ? _this$props$nodeRef$c : _reactDom.default.findDOMNode(this);\n }\n }, {\n key: \"render\",\n value: function render()\n /*: ReactElement*/\n {\n var _clsx;\n\n var _this$props2 = this.props,\n axis = _this$props2.axis,\n bounds = _this$props2.bounds,\n children = _this$props2.children,\n defaultPosition = _this$props2.defaultPosition,\n defaultClassName = _this$props2.defaultClassName,\n defaultClassNameDragging = _this$props2.defaultClassNameDragging,\n defaultClassNameDragged = _this$props2.defaultClassNameDragged,\n position = _this$props2.position,\n positionOffset = _this$props2.positionOffset,\n scale = _this$props2.scale,\n draggableCoreProps = _objectWithoutProperties(_this$props2, _excluded);\n\n var style = {};\n var svgTransform = null; // If this is controlled, we don't want to move it - unless it's dragging.\n\n var controlled = Boolean(position);\n var draggable = !controlled || this.state.dragging;\n var validPosition = position || defaultPosition;\n var transformOpts = {\n // Set left if horizontal drag is enabled\n x: (0, _positionFns.canDragX)(this) && draggable ? this.state.x : validPosition.x,\n // Set top if vertical drag is enabled\n y: (0, _positionFns.canDragY)(this) && draggable ? this.state.y : validPosition.y\n }; // If this element was SVG, we use the `transform` attribute.\n\n if (this.state.isElementSVG) {\n svgTransform = (0, _domFns.createSVGTransform)(transformOpts, positionOffset);\n } else {\n // Add a CSS transform to move the element around. This allows us to move the element around\n // without worrying about whether or not it is relatively or absolutely positioned.\n // If the item you are dragging already has a transform set, wrap it in a so \n // has a clean slate.\n style = (0, _domFns.createCSSTransform)(transformOpts, positionOffset);\n } // Mark with class while dragging\n\n\n var className = (0, _clsx2.default)(children.props.className || '', defaultClassName, (_clsx = {}, _defineProperty(_clsx, defaultClassNameDragging, this.state.dragging), _defineProperty(_clsx, defaultClassNameDragged, this.state.dragged), _clsx)); // Reuse the child provided\n // This makes it flexible to use whatever element is wanted (div, ul, etc)\n\n return /*#__PURE__*/React.createElement(_DraggableCore.default, _extends({}, draggableCoreProps, {\n onStart: this.onDragStart,\n onDrag: this.onDrag,\n onStop: this.onDragStop\n }), /*#__PURE__*/React.cloneElement(React.Children.only(children), {\n className: className,\n style: _objectSpread(_objectSpread({}, children.props.style), style),\n transform: svgTransform\n }));\n }\n }], [{\n key: \"getDerivedStateFromProps\",\n value: // React 16.3+\n // Arity (props, state)\n function getDerivedStateFromProps(_ref, _ref2)\n /*: ?$Shape*/\n {\n var position = _ref.position;\n var prevPropsPosition = _ref2.prevPropsPosition;\n\n // Set x/y if a new position is provided in props that is different than the previous.\n if (position && (!prevPropsPosition || position.x !== prevPropsPosition.x || position.y !== prevPropsPosition.y)) {\n (0, _log.default)('Draggable: getDerivedStateFromProps %j', {\n position: position,\n prevPropsPosition: prevPropsPosition\n });\n return {\n x: position.x,\n y: position.y,\n prevPropsPosition: _objectSpread({}, position)\n };\n }\n\n return null;\n }\n }]);\n\n return Draggable;\n}(React.Component);\n\nexports.default = Draggable;\n\n_defineProperty(Draggable, \"displayName\", 'Draggable');\n\n_defineProperty(Draggable, \"propTypes\", _objectSpread(_objectSpread({}, _DraggableCore.default.propTypes), {}, {\n /**\n * `axis` determines which axis the draggable can move.\n *\n * Note that all callbacks will still return data as normal. This only\n * controls flushing to the DOM.\n *\n * 'both' allows movement horizontally and vertically.\n * 'x' limits movement to horizontal axis.\n * 'y' limits movement to vertical axis.\n * 'none' limits all movement.\n *\n * Defaults to 'both'.\n */\n axis: _propTypes.default.oneOf(['both', 'x', 'y', 'none']),\n\n /**\n * `bounds` determines the range of movement available to the element.\n * Available values are:\n *\n * 'parent' restricts movement within the Draggable's parent node.\n *\n * Alternatively, pass an object with the following properties, all of which are optional:\n *\n * {left: LEFT_BOUND, right: RIGHT_BOUND, bottom: BOTTOM_BOUND, top: TOP_BOUND}\n *\n * All values are in px.\n *\n * Example:\n *\n * ```jsx\n * let App = React.createClass({\n * render: function () {\n * return (\n * \n *
Content
\n *
\n * );\n * }\n * });\n * ```\n */\n bounds: _propTypes.default.oneOfType([_propTypes.default.shape({\n left: _propTypes.default.number,\n right: _propTypes.default.number,\n top: _propTypes.default.number,\n bottom: _propTypes.default.number\n }), _propTypes.default.string, _propTypes.default.oneOf([false])]),\n defaultClassName: _propTypes.default.string,\n defaultClassNameDragging: _propTypes.default.string,\n defaultClassNameDragged: _propTypes.default.string,\n\n /**\n * `defaultPosition` specifies the x and y that the dragged item should start at\n *\n * Example:\n *\n * ```jsx\n * let App = React.createClass({\n * render: function () {\n * return (\n * \n *
I start with transformX: 25px and transformY: 25px;
\n *
\n * );\n * }\n * });\n * ```\n */\n defaultPosition: _propTypes.default.shape({\n x: _propTypes.default.number,\n y: _propTypes.default.number\n }),\n positionOffset: _propTypes.default.shape({\n x: _propTypes.default.oneOfType([_propTypes.default.number, _propTypes.default.string]),\n y: _propTypes.default.oneOfType([_propTypes.default.number, _propTypes.default.string])\n }),\n\n /**\n * `position`, if present, defines the current position of the element.\n *\n * This is similar to how form elements in React work - if no `position` is supplied, the component\n * is uncontrolled.\n *\n * Example:\n *\n * ```jsx\n * let App = React.createClass({\n * render: function () {\n * return (\n * \n *
I start with transformX: 25px and transformY: 25px;
\n *
\n * );\n * }\n * });\n * ```\n */\n position: _propTypes.default.shape({\n x: _propTypes.default.number,\n y: _propTypes.default.number\n }),\n\n /**\n * These properties should be defined on the child, not here.\n */\n className: _shims.dontSetMe,\n style: _shims.dontSetMe,\n transform: _shims.dontSetMe\n}));\n\n_defineProperty(Draggable, \"defaultProps\", _objectSpread(_objectSpread({}, _DraggableCore.default.defaultProps), {}, {\n axis: 'both',\n bounds: false,\n defaultClassName: 'react-draggable',\n defaultClassNameDragging: 'react-draggable-dragging',\n defaultClassNameDragged: 'react-draggable-dragged',\n defaultPosition: {\n x: 0,\n y: 0\n },\n scale: 1\n}));","\"use strict\";\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar React = _interopRequireWildcard(require(\"react\"));\n\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\n\nvar _reactDom = _interopRequireDefault(require(\"react-dom\"));\n\nvar _domFns = require(\"./utils/domFns\");\n\nvar _positionFns = require(\"./utils/positionFns\");\n\nvar _shims = require(\"./utils/shims\");\n\nvar _log = _interopRequireDefault(require(\"./utils/log\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== \"function\") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }\n\nfunction _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== \"object\" && typeof obj !== \"function\") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== \"default\" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }\n\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); Object.defineProperty(subClass, \"prototype\", { writable: false }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } else if (call !== void 0) { throw new TypeError(\"Derived constructors may only return object or undefined\"); } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\n// Simple abstraction for dragging events names.\nvar eventsFor = {\n touch: {\n start: 'touchstart',\n move: 'touchmove',\n stop: 'touchend'\n },\n mouse: {\n start: 'mousedown',\n move: 'mousemove',\n stop: 'mouseup'\n }\n}; // Default to mouse events.\n\nvar dragEventFor = eventsFor.mouse;\n/*:: type DraggableCoreState = {\n dragging: boolean,\n lastX: number,\n lastY: number,\n touchIdentifier: ?number\n};*/\n\n/*:: export type DraggableData = {\n node: HTMLElement,\n x: number, y: number,\n deltaX: number, deltaY: number,\n lastX: number, lastY: number,\n};*/\n\n/*:: export type DraggableEventHandler = (e: MouseEvent, data: DraggableData) => void | false;*/\n\n/*:: export type ControlPosition = {x: number, y: number};*/\n\n/*:: export type PositionOffsetControlPosition = {x: number|string, y: number|string};*/\n\n/*:: export type DraggableCoreDefaultProps = {\n allowAnyClick: boolean,\n disabled: boolean,\n enableUserSelectHack: boolean,\n onStart: DraggableEventHandler,\n onDrag: DraggableEventHandler,\n onStop: DraggableEventHandler,\n onMouseDown: (e: MouseEvent) => void,\n scale: number,\n};*/\n\n/*:: export type DraggableCoreProps = {\n ...DraggableCoreDefaultProps,\n cancel: string,\n children: ReactElement,\n offsetParent: HTMLElement,\n grid: [number, number],\n handle: string,\n nodeRef?: ?React.ElementRef,\n};*/\n\n//\n// Define .\n//\n// is for advanced usage of . It maintains minimal internal state so it can\n// work well with libraries that require more control over the element.\n//\nvar DraggableCore = /*#__PURE__*/function (_React$Component) {\n _inherits(DraggableCore, _React$Component);\n\n var _super = _createSuper(DraggableCore);\n\n function DraggableCore() {\n var _this;\n\n _classCallCheck(this, DraggableCore);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _super.call.apply(_super, [this].concat(args));\n\n _defineProperty(_assertThisInitialized(_this), \"state\", {\n dragging: false,\n // Used while dragging to determine deltas.\n lastX: NaN,\n lastY: NaN,\n touchIdentifier: null\n });\n\n _defineProperty(_assertThisInitialized(_this), \"mounted\", false);\n\n _defineProperty(_assertThisInitialized(_this), \"handleDragStart\", function (e) {\n // Make it possible to attach event handlers on top of this one.\n _this.props.onMouseDown(e); // Only accept left-clicks.\n\n\n if (!_this.props.allowAnyClick && typeof e.button === 'number' && e.button !== 0) return false; // Get nodes. Be sure to grab relative document (could be iframed)\n\n var thisNode = _this.findDOMNode();\n\n if (!thisNode || !thisNode.ownerDocument || !thisNode.ownerDocument.body) {\n throw new Error(' not mounted on DragStart!');\n }\n\n var ownerDocument = thisNode.ownerDocument; // Short circuit if handle or cancel prop was provided and selector doesn't match.\n\n if (_this.props.disabled || !(e.target instanceof ownerDocument.defaultView.Node) || _this.props.handle && !(0, _domFns.matchesSelectorAndParentsTo)(e.target, _this.props.handle, thisNode) || _this.props.cancel && (0, _domFns.matchesSelectorAndParentsTo)(e.target, _this.props.cancel, thisNode)) {\n return;\n } // Prevent scrolling on mobile devices, like ipad/iphone.\n // Important that this is after handle/cancel.\n\n\n if (e.type === 'touchstart') e.preventDefault(); // Set touch identifier in component state if this is a touch event. This allows us to\n // distinguish between individual touches on multitouch screens by identifying which\n // touchpoint was set to this element.\n\n var touchIdentifier = (0, _domFns.getTouchIdentifier)(e);\n\n _this.setState({\n touchIdentifier: touchIdentifier\n }); // Get the current drag point from the event. This is used as the offset.\n\n\n var position = (0, _positionFns.getControlPosition)(e, touchIdentifier, _assertThisInitialized(_this));\n if (position == null) return; // not possible but satisfies flow\n\n var x = position.x,\n y = position.y; // Create an event object with all the data parents need to make a decision here.\n\n var coreEvent = (0, _positionFns.createCoreData)(_assertThisInitialized(_this), x, y);\n (0, _log.default)('DraggableCore: handleDragStart: %j', coreEvent); // Call event handler. If it returns explicit false, cancel.\n\n (0, _log.default)('calling', _this.props.onStart);\n\n var shouldUpdate = _this.props.onStart(e, coreEvent);\n\n if (shouldUpdate === false || _this.mounted === false) return; // Add a style to the body to disable user-select. This prevents text from\n // being selected all over the page.\n\n if (_this.props.enableUserSelectHack) (0, _domFns.addUserSelectStyles)(ownerDocument); // Initiate dragging. Set the current x and y as offsets\n // so we know how much we've moved during the drag. This allows us\n // to drag elements around even if they have been moved, without issue.\n\n _this.setState({\n dragging: true,\n lastX: x,\n lastY: y\n }); // Add events to the document directly so we catch when the user's mouse/touch moves outside of\n // this element. We use different events depending on whether or not we have detected that this\n // is a touch-capable device.\n\n\n (0, _domFns.addEvent)(ownerDocument, dragEventFor.move, _this.handleDrag);\n (0, _domFns.addEvent)(ownerDocument, dragEventFor.stop, _this.handleDragStop);\n });\n\n _defineProperty(_assertThisInitialized(_this), \"handleDrag\", function (e) {\n // Get the current drag point from the event. This is used as the offset.\n var position = (0, _positionFns.getControlPosition)(e, _this.state.touchIdentifier, _assertThisInitialized(_this));\n if (position == null) return;\n var x = position.x,\n y = position.y; // Snap to grid if prop has been provided\n\n if (Array.isArray(_this.props.grid)) {\n var deltaX = x - _this.state.lastX,\n deltaY = y - _this.state.lastY;\n\n var _snapToGrid = (0, _positionFns.snapToGrid)(_this.props.grid, deltaX, deltaY);\n\n var _snapToGrid2 = _slicedToArray(_snapToGrid, 2);\n\n deltaX = _snapToGrid2[0];\n deltaY = _snapToGrid2[1];\n if (!deltaX && !deltaY) return; // skip useless drag\n\n x = _this.state.lastX + deltaX, y = _this.state.lastY + deltaY;\n }\n\n var coreEvent = (0, _positionFns.createCoreData)(_assertThisInitialized(_this), x, y);\n (0, _log.default)('DraggableCore: handleDrag: %j', coreEvent); // Call event handler. If it returns explicit false, trigger end.\n\n var shouldUpdate = _this.props.onDrag(e, coreEvent);\n\n if (shouldUpdate === false || _this.mounted === false) {\n try {\n // $FlowIgnore\n _this.handleDragStop(new MouseEvent('mouseup'));\n } catch (err) {\n // Old browsers\n var event = ((document.createEvent('MouseEvents')\n /*: any*/\n )\n /*: MouseTouchEvent*/\n ); // I see why this insanity was deprecated\n // $FlowIgnore\n\n event.initMouseEvent('mouseup', true, true, window, 0, 0, 0, 0, 0, false, false, false, false, 0, null);\n\n _this.handleDragStop(event);\n }\n\n return;\n }\n\n _this.setState({\n lastX: x,\n lastY: y\n });\n });\n\n _defineProperty(_assertThisInitialized(_this), \"handleDragStop\", function (e) {\n if (!_this.state.dragging) return;\n var position = (0, _positionFns.getControlPosition)(e, _this.state.touchIdentifier, _assertThisInitialized(_this));\n if (position == null) return;\n var x = position.x,\n y = position.y; // Snap to grid if prop has been provided\n\n if (Array.isArray(_this.props.grid)) {\n var deltaX = x - _this.state.lastX || 0;\n var deltaY = y - _this.state.lastY || 0;\n\n var _snapToGrid3 = (0, _positionFns.snapToGrid)(_this.props.grid, deltaX, deltaY);\n\n var _snapToGrid4 = _slicedToArray(_snapToGrid3, 2);\n\n deltaX = _snapToGrid4[0];\n deltaY = _snapToGrid4[1];\n x = _this.state.lastX + deltaX, y = _this.state.lastY + deltaY;\n }\n\n var coreEvent = (0, _positionFns.createCoreData)(_assertThisInitialized(_this), x, y); // Call event handler\n\n var shouldContinue = _this.props.onStop(e, coreEvent);\n\n if (shouldContinue === false || _this.mounted === false) return false;\n\n var thisNode = _this.findDOMNode();\n\n if (thisNode) {\n // Remove user-select hack\n if (_this.props.enableUserSelectHack) (0, _domFns.removeUserSelectStyles)(thisNode.ownerDocument);\n }\n\n (0, _log.default)('DraggableCore: handleDragStop: %j', coreEvent); // Reset the el.\n\n _this.setState({\n dragging: false,\n lastX: NaN,\n lastY: NaN\n });\n\n if (thisNode) {\n // Remove event handlers\n (0, _log.default)('DraggableCore: Removing handlers');\n (0, _domFns.removeEvent)(thisNode.ownerDocument, dragEventFor.move, _this.handleDrag);\n (0, _domFns.removeEvent)(thisNode.ownerDocument, dragEventFor.stop, _this.handleDragStop);\n }\n });\n\n _defineProperty(_assertThisInitialized(_this), \"onMouseDown\", function (e) {\n dragEventFor = eventsFor.mouse; // on touchscreen laptops we could switch back to mouse\n\n return _this.handleDragStart(e);\n });\n\n _defineProperty(_assertThisInitialized(_this), \"onMouseUp\", function (e) {\n dragEventFor = eventsFor.mouse;\n return _this.handleDragStop(e);\n });\n\n _defineProperty(_assertThisInitialized(_this), \"onTouchStart\", function (e) {\n // We're on a touch device now, so change the event handlers\n dragEventFor = eventsFor.touch;\n return _this.handleDragStart(e);\n });\n\n _defineProperty(_assertThisInitialized(_this), \"onTouchEnd\", function (e) {\n // We're on a touch device now, so change the event handlers\n dragEventFor = eventsFor.touch;\n return _this.handleDragStop(e);\n });\n\n return _this;\n }\n\n _createClass(DraggableCore, [{\n key: \"componentDidMount\",\n value: function componentDidMount() {\n this.mounted = true; // Touch handlers must be added with {passive: false} to be cancelable.\n // https://developers.google.com/web/updates/2017/01/scrolling-intervention\n\n var thisNode = this.findDOMNode();\n\n if (thisNode) {\n (0, _domFns.addEvent)(thisNode, eventsFor.touch.start, this.onTouchStart, {\n passive: false\n });\n }\n }\n }, {\n key: \"componentWillUnmount\",\n value: function componentWillUnmount() {\n this.mounted = false; // Remove any leftover event handlers. Remove both touch and mouse handlers in case\n // some browser quirk caused a touch event to fire during a mouse move, or vice versa.\n\n var thisNode = this.findDOMNode();\n\n if (thisNode) {\n var ownerDocument = thisNode.ownerDocument;\n (0, _domFns.removeEvent)(ownerDocument, eventsFor.mouse.move, this.handleDrag);\n (0, _domFns.removeEvent)(ownerDocument, eventsFor.touch.move, this.handleDrag);\n (0, _domFns.removeEvent)(ownerDocument, eventsFor.mouse.stop, this.handleDragStop);\n (0, _domFns.removeEvent)(ownerDocument, eventsFor.touch.stop, this.handleDragStop);\n (0, _domFns.removeEvent)(thisNode, eventsFor.touch.start, this.onTouchStart, {\n passive: false\n });\n if (this.props.enableUserSelectHack) (0, _domFns.removeUserSelectStyles)(ownerDocument);\n }\n } // React Strict Mode compatibility: if `nodeRef` is passed, we will use it instead of trying to find\n // the underlying DOM node ourselves. See the README for more information.\n\n }, {\n key: \"findDOMNode\",\n value: function findDOMNode()\n /*: ?HTMLElement*/\n {\n var _this$props, _this$props2, _this$props2$nodeRef;\n\n return (_this$props = this.props) !== null && _this$props !== void 0 && _this$props.nodeRef ? (_this$props2 = this.props) === null || _this$props2 === void 0 ? void 0 : (_this$props2$nodeRef = _this$props2.nodeRef) === null || _this$props2$nodeRef === void 0 ? void 0 : _this$props2$nodeRef.current : _reactDom.default.findDOMNode(this);\n }\n }, {\n key: \"render\",\n value: function render()\n /*: React.Element*/\n {\n // Reuse the child provided\n // This makes it flexible to use whatever element is wanted (div, ul, etc)\n return /*#__PURE__*/React.cloneElement(React.Children.only(this.props.children), {\n // Note: mouseMove handler is attached to document so it will still function\n // when the user drags quickly and leaves the bounds of the element.\n onMouseDown: this.onMouseDown,\n onMouseUp: this.onMouseUp,\n // onTouchStart is added on `componentDidMount` so they can be added with\n // {passive: false}, which allows it to cancel. See\n // https://developers.google.com/web/updates/2017/01/scrolling-intervention\n onTouchEnd: this.onTouchEnd\n });\n }\n }]);\n\n return DraggableCore;\n}(React.Component);\n\nexports.default = DraggableCore;\n\n_defineProperty(DraggableCore, \"displayName\", 'DraggableCore');\n\n_defineProperty(DraggableCore, \"propTypes\", {\n /**\n * `allowAnyClick` allows dragging using any mouse button.\n * By default, we only accept the left button.\n *\n * Defaults to `false`.\n */\n allowAnyClick: _propTypes.default.bool,\n\n /**\n * `disabled`, if true, stops the from dragging. All handlers,\n * with the exception of `onMouseDown`, will not fire.\n */\n disabled: _propTypes.default.bool,\n\n /**\n * By default, we add 'user-select:none' attributes to the document body\n * to prevent ugly text selection during drag. If this is causing problems\n * for your app, set this to `false`.\n */\n enableUserSelectHack: _propTypes.default.bool,\n\n /**\n * `offsetParent`, if set, uses the passed DOM node to compute drag offsets\n * instead of using the parent node.\n */\n offsetParent: function offsetParent(props\n /*: DraggableCoreProps*/\n , propName\n /*: $Keys*/\n ) {\n if (props[propName] && props[propName].nodeType !== 1) {\n throw new Error('Draggable\\'s offsetParent must be a DOM Node.');\n }\n },\n\n /**\n * `grid` specifies the x and y that dragging should snap to.\n */\n grid: _propTypes.default.arrayOf(_propTypes.default.number),\n\n /**\n * `handle` specifies a selector to be used as the handle that initiates drag.\n *\n * Example:\n *\n * ```jsx\n * let App = React.createClass({\n * render: function () {\n * return (\n * \n *
\n *
Click me to drag
\n *
This is some other content
\n *
\n *
\n * );\n * }\n * });\n * ```\n */\n handle: _propTypes.default.string,\n\n /**\n * `cancel` specifies a selector to be used to prevent drag initialization.\n *\n * Example:\n *\n * ```jsx\n * let App = React.createClass({\n * render: function () {\n * return(\n * \n *
\n *
You can't drag from here
\n *
Dragging here works fine
\n *
\n *
\n * );\n * }\n * });\n * ```\n */\n cancel: _propTypes.default.string,\n\n /* If running in React Strict mode, ReactDOM.findDOMNode() is deprecated.\n * Unfortunately, in order for to work properly, we need raw access\n * to the underlying DOM node. If you want to avoid the warning, pass a `nodeRef`\n * as in this example:\n *\n * function MyComponent() {\n * const nodeRef = React.useRef(null);\n * return (\n * \n *
Example Target
\n *
\n * );\n * }\n *\n * This can be used for arbitrarily nested components, so long as the ref ends up\n * pointing to the actual child DOM node and not a custom component.\n */\n nodeRef: _propTypes.default.object,\n\n /**\n * Called when dragging starts.\n * If this function returns the boolean false, dragging will be canceled.\n */\n onStart: _propTypes.default.func,\n\n /**\n * Called while dragging.\n * If this function returns the boolean false, dragging will be canceled.\n */\n onDrag: _propTypes.default.func,\n\n /**\n * Called when dragging stops.\n * If this function returns the boolean false, the drag will remain active.\n */\n onStop: _propTypes.default.func,\n\n /**\n * A workaround option which can be passed if onMouseDown needs to be accessed,\n * since it'll always be blocked (as there is internal use of onMouseDown)\n */\n onMouseDown: _propTypes.default.func,\n\n /**\n * `scale`, if set, applies scaling while dragging an element\n */\n scale: _propTypes.default.number,\n\n /**\n * These properties should be defined on the child, not here.\n */\n className: _shims.dontSetMe,\n style: _shims.dontSetMe,\n transform: _shims.dontSetMe\n});\n\n_defineProperty(DraggableCore, \"defaultProps\", {\n allowAnyClick: false,\n // by default only accept left click\n disabled: false,\n enableUserSelectHack: true,\n onStart: function onStart() {},\n onDrag: function onDrag() {},\n onStop: function onStop() {},\n onMouseDown: function onMouseDown() {},\n scale: 1\n});","\"use strict\";\n\nvar _require = require('./Draggable'),\n Draggable = _require.default,\n DraggableCore = _require.DraggableCore; // Previous versions of this lib exported as the root export. As to no-// them, or TypeScript, we export *both* as the root and as 'default'.\n// See https://github.com/mzabriskie/react-draggable/pull/254\n// and https://github.com/mzabriskie/react-draggable/issues/266\n\n\nmodule.exports = Draggable;\nmodule.exports.default = Draggable;\nmodule.exports.DraggableCore = DraggableCore;","\"use strict\";\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.addClassName = addClassName;\nexports.addEvent = addEvent;\nexports.addUserSelectStyles = addUserSelectStyles;\nexports.createCSSTransform = createCSSTransform;\nexports.createSVGTransform = createSVGTransform;\nexports.getTouch = getTouch;\nexports.getTouchIdentifier = getTouchIdentifier;\nexports.getTranslation = getTranslation;\nexports.innerHeight = innerHeight;\nexports.innerWidth = innerWidth;\nexports.matchesSelector = matchesSelector;\nexports.matchesSelectorAndParentsTo = matchesSelectorAndParentsTo;\nexports.offsetXYFromParent = offsetXYFromParent;\nexports.outerHeight = outerHeight;\nexports.outerWidth = outerWidth;\nexports.removeClassName = removeClassName;\nexports.removeEvent = removeEvent;\nexports.removeUserSelectStyles = removeUserSelectStyles;\n\nvar _shims = require(\"./shims\");\n\nvar _getPrefix = _interopRequireWildcard(require(\"./getPrefix\"));\n\nfunction _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== \"function\") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }\n\nfunction _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== \"object\" && typeof obj !== \"function\") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== \"default\" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nvar matchesSelectorFunc = '';\n\nfunction matchesSelector(el\n/*: Node*/\n, selector\n/*: string*/\n)\n/*: boolean*/\n{\n if (!matchesSelectorFunc) {\n matchesSelectorFunc = (0, _shims.findInArray)(['matches', 'webkitMatchesSelector', 'mozMatchesSelector', 'msMatchesSelector', 'oMatchesSelector'], function (method) {\n // $FlowIgnore: Doesn't think elements are indexable\n return (0, _shims.isFunction)(el[method]);\n });\n } // Might not be found entirely (not an Element?) - in that case, bail\n // $FlowIgnore: Doesn't think elements are indexable\n\n\n if (!(0, _shims.isFunction)(el[matchesSelectorFunc])) return false; // $FlowIgnore: Doesn't think elements are indexable\n\n return el[matchesSelectorFunc](selector);\n} // Works up the tree to the draggable itself attempting to match selector.\n\n\nfunction matchesSelectorAndParentsTo(el\n/*: Node*/\n, selector\n/*: string*/\n, baseNode\n/*: Node*/\n)\n/*: boolean*/\n{\n var node = el;\n\n do {\n if (matchesSelector(node, selector)) return true;\n if (node === baseNode) return false;\n node = node.parentNode;\n } while (node);\n\n return false;\n}\n\nfunction addEvent(el\n/*: ?Node*/\n, event\n/*: string*/\n, handler\n/*: Function*/\n, inputOptions\n/*: Object*/\n)\n/*: void*/\n{\n if (!el) return;\n\n var options = _objectSpread({\n capture: true\n }, inputOptions); // $FlowIgnore[method-unbinding]\n\n\n if (el.addEventListener) {\n el.addEventListener(event, handler, options);\n } else if (el.attachEvent) {\n el.attachEvent('on' + event, handler);\n } else {\n // $FlowIgnore: Doesn't think elements are indexable\n el['on' + event] = handler;\n }\n}\n\nfunction removeEvent(el\n/*: ?Node*/\n, event\n/*: string*/\n, handler\n/*: Function*/\n, inputOptions\n/*: Object*/\n)\n/*: void*/\n{\n if (!el) return;\n\n var options = _objectSpread({\n capture: true\n }, inputOptions); // $FlowIgnore[method-unbinding]\n\n\n if (el.removeEventListener) {\n el.removeEventListener(event, handler, options);\n } else if (el.detachEvent) {\n el.detachEvent('on' + event, handler);\n } else {\n // $FlowIgnore: Doesn't think elements are indexable\n el['on' + event] = null;\n }\n}\n\nfunction outerHeight(node\n/*: HTMLElement*/\n)\n/*: number*/\n{\n // This is deliberately excluding margin for our calculations, since we are using\n // offsetTop which is including margin. See getBoundPosition\n var height = node.clientHeight;\n var computedStyle = node.ownerDocument.defaultView.getComputedStyle(node);\n height += (0, _shims.int)(computedStyle.borderTopWidth);\n height += (0, _shims.int)(computedStyle.borderBottomWidth);\n return height;\n}\n\nfunction outerWidth(node\n/*: HTMLElement*/\n)\n/*: number*/\n{\n // This is deliberately excluding margin for our calculations, since we are using\n // offsetLeft which is including margin. See getBoundPosition\n var width = node.clientWidth;\n var computedStyle = node.ownerDocument.defaultView.getComputedStyle(node);\n width += (0, _shims.int)(computedStyle.borderLeftWidth);\n width += (0, _shims.int)(computedStyle.borderRightWidth);\n return width;\n}\n\nfunction innerHeight(node\n/*: HTMLElement*/\n)\n/*: number*/\n{\n var height = node.clientHeight;\n var computedStyle = node.ownerDocument.defaultView.getComputedStyle(node);\n height -= (0, _shims.int)(computedStyle.paddingTop);\n height -= (0, _shims.int)(computedStyle.paddingBottom);\n return height;\n}\n\nfunction innerWidth(node\n/*: HTMLElement*/\n)\n/*: number*/\n{\n var width = node.clientWidth;\n var computedStyle = node.ownerDocument.defaultView.getComputedStyle(node);\n width -= (0, _shims.int)(computedStyle.paddingLeft);\n width -= (0, _shims.int)(computedStyle.paddingRight);\n return width;\n}\n/*:: interface EventWithOffset {\n clientX: number, clientY: number\n}*/\n\n\n// Get from offsetParent\nfunction offsetXYFromParent(evt\n/*: EventWithOffset*/\n, offsetParent\n/*: HTMLElement*/\n, scale\n/*: number*/\n)\n/*: ControlPosition*/\n{\n var isBody = offsetParent === offsetParent.ownerDocument.body;\n var offsetParentRect = isBody ? {\n left: 0,\n top: 0\n } : offsetParent.getBoundingClientRect();\n var x = (evt.clientX + offsetParent.scrollLeft - offsetParentRect.left) / scale;\n var y = (evt.clientY + offsetParent.scrollTop - offsetParentRect.top) / scale;\n return {\n x: x,\n y: y\n };\n}\n\nfunction createCSSTransform(controlPos\n/*: ControlPosition*/\n, positionOffset\n/*: PositionOffsetControlPosition*/\n)\n/*: Object*/\n{\n var translation = getTranslation(controlPos, positionOffset, 'px');\n return _defineProperty({}, (0, _getPrefix.browserPrefixToKey)('transform', _getPrefix.default), translation);\n}\n\nfunction createSVGTransform(controlPos\n/*: ControlPosition*/\n, positionOffset\n/*: PositionOffsetControlPosition*/\n)\n/*: string*/\n{\n var translation = getTranslation(controlPos, positionOffset, '');\n return translation;\n}\n\nfunction getTranslation(_ref2, positionOffset\n/*: PositionOffsetControlPosition*/\n, unitSuffix\n/*: string*/\n)\n/*: string*/\n{\n var x = _ref2.x,\n y = _ref2.y;\n var translation = \"translate(\".concat(x).concat(unitSuffix, \",\").concat(y).concat(unitSuffix, \")\");\n\n if (positionOffset) {\n var defaultX = \"\".concat(typeof positionOffset.x === 'string' ? positionOffset.x : positionOffset.x + unitSuffix);\n var defaultY = \"\".concat(typeof positionOffset.y === 'string' ? positionOffset.y : positionOffset.y + unitSuffix);\n translation = \"translate(\".concat(defaultX, \", \").concat(defaultY, \")\") + translation;\n }\n\n return translation;\n}\n\nfunction getTouch(e\n/*: MouseTouchEvent*/\n, identifier\n/*: number*/\n)\n/*: ?{clientX: number, clientY: number}*/\n{\n return e.targetTouches && (0, _shims.findInArray)(e.targetTouches, function (t) {\n return identifier === t.identifier;\n }) || e.changedTouches && (0, _shims.findInArray)(e.changedTouches, function (t) {\n return identifier === t.identifier;\n });\n}\n\nfunction getTouchIdentifier(e\n/*: MouseTouchEvent*/\n)\n/*: ?number*/\n{\n if (e.targetTouches && e.targetTouches[0]) return e.targetTouches[0].identifier;\n if (e.changedTouches && e.changedTouches[0]) return e.changedTouches[0].identifier;\n} // User-select Hacks:\n//\n// Useful for preventing blue highlights all over everything when dragging.\n// Note we're passing `document` b/c we could be iframed\n\n\nfunction addUserSelectStyles(doc\n/*: ?Document*/\n) {\n if (!doc) return;\n var styleEl = doc.getElementById('react-draggable-style-el');\n\n if (!styleEl) {\n styleEl = doc.createElement('style');\n styleEl.type = 'text/css';\n styleEl.id = 'react-draggable-style-el';\n styleEl.innerHTML = '.react-draggable-transparent-selection *::-moz-selection {all: inherit;}\\n';\n styleEl.innerHTML += '.react-draggable-transparent-selection *::selection {all: inherit;}\\n';\n doc.getElementsByTagName('head')[0].appendChild(styleEl);\n }\n\n if (doc.body) addClassName(doc.body, 'react-draggable-transparent-selection');\n}\n\nfunction removeUserSelectStyles(doc\n/*: ?Document*/\n) {\n if (!doc) return;\n\n try {\n if (doc.body) removeClassName(doc.body, 'react-draggable-transparent-selection'); // $FlowIgnore: IE\n\n if (doc.selection) {\n // $FlowIgnore: IE\n doc.selection.empty();\n } else {\n // Remove selection caused by scroll, unless it's a focused input\n // (we use doc.defaultView in case we're in an iframe)\n var selection = (doc.defaultView || window).getSelection();\n\n if (selection && selection.type !== 'Caret') {\n selection.removeAllRanges();\n }\n }\n } catch (e) {// probably IE\n }\n}\n\nfunction addClassName(el\n/*: HTMLElement*/\n, className\n/*: string*/\n) {\n if (el.classList) {\n el.classList.add(className);\n } else {\n if (!el.className.match(new RegExp(\"(?:^|\\\\s)\".concat(className, \"(?!\\\\S)\")))) {\n el.className += \" \".concat(className);\n }\n }\n}\n\nfunction removeClassName(el\n/*: HTMLElement*/\n, className\n/*: string*/\n) {\n if (el.classList) {\n el.classList.remove(className);\n } else {\n el.className = el.className.replace(new RegExp(\"(?:^|\\\\s)\".concat(className, \"(?!\\\\S)\"), 'g'), '');\n }\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.browserPrefixToKey = browserPrefixToKey;\nexports.browserPrefixToStyle = browserPrefixToStyle;\nexports.default = void 0;\nexports.getPrefix = getPrefix;\nvar prefixes = ['Moz', 'Webkit', 'O', 'ms'];\n\nfunction getPrefix()\n/*: string*/\n{\n var _window$document, _window$document$docu;\n\n var prop\n /*: string*/\n = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'transform';\n // Ensure we're running in an environment where there is actually a global\n // `window` obj\n if (typeof window === 'undefined') return ''; // If we're in a pseudo-browser server-side environment, this access\n // path may not exist, so bail out if it doesn't.\n\n var style = (_window$document = window.document) === null || _window$document === void 0 ? void 0 : (_window$document$docu = _window$document.documentElement) === null || _window$document$docu === void 0 ? void 0 : _window$document$docu.style;\n if (!style) return '';\n if (prop in style) return '';\n\n for (var i = 0; i < prefixes.length; i++) {\n if (browserPrefixToKey(prop, prefixes[i]) in style) return prefixes[i];\n }\n\n return '';\n}\n\nfunction browserPrefixToKey(prop\n/*: string*/\n, prefix\n/*: string*/\n)\n/*: string*/\n{\n return prefix ? \"\".concat(prefix).concat(kebabToTitleCase(prop)) : prop;\n}\n\nfunction browserPrefixToStyle(prop\n/*: string*/\n, prefix\n/*: string*/\n)\n/*: string*/\n{\n return prefix ? \"-\".concat(prefix.toLowerCase(), \"-\").concat(prop) : prop;\n}\n\nfunction kebabToTitleCase(str\n/*: string*/\n)\n/*: string*/\n{\n var out = '';\n var shouldCapitalize = true;\n\n for (var i = 0; i < str.length; i++) {\n if (shouldCapitalize) {\n out += str[i].toUpperCase();\n shouldCapitalize = false;\n } else if (str[i] === '-') {\n shouldCapitalize = true;\n } else {\n out += str[i];\n }\n }\n\n return out;\n} // Default export is the prefix itself, like 'Moz', 'Webkit', etc\n// Note that you may have to re-test for certain things; for instance, Chrome 50\n// can handle unprefixed `transform`, but not unprefixed `user-select`\n\n\nvar _default = (getPrefix()\n/*: string*/\n);\n\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = log;\n\n/*eslint no-console:0*/\nfunction log() {\n var _console;\n\n if (undefined) (_console = console).log.apply(_console, arguments);\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.canDragX = canDragX;\nexports.canDragY = canDragY;\nexports.createCoreData = createCoreData;\nexports.createDraggableData = createDraggableData;\nexports.getBoundPosition = getBoundPosition;\nexports.getControlPosition = getControlPosition;\nexports.snapToGrid = snapToGrid;\n\nvar _shims = require(\"./shims\");\n\nvar _domFns = require(\"./domFns\");\n\nfunction getBoundPosition(draggable\n/*: Draggable*/\n, x\n/*: number*/\n, y\n/*: number*/\n)\n/*: [number, number]*/\n{\n // If no bounds, short-circuit and move on\n if (!draggable.props.bounds) return [x, y]; // Clone new bounds\n\n var bounds = draggable.props.bounds;\n bounds = typeof bounds === 'string' ? bounds : cloneBounds(bounds);\n var node = findDOMNode(draggable);\n\n if (typeof bounds === 'string') {\n var ownerDocument = node.ownerDocument;\n var ownerWindow = ownerDocument.defaultView;\n var boundNode;\n\n if (bounds === 'parent') {\n boundNode = node.parentNode;\n } else {\n boundNode = ownerDocument.querySelector(bounds);\n }\n\n if (!(boundNode instanceof ownerWindow.HTMLElement)) {\n throw new Error('Bounds selector \"' + bounds + '\" could not find an element.');\n }\n\n var boundNodeEl\n /*: HTMLElement*/\n = boundNode; // for Flow, can't seem to refine correctly\n\n var nodeStyle = ownerWindow.getComputedStyle(node);\n var boundNodeStyle = ownerWindow.getComputedStyle(boundNodeEl); // Compute bounds. This is a pain with padding and offsets but this gets it exactly right.\n\n bounds = {\n left: -node.offsetLeft + (0, _shims.int)(boundNodeStyle.paddingLeft) + (0, _shims.int)(nodeStyle.marginLeft),\n top: -node.offsetTop + (0, _shims.int)(boundNodeStyle.paddingTop) + (0, _shims.int)(nodeStyle.marginTop),\n right: (0, _domFns.innerWidth)(boundNodeEl) - (0, _domFns.outerWidth)(node) - node.offsetLeft + (0, _shims.int)(boundNodeStyle.paddingRight) - (0, _shims.int)(nodeStyle.marginRight),\n bottom: (0, _domFns.innerHeight)(boundNodeEl) - (0, _domFns.outerHeight)(node) - node.offsetTop + (0, _shims.int)(boundNodeStyle.paddingBottom) - (0, _shims.int)(nodeStyle.marginBottom)\n };\n } // Keep x and y below right and bottom limits...\n\n\n if ((0, _shims.isNum)(bounds.right)) x = Math.min(x, bounds.right);\n if ((0, _shims.isNum)(bounds.bottom)) y = Math.min(y, bounds.bottom); // But above left and top limits.\n\n if ((0, _shims.isNum)(bounds.left)) x = Math.max(x, bounds.left);\n if ((0, _shims.isNum)(bounds.top)) y = Math.max(y, bounds.top);\n return [x, y];\n}\n\nfunction snapToGrid(grid\n/*: [number, number]*/\n, pendingX\n/*: number*/\n, pendingY\n/*: number*/\n)\n/*: [number, number]*/\n{\n var x = Math.round(pendingX / grid[0]) * grid[0];\n var y = Math.round(pendingY / grid[1]) * grid[1];\n return [x, y];\n}\n\nfunction canDragX(draggable\n/*: Draggable*/\n)\n/*: boolean*/\n{\n return draggable.props.axis === 'both' || draggable.props.axis === 'x';\n}\n\nfunction canDragY(draggable\n/*: Draggable*/\n)\n/*: boolean*/\n{\n return draggable.props.axis === 'both' || draggable.props.axis === 'y';\n} // Get {x, y} positions from event.\n\n\nfunction getControlPosition(e\n/*: MouseTouchEvent*/\n, touchIdentifier\n/*: ?number*/\n, draggableCore\n/*: DraggableCore*/\n)\n/*: ?ControlPosition*/\n{\n var touchObj = typeof touchIdentifier === 'number' ? (0, _domFns.getTouch)(e, touchIdentifier) : null;\n if (typeof touchIdentifier === 'number' && !touchObj) return null; // not the right touch\n\n var node = findDOMNode(draggableCore); // User can provide an offsetParent if desired.\n\n var offsetParent = draggableCore.props.offsetParent || node.offsetParent || node.ownerDocument.body;\n return (0, _domFns.offsetXYFromParent)(touchObj || e, offsetParent, draggableCore.props.scale);\n} // Create an data object exposed by 's events\n\n\nfunction createCoreData(draggable\n/*: DraggableCore*/\n, x\n/*: number*/\n, y\n/*: number*/\n)\n/*: DraggableData*/\n{\n var state = draggable.state;\n var isStart = !(0, _shims.isNum)(state.lastX);\n var node = findDOMNode(draggable);\n\n if (isStart) {\n // If this is our first move, use the x and y as last coords.\n return {\n node: node,\n deltaX: 0,\n deltaY: 0,\n lastX: x,\n lastY: y,\n x: x,\n y: y\n };\n } else {\n // Otherwise calculate proper values.\n return {\n node: node,\n deltaX: x - state.lastX,\n deltaY: y - state.lastY,\n lastX: state.lastX,\n lastY: state.lastY,\n x: x,\n y: y\n };\n }\n} // Create an data exposed by 's events\n\n\nfunction createDraggableData(draggable\n/*: Draggable*/\n, coreData\n/*: DraggableData*/\n)\n/*: DraggableData*/\n{\n var scale = draggable.props.scale;\n return {\n node: coreData.node,\n x: draggable.state.x + coreData.deltaX / scale,\n y: draggable.state.y + coreData.deltaY / scale,\n deltaX: coreData.deltaX / scale,\n deltaY: coreData.deltaY / scale,\n lastX: draggable.state.x,\n lastY: draggable.state.y\n };\n} // A lot faster than stringify/parse\n\n\nfunction cloneBounds(bounds\n/*: Bounds*/\n)\n/*: Bounds*/\n{\n return {\n left: bounds.left,\n top: bounds.top,\n right: bounds.right,\n bottom: bounds.bottom\n };\n}\n\nfunction findDOMNode(draggable\n/*: Draggable | DraggableCore*/\n)\n/*: HTMLElement*/\n{\n var node = draggable.findDOMNode();\n\n if (!node) {\n throw new Error(': Unmounted during event!');\n } // $FlowIgnore we can't assert on HTMLElement due to tests... FIXME\n\n\n return node;\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.dontSetMe = dontSetMe;\nexports.findInArray = findInArray;\nexports.int = int;\nexports.isFunction = isFunction;\nexports.isNum = isNum;\n\n// @credits https://gist.github.com/rogozhnikoff/a43cfed27c41e4e68cdc\nfunction findInArray(array\n/*: Array | TouchList*/\n, callback\n/*: Function*/\n)\n/*: any*/\n{\n for (var i = 0, length = array.length; i < length; i++) {\n if (callback.apply(callback, [array[i], i, array])) return array[i];\n }\n}\n\nfunction isFunction(func\n/*: any*/\n)\n/*: boolean %checks*/\n{\n // $FlowIgnore[method-unbinding]\n return typeof func === 'function' || Object.prototype.toString.call(func) === '[object Function]';\n}\n\nfunction isNum(num\n/*: any*/\n)\n/*: boolean %checks*/\n{\n return typeof num === 'number' && !isNaN(num);\n}\n\nfunction int(a\n/*: string*/\n)\n/*: number*/\n{\n return parseInt(a, 10);\n}\n\nfunction dontSetMe(props\n/*: Object*/\n, propName\n/*: string*/\n, componentName\n/*: string*/\n)\n/*: ?Error*/\n{\n if (props[propName]) {\n return new Error(\"Invalid prop \".concat(propName, \" passed to \").concat(componentName, \" - do not set this, set it on the child.\"));\n }\n}","/**\n * @license React\n * react-reconciler-constants.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n'use strict';exports.ConcurrentRoot=1;exports.ContinuousEventPriority=4;exports.DefaultEventPriority=16;exports.DiscreteEventPriority=1;exports.IdleEventPriority=536870912;exports.LegacyRoot=0;\n","/**\n * @license React\n * react-reconciler.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\nmodule.exports = function $$$reconciler($$$hostConfig) {\n var exports = {};\n'use strict';var aa=require(\"react\"),ba=require(\"scheduler\"),ca=Object.assign;function n(a){for(var b=\"https://reactjs.org/docs/error-decoder.html?invariant=\"+a,c=1;ch||e[g]!==f[h]){var k=\"\\n\"+e[g].replace(\" at new \",\" at \");a.displayName&&k.includes(\"\")&&(k=k.replace(\"\",a.displayName));return k}while(1<=g&&0<=h)}break}}}finally{bc=!1,Error.prepareStackTrace=c}return(a=a?a.displayName||a.name:\"\")?ac(a):\"\"}var dc=Object.prototype.hasOwnProperty,ec=[],fc=-1;function gc(a){return{current:a}}\nfunction x(a){0>fc||(a.current=ec[fc],ec[fc]=null,fc--)}function y(a,b){fc++;ec[fc]=a.current;a.current=b}var hc={},A=gc(hc),B=gc(!1),ic=hc;function jc(a,b){var c=a.type.contextTypes;if(!c)return hc;var d=a.stateNode;if(d&&d.__reactInternalMemoizedUnmaskedChildContext===b)return d.__reactInternalMemoizedMaskedChildContext;var e={},f;for(f in c)e[f]=b[f];d&&(a=a.stateNode,a.__reactInternalMemoizedUnmaskedChildContext=b,a.__reactInternalMemoizedMaskedChildContext=e);return e}\nfunction C(a){a=a.childContextTypes;return null!==a&&void 0!==a}function kc(){x(B);x(A)}function lc(a,b,c){if(A.current!==hc)throw Error(n(168));y(A,b);y(B,c)}function mc(a,b,c){var d=a.stateNode;b=b.childContextTypes;if(\"function\"!==typeof d.getChildContext)return c;d=d.getChildContext();for(var e in d)if(!(e in b))throw Error(n(108,xa(a)||\"Unknown\",e));return ca({},c,d)}\nfunction nc(a){a=(a=a.stateNode)&&a.__reactInternalMemoizedMergedChildContext||hc;ic=A.current;y(A,a);y(B,B.current);return!0}function oc(a,b,c){var d=a.stateNode;if(!d)throw Error(n(169));c?(a=mc(a,b,ic),d.__reactInternalMemoizedMergedChildContext=a,x(B),x(A),y(A,a)):x(B);y(B,c)}var qc=Math.clz32?Math.clz32:pc,rc=Math.log,sc=Math.LN2;function pc(a){a>>>=0;return 0===a?32:31-(rc(a)/sc|0)|0}var tc=64,uc=4194304;\nfunction vc(a){switch(a&-a){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return a&4194240;case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:return a&130023424;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 1073741824;\ndefault:return a}}function wc(a,b){var c=a.pendingLanes;if(0===c)return 0;var d=0,e=a.suspendedLanes,f=a.pingedLanes,g=c&268435455;if(0!==g){var h=g&~e;0!==h?d=vc(h):(f&=g,0!==f&&(d=vc(f)))}else g=c&~e,0!==g?d=vc(g):0!==f&&(d=vc(f));if(0===d)return 0;if(0!==b&&b!==d&&0===(b&e)&&(e=d&-d,f=b&-b,e>=f||16===e&&0!==(f&4194240)))return b;0!==(d&4)&&(d|=c&16);b=a.entangledLanes;if(0!==b)for(a=a.entanglements,b&=d;0c;c++)b.push(a);return b}function Bc(a,b,c){a.pendingLanes|=b;536870912!==b&&(a.suspendedLanes=0,a.pingedLanes=0);a=a.eventTimes;b=31-qc(b);a[b]=c}\nfunction Cc(a,b){var c=a.pendingLanes&~b;a.pendingLanes=b;a.suspendedLanes=0;a.pingedLanes=0;a.expiredLanes&=b;a.mutableReadLanes&=b;a.entangledLanes&=b;b=a.entanglements;var d=a.eventTimes;for(a=a.expirationTimes;0>=g;e-=g;Nd=1<<32-qc(b)+e|c<u?(t=w,w=null):t=w.sibling;var q=r(e,w,h[u],k);if(null===q){null===w&&(w=t);break}a&&w&&null===q.alternate&&b(e,w);g=f(q,g,u);null===m?l=q:m.sibling=q;m=q;w=t}if(u===h.length)return c(e,w),I&&Pd(e,u),l;if(null===w){for(;uu?(q=m,m=null):q=m.sibling;var V=r(e,m,t.value,k);if(null===V){null===m&&(m=q);break}a&&m&&null===V.alternate&&b(e,m);g=f(V,g,u);null===w?l=V:w.sibling=V;w=V;m=q}if(t.done)return c(e,\nm),I&&Pd(e,u),l;if(null===m){for(;!t.done;u++,t=h.next())t=v(e,t.value,k),null!==t&&(g=f(t,g,u),null===w?l=t:w.sibling=t,w=t);I&&Pd(e,u);return l}for(m=d(e,m);!t.done;u++,t=h.next())t=z(m,e,u,t.value,k),null!==t&&(a&&null!==t.alternate&&m.delete(null===t.key?u:t.key),g=f(t,g,u),null===w?l=t:w.sibling=t,w=t);a&&m.forEach(function(a){return b(e,a)});I&&Pd(e,u);return l}function da(a,d,f,h){\"object\"===typeof f&&null!==f&&f.type===ia&&null===f.key&&(f=f.props.children);if(\"object\"===typeof f&&null!==\nf){switch(f.$$typeof){case fa:a:{for(var k=f.key,l=d;null!==l;){if(l.key===k){k=f.type;if(k===ia){if(7===l.tag){c(a,l.sibling);d=e(l,f.props.children);d.return=a;a=d;break a}}else if(l.elementType===k||\"object\"===typeof k&&null!==k&&k.$$typeof===ra&&he(k)===l.type){c(a,l.sibling);d=e(l,f.props);d.ref=fe(a,l,f);d.return=a;a=d;break a}c(a,l);break}else b(a,l);l=l.sibling}f.type===ia?(d=ne(f.props.children,a.mode,h,f.key),d.return=a,a=d):(h=le(f.type,f.key,f.props,null,a.mode,h),h.ref=fe(a,d,f),h.return=\na,a=h)}return g(a);case ha:a:{for(l=f.key;null!==d;){if(d.key===l)if(4===d.tag&&d.stateNode.containerInfo===f.containerInfo&&d.stateNode.implementation===f.implementation){c(a,d.sibling);d=e(d,f.children||[]);d.return=a;a=d;break a}else{c(a,d);break}else b(a,d);d=d.sibling}d=me(f,a.mode,h);d.return=a;a=d}return g(a);case ra:return l=f._init,da(a,d,l(f._payload),h)}if(Ea(f))return q(a,d,f,h);if(ua(f))return N(a,d,f,h);ge(a,f)}return\"string\"===typeof f&&\"\"!==f||\"number\"===typeof f?(f=\"\"+f,null!==d&&\n6===d.tag?(c(a,d.sibling),d=e(d,f),d.return=a,a=d):(c(a,d),d=ke(f,a.mode,h),d.return=a,a=d),g(a)):c(a,d)}return da}var oe=ie(!0),pe=ie(!1),qe={},re=gc(qe),se=gc(qe),te=gc(qe);function ue(a){if(a===qe)throw Error(n(174));return a}function ve(a,b){y(te,b);y(se,a);y(re,qe);a=Ga(b);x(re);y(re,a)}function we(){x(re);x(se);x(te)}function xe(a){var b=ue(te.current),c=ue(re.current);b=Ha(c,a.type,b);c!==b&&(y(se,a),y(re,b))}function ye(a){se.current===a&&(x(re),x(se))}var J=gc(0);\nfunction ze(a){for(var b=a;null!==b;){if(13===b.tag){var c=b.memoizedState;if(null!==c&&(c=c.dehydrated,null===c||Ib(c)||Jb(c)))return b}else if(19===b.tag&&void 0!==b.memoizedProps.revealOrder){if(0!==(b.flags&128))return b}else if(null!==b.child){b.child.return=b;b=b.child;continue}if(b===a)break;for(;null===b.sibling;){if(null===b.return||b.return===a)return null;b=b.return}b.sibling.return=b.return;b=b.sibling}return null}var Ae=[];\nfunction Be(){for(var a=0;ac?c:4;a(!0);var d=De.transition;De.transition={};try{a(!1),b()}finally{D=c,De.transition=d}}function rf(){return Re().memoizedState}function sf(a,b,c){var d=zd(a);c={lane:d,action:c,hasEagerState:!1,eagerState:null,next:null};tf(a)?uf(b,c):(vf(a,b,c),c=H(),a=Ad(a,d,c),null!==a&&wf(a,b,d))}\nfunction df(a,b,c){var d=zd(a),e={lane:d,action:c,hasEagerState:!1,eagerState:null,next:null};if(tf(a))uf(b,e);else{vf(a,b,e);var f=a.alternate;if(0===a.lanes&&(null===f||0===f.lanes)&&(f=b.lastRenderedReducer,null!==f))try{var g=b.lastRenderedState,h=f(g,c);e.hasEagerState=!0;e.eagerState=h;if(Rc(h,g))return}catch(k){}finally{}c=H();a=Ad(a,d,c);null!==a&&wf(a,b,d)}}function tf(a){var b=a.alternate;return a===K||null!==b&&b===K}\nfunction uf(a,b){Ge=Fe=!0;var c=a.pending;null===c?b.next=b:(b.next=c.next,c.next=b);a.pending=b}function vf(a,b,c){null!==F&&0!==(a.mode&1)&&0===(G&2)?(a=b.interleaved,null===a?(c.next=c,null===md?md=[b]:md.push(b)):(c.next=a.next,a.next=c),b.interleaved=c):(a=b.pending,null===a?c.next=c:(c.next=a.next,a.next=c),b.pending=c)}function wf(a,b,c){if(0!==(c&4194240)){var d=b.lanes;d&=a.pendingLanes;c|=d;b.lanes=c;Dc(a,c)}}\nvar Oe={readContext:ld,useCallback:O,useContext:O,useEffect:O,useImperativeHandle:O,useInsertionEffect:O,useLayoutEffect:O,useMemo:O,useReducer:O,useRef:O,useState:O,useDebugValue:O,useDeferredValue:O,useTransition:O,useMutableSource:O,useSyncExternalStore:O,useId:O,unstable_isNewReconciler:!1},Le={readContext:ld,useCallback:function(a,b){Qe().memoizedState=[a,void 0===b?null:b];return a},useContext:ld,useEffect:hf,useImperativeHandle:function(a,b,c){c=null!==c&&void 0!==c?c.concat([a]):null;return ff(4194308,\n4,lf.bind(null,b,a),c)},useLayoutEffect:function(a,b){return ff(4194308,4,a,b)},useInsertionEffect:function(a,b){return ff(4,2,a,b)},useMemo:function(a,b){var c=Qe();b=void 0===b?null:b;a=a();c.memoizedState=[a,b];return a},useReducer:function(a,b,c){var d=Qe();b=void 0!==c?c(b):b;d.memoizedState=d.baseState=b;a={pending:null,interleaved:null,lanes:0,dispatch:null,lastRenderedReducer:a,lastRenderedState:b};d.queue=a;a=a.dispatch=sf.bind(null,K,a);return[d.memoizedState,a]},useRef:function(a){var b=\nQe();a={current:a};return b.memoizedState=a},useState:cf,useDebugValue:nf,useDeferredValue:function(a){var b=cf(a),c=b[0],d=b[1];hf(function(){var b=De.transition;De.transition={};try{d(a)}finally{De.transition=b}},[a]);return c},useTransition:function(){var a=cf(!1),b=a[0];a=qf.bind(null,a[1]);Qe().memoizedState=a;return[b,a]},useMutableSource:function(){},useSyncExternalStore:function(a,b,c){var d=K,e=Qe();if(I){if(void 0===c)throw Error(n(407));c=c()}else{c=b();if(null===F)throw Error(n(349));\n0!==(Ee&30)||af(d,b,c)}e.memoizedState=c;var f={value:c,getSnapshot:b};e.queue=f;hf(Ye.bind(null,d,f,a),[a]);d.flags|=2048;Ze(9,$e.bind(null,d,f,c,b),void 0,null);return c},useId:function(){var a=Qe(),b=F.identifierPrefix;if(I){var c=Od;var d=Nd;c=(d&~(1<<32-qc(d)-1)).toString(32)+c;b=\":\"+b+\"R\"+c;c=He++;0Uf&&(b.flags|=128,d=!0,Qf(e,!1),b.lanes=4194304)}else{if(!d)if(a=ze(f),null!==a){if(b.flags|=128,d=!0,a=a.updateQueue,null!==a&&(b.updateQueue=a,b.flags|=4),Qf(e,!0),null===e.tail&&\"hidden\"===e.tailMode&&!f.alternate&&!I)return P(b),null}else 2*E()-e.renderingStartTime>Uf&&1073741824!==c&&(b.flags|=128,d=!0,Qf(e,!1),b.lanes=4194304);e.isBackwards?(f.sibling=b.child,b.child=f):(a=e.last,null!==a?a.sibling=f:b.child=f,e.last=f)}if(null!==\ne.tail)return b=e.tail,e.rendering=b,e.tail=b.sibling,e.renderingStartTime=E(),b.sibling=null,a=J.current,y(J,d?a&1|2:a&1),b;P(b);return null;case 22:case 23:return Vf(),d=null!==b.memoizedState,null!==a&&null!==a.memoizedState!==d&&(b.flags|=8192),d&&0!==(b.mode&1)?0!==(Wf&1073741824)&&(P(b),Ua&&b.subtreeFlags&6&&(b.flags|=8192)):P(b),null;case 24:return null;case 25:return null}throw Error(n(156,b.tag));}var Xf=ea.ReactCurrentOwner,kd=!1;\nfunction R(a,b,c,d){b.child=null===a?pe(b,null,c,d):oe(b,a.child,c,d)}function Yf(a,b,c,d,e){c=c.render;var f=b.ref;jd(b,e);d=Ke(a,b,c,d,f,e);c=Pe();if(null!==a&&!kd)return b.updateQueue=a.updateQueue,b.flags&=-2053,a.lanes&=~e,Zf(a,b,e);I&&c&&Rd(b);b.flags|=1;R(a,b,d,e);return b.child}\nfunction $f(a,b,c,d,e){if(null===a){var f=c.type;if(\"function\"===typeof f&&!ag(f)&&void 0===f.defaultProps&&null===c.compare&&void 0===c.defaultProps)return b.tag=15,b.type=f,bg(a,b,f,d,e);a=le(c.type,null,d,b,b.mode,e);a.ref=b.ref;a.return=b;return b.child=a}f=a.child;if(0===(a.lanes&e)){var g=f.memoizedProps;c=c.compare;c=null!==c?c:Zc;if(c(g,d)&&a.ref===b.ref)return Zf(a,b,e)}b.flags|=1;a=je(f,d);a.ref=b.ref;a.return=b;return b.child=a}\nfunction bg(a,b,c,d,e){if(null!==a&&Zc(a.memoizedProps,d)&&a.ref===b.ref)if(kd=!1,0!==(a.lanes&e))0!==(a.flags&131072)&&(kd=!0);else return b.lanes=a.lanes,Zf(a,b,e);return cg(a,b,c,d,e)}\nfunction dg(a,b,c){var d=b.pendingProps,e=d.children,f=null!==a?a.memoizedState:null;if(\"hidden\"===d.mode)if(0===(b.mode&1))b.memoizedState={baseLanes:0,cachePool:null},y(eg,Wf),Wf|=c;else if(0!==(c&1073741824))b.memoizedState={baseLanes:0,cachePool:null},d=null!==f?f.baseLanes:c,y(eg,Wf),Wf|=d;else return a=null!==f?f.baseLanes|c:c,b.lanes=b.childLanes=1073741824,b.memoizedState={baseLanes:a,cachePool:null},b.updateQueue=null,y(eg,Wf),Wf|=a,null;else null!==f?(d=f.baseLanes|c,b.memoizedState=null):\nd=c,y(eg,Wf),Wf|=d;R(a,b,e,c);return b.child}function fg(a,b){var c=b.ref;if(null===a&&null!==c||null!==a&&a.ref!==c)b.flags|=512,b.flags|=2097152}function cg(a,b,c,d,e){var f=C(c)?ic:A.current;f=jc(b,f);jd(b,e);c=Ke(a,b,c,d,f,e);d=Pe();if(null!==a&&!kd)return b.updateQueue=a.updateQueue,b.flags&=-2053,a.lanes&=~e,Zf(a,b,e);I&&d&&Rd(b);b.flags|=1;R(a,b,c,e);return b.child}\nfunction gg(a,b,c,d,e){if(C(c)){var f=!0;nc(b)}else f=!1;jd(b,e);if(null===b.stateNode)null!==a&&(a.alternate=null,b.alternate=null,b.flags|=2),Dd(b,c,d),Fd(b,c,d,e),d=!0;else if(null===a){var g=b.stateNode,h=b.memoizedProps;g.props=h;var k=g.context,l=c.contextType;\"object\"===typeof l&&null!==l?l=ld(l):(l=C(c)?ic:A.current,l=jc(b,l));var m=c.getDerivedStateFromProps,v=\"function\"===typeof m||\"function\"===typeof g.getSnapshotBeforeUpdate;v||\"function\"!==typeof g.UNSAFE_componentWillReceiveProps&&\"function\"!==\ntypeof g.componentWillReceiveProps||(h!==d||k!==l)&&Ed(b,g,d,l);nd=!1;var r=b.memoizedState;g.state=r;ud(b,d,g,e);k=b.memoizedState;h!==d||r!==k||B.current||nd?(\"function\"===typeof m&&(yd(b,c,m,d),k=b.memoizedState),(h=nd||Cd(b,c,h,d,r,k,l))?(v||\"function\"!==typeof g.UNSAFE_componentWillMount&&\"function\"!==typeof g.componentWillMount||(\"function\"===typeof g.componentWillMount&&g.componentWillMount(),\"function\"===typeof g.UNSAFE_componentWillMount&&g.UNSAFE_componentWillMount()),\"function\"===typeof g.componentDidMount&&\n(b.flags|=4194308)):(\"function\"===typeof g.componentDidMount&&(b.flags|=4194308),b.memoizedProps=d,b.memoizedState=k),g.props=d,g.state=k,g.context=l,d=h):(\"function\"===typeof g.componentDidMount&&(b.flags|=4194308),d=!1)}else{g=b.stateNode;pd(a,b);h=b.memoizedProps;l=b.type===b.elementType?h:ad(b.type,h);g.props=l;v=b.pendingProps;r=g.context;k=c.contextType;\"object\"===typeof k&&null!==k?k=ld(k):(k=C(c)?ic:A.current,k=jc(b,k));var z=c.getDerivedStateFromProps;(m=\"function\"===typeof z||\"function\"===\ntypeof g.getSnapshotBeforeUpdate)||\"function\"!==typeof g.UNSAFE_componentWillReceiveProps&&\"function\"!==typeof g.componentWillReceiveProps||(h!==v||r!==k)&&Ed(b,g,d,k);nd=!1;r=b.memoizedState;g.state=r;ud(b,d,g,e);var q=b.memoizedState;h!==v||r!==q||B.current||nd?(\"function\"===typeof z&&(yd(b,c,z,d),q=b.memoizedState),(l=nd||Cd(b,c,l,d,r,q,k)||!1)?(m||\"function\"!==typeof g.UNSAFE_componentWillUpdate&&\"function\"!==typeof g.componentWillUpdate||(\"function\"===typeof g.componentWillUpdate&&g.componentWillUpdate(d,\nq,k),\"function\"===typeof g.UNSAFE_componentWillUpdate&&g.UNSAFE_componentWillUpdate(d,q,k)),\"function\"===typeof g.componentDidUpdate&&(b.flags|=4),\"function\"===typeof g.getSnapshotBeforeUpdate&&(b.flags|=1024)):(\"function\"!==typeof g.componentDidUpdate||h===a.memoizedProps&&r===a.memoizedState||(b.flags|=4),\"function\"!==typeof g.getSnapshotBeforeUpdate||h===a.memoizedProps&&r===a.memoizedState||(b.flags|=1024),b.memoizedProps=d,b.memoizedState=q),g.props=d,g.state=q,g.context=k,d=l):(\"function\"!==\ntypeof g.componentDidUpdate||h===a.memoizedProps&&r===a.memoizedState||(b.flags|=4),\"function\"!==typeof g.getSnapshotBeforeUpdate||h===a.memoizedProps&&r===a.memoizedState||(b.flags|=1024),d=!1)}return hg(a,b,c,d,f,e)}\nfunction hg(a,b,c,d,e,f){fg(a,b);var g=0!==(b.flags&128);if(!d&&!g)return e&&oc(b,c,!1),Zf(a,b,f);d=b.stateNode;Xf.current=b;var h=g&&\"function\"!==typeof c.getDerivedStateFromError?null:d.render();b.flags|=1;null!==a&&g?(b.child=oe(b,a.child,null,f),b.child=oe(b,null,h,f)):R(a,b,h,f);b.memoizedState=d.state;e&&oc(b,c,!0);return b.child}function ig(a){var b=a.stateNode;b.pendingContext?lc(a,b.pendingContext,b.pendingContext!==b.context):b.context&&lc(a,b.context,!1);ve(a,b.containerInfo)}\nfunction jg(a,b,c,d,e){de();ee(e);b.flags|=256;R(a,b,c,d);return b.child}var kg={dehydrated:null,treeContext:null,retryLane:0};function lg(a){return{baseLanes:a,cachePool:null}}\nfunction mg(a,b,c){var d=b.pendingProps,e=J.current,f=!1,g=0!==(b.flags&128),h;(h=g)||(h=null!==a&&null===a.memoizedState?!1:0!==(e&2));if(h)f=!0,b.flags&=-129;else if(null===a||null!==a.memoizedState)e|=1;y(J,e&1);if(null===a){ae(b);a=b.memoizedState;if(null!==a&&(a=a.dehydrated,null!==a))return 0===(b.mode&1)?b.lanes=1:Jb(a)?b.lanes=8:b.lanes=1073741824,null;e=d.children;a=d.fallback;return f?(d=b.mode,f=b.child,e={mode:\"hidden\",children:e},0===(d&1)&&null!==f?(f.childLanes=0,f.pendingProps=e):\nf=ng(e,d,0,null),a=ne(a,d,c,null),f.return=b,a.return=b,f.sibling=a,b.child=f,b.child.memoizedState=lg(c),b.memoizedState=kg,a):og(b,e)}e=a.memoizedState;if(null!==e){h=e.dehydrated;if(null!==h){if(g){if(b.flags&256)return b.flags&=-257,pg(a,b,c,Error(n(422)));if(null!==b.memoizedState)return b.child=a.child,b.flags|=128,null;f=d.fallback;e=b.mode;d=ng({mode:\"visible\",children:d.children},e,0,null);f=ne(f,e,c,null);f.flags|=2;d.return=b;f.return=b;d.sibling=f;b.child=d;0!==(b.mode&1)&&oe(b,a.child,\nnull,c);b.child.memoizedState=lg(c);b.memoizedState=kg;return f}if(0===(b.mode&1))b=pg(a,b,c,null);else if(Jb(h))b=pg(a,b,c,Error(n(419)));else if(d=0!==(c&a.childLanes),kd||d){d=F;if(null!==d){switch(c&-c){case 4:f=2;break;case 16:f=8;break;case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:f=32;break;case 536870912:f=\n268435456;break;default:f=0}d=0!==(f&(d.suspendedLanes|c))?0:f;0!==d&&d!==e.retryLane&&(e.retryLane=d,Ad(a,d,-1))}Tf();b=pg(a,b,c,Error(n(421)))}else Ib(h)?(b.flags|=128,b.child=a.child,b=qg.bind(null,a),Kb(h,b),b=null):(c=e.treeContext,p&&(Ud=Ob(h),Td=b,I=!0,Wd=null,Vd=!1,null!==c&&(Kd[Ld++]=Nd,Kd[Ld++]=Od,Kd[Ld++]=Md,Nd=c.id,Od=c.overflow,Md=b)),b=og(b,b.pendingProps.children),b.flags|=4096);return b}if(f)return d=rg(a,b,d.children,d.fallback,c),f=b.child,e=a.child.memoizedState,f.memoizedState=\nnull===e?lg(c):{baseLanes:e.baseLanes|c,cachePool:null},f.childLanes=a.childLanes&~c,b.memoizedState=kg,d;c=sg(a,b,d.children,c);b.memoizedState=null;return c}if(f)return d=rg(a,b,d.children,d.fallback,c),f=b.child,e=a.child.memoizedState,f.memoizedState=null===e?lg(c):{baseLanes:e.baseLanes|c,cachePool:null},f.childLanes=a.childLanes&~c,b.memoizedState=kg,d;c=sg(a,b,d.children,c);b.memoizedState=null;return c}\nfunction og(a,b){b=ng({mode:\"visible\",children:b},a.mode,0,null);b.return=a;return a.child=b}function sg(a,b,c,d){var e=a.child;a=e.sibling;c=je(e,{mode:\"visible\",children:c});0===(b.mode&1)&&(c.lanes=d);c.return=b;c.sibling=null;null!==a&&(d=b.deletions,null===d?(b.deletions=[a],b.flags|=16):d.push(a));return b.child=c}\nfunction rg(a,b,c,d,e){var f=b.mode;a=a.child;var g=a.sibling,h={mode:\"hidden\",children:c};0===(f&1)&&b.child!==a?(c=b.child,c.childLanes=0,c.pendingProps=h,b.deletions=null):(c=je(a,h),c.subtreeFlags=a.subtreeFlags&14680064);null!==g?d=je(g,d):(d=ne(d,f,e,null),d.flags|=2);d.return=b;c.return=b;c.sibling=d;b.child=c;return d}function pg(a,b,c,d){null!==d&&ee(d);oe(b,a.child,null,c);a=og(b,b.pendingProps.children);a.flags|=2;b.memoizedState=null;return a}\nfunction tg(a,b,c){a.lanes|=b;var d=a.alternate;null!==d&&(d.lanes|=b);id(a.return,b,c)}function ug(a,b,c,d,e){var f=a.memoizedState;null===f?a.memoizedState={isBackwards:b,rendering:null,renderingStartTime:0,last:d,tail:c,tailMode:e}:(f.isBackwards=b,f.rendering=null,f.renderingStartTime=0,f.last=d,f.tail=c,f.tailMode=e)}\nfunction vg(a,b,c){var d=b.pendingProps,e=d.revealOrder,f=d.tail;R(a,b,d.children,c);d=J.current;if(0!==(d&2))d=d&1|2,b.flags|=128;else{if(null!==a&&0!==(a.flags&128))a:for(a=b.child;null!==a;){if(13===a.tag)null!==a.memoizedState&&tg(a,c,b);else if(19===a.tag)tg(a,c,b);else if(null!==a.child){a.child.return=a;a=a.child;continue}if(a===b)break a;for(;null===a.sibling;){if(null===a.return||a.return===b)break a;a=a.return}a.sibling.return=a.return;a=a.sibling}d&=1}y(J,d);if(0===(b.mode&1))b.memoizedState=\nnull;else switch(e){case \"forwards\":c=b.child;for(e=null;null!==c;)a=c.alternate,null!==a&&null===ze(a)&&(e=c),c=c.sibling;c=e;null===c?(e=b.child,b.child=null):(e=c.sibling,c.sibling=null);ug(b,!1,e,c,f);break;case \"backwards\":c=null;e=b.child;for(b.child=null;null!==e;){a=e.alternate;if(null!==a&&null===ze(a)){b.child=e;break}a=e.sibling;e.sibling=c;c=e;e=a}ug(b,!0,c,null,f);break;case \"together\":ug(b,!1,null,null,void 0);break;default:b.memoizedState=null}return b.child}\nfunction Zf(a,b,c){null!==a&&(b.dependencies=a.dependencies);vd|=b.lanes;if(0===(c&b.childLanes))return null;if(null!==a&&b.child!==a.child)throw Error(n(153));if(null!==b.child){a=b.child;c=je(a,a.pendingProps);b.child=c;for(c.return=b;null!==a.sibling;)a=a.sibling,c=c.sibling=je(a,a.pendingProps),c.return=b;c.sibling=null}return b.child}\nfunction wg(a,b,c){switch(b.tag){case 3:ig(b);de();break;case 5:xe(b);break;case 1:C(b.type)&&nc(b);break;case 4:ve(b,b.stateNode.containerInfo);break;case 10:gd(b,b.type._context,b.memoizedProps.value);break;case 13:var d=b.memoizedState;if(null!==d){if(null!==d.dehydrated)return y(J,J.current&1),b.flags|=128,null;if(0!==(c&b.child.childLanes))return mg(a,b,c);y(J,J.current&1);a=Zf(a,b,c);return null!==a?a.sibling:null}y(J,J.current&1);break;case 19:d=0!==(c&b.childLanes);if(0!==(a.flags&128)){if(d)return vg(a,\nb,c);b.flags|=128}var e=b.memoizedState;null!==e&&(e.rendering=null,e.tail=null,e.lastEffect=null);y(J,J.current);if(d)break;else return null;case 22:case 23:return b.lanes=0,dg(a,b,c)}return Zf(a,b,c)}\nfunction xg(a,b){Sd(b);switch(b.tag){case 1:return C(b.type)&&kc(),a=b.flags,a&65536?(b.flags=a&-65537|128,b):null;case 3:return we(),x(B),x(A),Be(),a=b.flags,0!==(a&65536)&&0===(a&128)?(b.flags=a&-65537|128,b):null;case 5:return ye(b),null;case 13:x(J);a=b.memoizedState;if(null!==a&&null!==a.dehydrated){if(null===b.alternate)throw Error(n(340));de()}a=b.flags;return a&65536?(b.flags=a&-65537|128,b):null;case 19:return x(J),null;case 4:return we(),null;case 10:return hd(b.type._context),null;case 22:case 23:return Vf(),\nnull;case 24:return null;default:return null}}var yg=!1,zg=!1,Ag=\"function\"===typeof WeakSet?WeakSet:Set,S=null;function Bg(a,b){var c=a.ref;if(null!==c)if(\"function\"===typeof c)try{c(null)}catch(d){T(a,b,d)}else c.current=null}function Cg(a,b,c){try{c()}catch(d){T(a,b,d)}}var Dg=!1;\nfunction Eg(a,b){Ia(a.containerInfo);for(S=b;null!==S;)if(a=S,b=a.child,0!==(a.subtreeFlags&1028)&&null!==b)b.return=a,S=b;else for(;null!==S;){a=S;try{var c=a.alternate;if(0!==(a.flags&1024))switch(a.tag){case 0:case 11:case 15:break;case 1:if(null!==c){var d=c.memoizedProps,e=c.memoizedState,f=a.stateNode,g=f.getSnapshotBeforeUpdate(a.elementType===a.type?d:ad(a.type,d),e);f.__reactInternalSnapshotBeforeUpdate=g}break;case 3:Ua&&xb(a.stateNode.containerInfo);break;case 5:case 6:case 4:case 17:break;\ndefault:throw Error(n(163));}}catch(h){T(a,a.return,h)}b=a.sibling;if(null!==b){b.return=a.return;S=b;break}S=a.return}c=Dg;Dg=!1;return c}function Fg(a,b,c){var d=b.updateQueue;d=null!==d?d.lastEffect:null;if(null!==d){var e=d=d.next;do{if((e.tag&a)===a){var f=e.destroy;e.destroy=void 0;void 0!==f&&Cg(b,c,f)}e=e.next}while(e!==d)}}function Gg(a,b){b=b.updateQueue;b=null!==b?b.lastEffect:null;if(null!==b){var c=b=b.next;do{if((c.tag&a)===a){var d=c.create;c.destroy=d()}c=c.next}while(c!==b)}}\nfunction Hg(a){var b=a.ref;if(null!==b){var c=a.stateNode;switch(a.tag){case 5:a=Fa(c);break;default:a=c}\"function\"===typeof b?b(a):b.current=a}}\nfunction Ig(a,b,c){if(Oc&&\"function\"===typeof Oc.onCommitFiberUnmount)try{Oc.onCommitFiberUnmount(Nc,b)}catch(g){}switch(b.tag){case 0:case 11:case 14:case 15:a=b.updateQueue;if(null!==a&&(a=a.lastEffect,null!==a)){var d=a=a.next;do{var e=d,f=e.destroy;e=e.tag;void 0!==f&&(0!==(e&2)?Cg(b,c,f):0!==(e&4)&&Cg(b,c,f));d=d.next}while(d!==a)}break;case 1:Bg(b,c);a=b.stateNode;if(\"function\"===typeof a.componentWillUnmount)try{a.props=b.memoizedProps,a.state=b.memoizedState,a.componentWillUnmount()}catch(g){T(b,\nc,g)}break;case 5:Bg(b,c);break;case 4:Ua?Jg(a,b,c):Va&&Va&&(b=b.stateNode.containerInfo,c=zb(b),Cb(b,c))}}function Kg(a,b,c){for(var d=b;;)if(Ig(a,d,c),null===d.child||Ua&&4===d.tag){if(d===b)break;for(;null===d.sibling;){if(null===d.return||d.return===b)return;d=d.return}d.sibling.return=d.return;d=d.sibling}else d.child.return=d,d=d.child}\nfunction Lg(a){var b=a.alternate;null!==b&&(a.alternate=null,Lg(b));a.child=null;a.deletions=null;a.sibling=null;5===a.tag&&(b=a.stateNode,null!==b&&Za(b));a.stateNode=null;a.return=null;a.dependencies=null;a.memoizedProps=null;a.memoizedState=null;a.pendingProps=null;a.stateNode=null;a.updateQueue=null}function Mg(a){return 5===a.tag||3===a.tag||4===a.tag}\nfunction Ng(a){a:for(;;){for(;null===a.sibling;){if(null===a.return||Mg(a.return))return null;a=a.return}a.sibling.return=a.return;for(a=a.sibling;5!==a.tag&&6!==a.tag&&18!==a.tag;){if(a.flags&2)continue a;if(null===a.child||4===a.tag)continue a;else a.child.return=a,a=a.child}if(!(a.flags&2))return a.stateNode}}\nfunction Og(a){if(Ua){a:{for(var b=a.return;null!==b;){if(Mg(b))break a;b=b.return}throw Error(n(160));}var c=b;switch(c.tag){case 5:b=c.stateNode;c.flags&32&&(sb(b),c.flags&=-33);c=Ng(a);Pg(a,c,b);break;case 3:case 4:b=c.stateNode.containerInfo;c=Ng(a);Qg(a,c,b);break;default:throw Error(n(161));}}}function Qg(a,b,c){var d=a.tag;if(5===d||6===d)a=a.stateNode,b?pb(c,a,b):kb(c,a);else if(4!==d&&(a=a.child,null!==a))for(Qg(a,b,c),a=a.sibling;null!==a;)Qg(a,b,c),a=a.sibling}\nfunction Pg(a,b,c){var d=a.tag;if(5===d||6===d)a=a.stateNode,b?ob(c,a,b):jb(c,a);else if(4!==d&&(a=a.child,null!==a))for(Pg(a,b,c),a=a.sibling;null!==a;)Pg(a,b,c),a=a.sibling}\nfunction Jg(a,b,c){for(var d=b,e=!1,f,g;;){if(!e){e=d.return;a:for(;;){if(null===e)throw Error(n(160));f=e.stateNode;switch(e.tag){case 5:g=!1;break a;case 3:f=f.containerInfo;g=!0;break a;case 4:f=f.containerInfo;g=!0;break a}e=e.return}e=!0}if(5===d.tag||6===d.tag)Kg(a,d,c),g?rb(f,d.stateNode):qb(f,d.stateNode);else if(18===d.tag)g?Wb(f,d.stateNode):Vb(f,d.stateNode);else if(4===d.tag){if(null!==d.child){f=d.stateNode.containerInfo;g=!0;d.child.return=d;d=d.child;continue}}else if(Ig(a,d,c),null!==\nd.child){d.child.return=d;d=d.child;continue}if(d===b)break;for(;null===d.sibling;){if(null===d.return||d.return===b)return;d=d.return;4===d.tag&&(e=!1)}d.sibling.return=d.return;d=d.sibling}}\nfunction Rg(a,b){if(Ua){switch(b.tag){case 0:case 11:case 14:case 15:Fg(3,b,b.return);Gg(3,b);Fg(5,b,b.return);return;case 1:return;case 5:var c=b.stateNode;if(null!=c){var d=b.memoizedProps;a=null!==a?a.memoizedProps:d;var e=b.type,f=b.updateQueue;b.updateQueue=null;null!==f&&nb(c,f,e,a,d,b)}return;case 6:if(null===b.stateNode)throw Error(n(162));c=b.memoizedProps;lb(b.stateNode,null!==a?a.memoizedProps:c,c);return;case 3:p&&null!==a&&a.memoizedState.isDehydrated&&Tb(b.stateNode.containerInfo);return;\ncase 12:return;case 13:Sg(b);return;case 19:Sg(b);return;case 17:return}throw Error(n(163));}switch(b.tag){case 0:case 11:case 14:case 15:Fg(3,b,b.return);Gg(3,b);Fg(5,b,b.return);return;case 12:return;case 13:Sg(b);return;case 19:Sg(b);return;case 3:p&&null!==a&&a.memoizedState.isDehydrated&&Tb(b.stateNode.containerInfo);break;case 22:case 23:return}a:if(Va){switch(b.tag){case 1:case 5:case 6:break a;case 3:case 4:b=b.stateNode;Cb(b.containerInfo,b.pendingChildren);break a}throw Error(n(163));}}\nfunction Sg(a){var b=a.updateQueue;if(null!==b){a.updateQueue=null;var c=a.stateNode;null===c&&(c=a.stateNode=new Ag);b.forEach(function(b){var d=Tg.bind(null,a,b);c.has(b)||(c.add(b),b.then(d,d))})}}\nfunction Ug(a,b){for(S=b;null!==S;){b=S;var c=b.deletions;if(null!==c)for(var d=0;d\";case bh:return\":has(\"+(ih(a)||\"\")+\")\";case ch:return'[role=\"'+a.value+'\"]';case eh:return'\"'+a.value+'\"';case dh:return'[data-testname=\"'+a.value+'\"]';default:throw Error(n(365));}}\nfunction jh(a,b){var c=[];a=[a,0];for(var d=0;de&&(e=g);d&=~f}d=e;d=E()-d;d=(120>d?120:480>d?480:1080>d?1080:1920>d?1920:3E3>d?3E3:4320>d?4320:1960*lh(d/1960))-d;if(10a?16:a;if(null===uh)var d=!1;else{a=uh;uh=null;vh=0;if(0!==(G&6))throw Error(n(331));var e=G;G|=4;for(S=a.current;null!==S;){var f=S,g=f.child;if(0!==(S.flags&16)){var h=f.deletions;if(null!==h){for(var k=0;kE()-Vg?Ih(a,0):qh|=c);Z(a,b)}function Vh(a,b){0===b&&(0===(a.mode&1)?b=1:(b=uc,uc<<=1,0===(uc&130023424)&&(uc=4194304)));var c=H();a=Ah(a,b);null!==a&&(Bc(a,b,c),Z(a,c))}function qg(a){var b=a.memoizedState,c=0;null!==b&&(c=b.retryLane);Vh(a,c)}\nfunction Tg(a,b){var c=0;switch(a.tag){case 13:var d=a.stateNode;var e=a.memoizedState;null!==e&&(c=e.retryLane);break;case 19:d=a.stateNode;break;default:throw Error(n(314));}null!==d&&d.delete(b);Vh(a,c)}var Sh;\nSh=function(a,b,c){if(null!==a)if(a.memoizedProps!==b.pendingProps||B.current)kd=!0;else{if(0===(a.lanes&c)&&0===(b.flags&128))return kd=!1,wg(a,b,c);kd=0!==(a.flags&131072)?!0:!1}else kd=!1,I&&0!==(b.flags&1048576)&&Qd(b,Jd,b.index);b.lanes=0;switch(b.tag){case 2:var d=b.type;null!==a&&(a.alternate=null,b.alternate=null,b.flags|=2);a=b.pendingProps;var e=jc(b,A.current);jd(b,c);e=Ke(null,b,d,a,e,c);var f=Pe();b.flags|=1;\"object\"===typeof e&&null!==e&&\"function\"===typeof e.render&&void 0===e.$$typeof?\n(b.tag=1,b.memoizedState=null,b.updateQueue=null,C(d)?(f=!0,nc(b)):f=!1,b.memoizedState=null!==e.state&&void 0!==e.state?e.state:null,od(b),e.updater=Bd,b.stateNode=e,e._reactInternals=b,Fd(b,d,a,c),b=hg(null,b,d,!0,f,c)):(b.tag=0,I&&f&&Rd(b),R(null,b,e,c),b=b.child);return b;case 16:d=b.elementType;a:{null!==a&&(a.alternate=null,b.alternate=null,b.flags|=2);a=b.pendingProps;e=d._init;d=e(d._payload);b.type=d;e=b.tag=Wh(d);a=ad(d,a);switch(e){case 0:b=cg(null,b,d,a,c);break a;case 1:b=gg(null,b,d,\na,c);break a;case 11:b=Yf(null,b,d,a,c);break a;case 14:b=$f(null,b,d,ad(d.type,a),c);break a}throw Error(n(306,d,\"\"));}return b;case 0:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:ad(d,e),cg(a,b,d,e,c);case 1:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:ad(d,e),gg(a,b,d,e,c);case 3:a:{ig(b);if(null===a)throw Error(n(387));d=b.pendingProps;f=b.memoizedState;e=f.element;pd(a,b);ud(b,d,null,c);var g=b.memoizedState;d=g.element;if(p&&f.isDehydrated)if(f={element:d,isDehydrated:!1,\ncache:g.cache,transitions:g.transitions},b.updateQueue.baseState=f,b.memoizedState=f,b.flags&256){e=Error(n(423));b=jg(a,b,d,c,e);break a}else if(d!==e){e=Error(n(424));b=jg(a,b,d,c,e);break a}else for(p&&(Ud=Nb(b.stateNode.containerInfo),Td=b,I=!0,Wd=null,Vd=!1),c=pe(b,null,d,c),b.child=c;c;)c.flags=c.flags&-3|4096,c=c.sibling;else{de();if(d===e){b=Zf(a,b,c);break a}R(a,b,d,c)}b=b.child}return b;case 5:return xe(b),null===a&&ae(b),d=b.type,e=b.pendingProps,f=null!==a?a.memoizedProps:null,g=e.children,\nOa(d,e)?g=null:null!==f&&Oa(d,f)&&(b.flags|=32),fg(a,b),R(a,b,g,c),b.child;case 6:return null===a&&ae(b),null;case 13:return mg(a,b,c);case 4:return ve(b,b.stateNode.containerInfo),d=b.pendingProps,null===a?b.child=oe(b,null,d,c):R(a,b,d,c),b.child;case 11:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:ad(d,e),Yf(a,b,d,e,c);case 7:return R(a,b,b.pendingProps,c),b.child;case 8:return R(a,b,b.pendingProps.children,c),b.child;case 12:return R(a,b,b.pendingProps.children,c),b.child;case 10:a:{d=\nb.type._context;e=b.pendingProps;f=b.memoizedProps;g=e.value;gd(b,d,g);if(null!==f)if(Rc(f.value,g)){if(f.children===e.children&&!B.current){b=Zf(a,b,c);break a}}else for(f=b.child,null!==f&&(f.return=b);null!==f;){var h=f.dependencies;if(null!==h){g=f.child;for(var k=h.firstContext;null!==k;){if(k.context===d){if(1===f.tag){k=qd(-1,c&-c);k.tag=2;var l=f.updateQueue;if(null!==l){l=l.shared;var m=l.pending;null===m?k.next=k:(k.next=m.next,m.next=k);l.pending=k}}f.lanes|=c;k=f.alternate;null!==k&&(k.lanes|=\nc);id(f.return,c,b);h.lanes|=c;break}k=k.next}}else if(10===f.tag)g=f.type===b.type?null:f.child;else if(18===f.tag){g=f.return;if(null===g)throw Error(n(341));g.lanes|=c;h=g.alternate;null!==h&&(h.lanes|=c);id(g,c,b);g=f.sibling}else g=f.child;if(null!==g)g.return=f;else for(g=f;null!==g;){if(g===b){g=null;break}f=g.sibling;if(null!==f){f.return=g.return;g=f;break}g=g.return}f=g}R(a,b,e.children,c);b=b.child}return b;case 9:return e=b.type,d=b.pendingProps.children,jd(b,c),e=ld(e),d=d(e),b.flags|=\n1,R(a,b,d,c),b.child;case 14:return d=b.type,e=ad(d,b.pendingProps),e=ad(d.type,e),$f(a,b,d,e,c);case 15:return bg(a,b,b.type,b.pendingProps,c);case 17:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:ad(d,e),null!==a&&(a.alternate=null,b.alternate=null,b.flags|=2),b.tag=1,C(d)?(a=!0,nc(b)):a=!1,jd(b,c),Dd(b,d,e),Fd(b,d,e,c),hg(null,b,d,!0,a,c);case 19:return vg(a,b,c);case 22:return dg(a,b,c)}throw Error(n(156,b.tag));};function Dh(a,b){return Fc(a,b)}\nfunction Xh(a,b,c,d){this.tag=a;this.key=c;this.sibling=this.child=this.return=this.stateNode=this.type=this.elementType=null;this.index=0;this.ref=null;this.pendingProps=b;this.dependencies=this.memoizedState=this.updateQueue=this.memoizedProps=null;this.mode=d;this.subtreeFlags=this.flags=0;this.deletions=null;this.childLanes=this.lanes=0;this.alternate=null}function Yd(a,b,c,d){return new Xh(a,b,c,d)}function ag(a){a=a.prototype;return!(!a||!a.isReactComponent)}\nfunction Wh(a){if(\"function\"===typeof a)return ag(a)?1:0;if(void 0!==a&&null!==a){a=a.$$typeof;if(a===na)return 11;if(a===qa)return 14}return 2}\nfunction je(a,b){var c=a.alternate;null===c?(c=Yd(a.tag,b,a.key,a.mode),c.elementType=a.elementType,c.type=a.type,c.stateNode=a.stateNode,c.alternate=a,a.alternate=c):(c.pendingProps=b,c.type=a.type,c.flags=0,c.subtreeFlags=0,c.deletions=null);c.flags=a.flags&14680064;c.childLanes=a.childLanes;c.lanes=a.lanes;c.child=a.child;c.memoizedProps=a.memoizedProps;c.memoizedState=a.memoizedState;c.updateQueue=a.updateQueue;b=a.dependencies;c.dependencies=null===b?null:{lanes:b.lanes,firstContext:b.firstContext};\nc.sibling=a.sibling;c.index=a.index;c.ref=a.ref;return c}\nfunction le(a,b,c,d,e,f){var g=2;d=a;if(\"function\"===typeof a)ag(a)&&(g=1);else if(\"string\"===typeof a)g=5;else a:switch(a){case ia:return ne(c.children,e,f,b);case ja:g=8;e|=8;break;case ka:return a=Yd(12,c,b,e|2),a.elementType=ka,a.lanes=f,a;case oa:return a=Yd(13,c,b,e),a.elementType=oa,a.lanes=f,a;case pa:return a=Yd(19,c,b,e),a.elementType=pa,a.lanes=f,a;case sa:return ng(c,e,f,b);default:if(\"object\"===typeof a&&null!==a)switch(a.$$typeof){case la:g=10;break a;case ma:g=9;break a;case na:g=11;\nbreak a;case qa:g=14;break a;case ra:g=16;d=null;break a}throw Error(n(130,null==a?a:typeof a,\"\"));}b=Yd(g,c,b,e);b.elementType=a;b.type=d;b.lanes=f;return b}function ne(a,b,c,d){a=Yd(7,a,d,b);a.lanes=c;return a}function ng(a,b,c,d){a=Yd(22,a,d,b);a.elementType=sa;a.lanes=c;a.stateNode={};return a}function ke(a,b,c){a=Yd(6,a,null,b);a.lanes=c;return a}\nfunction me(a,b,c){b=Yd(4,null!==a.children?a.children:[],a.key,b);b.lanes=c;b.stateNode={containerInfo:a.containerInfo,pendingChildren:null,implementation:a.implementation};return b}\nfunction Yh(a,b,c,d,e){this.tag=b;this.containerInfo=a;this.finishedWork=this.pingCache=this.current=this.pendingChildren=null;this.timeoutHandle=Sa;this.callbackNode=this.pendingContext=this.context=null;this.callbackPriority=0;this.eventTimes=Ac(0);this.expirationTimes=Ac(-1);this.entangledLanes=this.finishedLanes=this.mutableReadLanes=this.expiredLanes=this.pingedLanes=this.suspendedLanes=this.pendingLanes=0;this.entanglements=Ac(0);this.identifierPrefix=d;this.onRecoverableError=e;p&&(this.mutableSourceEagerHydrationData=\nnull)}function Zh(a,b,c,d,e,f,g,h,k){a=new Yh(a,b,c,h,k);1===b?(b=1,!0===f&&(b|=8)):b=0;f=Yd(3,null,null,b);a.current=f;f.stateNode=a;f.memoizedState={element:d,isDehydrated:c,cache:null,transitions:null};od(f);return a}\nfunction $h(a){if(!a)return hc;a=a._reactInternals;a:{if(ya(a)!==a||1!==a.tag)throw Error(n(170));var b=a;do{switch(b.tag){case 3:b=b.stateNode.context;break a;case 1:if(C(b.type)){b=b.stateNode.__reactInternalMemoizedMergedChildContext;break a}}b=b.return}while(null!==b);throw Error(n(171));}if(1===a.tag){var c=a.type;if(C(c))return mc(a,c,b)}return b}\nfunction ai(a){var b=a._reactInternals;if(void 0===b){if(\"function\"===typeof a.render)throw Error(n(188));a=Object.keys(a).join(\",\");throw Error(n(268,a));}a=Ba(b);return null===a?null:a.stateNode}function bi(a,b){a=a.memoizedState;if(null!==a&&null!==a.dehydrated){var c=a.retryLane;a.retryLane=0!==c&&c=l&&f>=v&&e<=m&&g<=r){a.splice(b,1);break}else if(!(d!==l||c.width!==k.width||rg)){v>f&&(k.height+=v-f,k.y=f);re)){l>d&&(k.width+=\nl-d,k.x=d);mc&&(c=g)),g \")+\"\\n\\nNo matching component was found for:\\n \")+a.join(\" > \")}return null};\nexports.getPublicRootInstance=function(a){a=a.current;if(!a.child)return null;switch(a.child.tag){case 5:return Fa(a.child.stateNode);default:return a.child.stateNode}};\nexports.injectIntoDevTools=function(a){a={bundleType:a.bundleType,version:a.version,rendererPackageName:a.rendererPackageName,rendererConfig:a.rendererConfig,overrideHookState:null,overrideHookStateDeletePath:null,overrideHookStateRenamePath:null,overrideProps:null,overridePropsDeletePath:null,overridePropsRenamePath:null,setErrorHandler:null,setSuspenseHandler:null,scheduleUpdate:null,currentDispatcherRef:ea.ReactCurrentDispatcher,findHostInstanceByFiber:di,findFiberByHostInstance:a.findFiberByHostInstance||\nei,findHostInstancesForRefresh:null,scheduleRefresh:null,scheduleRoot:null,setRefreshHandler:null,getCurrentFiber:null,reconcilerVersion:\"18.0.0-fc46dba67-20220329\"};if(\"undefined\"===typeof __REACT_DEVTOOLS_GLOBAL_HOOK__)a=!1;else{var b=__REACT_DEVTOOLS_GLOBAL_HOOK__;if(b.isDisabled||!b.supportsFiber)a=!0;else{try{Nc=b.inject(a),Oc=b}catch(c){}a=b.checkDCE?!0:!1}}return a};exports.isAlreadyRendering=function(){return!1};\nexports.observeVisibleRects=function(a,b,c,d){if(!bb)throw Error(n(363));a=kh(a,b);var e=ib(a,c,d).disconnect;return{disconnect:function(){e()}}};exports.registerMutableSourceForHydration=function(a,b){var c=b._getVersion;c=c(b._source);null==a.mutableSourceEagerHydrationData?a.mutableSourceEagerHydrationData=[b,c]:a.mutableSourceEagerHydrationData.push(b,c)};exports.runWithPriority=function(a,b){var c=D;try{return D=a,b()}finally{D=c}};exports.shouldError=function(){return null};\nexports.shouldSuspend=function(){return!1};exports.updateContainer=function(a,b,c,d){var e=b.current,f=H(),g=zd(e);c=$h(c);null===b.context?b.context=c:b.pendingContext=c;b=qd(f,g);b.payload={element:a};d=void 0===d?null:d;null!==d&&(b.callback=d);rd(e,b);a=Ad(e,g,f);null!==a&&sd(a,e,g);return g};\n\n return exports;\n};\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react-reconciler-constants.production.min.js');\n} else {\n module.exports = require('./cjs/react-reconciler-constants.development.js');\n}\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react-reconciler.production.min.js');\n} else {\n module.exports = require('./cjs/react-reconciler.development.js');\n}\n","/*! For license information please see index.js.LICENSE.txt */\n!function(e,t){\"object\"==typeof exports&&\"object\"==typeof module?module.exports=t(require(\"react\"),require(\"react-dom\")):\"function\"==typeof define&&define.amd?define(\"lib\",[\"react\",\"react-dom\"],t):\"object\"==typeof exports?exports.lib=t(require(\"react\"),require(\"react-dom\")):e.lib=t(e.react,e[\"react-dom\"])}(\"undefined\"!=typeof self?self:this,(function(e,t){return function(){\"use strict\";var n={655:function(e,t,n){n.r(t),n.d(t,{__extends:function(){return o},__assign:function(){return i},__rest:function(){return a},__decorate:function(){return l},__param:function(){return c},__metadata:function(){return u},__awaiter:function(){return s},__generator:function(){return f},__createBinding:function(){return d},__exportStar:function(){return p},__values:function(){return h},__read:function(){return y},__spread:function(){return b},__spreadArrays:function(){return v},__spreadArray:function(){return g},__await:function(){return m},__asyncGenerator:function(){return w},__asyncDelegator:function(){return _},__asyncValues:function(){return P},__makeTemplateObject:function(){return O},__importStar:function(){return x},__importDefault:function(){return A},__classPrivateFieldGet:function(){return T},__classPrivateFieldSet:function(){return j}});var r=function(e,t){return r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n])},r(e,t)};function o(e,t){if(\"function\"!=typeof t&&null!==t)throw new TypeError(\"Class extends value \"+String(t)+\" is not a constructor or null\");function n(){this.constructor=e}r(e,t),e.prototype=null===t?Object.create(t):(n.prototype=t.prototype,new n)}var i=function(){return i=Object.assign||function(e){for(var t,n=1,r=arguments.length;n=0;l--)(o=e[l])&&(a=(i<3?o(a):i>3?o(t,n,a):o(t,n))||a);return i>3&&a&&Object.defineProperty(t,n,a),a}function c(e,t){return function(n,r){t(n,r,e)}}function u(e,t){if(\"object\"==typeof Reflect&&\"function\"==typeof Reflect.metadata)return Reflect.metadata(e,t)}function s(e,t,n,r){return new(n||(n=Promise))((function(o,i){function a(e){try{c(r.next(e))}catch(e){i(e)}}function l(e){try{c(r.throw(e))}catch(e){i(e)}}function c(e){var t;e.done?o(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,l)}c((r=r.apply(e,t||[])).next())}))}function f(e,t){var n,r,o,i,a={label:0,sent:function(){if(1&o[0])throw o[1];return o[1]},trys:[],ops:[]};return i={next:l(0),throw:l(1),return:l(2)},\"function\"==typeof Symbol&&(i[Symbol.iterator]=function(){return this}),i;function l(i){return function(l){return function(i){if(n)throw new TypeError(\"Generator is already executing.\");for(;a;)try{if(n=1,r&&(o=2&i[0]?r.return:i[0]?r.throw||((o=r.return)&&o.call(r),0):r.next)&&!(o=o.call(r,i[1])).done)return o;switch(r=0,o&&(i=[2&i[0],o.value]),i[0]){case 0:case 1:o=i;break;case 4:return a.label++,{value:i[1],done:!1};case 5:a.label++,r=i[1],i=[0];continue;case 7:i=a.ops.pop(),a.trys.pop();continue;default:if(!((o=(o=a.trys).length>0&&o[o.length-1])||6!==i[0]&&2!==i[0])){a=0;continue}if(3===i[0]&&(!o||i[1]>o[0]&&i[1]=e.length&&(e=void 0),{value:e&&e[r++],done:!e}}};throw new TypeError(t?\"Object is not iterable.\":\"Symbol.iterator is not defined.\")}function y(e,t){var n=\"function\"==typeof Symbol&&e[Symbol.iterator];if(!n)return e;var r,o,i=n.call(e),a=[];try{for(;(void 0===t||t-- >0)&&!(r=i.next()).done;)a.push(r.value)}catch(e){o={error:e}}finally{try{r&&!r.done&&(n=i.return)&&n.call(i)}finally{if(o)throw o.error}}return a}function b(){for(var e=[],t=0;t1||l(e,t)}))})}function l(e,t){try{(n=o[e](t)).value instanceof m?Promise.resolve(n.value.v).then(c,u):s(i[0][2],n)}catch(e){s(i[0][3],e)}var n}function c(e){l(\"next\",e)}function u(e){l(\"throw\",e)}function s(e,t){e(t),i.shift(),i.length&&l(i[0][0],i[0][1])}}function _(e){var t,n;return t={},r(\"next\"),r(\"throw\",(function(e){throw e})),r(\"return\"),t[Symbol.iterator]=function(){return this},t;function r(r,o){t[r]=e[r]?function(t){return(n=!n)?{value:m(e[r](t)),done:\"return\"===r}:o?o(t):t}:o}}function P(e){if(!Symbol.asyncIterator)throw new TypeError(\"Symbol.asyncIterator is not defined.\");var t,n=e[Symbol.asyncIterator];return n?n.call(e):(e=h(e),t={},r(\"next\"),r(\"throw\"),r(\"return\"),t[Symbol.asyncIterator]=function(){return this},t);function r(n){t[n]=e[n]&&function(t){return new Promise((function(r,o){!function(e,t,n,r){Promise.resolve(r).then((function(t){e({value:t,done:n})}),t)}(r,o,(t=e[n](t)).done,t.value)}))}}}function O(e,t){return Object.defineProperty?Object.defineProperty(e,\"raw\",{value:t}):e.raw=t,e}var S=Object.create?function(e,t){Object.defineProperty(e,\"default\",{enumerable:!0,value:t})}:function(e,t){e.default=t};function x(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)\"default\"!==n&&Object.prototype.hasOwnProperty.call(e,n)&&d(t,e,n);return S(t,e),t}function A(e){return e&&e.__esModule?e:{default:e}}function T(e,t,n,r){if(\"a\"===n&&!r)throw new TypeError(\"Private accessor was defined without a getter\");if(\"function\"==typeof t?e!==t||!r:!t.has(e))throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");return\"m\"===n?r:\"a\"===n?r.call(e):r?r.value:t.get(e)}function j(e,t,n,r,o){if(\"m\"===r)throw new TypeError(\"Private method is not writable\");if(\"a\"===r&&!o)throw new TypeError(\"Private accessor was defined without a setter\");if(\"function\"==typeof t?e!==t||!o:!t.has(e))throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");return\"a\"===r?o.call(e,n):o?o.value=n:t.set(e,n),n}},156:function(t){t.exports=e},111:function(e){e.exports=t}},r={};function o(e){var t=r[e];if(void 0!==t)return t.exports;var i=r[e]={exports:{}};return n[e](i,i.exports,o),i.exports}o.d=function(e,t){for(var n in t)o.o(t,n)&&!o.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},o.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},o.r=function(e){\"undefined\"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:\"Module\"}),Object.defineProperty(e,\"__esModule\",{value:!0})};var i={};return function(){var e=i;Object.defineProperty(e,\"__esModule\",{value:!0}),e.useReactToPrint=e.PrintContextConsumer=void 0;var t=o(655),n=o(156),r=o(111),a=Object.prototype.hasOwnProperty.call(n,\"createContext\"),l=Object.prototype.hasOwnProperty.call(n,\"useMemo\")&&Object.prototype.hasOwnProperty.call(n,\"useCallback\"),c=a?n.createContext({}):null;e.PrintContextConsumer=c?c.Consumer:function(){return null};var u={copyStyles:!0,pageStyle:\"@page { size: auto; margin: 0mm; } @media print { body { -webkit-print-color-adjust: exact; } }\",removeAfterPrint:!1,suppressErrors:!1},s=function(e){function o(){var n=null!==e&&e.apply(this,arguments)||this;return n.startPrint=function(e){var t=n.props,r=t.onAfterPrint,o=t.onPrintError,i=t.print,a=t.documentTitle;setTimeout((function(){var t,l;if(e.contentWindow){if(e.contentWindow.focus(),i)i(e).then(n.handleRemoveIframe).catch((function(e){o?o(\"print\",e):n.logMessages([\"An error was thrown by the specified `print` function\"])}));else if(e.contentWindow.print){var c=null!==(l=null===(t=e.contentDocument)||void 0===t?void 0:t.title)&&void 0!==l?l:\"\",u=e.ownerDocument.title;a&&(e.ownerDocument.title=a,e.contentDocument&&(e.contentDocument.title=a)),e.contentWindow.print(),a&&(e.ownerDocument.title=u,e.contentDocument&&(e.contentDocument.title=c))}else n.logMessages([\"Printing for this browser is not currently possible: the browser does not have a `print` method available for iframes.\"]);r&&r(),n.handleRemoveIframe()}else n.logMessages([\"Printing failed because the `contentWindow` of the print iframe did not load. This is possibly an error with `react-to-print`. Please file an issue: https://github.com/gregnb/react-to-print/issues/\"])}),500)},n.triggerPrint=function(e){var t=n.props,r=t.onBeforePrint,o=t.onPrintError;if(r){var i=r();i&&\"function\"==typeof i.then?i.then((function(){n.startPrint(e)})).catch((function(e){o&&o(\"onBeforePrint\",e)})):n.startPrint(e)}else n.startPrint(e)},n.handleClick=function(){var e=n.props,t=e.onBeforeGetContent,r=e.onPrintError;if(t){var o=t();o&&\"function\"==typeof o.then?o.then(n.handlePrint).catch((function(e){r&&r(\"onBeforeGetContent\",e)})):n.handlePrint()}else n.handlePrint()},n.handlePrint=function(){var e=n.props,o=e.bodyClass,i=e.content,a=e.copyStyles,l=e.fonts,c=e.pageStyle,u=e.nonce,s=i();if(void 0!==s)if(null!==s){var f=document.createElement(\"iframe\");f.style.position=\"absolute\",f.style.top=\"-1000px\",f.style.left=\"-1000px\",f.id=\"printWindow\",f.srcdoc=\"\";var d=(0,r.findDOMNode)(s);if(d){var p=d.cloneNode(!0),h=p instanceof Text,y=document.querySelectorAll(\"link[rel='stylesheet']\"),b=h?[]:p.querySelectorAll(\"img\"),v=h?[]:p.querySelectorAll(\"video\");n.linkTotal=y.length+b.length+v.length,n.linksLoaded=[],n.linksErrored=[],n.fontsLoaded=[],n.fontsErrored=[];var g=function(e,t){t?n.linksLoaded.push(e):(n.logMessages(['\"react-to-print\" was unable to load a linked node. It may be invalid. \"react-to-print\" will continue attempting to print the page. The linked node that errored was:',e]),n.linksErrored.push(e)),n.linksLoaded.length+n.linksErrored.length+n.fontsLoaded.length+n.fontsErrored.length===n.linkTotal&&n.triggerPrint(f)};f.onload=function(){var e,r,i,s;f.onload=null;var y=f.contentDocument||(null===(r=f.contentWindow)||void 0===r?void 0:r.document);if(y){y.body.appendChild(p),l&&((null===(i=f.contentDocument)||void 0===i?void 0:i.fonts)&&(null===(s=f.contentWindow)||void 0===s?void 0:s.FontFace)?l.forEach((function(e){var t=new FontFace(e.family,e.source);f.contentDocument.fonts.add(t),t.loaded.then((function(e){n.fontsLoaded.push(e)})).catch((function(e){n.fontsErrored.push(t),n.logMessages(['\"react-to-print\" was unable to load a font. \"react-to-print\" will continue attempting to print the page. The font that failed to load is:',t,\"The error from loading the font is:\",e])}))})):n.logMessages(['\"react-to-print\" is not able to load custom fonts because the browser does not support the FontFace API']));var m=\"function\"==typeof c?c():c;if(\"string\"!=typeof m)n.logMessages(['\"react-to-print\" expected a \"string\" from `pageStyle` but received \"'.concat(typeof m,'\". Styles from `pageStyle` will not be applied.')]);else{var w=y.createElement(\"style\");u&&(w.setAttribute(\"nonce\",u),y.head.setAttribute(\"nonce\",u)),w.appendChild(y.createTextNode(m)),y.head.appendChild(w)}if(o&&(e=y.body.classList).add.apply(e,(0,t.__spreadArray)([],(0,t.__read)(o.split(\" \")),!1)),!h){for(var _=h?[]:d.querySelectorAll(\"canvas\"),P=y.querySelectorAll(\"canvas\"),O=0;O<_.length;++O){var S=_[O],x=P[O].getContext(\"2d\");x&&x.drawImage(S,0,0)}for(O=0;O tag with an empty \"src\" attribute. It will not attempt to pre-load it. The is:',A],\"warning\"),g(A,!1))}for(O=0;O=2?g(j,!0):(j.onloadeddata=g.bind(null,j,!0),j.onerror=g.bind(null,j,!1),j.onstalled=g.bind(null,j,!1))}var C=\"input\",M=d.querySelectorAll(C),R=y.querySelectorAll(C);for(O=0;O tag with an empty \"href\" attribute. In addition to being invalid HTML, this can cause problems in many browsers, and so the was not loaded. The is:',G],\"warning\"),g(G,!0)}}0!==n.linkTotal&&a||n.triggerPrint(f)},n.handleRemoveIframe(!0),document.body.appendChild(f)}else n.logMessages(['\"react-to-print\" could not locate the DOM node corresponding with the `content` prop'])}else n.logMessages(['There is nothing to print because the \"content\" prop returned \"null\". Please ensure \"content\" is renderable before allowing \"react-to-print\" to be called.']);else n.logMessages([\"To print a functional component ensure it is wrapped with `React.forwardRef`, and ensure the forwarded ref is used. See the README for an example: https://github.com/gregnb/react-to-print#examples\"])},n.handleRemoveIframe=function(e){var t=n.props.removeAfterPrint;if(e||t){var r=document.getElementById(\"printWindow\");r&&document.body.removeChild(r)}},n.logMessages=function(e,t){void 0===t&&(t=\"error\"),n.props.suppressErrors||(\"error\"===t?console.error(e):\"warning\"===t&&console.warn(e))},n}return(0,t.__extends)(o,e),o.prototype.render=function(){var e=this.props,t=e.children,r=e.trigger;if(r)return n.cloneElement(r(),{onClick:this.handleClick});if(!c)return this.logMessages(['\"react-to-print\" requires React ^16.3.0 to be able to use \"PrintContext\"']),null;var o={handlePrint:this.handleClick};return n.createElement(c.Provider,{value:o},t)},o.defaultProps=u,o}(n.Component);e.default=s,e.useReactToPrint=function(e){if(!l)return e.suppressErrors||console.error('\"react-to-print\" requires React ^16.8.0 to be able to use \"useReactToPrint\"'),function(){throw new Error('\"react-to-print\" requires React ^16.8.0 to be able to use \"useReactToPrint\"')};var r=n.useMemo((function(){return new s((0,t.__assign)((0,t.__assign)({},u),e))}),[e]);return n.useCallback((function(){return r.handleClick()}),[r])}}(),i}()}));","(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory(require(\"react\"));\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([\"react\"], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"Webcam\"] = factory(require(\"react\"));\n\telse\n\t\troot[\"Webcam\"] = factory(root[\"React\"]);\n})(this, function(__WEBPACK_EXTERNAL_MODULE_react__) {\nreturn "," \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = \"./src/react-webcam.tsx\");\n","import * as React from \"react\";\n\n// polyfill based on https://developer.mozilla.org/en-US/docs/Web/API/MediaDevices/getUserMedia\n(function polyfillGetUserMedia() {\n if (typeof window === 'undefined') {\n return;\n }\n\n // Older browsers might not implement mediaDevices at all, so we set an empty object first\n if (navigator.mediaDevices === undefined) {\n (navigator as any).mediaDevices = {};\n }\n\n // Some browsers partially implement mediaDevices. We can't just assign an object\n // with getUserMedia as it would overwrite existing properties.\n // Here, we will just add the getUserMedia property if it's missing.\n if (navigator.mediaDevices.getUserMedia === undefined) {\n navigator.mediaDevices.getUserMedia = function(constraints) {\n // First get ahold of the legacy getUserMedia, if present\n const getUserMedia =\n navigator.getUserMedia ||\n navigator.webkitGetUserMedia ||\n navigator.mozGetUserMedia ||\n navigator.msGetUserMedia;\n\n // Some browsers just don't implement it - return a rejected promise with an error\n // to keep a consistent interface\n if (!getUserMedia) {\n return Promise.reject(\n new Error(\"getUserMedia is not implemented in this browser\")\n );\n }\n\n // Otherwise, wrap the call to the old navigator.getUserMedia with a Promise\n return new Promise(function(resolve, reject) {\n getUserMedia.call(navigator, constraints, resolve, reject);\n });\n };\n }\n})();\n\nfunction hasGetUserMedia() {\n return !!(navigator.mediaDevices && navigator.mediaDevices.getUserMedia);\n}\n\ninterface ScreenshotDimensions {\n width: number;\n height: number;\n}\n\ninterface ChildrenProps {\n getScreenshot: (screenshotDimensions?: ScreenshotDimensions) => string | null;\n}\n\nexport type WebcamProps = Omit, \"ref\"> & {\n audio: boolean;\n audioConstraints?: MediaStreamConstraints[\"audio\"];\n forceScreenshotSourceSize: boolean;\n imageSmoothing: boolean;\n mirrored: boolean;\n minScreenshotHeight?: number;\n minScreenshotWidth?: number;\n onUserMedia: (stream: MediaStream) => void;\n onUserMediaError: (error: string | DOMException) => void;\n screenshotFormat: \"image/webp\" | \"image/png\" | \"image/jpeg\";\n screenshotQuality: number;\n videoConstraints?: MediaStreamConstraints[\"video\"];\n children?: (childrenProps: ChildrenProps) => JSX.Element;\n}\n\ninterface WebcamState {\n hasUserMedia: boolean;\n src?: string;\n}\n\nexport default class Webcam extends React.Component {\n static defaultProps = {\n audio: false,\n forceScreenshotSourceSize: false,\n imageSmoothing: true,\n mirrored: false,\n onUserMedia: () => undefined,\n onUserMediaError: () => undefined,\n screenshotFormat: \"image/webp\",\n screenshotQuality: 0.92,\n };\n\n private canvas: HTMLCanvasElement | null = null;\n\n private ctx: CanvasRenderingContext2D | null = null;\n\n private requestUserMediaId = 0;\n\n private unmounted = false;\n\n stream: MediaStream | null;\n\n video: HTMLVideoElement | null;\n\n constructor(props: WebcamProps) {\n super(props);\n this.state = {\n hasUserMedia: false\n };\n }\n\n componentDidMount() {\n const { state, props } = this;\n this.unmounted = false;\n\n if (!hasGetUserMedia()) {\n props.onUserMediaError(\"getUserMedia not supported\");\n\n return;\n }\n\n if (!state.hasUserMedia) {\n this.requestUserMedia();\n }\n\n if (props.children && typeof props.children != 'function') {\n console.warn(\"children must be a function\");\n }\n }\n\n componentDidUpdate(nextProps: WebcamProps) {\n const { props } = this;\n\n if (!hasGetUserMedia()) {\n props.onUserMediaError(\"getUserMedia not supported\");\n\n return;\n }\n\n const audioConstraintsChanged =\n JSON.stringify(nextProps.audioConstraints) !==\n JSON.stringify(props.audioConstraints);\n const videoConstraintsChanged =\n JSON.stringify(nextProps.videoConstraints) !==\n JSON.stringify(props.videoConstraints);\n const minScreenshotWidthChanged =\n nextProps.minScreenshotWidth !== props.minScreenshotWidth;\n const minScreenshotHeightChanged =\n nextProps.minScreenshotHeight !== props.minScreenshotHeight;\n if (\n videoConstraintsChanged ||\n minScreenshotWidthChanged ||\n minScreenshotHeightChanged\n ) {\n this.canvas = null;\n this.ctx = null;\n }\n if (audioConstraintsChanged || videoConstraintsChanged) {\n this.stopAndCleanup();\n this.requestUserMedia();\n }\n }\n\n componentWillUnmount() {\n this.unmounted = true;\n this.stopAndCleanup();\n }\n\n private static stopMediaStream(stream: MediaStream | null) {\n if (stream) {\n if (stream.getVideoTracks && stream.getAudioTracks) {\n stream.getVideoTracks().map(track => {\n stream.removeTrack(track);\n track.stop();\n });\n stream.getAudioTracks().map(track => {\n stream.removeTrack(track);\n track.stop()\n });\n } else {\n ((stream as unknown) as MediaStreamTrack).stop();\n }\n }\n }\n\n private stopAndCleanup() {\n const { state } = this;\n\n if (state.hasUserMedia) {\n Webcam.stopMediaStream(this.stream);\n\n if (state.src) {\n window.URL.revokeObjectURL(state.src);\n }\n }\n }\n\n getScreenshot(screenshotDimensions?: ScreenshotDimensions) {\n const { state, props } = this;\n\n if (!state.hasUserMedia) return null;\n\n const canvas = this.getCanvas(screenshotDimensions);\n return (\n canvas &&\n canvas.toDataURL(props.screenshotFormat, props.screenshotQuality)\n );\n }\n\n getCanvas(screenshotDimensions?: ScreenshotDimensions) {\n const { state, props } = this;\n\n if (!this.video) {\n return null;\n }\n\n if (!state.hasUserMedia || !this.video.videoHeight) return null;\n\n if (!this.ctx) {\n let canvasWidth = this.video.videoWidth;\n let canvasHeight = this.video.videoHeight;\n if (!this.props.forceScreenshotSourceSize) {\n const aspectRatio = canvasWidth / canvasHeight;\n\n canvasWidth = props.minScreenshotWidth || this.video.clientWidth;\n canvasHeight = canvasWidth / aspectRatio;\n\n if (\n props.minScreenshotHeight &&\n canvasHeight < props.minScreenshotHeight\n ) {\n canvasHeight = props.minScreenshotHeight;\n canvasWidth = canvasHeight * aspectRatio;\n }\n }\n\n this.canvas = document.createElement(\"canvas\");\n this.canvas.width = screenshotDimensions?.width || canvasWidth;\n this.canvas.height = screenshotDimensions?.height || canvasHeight;\n this.ctx = this.canvas.getContext(\"2d\");\n }\n\n const { ctx, canvas } = this;\n\n if (ctx && canvas) {\n // mirror the screenshot\n if (props.mirrored) {\n ctx.translate(canvas.width, 0);\n ctx.scale(-1, 1);\n }\n\n ctx.imageSmoothingEnabled = props.imageSmoothing;\n ctx.drawImage(this.video, 0, 0, screenshotDimensions?.width || canvas.width, screenshotDimensions?.height || canvas.height);\n\n // invert mirroring\n if (props.mirrored) {\n ctx.scale(-1, 1);\n ctx.translate(-canvas.width, 0);\n }\n }\n\n return canvas;\n }\n\n private requestUserMedia() {\n const { props } = this;\n\n const sourceSelected = (\n audioConstraints: boolean | MediaTrackConstraints | undefined,\n videoConstraints: boolean | MediaTrackConstraints | undefined,\n ) => {\n const constraints: MediaStreamConstraints = {\n video: typeof videoConstraints !== \"undefined\" ? videoConstraints : true\n };\n\n if (props.audio) {\n constraints.audio =\n typeof audioConstraints !== \"undefined\" ? audioConstraints : true;\n }\n\n this.requestUserMediaId++\n const myRequestUserMediaId = this.requestUserMediaId\n\n navigator.mediaDevices\n .getUserMedia(constraints)\n .then(stream => {\n if (this.unmounted || myRequestUserMediaId !== this.requestUserMediaId) {\n Webcam.stopMediaStream(stream);\n } else {\n this.handleUserMedia(null, stream);\n }\n })\n .catch(e => {\n this.handleUserMedia(e);\n });\n };\n\n if (\"mediaDevices\" in navigator) {\n sourceSelected(props.audioConstraints, props.videoConstraints);\n } else {\n const optionalSource = (id: string | null) => ({ optional: [{ sourceId: id }] }) as MediaTrackConstraints;\n\n const constraintToSourceId = (constraint) => {\n const { deviceId } = constraint;\n\n if (typeof deviceId === \"string\") {\n return deviceId;\n }\n\n if (Array.isArray(deviceId) && deviceId.length > 0) {\n return deviceId[0];\n }\n\n if (typeof deviceId === \"object\" && deviceId.ideal) {\n return deviceId.ideal;\n }\n\n return null;\n };\n\n // @ts-ignore: deprecated api\n MediaStreamTrack.getSources(sources => {\n let audioSource: string | null = null;\n let videoSource: string | null = null;\n\n sources.forEach((source: MediaStreamTrack) => {\n if (source.kind === \"audio\") {\n audioSource = source.id;\n } else if (source.kind === \"video\") {\n videoSource = source.id;\n }\n });\n\n const audioSourceId = constraintToSourceId(props.audioConstraints);\n if (audioSourceId) {\n audioSource = audioSourceId;\n }\n\n const videoSourceId = constraintToSourceId(props.videoConstraints);\n if (videoSourceId) {\n videoSource = videoSourceId;\n }\n\n sourceSelected(\n optionalSource(audioSource),\n optionalSource(videoSource)\n );\n });\n }\n }\n\n private handleUserMedia(err, stream?: MediaStream) {\n const { props } = this;\n\n if (err || !stream) {\n this.setState({ hasUserMedia: false });\n props.onUserMediaError(err);\n\n return;\n }\n\n this.stream = stream;\n\n try {\n if (this.video) {\n this.video.srcObject = stream;\n }\n this.setState({ hasUserMedia: true });\n } catch (error) {\n this.setState({\n hasUserMedia: true,\n src: window.URL.createObjectURL(stream)\n });\n }\n\n props.onUserMedia(stream);\n }\n\n render() {\n const { state, props } = this;\n\n const {\n audio,\n forceScreenshotSourceSize,\n onUserMedia,\n onUserMediaError,\n screenshotFormat,\n screenshotQuality,\n minScreenshotWidth,\n minScreenshotHeight,\n audioConstraints,\n videoConstraints,\n imageSmoothing,\n mirrored,\n style = {},\n children,\n ...rest\n } = props;\n\n const videoStyle = mirrored ? { ...style, transform: `${style.transform || \"\"} scaleX(-1)` } : style;\n\n const childrenProps: ChildrenProps = {\n getScreenshot: this.getScreenshot.bind(this),\n };\n\n return (\n <>\n {\n this.video = ref;\n }}\n style={videoStyle}\n {...rest}\n />\n {children && children(childrenProps)}\n \n );\n }\n}\n","module.exports = __WEBPACK_EXTERNAL_MODULE_react__;","/**\n * @license React\n * react-jsx-runtime.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n'use strict';var f=require(\"react\"),k=Symbol.for(\"react.element\"),l=Symbol.for(\"react.fragment\"),m=Object.prototype.hasOwnProperty,n=f.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner,p={key:!0,ref:!0,__self:!0,__source:!0};\nfunction q(c,a,g){var b,d={},e=null,h=null;void 0!==g&&(e=\"\"+g);void 0!==a.key&&(e=\"\"+a.key);void 0!==a.ref&&(h=a.ref);for(b in a)m.call(a,b)&&!p.hasOwnProperty(b)&&(d[b]=a[b]);if(c&&c.defaultProps)for(b in a=c.defaultProps,a)void 0===d[b]&&(d[b]=a[b]);return{$$typeof:k,type:c,key:e,ref:h,props:d,_owner:n.current}}exports.Fragment=l;exports.jsx=q;exports.jsxs=q;\n","/**\n * @license React\n * react.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n'use strict';var l=Symbol.for(\"react.element\"),n=Symbol.for(\"react.portal\"),p=Symbol.for(\"react.fragment\"),q=Symbol.for(\"react.strict_mode\"),r=Symbol.for(\"react.profiler\"),t=Symbol.for(\"react.provider\"),u=Symbol.for(\"react.context\"),v=Symbol.for(\"react.forward_ref\"),w=Symbol.for(\"react.suspense\"),x=Symbol.for(\"react.memo\"),y=Symbol.for(\"react.lazy\"),z=Symbol.iterator;function A(a){if(null===a||\"object\"!==typeof a)return null;a=z&&a[z]||a[\"@@iterator\"];return\"function\"===typeof a?a:null}\nvar B={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},C=Object.assign,D={};function E(a,b,e){this.props=a;this.context=b;this.refs=D;this.updater=e||B}E.prototype.isReactComponent={};\nE.prototype.setState=function(a,b){if(\"object\"!==typeof a&&\"function\"!==typeof a&&null!=a)throw Error(\"setState(...): takes an object of state variables to update or a function which returns an object of state variables.\");this.updater.enqueueSetState(this,a,b,\"setState\")};E.prototype.forceUpdate=function(a){this.updater.enqueueForceUpdate(this,a,\"forceUpdate\")};function F(){}F.prototype=E.prototype;function G(a,b,e){this.props=a;this.context=b;this.refs=D;this.updater=e||B}var H=G.prototype=new F;\nH.constructor=G;C(H,E.prototype);H.isPureReactComponent=!0;var I=Array.isArray,J=Object.prototype.hasOwnProperty,K={current:null},L={key:!0,ref:!0,__self:!0,__source:!0};\nfunction M(a,b,e){var d,c={},k=null,h=null;if(null!=b)for(d in void 0!==b.ref&&(h=b.ref),void 0!==b.key&&(k=\"\"+b.key),b)J.call(b,d)&&!L.hasOwnProperty(d)&&(c[d]=b[d]);var g=arguments.length-2;if(1===g)c.children=e;else if(1*/\n\nvar pna = require('process-nextick-args');\n/**/\n\n/**/\nvar objectKeys = Object.keys || function (obj) {\n var keys = [];\n for (var key in obj) {\n keys.push(key);\n }return keys;\n};\n/**/\n\nmodule.exports = Duplex;\n\n/**/\nvar util = Object.create(require('core-util-is'));\nutil.inherits = require('inherits');\n/**/\n\nvar Readable = require('./_stream_readable');\nvar Writable = require('./_stream_writable');\n\nutil.inherits(Duplex, Readable);\n\n{\n // avoid scope creep, the keys array can then be collected\n var keys = objectKeys(Writable.prototype);\n for (var v = 0; v < keys.length; v++) {\n var method = keys[v];\n if (!Duplex.prototype[method]) Duplex.prototype[method] = Writable.prototype[method];\n }\n}\n\nfunction Duplex(options) {\n if (!(this instanceof Duplex)) return new Duplex(options);\n\n Readable.call(this, options);\n Writable.call(this, options);\n\n if (options && options.readable === false) this.readable = false;\n\n if (options && options.writable === false) this.writable = false;\n\n this.allowHalfOpen = true;\n if (options && options.allowHalfOpen === false) this.allowHalfOpen = false;\n\n this.once('end', onend);\n}\n\nObject.defineProperty(Duplex.prototype, 'writableHighWaterMark', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function () {\n return this._writableState.highWaterMark;\n }\n});\n\n// the no-half-open enforcer\nfunction onend() {\n // if we allow half-open state, or if the writable side ended,\n // then we're ok.\n if (this.allowHalfOpen || this._writableState.ended) return;\n\n // no more data can be written.\n // But allow more writes to happen in this tick.\n pna.nextTick(onEndNT, this);\n}\n\nfunction onEndNT(self) {\n self.end();\n}\n\nObject.defineProperty(Duplex.prototype, 'destroyed', {\n get: function () {\n if (this._readableState === undefined || this._writableState === undefined) {\n return false;\n }\n return this._readableState.destroyed && this._writableState.destroyed;\n },\n set: function (value) {\n // we ignore the value if the stream\n // has not been initialized yet\n if (this._readableState === undefined || this._writableState === undefined) {\n return;\n }\n\n // backward compatibility, the user is explicitly\n // managing destroyed\n this._readableState.destroyed = value;\n this._writableState.destroyed = value;\n }\n});\n\nDuplex.prototype._destroy = function (err, cb) {\n this.push(null);\n this.end();\n\n pna.nextTick(cb, err);\n};","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// a passthrough stream.\n// basically just the most minimal sort of Transform stream.\n// Every written chunk gets output as-is.\n\n'use strict';\n\nmodule.exports = PassThrough;\n\nvar Transform = require('./_stream_transform');\n\n/**/\nvar util = Object.create(require('core-util-is'));\nutil.inherits = require('inherits');\n/**/\n\nutil.inherits(PassThrough, Transform);\n\nfunction PassThrough(options) {\n if (!(this instanceof PassThrough)) return new PassThrough(options);\n\n Transform.call(this, options);\n}\n\nPassThrough.prototype._transform = function (chunk, encoding, cb) {\n cb(null, chunk);\n};","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\n/**/\n\nvar pna = require('process-nextick-args');\n/**/\n\nmodule.exports = Readable;\n\n/**/\nvar isArray = require('isarray');\n/**/\n\n/**/\nvar Duplex;\n/**/\n\nReadable.ReadableState = ReadableState;\n\n/**/\nvar EE = require('events').EventEmitter;\n\nvar EElistenerCount = function (emitter, type) {\n return emitter.listeners(type).length;\n};\n/**/\n\n/**/\nvar Stream = require('./internal/streams/stream');\n/**/\n\n/**/\n\nvar Buffer = require('safe-buffer').Buffer;\nvar OurUint8Array = global.Uint8Array || function () {};\nfunction _uint8ArrayToBuffer(chunk) {\n return Buffer.from(chunk);\n}\nfunction _isUint8Array(obj) {\n return Buffer.isBuffer(obj) || obj instanceof OurUint8Array;\n}\n\n/**/\n\n/**/\nvar util = Object.create(require('core-util-is'));\nutil.inherits = require('inherits');\n/**/\n\n/**/\nvar debugUtil = require('util');\nvar debug = void 0;\nif (debugUtil && debugUtil.debuglog) {\n debug = debugUtil.debuglog('stream');\n} else {\n debug = function () {};\n}\n/**/\n\nvar BufferList = require('./internal/streams/BufferList');\nvar destroyImpl = require('./internal/streams/destroy');\nvar StringDecoder;\n\nutil.inherits(Readable, Stream);\n\nvar kProxyEvents = ['error', 'close', 'destroy', 'pause', 'resume'];\n\nfunction prependListener(emitter, event, fn) {\n // Sadly this is not cacheable as some libraries bundle their own\n // event emitter implementation with them.\n if (typeof emitter.prependListener === 'function') return emitter.prependListener(event, fn);\n\n // This is a hack to make sure that our error handler is attached before any\n // userland ones. NEVER DO THIS. This is here only because this code needs\n // to continue to work with older versions of Node.js that do not include\n // the prependListener() method. The goal is to eventually remove this hack.\n if (!emitter._events || !emitter._events[event]) emitter.on(event, fn);else if (isArray(emitter._events[event])) emitter._events[event].unshift(fn);else emitter._events[event] = [fn, emitter._events[event]];\n}\n\nfunction ReadableState(options, stream) {\n Duplex = Duplex || require('./_stream_duplex');\n\n options = options || {};\n\n // Duplex streams are both readable and writable, but share\n // the same options object.\n // However, some cases require setting options to different\n // values for the readable and the writable sides of the duplex stream.\n // These options can be provided separately as readableXXX and writableXXX.\n var isDuplex = stream instanceof Duplex;\n\n // object stream flag. Used to make read(n) ignore n and to\n // make all the buffer merging and length checks go away\n this.objectMode = !!options.objectMode;\n\n if (isDuplex) this.objectMode = this.objectMode || !!options.readableObjectMode;\n\n // the point at which it stops calling _read() to fill the buffer\n // Note: 0 is a valid value, means \"don't call _read preemptively ever\"\n var hwm = options.highWaterMark;\n var readableHwm = options.readableHighWaterMark;\n var defaultHwm = this.objectMode ? 16 : 16 * 1024;\n\n if (hwm || hwm === 0) this.highWaterMark = hwm;else if (isDuplex && (readableHwm || readableHwm === 0)) this.highWaterMark = readableHwm;else this.highWaterMark = defaultHwm;\n\n // cast to ints.\n this.highWaterMark = Math.floor(this.highWaterMark);\n\n // A linked list is used to store data chunks instead of an array because the\n // linked list can remove elements from the beginning faster than\n // array.shift()\n this.buffer = new BufferList();\n this.length = 0;\n this.pipes = null;\n this.pipesCount = 0;\n this.flowing = null;\n this.ended = false;\n this.endEmitted = false;\n this.reading = false;\n\n // a flag to be able to tell if the event 'readable'/'data' is emitted\n // immediately, or on a later tick. We set this to true at first, because\n // any actions that shouldn't happen until \"later\" should generally also\n // not happen before the first read call.\n this.sync = true;\n\n // whenever we return null, then we set a flag to say\n // that we're awaiting a 'readable' event emission.\n this.needReadable = false;\n this.emittedReadable = false;\n this.readableListening = false;\n this.resumeScheduled = false;\n\n // has it been destroyed\n this.destroyed = false;\n\n // Crypto is kind of old and crusty. Historically, its default string\n // encoding is 'binary' so we have to make this configurable.\n // Everything else in the universe uses 'utf8', though.\n this.defaultEncoding = options.defaultEncoding || 'utf8';\n\n // the number of writers that are awaiting a drain event in .pipe()s\n this.awaitDrain = 0;\n\n // if true, a maybeReadMore has been scheduled\n this.readingMore = false;\n\n this.decoder = null;\n this.encoding = null;\n if (options.encoding) {\n if (!StringDecoder) StringDecoder = require('string_decoder/').StringDecoder;\n this.decoder = new StringDecoder(options.encoding);\n this.encoding = options.encoding;\n }\n}\n\nfunction Readable(options) {\n Duplex = Duplex || require('./_stream_duplex');\n\n if (!(this instanceof Readable)) return new Readable(options);\n\n this._readableState = new ReadableState(options, this);\n\n // legacy\n this.readable = true;\n\n if (options) {\n if (typeof options.read === 'function') this._read = options.read;\n\n if (typeof options.destroy === 'function') this._destroy = options.destroy;\n }\n\n Stream.call(this);\n}\n\nObject.defineProperty(Readable.prototype, 'destroyed', {\n get: function () {\n if (this._readableState === undefined) {\n return false;\n }\n return this._readableState.destroyed;\n },\n set: function (value) {\n // we ignore the value if the stream\n // has not been initialized yet\n if (!this._readableState) {\n return;\n }\n\n // backward compatibility, the user is explicitly\n // managing destroyed\n this._readableState.destroyed = value;\n }\n});\n\nReadable.prototype.destroy = destroyImpl.destroy;\nReadable.prototype._undestroy = destroyImpl.undestroy;\nReadable.prototype._destroy = function (err, cb) {\n this.push(null);\n cb(err);\n};\n\n// Manually shove something into the read() buffer.\n// This returns true if the highWaterMark has not been hit yet,\n// similar to how Writable.write() returns true if you should\n// write() some more.\nReadable.prototype.push = function (chunk, encoding) {\n var state = this._readableState;\n var skipChunkCheck;\n\n if (!state.objectMode) {\n if (typeof chunk === 'string') {\n encoding = encoding || state.defaultEncoding;\n if (encoding !== state.encoding) {\n chunk = Buffer.from(chunk, encoding);\n encoding = '';\n }\n skipChunkCheck = true;\n }\n } else {\n skipChunkCheck = true;\n }\n\n return readableAddChunk(this, chunk, encoding, false, skipChunkCheck);\n};\n\n// Unshift should *always* be something directly out of read()\nReadable.prototype.unshift = function (chunk) {\n return readableAddChunk(this, chunk, null, true, false);\n};\n\nfunction readableAddChunk(stream, chunk, encoding, addToFront, skipChunkCheck) {\n var state = stream._readableState;\n if (chunk === null) {\n state.reading = false;\n onEofChunk(stream, state);\n } else {\n var er;\n if (!skipChunkCheck) er = chunkInvalid(state, chunk);\n if (er) {\n stream.emit('error', er);\n } else if (state.objectMode || chunk && chunk.length > 0) {\n if (typeof chunk !== 'string' && !state.objectMode && Object.getPrototypeOf(chunk) !== Buffer.prototype) {\n chunk = _uint8ArrayToBuffer(chunk);\n }\n\n if (addToFront) {\n if (state.endEmitted) stream.emit('error', new Error('stream.unshift() after end event'));else addChunk(stream, state, chunk, true);\n } else if (state.ended) {\n stream.emit('error', new Error('stream.push() after EOF'));\n } else {\n state.reading = false;\n if (state.decoder && !encoding) {\n chunk = state.decoder.write(chunk);\n if (state.objectMode || chunk.length !== 0) addChunk(stream, state, chunk, false);else maybeReadMore(stream, state);\n } else {\n addChunk(stream, state, chunk, false);\n }\n }\n } else if (!addToFront) {\n state.reading = false;\n }\n }\n\n return needMoreData(state);\n}\n\nfunction addChunk(stream, state, chunk, addToFront) {\n if (state.flowing && state.length === 0 && !state.sync) {\n stream.emit('data', chunk);\n stream.read(0);\n } else {\n // update the buffer info.\n state.length += state.objectMode ? 1 : chunk.length;\n if (addToFront) state.buffer.unshift(chunk);else state.buffer.push(chunk);\n\n if (state.needReadable) emitReadable(stream);\n }\n maybeReadMore(stream, state);\n}\n\nfunction chunkInvalid(state, chunk) {\n var er;\n if (!_isUint8Array(chunk) && typeof chunk !== 'string' && chunk !== undefined && !state.objectMode) {\n er = new TypeError('Invalid non-string/buffer chunk');\n }\n return er;\n}\n\n// if it's past the high water mark, we can push in some more.\n// Also, if we have no data yet, we can stand some\n// more bytes. This is to work around cases where hwm=0,\n// such as the repl. Also, if the push() triggered a\n// readable event, and the user called read(largeNumber) such that\n// needReadable was set, then we ought to push more, so that another\n// 'readable' event will be triggered.\nfunction needMoreData(state) {\n return !state.ended && (state.needReadable || state.length < state.highWaterMark || state.length === 0);\n}\n\nReadable.prototype.isPaused = function () {\n return this._readableState.flowing === false;\n};\n\n// backwards compatibility.\nReadable.prototype.setEncoding = function (enc) {\n if (!StringDecoder) StringDecoder = require('string_decoder/').StringDecoder;\n this._readableState.decoder = new StringDecoder(enc);\n this._readableState.encoding = enc;\n return this;\n};\n\n// Don't raise the hwm > 8MB\nvar MAX_HWM = 0x800000;\nfunction computeNewHighWaterMark(n) {\n if (n >= MAX_HWM) {\n n = MAX_HWM;\n } else {\n // Get the next highest power of 2 to prevent increasing hwm excessively in\n // tiny amounts\n n--;\n n |= n >>> 1;\n n |= n >>> 2;\n n |= n >>> 4;\n n |= n >>> 8;\n n |= n >>> 16;\n n++;\n }\n return n;\n}\n\n// This function is designed to be inlinable, so please take care when making\n// changes to the function body.\nfunction howMuchToRead(n, state) {\n if (n <= 0 || state.length === 0 && state.ended) return 0;\n if (state.objectMode) return 1;\n if (n !== n) {\n // Only flow one buffer at a time\n if (state.flowing && state.length) return state.buffer.head.data.length;else return state.length;\n }\n // If we're asking for more than the current hwm, then raise the hwm.\n if (n > state.highWaterMark) state.highWaterMark = computeNewHighWaterMark(n);\n if (n <= state.length) return n;\n // Don't have enough\n if (!state.ended) {\n state.needReadable = true;\n return 0;\n }\n return state.length;\n}\n\n// you can override either this method, or the async _read(n) below.\nReadable.prototype.read = function (n) {\n debug('read', n);\n n = parseInt(n, 10);\n var state = this._readableState;\n var nOrig = n;\n\n if (n !== 0) state.emittedReadable = false;\n\n // if we're doing read(0) to trigger a readable event, but we\n // already have a bunch of data in the buffer, then just trigger\n // the 'readable' event and move on.\n if (n === 0 && state.needReadable && (state.length >= state.highWaterMark || state.ended)) {\n debug('read: emitReadable', state.length, state.ended);\n if (state.length === 0 && state.ended) endReadable(this);else emitReadable(this);\n return null;\n }\n\n n = howMuchToRead(n, state);\n\n // if we've ended, and we're now clear, then finish it up.\n if (n === 0 && state.ended) {\n if (state.length === 0) endReadable(this);\n return null;\n }\n\n // All the actual chunk generation logic needs to be\n // *below* the call to _read. The reason is that in certain\n // synthetic stream cases, such as passthrough streams, _read\n // may be a completely synchronous operation which may change\n // the state of the read buffer, providing enough data when\n // before there was *not* enough.\n //\n // So, the steps are:\n // 1. Figure out what the state of things will be after we do\n // a read from the buffer.\n //\n // 2. If that resulting state will trigger a _read, then call _read.\n // Note that this may be asynchronous, or synchronous. Yes, it is\n // deeply ugly to write APIs this way, but that still doesn't mean\n // that the Readable class should behave improperly, as streams are\n // designed to be sync/async agnostic.\n // Take note if the _read call is sync or async (ie, if the read call\n // has returned yet), so that we know whether or not it's safe to emit\n // 'readable' etc.\n //\n // 3. Actually pull the requested chunks out of the buffer and return.\n\n // if we need a readable event, then we need to do some reading.\n var doRead = state.needReadable;\n debug('need readable', doRead);\n\n // if we currently have less than the highWaterMark, then also read some\n if (state.length === 0 || state.length - n < state.highWaterMark) {\n doRead = true;\n debug('length less than watermark', doRead);\n }\n\n // however, if we've ended, then there's no point, and if we're already\n // reading, then it's unnecessary.\n if (state.ended || state.reading) {\n doRead = false;\n debug('reading or ended', doRead);\n } else if (doRead) {\n debug('do read');\n state.reading = true;\n state.sync = true;\n // if the length is currently zero, then we *need* a readable event.\n if (state.length === 0) state.needReadable = true;\n // call internal read method\n this._read(state.highWaterMark);\n state.sync = false;\n // If _read pushed data synchronously, then `reading` will be false,\n // and we need to re-evaluate how much data we can return to the user.\n if (!state.reading) n = howMuchToRead(nOrig, state);\n }\n\n var ret;\n if (n > 0) ret = fromList(n, state);else ret = null;\n\n if (ret === null) {\n state.needReadable = true;\n n = 0;\n } else {\n state.length -= n;\n }\n\n if (state.length === 0) {\n // If we have nothing in the buffer, then we want to know\n // as soon as we *do* get something into the buffer.\n if (!state.ended) state.needReadable = true;\n\n // If we tried to read() past the EOF, then emit end on the next tick.\n if (nOrig !== n && state.ended) endReadable(this);\n }\n\n if (ret !== null) this.emit('data', ret);\n\n return ret;\n};\n\nfunction onEofChunk(stream, state) {\n if (state.ended) return;\n if (state.decoder) {\n var chunk = state.decoder.end();\n if (chunk && chunk.length) {\n state.buffer.push(chunk);\n state.length += state.objectMode ? 1 : chunk.length;\n }\n }\n state.ended = true;\n\n // emit 'readable' now to make sure it gets picked up.\n emitReadable(stream);\n}\n\n// Don't emit readable right away in sync mode, because this can trigger\n// another read() call => stack overflow. This way, it might trigger\n// a nextTick recursion warning, but that's not so bad.\nfunction emitReadable(stream) {\n var state = stream._readableState;\n state.needReadable = false;\n if (!state.emittedReadable) {\n debug('emitReadable', state.flowing);\n state.emittedReadable = true;\n if (state.sync) pna.nextTick(emitReadable_, stream);else emitReadable_(stream);\n }\n}\n\nfunction emitReadable_(stream) {\n debug('emit readable');\n stream.emit('readable');\n flow(stream);\n}\n\n// at this point, the user has presumably seen the 'readable' event,\n// and called read() to consume some data. that may have triggered\n// in turn another _read(n) call, in which case reading = true if\n// it's in progress.\n// However, if we're not ended, or reading, and the length < hwm,\n// then go ahead and try to read some more preemptively.\nfunction maybeReadMore(stream, state) {\n if (!state.readingMore) {\n state.readingMore = true;\n pna.nextTick(maybeReadMore_, stream, state);\n }\n}\n\nfunction maybeReadMore_(stream, state) {\n var len = state.length;\n while (!state.reading && !state.flowing && !state.ended && state.length < state.highWaterMark) {\n debug('maybeReadMore read 0');\n stream.read(0);\n if (len === state.length)\n // didn't get any data, stop spinning.\n break;else len = state.length;\n }\n state.readingMore = false;\n}\n\n// abstract method. to be overridden in specific implementation classes.\n// call cb(er, data) where data is <= n in length.\n// for virtual (non-string, non-buffer) streams, \"length\" is somewhat\n// arbitrary, and perhaps not very meaningful.\nReadable.prototype._read = function (n) {\n this.emit('error', new Error('_read() is not implemented'));\n};\n\nReadable.prototype.pipe = function (dest, pipeOpts) {\n var src = this;\n var state = this._readableState;\n\n switch (state.pipesCount) {\n case 0:\n state.pipes = dest;\n break;\n case 1:\n state.pipes = [state.pipes, dest];\n break;\n default:\n state.pipes.push(dest);\n break;\n }\n state.pipesCount += 1;\n debug('pipe count=%d opts=%j', state.pipesCount, pipeOpts);\n\n var doEnd = (!pipeOpts || pipeOpts.end !== false) && dest !== process.stdout && dest !== process.stderr;\n\n var endFn = doEnd ? onend : unpipe;\n if (state.endEmitted) pna.nextTick(endFn);else src.once('end', endFn);\n\n dest.on('unpipe', onunpipe);\n function onunpipe(readable, unpipeInfo) {\n debug('onunpipe');\n if (readable === src) {\n if (unpipeInfo && unpipeInfo.hasUnpiped === false) {\n unpipeInfo.hasUnpiped = true;\n cleanup();\n }\n }\n }\n\n function onend() {\n debug('onend');\n dest.end();\n }\n\n // when the dest drains, it reduces the awaitDrain counter\n // on the source. This would be more elegant with a .once()\n // handler in flow(), but adding and removing repeatedly is\n // too slow.\n var ondrain = pipeOnDrain(src);\n dest.on('drain', ondrain);\n\n var cleanedUp = false;\n function cleanup() {\n debug('cleanup');\n // cleanup event handlers once the pipe is broken\n dest.removeListener('close', onclose);\n dest.removeListener('finish', onfinish);\n dest.removeListener('drain', ondrain);\n dest.removeListener('error', onerror);\n dest.removeListener('unpipe', onunpipe);\n src.removeListener('end', onend);\n src.removeListener('end', unpipe);\n src.removeListener('data', ondata);\n\n cleanedUp = true;\n\n // if the reader is waiting for a drain event from this\n // specific writer, then it would cause it to never start\n // flowing again.\n // So, if this is awaiting a drain, then we just call it now.\n // If we don't know, then assume that we are waiting for one.\n if (state.awaitDrain && (!dest._writableState || dest._writableState.needDrain)) ondrain();\n }\n\n // If the user pushes more data while we're writing to dest then we'll end up\n // in ondata again. However, we only want to increase awaitDrain once because\n // dest will only emit one 'drain' event for the multiple writes.\n // => Introduce a guard on increasing awaitDrain.\n var increasedAwaitDrain = false;\n src.on('data', ondata);\n function ondata(chunk) {\n debug('ondata');\n increasedAwaitDrain = false;\n var ret = dest.write(chunk);\n if (false === ret && !increasedAwaitDrain) {\n // If the user unpiped during `dest.write()`, it is possible\n // to get stuck in a permanently paused state if that write\n // also returned false.\n // => Check whether `dest` is still a piping destination.\n if ((state.pipesCount === 1 && state.pipes === dest || state.pipesCount > 1 && indexOf(state.pipes, dest) !== -1) && !cleanedUp) {\n debug('false write response, pause', src._readableState.awaitDrain);\n src._readableState.awaitDrain++;\n increasedAwaitDrain = true;\n }\n src.pause();\n }\n }\n\n // if the dest has an error, then stop piping into it.\n // however, don't suppress the throwing behavior for this.\n function onerror(er) {\n debug('onerror', er);\n unpipe();\n dest.removeListener('error', onerror);\n if (EElistenerCount(dest, 'error') === 0) dest.emit('error', er);\n }\n\n // Make sure our error handler is attached before userland ones.\n prependListener(dest, 'error', onerror);\n\n // Both close and finish should trigger unpipe, but only once.\n function onclose() {\n dest.removeListener('finish', onfinish);\n unpipe();\n }\n dest.once('close', onclose);\n function onfinish() {\n debug('onfinish');\n dest.removeListener('close', onclose);\n unpipe();\n }\n dest.once('finish', onfinish);\n\n function unpipe() {\n debug('unpipe');\n src.unpipe(dest);\n }\n\n // tell the dest that it's being piped to\n dest.emit('pipe', src);\n\n // start the flow if it hasn't been started already.\n if (!state.flowing) {\n debug('pipe resume');\n src.resume();\n }\n\n return dest;\n};\n\nfunction pipeOnDrain(src) {\n return function () {\n var state = src._readableState;\n debug('pipeOnDrain', state.awaitDrain);\n if (state.awaitDrain) state.awaitDrain--;\n if (state.awaitDrain === 0 && EElistenerCount(src, 'data')) {\n state.flowing = true;\n flow(src);\n }\n };\n}\n\nReadable.prototype.unpipe = function (dest) {\n var state = this._readableState;\n var unpipeInfo = { hasUnpiped: false };\n\n // if we're not piping anywhere, then do nothing.\n if (state.pipesCount === 0) return this;\n\n // just one destination. most common case.\n if (state.pipesCount === 1) {\n // passed in one, but it's not the right one.\n if (dest && dest !== state.pipes) return this;\n\n if (!dest) dest = state.pipes;\n\n // got a match.\n state.pipes = null;\n state.pipesCount = 0;\n state.flowing = false;\n if (dest) dest.emit('unpipe', this, unpipeInfo);\n return this;\n }\n\n // slow case. multiple pipe destinations.\n\n if (!dest) {\n // remove all.\n var dests = state.pipes;\n var len = state.pipesCount;\n state.pipes = null;\n state.pipesCount = 0;\n state.flowing = false;\n\n for (var i = 0; i < len; i++) {\n dests[i].emit('unpipe', this, unpipeInfo);\n }return this;\n }\n\n // try to find the right one.\n var index = indexOf(state.pipes, dest);\n if (index === -1) return this;\n\n state.pipes.splice(index, 1);\n state.pipesCount -= 1;\n if (state.pipesCount === 1) state.pipes = state.pipes[0];\n\n dest.emit('unpipe', this, unpipeInfo);\n\n return this;\n};\n\n// set up data events if they are asked for\n// Ensure readable listeners eventually get something\nReadable.prototype.on = function (ev, fn) {\n var res = Stream.prototype.on.call(this, ev, fn);\n\n if (ev === 'data') {\n // Start flowing on next tick if stream isn't explicitly paused\n if (this._readableState.flowing !== false) this.resume();\n } else if (ev === 'readable') {\n var state = this._readableState;\n if (!state.endEmitted && !state.readableListening) {\n state.readableListening = state.needReadable = true;\n state.emittedReadable = false;\n if (!state.reading) {\n pna.nextTick(nReadingNextTick, this);\n } else if (state.length) {\n emitReadable(this);\n }\n }\n }\n\n return res;\n};\nReadable.prototype.addListener = Readable.prototype.on;\n\nfunction nReadingNextTick(self) {\n debug('readable nexttick read 0');\n self.read(0);\n}\n\n// pause() and resume() are remnants of the legacy readable stream API\n// If the user uses them, then switch into old mode.\nReadable.prototype.resume = function () {\n var state = this._readableState;\n if (!state.flowing) {\n debug('resume');\n state.flowing = true;\n resume(this, state);\n }\n return this;\n};\n\nfunction resume(stream, state) {\n if (!state.resumeScheduled) {\n state.resumeScheduled = true;\n pna.nextTick(resume_, stream, state);\n }\n}\n\nfunction resume_(stream, state) {\n if (!state.reading) {\n debug('resume read 0');\n stream.read(0);\n }\n\n state.resumeScheduled = false;\n state.awaitDrain = 0;\n stream.emit('resume');\n flow(stream);\n if (state.flowing && !state.reading) stream.read(0);\n}\n\nReadable.prototype.pause = function () {\n debug('call pause flowing=%j', this._readableState.flowing);\n if (false !== this._readableState.flowing) {\n debug('pause');\n this._readableState.flowing = false;\n this.emit('pause');\n }\n return this;\n};\n\nfunction flow(stream) {\n var state = stream._readableState;\n debug('flow', state.flowing);\n while (state.flowing && stream.read() !== null) {}\n}\n\n// wrap an old-style stream as the async data source.\n// This is *not* part of the readable stream interface.\n// It is an ugly unfortunate mess of history.\nReadable.prototype.wrap = function (stream) {\n var _this = this;\n\n var state = this._readableState;\n var paused = false;\n\n stream.on('end', function () {\n debug('wrapped end');\n if (state.decoder && !state.ended) {\n var chunk = state.decoder.end();\n if (chunk && chunk.length) _this.push(chunk);\n }\n\n _this.push(null);\n });\n\n stream.on('data', function (chunk) {\n debug('wrapped data');\n if (state.decoder) chunk = state.decoder.write(chunk);\n\n // don't skip over falsy values in objectMode\n if (state.objectMode && (chunk === null || chunk === undefined)) return;else if (!state.objectMode && (!chunk || !chunk.length)) return;\n\n var ret = _this.push(chunk);\n if (!ret) {\n paused = true;\n stream.pause();\n }\n });\n\n // proxy all the other methods.\n // important when wrapping filters and duplexes.\n for (var i in stream) {\n if (this[i] === undefined && typeof stream[i] === 'function') {\n this[i] = function (method) {\n return function () {\n return stream[method].apply(stream, arguments);\n };\n }(i);\n }\n }\n\n // proxy certain important events.\n for (var n = 0; n < kProxyEvents.length; n++) {\n stream.on(kProxyEvents[n], this.emit.bind(this, kProxyEvents[n]));\n }\n\n // when we try to consume some more bytes, simply unpause the\n // underlying stream.\n this._read = function (n) {\n debug('wrapped _read', n);\n if (paused) {\n paused = false;\n stream.resume();\n }\n };\n\n return this;\n};\n\nObject.defineProperty(Readable.prototype, 'readableHighWaterMark', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function () {\n return this._readableState.highWaterMark;\n }\n});\n\n// exposed for testing purposes only.\nReadable._fromList = fromList;\n\n// Pluck off n bytes from an array of buffers.\n// Length is the combined lengths of all the buffers in the list.\n// This function is designed to be inlinable, so please take care when making\n// changes to the function body.\nfunction fromList(n, state) {\n // nothing buffered\n if (state.length === 0) return null;\n\n var ret;\n if (state.objectMode) ret = state.buffer.shift();else if (!n || n >= state.length) {\n // read it all, truncate the list\n if (state.decoder) ret = state.buffer.join('');else if (state.buffer.length === 1) ret = state.buffer.head.data;else ret = state.buffer.concat(state.length);\n state.buffer.clear();\n } else {\n // read part of list\n ret = fromListPartial(n, state.buffer, state.decoder);\n }\n\n return ret;\n}\n\n// Extracts only enough buffered data to satisfy the amount requested.\n// This function is designed to be inlinable, so please take care when making\n// changes to the function body.\nfunction fromListPartial(n, list, hasStrings) {\n var ret;\n if (n < list.head.data.length) {\n // slice is the same for buffers and strings\n ret = list.head.data.slice(0, n);\n list.head.data = list.head.data.slice(n);\n } else if (n === list.head.data.length) {\n // first chunk is a perfect match\n ret = list.shift();\n } else {\n // result spans more than one buffer\n ret = hasStrings ? copyFromBufferString(n, list) : copyFromBuffer(n, list);\n }\n return ret;\n}\n\n// Copies a specified amount of characters from the list of buffered data\n// chunks.\n// This function is designed to be inlinable, so please take care when making\n// changes to the function body.\nfunction copyFromBufferString(n, list) {\n var p = list.head;\n var c = 1;\n var ret = p.data;\n n -= ret.length;\n while (p = p.next) {\n var str = p.data;\n var nb = n > str.length ? str.length : n;\n if (nb === str.length) ret += str;else ret += str.slice(0, n);\n n -= nb;\n if (n === 0) {\n if (nb === str.length) {\n ++c;\n if (p.next) list.head = p.next;else list.head = list.tail = null;\n } else {\n list.head = p;\n p.data = str.slice(nb);\n }\n break;\n }\n ++c;\n }\n list.length -= c;\n return ret;\n}\n\n// Copies a specified amount of bytes from the list of buffered data chunks.\n// This function is designed to be inlinable, so please take care when making\n// changes to the function body.\nfunction copyFromBuffer(n, list) {\n var ret = Buffer.allocUnsafe(n);\n var p = list.head;\n var c = 1;\n p.data.copy(ret);\n n -= p.data.length;\n while (p = p.next) {\n var buf = p.data;\n var nb = n > buf.length ? buf.length : n;\n buf.copy(ret, ret.length - n, 0, nb);\n n -= nb;\n if (n === 0) {\n if (nb === buf.length) {\n ++c;\n if (p.next) list.head = p.next;else list.head = list.tail = null;\n } else {\n list.head = p;\n p.data = buf.slice(nb);\n }\n break;\n }\n ++c;\n }\n list.length -= c;\n return ret;\n}\n\nfunction endReadable(stream) {\n var state = stream._readableState;\n\n // If we get here before consuming all the bytes, then that is a\n // bug in node. Should never happen.\n if (state.length > 0) throw new Error('\"endReadable()\" called on non-empty stream');\n\n if (!state.endEmitted) {\n state.ended = true;\n pna.nextTick(endReadableNT, state, stream);\n }\n}\n\nfunction endReadableNT(state, stream) {\n // Check that we didn't get one last unshift.\n if (!state.endEmitted && state.length === 0) {\n state.endEmitted = true;\n stream.readable = false;\n stream.emit('end');\n }\n}\n\nfunction indexOf(xs, x) {\n for (var i = 0, l = xs.length; i < l; i++) {\n if (xs[i] === x) return i;\n }\n return -1;\n}","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// a transform stream is a readable/writable stream where you do\n// something with the data. Sometimes it's called a \"filter\",\n// but that's not a great name for it, since that implies a thing where\n// some bits pass through, and others are simply ignored. (That would\n// be a valid example of a transform, of course.)\n//\n// While the output is causally related to the input, it's not a\n// necessarily symmetric or synchronous transformation. For example,\n// a zlib stream might take multiple plain-text writes(), and then\n// emit a single compressed chunk some time in the future.\n//\n// Here's how this works:\n//\n// The Transform stream has all the aspects of the readable and writable\n// stream classes. When you write(chunk), that calls _write(chunk,cb)\n// internally, and returns false if there's a lot of pending writes\n// buffered up. When you call read(), that calls _read(n) until\n// there's enough pending readable data buffered up.\n//\n// In a transform stream, the written data is placed in a buffer. When\n// _read(n) is called, it transforms the queued up data, calling the\n// buffered _write cb's as it consumes chunks. If consuming a single\n// written chunk would result in multiple output chunks, then the first\n// outputted bit calls the readcb, and subsequent chunks just go into\n// the read buffer, and will cause it to emit 'readable' if necessary.\n//\n// This way, back-pressure is actually determined by the reading side,\n// since _read has to be called to start processing a new chunk. However,\n// a pathological inflate type of transform can cause excessive buffering\n// here. For example, imagine a stream where every byte of input is\n// interpreted as an integer from 0-255, and then results in that many\n// bytes of output. Writing the 4 bytes {ff,ff,ff,ff} would result in\n// 1kb of data being output. In this case, you could write a very small\n// amount of input, and end up with a very large amount of output. In\n// such a pathological inflating mechanism, there'd be no way to tell\n// the system to stop doing the transform. A single 4MB write could\n// cause the system to run out of memory.\n//\n// However, even in such a pathological case, only a single written chunk\n// would be consumed, and then the rest would wait (un-transformed) until\n// the results of the previous transformed chunk were consumed.\n\n'use strict';\n\nmodule.exports = Transform;\n\nvar Duplex = require('./_stream_duplex');\n\n/**/\nvar util = Object.create(require('core-util-is'));\nutil.inherits = require('inherits');\n/**/\n\nutil.inherits(Transform, Duplex);\n\nfunction afterTransform(er, data) {\n var ts = this._transformState;\n ts.transforming = false;\n\n var cb = ts.writecb;\n\n if (!cb) {\n return this.emit('error', new Error('write callback called multiple times'));\n }\n\n ts.writechunk = null;\n ts.writecb = null;\n\n if (data != null) // single equals check for both `null` and `undefined`\n this.push(data);\n\n cb(er);\n\n var rs = this._readableState;\n rs.reading = false;\n if (rs.needReadable || rs.length < rs.highWaterMark) {\n this._read(rs.highWaterMark);\n }\n}\n\nfunction Transform(options) {\n if (!(this instanceof Transform)) return new Transform(options);\n\n Duplex.call(this, options);\n\n this._transformState = {\n afterTransform: afterTransform.bind(this),\n needTransform: false,\n transforming: false,\n writecb: null,\n writechunk: null,\n writeencoding: null\n };\n\n // start out asking for a readable event once data is transformed.\n this._readableState.needReadable = true;\n\n // we have implemented the _read method, and done the other things\n // that Readable wants before the first _read call, so unset the\n // sync guard flag.\n this._readableState.sync = false;\n\n if (options) {\n if (typeof options.transform === 'function') this._transform = options.transform;\n\n if (typeof options.flush === 'function') this._flush = options.flush;\n }\n\n // When the writable side finishes, then flush out anything remaining.\n this.on('prefinish', prefinish);\n}\n\nfunction prefinish() {\n var _this = this;\n\n if (typeof this._flush === 'function') {\n this._flush(function (er, data) {\n done(_this, er, data);\n });\n } else {\n done(this, null, null);\n }\n}\n\nTransform.prototype.push = function (chunk, encoding) {\n this._transformState.needTransform = false;\n return Duplex.prototype.push.call(this, chunk, encoding);\n};\n\n// This is the part where you do stuff!\n// override this function in implementation classes.\n// 'chunk' is an input chunk.\n//\n// Call `push(newChunk)` to pass along transformed output\n// to the readable side. You may call 'push' zero or more times.\n//\n// Call `cb(err)` when you are done with this chunk. If you pass\n// an error, then that'll put the hurt on the whole operation. If you\n// never call cb(), then you'll never get another chunk.\nTransform.prototype._transform = function (chunk, encoding, cb) {\n throw new Error('_transform() is not implemented');\n};\n\nTransform.prototype._write = function (chunk, encoding, cb) {\n var ts = this._transformState;\n ts.writecb = cb;\n ts.writechunk = chunk;\n ts.writeencoding = encoding;\n if (!ts.transforming) {\n var rs = this._readableState;\n if (ts.needTransform || rs.needReadable || rs.length < rs.highWaterMark) this._read(rs.highWaterMark);\n }\n};\n\n// Doesn't matter what the args are here.\n// _transform does all the work.\n// That we got here means that the readable side wants more data.\nTransform.prototype._read = function (n) {\n var ts = this._transformState;\n\n if (ts.writechunk !== null && ts.writecb && !ts.transforming) {\n ts.transforming = true;\n this._transform(ts.writechunk, ts.writeencoding, ts.afterTransform);\n } else {\n // mark that we need a transform, so that any data that comes in\n // will get processed, now that we've asked for it.\n ts.needTransform = true;\n }\n};\n\nTransform.prototype._destroy = function (err, cb) {\n var _this2 = this;\n\n Duplex.prototype._destroy.call(this, err, function (err2) {\n cb(err2);\n _this2.emit('close');\n });\n};\n\nfunction done(stream, er, data) {\n if (er) return stream.emit('error', er);\n\n if (data != null) // single equals check for both `null` and `undefined`\n stream.push(data);\n\n // if there's nothing in the write buffer, then that means\n // that nothing more will ever be provided\n if (stream._writableState.length) throw new Error('Calling transform done when ws.length != 0');\n\n if (stream._transformState.transforming) throw new Error('Calling transform done when still transforming');\n\n return stream.push(null);\n}","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// A bit simpler than readable streams.\n// Implement an async ._write(chunk, encoding, cb), and it'll handle all\n// the drain event emission and buffering.\n\n'use strict';\n\n/**/\n\nvar pna = require('process-nextick-args');\n/**/\n\nmodule.exports = Writable;\n\n/* */\nfunction WriteReq(chunk, encoding, cb) {\n this.chunk = chunk;\n this.encoding = encoding;\n this.callback = cb;\n this.next = null;\n}\n\n// It seems a linked list but it is not\n// there will be only 2 of these for each stream\nfunction CorkedRequest(state) {\n var _this = this;\n\n this.next = null;\n this.entry = null;\n this.finish = function () {\n onCorkedFinish(_this, state);\n };\n}\n/* */\n\n/**/\nvar asyncWrite = !process.browser && ['v0.10', 'v0.9.'].indexOf(process.version.slice(0, 5)) > -1 ? setImmediate : pna.nextTick;\n/**/\n\n/**/\nvar Duplex;\n/**/\n\nWritable.WritableState = WritableState;\n\n/**/\nvar util = Object.create(require('core-util-is'));\nutil.inherits = require('inherits');\n/**/\n\n/**/\nvar internalUtil = {\n deprecate: require('util-deprecate')\n};\n/**/\n\n/**/\nvar Stream = require('./internal/streams/stream');\n/**/\n\n/**/\n\nvar Buffer = require('safe-buffer').Buffer;\nvar OurUint8Array = global.Uint8Array || function () {};\nfunction _uint8ArrayToBuffer(chunk) {\n return Buffer.from(chunk);\n}\nfunction _isUint8Array(obj) {\n return Buffer.isBuffer(obj) || obj instanceof OurUint8Array;\n}\n\n/**/\n\nvar destroyImpl = require('./internal/streams/destroy');\n\nutil.inherits(Writable, Stream);\n\nfunction nop() {}\n\nfunction WritableState(options, stream) {\n Duplex = Duplex || require('./_stream_duplex');\n\n options = options || {};\n\n // Duplex streams are both readable and writable, but share\n // the same options object.\n // However, some cases require setting options to different\n // values for the readable and the writable sides of the duplex stream.\n // These options can be provided separately as readableXXX and writableXXX.\n var isDuplex = stream instanceof Duplex;\n\n // object stream flag to indicate whether or not this stream\n // contains buffers or objects.\n this.objectMode = !!options.objectMode;\n\n if (isDuplex) this.objectMode = this.objectMode || !!options.writableObjectMode;\n\n // the point at which write() starts returning false\n // Note: 0 is a valid value, means that we always return false if\n // the entire buffer is not flushed immediately on write()\n var hwm = options.highWaterMark;\n var writableHwm = options.writableHighWaterMark;\n var defaultHwm = this.objectMode ? 16 : 16 * 1024;\n\n if (hwm || hwm === 0) this.highWaterMark = hwm;else if (isDuplex && (writableHwm || writableHwm === 0)) this.highWaterMark = writableHwm;else this.highWaterMark = defaultHwm;\n\n // cast to ints.\n this.highWaterMark = Math.floor(this.highWaterMark);\n\n // if _final has been called\n this.finalCalled = false;\n\n // drain event flag.\n this.needDrain = false;\n // at the start of calling end()\n this.ending = false;\n // when end() has been called, and returned\n this.ended = false;\n // when 'finish' is emitted\n this.finished = false;\n\n // has it been destroyed\n this.destroyed = false;\n\n // should we decode strings into buffers before passing to _write?\n // this is here so that some node-core streams can optimize string\n // handling at a lower level.\n var noDecode = options.decodeStrings === false;\n this.decodeStrings = !noDecode;\n\n // Crypto is kind of old and crusty. Historically, its default string\n // encoding is 'binary' so we have to make this configurable.\n // Everything else in the universe uses 'utf8', though.\n this.defaultEncoding = options.defaultEncoding || 'utf8';\n\n // not an actual buffer we keep track of, but a measurement\n // of how much we're waiting to get pushed to some underlying\n // socket or file.\n this.length = 0;\n\n // a flag to see when we're in the middle of a write.\n this.writing = false;\n\n // when true all writes will be buffered until .uncork() call\n this.corked = 0;\n\n // a flag to be able to tell if the onwrite cb is called immediately,\n // or on a later tick. We set this to true at first, because any\n // actions that shouldn't happen until \"later\" should generally also\n // not happen before the first write call.\n this.sync = true;\n\n // a flag to know if we're processing previously buffered items, which\n // may call the _write() callback in the same tick, so that we don't\n // end up in an overlapped onwrite situation.\n this.bufferProcessing = false;\n\n // the callback that's passed to _write(chunk,cb)\n this.onwrite = function (er) {\n onwrite(stream, er);\n };\n\n // the callback that the user supplies to write(chunk,encoding,cb)\n this.writecb = null;\n\n // the amount that is being written when _write is called.\n this.writelen = 0;\n\n this.bufferedRequest = null;\n this.lastBufferedRequest = null;\n\n // number of pending user-supplied write callbacks\n // this must be 0 before 'finish' can be emitted\n this.pendingcb = 0;\n\n // emit prefinish if the only thing we're waiting for is _write cbs\n // This is relevant for synchronous Transform streams\n this.prefinished = false;\n\n // True if the error was already emitted and should not be thrown again\n this.errorEmitted = false;\n\n // count buffered requests\n this.bufferedRequestCount = 0;\n\n // allocate the first CorkedRequest, there is always\n // one allocated and free to use, and we maintain at most two\n this.corkedRequestsFree = new CorkedRequest(this);\n}\n\nWritableState.prototype.getBuffer = function getBuffer() {\n var current = this.bufferedRequest;\n var out = [];\n while (current) {\n out.push(current);\n current = current.next;\n }\n return out;\n};\n\n(function () {\n try {\n Object.defineProperty(WritableState.prototype, 'buffer', {\n get: internalUtil.deprecate(function () {\n return this.getBuffer();\n }, '_writableState.buffer is deprecated. Use _writableState.getBuffer ' + 'instead.', 'DEP0003')\n });\n } catch (_) {}\n})();\n\n// Test _writableState for inheritance to account for Duplex streams,\n// whose prototype chain only points to Readable.\nvar realHasInstance;\nif (typeof Symbol === 'function' && Symbol.hasInstance && typeof Function.prototype[Symbol.hasInstance] === 'function') {\n realHasInstance = Function.prototype[Symbol.hasInstance];\n Object.defineProperty(Writable, Symbol.hasInstance, {\n value: function (object) {\n if (realHasInstance.call(this, object)) return true;\n if (this !== Writable) return false;\n\n return object && object._writableState instanceof WritableState;\n }\n });\n} else {\n realHasInstance = function (object) {\n return object instanceof this;\n };\n}\n\nfunction Writable(options) {\n Duplex = Duplex || require('./_stream_duplex');\n\n // Writable ctor is applied to Duplexes, too.\n // `realHasInstance` is necessary because using plain `instanceof`\n // would return false, as no `_writableState` property is attached.\n\n // Trying to use the custom `instanceof` for Writable here will also break the\n // Node.js LazyTransform implementation, which has a non-trivial getter for\n // `_writableState` that would lead to infinite recursion.\n if (!realHasInstance.call(Writable, this) && !(this instanceof Duplex)) {\n return new Writable(options);\n }\n\n this._writableState = new WritableState(options, this);\n\n // legacy.\n this.writable = true;\n\n if (options) {\n if (typeof options.write === 'function') this._write = options.write;\n\n if (typeof options.writev === 'function') this._writev = options.writev;\n\n if (typeof options.destroy === 'function') this._destroy = options.destroy;\n\n if (typeof options.final === 'function') this._final = options.final;\n }\n\n Stream.call(this);\n}\n\n// Otherwise people can pipe Writable streams, which is just wrong.\nWritable.prototype.pipe = function () {\n this.emit('error', new Error('Cannot pipe, not readable'));\n};\n\nfunction writeAfterEnd(stream, cb) {\n var er = new Error('write after end');\n // TODO: defer error events consistently everywhere, not just the cb\n stream.emit('error', er);\n pna.nextTick(cb, er);\n}\n\n// Checks that a user-supplied chunk is valid, especially for the particular\n// mode the stream is in. Currently this means that `null` is never accepted\n// and undefined/non-string values are only allowed in object mode.\nfunction validChunk(stream, state, chunk, cb) {\n var valid = true;\n var er = false;\n\n if (chunk === null) {\n er = new TypeError('May not write null values to stream');\n } else if (typeof chunk !== 'string' && chunk !== undefined && !state.objectMode) {\n er = new TypeError('Invalid non-string/buffer chunk');\n }\n if (er) {\n stream.emit('error', er);\n pna.nextTick(cb, er);\n valid = false;\n }\n return valid;\n}\n\nWritable.prototype.write = function (chunk, encoding, cb) {\n var state = this._writableState;\n var ret = false;\n var isBuf = !state.objectMode && _isUint8Array(chunk);\n\n if (isBuf && !Buffer.isBuffer(chunk)) {\n chunk = _uint8ArrayToBuffer(chunk);\n }\n\n if (typeof encoding === 'function') {\n cb = encoding;\n encoding = null;\n }\n\n if (isBuf) encoding = 'buffer';else if (!encoding) encoding = state.defaultEncoding;\n\n if (typeof cb !== 'function') cb = nop;\n\n if (state.ended) writeAfterEnd(this, cb);else if (isBuf || validChunk(this, state, chunk, cb)) {\n state.pendingcb++;\n ret = writeOrBuffer(this, state, isBuf, chunk, encoding, cb);\n }\n\n return ret;\n};\n\nWritable.prototype.cork = function () {\n var state = this._writableState;\n\n state.corked++;\n};\n\nWritable.prototype.uncork = function () {\n var state = this._writableState;\n\n if (state.corked) {\n state.corked--;\n\n if (!state.writing && !state.corked && !state.finished && !state.bufferProcessing && state.bufferedRequest) clearBuffer(this, state);\n }\n};\n\nWritable.prototype.setDefaultEncoding = function setDefaultEncoding(encoding) {\n // node::ParseEncoding() requires lower case.\n if (typeof encoding === 'string') encoding = encoding.toLowerCase();\n if (!(['hex', 'utf8', 'utf-8', 'ascii', 'binary', 'base64', 'ucs2', 'ucs-2', 'utf16le', 'utf-16le', 'raw'].indexOf((encoding + '').toLowerCase()) > -1)) throw new TypeError('Unknown encoding: ' + encoding);\n this._writableState.defaultEncoding = encoding;\n return this;\n};\n\nfunction decodeChunk(state, chunk, encoding) {\n if (!state.objectMode && state.decodeStrings !== false && typeof chunk === 'string') {\n chunk = Buffer.from(chunk, encoding);\n }\n return chunk;\n}\n\nObject.defineProperty(Writable.prototype, 'writableHighWaterMark', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function () {\n return this._writableState.highWaterMark;\n }\n});\n\n// if we're already writing something, then just put this\n// in the queue, and wait our turn. Otherwise, call _write\n// If we return false, then we need a drain event, so set that flag.\nfunction writeOrBuffer(stream, state, isBuf, chunk, encoding, cb) {\n if (!isBuf) {\n var newChunk = decodeChunk(state, chunk, encoding);\n if (chunk !== newChunk) {\n isBuf = true;\n encoding = 'buffer';\n chunk = newChunk;\n }\n }\n var len = state.objectMode ? 1 : chunk.length;\n\n state.length += len;\n\n var ret = state.length < state.highWaterMark;\n // we must ensure that previous needDrain will not be reset to false.\n if (!ret) state.needDrain = true;\n\n if (state.writing || state.corked) {\n var last = state.lastBufferedRequest;\n state.lastBufferedRequest = {\n chunk: chunk,\n encoding: encoding,\n isBuf: isBuf,\n callback: cb,\n next: null\n };\n if (last) {\n last.next = state.lastBufferedRequest;\n } else {\n state.bufferedRequest = state.lastBufferedRequest;\n }\n state.bufferedRequestCount += 1;\n } else {\n doWrite(stream, state, false, len, chunk, encoding, cb);\n }\n\n return ret;\n}\n\nfunction doWrite(stream, state, writev, len, chunk, encoding, cb) {\n state.writelen = len;\n state.writecb = cb;\n state.writing = true;\n state.sync = true;\n if (writev) stream._writev(chunk, state.onwrite);else stream._write(chunk, encoding, state.onwrite);\n state.sync = false;\n}\n\nfunction onwriteError(stream, state, sync, er, cb) {\n --state.pendingcb;\n\n if (sync) {\n // defer the callback if we are being called synchronously\n // to avoid piling up things on the stack\n pna.nextTick(cb, er);\n // this can emit finish, and it will always happen\n // after error\n pna.nextTick(finishMaybe, stream, state);\n stream._writableState.errorEmitted = true;\n stream.emit('error', er);\n } else {\n // the caller expect this to happen before if\n // it is async\n cb(er);\n stream._writableState.errorEmitted = true;\n stream.emit('error', er);\n // this can emit finish, but finish must\n // always follow error\n finishMaybe(stream, state);\n }\n}\n\nfunction onwriteStateUpdate(state) {\n state.writing = false;\n state.writecb = null;\n state.length -= state.writelen;\n state.writelen = 0;\n}\n\nfunction onwrite(stream, er) {\n var state = stream._writableState;\n var sync = state.sync;\n var cb = state.writecb;\n\n onwriteStateUpdate(state);\n\n if (er) onwriteError(stream, state, sync, er, cb);else {\n // Check if we're actually ready to finish, but don't emit yet\n var finished = needFinish(state);\n\n if (!finished && !state.corked && !state.bufferProcessing && state.bufferedRequest) {\n clearBuffer(stream, state);\n }\n\n if (sync) {\n /**/\n asyncWrite(afterWrite, stream, state, finished, cb);\n /**/\n } else {\n afterWrite(stream, state, finished, cb);\n }\n }\n}\n\nfunction afterWrite(stream, state, finished, cb) {\n if (!finished) onwriteDrain(stream, state);\n state.pendingcb--;\n cb();\n finishMaybe(stream, state);\n}\n\n// Must force callback to be called on nextTick, so that we don't\n// emit 'drain' before the write() consumer gets the 'false' return\n// value, and has a chance to attach a 'drain' listener.\nfunction onwriteDrain(stream, state) {\n if (state.length === 0 && state.needDrain) {\n state.needDrain = false;\n stream.emit('drain');\n }\n}\n\n// if there's something in the buffer waiting, then process it\nfunction clearBuffer(stream, state) {\n state.bufferProcessing = true;\n var entry = state.bufferedRequest;\n\n if (stream._writev && entry && entry.next) {\n // Fast case, write everything using _writev()\n var l = state.bufferedRequestCount;\n var buffer = new Array(l);\n var holder = state.corkedRequestsFree;\n holder.entry = entry;\n\n var count = 0;\n var allBuffers = true;\n while (entry) {\n buffer[count] = entry;\n if (!entry.isBuf) allBuffers = false;\n entry = entry.next;\n count += 1;\n }\n buffer.allBuffers = allBuffers;\n\n doWrite(stream, state, true, state.length, buffer, '', holder.finish);\n\n // doWrite is almost always async, defer these to save a bit of time\n // as the hot path ends with doWrite\n state.pendingcb++;\n state.lastBufferedRequest = null;\n if (holder.next) {\n state.corkedRequestsFree = holder.next;\n holder.next = null;\n } else {\n state.corkedRequestsFree = new CorkedRequest(state);\n }\n state.bufferedRequestCount = 0;\n } else {\n // Slow case, write chunks one-by-one\n while (entry) {\n var chunk = entry.chunk;\n var encoding = entry.encoding;\n var cb = entry.callback;\n var len = state.objectMode ? 1 : chunk.length;\n\n doWrite(stream, state, false, len, chunk, encoding, cb);\n entry = entry.next;\n state.bufferedRequestCount--;\n // if we didn't call the onwrite immediately, then\n // it means that we need to wait until it does.\n // also, that means that the chunk and cb are currently\n // being processed, so move the buffer counter past them.\n if (state.writing) {\n break;\n }\n }\n\n if (entry === null) state.lastBufferedRequest = null;\n }\n\n state.bufferedRequest = entry;\n state.bufferProcessing = false;\n}\n\nWritable.prototype._write = function (chunk, encoding, cb) {\n cb(new Error('_write() is not implemented'));\n};\n\nWritable.prototype._writev = null;\n\nWritable.prototype.end = function (chunk, encoding, cb) {\n var state = this._writableState;\n\n if (typeof chunk === 'function') {\n cb = chunk;\n chunk = null;\n encoding = null;\n } else if (typeof encoding === 'function') {\n cb = encoding;\n encoding = null;\n }\n\n if (chunk !== null && chunk !== undefined) this.write(chunk, encoding);\n\n // .end() fully uncorks\n if (state.corked) {\n state.corked = 1;\n this.uncork();\n }\n\n // ignore unnecessary end() calls.\n if (!state.ending && !state.finished) endWritable(this, state, cb);\n};\n\nfunction needFinish(state) {\n return state.ending && state.length === 0 && state.bufferedRequest === null && !state.finished && !state.writing;\n}\nfunction callFinal(stream, state) {\n stream._final(function (err) {\n state.pendingcb--;\n if (err) {\n stream.emit('error', err);\n }\n state.prefinished = true;\n stream.emit('prefinish');\n finishMaybe(stream, state);\n });\n}\nfunction prefinish(stream, state) {\n if (!state.prefinished && !state.finalCalled) {\n if (typeof stream._final === 'function') {\n state.pendingcb++;\n state.finalCalled = true;\n pna.nextTick(callFinal, stream, state);\n } else {\n state.prefinished = true;\n stream.emit('prefinish');\n }\n }\n}\n\nfunction finishMaybe(stream, state) {\n var need = needFinish(state);\n if (need) {\n prefinish(stream, state);\n if (state.pendingcb === 0) {\n state.finished = true;\n stream.emit('finish');\n }\n }\n return need;\n}\n\nfunction endWritable(stream, state, cb) {\n state.ending = true;\n finishMaybe(stream, state);\n if (cb) {\n if (state.finished) pna.nextTick(cb);else stream.once('finish', cb);\n }\n state.ended = true;\n stream.writable = false;\n}\n\nfunction onCorkedFinish(corkReq, state, err) {\n var entry = corkReq.entry;\n corkReq.entry = null;\n while (entry) {\n var cb = entry.callback;\n state.pendingcb--;\n cb(err);\n entry = entry.next;\n }\n if (state.corkedRequestsFree) {\n state.corkedRequestsFree.next = corkReq;\n } else {\n state.corkedRequestsFree = corkReq;\n }\n}\n\nObject.defineProperty(Writable.prototype, 'destroyed', {\n get: function () {\n if (this._writableState === undefined) {\n return false;\n }\n return this._writableState.destroyed;\n },\n set: function (value) {\n // we ignore the value if the stream\n // has not been initialized yet\n if (!this._writableState) {\n return;\n }\n\n // backward compatibility, the user is explicitly\n // managing destroyed\n this._writableState.destroyed = value;\n }\n});\n\nWritable.prototype.destroy = destroyImpl.destroy;\nWritable.prototype._undestroy = destroyImpl.undestroy;\nWritable.prototype._destroy = function (err, cb) {\n this.end();\n cb(err);\n};","'use strict';\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar Buffer = require('safe-buffer').Buffer;\nvar util = require('util');\n\nfunction copyBuffer(src, target, offset) {\n src.copy(target, offset);\n}\n\nmodule.exports = function () {\n function BufferList() {\n _classCallCheck(this, BufferList);\n\n this.head = null;\n this.tail = null;\n this.length = 0;\n }\n\n BufferList.prototype.push = function push(v) {\n var entry = { data: v, next: null };\n if (this.length > 0) this.tail.next = entry;else this.head = entry;\n this.tail = entry;\n ++this.length;\n };\n\n BufferList.prototype.unshift = function unshift(v) {\n var entry = { data: v, next: this.head };\n if (this.length === 0) this.tail = entry;\n this.head = entry;\n ++this.length;\n };\n\n BufferList.prototype.shift = function shift() {\n if (this.length === 0) return;\n var ret = this.head.data;\n if (this.length === 1) this.head = this.tail = null;else this.head = this.head.next;\n --this.length;\n return ret;\n };\n\n BufferList.prototype.clear = function clear() {\n this.head = this.tail = null;\n this.length = 0;\n };\n\n BufferList.prototype.join = function join(s) {\n if (this.length === 0) return '';\n var p = this.head;\n var ret = '' + p.data;\n while (p = p.next) {\n ret += s + p.data;\n }return ret;\n };\n\n BufferList.prototype.concat = function concat(n) {\n if (this.length === 0) return Buffer.alloc(0);\n if (this.length === 1) return this.head.data;\n var ret = Buffer.allocUnsafe(n >>> 0);\n var p = this.head;\n var i = 0;\n while (p) {\n copyBuffer(p.data, ret, i);\n i += p.data.length;\n p = p.next;\n }\n return ret;\n };\n\n return BufferList;\n}();\n\nif (util && util.inspect && util.inspect.custom) {\n module.exports.prototype[util.inspect.custom] = function () {\n var obj = util.inspect({ length: this.length });\n return this.constructor.name + ' ' + obj;\n };\n}","'use strict';\n\n/**/\n\nvar pna = require('process-nextick-args');\n/**/\n\n// undocumented cb() API, needed for core, not for public API\nfunction destroy(err, cb) {\n var _this = this;\n\n var readableDestroyed = this._readableState && this._readableState.destroyed;\n var writableDestroyed = this._writableState && this._writableState.destroyed;\n\n if (readableDestroyed || writableDestroyed) {\n if (cb) {\n cb(err);\n } else if (err && (!this._writableState || !this._writableState.errorEmitted)) {\n pna.nextTick(emitErrorNT, this, err);\n }\n return this;\n }\n\n // we set destroyed to true before firing error callbacks in order\n // to make it re-entrance safe in case destroy() is called within callbacks\n\n if (this._readableState) {\n this._readableState.destroyed = true;\n }\n\n // if this is a duplex stream mark the writable part as destroyed as well\n if (this._writableState) {\n this._writableState.destroyed = true;\n }\n\n this._destroy(err || null, function (err) {\n if (!cb && err) {\n pna.nextTick(emitErrorNT, _this, err);\n if (_this._writableState) {\n _this._writableState.errorEmitted = true;\n }\n } else if (cb) {\n cb(err);\n }\n });\n\n return this;\n}\n\nfunction undestroy() {\n if (this._readableState) {\n this._readableState.destroyed = false;\n this._readableState.reading = false;\n this._readableState.ended = false;\n this._readableState.endEmitted = false;\n }\n\n if (this._writableState) {\n this._writableState.destroyed = false;\n this._writableState.ended = false;\n this._writableState.ending = false;\n this._writableState.finished = false;\n this._writableState.errorEmitted = false;\n }\n}\n\nfunction emitErrorNT(self, err) {\n self.emit('error', err);\n}\n\nmodule.exports = {\n destroy: destroy,\n undestroy: undestroy\n};","module.exports = require('events').EventEmitter;\n","/* eslint-disable node/no-deprecated-api */\nvar buffer = require('buffer')\nvar Buffer = buffer.Buffer\n\n// alternative to using Object.keys for old browsers\nfunction copyProps (src, dst) {\n for (var key in src) {\n dst[key] = src[key]\n }\n}\nif (Buffer.from && Buffer.alloc && Buffer.allocUnsafe && Buffer.allocUnsafeSlow) {\n module.exports = buffer\n} else {\n // Copy properties from require('buffer')\n copyProps(buffer, exports)\n exports.Buffer = SafeBuffer\n}\n\nfunction SafeBuffer (arg, encodingOrOffset, length) {\n return Buffer(arg, encodingOrOffset, length)\n}\n\n// Copy static methods from Buffer\ncopyProps(Buffer, SafeBuffer)\n\nSafeBuffer.from = function (arg, encodingOrOffset, length) {\n if (typeof arg === 'number') {\n throw new TypeError('Argument must not be a number')\n }\n return Buffer(arg, encodingOrOffset, length)\n}\n\nSafeBuffer.alloc = function (size, fill, encoding) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n var buf = Buffer(size)\n if (fill !== undefined) {\n if (typeof encoding === 'string') {\n buf.fill(fill, encoding)\n } else {\n buf.fill(fill)\n }\n } else {\n buf.fill(0)\n }\n return buf\n}\n\nSafeBuffer.allocUnsafe = function (size) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n return Buffer(size)\n}\n\nSafeBuffer.allocUnsafeSlow = function (size) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n return buffer.SlowBuffer(size)\n}\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\n/**/\n\nvar Buffer = require('safe-buffer').Buffer;\n/**/\n\nvar isEncoding = Buffer.isEncoding || function (encoding) {\n encoding = '' + encoding;\n switch (encoding && encoding.toLowerCase()) {\n case 'hex':case 'utf8':case 'utf-8':case 'ascii':case 'binary':case 'base64':case 'ucs2':case 'ucs-2':case 'utf16le':case 'utf-16le':case 'raw':\n return true;\n default:\n return false;\n }\n};\n\nfunction _normalizeEncoding(enc) {\n if (!enc) return 'utf8';\n var retried;\n while (true) {\n switch (enc) {\n case 'utf8':\n case 'utf-8':\n return 'utf8';\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return 'utf16le';\n case 'latin1':\n case 'binary':\n return 'latin1';\n case 'base64':\n case 'ascii':\n case 'hex':\n return enc;\n default:\n if (retried) return; // undefined\n enc = ('' + enc).toLowerCase();\n retried = true;\n }\n }\n};\n\n// Do not cache `Buffer.isEncoding` when checking encoding names as some\n// modules monkey-patch it to support additional encodings\nfunction normalizeEncoding(enc) {\n var nenc = _normalizeEncoding(enc);\n if (typeof nenc !== 'string' && (Buffer.isEncoding === isEncoding || !isEncoding(enc))) throw new Error('Unknown encoding: ' + enc);\n return nenc || enc;\n}\n\n// StringDecoder provides an interface for efficiently splitting a series of\n// buffers into a series of JS strings without breaking apart multi-byte\n// characters.\nexports.StringDecoder = StringDecoder;\nfunction StringDecoder(encoding) {\n this.encoding = normalizeEncoding(encoding);\n var nb;\n switch (this.encoding) {\n case 'utf16le':\n this.text = utf16Text;\n this.end = utf16End;\n nb = 4;\n break;\n case 'utf8':\n this.fillLast = utf8FillLast;\n nb = 4;\n break;\n case 'base64':\n this.text = base64Text;\n this.end = base64End;\n nb = 3;\n break;\n default:\n this.write = simpleWrite;\n this.end = simpleEnd;\n return;\n }\n this.lastNeed = 0;\n this.lastTotal = 0;\n this.lastChar = Buffer.allocUnsafe(nb);\n}\n\nStringDecoder.prototype.write = function (buf) {\n if (buf.length === 0) return '';\n var r;\n var i;\n if (this.lastNeed) {\n r = this.fillLast(buf);\n if (r === undefined) return '';\n i = this.lastNeed;\n this.lastNeed = 0;\n } else {\n i = 0;\n }\n if (i < buf.length) return r ? r + this.text(buf, i) : this.text(buf, i);\n return r || '';\n};\n\nStringDecoder.prototype.end = utf8End;\n\n// Returns only complete characters in a Buffer\nStringDecoder.prototype.text = utf8Text;\n\n// Attempts to complete a partial non-UTF-8 character using bytes from a Buffer\nStringDecoder.prototype.fillLast = function (buf) {\n if (this.lastNeed <= buf.length) {\n buf.copy(this.lastChar, this.lastTotal - this.lastNeed, 0, this.lastNeed);\n return this.lastChar.toString(this.encoding, 0, this.lastTotal);\n }\n buf.copy(this.lastChar, this.lastTotal - this.lastNeed, 0, buf.length);\n this.lastNeed -= buf.length;\n};\n\n// Checks the type of a UTF-8 byte, whether it's ASCII, a leading byte, or a\n// continuation byte. If an invalid byte is detected, -2 is returned.\nfunction utf8CheckByte(byte) {\n if (byte <= 0x7F) return 0;else if (byte >> 5 === 0x06) return 2;else if (byte >> 4 === 0x0E) return 3;else if (byte >> 3 === 0x1E) return 4;\n return byte >> 6 === 0x02 ? -1 : -2;\n}\n\n// Checks at most 3 bytes at the end of a Buffer in order to detect an\n// incomplete multi-byte UTF-8 character. The total number of bytes (2, 3, or 4)\n// needed to complete the UTF-8 character (if applicable) are returned.\nfunction utf8CheckIncomplete(self, buf, i) {\n var j = buf.length - 1;\n if (j < i) return 0;\n var nb = utf8CheckByte(buf[j]);\n if (nb >= 0) {\n if (nb > 0) self.lastNeed = nb - 1;\n return nb;\n }\n if (--j < i || nb === -2) return 0;\n nb = utf8CheckByte(buf[j]);\n if (nb >= 0) {\n if (nb > 0) self.lastNeed = nb - 2;\n return nb;\n }\n if (--j < i || nb === -2) return 0;\n nb = utf8CheckByte(buf[j]);\n if (nb >= 0) {\n if (nb > 0) {\n if (nb === 2) nb = 0;else self.lastNeed = nb - 3;\n }\n return nb;\n }\n return 0;\n}\n\n// Validates as many continuation bytes for a multi-byte UTF-8 character as\n// needed or are available. If we see a non-continuation byte where we expect\n// one, we \"replace\" the validated continuation bytes we've seen so far with\n// a single UTF-8 replacement character ('\\ufffd'), to match v8's UTF-8 decoding\n// behavior. The continuation byte check is included three times in the case\n// where all of the continuation bytes for a character exist in the same buffer.\n// It is also done this way as a slight performance increase instead of using a\n// loop.\nfunction utf8CheckExtraBytes(self, buf, p) {\n if ((buf[0] & 0xC0) !== 0x80) {\n self.lastNeed = 0;\n return '\\ufffd';\n }\n if (self.lastNeed > 1 && buf.length > 1) {\n if ((buf[1] & 0xC0) !== 0x80) {\n self.lastNeed = 1;\n return '\\ufffd';\n }\n if (self.lastNeed > 2 && buf.length > 2) {\n if ((buf[2] & 0xC0) !== 0x80) {\n self.lastNeed = 2;\n return '\\ufffd';\n }\n }\n }\n}\n\n// Attempts to complete a multi-byte UTF-8 character using bytes from a Buffer.\nfunction utf8FillLast(buf) {\n var p = this.lastTotal - this.lastNeed;\n var r = utf8CheckExtraBytes(this, buf, p);\n if (r !== undefined) return r;\n if (this.lastNeed <= buf.length) {\n buf.copy(this.lastChar, p, 0, this.lastNeed);\n return this.lastChar.toString(this.encoding, 0, this.lastTotal);\n }\n buf.copy(this.lastChar, p, 0, buf.length);\n this.lastNeed -= buf.length;\n}\n\n// Returns all complete UTF-8 characters in a Buffer. If the Buffer ended on a\n// partial character, the character's bytes are buffered until the required\n// number of bytes are available.\nfunction utf8Text(buf, i) {\n var total = utf8CheckIncomplete(this, buf, i);\n if (!this.lastNeed) return buf.toString('utf8', i);\n this.lastTotal = total;\n var end = buf.length - (total - this.lastNeed);\n buf.copy(this.lastChar, 0, end);\n return buf.toString('utf8', i, end);\n}\n\n// For UTF-8, a replacement character is added when ending on a partial\n// character.\nfunction utf8End(buf) {\n var r = buf && buf.length ? this.write(buf) : '';\n if (this.lastNeed) return r + '\\ufffd';\n return r;\n}\n\n// UTF-16LE typically needs two bytes per character, but even if we have an even\n// number of bytes available, we need to check if we end on a leading/high\n// surrogate. In that case, we need to wait for the next two bytes in order to\n// decode the last character properly.\nfunction utf16Text(buf, i) {\n if ((buf.length - i) % 2 === 0) {\n var r = buf.toString('utf16le', i);\n if (r) {\n var c = r.charCodeAt(r.length - 1);\n if (c >= 0xD800 && c <= 0xDBFF) {\n this.lastNeed = 2;\n this.lastTotal = 4;\n this.lastChar[0] = buf[buf.length - 2];\n this.lastChar[1] = buf[buf.length - 1];\n return r.slice(0, -1);\n }\n }\n return r;\n }\n this.lastNeed = 1;\n this.lastTotal = 2;\n this.lastChar[0] = buf[buf.length - 1];\n return buf.toString('utf16le', i, buf.length - 1);\n}\n\n// For UTF-16LE we do not explicitly append special replacement characters if we\n// end on a partial character, we simply let v8 handle that.\nfunction utf16End(buf) {\n var r = buf && buf.length ? this.write(buf) : '';\n if (this.lastNeed) {\n var end = this.lastTotal - this.lastNeed;\n return r + this.lastChar.toString('utf16le', 0, end);\n }\n return r;\n}\n\nfunction base64Text(buf, i) {\n var n = (buf.length - i) % 3;\n if (n === 0) return buf.toString('base64', i);\n this.lastNeed = 3 - n;\n this.lastTotal = 3;\n if (n === 1) {\n this.lastChar[0] = buf[buf.length - 1];\n } else {\n this.lastChar[0] = buf[buf.length - 2];\n this.lastChar[1] = buf[buf.length - 1];\n }\n return buf.toString('base64', i, buf.length - n);\n}\n\nfunction base64End(buf) {\n var r = buf && buf.length ? this.write(buf) : '';\n if (this.lastNeed) return r + this.lastChar.toString('base64', 0, 3 - this.lastNeed);\n return r;\n}\n\n// Pass bytes on through for single-byte encodings (e.g. ascii, latin1, hex)\nfunction simpleWrite(buf) {\n return buf.toString(this.encoding);\n}\n\nfunction simpleEnd(buf) {\n return buf && buf.length ? this.write(buf) : '';\n}","exports = module.exports = require('./lib/_stream_readable.js');\nexports.Stream = exports;\nexports.Readable = exports;\nexports.Writable = require('./lib/_stream_writable.js');\nexports.Duplex = require('./lib/_stream_duplex.js');\nexports.Transform = require('./lib/_stream_transform.js');\nexports.PassThrough = require('./lib/_stream_passthrough.js');\n","/**\n * Copyright (c) 2014-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nvar runtime = (function (exports) {\n \"use strict\";\n\n var Op = Object.prototype;\n var hasOwn = Op.hasOwnProperty;\n var undefined; // More compressible than void 0.\n var $Symbol = typeof Symbol === \"function\" ? Symbol : {};\n var iteratorSymbol = $Symbol.iterator || \"@@iterator\";\n var asyncIteratorSymbol = $Symbol.asyncIterator || \"@@asyncIterator\";\n var toStringTagSymbol = $Symbol.toStringTag || \"@@toStringTag\";\n\n function define(obj, key, value) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n return obj[key];\n }\n try {\n // IE 8 has a broken Object.defineProperty that only works on DOM objects.\n define({}, \"\");\n } catch (err) {\n define = function(obj, key, value) {\n return obj[key] = value;\n };\n }\n\n function wrap(innerFn, outerFn, self, tryLocsList) {\n // If outerFn provided and outerFn.prototype is a Generator, then outerFn.prototype instanceof Generator.\n var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator;\n var generator = Object.create(protoGenerator.prototype);\n var context = new Context(tryLocsList || []);\n\n // The ._invoke method unifies the implementations of the .next,\n // .throw, and .return methods.\n generator._invoke = makeInvokeMethod(innerFn, self, context);\n\n return generator;\n }\n exports.wrap = wrap;\n\n // Try/catch helper to minimize deoptimizations. Returns a completion\n // record like context.tryEntries[i].completion. This interface could\n // have been (and was previously) designed to take a closure to be\n // invoked without arguments, but in all the cases we care about we\n // already have an existing method we want to call, so there's no need\n // to create a new function object. We can even get away with assuming\n // the method takes exactly one argument, since that happens to be true\n // in every case, so we don't have to touch the arguments object. The\n // only additional allocation required is the completion record, which\n // has a stable shape and so hopefully should be cheap to allocate.\n function tryCatch(fn, obj, arg) {\n try {\n return { type: \"normal\", arg: fn.call(obj, arg) };\n } catch (err) {\n return { type: \"throw\", arg: err };\n }\n }\n\n var GenStateSuspendedStart = \"suspendedStart\";\n var GenStateSuspendedYield = \"suspendedYield\";\n var GenStateExecuting = \"executing\";\n var GenStateCompleted = \"completed\";\n\n // Returning this object from the innerFn has the same effect as\n // breaking out of the dispatch switch statement.\n var ContinueSentinel = {};\n\n // Dummy constructor functions that we use as the .constructor and\n // .constructor.prototype properties for functions that return Generator\n // objects. For full spec compliance, you may wish to configure your\n // minifier not to mangle the names of these two functions.\n function Generator() {}\n function GeneratorFunction() {}\n function GeneratorFunctionPrototype() {}\n\n // This is a polyfill for %IteratorPrototype% for environments that\n // don't natively support it.\n var IteratorPrototype = {};\n define(IteratorPrototype, iteratorSymbol, function () {\n return this;\n });\n\n var getProto = Object.getPrototypeOf;\n var NativeIteratorPrototype = getProto && getProto(getProto(values([])));\n if (NativeIteratorPrototype &&\n NativeIteratorPrototype !== Op &&\n hasOwn.call(NativeIteratorPrototype, iteratorSymbol)) {\n // This environment has a native %IteratorPrototype%; use it instead\n // of the polyfill.\n IteratorPrototype = NativeIteratorPrototype;\n }\n\n var Gp = GeneratorFunctionPrototype.prototype =\n Generator.prototype = Object.create(IteratorPrototype);\n GeneratorFunction.prototype = GeneratorFunctionPrototype;\n define(Gp, \"constructor\", GeneratorFunctionPrototype);\n define(GeneratorFunctionPrototype, \"constructor\", GeneratorFunction);\n GeneratorFunction.displayName = define(\n GeneratorFunctionPrototype,\n toStringTagSymbol,\n \"GeneratorFunction\"\n );\n\n // Helper for defining the .next, .throw, and .return methods of the\n // Iterator interface in terms of a single ._invoke method.\n function defineIteratorMethods(prototype) {\n [\"next\", \"throw\", \"return\"].forEach(function(method) {\n define(prototype, method, function(arg) {\n return this._invoke(method, arg);\n });\n });\n }\n\n exports.isGeneratorFunction = function(genFun) {\n var ctor = typeof genFun === \"function\" && genFun.constructor;\n return ctor\n ? ctor === GeneratorFunction ||\n // For the native GeneratorFunction constructor, the best we can\n // do is to check its .name property.\n (ctor.displayName || ctor.name) === \"GeneratorFunction\"\n : false;\n };\n\n exports.mark = function(genFun) {\n if (Object.setPrototypeOf) {\n Object.setPrototypeOf(genFun, GeneratorFunctionPrototype);\n } else {\n genFun.__proto__ = GeneratorFunctionPrototype;\n define(genFun, toStringTagSymbol, \"GeneratorFunction\");\n }\n genFun.prototype = Object.create(Gp);\n return genFun;\n };\n\n // Within the body of any async function, `await x` is transformed to\n // `yield regeneratorRuntime.awrap(x)`, so that the runtime can test\n // `hasOwn.call(value, \"__await\")` to determine if the yielded value is\n // meant to be awaited.\n exports.awrap = function(arg) {\n return { __await: arg };\n };\n\n function AsyncIterator(generator, PromiseImpl) {\n function invoke(method, arg, resolve, reject) {\n var record = tryCatch(generator[method], generator, arg);\n if (record.type === \"throw\") {\n reject(record.arg);\n } else {\n var result = record.arg;\n var value = result.value;\n if (value &&\n typeof value === \"object\" &&\n hasOwn.call(value, \"__await\")) {\n return PromiseImpl.resolve(value.__await).then(function(value) {\n invoke(\"next\", value, resolve, reject);\n }, function(err) {\n invoke(\"throw\", err, resolve, reject);\n });\n }\n\n return PromiseImpl.resolve(value).then(function(unwrapped) {\n // When a yielded Promise is resolved, its final value becomes\n // the .value of the Promise<{value,done}> result for the\n // current iteration.\n result.value = unwrapped;\n resolve(result);\n }, function(error) {\n // If a rejected Promise was yielded, throw the rejection back\n // into the async generator function so it can be handled there.\n return invoke(\"throw\", error, resolve, reject);\n });\n }\n }\n\n var previousPromise;\n\n function enqueue(method, arg) {\n function callInvokeWithMethodAndArg() {\n return new PromiseImpl(function(resolve, reject) {\n invoke(method, arg, resolve, reject);\n });\n }\n\n return previousPromise =\n // If enqueue has been called before, then we want to wait until\n // all previous Promises have been resolved before calling invoke,\n // so that results are always delivered in the correct order. If\n // enqueue has not been called before, then it is important to\n // call invoke immediately, without waiting on a callback to fire,\n // so that the async generator function has the opportunity to do\n // any necessary setup in a predictable way. This predictability\n // is why the Promise constructor synchronously invokes its\n // executor callback, and why async functions synchronously\n // execute code before the first await. Since we implement simple\n // async functions in terms of async generators, it is especially\n // important to get this right, even though it requires care.\n previousPromise ? previousPromise.then(\n callInvokeWithMethodAndArg,\n // Avoid propagating failures to Promises returned by later\n // invocations of the iterator.\n callInvokeWithMethodAndArg\n ) : callInvokeWithMethodAndArg();\n }\n\n // Define the unified helper method that is used to implement .next,\n // .throw, and .return (see defineIteratorMethods).\n this._invoke = enqueue;\n }\n\n defineIteratorMethods(AsyncIterator.prototype);\n define(AsyncIterator.prototype, asyncIteratorSymbol, function () {\n return this;\n });\n exports.AsyncIterator = AsyncIterator;\n\n // Note that simple async functions are implemented on top of\n // AsyncIterator objects; they just return a Promise for the value of\n // the final result produced by the iterator.\n exports.async = function(innerFn, outerFn, self, tryLocsList, PromiseImpl) {\n if (PromiseImpl === void 0) PromiseImpl = Promise;\n\n var iter = new AsyncIterator(\n wrap(innerFn, outerFn, self, tryLocsList),\n PromiseImpl\n );\n\n return exports.isGeneratorFunction(outerFn)\n ? iter // If outerFn is a generator, return the full iterator.\n : iter.next().then(function(result) {\n return result.done ? result.value : iter.next();\n });\n };\n\n function makeInvokeMethod(innerFn, self, context) {\n var state = GenStateSuspendedStart;\n\n return function invoke(method, arg) {\n if (state === GenStateExecuting) {\n throw new Error(\"Generator is already running\");\n }\n\n if (state === GenStateCompleted) {\n if (method === \"throw\") {\n throw arg;\n }\n\n // Be forgiving, per 25.3.3.3.3 of the spec:\n // https://people.mozilla.org/~jorendorff/es6-draft.html#sec-generatorresume\n return doneResult();\n }\n\n context.method = method;\n context.arg = arg;\n\n while (true) {\n var delegate = context.delegate;\n if (delegate) {\n var delegateResult = maybeInvokeDelegate(delegate, context);\n if (delegateResult) {\n if (delegateResult === ContinueSentinel) continue;\n return delegateResult;\n }\n }\n\n if (context.method === \"next\") {\n // Setting context._sent for legacy support of Babel's\n // function.sent implementation.\n context.sent = context._sent = context.arg;\n\n } else if (context.method === \"throw\") {\n if (state === GenStateSuspendedStart) {\n state = GenStateCompleted;\n throw context.arg;\n }\n\n context.dispatchException(context.arg);\n\n } else if (context.method === \"return\") {\n context.abrupt(\"return\", context.arg);\n }\n\n state = GenStateExecuting;\n\n var record = tryCatch(innerFn, self, context);\n if (record.type === \"normal\") {\n // If an exception is thrown from innerFn, we leave state ===\n // GenStateExecuting and loop back for another invocation.\n state = context.done\n ? GenStateCompleted\n : GenStateSuspendedYield;\n\n if (record.arg === ContinueSentinel) {\n continue;\n }\n\n return {\n value: record.arg,\n done: context.done\n };\n\n } else if (record.type === \"throw\") {\n state = GenStateCompleted;\n // Dispatch the exception by looping back around to the\n // context.dispatchException(context.arg) call above.\n context.method = \"throw\";\n context.arg = record.arg;\n }\n }\n };\n }\n\n // Call delegate.iterator[context.method](context.arg) and handle the\n // result, either by returning a { value, done } result from the\n // delegate iterator, or by modifying context.method and context.arg,\n // setting context.delegate to null, and returning the ContinueSentinel.\n function maybeInvokeDelegate(delegate, context) {\n var method = delegate.iterator[context.method];\n if (method === undefined) {\n // A .throw or .return when the delegate iterator has no .throw\n // method always terminates the yield* loop.\n context.delegate = null;\n\n if (context.method === \"throw\") {\n // Note: [\"return\"] must be used for ES3 parsing compatibility.\n if (delegate.iterator[\"return\"]) {\n // If the delegate iterator has a return method, give it a\n // chance to clean up.\n context.method = \"return\";\n context.arg = undefined;\n maybeInvokeDelegate(delegate, context);\n\n if (context.method === \"throw\") {\n // If maybeInvokeDelegate(context) changed context.method from\n // \"return\" to \"throw\", let that override the TypeError below.\n return ContinueSentinel;\n }\n }\n\n context.method = \"throw\";\n context.arg = new TypeError(\n \"The iterator does not provide a 'throw' method\");\n }\n\n return ContinueSentinel;\n }\n\n var record = tryCatch(method, delegate.iterator, context.arg);\n\n if (record.type === \"throw\") {\n context.method = \"throw\";\n context.arg = record.arg;\n context.delegate = null;\n return ContinueSentinel;\n }\n\n var info = record.arg;\n\n if (! info) {\n context.method = \"throw\";\n context.arg = new TypeError(\"iterator result is not an object\");\n context.delegate = null;\n return ContinueSentinel;\n }\n\n if (info.done) {\n // Assign the result of the finished delegate to the temporary\n // variable specified by delegate.resultName (see delegateYield).\n context[delegate.resultName] = info.value;\n\n // Resume execution at the desired location (see delegateYield).\n context.next = delegate.nextLoc;\n\n // If context.method was \"throw\" but the delegate handled the\n // exception, let the outer generator proceed normally. If\n // context.method was \"next\", forget context.arg since it has been\n // \"consumed\" by the delegate iterator. If context.method was\n // \"return\", allow the original .return call to continue in the\n // outer generator.\n if (context.method !== \"return\") {\n context.method = \"next\";\n context.arg = undefined;\n }\n\n } else {\n // Re-yield the result returned by the delegate method.\n return info;\n }\n\n // The delegate iterator is finished, so forget it and continue with\n // the outer generator.\n context.delegate = null;\n return ContinueSentinel;\n }\n\n // Define Generator.prototype.{next,throw,return} in terms of the\n // unified ._invoke helper method.\n defineIteratorMethods(Gp);\n\n define(Gp, toStringTagSymbol, \"Generator\");\n\n // A Generator should always return itself as the iterator object when the\n // @@iterator function is called on it. Some browsers' implementations of the\n // iterator prototype chain incorrectly implement this, causing the Generator\n // object to not be returned from this call. This ensures that doesn't happen.\n // See https://github.com/facebook/regenerator/issues/274 for more details.\n define(Gp, iteratorSymbol, function() {\n return this;\n });\n\n define(Gp, \"toString\", function() {\n return \"[object Generator]\";\n });\n\n function pushTryEntry(locs) {\n var entry = { tryLoc: locs[0] };\n\n if (1 in locs) {\n entry.catchLoc = locs[1];\n }\n\n if (2 in locs) {\n entry.finallyLoc = locs[2];\n entry.afterLoc = locs[3];\n }\n\n this.tryEntries.push(entry);\n }\n\n function resetTryEntry(entry) {\n var record = entry.completion || {};\n record.type = \"normal\";\n delete record.arg;\n entry.completion = record;\n }\n\n function Context(tryLocsList) {\n // The root entry object (effectively a try statement without a catch\n // or a finally block) gives us a place to store values thrown from\n // locations where there is no enclosing try statement.\n this.tryEntries = [{ tryLoc: \"root\" }];\n tryLocsList.forEach(pushTryEntry, this);\n this.reset(true);\n }\n\n exports.keys = function(object) {\n var keys = [];\n for (var key in object) {\n keys.push(key);\n }\n keys.reverse();\n\n // Rather than returning an object with a next method, we keep\n // things simple and return the next function itself.\n return function next() {\n while (keys.length) {\n var key = keys.pop();\n if (key in object) {\n next.value = key;\n next.done = false;\n return next;\n }\n }\n\n // To avoid creating an additional object, we just hang the .value\n // and .done properties off the next function object itself. This\n // also ensures that the minifier will not anonymize the function.\n next.done = true;\n return next;\n };\n };\n\n function values(iterable) {\n if (iterable) {\n var iteratorMethod = iterable[iteratorSymbol];\n if (iteratorMethod) {\n return iteratorMethod.call(iterable);\n }\n\n if (typeof iterable.next === \"function\") {\n return iterable;\n }\n\n if (!isNaN(iterable.length)) {\n var i = -1, next = function next() {\n while (++i < iterable.length) {\n if (hasOwn.call(iterable, i)) {\n next.value = iterable[i];\n next.done = false;\n return next;\n }\n }\n\n next.value = undefined;\n next.done = true;\n\n return next;\n };\n\n return next.next = next;\n }\n }\n\n // Return an iterator with no values.\n return { next: doneResult };\n }\n exports.values = values;\n\n function doneResult() {\n return { value: undefined, done: true };\n }\n\n Context.prototype = {\n constructor: Context,\n\n reset: function(skipTempReset) {\n this.prev = 0;\n this.next = 0;\n // Resetting context._sent for legacy support of Babel's\n // function.sent implementation.\n this.sent = this._sent = undefined;\n this.done = false;\n this.delegate = null;\n\n this.method = \"next\";\n this.arg = undefined;\n\n this.tryEntries.forEach(resetTryEntry);\n\n if (!skipTempReset) {\n for (var name in this) {\n // Not sure about the optimal order of these conditions:\n if (name.charAt(0) === \"t\" &&\n hasOwn.call(this, name) &&\n !isNaN(+name.slice(1))) {\n this[name] = undefined;\n }\n }\n }\n },\n\n stop: function() {\n this.done = true;\n\n var rootEntry = this.tryEntries[0];\n var rootRecord = rootEntry.completion;\n if (rootRecord.type === \"throw\") {\n throw rootRecord.arg;\n }\n\n return this.rval;\n },\n\n dispatchException: function(exception) {\n if (this.done) {\n throw exception;\n }\n\n var context = this;\n function handle(loc, caught) {\n record.type = \"throw\";\n record.arg = exception;\n context.next = loc;\n\n if (caught) {\n // If the dispatched exception was caught by a catch block,\n // then let that catch block handle the exception normally.\n context.method = \"next\";\n context.arg = undefined;\n }\n\n return !! caught;\n }\n\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n var record = entry.completion;\n\n if (entry.tryLoc === \"root\") {\n // Exception thrown outside of any try block that could handle\n // it, so set the completion value of the entire function to\n // throw the exception.\n return handle(\"end\");\n }\n\n if (entry.tryLoc <= this.prev) {\n var hasCatch = hasOwn.call(entry, \"catchLoc\");\n var hasFinally = hasOwn.call(entry, \"finallyLoc\");\n\n if (hasCatch && hasFinally) {\n if (this.prev < entry.catchLoc) {\n return handle(entry.catchLoc, true);\n } else if (this.prev < entry.finallyLoc) {\n return handle(entry.finallyLoc);\n }\n\n } else if (hasCatch) {\n if (this.prev < entry.catchLoc) {\n return handle(entry.catchLoc, true);\n }\n\n } else if (hasFinally) {\n if (this.prev < entry.finallyLoc) {\n return handle(entry.finallyLoc);\n }\n\n } else {\n throw new Error(\"try statement without catch or finally\");\n }\n }\n }\n },\n\n abrupt: function(type, arg) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc <= this.prev &&\n hasOwn.call(entry, \"finallyLoc\") &&\n this.prev < entry.finallyLoc) {\n var finallyEntry = entry;\n break;\n }\n }\n\n if (finallyEntry &&\n (type === \"break\" ||\n type === \"continue\") &&\n finallyEntry.tryLoc <= arg &&\n arg <= finallyEntry.finallyLoc) {\n // Ignore the finally entry if control is not jumping to a\n // location outside the try/catch block.\n finallyEntry = null;\n }\n\n var record = finallyEntry ? finallyEntry.completion : {};\n record.type = type;\n record.arg = arg;\n\n if (finallyEntry) {\n this.method = \"next\";\n this.next = finallyEntry.finallyLoc;\n return ContinueSentinel;\n }\n\n return this.complete(record);\n },\n\n complete: function(record, afterLoc) {\n if (record.type === \"throw\") {\n throw record.arg;\n }\n\n if (record.type === \"break\" ||\n record.type === \"continue\") {\n this.next = record.arg;\n } else if (record.type === \"return\") {\n this.rval = this.arg = record.arg;\n this.method = \"return\";\n this.next = \"end\";\n } else if (record.type === \"normal\" && afterLoc) {\n this.next = afterLoc;\n }\n\n return ContinueSentinel;\n },\n\n finish: function(finallyLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.finallyLoc === finallyLoc) {\n this.complete(entry.completion, entry.afterLoc);\n resetTryEntry(entry);\n return ContinueSentinel;\n }\n }\n },\n\n \"catch\": function(tryLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc === tryLoc) {\n var record = entry.completion;\n if (record.type === \"throw\") {\n var thrown = record.arg;\n resetTryEntry(entry);\n }\n return thrown;\n }\n }\n\n // The context.catch method must only be called with a location\n // argument that corresponds to a known catch block.\n throw new Error(\"illegal catch attempt\");\n },\n\n delegateYield: function(iterable, resultName, nextLoc) {\n this.delegate = {\n iterator: values(iterable),\n resultName: resultName,\n nextLoc: nextLoc\n };\n\n if (this.method === \"next\") {\n // Deliberately forget the last sent value so that we don't\n // accidentally pass it on to the delegate.\n this.arg = undefined;\n }\n\n return ContinueSentinel;\n }\n };\n\n // Regardless of whether this script is executing as a CommonJS module\n // or not, return the runtime object so that we can declare the variable\n // regeneratorRuntime in the outer scope, which allows this module to be\n // injected easily by `bin/regenerator --include-runtime script.js`.\n return exports;\n\n}(\n // If this script is executing as a CommonJS module, use module.exports\n // as the regeneratorRuntime namespace. Otherwise create a new empty\n // object. Either way, the resulting object will be used to initialize\n // the regeneratorRuntime variable at the top of this file.\n typeof module === \"object\" ? module.exports : {}\n));\n\ntry {\n regeneratorRuntime = runtime;\n} catch (accidentalStrictMode) {\n // This module should not be running in strict mode, so the above\n // assignment should always work unless something is misconfigured. Just\n // in case runtime.js accidentally runs in strict mode, in modern engines\n // we can explicitly access globalThis. In older engines we can escape\n // strict mode using a global Function call. This could conceivably fail\n // if a Content Security Policy forbids using Function, but in that case\n // the proper solution is to fix the accidental strict mode problem. If\n // you've misconfigured your bundler to force strict mode and applied a\n // CSP to forbid Function, and you're not willing to fix either of those\n // problems, please detail your unique predicament in a GitHub issue.\n if (typeof globalThis === \"object\") {\n globalThis.regeneratorRuntime = runtime;\n } else {\n Function(\"r\", \"regeneratorRuntime = r\")(runtime);\n }\n}\n","/*! safe-buffer. MIT License. Feross Aboukhadijeh */\n/* eslint-disable node/no-deprecated-api */\nvar buffer = require('buffer')\nvar Buffer = buffer.Buffer\n\n// alternative to using Object.keys for old browsers\nfunction copyProps (src, dst) {\n for (var key in src) {\n dst[key] = src[key]\n }\n}\nif (Buffer.from && Buffer.alloc && Buffer.allocUnsafe && Buffer.allocUnsafeSlow) {\n module.exports = buffer\n} else {\n // Copy properties from require('buffer')\n copyProps(buffer, exports)\n exports.Buffer = SafeBuffer\n}\n\nfunction SafeBuffer (arg, encodingOrOffset, length) {\n return Buffer(arg, encodingOrOffset, length)\n}\n\nSafeBuffer.prototype = Object.create(Buffer.prototype)\n\n// Copy static methods from Buffer\ncopyProps(Buffer, SafeBuffer)\n\nSafeBuffer.from = function (arg, encodingOrOffset, length) {\n if (typeof arg === 'number') {\n throw new TypeError('Argument must not be a number')\n }\n return Buffer(arg, encodingOrOffset, length)\n}\n\nSafeBuffer.alloc = function (size, fill, encoding) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n var buf = Buffer(size)\n if (fill !== undefined) {\n if (typeof encoding === 'string') {\n buf.fill(fill, encoding)\n } else {\n buf.fill(fill)\n }\n } else {\n buf.fill(0)\n }\n return buf\n}\n\nSafeBuffer.allocUnsafe = function (size) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n return Buffer(size)\n}\n\nSafeBuffer.allocUnsafeSlow = function (size) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n return buffer.SlowBuffer(size)\n}\n","/**\n * @license React\n * scheduler.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n'use strict';function f(a,b){var c=a.length;a.push(b);a:for(;0>>1,e=a[d];if(0>>1;dg(C,c))ng(x,C)?(a[d]=x,a[n]=c,d=n):(a[d]=C,a[m]=c,d=m);else if(ng(x,c))a[d]=x,a[n]=c,d=n;else break a}}return b}\nfunction g(a,b){var c=a.sortIndex-b.sortIndex;return 0!==c?c:a.id-b.id}if(\"object\"===typeof performance&&\"function\"===typeof performance.now){var l=performance;exports.unstable_now=function(){return l.now()}}else{var p=Date,q=p.now();exports.unstable_now=function(){return p.now()-q}}var r=[],t=[],u=1,v=null,y=3,z=!1,A=!1,B=!1,D=\"function\"===typeof setTimeout?setTimeout:null,E=\"function\"===typeof clearTimeout?clearTimeout:null,F=\"undefined\"!==typeof setImmediate?setImmediate:null;\n\"undefined\"!==typeof navigator&&void 0!==navigator.scheduling&&void 0!==navigator.scheduling.isInputPending&&navigator.scheduling.isInputPending.bind(navigator.scheduling);function G(a){for(var b=h(t);null!==b;){if(null===b.callback)k(t);else if(b.startTime<=a)k(t),b.sortIndex=b.expirationTime,f(r,b);else break;b=h(t)}}function H(a){B=!1;G(a);if(!A)if(null!==h(r))A=!0,I(J);else{var b=h(t);null!==b&&K(H,b.startTime-a)}}\nfunction J(a,b){A=!1;B&&(B=!1,E(L),L=-1);z=!0;var c=y;try{G(b);for(v=h(r);null!==v&&(!(v.expirationTime>b)||a&&!M());){var d=v.callback;if(\"function\"===typeof d){v.callback=null;y=v.priorityLevel;var e=d(v.expirationTime<=b);b=exports.unstable_now();\"function\"===typeof e?v.callback=e:v===h(r)&&k(r);G(b)}else k(r);v=h(r)}if(null!==v)var w=!0;else{var m=h(t);null!==m&&K(H,m.startTime-b);w=!1}return w}finally{v=null,y=c,z=!1}}var N=!1,O=null,L=-1,P=5,Q=-1;\nfunction M(){return exports.unstable_now()-Qa||125d?(a.sortIndex=c,f(t,a),null===h(r)&&a===h(t)&&(B?(E(L),L=-1):B=!0,K(H,c-d))):(a.sortIndex=e,f(r,a),A||z||(A=!0,I(J)));return a};\nexports.unstable_shouldYield=M;exports.unstable_wrapCallback=function(a){var b=y;return function(){var c=y;y=b;try{return a.apply(this,arguments)}finally{y=c}}};\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/scheduler.production.min.js');\n} else {\n module.exports = require('./cjs/scheduler.development.js');\n}\n","/*!\n * set-value \n *\n * Copyright (c) 2014-2015, 2017, Jon Schlinkert.\n * Released under the MIT License.\n */\n\n'use strict';\n\nvar split = require('split-string');\nvar extend = require('extend-shallow');\nvar isPlainObject = require('is-plain-object');\nvar isObject = require('is-extendable');\n\nmodule.exports = function(obj, prop, val) {\n if (!isObject(obj)) {\n return obj;\n }\n\n if (Array.isArray(prop)) {\n prop = [].concat.apply([], prop).join('.');\n }\n\n if (typeof prop !== 'string') {\n return obj;\n }\n\n var keys = split(prop, {sep: '.', brackets: true}).filter(isValidKey);\n var len = keys.length;\n var idx = -1;\n var current = obj;\n\n while (++idx < len) {\n var key = keys[idx];\n if (idx !== len - 1) {\n if (!isObject(current[key])) {\n current[key] = {};\n }\n current = current[key];\n continue;\n }\n\n if (isPlainObject(current[key]) && isPlainObject(val)) {\n current[key] = extend({}, current[key], val);\n } else {\n current[key] = val;\n }\n }\n\n return obj;\n};\n\nfunction isValidKey(key) {\n return key !== '__proto__' && key !== 'constructor' && key !== 'prototype';\n}\n","'use strict';\n\nvar GetIntrinsic = require('get-intrinsic');\nvar callBound = require('call-bind/callBound');\nvar inspect = require('object-inspect');\n\nvar $TypeError = GetIntrinsic('%TypeError%');\nvar $WeakMap = GetIntrinsic('%WeakMap%', true);\nvar $Map = GetIntrinsic('%Map%', true);\n\nvar $weakMapGet = callBound('WeakMap.prototype.get', true);\nvar $weakMapSet = callBound('WeakMap.prototype.set', true);\nvar $weakMapHas = callBound('WeakMap.prototype.has', true);\nvar $mapGet = callBound('Map.prototype.get', true);\nvar $mapSet = callBound('Map.prototype.set', true);\nvar $mapHas = callBound('Map.prototype.has', true);\n\n/*\n * This function traverses the list returning the node corresponding to the\n * given key.\n *\n * That node is also moved to the head of the list, so that if it's accessed\n * again we don't need to traverse the whole list. By doing so, all the recently\n * used nodes can be accessed relatively quickly.\n */\nvar listGetNode = function (list, key) { // eslint-disable-line consistent-return\n\tfor (var prev = list, curr; (curr = prev.next) !== null; prev = curr) {\n\t\tif (curr.key === key) {\n\t\t\tprev.next = curr.next;\n\t\t\tcurr.next = list.next;\n\t\t\tlist.next = curr; // eslint-disable-line no-param-reassign\n\t\t\treturn curr;\n\t\t}\n\t}\n};\n\nvar listGet = function (objects, key) {\n\tvar node = listGetNode(objects, key);\n\treturn node && node.value;\n};\nvar listSet = function (objects, key, value) {\n\tvar node = listGetNode(objects, key);\n\tif (node) {\n\t\tnode.value = value;\n\t} else {\n\t\t// Prepend the new node to the beginning of the list\n\t\tobjects.next = { // eslint-disable-line no-param-reassign\n\t\t\tkey: key,\n\t\t\tnext: objects.next,\n\t\t\tvalue: value\n\t\t};\n\t}\n};\nvar listHas = function (objects, key) {\n\treturn !!listGetNode(objects, key);\n};\n\nmodule.exports = function getSideChannel() {\n\tvar $wm;\n\tvar $m;\n\tvar $o;\n\tvar channel = {\n\t\tassert: function (key) {\n\t\t\tif (!channel.has(key)) {\n\t\t\t\tthrow new $TypeError('Side channel does not contain ' + inspect(key));\n\t\t\t}\n\t\t},\n\t\tget: function (key) { // eslint-disable-line consistent-return\n\t\t\tif ($WeakMap && key && (typeof key === 'object' || typeof key === 'function')) {\n\t\t\t\tif ($wm) {\n\t\t\t\t\treturn $weakMapGet($wm, key);\n\t\t\t\t}\n\t\t\t} else if ($Map) {\n\t\t\t\tif ($m) {\n\t\t\t\t\treturn $mapGet($m, key);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif ($o) { // eslint-disable-line no-lonely-if\n\t\t\t\t\treturn listGet($o, key);\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\thas: function (key) {\n\t\t\tif ($WeakMap && key && (typeof key === 'object' || typeof key === 'function')) {\n\t\t\t\tif ($wm) {\n\t\t\t\t\treturn $weakMapHas($wm, key);\n\t\t\t\t}\n\t\t\t} else if ($Map) {\n\t\t\t\tif ($m) {\n\t\t\t\t\treturn $mapHas($m, key);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif ($o) { // eslint-disable-line no-lonely-if\n\t\t\t\t\treturn listHas($o, key);\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn false;\n\t\t},\n\t\tset: function (key, value) {\n\t\t\tif ($WeakMap && key && (typeof key === 'object' || typeof key === 'function')) {\n\t\t\t\tif (!$wm) {\n\t\t\t\t\t$wm = new $WeakMap();\n\t\t\t\t}\n\t\t\t\t$weakMapSet($wm, key, value);\n\t\t\t} else if ($Map) {\n\t\t\t\tif (!$m) {\n\t\t\t\t\t$m = new $Map();\n\t\t\t\t}\n\t\t\t\t$mapSet($m, key, value);\n\t\t\t} else {\n\t\t\t\tif (!$o) {\n\t\t\t\t\t/*\n\t\t\t\t\t * Initialize the linked list as an empty node, so that we don't have\n\t\t\t\t\t * to special-case handling of the first node: we can always refer to\n\t\t\t\t\t * it as (previous node).next, instead of something like (list).head\n\t\t\t\t\t */\n\t\t\t\t\t$o = { key: {}, next: null };\n\t\t\t\t}\n\t\t\t\tlistSet($o, key, value);\n\t\t\t}\n\t\t}\n\t};\n\treturn channel;\n};\n","/*!\n * split-string \n *\n * Copyright (c) 2015-2017, Jon Schlinkert.\n * Released under the MIT License.\n */\n\n'use strict';\n\nvar extend = require('extend-shallow');\n\nmodule.exports = function(str, options, fn) {\n if (typeof str !== 'string') {\n throw new TypeError('expected a string');\n }\n\n if (typeof options === 'function') {\n fn = options;\n options = null;\n }\n\n // allow separator to be defined as a string\n if (typeof options === 'string') {\n options = { sep: options };\n }\n\n var opts = extend({sep: '.'}, options);\n var quotes = opts.quotes || ['\"', \"'\", '`'];\n var brackets;\n\n if (opts.brackets === true) {\n brackets = {\n '<': '>',\n '(': ')',\n '[': ']',\n '{': '}'\n };\n } else if (opts.brackets) {\n brackets = opts.brackets;\n }\n\n var tokens = [];\n var stack = [];\n var arr = [''];\n var sep = opts.sep;\n var len = str.length;\n var idx = -1;\n var closeIdx;\n\n function expected() {\n if (brackets && stack.length) {\n return brackets[stack[stack.length - 1]];\n }\n }\n\n while (++idx < len) {\n var ch = str[idx];\n var next = str[idx + 1];\n var tok = { val: ch, idx: idx, arr: arr, str: str };\n tokens.push(tok);\n\n if (ch === '\\\\') {\n tok.val = keepEscaping(opts, str, idx) === true ? (ch + next) : next;\n tok.escaped = true;\n if (typeof fn === 'function') {\n fn(tok);\n }\n arr[arr.length - 1] += tok.val;\n idx++;\n continue;\n }\n\n if (brackets && brackets[ch]) {\n stack.push(ch);\n var e = expected();\n var i = idx + 1;\n\n if (str.indexOf(e, i + 1) !== -1) {\n while (stack.length && i < len) {\n var s = str[++i];\n if (s === '\\\\') {\n s++;\n continue;\n }\n\n if (quotes.indexOf(s) !== -1) {\n i = getClosingQuote(str, s, i + 1);\n continue;\n }\n\n e = expected();\n if (stack.length && str.indexOf(e, i + 1) === -1) {\n break;\n }\n\n if (brackets[s]) {\n stack.push(s);\n continue;\n }\n\n if (e === s) {\n stack.pop();\n }\n }\n }\n\n closeIdx = i;\n if (closeIdx === -1) {\n arr[arr.length - 1] += ch;\n continue;\n }\n\n ch = str.slice(idx, closeIdx + 1);\n tok.val = ch;\n tok.idx = idx = closeIdx;\n }\n\n if (quotes.indexOf(ch) !== -1) {\n closeIdx = getClosingQuote(str, ch, idx + 1);\n if (closeIdx === -1) {\n arr[arr.length - 1] += ch;\n continue;\n }\n\n if (keepQuotes(ch, opts) === true) {\n ch = str.slice(idx, closeIdx + 1);\n } else {\n ch = str.slice(idx + 1, closeIdx);\n }\n\n tok.val = ch;\n tok.idx = idx = closeIdx;\n }\n\n if (typeof fn === 'function') {\n fn(tok, tokens);\n ch = tok.val;\n idx = tok.idx;\n }\n\n if (tok.val === sep && tok.split !== false) {\n arr.push('');\n continue;\n }\n\n arr[arr.length - 1] += tok.val;\n }\n\n return arr;\n};\n\nfunction getClosingQuote(str, ch, i, brackets) {\n var idx = str.indexOf(ch, i);\n if (str.charAt(idx - 1) === '\\\\') {\n return getClosingQuote(str, ch, idx + 1);\n }\n return idx;\n}\n\nfunction keepQuotes(ch, opts) {\n if (opts.keepDoubleQuotes === true && ch === '\"') return true;\n if (opts.keepSingleQuotes === true && ch === \"'\") return true;\n return opts.keepQuotes;\n}\n\nfunction keepEscaping(opts, str, idx) {\n if (typeof opts.keepEscaping === 'function') {\n return opts.keepEscaping(str, idx);\n }\n return opts.keepEscaping === true || str[idx + 1] === '\\\\';\n}\n","'use strict';\n\nvar isExtendable = require('is-extendable');\nvar assignSymbols = require('assign-symbols');\n\nmodule.exports = Object.assign || function(obj/*, objects*/) {\n if (obj === null || typeof obj === 'undefined') {\n throw new TypeError('Cannot convert undefined or null to object');\n }\n if (!isObject(obj)) {\n obj = {};\n }\n for (var i = 1; i < arguments.length; i++) {\n var val = arguments[i];\n if (isString(val)) {\n val = toObject(val);\n }\n if (isObject(val)) {\n assign(obj, val);\n assignSymbols(obj, val);\n }\n }\n return obj;\n};\n\nfunction assign(a, b) {\n for (var key in b) {\n if (hasOwn(b, key)) {\n a[key] = b[key];\n }\n }\n}\n\nfunction isString(val) {\n return (val && typeof val === 'string');\n}\n\nfunction toObject(str) {\n var obj = {};\n for (var i in str) {\n obj[i] = str[i];\n }\n return obj;\n}\n\nfunction isObject(val) {\n return (val && typeof val === 'object') || isExtendable(val);\n}\n\n/**\n * Returns true if the given `key` is an own property of `obj`.\n */\n\nfunction hasOwn(obj, key) {\n return Object.prototype.hasOwnProperty.call(obj, key);\n}\n\nfunction isEnum(obj, key) {\n return Object.prototype.propertyIsEnumerable.call(obj, key);\n}\n","/*!\n * is-extendable \n *\n * Copyright (c) 2015-2017, Jon Schlinkert.\n * Released under the MIT License.\n */\n\n'use strict';\n\nvar isPlainObject = require('is-plain-object');\n\nmodule.exports = function isExtendable(val) {\n return isPlainObject(val) || typeof val === 'function' || Array.isArray(val);\n};\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\nmodule.exports = Stream;\n\nvar EE = require('events').EventEmitter;\nvar inherits = require('inherits');\n\ninherits(Stream, EE);\nStream.Readable = require('readable-stream/lib/_stream_readable.js');\nStream.Writable = require('readable-stream/lib/_stream_writable.js');\nStream.Duplex = require('readable-stream/lib/_stream_duplex.js');\nStream.Transform = require('readable-stream/lib/_stream_transform.js');\nStream.PassThrough = require('readable-stream/lib/_stream_passthrough.js');\nStream.finished = require('readable-stream/lib/internal/streams/end-of-stream.js')\nStream.pipeline = require('readable-stream/lib/internal/streams/pipeline.js')\n\n// Backwards-compat with node 0.4.x\nStream.Stream = Stream;\n\n\n\n// old-style streams. Note that the pipe method (the only relevant\n// part of this class) is overridden in the Readable class.\n\nfunction Stream() {\n EE.call(this);\n}\n\nStream.prototype.pipe = function(dest, options) {\n var source = this;\n\n function ondata(chunk) {\n if (dest.writable) {\n if (false === dest.write(chunk) && source.pause) {\n source.pause();\n }\n }\n }\n\n source.on('data', ondata);\n\n function ondrain() {\n if (source.readable && source.resume) {\n source.resume();\n }\n }\n\n dest.on('drain', ondrain);\n\n // If the 'end' option is not supplied, dest.end() will be called when\n // source gets the 'end' or 'close' events. Only dest.end() once.\n if (!dest._isStdio && (!options || options.end !== false)) {\n source.on('end', onend);\n source.on('close', onclose);\n }\n\n var didOnEnd = false;\n function onend() {\n if (didOnEnd) return;\n didOnEnd = true;\n\n dest.end();\n }\n\n\n function onclose() {\n if (didOnEnd) return;\n didOnEnd = true;\n\n if (typeof dest.destroy === 'function') dest.destroy();\n }\n\n // don't leave dangling pipes when there are errors.\n function onerror(er) {\n cleanup();\n if (EE.listenerCount(this, 'error') === 0) {\n throw er; // Unhandled stream error in pipe.\n }\n }\n\n source.on('error', onerror);\n dest.on('error', onerror);\n\n // remove all the event listeners that were added.\n function cleanup() {\n source.removeListener('data', ondata);\n dest.removeListener('drain', ondrain);\n\n source.removeListener('end', onend);\n source.removeListener('close', onclose);\n\n source.removeListener('error', onerror);\n dest.removeListener('error', onerror);\n\n source.removeListener('end', cleanup);\n source.removeListener('close', cleanup);\n\n dest.removeListener('close', cleanup);\n }\n\n source.on('end', cleanup);\n source.on('close', cleanup);\n\n dest.on('close', cleanup);\n\n dest.emit('pipe', source);\n\n // Allow for unix-like usage: A.pipe(B).pipe(C)\n return dest;\n};\n","'use strict';\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\n\nvar codes = {};\n\nfunction createErrorType(code, message, Base) {\n if (!Base) {\n Base = Error;\n }\n\n function getMessage(arg1, arg2, arg3) {\n if (typeof message === 'string') {\n return message;\n } else {\n return message(arg1, arg2, arg3);\n }\n }\n\n var NodeError =\n /*#__PURE__*/\n function (_Base) {\n _inheritsLoose(NodeError, _Base);\n\n function NodeError(arg1, arg2, arg3) {\n return _Base.call(this, getMessage(arg1, arg2, arg3)) || this;\n }\n\n return NodeError;\n }(Base);\n\n NodeError.prototype.name = Base.name;\n NodeError.prototype.code = code;\n codes[code] = NodeError;\n} // https://github.com/nodejs/node/blob/v10.8.0/lib/internal/errors.js\n\n\nfunction oneOf(expected, thing) {\n if (Array.isArray(expected)) {\n var len = expected.length;\n expected = expected.map(function (i) {\n return String(i);\n });\n\n if (len > 2) {\n return \"one of \".concat(thing, \" \").concat(expected.slice(0, len - 1).join(', '), \", or \") + expected[len - 1];\n } else if (len === 2) {\n return \"one of \".concat(thing, \" \").concat(expected[0], \" or \").concat(expected[1]);\n } else {\n return \"of \".concat(thing, \" \").concat(expected[0]);\n }\n } else {\n return \"of \".concat(thing, \" \").concat(String(expected));\n }\n} // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/startsWith\n\n\nfunction startsWith(str, search, pos) {\n return str.substr(!pos || pos < 0 ? 0 : +pos, search.length) === search;\n} // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/endsWith\n\n\nfunction endsWith(str, search, this_len) {\n if (this_len === undefined || this_len > str.length) {\n this_len = str.length;\n }\n\n return str.substring(this_len - search.length, this_len) === search;\n} // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/includes\n\n\nfunction includes(str, search, start) {\n if (typeof start !== 'number') {\n start = 0;\n }\n\n if (start + search.length > str.length) {\n return false;\n } else {\n return str.indexOf(search, start) !== -1;\n }\n}\n\ncreateErrorType('ERR_INVALID_OPT_VALUE', function (name, value) {\n return 'The value \"' + value + '\" is invalid for option \"' + name + '\"';\n}, TypeError);\ncreateErrorType('ERR_INVALID_ARG_TYPE', function (name, expected, actual) {\n // determiner: 'must be' or 'must not be'\n var determiner;\n\n if (typeof expected === 'string' && startsWith(expected, 'not ')) {\n determiner = 'must not be';\n expected = expected.replace(/^not /, '');\n } else {\n determiner = 'must be';\n }\n\n var msg;\n\n if (endsWith(name, ' argument')) {\n // For cases like 'first argument'\n msg = \"The \".concat(name, \" \").concat(determiner, \" \").concat(oneOf(expected, 'type'));\n } else {\n var type = includes(name, '.') ? 'property' : 'argument';\n msg = \"The \\\"\".concat(name, \"\\\" \").concat(type, \" \").concat(determiner, \" \").concat(oneOf(expected, 'type'));\n }\n\n msg += \". Received type \".concat(typeof actual);\n return msg;\n}, TypeError);\ncreateErrorType('ERR_STREAM_PUSH_AFTER_EOF', 'stream.push() after EOF');\ncreateErrorType('ERR_METHOD_NOT_IMPLEMENTED', function (name) {\n return 'The ' + name + ' method is not implemented';\n});\ncreateErrorType('ERR_STREAM_PREMATURE_CLOSE', 'Premature close');\ncreateErrorType('ERR_STREAM_DESTROYED', function (name) {\n return 'Cannot call ' + name + ' after a stream was destroyed';\n});\ncreateErrorType('ERR_MULTIPLE_CALLBACK', 'Callback called multiple times');\ncreateErrorType('ERR_STREAM_CANNOT_PIPE', 'Cannot pipe, not readable');\ncreateErrorType('ERR_STREAM_WRITE_AFTER_END', 'write after end');\ncreateErrorType('ERR_STREAM_NULL_VALUES', 'May not write null values to stream', TypeError);\ncreateErrorType('ERR_UNKNOWN_ENCODING', function (arg) {\n return 'Unknown encoding: ' + arg;\n}, TypeError);\ncreateErrorType('ERR_STREAM_UNSHIFT_AFTER_END_EVENT', 'stream.unshift() after end event');\nmodule.exports.codes = codes;\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n// a duplex stream is just a stream that is both readable and writable.\n// Since JS doesn't have multiple prototypal inheritance, this class\n// prototypally inherits from Readable, and then parasitically from\n// Writable.\n'use strict';\n/**/\n\nvar objectKeys = Object.keys || function (obj) {\n var keys = [];\n\n for (var key in obj) {\n keys.push(key);\n }\n\n return keys;\n};\n/**/\n\n\nmodule.exports = Duplex;\n\nvar Readable = require('./_stream_readable');\n\nvar Writable = require('./_stream_writable');\n\nrequire('inherits')(Duplex, Readable);\n\n{\n // Allow the keys array to be GC'ed.\n var keys = objectKeys(Writable.prototype);\n\n for (var v = 0; v < keys.length; v++) {\n var method = keys[v];\n if (!Duplex.prototype[method]) Duplex.prototype[method] = Writable.prototype[method];\n }\n}\n\nfunction Duplex(options) {\n if (!(this instanceof Duplex)) return new Duplex(options);\n Readable.call(this, options);\n Writable.call(this, options);\n this.allowHalfOpen = true;\n\n if (options) {\n if (options.readable === false) this.readable = false;\n if (options.writable === false) this.writable = false;\n\n if (options.allowHalfOpen === false) {\n this.allowHalfOpen = false;\n this.once('end', onend);\n }\n }\n}\n\nObject.defineProperty(Duplex.prototype, 'writableHighWaterMark', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._writableState.highWaterMark;\n }\n});\nObject.defineProperty(Duplex.prototype, 'writableBuffer', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._writableState && this._writableState.getBuffer();\n }\n});\nObject.defineProperty(Duplex.prototype, 'writableLength', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._writableState.length;\n }\n}); // the no-half-open enforcer\n\nfunction onend() {\n // If the writable side ended, then we're ok.\n if (this._writableState.ended) return; // no more data can be written.\n // But allow more writes to happen in this tick.\n\n process.nextTick(onEndNT, this);\n}\n\nfunction onEndNT(self) {\n self.end();\n}\n\nObject.defineProperty(Duplex.prototype, 'destroyed', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n if (this._readableState === undefined || this._writableState === undefined) {\n return false;\n }\n\n return this._readableState.destroyed && this._writableState.destroyed;\n },\n set: function set(value) {\n // we ignore the value if the stream\n // has not been initialized yet\n if (this._readableState === undefined || this._writableState === undefined) {\n return;\n } // backward compatibility, the user is explicitly\n // managing destroyed\n\n\n this._readableState.destroyed = value;\n this._writableState.destroyed = value;\n }\n});","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n// a passthrough stream.\n// basically just the most minimal sort of Transform stream.\n// Every written chunk gets output as-is.\n'use strict';\n\nmodule.exports = PassThrough;\n\nvar Transform = require('./_stream_transform');\n\nrequire('inherits')(PassThrough, Transform);\n\nfunction PassThrough(options) {\n if (!(this instanceof PassThrough)) return new PassThrough(options);\n Transform.call(this, options);\n}\n\nPassThrough.prototype._transform = function (chunk, encoding, cb) {\n cb(null, chunk);\n};","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n'use strict';\n\nmodule.exports = Readable;\n/**/\n\nvar Duplex;\n/**/\n\nReadable.ReadableState = ReadableState;\n/**/\n\nvar EE = require('events').EventEmitter;\n\nvar EElistenerCount = function EElistenerCount(emitter, type) {\n return emitter.listeners(type).length;\n};\n/**/\n\n/**/\n\n\nvar Stream = require('./internal/streams/stream');\n/**/\n\n\nvar Buffer = require('buffer').Buffer;\n\nvar OurUint8Array = global.Uint8Array || function () {};\n\nfunction _uint8ArrayToBuffer(chunk) {\n return Buffer.from(chunk);\n}\n\nfunction _isUint8Array(obj) {\n return Buffer.isBuffer(obj) || obj instanceof OurUint8Array;\n}\n/**/\n\n\nvar debugUtil = require('util');\n\nvar debug;\n\nif (debugUtil && debugUtil.debuglog) {\n debug = debugUtil.debuglog('stream');\n} else {\n debug = function debug() {};\n}\n/**/\n\n\nvar BufferList = require('./internal/streams/buffer_list');\n\nvar destroyImpl = require('./internal/streams/destroy');\n\nvar _require = require('./internal/streams/state'),\n getHighWaterMark = _require.getHighWaterMark;\n\nvar _require$codes = require('../errors').codes,\n ERR_INVALID_ARG_TYPE = _require$codes.ERR_INVALID_ARG_TYPE,\n ERR_STREAM_PUSH_AFTER_EOF = _require$codes.ERR_STREAM_PUSH_AFTER_EOF,\n ERR_METHOD_NOT_IMPLEMENTED = _require$codes.ERR_METHOD_NOT_IMPLEMENTED,\n ERR_STREAM_UNSHIFT_AFTER_END_EVENT = _require$codes.ERR_STREAM_UNSHIFT_AFTER_END_EVENT; // Lazy loaded to improve the startup performance.\n\n\nvar StringDecoder;\nvar createReadableStreamAsyncIterator;\nvar from;\n\nrequire('inherits')(Readable, Stream);\n\nvar errorOrDestroy = destroyImpl.errorOrDestroy;\nvar kProxyEvents = ['error', 'close', 'destroy', 'pause', 'resume'];\n\nfunction prependListener(emitter, event, fn) {\n // Sadly this is not cacheable as some libraries bundle their own\n // event emitter implementation with them.\n if (typeof emitter.prependListener === 'function') return emitter.prependListener(event, fn); // This is a hack to make sure that our error handler is attached before any\n // userland ones. NEVER DO THIS. This is here only because this code needs\n // to continue to work with older versions of Node.js that do not include\n // the prependListener() method. The goal is to eventually remove this hack.\n\n if (!emitter._events || !emitter._events[event]) emitter.on(event, fn);else if (Array.isArray(emitter._events[event])) emitter._events[event].unshift(fn);else emitter._events[event] = [fn, emitter._events[event]];\n}\n\nfunction ReadableState(options, stream, isDuplex) {\n Duplex = Duplex || require('./_stream_duplex');\n options = options || {}; // Duplex streams are both readable and writable, but share\n // the same options object.\n // However, some cases require setting options to different\n // values for the readable and the writable sides of the duplex stream.\n // These options can be provided separately as readableXXX and writableXXX.\n\n if (typeof isDuplex !== 'boolean') isDuplex = stream instanceof Duplex; // object stream flag. Used to make read(n) ignore n and to\n // make all the buffer merging and length checks go away\n\n this.objectMode = !!options.objectMode;\n if (isDuplex) this.objectMode = this.objectMode || !!options.readableObjectMode; // the point at which it stops calling _read() to fill the buffer\n // Note: 0 is a valid value, means \"don't call _read preemptively ever\"\n\n this.highWaterMark = getHighWaterMark(this, options, 'readableHighWaterMark', isDuplex); // A linked list is used to store data chunks instead of an array because the\n // linked list can remove elements from the beginning faster than\n // array.shift()\n\n this.buffer = new BufferList();\n this.length = 0;\n this.pipes = null;\n this.pipesCount = 0;\n this.flowing = null;\n this.ended = false;\n this.endEmitted = false;\n this.reading = false; // a flag to be able to tell if the event 'readable'/'data' is emitted\n // immediately, or on a later tick. We set this to true at first, because\n // any actions that shouldn't happen until \"later\" should generally also\n // not happen before the first read call.\n\n this.sync = true; // whenever we return null, then we set a flag to say\n // that we're awaiting a 'readable' event emission.\n\n this.needReadable = false;\n this.emittedReadable = false;\n this.readableListening = false;\n this.resumeScheduled = false;\n this.paused = true; // Should close be emitted on destroy. Defaults to true.\n\n this.emitClose = options.emitClose !== false; // Should .destroy() be called after 'end' (and potentially 'finish')\n\n this.autoDestroy = !!options.autoDestroy; // has it been destroyed\n\n this.destroyed = false; // Crypto is kind of old and crusty. Historically, its default string\n // encoding is 'binary' so we have to make this configurable.\n // Everything else in the universe uses 'utf8', though.\n\n this.defaultEncoding = options.defaultEncoding || 'utf8'; // the number of writers that are awaiting a drain event in .pipe()s\n\n this.awaitDrain = 0; // if true, a maybeReadMore has been scheduled\n\n this.readingMore = false;\n this.decoder = null;\n this.encoding = null;\n\n if (options.encoding) {\n if (!StringDecoder) StringDecoder = require('string_decoder/').StringDecoder;\n this.decoder = new StringDecoder(options.encoding);\n this.encoding = options.encoding;\n }\n}\n\nfunction Readable(options) {\n Duplex = Duplex || require('./_stream_duplex');\n if (!(this instanceof Readable)) return new Readable(options); // Checking for a Stream.Duplex instance is faster here instead of inside\n // the ReadableState constructor, at least with V8 6.5\n\n var isDuplex = this instanceof Duplex;\n this._readableState = new ReadableState(options, this, isDuplex); // legacy\n\n this.readable = true;\n\n if (options) {\n if (typeof options.read === 'function') this._read = options.read;\n if (typeof options.destroy === 'function') this._destroy = options.destroy;\n }\n\n Stream.call(this);\n}\n\nObject.defineProperty(Readable.prototype, 'destroyed', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n if (this._readableState === undefined) {\n return false;\n }\n\n return this._readableState.destroyed;\n },\n set: function set(value) {\n // we ignore the value if the stream\n // has not been initialized yet\n if (!this._readableState) {\n return;\n } // backward compatibility, the user is explicitly\n // managing destroyed\n\n\n this._readableState.destroyed = value;\n }\n});\nReadable.prototype.destroy = destroyImpl.destroy;\nReadable.prototype._undestroy = destroyImpl.undestroy;\n\nReadable.prototype._destroy = function (err, cb) {\n cb(err);\n}; // Manually shove something into the read() buffer.\n// This returns true if the highWaterMark has not been hit yet,\n// similar to how Writable.write() returns true if you should\n// write() some more.\n\n\nReadable.prototype.push = function (chunk, encoding) {\n var state = this._readableState;\n var skipChunkCheck;\n\n if (!state.objectMode) {\n if (typeof chunk === 'string') {\n encoding = encoding || state.defaultEncoding;\n\n if (encoding !== state.encoding) {\n chunk = Buffer.from(chunk, encoding);\n encoding = '';\n }\n\n skipChunkCheck = true;\n }\n } else {\n skipChunkCheck = true;\n }\n\n return readableAddChunk(this, chunk, encoding, false, skipChunkCheck);\n}; // Unshift should *always* be something directly out of read()\n\n\nReadable.prototype.unshift = function (chunk) {\n return readableAddChunk(this, chunk, null, true, false);\n};\n\nfunction readableAddChunk(stream, chunk, encoding, addToFront, skipChunkCheck) {\n debug('readableAddChunk', chunk);\n var state = stream._readableState;\n\n if (chunk === null) {\n state.reading = false;\n onEofChunk(stream, state);\n } else {\n var er;\n if (!skipChunkCheck) er = chunkInvalid(state, chunk);\n\n if (er) {\n errorOrDestroy(stream, er);\n } else if (state.objectMode || chunk && chunk.length > 0) {\n if (typeof chunk !== 'string' && !state.objectMode && Object.getPrototypeOf(chunk) !== Buffer.prototype) {\n chunk = _uint8ArrayToBuffer(chunk);\n }\n\n if (addToFront) {\n if (state.endEmitted) errorOrDestroy(stream, new ERR_STREAM_UNSHIFT_AFTER_END_EVENT());else addChunk(stream, state, chunk, true);\n } else if (state.ended) {\n errorOrDestroy(stream, new ERR_STREAM_PUSH_AFTER_EOF());\n } else if (state.destroyed) {\n return false;\n } else {\n state.reading = false;\n\n if (state.decoder && !encoding) {\n chunk = state.decoder.write(chunk);\n if (state.objectMode || chunk.length !== 0) addChunk(stream, state, chunk, false);else maybeReadMore(stream, state);\n } else {\n addChunk(stream, state, chunk, false);\n }\n }\n } else if (!addToFront) {\n state.reading = false;\n maybeReadMore(stream, state);\n }\n } // We can push more data if we are below the highWaterMark.\n // Also, if we have no data yet, we can stand some more bytes.\n // This is to work around cases where hwm=0, such as the repl.\n\n\n return !state.ended && (state.length < state.highWaterMark || state.length === 0);\n}\n\nfunction addChunk(stream, state, chunk, addToFront) {\n if (state.flowing && state.length === 0 && !state.sync) {\n state.awaitDrain = 0;\n stream.emit('data', chunk);\n } else {\n // update the buffer info.\n state.length += state.objectMode ? 1 : chunk.length;\n if (addToFront) state.buffer.unshift(chunk);else state.buffer.push(chunk);\n if (state.needReadable) emitReadable(stream);\n }\n\n maybeReadMore(stream, state);\n}\n\nfunction chunkInvalid(state, chunk) {\n var er;\n\n if (!_isUint8Array(chunk) && typeof chunk !== 'string' && chunk !== undefined && !state.objectMode) {\n er = new ERR_INVALID_ARG_TYPE('chunk', ['string', 'Buffer', 'Uint8Array'], chunk);\n }\n\n return er;\n}\n\nReadable.prototype.isPaused = function () {\n return this._readableState.flowing === false;\n}; // backwards compatibility.\n\n\nReadable.prototype.setEncoding = function (enc) {\n if (!StringDecoder) StringDecoder = require('string_decoder/').StringDecoder;\n var decoder = new StringDecoder(enc);\n this._readableState.decoder = decoder; // If setEncoding(null), decoder.encoding equals utf8\n\n this._readableState.encoding = this._readableState.decoder.encoding; // Iterate over current buffer to convert already stored Buffers:\n\n var p = this._readableState.buffer.head;\n var content = '';\n\n while (p !== null) {\n content += decoder.write(p.data);\n p = p.next;\n }\n\n this._readableState.buffer.clear();\n\n if (content !== '') this._readableState.buffer.push(content);\n this._readableState.length = content.length;\n return this;\n}; // Don't raise the hwm > 1GB\n\n\nvar MAX_HWM = 0x40000000;\n\nfunction computeNewHighWaterMark(n) {\n if (n >= MAX_HWM) {\n // TODO(ronag): Throw ERR_VALUE_OUT_OF_RANGE.\n n = MAX_HWM;\n } else {\n // Get the next highest power of 2 to prevent increasing hwm excessively in\n // tiny amounts\n n--;\n n |= n >>> 1;\n n |= n >>> 2;\n n |= n >>> 4;\n n |= n >>> 8;\n n |= n >>> 16;\n n++;\n }\n\n return n;\n} // This function is designed to be inlinable, so please take care when making\n// changes to the function body.\n\n\nfunction howMuchToRead(n, state) {\n if (n <= 0 || state.length === 0 && state.ended) return 0;\n if (state.objectMode) return 1;\n\n if (n !== n) {\n // Only flow one buffer at a time\n if (state.flowing && state.length) return state.buffer.head.data.length;else return state.length;\n } // If we're asking for more than the current hwm, then raise the hwm.\n\n\n if (n > state.highWaterMark) state.highWaterMark = computeNewHighWaterMark(n);\n if (n <= state.length) return n; // Don't have enough\n\n if (!state.ended) {\n state.needReadable = true;\n return 0;\n }\n\n return state.length;\n} // you can override either this method, or the async _read(n) below.\n\n\nReadable.prototype.read = function (n) {\n debug('read', n);\n n = parseInt(n, 10);\n var state = this._readableState;\n var nOrig = n;\n if (n !== 0) state.emittedReadable = false; // if we're doing read(0) to trigger a readable event, but we\n // already have a bunch of data in the buffer, then just trigger\n // the 'readable' event and move on.\n\n if (n === 0 && state.needReadable && ((state.highWaterMark !== 0 ? state.length >= state.highWaterMark : state.length > 0) || state.ended)) {\n debug('read: emitReadable', state.length, state.ended);\n if (state.length === 0 && state.ended) endReadable(this);else emitReadable(this);\n return null;\n }\n\n n = howMuchToRead(n, state); // if we've ended, and we're now clear, then finish it up.\n\n if (n === 0 && state.ended) {\n if (state.length === 0) endReadable(this);\n return null;\n } // All the actual chunk generation logic needs to be\n // *below* the call to _read. The reason is that in certain\n // synthetic stream cases, such as passthrough streams, _read\n // may be a completely synchronous operation which may change\n // the state of the read buffer, providing enough data when\n // before there was *not* enough.\n //\n // So, the steps are:\n // 1. Figure out what the state of things will be after we do\n // a read from the buffer.\n //\n // 2. If that resulting state will trigger a _read, then call _read.\n // Note that this may be asynchronous, or synchronous. Yes, it is\n // deeply ugly to write APIs this way, but that still doesn't mean\n // that the Readable class should behave improperly, as streams are\n // designed to be sync/async agnostic.\n // Take note if the _read call is sync or async (ie, if the read call\n // has returned yet), so that we know whether or not it's safe to emit\n // 'readable' etc.\n //\n // 3. Actually pull the requested chunks out of the buffer and return.\n // if we need a readable event, then we need to do some reading.\n\n\n var doRead = state.needReadable;\n debug('need readable', doRead); // if we currently have less than the highWaterMark, then also read some\n\n if (state.length === 0 || state.length - n < state.highWaterMark) {\n doRead = true;\n debug('length less than watermark', doRead);\n } // however, if we've ended, then there's no point, and if we're already\n // reading, then it's unnecessary.\n\n\n if (state.ended || state.reading) {\n doRead = false;\n debug('reading or ended', doRead);\n } else if (doRead) {\n debug('do read');\n state.reading = true;\n state.sync = true; // if the length is currently zero, then we *need* a readable event.\n\n if (state.length === 0) state.needReadable = true; // call internal read method\n\n this._read(state.highWaterMark);\n\n state.sync = false; // If _read pushed data synchronously, then `reading` will be false,\n // and we need to re-evaluate how much data we can return to the user.\n\n if (!state.reading) n = howMuchToRead(nOrig, state);\n }\n\n var ret;\n if (n > 0) ret = fromList(n, state);else ret = null;\n\n if (ret === null) {\n state.needReadable = state.length <= state.highWaterMark;\n n = 0;\n } else {\n state.length -= n;\n state.awaitDrain = 0;\n }\n\n if (state.length === 0) {\n // If we have nothing in the buffer, then we want to know\n // as soon as we *do* get something into the buffer.\n if (!state.ended) state.needReadable = true; // If we tried to read() past the EOF, then emit end on the next tick.\n\n if (nOrig !== n && state.ended) endReadable(this);\n }\n\n if (ret !== null) this.emit('data', ret);\n return ret;\n};\n\nfunction onEofChunk(stream, state) {\n debug('onEofChunk');\n if (state.ended) return;\n\n if (state.decoder) {\n var chunk = state.decoder.end();\n\n if (chunk && chunk.length) {\n state.buffer.push(chunk);\n state.length += state.objectMode ? 1 : chunk.length;\n }\n }\n\n state.ended = true;\n\n if (state.sync) {\n // if we are sync, wait until next tick to emit the data.\n // Otherwise we risk emitting data in the flow()\n // the readable code triggers during a read() call\n emitReadable(stream);\n } else {\n // emit 'readable' now to make sure it gets picked up.\n state.needReadable = false;\n\n if (!state.emittedReadable) {\n state.emittedReadable = true;\n emitReadable_(stream);\n }\n }\n} // Don't emit readable right away in sync mode, because this can trigger\n// another read() call => stack overflow. This way, it might trigger\n// a nextTick recursion warning, but that's not so bad.\n\n\nfunction emitReadable(stream) {\n var state = stream._readableState;\n debug('emitReadable', state.needReadable, state.emittedReadable);\n state.needReadable = false;\n\n if (!state.emittedReadable) {\n debug('emitReadable', state.flowing);\n state.emittedReadable = true;\n process.nextTick(emitReadable_, stream);\n }\n}\n\nfunction emitReadable_(stream) {\n var state = stream._readableState;\n debug('emitReadable_', state.destroyed, state.length, state.ended);\n\n if (!state.destroyed && (state.length || state.ended)) {\n stream.emit('readable');\n state.emittedReadable = false;\n } // The stream needs another readable event if\n // 1. It is not flowing, as the flow mechanism will take\n // care of it.\n // 2. It is not ended.\n // 3. It is below the highWaterMark, so we can schedule\n // another readable later.\n\n\n state.needReadable = !state.flowing && !state.ended && state.length <= state.highWaterMark;\n flow(stream);\n} // at this point, the user has presumably seen the 'readable' event,\n// and called read() to consume some data. that may have triggered\n// in turn another _read(n) call, in which case reading = true if\n// it's in progress.\n// However, if we're not ended, or reading, and the length < hwm,\n// then go ahead and try to read some more preemptively.\n\n\nfunction maybeReadMore(stream, state) {\n if (!state.readingMore) {\n state.readingMore = true;\n process.nextTick(maybeReadMore_, stream, state);\n }\n}\n\nfunction maybeReadMore_(stream, state) {\n // Attempt to read more data if we should.\n //\n // The conditions for reading more data are (one of):\n // - Not enough data buffered (state.length < state.highWaterMark). The loop\n // is responsible for filling the buffer with enough data if such data\n // is available. If highWaterMark is 0 and we are not in the flowing mode\n // we should _not_ attempt to buffer any extra data. We'll get more data\n // when the stream consumer calls read() instead.\n // - No data in the buffer, and the stream is in flowing mode. In this mode\n // the loop below is responsible for ensuring read() is called. Failing to\n // call read here would abort the flow and there's no other mechanism for\n // continuing the flow if the stream consumer has just subscribed to the\n // 'data' event.\n //\n // In addition to the above conditions to keep reading data, the following\n // conditions prevent the data from being read:\n // - The stream has ended (state.ended).\n // - There is already a pending 'read' operation (state.reading). This is a\n // case where the the stream has called the implementation defined _read()\n // method, but they are processing the call asynchronously and have _not_\n // called push() with new data. In this case we skip performing more\n // read()s. The execution ends in this method again after the _read() ends\n // up calling push() with more data.\n while (!state.reading && !state.ended && (state.length < state.highWaterMark || state.flowing && state.length === 0)) {\n var len = state.length;\n debug('maybeReadMore read 0');\n stream.read(0);\n if (len === state.length) // didn't get any data, stop spinning.\n break;\n }\n\n state.readingMore = false;\n} // abstract method. to be overridden in specific implementation classes.\n// call cb(er, data) where data is <= n in length.\n// for virtual (non-string, non-buffer) streams, \"length\" is somewhat\n// arbitrary, and perhaps not very meaningful.\n\n\nReadable.prototype._read = function (n) {\n errorOrDestroy(this, new ERR_METHOD_NOT_IMPLEMENTED('_read()'));\n};\n\nReadable.prototype.pipe = function (dest, pipeOpts) {\n var src = this;\n var state = this._readableState;\n\n switch (state.pipesCount) {\n case 0:\n state.pipes = dest;\n break;\n\n case 1:\n state.pipes = [state.pipes, dest];\n break;\n\n default:\n state.pipes.push(dest);\n break;\n }\n\n state.pipesCount += 1;\n debug('pipe count=%d opts=%j', state.pipesCount, pipeOpts);\n var doEnd = (!pipeOpts || pipeOpts.end !== false) && dest !== process.stdout && dest !== process.stderr;\n var endFn = doEnd ? onend : unpipe;\n if (state.endEmitted) process.nextTick(endFn);else src.once('end', endFn);\n dest.on('unpipe', onunpipe);\n\n function onunpipe(readable, unpipeInfo) {\n debug('onunpipe');\n\n if (readable === src) {\n if (unpipeInfo && unpipeInfo.hasUnpiped === false) {\n unpipeInfo.hasUnpiped = true;\n cleanup();\n }\n }\n }\n\n function onend() {\n debug('onend');\n dest.end();\n } // when the dest drains, it reduces the awaitDrain counter\n // on the source. This would be more elegant with a .once()\n // handler in flow(), but adding and removing repeatedly is\n // too slow.\n\n\n var ondrain = pipeOnDrain(src);\n dest.on('drain', ondrain);\n var cleanedUp = false;\n\n function cleanup() {\n debug('cleanup'); // cleanup event handlers once the pipe is broken\n\n dest.removeListener('close', onclose);\n dest.removeListener('finish', onfinish);\n dest.removeListener('drain', ondrain);\n dest.removeListener('error', onerror);\n dest.removeListener('unpipe', onunpipe);\n src.removeListener('end', onend);\n src.removeListener('end', unpipe);\n src.removeListener('data', ondata);\n cleanedUp = true; // if the reader is waiting for a drain event from this\n // specific writer, then it would cause it to never start\n // flowing again.\n // So, if this is awaiting a drain, then we just call it now.\n // If we don't know, then assume that we are waiting for one.\n\n if (state.awaitDrain && (!dest._writableState || dest._writableState.needDrain)) ondrain();\n }\n\n src.on('data', ondata);\n\n function ondata(chunk) {\n debug('ondata');\n var ret = dest.write(chunk);\n debug('dest.write', ret);\n\n if (ret === false) {\n // If the user unpiped during `dest.write()`, it is possible\n // to get stuck in a permanently paused state if that write\n // also returned false.\n // => Check whether `dest` is still a piping destination.\n if ((state.pipesCount === 1 && state.pipes === dest || state.pipesCount > 1 && indexOf(state.pipes, dest) !== -1) && !cleanedUp) {\n debug('false write response, pause', state.awaitDrain);\n state.awaitDrain++;\n }\n\n src.pause();\n }\n } // if the dest has an error, then stop piping into it.\n // however, don't suppress the throwing behavior for this.\n\n\n function onerror(er) {\n debug('onerror', er);\n unpipe();\n dest.removeListener('error', onerror);\n if (EElistenerCount(dest, 'error') === 0) errorOrDestroy(dest, er);\n } // Make sure our error handler is attached before userland ones.\n\n\n prependListener(dest, 'error', onerror); // Both close and finish should trigger unpipe, but only once.\n\n function onclose() {\n dest.removeListener('finish', onfinish);\n unpipe();\n }\n\n dest.once('close', onclose);\n\n function onfinish() {\n debug('onfinish');\n dest.removeListener('close', onclose);\n unpipe();\n }\n\n dest.once('finish', onfinish);\n\n function unpipe() {\n debug('unpipe');\n src.unpipe(dest);\n } // tell the dest that it's being piped to\n\n\n dest.emit('pipe', src); // start the flow if it hasn't been started already.\n\n if (!state.flowing) {\n debug('pipe resume');\n src.resume();\n }\n\n return dest;\n};\n\nfunction pipeOnDrain(src) {\n return function pipeOnDrainFunctionResult() {\n var state = src._readableState;\n debug('pipeOnDrain', state.awaitDrain);\n if (state.awaitDrain) state.awaitDrain--;\n\n if (state.awaitDrain === 0 && EElistenerCount(src, 'data')) {\n state.flowing = true;\n flow(src);\n }\n };\n}\n\nReadable.prototype.unpipe = function (dest) {\n var state = this._readableState;\n var unpipeInfo = {\n hasUnpiped: false\n }; // if we're not piping anywhere, then do nothing.\n\n if (state.pipesCount === 0) return this; // just one destination. most common case.\n\n if (state.pipesCount === 1) {\n // passed in one, but it's not the right one.\n if (dest && dest !== state.pipes) return this;\n if (!dest) dest = state.pipes; // got a match.\n\n state.pipes = null;\n state.pipesCount = 0;\n state.flowing = false;\n if (dest) dest.emit('unpipe', this, unpipeInfo);\n return this;\n } // slow case. multiple pipe destinations.\n\n\n if (!dest) {\n // remove all.\n var dests = state.pipes;\n var len = state.pipesCount;\n state.pipes = null;\n state.pipesCount = 0;\n state.flowing = false;\n\n for (var i = 0; i < len; i++) {\n dests[i].emit('unpipe', this, {\n hasUnpiped: false\n });\n }\n\n return this;\n } // try to find the right one.\n\n\n var index = indexOf(state.pipes, dest);\n if (index === -1) return this;\n state.pipes.splice(index, 1);\n state.pipesCount -= 1;\n if (state.pipesCount === 1) state.pipes = state.pipes[0];\n dest.emit('unpipe', this, unpipeInfo);\n return this;\n}; // set up data events if they are asked for\n// Ensure readable listeners eventually get something\n\n\nReadable.prototype.on = function (ev, fn) {\n var res = Stream.prototype.on.call(this, ev, fn);\n var state = this._readableState;\n\n if (ev === 'data') {\n // update readableListening so that resume() may be a no-op\n // a few lines down. This is needed to support once('readable').\n state.readableListening = this.listenerCount('readable') > 0; // Try start flowing on next tick if stream isn't explicitly paused\n\n if (state.flowing !== false) this.resume();\n } else if (ev === 'readable') {\n if (!state.endEmitted && !state.readableListening) {\n state.readableListening = state.needReadable = true;\n state.flowing = false;\n state.emittedReadable = false;\n debug('on readable', state.length, state.reading);\n\n if (state.length) {\n emitReadable(this);\n } else if (!state.reading) {\n process.nextTick(nReadingNextTick, this);\n }\n }\n }\n\n return res;\n};\n\nReadable.prototype.addListener = Readable.prototype.on;\n\nReadable.prototype.removeListener = function (ev, fn) {\n var res = Stream.prototype.removeListener.call(this, ev, fn);\n\n if (ev === 'readable') {\n // We need to check if there is someone still listening to\n // readable and reset the state. However this needs to happen\n // after readable has been emitted but before I/O (nextTick) to\n // support once('readable', fn) cycles. This means that calling\n // resume within the same tick will have no\n // effect.\n process.nextTick(updateReadableListening, this);\n }\n\n return res;\n};\n\nReadable.prototype.removeAllListeners = function (ev) {\n var res = Stream.prototype.removeAllListeners.apply(this, arguments);\n\n if (ev === 'readable' || ev === undefined) {\n // We need to check if there is someone still listening to\n // readable and reset the state. However this needs to happen\n // after readable has been emitted but before I/O (nextTick) to\n // support once('readable', fn) cycles. This means that calling\n // resume within the same tick will have no\n // effect.\n process.nextTick(updateReadableListening, this);\n }\n\n return res;\n};\n\nfunction updateReadableListening(self) {\n var state = self._readableState;\n state.readableListening = self.listenerCount('readable') > 0;\n\n if (state.resumeScheduled && !state.paused) {\n // flowing needs to be set to true now, otherwise\n // the upcoming resume will not flow.\n state.flowing = true; // crude way to check if we should resume\n } else if (self.listenerCount('data') > 0) {\n self.resume();\n }\n}\n\nfunction nReadingNextTick(self) {\n debug('readable nexttick read 0');\n self.read(0);\n} // pause() and resume() are remnants of the legacy readable stream API\n// If the user uses them, then switch into old mode.\n\n\nReadable.prototype.resume = function () {\n var state = this._readableState;\n\n if (!state.flowing) {\n debug('resume'); // we flow only if there is no one listening\n // for readable, but we still have to call\n // resume()\n\n state.flowing = !state.readableListening;\n resume(this, state);\n }\n\n state.paused = false;\n return this;\n};\n\nfunction resume(stream, state) {\n if (!state.resumeScheduled) {\n state.resumeScheduled = true;\n process.nextTick(resume_, stream, state);\n }\n}\n\nfunction resume_(stream, state) {\n debug('resume', state.reading);\n\n if (!state.reading) {\n stream.read(0);\n }\n\n state.resumeScheduled = false;\n stream.emit('resume');\n flow(stream);\n if (state.flowing && !state.reading) stream.read(0);\n}\n\nReadable.prototype.pause = function () {\n debug('call pause flowing=%j', this._readableState.flowing);\n\n if (this._readableState.flowing !== false) {\n debug('pause');\n this._readableState.flowing = false;\n this.emit('pause');\n }\n\n this._readableState.paused = true;\n return this;\n};\n\nfunction flow(stream) {\n var state = stream._readableState;\n debug('flow', state.flowing);\n\n while (state.flowing && stream.read() !== null) {\n ;\n }\n} // wrap an old-style stream as the async data source.\n// This is *not* part of the readable stream interface.\n// It is an ugly unfortunate mess of history.\n\n\nReadable.prototype.wrap = function (stream) {\n var _this = this;\n\n var state = this._readableState;\n var paused = false;\n stream.on('end', function () {\n debug('wrapped end');\n\n if (state.decoder && !state.ended) {\n var chunk = state.decoder.end();\n if (chunk && chunk.length) _this.push(chunk);\n }\n\n _this.push(null);\n });\n stream.on('data', function (chunk) {\n debug('wrapped data');\n if (state.decoder) chunk = state.decoder.write(chunk); // don't skip over falsy values in objectMode\n\n if (state.objectMode && (chunk === null || chunk === undefined)) return;else if (!state.objectMode && (!chunk || !chunk.length)) return;\n\n var ret = _this.push(chunk);\n\n if (!ret) {\n paused = true;\n stream.pause();\n }\n }); // proxy all the other methods.\n // important when wrapping filters and duplexes.\n\n for (var i in stream) {\n if (this[i] === undefined && typeof stream[i] === 'function') {\n this[i] = function methodWrap(method) {\n return function methodWrapReturnFunction() {\n return stream[method].apply(stream, arguments);\n };\n }(i);\n }\n } // proxy certain important events.\n\n\n for (var n = 0; n < kProxyEvents.length; n++) {\n stream.on(kProxyEvents[n], this.emit.bind(this, kProxyEvents[n]));\n } // when we try to consume some more bytes, simply unpause the\n // underlying stream.\n\n\n this._read = function (n) {\n debug('wrapped _read', n);\n\n if (paused) {\n paused = false;\n stream.resume();\n }\n };\n\n return this;\n};\n\nif (typeof Symbol === 'function') {\n Readable.prototype[Symbol.asyncIterator] = function () {\n if (createReadableStreamAsyncIterator === undefined) {\n createReadableStreamAsyncIterator = require('./internal/streams/async_iterator');\n }\n\n return createReadableStreamAsyncIterator(this);\n };\n}\n\nObject.defineProperty(Readable.prototype, 'readableHighWaterMark', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._readableState.highWaterMark;\n }\n});\nObject.defineProperty(Readable.prototype, 'readableBuffer', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._readableState && this._readableState.buffer;\n }\n});\nObject.defineProperty(Readable.prototype, 'readableFlowing', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._readableState.flowing;\n },\n set: function set(state) {\n if (this._readableState) {\n this._readableState.flowing = state;\n }\n }\n}); // exposed for testing purposes only.\n\nReadable._fromList = fromList;\nObject.defineProperty(Readable.prototype, 'readableLength', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._readableState.length;\n }\n}); // Pluck off n bytes from an array of buffers.\n// Length is the combined lengths of all the buffers in the list.\n// This function is designed to be inlinable, so please take care when making\n// changes to the function body.\n\nfunction fromList(n, state) {\n // nothing buffered\n if (state.length === 0) return null;\n var ret;\n if (state.objectMode) ret = state.buffer.shift();else if (!n || n >= state.length) {\n // read it all, truncate the list\n if (state.decoder) ret = state.buffer.join('');else if (state.buffer.length === 1) ret = state.buffer.first();else ret = state.buffer.concat(state.length);\n state.buffer.clear();\n } else {\n // read part of list\n ret = state.buffer.consume(n, state.decoder);\n }\n return ret;\n}\n\nfunction endReadable(stream) {\n var state = stream._readableState;\n debug('endReadable', state.endEmitted);\n\n if (!state.endEmitted) {\n state.ended = true;\n process.nextTick(endReadableNT, state, stream);\n }\n}\n\nfunction endReadableNT(state, stream) {\n debug('endReadableNT', state.endEmitted, state.length); // Check that we didn't get one last unshift.\n\n if (!state.endEmitted && state.length === 0) {\n state.endEmitted = true;\n stream.readable = false;\n stream.emit('end');\n\n if (state.autoDestroy) {\n // In case of duplex streams we need a way to detect\n // if the writable side is ready for autoDestroy as well\n var wState = stream._writableState;\n\n if (!wState || wState.autoDestroy && wState.finished) {\n stream.destroy();\n }\n }\n }\n}\n\nif (typeof Symbol === 'function') {\n Readable.from = function (iterable, opts) {\n if (from === undefined) {\n from = require('./internal/streams/from');\n }\n\n return from(Readable, iterable, opts);\n };\n}\n\nfunction indexOf(xs, x) {\n for (var i = 0, l = xs.length; i < l; i++) {\n if (xs[i] === x) return i;\n }\n\n return -1;\n}","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n// a transform stream is a readable/writable stream where you do\n// something with the data. Sometimes it's called a \"filter\",\n// but that's not a great name for it, since that implies a thing where\n// some bits pass through, and others are simply ignored. (That would\n// be a valid example of a transform, of course.)\n//\n// While the output is causally related to the input, it's not a\n// necessarily symmetric or synchronous transformation. For example,\n// a zlib stream might take multiple plain-text writes(), and then\n// emit a single compressed chunk some time in the future.\n//\n// Here's how this works:\n//\n// The Transform stream has all the aspects of the readable and writable\n// stream classes. When you write(chunk), that calls _write(chunk,cb)\n// internally, and returns false if there's a lot of pending writes\n// buffered up. When you call read(), that calls _read(n) until\n// there's enough pending readable data buffered up.\n//\n// In a transform stream, the written data is placed in a buffer. When\n// _read(n) is called, it transforms the queued up data, calling the\n// buffered _write cb's as it consumes chunks. If consuming a single\n// written chunk would result in multiple output chunks, then the first\n// outputted bit calls the readcb, and subsequent chunks just go into\n// the read buffer, and will cause it to emit 'readable' if necessary.\n//\n// This way, back-pressure is actually determined by the reading side,\n// since _read has to be called to start processing a new chunk. However,\n// a pathological inflate type of transform can cause excessive buffering\n// here. For example, imagine a stream where every byte of input is\n// interpreted as an integer from 0-255, and then results in that many\n// bytes of output. Writing the 4 bytes {ff,ff,ff,ff} would result in\n// 1kb of data being output. In this case, you could write a very small\n// amount of input, and end up with a very large amount of output. In\n// such a pathological inflating mechanism, there'd be no way to tell\n// the system to stop doing the transform. A single 4MB write could\n// cause the system to run out of memory.\n//\n// However, even in such a pathological case, only a single written chunk\n// would be consumed, and then the rest would wait (un-transformed) until\n// the results of the previous transformed chunk were consumed.\n'use strict';\n\nmodule.exports = Transform;\n\nvar _require$codes = require('../errors').codes,\n ERR_METHOD_NOT_IMPLEMENTED = _require$codes.ERR_METHOD_NOT_IMPLEMENTED,\n ERR_MULTIPLE_CALLBACK = _require$codes.ERR_MULTIPLE_CALLBACK,\n ERR_TRANSFORM_ALREADY_TRANSFORMING = _require$codes.ERR_TRANSFORM_ALREADY_TRANSFORMING,\n ERR_TRANSFORM_WITH_LENGTH_0 = _require$codes.ERR_TRANSFORM_WITH_LENGTH_0;\n\nvar Duplex = require('./_stream_duplex');\n\nrequire('inherits')(Transform, Duplex);\n\nfunction afterTransform(er, data) {\n var ts = this._transformState;\n ts.transforming = false;\n var cb = ts.writecb;\n\n if (cb === null) {\n return this.emit('error', new ERR_MULTIPLE_CALLBACK());\n }\n\n ts.writechunk = null;\n ts.writecb = null;\n if (data != null) // single equals check for both `null` and `undefined`\n this.push(data);\n cb(er);\n var rs = this._readableState;\n rs.reading = false;\n\n if (rs.needReadable || rs.length < rs.highWaterMark) {\n this._read(rs.highWaterMark);\n }\n}\n\nfunction Transform(options) {\n if (!(this instanceof Transform)) return new Transform(options);\n Duplex.call(this, options);\n this._transformState = {\n afterTransform: afterTransform.bind(this),\n needTransform: false,\n transforming: false,\n writecb: null,\n writechunk: null,\n writeencoding: null\n }; // start out asking for a readable event once data is transformed.\n\n this._readableState.needReadable = true; // we have implemented the _read method, and done the other things\n // that Readable wants before the first _read call, so unset the\n // sync guard flag.\n\n this._readableState.sync = false;\n\n if (options) {\n if (typeof options.transform === 'function') this._transform = options.transform;\n if (typeof options.flush === 'function') this._flush = options.flush;\n } // When the writable side finishes, then flush out anything remaining.\n\n\n this.on('prefinish', prefinish);\n}\n\nfunction prefinish() {\n var _this = this;\n\n if (typeof this._flush === 'function' && !this._readableState.destroyed) {\n this._flush(function (er, data) {\n done(_this, er, data);\n });\n } else {\n done(this, null, null);\n }\n}\n\nTransform.prototype.push = function (chunk, encoding) {\n this._transformState.needTransform = false;\n return Duplex.prototype.push.call(this, chunk, encoding);\n}; // This is the part where you do stuff!\n// override this function in implementation classes.\n// 'chunk' is an input chunk.\n//\n// Call `push(newChunk)` to pass along transformed output\n// to the readable side. You may call 'push' zero or more times.\n//\n// Call `cb(err)` when you are done with this chunk. If you pass\n// an error, then that'll put the hurt on the whole operation. If you\n// never call cb(), then you'll never get another chunk.\n\n\nTransform.prototype._transform = function (chunk, encoding, cb) {\n cb(new ERR_METHOD_NOT_IMPLEMENTED('_transform()'));\n};\n\nTransform.prototype._write = function (chunk, encoding, cb) {\n var ts = this._transformState;\n ts.writecb = cb;\n ts.writechunk = chunk;\n ts.writeencoding = encoding;\n\n if (!ts.transforming) {\n var rs = this._readableState;\n if (ts.needTransform || rs.needReadable || rs.length < rs.highWaterMark) this._read(rs.highWaterMark);\n }\n}; // Doesn't matter what the args are here.\n// _transform does all the work.\n// That we got here means that the readable side wants more data.\n\n\nTransform.prototype._read = function (n) {\n var ts = this._transformState;\n\n if (ts.writechunk !== null && !ts.transforming) {\n ts.transforming = true;\n\n this._transform(ts.writechunk, ts.writeencoding, ts.afterTransform);\n } else {\n // mark that we need a transform, so that any data that comes in\n // will get processed, now that we've asked for it.\n ts.needTransform = true;\n }\n};\n\nTransform.prototype._destroy = function (err, cb) {\n Duplex.prototype._destroy.call(this, err, function (err2) {\n cb(err2);\n });\n};\n\nfunction done(stream, er, data) {\n if (er) return stream.emit('error', er);\n if (data != null) // single equals check for both `null` and `undefined`\n stream.push(data); // TODO(BridgeAR): Write a test for these two error cases\n // if there's nothing in the write buffer, then that means\n // that nothing more will ever be provided\n\n if (stream._writableState.length) throw new ERR_TRANSFORM_WITH_LENGTH_0();\n if (stream._transformState.transforming) throw new ERR_TRANSFORM_ALREADY_TRANSFORMING();\n return stream.push(null);\n}","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n// A bit simpler than readable streams.\n// Implement an async ._write(chunk, encoding, cb), and it'll handle all\n// the drain event emission and buffering.\n'use strict';\n\nmodule.exports = Writable;\n/* */\n\nfunction WriteReq(chunk, encoding, cb) {\n this.chunk = chunk;\n this.encoding = encoding;\n this.callback = cb;\n this.next = null;\n} // It seems a linked list but it is not\n// there will be only 2 of these for each stream\n\n\nfunction CorkedRequest(state) {\n var _this = this;\n\n this.next = null;\n this.entry = null;\n\n this.finish = function () {\n onCorkedFinish(_this, state);\n };\n}\n/* */\n\n/**/\n\n\nvar Duplex;\n/**/\n\nWritable.WritableState = WritableState;\n/**/\n\nvar internalUtil = {\n deprecate: require('util-deprecate')\n};\n/**/\n\n/**/\n\nvar Stream = require('./internal/streams/stream');\n/**/\n\n\nvar Buffer = require('buffer').Buffer;\n\nvar OurUint8Array = global.Uint8Array || function () {};\n\nfunction _uint8ArrayToBuffer(chunk) {\n return Buffer.from(chunk);\n}\n\nfunction _isUint8Array(obj) {\n return Buffer.isBuffer(obj) || obj instanceof OurUint8Array;\n}\n\nvar destroyImpl = require('./internal/streams/destroy');\n\nvar _require = require('./internal/streams/state'),\n getHighWaterMark = _require.getHighWaterMark;\n\nvar _require$codes = require('../errors').codes,\n ERR_INVALID_ARG_TYPE = _require$codes.ERR_INVALID_ARG_TYPE,\n ERR_METHOD_NOT_IMPLEMENTED = _require$codes.ERR_METHOD_NOT_IMPLEMENTED,\n ERR_MULTIPLE_CALLBACK = _require$codes.ERR_MULTIPLE_CALLBACK,\n ERR_STREAM_CANNOT_PIPE = _require$codes.ERR_STREAM_CANNOT_PIPE,\n ERR_STREAM_DESTROYED = _require$codes.ERR_STREAM_DESTROYED,\n ERR_STREAM_NULL_VALUES = _require$codes.ERR_STREAM_NULL_VALUES,\n ERR_STREAM_WRITE_AFTER_END = _require$codes.ERR_STREAM_WRITE_AFTER_END,\n ERR_UNKNOWN_ENCODING = _require$codes.ERR_UNKNOWN_ENCODING;\n\nvar errorOrDestroy = destroyImpl.errorOrDestroy;\n\nrequire('inherits')(Writable, Stream);\n\nfunction nop() {}\n\nfunction WritableState(options, stream, isDuplex) {\n Duplex = Duplex || require('./_stream_duplex');\n options = options || {}; // Duplex streams are both readable and writable, but share\n // the same options object.\n // However, some cases require setting options to different\n // values for the readable and the writable sides of the duplex stream,\n // e.g. options.readableObjectMode vs. options.writableObjectMode, etc.\n\n if (typeof isDuplex !== 'boolean') isDuplex = stream instanceof Duplex; // object stream flag to indicate whether or not this stream\n // contains buffers or objects.\n\n this.objectMode = !!options.objectMode;\n if (isDuplex) this.objectMode = this.objectMode || !!options.writableObjectMode; // the point at which write() starts returning false\n // Note: 0 is a valid value, means that we always return false if\n // the entire buffer is not flushed immediately on write()\n\n this.highWaterMark = getHighWaterMark(this, options, 'writableHighWaterMark', isDuplex); // if _final has been called\n\n this.finalCalled = false; // drain event flag.\n\n this.needDrain = false; // at the start of calling end()\n\n this.ending = false; // when end() has been called, and returned\n\n this.ended = false; // when 'finish' is emitted\n\n this.finished = false; // has it been destroyed\n\n this.destroyed = false; // should we decode strings into buffers before passing to _write?\n // this is here so that some node-core streams can optimize string\n // handling at a lower level.\n\n var noDecode = options.decodeStrings === false;\n this.decodeStrings = !noDecode; // Crypto is kind of old and crusty. Historically, its default string\n // encoding is 'binary' so we have to make this configurable.\n // Everything else in the universe uses 'utf8', though.\n\n this.defaultEncoding = options.defaultEncoding || 'utf8'; // not an actual buffer we keep track of, but a measurement\n // of how much we're waiting to get pushed to some underlying\n // socket or file.\n\n this.length = 0; // a flag to see when we're in the middle of a write.\n\n this.writing = false; // when true all writes will be buffered until .uncork() call\n\n this.corked = 0; // a flag to be able to tell if the onwrite cb is called immediately,\n // or on a later tick. We set this to true at first, because any\n // actions that shouldn't happen until \"later\" should generally also\n // not happen before the first write call.\n\n this.sync = true; // a flag to know if we're processing previously buffered items, which\n // may call the _write() callback in the same tick, so that we don't\n // end up in an overlapped onwrite situation.\n\n this.bufferProcessing = false; // the callback that's passed to _write(chunk,cb)\n\n this.onwrite = function (er) {\n onwrite(stream, er);\n }; // the callback that the user supplies to write(chunk,encoding,cb)\n\n\n this.writecb = null; // the amount that is being written when _write is called.\n\n this.writelen = 0;\n this.bufferedRequest = null;\n this.lastBufferedRequest = null; // number of pending user-supplied write callbacks\n // this must be 0 before 'finish' can be emitted\n\n this.pendingcb = 0; // emit prefinish if the only thing we're waiting for is _write cbs\n // This is relevant for synchronous Transform streams\n\n this.prefinished = false; // True if the error was already emitted and should not be thrown again\n\n this.errorEmitted = false; // Should close be emitted on destroy. Defaults to true.\n\n this.emitClose = options.emitClose !== false; // Should .destroy() be called after 'finish' (and potentially 'end')\n\n this.autoDestroy = !!options.autoDestroy; // count buffered requests\n\n this.bufferedRequestCount = 0; // allocate the first CorkedRequest, there is always\n // one allocated and free to use, and we maintain at most two\n\n this.corkedRequestsFree = new CorkedRequest(this);\n}\n\nWritableState.prototype.getBuffer = function getBuffer() {\n var current = this.bufferedRequest;\n var out = [];\n\n while (current) {\n out.push(current);\n current = current.next;\n }\n\n return out;\n};\n\n(function () {\n try {\n Object.defineProperty(WritableState.prototype, 'buffer', {\n get: internalUtil.deprecate(function writableStateBufferGetter() {\n return this.getBuffer();\n }, '_writableState.buffer is deprecated. Use _writableState.getBuffer ' + 'instead.', 'DEP0003')\n });\n } catch (_) {}\n})(); // Test _writableState for inheritance to account for Duplex streams,\n// whose prototype chain only points to Readable.\n\n\nvar realHasInstance;\n\nif (typeof Symbol === 'function' && Symbol.hasInstance && typeof Function.prototype[Symbol.hasInstance] === 'function') {\n realHasInstance = Function.prototype[Symbol.hasInstance];\n Object.defineProperty(Writable, Symbol.hasInstance, {\n value: function value(object) {\n if (realHasInstance.call(this, object)) return true;\n if (this !== Writable) return false;\n return object && object._writableState instanceof WritableState;\n }\n });\n} else {\n realHasInstance = function realHasInstance(object) {\n return object instanceof this;\n };\n}\n\nfunction Writable(options) {\n Duplex = Duplex || require('./_stream_duplex'); // Writable ctor is applied to Duplexes, too.\n // `realHasInstance` is necessary because using plain `instanceof`\n // would return false, as no `_writableState` property is attached.\n // Trying to use the custom `instanceof` for Writable here will also break the\n // Node.js LazyTransform implementation, which has a non-trivial getter for\n // `_writableState` that would lead to infinite recursion.\n // Checking for a Stream.Duplex instance is faster here instead of inside\n // the WritableState constructor, at least with V8 6.5\n\n var isDuplex = this instanceof Duplex;\n if (!isDuplex && !realHasInstance.call(Writable, this)) return new Writable(options);\n this._writableState = new WritableState(options, this, isDuplex); // legacy.\n\n this.writable = true;\n\n if (options) {\n if (typeof options.write === 'function') this._write = options.write;\n if (typeof options.writev === 'function') this._writev = options.writev;\n if (typeof options.destroy === 'function') this._destroy = options.destroy;\n if (typeof options.final === 'function') this._final = options.final;\n }\n\n Stream.call(this);\n} // Otherwise people can pipe Writable streams, which is just wrong.\n\n\nWritable.prototype.pipe = function () {\n errorOrDestroy(this, new ERR_STREAM_CANNOT_PIPE());\n};\n\nfunction writeAfterEnd(stream, cb) {\n var er = new ERR_STREAM_WRITE_AFTER_END(); // TODO: defer error events consistently everywhere, not just the cb\n\n errorOrDestroy(stream, er);\n process.nextTick(cb, er);\n} // Checks that a user-supplied chunk is valid, especially for the particular\n// mode the stream is in. Currently this means that `null` is never accepted\n// and undefined/non-string values are only allowed in object mode.\n\n\nfunction validChunk(stream, state, chunk, cb) {\n var er;\n\n if (chunk === null) {\n er = new ERR_STREAM_NULL_VALUES();\n } else if (typeof chunk !== 'string' && !state.objectMode) {\n er = new ERR_INVALID_ARG_TYPE('chunk', ['string', 'Buffer'], chunk);\n }\n\n if (er) {\n errorOrDestroy(stream, er);\n process.nextTick(cb, er);\n return false;\n }\n\n return true;\n}\n\nWritable.prototype.write = function (chunk, encoding, cb) {\n var state = this._writableState;\n var ret = false;\n\n var isBuf = !state.objectMode && _isUint8Array(chunk);\n\n if (isBuf && !Buffer.isBuffer(chunk)) {\n chunk = _uint8ArrayToBuffer(chunk);\n }\n\n if (typeof encoding === 'function') {\n cb = encoding;\n encoding = null;\n }\n\n if (isBuf) encoding = 'buffer';else if (!encoding) encoding = state.defaultEncoding;\n if (typeof cb !== 'function') cb = nop;\n if (state.ending) writeAfterEnd(this, cb);else if (isBuf || validChunk(this, state, chunk, cb)) {\n state.pendingcb++;\n ret = writeOrBuffer(this, state, isBuf, chunk, encoding, cb);\n }\n return ret;\n};\n\nWritable.prototype.cork = function () {\n this._writableState.corked++;\n};\n\nWritable.prototype.uncork = function () {\n var state = this._writableState;\n\n if (state.corked) {\n state.corked--;\n if (!state.writing && !state.corked && !state.bufferProcessing && state.bufferedRequest) clearBuffer(this, state);\n }\n};\n\nWritable.prototype.setDefaultEncoding = function setDefaultEncoding(encoding) {\n // node::ParseEncoding() requires lower case.\n if (typeof encoding === 'string') encoding = encoding.toLowerCase();\n if (!(['hex', 'utf8', 'utf-8', 'ascii', 'binary', 'base64', 'ucs2', 'ucs-2', 'utf16le', 'utf-16le', 'raw'].indexOf((encoding + '').toLowerCase()) > -1)) throw new ERR_UNKNOWN_ENCODING(encoding);\n this._writableState.defaultEncoding = encoding;\n return this;\n};\n\nObject.defineProperty(Writable.prototype, 'writableBuffer', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._writableState && this._writableState.getBuffer();\n }\n});\n\nfunction decodeChunk(state, chunk, encoding) {\n if (!state.objectMode && state.decodeStrings !== false && typeof chunk === 'string') {\n chunk = Buffer.from(chunk, encoding);\n }\n\n return chunk;\n}\n\nObject.defineProperty(Writable.prototype, 'writableHighWaterMark', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._writableState.highWaterMark;\n }\n}); // if we're already writing something, then just put this\n// in the queue, and wait our turn. Otherwise, call _write\n// If we return false, then we need a drain event, so set that flag.\n\nfunction writeOrBuffer(stream, state, isBuf, chunk, encoding, cb) {\n if (!isBuf) {\n var newChunk = decodeChunk(state, chunk, encoding);\n\n if (chunk !== newChunk) {\n isBuf = true;\n encoding = 'buffer';\n chunk = newChunk;\n }\n }\n\n var len = state.objectMode ? 1 : chunk.length;\n state.length += len;\n var ret = state.length < state.highWaterMark; // we must ensure that previous needDrain will not be reset to false.\n\n if (!ret) state.needDrain = true;\n\n if (state.writing || state.corked) {\n var last = state.lastBufferedRequest;\n state.lastBufferedRequest = {\n chunk: chunk,\n encoding: encoding,\n isBuf: isBuf,\n callback: cb,\n next: null\n };\n\n if (last) {\n last.next = state.lastBufferedRequest;\n } else {\n state.bufferedRequest = state.lastBufferedRequest;\n }\n\n state.bufferedRequestCount += 1;\n } else {\n doWrite(stream, state, false, len, chunk, encoding, cb);\n }\n\n return ret;\n}\n\nfunction doWrite(stream, state, writev, len, chunk, encoding, cb) {\n state.writelen = len;\n state.writecb = cb;\n state.writing = true;\n state.sync = true;\n if (state.destroyed) state.onwrite(new ERR_STREAM_DESTROYED('write'));else if (writev) stream._writev(chunk, state.onwrite);else stream._write(chunk, encoding, state.onwrite);\n state.sync = false;\n}\n\nfunction onwriteError(stream, state, sync, er, cb) {\n --state.pendingcb;\n\n if (sync) {\n // defer the callback if we are being called synchronously\n // to avoid piling up things on the stack\n process.nextTick(cb, er); // this can emit finish, and it will always happen\n // after error\n\n process.nextTick(finishMaybe, stream, state);\n stream._writableState.errorEmitted = true;\n errorOrDestroy(stream, er);\n } else {\n // the caller expect this to happen before if\n // it is async\n cb(er);\n stream._writableState.errorEmitted = true;\n errorOrDestroy(stream, er); // this can emit finish, but finish must\n // always follow error\n\n finishMaybe(stream, state);\n }\n}\n\nfunction onwriteStateUpdate(state) {\n state.writing = false;\n state.writecb = null;\n state.length -= state.writelen;\n state.writelen = 0;\n}\n\nfunction onwrite(stream, er) {\n var state = stream._writableState;\n var sync = state.sync;\n var cb = state.writecb;\n if (typeof cb !== 'function') throw new ERR_MULTIPLE_CALLBACK();\n onwriteStateUpdate(state);\n if (er) onwriteError(stream, state, sync, er, cb);else {\n // Check if we're actually ready to finish, but don't emit yet\n var finished = needFinish(state) || stream.destroyed;\n\n if (!finished && !state.corked && !state.bufferProcessing && state.bufferedRequest) {\n clearBuffer(stream, state);\n }\n\n if (sync) {\n process.nextTick(afterWrite, stream, state, finished, cb);\n } else {\n afterWrite(stream, state, finished, cb);\n }\n }\n}\n\nfunction afterWrite(stream, state, finished, cb) {\n if (!finished) onwriteDrain(stream, state);\n state.pendingcb--;\n cb();\n finishMaybe(stream, state);\n} // Must force callback to be called on nextTick, so that we don't\n// emit 'drain' before the write() consumer gets the 'false' return\n// value, and has a chance to attach a 'drain' listener.\n\n\nfunction onwriteDrain(stream, state) {\n if (state.length === 0 && state.needDrain) {\n state.needDrain = false;\n stream.emit('drain');\n }\n} // if there's something in the buffer waiting, then process it\n\n\nfunction clearBuffer(stream, state) {\n state.bufferProcessing = true;\n var entry = state.bufferedRequest;\n\n if (stream._writev && entry && entry.next) {\n // Fast case, write everything using _writev()\n var l = state.bufferedRequestCount;\n var buffer = new Array(l);\n var holder = state.corkedRequestsFree;\n holder.entry = entry;\n var count = 0;\n var allBuffers = true;\n\n while (entry) {\n buffer[count] = entry;\n if (!entry.isBuf) allBuffers = false;\n entry = entry.next;\n count += 1;\n }\n\n buffer.allBuffers = allBuffers;\n doWrite(stream, state, true, state.length, buffer, '', holder.finish); // doWrite is almost always async, defer these to save a bit of time\n // as the hot path ends with doWrite\n\n state.pendingcb++;\n state.lastBufferedRequest = null;\n\n if (holder.next) {\n state.corkedRequestsFree = holder.next;\n holder.next = null;\n } else {\n state.corkedRequestsFree = new CorkedRequest(state);\n }\n\n state.bufferedRequestCount = 0;\n } else {\n // Slow case, write chunks one-by-one\n while (entry) {\n var chunk = entry.chunk;\n var encoding = entry.encoding;\n var cb = entry.callback;\n var len = state.objectMode ? 1 : chunk.length;\n doWrite(stream, state, false, len, chunk, encoding, cb);\n entry = entry.next;\n state.bufferedRequestCount--; // if we didn't call the onwrite immediately, then\n // it means that we need to wait until it does.\n // also, that means that the chunk and cb are currently\n // being processed, so move the buffer counter past them.\n\n if (state.writing) {\n break;\n }\n }\n\n if (entry === null) state.lastBufferedRequest = null;\n }\n\n state.bufferedRequest = entry;\n state.bufferProcessing = false;\n}\n\nWritable.prototype._write = function (chunk, encoding, cb) {\n cb(new ERR_METHOD_NOT_IMPLEMENTED('_write()'));\n};\n\nWritable.prototype._writev = null;\n\nWritable.prototype.end = function (chunk, encoding, cb) {\n var state = this._writableState;\n\n if (typeof chunk === 'function') {\n cb = chunk;\n chunk = null;\n encoding = null;\n } else if (typeof encoding === 'function') {\n cb = encoding;\n encoding = null;\n }\n\n if (chunk !== null && chunk !== undefined) this.write(chunk, encoding); // .end() fully uncorks\n\n if (state.corked) {\n state.corked = 1;\n this.uncork();\n } // ignore unnecessary end() calls.\n\n\n if (!state.ending) endWritable(this, state, cb);\n return this;\n};\n\nObject.defineProperty(Writable.prototype, 'writableLength', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._writableState.length;\n }\n});\n\nfunction needFinish(state) {\n return state.ending && state.length === 0 && state.bufferedRequest === null && !state.finished && !state.writing;\n}\n\nfunction callFinal(stream, state) {\n stream._final(function (err) {\n state.pendingcb--;\n\n if (err) {\n errorOrDestroy(stream, err);\n }\n\n state.prefinished = true;\n stream.emit('prefinish');\n finishMaybe(stream, state);\n });\n}\n\nfunction prefinish(stream, state) {\n if (!state.prefinished && !state.finalCalled) {\n if (typeof stream._final === 'function' && !state.destroyed) {\n state.pendingcb++;\n state.finalCalled = true;\n process.nextTick(callFinal, stream, state);\n } else {\n state.prefinished = true;\n stream.emit('prefinish');\n }\n }\n}\n\nfunction finishMaybe(stream, state) {\n var need = needFinish(state);\n\n if (need) {\n prefinish(stream, state);\n\n if (state.pendingcb === 0) {\n state.finished = true;\n stream.emit('finish');\n\n if (state.autoDestroy) {\n // In case of duplex streams we need a way to detect\n // if the readable side is ready for autoDestroy as well\n var rState = stream._readableState;\n\n if (!rState || rState.autoDestroy && rState.endEmitted) {\n stream.destroy();\n }\n }\n }\n }\n\n return need;\n}\n\nfunction endWritable(stream, state, cb) {\n state.ending = true;\n finishMaybe(stream, state);\n\n if (cb) {\n if (state.finished) process.nextTick(cb);else stream.once('finish', cb);\n }\n\n state.ended = true;\n stream.writable = false;\n}\n\nfunction onCorkedFinish(corkReq, state, err) {\n var entry = corkReq.entry;\n corkReq.entry = null;\n\n while (entry) {\n var cb = entry.callback;\n state.pendingcb--;\n cb(err);\n entry = entry.next;\n } // reuse the free corkReq.\n\n\n state.corkedRequestsFree.next = corkReq;\n}\n\nObject.defineProperty(Writable.prototype, 'destroyed', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n if (this._writableState === undefined) {\n return false;\n }\n\n return this._writableState.destroyed;\n },\n set: function set(value) {\n // we ignore the value if the stream\n // has not been initialized yet\n if (!this._writableState) {\n return;\n } // backward compatibility, the user is explicitly\n // managing destroyed\n\n\n this._writableState.destroyed = value;\n }\n});\nWritable.prototype.destroy = destroyImpl.destroy;\nWritable.prototype._undestroy = destroyImpl.undestroy;\n\nWritable.prototype._destroy = function (err, cb) {\n cb(err);\n};","'use strict';\n\nvar _Object$setPrototypeO;\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nvar finished = require('./end-of-stream');\n\nvar kLastResolve = Symbol('lastResolve');\nvar kLastReject = Symbol('lastReject');\nvar kError = Symbol('error');\nvar kEnded = Symbol('ended');\nvar kLastPromise = Symbol('lastPromise');\nvar kHandlePromise = Symbol('handlePromise');\nvar kStream = Symbol('stream');\n\nfunction createIterResult(value, done) {\n return {\n value: value,\n done: done\n };\n}\n\nfunction readAndResolve(iter) {\n var resolve = iter[kLastResolve];\n\n if (resolve !== null) {\n var data = iter[kStream].read(); // we defer if data is null\n // we can be expecting either 'end' or\n // 'error'\n\n if (data !== null) {\n iter[kLastPromise] = null;\n iter[kLastResolve] = null;\n iter[kLastReject] = null;\n resolve(createIterResult(data, false));\n }\n }\n}\n\nfunction onReadable(iter) {\n // we wait for the next tick, because it might\n // emit an error with process.nextTick\n process.nextTick(readAndResolve, iter);\n}\n\nfunction wrapForNext(lastPromise, iter) {\n return function (resolve, reject) {\n lastPromise.then(function () {\n if (iter[kEnded]) {\n resolve(createIterResult(undefined, true));\n return;\n }\n\n iter[kHandlePromise](resolve, reject);\n }, reject);\n };\n}\n\nvar AsyncIteratorPrototype = Object.getPrototypeOf(function () {});\nvar ReadableStreamAsyncIteratorPrototype = Object.setPrototypeOf((_Object$setPrototypeO = {\n get stream() {\n return this[kStream];\n },\n\n next: function next() {\n var _this = this;\n\n // if we have detected an error in the meanwhile\n // reject straight away\n var error = this[kError];\n\n if (error !== null) {\n return Promise.reject(error);\n }\n\n if (this[kEnded]) {\n return Promise.resolve(createIterResult(undefined, true));\n }\n\n if (this[kStream].destroyed) {\n // We need to defer via nextTick because if .destroy(err) is\n // called, the error will be emitted via nextTick, and\n // we cannot guarantee that there is no error lingering around\n // waiting to be emitted.\n return new Promise(function (resolve, reject) {\n process.nextTick(function () {\n if (_this[kError]) {\n reject(_this[kError]);\n } else {\n resolve(createIterResult(undefined, true));\n }\n });\n });\n } // if we have multiple next() calls\n // we will wait for the previous Promise to finish\n // this logic is optimized to support for await loops,\n // where next() is only called once at a time\n\n\n var lastPromise = this[kLastPromise];\n var promise;\n\n if (lastPromise) {\n promise = new Promise(wrapForNext(lastPromise, this));\n } else {\n // fast path needed to support multiple this.push()\n // without triggering the next() queue\n var data = this[kStream].read();\n\n if (data !== null) {\n return Promise.resolve(createIterResult(data, false));\n }\n\n promise = new Promise(this[kHandlePromise]);\n }\n\n this[kLastPromise] = promise;\n return promise;\n }\n}, _defineProperty(_Object$setPrototypeO, Symbol.asyncIterator, function () {\n return this;\n}), _defineProperty(_Object$setPrototypeO, \"return\", function _return() {\n var _this2 = this;\n\n // destroy(err, cb) is a private API\n // we can guarantee we have that here, because we control the\n // Readable class this is attached to\n return new Promise(function (resolve, reject) {\n _this2[kStream].destroy(null, function (err) {\n if (err) {\n reject(err);\n return;\n }\n\n resolve(createIterResult(undefined, true));\n });\n });\n}), _Object$setPrototypeO), AsyncIteratorPrototype);\n\nvar createReadableStreamAsyncIterator = function createReadableStreamAsyncIterator(stream) {\n var _Object$create;\n\n var iterator = Object.create(ReadableStreamAsyncIteratorPrototype, (_Object$create = {}, _defineProperty(_Object$create, kStream, {\n value: stream,\n writable: true\n }), _defineProperty(_Object$create, kLastResolve, {\n value: null,\n writable: true\n }), _defineProperty(_Object$create, kLastReject, {\n value: null,\n writable: true\n }), _defineProperty(_Object$create, kError, {\n value: null,\n writable: true\n }), _defineProperty(_Object$create, kEnded, {\n value: stream._readableState.endEmitted,\n writable: true\n }), _defineProperty(_Object$create, kHandlePromise, {\n value: function value(resolve, reject) {\n var data = iterator[kStream].read();\n\n if (data) {\n iterator[kLastPromise] = null;\n iterator[kLastResolve] = null;\n iterator[kLastReject] = null;\n resolve(createIterResult(data, false));\n } else {\n iterator[kLastResolve] = resolve;\n iterator[kLastReject] = reject;\n }\n },\n writable: true\n }), _Object$create));\n iterator[kLastPromise] = null;\n finished(stream, function (err) {\n if (err && err.code !== 'ERR_STREAM_PREMATURE_CLOSE') {\n var reject = iterator[kLastReject]; // reject if we are waiting for data in the Promise\n // returned by next() and store the error\n\n if (reject !== null) {\n iterator[kLastPromise] = null;\n iterator[kLastResolve] = null;\n iterator[kLastReject] = null;\n reject(err);\n }\n\n iterator[kError] = err;\n return;\n }\n\n var resolve = iterator[kLastResolve];\n\n if (resolve !== null) {\n iterator[kLastPromise] = null;\n iterator[kLastResolve] = null;\n iterator[kLastReject] = null;\n resolve(createIterResult(undefined, true));\n }\n\n iterator[kEnded] = true;\n });\n stream.on('readable', onReadable.bind(null, iterator));\n return iterator;\n};\n\nmodule.exports = createReadableStreamAsyncIterator;","'use strict';\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nvar _require = require('buffer'),\n Buffer = _require.Buffer;\n\nvar _require2 = require('util'),\n inspect = _require2.inspect;\n\nvar custom = inspect && inspect.custom || 'inspect';\n\nfunction copyBuffer(src, target, offset) {\n Buffer.prototype.copy.call(src, target, offset);\n}\n\nmodule.exports =\n/*#__PURE__*/\nfunction () {\n function BufferList() {\n _classCallCheck(this, BufferList);\n\n this.head = null;\n this.tail = null;\n this.length = 0;\n }\n\n _createClass(BufferList, [{\n key: \"push\",\n value: function push(v) {\n var entry = {\n data: v,\n next: null\n };\n if (this.length > 0) this.tail.next = entry;else this.head = entry;\n this.tail = entry;\n ++this.length;\n }\n }, {\n key: \"unshift\",\n value: function unshift(v) {\n var entry = {\n data: v,\n next: this.head\n };\n if (this.length === 0) this.tail = entry;\n this.head = entry;\n ++this.length;\n }\n }, {\n key: \"shift\",\n value: function shift() {\n if (this.length === 0) return;\n var ret = this.head.data;\n if (this.length === 1) this.head = this.tail = null;else this.head = this.head.next;\n --this.length;\n return ret;\n }\n }, {\n key: \"clear\",\n value: function clear() {\n this.head = this.tail = null;\n this.length = 0;\n }\n }, {\n key: \"join\",\n value: function join(s) {\n if (this.length === 0) return '';\n var p = this.head;\n var ret = '' + p.data;\n\n while (p = p.next) {\n ret += s + p.data;\n }\n\n return ret;\n }\n }, {\n key: \"concat\",\n value: function concat(n) {\n if (this.length === 0) return Buffer.alloc(0);\n var ret = Buffer.allocUnsafe(n >>> 0);\n var p = this.head;\n var i = 0;\n\n while (p) {\n copyBuffer(p.data, ret, i);\n i += p.data.length;\n p = p.next;\n }\n\n return ret;\n } // Consumes a specified amount of bytes or characters from the buffered data.\n\n }, {\n key: \"consume\",\n value: function consume(n, hasStrings) {\n var ret;\n\n if (n < this.head.data.length) {\n // `slice` is the same for buffers and strings.\n ret = this.head.data.slice(0, n);\n this.head.data = this.head.data.slice(n);\n } else if (n === this.head.data.length) {\n // First chunk is a perfect match.\n ret = this.shift();\n } else {\n // Result spans more than one buffer.\n ret = hasStrings ? this._getString(n) : this._getBuffer(n);\n }\n\n return ret;\n }\n }, {\n key: \"first\",\n value: function first() {\n return this.head.data;\n } // Consumes a specified amount of characters from the buffered data.\n\n }, {\n key: \"_getString\",\n value: function _getString(n) {\n var p = this.head;\n var c = 1;\n var ret = p.data;\n n -= ret.length;\n\n while (p = p.next) {\n var str = p.data;\n var nb = n > str.length ? str.length : n;\n if (nb === str.length) ret += str;else ret += str.slice(0, n);\n n -= nb;\n\n if (n === 0) {\n if (nb === str.length) {\n ++c;\n if (p.next) this.head = p.next;else this.head = this.tail = null;\n } else {\n this.head = p;\n p.data = str.slice(nb);\n }\n\n break;\n }\n\n ++c;\n }\n\n this.length -= c;\n return ret;\n } // Consumes a specified amount of bytes from the buffered data.\n\n }, {\n key: \"_getBuffer\",\n value: function _getBuffer(n) {\n var ret = Buffer.allocUnsafe(n);\n var p = this.head;\n var c = 1;\n p.data.copy(ret);\n n -= p.data.length;\n\n while (p = p.next) {\n var buf = p.data;\n var nb = n > buf.length ? buf.length : n;\n buf.copy(ret, ret.length - n, 0, nb);\n n -= nb;\n\n if (n === 0) {\n if (nb === buf.length) {\n ++c;\n if (p.next) this.head = p.next;else this.head = this.tail = null;\n } else {\n this.head = p;\n p.data = buf.slice(nb);\n }\n\n break;\n }\n\n ++c;\n }\n\n this.length -= c;\n return ret;\n } // Make sure the linked list only shows the minimal necessary information.\n\n }, {\n key: custom,\n value: function value(_, options) {\n return inspect(this, _objectSpread({}, options, {\n // Only inspect one level.\n depth: 0,\n // It should not recurse.\n customInspect: false\n }));\n }\n }]);\n\n return BufferList;\n}();","'use strict'; // undocumented cb() API, needed for core, not for public API\n\nfunction destroy(err, cb) {\n var _this = this;\n\n var readableDestroyed = this._readableState && this._readableState.destroyed;\n var writableDestroyed = this._writableState && this._writableState.destroyed;\n\n if (readableDestroyed || writableDestroyed) {\n if (cb) {\n cb(err);\n } else if (err) {\n if (!this._writableState) {\n process.nextTick(emitErrorNT, this, err);\n } else if (!this._writableState.errorEmitted) {\n this._writableState.errorEmitted = true;\n process.nextTick(emitErrorNT, this, err);\n }\n }\n\n return this;\n } // we set destroyed to true before firing error callbacks in order\n // to make it re-entrance safe in case destroy() is called within callbacks\n\n\n if (this._readableState) {\n this._readableState.destroyed = true;\n } // if this is a duplex stream mark the writable part as destroyed as well\n\n\n if (this._writableState) {\n this._writableState.destroyed = true;\n }\n\n this._destroy(err || null, function (err) {\n if (!cb && err) {\n if (!_this._writableState) {\n process.nextTick(emitErrorAndCloseNT, _this, err);\n } else if (!_this._writableState.errorEmitted) {\n _this._writableState.errorEmitted = true;\n process.nextTick(emitErrorAndCloseNT, _this, err);\n } else {\n process.nextTick(emitCloseNT, _this);\n }\n } else if (cb) {\n process.nextTick(emitCloseNT, _this);\n cb(err);\n } else {\n process.nextTick(emitCloseNT, _this);\n }\n });\n\n return this;\n}\n\nfunction emitErrorAndCloseNT(self, err) {\n emitErrorNT(self, err);\n emitCloseNT(self);\n}\n\nfunction emitCloseNT(self) {\n if (self._writableState && !self._writableState.emitClose) return;\n if (self._readableState && !self._readableState.emitClose) return;\n self.emit('close');\n}\n\nfunction undestroy() {\n if (this._readableState) {\n this._readableState.destroyed = false;\n this._readableState.reading = false;\n this._readableState.ended = false;\n this._readableState.endEmitted = false;\n }\n\n if (this._writableState) {\n this._writableState.destroyed = false;\n this._writableState.ended = false;\n this._writableState.ending = false;\n this._writableState.finalCalled = false;\n this._writableState.prefinished = false;\n this._writableState.finished = false;\n this._writableState.errorEmitted = false;\n }\n}\n\nfunction emitErrorNT(self, err) {\n self.emit('error', err);\n}\n\nfunction errorOrDestroy(stream, err) {\n // We have tests that rely on errors being emitted\n // in the same tick, so changing this is semver major.\n // For now when you opt-in to autoDestroy we allow\n // the error to be emitted nextTick. In a future\n // semver major update we should change the default to this.\n var rState = stream._readableState;\n var wState = stream._writableState;\n if (rState && rState.autoDestroy || wState && wState.autoDestroy) stream.destroy(err);else stream.emit('error', err);\n}\n\nmodule.exports = {\n destroy: destroy,\n undestroy: undestroy,\n errorOrDestroy: errorOrDestroy\n};","// Ported from https://github.com/mafintosh/end-of-stream with\n// permission from the author, Mathias Buus (@mafintosh).\n'use strict';\n\nvar ERR_STREAM_PREMATURE_CLOSE = require('../../../errors').codes.ERR_STREAM_PREMATURE_CLOSE;\n\nfunction once(callback) {\n var called = false;\n return function () {\n if (called) return;\n called = true;\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n callback.apply(this, args);\n };\n}\n\nfunction noop() {}\n\nfunction isRequest(stream) {\n return stream.setHeader && typeof stream.abort === 'function';\n}\n\nfunction eos(stream, opts, callback) {\n if (typeof opts === 'function') return eos(stream, null, opts);\n if (!opts) opts = {};\n callback = once(callback || noop);\n var readable = opts.readable || opts.readable !== false && stream.readable;\n var writable = opts.writable || opts.writable !== false && stream.writable;\n\n var onlegacyfinish = function onlegacyfinish() {\n if (!stream.writable) onfinish();\n };\n\n var writableEnded = stream._writableState && stream._writableState.finished;\n\n var onfinish = function onfinish() {\n writable = false;\n writableEnded = true;\n if (!readable) callback.call(stream);\n };\n\n var readableEnded = stream._readableState && stream._readableState.endEmitted;\n\n var onend = function onend() {\n readable = false;\n readableEnded = true;\n if (!writable) callback.call(stream);\n };\n\n var onerror = function onerror(err) {\n callback.call(stream, err);\n };\n\n var onclose = function onclose() {\n var err;\n\n if (readable && !readableEnded) {\n if (!stream._readableState || !stream._readableState.ended) err = new ERR_STREAM_PREMATURE_CLOSE();\n return callback.call(stream, err);\n }\n\n if (writable && !writableEnded) {\n if (!stream._writableState || !stream._writableState.ended) err = new ERR_STREAM_PREMATURE_CLOSE();\n return callback.call(stream, err);\n }\n };\n\n var onrequest = function onrequest() {\n stream.req.on('finish', onfinish);\n };\n\n if (isRequest(stream)) {\n stream.on('complete', onfinish);\n stream.on('abort', onclose);\n if (stream.req) onrequest();else stream.on('request', onrequest);\n } else if (writable && !stream._writableState) {\n // legacy streams\n stream.on('end', onlegacyfinish);\n stream.on('close', onlegacyfinish);\n }\n\n stream.on('end', onend);\n stream.on('finish', onfinish);\n if (opts.error !== false) stream.on('error', onerror);\n stream.on('close', onclose);\n return function () {\n stream.removeListener('complete', onfinish);\n stream.removeListener('abort', onclose);\n stream.removeListener('request', onrequest);\n if (stream.req) stream.req.removeListener('finish', onfinish);\n stream.removeListener('end', onlegacyfinish);\n stream.removeListener('close', onlegacyfinish);\n stream.removeListener('finish', onfinish);\n stream.removeListener('end', onend);\n stream.removeListener('error', onerror);\n stream.removeListener('close', onclose);\n };\n}\n\nmodule.exports = eos;","module.exports = function () {\n throw new Error('Readable.from is not available in the browser')\n};\n","// Ported from https://github.com/mafintosh/pump with\n// permission from the author, Mathias Buus (@mafintosh).\n'use strict';\n\nvar eos;\n\nfunction once(callback) {\n var called = false;\n return function () {\n if (called) return;\n called = true;\n callback.apply(void 0, arguments);\n };\n}\n\nvar _require$codes = require('../../../errors').codes,\n ERR_MISSING_ARGS = _require$codes.ERR_MISSING_ARGS,\n ERR_STREAM_DESTROYED = _require$codes.ERR_STREAM_DESTROYED;\n\nfunction noop(err) {\n // Rethrow the error if it exists to avoid swallowing it\n if (err) throw err;\n}\n\nfunction isRequest(stream) {\n return stream.setHeader && typeof stream.abort === 'function';\n}\n\nfunction destroyer(stream, reading, writing, callback) {\n callback = once(callback);\n var closed = false;\n stream.on('close', function () {\n closed = true;\n });\n if (eos === undefined) eos = require('./end-of-stream');\n eos(stream, {\n readable: reading,\n writable: writing\n }, function (err) {\n if (err) return callback(err);\n closed = true;\n callback();\n });\n var destroyed = false;\n return function (err) {\n if (closed) return;\n if (destroyed) return;\n destroyed = true; // request.destroy just do .end - .abort is what we want\n\n if (isRequest(stream)) return stream.abort();\n if (typeof stream.destroy === 'function') return stream.destroy();\n callback(err || new ERR_STREAM_DESTROYED('pipe'));\n };\n}\n\nfunction call(fn) {\n fn();\n}\n\nfunction pipe(from, to) {\n return from.pipe(to);\n}\n\nfunction popCallback(streams) {\n if (!streams.length) return noop;\n if (typeof streams[streams.length - 1] !== 'function') return noop;\n return streams.pop();\n}\n\nfunction pipeline() {\n for (var _len = arguments.length, streams = new Array(_len), _key = 0; _key < _len; _key++) {\n streams[_key] = arguments[_key];\n }\n\n var callback = popCallback(streams);\n if (Array.isArray(streams[0])) streams = streams[0];\n\n if (streams.length < 2) {\n throw new ERR_MISSING_ARGS('streams');\n }\n\n var error;\n var destroys = streams.map(function (stream, i) {\n var reading = i < streams.length - 1;\n var writing = i > 0;\n return destroyer(stream, reading, writing, function (err) {\n if (!error) error = err;\n if (err) destroys.forEach(call);\n if (reading) return;\n destroys.forEach(call);\n callback(error);\n });\n });\n return streams.reduce(pipe);\n}\n\nmodule.exports = pipeline;","'use strict';\n\nvar ERR_INVALID_OPT_VALUE = require('../../../errors').codes.ERR_INVALID_OPT_VALUE;\n\nfunction highWaterMarkFrom(options, isDuplex, duplexKey) {\n return options.highWaterMark != null ? options.highWaterMark : isDuplex ? options[duplexKey] : null;\n}\n\nfunction getHighWaterMark(state, options, duplexKey, isDuplex) {\n var hwm = highWaterMarkFrom(options, isDuplex, duplexKey);\n\n if (hwm != null) {\n if (!(isFinite(hwm) && Math.floor(hwm) === hwm) || hwm < 0) {\n var name = isDuplex ? duplexKey : 'highWaterMark';\n throw new ERR_INVALID_OPT_VALUE(name, hwm);\n }\n\n return Math.floor(hwm);\n } // Default value\n\n\n return state.objectMode ? 16 : 16 * 1024;\n}\n\nmodule.exports = {\n getHighWaterMark: getHighWaterMark\n};","module.exports = require('events').EventEmitter;\n","\n//force to a valid range\nvar range = exports.range = function (obj) {\n return null == obj ? {} : 'string' === typeof range ? {\n min: range, max: range + '\\xff'\n } : obj\n}\n\n//turn into a sub range.\nvar prefix = exports.prefix = function (range, within, term) {\n range = exports.range(range)\n var _range = {}\n term = term || '\\xff'\n if(range instanceof RegExp || 'function' == typeof range) {\n _range.min = within\n _range.max = within + term,\n _range.inner = function (k) {\n var j = k.substring(within.length)\n if(range.test)\n return range.test(j)\n return range(j)\n }\n }\n else if('object' === typeof range) {\n _range.min = within + (range.min || range.start || '')\n _range.max = within + (range.max || range.end || (term || '~'))\n _range.reverse = !!range.reverse\n }\n return _range\n}\n\n//return a function that checks a range\nvar checker = exports.checker = function (range) {\n if(!range) range = {}\n\n if ('string' === typeof range)\n return function (key) {\n return key.indexOf(range) == 0\n }\n else if(range instanceof RegExp)\n return function (key) {\n return range.test(key)\n }\n else if('object' === typeof range)\n return function (key) {\n var min = range.min || range.start\n var max = range.max || range.end\n\n // fixes keys passed as ints from sublevels\n key = String(key)\n\n return (\n !min || key >= min\n ) && (\n !max || key <= max\n ) && (\n !range.inner || (\n range.inner.test \n ? range.inner.test(key)\n : range.inner(key)\n )\n )\n }\n else if('function' === typeof range)\n return range\n}\n//check if a key is within a range.\nvar satifies = exports.satisfies = function (key, range) {\n return checker(range)(key)\n}\n\n\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\n/**/\n\nvar Buffer = require('safe-buffer').Buffer;\n/**/\n\nvar isEncoding = Buffer.isEncoding || function (encoding) {\n encoding = '' + encoding;\n switch (encoding && encoding.toLowerCase()) {\n case 'hex':case 'utf8':case 'utf-8':case 'ascii':case 'binary':case 'base64':case 'ucs2':case 'ucs-2':case 'utf16le':case 'utf-16le':case 'raw':\n return true;\n default:\n return false;\n }\n};\n\nfunction _normalizeEncoding(enc) {\n if (!enc) return 'utf8';\n var retried;\n while (true) {\n switch (enc) {\n case 'utf8':\n case 'utf-8':\n return 'utf8';\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return 'utf16le';\n case 'latin1':\n case 'binary':\n return 'latin1';\n case 'base64':\n case 'ascii':\n case 'hex':\n return enc;\n default:\n if (retried) return; // undefined\n enc = ('' + enc).toLowerCase();\n retried = true;\n }\n }\n};\n\n// Do not cache `Buffer.isEncoding` when checking encoding names as some\n// modules monkey-patch it to support additional encodings\nfunction normalizeEncoding(enc) {\n var nenc = _normalizeEncoding(enc);\n if (typeof nenc !== 'string' && (Buffer.isEncoding === isEncoding || !isEncoding(enc))) throw new Error('Unknown encoding: ' + enc);\n return nenc || enc;\n}\n\n// StringDecoder provides an interface for efficiently splitting a series of\n// buffers into a series of JS strings without breaking apart multi-byte\n// characters.\nexports.StringDecoder = StringDecoder;\nfunction StringDecoder(encoding) {\n this.encoding = normalizeEncoding(encoding);\n var nb;\n switch (this.encoding) {\n case 'utf16le':\n this.text = utf16Text;\n this.end = utf16End;\n nb = 4;\n break;\n case 'utf8':\n this.fillLast = utf8FillLast;\n nb = 4;\n break;\n case 'base64':\n this.text = base64Text;\n this.end = base64End;\n nb = 3;\n break;\n default:\n this.write = simpleWrite;\n this.end = simpleEnd;\n return;\n }\n this.lastNeed = 0;\n this.lastTotal = 0;\n this.lastChar = Buffer.allocUnsafe(nb);\n}\n\nStringDecoder.prototype.write = function (buf) {\n if (buf.length === 0) return '';\n var r;\n var i;\n if (this.lastNeed) {\n r = this.fillLast(buf);\n if (r === undefined) return '';\n i = this.lastNeed;\n this.lastNeed = 0;\n } else {\n i = 0;\n }\n if (i < buf.length) return r ? r + this.text(buf, i) : this.text(buf, i);\n return r || '';\n};\n\nStringDecoder.prototype.end = utf8End;\n\n// Returns only complete characters in a Buffer\nStringDecoder.prototype.text = utf8Text;\n\n// Attempts to complete a partial non-UTF-8 character using bytes from a Buffer\nStringDecoder.prototype.fillLast = function (buf) {\n if (this.lastNeed <= buf.length) {\n buf.copy(this.lastChar, this.lastTotal - this.lastNeed, 0, this.lastNeed);\n return this.lastChar.toString(this.encoding, 0, this.lastTotal);\n }\n buf.copy(this.lastChar, this.lastTotal - this.lastNeed, 0, buf.length);\n this.lastNeed -= buf.length;\n};\n\n// Checks the type of a UTF-8 byte, whether it's ASCII, a leading byte, or a\n// continuation byte. If an invalid byte is detected, -2 is returned.\nfunction utf8CheckByte(byte) {\n if (byte <= 0x7F) return 0;else if (byte >> 5 === 0x06) return 2;else if (byte >> 4 === 0x0E) return 3;else if (byte >> 3 === 0x1E) return 4;\n return byte >> 6 === 0x02 ? -1 : -2;\n}\n\n// Checks at most 3 bytes at the end of a Buffer in order to detect an\n// incomplete multi-byte UTF-8 character. The total number of bytes (2, 3, or 4)\n// needed to complete the UTF-8 character (if applicable) are returned.\nfunction utf8CheckIncomplete(self, buf, i) {\n var j = buf.length - 1;\n if (j < i) return 0;\n var nb = utf8CheckByte(buf[j]);\n if (nb >= 0) {\n if (nb > 0) self.lastNeed = nb - 1;\n return nb;\n }\n if (--j < i || nb === -2) return 0;\n nb = utf8CheckByte(buf[j]);\n if (nb >= 0) {\n if (nb > 0) self.lastNeed = nb - 2;\n return nb;\n }\n if (--j < i || nb === -2) return 0;\n nb = utf8CheckByte(buf[j]);\n if (nb >= 0) {\n if (nb > 0) {\n if (nb === 2) nb = 0;else self.lastNeed = nb - 3;\n }\n return nb;\n }\n return 0;\n}\n\n// Validates as many continuation bytes for a multi-byte UTF-8 character as\n// needed or are available. If we see a non-continuation byte where we expect\n// one, we \"replace\" the validated continuation bytes we've seen so far with\n// a single UTF-8 replacement character ('\\ufffd'), to match v8's UTF-8 decoding\n// behavior. The continuation byte check is included three times in the case\n// where all of the continuation bytes for a character exist in the same buffer.\n// It is also done this way as a slight performance increase instead of using a\n// loop.\nfunction utf8CheckExtraBytes(self, buf, p) {\n if ((buf[0] & 0xC0) !== 0x80) {\n self.lastNeed = 0;\n return '\\ufffd';\n }\n if (self.lastNeed > 1 && buf.length > 1) {\n if ((buf[1] & 0xC0) !== 0x80) {\n self.lastNeed = 1;\n return '\\ufffd';\n }\n if (self.lastNeed > 2 && buf.length > 2) {\n if ((buf[2] & 0xC0) !== 0x80) {\n self.lastNeed = 2;\n return '\\ufffd';\n }\n }\n }\n}\n\n// Attempts to complete a multi-byte UTF-8 character using bytes from a Buffer.\nfunction utf8FillLast(buf) {\n var p = this.lastTotal - this.lastNeed;\n var r = utf8CheckExtraBytes(this, buf, p);\n if (r !== undefined) return r;\n if (this.lastNeed <= buf.length) {\n buf.copy(this.lastChar, p, 0, this.lastNeed);\n return this.lastChar.toString(this.encoding, 0, this.lastTotal);\n }\n buf.copy(this.lastChar, p, 0, buf.length);\n this.lastNeed -= buf.length;\n}\n\n// Returns all complete UTF-8 characters in a Buffer. If the Buffer ended on a\n// partial character, the character's bytes are buffered until the required\n// number of bytes are available.\nfunction utf8Text(buf, i) {\n var total = utf8CheckIncomplete(this, buf, i);\n if (!this.lastNeed) return buf.toString('utf8', i);\n this.lastTotal = total;\n var end = buf.length - (total - this.lastNeed);\n buf.copy(this.lastChar, 0, end);\n return buf.toString('utf8', i, end);\n}\n\n// For UTF-8, a replacement character is added when ending on a partial\n// character.\nfunction utf8End(buf) {\n var r = buf && buf.length ? this.write(buf) : '';\n if (this.lastNeed) return r + '\\ufffd';\n return r;\n}\n\n// UTF-16LE typically needs two bytes per character, but even if we have an even\n// number of bytes available, we need to check if we end on a leading/high\n// surrogate. In that case, we need to wait for the next two bytes in order to\n// decode the last character properly.\nfunction utf16Text(buf, i) {\n if ((buf.length - i) % 2 === 0) {\n var r = buf.toString('utf16le', i);\n if (r) {\n var c = r.charCodeAt(r.length - 1);\n if (c >= 0xD800 && c <= 0xDBFF) {\n this.lastNeed = 2;\n this.lastTotal = 4;\n this.lastChar[0] = buf[buf.length - 2];\n this.lastChar[1] = buf[buf.length - 1];\n return r.slice(0, -1);\n }\n }\n return r;\n }\n this.lastNeed = 1;\n this.lastTotal = 2;\n this.lastChar[0] = buf[buf.length - 1];\n return buf.toString('utf16le', i, buf.length - 1);\n}\n\n// For UTF-16LE we do not explicitly append special replacement characters if we\n// end on a partial character, we simply let v8 handle that.\nfunction utf16End(buf) {\n var r = buf && buf.length ? this.write(buf) : '';\n if (this.lastNeed) {\n var end = this.lastTotal - this.lastNeed;\n return r + this.lastChar.toString('utf16le', 0, end);\n }\n return r;\n}\n\nfunction base64Text(buf, i) {\n var n = (buf.length - i) % 3;\n if (n === 0) return buf.toString('base64', i);\n this.lastNeed = 3 - n;\n this.lastTotal = 3;\n if (n === 1) {\n this.lastChar[0] = buf[buf.length - 1];\n } else {\n this.lastChar[0] = buf[buf.length - 2];\n this.lastChar[1] = buf[buf.length - 1];\n }\n return buf.toString('base64', i, buf.length - n);\n}\n\nfunction base64End(buf) {\n var r = buf && buf.length ? this.write(buf) : '';\n if (this.lastNeed) return r + this.lastChar.toString('base64', 0, 3 - this.lastNeed);\n return r;\n}\n\n// Pass bytes on through for single-byte encodings (e.g. ascii, latin1, hex)\nfunction simpleWrite(buf) {\n return buf.toString(this.encoding);\n}\n\nfunction simpleEnd(buf) {\n return buf && buf.length ? this.write(buf) : '';\n}","var undefined = (void 0); // Paranoia\n\n// Beyond this value, index getters/setters (i.e. array[0], array[1]) are so slow to\n// create, and consume so much memory, that the browser appears frozen.\nvar MAX_ARRAY_LENGTH = 1e5;\n\n// Approximations of internal ECMAScript conversion functions\nvar ECMAScript = (function() {\n // Stash a copy in case other scripts modify these\n var opts = Object.prototype.toString,\n ophop = Object.prototype.hasOwnProperty;\n\n return {\n // Class returns internal [[Class]] property, used to avoid cross-frame instanceof issues:\n Class: function(v) { return opts.call(v).replace(/^\\[object *|\\]$/g, ''); },\n HasProperty: function(o, p) { return p in o; },\n HasOwnProperty: function(o, p) { return ophop.call(o, p); },\n IsCallable: function(o) { return typeof o === 'function'; },\n ToInt32: function(v) { return v >> 0; },\n ToUint32: function(v) { return v >>> 0; }\n };\n}());\n\n// Snapshot intrinsics\nvar LN2 = Math.LN2,\n abs = Math.abs,\n floor = Math.floor,\n log = Math.log,\n min = Math.min,\n pow = Math.pow,\n round = Math.round;\n\n// ES5: lock down object properties\nfunction configureProperties(obj) {\n if (getOwnPropNames && defineProp) {\n var props = getOwnPropNames(obj), i;\n for (i = 0; i < props.length; i += 1) {\n defineProp(obj, props[i], {\n value: obj[props[i]],\n writable: false,\n enumerable: false,\n configurable: false\n });\n }\n }\n}\n\n// emulate ES5 getter/setter API using legacy APIs\n// http://blogs.msdn.com/b/ie/archive/2010/09/07/transitioning-existing-code-to-the-es5-getter-setter-apis.aspx\n// (second clause tests for Object.defineProperty() in IE<9 that only supports extending DOM prototypes, but\n// note that IE<9 does not support __defineGetter__ or __defineSetter__ so it just renders the method harmless)\nvar defineProp\nif (Object.defineProperty && (function() {\n try {\n Object.defineProperty({}, 'x', {});\n return true;\n } catch (e) {\n return false;\n }\n })()) {\n defineProp = Object.defineProperty;\n} else {\n defineProp = function(o, p, desc) {\n if (!o === Object(o)) throw new TypeError(\"Object.defineProperty called on non-object\");\n if (ECMAScript.HasProperty(desc, 'get') && Object.prototype.__defineGetter__) { Object.prototype.__defineGetter__.call(o, p, desc.get); }\n if (ECMAScript.HasProperty(desc, 'set') && Object.prototype.__defineSetter__) { Object.prototype.__defineSetter__.call(o, p, desc.set); }\n if (ECMAScript.HasProperty(desc, 'value')) { o[p] = desc.value; }\n return o;\n };\n}\n\nvar getOwnPropNames = Object.getOwnPropertyNames || function (o) {\n if (o !== Object(o)) throw new TypeError(\"Object.getOwnPropertyNames called on non-object\");\n var props = [], p;\n for (p in o) {\n if (ECMAScript.HasOwnProperty(o, p)) {\n props.push(p);\n }\n }\n return props;\n};\n\n// ES5: Make obj[index] an alias for obj._getter(index)/obj._setter(index, value)\n// for index in 0 ... obj.length\nfunction makeArrayAccessors(obj) {\n if (!defineProp) { return; }\n\n if (obj.length > MAX_ARRAY_LENGTH) throw new RangeError(\"Array too large for polyfill\");\n\n function makeArrayAccessor(index) {\n defineProp(obj, index, {\n 'get': function() { return obj._getter(index); },\n 'set': function(v) { obj._setter(index, v); },\n enumerable: true,\n configurable: false\n });\n }\n\n var i;\n for (i = 0; i < obj.length; i += 1) {\n makeArrayAccessor(i);\n }\n}\n\n// Internal conversion functions:\n// pack() - take a number (interpreted as Type), output a byte array\n// unpack() - take a byte array, output a Type-like number\n\nfunction as_signed(value, bits) { var s = 32 - bits; return (value << s) >> s; }\nfunction as_unsigned(value, bits) { var s = 32 - bits; return (value << s) >>> s; }\n\nfunction packI8(n) { return [n & 0xff]; }\nfunction unpackI8(bytes) { return as_signed(bytes[0], 8); }\n\nfunction packU8(n) { return [n & 0xff]; }\nfunction unpackU8(bytes) { return as_unsigned(bytes[0], 8); }\n\nfunction packU8Clamped(n) { n = round(Number(n)); return [n < 0 ? 0 : n > 0xff ? 0xff : n & 0xff]; }\n\nfunction packI16(n) { return [(n >> 8) & 0xff, n & 0xff]; }\nfunction unpackI16(bytes) { return as_signed(bytes[0] << 8 | bytes[1], 16); }\n\nfunction packU16(n) { return [(n >> 8) & 0xff, n & 0xff]; }\nfunction unpackU16(bytes) { return as_unsigned(bytes[0] << 8 | bytes[1], 16); }\n\nfunction packI32(n) { return [(n >> 24) & 0xff, (n >> 16) & 0xff, (n >> 8) & 0xff, n & 0xff]; }\nfunction unpackI32(bytes) { return as_signed(bytes[0] << 24 | bytes[1] << 16 | bytes[2] << 8 | bytes[3], 32); }\n\nfunction packU32(n) { return [(n >> 24) & 0xff, (n >> 16) & 0xff, (n >> 8) & 0xff, n & 0xff]; }\nfunction unpackU32(bytes) { return as_unsigned(bytes[0] << 24 | bytes[1] << 16 | bytes[2] << 8 | bytes[3], 32); }\n\nfunction packIEEE754(v, ebits, fbits) {\n\n var bias = (1 << (ebits - 1)) - 1,\n s, e, f, ln,\n i, bits, str, bytes;\n\n function roundToEven(n) {\n var w = floor(n), f = n - w;\n if (f < 0.5)\n return w;\n if (f > 0.5)\n return w + 1;\n return w % 2 ? w + 1 : w;\n }\n\n // Compute sign, exponent, fraction\n if (v !== v) {\n // NaN\n // http://dev.w3.org/2006/webapi/WebIDL/#es-type-mapping\n e = (1 << ebits) - 1; f = pow(2, fbits - 1); s = 0;\n } else if (v === Infinity || v === -Infinity) {\n e = (1 << ebits) - 1; f = 0; s = (v < 0) ? 1 : 0;\n } else if (v === 0) {\n e = 0; f = 0; s = (1 / v === -Infinity) ? 1 : 0;\n } else {\n s = v < 0;\n v = abs(v);\n\n if (v >= pow(2, 1 - bias)) {\n e = min(floor(log(v) / LN2), 1023);\n f = roundToEven(v / pow(2, e) * pow(2, fbits));\n if (f / pow(2, fbits) >= 2) {\n e = e + 1;\n f = 1;\n }\n if (e > bias) {\n // Overflow\n e = (1 << ebits) - 1;\n f = 0;\n } else {\n // Normalized\n e = e + bias;\n f = f - pow(2, fbits);\n }\n } else {\n // Denormalized\n e = 0;\n f = roundToEven(v / pow(2, 1 - bias - fbits));\n }\n }\n\n // Pack sign, exponent, fraction\n bits = [];\n for (i = fbits; i; i -= 1) { bits.push(f % 2 ? 1 : 0); f = floor(f / 2); }\n for (i = ebits; i; i -= 1) { bits.push(e % 2 ? 1 : 0); e = floor(e / 2); }\n bits.push(s ? 1 : 0);\n bits.reverse();\n str = bits.join('');\n\n // Bits to bytes\n bytes = [];\n while (str.length) {\n bytes.push(parseInt(str.substring(0, 8), 2));\n str = str.substring(8);\n }\n return bytes;\n}\n\nfunction unpackIEEE754(bytes, ebits, fbits) {\n\n // Bytes to bits\n var bits = [], i, j, b, str,\n bias, s, e, f;\n\n for (i = bytes.length; i; i -= 1) {\n b = bytes[i - 1];\n for (j = 8; j; j -= 1) {\n bits.push(b % 2 ? 1 : 0); b = b >> 1;\n }\n }\n bits.reverse();\n str = bits.join('');\n\n // Unpack sign, exponent, fraction\n bias = (1 << (ebits - 1)) - 1;\n s = parseInt(str.substring(0, 1), 2) ? -1 : 1;\n e = parseInt(str.substring(1, 1 + ebits), 2);\n f = parseInt(str.substring(1 + ebits), 2);\n\n // Produce number\n if (e === (1 << ebits) - 1) {\n return f !== 0 ? NaN : s * Infinity;\n } else if (e > 0) {\n // Normalized\n return s * pow(2, e - bias) * (1 + f / pow(2, fbits));\n } else if (f !== 0) {\n // Denormalized\n return s * pow(2, -(bias - 1)) * (f / pow(2, fbits));\n } else {\n return s < 0 ? -0 : 0;\n }\n}\n\nfunction unpackF64(b) { return unpackIEEE754(b, 11, 52); }\nfunction packF64(v) { return packIEEE754(v, 11, 52); }\nfunction unpackF32(b) { return unpackIEEE754(b, 8, 23); }\nfunction packF32(v) { return packIEEE754(v, 8, 23); }\n\n\n//\n// 3 The ArrayBuffer Type\n//\n\n(function() {\n\n /** @constructor */\n var ArrayBuffer = function ArrayBuffer(length) {\n length = ECMAScript.ToInt32(length);\n if (length < 0) throw new RangeError('ArrayBuffer size is not a small enough positive integer');\n\n this.byteLength = length;\n this._bytes = [];\n this._bytes.length = length;\n\n var i;\n for (i = 0; i < this.byteLength; i += 1) {\n this._bytes[i] = 0;\n }\n\n configureProperties(this);\n };\n\n exports.ArrayBuffer = exports.ArrayBuffer || ArrayBuffer;\n\n //\n // 4 The ArrayBufferView Type\n //\n\n // NOTE: this constructor is not exported\n /** @constructor */\n var ArrayBufferView = function ArrayBufferView() {\n //this.buffer = null;\n //this.byteOffset = 0;\n //this.byteLength = 0;\n };\n\n //\n // 5 The Typed Array View Types\n //\n\n function makeConstructor(bytesPerElement, pack, unpack) {\n // Each TypedArray type requires a distinct constructor instance with\n // identical logic, which this produces.\n\n var ctor;\n ctor = function(buffer, byteOffset, length) {\n var array, sequence, i, s;\n\n if (!arguments.length || typeof arguments[0] === 'number') {\n // Constructor(unsigned long length)\n this.length = ECMAScript.ToInt32(arguments[0]);\n if (length < 0) throw new RangeError('ArrayBufferView size is not a small enough positive integer');\n\n this.byteLength = this.length * this.BYTES_PER_ELEMENT;\n this.buffer = new ArrayBuffer(this.byteLength);\n this.byteOffset = 0;\n } else if (typeof arguments[0] === 'object' && arguments[0].constructor === ctor) {\n // Constructor(TypedArray array)\n array = arguments[0];\n\n this.length = array.length;\n this.byteLength = this.length * this.BYTES_PER_ELEMENT;\n this.buffer = new ArrayBuffer(this.byteLength);\n this.byteOffset = 0;\n\n for (i = 0; i < this.length; i += 1) {\n this._setter(i, array._getter(i));\n }\n } else if (typeof arguments[0] === 'object' &&\n !(arguments[0] instanceof ArrayBuffer || ECMAScript.Class(arguments[0]) === 'ArrayBuffer')) {\n // Constructor(sequence array)\n sequence = arguments[0];\n\n this.length = ECMAScript.ToUint32(sequence.length);\n this.byteLength = this.length * this.BYTES_PER_ELEMENT;\n this.buffer = new ArrayBuffer(this.byteLength);\n this.byteOffset = 0;\n\n for (i = 0; i < this.length; i += 1) {\n s = sequence[i];\n this._setter(i, Number(s));\n }\n } else if (typeof arguments[0] === 'object' &&\n (arguments[0] instanceof ArrayBuffer || ECMAScript.Class(arguments[0]) === 'ArrayBuffer')) {\n // Constructor(ArrayBuffer buffer,\n // optional unsigned long byteOffset, optional unsigned long length)\n this.buffer = buffer;\n\n this.byteOffset = ECMAScript.ToUint32(byteOffset);\n if (this.byteOffset > this.buffer.byteLength) {\n throw new RangeError(\"byteOffset out of range\");\n }\n\n if (this.byteOffset % this.BYTES_PER_ELEMENT) {\n // The given byteOffset must be a multiple of the element\n // size of the specific type, otherwise an exception is raised.\n throw new RangeError(\"ArrayBuffer length minus the byteOffset is not a multiple of the element size.\");\n }\n\n if (arguments.length < 3) {\n this.byteLength = this.buffer.byteLength - this.byteOffset;\n\n if (this.byteLength % this.BYTES_PER_ELEMENT) {\n throw new RangeError(\"length of buffer minus byteOffset not a multiple of the element size\");\n }\n this.length = this.byteLength / this.BYTES_PER_ELEMENT;\n } else {\n this.length = ECMAScript.ToUint32(length);\n this.byteLength = this.length * this.BYTES_PER_ELEMENT;\n }\n\n if ((this.byteOffset + this.byteLength) > this.buffer.byteLength) {\n throw new RangeError(\"byteOffset and length reference an area beyond the end of the buffer\");\n }\n } else {\n throw new TypeError(\"Unexpected argument type(s)\");\n }\n\n this.constructor = ctor;\n\n configureProperties(this);\n makeArrayAccessors(this);\n };\n\n ctor.prototype = new ArrayBufferView();\n ctor.prototype.BYTES_PER_ELEMENT = bytesPerElement;\n ctor.prototype._pack = pack;\n ctor.prototype._unpack = unpack;\n ctor.BYTES_PER_ELEMENT = bytesPerElement;\n\n // getter type (unsigned long index);\n ctor.prototype._getter = function(index) {\n if (arguments.length < 1) throw new SyntaxError(\"Not enough arguments\");\n\n index = ECMAScript.ToUint32(index);\n if (index >= this.length) {\n return undefined;\n }\n\n var bytes = [], i, o;\n for (i = 0, o = this.byteOffset + index * this.BYTES_PER_ELEMENT;\n i < this.BYTES_PER_ELEMENT;\n i += 1, o += 1) {\n bytes.push(this.buffer._bytes[o]);\n }\n return this._unpack(bytes);\n };\n\n // NONSTANDARD: convenience alias for getter: type get(unsigned long index);\n ctor.prototype.get = ctor.prototype._getter;\n\n // setter void (unsigned long index, type value);\n ctor.prototype._setter = function(index, value) {\n if (arguments.length < 2) throw new SyntaxError(\"Not enough arguments\");\n\n index = ECMAScript.ToUint32(index);\n if (index >= this.length) {\n return undefined;\n }\n\n var bytes = this._pack(value), i, o;\n for (i = 0, o = this.byteOffset + index * this.BYTES_PER_ELEMENT;\n i < this.BYTES_PER_ELEMENT;\n i += 1, o += 1) {\n this.buffer._bytes[o] = bytes[i];\n }\n };\n\n // void set(TypedArray array, optional unsigned long offset);\n // void set(sequence array, optional unsigned long offset);\n ctor.prototype.set = function(index, value) {\n if (arguments.length < 1) throw new SyntaxError(\"Not enough arguments\");\n var array, sequence, offset, len,\n i, s, d,\n byteOffset, byteLength, tmp;\n\n if (typeof arguments[0] === 'object' && arguments[0].constructor === this.constructor) {\n // void set(TypedArray array, optional unsigned long offset);\n array = arguments[0];\n offset = ECMAScript.ToUint32(arguments[1]);\n\n if (offset + array.length > this.length) {\n throw new RangeError(\"Offset plus length of array is out of range\");\n }\n\n byteOffset = this.byteOffset + offset * this.BYTES_PER_ELEMENT;\n byteLength = array.length * this.BYTES_PER_ELEMENT;\n\n if (array.buffer === this.buffer) {\n tmp = [];\n for (i = 0, s = array.byteOffset; i < byteLength; i += 1, s += 1) {\n tmp[i] = array.buffer._bytes[s];\n }\n for (i = 0, d = byteOffset; i < byteLength; i += 1, d += 1) {\n this.buffer._bytes[d] = tmp[i];\n }\n } else {\n for (i = 0, s = array.byteOffset, d = byteOffset;\n i < byteLength; i += 1, s += 1, d += 1) {\n this.buffer._bytes[d] = array.buffer._bytes[s];\n }\n }\n } else if (typeof arguments[0] === 'object' && typeof arguments[0].length !== 'undefined') {\n // void set(sequence array, optional unsigned long offset);\n sequence = arguments[0];\n len = ECMAScript.ToUint32(sequence.length);\n offset = ECMAScript.ToUint32(arguments[1]);\n\n if (offset + len > this.length) {\n throw new RangeError(\"Offset plus length of array is out of range\");\n }\n\n for (i = 0; i < len; i += 1) {\n s = sequence[i];\n this._setter(offset + i, Number(s));\n }\n } else {\n throw new TypeError(\"Unexpected argument type(s)\");\n }\n };\n\n // TypedArray subarray(long begin, optional long end);\n ctor.prototype.subarray = function(start, end) {\n function clamp(v, min, max) { return v < min ? min : v > max ? max : v; }\n\n start = ECMAScript.ToInt32(start);\n end = ECMAScript.ToInt32(end);\n\n if (arguments.length < 1) { start = 0; }\n if (arguments.length < 2) { end = this.length; }\n\n if (start < 0) { start = this.length + start; }\n if (end < 0) { end = this.length + end; }\n\n start = clamp(start, 0, this.length);\n end = clamp(end, 0, this.length);\n\n var len = end - start;\n if (len < 0) {\n len = 0;\n }\n\n return new this.constructor(\n this.buffer, this.byteOffset + start * this.BYTES_PER_ELEMENT, len);\n };\n\n return ctor;\n }\n\n var Int8Array = makeConstructor(1, packI8, unpackI8);\n var Uint8Array = makeConstructor(1, packU8, unpackU8);\n var Uint8ClampedArray = makeConstructor(1, packU8Clamped, unpackU8);\n var Int16Array = makeConstructor(2, packI16, unpackI16);\n var Uint16Array = makeConstructor(2, packU16, unpackU16);\n var Int32Array = makeConstructor(4, packI32, unpackI32);\n var Uint32Array = makeConstructor(4, packU32, unpackU32);\n var Float32Array = makeConstructor(4, packF32, unpackF32);\n var Float64Array = makeConstructor(8, packF64, unpackF64);\n\n exports.Int8Array = exports.Int8Array || Int8Array;\n exports.Uint8Array = exports.Uint8Array || Uint8Array;\n exports.Uint8ClampedArray = exports.Uint8ClampedArray || Uint8ClampedArray;\n exports.Int16Array = exports.Int16Array || Int16Array;\n exports.Uint16Array = exports.Uint16Array || Uint16Array;\n exports.Int32Array = exports.Int32Array || Int32Array;\n exports.Uint32Array = exports.Uint32Array || Uint32Array;\n exports.Float32Array = exports.Float32Array || Float32Array;\n exports.Float64Array = exports.Float64Array || Float64Array;\n}());\n\n//\n// 6 The DataView View Type\n//\n\n(function() {\n function r(array, index) {\n return ECMAScript.IsCallable(array.get) ? array.get(index) : array[index];\n }\n\n var IS_BIG_ENDIAN = (function() {\n var u16array = new(exports.Uint16Array)([0x1234]),\n u8array = new(exports.Uint8Array)(u16array.buffer);\n return r(u8array, 0) === 0x12;\n }());\n\n // Constructor(ArrayBuffer buffer,\n // optional unsigned long byteOffset,\n // optional unsigned long byteLength)\n /** @constructor */\n var DataView = function DataView(buffer, byteOffset, byteLength) {\n if (arguments.length === 0) {\n buffer = new exports.ArrayBuffer(0);\n } else if (!(buffer instanceof exports.ArrayBuffer || ECMAScript.Class(buffer) === 'ArrayBuffer')) {\n throw new TypeError(\"TypeError\");\n }\n\n this.buffer = buffer || new exports.ArrayBuffer(0);\n\n this.byteOffset = ECMAScript.ToUint32(byteOffset);\n if (this.byteOffset > this.buffer.byteLength) {\n throw new RangeError(\"byteOffset out of range\");\n }\n\n if (arguments.length < 3) {\n this.byteLength = this.buffer.byteLength - this.byteOffset;\n } else {\n this.byteLength = ECMAScript.ToUint32(byteLength);\n }\n\n if ((this.byteOffset + this.byteLength) > this.buffer.byteLength) {\n throw new RangeError(\"byteOffset and length reference an area beyond the end of the buffer\");\n }\n\n configureProperties(this);\n };\n\n function makeGetter(arrayType) {\n return function(byteOffset, littleEndian) {\n\n byteOffset = ECMAScript.ToUint32(byteOffset);\n\n if (byteOffset + arrayType.BYTES_PER_ELEMENT > this.byteLength) {\n throw new RangeError(\"Array index out of range\");\n }\n byteOffset += this.byteOffset;\n\n var uint8Array = new exports.Uint8Array(this.buffer, byteOffset, arrayType.BYTES_PER_ELEMENT),\n bytes = [], i;\n for (i = 0; i < arrayType.BYTES_PER_ELEMENT; i += 1) {\n bytes.push(r(uint8Array, i));\n }\n\n if (Boolean(littleEndian) === Boolean(IS_BIG_ENDIAN)) {\n bytes.reverse();\n }\n\n return r(new arrayType(new exports.Uint8Array(bytes).buffer), 0);\n };\n }\n\n DataView.prototype.getUint8 = makeGetter(exports.Uint8Array);\n DataView.prototype.getInt8 = makeGetter(exports.Int8Array);\n DataView.prototype.getUint16 = makeGetter(exports.Uint16Array);\n DataView.prototype.getInt16 = makeGetter(exports.Int16Array);\n DataView.prototype.getUint32 = makeGetter(exports.Uint32Array);\n DataView.prototype.getInt32 = makeGetter(exports.Int32Array);\n DataView.prototype.getFloat32 = makeGetter(exports.Float32Array);\n DataView.prototype.getFloat64 = makeGetter(exports.Float64Array);\n\n function makeSetter(arrayType) {\n return function(byteOffset, value, littleEndian) {\n\n byteOffset = ECMAScript.ToUint32(byteOffset);\n if (byteOffset + arrayType.BYTES_PER_ELEMENT > this.byteLength) {\n throw new RangeError(\"Array index out of range\");\n }\n\n // Get bytes\n var typeArray = new arrayType([value]),\n byteArray = new exports.Uint8Array(typeArray.buffer),\n bytes = [], i, byteView;\n\n for (i = 0; i < arrayType.BYTES_PER_ELEMENT; i += 1) {\n bytes.push(r(byteArray, i));\n }\n\n // Flip if necessary\n if (Boolean(littleEndian) === Boolean(IS_BIG_ENDIAN)) {\n bytes.reverse();\n }\n\n // Write them\n byteView = new exports.Uint8Array(this.buffer, byteOffset, arrayType.BYTES_PER_ELEMENT);\n byteView.set(bytes);\n };\n }\n\n DataView.prototype.setUint8 = makeSetter(exports.Uint8Array);\n DataView.prototype.setInt8 = makeSetter(exports.Int8Array);\n DataView.prototype.setUint16 = makeSetter(exports.Uint16Array);\n DataView.prototype.setInt16 = makeSetter(exports.Int16Array);\n DataView.prototype.setUint32 = makeSetter(exports.Uint32Array);\n DataView.prototype.setInt32 = makeSetter(exports.Int32Array);\n DataView.prototype.setFloat32 = makeSetter(exports.Float32Array);\n DataView.prototype.setFloat64 = makeSetter(exports.Float64Array);\n\n exports.DataView = exports.DataView || DataView;\n\n}());\n","/* UAParser.js v1.0.2\n Copyright © 2012-2021 Faisal Salman \n MIT License */\n(function(window,undefined){\"use strict\";var LIBVERSION=\"1.0.2\",EMPTY=\"\",UNKNOWN=\"?\",FUNC_TYPE=\"function\",UNDEF_TYPE=\"undefined\",OBJ_TYPE=\"object\",STR_TYPE=\"string\",MAJOR=\"major\",MODEL=\"model\",NAME=\"name\",TYPE=\"type\",VENDOR=\"vendor\",VERSION=\"version\",ARCHITECTURE=\"architecture\",CONSOLE=\"console\",MOBILE=\"mobile\",TABLET=\"tablet\",SMARTTV=\"smarttv\",WEARABLE=\"wearable\",EMBEDDED=\"embedded\",UA_MAX_LENGTH=255;var AMAZON=\"Amazon\",APPLE=\"Apple\",ASUS=\"ASUS\",BLACKBERRY=\"BlackBerry\",BROWSER=\"Browser\",CHROME=\"Chrome\",EDGE=\"Edge\",FIREFOX=\"Firefox\",GOOGLE=\"Google\",HUAWEI=\"Huawei\",LG=\"LG\",MICROSOFT=\"Microsoft\",MOTOROLA=\"Motorola\",OPERA=\"Opera\",SAMSUNG=\"Samsung\",SONY=\"Sony\",XIAOMI=\"Xiaomi\",ZEBRA=\"Zebra\",FACEBOOK=\"Facebook\";var extend=function(regexes,extensions){var mergedRegexes={};for(var i in regexes){if(extensions[i]&&extensions[i].length%2===0){mergedRegexes[i]=extensions[i].concat(regexes[i])}else{mergedRegexes[i]=regexes[i]}}return mergedRegexes},enumerize=function(arr){var enums={};for(var i=0;i0){if(q.length===2){if(typeof q[1]==FUNC_TYPE){this[q[0]]=q[1].call(this,match)}else{this[q[0]]=q[1]}}else if(q.length===3){if(typeof q[1]===FUNC_TYPE&&!(q[1].exec&&q[1].test)){this[q[0]]=match?q[1].call(this,match,q[2]):undefined}else{this[q[0]]=match?match.replace(q[1],q[2]):undefined}}else if(q.length===4){this[q[0]]=match?q[3].call(this,match.replace(q[1],q[2])):undefined}}else{this[q]=match?match:undefined}}}}i+=2}},strMapper=function(str,map){for(var i in map){if(typeof map[i]===OBJ_TYPE&&map[i].length>0){for(var j=0;jUA_MAX_LENGTH?trim(ua,UA_MAX_LENGTH):ua;return this};this.setUA(_ua);return this};UAParser.VERSION=LIBVERSION;UAParser.BROWSER=enumerize([NAME,VERSION,MAJOR]);UAParser.CPU=enumerize([ARCHITECTURE]);UAParser.DEVICE=enumerize([MODEL,VENDOR,TYPE,CONSOLE,MOBILE,SMARTTV,TABLET,WEARABLE,EMBEDDED]);UAParser.ENGINE=UAParser.OS=enumerize([NAME,VERSION]);if(typeof exports!==UNDEF_TYPE){if(typeof module!==UNDEF_TYPE&&module.exports){exports=module.exports=UAParser}exports.UAParser=UAParser}else{if(typeof define===FUNC_TYPE&&define.amd){define(function(){return UAParser})}else if(typeof window!==UNDEF_TYPE){window.UAParser=UAParser}}var $=typeof window!==UNDEF_TYPE&&(window.jQuery||window.Zepto);if($&&!$.ua){var parser=new UAParser;$.ua=parser.getResult();$.ua.get=function(){return parser.getUA()};$.ua.set=function(ua){parser.setUA(ua);var result=parser.getResult();for(var prop in result){$.ua[prop]=result[prop]}}}})(typeof window===\"object\"?window:this);","module.exports=/[\\0-\\x1F\\x7F-\\x9F]/","module.exports=/[\\xAD\\u0600-\\u0605\\u061C\\u06DD\\u070F\\u08E2\\u180E\\u200B-\\u200F\\u202A-\\u202E\\u2060-\\u2064\\u2066-\\u206F\\uFEFF\\uFFF9-\\uFFFB]|\\uD804[\\uDCBD\\uDCCD]|\\uD82F[\\uDCA0-\\uDCA3]|\\uD834[\\uDD73-\\uDD7A]|\\uDB40[\\uDC01\\uDC20-\\uDC7F]/","module.exports=/[!-#%-\\*,-\\/:;\\?@\\[-\\]_\\{\\}\\xA1\\xA7\\xAB\\xB6\\xB7\\xBB\\xBF\\u037E\\u0387\\u055A-\\u055F\\u0589\\u058A\\u05BE\\u05C0\\u05C3\\u05C6\\u05F3\\u05F4\\u0609\\u060A\\u060C\\u060D\\u061B\\u061E\\u061F\\u066A-\\u066D\\u06D4\\u0700-\\u070D\\u07F7-\\u07F9\\u0830-\\u083E\\u085E\\u0964\\u0965\\u0970\\u09FD\\u0A76\\u0AF0\\u0C84\\u0DF4\\u0E4F\\u0E5A\\u0E5B\\u0F04-\\u0F12\\u0F14\\u0F3A-\\u0F3D\\u0F85\\u0FD0-\\u0FD4\\u0FD9\\u0FDA\\u104A-\\u104F\\u10FB\\u1360-\\u1368\\u1400\\u166D\\u166E\\u169B\\u169C\\u16EB-\\u16ED\\u1735\\u1736\\u17D4-\\u17D6\\u17D8-\\u17DA\\u1800-\\u180A\\u1944\\u1945\\u1A1E\\u1A1F\\u1AA0-\\u1AA6\\u1AA8-\\u1AAD\\u1B5A-\\u1B60\\u1BFC-\\u1BFF\\u1C3B-\\u1C3F\\u1C7E\\u1C7F\\u1CC0-\\u1CC7\\u1CD3\\u2010-\\u2027\\u2030-\\u2043\\u2045-\\u2051\\u2053-\\u205E\\u207D\\u207E\\u208D\\u208E\\u2308-\\u230B\\u2329\\u232A\\u2768-\\u2775\\u27C5\\u27C6\\u27E6-\\u27EF\\u2983-\\u2998\\u29D8-\\u29DB\\u29FC\\u29FD\\u2CF9-\\u2CFC\\u2CFE\\u2CFF\\u2D70\\u2E00-\\u2E2E\\u2E30-\\u2E4E\\u3001-\\u3003\\u3008-\\u3011\\u3014-\\u301F\\u3030\\u303D\\u30A0\\u30FB\\uA4FE\\uA4FF\\uA60D-\\uA60F\\uA673\\uA67E\\uA6F2-\\uA6F7\\uA874-\\uA877\\uA8CE\\uA8CF\\uA8F8-\\uA8FA\\uA8FC\\uA92E\\uA92F\\uA95F\\uA9C1-\\uA9CD\\uA9DE\\uA9DF\\uAA5C-\\uAA5F\\uAADE\\uAADF\\uAAF0\\uAAF1\\uABEB\\uFD3E\\uFD3F\\uFE10-\\uFE19\\uFE30-\\uFE52\\uFE54-\\uFE61\\uFE63\\uFE68\\uFE6A\\uFE6B\\uFF01-\\uFF03\\uFF05-\\uFF0A\\uFF0C-\\uFF0F\\uFF1A\\uFF1B\\uFF1F\\uFF20\\uFF3B-\\uFF3D\\uFF3F\\uFF5B\\uFF5D\\uFF5F-\\uFF65]|\\uD800[\\uDD00-\\uDD02\\uDF9F\\uDFD0]|\\uD801\\uDD6F|\\uD802[\\uDC57\\uDD1F\\uDD3F\\uDE50-\\uDE58\\uDE7F\\uDEF0-\\uDEF6\\uDF39-\\uDF3F\\uDF99-\\uDF9C]|\\uD803[\\uDF55-\\uDF59]|\\uD804[\\uDC47-\\uDC4D\\uDCBB\\uDCBC\\uDCBE-\\uDCC1\\uDD40-\\uDD43\\uDD74\\uDD75\\uDDC5-\\uDDC8\\uDDCD\\uDDDB\\uDDDD-\\uDDDF\\uDE38-\\uDE3D\\uDEA9]|\\uD805[\\uDC4B-\\uDC4F\\uDC5B\\uDC5D\\uDCC6\\uDDC1-\\uDDD7\\uDE41-\\uDE43\\uDE60-\\uDE6C\\uDF3C-\\uDF3E]|\\uD806[\\uDC3B\\uDE3F-\\uDE46\\uDE9A-\\uDE9C\\uDE9E-\\uDEA2]|\\uD807[\\uDC41-\\uDC45\\uDC70\\uDC71\\uDEF7\\uDEF8]|\\uD809[\\uDC70-\\uDC74]|\\uD81A[\\uDE6E\\uDE6F\\uDEF5\\uDF37-\\uDF3B\\uDF44]|\\uD81B[\\uDE97-\\uDE9A]|\\uD82F\\uDC9F|\\uD836[\\uDE87-\\uDE8B]|\\uD83A[\\uDD5E\\uDD5F]/","module.exports=/[ \\xA0\\u1680\\u2000-\\u200A\\u2028\\u2029\\u202F\\u205F\\u3000]/","'use strict';\n\nexports.Any = require('./properties/Any/regex');\nexports.Cc = require('./categories/Cc/regex');\nexports.Cf = require('./categories/Cf/regex');\nexports.P = require('./categories/P/regex');\nexports.Z = require('./categories/Z/regex');\n","module.exports=/[\\0-\\uD7FF\\uE000-\\uFFFF]|[\\uD800-\\uDBFF][\\uDC00-\\uDFFF]|[\\uD800-\\uDBFF](?![\\uDC00-\\uDFFF])|(?:[^\\uD800-\\uDBFF]|^)[\\uDC00-\\uDFFF]/","/**\n * @license React\n * use-sync-external-store-shim.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n'use strict';var e=require(\"react\");function h(a,b){return a===b&&(0!==a||1/a===1/b)||a!==a&&b!==b}var k=\"function\"===typeof Object.is?Object.is:h,l=e.useState,m=e.useEffect,n=e.useLayoutEffect,p=e.useDebugValue;function q(a,b){var d=b(),f=l({inst:{value:d,getSnapshot:b}}),c=f[0].inst,g=f[1];n(function(){c.value=d;c.getSnapshot=b;r(c)&&g({inst:c})},[a,d,b]);m(function(){r(c)&&g({inst:c});return a(function(){r(c)&&g({inst:c})})},[a]);p(d);return d}\nfunction r(a){var b=a.getSnapshot;a=a.value;try{var d=b();return!k(a,d)}catch(f){return!0}}function t(a,b){return b()}var u=\"undefined\"===typeof window||\"undefined\"===typeof window.document||\"undefined\"===typeof window.document.createElement?t:q;exports.useSyncExternalStore=void 0!==e.useSyncExternalStore?e.useSyncExternalStore:u;\n","/**\n * @license React\n * use-sync-external-store-shim/with-selector.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n'use strict';var h=require(\"react\"),n=require(\"use-sync-external-store/shim\");function p(a,b){return a===b&&(0!==a||1/a===1/b)||a!==a&&b!==b}var q=\"function\"===typeof Object.is?Object.is:p,r=n.useSyncExternalStore,t=h.useRef,u=h.useEffect,v=h.useMemo,w=h.useDebugValue;\nexports.useSyncExternalStoreWithSelector=function(a,b,e,l,g){var c=t(null);if(null===c.current){var f={hasValue:!1,value:null};c.current=f}else f=c.current;c=v(function(){function a(a){if(!c){c=!0;d=a;a=l(a);if(void 0!==g&&f.hasValue){var b=f.value;if(g(b,a))return k=b}return k=a}b=k;if(q(d,a))return b;var e=l(a);if(void 0!==g&&g(b,e))return b;d=a;return k=e}var c=!1,d,k,m=void 0===e?null:e;return[function(){return a(b())},null===m?void 0:function(){return a(m())}]},[b,e,l,g]);var d=r(a,c[0],c[1]);\nu(function(){f.hasValue=!0;f.value=d},[d]);w(d);return d};\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('../cjs/use-sync-external-store-shim.production.min.js');\n} else {\n module.exports = require('../cjs/use-sync-external-store-shim.development.js');\n}\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('../cjs/use-sync-external-store-shim/with-selector.production.min.js');\n} else {\n module.exports = require('../cjs/use-sync-external-store-shim/with-selector.development.js');\n}\n","\n/**\n * Module exports.\n */\n\nmodule.exports = deprecate;\n\n/**\n * Mark that a method should not be used.\n * Returns a modified function which warns once by default.\n *\n * If `localStorage.noDeprecation = true` is set, then it is a no-op.\n *\n * If `localStorage.throwDeprecation = true` is set, then deprecated functions\n * will throw an Error when invoked.\n *\n * If `localStorage.traceDeprecation = true` is set, then deprecated functions\n * will invoke `console.trace()` instead of `console.error()`.\n *\n * @param {Function} fn - the function to deprecate\n * @param {String} msg - the string to print to the console when `fn` is invoked\n * @returns {Function} a new \"deprecated\" version of `fn`\n * @api public\n */\n\nfunction deprecate (fn, msg) {\n if (config('noDeprecation')) {\n return fn;\n }\n\n var warned = false;\n function deprecated() {\n if (!warned) {\n if (config('throwDeprecation')) {\n throw new Error(msg);\n } else if (config('traceDeprecation')) {\n console.trace(msg);\n } else {\n console.warn(msg);\n }\n warned = true;\n }\n return fn.apply(this, arguments);\n }\n\n return deprecated;\n}\n\n/**\n * Checks `localStorage` for boolean values for the given `name`.\n *\n * @param {String} name\n * @returns {Boolean}\n * @api private\n */\n\nfunction config (name) {\n // accessing global.localStorage can trigger a DOMException in sandboxed iframes\n try {\n if (!global.localStorage) return false;\n } catch (_) {\n return false;\n }\n var val = global.localStorage[name];\n if (null == val) return false;\n return String(val).toLowerCase() === 'true';\n}\n","module.exports = function isBuffer(arg) {\n return arg && typeof arg === 'object'\n && typeof arg.copy === 'function'\n && typeof arg.fill === 'function'\n && typeof arg.readUInt8 === 'function';\n}","// Currently in sync with Node.js lib/internal/util/types.js\n// https://github.com/nodejs/node/commit/112cc7c27551254aa2b17098fb774867f05ed0d9\n\n'use strict';\n\nvar isArgumentsObject = require('is-arguments');\nvar isGeneratorFunction = require('is-generator-function');\nvar whichTypedArray = require('which-typed-array');\nvar isTypedArray = require('is-typed-array');\n\nfunction uncurryThis(f) {\n return f.call.bind(f);\n}\n\nvar BigIntSupported = typeof BigInt !== 'undefined';\nvar SymbolSupported = typeof Symbol !== 'undefined';\n\nvar ObjectToString = uncurryThis(Object.prototype.toString);\n\nvar numberValue = uncurryThis(Number.prototype.valueOf);\nvar stringValue = uncurryThis(String.prototype.valueOf);\nvar booleanValue = uncurryThis(Boolean.prototype.valueOf);\n\nif (BigIntSupported) {\n var bigIntValue = uncurryThis(BigInt.prototype.valueOf);\n}\n\nif (SymbolSupported) {\n var symbolValue = uncurryThis(Symbol.prototype.valueOf);\n}\n\nfunction checkBoxedPrimitive(value, prototypeValueOf) {\n if (typeof value !== 'object') {\n return false;\n }\n try {\n prototypeValueOf(value);\n return true;\n } catch(e) {\n return false;\n }\n}\n\nexports.isArgumentsObject = isArgumentsObject;\nexports.isGeneratorFunction = isGeneratorFunction;\nexports.isTypedArray = isTypedArray;\n\n// Taken from here and modified for better browser support\n// https://github.com/sindresorhus/p-is-promise/blob/cda35a513bda03f977ad5cde3a079d237e82d7ef/index.js\nfunction isPromise(input) {\n\treturn (\n\t\t(\n\t\t\ttypeof Promise !== 'undefined' &&\n\t\t\tinput instanceof Promise\n\t\t) ||\n\t\t(\n\t\t\tinput !== null &&\n\t\t\ttypeof input === 'object' &&\n\t\t\ttypeof input.then === 'function' &&\n\t\t\ttypeof input.catch === 'function'\n\t\t)\n\t);\n}\nexports.isPromise = isPromise;\n\nfunction isArrayBufferView(value) {\n if (typeof ArrayBuffer !== 'undefined' && ArrayBuffer.isView) {\n return ArrayBuffer.isView(value);\n }\n\n return (\n isTypedArray(value) ||\n isDataView(value)\n );\n}\nexports.isArrayBufferView = isArrayBufferView;\n\n\nfunction isUint8Array(value) {\n return whichTypedArray(value) === 'Uint8Array';\n}\nexports.isUint8Array = isUint8Array;\n\nfunction isUint8ClampedArray(value) {\n return whichTypedArray(value) === 'Uint8ClampedArray';\n}\nexports.isUint8ClampedArray = isUint8ClampedArray;\n\nfunction isUint16Array(value) {\n return whichTypedArray(value) === 'Uint16Array';\n}\nexports.isUint16Array = isUint16Array;\n\nfunction isUint32Array(value) {\n return whichTypedArray(value) === 'Uint32Array';\n}\nexports.isUint32Array = isUint32Array;\n\nfunction isInt8Array(value) {\n return whichTypedArray(value) === 'Int8Array';\n}\nexports.isInt8Array = isInt8Array;\n\nfunction isInt16Array(value) {\n return whichTypedArray(value) === 'Int16Array';\n}\nexports.isInt16Array = isInt16Array;\n\nfunction isInt32Array(value) {\n return whichTypedArray(value) === 'Int32Array';\n}\nexports.isInt32Array = isInt32Array;\n\nfunction isFloat32Array(value) {\n return whichTypedArray(value) === 'Float32Array';\n}\nexports.isFloat32Array = isFloat32Array;\n\nfunction isFloat64Array(value) {\n return whichTypedArray(value) === 'Float64Array';\n}\nexports.isFloat64Array = isFloat64Array;\n\nfunction isBigInt64Array(value) {\n return whichTypedArray(value) === 'BigInt64Array';\n}\nexports.isBigInt64Array = isBigInt64Array;\n\nfunction isBigUint64Array(value) {\n return whichTypedArray(value) === 'BigUint64Array';\n}\nexports.isBigUint64Array = isBigUint64Array;\n\nfunction isMapToString(value) {\n return ObjectToString(value) === '[object Map]';\n}\nisMapToString.working = (\n typeof Map !== 'undefined' &&\n isMapToString(new Map())\n);\n\nfunction isMap(value) {\n if (typeof Map === 'undefined') {\n return false;\n }\n\n return isMapToString.working\n ? isMapToString(value)\n : value instanceof Map;\n}\nexports.isMap = isMap;\n\nfunction isSetToString(value) {\n return ObjectToString(value) === '[object Set]';\n}\nisSetToString.working = (\n typeof Set !== 'undefined' &&\n isSetToString(new Set())\n);\nfunction isSet(value) {\n if (typeof Set === 'undefined') {\n return false;\n }\n\n return isSetToString.working\n ? isSetToString(value)\n : value instanceof Set;\n}\nexports.isSet = isSet;\n\nfunction isWeakMapToString(value) {\n return ObjectToString(value) === '[object WeakMap]';\n}\nisWeakMapToString.working = (\n typeof WeakMap !== 'undefined' &&\n isWeakMapToString(new WeakMap())\n);\nfunction isWeakMap(value) {\n if (typeof WeakMap === 'undefined') {\n return false;\n }\n\n return isWeakMapToString.working\n ? isWeakMapToString(value)\n : value instanceof WeakMap;\n}\nexports.isWeakMap = isWeakMap;\n\nfunction isWeakSetToString(value) {\n return ObjectToString(value) === '[object WeakSet]';\n}\nisWeakSetToString.working = (\n typeof WeakSet !== 'undefined' &&\n isWeakSetToString(new WeakSet())\n);\nfunction isWeakSet(value) {\n return isWeakSetToString(value);\n}\nexports.isWeakSet = isWeakSet;\n\nfunction isArrayBufferToString(value) {\n return ObjectToString(value) === '[object ArrayBuffer]';\n}\nisArrayBufferToString.working = (\n typeof ArrayBuffer !== 'undefined' &&\n isArrayBufferToString(new ArrayBuffer())\n);\nfunction isArrayBuffer(value) {\n if (typeof ArrayBuffer === 'undefined') {\n return false;\n }\n\n return isArrayBufferToString.working\n ? isArrayBufferToString(value)\n : value instanceof ArrayBuffer;\n}\nexports.isArrayBuffer = isArrayBuffer;\n\nfunction isDataViewToString(value) {\n return ObjectToString(value) === '[object DataView]';\n}\nisDataViewToString.working = (\n typeof ArrayBuffer !== 'undefined' &&\n typeof DataView !== 'undefined' &&\n isDataViewToString(new DataView(new ArrayBuffer(1), 0, 1))\n);\nfunction isDataView(value) {\n if (typeof DataView === 'undefined') {\n return false;\n }\n\n return isDataViewToString.working\n ? isDataViewToString(value)\n : value instanceof DataView;\n}\nexports.isDataView = isDataView;\n\n// Store a copy of SharedArrayBuffer in case it's deleted elsewhere\nvar SharedArrayBufferCopy = typeof SharedArrayBuffer !== 'undefined' ? SharedArrayBuffer : undefined;\nfunction isSharedArrayBufferToString(value) {\n return ObjectToString(value) === '[object SharedArrayBuffer]';\n}\nfunction isSharedArrayBuffer(value) {\n if (typeof SharedArrayBufferCopy === 'undefined') {\n return false;\n }\n\n if (typeof isSharedArrayBufferToString.working === 'undefined') {\n isSharedArrayBufferToString.working = isSharedArrayBufferToString(new SharedArrayBufferCopy());\n }\n\n return isSharedArrayBufferToString.working\n ? isSharedArrayBufferToString(value)\n : value instanceof SharedArrayBufferCopy;\n}\nexports.isSharedArrayBuffer = isSharedArrayBuffer;\n\nfunction isAsyncFunction(value) {\n return ObjectToString(value) === '[object AsyncFunction]';\n}\nexports.isAsyncFunction = isAsyncFunction;\n\nfunction isMapIterator(value) {\n return ObjectToString(value) === '[object Map Iterator]';\n}\nexports.isMapIterator = isMapIterator;\n\nfunction isSetIterator(value) {\n return ObjectToString(value) === '[object Set Iterator]';\n}\nexports.isSetIterator = isSetIterator;\n\nfunction isGeneratorObject(value) {\n return ObjectToString(value) === '[object Generator]';\n}\nexports.isGeneratorObject = isGeneratorObject;\n\nfunction isWebAssemblyCompiledModule(value) {\n return ObjectToString(value) === '[object WebAssembly.Module]';\n}\nexports.isWebAssemblyCompiledModule = isWebAssemblyCompiledModule;\n\nfunction isNumberObject(value) {\n return checkBoxedPrimitive(value, numberValue);\n}\nexports.isNumberObject = isNumberObject;\n\nfunction isStringObject(value) {\n return checkBoxedPrimitive(value, stringValue);\n}\nexports.isStringObject = isStringObject;\n\nfunction isBooleanObject(value) {\n return checkBoxedPrimitive(value, booleanValue);\n}\nexports.isBooleanObject = isBooleanObject;\n\nfunction isBigIntObject(value) {\n return BigIntSupported && checkBoxedPrimitive(value, bigIntValue);\n}\nexports.isBigIntObject = isBigIntObject;\n\nfunction isSymbolObject(value) {\n return SymbolSupported && checkBoxedPrimitive(value, symbolValue);\n}\nexports.isSymbolObject = isSymbolObject;\n\nfunction isBoxedPrimitive(value) {\n return (\n isNumberObject(value) ||\n isStringObject(value) ||\n isBooleanObject(value) ||\n isBigIntObject(value) ||\n isSymbolObject(value)\n );\n}\nexports.isBoxedPrimitive = isBoxedPrimitive;\n\nfunction isAnyArrayBuffer(value) {\n return typeof Uint8Array !== 'undefined' && (\n isArrayBuffer(value) ||\n isSharedArrayBuffer(value)\n );\n}\nexports.isAnyArrayBuffer = isAnyArrayBuffer;\n\n['isProxy', 'isExternal', 'isModuleNamespaceObject'].forEach(function(method) {\n Object.defineProperty(exports, method, {\n enumerable: false,\n value: function() {\n throw new Error(method + ' is not supported in userland');\n }\n });\n});\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\nvar getOwnPropertyDescriptors = Object.getOwnPropertyDescriptors ||\n function getOwnPropertyDescriptors(obj) {\n var keys = Object.keys(obj);\n var descriptors = {};\n for (var i = 0; i < keys.length; i++) {\n descriptors[keys[i]] = Object.getOwnPropertyDescriptor(obj, keys[i]);\n }\n return descriptors;\n };\n\nvar formatRegExp = /%[sdj%]/g;\nexports.format = function(f) {\n if (!isString(f)) {\n var objects = [];\n for (var i = 0; i < arguments.length; i++) {\n objects.push(inspect(arguments[i]));\n }\n return objects.join(' ');\n }\n\n var i = 1;\n var args = arguments;\n var len = args.length;\n var str = String(f).replace(formatRegExp, function(x) {\n if (x === '%%') return '%';\n if (i >= len) return x;\n switch (x) {\n case '%s': return String(args[i++]);\n case '%d': return Number(args[i++]);\n case '%j':\n try {\n return JSON.stringify(args[i++]);\n } catch (_) {\n return '[Circular]';\n }\n default:\n return x;\n }\n });\n for (var x = args[i]; i < len; x = args[++i]) {\n if (isNull(x) || !isObject(x)) {\n str += ' ' + x;\n } else {\n str += ' ' + inspect(x);\n }\n }\n return str;\n};\n\n\n// Mark that a method should not be used.\n// Returns a modified function which warns once by default.\n// If --no-deprecation is set, then it is a no-op.\nexports.deprecate = function(fn, msg) {\n if (typeof process !== 'undefined' && process.noDeprecation === true) {\n return fn;\n }\n\n // Allow for deprecating things in the process of starting up.\n if (typeof process === 'undefined') {\n return function() {\n return exports.deprecate(fn, msg).apply(this, arguments);\n };\n }\n\n var warned = false;\n function deprecated() {\n if (!warned) {\n if (process.throwDeprecation) {\n throw new Error(msg);\n } else if (process.traceDeprecation) {\n console.trace(msg);\n } else {\n console.error(msg);\n }\n warned = true;\n }\n return fn.apply(this, arguments);\n }\n\n return deprecated;\n};\n\n\nvar debugs = {};\nvar debugEnvRegex = /^$/;\n\nif (process.env.NODE_DEBUG) {\n var debugEnv = process.env.NODE_DEBUG;\n debugEnv = debugEnv.replace(/[|\\\\{}()[\\]^$+?.]/g, '\\\\$&')\n .replace(/\\*/g, '.*')\n .replace(/,/g, '$|^')\n .toUpperCase();\n debugEnvRegex = new RegExp('^' + debugEnv + '$', 'i');\n}\nexports.debuglog = function(set) {\n set = set.toUpperCase();\n if (!debugs[set]) {\n if (debugEnvRegex.test(set)) {\n var pid = process.pid;\n debugs[set] = function() {\n var msg = exports.format.apply(exports, arguments);\n console.error('%s %d: %s', set, pid, msg);\n };\n } else {\n debugs[set] = function() {};\n }\n }\n return debugs[set];\n};\n\n\n/**\n * Echos the value of a value. Trys to print the value out\n * in the best way possible given the different types.\n *\n * @param {Object} obj The object to print out.\n * @param {Object} opts Optional options object that alters the output.\n */\n/* legacy: obj, showHidden, depth, colors*/\nfunction inspect(obj, opts) {\n // default options\n var ctx = {\n seen: [],\n stylize: stylizeNoColor\n };\n // legacy...\n if (arguments.length >= 3) ctx.depth = arguments[2];\n if (arguments.length >= 4) ctx.colors = arguments[3];\n if (isBoolean(opts)) {\n // legacy...\n ctx.showHidden = opts;\n } else if (opts) {\n // got an \"options\" object\n exports._extend(ctx, opts);\n }\n // set default options\n if (isUndefined(ctx.showHidden)) ctx.showHidden = false;\n if (isUndefined(ctx.depth)) ctx.depth = 2;\n if (isUndefined(ctx.colors)) ctx.colors = false;\n if (isUndefined(ctx.customInspect)) ctx.customInspect = true;\n if (ctx.colors) ctx.stylize = stylizeWithColor;\n return formatValue(ctx, obj, ctx.depth);\n}\nexports.inspect = inspect;\n\n\n// http://en.wikipedia.org/wiki/ANSI_escape_code#graphics\ninspect.colors = {\n 'bold' : [1, 22],\n 'italic' : [3, 23],\n 'underline' : [4, 24],\n 'inverse' : [7, 27],\n 'white' : [37, 39],\n 'grey' : [90, 39],\n 'black' : [30, 39],\n 'blue' : [34, 39],\n 'cyan' : [36, 39],\n 'green' : [32, 39],\n 'magenta' : [35, 39],\n 'red' : [31, 39],\n 'yellow' : [33, 39]\n};\n\n// Don't use 'blue' not visible on cmd.exe\ninspect.styles = {\n 'special': 'cyan',\n 'number': 'yellow',\n 'boolean': 'yellow',\n 'undefined': 'grey',\n 'null': 'bold',\n 'string': 'green',\n 'date': 'magenta',\n // \"name\": intentionally not styling\n 'regexp': 'red'\n};\n\n\nfunction stylizeWithColor(str, styleType) {\n var style = inspect.styles[styleType];\n\n if (style) {\n return '\\u001b[' + inspect.colors[style][0] + 'm' + str +\n '\\u001b[' + inspect.colors[style][1] + 'm';\n } else {\n return str;\n }\n}\n\n\nfunction stylizeNoColor(str, styleType) {\n return str;\n}\n\n\nfunction arrayToHash(array) {\n var hash = {};\n\n array.forEach(function(val, idx) {\n hash[val] = true;\n });\n\n return hash;\n}\n\n\nfunction formatValue(ctx, value, recurseTimes) {\n // Provide a hook for user-specified inspect functions.\n // Check that value is an object with an inspect function on it\n if (ctx.customInspect &&\n value &&\n isFunction(value.inspect) &&\n // Filter out the util module, it's inspect function is special\n value.inspect !== exports.inspect &&\n // Also filter out any prototype objects using the circular check.\n !(value.constructor && value.constructor.prototype === value)) {\n var ret = value.inspect(recurseTimes, ctx);\n if (!isString(ret)) {\n ret = formatValue(ctx, ret, recurseTimes);\n }\n return ret;\n }\n\n // Primitive types cannot have properties\n var primitive = formatPrimitive(ctx, value);\n if (primitive) {\n return primitive;\n }\n\n // Look up the keys of the object.\n var keys = Object.keys(value);\n var visibleKeys = arrayToHash(keys);\n\n if (ctx.showHidden) {\n keys = Object.getOwnPropertyNames(value);\n }\n\n // IE doesn't make error fields non-enumerable\n // http://msdn.microsoft.com/en-us/library/ie/dww52sbt(v=vs.94).aspx\n if (isError(value)\n && (keys.indexOf('message') >= 0 || keys.indexOf('description') >= 0)) {\n return formatError(value);\n }\n\n // Some type of object without properties can be shortcutted.\n if (keys.length === 0) {\n if (isFunction(value)) {\n var name = value.name ? ': ' + value.name : '';\n return ctx.stylize('[Function' + name + ']', 'special');\n }\n if (isRegExp(value)) {\n return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp');\n }\n if (isDate(value)) {\n return ctx.stylize(Date.prototype.toString.call(value), 'date');\n }\n if (isError(value)) {\n return formatError(value);\n }\n }\n\n var base = '', array = false, braces = ['{', '}'];\n\n // Make Array say that they are Array\n if (isArray(value)) {\n array = true;\n braces = ['[', ']'];\n }\n\n // Make functions say that they are functions\n if (isFunction(value)) {\n var n = value.name ? ': ' + value.name : '';\n base = ' [Function' + n + ']';\n }\n\n // Make RegExps say that they are RegExps\n if (isRegExp(value)) {\n base = ' ' + RegExp.prototype.toString.call(value);\n }\n\n // Make dates with properties first say the date\n if (isDate(value)) {\n base = ' ' + Date.prototype.toUTCString.call(value);\n }\n\n // Make error with message first say the error\n if (isError(value)) {\n base = ' ' + formatError(value);\n }\n\n if (keys.length === 0 && (!array || value.length == 0)) {\n return braces[0] + base + braces[1];\n }\n\n if (recurseTimes < 0) {\n if (isRegExp(value)) {\n return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp');\n } else {\n return ctx.stylize('[Object]', 'special');\n }\n }\n\n ctx.seen.push(value);\n\n var output;\n if (array) {\n output = formatArray(ctx, value, recurseTimes, visibleKeys, keys);\n } else {\n output = keys.map(function(key) {\n return formatProperty(ctx, value, recurseTimes, visibleKeys, key, array);\n });\n }\n\n ctx.seen.pop();\n\n return reduceToSingleString(output, base, braces);\n}\n\n\nfunction formatPrimitive(ctx, value) {\n if (isUndefined(value))\n return ctx.stylize('undefined', 'undefined');\n if (isString(value)) {\n var simple = '\\'' + JSON.stringify(value).replace(/^\"|\"$/g, '')\n .replace(/'/g, \"\\\\'\")\n .replace(/\\\\\"/g, '\"') + '\\'';\n return ctx.stylize(simple, 'string');\n }\n if (isNumber(value))\n return ctx.stylize('' + value, 'number');\n if (isBoolean(value))\n return ctx.stylize('' + value, 'boolean');\n // For some reason typeof null is \"object\", so special case here.\n if (isNull(value))\n return ctx.stylize('null', 'null');\n}\n\n\nfunction formatError(value) {\n return '[' + Error.prototype.toString.call(value) + ']';\n}\n\n\nfunction formatArray(ctx, value, recurseTimes, visibleKeys, keys) {\n var output = [];\n for (var i = 0, l = value.length; i < l; ++i) {\n if (hasOwnProperty(value, String(i))) {\n output.push(formatProperty(ctx, value, recurseTimes, visibleKeys,\n String(i), true));\n } else {\n output.push('');\n }\n }\n keys.forEach(function(key) {\n if (!key.match(/^\\d+$/)) {\n output.push(formatProperty(ctx, value, recurseTimes, visibleKeys,\n key, true));\n }\n });\n return output;\n}\n\n\nfunction formatProperty(ctx, value, recurseTimes, visibleKeys, key, array) {\n var name, str, desc;\n desc = Object.getOwnPropertyDescriptor(value, key) || { value: value[key] };\n if (desc.get) {\n if (desc.set) {\n str = ctx.stylize('[Getter/Setter]', 'special');\n } else {\n str = ctx.stylize('[Getter]', 'special');\n }\n } else {\n if (desc.set) {\n str = ctx.stylize('[Setter]', 'special');\n }\n }\n if (!hasOwnProperty(visibleKeys, key)) {\n name = '[' + key + ']';\n }\n if (!str) {\n if (ctx.seen.indexOf(desc.value) < 0) {\n if (isNull(recurseTimes)) {\n str = formatValue(ctx, desc.value, null);\n } else {\n str = formatValue(ctx, desc.value, recurseTimes - 1);\n }\n if (str.indexOf('\\n') > -1) {\n if (array) {\n str = str.split('\\n').map(function(line) {\n return ' ' + line;\n }).join('\\n').substr(2);\n } else {\n str = '\\n' + str.split('\\n').map(function(line) {\n return ' ' + line;\n }).join('\\n');\n }\n }\n } else {\n str = ctx.stylize('[Circular]', 'special');\n }\n }\n if (isUndefined(name)) {\n if (array && key.match(/^\\d+$/)) {\n return str;\n }\n name = JSON.stringify('' + key);\n if (name.match(/^\"([a-zA-Z_][a-zA-Z_0-9]*)\"$/)) {\n name = name.substr(1, name.length - 2);\n name = ctx.stylize(name, 'name');\n } else {\n name = name.replace(/'/g, \"\\\\'\")\n .replace(/\\\\\"/g, '\"')\n .replace(/(^\"|\"$)/g, \"'\");\n name = ctx.stylize(name, 'string');\n }\n }\n\n return name + ': ' + str;\n}\n\n\nfunction reduceToSingleString(output, base, braces) {\n var numLinesEst = 0;\n var length = output.reduce(function(prev, cur) {\n numLinesEst++;\n if (cur.indexOf('\\n') >= 0) numLinesEst++;\n return prev + cur.replace(/\\u001b\\[\\d\\d?m/g, '').length + 1;\n }, 0);\n\n if (length > 60) {\n return braces[0] +\n (base === '' ? '' : base + '\\n ') +\n ' ' +\n output.join(',\\n ') +\n ' ' +\n braces[1];\n }\n\n return braces[0] + base + ' ' + output.join(', ') + ' ' + braces[1];\n}\n\n\n// NOTE: These type checking functions intentionally don't use `instanceof`\n// because it is fragile and can be easily faked with `Object.create()`.\nexports.types = require('./support/types');\n\nfunction isArray(ar) {\n return Array.isArray(ar);\n}\nexports.isArray = isArray;\n\nfunction isBoolean(arg) {\n return typeof arg === 'boolean';\n}\nexports.isBoolean = isBoolean;\n\nfunction isNull(arg) {\n return arg === null;\n}\nexports.isNull = isNull;\n\nfunction isNullOrUndefined(arg) {\n return arg == null;\n}\nexports.isNullOrUndefined = isNullOrUndefined;\n\nfunction isNumber(arg) {\n return typeof arg === 'number';\n}\nexports.isNumber = isNumber;\n\nfunction isString(arg) {\n return typeof arg === 'string';\n}\nexports.isString = isString;\n\nfunction isSymbol(arg) {\n return typeof arg === 'symbol';\n}\nexports.isSymbol = isSymbol;\n\nfunction isUndefined(arg) {\n return arg === void 0;\n}\nexports.isUndefined = isUndefined;\n\nfunction isRegExp(re) {\n return isObject(re) && objectToString(re) === '[object RegExp]';\n}\nexports.isRegExp = isRegExp;\nexports.types.isRegExp = isRegExp;\n\nfunction isObject(arg) {\n return typeof arg === 'object' && arg !== null;\n}\nexports.isObject = isObject;\n\nfunction isDate(d) {\n return isObject(d) && objectToString(d) === '[object Date]';\n}\nexports.isDate = isDate;\nexports.types.isDate = isDate;\n\nfunction isError(e) {\n return isObject(e) &&\n (objectToString(e) === '[object Error]' || e instanceof Error);\n}\nexports.isError = isError;\nexports.types.isNativeError = isError;\n\nfunction isFunction(arg) {\n return typeof arg === 'function';\n}\nexports.isFunction = isFunction;\n\nfunction isPrimitive(arg) {\n return arg === null ||\n typeof arg === 'boolean' ||\n typeof arg === 'number' ||\n typeof arg === 'string' ||\n typeof arg === 'symbol' || // ES6 symbol\n typeof arg === 'undefined';\n}\nexports.isPrimitive = isPrimitive;\n\nexports.isBuffer = require('./support/isBuffer');\n\nfunction objectToString(o) {\n return Object.prototype.toString.call(o);\n}\n\n\nfunction pad(n) {\n return n < 10 ? '0' + n.toString(10) : n.toString(10);\n}\n\n\nvar months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep',\n 'Oct', 'Nov', 'Dec'];\n\n// 26 Feb 16:19:34\nfunction timestamp() {\n var d = new Date();\n var time = [pad(d.getHours()),\n pad(d.getMinutes()),\n pad(d.getSeconds())].join(':');\n return [d.getDate(), months[d.getMonth()], time].join(' ');\n}\n\n\n// log is just a thin wrapper to console.log that prepends a timestamp\nexports.log = function() {\n console.log('%s - %s', timestamp(), exports.format.apply(exports, arguments));\n};\n\n\n/**\n * Inherit the prototype methods from one constructor into another.\n *\n * The Function.prototype.inherits from lang.js rewritten as a standalone\n * function (not on Function.prototype). NOTE: If this file is to be loaded\n * during bootstrapping this function needs to be rewritten using some native\n * functions as prototype setup using normal JavaScript does not work as\n * expected during bootstrapping (see mirror.js in r114903).\n *\n * @param {function} ctor Constructor function which needs to inherit the\n * prototype.\n * @param {function} superCtor Constructor function to inherit prototype from.\n */\nexports.inherits = require('inherits');\n\nexports._extend = function(origin, add) {\n // Don't do anything if add isn't an object\n if (!add || !isObject(add)) return origin;\n\n var keys = Object.keys(add);\n var i = keys.length;\n while (i--) {\n origin[keys[i]] = add[keys[i]];\n }\n return origin;\n};\n\nfunction hasOwnProperty(obj, prop) {\n return Object.prototype.hasOwnProperty.call(obj, prop);\n}\n\nvar kCustomPromisifiedSymbol = typeof Symbol !== 'undefined' ? Symbol('util.promisify.custom') : undefined;\n\nexports.promisify = function promisify(original) {\n if (typeof original !== 'function')\n throw new TypeError('The \"original\" argument must be of type Function');\n\n if (kCustomPromisifiedSymbol && original[kCustomPromisifiedSymbol]) {\n var fn = original[kCustomPromisifiedSymbol];\n if (typeof fn !== 'function') {\n throw new TypeError('The \"util.promisify.custom\" argument must be of type Function');\n }\n Object.defineProperty(fn, kCustomPromisifiedSymbol, {\n value: fn, enumerable: false, writable: false, configurable: true\n });\n return fn;\n }\n\n function fn() {\n var promiseResolve, promiseReject;\n var promise = new Promise(function (resolve, reject) {\n promiseResolve = resolve;\n promiseReject = reject;\n });\n\n var args = [];\n for (var i = 0; i < arguments.length; i++) {\n args.push(arguments[i]);\n }\n args.push(function (err, value) {\n if (err) {\n promiseReject(err);\n } else {\n promiseResolve(value);\n }\n });\n\n try {\n original.apply(this, args);\n } catch (err) {\n promiseReject(err);\n }\n\n return promise;\n }\n\n Object.setPrototypeOf(fn, Object.getPrototypeOf(original));\n\n if (kCustomPromisifiedSymbol) Object.defineProperty(fn, kCustomPromisifiedSymbol, {\n value: fn, enumerable: false, writable: false, configurable: true\n });\n return Object.defineProperties(\n fn,\n getOwnPropertyDescriptors(original)\n );\n}\n\nexports.promisify.custom = kCustomPromisifiedSymbol\n\nfunction callbackifyOnRejected(reason, cb) {\n // `!reason` guard inspired by bluebird (Ref: https://goo.gl/t5IS6M).\n // Because `null` is a special error value in callbacks which means \"no error\n // occurred\", we error-wrap so the callback consumer can distinguish between\n // \"the promise rejected with null\" or \"the promise fulfilled with undefined\".\n if (!reason) {\n var newReason = new Error('Promise was rejected with a falsy value');\n newReason.reason = reason;\n reason = newReason;\n }\n return cb(reason);\n}\n\nfunction callbackify(original) {\n if (typeof original !== 'function') {\n throw new TypeError('The \"original\" argument must be of type Function');\n }\n\n // We DO NOT return the promise as it gives the user a false sense that\n // the promise is actually somehow related to the callback's execution\n // and that the callback throwing will reject the promise.\n function callbackified() {\n var args = [];\n for (var i = 0; i < arguments.length; i++) {\n args.push(arguments[i]);\n }\n\n var maybeCb = args.pop();\n if (typeof maybeCb !== 'function') {\n throw new TypeError('The last argument must be of type Function');\n }\n var self = this;\n var cb = function() {\n return maybeCb.apply(self, arguments);\n };\n // In true node style we process the callback on `nextTick` with all the\n // implications (stack, `uncaughtException`, `async_hooks`)\n original.apply(this, args)\n .then(function(ret) { process.nextTick(cb.bind(null, null, ret)) },\n function(rej) { process.nextTick(callbackifyOnRejected.bind(null, rej, cb)) });\n }\n\n Object.setPrototypeOf(callbackified, Object.getPrototypeOf(original));\n Object.defineProperties(callbackified,\n getOwnPropertyDescriptors(original));\n return callbackified;\n}\nexports.callbackify = callbackify;\n","'use strict';\n\nvar forEach = require('foreach');\nvar availableTypedArrays = require('available-typed-arrays');\nvar callBound = require('call-bind/callBound');\n\nvar $toString = callBound('Object.prototype.toString');\nvar hasToStringTag = require('has-tostringtag/shams')();\n\nvar g = typeof globalThis === 'undefined' ? global : globalThis;\nvar typedArrays = availableTypedArrays();\n\nvar $slice = callBound('String.prototype.slice');\nvar toStrTags = {};\nvar gOPD = require('es-abstract/helpers/getOwnPropertyDescriptor');\nvar getPrototypeOf = Object.getPrototypeOf; // require('getprototypeof');\nif (hasToStringTag && gOPD && getPrototypeOf) {\n\tforEach(typedArrays, function (typedArray) {\n\t\tif (typeof g[typedArray] === 'function') {\n\t\t\tvar arr = new g[typedArray]();\n\t\t\tif (Symbol.toStringTag in arr) {\n\t\t\t\tvar proto = getPrototypeOf(arr);\n\t\t\t\tvar descriptor = gOPD(proto, Symbol.toStringTag);\n\t\t\t\tif (!descriptor) {\n\t\t\t\t\tvar superProto = getPrototypeOf(proto);\n\t\t\t\t\tdescriptor = gOPD(superProto, Symbol.toStringTag);\n\t\t\t\t}\n\t\t\t\ttoStrTags[typedArray] = descriptor.get;\n\t\t\t}\n\t\t}\n\t});\n}\n\nvar tryTypedArrays = function tryAllTypedArrays(value) {\n\tvar foundName = false;\n\tforEach(toStrTags, function (getter, typedArray) {\n\t\tif (!foundName) {\n\t\t\ttry {\n\t\t\t\tvar name = getter.call(value);\n\t\t\t\tif (name === typedArray) {\n\t\t\t\t\tfoundName = name;\n\t\t\t\t}\n\t\t\t} catch (e) {}\n\t\t}\n\t});\n\treturn foundName;\n};\n\nvar isTypedArray = require('is-typed-array');\n\nmodule.exports = function whichTypedArray(value) {\n\tif (!isTypedArray(value)) { return false; }\n\tif (!hasToStringTag || !(Symbol.toStringTag in value)) { return $slice($toString(value), 8, -1); }\n\treturn tryTypedArrays(value);\n};\n","// Returns a wrapper function that returns a wrapped callback\n// The wrapper function should do some stuff, and return a\n// presumably different callback function.\n// This makes sure that own properties are retained, so that\n// decorations and such are not lost along the way.\nmodule.exports = wrappy\nfunction wrappy (fn, cb) {\n if (fn && cb) return wrappy(fn)(cb)\n\n if (typeof fn !== 'function')\n throw new TypeError('need wrapper function')\n\n Object.keys(fn).forEach(function (k) {\n wrapper[k] = fn[k]\n })\n\n return wrapper\n\n function wrapper() {\n var args = new Array(arguments.length)\n for (var i = 0; i < args.length; i++) {\n args[i] = arguments[i]\n }\n var ret = fn.apply(this, args)\n var cb = args[args.length-1]\n if (typeof ret === 'function' && ret !== cb) {\n Object.keys(cb).forEach(function (k) {\n ret[k] = cb[k]\n })\n }\n return ret\n }\n}\n","'use strict';\n\nvar possibleNames = [\n\t'BigInt64Array',\n\t'BigUint64Array',\n\t'Float32Array',\n\t'Float64Array',\n\t'Int16Array',\n\t'Int32Array',\n\t'Int8Array',\n\t'Uint16Array',\n\t'Uint32Array',\n\t'Uint8Array',\n\t'Uint8ClampedArray'\n];\n\nvar g = typeof globalThis === 'undefined' ? global : globalThis;\n\nmodule.exports = function availableTypedArrays() {\n\tvar out = [];\n\tfor (var i = 0; i < possibleNames.length; i++) {\n\t\tif (typeof g[possibleNames[i]] === 'function') {\n\t\t\tout[out.length] = possibleNames[i];\n\t\t}\n\t}\n\treturn out;\n};\n","'use strict';\n\nvar GetIntrinsic = require('get-intrinsic');\n\nvar $gOPD = GetIntrinsic('%Object.getOwnPropertyDescriptor%', true);\nif ($gOPD) {\n\ttry {\n\t\t$gOPD([], 'length');\n\t} catch (e) {\n\t\t// IE 8 has a broken gOPD\n\t\t$gOPD = null;\n\t}\n}\n\nmodule.exports = $gOPD;\n","export default function _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n\n for (var i = 0, arr2 = new Array(len); i < len; i++) {\n arr2[i] = arr[i];\n }\n\n return arr2;\n}","export default function _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n}","export default function _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return self;\n}","export default function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}","function _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\n\nexport default function _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n Object.defineProperty(Constructor, \"prototype\", {\n writable: false\n });\n return Constructor;\n}","import unsupportedIterableToArray from \"./unsupportedIterableToArray.js\";\nexport default function _createForOfIteratorHelper(o, allowArrayLike) {\n var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"];\n\n if (!it) {\n if (Array.isArray(o) || (it = unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") {\n if (it) o = it;\n var i = 0;\n\n var F = function F() {};\n\n return {\n s: F,\n n: function n() {\n if (i >= o.length) return {\n done: true\n };\n return {\n done: false,\n value: o[i++]\n };\n },\n e: function e(_e) {\n throw _e;\n },\n f: F\n };\n }\n\n throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n }\n\n var normalCompletion = true,\n didErr = false,\n err;\n return {\n s: function s() {\n it = it.call(o);\n },\n n: function n() {\n var step = it.next();\n normalCompletion = step.done;\n return step;\n },\n e: function e(_e2) {\n didErr = true;\n err = _e2;\n },\n f: function f() {\n try {\n if (!normalCompletion && it[\"return\"] != null) it[\"return\"]();\n } finally {\n if (didErr) throw err;\n }\n }\n };\n}","import getPrototypeOf from \"./getPrototypeOf.js\";\nimport isNativeReflectConstruct from \"./isNativeReflectConstruct.js\";\nimport possibleConstructorReturn from \"./possibleConstructorReturn.js\";\nexport default function _createSuper(Derived) {\n var hasNativeReflectConstruct = isNativeReflectConstruct();\n return function _createSuperInternal() {\n var Super = getPrototypeOf(Derived),\n result;\n\n if (hasNativeReflectConstruct) {\n var NewTarget = getPrototypeOf(this).constructor;\n result = Reflect.construct(Super, arguments, NewTarget);\n } else {\n result = Super.apply(this, arguments);\n }\n\n return possibleConstructorReturn(this, result);\n };\n}","export default function _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}","import getPrototypeOf from \"./getPrototypeOf.js\";\nexport default function _superPropBase(object, property) {\n while (!Object.prototype.hasOwnProperty.call(object, property)) {\n object = getPrototypeOf(object);\n if (object === null) break;\n }\n\n return object;\n}","import superPropBase from \"./superPropBase.js\";\nexport default function _get() {\n if (typeof Reflect !== \"undefined\" && Reflect.get) {\n _get = Reflect.get;\n } else {\n _get = function _get(target, property, receiver) {\n var base = superPropBase(target, property);\n if (!base) return;\n var desc = Object.getOwnPropertyDescriptor(base, property);\n\n if (desc.get) {\n return desc.get.call(arguments.length < 3 ? target : receiver);\n }\n\n return desc.value;\n };\n }\n\n return _get.apply(this, arguments);\n}","export default function _getPrototypeOf(o) {\n _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n return _getPrototypeOf(o);\n}","import setPrototypeOf from \"./setPrototypeOf.js\";\nexport default function _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n Object.defineProperty(subClass, \"prototype\", {\n writable: false\n });\n if (superClass) setPrototypeOf(subClass, superClass);\n}","export default function _isNativeReflectConstruct() {\n if (typeof Reflect === \"undefined\" || !Reflect.construct) return false;\n if (Reflect.construct.sham) return false;\n if (typeof Proxy === \"function\") return true;\n\n try {\n Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {}));\n return true;\n } catch (e) {\n return false;\n }\n}","export default function _iterableToArray(iter) {\n if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter);\n}","export default function _nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}","import defineProperty from \"./defineProperty.js\";\n\nfunction ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n enumerableOnly && (symbols = symbols.filter(function (sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n })), keys.push.apply(keys, symbols);\n }\n\n return keys;\n}\n\nexport default function _objectSpread2(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = null != arguments[i] ? arguments[i] : {};\n i % 2 ? ownKeys(Object(source), !0).forEach(function (key) {\n defineProperty(target, key, source[key]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n\n return target;\n}","import _typeof from \"./typeof.js\";\nimport assertThisInitialized from \"./assertThisInitialized.js\";\nexport default function _possibleConstructorReturn(self, call) {\n if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) {\n return call;\n } else if (call !== void 0) {\n throw new TypeError(\"Derived constructors may only return object or undefined\");\n }\n\n return assertThisInitialized(self);\n}","export default function _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n\n return _setPrototypeOf(o, p);\n}","import arrayWithHoles from \"./arrayWithHoles.js\";\nimport iterableToArrayLimit from \"./iterableToArrayLimit.js\";\nimport unsupportedIterableToArray from \"./unsupportedIterableToArray.js\";\nimport nonIterableRest from \"./nonIterableRest.js\";\nexport default function _slicedToArray(arr, i) {\n return arrayWithHoles(arr) || iterableToArrayLimit(arr, i) || unsupportedIterableToArray(arr, i) || nonIterableRest();\n}","export default function _iterableToArrayLimit(arr, i) {\n var _i = arr == null ? null : typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"];\n\n if (_i == null) return;\n var _arr = [];\n var _n = true;\n var _d = false;\n\n var _s, _e;\n\n try {\n for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) {\n _arr.push(_s.value);\n\n if (i && _arr.length === i) break;\n }\n } catch (err) {\n _d = true;\n _e = err;\n } finally {\n try {\n if (!_n && _i[\"return\"] != null) _i[\"return\"]();\n } finally {\n if (_d) throw _e;\n }\n }\n\n return _arr;\n}","import arrayWithoutHoles from \"./arrayWithoutHoles.js\";\nimport iterableToArray from \"./iterableToArray.js\";\nimport unsupportedIterableToArray from \"./unsupportedIterableToArray.js\";\nimport nonIterableSpread from \"./nonIterableSpread.js\";\nexport default function _toConsumableArray(arr) {\n return arrayWithoutHoles(arr) || iterableToArray(arr) || unsupportedIterableToArray(arr) || nonIterableSpread();\n}","import arrayLikeToArray from \"./arrayLikeToArray.js\";\nexport default function _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) return arrayLikeToArray(arr);\n}","export default function _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}","export default function _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) {\n return typeof obj;\n } : function (obj) {\n return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n }, _typeof(obj);\n}","import arrayLikeToArray from \"./arrayLikeToArray.js\";\nexport default function _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return arrayLikeToArray(o, minLen);\n}","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\tid: moduleId,\n\t\tloaded: false,\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Flag the module as loaded\n\tmodule.loaded = true;\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","__webpack_require__.amdO = {};","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = function(module) {\n\tvar getter = module && module.__esModule ?\n\t\tfunction() { return module['default']; } :\n\t\tfunction() { return module; };\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","var getProto = Object.getPrototypeOf ? function(obj) { return Object.getPrototypeOf(obj); } : function(obj) { return obj.__proto__; };\nvar leafPrototypes;\n// create a fake namespace object\n// mode & 1: value is a module id, require it\n// mode & 2: merge all properties of value into the ns\n// mode & 4: return value when already ns object\n// mode & 16: return value when it's Promise-like\n// mode & 8|1: behave like require\n__webpack_require__.t = function(value, mode) {\n\tif(mode & 1) value = this(value);\n\tif(mode & 8) return value;\n\tif(typeof value === 'object' && value) {\n\t\tif((mode & 4) && value.__esModule) return value;\n\t\tif((mode & 16) && typeof value.then === 'function') return value;\n\t}\n\tvar ns = Object.create(null);\n\t__webpack_require__.r(ns);\n\tvar def = {};\n\tleafPrototypes = leafPrototypes || [null, getProto({}), getProto([]), getProto(getProto)];\n\tfor(var current = mode & 2 && value; typeof current == 'object' && !~leafPrototypes.indexOf(current); current = getProto(current)) {\n\t\tObject.getOwnPropertyNames(current).forEach(function(key) { def[key] = function() { return value[key]; }; });\n\t}\n\tdef['default'] = function() { return value; };\n\t__webpack_require__.d(ns, def);\n\treturn ns;\n};","// define getter functions for harmony exports\n__webpack_require__.d = function(exports, definition) {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.hmd = function(module) {\n\tmodule = Object.create(module);\n\tif (!module.children) module.children = [];\n\tObject.defineProperty(module, 'exports', {\n\t\tenumerable: true,\n\t\tset: function() {\n\t\t\tthrow new Error('ES Modules may not assign module.exports or exports.*, Use ESM export syntax, instead: ' + module.id);\n\t\t}\n\t});\n\treturn module;\n};","__webpack_require__.o = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); }","// define __esModule on exports\n__webpack_require__.r = function(exports) {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.nmd = function(module) {\n\tmodule.paths = [];\n\tif (!module.children) module.children = [];\n\treturn module;\n};","__webpack_require__.p = \"/\";","import { addGlobalEventProcessor, getCurrentHub } from '@sentry/hub';\nimport { Integration, Options } from '@sentry/types';\nimport { logger } from '@sentry/utils';\n\nexport const installedIntegrations: string[] = [];\n\n/** Map of integrations assigned to a client */\nexport type IntegrationIndex = {\n [key: string]: Integration;\n};\n\n/**\n * @private\n */\nfunction filterDuplicates(integrations: Integration[]): Integration[] {\n return integrations.reduce((acc, integrations) => {\n if (acc.every(accIntegration => integrations.name !== accIntegration.name)) {\n acc.push(integrations);\n }\n return acc;\n }, [] as Integration[]);\n}\n\n/** Gets integration to install */\nexport function getIntegrationsToSetup(options: Options): Integration[] {\n const defaultIntegrations = (options.defaultIntegrations && [...options.defaultIntegrations]) || [];\n const userIntegrations = options.integrations;\n\n let integrations: Integration[] = [...filterDuplicates(defaultIntegrations)];\n\n if (Array.isArray(userIntegrations)) {\n // Filter out integrations that are also included in user options\n integrations = [\n ...integrations.filter(integrations =>\n userIntegrations.every(userIntegration => userIntegration.name !== integrations.name),\n ),\n // And filter out duplicated user options integrations\n ...filterDuplicates(userIntegrations),\n ];\n } else if (typeof userIntegrations === 'function') {\n integrations = userIntegrations(integrations);\n integrations = Array.isArray(integrations) ? integrations : [integrations];\n }\n\n // Make sure that if present, `Debug` integration will always run last\n const integrationsNames = integrations.map(i => i.name);\n const alwaysLastToRun = 'Debug';\n if (integrationsNames.indexOf(alwaysLastToRun) !== -1) {\n integrations.push(...integrations.splice(integrationsNames.indexOf(alwaysLastToRun), 1));\n }\n\n return integrations;\n}\n\n/**\n * Given a list of integration instances this installs them all. When `withDefaults` is set to `true` then all default\n * integrations are added unless they were already provided before.\n * @param integrations array of integration instances\n * @param withDefault should enable default integrations\n */\nexport function setupIntegrations(integrations: Integration[]): IntegrationIndex {\n const integrationIndex: IntegrationIndex = {};\n\n integrations.forEach(integration => {\n integrationIndex[integration.name] = integration;\n\n if (installedIntegrations.indexOf(integration.name) === -1) {\n integration.setupOnce(addGlobalEventProcessor, getCurrentHub);\n installedIntegrations.push(integration.name);\n __DEBUG_BUILD__ && logger.log(`Integration installed: ${integration.name}`);\n }\n });\n\n return integrationIndex;\n}\n","import { getCurrentHub } from '@sentry/hub';\nimport { Client, ClientOptions } from '@sentry/types';\nimport { logger } from '@sentry/utils';\n\n/** A class object that can instantiate Client objects. */\nexport type ClientClass = new (options: O) => F;\n\n/**\n * Internal function to create a new SDK client instance. The client is\n * installed and then bound to the current scope.\n *\n * @param clientClass The client class to instantiate.\n * @param options Options to pass to the client.\n */\nexport function initAndBind(\n clientClass: ClientClass,\n options: O,\n): void {\n if (options.debug === true) {\n if (__DEBUG_BUILD__) {\n logger.enable();\n } else {\n // use `console.warn` rather than `logger.warn` since by non-debug bundles have all `logger.x` statements stripped\n // eslint-disable-next-line no-console\n console.warn('[Sentry] Cannot initialize SDK with `debug` option using a non-debug bundle.');\n }\n }\n const hub = getCurrentHub();\n const scope = hub.getScope();\n if (scope) {\n scope.update(options.initialScope);\n }\n\n const client = new clientClass(options);\n hub.bindClient(client);\n}\n","import { Event, EventProcessor, Hub, Integration, StackFrame } from '@sentry/types';\nimport { getEventDescription, isMatchingPattern, logger } from '@sentry/utils';\n\n// \"Script error.\" is hard coded into browsers for errors that it can't read.\n// this is the result of a script being pulled in from an external domain and CORS.\nconst DEFAULT_IGNORE_ERRORS = [/^Script error\\.?$/, /^Javascript error: Script error\\.? on line 0$/];\n\n/** Options for the InboundFilters integration */\nexport interface InboundFiltersOptions {\n allowUrls: Array;\n denyUrls: Array;\n ignoreErrors: Array;\n ignoreInternal: boolean;\n}\n\n/** Inbound filters configurable by the user */\nexport class InboundFilters implements Integration {\n /**\n * @inheritDoc\n */\n public static id: string = 'InboundFilters';\n\n /**\n * @inheritDoc\n */\n public name: string = InboundFilters.id;\n\n public constructor(private readonly _options: Partial = {}) {}\n\n /**\n * @inheritDoc\n */\n public setupOnce(addGlobalEventProcessor: (processor: EventProcessor) => void, getCurrentHub: () => Hub): void {\n const eventProcess: EventProcessor = (event: Event) => {\n const hub = getCurrentHub();\n if (hub) {\n const self = hub.getIntegration(InboundFilters);\n if (self) {\n const client = hub.getClient();\n const clientOptions = client ? client.getOptions() : {};\n const options = _mergeOptions(self._options, clientOptions);\n return _shouldDropEvent(event, options) ? null : event;\n }\n }\n return event;\n };\n\n eventProcess.id = this.name;\n addGlobalEventProcessor(eventProcess);\n }\n}\n\n/** JSDoc */\nexport function _mergeOptions(\n internalOptions: Partial = {},\n clientOptions: Partial = {},\n): Partial {\n return {\n allowUrls: [...(internalOptions.allowUrls || []), ...(clientOptions.allowUrls || [])],\n denyUrls: [...(internalOptions.denyUrls || []), ...(clientOptions.denyUrls || [])],\n ignoreErrors: [\n ...(internalOptions.ignoreErrors || []),\n ...(clientOptions.ignoreErrors || []),\n ...DEFAULT_IGNORE_ERRORS,\n ],\n ignoreInternal: internalOptions.ignoreInternal !== undefined ? internalOptions.ignoreInternal : true,\n };\n}\n\n/** JSDoc */\nexport function _shouldDropEvent(event: Event, options: Partial): boolean {\n if (options.ignoreInternal && _isSentryError(event)) {\n __DEBUG_BUILD__ &&\n logger.warn(`Event dropped due to being internal Sentry Error.\\nEvent: ${getEventDescription(event)}`);\n return true;\n }\n if (_isIgnoredError(event, options.ignoreErrors)) {\n __DEBUG_BUILD__ &&\n logger.warn(\n `Event dropped due to being matched by \\`ignoreErrors\\` option.\\nEvent: ${getEventDescription(event)}`,\n );\n return true;\n }\n if (_isDeniedUrl(event, options.denyUrls)) {\n __DEBUG_BUILD__ &&\n logger.warn(\n `Event dropped due to being matched by \\`denyUrls\\` option.\\nEvent: ${getEventDescription(\n event,\n )}.\\nUrl: ${_getEventFilterUrl(event)}`,\n );\n return true;\n }\n if (!_isAllowedUrl(event, options.allowUrls)) {\n __DEBUG_BUILD__ &&\n logger.warn(\n `Event dropped due to not being matched by \\`allowUrls\\` option.\\nEvent: ${getEventDescription(\n event,\n )}.\\nUrl: ${_getEventFilterUrl(event)}`,\n );\n return true;\n }\n return false;\n}\n\nfunction _isIgnoredError(event: Event, ignoreErrors?: Array): boolean {\n if (!ignoreErrors || !ignoreErrors.length) {\n return false;\n }\n\n return _getPossibleEventMessages(event).some(message =>\n ignoreErrors.some(pattern => isMatchingPattern(message, pattern)),\n );\n}\n\nfunction _isDeniedUrl(event: Event, denyUrls?: Array): boolean {\n // TODO: Use Glob instead?\n if (!denyUrls || !denyUrls.length) {\n return false;\n }\n const url = _getEventFilterUrl(event);\n return !url ? false : denyUrls.some(pattern => isMatchingPattern(url, pattern));\n}\n\nfunction _isAllowedUrl(event: Event, allowUrls?: Array): boolean {\n // TODO: Use Glob instead?\n if (!allowUrls || !allowUrls.length) {\n return true;\n }\n const url = _getEventFilterUrl(event);\n return !url ? true : allowUrls.some(pattern => isMatchingPattern(url, pattern));\n}\n\nfunction _getPossibleEventMessages(event: Event): string[] {\n if (event.message) {\n return [event.message];\n }\n if (event.exception) {\n try {\n const { type = '', value = '' } = (event.exception.values && event.exception.values[0]) || {};\n return [`${value}`, `${type}: ${value}`];\n } catch (oO) {\n __DEBUG_BUILD__ && logger.error(`Cannot extract message for event ${getEventDescription(event)}`);\n return [];\n }\n }\n return [];\n}\n\nfunction _isSentryError(event: Event): boolean {\n try {\n // @ts-ignore can't be a sentry error if undefined\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n return event.exception.values[0].type === 'SentryError';\n } catch (e) {\n // ignore\n }\n return false;\n}\n\nfunction _getLastValidUrl(frames: StackFrame[] = []): string | null {\n for (let i = frames.length - 1; i >= 0; i--) {\n const frame = frames[i];\n\n if (frame && frame.filename !== '' && frame.filename !== '[native code]') {\n return frame.filename || null;\n }\n }\n\n return null;\n}\n\nfunction _getEventFilterUrl(event: Event): string | null {\n try {\n let frames;\n try {\n // @ts-ignore we only care about frames if the whole thing here is defined\n frames = event.exception.values[0].stacktrace.frames;\n } catch (e) {\n // ignore\n }\n return frames ? _getLastValidUrl(frames) : null;\n } catch (oO) {\n __DEBUG_BUILD__ && logger.error(`Cannot extract url for event ${getEventDescription(event)}`);\n return null;\n }\n}\n","import { Integration, WrappedFunction } from '@sentry/types';\nimport { getOriginalFunction } from '@sentry/utils';\n\nlet originalFunctionToString: () => void;\n\n/** Patch toString calls to return proper name for wrapped functions */\nexport class FunctionToString implements Integration {\n /**\n * @inheritDoc\n */\n public static id: string = 'FunctionToString';\n\n /**\n * @inheritDoc\n */\n public name: string = FunctionToString.id;\n\n /**\n * @inheritDoc\n */\n public setupOnce(): void {\n // eslint-disable-next-line @typescript-eslint/unbound-method\n originalFunctionToString = Function.prototype.toString;\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n Function.prototype.toString = function (this: WrappedFunction, ...args: any[]): string {\n const context = getOriginalFunction(this) || this;\n return originalFunctionToString.apply(context, args);\n };\n }\n}\n","import { DsnComponents, DsnLike } from '@sentry/types';\nimport { dsnToString, makeDsn, urlEncode } from '@sentry/utils';\n\nconst SENTRY_API_VERSION = '7';\n\n/** Returns the prefix to construct Sentry ingestion API endpoints. */\nfunction getBaseApiEndpoint(dsn: DsnComponents): string {\n const protocol = dsn.protocol ? `${dsn.protocol}:` : '';\n const port = dsn.port ? `:${dsn.port}` : '';\n return `${protocol}//${dsn.host}${port}${dsn.path ? `/${dsn.path}` : ''}/api/`;\n}\n\n/** Returns the ingest API endpoint for target. */\nfunction _getIngestEndpoint(dsn: DsnComponents): string {\n return `${getBaseApiEndpoint(dsn)}${dsn.projectId}/envelope/`;\n}\n\n/** Returns a URL-encoded string with auth config suitable for a query string. */\nfunction _encodedAuth(dsn: DsnComponents): string {\n return urlEncode({\n // We send only the minimum set of required information. See\n // https://github.com/getsentry/sentry-javascript/issues/2572.\n sentry_key: dsn.publicKey,\n sentry_version: SENTRY_API_VERSION,\n });\n}\n\n/**\n * Returns the envelope endpoint URL with auth in the query string.\n *\n * Sending auth as part of the query string and not as custom HTTP headers avoids CORS preflight requests.\n */\nexport function getEnvelopeEndpointWithUrlEncodedAuth(dsn: DsnComponents, tunnel?: string): string {\n return tunnel ? tunnel : `${_getIngestEndpoint(dsn)}?${_encodedAuth(dsn)}`;\n}\n\n/** Returns the url to the report dialog endpoint. */\nexport function getReportDialogEndpoint(\n dsnLike: DsnLike,\n dialogOptions: {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n [key: string]: any;\n user?: { name?: string; email?: string };\n },\n): string {\n const dsn = makeDsn(dsnLike);\n const endpoint = `${getBaseApiEndpoint(dsn)}embed/error-page/`;\n\n let encodedOptions = `dsn=${dsnToString(dsn)}`;\n for (const key in dialogOptions) {\n if (key === 'dsn') {\n continue;\n }\n\n if (key === 'user') {\n const user = dialogOptions.user;\n if (!user) {\n continue;\n }\n if (user.name) {\n encodedOptions += `&name=${encodeURIComponent(user.name)}`;\n }\n if (user.email) {\n encodedOptions += `&email=${encodeURIComponent(user.email)}`;\n }\n } else {\n encodedOptions += `&${encodeURIComponent(key)}=${encodeURIComponent(dialogOptions[key] as string)}`;\n }\n }\n\n return `${endpoint}?${encodedOptions}`;\n}\n","import { GenericFunction } from './types';\n\n/**\n * Polyfill for the optional chain operator, `?.`, given previous conversion of the expression into an array of values,\n * descriptors, and functions.\n *\n * Adapted from Sucrase (https://github.com/alangpierce/sucrase)\n * See https://github.com/alangpierce/sucrase/blob/265887868966917f3b924ce38dfad01fbab1329f/src/transformers/OptionalChainingNullishTransformer.ts#L15\n *\n * @param ops Array result of expression conversion\n * @returns The value of the expression\n */\nexport function _optionalChain(ops: unknown[]): unknown {\n let lastAccessLHS: unknown = undefined;\n let value = ops[0];\n let i = 1;\n while (i < ops.length) {\n const op = ops[i] as string;\n const fn = ops[i + 1] as (intermediateValue: unknown) => unknown;\n i += 2;\n // by checking for loose equality to `null`, we catch both `null` and `undefined`\n if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) {\n // really we're meaning to return `undefined` as an actual value here, but it saves bytes not to write it\n return;\n }\n if (op === 'access' || op === 'optionalAccess') {\n lastAccessLHS = value;\n value = fn(value);\n } else if (op === 'call' || op === 'optionalCall') {\n value = fn((...args: unknown[]) => (value as GenericFunction).call(lastAccessLHS, ...args));\n lastAccessLHS = undefined;\n }\n }\n return value;\n}\n\n// Sucrase version\n// function _optionalChain(ops) {\n// let lastAccessLHS = undefined;\n// let value = ops[0];\n// let i = 1;\n// while (i < ops.length) {\n// const op = ops[i];\n// const fn = ops[i + 1];\n// i += 2;\n// if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) {\n// return undefined;\n// }\n// if (op === 'access' || op === 'optionalAccess') {\n// lastAccessLHS = value;\n// value = fn(value);\n// } else if (op === 'call' || op === 'optionalCall') {\n// value = fn((...args) => value.call(lastAccessLHS, ...args));\n// lastAccessLHS = undefined;\n// }\n// }\n// return value;\n// }\n","import setPrototypeOf from \"./setPrototypeOf.js\";\nimport isNativeReflectConstruct from \"./isNativeReflectConstruct.js\";\nexport default function _construct(Parent, args, Class) {\n if (isNativeReflectConstruct()) {\n _construct = Reflect.construct;\n } else {\n _construct = function _construct(Parent, args, Class) {\n var a = [null];\n a.push.apply(a, args);\n var Constructor = Function.bind.apply(Parent, a);\n var instance = new Constructor();\n if (Class) setPrototypeOf(instance, Class.prototype);\n return instance;\n };\n }\n\n return _construct.apply(null, arguments);\n}","import getPrototypeOf from \"./getPrototypeOf.js\";\nimport setPrototypeOf from \"./setPrototypeOf.js\";\nimport isNativeFunction from \"./isNativeFunction.js\";\nimport construct from \"./construct.js\";\nexport default function _wrapNativeSuper(Class) {\n var _cache = typeof Map === \"function\" ? new Map() : undefined;\n\n _wrapNativeSuper = function _wrapNativeSuper(Class) {\n if (Class === null || !isNativeFunction(Class)) return Class;\n\n if (typeof Class !== \"function\") {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n\n if (typeof _cache !== \"undefined\") {\n if (_cache.has(Class)) return _cache.get(Class);\n\n _cache.set(Class, Wrapper);\n }\n\n function Wrapper() {\n return construct(Class, arguments, getPrototypeOf(this).constructor);\n }\n\n Wrapper.prototype = Object.create(Class.prototype, {\n constructor: {\n value: Wrapper,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n return setPrototypeOf(Wrapper, Class);\n };\n\n return _wrapNativeSuper(Class);\n}","export default function _isNativeFunction(fn) {\n return Function.toString.call(fn).indexOf(\"[native code]\") !== -1;\n}","/** An error emitted by Sentry SDKs and related utilities. */\nexport class SentryError extends Error {\n /** Display name of this error instance. */\n public name: string;\n\n public constructor(public message: string) {\n super(message);\n\n this.name = new.target.prototype.constructor.name;\n Object.setPrototypeOf(this, new.target.prototype);\n }\n}\n","import { DsnComponents, DsnLike, DsnProtocol } from '@sentry/types';\n\nimport { SentryError } from './error';\n\n/** Regular expression used to parse a Dsn. */\nconst DSN_REGEX = /^(?:(\\w+):)\\/\\/(?:(\\w+)(?::(\\w+))?@)([\\w.-]+)(?::(\\d+))?\\/(.+)/;\n\nfunction isValidProtocol(protocol?: string): protocol is DsnProtocol {\n return protocol === 'http' || protocol === 'https';\n}\n\n/**\n * Renders the string representation of this Dsn.\n *\n * By default, this will render the public representation without the password\n * component. To get the deprecated private representation, set `withPassword`\n * to true.\n *\n * @param withPassword When set to true, the password will be included.\n */\nexport function dsnToString(dsn: DsnComponents, withPassword: boolean = false): string {\n const { host, path, pass, port, projectId, protocol, publicKey } = dsn;\n return (\n `${protocol}://${publicKey}${withPassword && pass ? `:${pass}` : ''}` +\n `@${host}${port ? `:${port}` : ''}/${path ? `${path}/` : path}${projectId}`\n );\n}\n\n/**\n * Parses a Dsn from a given string.\n *\n * @param str A Dsn as string\n * @returns Dsn as DsnComponents\n */\nfunction dsnFromString(str: string): DsnComponents {\n const match = DSN_REGEX.exec(str);\n\n if (!match) {\n throw new SentryError(`Invalid Sentry Dsn: ${str}`);\n }\n\n const [protocol, publicKey, pass = '', host, port = '', lastPath] = match.slice(1);\n let path = '';\n let projectId = lastPath;\n\n const split = projectId.split('/');\n if (split.length > 1) {\n path = split.slice(0, -1).join('/');\n projectId = split.pop() as string;\n }\n\n if (projectId) {\n const projectMatch = projectId.match(/^\\d+/);\n if (projectMatch) {\n projectId = projectMatch[0];\n }\n }\n\n return dsnFromComponents({ host, pass, path, projectId, port, protocol: protocol as DsnProtocol, publicKey });\n}\n\nfunction dsnFromComponents(components: DsnComponents): DsnComponents {\n return {\n protocol: components.protocol,\n publicKey: components.publicKey || '',\n pass: components.pass || '',\n host: components.host,\n port: components.port || '',\n path: components.path || '',\n projectId: components.projectId,\n };\n}\n\nfunction validateDsn(dsn: DsnComponents): boolean | void {\n if (!__DEBUG_BUILD__) {\n return;\n }\n\n const { port, projectId, protocol } = dsn;\n\n const requiredComponents: ReadonlyArray = ['protocol', 'publicKey', 'host', 'projectId'];\n requiredComponents.forEach(component => {\n if (!dsn[component]) {\n throw new SentryError(`Invalid Sentry Dsn: ${component} missing`);\n }\n });\n\n if (!projectId.match(/^\\d+$/)) {\n throw new SentryError(`Invalid Sentry Dsn: Invalid projectId ${projectId}`);\n }\n\n if (!isValidProtocol(protocol)) {\n throw new SentryError(`Invalid Sentry Dsn: Invalid protocol ${protocol}`);\n }\n\n if (port && isNaN(parseInt(port, 10))) {\n throw new SentryError(`Invalid Sentry Dsn: Invalid port ${port}`);\n }\n\n return true;\n}\n\n/** The Sentry Dsn, identifying a Sentry instance and project. */\nexport function makeDsn(from: DsnLike): DsnComponents {\n const components = typeof from === 'string' ? dsnFromString(from) : dsnFromComponents(from);\n validateDsn(components);\n return components;\n}\n\n/**\n * Changes a Dsn to point to the `relay` server running in the Lambda Extension.\n *\n * This is only used by the serverless integration for AWS Lambda.\n *\n * @param originalDsn The original Dsn of the customer.\n * @returns Dsn pointing to Lambda extension.\n */\nexport function extensionRelayDSN(originalDsn: string | undefined): string | undefined {\n if (originalDsn === undefined) {\n return undefined;\n }\n\n const dsn = dsnFromString(originalDsn);\n dsn.host = 'localhost';\n dsn.port = '3000';\n dsn.protocol = 'http';\n\n return dsnToString(dsn);\n}\n","import {\n Attachment,\n AttachmentItem,\n DataCategory,\n Envelope,\n EnvelopeItem,\n EnvelopeItemType,\n TextEncoderInternal,\n} from '@sentry/types';\n\nimport { dropUndefinedKeys } from './object';\n\n/**\n * Creates an envelope.\n * Make sure to always explicitly provide the generic to this function\n * so that the envelope types resolve correctly.\n */\nexport function createEnvelope(headers: E[0], items: E[1] = []): E {\n return [headers, items] as E;\n}\n\n/**\n * Add an item to an envelope.\n * Make sure to always explicitly provide the generic to this function\n * so that the envelope types resolve correctly.\n */\nexport function addItemToEnvelope(envelope: E, newItem: E[1][number]): E {\n const [headers, items] = envelope;\n return [headers, [...items, newItem]] as E;\n}\n\n/**\n * Convenience function to loop through the items and item types of an envelope.\n * (This function was mostly created because working with envelope types is painful at the moment)\n */\nexport function forEachEnvelopeItem(\n envelope: Envelope,\n callback: (envelopeItem: E[1][number], envelopeItemType: E[1][number][0]['type']) => void,\n): void {\n const envelopeItems = envelope[1];\n envelopeItems.forEach((envelopeItem: EnvelopeItem) => {\n const envelopeItemType = envelopeItem[0].type;\n callback(envelopeItem, envelopeItemType);\n });\n}\n\nfunction encodeUTF8(input: string, textEncoder?: TextEncoderInternal): Uint8Array {\n const utf8 = textEncoder || new TextEncoder();\n return utf8.encode(input);\n}\n\n/**\n * Serializes an envelope.\n */\nexport function serializeEnvelope(envelope: Envelope, textEncoder?: TextEncoderInternal): string | Uint8Array {\n const [envHeaders, items] = envelope;\n\n // Initially we construct our envelope as a string and only convert to binary chunks if we encounter binary data\n let parts: string | Uint8Array[] = JSON.stringify(envHeaders);\n\n function append(next: string | Uint8Array): void {\n if (typeof parts === 'string') {\n parts = typeof next === 'string' ? parts + next : [encodeUTF8(parts, textEncoder), next];\n } else {\n parts.push(typeof next === 'string' ? encodeUTF8(next, textEncoder) : next);\n }\n }\n\n for (const item of items) {\n const [itemHeaders, payload] = item as typeof items[number];\n append(`\\n${JSON.stringify(itemHeaders)}\\n`);\n append(typeof payload === 'string' || payload instanceof Uint8Array ? payload : JSON.stringify(payload));\n }\n\n return typeof parts === 'string' ? parts : concatBuffers(parts);\n}\n\nfunction concatBuffers(buffers: Uint8Array[]): Uint8Array {\n const totalLength = buffers.reduce((acc, buf) => acc + buf.length, 0);\n\n const merged = new Uint8Array(totalLength);\n let offset = 0;\n for (const buffer of buffers) {\n merged.set(buffer, offset);\n offset += buffer.length;\n }\n\n return merged;\n}\n\n/**\n * Creates attachment envelope items\n */\nexport function createAttachmentEnvelopeItem(\n attachment: Attachment,\n textEncoder?: TextEncoderInternal,\n): AttachmentItem {\n const buffer = typeof attachment.data === 'string' ? encodeUTF8(attachment.data, textEncoder) : attachment.data;\n\n return [\n dropUndefinedKeys({\n type: 'attachment',\n length: buffer.length,\n filename: attachment.filename,\n content_type: attachment.contentType,\n attachment_type: attachment.attachmentType,\n }),\n buffer,\n ];\n}\n\nconst ITEM_TYPE_TO_DATA_CATEGORY_MAP: Record = {\n session: 'session',\n sessions: 'session',\n attachment: 'attachment',\n transaction: 'transaction',\n event: 'error',\n client_report: 'internal',\n user_report: 'default',\n};\n\n/**\n * Maps the type of an envelope item to a data category.\n */\nexport function envelopeItemTypeToDataCategory(type: EnvelopeItemType): DataCategory {\n return ITEM_TYPE_TO_DATA_CATEGORY_MAP[type];\n}\n","/* eslint-disable @typescript-eslint/no-unsafe-member-access */\n/* eslint-disable @typescript-eslint/no-explicit-any */\n\nexport type MemoFunc = [\n // memoize\n (obj: any) => boolean,\n // unmemoize\n (obj: any) => void,\n];\n\n/**\n * Helper to decycle json objects\n */\nexport function memoBuilder(): MemoFunc {\n const hasWeakSet = typeof WeakSet === 'function';\n const inner: any = hasWeakSet ? new WeakSet() : [];\n function memoize(obj: any): boolean {\n if (hasWeakSet) {\n if (inner.has(obj)) {\n return true;\n }\n inner.add(obj);\n return false;\n }\n // eslint-disable-next-line @typescript-eslint/prefer-for-of\n for (let i = 0; i < inner.length; i++) {\n const value = inner[i];\n if (value === obj) {\n return true;\n }\n }\n inner.push(obj);\n return false;\n }\n\n function unmemoize(obj: any): void {\n if (hasWeakSet) {\n inner.delete(obj);\n } else {\n for (let i = 0; i < inner.length; i++) {\n if (inner[i] === obj) {\n inner.splice(i, 1);\n break;\n }\n }\n }\n }\n return [memoize, unmemoize];\n}\n","import { Primitive } from '@sentry/types';\n\nimport { isNaN, isSyntheticEvent } from './is';\nimport { memoBuilder, MemoFunc } from './memo';\nimport { convertToPlainObject } from './object';\nimport { getFunctionName } from './stacktrace';\n\ntype Prototype = { constructor: (...args: unknown[]) => unknown };\n// This is a hack to placate TS, relying on the fact that technically, arrays are objects with integer keys. Normally we\n// think of those keys as actual numbers, but `arr['0']` turns out to work just as well as `arr[0]`, and doing it this\n// way lets us use a single type in the places where behave as if we are only dealing with objects, even if some of them\n// might be arrays.\ntype ObjOrArray = { [key: string]: T };\n\n/**\n * Recursively normalizes the given object.\n *\n * - Creates a copy to prevent original input mutation\n * - Skips non-enumerable properties\n * - When stringifying, calls `toJSON` if implemented\n * - Removes circular references\n * - Translates non-serializable values (`undefined`/`NaN`/functions) to serializable format\n * - Translates known global objects/classes to a string representations\n * - Takes care of `Error` object serialization\n * - Optionally limits depth of final output\n * - Optionally limits number of properties/elements included in any single object/array\n *\n * @param input The object to be normalized.\n * @param depth The max depth to which to normalize the object. (Anything deeper stringified whole.)\n * @param maxProperties The max number of elements or properties to be included in any single array or\n * object in the normallized output..\n * @returns A normalized version of the object, or `\"**non-serializable**\"` if any errors are thrown during normalization.\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function normalize(input: unknown, depth: number = +Infinity, maxProperties: number = +Infinity): any {\n try {\n // since we're at the outermost level, we don't provide a key\n return visit('', input, depth, maxProperties);\n } catch (err) {\n return { ERROR: `**non-serializable** (${err})` };\n }\n}\n\n/** JSDoc */\nexport function normalizeToSize(\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n object: { [key: string]: any },\n // Default Node.js REPL depth\n depth: number = 3,\n // 100kB, as 200kB is max payload size, so half sounds reasonable\n maxSize: number = 100 * 1024,\n): T {\n const normalized = normalize(object, depth);\n\n if (jsonSize(normalized) > maxSize) {\n return normalizeToSize(object, depth - 1, maxSize);\n }\n\n return normalized as T;\n}\n\n/**\n * Visits a node to perform normalization on it\n *\n * @param key The key corresponding to the given node\n * @param value The node to be visited\n * @param depth Optional number indicating the maximum recursion depth\n * @param maxProperties Optional maximum number of properties/elements included in any single object/array\n * @param memo Optional Memo class handling decycling\n */\nfunction visit(\n key: string,\n value: unknown,\n depth: number = +Infinity,\n maxProperties: number = +Infinity,\n memo: MemoFunc = memoBuilder(),\n): Primitive | ObjOrArray {\n const [memoize, unmemoize] = memo;\n\n // If the value has a `toJSON` method, see if we can bail and let it do the work\n const valueWithToJSON = value as unknown & { toJSON?: () => Primitive | ObjOrArray };\n if (valueWithToJSON && typeof valueWithToJSON.toJSON === 'function') {\n try {\n return valueWithToJSON.toJSON();\n } catch (err) {\n // pass (The built-in `toJSON` failed, but we can still try to do it ourselves)\n }\n }\n\n // Get the simple cases out of the way first\n if (value === null || (['number', 'boolean', 'string'].includes(typeof value) && !isNaN(value))) {\n return value as Primitive;\n }\n\n const stringified = stringifyValue(key, value);\n\n // Anything we could potentially dig into more (objects or arrays) will have come back as `\"[object XXXX]\"`.\n // Everything else will have already been serialized, so if we don't see that pattern, we're done.\n if (!stringified.startsWith('[object ')) {\n return stringified;\n }\n\n // From here on, we can assert that `value` is either an object or an array.\n\n // Do not normalize objects that we know have already been normalized. As a general rule, the\n // \"__sentry_skip_normalization__\" property should only be used sparingly and only should only be set on objects that\n // have already been normalized.\n if ((value as ObjOrArray)['__sentry_skip_normalization__']) {\n return value as ObjOrArray;\n }\n\n // We're also done if we've reached the max depth\n if (depth === 0) {\n // At this point we know `serialized` is a string of the form `\"[object XXXX]\"`. Clean it up so it's just `\"[XXXX]\"`.\n return stringified.replace('object ', '');\n }\n\n // If we've already visited this branch, bail out, as it's circular reference. If not, note that we're seeing it now.\n if (memoize(value)) {\n return '[Circular ~]';\n }\n\n // At this point we know we either have an object or an array, we haven't seen it before, and we're going to recurse\n // because we haven't yet reached the max depth. Create an accumulator to hold the results of visiting each\n // property/entry, and keep track of the number of items we add to it.\n const normalized = (Array.isArray(value) ? [] : {}) as ObjOrArray;\n let numAdded = 0;\n\n // Before we begin, convert`Error` and`Event` instances into plain objects, since some of each of their relevant\n // properties are non-enumerable and otherwise would get missed.\n const visitable = convertToPlainObject(value as ObjOrArray);\n\n for (const visitKey in visitable) {\n // Avoid iterating over fields in the prototype if they've somehow been exposed to enumeration.\n if (!Object.prototype.hasOwnProperty.call(visitable, visitKey)) {\n continue;\n }\n\n if (numAdded >= maxProperties) {\n normalized[visitKey] = '[MaxProperties ~]';\n break;\n }\n\n // Recursively visit all the child nodes\n const visitValue = visitable[visitKey];\n normalized[visitKey] = visit(visitKey, visitValue, depth - 1, maxProperties, memo);\n\n numAdded += 1;\n }\n\n // Once we've visited all the branches, remove the parent from memo storage\n unmemoize(value);\n\n // Return accumulated values\n return normalized;\n}\n\n// TODO remove this in v7 (this means the method will no longer be exported, under any name)\nexport { visit as walk };\n\n/**\n * Stringify the given value. Handles various known special values and types.\n *\n * Not meant to be used on simple primitives which already have a string representation, as it will, for example, turn\n * the number 1231 into \"[Object Number]\", nor on `null`, as it will throw.\n *\n * @param value The value to stringify\n * @returns A stringified representation of the given value\n */\nfunction stringifyValue(\n key: unknown,\n // this type is a tiny bit of a cheat, since this function does handle NaN (which is technically a number), but for\n // our internal use, it'll do\n value: Exclude,\n): string {\n try {\n if (key === 'domain' && value && typeof value === 'object' && (value as { _events: unknown })._events) {\n return '[Domain]';\n }\n\n if (key === 'domainEmitter') {\n return '[DomainEmitter]';\n }\n\n // It's safe to use `global`, `window`, and `document` here in this manner, as we are asserting using `typeof` first\n // which won't throw if they are not present.\n\n if (typeof global !== 'undefined' && value === global) {\n return '[Global]';\n }\n\n // eslint-disable-next-line no-restricted-globals\n if (typeof window !== 'undefined' && value === window) {\n return '[Window]';\n }\n\n // eslint-disable-next-line no-restricted-globals\n if (typeof document !== 'undefined' && value === document) {\n return '[Document]';\n }\n\n // React's SyntheticEvent thingy\n if (isSyntheticEvent(value)) {\n return '[SyntheticEvent]';\n }\n\n if (typeof value === 'number' && value !== value) {\n return '[NaN]';\n }\n\n // this catches `undefined` (but not `null`, which is a primitive and can be serialized on its own)\n if (value === void 0) {\n return '[undefined]';\n }\n\n if (typeof value === 'function') {\n return `[Function: ${getFunctionName(value)}]`;\n }\n\n if (typeof value === 'symbol') {\n return `[${String(value)}]`;\n }\n\n // stringified BigInts are indistinguishable from regular numbers, so we need to label them to avoid confusion\n if (typeof value === 'bigint') {\n return `[BigInt: ${String(value)}]`;\n }\n\n // Now that we've knocked out all the special cases and the primitives, all we have left are objects. Simply casting\n // them to strings means that instances of classes which haven't defined their `toStringTag` will just come out as\n // `\"[object Object]\"`. If we instead look at the constructor's name (which is the same as the name of the class),\n // we can make sure that only plain objects come out that way.\n return `[object ${(Object.getPrototypeOf(value) as Prototype).constructor.name}]`;\n } catch (err) {\n return `**non-serializable** (${err})`;\n }\n}\n\n/** Calculates bytes size of input string */\nfunction utf8Length(value: string): number {\n // eslint-disable-next-line no-bitwise\n return ~-encodeURI(value).split(/%..|./).length;\n}\n\n/** Calculates bytes size of input object */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction jsonSize(value: any): number {\n return utf8Length(JSON.stringify(value));\n}\n","/* eslint-disable max-lines */\nimport { Scope, updateSession } from '@sentry/hub';\nimport {\n Client,\n ClientOptions,\n DataCategory,\n DsnComponents,\n Envelope,\n Event,\n EventDropReason,\n EventHint,\n Integration,\n IntegrationClass,\n Outcome,\n Session,\n SessionAggregates,\n Severity,\n SeverityLevel,\n Transport,\n} from '@sentry/types';\nimport {\n addItemToEnvelope,\n checkOrSetAlreadyCaught,\n createAttachmentEnvelopeItem,\n dateTimestampInSeconds,\n isPlainObject,\n isPrimitive,\n isThenable,\n logger,\n makeDsn,\n normalize,\n rejectedSyncPromise,\n resolvedSyncPromise,\n SentryError,\n SyncPromise,\n truncate,\n uuid4,\n} from '@sentry/utils';\n\nimport { getEnvelopeEndpointWithUrlEncodedAuth } from './api';\nimport { createEventEnvelope, createSessionEnvelope } from './envelope';\nimport { IntegrationIndex, setupIntegrations } from './integration';\n\nconst ALREADY_SEEN_ERROR = \"Not capturing exception because it's already been captured.\";\n\n/**\n * Base implementation for all JavaScript SDK clients.\n *\n * Call the constructor with the corresponding options\n * specific to the client subclass. To access these options later, use\n * {@link Client.getOptions}.\n *\n * If a Dsn is specified in the options, it will be parsed and stored. Use\n * {@link Client.getDsn} to retrieve the Dsn at any moment. In case the Dsn is\n * invalid, the constructor will throw a {@link SentryException}. Note that\n * without a valid Dsn, the SDK will not send any events to Sentry.\n *\n * Before sending an event, it is passed through\n * {@link BaseClient._prepareEvent} to add SDK information and scope data\n * (breadcrumbs and context). To add more custom information, override this\n * method and extend the resulting prepared event.\n *\n * To issue automatically created events (e.g. via instrumentation), use\n * {@link Client.captureEvent}. It will prepare the event and pass it through\n * the callback lifecycle. To issue auto-breadcrumbs, use\n * {@link Client.addBreadcrumb}.\n *\n * @example\n * class NodeClient extends BaseClient {\n * public constructor(options: NodeOptions) {\n * super(options);\n * }\n *\n * // ...\n * }\n */\nexport abstract class BaseClient implements Client {\n /** Options passed to the SDK. */\n protected readonly _options: O;\n\n /** The client Dsn, if specified in options. Without this Dsn, the SDK will be disabled. */\n protected readonly _dsn?: DsnComponents;\n\n protected readonly _transport?: Transport;\n\n /** Array of set up integrations. */\n protected _integrations: IntegrationIndex = {};\n\n /** Indicates whether this client's integrations have been set up. */\n protected _integrationsInitialized: boolean = false;\n\n /** Number of calls being processed */\n protected _numProcessing: number = 0;\n\n /** Holds flushable */\n private _outcomes: { [key: string]: number } = {};\n\n /**\n * Initializes this client instance.\n *\n * @param options Options for the client.\n */\n protected constructor(options: O) {\n this._options = options;\n if (options.dsn) {\n this._dsn = makeDsn(options.dsn);\n const url = getEnvelopeEndpointWithUrlEncodedAuth(this._dsn, options.tunnel);\n this._transport = options.transport({\n recordDroppedEvent: this.recordDroppedEvent.bind(this),\n ...options.transportOptions,\n url,\n });\n } else {\n __DEBUG_BUILD__ && logger.warn('No DSN provided, client will not do anything.');\n }\n }\n\n /**\n * @inheritDoc\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/explicit-module-boundary-types\n public captureException(exception: any, hint?: EventHint, scope?: Scope): string | undefined {\n // ensure we haven't captured this very object before\n if (checkOrSetAlreadyCaught(exception)) {\n __DEBUG_BUILD__ && logger.log(ALREADY_SEEN_ERROR);\n return;\n }\n\n let eventId: string | undefined = hint && hint.event_id;\n\n this._process(\n this.eventFromException(exception, hint)\n .then(event => this._captureEvent(event, hint, scope))\n .then(result => {\n eventId = result;\n }),\n );\n\n return eventId;\n }\n\n /**\n * @inheritDoc\n */\n public captureMessage(\n message: string,\n // eslint-disable-next-line deprecation/deprecation\n level?: Severity | SeverityLevel,\n hint?: EventHint,\n scope?: Scope,\n ): string | undefined {\n let eventId: string | undefined = hint && hint.event_id;\n\n const promisedEvent = isPrimitive(message)\n ? this.eventFromMessage(String(message), level, hint)\n : this.eventFromException(message, hint);\n\n this._process(\n promisedEvent\n .then(event => this._captureEvent(event, hint, scope))\n .then(result => {\n eventId = result;\n }),\n );\n\n return eventId;\n }\n\n /**\n * @inheritDoc\n */\n public captureEvent(event: Event, hint?: EventHint, scope?: Scope): string | undefined {\n // ensure we haven't captured this very object before\n if (hint && hint.originalException && checkOrSetAlreadyCaught(hint.originalException)) {\n __DEBUG_BUILD__ && logger.log(ALREADY_SEEN_ERROR);\n return;\n }\n\n let eventId: string | undefined = hint && hint.event_id;\n\n this._process(\n this._captureEvent(event, hint, scope).then(result => {\n eventId = result;\n }),\n );\n\n return eventId;\n }\n\n /**\n * @inheritDoc\n */\n public captureSession(session: Session): void {\n if (!this._isEnabled()) {\n __DEBUG_BUILD__ && logger.warn('SDK not enabled, will not capture session.');\n return;\n }\n\n if (!(typeof session.release === 'string')) {\n __DEBUG_BUILD__ && logger.warn('Discarded session because of missing or non-string release');\n } else {\n this.sendSession(session);\n // After sending, we set init false to indicate it's not the first occurrence\n updateSession(session, { init: false });\n }\n }\n\n /**\n * @inheritDoc\n */\n public getDsn(): DsnComponents | undefined {\n return this._dsn;\n }\n\n /**\n * @inheritDoc\n */\n public getOptions(): O {\n return this._options;\n }\n\n /**\n * @inheritDoc\n */\n public getTransport(): Transport | undefined {\n return this._transport;\n }\n\n /**\n * @inheritDoc\n */\n public flush(timeout?: number): PromiseLike {\n const transport = this._transport;\n if (transport) {\n return this._isClientDoneProcessing(timeout).then(clientFinished => {\n return transport.flush(timeout).then(transportFlushed => clientFinished && transportFlushed);\n });\n } else {\n return resolvedSyncPromise(true);\n }\n }\n\n /**\n * @inheritDoc\n */\n public close(timeout?: number): PromiseLike {\n return this.flush(timeout).then(result => {\n this.getOptions().enabled = false;\n return result;\n });\n }\n\n /**\n * Sets up the integrations\n */\n public setupIntegrations(): void {\n if (this._isEnabled() && !this._integrationsInitialized) {\n this._integrations = setupIntegrations(this._options.integrations);\n this._integrationsInitialized = true;\n }\n }\n\n /**\n * Gets an installed integration by its `id`.\n *\n * @returns The installed integration or `undefined` if no integration with that `id` was installed.\n */\n public getIntegrationById(integrationId: string): Integration | undefined {\n return this._integrations[integrationId];\n }\n\n /**\n * @inheritDoc\n */\n public getIntegration(integration: IntegrationClass): T | null {\n try {\n return (this._integrations[integration.id] as T) || null;\n } catch (_oO) {\n __DEBUG_BUILD__ && logger.warn(`Cannot retrieve integration ${integration.id} from the current Client`);\n return null;\n }\n }\n\n /**\n * @inheritDoc\n */\n public sendEvent(event: Event, hint: EventHint = {}): void {\n if (this._dsn) {\n let env = createEventEnvelope(event, this._dsn, this._options._metadata, this._options.tunnel);\n\n for (const attachment of hint.attachments || []) {\n env = addItemToEnvelope(\n env,\n createAttachmentEnvelopeItem(attachment, this._options.transportOptions?.textEncoder),\n );\n }\n\n this._sendEnvelope(env);\n }\n }\n\n /**\n * @inheritDoc\n */\n public sendSession(session: Session | SessionAggregates): void {\n if (this._dsn) {\n const env = createSessionEnvelope(session, this._dsn, this._options._metadata, this._options.tunnel);\n this._sendEnvelope(env);\n }\n }\n\n /**\n * @inheritDoc\n */\n public recordDroppedEvent(reason: EventDropReason, category: DataCategory): void {\n if (this._options.sendClientReports) {\n // We want to track each category (error, transaction, session) separately\n // but still keep the distinction between different type of outcomes.\n // We could use nested maps, but it's much easier to read and type this way.\n // A correct type for map-based implementation if we want to go that route\n // would be `Partial>>>`\n // With typescript 4.1 we could even use template literal types\n const key = `${reason}:${category}`;\n __DEBUG_BUILD__ && logger.log(`Adding outcome: \"${key}\"`);\n\n // The following works because undefined + 1 === NaN and NaN is falsy\n this._outcomes[key] = this._outcomes[key] + 1 || 1;\n }\n }\n\n /** Updates existing session based on the provided event */\n protected _updateSessionFromEvent(session: Session, event: Event): void {\n let crashed = false;\n let errored = false;\n const exceptions = event.exception && event.exception.values;\n\n if (exceptions) {\n errored = true;\n\n for (const ex of exceptions) {\n const mechanism = ex.mechanism;\n if (mechanism && mechanism.handled === false) {\n crashed = true;\n break;\n }\n }\n }\n\n // A session is updated and that session update is sent in only one of the two following scenarios:\n // 1. Session with non terminal status and 0 errors + an error occurred -> Will set error count to 1 and send update\n // 2. Session with non terminal status and 1 error + a crash occurred -> Will set status crashed and send update\n const sessionNonTerminal = session.status === 'ok';\n const shouldUpdateAndSend = (sessionNonTerminal && session.errors === 0) || (sessionNonTerminal && crashed);\n\n if (shouldUpdateAndSend) {\n updateSession(session, {\n ...(crashed && { status: 'crashed' }),\n errors: session.errors || Number(errored || crashed),\n });\n this.captureSession(session);\n }\n }\n\n /**\n * Determine if the client is finished processing. Returns a promise because it will wait `timeout` ms before saying\n * \"no\" (resolving to `false`) in order to give the client a chance to potentially finish first.\n *\n * @param timeout The time, in ms, after which to resolve to `false` if the client is still busy. Passing `0` (or not\n * passing anything) will make the promise wait as long as it takes for processing to finish before resolving to\n * `true`.\n * @returns A promise which will resolve to `true` if processing is already done or finishes before the timeout, and\n * `false` otherwise\n */\n protected _isClientDoneProcessing(timeout?: number): PromiseLike {\n return new SyncPromise(resolve => {\n let ticked: number = 0;\n const tick: number = 1;\n\n const interval = setInterval(() => {\n if (this._numProcessing == 0) {\n clearInterval(interval);\n resolve(true);\n } else {\n ticked += tick;\n if (timeout && ticked >= timeout) {\n clearInterval(interval);\n resolve(false);\n }\n }\n }, tick);\n });\n }\n\n /** Determines whether this SDK is enabled and a valid Dsn is present. */\n protected _isEnabled(): boolean {\n return this.getOptions().enabled !== false && this._dsn !== undefined;\n }\n\n /**\n * Adds common information to events.\n *\n * The information includes release and environment from `options`,\n * breadcrumbs and context (extra, tags and user) from the scope.\n *\n * Information that is already present in the event is never overwritten. For\n * nested objects, such as the context, keys are merged.\n *\n * @param event The original event.\n * @param hint May contain additional information about the original exception.\n * @param scope A scope containing event metadata.\n * @returns A new event with more information.\n */\n protected _prepareEvent(event: Event, hint: EventHint, scope?: Scope): PromiseLike {\n const { normalizeDepth = 3, normalizeMaxBreadth = 1_000 } = this.getOptions();\n const prepared: Event = {\n ...event,\n event_id: event.event_id || hint.event_id || uuid4(),\n timestamp: event.timestamp || dateTimestampInSeconds(),\n };\n\n this._applyClientOptions(prepared);\n this._applyIntegrationsMetadata(prepared);\n\n // If we have scope given to us, use it as the base for further modifications.\n // This allows us to prevent unnecessary copying of data if `captureContext` is not provided.\n let finalScope = scope;\n if (hint.captureContext) {\n finalScope = Scope.clone(finalScope).update(hint.captureContext);\n }\n\n // We prepare the result here with a resolved Event.\n let result = resolvedSyncPromise(prepared);\n\n // This should be the last thing called, since we want that\n // {@link Hub.addEventProcessor} gets the finished prepared event.\n if (finalScope) {\n // Collect attachments from the hint and scope\n const attachments = [...(hint.attachments || []), ...finalScope.getAttachments()];\n\n if (attachments.length) {\n hint.attachments = attachments;\n }\n\n // In case we have a hub we reassign it.\n result = finalScope.applyToEvent(prepared, hint);\n }\n\n return result.then(evt => {\n if (evt) {\n // TODO this is more of the hack trying to solve https://github.com/getsentry/sentry-javascript/issues/2809\n // it is only attached as extra data to the event if the event somehow skips being normalized\n evt.sdkProcessingMetadata = {\n ...evt.sdkProcessingMetadata,\n normalizeDepth: `${normalize(normalizeDepth)} (${typeof normalizeDepth})`,\n };\n }\n if (typeof normalizeDepth === 'number' && normalizeDepth > 0) {\n return this._normalizeEvent(evt, normalizeDepth, normalizeMaxBreadth);\n }\n return evt;\n });\n }\n\n /**\n * Applies `normalize` function on necessary `Event` attributes to make them safe for serialization.\n * Normalized keys:\n * - `breadcrumbs.data`\n * - `user`\n * - `contexts`\n * - `extra`\n * @param event Event\n * @returns Normalized event\n */\n protected _normalizeEvent(event: Event | null, depth: number, maxBreadth: number): Event | null {\n if (!event) {\n return null;\n }\n\n const normalized: Event = {\n ...event,\n ...(event.breadcrumbs && {\n breadcrumbs: event.breadcrumbs.map(b => ({\n ...b,\n ...(b.data && {\n data: normalize(b.data, depth, maxBreadth),\n }),\n })),\n }),\n ...(event.user && {\n user: normalize(event.user, depth, maxBreadth),\n }),\n ...(event.contexts && {\n contexts: normalize(event.contexts, depth, maxBreadth),\n }),\n ...(event.extra && {\n extra: normalize(event.extra, depth, maxBreadth),\n }),\n };\n\n // event.contexts.trace stores information about a Transaction. Similarly,\n // event.spans[] stores information about child Spans. Given that a\n // Transaction is conceptually a Span, normalization should apply to both\n // Transactions and Spans consistently.\n // For now the decision is to skip normalization of Transactions and Spans,\n // so this block overwrites the normalized event to add back the original\n // Transaction information prior to normalization.\n if (event.contexts && event.contexts.trace) {\n normalized.contexts = {};\n normalized.contexts.trace = event.contexts.trace;\n\n // event.contexts.trace.data may contain circular/dangerous data so we need to normalize it\n if (event.contexts.trace.data) {\n normalized.contexts.trace.data = normalize(event.contexts.trace.data, depth, maxBreadth);\n }\n }\n\n // event.spans[].data may contain circular/dangerous data so we need to normalize it\n if (event.spans) {\n normalized.spans = event.spans.map(span => {\n // We cannot use the spread operator here because `toJSON` on `span` is non-enumerable\n if (span.data) {\n span.data = normalize(span.data, depth, maxBreadth);\n }\n return span;\n });\n }\n\n normalized.sdkProcessingMetadata = { ...normalized.sdkProcessingMetadata, baseClientNormalized: true };\n\n return normalized;\n }\n\n /**\n * Enhances event using the client configuration.\n * It takes care of all \"static\" values like environment, release and `dist`,\n * as well as truncating overly long values.\n * @param event event instance to be enhanced\n */\n protected _applyClientOptions(event: Event): void {\n const options = this.getOptions();\n const { environment, release, dist, maxValueLength = 250 } = options;\n\n if (!('environment' in event)) {\n event.environment = 'environment' in options ? environment : 'production';\n }\n\n if (event.release === undefined && release !== undefined) {\n event.release = release;\n }\n\n if (event.dist === undefined && dist !== undefined) {\n event.dist = dist;\n }\n\n if (event.message) {\n event.message = truncate(event.message, maxValueLength);\n }\n\n const exception = event.exception && event.exception.values && event.exception.values[0];\n if (exception && exception.value) {\n exception.value = truncate(exception.value, maxValueLength);\n }\n\n const request = event.request;\n if (request && request.url) {\n request.url = truncate(request.url, maxValueLength);\n }\n }\n\n /**\n * This function adds all used integrations to the SDK info in the event.\n * @param event The event that will be filled with all integrations.\n */\n protected _applyIntegrationsMetadata(event: Event): void {\n const integrationsArray = Object.keys(this._integrations);\n if (integrationsArray.length > 0) {\n event.sdk = event.sdk || {};\n event.sdk.integrations = [...(event.sdk.integrations || []), ...integrationsArray];\n }\n }\n\n /**\n * Processes the event and logs an error in case of rejection\n * @param event\n * @param hint\n * @param scope\n */\n protected _captureEvent(event: Event, hint: EventHint = {}, scope?: Scope): PromiseLike {\n return this._processEvent(event, hint, scope).then(\n finalEvent => {\n return finalEvent.event_id;\n },\n reason => {\n __DEBUG_BUILD__ && logger.warn(reason);\n return undefined;\n },\n );\n }\n\n /**\n * Processes an event (either error or message) and sends it to Sentry.\n *\n * This also adds breadcrumbs and context information to the event. However,\n * platform specific meta data (such as the User's IP address) must be added\n * by the SDK implementor.\n *\n *\n * @param event The event to send to Sentry.\n * @param hint May contain additional information about the original exception.\n * @param scope A scope containing event metadata.\n * @returns A SyncPromise that resolves with the event or rejects in case event was/will not be send.\n */\n protected _processEvent(event: Event, hint: EventHint, scope?: Scope): PromiseLike {\n const { beforeSend, sampleRate } = this.getOptions();\n\n if (!this._isEnabled()) {\n return rejectedSyncPromise(new SentryError('SDK not enabled, will not capture event.'));\n }\n\n const isTransaction = event.type === 'transaction';\n // 1.0 === 100% events are sent\n // 0.0 === 0% events are sent\n // Sampling for transaction happens somewhere else\n if (!isTransaction && typeof sampleRate === 'number' && Math.random() > sampleRate) {\n this.recordDroppedEvent('sample_rate', 'error');\n return rejectedSyncPromise(\n new SentryError(\n `Discarding event because it's not included in the random sample (sampling rate = ${sampleRate})`,\n ),\n );\n }\n\n return this._prepareEvent(event, hint, scope)\n .then(prepared => {\n if (prepared === null) {\n this.recordDroppedEvent('event_processor', event.type || 'error');\n throw new SentryError('An event processor returned null, will not send event.');\n }\n\n const isInternalException = hint.data && (hint.data as { __sentry__: boolean }).__sentry__ === true;\n if (isInternalException || isTransaction || !beforeSend) {\n return prepared;\n }\n\n const beforeSendResult = beforeSend(prepared, hint);\n return _ensureBeforeSendRv(beforeSendResult);\n })\n .then(processedEvent => {\n if (processedEvent === null) {\n this.recordDroppedEvent('before_send', event.type || 'error');\n throw new SentryError('`beforeSend` returned `null`, will not send event.');\n }\n\n const session = scope && scope.getSession();\n if (!isTransaction && session) {\n this._updateSessionFromEvent(session, processedEvent);\n }\n\n this.sendEvent(processedEvent, hint);\n return processedEvent;\n })\n .then(null, reason => {\n if (reason instanceof SentryError) {\n throw reason;\n }\n\n this.captureException(reason, {\n data: {\n __sentry__: true,\n },\n originalException: reason as Error,\n });\n throw new SentryError(\n `Event processing pipeline threw an error, original event will not be sent. Details have been sent as a new event.\\nReason: ${reason}`,\n );\n });\n }\n\n /**\n * Occupies the client with processing and event\n */\n protected _process(promise: PromiseLike): void {\n this._numProcessing += 1;\n void promise.then(\n value => {\n this._numProcessing -= 1;\n return value;\n },\n reason => {\n this._numProcessing -= 1;\n return reason;\n },\n );\n }\n\n /**\n * @inheritdoc\n */\n protected _sendEnvelope(envelope: Envelope): void {\n if (this._transport && this._dsn) {\n this._transport.send(envelope).then(null, reason => {\n __DEBUG_BUILD__ && logger.error('Error while sending event:', reason);\n });\n } else {\n __DEBUG_BUILD__ && logger.error('Transport disabled');\n }\n }\n\n /**\n * Clears outcomes on this client and returns them.\n */\n protected _clearOutcomes(): Outcome[] {\n const outcomes = this._outcomes;\n this._outcomes = {};\n return Object.keys(outcomes).map(key => {\n const [reason, category] = key.split(':') as [EventDropReason, DataCategory];\n return {\n reason,\n category,\n quantity: outcomes[key],\n };\n });\n }\n\n /**\n * @inheritDoc\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/explicit-module-boundary-types\n public abstract eventFromException(_exception: any, _hint?: EventHint): PromiseLike;\n\n /**\n * @inheritDoc\n */\n public abstract eventFromMessage(\n _message: string,\n // eslint-disable-next-line deprecation/deprecation\n _level?: Severity | SeverityLevel,\n _hint?: EventHint,\n ): PromiseLike;\n}\n\n/**\n * Verifies that return value of configured `beforeSend` is of expected type.\n */\nfunction _ensureBeforeSendRv(rv: PromiseLike | Event | null): PromiseLike | Event | null {\n const nullErr = '`beforeSend` method has to return `null` or a valid event.';\n if (isThenable(rv)) {\n return rv.then(\n event => {\n if (!(isPlainObject(event) || event === null)) {\n throw new SentryError(nullErr);\n }\n return event;\n },\n e => {\n throw new SentryError(`beforeSend rejected with ${e}`);\n },\n );\n } else if (!(isPlainObject(rv) || rv === null)) {\n throw new SentryError(nullErr);\n }\n return rv;\n}\n","import { Event, EventHint, Exception, Severity, SeverityLevel, StackFrame, StackParser } from '@sentry/types';\nimport {\n addExceptionMechanism,\n addExceptionTypeValue,\n extractExceptionKeysForMessage,\n isDOMError,\n isDOMException,\n isError,\n isErrorEvent,\n isEvent,\n isPlainObject,\n normalizeToSize,\n resolvedSyncPromise,\n} from '@sentry/utils';\n\n/**\n * This function creates an exception from a JavaScript Error\n */\nexport function exceptionFromError(stackParser: StackParser, ex: Error): Exception {\n // Get the frames first since Opera can lose the stack if we touch anything else first\n const frames = parseStackFrames(stackParser, ex);\n\n const exception: Exception = {\n type: ex && ex.name,\n value: extractMessage(ex),\n };\n\n if (frames.length) {\n exception.stacktrace = { frames };\n }\n\n if (exception.type === undefined && exception.value === '') {\n exception.value = 'Unrecoverable error caught';\n }\n\n return exception;\n}\n\n/**\n * @hidden\n */\nexport function eventFromPlainObject(\n stackParser: StackParser,\n exception: Record,\n syntheticException?: Error,\n isUnhandledRejection?: boolean,\n): Event {\n const event: Event = {\n exception: {\n values: [\n {\n type: isEvent(exception) ? exception.constructor.name : isUnhandledRejection ? 'UnhandledRejection' : 'Error',\n value: `Non-Error ${\n isUnhandledRejection ? 'promise rejection' : 'exception'\n } captured with keys: ${extractExceptionKeysForMessage(exception)}`,\n },\n ],\n },\n extra: {\n __serialized__: normalizeToSize(exception),\n },\n };\n\n if (syntheticException) {\n const frames = parseStackFrames(stackParser, syntheticException);\n if (frames.length) {\n // event.exception.values[0] has been set above\n (event.exception as { values: Exception[] }).values[0].stacktrace = { frames };\n }\n }\n\n return event;\n}\n\n/**\n * @hidden\n */\nexport function eventFromError(stackParser: StackParser, ex: Error): Event {\n return {\n exception: {\n values: [exceptionFromError(stackParser, ex)],\n },\n };\n}\n\n/** Parses stack frames from an error */\nexport function parseStackFrames(\n stackParser: StackParser,\n ex: Error & { framesToPop?: number; stacktrace?: string },\n): StackFrame[] {\n // Access and store the stacktrace property before doing ANYTHING\n // else to it because Opera is not very good at providing it\n // reliably in other circumstances.\n const stacktrace = ex.stacktrace || ex.stack || '';\n\n const popSize = getPopSize(ex);\n\n try {\n return stackParser(stacktrace, popSize);\n } catch (e) {\n // no-empty\n }\n\n return [];\n}\n\n// Based on our own mapping pattern - https://github.com/getsentry/sentry/blob/9f08305e09866c8bd6d0c24f5b0aabdd7dd6c59c/src/sentry/lang/javascript/errormapping.py#L83-L108\nconst reactMinifiedRegexp = /Minified React error #\\d+;/i;\n\nfunction getPopSize(ex: Error & { framesToPop?: number }): number {\n if (ex) {\n if (typeof ex.framesToPop === 'number') {\n return ex.framesToPop;\n }\n\n if (reactMinifiedRegexp.test(ex.message)) {\n return 1;\n }\n }\n\n return 0;\n}\n\n/**\n * There are cases where stacktrace.message is an Event object\n * https://github.com/getsentry/sentry-javascript/issues/1949\n * In this specific case we try to extract stacktrace.message.error.message\n */\nfunction extractMessage(ex: Error & { message: { error?: Error } }): string {\n const message = ex && ex.message;\n if (!message) {\n return 'No error message';\n }\n if (message.error && typeof message.error.message === 'string') {\n return message.error.message;\n }\n return message;\n}\n\n/**\n * Creates an {@link Event} from all inputs to `captureException` and non-primitive inputs to `captureMessage`.\n * @hidden\n */\nexport function eventFromException(\n stackParser: StackParser,\n exception: unknown,\n hint?: EventHint,\n attachStacktrace?: boolean,\n): PromiseLike {\n const syntheticException = (hint && hint.syntheticException) || undefined;\n const event = eventFromUnknownInput(stackParser, exception, syntheticException, attachStacktrace);\n addExceptionMechanism(event); // defaults to { type: 'generic', handled: true }\n event.level = 'error';\n if (hint && hint.event_id) {\n event.event_id = hint.event_id;\n }\n return resolvedSyncPromise(event);\n}\n\n/**\n * Builds and Event from a Message\n * @hidden\n */\nexport function eventFromMessage(\n stackParser: StackParser,\n message: string,\n // eslint-disable-next-line deprecation/deprecation\n level: Severity | SeverityLevel = 'info',\n hint?: EventHint,\n attachStacktrace?: boolean,\n): PromiseLike {\n const syntheticException = (hint && hint.syntheticException) || undefined;\n const event = eventFromString(stackParser, message, syntheticException, attachStacktrace);\n event.level = level;\n if (hint && hint.event_id) {\n event.event_id = hint.event_id;\n }\n return resolvedSyncPromise(event);\n}\n\n/**\n * @hidden\n */\nexport function eventFromUnknownInput(\n stackParser: StackParser,\n exception: unknown,\n syntheticException?: Error,\n attachStacktrace?: boolean,\n isUnhandledRejection?: boolean,\n): Event {\n let event: Event;\n\n if (isErrorEvent(exception as ErrorEvent) && (exception as ErrorEvent).error) {\n // If it is an ErrorEvent with `error` property, extract it to get actual Error\n const errorEvent = exception as ErrorEvent;\n return eventFromError(stackParser, errorEvent.error as Error);\n }\n\n // If it is a `DOMError` (which is a legacy API, but still supported in some browsers) then we just extract the name\n // and message, as it doesn't provide anything else. According to the spec, all `DOMExceptions` should also be\n // `Error`s, but that's not the case in IE11, so in that case we treat it the same as we do a `DOMError`.\n //\n // https://developer.mozilla.org/en-US/docs/Web/API/DOMError\n // https://developer.mozilla.org/en-US/docs/Web/API/DOMException\n // https://webidl.spec.whatwg.org/#es-DOMException-specialness\n if (isDOMError(exception as DOMError) || isDOMException(exception as DOMException)) {\n const domException = exception as DOMException;\n\n if ('stack' in (exception as Error)) {\n event = eventFromError(stackParser, exception as Error);\n } else {\n const name = domException.name || (isDOMError(domException) ? 'DOMError' : 'DOMException');\n const message = domException.message ? `${name}: ${domException.message}` : name;\n event = eventFromString(stackParser, message, syntheticException, attachStacktrace);\n addExceptionTypeValue(event, message);\n }\n if ('code' in domException) {\n event.tags = { ...event.tags, 'DOMException.code': `${domException.code}` };\n }\n\n return event;\n }\n if (isError(exception)) {\n // we have a real Error object, do nothing\n return eventFromError(stackParser, exception);\n }\n if (isPlainObject(exception) || isEvent(exception)) {\n // If it's a plain object or an instance of `Event` (the built-in JS kind, not this SDK's `Event` type), serialize\n // it manually. This will allow us to group events based on top-level keys which is much better than creating a new\n // group on any key/value change.\n const objectException = exception as Record;\n event = eventFromPlainObject(stackParser, objectException, syntheticException, isUnhandledRejection);\n addExceptionMechanism(event, {\n synthetic: true,\n });\n return event;\n }\n\n // If none of previous checks were valid, then it means that it's not:\n // - an instance of DOMError\n // - an instance of DOMException\n // - an instance of Event\n // - an instance of Error\n // - a valid ErrorEvent (one with an error property)\n // - a plain Object\n //\n // So bail out and capture it as a simple message:\n event = eventFromString(stackParser, exception as string, syntheticException, attachStacktrace);\n addExceptionTypeValue(event, `${exception}`, undefined);\n addExceptionMechanism(event, {\n synthetic: true,\n });\n\n return event;\n}\n\n/**\n * @hidden\n */\nexport function eventFromString(\n stackParser: StackParser,\n input: string,\n syntheticException?: Error,\n attachStacktrace?: boolean,\n): Event {\n const event: Event = {\n message: input,\n };\n\n if (attachStacktrace && syntheticException) {\n const frames = parseStackFrames(stackParser, syntheticException);\n if (frames.length) {\n event.exception = {\n values: [{ value: input, stacktrace: { frames } }],\n };\n }\n }\n\n return event;\n}\n","/* eslint-disable deprecation/deprecation */\nimport { Severity, SeverityLevel } from '@sentry/types';\n\n// Note: Ideally the `SeverityLevel` type would be derived from `validSeverityLevels`, but that would mean either\n//\n// a) moving `validSeverityLevels` to `@sentry/types`,\n// b) moving the`SeverityLevel` type here, or\n// c) importing `validSeverityLevels` from here into `@sentry/types`.\n//\n// Option A would make `@sentry/types` a runtime dependency of `@sentry/utils` (not good), and options B and C would\n// create a circular dependency between `@sentry/types` and `@sentry/utils` (also not good). So a TODO accompanying the\n// type, reminding anyone who changes it to change this list also, will have to do.\n\nexport const validSeverityLevels = ['fatal', 'error', 'warning', 'log', 'info', 'debug'];\n\n/**\n * Converts a string-based level into a member of the deprecated {@link Severity} enum.\n *\n * @deprecated `severityFromString` is deprecated. Please use `severityLevelFromString` instead.\n *\n * @param level String representation of Severity\n * @returns Severity\n */\nexport function severityFromString(level: Severity | SeverityLevel | string): Severity {\n return severityLevelFromString(level) as Severity;\n}\n\n/**\n * Converts a string-based level into a `SeverityLevel`, normalizing it along the way.\n *\n * @param level String representation of desired `SeverityLevel`.\n * @returns The `SeverityLevel` corresponding to the given string, or 'log' if the string isn't a valid level.\n */\nexport function severityLevelFromString(level: SeverityLevel | string): SeverityLevel {\n return (level === 'warn' ? 'warning' : validSeverityLevels.includes(level) ? level : 'log') as SeverityLevel;\n}\n","/* eslint-disable @typescript-eslint/no-unsafe-member-access */\n/* eslint-disable max-lines */\nimport { getCurrentHub } from '@sentry/core';\nimport { Integration } from '@sentry/types';\nimport {\n addInstrumentationHandler,\n getGlobalObject,\n htmlTreeAsString,\n parseUrl,\n safeJoin,\n severityLevelFromString,\n} from '@sentry/utils';\n\n/** JSDoc */\ninterface BreadcrumbsOptions {\n console: boolean;\n dom: boolean | { serializeAttribute: string | string[] };\n fetch: boolean;\n history: boolean;\n sentry: boolean;\n xhr: boolean;\n}\n\nexport const BREADCRUMB_INTEGRATION_ID = 'Breadcrumbs';\n\n/**\n * Default Breadcrumbs instrumentations\n * TODO: Deprecated - with v6, this will be renamed to `Instrument`\n */\nexport class Breadcrumbs implements Integration {\n /**\n * @inheritDoc\n */\n public static id: string = BREADCRUMB_INTEGRATION_ID;\n\n /**\n * @inheritDoc\n */\n public name: string = Breadcrumbs.id;\n\n /**\n * Options of the breadcrumbs integration.\n */\n // This field is public, because we use it in the browser client to check if the `sentry` option is enabled.\n public readonly options: Readonly;\n\n /**\n * @inheritDoc\n */\n public constructor(options?: Partial) {\n this.options = {\n console: true,\n dom: true,\n fetch: true,\n history: true,\n sentry: true,\n xhr: true,\n ...options,\n };\n }\n\n /**\n * Instrument browser built-ins w/ breadcrumb capturing\n * - Console API\n * - DOM API (click/typing)\n * - XMLHttpRequest API\n * - Fetch API\n * - History API\n */\n public setupOnce(): void {\n if (this.options.console) {\n addInstrumentationHandler('console', _consoleBreadcrumb);\n }\n if (this.options.dom) {\n addInstrumentationHandler('dom', _domBreadcrumb(this.options.dom));\n }\n if (this.options.xhr) {\n addInstrumentationHandler('xhr', _xhrBreadcrumb);\n }\n if (this.options.fetch) {\n addInstrumentationHandler('fetch', _fetchBreadcrumb);\n }\n if (this.options.history) {\n addInstrumentationHandler('history', _historyBreadcrumb);\n }\n }\n}\n\n/**\n * A HOC that creaes a function that creates breadcrumbs from DOM API calls.\n * This is a HOC so that we get access to dom options in the closure.\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction _domBreadcrumb(dom: BreadcrumbsOptions['dom']): (handlerData: { [key: string]: any }) => void {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n function _innerDomBreadcrumb(handlerData: { [key: string]: any }): void {\n let target;\n let keyAttrs = typeof dom === 'object' ? dom.serializeAttribute : undefined;\n\n if (typeof keyAttrs === 'string') {\n keyAttrs = [keyAttrs];\n }\n\n // Accessing event.target can throw (see getsentry/raven-js#838, #768)\n try {\n target = handlerData.event.target\n ? htmlTreeAsString(handlerData.event.target as Node, keyAttrs)\n : htmlTreeAsString(handlerData.event as unknown as Node, keyAttrs);\n } catch (e) {\n target = '';\n }\n\n if (target.length === 0) {\n return;\n }\n\n getCurrentHub().addBreadcrumb(\n {\n category: `ui.${handlerData.name}`,\n message: target,\n },\n {\n event: handlerData.event,\n name: handlerData.name,\n global: handlerData.global,\n },\n );\n }\n\n return _innerDomBreadcrumb;\n}\n\n/**\n * Creates breadcrumbs from console API calls\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction _consoleBreadcrumb(handlerData: { [key: string]: any }): void {\n const breadcrumb = {\n category: 'console',\n data: {\n arguments: handlerData.args,\n logger: 'console',\n },\n level: severityLevelFromString(handlerData.level),\n message: safeJoin(handlerData.args, ' '),\n };\n\n if (handlerData.level === 'assert') {\n if (handlerData.args[0] === false) {\n breadcrumb.message = `Assertion failed: ${safeJoin(handlerData.args.slice(1), ' ') || 'console.assert'}`;\n breadcrumb.data.arguments = handlerData.args.slice(1);\n } else {\n // Don't capture a breadcrumb for passed assertions\n return;\n }\n }\n\n getCurrentHub().addBreadcrumb(breadcrumb, {\n input: handlerData.args,\n level: handlerData.level,\n });\n}\n\n/**\n * Creates breadcrumbs from XHR API calls\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction _xhrBreadcrumb(handlerData: { [key: string]: any }): void {\n if (handlerData.endTimestamp) {\n // We only capture complete, non-sentry requests\n if (handlerData.xhr.__sentry_own_request__) {\n return;\n }\n\n const { method, url, status_code, body } = handlerData.xhr.__sentry_xhr__ || {};\n\n getCurrentHub().addBreadcrumb(\n {\n category: 'xhr',\n data: {\n method,\n url,\n status_code,\n },\n type: 'http',\n },\n {\n xhr: handlerData.xhr,\n input: body,\n },\n );\n\n return;\n }\n}\n\n/**\n * Creates breadcrumbs from fetch API calls\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction _fetchBreadcrumb(handlerData: { [key: string]: any }): void {\n // We only capture complete fetch requests\n if (!handlerData.endTimestamp) {\n return;\n }\n\n if (handlerData.fetchData.url.match(/sentry_key/) && handlerData.fetchData.method === 'POST') {\n // We will not create breadcrumbs for fetch requests that contain `sentry_key` (internal sentry requests)\n return;\n }\n\n if (handlerData.error) {\n getCurrentHub().addBreadcrumb(\n {\n category: 'fetch',\n data: handlerData.fetchData,\n level: 'error',\n type: 'http',\n },\n {\n data: handlerData.error,\n input: handlerData.args,\n },\n );\n } else {\n getCurrentHub().addBreadcrumb(\n {\n category: 'fetch',\n data: {\n ...handlerData.fetchData,\n status_code: handlerData.response.status,\n },\n type: 'http',\n },\n {\n input: handlerData.args,\n response: handlerData.response,\n },\n );\n }\n}\n\n/**\n * Creates breadcrumbs from history API calls\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction _historyBreadcrumb(handlerData: { [key: string]: any }): void {\n const global = getGlobalObject();\n let from = handlerData.from;\n let to = handlerData.to;\n const parsedLoc = parseUrl(global.location.href);\n let parsedFrom = parseUrl(from);\n const parsedTo = parseUrl(to);\n\n // Initial pushState doesn't provide `from` information\n if (!parsedFrom.path) {\n parsedFrom = parsedLoc;\n }\n\n // Use only the path component of the URL if the URL matches the current\n // document (almost all the time when using pushState)\n if (parsedLoc.protocol === parsedTo.protocol && parsedLoc.host === parsedTo.host) {\n to = parsedTo.relative;\n }\n if (parsedLoc.protocol === parsedFrom.protocol && parsedLoc.host === parsedFrom.host) {\n from = parsedFrom.relative;\n }\n\n getCurrentHub().addBreadcrumb({\n category: 'navigation',\n data: {\n from,\n to,\n },\n });\n}\n","import { getGlobalObject, isNativeFetch, logger, supportsFetch } from '@sentry/utils';\n\nconst global = getGlobalObject();\nlet cachedFetchImpl: FetchImpl;\n\nexport type FetchImpl = typeof fetch;\n\n/**\n * A special usecase for incorrectly wrapped Fetch APIs in conjunction with ad-blockers.\n * Whenever someone wraps the Fetch API and returns the wrong promise chain,\n * this chain becomes orphaned and there is no possible way to capture it's rejections\n * other than allowing it bubble up to this very handler. eg.\n *\n * const f = window.fetch;\n * window.fetch = function () {\n * const p = f.apply(this, arguments);\n *\n * p.then(function() {\n * console.log('hi.');\n * });\n *\n * return p;\n * }\n *\n * `p.then(function () { ... })` is producing a completely separate promise chain,\n * however, what's returned is `p` - the result of original `fetch` call.\n *\n * This mean, that whenever we use the Fetch API to send our own requests, _and_\n * some ad-blocker blocks it, this orphaned chain will _always_ reject,\n * effectively causing another event to be captured.\n * This makes a whole process become an infinite loop, which we need to somehow\n * deal with, and break it in one way or another.\n *\n * To deal with this issue, we are making sure that we _always_ use the real\n * browser Fetch API, instead of relying on what `window.fetch` exposes.\n * The only downside to this would be missing our own requests as breadcrumbs,\n * but because we are already not doing this, it should be just fine.\n *\n * Possible failed fetch error messages per-browser:\n *\n * Chrome: Failed to fetch\n * Edge: Failed to Fetch\n * Firefox: NetworkError when attempting to fetch resource\n * Safari: resource blocked by content blocker\n */\nexport function getNativeFetchImplementation(): FetchImpl {\n if (cachedFetchImpl) {\n return cachedFetchImpl;\n }\n\n /* eslint-disable @typescript-eslint/unbound-method */\n\n // Fast path to avoid DOM I/O\n if (isNativeFetch(global.fetch)) {\n return (cachedFetchImpl = global.fetch.bind(global));\n }\n\n const document = global.document;\n let fetchImpl = global.fetch;\n // eslint-disable-next-line deprecation/deprecation\n if (document && typeof document.createElement === 'function') {\n try {\n const sandbox = document.createElement('iframe');\n sandbox.hidden = true;\n document.head.appendChild(sandbox);\n const contentWindow = sandbox.contentWindow;\n if (contentWindow && contentWindow.fetch) {\n fetchImpl = contentWindow.fetch;\n }\n document.head.removeChild(sandbox);\n } catch (e) {\n __DEBUG_BUILD__ &&\n logger.warn('Could not create sandbox iframe for pure fetch check, bailing to window.fetch: ', e);\n }\n }\n\n return (cachedFetchImpl = fetchImpl.bind(global));\n /* eslint-enable @typescript-eslint/unbound-method */\n}\n\n/**\n * Sends sdk client report using sendBeacon or fetch as a fallback if available\n *\n * @param url report endpoint\n * @param body report payload\n */\nexport function sendReport(url: string, body: string | Uint8Array): void {\n const isRealNavigator = Object.prototype.toString.call(global && global.navigator) === '[object Navigator]';\n const hasSendBeacon = isRealNavigator && typeof global.navigator.sendBeacon === 'function';\n\n if (hasSendBeacon) {\n // Prevent illegal invocations - https://xgwang.me/posts/you-may-not-know-beacon/#it-may-throw-error%2C-be-sure-to-catch\n const sendBeacon = global.navigator.sendBeacon.bind(global.navigator);\n sendBeacon(url, body);\n } else if (supportsFetch()) {\n const fetch = getNativeFetchImplementation();\n fetch(url, {\n body,\n method: 'POST',\n credentials: 'omit',\n keepalive: true,\n }).then(null, error => {\n __DEBUG_BUILD__ && logger.error(error);\n });\n }\n}\n","import { BaseClient, getCurrentHub, getEnvelopeEndpointWithUrlEncodedAuth, Scope, SDK_VERSION } from '@sentry/core';\nimport { ClientOptions, Event, EventHint, Options, Severity, SeverityLevel } from '@sentry/types';\nimport {\n createClientReportEnvelope,\n dsnToString,\n getEventDescription,\n getGlobalObject,\n logger,\n serializeEnvelope,\n} from '@sentry/utils';\n\nimport { eventFromException, eventFromMessage } from './eventbuilder';\nimport { Breadcrumbs } from './integrations';\nimport { BREADCRUMB_INTEGRATION_ID } from './integrations/breadcrumbs';\nimport { BrowserTransportOptions } from './transports/types';\nimport { sendReport } from './transports/utils';\n\nconst globalObject = getGlobalObject();\n\nexport interface BaseBrowserOptions {\n /**\n * A pattern for error URLs which should exclusively be sent to Sentry.\n * This is the opposite of {@link Options.denyUrls}.\n * By default, all errors will be sent.\n */\n allowUrls?: Array;\n\n /**\n * A pattern for error URLs which should not be sent to Sentry.\n * To allow certain errors instead, use {@link Options.allowUrls}.\n * By default, all errors will be sent.\n */\n denyUrls?: Array;\n}\n\n/**\n * Configuration options for the Sentry Browser SDK.\n * @see @sentry/types Options for more information.\n */\nexport interface BrowserOptions extends Options, BaseBrowserOptions {}\n\n/**\n * Configuration options for the Sentry Browser SDK Client class\n * @see BrowserClient for more information.\n */\nexport interface BrowserClientOptions extends ClientOptions, BaseBrowserOptions {}\n\n/**\n * The Sentry Browser SDK Client.\n *\n * @see BrowserOptions for documentation on configuration options.\n * @see SentryClient for usage documentation.\n */\nexport class BrowserClient extends BaseClient {\n /**\n * Creates a new Browser SDK instance.\n *\n * @param options Configuration options for this SDK.\n */\n public constructor(options: BrowserClientOptions) {\n options._metadata = options._metadata || {};\n options._metadata.sdk = options._metadata.sdk || {\n name: 'sentry.javascript.browser',\n packages: [\n {\n name: 'npm:@sentry/browser',\n version: SDK_VERSION,\n },\n ],\n version: SDK_VERSION,\n };\n\n super(options);\n\n if (options.sendClientReports && globalObject.document) {\n globalObject.document.addEventListener('visibilitychange', () => {\n if (globalObject.document.visibilityState === 'hidden') {\n this._flushOutcomes();\n }\n });\n }\n }\n\n /**\n * @inheritDoc\n */\n public eventFromException(exception: unknown, hint?: EventHint): PromiseLike {\n return eventFromException(this._options.stackParser, exception, hint, this._options.attachStacktrace);\n }\n\n /**\n * @inheritDoc\n */\n public eventFromMessage(\n message: string,\n // eslint-disable-next-line deprecation/deprecation\n level: Severity | SeverityLevel = 'info',\n hint?: EventHint,\n ): PromiseLike {\n return eventFromMessage(this._options.stackParser, message, level, hint, this._options.attachStacktrace);\n }\n\n /**\n * @inheritDoc\n */\n public sendEvent(event: Event, hint?: EventHint): void {\n // We only want to add the sentry event breadcrumb when the user has the breadcrumb integration installed and\n // activated its `sentry` option.\n // We also do not want to use the `Breadcrumbs` class here directly, because we do not want it to be included in\n // bundles, if it is not used by the SDK.\n // This all sadly is a bit ugly, but we currently don't have a \"pre-send\" hook on the integrations so we do it this\n // way for now.\n const breadcrumbIntegration = this.getIntegrationById(BREADCRUMB_INTEGRATION_ID) as Breadcrumbs | null;\n if (\n breadcrumbIntegration &&\n // We check for definedness of `options`, even though it is not strictly necessary, because that access to\n // `.sentry` below does not throw, in case users provided their own integration with id \"Breadcrumbs\" that does\n // not have an`options` field\n breadcrumbIntegration.options &&\n breadcrumbIntegration.options.sentry\n ) {\n getCurrentHub().addBreadcrumb(\n {\n category: `sentry.${event.type === 'transaction' ? 'transaction' : 'event'}`,\n event_id: event.event_id,\n level: event.level,\n message: getEventDescription(event),\n },\n {\n event,\n },\n );\n }\n\n super.sendEvent(event, hint);\n }\n\n /**\n * @inheritDoc\n */\n protected _prepareEvent(event: Event, hint: EventHint, scope?: Scope): PromiseLike {\n event.platform = event.platform || 'javascript';\n return super._prepareEvent(event, hint, scope);\n }\n\n /**\n * Sends client reports as an envelope.\n */\n private _flushOutcomes(): void {\n const outcomes = this._clearOutcomes();\n\n if (outcomes.length === 0) {\n __DEBUG_BUILD__ && logger.log('No outcomes to send');\n return;\n }\n\n if (!this._dsn) {\n __DEBUG_BUILD__ && logger.log('No dsn provided, will not send outcomes');\n return;\n }\n\n __DEBUG_BUILD__ && logger.log('Sending outcomes:', outcomes);\n\n const url = getEnvelopeEndpointWithUrlEncodedAuth(this._dsn, this._options.tunnel);\n const envelope = createClientReportEnvelope(outcomes, this._options.tunnel && dsnToString(this._dsn));\n\n try {\n sendReport(url, serializeEnvelope(envelope));\n } catch (e) {\n __DEBUG_BUILD__ && logger.error(e);\n }\n }\n}\n","import { ClientReport, ClientReportEnvelope, ClientReportItem } from '@sentry/types';\n\nimport { createEnvelope } from './envelope';\nimport { dateTimestampInSeconds } from './time';\n\n/**\n * Creates client report envelope\n * @param discarded_events An array of discard events\n * @param dsn A DSN that can be set on the header. Optional.\n */\nexport function createClientReportEnvelope(\n discarded_events: ClientReport['discarded_events'],\n dsn?: string,\n timestamp?: number,\n): ClientReportEnvelope {\n const clientReportItem: ClientReportItem = [\n { type: 'client_report' },\n {\n timestamp: timestamp || dateTimestampInSeconds(),\n discarded_events,\n },\n ];\n return createEnvelope(dsn ? { dsn } : {}, [clientReportItem]);\n}\n","import { StackFrame, StackLineParser, StackLineParserFn } from '@sentry/types';\nimport { createStackParser } from '@sentry/utils';\n\n// global reference to slice\nconst UNKNOWN_FUNCTION = '?';\n\nconst OPERA10_PRIORITY = 10;\nconst OPERA11_PRIORITY = 20;\nconst CHROME_PRIORITY = 30;\nconst WINJS_PRIORITY = 40;\nconst GECKO_PRIORITY = 50;\n\nfunction createFrame(filename: string, func: string, lineno?: number, colno?: number): StackFrame {\n const frame: StackFrame = {\n filename,\n function: func,\n // All browser frames are considered in_app\n in_app: true,\n };\n\n if (lineno !== undefined) {\n frame.lineno = lineno;\n }\n\n if (colno !== undefined) {\n frame.colno = colno;\n }\n\n return frame;\n}\n\n// Chromium based browsers: Chrome, Brave, new Opera, new Edge\nconst chromeRegex =\n /^\\s*at (?:(.*?) ?\\((?:address at )?)?((?:file|https?|blob|chrome-extension|address|native|eval|webpack||[-a-z]+:|.*bundle|\\/).*?)(?::(\\d+))?(?::(\\d+))?\\)?\\s*$/i;\nconst chromeEvalRegex = /\\((\\S*)(?::(\\d+))(?::(\\d+))\\)/;\n\nconst chrome: StackLineParserFn = line => {\n const parts = chromeRegex.exec(line);\n\n if (parts) {\n const isEval = parts[2] && parts[2].indexOf('eval') === 0; // start of line\n\n if (isEval) {\n const subMatch = chromeEvalRegex.exec(parts[2]);\n\n if (subMatch) {\n // throw out eval line/column and use top-most line/column number\n parts[2] = subMatch[1]; // url\n parts[3] = subMatch[2]; // line\n parts[4] = subMatch[3]; // column\n }\n }\n\n // Kamil: One more hack won't hurt us right? Understanding and adding more rules on top of these regexps right now\n // would be way too time consuming. (TODO: Rewrite whole RegExp to be more readable)\n const [func, filename] = extractSafariExtensionDetails(parts[1] || UNKNOWN_FUNCTION, parts[2]);\n\n return createFrame(filename, func, parts[3] ? +parts[3] : undefined, parts[4] ? +parts[4] : undefined);\n }\n\n return;\n};\n\nexport const chromeStackLineParser: StackLineParser = [CHROME_PRIORITY, chrome];\n\n// gecko regex: `(?:bundle|\\d+\\.js)`: `bundle` is for react native, `\\d+\\.js` also but specifically for ram bundles because it\n// generates filenames without a prefix like `file://` the filenames in the stacktrace are just 42.js\n// We need this specific case for now because we want no other regex to match.\nconst geckoREgex =\n /^\\s*(.*?)(?:\\((.*?)\\))?(?:^|@)?((?:file|https?|blob|chrome|webpack|resource|moz-extension|capacitor).*?:\\/.*?|\\[native code\\]|[^@]*(?:bundle|\\d+\\.js)|\\/[\\w\\-. /=]+)(?::(\\d+))?(?::(\\d+))?\\s*$/i;\nconst geckoEvalRegex = /(\\S+) line (\\d+)(?: > eval line \\d+)* > eval/i;\n\nconst gecko: StackLineParserFn = line => {\n const parts = geckoREgex.exec(line);\n\n if (parts) {\n const isEval = parts[3] && parts[3].indexOf(' > eval') > -1;\n if (isEval) {\n const subMatch = geckoEvalRegex.exec(parts[3]);\n\n if (subMatch) {\n // throw out eval line/column and use top-most line number\n parts[1] = parts[1] || 'eval';\n parts[3] = subMatch[1];\n parts[4] = subMatch[2];\n parts[5] = ''; // no column when eval\n }\n }\n\n let filename = parts[3];\n let func = parts[1] || UNKNOWN_FUNCTION;\n [func, filename] = extractSafariExtensionDetails(func, filename);\n\n return createFrame(filename, func, parts[4] ? +parts[4] : undefined, parts[5] ? +parts[5] : undefined);\n }\n\n return;\n};\n\nexport const geckoStackLineParser: StackLineParser = [GECKO_PRIORITY, gecko];\n\nconst winjsRegex =\n /^\\s*at (?:((?:\\[object object\\])?.+) )?\\(?((?:file|ms-appx|https?|webpack|blob):.*?):(\\d+)(?::(\\d+))?\\)?\\s*$/i;\n\nconst winjs: StackLineParserFn = line => {\n const parts = winjsRegex.exec(line);\n\n return parts\n ? createFrame(parts[2], parts[1] || UNKNOWN_FUNCTION, +parts[3], parts[4] ? +parts[4] : undefined)\n : undefined;\n};\n\nexport const winjsStackLineParser: StackLineParser = [WINJS_PRIORITY, winjs];\n\nconst opera10Regex = / line (\\d+).*script (?:in )?(\\S+)(?:: in function (\\S+))?$/i;\n\nconst opera10: StackLineParserFn = line => {\n const parts = opera10Regex.exec(line);\n return parts ? createFrame(parts[2], parts[3] || UNKNOWN_FUNCTION, +parts[1]) : undefined;\n};\n\nexport const opera10StackLineParser: StackLineParser = [OPERA10_PRIORITY, opera10];\n\nconst opera11Regex =\n / line (\\d+), column (\\d+)\\s*(?:in (?:]+)>|([^)]+))\\(.*\\))? in (.*):\\s*$/i;\n\nconst opera11: StackLineParserFn = line => {\n const parts = opera11Regex.exec(line);\n return parts ? createFrame(parts[5], parts[3] || parts[4] || UNKNOWN_FUNCTION, +parts[1], +parts[2]) : undefined;\n};\n\nexport const opera11StackLineParser: StackLineParser = [OPERA11_PRIORITY, opera11];\n\nexport const defaultStackLineParsers = [chromeStackLineParser, geckoStackLineParser, winjsStackLineParser];\n\nexport const defaultStackParser = createStackParser(...defaultStackLineParsers);\n\n/**\n * Safari web extensions, starting version unknown, can produce \"frames-only\" stacktraces.\n * What it means, is that instead of format like:\n *\n * Error: wat\n * at function@url:row:col\n * at function@url:row:col\n * at function@url:row:col\n *\n * it produces something like:\n *\n * function@url:row:col\n * function@url:row:col\n * function@url:row:col\n *\n * Because of that, it won't be captured by `chrome` RegExp and will fall into `Gecko` branch.\n * This function is extracted so that we can use it in both places without duplicating the logic.\n * Unfortunately \"just\" changing RegExp is too complicated now and making it pass all tests\n * and fix this case seems like an impossible, or at least way too time-consuming task.\n */\nconst extractSafariExtensionDetails = (func: string, filename: string): [string, string] => {\n const isSafariExtension = func.indexOf('safari-extension') !== -1;\n const isSafariWebExtension = func.indexOf('safari-web-extension') !== -1;\n\n return isSafariExtension || isSafariWebExtension\n ? [\n func.indexOf('@') !== -1 ? func.split('@')[0] : UNKNOWN_FUNCTION,\n isSafariExtension ? `safari-extension:${filename}` : `safari-web-extension:${filename}`,\n ]\n : [func, filename];\n};\n","import {\n Breadcrumb,\n CaptureContext,\n CustomSamplingContext,\n Event,\n EventHint,\n Extra,\n Extras,\n Primitive,\n Severity,\n SeverityLevel,\n TransactionContext,\n User,\n} from '@sentry/types';\n\nimport { getCurrentHub, Hub } from './hub';\nimport { Scope } from './scope';\n\n// Note: All functions in this file are typed with a return value of `ReturnType`,\n// where HUB_FUNCTION is some method on the Hub class.\n//\n// This is done to make sure the top level SDK methods stay in sync with the hub methods.\n// Although every method here has an explicit return type, some of them (that map to void returns) do not\n// contain `return` keywords. This is done to save on bundle size, as `return` is not minifiable.\n\n/**\n * Captures an exception event and sends it to Sentry.\n *\n * @param exception An exception-like object.\n * @param captureContext Additional scope data to apply to exception event.\n * @returns The generated eventId.\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/explicit-module-boundary-types\nexport function captureException(exception: any, captureContext?: CaptureContext): ReturnType {\n return getCurrentHub().captureException(exception, { captureContext });\n}\n\n/**\n * Captures a message event and sends it to Sentry.\n *\n * @param message The message to send to Sentry.\n * @param Severity Define the level of the message.\n * @returns The generated eventId.\n */\nexport function captureMessage(\n message: string,\n // eslint-disable-next-line deprecation/deprecation\n captureContext?: CaptureContext | Severity | SeverityLevel,\n): ReturnType {\n // This is necessary to provide explicit scopes upgrade, without changing the original\n // arity of the `captureMessage(message, level)` method.\n const level = typeof captureContext === 'string' ? captureContext : undefined;\n const context = typeof captureContext !== 'string' ? { captureContext } : undefined;\n return getCurrentHub().captureMessage(message, level, context);\n}\n\n/**\n * Captures a manually created event and sends it to Sentry.\n *\n * @param event The event to send to Sentry.\n * @returns The generated eventId.\n */\nexport function captureEvent(event: Event, hint?: EventHint): ReturnType {\n return getCurrentHub().captureEvent(event, hint);\n}\n\n/**\n * Callback to set context information onto the scope.\n * @param callback Callback function that receives Scope.\n */\nexport function configureScope(callback: (scope: Scope) => void): ReturnType {\n getCurrentHub().configureScope(callback);\n}\n\n/**\n * Records a new breadcrumb which will be attached to future events.\n *\n * Breadcrumbs will be added to subsequent events to provide more context on\n * user's actions prior to an error or crash.\n *\n * @param breadcrumb The breadcrumb to record.\n */\nexport function addBreadcrumb(breadcrumb: Breadcrumb): ReturnType {\n getCurrentHub().addBreadcrumb(breadcrumb);\n}\n\n/**\n * Sets context data with the given name.\n * @param name of the context\n * @param context Any kind of data. This data will be normalized.\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function setContext(name: string, context: { [key: string]: any } | null): ReturnType {\n getCurrentHub().setContext(name, context);\n}\n\n/**\n * Set an object that will be merged sent as extra data with the event.\n * @param extras Extras object to merge into current context.\n */\nexport function setExtras(extras: Extras): ReturnType {\n getCurrentHub().setExtras(extras);\n}\n\n/**\n * Set key:value that will be sent as extra data with the event.\n * @param key String of extra\n * @param extra Any kind of data. This data will be normalized.\n */\nexport function setExtra(key: string, extra: Extra): ReturnType {\n getCurrentHub().setExtra(key, extra);\n}\n\n/**\n * Set an object that will be merged sent as tags data with the event.\n * @param tags Tags context object to merge into current context.\n */\nexport function setTags(tags: { [key: string]: Primitive }): ReturnType {\n getCurrentHub().setTags(tags);\n}\n\n/**\n * Set key:value that will be sent as tags data with the event.\n *\n * Can also be used to unset a tag, by passing `undefined`.\n *\n * @param key String key of tag\n * @param value Value of tag\n */\nexport function setTag(key: string, value: Primitive): ReturnType {\n getCurrentHub().setTag(key, value);\n}\n\n/**\n * Updates user context information for future events.\n *\n * @param user User context object to be set in the current context. Pass `null` to unset the user.\n */\nexport function setUser(user: User | null): ReturnType {\n getCurrentHub().setUser(user);\n}\n\n/**\n * Creates a new scope with and executes the given operation within.\n * The scope is automatically removed once the operation\n * finishes or throws.\n *\n * This is essentially a convenience function for:\n *\n * pushScope();\n * callback();\n * popScope();\n *\n * @param callback that will be enclosed into push/popScope.\n */\nexport function withScope(callback: (scope: Scope) => void): ReturnType {\n getCurrentHub().withScope(callback);\n}\n\n/**\n * Starts a new `Transaction` and returns it. This is the entry point to manual tracing instrumentation.\n *\n * A tree structure can be built by adding child spans to the transaction, and child spans to other spans. To start a\n * new child span within the transaction or any span, call the respective `.startChild()` method.\n *\n * Every child span must be finished before the transaction is finished, otherwise the unfinished spans are discarded.\n *\n * The transaction must be finished with a call to its `.finish()` method, at which point the transaction with all its\n * finished child spans will be sent to Sentry.\n *\n * @param context Properties of the new `Transaction`.\n * @param customSamplingContext Information given to the transaction sampling function (along with context-dependent\n * default values). See {@link Options.tracesSampler}.\n *\n * @returns The transaction which was just started\n */\nexport function startTransaction(\n context: TransactionContext,\n customSamplingContext?: CustomSamplingContext,\n): ReturnType {\n return getCurrentHub().startTransaction({ ...context }, customSamplingContext);\n}\n","import { captureException, withScope } from '@sentry/core';\nimport { DsnLike, Event as SentryEvent, Mechanism, Scope, WrappedFunction } from '@sentry/types';\nimport {\n addExceptionMechanism,\n addExceptionTypeValue,\n addNonEnumerableProperty,\n getOriginalFunction,\n markFunctionWrapped,\n} from '@sentry/utils';\n\nlet ignoreOnError: number = 0;\n\n/**\n * @hidden\n */\nexport function shouldIgnoreOnError(): boolean {\n return ignoreOnError > 0;\n}\n\n/**\n * @hidden\n */\nexport function ignoreNextOnError(): void {\n // onerror should trigger before setTimeout\n ignoreOnError += 1;\n setTimeout(() => {\n ignoreOnError -= 1;\n });\n}\n\n/**\n * Instruments the given function and sends an event to Sentry every time the\n * function throws an exception.\n *\n * @param fn A function to wrap. It is generally safe to pass an unbound function, because the returned wrapper always\n * has a correct `this` context.\n * @returns The wrapped function.\n * @hidden\n */\nexport function wrap(\n fn: WrappedFunction,\n options: {\n mechanism?: Mechanism;\n } = {},\n before?: WrappedFunction,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n): any {\n // for future readers what this does is wrap a function and then create\n // a bi-directional wrapping between them.\n //\n // example: wrapped = wrap(original);\n // original.__sentry_wrapped__ -> wrapped\n // wrapped.__sentry_original__ -> original\n\n if (typeof fn !== 'function') {\n return fn;\n }\n\n try {\n // if we're dealing with a function that was previously wrapped, return\n // the original wrapper.\n const wrapper = fn.__sentry_wrapped__;\n if (wrapper) {\n return wrapper;\n }\n\n // We don't wanna wrap it twice\n if (getOriginalFunction(fn)) {\n return fn;\n }\n } catch (e) {\n // Just accessing custom props in some Selenium environments\n // can cause a \"Permission denied\" exception (see raven-js#495).\n // Bail on wrapping and return the function as-is (defers to window.onerror).\n return fn;\n }\n\n /* eslint-disable prefer-rest-params */\n // It is important that `sentryWrapped` is not an arrow function to preserve the context of `this`\n const sentryWrapped: WrappedFunction = function (this: unknown): void {\n const args = Array.prototype.slice.call(arguments);\n\n try {\n if (before && typeof before === 'function') {\n before.apply(this, arguments);\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/no-unsafe-member-access\n const wrappedArguments = args.map((arg: any) => wrap(arg, options));\n\n // Attempt to invoke user-land function\n // NOTE: If you are a Sentry user, and you are seeing this stack frame, it\n // means the sentry.javascript SDK caught an error invoking your application code. This\n // is expected behavior and NOT indicative of a bug with sentry.javascript.\n return fn.apply(this, wrappedArguments);\n } catch (ex) {\n ignoreNextOnError();\n\n withScope((scope: Scope) => {\n scope.addEventProcessor((event: SentryEvent) => {\n if (options.mechanism) {\n addExceptionTypeValue(event, undefined, undefined);\n addExceptionMechanism(event, options.mechanism);\n }\n\n event.extra = {\n ...event.extra,\n arguments: args,\n };\n\n return event;\n });\n\n captureException(ex);\n });\n\n throw ex;\n }\n };\n /* eslint-enable prefer-rest-params */\n\n // Accessing some objects may throw\n // ref: https://github.com/getsentry/sentry-javascript/issues/1168\n try {\n for (const property in fn) {\n if (Object.prototype.hasOwnProperty.call(fn, property)) {\n sentryWrapped[property] = fn[property];\n }\n }\n } catch (_oO) {} // eslint-disable-line no-empty\n\n // Signal that this function has been wrapped/filled already\n // for both debugging and to prevent it to being wrapped/filled twice\n markFunctionWrapped(sentryWrapped, fn);\n\n addNonEnumerableProperty(fn, '__sentry_wrapped__', sentryWrapped);\n\n // Restore original function name (not all browsers allow that)\n try {\n const descriptor = Object.getOwnPropertyDescriptor(sentryWrapped, 'name') as PropertyDescriptor;\n if (descriptor.configurable) {\n Object.defineProperty(sentryWrapped, 'name', {\n get(): string {\n return fn.name;\n },\n });\n }\n // eslint-disable-next-line no-empty\n } catch (_oO) {}\n\n return sentryWrapped;\n}\n\n/**\n * All properties the report dialog supports\n */\nexport interface ReportDialogOptions {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n [key: string]: any;\n eventId?: string;\n dsn?: DsnLike;\n user?: {\n email?: string;\n name?: string;\n };\n lang?: string;\n title?: string;\n subtitle?: string;\n subtitle2?: string;\n labelName?: string;\n labelEmail?: string;\n labelComments?: string;\n labelClose?: string;\n labelSubmit?: string;\n errorGeneric?: string;\n errorFormEntry?: string;\n successMessage?: string;\n /** Callback after reportDialog showed up */\n onLoad?(): void;\n}\n","import { Integration, WrappedFunction } from '@sentry/types';\nimport { fill, getFunctionName, getGlobalObject, getOriginalFunction } from '@sentry/utils';\n\nimport { wrap } from '../helpers';\n\nconst DEFAULT_EVENT_TARGET = [\n 'EventTarget',\n 'Window',\n 'Node',\n 'ApplicationCache',\n 'AudioTrackList',\n 'ChannelMergerNode',\n 'CryptoOperation',\n 'EventSource',\n 'FileReader',\n 'HTMLUnknownElement',\n 'IDBDatabase',\n 'IDBRequest',\n 'IDBTransaction',\n 'KeyOperation',\n 'MediaController',\n 'MessagePort',\n 'ModalWindow',\n 'Notification',\n 'SVGElementInstance',\n 'Screen',\n 'TextTrack',\n 'TextTrackCue',\n 'TextTrackList',\n 'WebSocket',\n 'WebSocketWorker',\n 'Worker',\n 'XMLHttpRequest',\n 'XMLHttpRequestEventTarget',\n 'XMLHttpRequestUpload',\n];\n\ntype XMLHttpRequestProp = 'onload' | 'onerror' | 'onprogress' | 'onreadystatechange';\n\n/** JSDoc */\ninterface TryCatchOptions {\n setTimeout: boolean;\n setInterval: boolean;\n requestAnimationFrame: boolean;\n XMLHttpRequest: boolean;\n eventTarget: boolean | string[];\n}\n\n/** Wrap timer functions and event targets to catch errors and provide better meta data */\nexport class TryCatch implements Integration {\n /**\n * @inheritDoc\n */\n public static id: string = 'TryCatch';\n\n /**\n * @inheritDoc\n */\n public name: string = TryCatch.id;\n\n /** JSDoc */\n private readonly _options: TryCatchOptions;\n\n /**\n * @inheritDoc\n */\n public constructor(options?: Partial) {\n this._options = {\n XMLHttpRequest: true,\n eventTarget: true,\n requestAnimationFrame: true,\n setInterval: true,\n setTimeout: true,\n ...options,\n };\n }\n\n /**\n * Wrap timer functions and event targets to catch errors\n * and provide better metadata.\n */\n public setupOnce(): void {\n const global = getGlobalObject();\n\n if (this._options.setTimeout) {\n fill(global, 'setTimeout', _wrapTimeFunction);\n }\n\n if (this._options.setInterval) {\n fill(global, 'setInterval', _wrapTimeFunction);\n }\n\n if (this._options.requestAnimationFrame) {\n fill(global, 'requestAnimationFrame', _wrapRAF);\n }\n\n if (this._options.XMLHttpRequest && 'XMLHttpRequest' in global) {\n fill(XMLHttpRequest.prototype, 'send', _wrapXHR);\n }\n\n const eventTargetOption = this._options.eventTarget;\n if (eventTargetOption) {\n const eventTarget = Array.isArray(eventTargetOption) ? eventTargetOption : DEFAULT_EVENT_TARGET;\n eventTarget.forEach(_wrapEventTarget);\n }\n }\n}\n\n/** JSDoc */\nfunction _wrapTimeFunction(original: () => void): () => number {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return function (this: any, ...args: any[]): number {\n const originalCallback = args[0];\n args[0] = wrap(originalCallback, {\n mechanism: {\n data: { function: getFunctionName(original) },\n handled: true,\n type: 'instrument',\n },\n });\n return original.apply(this, args);\n };\n}\n\n/** JSDoc */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction _wrapRAF(original: any): (callback: () => void) => any {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return function (this: any, callback: () => void): () => void {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n return original.apply(this, [\n wrap(callback, {\n mechanism: {\n data: {\n function: 'requestAnimationFrame',\n handler: getFunctionName(original),\n },\n handled: true,\n type: 'instrument',\n },\n }),\n ]);\n };\n}\n\n/** JSDoc */\nfunction _wrapXHR(originalSend: () => void): () => void {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return function (this: XMLHttpRequest, ...args: any[]): void {\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n const xhr = this;\n const xmlHttpRequestProps: XMLHttpRequestProp[] = ['onload', 'onerror', 'onprogress', 'onreadystatechange'];\n\n xmlHttpRequestProps.forEach(prop => {\n if (prop in xhr && typeof xhr[prop] === 'function') {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n fill(xhr, prop, function (original: WrappedFunction): () => any {\n const wrapOptions = {\n mechanism: {\n data: {\n function: prop,\n handler: getFunctionName(original),\n },\n handled: true,\n type: 'instrument',\n },\n };\n\n // If Instrument integration has been called before TryCatch, get the name of original function\n const originalFunction = getOriginalFunction(original);\n if (originalFunction) {\n wrapOptions.mechanism.data.handler = getFunctionName(originalFunction);\n }\n\n // Otherwise wrap directly\n return wrap(original, wrapOptions);\n });\n }\n });\n\n return originalSend.apply(this, args);\n };\n}\n\n/** JSDoc */\nfunction _wrapEventTarget(target: string): void {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const global = getGlobalObject() as { [key: string]: any };\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n const proto = global[target] && global[target].prototype;\n\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access, no-prototype-builtins\n if (!proto || !proto.hasOwnProperty || !proto.hasOwnProperty('addEventListener')) {\n return;\n }\n\n fill(proto, 'addEventListener', function (original: () => void): (\n eventName: string,\n fn: EventListenerObject,\n options?: boolean | AddEventListenerOptions,\n ) => void {\n return function (\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this: any,\n eventName: string,\n fn: EventListenerObject,\n options?: boolean | AddEventListenerOptions,\n ): (eventName: string, fn: EventListenerObject, capture?: boolean, secure?: boolean) => void {\n try {\n if (typeof fn.handleEvent === 'function') {\n // ESlint disable explanation:\n // First, it is generally safe to call `wrap` with an unbound function. Furthermore, using `.bind()` would\n // introduce a bug here, because bind returns a new function that doesn't have our\n // flags(like __sentry_original__) attached. `wrap` checks for those flags to avoid unnecessary wrapping.\n // Without those flags, every call to addEventListener wraps the function again, causing a memory leak.\n // eslint-disable-next-line @typescript-eslint/unbound-method\n fn.handleEvent = wrap(fn.handleEvent, {\n mechanism: {\n data: {\n function: 'handleEvent',\n handler: getFunctionName(fn),\n target,\n },\n handled: true,\n type: 'instrument',\n },\n });\n }\n } catch (err) {\n // can sometimes get 'Permission denied to access property \"handle Event'\n }\n\n return original.apply(this, [\n eventName,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n wrap(fn as any as WrappedFunction, {\n mechanism: {\n data: {\n function: 'addEventListener',\n handler: getFunctionName(fn),\n target,\n },\n handled: true,\n type: 'instrument',\n },\n }),\n options,\n ]);\n };\n });\n\n fill(\n proto,\n 'removeEventListener',\n function (\n originalRemoveEventListener: () => void,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n ): (this: any, eventName: string, fn: EventListenerObject, options?: boolean | EventListenerOptions) => () => void {\n return function (\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this: any,\n eventName: string,\n fn: EventListenerObject,\n options?: boolean | EventListenerOptions,\n ): () => void {\n /**\n * There are 2 possible scenarios here:\n *\n * 1. Someone passes a callback, which was attached prior to Sentry initialization, or by using unmodified\n * method, eg. `document.addEventListener.call(el, name, handler). In this case, we treat this function\n * as a pass-through, and call original `removeEventListener` with it.\n *\n * 2. Someone passes a callback, which was attached after Sentry was initialized, which means that it was using\n * our wrapped version of `addEventListener`, which internally calls `wrap` helper.\n * This helper \"wraps\" whole callback inside a try/catch statement, and attached appropriate metadata to it,\n * in order for us to make a distinction between wrapped/non-wrapped functions possible.\n * If a function was wrapped, it has additional property of `__sentry_wrapped__`, holding the handler.\n *\n * When someone adds a handler prior to initialization, and then do it again, but after,\n * then we have to detach both of them. Otherwise, if we'd detach only wrapped one, it'd be impossible\n * to get rid of the initial handler and it'd stick there forever.\n */\n const wrappedEventHandler = fn as unknown as WrappedFunction;\n try {\n const originalEventHandler = wrappedEventHandler && wrappedEventHandler.__sentry_wrapped__;\n if (originalEventHandler) {\n originalRemoveEventListener.call(this, eventName, originalEventHandler, options);\n }\n } catch (e) {\n // ignore, accessing __sentry_wrapped__ will throw in some Selenium environments\n }\n return originalRemoveEventListener.call(this, eventName, wrappedEventHandler, options);\n };\n },\n );\n}\n","/* eslint-disable @typescript-eslint/no-unsafe-member-access */\nimport { getCurrentHub } from '@sentry/core';\nimport { Event, EventHint, Hub, Integration, Primitive, StackParser } from '@sentry/types';\nimport {\n addExceptionMechanism,\n addInstrumentationHandler,\n getLocationHref,\n isErrorEvent,\n isPrimitive,\n isString,\n logger,\n} from '@sentry/utils';\n\nimport { BrowserClient } from '../client';\nimport { eventFromUnknownInput } from '../eventbuilder';\nimport { shouldIgnoreOnError } from '../helpers';\n\ntype GlobalHandlersIntegrationsOptionKeys = 'onerror' | 'onunhandledrejection';\n\n/** JSDoc */\ntype GlobalHandlersIntegrations = Record;\n\n/** Global handlers */\nexport class GlobalHandlers implements Integration {\n /**\n * @inheritDoc\n */\n public static id: string = 'GlobalHandlers';\n\n /**\n * @inheritDoc\n */\n public name: string = GlobalHandlers.id;\n\n /** JSDoc */\n private readonly _options: GlobalHandlersIntegrations;\n\n /**\n * Stores references functions to installing handlers. Will set to undefined\n * after they have been run so that they are not used twice.\n */\n private _installFunc: Record void) | undefined> = {\n onerror: _installGlobalOnErrorHandler,\n onunhandledrejection: _installGlobalOnUnhandledRejectionHandler,\n };\n\n /** JSDoc */\n public constructor(options?: GlobalHandlersIntegrations) {\n this._options = {\n onerror: true,\n onunhandledrejection: true,\n ...options,\n };\n }\n /**\n * @inheritDoc\n */\n public setupOnce(): void {\n Error.stackTraceLimit = 50;\n const options = this._options;\n\n // We can disable guard-for-in as we construct the options object above + do checks against\n // `this._installFunc` for the property.\n // eslint-disable-next-line guard-for-in\n for (const key in options) {\n const installFunc = this._installFunc[key as GlobalHandlersIntegrationsOptionKeys];\n if (installFunc && options[key as GlobalHandlersIntegrationsOptionKeys]) {\n globalHandlerLog(key);\n installFunc();\n this._installFunc[key as GlobalHandlersIntegrationsOptionKeys] = undefined;\n }\n }\n }\n}\n\n/** JSDoc */\nfunction _installGlobalOnErrorHandler(): void {\n addInstrumentationHandler(\n 'error',\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n (data: { msg: any; url: any; line: any; column: any; error: any }) => {\n const [hub, stackParser, attachStacktrace] = getHubAndOptions();\n if (!hub.getIntegration(GlobalHandlers)) {\n return;\n }\n const { msg, url, line, column, error } = data;\n if (shouldIgnoreOnError() || (error && error.__sentry_own_request__)) {\n return;\n }\n\n const event =\n error === undefined && isString(msg)\n ? _eventFromIncompleteOnError(msg, url, line, column)\n : _enhanceEventWithInitialFrame(\n eventFromUnknownInput(stackParser, error || msg, undefined, attachStacktrace, false),\n url,\n line,\n column,\n );\n\n event.level = 'error';\n\n addMechanismAndCapture(hub, error, event, 'onerror');\n },\n );\n}\n\n/** JSDoc */\nfunction _installGlobalOnUnhandledRejectionHandler(): void {\n addInstrumentationHandler(\n 'unhandledrejection',\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n (e: any) => {\n const [hub, stackParser, attachStacktrace] = getHubAndOptions();\n if (!hub.getIntegration(GlobalHandlers)) {\n return;\n }\n let error = e;\n\n // dig the object of the rejection out of known event types\n try {\n // PromiseRejectionEvents store the object of the rejection under 'reason'\n // see https://developer.mozilla.org/en-US/docs/Web/API/PromiseRejectionEvent\n if ('reason' in e) {\n error = e.reason;\n }\n // something, somewhere, (likely a browser extension) effectively casts PromiseRejectionEvents\n // to CustomEvents, moving the `promise` and `reason` attributes of the PRE into\n // the CustomEvent's `detail` attribute, since they're not part of CustomEvent's spec\n // see https://developer.mozilla.org/en-US/docs/Web/API/CustomEvent and\n // https://github.com/getsentry/sentry-javascript/issues/2380\n else if ('detail' in e && 'reason' in e.detail) {\n error = e.detail.reason;\n }\n } catch (_oO) {\n // no-empty\n }\n\n if (shouldIgnoreOnError() || (error && error.__sentry_own_request__)) {\n return true;\n }\n\n const event = isPrimitive(error)\n ? _eventFromRejectionWithPrimitive(error)\n : eventFromUnknownInput(stackParser, error, undefined, attachStacktrace, true);\n\n event.level = 'error';\n\n addMechanismAndCapture(hub, error, event, 'onunhandledrejection');\n return;\n },\n );\n}\n\n/**\n * Create an event from a promise rejection where the `reason` is a primitive.\n *\n * @param reason: The `reason` property of the promise rejection\n * @returns An Event object with an appropriate `exception` value\n */\nfunction _eventFromRejectionWithPrimitive(reason: Primitive): Event {\n return {\n exception: {\n values: [\n {\n type: 'UnhandledRejection',\n // String() is needed because the Primitive type includes symbols (which can't be automatically stringified)\n value: `Non-Error promise rejection captured with value: ${String(reason)}`,\n },\n ],\n },\n };\n}\n\n/**\n * This function creates a stack from an old, error-less onerror handler.\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction _eventFromIncompleteOnError(msg: any, url: any, line: any, column: any): Event {\n const ERROR_TYPES_RE =\n /^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/i;\n\n // If 'message' is ErrorEvent, get real message from inside\n let message = isErrorEvent(msg) ? msg.message : msg;\n let name = 'Error';\n\n const groups = message.match(ERROR_TYPES_RE);\n if (groups) {\n name = groups[1];\n message = groups[2];\n }\n\n const event = {\n exception: {\n values: [\n {\n type: name,\n value: message,\n },\n ],\n },\n };\n\n return _enhanceEventWithInitialFrame(event, url, line, column);\n}\n\n/** JSDoc */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction _enhanceEventWithInitialFrame(event: Event, url: any, line: any, column: any): Event {\n // event.exception\n const e = (event.exception = event.exception || {});\n // event.exception.values\n const ev = (e.values = e.values || []);\n // event.exception.values[0]\n const ev0 = (ev[0] = ev[0] || {});\n // event.exception.values[0].stacktrace\n const ev0s = (ev0.stacktrace = ev0.stacktrace || {});\n // event.exception.values[0].stacktrace.frames\n const ev0sf = (ev0s.frames = ev0s.frames || []);\n\n const colno = isNaN(parseInt(column, 10)) ? undefined : column;\n const lineno = isNaN(parseInt(line, 10)) ? undefined : line;\n const filename = isString(url) && url.length > 0 ? url : getLocationHref();\n\n // event.exception.values[0].stacktrace.frames\n if (ev0sf.length === 0) {\n ev0sf.push({\n colno,\n filename,\n function: '?',\n in_app: true,\n lineno,\n });\n }\n\n return event;\n}\n\nfunction globalHandlerLog(type: string): void {\n __DEBUG_BUILD__ && logger.log(`Global Handler attached: ${type}`);\n}\n\nfunction addMechanismAndCapture(hub: Hub, error: EventHint['originalException'], event: Event, type: string): void {\n addExceptionMechanism(event, {\n handled: false,\n type,\n });\n hub.captureEvent(event, {\n originalException: error,\n });\n}\n\nfunction getHubAndOptions(): [Hub, StackParser, boolean | undefined] {\n const hub = getCurrentHub();\n const client = hub.getClient();\n const options = (client && client.getOptions()) || {\n stackParser: () => [],\n attachStacktrace: false,\n };\n return [hub, options.stackParser, options.attachStacktrace];\n}\n","import { addGlobalEventProcessor, getCurrentHub } from '@sentry/core';\nimport { Event, EventHint, Exception, ExtendedError, Integration, StackParser } from '@sentry/types';\nimport { isInstanceOf } from '@sentry/utils';\n\nimport { BrowserClient } from '../client';\nimport { exceptionFromError } from '../eventbuilder';\n\nconst DEFAULT_KEY = 'cause';\nconst DEFAULT_LIMIT = 5;\n\ninterface LinkedErrorsOptions {\n key: string;\n limit: number;\n}\n\n/** Adds SDK info to an event. */\nexport class LinkedErrors implements Integration {\n /**\n * @inheritDoc\n */\n public static id: string = 'LinkedErrors';\n\n /**\n * @inheritDoc\n */\n public readonly name: string = LinkedErrors.id;\n\n /**\n * @inheritDoc\n */\n private readonly _key: LinkedErrorsOptions['key'];\n\n /**\n * @inheritDoc\n */\n private readonly _limit: LinkedErrorsOptions['limit'];\n\n /**\n * @inheritDoc\n */\n public constructor(options: Partial = {}) {\n this._key = options.key || DEFAULT_KEY;\n this._limit = options.limit || DEFAULT_LIMIT;\n }\n\n /**\n * @inheritDoc\n */\n public setupOnce(): void {\n const client = getCurrentHub().getClient();\n if (!client) {\n return;\n }\n addGlobalEventProcessor((event: Event, hint?: EventHint) => {\n const self = getCurrentHub().getIntegration(LinkedErrors);\n return self ? _handler(client.getOptions().stackParser, self._key, self._limit, event, hint) : event;\n });\n }\n}\n\n/**\n * @inheritDoc\n */\nexport function _handler(\n parser: StackParser,\n key: string,\n limit: number,\n event: Event,\n hint?: EventHint,\n): Event | null {\n if (!event.exception || !event.exception.values || !hint || !isInstanceOf(hint.originalException, Error)) {\n return event;\n }\n const linkedErrors = _walkErrorTree(parser, limit, hint.originalException as ExtendedError, key);\n event.exception.values = [...linkedErrors, ...event.exception.values];\n return event;\n}\n\n/**\n * JSDOC\n */\nexport function _walkErrorTree(\n parser: StackParser,\n limit: number,\n error: ExtendedError,\n key: string,\n stack: Exception[] = [],\n): Exception[] {\n if (!isInstanceOf(error[key], Error) || stack.length + 1 >= limit) {\n return stack;\n }\n const exception = exceptionFromError(parser, error[key]);\n return _walkErrorTree(parser, limit, error[key], key, [exception, ...stack]);\n}\n","import { Event, EventProcessor, Exception, Hub, Integration, StackFrame } from '@sentry/types';\nimport { logger } from '@sentry/utils';\n\n/** Deduplication filter */\nexport class Dedupe implements Integration {\n /**\n * @inheritDoc\n */\n public static id: string = 'Dedupe';\n\n /**\n * @inheritDoc\n */\n public name: string = Dedupe.id;\n\n /**\n * @inheritDoc\n */\n private _previousEvent?: Event;\n\n /**\n * @inheritDoc\n */\n public setupOnce(addGlobalEventProcessor: (callback: EventProcessor) => void, getCurrentHub: () => Hub): void {\n const eventProcessor: EventProcessor = currentEvent => {\n const self = getCurrentHub().getIntegration(Dedupe);\n if (self) {\n // Juuust in case something goes wrong\n try {\n if (_shouldDropEvent(currentEvent, self._previousEvent)) {\n __DEBUG_BUILD__ && logger.warn('Event dropped due to being a duplicate of previously captured event.');\n return null;\n }\n } catch (_oO) {\n return (self._previousEvent = currentEvent);\n }\n\n return (self._previousEvent = currentEvent);\n }\n return currentEvent;\n };\n\n eventProcessor.id = this.name;\n addGlobalEventProcessor(eventProcessor);\n }\n}\n\n/** JSDoc */\nfunction _shouldDropEvent(currentEvent: Event, previousEvent?: Event): boolean {\n if (!previousEvent) {\n return false;\n }\n\n if (_isSameMessageEvent(currentEvent, previousEvent)) {\n return true;\n }\n\n if (_isSameExceptionEvent(currentEvent, previousEvent)) {\n return true;\n }\n\n return false;\n}\n\n/** JSDoc */\nfunction _isSameMessageEvent(currentEvent: Event, previousEvent: Event): boolean {\n const currentMessage = currentEvent.message;\n const previousMessage = previousEvent.message;\n\n // If neither event has a message property, they were both exceptions, so bail out\n if (!currentMessage && !previousMessage) {\n return false;\n }\n\n // If only one event has a stacktrace, but not the other one, they are not the same\n if ((currentMessage && !previousMessage) || (!currentMessage && previousMessage)) {\n return false;\n }\n\n if (currentMessage !== previousMessage) {\n return false;\n }\n\n if (!_isSameFingerprint(currentEvent, previousEvent)) {\n return false;\n }\n\n if (!_isSameStacktrace(currentEvent, previousEvent)) {\n return false;\n }\n\n return true;\n}\n\n/** JSDoc */\nfunction _isSameExceptionEvent(currentEvent: Event, previousEvent: Event): boolean {\n const previousException = _getExceptionFromEvent(previousEvent);\n const currentException = _getExceptionFromEvent(currentEvent);\n\n if (!previousException || !currentException) {\n return false;\n }\n\n if (previousException.type !== currentException.type || previousException.value !== currentException.value) {\n return false;\n }\n\n if (!_isSameFingerprint(currentEvent, previousEvent)) {\n return false;\n }\n\n if (!_isSameStacktrace(currentEvent, previousEvent)) {\n return false;\n }\n\n return true;\n}\n\n/** JSDoc */\nfunction _isSameStacktrace(currentEvent: Event, previousEvent: Event): boolean {\n let currentFrames = _getFramesFromEvent(currentEvent);\n let previousFrames = _getFramesFromEvent(previousEvent);\n\n // If neither event has a stacktrace, they are assumed to be the same\n if (!currentFrames && !previousFrames) {\n return true;\n }\n\n // If only one event has a stacktrace, but not the other one, they are not the same\n if ((currentFrames && !previousFrames) || (!currentFrames && previousFrames)) {\n return false;\n }\n\n currentFrames = currentFrames as StackFrame[];\n previousFrames = previousFrames as StackFrame[];\n\n // If number of frames differ, they are not the same\n if (previousFrames.length !== currentFrames.length) {\n return false;\n }\n\n // Otherwise, compare the two\n for (let i = 0; i < previousFrames.length; i++) {\n const frameA = previousFrames[i];\n const frameB = currentFrames[i];\n\n if (\n frameA.filename !== frameB.filename ||\n frameA.lineno !== frameB.lineno ||\n frameA.colno !== frameB.colno ||\n frameA.function !== frameB.function\n ) {\n return false;\n }\n }\n\n return true;\n}\n\n/** JSDoc */\nfunction _isSameFingerprint(currentEvent: Event, previousEvent: Event): boolean {\n let currentFingerprint = currentEvent.fingerprint;\n let previousFingerprint = previousEvent.fingerprint;\n\n // If neither event has a fingerprint, they are assumed to be the same\n if (!currentFingerprint && !previousFingerprint) {\n return true;\n }\n\n // If only one event has a fingerprint, but not the other one, they are not the same\n if ((currentFingerprint && !previousFingerprint) || (!currentFingerprint && previousFingerprint)) {\n return false;\n }\n\n currentFingerprint = currentFingerprint as string[];\n previousFingerprint = previousFingerprint as string[];\n\n // Otherwise, compare the two\n try {\n return !!(currentFingerprint.join('') === previousFingerprint.join(''));\n } catch (_oO) {\n return false;\n }\n}\n\n/** JSDoc */\nfunction _getExceptionFromEvent(event: Event): Exception | undefined {\n return event.exception && event.exception.values && event.exception.values[0];\n}\n\n/** JSDoc */\nfunction _getFramesFromEvent(event: Event): StackFrame[] | undefined {\n const exception = event.exception;\n\n if (exception) {\n try {\n // @ts-ignore Object could be undefined\n return exception.values[0].stacktrace.frames;\n } catch (_oO) {\n return undefined;\n }\n }\n return undefined;\n}\n","import { addGlobalEventProcessor, getCurrentHub } from '@sentry/core';\nimport { Event, Integration } from '@sentry/types';\nimport { getGlobalObject } from '@sentry/utils';\n\nconst global = getGlobalObject();\n\n/** HttpContext integration collects information about HTTP request headers */\nexport class HttpContext implements Integration {\n /**\n * @inheritDoc\n */\n public static id: string = 'HttpContext';\n\n /**\n * @inheritDoc\n */\n public name: string = HttpContext.id;\n\n /**\n * @inheritDoc\n */\n public setupOnce(): void {\n addGlobalEventProcessor((event: Event) => {\n if (getCurrentHub().getIntegration(HttpContext)) {\n // if none of the information we want exists, don't bother\n if (!global.navigator && !global.location && !global.document) {\n return event;\n }\n\n // grab as much info as exists and add it to the event\n const url = (event.request && event.request.url) || (global.location && global.location.href);\n const { referrer } = global.document || {};\n const { userAgent } = global.navigator || {};\n\n const headers = {\n ...(event.request && event.request.headers),\n ...(referrer && { Referer: referrer }),\n ...(userAgent && { 'User-Agent': userAgent }),\n };\n const request = { ...(url && { url }), headers };\n\n return { ...event, request };\n }\n return event;\n });\n }\n}\n","import { SentryError } from './error';\nimport { rejectedSyncPromise, resolvedSyncPromise, SyncPromise } from './syncpromise';\n\nexport interface PromiseBuffer {\n // exposes the internal array so tests can assert on the state of it.\n // XXX: this really should not be public api.\n $: Array>;\n add(taskProducer: () => PromiseLike): PromiseLike;\n drain(timeout?: number): PromiseLike;\n}\n\n/**\n * Creates an new PromiseBuffer object with the specified limit\n * @param limit max number of promises that can be stored in the buffer\n */\nexport function makePromiseBuffer(limit?: number): PromiseBuffer {\n const buffer: Array> = [];\n\n function isReady(): boolean {\n return limit === undefined || buffer.length < limit;\n }\n\n /**\n * Remove a promise from the queue.\n *\n * @param task Can be any PromiseLike\n * @returns Removed promise.\n */\n function remove(task: PromiseLike): PromiseLike {\n return buffer.splice(buffer.indexOf(task), 1)[0];\n }\n\n /**\n * Add a promise (representing an in-flight action) to the queue, and set it to remove itself on fulfillment.\n *\n * @param taskProducer A function producing any PromiseLike; In previous versions this used to be `task:\n * PromiseLike`, but under that model, Promises were instantly created on the call-site and their executor\n * functions therefore ran immediately. Thus, even if the buffer was full, the action still happened. By\n * requiring the promise to be wrapped in a function, we can defer promise creation until after the buffer\n * limit check.\n * @returns The original promise.\n */\n function add(taskProducer: () => PromiseLike): PromiseLike {\n if (!isReady()) {\n return rejectedSyncPromise(new SentryError('Not adding Promise due to buffer limit reached.'));\n }\n\n // start the task and add its promise to the queue\n const task = taskProducer();\n if (buffer.indexOf(task) === -1) {\n buffer.push(task);\n }\n void task\n .then(() => remove(task))\n // Use `then(null, rejectionHandler)` rather than `catch(rejectionHandler)` so that we can use `PromiseLike`\n // rather than `Promise`. `PromiseLike` doesn't have a `.catch` method, making its polyfill smaller. (ES5 didn't\n // have promises, so TS has to polyfill when down-compiling.)\n .then(null, () =>\n remove(task).then(null, () => {\n // We have to add another catch here because `remove()` starts a new promise chain.\n }),\n );\n return task;\n }\n\n /**\n * Wait for all promises in the queue to resolve or for timeout to expire, whichever comes first.\n *\n * @param timeout The time, in ms, after which to resolve to `false` if the queue is still non-empty. Passing `0` (or\n * not passing anything) will make the promise wait as long as it takes for the queue to drain before resolving to\n * `true`.\n * @returns A promise which will resolve to `true` if the queue is already empty or drains before the timeout, and\n * `false` otherwise\n */\n function drain(timeout?: number): PromiseLike {\n return new SyncPromise((resolve, reject) => {\n let counter = buffer.length;\n\n if (!counter) {\n return resolve(true);\n }\n\n // wait for `timeout` ms and then resolve to `false` (if not cancelled first)\n const capturedSetTimeout = setTimeout(() => {\n if (timeout && timeout > 0) {\n resolve(false);\n }\n }, timeout);\n\n // if all promises resolve in time, cancel the timer and resolve to `true`\n buffer.forEach(item => {\n void resolvedSyncPromise(item).then(() => {\n // eslint-disable-next-line no-plusplus\n if (!--counter) {\n clearTimeout(capturedSetTimeout);\n resolve(true);\n }\n }, reject);\n });\n });\n }\n\n return {\n $: buffer,\n add,\n drain,\n };\n}\n","import { TransportMakeRequestResponse } from '@sentry/types';\n\n// Intentionally keeping the key broad, as we don't know for sure what rate limit headers get returned from backend\nexport type RateLimits = Record;\n\nexport const DEFAULT_RETRY_AFTER = 60 * 1000; // 60 seconds\n\n/**\n * Extracts Retry-After value from the request header or returns default value\n * @param header string representation of 'Retry-After' header\n * @param now current unix timestamp\n *\n */\nexport function parseRetryAfterHeader(header: string, now: number = Date.now()): number {\n const headerDelay = parseInt(`${header}`, 10);\n if (!isNaN(headerDelay)) {\n return headerDelay * 1000;\n }\n\n const headerDate = Date.parse(`${header}`);\n if (!isNaN(headerDate)) {\n return headerDate - now;\n }\n\n return DEFAULT_RETRY_AFTER;\n}\n\n/**\n * Gets the time that given category is disabled until for rate limiting\n */\nexport function disabledUntil(limits: RateLimits, category: string): number {\n return limits[category] || limits.all || 0;\n}\n\n/**\n * Checks if a category is rate limited\n */\nexport function isRateLimited(limits: RateLimits, category: string, now: number = Date.now()): boolean {\n return disabledUntil(limits, category) > now;\n}\n\n/**\n * Update ratelimits from incoming headers.\n * Returns true if headers contains a non-empty rate limiting header.\n */\nexport function updateRateLimits(\n limits: RateLimits,\n { statusCode, headers }: TransportMakeRequestResponse,\n now: number = Date.now(),\n): RateLimits {\n const updatedRateLimits: RateLimits = {\n ...limits,\n };\n\n // \"The name is case-insensitive.\"\n // https://developer.mozilla.org/en-US/docs/Web/API/Headers/get\n const rateLimitHeader = headers && headers['x-sentry-rate-limits'];\n const retryAfterHeader = headers && headers['retry-after'];\n\n if (rateLimitHeader) {\n /**\n * rate limit headers are of the form\n *
,
,..\n * where each
is of the form\n * : : : \n * where\n * is a delay in seconds\n * is the event type(s) (error, transaction, etc) being rate limited and is of the form\n * ;;...\n * is what's being limited (org, project, or key) - ignored by SDK\n * is an arbitrary string like \"org_quota\" - ignored by SDK\n */\n for (const limit of rateLimitHeader.trim().split(',')) {\n const [retryAfter, categories] = limit.split(':', 2);\n const headerDelay = parseInt(retryAfter, 10);\n const delay = (!isNaN(headerDelay) ? headerDelay : 60) * 1000; // 60sec default\n if (!categories) {\n updatedRateLimits.all = now + delay;\n } else {\n for (const category of categories.split(';')) {\n updatedRateLimits[category] = now + delay;\n }\n }\n }\n } else if (retryAfterHeader) {\n updatedRateLimits.all = now + parseRetryAfterHeader(retryAfterHeader, now);\n } else if (statusCode === 429) {\n updatedRateLimits.all = now + 60 * 1000;\n }\n\n return updatedRateLimits;\n}\n","import {\n Envelope,\n EnvelopeItem,\n EventDropReason,\n InternalBaseTransportOptions,\n Transport,\n TransportRequestExecutor,\n} from '@sentry/types';\nimport {\n createEnvelope,\n envelopeItemTypeToDataCategory,\n forEachEnvelopeItem,\n isRateLimited,\n logger,\n makePromiseBuffer,\n PromiseBuffer,\n RateLimits,\n resolvedSyncPromise,\n SentryError,\n serializeEnvelope,\n updateRateLimits,\n} from '@sentry/utils';\n\nexport const DEFAULT_TRANSPORT_BUFFER_SIZE = 30;\n\n/**\n * Creates an instance of a Sentry `Transport`\n *\n * @param options\n * @param makeRequest\n */\nexport function createTransport(\n options: InternalBaseTransportOptions,\n makeRequest: TransportRequestExecutor,\n buffer: PromiseBuffer = makePromiseBuffer(options.bufferSize || DEFAULT_TRANSPORT_BUFFER_SIZE),\n): Transport {\n let rateLimits: RateLimits = {};\n\n const flush = (timeout?: number): PromiseLike => buffer.drain(timeout);\n\n function send(envelope: Envelope): PromiseLike {\n const filteredEnvelopeItems: EnvelopeItem[] = [];\n\n // Drop rate limited items from envelope\n forEachEnvelopeItem(envelope, (item, type) => {\n const envelopeItemDataCategory = envelopeItemTypeToDataCategory(type);\n if (isRateLimited(rateLimits, envelopeItemDataCategory)) {\n options.recordDroppedEvent('ratelimit_backoff', envelopeItemDataCategory);\n } else {\n filteredEnvelopeItems.push(item);\n }\n });\n\n // Skip sending if envelope is empty after filtering out rate limited events\n if (filteredEnvelopeItems.length === 0) {\n return resolvedSyncPromise();\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const filteredEnvelope: Envelope = createEnvelope(envelope[0], filteredEnvelopeItems as any);\n\n // Creates client report for each item in an envelope\n const recordEnvelopeLoss = (reason: EventDropReason): void => {\n forEachEnvelopeItem(filteredEnvelope, (_, type) => {\n options.recordDroppedEvent(reason, envelopeItemTypeToDataCategory(type));\n });\n };\n\n const requestTask = (): PromiseLike =>\n makeRequest({ body: serializeEnvelope(filteredEnvelope, options.textEncoder) }).then(\n response => {\n // We don't want to throw on NOK responses, but we want to at least log them\n if (response.statusCode !== undefined && (response.statusCode < 200 || response.statusCode >= 300)) {\n __DEBUG_BUILD__ && logger.warn(`Sentry responded with status code ${response.statusCode} to sent event.`);\n }\n\n rateLimits = updateRateLimits(rateLimits, response);\n },\n error => {\n __DEBUG_BUILD__ && logger.error('Failed while sending event:', error);\n recordEnvelopeLoss('network_error');\n },\n );\n\n return buffer.add(requestTask).then(\n result => result,\n error => {\n if (error instanceof SentryError) {\n __DEBUG_BUILD__ && logger.error('Skipped sending event due to full buffer');\n recordEnvelopeLoss('queue_overflow');\n return resolvedSyncPromise();\n } else {\n throw error;\n }\n },\n );\n }\n\n return {\n send,\n flush,\n };\n}\n","import { createTransport } from '@sentry/core';\nimport { Transport, TransportMakeRequestResponse, TransportRequest } from '@sentry/types';\n\nimport { BrowserTransportOptions } from './types';\nimport { FetchImpl, getNativeFetchImplementation } from './utils';\n\n/**\n * Creates a Transport that uses the Fetch API to send events to Sentry.\n */\nexport function makeFetchTransport(\n options: BrowserTransportOptions,\n nativeFetch: FetchImpl = getNativeFetchImplementation(),\n): Transport {\n function makeRequest(request: TransportRequest): PromiseLike {\n const requestOptions: RequestInit = {\n body: request.body,\n method: 'POST',\n referrerPolicy: 'origin',\n headers: options.headers,\n ...options.fetchOptions,\n };\n\n return nativeFetch(options.url, requestOptions).then(response => ({\n statusCode: response.status,\n headers: {\n 'x-sentry-rate-limits': response.headers.get('X-Sentry-Rate-Limits'),\n 'retry-after': response.headers.get('Retry-After'),\n },\n }));\n }\n\n return createTransport(options, makeRequest);\n}\n","import { createTransport } from '@sentry/core';\nimport { Transport, TransportMakeRequestResponse, TransportRequest } from '@sentry/types';\nimport { SyncPromise } from '@sentry/utils';\n\nimport { BrowserTransportOptions } from './types';\n\n/**\n * The DONE ready state for XmlHttpRequest\n *\n * Defining it here as a constant b/c XMLHttpRequest.DONE is not always defined\n * (e.g. during testing, it is `undefined`)\n *\n * @see {@link https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/readyState}\n */\nconst XHR_READYSTATE_DONE = 4;\n\n/**\n * Creates a Transport that uses the XMLHttpRequest API to send events to Sentry.\n */\nexport function makeXHRTransport(options: BrowserTransportOptions): Transport {\n function makeRequest(request: TransportRequest): PromiseLike {\n return new SyncPromise((resolve, reject) => {\n const xhr = new XMLHttpRequest();\n\n xhr.onerror = reject;\n\n xhr.onreadystatechange = (): void => {\n if (xhr.readyState === XHR_READYSTATE_DONE) {\n resolve({\n statusCode: xhr.status,\n headers: {\n 'x-sentry-rate-limits': xhr.getResponseHeader('X-Sentry-Rate-Limits'),\n 'retry-after': xhr.getResponseHeader('Retry-After'),\n },\n });\n }\n };\n\n xhr.open('POST', options.url);\n\n for (const header in options.headers) {\n if (Object.prototype.hasOwnProperty.call(options.headers, header)) {\n xhr.setRequestHeader(header, options.headers[header]);\n }\n }\n\n xhr.send(request.body);\n });\n }\n\n return createTransport(options, makeRequest);\n}\n","import {\n getCurrentHub,\n getIntegrationsToSetup,\n getReportDialogEndpoint,\n Hub,\n initAndBind,\n Integrations as CoreIntegrations,\n} from '@sentry/core';\nimport {\n addInstrumentationHandler,\n getGlobalObject,\n logger,\n resolvedSyncPromise,\n stackParserFromStackParserOptions,\n supportsFetch,\n} from '@sentry/utils';\n\nimport { BrowserClient, BrowserClientOptions, BrowserOptions } from './client';\nimport { ReportDialogOptions, wrap as internalWrap } from './helpers';\nimport { Breadcrumbs, Dedupe, GlobalHandlers, HttpContext, LinkedErrors, TryCatch } from './integrations';\nimport { defaultStackParser } from './stack-parsers';\nimport { makeFetchTransport, makeXHRTransport } from './transports';\n\nexport const defaultIntegrations = [\n new CoreIntegrations.InboundFilters(),\n new CoreIntegrations.FunctionToString(),\n new TryCatch(),\n new Breadcrumbs(),\n new GlobalHandlers(),\n new LinkedErrors(),\n new Dedupe(),\n new HttpContext(),\n];\n\n/**\n * The Sentry Browser SDK Client.\n *\n * To use this SDK, call the {@link init} function as early as possible when\n * loading the web page. To set context information or send manual events, use\n * the provided methods.\n *\n * @example\n *\n * ```\n *\n * import { init } from '@sentry/browser';\n *\n * init({\n * dsn: '__DSN__',\n * // ...\n * });\n * ```\n *\n * @example\n * ```\n *\n * import { configureScope } from '@sentry/browser';\n * configureScope((scope: Scope) => {\n * scope.setExtra({ battery: 0.7 });\n * scope.setTag({ user_mode: 'admin' });\n * scope.setUser({ id: '4711' });\n * });\n * ```\n *\n * @example\n * ```\n *\n * import { addBreadcrumb } from '@sentry/browser';\n * addBreadcrumb({\n * message: 'My Breadcrumb',\n * // ...\n * });\n * ```\n *\n * @example\n *\n * ```\n *\n * import * as Sentry from '@sentry/browser';\n * Sentry.captureMessage('Hello, world!');\n * Sentry.captureException(new Error('Good bye'));\n * Sentry.captureEvent({\n * message: 'Manual',\n * stacktrace: [\n * // ...\n * ],\n * });\n * ```\n *\n * @see {@link BrowserOptions} for documentation on configuration options.\n */\nexport function init(options: BrowserOptions = {}): void {\n if (options.defaultIntegrations === undefined) {\n options.defaultIntegrations = defaultIntegrations;\n }\n if (options.release === undefined) {\n const window = getGlobalObject();\n // This supports the variable that sentry-webpack-plugin injects\n if (window.SENTRY_RELEASE && window.SENTRY_RELEASE.id) {\n options.release = window.SENTRY_RELEASE.id;\n }\n }\n if (options.autoSessionTracking === undefined) {\n options.autoSessionTracking = true;\n }\n if (options.sendClientReports === undefined) {\n options.sendClientReports = true;\n }\n\n const clientOptions: BrowserClientOptions = {\n ...options,\n stackParser: stackParserFromStackParserOptions(options.stackParser || defaultStackParser),\n integrations: getIntegrationsToSetup(options),\n transport: options.transport || (supportsFetch() ? makeFetchTransport : makeXHRTransport),\n };\n\n initAndBind(BrowserClient, clientOptions);\n\n if (options.autoSessionTracking) {\n startSessionTracking();\n }\n}\n\n/**\n * Present the user with a report dialog.\n *\n * @param options Everything is optional, we try to fetch all info need from the global scope.\n */\nexport function showReportDialog(options: ReportDialogOptions = {}, hub: Hub = getCurrentHub()): void {\n // doesn't work without a document (React Native)\n const global = getGlobalObject();\n if (!global.document) {\n __DEBUG_BUILD__ && logger.error('Global document not defined in showReportDialog call');\n return;\n }\n\n const { client, scope } = hub.getStackTop();\n const dsn = options.dsn || (client && client.getDsn());\n if (!dsn) {\n __DEBUG_BUILD__ && logger.error('DSN not configured for showReportDialog call');\n return;\n }\n\n if (scope) {\n options.user = {\n ...scope.getUser(),\n ...options.user,\n };\n }\n\n if (!options.eventId) {\n options.eventId = hub.lastEventId();\n }\n\n const script = global.document.createElement('script');\n script.async = true;\n script.src = getReportDialogEndpoint(dsn, options);\n\n if (options.onLoad) {\n // eslint-disable-next-line @typescript-eslint/unbound-method\n script.onload = options.onLoad;\n }\n\n const injectionPoint = global.document.head || global.document.body;\n if (injectionPoint) {\n injectionPoint.appendChild(script);\n } else {\n __DEBUG_BUILD__ && logger.error('Not injecting report dialog. No injection point found in HTML');\n }\n}\n\n/**\n * This is the getter for lastEventId.\n *\n * @returns The last event id of a captured event.\n */\nexport function lastEventId(): string | undefined {\n return getCurrentHub().lastEventId();\n}\n\n/**\n * This function is here to be API compatible with the loader.\n * @hidden\n */\nexport function forceLoad(): void {\n // Noop\n}\n\n/**\n * This function is here to be API compatible with the loader.\n * @hidden\n */\nexport function onLoad(callback: () => void): void {\n callback();\n}\n\n/**\n * Call `flush()` on the current client, if there is one. See {@link Client.flush}.\n *\n * @param timeout Maximum time in ms the client should wait to flush its event queue. Omitting this parameter will cause\n * the client to wait until all events are sent before resolving the promise.\n * @returns A promise which resolves to `true` if the queue successfully drains before the timeout, or `false` if it\n * doesn't (or if there's no client defined).\n */\nexport function flush(timeout?: number): PromiseLike {\n const client = getCurrentHub().getClient();\n if (client) {\n return client.flush(timeout);\n }\n __DEBUG_BUILD__ && logger.warn('Cannot flush events. No client defined.');\n return resolvedSyncPromise(false);\n}\n\n/**\n * Call `close()` on the current client, if there is one. See {@link Client.close}.\n *\n * @param timeout Maximum time in ms the client should wait to flush its event queue before shutting down. Omitting this\n * parameter will cause the client to wait until all events are sent before disabling itself.\n * @returns A promise which resolves to `true` if the queue successfully drains before the timeout, or `false` if it\n * doesn't (or if there's no client defined).\n */\nexport function close(timeout?: number): PromiseLike {\n const client = getCurrentHub().getClient();\n if (client) {\n return client.close(timeout);\n }\n __DEBUG_BUILD__ && logger.warn('Cannot flush events and disable SDK. No client defined.');\n return resolvedSyncPromise(false);\n}\n\n/**\n * Wrap code within a try/catch block so the SDK is able to capture errors.\n *\n * @param fn A function to wrap.\n *\n * @returns The result of wrapped function call.\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function wrap(fn: (...args: any) => any): any {\n return internalWrap(fn)();\n}\n\nfunction startSessionOnHub(hub: Hub): void {\n hub.startSession({ ignoreDuration: true });\n hub.captureSession();\n}\n\n/**\n * Enable automatic Session Tracking for the initial page load.\n */\nfunction startSessionTracking(): void {\n const window = getGlobalObject();\n const document = window.document;\n\n if (typeof document === 'undefined') {\n __DEBUG_BUILD__ &&\n logger.warn('Session tracking in non-browser environment with @sentry/browser is not supported.');\n return;\n }\n\n const hub = getCurrentHub();\n\n // The only way for this to be false is for there to be a version mismatch between @sentry/browser (>= 6.0.0) and\n // @sentry/hub (< 5.27.0). In the simple case, there won't ever be such a mismatch, because the two packages are\n // pinned at the same version in package.json, but there are edge cases where it's possible. See\n // https://github.com/getsentry/sentry-javascript/issues/3207 and\n // https://github.com/getsentry/sentry-javascript/issues/3234 and\n // https://github.com/getsentry/sentry-javascript/issues/3278.\n if (!hub.captureSession) {\n return;\n }\n\n // The session duration for browser sessions does not track a meaningful\n // concept that can be used as a metric.\n // Automatically captured sessions are akin to page views, and thus we\n // discard their duration.\n startSessionOnHub(hub);\n\n // We want to create a session for every navigation as well\n addInstrumentationHandler('history', ({ from, to }) => {\n // Don't create an additional session for the initial route or if the location did not change\n if (!(from === undefined || from === to)) {\n startSessionOnHub(getCurrentHub());\n }\n });\n}\n","import { TraceparentData } from '@sentry/types';\n\nexport const TRACEPARENT_REGEXP = new RegExp(\n '^[ \\\\t]*' + // whitespace\n '([0-9a-f]{32})?' + // trace_id\n '-?([0-9a-f]{16})?' + // span_id\n '-?([01])?' + // sampled\n '[ \\\\t]*$', // whitespace\n);\n\n/**\n * Extract transaction context data from a `sentry-trace` header.\n *\n * @param traceparent Traceparent string\n *\n * @returns Object containing data from the header, or undefined if traceparent string is malformed\n */\nexport function extractTraceparentData(traceparent: string): TraceparentData | undefined {\n const matches = traceparent.match(TRACEPARENT_REGEXP);\n if (matches) {\n let parentSampled: boolean | undefined;\n if (matches[3] === '1') {\n parentSampled = true;\n } else if (matches[3] === '0') {\n parentSampled = false;\n }\n return {\n traceId: matches[1],\n parentSampled,\n parentSpanId: matches[2],\n };\n }\n return undefined;\n}\n","import { getGlobalObject, logger } from '@sentry/utils';\n\nimport { IdleTransaction } from '../idletransaction';\nimport { SpanStatusType } from '../span';\nimport { getActiveTransaction } from '../utils';\n\nconst global = getGlobalObject();\n\n/**\n * Add a listener that cancels and finishes a transaction when the global\n * document is hidden.\n */\nexport function registerBackgroundTabDetection(): void {\n if (global && global.document) {\n global.document.addEventListener('visibilitychange', () => {\n const activeTransaction = getActiveTransaction() as IdleTransaction;\n if (global.document.hidden && activeTransaction) {\n const statusType: SpanStatusType = 'cancelled';\n\n __DEBUG_BUILD__ &&\n logger.log(\n `[Tracing] Transaction: ${statusType} -> since tab moved to the background, op: ${activeTransaction.op}`,\n );\n // We should not set status if it is already set, this prevent important statuses like\n // error or data loss from being overwritten on transaction.\n if (!activeTransaction.status) {\n activeTransaction.setStatus(statusType);\n }\n activeTransaction.setTag('visibilitychange', 'document.hidden');\n activeTransaction.finish();\n }\n });\n } else {\n __DEBUG_BUILD__ &&\n logger.warn('[Tracing] Could not set up background tab detection due to lack of global document');\n }\n}\n","/*\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Metric, ReportHandler } from '../types';\n\nexport const bindReporter = (\n callback: ReportHandler,\n metric: Metric,\n reportAllChanges?: boolean,\n): ((forceReport?: boolean) => void) => {\n let prevValue: number;\n return (forceReport?: boolean) => {\n if (metric.value >= 0) {\n if (forceReport || reportAllChanges) {\n metric.delta = metric.value - (prevValue || 0);\n\n // Report the metric if there's a non-zero delta or if no previous\n // value exists (which can happen in the case of the document becoming\n // hidden when the metric value is 0).\n // See: https://github.com/GoogleChrome/web-vitals/issues/14\n if (metric.delta || prevValue === undefined) {\n prevValue = metric.value;\n callback(metric);\n }\n }\n }\n };\n};\n","/*\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/**\n * Performantly generate a unique, 30-char string by combining a version\n * number, the current timestamp with a 13-digit number integer.\n * @return {string}\n */\nexport const generateUniqueID = (): string => {\n return `v2-${Date.now()}-${Math.floor(Math.random() * (9e12 - 1)) + 1e12}`;\n};\n","/*\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport interface PerformanceEntryHandler {\n (entry: PerformanceEntry): void;\n}\n\n/**\n * Takes a performance entry type and a callback function, and creates a\n * `PerformanceObserver` instance that will observe the specified entry type\n * with buffering enabled and call the callback _for each entry_.\n *\n * This function also feature-detects entry support and wraps the logic in a\n * try/catch to avoid errors in unsupporting browsers.\n */\nexport const observe = (type: string, callback: PerformanceEntryHandler): PerformanceObserver | undefined => {\n try {\n if (PerformanceObserver.supportedEntryTypes.includes(type)) {\n // More extensive feature detect needed for Firefox due to:\n // https://github.com/GoogleChrome/web-vitals/issues/142\n if (type === 'first-input' && !('PerformanceEventTiming' in self)) {\n return;\n }\n\n const po: PerformanceObserver = new PerformanceObserver(l => l.getEntries().map(callback));\n\n po.observe({ type, buffered: true });\n return po;\n }\n } catch (e) {\n // Do nothing.\n }\n return;\n};\n","/*\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { getGlobalObject } from '@sentry/utils';\n\nexport interface OnHiddenCallback {\n (event: Event): void;\n}\n\nexport const onHidden = (cb: OnHiddenCallback, once?: boolean): void => {\n const onHiddenOrPageHide = (event: Event): void => {\n if (event.type === 'pagehide' || getGlobalObject().document.visibilityState === 'hidden') {\n cb(event);\n if (once) {\n removeEventListener('visibilitychange', onHiddenOrPageHide, true);\n removeEventListener('pagehide', onHiddenOrPageHide, true);\n }\n }\n };\n addEventListener('visibilitychange', onHiddenOrPageHide, true);\n // Some browsers have buggy implementations of visibilitychange,\n // so we use pagehide in addition, just to be safe.\n addEventListener('pagehide', onHiddenOrPageHide, true);\n};\n","/*\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { getGlobalObject } from '@sentry/utils';\n\nimport { onHidden } from './onHidden';\n\nlet firstHiddenTime = -1;\n\nconst initHiddenTime = (): number => {\n return getGlobalObject().document.visibilityState === 'hidden' ? 0 : Infinity;\n};\n\nconst trackChanges = (): void => {\n // Update the time if/when the document becomes hidden.\n onHidden(({ timeStamp }) => {\n firstHiddenTime = timeStamp;\n }, true);\n};\n\nexport const getVisibilityWatcher = (): {\n readonly firstHiddenTime: number;\n} => {\n if (firstHiddenTime < 0) {\n // If the document is hidden when this code runs, assume it was hidden\n // since navigation start. This isn't a perfect heuristic, but it's the\n // best we can do until an API is available to support querying past\n // visibilityState.\n firstHiddenTime = initHiddenTime();\n trackChanges();\n }\n return {\n get firstHiddenTime() {\n return firstHiddenTime;\n },\n };\n};\n","/*\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { bindReporter } from './lib/bindReporter';\nimport { getVisibilityWatcher } from './lib/getVisibilityWatcher';\nimport { initMetric } from './lib/initMetric';\nimport { observe, PerformanceEntryHandler } from './lib/observe';\nimport { onHidden } from './lib/onHidden';\nimport { ReportHandler } from './types';\n\n// https://wicg.github.io/largest-contentful-paint/#sec-largest-contentful-paint-interface\nexport interface LargestContentfulPaint extends PerformanceEntry {\n renderTime: DOMHighResTimeStamp;\n loadTime: DOMHighResTimeStamp;\n size: number;\n id: string;\n url: string;\n element?: Element;\n toJSON(): Record;\n}\n\nconst reportedMetricIDs: Record = {};\n\nexport const getLCP = (onReport: ReportHandler, reportAllChanges?: boolean): void => {\n const visibilityWatcher = getVisibilityWatcher();\n const metric = initMetric('LCP');\n let report: ReturnType;\n\n const entryHandler = (entry: PerformanceEntry): void => {\n // The startTime attribute returns the value of the renderTime if it is not 0,\n // and the value of the loadTime otherwise.\n const value = entry.startTime;\n\n // If the page was hidden prior to paint time of the entry,\n // ignore it and mark the metric as final, otherwise add the entry.\n if (value < visibilityWatcher.firstHiddenTime) {\n metric.value = value;\n metric.entries.push(entry);\n }\n\n if (report) {\n report();\n }\n };\n\n const po = observe('largest-contentful-paint', entryHandler);\n\n if (po) {\n report = bindReporter(onReport, metric, reportAllChanges);\n\n const stopListening = (): void => {\n if (!reportedMetricIDs[metric.id]) {\n po.takeRecords().map(entryHandler as PerformanceEntryHandler);\n po.disconnect();\n reportedMetricIDs[metric.id] = true;\n report(true);\n }\n };\n\n // Stop listening after input. Note: while scrolling is an input that\n // stop LCP observation, it's unreliable since it can be programmatically\n // generated. See: https://github.com/GoogleChrome/web-vitals/issues/75\n ['keydown', 'click'].forEach(type => {\n addEventListener(type, stopListening, { once: true, capture: true });\n });\n\n onHidden(stopListening, true);\n }\n};\n","export default function _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n\n return target;\n}","import objectWithoutPropertiesLoose from \"./objectWithoutPropertiesLoose.js\";\nexport default function _objectWithoutProperties(source, excluded) {\n if (source == null) return {};\n var target = objectWithoutPropertiesLoose(source, excluded);\n var key, i;\n\n if (Object.getOwnPropertySymbols) {\n var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\n\n for (i = 0; i < sourceSymbolKeys.length; i++) {\n key = sourceSymbolKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;\n target[key] = source[key];\n }\n }\n\n return target;\n}","import { Span, SpanContext } from '@sentry/types';\n\nimport { Transaction } from '../../transaction';\n\n/**\n * Checks if a given value is a valid measurement value.\n */\nexport function isMeasurementValue(value: unknown): value is number {\n return typeof value === 'number' && isFinite(value);\n}\n\n/**\n * Helper function to start child on transactions. This function will make sure that the transaction will\n * use the start timestamp of the created child span if it is earlier than the transactions actual\n * start timestamp.\n */\nexport function _startChild(transaction: Transaction, { startTimestamp, ...ctx }: SpanContext): Span {\n if (startTimestamp && transaction.startTimestamp > startTimestamp) {\n transaction.startTimestamp = startTimestamp;\n }\n\n return transaction.startChild({\n startTimestamp,\n ...ctx,\n });\n}\n","/* eslint-disable max-lines */\nimport { Measurements } from '@sentry/types';\nimport { browserPerformanceTimeOrigin, getGlobalObject, htmlTreeAsString, logger } from '@sentry/utils';\n\nimport { Transaction } from '../../transaction';\nimport { msToSec } from '../../utils';\nimport { getCLS, LayoutShift } from '../web-vitals/getCLS';\nimport { getFID } from '../web-vitals/getFID';\nimport { getLCP, LargestContentfulPaint } from '../web-vitals/getLCP';\nimport { getVisibilityWatcher } from '../web-vitals/lib/getVisibilityWatcher';\nimport { NavigatorDeviceMemory, NavigatorNetworkInformation } from '../web-vitals/types';\nimport { _startChild, isMeasurementValue } from './utils';\n\nconst global = getGlobalObject();\n\nfunction getBrowserPerformanceAPI(): Performance | undefined {\n return global && global.addEventListener && global.performance;\n}\n\nlet _performanceCursor: number = 0;\n\nlet _measurements: Measurements = {};\nlet _lcpEntry: LargestContentfulPaint | undefined;\nlet _clsEntry: LayoutShift | undefined;\n\n/**\n * Start tracking web vitals\n */\nexport function startTrackingWebVitals(reportAllChanges: boolean = false): void {\n const performance = getBrowserPerformanceAPI();\n if (performance && browserPerformanceTimeOrigin) {\n if (performance.mark) {\n global.performance.mark('sentry-tracing-init');\n }\n _trackCLS();\n _trackLCP(reportAllChanges);\n _trackFID();\n }\n}\n\n/** Starts tracking the Cumulative Layout Shift on the current page. */\nfunction _trackCLS(): void {\n // See:\n // https://web.dev/evolving-cls/\n // https://web.dev/cls-web-tooling/\n getCLS(metric => {\n const entry = metric.entries.pop();\n if (!entry) {\n return;\n }\n\n __DEBUG_BUILD__ && logger.log('[Measurements] Adding CLS');\n _measurements['cls'] = { value: metric.value, unit: 'millisecond' };\n _clsEntry = entry as LayoutShift;\n });\n}\n\n/** Starts tracking the Largest Contentful Paint on the current page. */\nfunction _trackLCP(reportAllChanges: boolean): void {\n getLCP(metric => {\n const entry = metric.entries.pop();\n if (!entry) {\n return;\n }\n\n const timeOrigin = msToSec(browserPerformanceTimeOrigin as number);\n const startTime = msToSec(entry.startTime);\n __DEBUG_BUILD__ && logger.log('[Measurements] Adding LCP');\n _measurements['lcp'] = { value: metric.value, unit: 'millisecond' };\n _measurements['mark.lcp'] = { value: timeOrigin + startTime, unit: 'second' };\n _lcpEntry = entry as LargestContentfulPaint;\n }, reportAllChanges);\n}\n\n/** Starts tracking the First Input Delay on the current page. */\nfunction _trackFID(): void {\n getFID(metric => {\n const entry = metric.entries.pop();\n if (!entry) {\n return;\n }\n\n const timeOrigin = msToSec(browserPerformanceTimeOrigin as number);\n const startTime = msToSec(entry.startTime);\n __DEBUG_BUILD__ && logger.log('[Measurements] Adding FID');\n _measurements['fid'] = { value: metric.value, unit: 'millisecond' };\n _measurements['mark.fid'] = { value: timeOrigin + startTime, unit: 'second' };\n });\n}\n\n/** Add performance related spans to a transaction */\nexport function addPerformanceEntries(transaction: Transaction): void {\n const performance = getBrowserPerformanceAPI();\n if (!performance || !global.performance.getEntries || !browserPerformanceTimeOrigin) {\n // Gatekeeper if performance API not available\n return;\n }\n\n __DEBUG_BUILD__ && logger.log('[Tracing] Adding & adjusting spans using Performance API');\n const timeOrigin = msToSec(browserPerformanceTimeOrigin);\n\n const performanceEntries = performance.getEntries();\n\n let responseStartTimestamp: number | undefined;\n let requestStartTimestamp: number | undefined;\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n performanceEntries.slice(_performanceCursor).forEach((entry: Record) => {\n const startTime = msToSec(entry.startTime);\n const duration = msToSec(entry.duration);\n\n if (transaction.op === 'navigation' && timeOrigin + startTime < transaction.startTimestamp) {\n return;\n }\n\n switch (entry.entryType) {\n case 'navigation': {\n _addNavigationSpans(transaction, entry, timeOrigin);\n responseStartTimestamp = timeOrigin + msToSec(entry.responseStart);\n requestStartTimestamp = timeOrigin + msToSec(entry.requestStart);\n break;\n }\n case 'mark':\n case 'paint':\n case 'measure': {\n const startTimestamp = _addMeasureSpans(transaction, entry, startTime, duration, timeOrigin);\n\n // capture web vitals\n const firstHidden = getVisibilityWatcher();\n // Only report if the page wasn't hidden prior to the web vital.\n const shouldRecord = entry.startTime < firstHidden.firstHiddenTime;\n\n if (entry.name === 'first-paint' && shouldRecord) {\n __DEBUG_BUILD__ && logger.log('[Measurements] Adding FP');\n _measurements['fp'] = { value: entry.startTime, unit: 'millisecond' };\n _measurements['mark.fp'] = { value: startTimestamp, unit: 'second' };\n }\n if (entry.name === 'first-contentful-paint' && shouldRecord) {\n __DEBUG_BUILD__ && logger.log('[Measurements] Adding FCP');\n _measurements['fcp'] = { value: entry.startTime, unit: 'millisecond' };\n _measurements['mark.fcp'] = { value: startTimestamp, unit: 'second' };\n }\n break;\n }\n case 'resource': {\n const resourceName = (entry.name as string).replace(global.location.origin, '');\n _addResourceSpans(transaction, entry, resourceName, startTime, duration, timeOrigin);\n break;\n }\n default:\n // Ignore other entry types.\n }\n });\n\n _performanceCursor = Math.max(performanceEntries.length - 1, 0);\n\n _trackNavigator(transaction);\n\n // Measurements are only available for pageload transactions\n if (transaction.op === 'pageload') {\n // Generate TTFB (Time to First Byte), which measured as the time between the beginning of the transaction and the\n // start of the response in milliseconds\n if (typeof responseStartTimestamp === 'number') {\n __DEBUG_BUILD__ && logger.log('[Measurements] Adding TTFB');\n _measurements['ttfb'] = {\n value: (responseStartTimestamp - transaction.startTimestamp) * 1000,\n unit: 'millisecond',\n };\n\n if (typeof requestStartTimestamp === 'number' && requestStartTimestamp <= responseStartTimestamp) {\n // Capture the time spent making the request and receiving the first byte of the response.\n // This is the time between the start of the request and the start of the response in milliseconds.\n _measurements['ttfb.requestTime'] = {\n value: (responseStartTimestamp - requestStartTimestamp) * 1000,\n unit: 'second',\n };\n }\n }\n\n ['fcp', 'fp', 'lcp'].forEach(name => {\n if (!_measurements[name] || timeOrigin >= transaction.startTimestamp) {\n return;\n }\n // The web vitals, fcp, fp, lcp, and ttfb, all measure relative to timeOrigin.\n // Unfortunately, timeOrigin is not captured within the transaction span data, so these web vitals will need\n // to be adjusted to be relative to transaction.startTimestamp.\n const oldValue = _measurements[name].value;\n const measurementTimestamp = timeOrigin + msToSec(oldValue);\n\n // normalizedValue should be in milliseconds\n const normalizedValue = Math.abs((measurementTimestamp - transaction.startTimestamp) * 1000);\n const delta = normalizedValue - oldValue;\n\n __DEBUG_BUILD__ &&\n logger.log(`[Measurements] Normalized ${name} from ${oldValue} to ${normalizedValue} (${delta})`);\n _measurements[name].value = normalizedValue;\n });\n\n if (_measurements['mark.fid'] && _measurements['fid']) {\n // create span for FID\n _startChild(transaction, {\n description: 'first input delay',\n endTimestamp: _measurements['mark.fid'].value + msToSec(_measurements['fid'].value),\n op: 'web.vitals',\n startTimestamp: _measurements['mark.fid'].value,\n });\n }\n\n // If FCP is not recorded we should not record the cls value\n // according to the new definition of CLS.\n if (!('fcp' in _measurements)) {\n delete _measurements.cls;\n }\n\n Object.keys(_measurements).forEach(measurementName => {\n transaction.setMeasurement(\n measurementName,\n _measurements[measurementName].value,\n _measurements[measurementName].unit,\n );\n });\n\n _tagMetricInfo(transaction);\n }\n\n _lcpEntry = undefined;\n _clsEntry = undefined;\n _measurements = {};\n}\n\n/** Create measure related spans */\nexport function _addMeasureSpans(\n transaction: Transaction,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n entry: Record,\n startTime: number,\n duration: number,\n timeOrigin: number,\n): number {\n const measureStartTimestamp = timeOrigin + startTime;\n const measureEndTimestamp = measureStartTimestamp + duration;\n\n _startChild(transaction, {\n description: entry.name as string,\n endTimestamp: measureEndTimestamp,\n op: entry.entryType as string,\n startTimestamp: measureStartTimestamp,\n });\n\n return measureStartTimestamp;\n}\n\n/** Instrument navigation entries */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction _addNavigationSpans(transaction: Transaction, entry: Record, timeOrigin: number): void {\n ['unloadEvent', 'redirect', 'domContentLoadedEvent', 'loadEvent', 'connect'].forEach(event => {\n _addPerformanceNavigationTiming(transaction, entry, event, timeOrigin);\n });\n _addPerformanceNavigationTiming(transaction, entry, 'secureConnection', timeOrigin, 'TLS/SSL', 'connectEnd');\n _addPerformanceNavigationTiming(transaction, entry, 'fetch', timeOrigin, 'cache', 'domainLookupStart');\n _addPerformanceNavigationTiming(transaction, entry, 'domainLookup', timeOrigin, 'DNS');\n _addRequest(transaction, entry, timeOrigin);\n}\n\n/** Create performance navigation related spans */\nfunction _addPerformanceNavigationTiming(\n transaction: Transaction,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n entry: Record,\n event: string,\n timeOrigin: number,\n description?: string,\n eventEnd?: string,\n): void {\n const end = eventEnd ? (entry[eventEnd] as number | undefined) : (entry[`${event}End`] as number | undefined);\n const start = entry[`${event}Start`] as number | undefined;\n if (!start || !end) {\n return;\n }\n _startChild(transaction, {\n op: 'browser',\n description: description ?? event,\n startTimestamp: timeOrigin + msToSec(start),\n endTimestamp: timeOrigin + msToSec(end),\n });\n}\n\n/** Create request and response related spans */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction _addRequest(transaction: Transaction, entry: Record, timeOrigin: number): void {\n _startChild(transaction, {\n op: 'browser',\n description: 'request',\n startTimestamp: timeOrigin + msToSec(entry.requestStart as number),\n endTimestamp: timeOrigin + msToSec(entry.responseEnd as number),\n });\n\n _startChild(transaction, {\n op: 'browser',\n description: 'response',\n startTimestamp: timeOrigin + msToSec(entry.responseStart as number),\n endTimestamp: timeOrigin + msToSec(entry.responseEnd as number),\n });\n}\n\nexport interface ResourceEntry extends Record {\n initiatorType?: string;\n transferSize?: number;\n encodedBodySize?: number;\n decodedBodySize?: number;\n}\n\n/** Create resource-related spans */\nexport function _addResourceSpans(\n transaction: Transaction,\n entry: ResourceEntry,\n resourceName: string,\n startTime: number,\n duration: number,\n timeOrigin: number,\n): void {\n // we already instrument based on fetch and xhr, so we don't need to\n // duplicate spans here.\n if (entry.initiatorType === 'xmlhttprequest' || entry.initiatorType === 'fetch') {\n return;\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const data: Record = {};\n if ('transferSize' in entry) {\n data['Transfer Size'] = entry.transferSize;\n }\n if ('encodedBodySize' in entry) {\n data['Encoded Body Size'] = entry.encodedBodySize;\n }\n if ('decodedBodySize' in entry) {\n data['Decoded Body Size'] = entry.decodedBodySize;\n }\n\n const startTimestamp = timeOrigin + startTime;\n const endTimestamp = startTimestamp + duration;\n\n _startChild(transaction, {\n description: resourceName,\n endTimestamp,\n op: entry.initiatorType ? `resource.${entry.initiatorType}` : 'resource',\n startTimestamp,\n data,\n });\n}\n\n/**\n * Capture the information of the user agent.\n */\nfunction _trackNavigator(transaction: Transaction): void {\n const navigator = global.navigator as null | (Navigator & NavigatorNetworkInformation & NavigatorDeviceMemory);\n if (!navigator) {\n return;\n }\n\n // track network connectivity\n const connection = navigator.connection;\n if (connection) {\n if (connection.effectiveType) {\n transaction.setTag('effectiveConnectionType', connection.effectiveType);\n }\n\n if (connection.type) {\n transaction.setTag('connectionType', connection.type);\n }\n\n if (isMeasurementValue(connection.rtt)) {\n _measurements['connection.rtt'] = { value: connection.rtt, unit: 'millisecond' };\n }\n\n if (isMeasurementValue(connection.downlink)) {\n _measurements['connection.downlink'] = { value: connection.downlink, unit: '' }; // unit is empty string for now, while relay doesn't support download speed units\n }\n }\n\n if (isMeasurementValue(navigator.deviceMemory)) {\n transaction.setTag('deviceMemory', `${navigator.deviceMemory} GB`);\n }\n\n if (isMeasurementValue(navigator.hardwareConcurrency)) {\n transaction.setTag('hardwareConcurrency', String(navigator.hardwareConcurrency));\n }\n}\n\n/** Add LCP / CLS data to transaction to allow debugging */\nfunction _tagMetricInfo(transaction: Transaction): void {\n if (_lcpEntry) {\n __DEBUG_BUILD__ && logger.log('[Measurements] Adding LCP Data');\n\n // Capture Properties of the LCP element that contributes to the LCP.\n\n if (_lcpEntry.element) {\n transaction.setTag('lcp.element', htmlTreeAsString(_lcpEntry.element));\n }\n\n if (_lcpEntry.id) {\n transaction.setTag('lcp.id', _lcpEntry.id);\n }\n\n if (_lcpEntry.url) {\n // Trim URL to the first 200 characters.\n transaction.setTag('lcp.url', _lcpEntry.url.trim().slice(0, 200));\n }\n\n transaction.setTag('lcp.size', _lcpEntry.size);\n }\n\n // See: https://developer.mozilla.org/en-US/docs/Web/API/LayoutShift\n if (_clsEntry && _clsEntry.sources) {\n __DEBUG_BUILD__ && logger.log('[Measurements] Adding CLS Data');\n _clsEntry.sources.forEach((source, index) =>\n transaction.setTag(`cls.source.${index + 1}`, htmlTreeAsString(source.node)),\n );\n }\n}\n","/*\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { bindReporter } from './lib/bindReporter';\nimport { initMetric } from './lib/initMetric';\nimport { observe, PerformanceEntryHandler } from './lib/observe';\nimport { onHidden } from './lib/onHidden';\nimport { ReportHandler } from './types';\n\n// https://wicg.github.io/layout-instability/#sec-layout-shift\nexport interface LayoutShift extends PerformanceEntry {\n value: number;\n hadRecentInput: boolean;\n sources: Array;\n toJSON(): Record;\n}\n\nexport interface LayoutShiftAttribution {\n node?: Node;\n previousRect: DOMRectReadOnly;\n currentRect: DOMRectReadOnly;\n}\n\nexport const getCLS = (onReport: ReportHandler, reportAllChanges?: boolean): void => {\n const metric = initMetric('CLS', 0);\n let report: ReturnType;\n\n let sessionValue = 0;\n let sessionEntries: PerformanceEntry[] = [];\n\n const entryHandler = (entry: LayoutShift): void => {\n // Only count layout shifts without recent user input.\n // TODO: Figure out why entry can be undefined\n if (entry && !entry.hadRecentInput) {\n const firstSessionEntry = sessionEntries[0];\n const lastSessionEntry = sessionEntries[sessionEntries.length - 1];\n\n // If the entry occurred less than 1 second after the previous entry and\n // less than 5 seconds after the first entry in the session, include the\n // entry in the current session. Otherwise, start a new session.\n if (\n sessionValue &&\n sessionEntries.length !== 0 &&\n entry.startTime - lastSessionEntry.startTime < 1000 &&\n entry.startTime - firstSessionEntry.startTime < 5000\n ) {\n sessionValue += entry.value;\n sessionEntries.push(entry);\n } else {\n sessionValue = entry.value;\n sessionEntries = [entry];\n }\n\n // If the current session value is larger than the current CLS value,\n // update CLS and the entries contributing to it.\n if (sessionValue > metric.value) {\n metric.value = sessionValue;\n metric.entries = sessionEntries;\n if (report) {\n report();\n }\n }\n }\n };\n\n const po = observe('layout-shift', entryHandler as PerformanceEntryHandler);\n if (po) {\n report = bindReporter(onReport, metric, reportAllChanges);\n\n onHidden(() => {\n po.takeRecords().map(entryHandler as PerformanceEntryHandler);\n report(true);\n });\n }\n};\n","/*\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { bindReporter } from './lib/bindReporter';\nimport { getVisibilityWatcher } from './lib/getVisibilityWatcher';\nimport { initMetric } from './lib/initMetric';\nimport { observe, PerformanceEntryHandler } from './lib/observe';\nimport { onHidden } from './lib/onHidden';\nimport { PerformanceEventTiming, ReportHandler } from './types';\n\nexport const getFID = (onReport: ReportHandler, reportAllChanges?: boolean): void => {\n const visibilityWatcher = getVisibilityWatcher();\n const metric = initMetric('FID');\n let report: ReturnType;\n\n const entryHandler = (entry: PerformanceEventTiming): void => {\n // Only report if the page wasn't hidden prior to the first input.\n if (report && entry.startTime < visibilityWatcher.firstHiddenTime) {\n metric.value = entry.processingStart - entry.startTime;\n metric.entries.push(entry);\n report(true);\n }\n };\n\n const po = observe('first-input', entryHandler as PerformanceEntryHandler);\n if (po) {\n report = bindReporter(onReport, metric, reportAllChanges);\n onHidden(() => {\n po.takeRecords().map(entryHandler as PerformanceEntryHandler);\n po.disconnect();\n }, true);\n }\n};\n","/* eslint-disable max-lines */\nimport type { Span } from '@sentry/types';\nimport {\n addInstrumentationHandler,\n BAGGAGE_HEADER_NAME,\n isInstanceOf,\n isMatchingPattern,\n mergeAndSerializeBaggage,\n} from '@sentry/utils';\n\nimport { getActiveTransaction, hasTracingEnabled } from '../utils';\n\nexport const DEFAULT_TRACING_ORIGINS = ['localhost', /^\\//];\n\n/** Options for Request Instrumentation */\nexport interface RequestInstrumentationOptions {\n /**\n * List of strings / regex where the integration should create Spans out of. Additionally this will be used\n * to define which outgoing requests the `sentry-trace` header will be attached to.\n *\n * Default: ['localhost', /^\\//] {@see DEFAULT_TRACING_ORIGINS}\n */\n tracingOrigins: Array;\n\n /**\n * Flag to disable patching all together for fetch requests.\n *\n * Default: true\n */\n traceFetch: boolean;\n\n /**\n * Flag to disable patching all together for xhr requests.\n *\n * Default: true\n */\n traceXHR: boolean;\n\n /**\n * This function will be called before creating a span for a request with the given url.\n * Return false if you don't want a span for the given url.\n *\n * By default it uses the `tracingOrigins` options as a url match.\n */\n shouldCreateSpanForRequest?(url: string): boolean;\n}\n\n/** Data returned from fetch callback */\nexport interface FetchData {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n args: any[]; // the arguments passed to the fetch call itself\n fetchData?: {\n method: string;\n url: string;\n // span_id\n __span?: string;\n };\n\n // TODO Should this be unknown instead? If we vendor types, make it a Response\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n response?: any;\n error?: unknown;\n\n startTimestamp: number;\n endTimestamp?: number;\n}\n\n/** Data returned from XHR request */\nexport interface XHRData {\n xhr?: {\n __sentry_xhr__?: {\n method: string;\n url: string;\n status_code: number;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n data: Record;\n };\n __sentry_xhr_span_id__?: string;\n setRequestHeader?: (key: string, val: string) => void;\n getRequestHeader?: (key: string) => string;\n __sentry_own_request__?: boolean;\n };\n startTimestamp: number;\n endTimestamp?: number;\n}\n\ntype PolymorphicRequestHeaders =\n | Record\n | Array<[string, string]>\n // the below is not preicsely the Header type used in Request, but it'll pass duck-typing\n | {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n [key: string]: any;\n append: (key: string, value: string) => void;\n get: (key: string) => string;\n };\n\nexport const defaultRequestInstrumentationOptions: RequestInstrumentationOptions = {\n traceFetch: true,\n traceXHR: true,\n tracingOrigins: DEFAULT_TRACING_ORIGINS,\n};\n\n/** Registers span creators for xhr and fetch requests */\nexport function instrumentOutgoingRequests(_options?: Partial): void {\n // eslint-disable-next-line @typescript-eslint/unbound-method\n const { traceFetch, traceXHR, tracingOrigins, shouldCreateSpanForRequest } = {\n ...defaultRequestInstrumentationOptions,\n ..._options,\n };\n\n // We should cache url -> decision so that we don't have to compute\n // regexp everytime we create a request.\n const urlMap: Record = {};\n\n const defaultShouldCreateSpan = (url: string): boolean => {\n if (urlMap[url]) {\n return urlMap[url];\n }\n const origins = tracingOrigins;\n urlMap[url] =\n origins.some((origin: string | RegExp) => isMatchingPattern(url, origin)) &&\n !isMatchingPattern(url, 'sentry_key');\n return urlMap[url];\n };\n\n // We want that our users don't have to re-implement shouldCreateSpanForRequest themselves\n // That's why we filter out already unwanted Spans from tracingOrigins\n let shouldCreateSpan = defaultShouldCreateSpan;\n if (typeof shouldCreateSpanForRequest === 'function') {\n shouldCreateSpan = (url: string) => {\n return defaultShouldCreateSpan(url) && shouldCreateSpanForRequest(url);\n };\n }\n\n const spans: Record = {};\n\n if (traceFetch) {\n addInstrumentationHandler('fetch', (handlerData: FetchData) => {\n fetchCallback(handlerData, shouldCreateSpan, spans);\n });\n }\n\n if (traceXHR) {\n addInstrumentationHandler('xhr', (handlerData: XHRData) => {\n xhrCallback(handlerData, shouldCreateSpan, spans);\n });\n }\n}\n\n/**\n * Create and track fetch request spans\n */\nexport function fetchCallback(\n handlerData: FetchData,\n shouldCreateSpan: (url: string) => boolean,\n spans: Record,\n): void {\n if (!hasTracingEnabled() || !(handlerData.fetchData && shouldCreateSpan(handlerData.fetchData.url))) {\n return;\n }\n\n if (handlerData.endTimestamp) {\n const spanId = handlerData.fetchData.__span;\n if (!spanId) return;\n\n const span = spans[spanId];\n if (span) {\n if (handlerData.response) {\n // TODO (kmclb) remove this once types PR goes through\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n span.setHttpStatus(handlerData.response.status);\n } else if (handlerData.error) {\n span.setStatus('internal_error');\n }\n span.finish();\n\n // eslint-disable-next-line @typescript-eslint/no-dynamic-delete\n delete spans[spanId];\n }\n return;\n }\n\n const activeTransaction = getActiveTransaction();\n if (activeTransaction) {\n const span = activeTransaction.startChild({\n data: {\n ...handlerData.fetchData,\n type: 'fetch',\n },\n description: `${handlerData.fetchData.method} ${handlerData.fetchData.url}`,\n op: 'http.client',\n });\n\n handlerData.fetchData.__span = span.spanId;\n spans[span.spanId] = span;\n\n const request = (handlerData.args[0] = handlerData.args[0] as string | Request);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const options = (handlerData.args[1] = (handlerData.args[1] as { [key: string]: any }) || {});\n options.headers = addTracingHeaders(request, span, options);\n }\n}\n\nfunction addTracingHeaders(\n request: string | Request,\n span: Span,\n options: { [key: string]: any },\n): PolymorphicRequestHeaders {\n let headers = options.headers;\n\n if (isInstanceOf(request, Request)) {\n headers = (request as Request).headers;\n }\n const incomingBaggage = span.getBaggage();\n\n if (headers) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n if (typeof headers.append === 'function') {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n headers.append('sentry-trace', span.toTraceparent());\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n headers.append(BAGGAGE_HEADER_NAME, mergeAndSerializeBaggage(incomingBaggage, headers.get(BAGGAGE_HEADER_NAME)));\n } else if (Array.isArray(headers)) {\n const [, headerBaggageString] = headers.find(([key, _]) => key === BAGGAGE_HEADER_NAME);\n headers = [\n ...headers,\n ['sentry-trace', span.toTraceparent()],\n [BAGGAGE_HEADER_NAME, mergeAndSerializeBaggage(incomingBaggage, headerBaggageString)],\n ];\n } else {\n headers = {\n ...headers,\n 'sentry-trace': span.toTraceparent(),\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n baggage: mergeAndSerializeBaggage(incomingBaggage, headers.baggage),\n };\n }\n } else {\n headers = { 'sentry-trace': span.toTraceparent(), baggage: mergeAndSerializeBaggage(incomingBaggage) };\n }\n return headers;\n}\n\n/**\n * Create and track xhr request spans\n */\nexport function xhrCallback(\n handlerData: XHRData,\n shouldCreateSpan: (url: string) => boolean,\n spans: Record,\n): void {\n if (\n !hasTracingEnabled() ||\n (handlerData.xhr && handlerData.xhr.__sentry_own_request__) ||\n !(handlerData.xhr && handlerData.xhr.__sentry_xhr__ && shouldCreateSpan(handlerData.xhr.__sentry_xhr__.url))\n ) {\n return;\n }\n\n const xhr = handlerData.xhr.__sentry_xhr__;\n\n // check first if the request has finished and is tracked by an existing span which should now end\n if (handlerData.endTimestamp) {\n const spanId = handlerData.xhr.__sentry_xhr_span_id__;\n if (!spanId) return;\n\n const span = spans[spanId];\n if (span) {\n span.setHttpStatus(xhr.status_code);\n span.finish();\n\n // eslint-disable-next-line @typescript-eslint/no-dynamic-delete\n delete spans[spanId];\n }\n return;\n }\n\n // if not, create a new span to track it\n const activeTransaction = getActiveTransaction();\n if (activeTransaction) {\n const span = activeTransaction.startChild({\n data: {\n ...xhr.data,\n type: 'xhr',\n method: xhr.method,\n url: xhr.url,\n },\n description: `${xhr.method} ${xhr.url}`,\n op: 'http.client',\n });\n\n handlerData.xhr.__sentry_xhr_span_id__ = span.spanId;\n spans[handlerData.xhr.__sentry_xhr_span_id__] = span;\n\n if (handlerData.xhr.setRequestHeader) {\n try {\n handlerData.xhr.setRequestHeader('sentry-trace', span.toTraceparent());\n\n const headerBaggageString =\n handlerData.xhr.getRequestHeader && handlerData.xhr.getRequestHeader(BAGGAGE_HEADER_NAME);\n\n handlerData.xhr.setRequestHeader(\n BAGGAGE_HEADER_NAME,\n mergeAndSerializeBaggage(span.getBaggage(), headerBaggageString),\n );\n } catch (_) {\n // Error: InvalidStateError: Failed to execute 'setRequestHeader' on 'XMLHttpRequest': The object's state must be OPENED.\n }\n }\n }\n}\n","import { Transaction, TransactionContext } from '@sentry/types';\nimport { addInstrumentationHandler, getGlobalObject, logger } from '@sentry/utils';\n\nconst global = getGlobalObject();\n\n/**\n * Default function implementing pageload and navigation transactions\n */\nexport function instrumentRoutingWithDefaults(\n customStartTransaction: (context: TransactionContext) => T | undefined,\n startTransactionOnPageLoad: boolean = true,\n startTransactionOnLocationChange: boolean = true,\n): void {\n if (!global || !global.location) {\n __DEBUG_BUILD__ && logger.warn('Could not initialize routing instrumentation due to invalid location');\n return;\n }\n\n let startingUrl: string | undefined = global.location.href;\n\n let activeTransaction: T | undefined;\n if (startTransactionOnPageLoad) {\n activeTransaction = customStartTransaction({ name: global.location.pathname, op: 'pageload' });\n }\n\n if (startTransactionOnLocationChange) {\n addInstrumentationHandler('history', ({ to, from }: { to: string; from?: string }) => {\n /**\n * This early return is there to account for some cases where a navigation transaction starts right after\n * long-running pageload. We make sure that if `from` is undefined and a valid `startingURL` exists, we don't\n * create an uneccessary navigation transaction.\n *\n * This was hard to duplicate, but this behavior stopped as soon as this fix was applied. This issue might also\n * only be caused in certain development environments where the usage of a hot module reloader is causing\n * errors.\n */\n if (from === undefined && startingUrl && startingUrl.indexOf(to) !== -1) {\n startingUrl = undefined;\n return;\n }\n\n if (from !== to) {\n startingUrl = undefined;\n if (activeTransaction) {\n __DEBUG_BUILD__ && logger.log(`[Tracing] Finishing current transaction with op: ${activeTransaction.op}`);\n // If there's an open transaction on the scope, we need to finish it before creating an new one.\n activeTransaction.finish();\n }\n activeTransaction = customStartTransaction({ name: global.location.pathname, op: 'navigation' });\n }\n });\n }\n}\n","import { Hub } from '@sentry/hub';\nimport { EventProcessor, Integration, Transaction, TransactionContext } from '@sentry/types';\nimport { getGlobalObject, logger, parseBaggageString } from '@sentry/utils';\n\nimport { startIdleTransaction } from '../hubextensions';\nimport { DEFAULT_FINAL_TIMEOUT, DEFAULT_IDLE_TIMEOUT } from '../idletransaction';\nimport { extractTraceparentData } from '../utils';\nimport { registerBackgroundTabDetection } from './backgroundtab';\nimport { addPerformanceEntries, startTrackingWebVitals } from './metrics';\nimport {\n defaultRequestInstrumentationOptions,\n instrumentOutgoingRequests,\n RequestInstrumentationOptions,\n} from './request';\nimport { instrumentRoutingWithDefaults } from './router';\n\nexport const BROWSER_TRACING_INTEGRATION_ID = 'BrowserTracing';\n\n/** Options for Browser Tracing integration */\nexport interface BrowserTracingOptions extends RequestInstrumentationOptions {\n /**\n * The time to wait in ms until the transaction will be finished during an idle state. An idle state is defined\n * by a moment where there are no in-progress spans.\n *\n * The transaction will use the end timestamp of the last finished span as the endtime for the transaction.\n * If there are still active spans when this the `idleTimeout` is set, the `idleTimeout` will get reset.\n * Time is in ms.\n *\n * Default: 1000\n */\n idleTimeout: number;\n\n /**\n * The max duration for a transaction. If a transaction duration hits the `finalTimeout` value, it\n * will be finished.\n * Time is in ms.\n *\n * Default: 30000\n */\n finalTimeout: number;\n\n /**\n * Flag to enable/disable creation of `navigation` transaction on history changes.\n *\n * Default: true\n */\n startTransactionOnLocationChange: boolean;\n\n /**\n * Flag to enable/disable creation of `pageload` transaction on first pageload.\n *\n * Default: true\n */\n startTransactionOnPageLoad: boolean;\n\n /**\n * Flag Transactions where tabs moved to background with \"cancelled\". Browser background tab timing is\n * not suited towards doing precise measurements of operations. By default, we recommend that this option\n * be enabled as background transactions can mess up your statistics in nondeterministic ways.\n *\n * Default: true\n */\n markBackgroundTransactions: boolean;\n\n /**\n * _metricOptions allows the user to send options to change how metrics are collected.\n *\n * _metricOptions is currently experimental.\n *\n * Default: undefined\n */\n _metricOptions?: Partial<{ _reportAllChanges: boolean }>;\n\n /**\n * beforeNavigate is called before a pageload/navigation transaction is created and allows users to modify transaction\n * context data, or drop the transaction entirely (by setting `sampled = false` in the context).\n *\n * Note: For legacy reasons, transactions can also be dropped by returning `undefined`.\n *\n * @param context: The context data which will be passed to `startTransaction` by default\n *\n * @returns A (potentially) modified context object, with `sampled = false` if the transaction should be dropped.\n */\n beforeNavigate?(context: TransactionContext): TransactionContext | undefined;\n\n /**\n * Instrumentation that creates routing change transactions. By default creates\n * pageload and navigation transactions.\n */\n routingInstrumentation(\n customStartTransaction: (context: TransactionContext) => T | undefined,\n startTransactionOnPageLoad?: boolean,\n startTransactionOnLocationChange?: boolean,\n ): void;\n}\n\nconst DEFAULT_BROWSER_TRACING_OPTIONS = {\n idleTimeout: DEFAULT_IDLE_TIMEOUT,\n finalTimeout: DEFAULT_FINAL_TIMEOUT,\n markBackgroundTransactions: true,\n routingInstrumentation: instrumentRoutingWithDefaults,\n startTransactionOnLocationChange: true,\n startTransactionOnPageLoad: true,\n ...defaultRequestInstrumentationOptions,\n};\n\n/**\n * The Browser Tracing integration automatically instruments browser pageload/navigation\n * actions as transactions, and captures requests, metrics and errors as spans.\n *\n * The integration can be configured with a variety of options, and can be extended to use\n * any routing library. This integration uses {@see IdleTransaction} to create transactions.\n */\nexport class BrowserTracing implements Integration {\n // This class currently doesn't have a static `id` field like the other integration classes, because it prevented\n // @sentry/tracing from being treeshaken. Tree shakers do not like static fields, because they behave like side effects.\n // TODO: Come up with a better plan, than using static fields on integration classes, and use that plan on all\n // integrations.\n\n /** Browser Tracing integration options */\n public options: BrowserTracingOptions;\n\n /**\n * @inheritDoc\n */\n public name: string = BROWSER_TRACING_INTEGRATION_ID;\n\n private _getCurrentHub?: () => Hub;\n\n private readonly _emitOptionsWarning?: boolean;\n\n public constructor(_options?: Partial) {\n let tracingOrigins = defaultRequestInstrumentationOptions.tracingOrigins;\n // NOTE: Logger doesn't work in constructors, as it's initialized after integrations instances\n if (_options) {\n if (_options.tracingOrigins && Array.isArray(_options.tracingOrigins) && _options.tracingOrigins.length !== 0) {\n tracingOrigins = _options.tracingOrigins;\n } else {\n __DEBUG_BUILD__ && (this._emitOptionsWarning = true);\n }\n }\n\n this.options = {\n ...DEFAULT_BROWSER_TRACING_OPTIONS,\n ..._options,\n tracingOrigins,\n };\n\n const { _metricOptions } = this.options;\n startTrackingWebVitals(_metricOptions && _metricOptions._reportAllChanges);\n }\n\n /**\n * @inheritDoc\n */\n public setupOnce(_: (callback: EventProcessor) => void, getCurrentHub: () => Hub): void {\n this._getCurrentHub = getCurrentHub;\n\n if (this._emitOptionsWarning) {\n __DEBUG_BUILD__ &&\n logger.warn(\n '[Tracing] You need to define `tracingOrigins` in the options. Set an array of urls or patterns to trace.',\n );\n __DEBUG_BUILD__ &&\n logger.warn(\n `[Tracing] We added a reasonable default for you: ${defaultRequestInstrumentationOptions.tracingOrigins}`,\n );\n }\n\n // eslint-disable-next-line @typescript-eslint/unbound-method\n const {\n routingInstrumentation: instrumentRouting,\n startTransactionOnLocationChange,\n startTransactionOnPageLoad,\n markBackgroundTransactions,\n traceFetch,\n traceXHR,\n tracingOrigins,\n shouldCreateSpanForRequest,\n } = this.options;\n\n instrumentRouting(\n (context: TransactionContext) => this._createRouteTransaction(context),\n startTransactionOnPageLoad,\n startTransactionOnLocationChange,\n );\n\n if (markBackgroundTransactions) {\n registerBackgroundTabDetection();\n }\n\n instrumentOutgoingRequests({ traceFetch, traceXHR, tracingOrigins, shouldCreateSpanForRequest });\n }\n\n /** Create routing idle transaction. */\n private _createRouteTransaction(context: TransactionContext): Transaction | undefined {\n if (!this._getCurrentHub) {\n __DEBUG_BUILD__ &&\n logger.warn(`[Tracing] Did not create ${context.op} transaction because _getCurrentHub is invalid.`);\n return undefined;\n }\n\n // eslint-disable-next-line @typescript-eslint/unbound-method\n const { beforeNavigate, idleTimeout, finalTimeout } = this.options;\n\n const parentContextFromHeader = context.op === 'pageload' ? extractTraceDataFromMetaTags() : undefined;\n\n const expandedContext = {\n ...context,\n ...parentContextFromHeader,\n trimEnd: true,\n };\n const modifiedContext = typeof beforeNavigate === 'function' ? beforeNavigate(expandedContext) : expandedContext;\n\n // For backwards compatibility reasons, beforeNavigate can return undefined to \"drop\" the transaction (prevent it\n // from being sent to Sentry).\n const finalContext = modifiedContext === undefined ? { ...expandedContext, sampled: false } : modifiedContext;\n\n if (finalContext.sampled === false) {\n __DEBUG_BUILD__ &&\n logger.log(`[Tracing] Will not send ${finalContext.op} transaction because of beforeNavigate.`);\n }\n\n __DEBUG_BUILD__ && logger.log(`[Tracing] Starting ${finalContext.op} transaction on scope`);\n\n const hub = this._getCurrentHub();\n const { location } = getGlobalObject() as WindowOrWorkerGlobalScope & { location: Location };\n\n const idleTransaction = startIdleTransaction(\n hub,\n finalContext,\n idleTimeout,\n finalTimeout,\n true,\n { location }, // for use in the tracesSampler\n );\n idleTransaction.registerBeforeFinishCallback(transaction => {\n addPerformanceEntries(transaction);\n transaction.setTag(\n 'sentry_reportAllChanges',\n Boolean(this.options._metricOptions && this.options._metricOptions._reportAllChanges),\n );\n });\n\n return idleTransaction as Transaction;\n }\n}\n\n/**\n * Gets transaction context data from `sentry-trace` and `baggage` tags.\n * @returns Transaction context data or undefined neither tag exists or has valid data\n */\nexport function extractTraceDataFromMetaTags(): Partial | undefined {\n const sentrytraceValue = getMetaContent('sentry-trace');\n const baggageValue = getMetaContent('baggage');\n\n const sentrytraceData = sentrytraceValue ? extractTraceparentData(sentrytraceValue) : undefined;\n const baggage = baggageValue ? parseBaggageString(baggageValue) : undefined;\n\n // TODO more extensive checks for baggage validity/emptyness?\n if (sentrytraceData || baggage) {\n return {\n ...(sentrytraceData && sentrytraceData),\n ...(baggage && { metadata: { baggage } }),\n };\n }\n\n return undefined;\n}\n\n/** Returns the value of a meta tag */\nexport function getMetaContent(metaName: string): string | null {\n const globalObject = getGlobalObject();\n\n // DOM/querySelector is not available in all environments\n if (globalObject.document && globalObject.document.querySelector) {\n const el = globalObject.document.querySelector(`meta[name=${metaName}]`);\n return el ? el.getAttribute('content') : null;\n } else {\n return null;\n }\n}\n","import { addExtensionMethods } from './hubextensions';\nimport * as Integrations from './integrations';\n\nexport type { RequestInstrumentationOptions } from './browser';\nexport type { SpanStatusType } from './span';\n\nexport { Integrations };\n\n// This is already exported as part of `Integrations` above (and for the moment will remain so for\n// backwards compatibility), but that interferes with treeshaking, so we also export it separately\n// here.\n//\n// Previously we expected users to import tracing integrations like\n//\n// import { Integrations } from '@sentry/tracing';\n// const instance = new Integrations.BrowserTracing();\n//\n// This makes the integrations unable to be treeshaken though. To address this, we now have\n// this individual export. We now expect users to consume BrowserTracing like so:\n//\n// import { BrowserTracing } from '@sentry/tracing';\n// const instance = new BrowserTracing();\n//\n// For an example of of the new usage of BrowserTracing, see @sentry/nextjs index.client.ts\nexport { BrowserTracing, BROWSER_TRACING_INTEGRATION_ID } from './browser';\n\nexport { Span, spanStatusfromHttpCode } from './span';\n// eslint-disable-next-line deprecation/deprecation\nexport { SpanStatus } from './spanstatus';\nexport { Transaction } from './transaction';\nexport { instrumentOutgoingRequests, defaultRequestInstrumentationOptions } from './browser';\nexport { IdleTransaction } from './idletransaction';\nexport { startIdleTransaction } from './hubextensions';\n\n// Treeshakable guard to remove all code related to tracing\ndeclare const __SENTRY_TRACING__: boolean;\n\n// Guard for tree\nif (typeof __SENTRY_TRACING__ === 'undefined' || __SENTRY_TRACING__) {\n // We are patching the global object with our hub extension methods\n addExtensionMethods();\n}\n\nexport { addExtensionMethods };\n\nexport {\n extractTraceparentData,\n getActiveTransaction,\n hasTracingEnabled,\n stripUrlQueryAndFragment,\n TRACEPARENT_REGEXP,\n} from './utils';\n","export default function _extends() {\n _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n\n return _extends.apply(this, arguments);\n}","import * as React from \"react\";\nimport type { History, Location } from \"history\";\nimport { Action as NavigationType } from \"history\";\n\nimport type { RouteMatch } from \"./router\";\n\n/**\n * A Navigator is a \"location changer\"; it's how you get to different locations.\n *\n * Every history instance conforms to the Navigator interface, but the\n * distinction is useful primarily when it comes to the low-level API\n * where both the location and a navigator must be provided separately in order\n * to avoid \"tearing\" that may occur in a suspense-enabled app if the action\n * and/or location were to be read directly from the history instance.\n */\nexport type Navigator = Pick;\n\ninterface NavigationContextObject {\n basename: string;\n navigator: Navigator;\n static: boolean;\n}\n\nexport const NavigationContext = React.createContext(\n null!\n);\n\nif (__DEV__) {\n NavigationContext.displayName = \"Navigation\";\n}\n\ninterface LocationContextObject {\n location: Location;\n navigationType: NavigationType;\n}\n\nexport const LocationContext = React.createContext(\n null!\n);\n\nif (__DEV__) {\n LocationContext.displayName = \"Location\";\n}\n\ninterface RouteContextObject {\n outlet: React.ReactElement | null;\n matches: RouteMatch[];\n}\n\nexport const RouteContext = React.createContext({\n outlet: null,\n matches: [],\n});\n\nif (__DEV__) {\n RouteContext.displayName = \"Route\";\n}\n","import type { Location, Path, To } from \"history\";\nimport { parsePath } from \"history\";\n\nexport function invariant(cond: any, message: string): asserts cond {\n if (!cond) throw new Error(message);\n}\n\nexport function warning(cond: any, message: string): void {\n if (!cond) {\n // eslint-disable-next-line no-console\n if (typeof console !== \"undefined\") console.warn(message);\n\n try {\n // Welcome to debugging React Router!\n //\n // This error is thrown as a convenience so you can more easily\n // find the source for a warning that appears in the console by\n // enabling \"pause on exceptions\" in your JavaScript debugger.\n throw new Error(message);\n // eslint-disable-next-line no-empty\n } catch (e) {}\n }\n}\n\nconst alreadyWarned: Record = {};\nexport function warningOnce(key: string, cond: boolean, message: string) {\n if (!cond && !alreadyWarned[key]) {\n alreadyWarned[key] = true;\n warning(false, message);\n }\n}\n\ntype ParamParseFailed = { failed: true };\n\ntype ParamParseSegment =\n // Check here if there exists a forward slash in the string.\n Segment extends `${infer LeftSegment}/${infer RightSegment}`\n ? // If there is a forward slash, then attempt to parse each side of the\n // forward slash.\n ParamParseSegment extends infer LeftResult\n ? ParamParseSegment extends infer RightResult\n ? LeftResult extends string\n ? // If the left side is successfully parsed as a param, then check if\n // the right side can be successfully parsed as well. If both sides\n // can be parsed, then the result is a union of the two sides\n // (read: \"foo\" | \"bar\").\n RightResult extends string\n ? LeftResult | RightResult\n : LeftResult\n : // If the left side is not successfully parsed as a param, then check\n // if only the right side can be successfully parse as a param. If it\n // can, then the result is just right, else it's a failure.\n RightResult extends string\n ? RightResult\n : ParamParseFailed\n : ParamParseFailed\n : // If the left side didn't parse into a param, then just check the right\n // side.\n ParamParseSegment extends infer RightResult\n ? RightResult extends string\n ? RightResult\n : ParamParseFailed\n : ParamParseFailed\n : // If there's no forward slash, then check if this segment starts with a\n // colon. If it does, then this is a dynamic segment, so the result is\n // just the remainder of the string. Otherwise, it's a failure.\n Segment extends `:${infer Remaining}`\n ? Remaining\n : ParamParseFailed;\n\n// Attempt to parse the given string segment. If it fails, then just return the\n// plain string type as a default fallback. Otherwise return the union of the\n// parsed string literals that were referenced as dynamic segments in the route.\nexport type ParamParseKey =\n ParamParseSegment extends string\n ? ParamParseSegment\n : string;\n\n/**\n * The parameters that were parsed from the URL path.\n */\nexport type Params = {\n readonly [key in Key]: string | undefined;\n};\n\n/**\n * A route object represents a logical route, with (optionally) its child\n * routes organized in a tree-like structure.\n */\nexport interface RouteObject {\n caseSensitive?: boolean;\n children?: RouteObject[];\n element?: React.ReactNode;\n index?: boolean;\n path?: string;\n}\n\n/**\n * Returns a path with params interpolated.\n *\n * @see https://reactrouter.com/docs/en/v6/api#generatepath\n */\nexport function generatePath(path: string, params: Params = {}): string {\n return path\n .replace(/:(\\w+)/g, (_, key) => {\n invariant(params[key] != null, `Missing \":${key}\" param`);\n return params[key]!;\n })\n .replace(/\\/*\\*$/, (_) =>\n params[\"*\"] == null ? \"\" : params[\"*\"].replace(/^\\/*/, \"/\")\n );\n}\n\n/**\n * A RouteMatch contains info about how a route matched a URL.\n */\nexport interface RouteMatch {\n /**\n * The names and values of dynamic parameters in the URL.\n */\n params: Params;\n /**\n * The portion of the URL pathname that was matched.\n */\n pathname: string;\n /**\n * The portion of the URL pathname that was matched before child routes.\n */\n pathnameBase: string;\n /**\n * The route object that was used to match.\n */\n route: RouteObject;\n}\n\n/**\n * Matches the given routes to a location and returns the match data.\n *\n * @see https://reactrouter.com/docs/en/v6/api#matchroutes\n */\nexport function matchRoutes(\n routes: RouteObject[],\n locationArg: Partial | string,\n basename = \"/\"\n): RouteMatch[] | null {\n let location =\n typeof locationArg === \"string\" ? parsePath(locationArg) : locationArg;\n\n let pathname = stripBasename(location.pathname || \"/\", basename);\n\n if (pathname == null) {\n return null;\n }\n\n let branches = flattenRoutes(routes);\n rankRouteBranches(branches);\n\n let matches = null;\n for (let i = 0; matches == null && i < branches.length; ++i) {\n matches = matchRouteBranch(branches[i], pathname);\n }\n\n return matches;\n}\n\ninterface RouteMeta {\n relativePath: string;\n caseSensitive: boolean;\n childrenIndex: number;\n route: RouteObject;\n}\n\ninterface RouteBranch {\n path: string;\n score: number;\n routesMeta: RouteMeta[];\n}\n\nfunction flattenRoutes(\n routes: RouteObject[],\n branches: RouteBranch[] = [],\n parentsMeta: RouteMeta[] = [],\n parentPath = \"\"\n): RouteBranch[] {\n routes.forEach((route, index) => {\n let meta: RouteMeta = {\n relativePath: route.path || \"\",\n caseSensitive: route.caseSensitive === true,\n childrenIndex: index,\n route,\n };\n\n if (meta.relativePath.startsWith(\"/\")) {\n invariant(\n meta.relativePath.startsWith(parentPath),\n `Absolute route path \"${meta.relativePath}\" nested under path ` +\n `\"${parentPath}\" is not valid. An absolute child route path ` +\n `must start with the combined path of all its parent routes.`\n );\n\n meta.relativePath = meta.relativePath.slice(parentPath.length);\n }\n\n let path = joinPaths([parentPath, meta.relativePath]);\n let routesMeta = parentsMeta.concat(meta);\n\n // Add the children before adding this route to the array so we traverse the\n // route tree depth-first and child routes appear before their parents in\n // the \"flattened\" version.\n if (route.children && route.children.length > 0) {\n invariant(\n route.index !== true,\n `Index routes must not have child routes. Please remove ` +\n `all child routes from route path \"${path}\".`\n );\n\n flattenRoutes(route.children, branches, routesMeta, path);\n }\n\n // Routes without a path shouldn't ever match by themselves unless they are\n // index routes, so don't add them to the list of possible branches.\n if (route.path == null && !route.index) {\n return;\n }\n\n branches.push({ path, score: computeScore(path, route.index), routesMeta });\n });\n\n return branches;\n}\n\nfunction rankRouteBranches(branches: RouteBranch[]): void {\n branches.sort((a, b) =>\n a.score !== b.score\n ? b.score - a.score // Higher score first\n : compareIndexes(\n a.routesMeta.map((meta) => meta.childrenIndex),\n b.routesMeta.map((meta) => meta.childrenIndex)\n )\n );\n}\n\nconst paramRe = /^:\\w+$/;\nconst dynamicSegmentValue = 3;\nconst indexRouteValue = 2;\nconst emptySegmentValue = 1;\nconst staticSegmentValue = 10;\nconst splatPenalty = -2;\nconst isSplat = (s: string) => s === \"*\";\n\nfunction computeScore(path: string, index: boolean | undefined): number {\n let segments = path.split(\"/\");\n let initialScore = segments.length;\n if (segments.some(isSplat)) {\n initialScore += splatPenalty;\n }\n\n if (index) {\n initialScore += indexRouteValue;\n }\n\n return segments\n .filter((s) => !isSplat(s))\n .reduce(\n (score, segment) =>\n score +\n (paramRe.test(segment)\n ? dynamicSegmentValue\n : segment === \"\"\n ? emptySegmentValue\n : staticSegmentValue),\n initialScore\n );\n}\n\nfunction compareIndexes(a: number[], b: number[]): number {\n let siblings =\n a.length === b.length && a.slice(0, -1).every((n, i) => n === b[i]);\n\n return siblings\n ? // If two routes are siblings, we should try to match the earlier sibling\n // first. This allows people to have fine-grained control over the matching\n // behavior by simply putting routes with identical paths in the order they\n // want them tried.\n a[a.length - 1] - b[b.length - 1]\n : // Otherwise, it doesn't really make sense to rank non-siblings by index,\n // so they sort equally.\n 0;\n}\n\nfunction matchRouteBranch(\n branch: RouteBranch,\n pathname: string\n): RouteMatch[] | null {\n let { routesMeta } = branch;\n\n let matchedParams = {};\n let matchedPathname = \"/\";\n let matches: RouteMatch[] = [];\n for (let i = 0; i < routesMeta.length; ++i) {\n let meta = routesMeta[i];\n let end = i === routesMeta.length - 1;\n let remainingPathname =\n matchedPathname === \"/\"\n ? pathname\n : pathname.slice(matchedPathname.length) || \"/\";\n let match = matchPath(\n { path: meta.relativePath, caseSensitive: meta.caseSensitive, end },\n remainingPathname\n );\n\n if (!match) return null;\n\n Object.assign(matchedParams, match.params);\n\n let route = meta.route;\n\n matches.push({\n params: matchedParams,\n pathname: joinPaths([matchedPathname, match.pathname]),\n pathnameBase: normalizePathname(\n joinPaths([matchedPathname, match.pathnameBase])\n ),\n route,\n });\n\n if (match.pathnameBase !== \"/\") {\n matchedPathname = joinPaths([matchedPathname, match.pathnameBase]);\n }\n }\n\n return matches;\n}\n\n/**\n * A PathPattern is used to match on some portion of a URL pathname.\n */\nexport interface PathPattern {\n /**\n * A string to match against a URL pathname. May contain `:id`-style segments\n * to indicate placeholders for dynamic parameters. May also end with `/*` to\n * indicate matching the rest of the URL pathname.\n */\n path: Path;\n /**\n * Should be `true` if the static portions of the `path` should be matched in\n * the same case.\n */\n caseSensitive?: boolean;\n /**\n * Should be `true` if this pattern should match the entire URL pathname.\n */\n end?: boolean;\n}\n\n/**\n * A PathMatch contains info about how a PathPattern matched on a URL pathname.\n */\nexport interface PathMatch {\n /**\n * The names and values of dynamic parameters in the URL.\n */\n params: Params;\n /**\n * The portion of the URL pathname that was matched.\n */\n pathname: string;\n /**\n * The portion of the URL pathname that was matched before child routes.\n */\n pathnameBase: string;\n /**\n * The pattern that was used to match.\n */\n pattern: PathPattern;\n}\n\ntype Mutable = {\n -readonly [P in keyof T]: T[P];\n};\n\n/**\n * Performs pattern matching on a URL pathname and returns information about\n * the match.\n *\n * @see https://reactrouter.com/docs/en/v6/api#matchpath\n */\nexport function matchPath<\n ParamKey extends ParamParseKey,\n Path extends string\n>(\n pattern: PathPattern | Path,\n pathname: string\n): PathMatch | null {\n if (typeof pattern === \"string\") {\n pattern = { path: pattern, caseSensitive: false, end: true };\n }\n\n let [matcher, paramNames] = compilePath(\n pattern.path,\n pattern.caseSensitive,\n pattern.end\n );\n\n let match = pathname.match(matcher);\n if (!match) return null;\n\n let matchedPathname = match[0];\n let pathnameBase = matchedPathname.replace(/(.)\\/+$/, \"$1\");\n let captureGroups = match.slice(1);\n let params: Params = paramNames.reduce>(\n (memo, paramName, index) => {\n // We need to compute the pathnameBase here using the raw splat value\n // instead of using params[\"*\"] later because it will be decoded then\n if (paramName === \"*\") {\n let splatValue = captureGroups[index] || \"\";\n pathnameBase = matchedPathname\n .slice(0, matchedPathname.length - splatValue.length)\n .replace(/(.)\\/+$/, \"$1\");\n }\n\n memo[paramName] = safelyDecodeURIComponent(\n captureGroups[index] || \"\",\n paramName\n );\n return memo;\n },\n {}\n );\n\n return {\n params,\n pathname: matchedPathname,\n pathnameBase,\n pattern,\n };\n}\n\nfunction compilePath(\n path: string,\n caseSensitive = false,\n end = true\n): [RegExp, string[]] {\n warning(\n path === \"*\" || !path.endsWith(\"*\") || path.endsWith(\"/*\"),\n `Route path \"${path}\" will be treated as if it were ` +\n `\"${path.replace(/\\*$/, \"/*\")}\" because the \\`*\\` character must ` +\n `always follow a \\`/\\` in the pattern. To get rid of this warning, ` +\n `please change the route path to \"${path.replace(/\\*$/, \"/*\")}\".`\n );\n\n let paramNames: string[] = [];\n let regexpSource =\n \"^\" +\n path\n .replace(/\\/*\\*?$/, \"\") // Ignore trailing / and /*, we'll handle it below\n .replace(/^\\/*/, \"/\") // Make sure it has a leading /\n .replace(/[\\\\.*+^$?{}|()[\\]]/g, \"\\\\$&\") // Escape special regex chars\n .replace(/:(\\w+)/g, (_: string, paramName: string) => {\n paramNames.push(paramName);\n return \"([^\\\\/]+)\";\n });\n\n if (path.endsWith(\"*\")) {\n paramNames.push(\"*\");\n regexpSource +=\n path === \"*\" || path === \"/*\"\n ? \"(.*)$\" // Already matched the initial /, just match the rest\n : \"(?:\\\\/(.+)|\\\\/*)$\"; // Don't include the / in params[\"*\"]\n } else {\n regexpSource += end\n ? \"\\\\/*$\" // When matching to the end, ignore trailing slashes\n : // Otherwise, match a word boundary or a proceeding /. The word boundary restricts\n // parent routes to matching only their own words and nothing more, e.g. parent\n // route \"/home\" should not match \"/home2\".\n // Additionally, allow paths starting with `.`, `-`, `~`, and url-encoded entities,\n // but do not consume the character in the matched path so they can match against\n // nested paths.\n \"(?:(?=[.~-]|%[0-9A-F]{2})|\\\\b|\\\\/|$)\";\n }\n\n let matcher = new RegExp(regexpSource, caseSensitive ? undefined : \"i\");\n\n return [matcher, paramNames];\n}\n\nfunction safelyDecodeURIComponent(value: string, paramName: string) {\n try {\n return decodeURIComponent(value);\n } catch (error) {\n warning(\n false,\n `The value for the URL param \"${paramName}\" will not be decoded because` +\n ` the string \"${value}\" is a malformed URL segment. This is probably` +\n ` due to a bad percent encoding (${error}).`\n );\n\n return value;\n }\n}\n\n/**\n * Returns a resolved path object relative to the given pathname.\n *\n * @see https://reactrouter.com/docs/en/v6/api#resolvepath\n */\nexport function resolvePath(to: To, fromPathname = \"/\"): Path {\n let {\n pathname: toPathname,\n search = \"\",\n hash = \"\",\n } = typeof to === \"string\" ? parsePath(to) : to;\n\n let pathname = toPathname\n ? toPathname.startsWith(\"/\")\n ? toPathname\n : resolvePathname(toPathname, fromPathname)\n : fromPathname;\n\n return {\n pathname,\n search: normalizeSearch(search),\n hash: normalizeHash(hash),\n };\n}\n\nfunction resolvePathname(relativePath: string, fromPathname: string): string {\n let segments = fromPathname.replace(/\\/+$/, \"\").split(\"/\");\n let relativeSegments = relativePath.split(\"/\");\n\n relativeSegments.forEach((segment) => {\n if (segment === \"..\") {\n // Keep the root \"\" segment so the pathname starts at /\n if (segments.length > 1) segments.pop();\n } else if (segment !== \".\") {\n segments.push(segment);\n }\n });\n\n return segments.length > 1 ? segments.join(\"/\") : \"/\";\n}\n\nexport function resolveTo(\n toArg: To,\n routePathnames: string[],\n locationPathname: string\n): Path {\n let to = typeof toArg === \"string\" ? parsePath(toArg) : toArg;\n let toPathname = toArg === \"\" || to.pathname === \"\" ? \"/\" : to.pathname;\n\n // If a pathname is explicitly provided in `to`, it should be relative to the\n // route context. This is explained in `Note on `` values` in our\n // migration guide from v5 as a means of disambiguation between `to` values\n // that begin with `/` and those that do not. However, this is problematic for\n // `to` values that do not provide a pathname. `to` can simply be a search or\n // hash string, in which case we should assume that the navigation is relative\n // to the current location's pathname and *not* the route pathname.\n let from: string;\n if (toPathname == null) {\n from = locationPathname;\n } else {\n let routePathnameIndex = routePathnames.length - 1;\n\n if (toPathname.startsWith(\"..\")) {\n let toSegments = toPathname.split(\"/\");\n\n // Each leading .. segment means \"go up one route\" instead of \"go up one\n // URL segment\". This is a key difference from how works and a\n // major reason we call this a \"to\" value instead of a \"href\".\n while (toSegments[0] === \"..\") {\n toSegments.shift();\n routePathnameIndex -= 1;\n }\n\n to.pathname = toSegments.join(\"/\");\n }\n\n // If there are more \"..\" segments than parent routes, resolve relative to\n // the root / URL.\n from = routePathnameIndex >= 0 ? routePathnames[routePathnameIndex] : \"/\";\n }\n\n let path = resolvePath(to, from);\n\n // Ensure the pathname has a trailing slash if the original to value had one.\n if (\n toPathname &&\n toPathname !== \"/\" &&\n toPathname.endsWith(\"/\") &&\n !path.pathname.endsWith(\"/\")\n ) {\n path.pathname += \"/\";\n }\n\n return path;\n}\n\nexport function getToPathname(to: To): string | undefined {\n // Empty strings should be treated the same as / paths\n return to === \"\" || (to as Path).pathname === \"\"\n ? \"/\"\n : typeof to === \"string\"\n ? parsePath(to).pathname\n : to.pathname;\n}\n\nexport function stripBasename(\n pathname: string,\n basename: string\n): string | null {\n if (basename === \"/\") return pathname;\n\n if (!pathname.toLowerCase().startsWith(basename.toLowerCase())) {\n return null;\n }\n\n let nextChar = pathname.charAt(basename.length);\n if (nextChar && nextChar !== \"/\") {\n // pathname does not start with basename/\n return null;\n }\n\n return pathname.slice(basename.length) || \"/\";\n}\n\nexport const joinPaths = (paths: string[]): string =>\n paths.join(\"/\").replace(/\\/\\/+/g, \"/\");\n\nexport const normalizePathname = (pathname: string): string =>\n pathname.replace(/\\/+$/, \"\").replace(/^\\/*/, \"/\");\n\nconst normalizeSearch = (search: string): string =>\n !search || search === \"?\"\n ? \"\"\n : search.startsWith(\"?\")\n ? search\n : \"?\" + search;\n\nconst normalizeHash = (hash: string): string =>\n !hash || hash === \"#\" ? \"\" : hash.startsWith(\"#\") ? hash : \"#\" + hash;\n","import * as React from \"react\";\nimport type { Location, Path, To } from \"history\";\nimport { Action as NavigationType, parsePath } from \"history\";\n\nimport { LocationContext, NavigationContext, RouteContext } from \"./context\";\nimport type {\n ParamParseKey,\n Params,\n PathMatch,\n PathPattern,\n RouteMatch,\n RouteObject,\n} from \"./router\";\nimport {\n getToPathname,\n invariant,\n joinPaths,\n matchPath,\n matchRoutes,\n resolveTo,\n warning,\n warningOnce,\n} from \"./router\";\n\n/**\n * Returns the full href for the given \"to\" value. This is useful for building\n * custom links that are also accessible and preserve right-click behavior.\n *\n * @see https://reactrouter.com/docs/en/v6/api#usehref\n */\nexport function useHref(to: To): string {\n invariant(\n useInRouterContext(),\n // TODO: This error is probably because they somehow have 2 versions of the\n // router loaded. We can help them understand how to avoid that.\n `useHref() may be used only in the context of a component.`\n );\n\n let { basename, navigator } = React.useContext(NavigationContext);\n let { hash, pathname, search } = useResolvedPath(to);\n\n let joinedPathname = pathname;\n if (basename !== \"/\") {\n let toPathname = getToPathname(to);\n let endsWithSlash = toPathname != null && toPathname.endsWith(\"/\");\n joinedPathname =\n pathname === \"/\"\n ? basename + (endsWithSlash ? \"/\" : \"\")\n : joinPaths([basename, pathname]);\n }\n\n return navigator.createHref({ pathname: joinedPathname, search, hash });\n}\n\n/**\n * Returns true if this component is a descendant of a .\n *\n * @see https://reactrouter.com/docs/en/v6/api#useinroutercontext\n */\nexport function useInRouterContext(): boolean {\n return React.useContext(LocationContext) != null;\n}\n\n/**\n * Returns the current location object, which represents the current URL in web\n * browsers.\n *\n * Note: If you're using this it may mean you're doing some of your own\n * \"routing\" in your app, and we'd like to know what your use case is. We may\n * be able to provide something higher-level to better suit your needs.\n *\n * @see https://reactrouter.com/docs/en/v6/api#uselocation\n */\nexport function useLocation(): Location {\n invariant(\n useInRouterContext(),\n // TODO: This error is probably because they somehow have 2 versions of the\n // router loaded. We can help them understand how to avoid that.\n `useLocation() may be used only in the context of a component.`\n );\n\n return React.useContext(LocationContext).location;\n}\n\n/**\n * Returns the current navigation action which describes how the router came to\n * the current location, either by a pop, push, or replace on the history stack.\n *\n * @see https://reactrouter.com/docs/en/v6/api#usenavigationtype\n */\nexport function useNavigationType(): NavigationType {\n return React.useContext(LocationContext).navigationType;\n}\n\n/**\n * Returns true if the URL for the given \"to\" value matches the current URL.\n * This is useful for components that need to know \"active\" state, e.g.\n * .\n *\n * @see https://reactrouter.com/docs/en/v6/api#usematch\n */\nexport function useMatch<\n ParamKey extends ParamParseKey,\n Path extends string\n>(pattern: PathPattern | Path): PathMatch | null {\n invariant(\n useInRouterContext(),\n // TODO: This error is probably because they somehow have 2 versions of the\n // router loaded. We can help them understand how to avoid that.\n `useMatch() may be used only in the context of a component.`\n );\n\n let { pathname } = useLocation();\n return React.useMemo(\n () => matchPath(pattern, pathname),\n [pathname, pattern]\n );\n}\n\n/**\n * The interface for the navigate() function returned from useNavigate().\n */\nexport interface NavigateFunction {\n (to: To, options?: NavigateOptions): void;\n (delta: number): void;\n}\n\nexport interface NavigateOptions {\n replace?: boolean;\n state?: any;\n}\n\n/**\n * Returns an imperative method for changing the location. Used by s, but\n * may also be used by other elements to change the location.\n *\n * @see https://reactrouter.com/docs/en/v6/api#usenavigate\n */\nexport function useNavigate(): NavigateFunction {\n invariant(\n useInRouterContext(),\n // TODO: This error is probably because they somehow have 2 versions of the\n // router loaded. We can help them understand how to avoid that.\n `useNavigate() may be used only in the context of a component.`\n );\n\n let { basename, navigator } = React.useContext(NavigationContext);\n let { matches } = React.useContext(RouteContext);\n let { pathname: locationPathname } = useLocation();\n\n let routePathnamesJson = JSON.stringify(\n matches.map((match) => match.pathnameBase)\n );\n\n let activeRef = React.useRef(false);\n React.useEffect(() => {\n activeRef.current = true;\n });\n\n let navigate: NavigateFunction = React.useCallback(\n (to: To | number, options: NavigateOptions = {}) => {\n warning(\n activeRef.current,\n `You should call navigate() in a React.useEffect(), not when ` +\n `your component is first rendered.`\n );\n\n if (!activeRef.current) return;\n\n if (typeof to === \"number\") {\n navigator.go(to);\n return;\n }\n\n let path = resolveTo(\n to,\n JSON.parse(routePathnamesJson),\n locationPathname\n );\n\n if (basename !== \"/\") {\n path.pathname = joinPaths([basename, path.pathname]);\n }\n\n (!!options.replace ? navigator.replace : navigator.push)(\n path,\n options.state\n );\n },\n [basename, navigator, routePathnamesJson, locationPathname]\n );\n\n return navigate;\n}\n\nconst OutletContext = React.createContext(null);\n\n/**\n * Returns the context (if provided) for the child route at this level of the route\n * hierarchy.\n * @see https://reactrouter.com/docs/en/v6/api#useoutletcontext\n */\nexport function useOutletContext(): Context {\n return React.useContext(OutletContext) as Context;\n}\n\n/**\n * Returns the element for the child route at this level of the route\n * hierarchy. Used internally by to render child routes.\n *\n * @see https://reactrouter.com/docs/en/v6/api#useoutlet\n */\nexport function useOutlet(context?: unknown): React.ReactElement | null {\n let outlet = React.useContext(RouteContext).outlet;\n if (outlet) {\n return (\n {outlet}\n );\n }\n return outlet;\n}\n\n/**\n * Returns an object of key/value pairs of the dynamic params from the current\n * URL that were matched by the route path.\n *\n * @see https://reactrouter.com/docs/en/v6/api#useparams\n */\nexport function useParams<\n ParamsOrKey extends string | Record = string\n>(): Readonly<\n [ParamsOrKey] extends [string] ? Params : Partial\n> {\n let { matches } = React.useContext(RouteContext);\n let routeMatch = matches[matches.length - 1];\n return routeMatch ? (routeMatch.params as any) : {};\n}\n\n/**\n * Resolves the pathname of the given `to` value against the current location.\n *\n * @see https://reactrouter.com/docs/en/v6/api#useresolvedpath\n */\nexport function useResolvedPath(to: To): Path {\n let { matches } = React.useContext(RouteContext);\n let { pathname: locationPathname } = useLocation();\n\n let routePathnamesJson = JSON.stringify(\n matches.map((match) => match.pathnameBase)\n );\n\n return React.useMemo(\n () => resolveTo(to, JSON.parse(routePathnamesJson), locationPathname),\n [to, routePathnamesJson, locationPathname]\n );\n}\n\n/**\n * Returns the element of the route that matched the current location, prepared\n * with the correct context to render the remainder of the route tree. Route\n * elements in the tree must render an to render their child route's\n * element.\n *\n * @see https://reactrouter.com/docs/en/v6/api#useroutes\n */\nexport function useRoutes(\n routes: RouteObject[],\n locationArg?: Partial | string\n): React.ReactElement | null {\n invariant(\n useInRouterContext(),\n // TODO: This error is probably because they somehow have 2 versions of the\n // router loaded. We can help them understand how to avoid that.\n `useRoutes() may be used only in the context of a component.`\n );\n\n let { matches: parentMatches } = React.useContext(RouteContext);\n let routeMatch = parentMatches[parentMatches.length - 1];\n let parentParams = routeMatch ? routeMatch.params : {};\n let parentPathname = routeMatch ? routeMatch.pathname : \"/\";\n let parentPathnameBase = routeMatch ? routeMatch.pathnameBase : \"/\";\n let parentRoute = routeMatch && routeMatch.route;\n\n if (__DEV__) {\n // You won't get a warning about 2 different under a \n // without a trailing *, but this is a best-effort warning anyway since we\n // cannot even give the warning unless they land at the parent route.\n //\n // Example:\n //\n // \n // {/* This route path MUST end with /* because otherwise\n // it will never match /blog/post/123 */}\n // } />\n // } />\n // \n //\n // function Blog() {\n // return (\n // \n // } />\n // \n // );\n // }\n let parentPath = (parentRoute && parentRoute.path) || \"\";\n warningOnce(\n parentPathname,\n !parentRoute || parentPath.endsWith(\"*\"),\n `You rendered descendant (or called \\`useRoutes()\\`) at ` +\n `\"${parentPathname}\" (under ) but the ` +\n `parent route path has no trailing \"*\". This means if you navigate ` +\n `deeper, the parent won't match anymore and therefore the child ` +\n `routes will never render.\\n\\n` +\n `Please change the parent to .`\n );\n }\n\n let locationFromContext = useLocation();\n\n let location;\n if (locationArg) {\n let parsedLocationArg =\n typeof locationArg === \"string\" ? parsePath(locationArg) : locationArg;\n\n invariant(\n parentPathnameBase === \"/\" ||\n parsedLocationArg.pathname?.startsWith(parentPathnameBase),\n `When overriding the location using \\`\\` or \\`useRoutes(routes, location)\\`, ` +\n `the location pathname must begin with the portion of the URL pathname that was ` +\n `matched by all parent routes. The current pathname base is \"${parentPathnameBase}\" ` +\n `but pathname \"${parsedLocationArg.pathname}\" was given in the \\`location\\` prop.`\n );\n\n location = parsedLocationArg;\n } else {\n location = locationFromContext;\n }\n\n let pathname = location.pathname || \"/\";\n let remainingPathname =\n parentPathnameBase === \"/\"\n ? pathname\n : pathname.slice(parentPathnameBase.length) || \"/\";\n let matches = matchRoutes(routes, { pathname: remainingPathname });\n\n if (__DEV__) {\n warning(\n parentRoute || matches != null,\n `No routes matched location \"${location.pathname}${location.search}${location.hash}\" `\n );\n\n warning(\n matches == null ||\n matches[matches.length - 1].route.element !== undefined,\n `Matched leaf route at location \"${location.pathname}${location.search}${location.hash}\" does not have an element. ` +\n `This means it will render an with a null value by default resulting in an \"empty\" page.`\n );\n }\n\n return _renderMatches(\n matches &&\n matches.map((match) =>\n Object.assign({}, match, {\n params: Object.assign({}, parentParams, match.params),\n pathname: joinPaths([parentPathnameBase, match.pathname]),\n pathnameBase:\n match.pathnameBase === \"/\"\n ? parentPathnameBase\n : joinPaths([parentPathnameBase, match.pathnameBase]),\n })\n ),\n parentMatches\n );\n}\n\nexport function _renderMatches(\n matches: RouteMatch[] | null,\n parentMatches: RouteMatch[] = []\n): React.ReactElement | null {\n if (matches == null) return null;\n\n return matches.reduceRight((outlet, match, index) => {\n return (\n \n );\n }, null as React.ReactElement | null);\n}\n","import * as React from \"react\";\nimport type { InitialEntry, Location, MemoryHistory, To } from \"history\";\nimport {\n Action as NavigationType,\n createMemoryHistory,\n parsePath,\n} from \"history\";\n\nimport { LocationContext, NavigationContext, Navigator } from \"./context\";\nimport {\n useInRouterContext,\n useNavigate,\n useOutlet,\n useRoutes,\n _renderMatches,\n} from \"./hooks\";\nimport type { RouteMatch, RouteObject } from \"./router\";\nimport { invariant, normalizePathname, stripBasename, warning } from \"./router\";\n\nexport interface MemoryRouterProps {\n basename?: string;\n children?: React.ReactNode;\n initialEntries?: InitialEntry[];\n initialIndex?: number;\n}\n\n/**\n * A that stores all entries in memory.\n *\n * @see https://reactrouter.com/docs/en/v6/api#memoryrouter\n */\nexport function MemoryRouter({\n basename,\n children,\n initialEntries,\n initialIndex,\n}: MemoryRouterProps): React.ReactElement {\n let historyRef = React.useRef();\n if (historyRef.current == null) {\n historyRef.current = createMemoryHistory({ initialEntries, initialIndex });\n }\n\n let history = historyRef.current;\n let [state, setState] = React.useState({\n action: history.action,\n location: history.location,\n });\n\n React.useLayoutEffect(() => history.listen(setState), [history]);\n\n return (\n \n );\n}\n\nexport interface NavigateProps {\n to: To;\n replace?: boolean;\n state?: any;\n}\n\n/**\n * Changes the current location.\n *\n * Note: This API is mostly useful in React.Component subclasses that are not\n * able to use hooks. In functional components, we recommend you use the\n * `useNavigate` hook instead.\n *\n * @see https://reactrouter.com/docs/en/v6/api#navigate\n */\nexport function Navigate({ to, replace, state }: NavigateProps): null {\n invariant(\n useInRouterContext(),\n // TODO: This error is probably because they somehow have 2 versions of\n // the router loaded. We can help them understand how to avoid that.\n ` may be used only in the context of a component.`\n );\n\n warning(\n !React.useContext(NavigationContext).static,\n ` must not be used on the initial render in a . ` +\n `This is a no-op, but you should modify your code so the is ` +\n `only ever rendered in response to some user interaction or state change.`\n );\n\n let navigate = useNavigate();\n React.useEffect(() => {\n navigate(to, { replace, state });\n });\n\n return null;\n}\n\nexport interface OutletProps {\n context?: unknown;\n}\n\n/**\n * Renders the child route's element, if there is one.\n *\n * @see https://reactrouter.com/docs/en/v6/api#outlet\n */\nexport function Outlet(props: OutletProps): React.ReactElement | null {\n return useOutlet(props.context);\n}\n\nexport interface RouteProps {\n caseSensitive?: boolean;\n children?: React.ReactNode;\n element?: React.ReactNode | null;\n index?: boolean;\n path?: string;\n}\n\nexport interface PathRouteProps {\n caseSensitive?: boolean;\n children?: React.ReactNode;\n element?: React.ReactNode | null;\n index?: false;\n path: string;\n}\n\nexport interface LayoutRouteProps {\n children?: React.ReactNode;\n element?: React.ReactNode | null;\n}\n\nexport interface IndexRouteProps {\n element?: React.ReactNode | null;\n index: true;\n}\n\n/**\n * Declares an element that should be rendered at a certain URL path.\n *\n * @see https://reactrouter.com/docs/en/v6/api#route\n */\nexport function Route(\n _props: PathRouteProps | LayoutRouteProps | IndexRouteProps\n): React.ReactElement | null {\n invariant(\n false,\n `A is only ever to be used as the child of element, ` +\n `never rendered directly. Please wrap your in a .`\n );\n}\n\nexport interface RouterProps {\n basename?: string;\n children?: React.ReactNode;\n location: Partial | string;\n navigationType?: NavigationType;\n navigator: Navigator;\n static?: boolean;\n}\n\n/**\n * Provides location context for the rest of the app.\n *\n * Note: You usually won't render a directly. Instead, you'll render a\n * router that is more specific to your environment such as a \n * in web browsers or a for server rendering.\n *\n * @see https://reactrouter.com/docs/en/v6/api#router\n */\nexport function Router({\n basename: basenameProp = \"/\",\n children = null,\n location: locationProp,\n navigationType = NavigationType.Pop,\n navigator,\n static: staticProp = false,\n}: RouterProps): React.ReactElement | null {\n invariant(\n !useInRouterContext(),\n `You cannot render a inside another .` +\n ` You should never have more than one in your app.`\n );\n\n let basename = normalizePathname(basenameProp);\n let navigationContext = React.useMemo(\n () => ({ basename, navigator, static: staticProp }),\n [basename, navigator, staticProp]\n );\n\n if (typeof locationProp === \"string\") {\n locationProp = parsePath(locationProp);\n }\n\n let {\n pathname = \"/\",\n search = \"\",\n hash = \"\",\n state = null,\n key = \"default\",\n } = locationProp;\n\n let location = React.useMemo(() => {\n let trailingPathname = stripBasename(pathname, basename);\n\n if (trailingPathname == null) {\n return null;\n }\n\n return {\n pathname: trailingPathname,\n search,\n hash,\n state,\n key,\n };\n }, [basename, pathname, search, hash, state, key]);\n\n warning(\n location != null,\n ` is not able to match the URL ` +\n `\"${pathname}${search}${hash}\" because it does not start with the ` +\n `basename, so the won't render anything.`\n );\n\n if (location == null) {\n return null;\n }\n\n return (\n \n \n \n );\n}\n\nexport interface RoutesProps {\n children?: React.ReactNode;\n location?: Partial | string;\n}\n\n/**\n * A container for a nested tree of elements that renders the branch\n * that best matches the current location.\n *\n * @see https://reactrouter.com/docs/en/v6/api#routes\n */\nexport function Routes({\n children,\n location,\n}: RoutesProps): React.ReactElement | null {\n return useRoutes(createRoutesFromChildren(children), location);\n}\n\n///////////////////////////////////////////////////////////////////////////////\n// UTILS\n///////////////////////////////////////////////////////////////////////////////\n\n/**\n * Creates a route config from a React \"children\" object, which is usually\n * either a `` element or an array of them. Used internally by\n * `` to create a route config from its children.\n *\n * @see https://reactrouter.com/docs/en/v6/api#createroutesfromchildren\n */\nexport function createRoutesFromChildren(\n children: React.ReactNode\n): RouteObject[] {\n let routes: RouteObject[] = [];\n\n React.Children.forEach(children, (element) => {\n if (!React.isValidElement(element)) {\n // Ignore non-elements. This allows people to more easily inline\n // conditionals in their route config.\n return;\n }\n\n if (element.type === React.Fragment) {\n // Transparently support React.Fragment and its children.\n routes.push.apply(\n routes,\n createRoutesFromChildren(element.props.children)\n );\n return;\n }\n\n invariant(\n element.type === Route,\n `[${\n typeof element.type === \"string\" ? element.type : element.type.name\n }] is not a component. All component children of must be a or `\n );\n\n let route: RouteObject = {\n caseSensitive: element.props.caseSensitive,\n element: element.props.element,\n index: element.props.index,\n path: element.props.path,\n };\n\n if (element.props.children) {\n route.children = createRoutesFromChildren(element.props.children);\n }\n\n routes.push(route);\n });\n\n return routes;\n}\n\n/**\n * Renders the result of `matchRoutes()` into a React element.\n */\nexport function renderMatches(\n matches: RouteMatch[] | null\n): React.ReactElement | null {\n return _renderMatches(matches);\n}\n","import setPrototypeOf from \"./setPrototypeOf.js\";\nexport default function _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n setPrototypeOf(subClass, superClass);\n}","function replaceClassName(origClass, classToRemove) {\n return origClass.replace(new RegExp(\"(^|\\\\s)\" + classToRemove + \"(?:\\\\s|$)\", 'g'), '$1').replace(/\\s+/g, ' ').replace(/^\\s*|\\s*$/g, '');\n}\n/**\n * Removes a CSS class from a given element.\n * \n * @param element the element\n * @param className the CSS class name\n */\n\n\nexport default function removeClass(element, className) {\n if (element.classList) {\n element.classList.remove(className);\n } else if (typeof element.className === 'string') {\n element.className = replaceClassName(element.className, className);\n } else {\n element.setAttribute('class', replaceClassName(element.className && element.className.baseVal || '', className));\n }\n}","export default {\n disabled: false\n};","import React from 'react';\nexport default React.createContext(null);","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _inheritsLoose from \"@babel/runtime/helpers/esm/inheritsLoose\";\nimport PropTypes from 'prop-types';\nimport React from 'react';\nimport ReactDOM from 'react-dom';\nimport config from './config';\nimport { timeoutsShape } from './utils/PropTypes';\nimport TransitionGroupContext from './TransitionGroupContext';\nexport var UNMOUNTED = 'unmounted';\nexport var EXITED = 'exited';\nexport var ENTERING = 'entering';\nexport var ENTERED = 'entered';\nexport var EXITING = 'exiting';\n/**\n * The Transition component lets you describe a transition from one component\n * state to another _over time_ with a simple declarative API. Most commonly\n * it's used to animate the mounting and unmounting of a component, but can also\n * be used to describe in-place transition states as well.\n *\n * ---\n *\n * **Note**: `Transition` is a platform-agnostic base component. If you're using\n * transitions in CSS, you'll probably want to use\n * [`CSSTransition`](https://reactcommunity.org/react-transition-group/css-transition)\n * instead. It inherits all the features of `Transition`, but contains\n * additional features necessary to play nice with CSS transitions (hence the\n * name of the component).\n *\n * ---\n *\n * By default the `Transition` component does not alter the behavior of the\n * component it renders, it only tracks \"enter\" and \"exit\" states for the\n * components. It's up to you to give meaning and effect to those states. For\n * example we can add styles to a component when it enters or exits:\n *\n * ```jsx\n * import { Transition } from 'react-transition-group';\n *\n * const duration = 300;\n *\n * const defaultStyle = {\n * transition: `opacity ${duration}ms ease-in-out`,\n * opacity: 0,\n * }\n *\n * const transitionStyles = {\n * entering: { opacity: 1 },\n * entered: { opacity: 1 },\n * exiting: { opacity: 0 },\n * exited: { opacity: 0 },\n * };\n *\n * const Fade = ({ in: inProp }) => (\n * \n * {state => (\n *
\n * I'm a fade Transition!\n *
\n * )}\n *
\n * );\n * ```\n *\n * There are 4 main states a Transition can be in:\n * - `'entering'`\n * - `'entered'`\n * - `'exiting'`\n * - `'exited'`\n *\n * Transition state is toggled via the `in` prop. When `true` the component\n * begins the \"Enter\" stage. During this stage, the component will shift from\n * its current transition state, to `'entering'` for the duration of the\n * transition and then to the `'entered'` stage once it's complete. Let's take\n * the following example (we'll use the\n * [useState](https://reactjs.org/docs/hooks-reference.html#usestate) hook):\n *\n * ```jsx\n * function App() {\n * const [inProp, setInProp] = useState(false);\n * return (\n *
\n * \n * {state => (\n * // ...\n * )}\n * \n * \n *
\n * );\n * }\n * ```\n *\n * When the button is clicked the component will shift to the `'entering'` state\n * and stay there for 500ms (the value of `timeout`) before it finally switches\n * to `'entered'`.\n *\n * When `in` is `false` the same thing happens except the state moves from\n * `'exiting'` to `'exited'`.\n */\n\nvar Transition = /*#__PURE__*/function (_React$Component) {\n _inheritsLoose(Transition, _React$Component);\n\n function Transition(props, context) {\n var _this;\n\n _this = _React$Component.call(this, props, context) || this;\n var parentGroup = context; // In the context of a TransitionGroup all enters are really appears\n\n var appear = parentGroup && !parentGroup.isMounting ? props.enter : props.appear;\n var initialStatus;\n _this.appearStatus = null;\n\n if (props.in) {\n if (appear) {\n initialStatus = EXITED;\n _this.appearStatus = ENTERING;\n } else {\n initialStatus = ENTERED;\n }\n } else {\n if (props.unmountOnExit || props.mountOnEnter) {\n initialStatus = UNMOUNTED;\n } else {\n initialStatus = EXITED;\n }\n }\n\n _this.state = {\n status: initialStatus\n };\n _this.nextCallback = null;\n return _this;\n }\n\n Transition.getDerivedStateFromProps = function getDerivedStateFromProps(_ref, prevState) {\n var nextIn = _ref.in;\n\n if (nextIn && prevState.status === UNMOUNTED) {\n return {\n status: EXITED\n };\n }\n\n return null;\n } // getSnapshotBeforeUpdate(prevProps) {\n // let nextStatus = null\n // if (prevProps !== this.props) {\n // const { status } = this.state\n // if (this.props.in) {\n // if (status !== ENTERING && status !== ENTERED) {\n // nextStatus = ENTERING\n // }\n // } else {\n // if (status === ENTERING || status === ENTERED) {\n // nextStatus = EXITING\n // }\n // }\n // }\n // return { nextStatus }\n // }\n ;\n\n var _proto = Transition.prototype;\n\n _proto.componentDidMount = function componentDidMount() {\n this.updateStatus(true, this.appearStatus);\n };\n\n _proto.componentDidUpdate = function componentDidUpdate(prevProps) {\n var nextStatus = null;\n\n if (prevProps !== this.props) {\n var status = this.state.status;\n\n if (this.props.in) {\n if (status !== ENTERING && status !== ENTERED) {\n nextStatus = ENTERING;\n }\n } else {\n if (status === ENTERING || status === ENTERED) {\n nextStatus = EXITING;\n }\n }\n }\n\n this.updateStatus(false, nextStatus);\n };\n\n _proto.componentWillUnmount = function componentWillUnmount() {\n this.cancelNextCallback();\n };\n\n _proto.getTimeouts = function getTimeouts() {\n var timeout = this.props.timeout;\n var exit, enter, appear;\n exit = enter = appear = timeout;\n\n if (timeout != null && typeof timeout !== 'number') {\n exit = timeout.exit;\n enter = timeout.enter; // TODO: remove fallback for next major\n\n appear = timeout.appear !== undefined ? timeout.appear : enter;\n }\n\n return {\n exit: exit,\n enter: enter,\n appear: appear\n };\n };\n\n _proto.updateStatus = function updateStatus(mounting, nextStatus) {\n if (mounting === void 0) {\n mounting = false;\n }\n\n if (nextStatus !== null) {\n // nextStatus will always be ENTERING or EXITING.\n this.cancelNextCallback();\n\n if (nextStatus === ENTERING) {\n this.performEnter(mounting);\n } else {\n this.performExit();\n }\n } else if (this.props.unmountOnExit && this.state.status === EXITED) {\n this.setState({\n status: UNMOUNTED\n });\n }\n };\n\n _proto.performEnter = function performEnter(mounting) {\n var _this2 = this;\n\n var enter = this.props.enter;\n var appearing = this.context ? this.context.isMounting : mounting;\n\n var _ref2 = this.props.nodeRef ? [appearing] : [ReactDOM.findDOMNode(this), appearing],\n maybeNode = _ref2[0],\n maybeAppearing = _ref2[1];\n\n var timeouts = this.getTimeouts();\n var enterTimeout = appearing ? timeouts.appear : timeouts.enter; // no enter animation skip right to ENTERED\n // if we are mounting and running this it means appear _must_ be set\n\n if (!mounting && !enter || config.disabled) {\n this.safeSetState({\n status: ENTERED\n }, function () {\n _this2.props.onEntered(maybeNode);\n });\n return;\n }\n\n this.props.onEnter(maybeNode, maybeAppearing);\n this.safeSetState({\n status: ENTERING\n }, function () {\n _this2.props.onEntering(maybeNode, maybeAppearing);\n\n _this2.onTransitionEnd(enterTimeout, function () {\n _this2.safeSetState({\n status: ENTERED\n }, function () {\n _this2.props.onEntered(maybeNode, maybeAppearing);\n });\n });\n });\n };\n\n _proto.performExit = function performExit() {\n var _this3 = this;\n\n var exit = this.props.exit;\n var timeouts = this.getTimeouts();\n var maybeNode = this.props.nodeRef ? undefined : ReactDOM.findDOMNode(this); // no exit animation skip right to EXITED\n\n if (!exit || config.disabled) {\n this.safeSetState({\n status: EXITED\n }, function () {\n _this3.props.onExited(maybeNode);\n });\n return;\n }\n\n this.props.onExit(maybeNode);\n this.safeSetState({\n status: EXITING\n }, function () {\n _this3.props.onExiting(maybeNode);\n\n _this3.onTransitionEnd(timeouts.exit, function () {\n _this3.safeSetState({\n status: EXITED\n }, function () {\n _this3.props.onExited(maybeNode);\n });\n });\n });\n };\n\n _proto.cancelNextCallback = function cancelNextCallback() {\n if (this.nextCallback !== null) {\n this.nextCallback.cancel();\n this.nextCallback = null;\n }\n };\n\n _proto.safeSetState = function safeSetState(nextState, callback) {\n // This shouldn't be necessary, but there are weird race conditions with\n // setState callbacks and unmounting in testing, so always make sure that\n // we can cancel any pending setState callbacks after we unmount.\n callback = this.setNextCallback(callback);\n this.setState(nextState, callback);\n };\n\n _proto.setNextCallback = function setNextCallback(callback) {\n var _this4 = this;\n\n var active = true;\n\n this.nextCallback = function (event) {\n if (active) {\n active = false;\n _this4.nextCallback = null;\n callback(event);\n }\n };\n\n this.nextCallback.cancel = function () {\n active = false;\n };\n\n return this.nextCallback;\n };\n\n _proto.onTransitionEnd = function onTransitionEnd(timeout, handler) {\n this.setNextCallback(handler);\n var node = this.props.nodeRef ? this.props.nodeRef.current : ReactDOM.findDOMNode(this);\n var doesNotHaveTimeoutOrListener = timeout == null && !this.props.addEndListener;\n\n if (!node || doesNotHaveTimeoutOrListener) {\n setTimeout(this.nextCallback, 0);\n return;\n }\n\n if (this.props.addEndListener) {\n var _ref3 = this.props.nodeRef ? [this.nextCallback] : [node, this.nextCallback],\n maybeNode = _ref3[0],\n maybeNextCallback = _ref3[1];\n\n this.props.addEndListener(maybeNode, maybeNextCallback);\n }\n\n if (timeout != null) {\n setTimeout(this.nextCallback, timeout);\n }\n };\n\n _proto.render = function render() {\n var status = this.state.status;\n\n if (status === UNMOUNTED) {\n return null;\n }\n\n var _this$props = this.props,\n children = _this$props.children,\n _in = _this$props.in,\n _mountOnEnter = _this$props.mountOnEnter,\n _unmountOnExit = _this$props.unmountOnExit,\n _appear = _this$props.appear,\n _enter = _this$props.enter,\n _exit = _this$props.exit,\n _timeout = _this$props.timeout,\n _addEndListener = _this$props.addEndListener,\n _onEnter = _this$props.onEnter,\n _onEntering = _this$props.onEntering,\n _onEntered = _this$props.onEntered,\n _onExit = _this$props.onExit,\n _onExiting = _this$props.onExiting,\n _onExited = _this$props.onExited,\n _nodeRef = _this$props.nodeRef,\n childProps = _objectWithoutPropertiesLoose(_this$props, [\"children\", \"in\", \"mountOnEnter\", \"unmountOnExit\", \"appear\", \"enter\", \"exit\", \"timeout\", \"addEndListener\", \"onEnter\", \"onEntering\", \"onEntered\", \"onExit\", \"onExiting\", \"onExited\", \"nodeRef\"]);\n\n return (\n /*#__PURE__*/\n // allows for nested Transitions\n React.createElement(TransitionGroupContext.Provider, {\n value: null\n }, typeof children === 'function' ? children(status, childProps) : React.cloneElement(React.Children.only(children), childProps))\n );\n };\n\n return Transition;\n}(React.Component);\n\nTransition.contextType = TransitionGroupContext;\nTransition.propTypes = process.env.NODE_ENV !== \"production\" ? {\n /**\n * A React reference to DOM element that need to transition:\n * https://stackoverflow.com/a/51127130/4671932\n *\n * - When `nodeRef` prop is used, `node` is not passed to callback functions\n * (e.g. `onEnter`) because user already has direct access to the node.\n * - When changing `key` prop of `Transition` in a `TransitionGroup` a new\n * `nodeRef` need to be provided to `Transition` with changed `key` prop\n * (see\n * [test/CSSTransition-test.js](https://github.com/reactjs/react-transition-group/blob/13435f897b3ab71f6e19d724f145596f5910581c/test/CSSTransition-test.js#L362-L437)).\n */\n nodeRef: PropTypes.shape({\n current: typeof Element === 'undefined' ? PropTypes.any : function (propValue, key, componentName, location, propFullName, secret) {\n var value = propValue[key];\n return PropTypes.instanceOf(value && 'ownerDocument' in value ? value.ownerDocument.defaultView.Element : Element)(propValue, key, componentName, location, propFullName, secret);\n }\n }),\n\n /**\n * A `function` child can be used instead of a React element. This function is\n * called with the current transition status (`'entering'`, `'entered'`,\n * `'exiting'`, `'exited'`), which can be used to apply context\n * specific props to a component.\n *\n * ```jsx\n * \n * {state => (\n * \n * )}\n * \n * ```\n */\n children: PropTypes.oneOfType([PropTypes.func.isRequired, PropTypes.element.isRequired]).isRequired,\n\n /**\n * Show the component; triggers the enter or exit states\n */\n in: PropTypes.bool,\n\n /**\n * By default the child component is mounted immediately along with\n * the parent `Transition` component. If you want to \"lazy mount\" the component on the\n * first `in={true}` you can set `mountOnEnter`. After the first enter transition the component will stay\n * mounted, even on \"exited\", unless you also specify `unmountOnExit`.\n */\n mountOnEnter: PropTypes.bool,\n\n /**\n * By default the child component stays mounted after it reaches the `'exited'` state.\n * Set `unmountOnExit` if you'd prefer to unmount the component after it finishes exiting.\n */\n unmountOnExit: PropTypes.bool,\n\n /**\n * By default the child component does not perform the enter transition when\n * it first mounts, regardless of the value of `in`. If you want this\n * behavior, set both `appear` and `in` to `true`.\n *\n * > **Note**: there are no special appear states like `appearing`/`appeared`, this prop\n * > only adds an additional enter transition. However, in the\n * > `` component that first enter transition does result in\n * > additional `.appear-*` classes, that way you can choose to style it\n * > differently.\n */\n appear: PropTypes.bool,\n\n /**\n * Enable or disable enter transitions.\n */\n enter: PropTypes.bool,\n\n /**\n * Enable or disable exit transitions.\n */\n exit: PropTypes.bool,\n\n /**\n * The duration of the transition, in milliseconds.\n * Required unless `addEndListener` is provided.\n *\n * You may specify a single timeout for all transitions:\n *\n * ```jsx\n * timeout={500}\n * ```\n *\n * or individually:\n *\n * ```jsx\n * timeout={{\n * appear: 500,\n * enter: 300,\n * exit: 500,\n * }}\n * ```\n *\n * - `appear` defaults to the value of `enter`\n * - `enter` defaults to `0`\n * - `exit` defaults to `0`\n *\n * @type {number | { enter?: number, exit?: number, appear?: number }}\n */\n timeout: function timeout(props) {\n var pt = timeoutsShape;\n if (!props.addEndListener) pt = pt.isRequired;\n\n for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n\n return pt.apply(void 0, [props].concat(args));\n },\n\n /**\n * Add a custom transition end trigger. Called with the transitioning\n * DOM node and a `done` callback. Allows for more fine grained transition end\n * logic. Timeouts are still used as a fallback if provided.\n *\n * **Note**: when `nodeRef` prop is passed, `node` is not passed.\n *\n * ```jsx\n * addEndListener={(node, done) => {\n * // use the css transitionend event to mark the finish of a transition\n * node.addEventListener('transitionend', done, false);\n * }}\n * ```\n */\n addEndListener: PropTypes.func,\n\n /**\n * Callback fired before the \"entering\" status is applied. An extra parameter\n * `isAppearing` is supplied to indicate if the enter stage is occurring on the initial mount\n *\n * **Note**: when `nodeRef` prop is passed, `node` is not passed.\n *\n * @type Function(node: HtmlElement, isAppearing: bool) -> void\n */\n onEnter: PropTypes.func,\n\n /**\n * Callback fired after the \"entering\" status is applied. An extra parameter\n * `isAppearing` is supplied to indicate if the enter stage is occurring on the initial mount\n *\n * **Note**: when `nodeRef` prop is passed, `node` is not passed.\n *\n * @type Function(node: HtmlElement, isAppearing: bool)\n */\n onEntering: PropTypes.func,\n\n /**\n * Callback fired after the \"entered\" status is applied. An extra parameter\n * `isAppearing` is supplied to indicate if the enter stage is occurring on the initial mount\n *\n * **Note**: when `nodeRef` prop is passed, `node` is not passed.\n *\n * @type Function(node: HtmlElement, isAppearing: bool) -> void\n */\n onEntered: PropTypes.func,\n\n /**\n * Callback fired before the \"exiting\" status is applied.\n *\n * **Note**: when `nodeRef` prop is passed, `node` is not passed.\n *\n * @type Function(node: HtmlElement) -> void\n */\n onExit: PropTypes.func,\n\n /**\n * Callback fired after the \"exiting\" status is applied.\n *\n * **Note**: when `nodeRef` prop is passed, `node` is not passed.\n *\n * @type Function(node: HtmlElement) -> void\n */\n onExiting: PropTypes.func,\n\n /**\n * Callback fired after the \"exited\" status is applied.\n *\n * **Note**: when `nodeRef` prop is passed, `node` is not passed\n *\n * @type Function(node: HtmlElement) -> void\n */\n onExited: PropTypes.func\n} : {}; // Name the function so it is clearer in the documentation\n\nfunction noop() {}\n\nTransition.defaultProps = {\n in: false,\n mountOnEnter: false,\n unmountOnExit: false,\n appear: false,\n enter: true,\n exit: true,\n onEnter: noop,\n onEntering: noop,\n onEntered: noop,\n onExit: noop,\n onExiting: noop,\n onExited: noop\n};\nTransition.UNMOUNTED = UNMOUNTED;\nTransition.EXITED = EXITED;\nTransition.ENTERING = ENTERING;\nTransition.ENTERED = ENTERED;\nTransition.EXITING = EXITING;\nexport default Transition;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _inheritsLoose from \"@babel/runtime/helpers/esm/inheritsLoose\";\nimport PropTypes from 'prop-types';\nimport addOneClass from 'dom-helpers/addClass';\nimport removeOneClass from 'dom-helpers/removeClass';\nimport React from 'react';\nimport Transition from './Transition';\nimport { classNamesShape } from './utils/PropTypes';\n\nvar _addClass = function addClass(node, classes) {\n return node && classes && classes.split(' ').forEach(function (c) {\n return addOneClass(node, c);\n });\n};\n\nvar removeClass = function removeClass(node, classes) {\n return node && classes && classes.split(' ').forEach(function (c) {\n return removeOneClass(node, c);\n });\n};\n/**\n * A transition component inspired by the excellent\n * [ng-animate](https://docs.angularjs.org/api/ngAnimate) library, you should\n * use it if you're using CSS transitions or animations. It's built upon the\n * [`Transition`](https://reactcommunity.org/react-transition-group/transition)\n * component, so it inherits all of its props.\n *\n * `CSSTransition` applies a pair of class names during the `appear`, `enter`,\n * and `exit` states of the transition. The first class is applied and then a\n * second `*-active` class in order to activate the CSS transition. After the\n * transition, matching `*-done` class names are applied to persist the\n * transition state.\n *\n * ```jsx\n * function App() {\n * const [inProp, setInProp] = useState(false);\n * return (\n *
\n * \n *
\n * {\"I'll receive my-node-* classes\"}\n *
\n *
\n * \n *
\n * );\n * }\n * ```\n *\n * When the `in` prop is set to `true`, the child component will first receive\n * the class `example-enter`, then the `example-enter-active` will be added in\n * the next tick. `CSSTransition` [forces a\n * reflow](https://github.com/reactjs/react-transition-group/blob/5007303e729a74be66a21c3e2205e4916821524b/src/CSSTransition.js#L208-L215)\n * between before adding the `example-enter-active`. This is an important trick\n * because it allows us to transition between `example-enter` and\n * `example-enter-active` even though they were added immediately one after\n * another. Most notably, this is what makes it possible for us to animate\n * _appearance_.\n *\n * ```css\n * .my-node-enter {\n * opacity: 0;\n * }\n * .my-node-enter-active {\n * opacity: 1;\n * transition: opacity 200ms;\n * }\n * .my-node-exit {\n * opacity: 1;\n * }\n * .my-node-exit-active {\n * opacity: 0;\n * transition: opacity 200ms;\n * }\n * ```\n *\n * `*-active` classes represent which styles you want to animate **to**, so it's\n * important to add `transition` declaration only to them, otherwise transitions\n * might not behave as intended! This might not be obvious when the transitions\n * are symmetrical, i.e. when `*-enter-active` is the same as `*-exit`, like in\n * the example above (minus `transition`), but it becomes apparent in more\n * complex transitions.\n *\n * **Note**: If you're using the\n * [`appear`](http://reactcommunity.org/react-transition-group/transition#Transition-prop-appear)\n * prop, make sure to define styles for `.appear-*` classes as well.\n */\n\n\nvar CSSTransition = /*#__PURE__*/function (_React$Component) {\n _inheritsLoose(CSSTransition, _React$Component);\n\n function CSSTransition() {\n var _this;\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _React$Component.call.apply(_React$Component, [this].concat(args)) || this;\n _this.appliedClasses = {\n appear: {},\n enter: {},\n exit: {}\n };\n\n _this.onEnter = function (maybeNode, maybeAppearing) {\n var _this$resolveArgument = _this.resolveArguments(maybeNode, maybeAppearing),\n node = _this$resolveArgument[0],\n appearing = _this$resolveArgument[1];\n\n _this.removeClasses(node, 'exit');\n\n _this.addClass(node, appearing ? 'appear' : 'enter', 'base');\n\n if (_this.props.onEnter) {\n _this.props.onEnter(maybeNode, maybeAppearing);\n }\n };\n\n _this.onEntering = function (maybeNode, maybeAppearing) {\n var _this$resolveArgument2 = _this.resolveArguments(maybeNode, maybeAppearing),\n node = _this$resolveArgument2[0],\n appearing = _this$resolveArgument2[1];\n\n var type = appearing ? 'appear' : 'enter';\n\n _this.addClass(node, type, 'active');\n\n if (_this.props.onEntering) {\n _this.props.onEntering(maybeNode, maybeAppearing);\n }\n };\n\n _this.onEntered = function (maybeNode, maybeAppearing) {\n var _this$resolveArgument3 = _this.resolveArguments(maybeNode, maybeAppearing),\n node = _this$resolveArgument3[0],\n appearing = _this$resolveArgument3[1];\n\n var type = appearing ? 'appear' : 'enter';\n\n _this.removeClasses(node, type);\n\n _this.addClass(node, type, 'done');\n\n if (_this.props.onEntered) {\n _this.props.onEntered(maybeNode, maybeAppearing);\n }\n };\n\n _this.onExit = function (maybeNode) {\n var _this$resolveArgument4 = _this.resolveArguments(maybeNode),\n node = _this$resolveArgument4[0];\n\n _this.removeClasses(node, 'appear');\n\n _this.removeClasses(node, 'enter');\n\n _this.addClass(node, 'exit', 'base');\n\n if (_this.props.onExit) {\n _this.props.onExit(maybeNode);\n }\n };\n\n _this.onExiting = function (maybeNode) {\n var _this$resolveArgument5 = _this.resolveArguments(maybeNode),\n node = _this$resolveArgument5[0];\n\n _this.addClass(node, 'exit', 'active');\n\n if (_this.props.onExiting) {\n _this.props.onExiting(maybeNode);\n }\n };\n\n _this.onExited = function (maybeNode) {\n var _this$resolveArgument6 = _this.resolveArguments(maybeNode),\n node = _this$resolveArgument6[0];\n\n _this.removeClasses(node, 'exit');\n\n _this.addClass(node, 'exit', 'done');\n\n if (_this.props.onExited) {\n _this.props.onExited(maybeNode);\n }\n };\n\n _this.resolveArguments = function (maybeNode, maybeAppearing) {\n return _this.props.nodeRef ? [_this.props.nodeRef.current, maybeNode] // here `maybeNode` is actually `appearing`\n : [maybeNode, maybeAppearing];\n };\n\n _this.getClassNames = function (type) {\n var classNames = _this.props.classNames;\n var isStringClassNames = typeof classNames === 'string';\n var prefix = isStringClassNames && classNames ? classNames + \"-\" : '';\n var baseClassName = isStringClassNames ? \"\" + prefix + type : classNames[type];\n var activeClassName = isStringClassNames ? baseClassName + \"-active\" : classNames[type + \"Active\"];\n var doneClassName = isStringClassNames ? baseClassName + \"-done\" : classNames[type + \"Done\"];\n return {\n baseClassName: baseClassName,\n activeClassName: activeClassName,\n doneClassName: doneClassName\n };\n };\n\n return _this;\n }\n\n var _proto = CSSTransition.prototype;\n\n _proto.addClass = function addClass(node, type, phase) {\n var className = this.getClassNames(type)[phase + \"ClassName\"];\n\n var _this$getClassNames = this.getClassNames('enter'),\n doneClassName = _this$getClassNames.doneClassName;\n\n if (type === 'appear' && phase === 'done' && doneClassName) {\n className += \" \" + doneClassName;\n } // This is to force a repaint,\n // which is necessary in order to transition styles when adding a class name.\n\n\n if (phase === 'active') {\n /* eslint-disable no-unused-expressions */\n node && node.scrollTop;\n }\n\n if (className) {\n this.appliedClasses[type][phase] = className;\n\n _addClass(node, className);\n }\n };\n\n _proto.removeClasses = function removeClasses(node, type) {\n var _this$appliedClasses$ = this.appliedClasses[type],\n baseClassName = _this$appliedClasses$.base,\n activeClassName = _this$appliedClasses$.active,\n doneClassName = _this$appliedClasses$.done;\n this.appliedClasses[type] = {};\n\n if (baseClassName) {\n removeClass(node, baseClassName);\n }\n\n if (activeClassName) {\n removeClass(node, activeClassName);\n }\n\n if (doneClassName) {\n removeClass(node, doneClassName);\n }\n };\n\n _proto.render = function render() {\n var _this$props = this.props,\n _ = _this$props.classNames,\n props = _objectWithoutPropertiesLoose(_this$props, [\"classNames\"]);\n\n return /*#__PURE__*/React.createElement(Transition, _extends({}, props, {\n onEnter: this.onEnter,\n onEntered: this.onEntered,\n onEntering: this.onEntering,\n onExit: this.onExit,\n onExiting: this.onExiting,\n onExited: this.onExited\n }));\n };\n\n return CSSTransition;\n}(React.Component);\n\nCSSTransition.defaultProps = {\n classNames: ''\n};\nCSSTransition.propTypes = process.env.NODE_ENV !== \"production\" ? _extends({}, Transition.propTypes, {\n /**\n * The animation classNames applied to the component as it appears, enters,\n * exits or has finished the transition. A single name can be provided, which\n * will be suffixed for each stage, e.g. `classNames=\"fade\"` applies:\n *\n * - `fade-appear`, `fade-appear-active`, `fade-appear-done`\n * - `fade-enter`, `fade-enter-active`, `fade-enter-done`\n * - `fade-exit`, `fade-exit-active`, `fade-exit-done`\n *\n * A few details to note about how these classes are applied:\n *\n * 1. They are _joined_ with the ones that are already defined on the child\n * component, so if you want to add some base styles, you can use\n * `className` without worrying that it will be overridden.\n *\n * 2. If the transition component mounts with `in={false}`, no classes are\n * applied yet. You might be expecting `*-exit-done`, but if you think\n * about it, a component cannot finish exiting if it hasn't entered yet.\n *\n * 2. `fade-appear-done` and `fade-enter-done` will _both_ be applied. This\n * allows you to define different behavior for when appearing is done and\n * when regular entering is done, using selectors like\n * `.fade-enter-done:not(.fade-appear-done)`. For example, you could apply\n * an epic entrance animation when element first appears in the DOM using\n * [Animate.css](https://daneden.github.io/animate.css/). Otherwise you can\n * simply use `fade-enter-done` for defining both cases.\n *\n * Each individual classNames can also be specified independently like:\n *\n * ```js\n * classNames={{\n * appear: 'my-appear',\n * appearActive: 'my-active-appear',\n * appearDone: 'my-done-appear',\n * enter: 'my-enter',\n * enterActive: 'my-active-enter',\n * enterDone: 'my-done-enter',\n * exit: 'my-exit',\n * exitActive: 'my-active-exit',\n * exitDone: 'my-done-exit',\n * }}\n * ```\n *\n * If you want to set these classes using CSS Modules:\n *\n * ```js\n * import styles from './styles.css';\n * ```\n *\n * you might want to use camelCase in your CSS file, that way could simply\n * spread them instead of listing them one by one:\n *\n * ```js\n * classNames={{ ...styles }}\n * ```\n *\n * @type {string | {\n * appear?: string,\n * appearActive?: string,\n * appearDone?: string,\n * enter?: string,\n * enterActive?: string,\n * enterDone?: string,\n * exit?: string,\n * exitActive?: string,\n * exitDone?: string,\n * }}\n */\n classNames: classNamesShape,\n\n /**\n * A `` callback fired immediately after the 'enter' or 'appear' class is\n * applied.\n *\n * **Note**: when `nodeRef` prop is passed, `node` is not passed.\n *\n * @type Function(node: HtmlElement, isAppearing: bool)\n */\n onEnter: PropTypes.func,\n\n /**\n * A `` callback fired immediately after the 'enter-active' or\n * 'appear-active' class is applied.\n *\n * **Note**: when `nodeRef` prop is passed, `node` is not passed.\n *\n * @type Function(node: HtmlElement, isAppearing: bool)\n */\n onEntering: PropTypes.func,\n\n /**\n * A `` callback fired immediately after the 'enter' or\n * 'appear' classes are **removed** and the `done` class is added to the DOM node.\n *\n * **Note**: when `nodeRef` prop is passed, `node` is not passed.\n *\n * @type Function(node: HtmlElement, isAppearing: bool)\n */\n onEntered: PropTypes.func,\n\n /**\n * A `` callback fired immediately after the 'exit' class is\n * applied.\n *\n * **Note**: when `nodeRef` prop is passed, `node` is not passed\n *\n * @type Function(node: HtmlElement)\n */\n onExit: PropTypes.func,\n\n /**\n * A `` callback fired immediately after the 'exit-active' is applied.\n *\n * **Note**: when `nodeRef` prop is passed, `node` is not passed\n *\n * @type Function(node: HtmlElement)\n */\n onExiting: PropTypes.func,\n\n /**\n * A `` callback fired immediately after the 'exit' classes\n * are **removed** and the `exit-done` class is added to the DOM node.\n *\n * **Note**: when `nodeRef` prop is passed, `node` is not passed\n *\n * @type Function(node: HtmlElement)\n */\n onExited: PropTypes.func\n}) : {};\nexport default CSSTransition;","import hasClass from './hasClass';\n/**\n * Adds a CSS class to a given element.\n * \n * @param element the element\n * @param className the CSS class name\n */\n\nexport default function addClass(element, className) {\n if (element.classList) element.classList.add(className);else if (!hasClass(element, className)) if (typeof element.className === 'string') element.className = element.className + \" \" + className;else element.setAttribute('class', (element.className && element.className.baseVal || '') + \" \" + className);\n}","/**\n * Checks if a given element has a CSS class.\n * \n * @param element the element\n * @param className the CSS class name\n */\nexport default function hasClass(element, className) {\n if (element.classList) return !!className && element.classList.contains(className);\n return (\" \" + (element.className.baseVal || element.className) + \" \").indexOf(\" \" + className + \" \") !== -1;\n}","import _classCallCheck from \"@babel/runtime/helpers/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/createClass\";\nimport _defineProperty from \"@babel/runtime/helpers/defineProperty\";\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nimport React from 'react';\nvar defaultOptions = {\n bindI18n: 'languageChanged',\n bindI18nStore: '',\n transEmptyNodeValue: '',\n transSupportBasicHtmlNodes: true,\n transWrapTextNodes: '',\n transKeepBasicHtmlNodesFor: ['br', 'strong', 'i', 'p'],\n useSuspense: true\n};\nvar i18nInstance;\nexport var I18nContext = React.createContext();\nexport function setDefaults() {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n defaultOptions = _objectSpread(_objectSpread({}, defaultOptions), options);\n}\nexport function getDefaults() {\n return defaultOptions;\n}\nexport var ReportNamespaces = function () {\n function ReportNamespaces() {\n _classCallCheck(this, ReportNamespaces);\n\n this.usedNamespaces = {};\n }\n\n _createClass(ReportNamespaces, [{\n key: \"addUsedNamespaces\",\n value: function addUsedNamespaces(namespaces) {\n var _this = this;\n\n namespaces.forEach(function (ns) {\n if (!_this.usedNamespaces[ns]) _this.usedNamespaces[ns] = true;\n });\n }\n }, {\n key: \"getUsedNamespaces\",\n value: function getUsedNamespaces() {\n return Object.keys(this.usedNamespaces);\n }\n }]);\n\n return ReportNamespaces;\n}();\nexport function setI18n(instance) {\n i18nInstance = instance;\n}\nexport function getI18n() {\n return i18nInstance;\n}\nexport var initReactI18next = {\n type: '3rdParty',\n init: function init(instance) {\n setDefaults(instance.options.react);\n setI18n(instance);\n }\n};\nexport function composeInitialProps(ForComponent) {\n return function (ctx) {\n return new Promise(function (resolve) {\n var i18nInitialProps = getInitialProps();\n\n if (ForComponent.getInitialProps) {\n ForComponent.getInitialProps(ctx).then(function (componentsInitialProps) {\n resolve(_objectSpread(_objectSpread({}, componentsInitialProps), i18nInitialProps));\n });\n } else {\n resolve(i18nInitialProps);\n }\n });\n };\n}\nexport function getInitialProps() {\n var i18n = getI18n();\n var namespaces = i18n.reportNamespaces ? i18n.reportNamespaces.getUsedNamespaces() : [];\n var ret = {};\n var initialI18nStore = {};\n i18n.languages.forEach(function (l) {\n initialI18nStore[l] = {};\n namespaces.forEach(function (ns) {\n initialI18nStore[l][ns] = i18n.getResourceBundle(l, ns) || {};\n });\n });\n ret.initialI18nStore = initialI18nStore;\n ret.initialLanguage = i18n.language;\n return ret;\n}","export function warn() {\n if (console && console.warn) {\n var _console;\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n if (typeof args[0] === 'string') args[0] = \"react-i18next:: \".concat(args[0]);\n\n (_console = console).warn.apply(_console, args);\n }\n}\nvar alreadyWarned = {};\nexport function warnOnce() {\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n\n if (typeof args[0] === 'string' && alreadyWarned[args[0]]) return;\n if (typeof args[0] === 'string') alreadyWarned[args[0]] = new Date();\n warn.apply(void 0, args);\n}\nexport function loadNamespaces(i18n, ns, cb) {\n i18n.loadNamespaces(ns, function () {\n if (i18n.isInitialized) {\n cb();\n } else {\n var initialized = function initialized() {\n setTimeout(function () {\n i18n.off('initialized', initialized);\n }, 0);\n cb();\n };\n\n i18n.on('initialized', initialized);\n }\n });\n}\n\nfunction oldI18nextHasLoadedNamespace(ns, i18n) {\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n var lng = i18n.languages[0];\n var fallbackLng = i18n.options ? i18n.options.fallbackLng : false;\n var lastLng = i18n.languages[i18n.languages.length - 1];\n if (lng.toLowerCase() === 'cimode') return true;\n\n var loadNotPending = function loadNotPending(l, n) {\n var loadState = i18n.services.backendConnector.state[\"\".concat(l, \"|\").concat(n)];\n return loadState === -1 || loadState === 2;\n };\n\n if (options.bindI18n && options.bindI18n.indexOf('languageChanging') > -1 && i18n.services.backendConnector.backend && i18n.isLanguageChangingTo && !loadNotPending(i18n.isLanguageChangingTo, ns)) return false;\n if (i18n.hasResourceBundle(lng, ns)) return true;\n if (!i18n.services.backendConnector.backend || i18n.options.resources && !i18n.options.partialBundledLanguages) return true;\n if (loadNotPending(lng, ns) && (!fallbackLng || loadNotPending(lastLng, ns))) return true;\n return false;\n}\n\nexport function hasLoadedNamespace(ns, i18n) {\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n\n if (!i18n.languages || !i18n.languages.length) {\n warnOnce('i18n.languages were undefined or empty', i18n.languages);\n return true;\n }\n\n var isNewerI18next = i18n.options.ignoreJSONStructure !== undefined;\n\n if (!isNewerI18next) {\n return oldI18nextHasLoadedNamespace(ns, i18n, options);\n }\n\n return i18n.hasLoadedNamespace(ns, {\n precheck: function precheck(i18nInstance, loadNotPending) {\n if (options.bindI18n && options.bindI18n.indexOf('languageChanging') > -1 && i18nInstance.services.backendConnector.backend && i18nInstance.isLanguageChangingTo && !loadNotPending(i18nInstance.isLanguageChangingTo, ns)) return false;\n }\n });\n}\nexport function getDisplayName(Component) {\n return Component.displayName || Component.name || (typeof Component === 'string' && Component.length > 0 ? Component : 'Unknown');\n}","import _slicedToArray from \"@babel/runtime/helpers/slicedToArray\";\nimport _defineProperty from \"@babel/runtime/helpers/defineProperty\";\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nimport { useState, useEffect, useContext, useRef } from 'react';\nimport { getI18n, getDefaults, ReportNamespaces, I18nContext } from './context';\nimport { warnOnce, loadNamespaces, hasLoadedNamespace } from './utils';\nexport function useTranslation(ns) {\n var props = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var i18nFromProps = props.i18n;\n\n var _ref = useContext(I18nContext) || {},\n i18nFromContext = _ref.i18n,\n defaultNSFromContext = _ref.defaultNS;\n\n var i18n = i18nFromProps || i18nFromContext || getI18n();\n if (i18n && !i18n.reportNamespaces) i18n.reportNamespaces = new ReportNamespaces();\n\n if (!i18n) {\n warnOnce('You will need to pass in an i18next instance by using initReactI18next');\n\n var notReadyT = function notReadyT(k) {\n return Array.isArray(k) ? k[k.length - 1] : k;\n };\n\n var retNotReady = [notReadyT, {}, false];\n retNotReady.t = notReadyT;\n retNotReady.i18n = {};\n retNotReady.ready = false;\n return retNotReady;\n }\n\n if (i18n.options.react && i18n.options.react.wait !== undefined) warnOnce('It seems you are still using the old wait option, you may migrate to the new useSuspense behaviour.');\n\n var i18nOptions = _objectSpread(_objectSpread(_objectSpread({}, getDefaults()), i18n.options.react), props);\n\n var useSuspense = i18nOptions.useSuspense,\n keyPrefix = i18nOptions.keyPrefix;\n var namespaces = ns || defaultNSFromContext || i18n.options && i18n.options.defaultNS;\n namespaces = typeof namespaces === 'string' ? [namespaces] : namespaces || ['translation'];\n if (i18n.reportNamespaces.addUsedNamespaces) i18n.reportNamespaces.addUsedNamespaces(namespaces);\n var ready = (i18n.isInitialized || i18n.initializedStoreOnce) && namespaces.every(function (n) {\n return hasLoadedNamespace(n, i18n, i18nOptions);\n });\n\n function getT() {\n return i18n.getFixedT(null, i18nOptions.nsMode === 'fallback' ? namespaces : namespaces[0], keyPrefix);\n }\n\n var _useState = useState(getT),\n _useState2 = _slicedToArray(_useState, 2),\n t = _useState2[0],\n setT = _useState2[1];\n\n var isMounted = useRef(true);\n useEffect(function () {\n var bindI18n = i18nOptions.bindI18n,\n bindI18nStore = i18nOptions.bindI18nStore;\n isMounted.current = true;\n\n if (!ready && !useSuspense) {\n loadNamespaces(i18n, namespaces, function () {\n if (isMounted.current) setT(getT);\n });\n }\n\n function boundReset() {\n if (isMounted.current) setT(getT);\n }\n\n if (bindI18n && i18n) i18n.on(bindI18n, boundReset);\n if (bindI18nStore && i18n) i18n.store.on(bindI18nStore, boundReset);\n return function () {\n isMounted.current = false;\n if (bindI18n && i18n) bindI18n.split(' ').forEach(function (e) {\n return i18n.off(e, boundReset);\n });\n if (bindI18nStore && i18n) bindI18nStore.split(' ').forEach(function (e) {\n return i18n.store.off(e, boundReset);\n });\n };\n }, [i18n, namespaces.join()]);\n var isInitial = useRef(true);\n useEffect(function () {\n if (isMounted.current && !isInitial.current) {\n setT(getT);\n }\n\n isInitial.current = false;\n }, [i18n]);\n var ret = [t, i18n, ready];\n ret.t = t;\n ret.i18n = i18n;\n ret.ready = ready;\n if (ready) return ret;\n if (!ready && !useSuspense) return ret;\n throw new Promise(function (resolve) {\n loadNamespaces(i18n, namespaces, function () {\n resolve();\n });\n });\n}","export var noop = function () { };\nexport function on(obj) {\n var args = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n args[_i - 1] = arguments[_i];\n }\n if (obj && obj.addEventListener) {\n obj.addEventListener.apply(obj, args);\n }\n}\nexport function off(obj) {\n var args = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n args[_i - 1] = arguments[_i];\n }\n if (obj && obj.removeEventListener) {\n obj.removeEventListener.apply(obj, args);\n }\n}\nexport var isBrowser = typeof window !== 'undefined';\nexport var isNavigator = typeof navigator !== 'undefined';\n","import { useEffect } from 'react';\nimport { isBrowser, off, on } from './misc/util';\nvar defaultTarget = isBrowser ? window : null;\nvar isListenerType1 = function (target) {\n return !!target.addEventListener;\n};\nvar isListenerType2 = function (target) {\n return !!target.on;\n};\nvar useEvent = function (name, handler, target, options) {\n if (target === void 0) { target = defaultTarget; }\n useEffect(function () {\n if (!handler) {\n return;\n }\n if (!target) {\n return;\n }\n if (isListenerType1(target)) {\n on(target, name, handler, options);\n }\n else if (isListenerType2(target)) {\n target.on(name, handler, options);\n }\n return function () {\n if (isListenerType1(target)) {\n off(target, name, handler, options);\n }\n else if (isListenerType2(target)) {\n target.off(name, handler, options);\n }\n };\n }, [name, handler, target, JSON.stringify(options)]);\n};\nexport default useEvent;\n","import { useMemo } from 'react';\nimport useEvent from './useEvent';\nimport { noop } from './misc/util';\nvar createKeyPredicate = function (keyFilter) {\n return typeof keyFilter === 'function'\n ? keyFilter\n : typeof keyFilter === 'string'\n ? function (event) { return event.key === keyFilter; }\n : keyFilter\n ? function () { return true; }\n : function () { return false; };\n};\nvar useKey = function (key, fn, opts, deps) {\n if (fn === void 0) { fn = noop; }\n if (opts === void 0) { opts = {}; }\n if (deps === void 0) { deps = [key]; }\n var _a = opts.event, event = _a === void 0 ? 'keydown' : _a, target = opts.target, options = opts.options;\n var useMemoHandler = useMemo(function () {\n var predicate = createKeyPredicate(key);\n var handler = function (handlerEvent) {\n if (predicate(handlerEvent)) {\n return fn(handlerEvent);\n }\n };\n return handler;\n }, deps);\n useEvent(event, useMemoHandler, target, options);\n};\nexport default useKey;\n","import { useState } from 'react';\nimport useKey from './useKey';\nvar useKeyPress = function (keyFilter) {\n var _a = useState([false, null]), state = _a[0], set = _a[1];\n useKey(keyFilter, function (event) { return set([true, event]); }, { event: 'keydown' }, [state]);\n useKey(keyFilter, function (event) { return set([false, event]); }, { event: 'keyup' }, [state]);\n return state;\n};\nexport default useKeyPress;\n","import { useEffect } from 'react';\nimport { useFirstMountState } from './useFirstMountState';\nvar useUpdateEffect = function (effect, deps) {\n var isFirstMount = useFirstMountState();\n useEffect(function () {\n if (!isFirstMount) {\n return effect();\n }\n }, deps);\n};\nexport default useUpdateEffect;\n","import { useRef } from 'react';\nexport function useFirstMountState() {\n var isFirst = useRef(true);\n if (isFirst.current) {\n isFirst.current = false;\n return true;\n }\n return isFirst.current;\n}\n","import useKeyPressDefault from './useKeyPress';\nimport useUpdateEffect from './useUpdateEffect';\nvar useKeyPressEvent = function (key, keydown, keyup, useKeyPress) {\n if (useKeyPress === void 0) { useKeyPress = useKeyPressDefault; }\n var _a = useKeyPress(key), pressed = _a[0], event = _a[1];\n useUpdateEffect(function () {\n if (!pressed && keyup) {\n keyup(event);\n }\n else if (pressed && keydown) {\n keydown(event);\n }\n }, [pressed]);\n};\nexport default useKeyPressEvent;\n","const createStoreImpl = (createState) => {\n let state;\n const listeners = /* @__PURE__ */ new Set();\n const setState = (partial, replace) => {\n const nextState = typeof partial === \"function\" ? partial(state) : partial;\n if (nextState !== state) {\n const previousState = state;\n state = replace ? nextState : Object.assign({}, state, nextState);\n listeners.forEach((listener) => listener(state, previousState));\n }\n };\n const getState = () => state;\n const subscribe = (listener) => {\n listeners.add(listener);\n return () => listeners.delete(listener);\n };\n const destroy = () => listeners.clear();\n const api = { setState, getState, subscribe, destroy };\n state = createState(setState, getState, api);\n return api;\n};\nconst createStore = (createState) => createState ? createStoreImpl(createState) : createStoreImpl;\n\nexport { createStore as default };\n","import createStore__default from 'zustand/vanilla';\nexport * from 'zustand/vanilla';\nexport { default as createStore } from 'zustand/vanilla';\nimport { useDebugValue } from 'react';\nimport { useSyncExternalStoreWithSelector } from 'use-sync-external-store/shim/with-selector.js';\n\nfunction useStore(api, selector = api.getState, equalityFn) {\n const slice = useSyncExternalStoreWithSelector(api.subscribe, api.getState, api.getServerState || api.getState, selector, equalityFn);\n useDebugValue(slice);\n return slice;\n}\nconst createImpl = (createState) => {\n const api = typeof createState === \"function\" ? createStore__default(createState) : createState;\n const useBoundStore = (selector, equalityFn) => useStore(api, selector, equalityFn);\n Object.assign(useBoundStore, api);\n return useBoundStore;\n};\nconst create = (createState) => createState ? createImpl(createState) : createImpl;\nvar create$1 = create;\n\nexport { create$1 as default, useStore };\n","import {\n\tButtonHTMLAttributes,\n\tDetailedHTMLProps,\n\tPropsWithChildren,\n} from \"react\"\nimport LoadingBlue from \"../../assets/images/loadingBlue.gif\"\nimport LoadingWhite from \"../../assets/images/loadingWhite.gif\"\n\nexport enum ButtonTheme {\n\tBlue = 0,\n\tRedOnWhite,\n\tWhiteOnRed,\n\tWhite,\n\tLila,\n}\n\nconst classesForTheme = (theme?: ButtonTheme): string => {\n\tswitch (theme) {\n\t\tcase ButtonTheme.RedOnWhite:\n\t\t\treturn \"bg-white text-s-red\"\n\t\tcase ButtonTheme.WhiteOnRed:\n\t\t\treturn \"bg-s-red text-white\"\n\t\tcase ButtonTheme.White:\n\t\t\treturn \"bg-white text-s-blue\"\n\t\tcase ButtonTheme.Lila:\n\t\t\treturn \"bg-s-lila text-white\"\n\t\tdefault:\n\t\t\treturn \"bg-s-blue text-white\"\n\t}\n}\n\ninterface ButtonProps {\n\tloading?: boolean\n\ttheme?: ButtonTheme\n\tclassName?: string\n}\n\nconst Button = ({\n\tloading = false,\n\ttheme,\n\tchildren,\n\t...props\n}: PropsWithChildren<\n\tOmit<\n\t\tDetailedHTMLProps<\n\t\t\tButtonHTMLAttributes,\n\t\t\tHTMLButtonElement\n\t\t>,\n\t\t\"style\"\n\t> &\n\t\tButtonProps\n>) => {\n\treturn (\n\t\t\n\t\t\t{children}\n\t\t\t{loading && (\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t)}\n\t\t\n\t)\n}\n\nexport default Button\n","import { useTranslation } from \"react-i18next\"\nimport Button, { ButtonTheme } from \"src/components/button/button\"\n\ninterface DeletionConfimationAlertProps {\n\tonClear: () => void\n\tonDelete: () => void\n}\n\nexport const DeletionConfimationAlert = ({\n\tonClear,\n\tonDelete,\n}: DeletionConfimationAlertProps) => {\n\tconst { t } = useTranslation()\n\n\treturn (\n\t\t<>\n\t\t\t onClear()}\n\t\t\t>\n\t\t\t\t{t(\"cancel\")}\n\t\t\t\n\t\t\t {\n\t\t\t\t\tonClear()\n\n\t\t\t\t\tonDelete()\n\t\t\t\t}}\n\t\t\t>\n\t\t\t\t{t(\"delete\")}\n\t\t\t\n\t\t\n\t)\n}\n\nexport const RestartServerAlert = ({\n\tonClear,\n\tonDelete,\n}: DeletionConfimationAlertProps) => {\n\tconst { t } = useTranslation()\n\n\treturn (\n\t\t<>\n\t\t\t onClear()}\n\t\t\t>\n\t\t\t\t{t(\"no\")}\n\t\t\t\n\t\t\t {\n\t\t\t\t\tonClear()\n\n\t\t\t\t\tonDelete()\n\t\t\t\t}}\n\t\t\t>\n\t\t\t\t{t(\"yes\")}\n\t\t\t\n\t\t\n\t)\n}\n","// make sure to install `history` https://github.com/remix-run/history/blob/main/docs/installation.md\nimport { createBrowserHistory } from \"history\"\n\nexport const GlobalHistory = createBrowserHistory({ window })\n","import arrayWithHoles from \"./arrayWithHoles.js\";\nimport iterableToArray from \"./iterableToArray.js\";\nimport unsupportedIterableToArray from \"./unsupportedIterableToArray.js\";\nimport nonIterableRest from \"./nonIterableRest.js\";\nexport default function _toArray(arr) {\n return arrayWithHoles(arr) || iterableToArray(arr) || unsupportedIterableToArray(arr) || nonIterableRest();\n}","import _typeof from '@babel/runtime/helpers/esm/typeof';\nimport _classCallCheck from '@babel/runtime/helpers/esm/classCallCheck';\nimport _createClass from '@babel/runtime/helpers/esm/createClass';\nimport _assertThisInitialized from '@babel/runtime/helpers/esm/assertThisInitialized';\nimport _inherits from '@babel/runtime/helpers/esm/inherits';\nimport _possibleConstructorReturn from '@babel/runtime/helpers/esm/possibleConstructorReturn';\nimport _getPrototypeOf from '@babel/runtime/helpers/esm/getPrototypeOf';\nimport _defineProperty from '@babel/runtime/helpers/esm/defineProperty';\nimport _toArray from '@babel/runtime/helpers/esm/toArray';\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nvar consoleLogger = {\n type: 'logger',\n log: function log(args) {\n this.output('log', args);\n },\n warn: function warn(args) {\n this.output('warn', args);\n },\n error: function error(args) {\n this.output('error', args);\n },\n output: function output(type, args) {\n if (console && console[type]) console[type].apply(console, args);\n }\n};\n\nvar Logger = function () {\n function Logger(concreteLogger) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n _classCallCheck(this, Logger);\n\n this.init(concreteLogger, options);\n }\n\n _createClass(Logger, [{\n key: \"init\",\n value: function init(concreteLogger) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n this.prefix = options.prefix || 'i18next:';\n this.logger = concreteLogger || consoleLogger;\n this.options = options;\n this.debug = options.debug;\n }\n }, {\n key: \"setDebug\",\n value: function setDebug(bool) {\n this.debug = bool;\n }\n }, {\n key: \"log\",\n value: function log() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return this.forward(args, 'log', '', true);\n }\n }, {\n key: \"warn\",\n value: function warn() {\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n\n return this.forward(args, 'warn', '', true);\n }\n }, {\n key: \"error\",\n value: function error() {\n for (var _len3 = arguments.length, args = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {\n args[_key3] = arguments[_key3];\n }\n\n return this.forward(args, 'error', '');\n }\n }, {\n key: \"deprecate\",\n value: function deprecate() {\n for (var _len4 = arguments.length, args = new Array(_len4), _key4 = 0; _key4 < _len4; _key4++) {\n args[_key4] = arguments[_key4];\n }\n\n return this.forward(args, 'warn', 'WARNING DEPRECATED: ', true);\n }\n }, {\n key: \"forward\",\n value: function forward(args, lvl, prefix, debugOnly) {\n if (debugOnly && !this.debug) return null;\n if (typeof args[0] === 'string') args[0] = \"\".concat(prefix).concat(this.prefix, \" \").concat(args[0]);\n return this.logger[lvl](args);\n }\n }, {\n key: \"create\",\n value: function create(moduleName) {\n return new Logger(this.logger, _objectSpread(_objectSpread({}, {\n prefix: \"\".concat(this.prefix, \":\").concat(moduleName, \":\")\n }), this.options));\n }\n }]);\n\n return Logger;\n}();\n\nvar baseLogger = new Logger();\n\nvar EventEmitter = function () {\n function EventEmitter() {\n _classCallCheck(this, EventEmitter);\n\n this.observers = {};\n }\n\n _createClass(EventEmitter, [{\n key: \"on\",\n value: function on(events, listener) {\n var _this = this;\n\n events.split(' ').forEach(function (event) {\n _this.observers[event] = _this.observers[event] || [];\n\n _this.observers[event].push(listener);\n });\n return this;\n }\n }, {\n key: \"off\",\n value: function off(event, listener) {\n if (!this.observers[event]) return;\n\n if (!listener) {\n delete this.observers[event];\n return;\n }\n\n this.observers[event] = this.observers[event].filter(function (l) {\n return l !== listener;\n });\n }\n }, {\n key: \"emit\",\n value: function emit(event) {\n for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n\n if (this.observers[event]) {\n var cloned = [].concat(this.observers[event]);\n cloned.forEach(function (observer) {\n observer.apply(void 0, args);\n });\n }\n\n if (this.observers['*']) {\n var _cloned = [].concat(this.observers['*']);\n\n _cloned.forEach(function (observer) {\n observer.apply(observer, [event].concat(args));\n });\n }\n }\n }]);\n\n return EventEmitter;\n}();\n\nfunction defer() {\n var res;\n var rej;\n var promise = new Promise(function (resolve, reject) {\n res = resolve;\n rej = reject;\n });\n promise.resolve = res;\n promise.reject = rej;\n return promise;\n}\nfunction makeString(object) {\n if (object == null) return '';\n return '' + object;\n}\nfunction copy(a, s, t) {\n a.forEach(function (m) {\n if (s[m]) t[m] = s[m];\n });\n}\n\nfunction getLastOfPath(object, path, Empty) {\n function cleanKey(key) {\n return key && key.indexOf('###') > -1 ? key.replace(/###/g, '.') : key;\n }\n\n function canNotTraverseDeeper() {\n return !object || typeof object === 'string';\n }\n\n var stack = typeof path !== 'string' ? [].concat(path) : path.split('.');\n\n while (stack.length > 1) {\n if (canNotTraverseDeeper()) return {};\n var key = cleanKey(stack.shift());\n if (!object[key] && Empty) object[key] = new Empty();\n\n if (Object.prototype.hasOwnProperty.call(object, key)) {\n object = object[key];\n } else {\n object = {};\n }\n }\n\n if (canNotTraverseDeeper()) return {};\n return {\n obj: object,\n k: cleanKey(stack.shift())\n };\n}\n\nfunction setPath(object, path, newValue) {\n var _getLastOfPath = getLastOfPath(object, path, Object),\n obj = _getLastOfPath.obj,\n k = _getLastOfPath.k;\n\n obj[k] = newValue;\n}\nfunction pushPath(object, path, newValue, concat) {\n var _getLastOfPath2 = getLastOfPath(object, path, Object),\n obj = _getLastOfPath2.obj,\n k = _getLastOfPath2.k;\n\n obj[k] = obj[k] || [];\n if (concat) obj[k] = obj[k].concat(newValue);\n if (!concat) obj[k].push(newValue);\n}\nfunction getPath(object, path) {\n var _getLastOfPath3 = getLastOfPath(object, path),\n obj = _getLastOfPath3.obj,\n k = _getLastOfPath3.k;\n\n if (!obj) return undefined;\n return obj[k];\n}\nfunction getPathWithDefaults(data, defaultData, key) {\n var value = getPath(data, key);\n\n if (value !== undefined) {\n return value;\n }\n\n return getPath(defaultData, key);\n}\nfunction deepExtend(target, source, overwrite) {\n for (var prop in source) {\n if (prop !== '__proto__' && prop !== 'constructor') {\n if (prop in target) {\n if (typeof target[prop] === 'string' || target[prop] instanceof String || typeof source[prop] === 'string' || source[prop] instanceof String) {\n if (overwrite) target[prop] = source[prop];\n } else {\n deepExtend(target[prop], source[prop], overwrite);\n }\n } else {\n target[prop] = source[prop];\n }\n }\n }\n\n return target;\n}\nfunction regexEscape(str) {\n return str.replace(/[\\-\\[\\]\\/\\{\\}\\(\\)\\*\\+\\?\\.\\\\\\^\\$\\|]/g, '\\\\$&');\n}\nvar _entityMap = {\n '&': '&',\n '<': '<',\n '>': '>',\n '\"': '"',\n \"'\": ''',\n '/': '/'\n};\nfunction escape(data) {\n if (typeof data === 'string') {\n return data.replace(/[&<>\"'\\/]/g, function (s) {\n return _entityMap[s];\n });\n }\n\n return data;\n}\nvar isIE10 = typeof window !== 'undefined' && window.navigator && typeof window.navigator.userAgentData === 'undefined' && window.navigator.userAgent && window.navigator.userAgent.indexOf('MSIE') > -1;\nvar chars = [' ', ',', '?', '!', ';'];\nfunction looksLikeObjectPath(key, nsSeparator, keySeparator) {\n nsSeparator = nsSeparator || '';\n keySeparator = keySeparator || '';\n var possibleChars = chars.filter(function (c) {\n return nsSeparator.indexOf(c) < 0 && keySeparator.indexOf(c) < 0;\n });\n if (possibleChars.length === 0) return true;\n var r = new RegExp(\"(\".concat(possibleChars.map(function (c) {\n return c === '?' ? '\\\\?' : c;\n }).join('|'), \")\"));\n var matched = !r.test(key);\n\n if (!matched) {\n var ki = key.indexOf(keySeparator);\n\n if (ki > 0 && !r.test(key.substring(0, ki))) {\n matched = true;\n }\n }\n\n return matched;\n}\n\nfunction ownKeys$1(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread$1(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys$1(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys$1(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction deepFind(obj, path) {\n var keySeparator = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : '.';\n if (!obj) return undefined;\n if (obj[path]) return obj[path];\n var paths = path.split(keySeparator);\n var current = obj;\n\n for (var i = 0; i < paths.length; ++i) {\n if (!current) return undefined;\n\n if (typeof current[paths[i]] === 'string' && i + 1 < paths.length) {\n return undefined;\n }\n\n if (current[paths[i]] === undefined) {\n var j = 2;\n var p = paths.slice(i, i + j).join(keySeparator);\n var mix = current[p];\n\n while (mix === undefined && paths.length > i + j) {\n j++;\n p = paths.slice(i, i + j).join(keySeparator);\n mix = current[p];\n }\n\n if (mix === undefined) return undefined;\n if (mix === null) return null;\n\n if (path.endsWith(p)) {\n if (typeof mix === 'string') return mix;\n if (p && typeof mix[p] === 'string') return mix[p];\n }\n\n var joinedPath = paths.slice(i + j).join(keySeparator);\n if (joinedPath) return deepFind(mix, joinedPath, keySeparator);\n return undefined;\n }\n\n current = current[paths[i]];\n }\n\n return current;\n}\n\nvar ResourceStore = function (_EventEmitter) {\n _inherits(ResourceStore, _EventEmitter);\n\n var _super = _createSuper(ResourceStore);\n\n function ResourceStore(data) {\n var _this;\n\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {\n ns: ['translation'],\n defaultNS: 'translation'\n };\n\n _classCallCheck(this, ResourceStore);\n\n _this = _super.call(this);\n\n if (isIE10) {\n EventEmitter.call(_assertThisInitialized(_this));\n }\n\n _this.data = data || {};\n _this.options = options;\n\n if (_this.options.keySeparator === undefined) {\n _this.options.keySeparator = '.';\n }\n\n if (_this.options.ignoreJSONStructure === undefined) {\n _this.options.ignoreJSONStructure = true;\n }\n\n return _this;\n }\n\n _createClass(ResourceStore, [{\n key: \"addNamespaces\",\n value: function addNamespaces(ns) {\n if (this.options.ns.indexOf(ns) < 0) {\n this.options.ns.push(ns);\n }\n }\n }, {\n key: \"removeNamespaces\",\n value: function removeNamespaces(ns) {\n var index = this.options.ns.indexOf(ns);\n\n if (index > -1) {\n this.options.ns.splice(index, 1);\n }\n }\n }, {\n key: \"getResource\",\n value: function getResource(lng, ns, key) {\n var options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n var keySeparator = options.keySeparator !== undefined ? options.keySeparator : this.options.keySeparator;\n var ignoreJSONStructure = options.ignoreJSONStructure !== undefined ? options.ignoreJSONStructure : this.options.ignoreJSONStructure;\n var path = [lng, ns];\n if (key && typeof key !== 'string') path = path.concat(key);\n if (key && typeof key === 'string') path = path.concat(keySeparator ? key.split(keySeparator) : key);\n\n if (lng.indexOf('.') > -1) {\n path = lng.split('.');\n }\n\n var result = getPath(this.data, path);\n if (result || !ignoreJSONStructure || typeof key !== 'string') return result;\n return deepFind(this.data && this.data[lng] && this.data[lng][ns], key, keySeparator);\n }\n }, {\n key: \"addResource\",\n value: function addResource(lng, ns, key, value) {\n var options = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : {\n silent: false\n };\n var keySeparator = this.options.keySeparator;\n if (keySeparator === undefined) keySeparator = '.';\n var path = [lng, ns];\n if (key) path = path.concat(keySeparator ? key.split(keySeparator) : key);\n\n if (lng.indexOf('.') > -1) {\n path = lng.split('.');\n value = ns;\n ns = path[1];\n }\n\n this.addNamespaces(ns);\n setPath(this.data, path, value);\n if (!options.silent) this.emit('added', lng, ns, key, value);\n }\n }, {\n key: \"addResources\",\n value: function addResources(lng, ns, resources) {\n var options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {\n silent: false\n };\n\n for (var m in resources) {\n if (typeof resources[m] === 'string' || Object.prototype.toString.apply(resources[m]) === '[object Array]') this.addResource(lng, ns, m, resources[m], {\n silent: true\n });\n }\n\n if (!options.silent) this.emit('added', lng, ns, resources);\n }\n }, {\n key: \"addResourceBundle\",\n value: function addResourceBundle(lng, ns, resources, deep, overwrite) {\n var options = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : {\n silent: false\n };\n var path = [lng, ns];\n\n if (lng.indexOf('.') > -1) {\n path = lng.split('.');\n deep = resources;\n resources = ns;\n ns = path[1];\n }\n\n this.addNamespaces(ns);\n var pack = getPath(this.data, path) || {};\n\n if (deep) {\n deepExtend(pack, resources, overwrite);\n } else {\n pack = _objectSpread$1(_objectSpread$1({}, pack), resources);\n }\n\n setPath(this.data, path, pack);\n if (!options.silent) this.emit('added', lng, ns, resources);\n }\n }, {\n key: \"removeResourceBundle\",\n value: function removeResourceBundle(lng, ns) {\n if (this.hasResourceBundle(lng, ns)) {\n delete this.data[lng][ns];\n }\n\n this.removeNamespaces(ns);\n this.emit('removed', lng, ns);\n }\n }, {\n key: \"hasResourceBundle\",\n value: function hasResourceBundle(lng, ns) {\n return this.getResource(lng, ns) !== undefined;\n }\n }, {\n key: \"getResourceBundle\",\n value: function getResourceBundle(lng, ns) {\n if (!ns) ns = this.options.defaultNS;\n if (this.options.compatibilityAPI === 'v1') return _objectSpread$1(_objectSpread$1({}, {}), this.getResource(lng, ns));\n return this.getResource(lng, ns);\n }\n }, {\n key: \"getDataByLanguage\",\n value: function getDataByLanguage(lng) {\n return this.data[lng];\n }\n }, {\n key: \"hasLanguageSomeTranslations\",\n value: function hasLanguageSomeTranslations(lng) {\n var data = this.getDataByLanguage(lng);\n var n = data && Object.keys(data) || [];\n return !!n.find(function (v) {\n return data[v] && Object.keys(data[v]).length > 0;\n });\n }\n }, {\n key: \"toJSON\",\n value: function toJSON() {\n return this.data;\n }\n }]);\n\n return ResourceStore;\n}(EventEmitter);\n\nvar postProcessor = {\n processors: {},\n addPostProcessor: function addPostProcessor(module) {\n this.processors[module.name] = module;\n },\n handle: function handle(processors, value, key, options, translator) {\n var _this = this;\n\n processors.forEach(function (processor) {\n if (_this.processors[processor]) value = _this.processors[processor].process(value, key, options, translator);\n });\n return value;\n }\n};\n\nfunction ownKeys$2(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread$2(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys$2(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys$2(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _createSuper$1(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct$1(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _isNativeReflectConstruct$1() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\nvar checkedLoadedFor = {};\n\nvar Translator = function (_EventEmitter) {\n _inherits(Translator, _EventEmitter);\n\n var _super = _createSuper$1(Translator);\n\n function Translator(services) {\n var _this;\n\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n _classCallCheck(this, Translator);\n\n _this = _super.call(this);\n\n if (isIE10) {\n EventEmitter.call(_assertThisInitialized(_this));\n }\n\n copy(['resourceStore', 'languageUtils', 'pluralResolver', 'interpolator', 'backendConnector', 'i18nFormat', 'utils'], services, _assertThisInitialized(_this));\n _this.options = options;\n\n if (_this.options.keySeparator === undefined) {\n _this.options.keySeparator = '.';\n }\n\n _this.logger = baseLogger.create('translator');\n return _this;\n }\n\n _createClass(Translator, [{\n key: \"changeLanguage\",\n value: function changeLanguage(lng) {\n if (lng) this.language = lng;\n }\n }, {\n key: \"exists\",\n value: function exists(key) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {\n interpolation: {}\n };\n\n if (key === undefined || key === null) {\n return false;\n }\n\n var resolved = this.resolve(key, options);\n return resolved && resolved.res !== undefined;\n }\n }, {\n key: \"extractFromKey\",\n value: function extractFromKey(key, options) {\n var nsSeparator = options.nsSeparator !== undefined ? options.nsSeparator : this.options.nsSeparator;\n if (nsSeparator === undefined) nsSeparator = ':';\n var keySeparator = options.keySeparator !== undefined ? options.keySeparator : this.options.keySeparator;\n var namespaces = options.ns || this.options.defaultNS || [];\n var wouldCheckForNsInKey = nsSeparator && key.indexOf(nsSeparator) > -1;\n var seemsNaturalLanguage = !this.options.userDefinedKeySeparator && !options.keySeparator && !this.options.userDefinedNsSeparator && !options.nsSeparator && !looksLikeObjectPath(key, nsSeparator, keySeparator);\n\n if (wouldCheckForNsInKey && !seemsNaturalLanguage) {\n var m = key.match(this.interpolator.nestingRegexp);\n\n if (m && m.length > 0) {\n return {\n key: key,\n namespaces: namespaces\n };\n }\n\n var parts = key.split(nsSeparator);\n if (nsSeparator !== keySeparator || nsSeparator === keySeparator && this.options.ns.indexOf(parts[0]) > -1) namespaces = parts.shift();\n key = parts.join(keySeparator);\n }\n\n if (typeof namespaces === 'string') namespaces = [namespaces];\n return {\n key: key,\n namespaces: namespaces\n };\n }\n }, {\n key: \"translate\",\n value: function translate(keys, options, lastKey) {\n var _this2 = this;\n\n if (_typeof(options) !== 'object' && this.options.overloadTranslationOptionHandler) {\n options = this.options.overloadTranslationOptionHandler(arguments);\n }\n\n if (!options) options = {};\n if (keys === undefined || keys === null) return '';\n if (!Array.isArray(keys)) keys = [String(keys)];\n var returnDetails = options.returnDetails !== undefined ? options.returnDetails : this.options.returnDetails;\n var keySeparator = options.keySeparator !== undefined ? options.keySeparator : this.options.keySeparator;\n\n var _this$extractFromKey = this.extractFromKey(keys[keys.length - 1], options),\n key = _this$extractFromKey.key,\n namespaces = _this$extractFromKey.namespaces;\n\n var namespace = namespaces[namespaces.length - 1];\n var lng = options.lng || this.language;\n var appendNamespaceToCIMode = options.appendNamespaceToCIMode || this.options.appendNamespaceToCIMode;\n\n if (lng && lng.toLowerCase() === 'cimode') {\n if (appendNamespaceToCIMode) {\n var nsSeparator = options.nsSeparator || this.options.nsSeparator;\n\n if (returnDetails) {\n resolved.res = \"\".concat(namespace).concat(nsSeparator).concat(key);\n return resolved;\n }\n\n return \"\".concat(namespace).concat(nsSeparator).concat(key);\n }\n\n if (returnDetails) {\n resolved.res = key;\n return resolved;\n }\n\n return key;\n }\n\n var resolved = this.resolve(keys, options);\n var res = resolved && resolved.res;\n var resUsedKey = resolved && resolved.usedKey || key;\n var resExactUsedKey = resolved && resolved.exactUsedKey || key;\n var resType = Object.prototype.toString.apply(res);\n var noObject = ['[object Number]', '[object Function]', '[object RegExp]'];\n var joinArrays = options.joinArrays !== undefined ? options.joinArrays : this.options.joinArrays;\n var handleAsObjectInI18nFormat = !this.i18nFormat || this.i18nFormat.handleAsObject;\n var handleAsObject = typeof res !== 'string' && typeof res !== 'boolean' && typeof res !== 'number';\n\n if (handleAsObjectInI18nFormat && res && handleAsObject && noObject.indexOf(resType) < 0 && !(typeof joinArrays === 'string' && resType === '[object Array]')) {\n if (!options.returnObjects && !this.options.returnObjects) {\n if (!this.options.returnedObjectHandler) {\n this.logger.warn('accessing an object - but returnObjects options is not enabled!');\n }\n\n var r = this.options.returnedObjectHandler ? this.options.returnedObjectHandler(resUsedKey, res, _objectSpread$2(_objectSpread$2({}, options), {}, {\n ns: namespaces\n })) : \"key '\".concat(key, \" (\").concat(this.language, \")' returned an object instead of string.\");\n\n if (returnDetails) {\n resolved.res = r;\n return resolved;\n }\n\n return r;\n }\n\n if (keySeparator) {\n var resTypeIsArray = resType === '[object Array]';\n var copy = resTypeIsArray ? [] : {};\n var newKeyToUse = resTypeIsArray ? resExactUsedKey : resUsedKey;\n\n for (var m in res) {\n if (Object.prototype.hasOwnProperty.call(res, m)) {\n var deepKey = \"\".concat(newKeyToUse).concat(keySeparator).concat(m);\n copy[m] = this.translate(deepKey, _objectSpread$2(_objectSpread$2({}, options), {\n joinArrays: false,\n ns: namespaces\n }));\n if (copy[m] === deepKey) copy[m] = res[m];\n }\n }\n\n res = copy;\n }\n } else if (handleAsObjectInI18nFormat && typeof joinArrays === 'string' && resType === '[object Array]') {\n res = res.join(joinArrays);\n if (res) res = this.extendTranslation(res, keys, options, lastKey);\n } else {\n var usedDefault = false;\n var usedKey = false;\n var needsPluralHandling = options.count !== undefined && typeof options.count !== 'string';\n var hasDefaultValue = Translator.hasDefaultValue(options);\n var defaultValueSuffix = needsPluralHandling ? this.pluralResolver.getSuffix(lng, options.count, options) : '';\n var defaultValue = options[\"defaultValue\".concat(defaultValueSuffix)] || options.defaultValue;\n\n if (!this.isValidLookup(res) && hasDefaultValue) {\n usedDefault = true;\n res = defaultValue;\n }\n\n if (!this.isValidLookup(res)) {\n usedKey = true;\n res = key;\n }\n\n var missingKeyNoValueFallbackToKey = options.missingKeyNoValueFallbackToKey || this.options.missingKeyNoValueFallbackToKey;\n var resForMissing = missingKeyNoValueFallbackToKey && usedKey ? undefined : res;\n var updateMissing = hasDefaultValue && defaultValue !== res && this.options.updateMissing;\n\n if (usedKey || usedDefault || updateMissing) {\n this.logger.log(updateMissing ? 'updateKey' : 'missingKey', lng, namespace, key, updateMissing ? defaultValue : res);\n\n if (keySeparator) {\n var fk = this.resolve(key, _objectSpread$2(_objectSpread$2({}, options), {}, {\n keySeparator: false\n }));\n if (fk && fk.res) this.logger.warn('Seems the loaded translations were in flat JSON format instead of nested. Either set keySeparator: false on init or make sure your translations are published in nested format.');\n }\n\n var lngs = [];\n var fallbackLngs = this.languageUtils.getFallbackCodes(this.options.fallbackLng, options.lng || this.language);\n\n if (this.options.saveMissingTo === 'fallback' && fallbackLngs && fallbackLngs[0]) {\n for (var i = 0; i < fallbackLngs.length; i++) {\n lngs.push(fallbackLngs[i]);\n }\n } else if (this.options.saveMissingTo === 'all') {\n lngs = this.languageUtils.toResolveHierarchy(options.lng || this.language);\n } else {\n lngs.push(options.lng || this.language);\n }\n\n var send = function send(l, k, specificDefaultValue) {\n var defaultForMissing = hasDefaultValue && specificDefaultValue !== res ? specificDefaultValue : resForMissing;\n\n if (_this2.options.missingKeyHandler) {\n _this2.options.missingKeyHandler(l, namespace, k, defaultForMissing, updateMissing, options);\n } else if (_this2.backendConnector && _this2.backendConnector.saveMissing) {\n _this2.backendConnector.saveMissing(l, namespace, k, defaultForMissing, updateMissing, options);\n }\n\n _this2.emit('missingKey', l, namespace, k, res);\n };\n\n if (this.options.saveMissing) {\n if (this.options.saveMissingPlurals && needsPluralHandling) {\n lngs.forEach(function (language) {\n _this2.pluralResolver.getSuffixes(language, options).forEach(function (suffix) {\n send([language], key + suffix, options[\"defaultValue\".concat(suffix)] || defaultValue);\n });\n });\n } else {\n send(lngs, key, defaultValue);\n }\n }\n }\n\n res = this.extendTranslation(res, keys, options, resolved, lastKey);\n if (usedKey && res === key && this.options.appendNamespaceToMissingKey) res = \"\".concat(namespace, \":\").concat(key);\n\n if ((usedKey || usedDefault) && this.options.parseMissingKeyHandler) {\n if (this.options.compatibilityAPI !== 'v1') {\n res = this.options.parseMissingKeyHandler(this.options.appendNamespaceToMissingKey ? \"\".concat(namespace, \":\").concat(key) : key, usedDefault ? res : undefined);\n } else {\n res = this.options.parseMissingKeyHandler(res);\n }\n }\n }\n\n if (returnDetails) {\n resolved.res = res;\n return resolved;\n }\n\n return res;\n }\n }, {\n key: \"extendTranslation\",\n value: function extendTranslation(res, key, options, resolved, lastKey) {\n var _this3 = this;\n\n if (this.i18nFormat && this.i18nFormat.parse) {\n res = this.i18nFormat.parse(res, _objectSpread$2(_objectSpread$2({}, this.options.interpolation.defaultVariables), options), resolved.usedLng, resolved.usedNS, resolved.usedKey, {\n resolved: resolved\n });\n } else if (!options.skipInterpolation) {\n if (options.interpolation) this.interpolator.init(_objectSpread$2(_objectSpread$2({}, options), {\n interpolation: _objectSpread$2(_objectSpread$2({}, this.options.interpolation), options.interpolation)\n }));\n var skipOnVariables = typeof res === 'string' && (options && options.interpolation && options.interpolation.skipOnVariables !== undefined ? options.interpolation.skipOnVariables : this.options.interpolation.skipOnVariables);\n var nestBef;\n\n if (skipOnVariables) {\n var nb = res.match(this.interpolator.nestingRegexp);\n nestBef = nb && nb.length;\n }\n\n var data = options.replace && typeof options.replace !== 'string' ? options.replace : options;\n if (this.options.interpolation.defaultVariables) data = _objectSpread$2(_objectSpread$2({}, this.options.interpolation.defaultVariables), data);\n res = this.interpolator.interpolate(res, data, options.lng || this.language, options);\n\n if (skipOnVariables) {\n var na = res.match(this.interpolator.nestingRegexp);\n var nestAft = na && na.length;\n if (nestBef < nestAft) options.nest = false;\n }\n\n if (options.nest !== false) res = this.interpolator.nest(res, function () {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n if (lastKey && lastKey[0] === args[0] && !options.context) {\n _this3.logger.warn(\"It seems you are nesting recursively key: \".concat(args[0], \" in key: \").concat(key[0]));\n\n return null;\n }\n\n return _this3.translate.apply(_this3, args.concat([key]));\n }, options);\n if (options.interpolation) this.interpolator.reset();\n }\n\n var postProcess = options.postProcess || this.options.postProcess;\n var postProcessorNames = typeof postProcess === 'string' ? [postProcess] : postProcess;\n\n if (res !== undefined && res !== null && postProcessorNames && postProcessorNames.length && options.applyPostProcessor !== false) {\n res = postProcessor.handle(postProcessorNames, res, key, this.options && this.options.postProcessPassResolved ? _objectSpread$2({\n i18nResolved: resolved\n }, options) : options, this);\n }\n\n return res;\n }\n }, {\n key: \"resolve\",\n value: function resolve(keys) {\n var _this4 = this;\n\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var found;\n var usedKey;\n var exactUsedKey;\n var usedLng;\n var usedNS;\n if (typeof keys === 'string') keys = [keys];\n keys.forEach(function (k) {\n if (_this4.isValidLookup(found)) return;\n\n var extracted = _this4.extractFromKey(k, options);\n\n var key = extracted.key;\n usedKey = key;\n var namespaces = extracted.namespaces;\n if (_this4.options.fallbackNS) namespaces = namespaces.concat(_this4.options.fallbackNS);\n var needsPluralHandling = options.count !== undefined && typeof options.count !== 'string';\n\n var needsZeroSuffixLookup = needsPluralHandling && !options.ordinal && options.count === 0 && _this4.pluralResolver.shouldUseIntlApi();\n\n var needsContextHandling = options.context !== undefined && (typeof options.context === 'string' || typeof options.context === 'number') && options.context !== '';\n var codes = options.lngs ? options.lngs : _this4.languageUtils.toResolveHierarchy(options.lng || _this4.language, options.fallbackLng);\n namespaces.forEach(function (ns) {\n if (_this4.isValidLookup(found)) return;\n usedNS = ns;\n\n if (!checkedLoadedFor[\"\".concat(codes[0], \"-\").concat(ns)] && _this4.utils && _this4.utils.hasLoadedNamespace && !_this4.utils.hasLoadedNamespace(usedNS)) {\n checkedLoadedFor[\"\".concat(codes[0], \"-\").concat(ns)] = true;\n\n _this4.logger.warn(\"key \\\"\".concat(usedKey, \"\\\" for languages \\\"\").concat(codes.join(', '), \"\\\" won't get resolved as namespace \\\"\").concat(usedNS, \"\\\" was not yet loaded\"), 'This means something IS WRONG in your setup. You access the t function before i18next.init / i18next.loadNamespace / i18next.changeLanguage was done. Wait for the callback or Promise to resolve before accessing it!!!');\n }\n\n codes.forEach(function (code) {\n if (_this4.isValidLookup(found)) return;\n usedLng = code;\n var finalKeys = [key];\n\n if (_this4.i18nFormat && _this4.i18nFormat.addLookupKeys) {\n _this4.i18nFormat.addLookupKeys(finalKeys, key, code, ns, options);\n } else {\n var pluralSuffix;\n if (needsPluralHandling) pluralSuffix = _this4.pluralResolver.getSuffix(code, options.count, options);\n var zeroSuffix = '_zero';\n\n if (needsPluralHandling) {\n finalKeys.push(key + pluralSuffix);\n\n if (needsZeroSuffixLookup) {\n finalKeys.push(key + zeroSuffix);\n }\n }\n\n if (needsContextHandling) {\n var contextKey = \"\".concat(key).concat(_this4.options.contextSeparator).concat(options.context);\n finalKeys.push(contextKey);\n\n if (needsPluralHandling) {\n finalKeys.push(contextKey + pluralSuffix);\n\n if (needsZeroSuffixLookup) {\n finalKeys.push(contextKey + zeroSuffix);\n }\n }\n }\n }\n\n var possibleKey;\n\n while (possibleKey = finalKeys.pop()) {\n if (!_this4.isValidLookup(found)) {\n exactUsedKey = possibleKey;\n found = _this4.getResource(code, ns, possibleKey, options);\n }\n }\n });\n });\n });\n return {\n res: found,\n usedKey: usedKey,\n exactUsedKey: exactUsedKey,\n usedLng: usedLng,\n usedNS: usedNS\n };\n }\n }, {\n key: \"isValidLookup\",\n value: function isValidLookup(res) {\n return res !== undefined && !(!this.options.returnNull && res === null) && !(!this.options.returnEmptyString && res === '');\n }\n }, {\n key: \"getResource\",\n value: function getResource(code, ns, key) {\n var options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n if (this.i18nFormat && this.i18nFormat.getResource) return this.i18nFormat.getResource(code, ns, key, options);\n return this.resourceStore.getResource(code, ns, key, options);\n }\n }], [{\n key: \"hasDefaultValue\",\n value: function hasDefaultValue(options) {\n var prefix = 'defaultValue';\n\n for (var option in options) {\n if (Object.prototype.hasOwnProperty.call(options, option) && prefix === option.substring(0, prefix.length) && undefined !== options[option]) {\n return true;\n }\n }\n\n return false;\n }\n }]);\n\n return Translator;\n}(EventEmitter);\n\nfunction capitalize(string) {\n return string.charAt(0).toUpperCase() + string.slice(1);\n}\n\nvar LanguageUtil = function () {\n function LanguageUtil(options) {\n _classCallCheck(this, LanguageUtil);\n\n this.options = options;\n this.supportedLngs = this.options.supportedLngs || false;\n this.logger = baseLogger.create('languageUtils');\n }\n\n _createClass(LanguageUtil, [{\n key: \"getScriptPartFromCode\",\n value: function getScriptPartFromCode(code) {\n if (!code || code.indexOf('-') < 0) return null;\n var p = code.split('-');\n if (p.length === 2) return null;\n p.pop();\n if (p[p.length - 1].toLowerCase() === 'x') return null;\n return this.formatLanguageCode(p.join('-'));\n }\n }, {\n key: \"getLanguagePartFromCode\",\n value: function getLanguagePartFromCode(code) {\n if (!code || code.indexOf('-') < 0) return code;\n var p = code.split('-');\n return this.formatLanguageCode(p[0]);\n }\n }, {\n key: \"formatLanguageCode\",\n value: function formatLanguageCode(code) {\n if (typeof code === 'string' && code.indexOf('-') > -1) {\n var specialCases = ['hans', 'hant', 'latn', 'cyrl', 'cans', 'mong', 'arab'];\n var p = code.split('-');\n\n if (this.options.lowerCaseLng) {\n p = p.map(function (part) {\n return part.toLowerCase();\n });\n } else if (p.length === 2) {\n p[0] = p[0].toLowerCase();\n p[1] = p[1].toUpperCase();\n if (specialCases.indexOf(p[1].toLowerCase()) > -1) p[1] = capitalize(p[1].toLowerCase());\n } else if (p.length === 3) {\n p[0] = p[0].toLowerCase();\n if (p[1].length === 2) p[1] = p[1].toUpperCase();\n if (p[0] !== 'sgn' && p[2].length === 2) p[2] = p[2].toUpperCase();\n if (specialCases.indexOf(p[1].toLowerCase()) > -1) p[1] = capitalize(p[1].toLowerCase());\n if (specialCases.indexOf(p[2].toLowerCase()) > -1) p[2] = capitalize(p[2].toLowerCase());\n }\n\n return p.join('-');\n }\n\n return this.options.cleanCode || this.options.lowerCaseLng ? code.toLowerCase() : code;\n }\n }, {\n key: \"isSupportedCode\",\n value: function isSupportedCode(code) {\n if (this.options.load === 'languageOnly' || this.options.nonExplicitSupportedLngs) {\n code = this.getLanguagePartFromCode(code);\n }\n\n return !this.supportedLngs || !this.supportedLngs.length || this.supportedLngs.indexOf(code) > -1;\n }\n }, {\n key: \"getBestMatchFromCodes\",\n value: function getBestMatchFromCodes(codes) {\n var _this = this;\n\n if (!codes) return null;\n var found;\n codes.forEach(function (code) {\n if (found) return;\n\n var cleanedLng = _this.formatLanguageCode(code);\n\n if (!_this.options.supportedLngs || _this.isSupportedCode(cleanedLng)) found = cleanedLng;\n });\n\n if (!found && this.options.supportedLngs) {\n codes.forEach(function (code) {\n if (found) return;\n\n var lngOnly = _this.getLanguagePartFromCode(code);\n\n if (_this.isSupportedCode(lngOnly)) return found = lngOnly;\n found = _this.options.supportedLngs.find(function (supportedLng) {\n if (supportedLng.indexOf(lngOnly) === 0) return supportedLng;\n });\n });\n }\n\n if (!found) found = this.getFallbackCodes(this.options.fallbackLng)[0];\n return found;\n }\n }, {\n key: \"getFallbackCodes\",\n value: function getFallbackCodes(fallbacks, code) {\n if (!fallbacks) return [];\n if (typeof fallbacks === 'function') fallbacks = fallbacks(code);\n if (typeof fallbacks === 'string') fallbacks = [fallbacks];\n if (Object.prototype.toString.apply(fallbacks) === '[object Array]') return fallbacks;\n if (!code) return fallbacks[\"default\"] || [];\n var found = fallbacks[code];\n if (!found) found = fallbacks[this.getScriptPartFromCode(code)];\n if (!found) found = fallbacks[this.formatLanguageCode(code)];\n if (!found) found = fallbacks[this.getLanguagePartFromCode(code)];\n if (!found) found = fallbacks[\"default\"];\n return found || [];\n }\n }, {\n key: \"toResolveHierarchy\",\n value: function toResolveHierarchy(code, fallbackCode) {\n var _this2 = this;\n\n var fallbackCodes = this.getFallbackCodes(fallbackCode || this.options.fallbackLng || [], code);\n var codes = [];\n\n var addCode = function addCode(c) {\n if (!c) return;\n\n if (_this2.isSupportedCode(c)) {\n codes.push(c);\n } else {\n _this2.logger.warn(\"rejecting language code not found in supportedLngs: \".concat(c));\n }\n };\n\n if (typeof code === 'string' && code.indexOf('-') > -1) {\n if (this.options.load !== 'languageOnly') addCode(this.formatLanguageCode(code));\n if (this.options.load !== 'languageOnly' && this.options.load !== 'currentOnly') addCode(this.getScriptPartFromCode(code));\n if (this.options.load !== 'currentOnly') addCode(this.getLanguagePartFromCode(code));\n } else if (typeof code === 'string') {\n addCode(this.formatLanguageCode(code));\n }\n\n fallbackCodes.forEach(function (fc) {\n if (codes.indexOf(fc) < 0) addCode(_this2.formatLanguageCode(fc));\n });\n return codes;\n }\n }]);\n\n return LanguageUtil;\n}();\n\nvar sets = [{\n lngs: ['ach', 'ak', 'am', 'arn', 'br', 'fil', 'gun', 'ln', 'mfe', 'mg', 'mi', 'oc', 'pt', 'pt-BR', 'tg', 'tl', 'ti', 'tr', 'uz', 'wa'],\n nr: [1, 2],\n fc: 1\n}, {\n lngs: ['af', 'an', 'ast', 'az', 'bg', 'bn', 'ca', 'da', 'de', 'dev', 'el', 'en', 'eo', 'es', 'et', 'eu', 'fi', 'fo', 'fur', 'fy', 'gl', 'gu', 'ha', 'hi', 'hu', 'hy', 'ia', 'it', 'kk', 'kn', 'ku', 'lb', 'mai', 'ml', 'mn', 'mr', 'nah', 'nap', 'nb', 'ne', 'nl', 'nn', 'no', 'nso', 'pa', 'pap', 'pms', 'ps', 'pt-PT', 'rm', 'sco', 'se', 'si', 'so', 'son', 'sq', 'sv', 'sw', 'ta', 'te', 'tk', 'ur', 'yo'],\n nr: [1, 2],\n fc: 2\n}, {\n lngs: ['ay', 'bo', 'cgg', 'fa', 'ht', 'id', 'ja', 'jbo', 'ka', 'km', 'ko', 'ky', 'lo', 'ms', 'sah', 'su', 'th', 'tt', 'ug', 'vi', 'wo', 'zh'],\n nr: [1],\n fc: 3\n}, {\n lngs: ['be', 'bs', 'cnr', 'dz', 'hr', 'ru', 'sr', 'uk'],\n nr: [1, 2, 5],\n fc: 4\n}, {\n lngs: ['ar'],\n nr: [0, 1, 2, 3, 11, 100],\n fc: 5\n}, {\n lngs: ['cs', 'sk'],\n nr: [1, 2, 5],\n fc: 6\n}, {\n lngs: ['csb', 'pl'],\n nr: [1, 2, 5],\n fc: 7\n}, {\n lngs: ['cy'],\n nr: [1, 2, 3, 8],\n fc: 8\n}, {\n lngs: ['fr'],\n nr: [1, 2],\n fc: 9\n}, {\n lngs: ['ga'],\n nr: [1, 2, 3, 7, 11],\n fc: 10\n}, {\n lngs: ['gd'],\n nr: [1, 2, 3, 20],\n fc: 11\n}, {\n lngs: ['is'],\n nr: [1, 2],\n fc: 12\n}, {\n lngs: ['jv'],\n nr: [0, 1],\n fc: 13\n}, {\n lngs: ['kw'],\n nr: [1, 2, 3, 4],\n fc: 14\n}, {\n lngs: ['lt'],\n nr: [1, 2, 10],\n fc: 15\n}, {\n lngs: ['lv'],\n nr: [1, 2, 0],\n fc: 16\n}, {\n lngs: ['mk'],\n nr: [1, 2],\n fc: 17\n}, {\n lngs: ['mnk'],\n nr: [0, 1, 2],\n fc: 18\n}, {\n lngs: ['mt'],\n nr: [1, 2, 11, 20],\n fc: 19\n}, {\n lngs: ['or'],\n nr: [2, 1],\n fc: 2\n}, {\n lngs: ['ro'],\n nr: [1, 2, 20],\n fc: 20\n}, {\n lngs: ['sl'],\n nr: [5, 1, 2, 3],\n fc: 21\n}, {\n lngs: ['he', 'iw'],\n nr: [1, 2, 20, 21],\n fc: 22\n}];\nvar _rulesPluralsTypes = {\n 1: function _(n) {\n return Number(n > 1);\n },\n 2: function _(n) {\n return Number(n != 1);\n },\n 3: function _(n) {\n return 0;\n },\n 4: function _(n) {\n return Number(n % 10 == 1 && n % 100 != 11 ? 0 : n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 10 || n % 100 >= 20) ? 1 : 2);\n },\n 5: function _(n) {\n return Number(n == 0 ? 0 : n == 1 ? 1 : n == 2 ? 2 : n % 100 >= 3 && n % 100 <= 10 ? 3 : n % 100 >= 11 ? 4 : 5);\n },\n 6: function _(n) {\n return Number(n == 1 ? 0 : n >= 2 && n <= 4 ? 1 : 2);\n },\n 7: function _(n) {\n return Number(n == 1 ? 0 : n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 10 || n % 100 >= 20) ? 1 : 2);\n },\n 8: function _(n) {\n return Number(n == 1 ? 0 : n == 2 ? 1 : n != 8 && n != 11 ? 2 : 3);\n },\n 9: function _(n) {\n return Number(n >= 2);\n },\n 10: function _(n) {\n return Number(n == 1 ? 0 : n == 2 ? 1 : n < 7 ? 2 : n < 11 ? 3 : 4);\n },\n 11: function _(n) {\n return Number(n == 1 || n == 11 ? 0 : n == 2 || n == 12 ? 1 : n > 2 && n < 20 ? 2 : 3);\n },\n 12: function _(n) {\n return Number(n % 10 != 1 || n % 100 == 11);\n },\n 13: function _(n) {\n return Number(n !== 0);\n },\n 14: function _(n) {\n return Number(n == 1 ? 0 : n == 2 ? 1 : n == 3 ? 2 : 3);\n },\n 15: function _(n) {\n return Number(n % 10 == 1 && n % 100 != 11 ? 0 : n % 10 >= 2 && (n % 100 < 10 || n % 100 >= 20) ? 1 : 2);\n },\n 16: function _(n) {\n return Number(n % 10 == 1 && n % 100 != 11 ? 0 : n !== 0 ? 1 : 2);\n },\n 17: function _(n) {\n return Number(n == 1 || n % 10 == 1 && n % 100 != 11 ? 0 : 1);\n },\n 18: function _(n) {\n return Number(n == 0 ? 0 : n == 1 ? 1 : 2);\n },\n 19: function _(n) {\n return Number(n == 1 ? 0 : n == 0 || n % 100 > 1 && n % 100 < 11 ? 1 : n % 100 > 10 && n % 100 < 20 ? 2 : 3);\n },\n 20: function _(n) {\n return Number(n == 1 ? 0 : n == 0 || n % 100 > 0 && n % 100 < 20 ? 1 : 2);\n },\n 21: function _(n) {\n return Number(n % 100 == 1 ? 1 : n % 100 == 2 ? 2 : n % 100 == 3 || n % 100 == 4 ? 3 : 0);\n },\n 22: function _(n) {\n return Number(n == 1 ? 0 : n == 2 ? 1 : (n < 0 || n > 10) && n % 10 == 0 ? 2 : 3);\n }\n};\nvar deprecatedJsonVersions = ['v1', 'v2', 'v3'];\nvar suffixesOrder = {\n zero: 0,\n one: 1,\n two: 2,\n few: 3,\n many: 4,\n other: 5\n};\n\nfunction createRules() {\n var rules = {};\n sets.forEach(function (set) {\n set.lngs.forEach(function (l) {\n rules[l] = {\n numbers: set.nr,\n plurals: _rulesPluralsTypes[set.fc]\n };\n });\n });\n return rules;\n}\n\nvar PluralResolver = function () {\n function PluralResolver(languageUtils) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n _classCallCheck(this, PluralResolver);\n\n this.languageUtils = languageUtils;\n this.options = options;\n this.logger = baseLogger.create('pluralResolver');\n\n if ((!this.options.compatibilityJSON || this.options.compatibilityJSON === 'v4') && (typeof Intl === 'undefined' || !Intl.PluralRules)) {\n this.options.compatibilityJSON = 'v3';\n this.logger.error('Your environment seems not to be Intl API compatible, use an Intl.PluralRules polyfill. Will fallback to the compatibilityJSON v3 format handling.');\n }\n\n this.rules = createRules();\n }\n\n _createClass(PluralResolver, [{\n key: \"addRule\",\n value: function addRule(lng, obj) {\n this.rules[lng] = obj;\n }\n }, {\n key: \"getRule\",\n value: function getRule(code) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n if (this.shouldUseIntlApi()) {\n try {\n return new Intl.PluralRules(code, {\n type: options.ordinal ? 'ordinal' : 'cardinal'\n });\n } catch (_unused) {\n return;\n }\n }\n\n return this.rules[code] || this.rules[this.languageUtils.getLanguagePartFromCode(code)];\n }\n }, {\n key: \"needsPlural\",\n value: function needsPlural(code) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var rule = this.getRule(code, options);\n\n if (this.shouldUseIntlApi()) {\n return rule && rule.resolvedOptions().pluralCategories.length > 1;\n }\n\n return rule && rule.numbers.length > 1;\n }\n }, {\n key: \"getPluralFormsOfKey\",\n value: function getPluralFormsOfKey(code, key) {\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n return this.getSuffixes(code, options).map(function (suffix) {\n return \"\".concat(key).concat(suffix);\n });\n }\n }, {\n key: \"getSuffixes\",\n value: function getSuffixes(code) {\n var _this = this;\n\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var rule = this.getRule(code, options);\n\n if (!rule) {\n return [];\n }\n\n if (this.shouldUseIntlApi()) {\n return rule.resolvedOptions().pluralCategories.sort(function (pluralCategory1, pluralCategory2) {\n return suffixesOrder[pluralCategory1] - suffixesOrder[pluralCategory2];\n }).map(function (pluralCategory) {\n return \"\".concat(_this.options.prepend).concat(pluralCategory);\n });\n }\n\n return rule.numbers.map(function (number) {\n return _this.getSuffix(code, number, options);\n });\n }\n }, {\n key: \"getSuffix\",\n value: function getSuffix(code, count) {\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n var rule = this.getRule(code, options);\n\n if (rule) {\n if (this.shouldUseIntlApi()) {\n return \"\".concat(this.options.prepend).concat(rule.select(count));\n }\n\n return this.getSuffixRetroCompatible(rule, count);\n }\n\n this.logger.warn(\"no plural rule found for: \".concat(code));\n return '';\n }\n }, {\n key: \"getSuffixRetroCompatible\",\n value: function getSuffixRetroCompatible(rule, count) {\n var _this2 = this;\n\n var idx = rule.noAbs ? rule.plurals(count) : rule.plurals(Math.abs(count));\n var suffix = rule.numbers[idx];\n\n if (this.options.simplifyPluralSuffix && rule.numbers.length === 2 && rule.numbers[0] === 1) {\n if (suffix === 2) {\n suffix = 'plural';\n } else if (suffix === 1) {\n suffix = '';\n }\n }\n\n var returnSuffix = function returnSuffix() {\n return _this2.options.prepend && suffix.toString() ? _this2.options.prepend + suffix.toString() : suffix.toString();\n };\n\n if (this.options.compatibilityJSON === 'v1') {\n if (suffix === 1) return '';\n if (typeof suffix === 'number') return \"_plural_\".concat(suffix.toString());\n return returnSuffix();\n } else if (this.options.compatibilityJSON === 'v2') {\n return returnSuffix();\n } else if (this.options.simplifyPluralSuffix && rule.numbers.length === 2 && rule.numbers[0] === 1) {\n return returnSuffix();\n }\n\n return this.options.prepend && idx.toString() ? this.options.prepend + idx.toString() : idx.toString();\n }\n }, {\n key: \"shouldUseIntlApi\",\n value: function shouldUseIntlApi() {\n return !deprecatedJsonVersions.includes(this.options.compatibilityJSON);\n }\n }]);\n\n return PluralResolver;\n}();\n\nfunction ownKeys$3(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread$3(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys$3(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys$3(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nvar Interpolator = function () {\n function Interpolator() {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n _classCallCheck(this, Interpolator);\n\n this.logger = baseLogger.create('interpolator');\n this.options = options;\n\n this.format = options.interpolation && options.interpolation.format || function (value) {\n return value;\n };\n\n this.init(options);\n }\n\n _createClass(Interpolator, [{\n key: \"init\",\n value: function init() {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n if (!options.interpolation) options.interpolation = {\n escapeValue: true\n };\n var iOpts = options.interpolation;\n this.escape = iOpts.escape !== undefined ? iOpts.escape : escape;\n this.escapeValue = iOpts.escapeValue !== undefined ? iOpts.escapeValue : true;\n this.useRawValueToEscape = iOpts.useRawValueToEscape !== undefined ? iOpts.useRawValueToEscape : false;\n this.prefix = iOpts.prefix ? regexEscape(iOpts.prefix) : iOpts.prefixEscaped || '{{';\n this.suffix = iOpts.suffix ? regexEscape(iOpts.suffix) : iOpts.suffixEscaped || '}}';\n this.formatSeparator = iOpts.formatSeparator ? iOpts.formatSeparator : iOpts.formatSeparator || ',';\n this.unescapePrefix = iOpts.unescapeSuffix ? '' : iOpts.unescapePrefix || '-';\n this.unescapeSuffix = this.unescapePrefix ? '' : iOpts.unescapeSuffix || '';\n this.nestingPrefix = iOpts.nestingPrefix ? regexEscape(iOpts.nestingPrefix) : iOpts.nestingPrefixEscaped || regexEscape('$t(');\n this.nestingSuffix = iOpts.nestingSuffix ? regexEscape(iOpts.nestingSuffix) : iOpts.nestingSuffixEscaped || regexEscape(')');\n this.nestingOptionsSeparator = iOpts.nestingOptionsSeparator ? iOpts.nestingOptionsSeparator : iOpts.nestingOptionsSeparator || ',';\n this.maxReplaces = iOpts.maxReplaces ? iOpts.maxReplaces : 1000;\n this.alwaysFormat = iOpts.alwaysFormat !== undefined ? iOpts.alwaysFormat : false;\n this.resetRegExp();\n }\n }, {\n key: \"reset\",\n value: function reset() {\n if (this.options) this.init(this.options);\n }\n }, {\n key: \"resetRegExp\",\n value: function resetRegExp() {\n var regexpStr = \"\".concat(this.prefix, \"(.+?)\").concat(this.suffix);\n this.regexp = new RegExp(regexpStr, 'g');\n var regexpUnescapeStr = \"\".concat(this.prefix).concat(this.unescapePrefix, \"(.+?)\").concat(this.unescapeSuffix).concat(this.suffix);\n this.regexpUnescape = new RegExp(regexpUnescapeStr, 'g');\n var nestingRegexpStr = \"\".concat(this.nestingPrefix, \"(.+?)\").concat(this.nestingSuffix);\n this.nestingRegexp = new RegExp(nestingRegexpStr, 'g');\n }\n }, {\n key: \"interpolate\",\n value: function interpolate(str, data, lng, options) {\n var _this = this;\n\n var match;\n var value;\n var replaces;\n var defaultData = this.options && this.options.interpolation && this.options.interpolation.defaultVariables || {};\n\n function regexSafe(val) {\n return val.replace(/\\$/g, '$$$$');\n }\n\n var handleFormat = function handleFormat(key) {\n if (key.indexOf(_this.formatSeparator) < 0) {\n var path = getPathWithDefaults(data, defaultData, key);\n return _this.alwaysFormat ? _this.format(path, undefined, lng, _objectSpread$3(_objectSpread$3(_objectSpread$3({}, options), data), {}, {\n interpolationkey: key\n })) : path;\n }\n\n var p = key.split(_this.formatSeparator);\n var k = p.shift().trim();\n var f = p.join(_this.formatSeparator).trim();\n return _this.format(getPathWithDefaults(data, defaultData, k), f, lng, _objectSpread$3(_objectSpread$3(_objectSpread$3({}, options), data), {}, {\n interpolationkey: k\n }));\n };\n\n this.resetRegExp();\n var missingInterpolationHandler = options && options.missingInterpolationHandler || this.options.missingInterpolationHandler;\n var skipOnVariables = options && options.interpolation && options.interpolation.skipOnVariables !== undefined ? options.interpolation.skipOnVariables : this.options.interpolation.skipOnVariables;\n var todos = [{\n regex: this.regexpUnescape,\n safeValue: function safeValue(val) {\n return regexSafe(val);\n }\n }, {\n regex: this.regexp,\n safeValue: function safeValue(val) {\n return _this.escapeValue ? regexSafe(_this.escape(val)) : regexSafe(val);\n }\n }];\n todos.forEach(function (todo) {\n replaces = 0;\n\n while (match = todo.regex.exec(str)) {\n var matchedVar = match[1].trim();\n value = handleFormat(matchedVar);\n\n if (value === undefined) {\n if (typeof missingInterpolationHandler === 'function') {\n var temp = missingInterpolationHandler(str, match, options);\n value = typeof temp === 'string' ? temp : '';\n } else if (options && options.hasOwnProperty(matchedVar)) {\n value = '';\n } else if (skipOnVariables) {\n value = match[0];\n continue;\n } else {\n _this.logger.warn(\"missed to pass in variable \".concat(matchedVar, \" for interpolating \").concat(str));\n\n value = '';\n }\n } else if (typeof value !== 'string' && !_this.useRawValueToEscape) {\n value = makeString(value);\n }\n\n var safeValue = todo.safeValue(value);\n str = str.replace(match[0], safeValue);\n\n if (skipOnVariables) {\n todo.regex.lastIndex += value.length;\n todo.regex.lastIndex -= match[0].length;\n } else {\n todo.regex.lastIndex = 0;\n }\n\n replaces++;\n\n if (replaces >= _this.maxReplaces) {\n break;\n }\n }\n });\n return str;\n }\n }, {\n key: \"nest\",\n value: function nest(str, fc) {\n var _this2 = this;\n\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n var match;\n var value;\n\n var clonedOptions = _objectSpread$3({}, options);\n\n clonedOptions.applyPostProcessor = false;\n delete clonedOptions.defaultValue;\n\n function handleHasOptions(key, inheritedOptions) {\n var sep = this.nestingOptionsSeparator;\n if (key.indexOf(sep) < 0) return key;\n var c = key.split(new RegExp(\"\".concat(sep, \"[ ]*{\")));\n var optionsString = \"{\".concat(c[1]);\n key = c[0];\n optionsString = this.interpolate(optionsString, clonedOptions);\n optionsString = optionsString.replace(/'/g, '\"');\n\n try {\n clonedOptions = JSON.parse(optionsString);\n if (inheritedOptions) clonedOptions = _objectSpread$3(_objectSpread$3({}, inheritedOptions), clonedOptions);\n } catch (e) {\n this.logger.warn(\"failed parsing options string in nesting for key \".concat(key), e);\n return \"\".concat(key).concat(sep).concat(optionsString);\n }\n\n delete clonedOptions.defaultValue;\n return key;\n }\n\n while (match = this.nestingRegexp.exec(str)) {\n var formatters = [];\n var doReduce = false;\n\n if (match[0].indexOf(this.formatSeparator) !== -1 && !/{.*}/.test(match[1])) {\n var r = match[1].split(this.formatSeparator).map(function (elem) {\n return elem.trim();\n });\n match[1] = r.shift();\n formatters = r;\n doReduce = true;\n }\n\n value = fc(handleHasOptions.call(this, match[1].trim(), clonedOptions), clonedOptions);\n if (value && match[0] === str && typeof value !== 'string') return value;\n if (typeof value !== 'string') value = makeString(value);\n\n if (!value) {\n this.logger.warn(\"missed to resolve \".concat(match[1], \" for nesting \").concat(str));\n value = '';\n }\n\n if (doReduce) {\n value = formatters.reduce(function (v, f) {\n return _this2.format(v, f, options.lng, _objectSpread$3(_objectSpread$3({}, options), {}, {\n interpolationkey: match[1].trim()\n }));\n }, value.trim());\n }\n\n str = str.replace(match[0], value);\n this.regexp.lastIndex = 0;\n }\n\n return str;\n }\n }]);\n\n return Interpolator;\n}();\n\nfunction ownKeys$4(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread$4(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys$4(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys$4(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction parseFormatStr(formatStr) {\n var formatName = formatStr.toLowerCase().trim();\n var formatOptions = {};\n\n if (formatStr.indexOf('(') > -1) {\n var p = formatStr.split('(');\n formatName = p[0].toLowerCase().trim();\n var optStr = p[1].substring(0, p[1].length - 1);\n\n if (formatName === 'currency' && optStr.indexOf(':') < 0) {\n if (!formatOptions.currency) formatOptions.currency = optStr.trim();\n } else if (formatName === 'relativetime' && optStr.indexOf(':') < 0) {\n if (!formatOptions.range) formatOptions.range = optStr.trim();\n } else {\n var opts = optStr.split(';');\n opts.forEach(function (opt) {\n if (!opt) return;\n\n var _opt$split = opt.split(':'),\n _opt$split2 = _toArray(_opt$split),\n key = _opt$split2[0],\n rest = _opt$split2.slice(1);\n\n var val = rest.join(':').trim().replace(/^'+|'+$/g, '');\n if (!formatOptions[key.trim()]) formatOptions[key.trim()] = val;\n if (val === 'false') formatOptions[key.trim()] = false;\n if (val === 'true') formatOptions[key.trim()] = true;\n if (!isNaN(val)) formatOptions[key.trim()] = parseInt(val, 10);\n });\n }\n }\n\n return {\n formatName: formatName,\n formatOptions: formatOptions\n };\n}\n\nvar Formatter = function () {\n function Formatter() {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n _classCallCheck(this, Formatter);\n\n this.logger = baseLogger.create('formatter');\n this.options = options;\n this.formats = {\n number: function number(val, lng, options) {\n return new Intl.NumberFormat(lng, options).format(val);\n },\n currency: function currency(val, lng, options) {\n return new Intl.NumberFormat(lng, _objectSpread$4(_objectSpread$4({}, options), {}, {\n style: 'currency'\n })).format(val);\n },\n datetime: function datetime(val, lng, options) {\n return new Intl.DateTimeFormat(lng, _objectSpread$4({}, options)).format(val);\n },\n relativetime: function relativetime(val, lng, options) {\n return new Intl.RelativeTimeFormat(lng, _objectSpread$4({}, options)).format(val, options.range || 'day');\n },\n list: function list(val, lng, options) {\n return new Intl.ListFormat(lng, _objectSpread$4({}, options)).format(val);\n }\n };\n this.init(options);\n }\n\n _createClass(Formatter, [{\n key: \"init\",\n value: function init(services) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {\n interpolation: {}\n };\n var iOpts = options.interpolation;\n this.formatSeparator = iOpts.formatSeparator ? iOpts.formatSeparator : iOpts.formatSeparator || ',';\n }\n }, {\n key: \"add\",\n value: function add(name, fc) {\n this.formats[name.toLowerCase().trim()] = fc;\n }\n }, {\n key: \"format\",\n value: function format(value, _format, lng, options) {\n var _this = this;\n\n var formats = _format.split(this.formatSeparator);\n\n var result = formats.reduce(function (mem, f) {\n var _parseFormatStr = parseFormatStr(f),\n formatName = _parseFormatStr.formatName,\n formatOptions = _parseFormatStr.formatOptions;\n\n if (_this.formats[formatName]) {\n var formatted = mem;\n\n try {\n var valOptions = options && options.formatParams && options.formatParams[options.interpolationkey] || {};\n var l = valOptions.locale || valOptions.lng || options.locale || options.lng || lng;\n formatted = _this.formats[formatName](mem, l, _objectSpread$4(_objectSpread$4(_objectSpread$4({}, formatOptions), options), valOptions));\n } catch (error) {\n _this.logger.warn(error);\n }\n\n return formatted;\n } else {\n _this.logger.warn(\"there was no format function for \".concat(formatName));\n }\n\n return mem;\n }, value);\n return result;\n }\n }]);\n\n return Formatter;\n}();\n\nfunction ownKeys$5(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread$5(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys$5(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys$5(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _createSuper$2(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct$2(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _isNativeReflectConstruct$2() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction removePending(q, name) {\n if (q.pending[name] !== undefined) {\n delete q.pending[name];\n q.pendingCount--;\n }\n}\n\nvar Connector = function (_EventEmitter) {\n _inherits(Connector, _EventEmitter);\n\n var _super = _createSuper$2(Connector);\n\n function Connector(backend, store, services) {\n var _this;\n\n var options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n\n _classCallCheck(this, Connector);\n\n _this = _super.call(this);\n\n if (isIE10) {\n EventEmitter.call(_assertThisInitialized(_this));\n }\n\n _this.backend = backend;\n _this.store = store;\n _this.services = services;\n _this.languageUtils = services.languageUtils;\n _this.options = options;\n _this.logger = baseLogger.create('backendConnector');\n _this.waitingReads = [];\n _this.maxParallelReads = options.maxParallelReads || 10;\n _this.readingCalls = 0;\n _this.state = {};\n _this.queue = [];\n\n if (_this.backend && _this.backend.init) {\n _this.backend.init(services, options.backend, options);\n }\n\n return _this;\n }\n\n _createClass(Connector, [{\n key: \"queueLoad\",\n value: function queueLoad(languages, namespaces, options, callback) {\n var _this2 = this;\n\n var toLoad = {};\n var pending = {};\n var toLoadLanguages = {};\n var toLoadNamespaces = {};\n languages.forEach(function (lng) {\n var hasAllNamespaces = true;\n namespaces.forEach(function (ns) {\n var name = \"\".concat(lng, \"|\").concat(ns);\n\n if (!options.reload && _this2.store.hasResourceBundle(lng, ns)) {\n _this2.state[name] = 2;\n } else if (_this2.state[name] < 0) ; else if (_this2.state[name] === 1) {\n if (pending[name] === undefined) pending[name] = true;\n } else {\n _this2.state[name] = 1;\n hasAllNamespaces = false;\n if (pending[name] === undefined) pending[name] = true;\n if (toLoad[name] === undefined) toLoad[name] = true;\n if (toLoadNamespaces[ns] === undefined) toLoadNamespaces[ns] = true;\n }\n });\n if (!hasAllNamespaces) toLoadLanguages[lng] = true;\n });\n\n if (Object.keys(toLoad).length || Object.keys(pending).length) {\n this.queue.push({\n pending: pending,\n pendingCount: Object.keys(pending).length,\n loaded: {},\n errors: [],\n callback: callback\n });\n }\n\n return {\n toLoad: Object.keys(toLoad),\n pending: Object.keys(pending),\n toLoadLanguages: Object.keys(toLoadLanguages),\n toLoadNamespaces: Object.keys(toLoadNamespaces)\n };\n }\n }, {\n key: \"loaded\",\n value: function loaded(name, err, data) {\n var s = name.split('|');\n var lng = s[0];\n var ns = s[1];\n if (err) this.emit('failedLoading', lng, ns, err);\n\n if (data) {\n this.store.addResourceBundle(lng, ns, data);\n }\n\n this.state[name] = err ? -1 : 2;\n var loaded = {};\n this.queue.forEach(function (q) {\n pushPath(q.loaded, [lng], ns);\n removePending(q, name);\n if (err) q.errors.push(err);\n\n if (q.pendingCount === 0 && !q.done) {\n Object.keys(q.loaded).forEach(function (l) {\n if (!loaded[l]) loaded[l] = {};\n var loadedKeys = q.loaded[l];\n\n if (loadedKeys.length) {\n loadedKeys.forEach(function (ns) {\n if (loaded[l][ns] === undefined) loaded[l][ns] = true;\n });\n }\n });\n q.done = true;\n\n if (q.errors.length) {\n q.callback(q.errors);\n } else {\n q.callback();\n }\n }\n });\n this.emit('loaded', loaded);\n this.queue = this.queue.filter(function (q) {\n return !q.done;\n });\n }\n }, {\n key: \"read\",\n value: function read(lng, ns, fcName) {\n var _this3 = this;\n\n var tried = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 0;\n var wait = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 350;\n var callback = arguments.length > 5 ? arguments[5] : undefined;\n if (!lng.length) return callback(null, {});\n\n if (this.readingCalls >= this.maxParallelReads) {\n this.waitingReads.push({\n lng: lng,\n ns: ns,\n fcName: fcName,\n tried: tried,\n wait: wait,\n callback: callback\n });\n return;\n }\n\n this.readingCalls++;\n return this.backend[fcName](lng, ns, function (err, data) {\n if (err && data && tried < 5) {\n setTimeout(function () {\n _this3.read.call(_this3, lng, ns, fcName, tried + 1, wait * 2, callback);\n }, wait);\n return;\n }\n\n _this3.readingCalls--;\n\n if (_this3.waitingReads.length > 0) {\n var next = _this3.waitingReads.shift();\n\n _this3.read(next.lng, next.ns, next.fcName, next.tried, next.wait, next.callback);\n }\n\n callback(err, data);\n });\n }\n }, {\n key: \"prepareLoading\",\n value: function prepareLoading(languages, namespaces) {\n var _this4 = this;\n\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n var callback = arguments.length > 3 ? arguments[3] : undefined;\n\n if (!this.backend) {\n this.logger.warn('No backend was added via i18next.use. Will not load resources.');\n return callback && callback();\n }\n\n if (typeof languages === 'string') languages = this.languageUtils.toResolveHierarchy(languages);\n if (typeof namespaces === 'string') namespaces = [namespaces];\n var toLoad = this.queueLoad(languages, namespaces, options, callback);\n\n if (!toLoad.toLoad.length) {\n if (!toLoad.pending.length) callback();\n return null;\n }\n\n toLoad.toLoad.forEach(function (name) {\n _this4.loadOne(name);\n });\n }\n }, {\n key: \"load\",\n value: function load(languages, namespaces, callback) {\n this.prepareLoading(languages, namespaces, {}, callback);\n }\n }, {\n key: \"reload\",\n value: function reload(languages, namespaces, callback) {\n this.prepareLoading(languages, namespaces, {\n reload: true\n }, callback);\n }\n }, {\n key: \"loadOne\",\n value: function loadOne(name) {\n var _this5 = this;\n\n var prefix = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';\n var s = name.split('|');\n var lng = s[0];\n var ns = s[1];\n this.read(lng, ns, 'read', undefined, undefined, function (err, data) {\n if (err) _this5.logger.warn(\"\".concat(prefix, \"loading namespace \").concat(ns, \" for language \").concat(lng, \" failed\"), err);\n if (!err && data) _this5.logger.log(\"\".concat(prefix, \"loaded namespace \").concat(ns, \" for language \").concat(lng), data);\n\n _this5.loaded(name, err, data);\n });\n }\n }, {\n key: \"saveMissing\",\n value: function saveMissing(languages, namespace, key, fallbackValue, isUpdate) {\n var options = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : {};\n\n if (this.services.utils && this.services.utils.hasLoadedNamespace && !this.services.utils.hasLoadedNamespace(namespace)) {\n this.logger.warn(\"did not save key \\\"\".concat(key, \"\\\" as the namespace \\\"\").concat(namespace, \"\\\" was not yet loaded\"), 'This means something IS WRONG in your setup. You access the t function before i18next.init / i18next.loadNamespace / i18next.changeLanguage was done. Wait for the callback or Promise to resolve before accessing it!!!');\n return;\n }\n\n if (key === undefined || key === null || key === '') return;\n\n if (this.backend && this.backend.create) {\n this.backend.create(languages, namespace, key, fallbackValue, null, _objectSpread$5(_objectSpread$5({}, options), {}, {\n isUpdate: isUpdate\n }));\n }\n\n if (!languages || !languages[0]) return;\n this.store.addResource(languages[0], namespace, key, fallbackValue);\n }\n }]);\n\n return Connector;\n}(EventEmitter);\n\nfunction get() {\n return {\n debug: false,\n initImmediate: true,\n ns: ['translation'],\n defaultNS: ['translation'],\n fallbackLng: ['dev'],\n fallbackNS: false,\n supportedLngs: false,\n nonExplicitSupportedLngs: false,\n load: 'all',\n preload: false,\n simplifyPluralSuffix: true,\n keySeparator: '.',\n nsSeparator: ':',\n pluralSeparator: '_',\n contextSeparator: '_',\n partialBundledLanguages: false,\n saveMissing: false,\n updateMissing: false,\n saveMissingTo: 'fallback',\n saveMissingPlurals: true,\n missingKeyHandler: false,\n missingInterpolationHandler: false,\n postProcess: false,\n postProcessPassResolved: false,\n returnNull: true,\n returnEmptyString: true,\n returnObjects: false,\n joinArrays: false,\n returnedObjectHandler: false,\n parseMissingKeyHandler: false,\n appendNamespaceToMissingKey: false,\n appendNamespaceToCIMode: false,\n overloadTranslationOptionHandler: function handle(args) {\n var ret = {};\n if (_typeof(args[1]) === 'object') ret = args[1];\n if (typeof args[1] === 'string') ret.defaultValue = args[1];\n if (typeof args[2] === 'string') ret.tDescription = args[2];\n\n if (_typeof(args[2]) === 'object' || _typeof(args[3]) === 'object') {\n var options = args[3] || args[2];\n Object.keys(options).forEach(function (key) {\n ret[key] = options[key];\n });\n }\n\n return ret;\n },\n interpolation: {\n escapeValue: true,\n format: function format(value, _format, lng, options) {\n return value;\n },\n prefix: '{{',\n suffix: '}}',\n formatSeparator: ',',\n unescapePrefix: '-',\n nestingPrefix: '$t(',\n nestingSuffix: ')',\n nestingOptionsSeparator: ',',\n maxReplaces: 1000,\n skipOnVariables: true\n }\n };\n}\nfunction transformOptions(options) {\n if (typeof options.ns === 'string') options.ns = [options.ns];\n if (typeof options.fallbackLng === 'string') options.fallbackLng = [options.fallbackLng];\n if (typeof options.fallbackNS === 'string') options.fallbackNS = [options.fallbackNS];\n\n if (options.supportedLngs && options.supportedLngs.indexOf('cimode') < 0) {\n options.supportedLngs = options.supportedLngs.concat(['cimode']);\n }\n\n return options;\n}\n\nfunction ownKeys$6(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread$6(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys$6(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys$6(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _createSuper$3(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct$3(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _isNativeReflectConstruct$3() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction noop() {}\n\nfunction bindMemberFunctions(inst) {\n var mems = Object.getOwnPropertyNames(Object.getPrototypeOf(inst));\n mems.forEach(function (mem) {\n if (typeof inst[mem] === 'function') {\n inst[mem] = inst[mem].bind(inst);\n }\n });\n}\n\nvar I18n = function (_EventEmitter) {\n _inherits(I18n, _EventEmitter);\n\n var _super = _createSuper$3(I18n);\n\n function I18n() {\n var _this;\n\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var callback = arguments.length > 1 ? arguments[1] : undefined;\n\n _classCallCheck(this, I18n);\n\n _this = _super.call(this);\n\n if (isIE10) {\n EventEmitter.call(_assertThisInitialized(_this));\n }\n\n _this.options = transformOptions(options);\n _this.services = {};\n _this.logger = baseLogger;\n _this.modules = {\n external: []\n };\n bindMemberFunctions(_assertThisInitialized(_this));\n\n if (callback && !_this.isInitialized && !options.isClone) {\n if (!_this.options.initImmediate) {\n _this.init(options, callback);\n\n return _possibleConstructorReturn(_this, _assertThisInitialized(_this));\n }\n\n setTimeout(function () {\n _this.init(options, callback);\n }, 0);\n }\n\n return _this;\n }\n\n _createClass(I18n, [{\n key: \"init\",\n value: function init() {\n var _this2 = this;\n\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var callback = arguments.length > 1 ? arguments[1] : undefined;\n\n if (typeof options === 'function') {\n callback = options;\n options = {};\n }\n\n if (!options.defaultNS && options.ns) {\n if (typeof options.ns === 'string') {\n options.defaultNS = options.ns;\n } else if (options.ns.indexOf('translation') < 0) {\n options.defaultNS = options.ns[0];\n }\n }\n\n var defOpts = get();\n this.options = _objectSpread$6(_objectSpread$6(_objectSpread$6({}, defOpts), this.options), transformOptions(options));\n\n if (this.options.compatibilityAPI !== 'v1') {\n this.options.interpolation = _objectSpread$6(_objectSpread$6({}, defOpts.interpolation), this.options.interpolation);\n }\n\n if (options.keySeparator !== undefined) {\n this.options.userDefinedKeySeparator = options.keySeparator;\n }\n\n if (options.nsSeparator !== undefined) {\n this.options.userDefinedNsSeparator = options.nsSeparator;\n }\n\n function createClassOnDemand(ClassOrObject) {\n if (!ClassOrObject) return null;\n if (typeof ClassOrObject === 'function') return new ClassOrObject();\n return ClassOrObject;\n }\n\n if (!this.options.isClone) {\n if (this.modules.logger) {\n baseLogger.init(createClassOnDemand(this.modules.logger), this.options);\n } else {\n baseLogger.init(null, this.options);\n }\n\n var formatter;\n\n if (this.modules.formatter) {\n formatter = this.modules.formatter;\n } else if (typeof Intl !== 'undefined') {\n formatter = Formatter;\n }\n\n var lu = new LanguageUtil(this.options);\n this.store = new ResourceStore(this.options.resources, this.options);\n var s = this.services;\n s.logger = baseLogger;\n s.resourceStore = this.store;\n s.languageUtils = lu;\n s.pluralResolver = new PluralResolver(lu, {\n prepend: this.options.pluralSeparator,\n compatibilityJSON: this.options.compatibilityJSON,\n simplifyPluralSuffix: this.options.simplifyPluralSuffix\n });\n\n if (formatter && (!this.options.interpolation.format || this.options.interpolation.format === defOpts.interpolation.format)) {\n s.formatter = createClassOnDemand(formatter);\n s.formatter.init(s, this.options);\n this.options.interpolation.format = s.formatter.format.bind(s.formatter);\n }\n\n s.interpolator = new Interpolator(this.options);\n s.utils = {\n hasLoadedNamespace: this.hasLoadedNamespace.bind(this)\n };\n s.backendConnector = new Connector(createClassOnDemand(this.modules.backend), s.resourceStore, s, this.options);\n s.backendConnector.on('*', function (event) {\n for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n\n _this2.emit.apply(_this2, [event].concat(args));\n });\n\n if (this.modules.languageDetector) {\n s.languageDetector = createClassOnDemand(this.modules.languageDetector);\n s.languageDetector.init(s, this.options.detection, this.options);\n }\n\n if (this.modules.i18nFormat) {\n s.i18nFormat = createClassOnDemand(this.modules.i18nFormat);\n if (s.i18nFormat.init) s.i18nFormat.init(this);\n }\n\n this.translator = new Translator(this.services, this.options);\n this.translator.on('*', function (event) {\n for (var _len2 = arguments.length, args = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n args[_key2 - 1] = arguments[_key2];\n }\n\n _this2.emit.apply(_this2, [event].concat(args));\n });\n this.modules.external.forEach(function (m) {\n if (m.init) m.init(_this2);\n });\n }\n\n this.format = this.options.interpolation.format;\n if (!callback) callback = noop;\n\n if (this.options.fallbackLng && !this.services.languageDetector && !this.options.lng) {\n var codes = this.services.languageUtils.getFallbackCodes(this.options.fallbackLng);\n if (codes.length > 0 && codes[0] !== 'dev') this.options.lng = codes[0];\n }\n\n if (!this.services.languageDetector && !this.options.lng) {\n this.logger.warn('init: no languageDetector is used and no lng is defined');\n }\n\n var storeApi = ['getResource', 'hasResourceBundle', 'getResourceBundle', 'getDataByLanguage'];\n storeApi.forEach(function (fcName) {\n _this2[fcName] = function () {\n var _this2$store;\n\n return (_this2$store = _this2.store)[fcName].apply(_this2$store, arguments);\n };\n });\n var storeApiChained = ['addResource', 'addResources', 'addResourceBundle', 'removeResourceBundle'];\n storeApiChained.forEach(function (fcName) {\n _this2[fcName] = function () {\n var _this2$store2;\n\n (_this2$store2 = _this2.store)[fcName].apply(_this2$store2, arguments);\n\n return _this2;\n };\n });\n var deferred = defer();\n\n var load = function load() {\n var finish = function finish(err, t) {\n if (_this2.isInitialized && !_this2.initializedStoreOnce) _this2.logger.warn('init: i18next is already initialized. You should call init just once!');\n _this2.isInitialized = true;\n if (!_this2.options.isClone) _this2.logger.log('initialized', _this2.options);\n\n _this2.emit('initialized', _this2.options);\n\n deferred.resolve(t);\n callback(err, t);\n };\n\n if (_this2.languages && _this2.options.compatibilityAPI !== 'v1' && !_this2.isInitialized) return finish(null, _this2.t.bind(_this2));\n\n _this2.changeLanguage(_this2.options.lng, finish);\n };\n\n if (this.options.resources || !this.options.initImmediate) {\n load();\n } else {\n setTimeout(load, 0);\n }\n\n return deferred;\n }\n }, {\n key: \"loadResources\",\n value: function loadResources(language) {\n var _this3 = this;\n\n var callback = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : noop;\n var usedCallback = callback;\n var usedLng = typeof language === 'string' ? language : this.language;\n if (typeof language === 'function') usedCallback = language;\n\n if (!this.options.resources || this.options.partialBundledLanguages) {\n if (usedLng && usedLng.toLowerCase() === 'cimode') return usedCallback();\n var toLoad = [];\n\n var append = function append(lng) {\n if (!lng) return;\n\n var lngs = _this3.services.languageUtils.toResolveHierarchy(lng);\n\n lngs.forEach(function (l) {\n if (toLoad.indexOf(l) < 0) toLoad.push(l);\n });\n };\n\n if (!usedLng) {\n var fallbacks = this.services.languageUtils.getFallbackCodes(this.options.fallbackLng);\n fallbacks.forEach(function (l) {\n return append(l);\n });\n } else {\n append(usedLng);\n }\n\n if (this.options.preload) {\n this.options.preload.forEach(function (l) {\n return append(l);\n });\n }\n\n this.services.backendConnector.load(toLoad, this.options.ns, function (e) {\n if (!e && !_this3.resolvedLanguage && _this3.language) _this3.setResolvedLanguage(_this3.language);\n usedCallback(e);\n });\n } else {\n usedCallback(null);\n }\n }\n }, {\n key: \"reloadResources\",\n value: function reloadResources(lngs, ns, callback) {\n var deferred = defer();\n if (!lngs) lngs = this.languages;\n if (!ns) ns = this.options.ns;\n if (!callback) callback = noop;\n this.services.backendConnector.reload(lngs, ns, function (err) {\n deferred.resolve();\n callback(err);\n });\n return deferred;\n }\n }, {\n key: \"use\",\n value: function use(module) {\n if (!module) throw new Error('You are passing an undefined module! Please check the object you are passing to i18next.use()');\n if (!module.type) throw new Error('You are passing a wrong module! Please check the object you are passing to i18next.use()');\n\n if (module.type === 'backend') {\n this.modules.backend = module;\n }\n\n if (module.type === 'logger' || module.log && module.warn && module.error) {\n this.modules.logger = module;\n }\n\n if (module.type === 'languageDetector') {\n this.modules.languageDetector = module;\n }\n\n if (module.type === 'i18nFormat') {\n this.modules.i18nFormat = module;\n }\n\n if (module.type === 'postProcessor') {\n postProcessor.addPostProcessor(module);\n }\n\n if (module.type === 'formatter') {\n this.modules.formatter = module;\n }\n\n if (module.type === '3rdParty') {\n this.modules.external.push(module);\n }\n\n return this;\n }\n }, {\n key: \"setResolvedLanguage\",\n value: function setResolvedLanguage(l) {\n if (!l || !this.languages) return;\n if (['cimode', 'dev'].indexOf(l) > -1) return;\n\n for (var li = 0; li < this.languages.length; li++) {\n var lngInLngs = this.languages[li];\n if (['cimode', 'dev'].indexOf(lngInLngs) > -1) continue;\n\n if (this.store.hasLanguageSomeTranslations(lngInLngs)) {\n this.resolvedLanguage = lngInLngs;\n break;\n }\n }\n }\n }, {\n key: \"changeLanguage\",\n value: function changeLanguage(lng, callback) {\n var _this4 = this;\n\n this.isLanguageChangingTo = lng;\n var deferred = defer();\n this.emit('languageChanging', lng);\n\n var setLngProps = function setLngProps(l) {\n _this4.language = l;\n _this4.languages = _this4.services.languageUtils.toResolveHierarchy(l);\n _this4.resolvedLanguage = undefined;\n\n _this4.setResolvedLanguage(l);\n };\n\n var done = function done(err, l) {\n if (l) {\n setLngProps(l);\n\n _this4.translator.changeLanguage(l);\n\n _this4.isLanguageChangingTo = undefined;\n\n _this4.emit('languageChanged', l);\n\n _this4.logger.log('languageChanged', l);\n } else {\n _this4.isLanguageChangingTo = undefined;\n }\n\n deferred.resolve(function () {\n return _this4.t.apply(_this4, arguments);\n });\n if (callback) callback(err, function () {\n return _this4.t.apply(_this4, arguments);\n });\n };\n\n var setLng = function setLng(lngs) {\n if (!lng && !lngs && _this4.services.languageDetector) lngs = [];\n var l = typeof lngs === 'string' ? lngs : _this4.services.languageUtils.getBestMatchFromCodes(lngs);\n\n if (l) {\n if (!_this4.language) {\n setLngProps(l);\n }\n\n if (!_this4.translator.language) _this4.translator.changeLanguage(l);\n if (_this4.services.languageDetector) _this4.services.languageDetector.cacheUserLanguage(l);\n }\n\n _this4.loadResources(l, function (err) {\n done(err, l);\n });\n };\n\n if (!lng && this.services.languageDetector && !this.services.languageDetector.async) {\n setLng(this.services.languageDetector.detect());\n } else if (!lng && this.services.languageDetector && this.services.languageDetector.async) {\n this.services.languageDetector.detect(setLng);\n } else {\n setLng(lng);\n }\n\n return deferred;\n }\n }, {\n key: \"getFixedT\",\n value: function getFixedT(lng, ns, keyPrefix) {\n var _this5 = this;\n\n var fixedT = function fixedT(key, opts) {\n var options;\n\n if (_typeof(opts) !== 'object') {\n for (var _len3 = arguments.length, rest = new Array(_len3 > 2 ? _len3 - 2 : 0), _key3 = 2; _key3 < _len3; _key3++) {\n rest[_key3 - 2] = arguments[_key3];\n }\n\n options = _this5.options.overloadTranslationOptionHandler([key, opts].concat(rest));\n } else {\n options = _objectSpread$6({}, opts);\n }\n\n options.lng = options.lng || fixedT.lng;\n options.lngs = options.lngs || fixedT.lngs;\n options.ns = options.ns || fixedT.ns;\n var keySeparator = _this5.options.keySeparator || '.';\n var resultKey = keyPrefix ? \"\".concat(keyPrefix).concat(keySeparator).concat(key) : key;\n return _this5.t(resultKey, options);\n };\n\n if (typeof lng === 'string') {\n fixedT.lng = lng;\n } else {\n fixedT.lngs = lng;\n }\n\n fixedT.ns = ns;\n fixedT.keyPrefix = keyPrefix;\n return fixedT;\n }\n }, {\n key: \"t\",\n value: function t() {\n var _this$translator;\n\n return this.translator && (_this$translator = this.translator).translate.apply(_this$translator, arguments);\n }\n }, {\n key: \"exists\",\n value: function exists() {\n var _this$translator2;\n\n return this.translator && (_this$translator2 = this.translator).exists.apply(_this$translator2, arguments);\n }\n }, {\n key: \"setDefaultNamespace\",\n value: function setDefaultNamespace(ns) {\n this.options.defaultNS = ns;\n }\n }, {\n key: \"hasLoadedNamespace\",\n value: function hasLoadedNamespace(ns) {\n var _this6 = this;\n\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n if (!this.isInitialized) {\n this.logger.warn('hasLoadedNamespace: i18next was not initialized', this.languages);\n return false;\n }\n\n if (!this.languages || !this.languages.length) {\n this.logger.warn('hasLoadedNamespace: i18n.languages were undefined or empty', this.languages);\n return false;\n }\n\n var lng = this.resolvedLanguage || this.languages[0];\n var fallbackLng = this.options ? this.options.fallbackLng : false;\n var lastLng = this.languages[this.languages.length - 1];\n if (lng.toLowerCase() === 'cimode') return true;\n\n var loadNotPending = function loadNotPending(l, n) {\n var loadState = _this6.services.backendConnector.state[\"\".concat(l, \"|\").concat(n)];\n\n return loadState === -1 || loadState === 2;\n };\n\n if (options.precheck) {\n var preResult = options.precheck(this, loadNotPending);\n if (preResult !== undefined) return preResult;\n }\n\n if (this.hasResourceBundle(lng, ns)) return true;\n if (!this.services.backendConnector.backend || this.options.resources && !this.options.partialBundledLanguages) return true;\n if (loadNotPending(lng, ns) && (!fallbackLng || loadNotPending(lastLng, ns))) return true;\n return false;\n }\n }, {\n key: \"loadNamespaces\",\n value: function loadNamespaces(ns, callback) {\n var _this7 = this;\n\n var deferred = defer();\n\n if (!this.options.ns) {\n callback && callback();\n return Promise.resolve();\n }\n\n if (typeof ns === 'string') ns = [ns];\n ns.forEach(function (n) {\n if (_this7.options.ns.indexOf(n) < 0) _this7.options.ns.push(n);\n });\n this.loadResources(function (err) {\n deferred.resolve();\n if (callback) callback(err);\n });\n return deferred;\n }\n }, {\n key: \"loadLanguages\",\n value: function loadLanguages(lngs, callback) {\n var deferred = defer();\n if (typeof lngs === 'string') lngs = [lngs];\n var preloaded = this.options.preload || [];\n var newLngs = lngs.filter(function (lng) {\n return preloaded.indexOf(lng) < 0;\n });\n\n if (!newLngs.length) {\n if (callback) callback();\n return Promise.resolve();\n }\n\n this.options.preload = preloaded.concat(newLngs);\n this.loadResources(function (err) {\n deferred.resolve();\n if (callback) callback(err);\n });\n return deferred;\n }\n }, {\n key: \"dir\",\n value: function dir(lng) {\n if (!lng) lng = this.resolvedLanguage || (this.languages && this.languages.length > 0 ? this.languages[0] : this.language);\n if (!lng) return 'rtl';\n var rtlLngs = ['ar', 'shu', 'sqr', 'ssh', 'xaa', 'yhd', 'yud', 'aao', 'abh', 'abv', 'acm', 'acq', 'acw', 'acx', 'acy', 'adf', 'ads', 'aeb', 'aec', 'afb', 'ajp', 'apc', 'apd', 'arb', 'arq', 'ars', 'ary', 'arz', 'auz', 'avl', 'ayh', 'ayl', 'ayn', 'ayp', 'bbz', 'pga', 'he', 'iw', 'ps', 'pbt', 'pbu', 'pst', 'prp', 'prd', 'ug', 'ur', 'ydd', 'yds', 'yih', 'ji', 'yi', 'hbo', 'men', 'xmn', 'fa', 'jpr', 'peo', 'pes', 'prs', 'dv', 'sam', 'ckb'];\n return rtlLngs.indexOf(this.services.languageUtils.getLanguagePartFromCode(lng)) > -1 || lng.toLowerCase().indexOf('-arab') > 1 ? 'rtl' : 'ltr';\n }\n }, {\n key: \"cloneInstance\",\n value: function cloneInstance() {\n var _this8 = this;\n\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var callback = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : noop;\n\n var mergedOptions = _objectSpread$6(_objectSpread$6(_objectSpread$6({}, this.options), options), {\n isClone: true\n });\n\n var clone = new I18n(mergedOptions);\n var membersToCopy = ['store', 'services', 'language'];\n membersToCopy.forEach(function (m) {\n clone[m] = _this8[m];\n });\n clone.services = _objectSpread$6({}, this.services);\n clone.services.utils = {\n hasLoadedNamespace: clone.hasLoadedNamespace.bind(clone)\n };\n clone.translator = new Translator(clone.services, clone.options);\n clone.translator.on('*', function (event) {\n for (var _len4 = arguments.length, args = new Array(_len4 > 1 ? _len4 - 1 : 0), _key4 = 1; _key4 < _len4; _key4++) {\n args[_key4 - 1] = arguments[_key4];\n }\n\n clone.emit.apply(clone, [event].concat(args));\n });\n clone.init(mergedOptions, callback);\n clone.translator.options = clone.options;\n clone.translator.backendConnector.services.utils = {\n hasLoadedNamespace: clone.hasLoadedNamespace.bind(clone)\n };\n return clone;\n }\n }, {\n key: \"toJSON\",\n value: function toJSON() {\n return {\n options: this.options,\n store: this.store,\n language: this.language,\n languages: this.languages,\n resolvedLanguage: this.resolvedLanguage\n };\n }\n }]);\n\n return I18n;\n}(EventEmitter);\n\n_defineProperty(I18n, \"createInstance\", function () {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var callback = arguments.length > 1 ? arguments[1] : undefined;\n return new I18n(options, callback);\n});\n\nvar instance = I18n.createInstance();\ninstance.createInstance = I18n.createInstance;\n\nvar createInstance = instance.createInstance;\nvar init = instance.init;\nvar loadResources = instance.loadResources;\nvar reloadResources = instance.reloadResources;\nvar use = instance.use;\nvar changeLanguage = instance.changeLanguage;\nvar getFixedT = instance.getFixedT;\nvar t = instance.t;\nvar exists = instance.exists;\nvar setDefaultNamespace = instance.setDefaultNamespace;\nvar hasLoadedNamespace = instance.hasLoadedNamespace;\nvar loadNamespaces = instance.loadNamespaces;\nvar loadLanguages = instance.loadLanguages;\n\nexport default instance;\nexport { changeLanguage, createInstance, exists, getFixedT, hasLoadedNamespace, init, loadLanguages, loadNamespaces, loadResources, reloadResources, setDefaultNamespace, t, use };\n","import i18n from \"i18next\"\nimport { initReactI18next } from \"react-i18next\"\nimport de from \"../assets/translations/de.json\"\nimport en from \"../assets/translations/en.json\"\n\n// the translations\nconst resources = {\n\ten: {\n\t\ttranslation: en,\n\t},\n\tde: {\n\t\ttranslation: de,\n\t},\n}\n\nlet lng = \"en\"\n// @ts-ignore\nconst browserLanguage = navigator.language || navigator.userLanguage\nconst savedLanguage = localStorage.getItem(\"language\")\nif (savedLanguage) {\n\tlng = savedLanguage\n} else {\n\tlng = /^de\\b/.test(browserLanguage) ? \"de\" : \"en\"\n}\n\ni18n.use(initReactI18next).init({\n\tresources,\n\tlng,\n\tfallbackLng: \"en\", // use en if detected lng is not available\n\n\tkeySeparator: false, // we do not use keys in form messages.welcome\n\n\tinterpolation: {\n\t\tescapeValue: false, // react already safes from xss\n\t},\n})\n\nexport default i18n\n","import create from \"zustand\"\n\nexport enum showSettingsValue {\n\tuser,\n\tmoderator,\n\tnone,\n}\n\ninterface cameraSettingsStore extends Record {\n\tshowSettings: showSettingsValue\n}\n\nexport const useCameraSettingsStore = create(\n\t(set, get) => {\n\t\treturn {\n\t\t\tshowSettings: showSettingsValue.none,\n\t\t}\n\t}\n)\n","import create from \"zustand\"\nimport {\n\tDeletionConfimationAlert,\n\tRestartServerAlert,\n} from \"../../components/alert/deletionConfirmationAlert\"\nimport { GlobalHistory } from \"../../utils/history\"\nimport i18n from \"../../utils/translation\"\n\nexport class CustomError {\n\ttitle: string\n\tmessage: string\n\tcomponent?: any\n\tdestructive: boolean\n\n\tconstructor(\n\t\ttitle?: string,\n\t\tmessage?: string,\n\t\tcomponent?: any,\n\t\tdestructive?: boolean\n\t) {\n\t\tthis.title = title ? title : \"Error\"\n\t\tthis.message = message ? message : \"Unknown error\"\n\t\tthis.component = component\n\t\tthis.destructive = destructive ?? false\n\t}\n}\n\ninterface ErrorStore extends Record {\n\terror?: CustomError\n\n\tupdate: (error: Error) => void\n\tshow: (title?: string, message?: string, component?: any) => void\n\tdeleteConfirmation: (onDelete: () => void, message?: string) => void\n\trestartServerConfirmation: (onYes: () => void) => void\n\tclear: () => void\n}\n\nexport const useErrorStore = create((set, get) => {\n\treturn {\n\t\terror: undefined,\n\n\t\tupdate: (error: Error) => {\n\t\t\tconsole.error(error.name, error.message)\n\t\t\tset({ error: new CustomError(error.name, error.message) })\n\n\t\t\tif (error.message === \"Webinar doesnt exists\") {\n\t\t\t\tGlobalHistory.replace(\"/\")\n\t\t\t}\n\t\t},\n\n\t\tshow: (title, message, component) => {\n\t\t\tset({ error: new CustomError(title, message, component) })\n\t\t},\n\n\t\tdeleteConfirmation: (onDelete: () => void, message?: string) => {\n\t\t\tconst { clear } = get()\n\n\t\t\tset({\n\t\t\t\terror: new CustomError(\n\t\t\t\t\ti18n.t(\"atention\"),\n\t\t\t\t\tmessage ? message : i18n.t(\"confirm_deletion\"),\n\t\t\t\t\t,\n\t\t\t\t\ttrue\n\t\t\t\t),\n\t\t\t})\n\t\t},\n\n\t\trestartServerConfirmation: (onYes: () => void) => {\n\t\t\tconst { clear } = get()\n\n\t\t\tset({\n\t\t\t\terror: new CustomError(\n\t\t\t\t\ti18n.t(\"restart_server_title\"),\n\t\t\t\t\ti18n.t(\"restart_server_description\"),\n\t\t\t\t\t,\n\t\t\t\t\ttrue\n\t\t\t\t),\n\t\t\t})\n\t\t},\n\n\t\tclear: () => {\n\t\t\tset({ error: undefined })\n\t\t},\n\t}\n})\n","import {\n\tcloneElement,\n\tforwardRef,\n\tReactElement,\n\tuseEffect,\n\tuseState,\n} from \"react\"\nimport { useTranslation } from \"react-i18next\"\nimport { useKeyPressEvent } from \"react-use\"\nimport { CustomError, useErrorStore } from \"../../state/stores/errorStore\"\nimport Button from \"../button/button\"\n\n// TODO: press enter not closing anymore\ninterface AlertProps {\n\terror: CustomError | undefined\n}\n\nconst Alert = forwardRef(({ error }, ref) => {\n\tconst { t } = useTranslation()\n\tconst [title, setTitle] = useState(\"\")\n\tconst [description, setDescription] = useState(\"\")\n\tconst [transform, setTransform] = useState(\"scale(0.9) rotateX(0deg)\")\n\tconst [custom, setCustom] = useState()\n\tconst [destructive, setDestructive] = useState(false)\n\n\tconst close = () => {\n\t\tsetTransform(\"scale(0.9) rotateX(0deg)\")\n\n\t\tuseErrorStore.getState().clear()\n\t}\n\n\tuseKeyPressEvent(\"Enter\", close)\n\tuseKeyPressEvent(\"Escape\", close)\n\n\tuseEffect(() => {\n\t\tif (\n\t\t\terror &&\n\t\t\terror.message &&\n\t\t\terror.message.length > 0 &&\n\t\t\terror.message !== description &&\n\t\t\terror.destructive !== undefined\n\t\t) {\n\t\t\tsetTitle(\n\t\t\t\terror.title === \"Error\" || error.title === \"TypeError\"\n\t\t\t\t\t? t(\"general_error\")\n\t\t\t\t\t: error.title\n\t\t\t)\n\t\t\tsetDescription(\n\t\t\t\terror.message === \"Unknown Error\" || error.message === \"Failed to fetch\"\n\t\t\t\t\t? t(\"general_error_description\")\n\t\t\t\t\t: error.message\n\t\t\t)\n\n\t\t\tif (transform === \"scale(0.9) rotateX(0deg)\") {\n\t\t\t\twindow.requestAnimationFrame(function () {\n\t\t\t\t\tsetTransform(\"scale(1.0) rotateX(0deg)\")\n\t\t\t\t})\n\t\t\t}\n\n\t\t\tif (error.component) {\n\t\t\t\tsetCustom(error.component)\n\t\t\t}\n\n\t\t\tsetDestructive(error.destructive)\n\t\t}\n\t}, [error, description, transform, t])\n\n\treturn (\n\t\t\n\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\t{destructive ? (\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t)}\n\t\t\t\t\t
\n\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t{title}\n\t\t\t\t\t\t\n\t\t\t\t\t\t

\n\t\t\t\t\t\t\t{description}\n\t\t\t\t\t\t

\n\t\t\t\t\t
\n\t\t\t\t\n\n\t\t\t\t
\n\t\t\t\t\t{custom ? (\n\t\t\t\t\t\tcloneElement(custom, { close })\n\t\t\t\t\t) : (\n\t\t\t\t\t\t\n\t\t\t\t\t)}\n\t\t\t\t
\n\t\t\t\n\t\t\n\t)\n})\n\nexport default Alert\n","var __defProp$1 = Object.defineProperty;\nvar __getOwnPropSymbols$2 = Object.getOwnPropertySymbols;\nvar __hasOwnProp$2 = Object.prototype.hasOwnProperty;\nvar __propIsEnum$2 = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp$1 = (obj, key, value) => key in obj ? __defProp$1(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues$1 = (a, b) => {\n for (var prop in b || (b = {}))\n if (__hasOwnProp$2.call(b, prop))\n __defNormalProp$1(a, prop, b[prop]);\n if (__getOwnPropSymbols$2)\n for (var prop of __getOwnPropSymbols$2(b)) {\n if (__propIsEnum$2.call(b, prop))\n __defNormalProp$1(a, prop, b[prop]);\n }\n return a;\n};\nconst reduxImpl = (reducer, initial) => (set, get, api) => {\n api.dispatch = (action) => {\n set((state) => reducer(state, action), false, action);\n return action;\n };\n api.dispatchFromDevtools = true;\n return __spreadValues$1({ dispatch: (...a) => api.dispatch(...a) }, initial);\n};\nconst redux = reduxImpl;\n\nvar __getOwnPropSymbols$1 = Object.getOwnPropertySymbols;\nvar __hasOwnProp$1 = Object.prototype.hasOwnProperty;\nvar __propIsEnum$1 = Object.prototype.propertyIsEnumerable;\nvar __objRest = (source, exclude) => {\n var target = {};\n for (var prop in source)\n if (__hasOwnProp$1.call(source, prop) && exclude.indexOf(prop) < 0)\n target[prop] = source[prop];\n if (source != null && __getOwnPropSymbols$1)\n for (var prop of __getOwnPropSymbols$1(source)) {\n if (exclude.indexOf(prop) < 0 && __propIsEnum$1.call(source, prop))\n target[prop] = source[prop];\n }\n return target;\n};\nconst devtoolsImpl = (fn, devtoolsOptions = {}) => (set, get, api) => {\n const _a = devtoolsOptions, { enabled, anonymousActionType } = _a, options = __objRest(_a, [\"enabled\", \"anonymousActionType\"]);\n let extensionConnector;\n try {\n extensionConnector = (enabled != null ? enabled : (import.meta.env && import.meta.env.MODE) !== \"production\") && window.__REDUX_DEVTOOLS_EXTENSION__;\n } catch {\n }\n if (!extensionConnector) {\n if ((import.meta.env && import.meta.env.MODE) !== \"production\" && enabled) {\n console.warn(\"[zustand devtools middleware] Please install/enable Redux devtools extension\");\n }\n return fn(set, get, api);\n }\n const extension = extensionConnector.connect(options);\n let isRecording = true;\n api.setState = (state, replace, nameOrAction) => {\n const r = set(state, replace);\n if (!isRecording)\n return r;\n extension.send(nameOrAction === void 0 ? { type: anonymousActionType || \"anonymous\" } : typeof nameOrAction === \"string\" ? { type: nameOrAction } : nameOrAction, get());\n return r;\n };\n const setStateFromDevtools = (...a) => {\n const originalIsRecording = isRecording;\n isRecording = false;\n set(...a);\n isRecording = originalIsRecording;\n };\n const initialState = fn(api.setState, get, api);\n extension.init(initialState);\n if (api.dispatchFromDevtools && typeof api.dispatch === \"function\") {\n let didWarnAboutReservedActionType = false;\n const originalDispatch = api.dispatch;\n api.dispatch = (...a) => {\n if ((import.meta.env && import.meta.env.MODE) !== \"production\" && a[0].type === \"__setState\" && !didWarnAboutReservedActionType) {\n console.warn('[zustand devtools middleware] \"__setState\" action type is reserved to set state from the devtools. Avoid using it.');\n didWarnAboutReservedActionType = true;\n }\n originalDispatch(...a);\n };\n }\n extension.subscribe((message) => {\n var _a2;\n switch (message.type) {\n case \"ACTION\":\n if (typeof message.payload !== \"string\") {\n console.error(\"[zustand devtools middleware] Unsupported action format\");\n return;\n }\n return parseJsonThen(message.payload, (action) => {\n if (action.type === \"__setState\") {\n setStateFromDevtools(action.state);\n return;\n }\n if (!api.dispatchFromDevtools)\n return;\n if (typeof api.dispatch !== \"function\")\n return;\n api.dispatch(action);\n });\n case \"DISPATCH\":\n switch (message.payload.type) {\n case \"RESET\":\n setStateFromDevtools(initialState);\n return extension.init(api.getState());\n case \"COMMIT\":\n return extension.init(api.getState());\n case \"ROLLBACK\":\n return parseJsonThen(message.state, (state) => {\n setStateFromDevtools(state);\n extension.init(api.getState());\n });\n case \"JUMP_TO_STATE\":\n case \"JUMP_TO_ACTION\":\n return parseJsonThen(message.state, (state) => {\n setStateFromDevtools(state);\n });\n case \"IMPORT_STATE\": {\n const { nextLiftedState } = message.payload;\n const lastComputedState = (_a2 = nextLiftedState.computedStates.slice(-1)[0]) == null ? void 0 : _a2.state;\n if (!lastComputedState)\n return;\n setStateFromDevtools(lastComputedState);\n extension.send(null, nextLiftedState);\n return;\n }\n case \"PAUSE_RECORDING\":\n return isRecording = !isRecording;\n }\n return;\n }\n });\n return initialState;\n};\nconst devtools = devtoolsImpl;\nconst parseJsonThen = (stringified, f) => {\n let parsed;\n try {\n parsed = JSON.parse(stringified);\n } catch (e) {\n console.error(\"[zustand devtools middleware] Could not parse the received json\", e);\n }\n if (parsed !== void 0)\n f(parsed);\n};\n\nconst subscribeWithSelectorImpl = (fn) => (set, get, api) => {\n const origSubscribe = api.subscribe;\n api.subscribe = (selector, optListener, options) => {\n let listener = selector;\n if (optListener) {\n const equalityFn = (options == null ? void 0 : options.equalityFn) || Object.is;\n let currentSlice = selector(api.getState());\n listener = (state) => {\n const nextSlice = selector(state);\n if (!equalityFn(currentSlice, nextSlice)) {\n const previousSlice = currentSlice;\n optListener(currentSlice = nextSlice, previousSlice);\n }\n };\n if (options == null ? void 0 : options.fireImmediately) {\n optListener(currentSlice, currentSlice);\n }\n }\n return origSubscribe(listener);\n };\n const initialState = fn(set, get, api);\n return initialState;\n};\nconst subscribeWithSelector = subscribeWithSelectorImpl;\n\nconst combine = (initialState, create) => (...a) => Object.assign({}, initialState, create(...a));\n\nvar __defProp = Object.defineProperty;\nvar __getOwnPropSymbols = Object.getOwnPropertySymbols;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __propIsEnum = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues = (a, b) => {\n for (var prop in b || (b = {}))\n if (__hasOwnProp.call(b, prop))\n __defNormalProp(a, prop, b[prop]);\n if (__getOwnPropSymbols)\n for (var prop of __getOwnPropSymbols(b)) {\n if (__propIsEnum.call(b, prop))\n __defNormalProp(a, prop, b[prop]);\n }\n return a;\n};\nconst toThenable = (fn) => (input) => {\n try {\n const result = fn(input);\n if (result instanceof Promise) {\n return result;\n }\n return {\n then(onFulfilled) {\n return toThenable(onFulfilled)(result);\n },\n catch(_onRejected) {\n return this;\n }\n };\n } catch (e) {\n return {\n then(_onFulfilled) {\n return this;\n },\n catch(onRejected) {\n return toThenable(onRejected)(e);\n }\n };\n }\n};\nconst persistImpl = (config, baseOptions) => (set, get, api) => {\n let options = __spreadValues({\n getStorage: () => localStorage,\n serialize: JSON.stringify,\n deserialize: JSON.parse,\n partialize: (state) => state,\n version: 0,\n merge: (persistedState, currentState) => __spreadValues(__spreadValues({}, currentState), persistedState)\n }, baseOptions);\n let hasHydrated = false;\n const hydrationListeners = /* @__PURE__ */ new Set();\n const finishHydrationListeners = /* @__PURE__ */ new Set();\n let storage;\n try {\n storage = options.getStorage();\n } catch (e) {\n }\n if (!storage) {\n return config((...args) => {\n console.warn(`[zustand persist middleware] Unable to update item '${options.name}', the given storage is currently unavailable.`);\n set(...args);\n }, get, api);\n }\n const thenableSerialize = toThenable(options.serialize);\n const setItem = () => {\n const state = options.partialize(__spreadValues({}, get()));\n let errorInSync;\n const thenable = thenableSerialize({ state, version: options.version }).then((serializedValue) => storage.setItem(options.name, serializedValue)).catch((e) => {\n errorInSync = e;\n });\n if (errorInSync) {\n throw errorInSync;\n }\n return thenable;\n };\n const savedSetState = api.setState;\n api.setState = (state, replace) => {\n savedSetState(state, replace);\n void setItem();\n };\n const configResult = config((...args) => {\n set(...args);\n void setItem();\n }, get, api);\n let stateFromStorage;\n const hydrate = () => {\n var _a;\n if (!storage)\n return;\n hasHydrated = false;\n hydrationListeners.forEach((cb) => cb(get()));\n const postRehydrationCallback = ((_a = options.onRehydrateStorage) == null ? void 0 : _a.call(options, get())) || void 0;\n return toThenable(storage.getItem.bind(storage))(options.name).then((storageValue) => {\n if (storageValue) {\n return options.deserialize(storageValue);\n }\n }).then((deserializedStorageValue) => {\n if (deserializedStorageValue) {\n if (typeof deserializedStorageValue.version === \"number\" && deserializedStorageValue.version !== options.version) {\n if (options.migrate) {\n return options.migrate(deserializedStorageValue.state, deserializedStorageValue.version);\n }\n console.error(`State loaded from storage couldn't be migrated since no migrate function was provided`);\n } else {\n return deserializedStorageValue.state;\n }\n }\n }).then((migratedState) => {\n var _a2;\n stateFromStorage = options.merge(migratedState, (_a2 = get()) != null ? _a2 : configResult);\n set(stateFromStorage, true);\n return setItem();\n }).then(() => {\n postRehydrationCallback == null ? void 0 : postRehydrationCallback(stateFromStorage, void 0);\n hasHydrated = true;\n finishHydrationListeners.forEach((cb) => cb(stateFromStorage));\n }).catch((e) => {\n postRehydrationCallback == null ? void 0 : postRehydrationCallback(void 0, e);\n });\n };\n api.persist = {\n setOptions: (newOptions) => {\n options = __spreadValues(__spreadValues({}, options), newOptions);\n if (newOptions.getStorage) {\n storage = newOptions.getStorage();\n }\n },\n clearStorage: () => {\n storage == null ? void 0 : storage.removeItem(options.name);\n },\n rehydrate: () => hydrate(),\n hasHydrated: () => hasHydrated,\n onHydrate: (cb) => {\n hydrationListeners.add(cb);\n return () => {\n hydrationListeners.delete(cb);\n };\n },\n onFinishHydration: (cb) => {\n finishHydrationListeners.add(cb);\n return () => {\n finishHydrationListeners.delete(cb);\n };\n }\n };\n hydrate();\n return stateFromStorage || configResult;\n};\nconst persist = persistImpl;\n\nexport { combine, devtools, persist, redux, subscribeWithSelector };\n","function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {\n try {\n var info = gen[key](arg);\n var value = info.value;\n } catch (error) {\n reject(error);\n return;\n }\n\n if (info.done) {\n resolve(value);\n } else {\n Promise.resolve(value).then(_next, _throw);\n }\n}\n\nexport default function _asyncToGenerator(fn) {\n return function () {\n var self = this,\n args = arguments;\n return new Promise(function (resolve, reject) {\n var gen = fn.apply(self, args);\n\n function _next(value) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value);\n }\n\n function _throw(err) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err);\n }\n\n _next(undefined);\n });\n };\n}","import e,{EventEmitter as t}from\"events\";var r=function(e){if(Array.isArray(e))return e};var n=function(e,t){if(\"undefined\"!=typeof Symbol&&Symbol.iterator in Object(e)){var r=[],n=!0,i=!1,a=void 0;try{for(var o,s=e[Symbol.iterator]();!(n=(o=s.next()).done)&&(r.push(o.value),!t||r.length!==t);n=!0);}catch(e){i=!0,a=e}finally{try{n||null==s.return||s.return()}finally{if(i)throw a}}return r}};var i=function(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=new Array(t);r=0||(i[r]=e[r]);return i};var u=function(e,t){if(null==e)return{};var r,n,i=c(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(i[r]=e[r])}return i},l=\"undefined\"!=typeof globalThis?globalThis:\"undefined\"!=typeof window?window:\"undefined\"!=typeof global?global:\"undefined\"!=typeof self?self:{};function d(e,t){return e(t={exports:{}},t.exports),t.exports}var p=d(function(e){var t=function(e){var t,r=Object.prototype,n=r.hasOwnProperty,i=\"function\"==typeof Symbol?Symbol:{},a=i.iterator||\"@@iterator\",o=i.asyncIterator||\"@@asyncIterator\",s=i.toStringTag||\"@@toStringTag\";function c(e,t,r){return Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}),e[t]}try{c({},\"\")}catch(e){c=function(e,t,r){return e[t]=r}}function u(e,t,r,n){var i=t&&t.prototype instanceof m?t:m,a=Object.create(i.prototype),o=new O(n||[]);return a._invoke=function(e,t,r){var n=d;return function(i,a){if(n===h)throw new Error(\"Generator is already running\");if(n===f){if(\"throw\"===i)throw a;return x()}for(r.method=i,r.arg=a;;){var o=r.delegate;if(o){var s=C(o,r);if(s){if(s===v)continue;return s}}if(\"next\"===r.method)r.sent=r._sent=r.arg;else if(\"throw\"===r.method){if(n===d)throw n=f,r.arg;r.dispatchException(r.arg)}else\"return\"===r.method&&r.abrupt(\"return\",r.arg);n=h;var c=l(e,t,r);if(\"normal\"===c.type){if(n=r.done?f:p,c.arg===v)continue;return{value:c.arg,done:r.done}}\"throw\"===c.type&&(n=f,r.method=\"throw\",r.arg=c.arg)}}}(e,r,o),a}function l(e,t,r){try{return{type:\"normal\",arg:e.call(t,r)}}catch(e){return{type:\"throw\",arg:e}}}e.wrap=u;var d=\"suspendedStart\",p=\"suspendedYield\",h=\"executing\",f=\"completed\",v={};function m(){}function g(){}function y(){}var b={};b[a]=function(){return this};var w=Object.getPrototypeOf,k=w&&w(w(P([])));k&&k!==r&&n.call(k,a)&&(b=k);var _=y.prototype=m.prototype=Object.create(b);function M(e){[\"next\",\"throw\",\"return\"].forEach(function(t){c(e,t,function(e){return this._invoke(t,e)})})}function S(e,t){var r;this._invoke=function(i,a){function o(){return new t(function(r,o){!function r(i,a,o,s){var c=l(e[i],e,a);if(\"throw\"!==c.type){var u=c.arg,d=u.value;return d&&\"object\"==typeof d&&n.call(d,\"__await\")?t.resolve(d.__await).then(function(e){r(\"next\",e,o,s)},function(e){r(\"throw\",e,o,s)}):t.resolve(d).then(function(e){u.value=e,o(u)},function(e){return r(\"throw\",e,o,s)})}s(c.arg)}(i,a,r,o)})}return r=r?r.then(o,o):o()}}function C(e,r){var n=e.iterator[r.method];if(n===t){if(r.delegate=null,\"throw\"===r.method){if(e.iterator.return&&(r.method=\"return\",r.arg=t,C(e,r),\"throw\"===r.method))return v;r.method=\"throw\",r.arg=new TypeError(\"The iterator does not provide a 'throw' method\")}return v}var i=l(n,e.iterator,r.arg);if(\"throw\"===i.type)return r.method=\"throw\",r.arg=i.arg,r.delegate=null,v;var a=i.arg;return a?a.done?(r[e.resultName]=a.value,r.next=e.nextLoc,\"return\"!==r.method&&(r.method=\"next\",r.arg=t),r.delegate=null,v):a:(r.method=\"throw\",r.arg=new TypeError(\"iterator result is not an object\"),r.delegate=null,v)}function T(e){var t={tryLoc:e[0]};1 in e&&(t.catchLoc=e[1]),2 in e&&(t.finallyLoc=e[2],t.afterLoc=e[3]),this.tryEntries.push(t)}function j(e){var t=e.completion||{};t.type=\"normal\",delete t.arg,e.completion=t}function O(e){this.tryEntries=[{tryLoc:\"root\"}],e.forEach(T,this),this.reset(!0)}function P(e){if(e){var r=e[a];if(r)return r.call(e);if(\"function\"==typeof e.next)return e;if(!isNaN(e.length)){var i=-1,o=function r(){for(;++i=0;--a){var o=this.tryEntries[a],s=o.completion;if(\"root\"===o.tryLoc)return i(\"end\");if(o.tryLoc<=this.prev){var c=n.call(o,\"catchLoc\"),u=n.call(o,\"finallyLoc\");if(c&&u){if(this.prev=0;--r){var i=this.tryEntries[r];if(i.tryLoc<=this.prev&&n.call(i,\"finallyLoc\")&&this.prev=0;--t){var r=this.tryEntries[t];if(r.finallyLoc===e)return this.complete(r.completion,r.afterLoc),j(r),v}},catch:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var r=this.tryEntries[t];if(r.tryLoc===e){var n=r.completion;if(\"throw\"===n.type){var i=n.arg;j(r)}return i}}throw new Error(\"illegal catch attempt\")},delegateYield:function(e,r,n){return this.delegate={iterator:P(e),resultName:r,nextLoc:n},\"next\"===this.method&&(this.arg=t),v}},e}(e.exports);try{regeneratorRuntime=t}catch(e){Function(\"r\",\"regeneratorRuntime = r\")(t)}});function h(e,t,r,n,i,a,o){try{var s=e[a](o),c=s.value}catch(e){return void r(e)}s.done?t(c):Promise.resolve(c).then(n,i)}var f=function(e){return function(){var t=this,r=arguments;return new Promise(function(n,i){var a=e.apply(t,r);function o(e){h(a,n,i,o,s,\"next\",e)}function s(e){h(a,n,i,o,s,\"throw\",e)}o(void 0)})}};var v=function(e,t){if(!(e instanceof t))throw new TypeError(\"Cannot call a class as a function\")};var m=function(e){if(void 0===e)throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");return e};function g(e,t){for(var r=0;r0&&r[1]||\"\"}static getSecondMatch(e,t){const r=t.match(e);return r&&r.length>1&&r[2]||\"\"}static matchAndReturnConst(e,t,r){if(e.test(t))return r}static getWindowsVersionName(e){switch(e){case\"NT\":return\"NT\";case\"XP\":return\"XP\";case\"NT 5.0\":return\"2000\";case\"NT 5.1\":return\"XP\";case\"NT 5.2\":return\"2003\";case\"NT 6.0\":return\"Vista\";case\"NT 6.1\":return\"7\";case\"NT 6.2\":return\"8\";case\"NT 6.3\":return\"8.1\";case\"NT 10.0\":return\"10\";default:return}}static getMacOSVersionName(e){const t=e.split(\".\").splice(0,2).map(e=>parseInt(e,10)||0);if(t.push(0),10===t[0])switch(t[1]){case 5:return\"Leopard\";case 6:return\"Snow Leopard\";case 7:return\"Lion\";case 8:return\"Mountain Lion\";case 9:return\"Mavericks\";case 10:return\"Yosemite\";case 11:return\"El Capitan\";case 12:return\"Sierra\";case 13:return\"High Sierra\";case 14:return\"Mojave\";case 15:return\"Catalina\";default:return}}static getAndroidVersionName(e){const t=e.split(\".\").splice(0,2).map(e=>parseInt(e,10)||0);if(t.push(0),!(1===t[0]&&t[1]<5))return 1===t[0]&&t[1]<6?\"Cupcake\":1===t[0]&&t[1]>=6?\"Donut\":2===t[0]&&t[1]<2?\"Eclair\":2===t[0]&&2===t[1]?\"Froyo\":2===t[0]&&t[1]>2?\"Gingerbread\":3===t[0]?\"Honeycomb\":4===t[0]&&t[1]<1?\"Ice Cream Sandwich\":4===t[0]&&t[1]<4?\"Jelly Bean\":4===t[0]&&t[1]>=4?\"KitKat\":5===t[0]?\"Lollipop\":6===t[0]?\"Marshmallow\":7===t[0]?\"Nougat\":8===t[0]?\"Oreo\":9===t[0]?\"Pie\":void 0}static getVersionPrecision(e){return e.split(\".\").length}static compareVersions(e,t,r=!1){const n=Z.getVersionPrecision(e),i=Z.getVersionPrecision(t);let a=Math.max(n,i),o=0;const s=Z.map([e,t],e=>{const t=a-Z.getVersionPrecision(e),r=e+new Array(t+1).join(\".0\");return Z.map(r.split(\".\"),e=>new Array(20-e.length).join(\"0\")+e).reverse()});for(r&&(o=a-Math.min(n,i)),a-=1;a>=o;){if(s[0][a]>s[1][a])return 1;if(s[0][a]===s[1][a]){if(a===o)return 0;a-=1}else if(s[0][a]{r[t]=e[t]})}}return e}static getBrowserAlias(e){return H[e]}static getBrowserTypeByAlias(e){return K[e]||\"\"}}const X=/version\\/(\\d+(\\.?_?\\d+)+)/i,ee=[{test:[/googlebot/i],describe(e){const t={name:\"Googlebot\"},r=Z.getFirstMatch(/googlebot\\/(\\d+(\\.\\d+))/i,e)||Z.getFirstMatch(X,e);return r&&(t.version=r),t}},{test:[/opera/i],describe(e){const t={name:\"Opera\"},r=Z.getFirstMatch(X,e)||Z.getFirstMatch(/(?:opera)[\\s/](\\d+(\\.?_?\\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/opr\\/|opios/i],describe(e){const t={name:\"Opera\"},r=Z.getFirstMatch(/(?:opr|opios)[\\s/](\\S+)/i,e)||Z.getFirstMatch(X,e);return r&&(t.version=r),t}},{test:[/SamsungBrowser/i],describe(e){const t={name:\"Samsung Internet for Android\"},r=Z.getFirstMatch(X,e)||Z.getFirstMatch(/(?:SamsungBrowser)[\\s/](\\d+(\\.?_?\\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/Whale/i],describe(e){const t={name:\"NAVER Whale Browser\"},r=Z.getFirstMatch(X,e)||Z.getFirstMatch(/(?:whale)[\\s/](\\d+(?:\\.\\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/MZBrowser/i],describe(e){const t={name:\"MZ Browser\"},r=Z.getFirstMatch(/(?:MZBrowser)[\\s/](\\d+(?:\\.\\d+)+)/i,e)||Z.getFirstMatch(X,e);return r&&(t.version=r),t}},{test:[/focus/i],describe(e){const t={name:\"Focus\"},r=Z.getFirstMatch(/(?:focus)[\\s/](\\d+(?:\\.\\d+)+)/i,e)||Z.getFirstMatch(X,e);return r&&(t.version=r),t}},{test:[/swing/i],describe(e){const t={name:\"Swing\"},r=Z.getFirstMatch(/(?:swing)[\\s/](\\d+(?:\\.\\d+)+)/i,e)||Z.getFirstMatch(X,e);return r&&(t.version=r),t}},{test:[/coast/i],describe(e){const t={name:\"Opera Coast\"},r=Z.getFirstMatch(X,e)||Z.getFirstMatch(/(?:coast)[\\s/](\\d+(\\.?_?\\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/yabrowser/i],describe(e){const t={name:\"Yandex Browser\"},r=Z.getFirstMatch(/(?:yabrowser)[\\s/](\\d+(\\.?_?\\d+)+)/i,e)||Z.getFirstMatch(X,e);return r&&(t.version=r),t}},{test:[/ucbrowser/i],describe(e){const t={name:\"UC Browser\"},r=Z.getFirstMatch(X,e)||Z.getFirstMatch(/(?:ucbrowser)[\\s/](\\d+(\\.?_?\\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/Maxthon|mxios/i],describe(e){const t={name:\"Maxthon\"},r=Z.getFirstMatch(X,e)||Z.getFirstMatch(/(?:Maxthon|mxios)[\\s/](\\d+(\\.?_?\\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/epiphany/i],describe(e){const t={name:\"Epiphany\"},r=Z.getFirstMatch(X,e)||Z.getFirstMatch(/(?:epiphany)[\\s/](\\d+(\\.?_?\\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/puffin/i],describe(e){const t={name:\"Puffin\"},r=Z.getFirstMatch(X,e)||Z.getFirstMatch(/(?:puffin)[\\s/](\\d+(\\.?_?\\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/sleipnir/i],describe(e){const t={name:\"Sleipnir\"},r=Z.getFirstMatch(X,e)||Z.getFirstMatch(/(?:sleipnir)[\\s/](\\d+(\\.?_?\\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/k-meleon/i],describe(e){const t={name:\"K-Meleon\"},r=Z.getFirstMatch(X,e)||Z.getFirstMatch(/(?:k-meleon)[\\s/](\\d+(\\.?_?\\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/micromessenger/i],describe(e){const t={name:\"WeChat\"},r=Z.getFirstMatch(/(?:micromessenger)[\\s/](\\d+(\\.?_?\\d+)+)/i,e)||Z.getFirstMatch(X,e);return r&&(t.version=r),t}},{test:[/qqbrowser/i],describe(e){const t={name:/qqbrowserlite/i.test(e)?\"QQ Browser Lite\":\"QQ Browser\"},r=Z.getFirstMatch(/(?:qqbrowserlite|qqbrowser)[/](\\d+(\\.?_?\\d+)+)/i,e)||Z.getFirstMatch(X,e);return r&&(t.version=r),t}},{test:[/msie|trident/i],describe(e){const t={name:\"Internet Explorer\"},r=Z.getFirstMatch(/(?:msie |rv:)(\\d+(\\.?_?\\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/\\sedg\\//i],describe(e){const t={name:\"Microsoft Edge\"},r=Z.getFirstMatch(/\\sedg\\/(\\d+(\\.?_?\\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/edg([ea]|ios)/i],describe(e){const t={name:\"Microsoft Edge\"},r=Z.getSecondMatch(/edg([ea]|ios)\\/(\\d+(\\.?_?\\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/vivaldi/i],describe(e){const t={name:\"Vivaldi\"},r=Z.getFirstMatch(/vivaldi\\/(\\d+(\\.?_?\\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/seamonkey/i],describe(e){const t={name:\"SeaMonkey\"},r=Z.getFirstMatch(/seamonkey\\/(\\d+(\\.?_?\\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/sailfish/i],describe(e){const t={name:\"Sailfish\"},r=Z.getFirstMatch(/sailfish\\s?browser\\/(\\d+(\\.\\d+)?)/i,e);return r&&(t.version=r),t}},{test:[/silk/i],describe(e){const t={name:\"Amazon Silk\"},r=Z.getFirstMatch(/silk\\/(\\d+(\\.?_?\\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/phantom/i],describe(e){const t={name:\"PhantomJS\"},r=Z.getFirstMatch(/phantomjs\\/(\\d+(\\.?_?\\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/slimerjs/i],describe(e){const t={name:\"SlimerJS\"},r=Z.getFirstMatch(/slimerjs\\/(\\d+(\\.?_?\\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/blackberry|\\bbb\\d+/i,/rim\\stablet/i],describe(e){const t={name:\"BlackBerry\"},r=Z.getFirstMatch(X,e)||Z.getFirstMatch(/blackberry[\\d]+\\/(\\d+(\\.?_?\\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/(web|hpw)[o0]s/i],describe(e){const t={name:\"WebOS Browser\"},r=Z.getFirstMatch(X,e)||Z.getFirstMatch(/w(?:eb)?[o0]sbrowser\\/(\\d+(\\.?_?\\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/bada/i],describe(e){const t={name:\"Bada\"},r=Z.getFirstMatch(/dolfin\\/(\\d+(\\.?_?\\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/tizen/i],describe(e){const t={name:\"Tizen\"},r=Z.getFirstMatch(/(?:tizen\\s?)?browser\\/(\\d+(\\.?_?\\d+)+)/i,e)||Z.getFirstMatch(X,e);return r&&(t.version=r),t}},{test:[/qupzilla/i],describe(e){const t={name:\"QupZilla\"},r=Z.getFirstMatch(/(?:qupzilla)[\\s/](\\d+(\\.?_?\\d+)+)/i,e)||Z.getFirstMatch(X,e);return r&&(t.version=r),t}},{test:[/firefox|iceweasel|fxios/i],describe(e){const t={name:\"Firefox\"},r=Z.getFirstMatch(/(?:firefox|iceweasel|fxios)[\\s/](\\d+(\\.?_?\\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/electron/i],describe(e){const t={name:\"Electron\"},r=Z.getFirstMatch(/(?:electron)\\/(\\d+(\\.?_?\\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/chromium/i],describe(e){const t={name:\"Chromium\"},r=Z.getFirstMatch(/(?:chromium)[\\s/](\\d+(\\.?_?\\d+)+)/i,e)||Z.getFirstMatch(X,e);return r&&(t.version=r),t}},{test:[/chrome|crios|crmo/i],describe(e){const t={name:\"Chrome\"},r=Z.getFirstMatch(/(?:chrome|crios|crmo)\\/(\\d+(\\.?_?\\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/GSA/i],describe(e){const t={name:\"Google Search\"},r=Z.getFirstMatch(/(?:GSA)\\/(\\d+(\\.?_?\\d+)+)/i,e);return r&&(t.version=r),t}},{test(e){const t=!e.test(/like android/i),r=e.test(/android/i);return t&&r},describe(e){const t={name:\"Android Browser\"},r=Z.getFirstMatch(X,e);return r&&(t.version=r),t}},{test:[/playstation 4/i],describe(e){const t={name:\"PlayStation 4\"},r=Z.getFirstMatch(X,e);return r&&(t.version=r),t}},{test:[/safari|applewebkit/i],describe(e){const t={name:\"Safari\"},r=Z.getFirstMatch(X,e);return r&&(t.version=r),t}},{test:[/.*/i],describe(e){const t=-1!==e.search(\"\\\\(\")?/^(.*)\\/(.*)[ \\t]\\((.*)/:/^(.*)\\/(.*) /;return{name:Z.getFirstMatch(t,e),version:Z.getSecondMatch(t,e)}}}];var te=[{test:[/Roku\\/DVP/],describe(e){const t=Z.getFirstMatch(/Roku\\/DVP-(\\d+\\.\\d+)/i,e);return{name:$.Roku,version:t}}},{test:[/windows phone/i],describe(e){const t=Z.getFirstMatch(/windows phone (?:os)?\\s?(\\d+(\\.\\d+)*)/i,e);return{name:$.WindowsPhone,version:t}}},{test:[/windows /i],describe(e){const t=Z.getFirstMatch(/Windows ((NT|XP)( \\d\\d?.\\d)?)/i,e),r=Z.getWindowsVersionName(t);return{name:$.Windows,version:t,versionName:r}}},{test:[/Macintosh(.*?) FxiOS(.*?) Version\\//],describe(e){const t=Z.getSecondMatch(/(Version\\/)(\\d[\\d.]+)/,e);return{name:$.iOS,version:t}}},{test:[/macintosh/i],describe(e){const t=Z.getFirstMatch(/mac os x (\\d+(\\.?_?\\d+)+)/i,e).replace(/[_\\s]/g,\".\"),r=Z.getMacOSVersionName(t),n={name:$.MacOS,version:t};return r&&(n.versionName=r),n}},{test:[/(ipod|iphone|ipad)/i],describe(e){const t=Z.getFirstMatch(/os (\\d+([_\\s]\\d+)*) like mac os x/i,e).replace(/[_\\s]/g,\".\");return{name:$.iOS,version:t}}},{test(e){const t=!e.test(/like android/i),r=e.test(/android/i);return t&&r},describe(e){const t=Z.getFirstMatch(/android[\\s/-](\\d+(\\.\\d+)*)/i,e),r=Z.getAndroidVersionName(t),n={name:$.Android,version:t};return r&&(n.versionName=r),n}},{test:[/(web|hpw)[o0]s/i],describe(e){const t=Z.getFirstMatch(/(?:web|hpw)[o0]s\\/(\\d+(\\.\\d+)*)/i,e),r={name:$.WebOS};return t&&t.length&&(r.version=t),r}},{test:[/blackberry|\\bbb\\d+/i,/rim\\stablet/i],describe(e){const t=Z.getFirstMatch(/rim\\stablet\\sos\\s(\\d+(\\.\\d+)*)/i,e)||Z.getFirstMatch(/blackberry\\d+\\/(\\d+([_\\s]\\d+)*)/i,e)||Z.getFirstMatch(/\\bbb(\\d+)/i,e);return{name:$.BlackBerry,version:t}}},{test:[/bada/i],describe(e){const t=Z.getFirstMatch(/bada\\/(\\d+(\\.\\d+)*)/i,e);return{name:$.Bada,version:t}}},{test:[/tizen/i],describe(e){const t=Z.getFirstMatch(/tizen[/\\s](\\d+(\\.\\d+)*)/i,e);return{name:$.Tizen,version:t}}},{test:[/linux/i],describe:()=>({name:$.Linux})},{test:[/CrOS/],describe:()=>({name:$.ChromeOS})},{test:[/PlayStation 4/],describe(e){const t=Z.getFirstMatch(/PlayStation 4[/\\s](\\d+(\\.\\d+)*)/i,e);return{name:$.PlayStation4,version:t}}}],re=[{test:[/googlebot/i],describe:()=>({type:\"bot\",vendor:\"Google\"})},{test:[/huawei/i],describe(e){const t=Z.getFirstMatch(/(can-l01)/i,e)&&\"Nova\",r={type:Q.mobile,vendor:\"Huawei\"};return t&&(r.model=t),r}},{test:[/nexus\\s*(?:7|8|9|10).*/i],describe:()=>({type:Q.tablet,vendor:\"Nexus\"})},{test:[/ipad/i],describe:()=>({type:Q.tablet,vendor:\"Apple\",model:\"iPad\"})},{test:[/Macintosh(.*?) FxiOS(.*?) Version\\//],describe:()=>({type:Q.tablet,vendor:\"Apple\",model:\"iPad\"})},{test:[/kftt build/i],describe:()=>({type:Q.tablet,vendor:\"Amazon\",model:\"Kindle Fire HD 7\"})},{test:[/silk/i],describe:()=>({type:Q.tablet,vendor:\"Amazon\"})},{test:[/tablet(?! pc)/i],describe:()=>({type:Q.tablet})},{test(e){const t=e.test(/ipod|iphone/i),r=e.test(/like (ipod|iphone)/i);return t&&!r},describe(e){const t=Z.getFirstMatch(/(ipod|iphone)/i,e);return{type:Q.mobile,vendor:\"Apple\",model:t}}},{test:[/nexus\\s*[0-6].*/i,/galaxy nexus/i],describe:()=>({type:Q.mobile,vendor:\"Nexus\"})},{test:[/[^-]mobi/i],describe:()=>({type:Q.mobile})},{test:e=>\"blackberry\"===e.getBrowserName(!0),describe:()=>({type:Q.mobile,vendor:\"BlackBerry\"})},{test:e=>\"bada\"===e.getBrowserName(!0),describe:()=>({type:Q.mobile})},{test:e=>\"windows phone\"===e.getBrowserName(),describe:()=>({type:Q.mobile,vendor:\"Microsoft\"})},{test(e){const t=Number(String(e.getOSVersion()).split(\".\")[0]);return\"android\"===e.getOSName(!0)&&t>=3},describe:()=>({type:Q.tablet})},{test:e=>\"android\"===e.getOSName(!0),describe:()=>({type:Q.mobile})},{test:e=>\"macos\"===e.getOSName(!0),describe:()=>({type:Q.desktop,vendor:\"Apple\"})},{test:e=>\"windows\"===e.getOSName(!0),describe:()=>({type:Q.desktop})},{test:e=>\"linux\"===e.getOSName(!0),describe:()=>({type:Q.desktop})},{test:e=>\"playstation 4\"===e.getOSName(!0),describe:()=>({type:Q.tv})},{test:e=>\"roku\"===e.getOSName(!0),describe:()=>({type:Q.tv})}],ne=[{test:e=>\"microsoft edge\"===e.getBrowserName(!0),describe(e){if(/\\sedg\\//i.test(e))return{name:Y.Blink};const t=Z.getFirstMatch(/edge\\/(\\d+(\\.?_?\\d+)+)/i,e);return{name:Y.EdgeHTML,version:t}}},{test:[/trident/i],describe(e){const t={name:Y.Trident},r=Z.getFirstMatch(/trident\\/(\\d+(\\.?_?\\d+)+)/i,e);return r&&(t.version=r),t}},{test:e=>e.test(/presto/i),describe(e){const t={name:Y.Presto},r=Z.getFirstMatch(/presto\\/(\\d+(\\.?_?\\d+)+)/i,e);return r&&(t.version=r),t}},{test(e){const t=e.test(/gecko/i),r=e.test(/like gecko/i);return t&&!r},describe(e){const t={name:Y.Gecko},r=Z.getFirstMatch(/gecko\\/(\\d+(\\.?_?\\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/(apple)?webkit\\/537\\.36/i],describe:()=>({name:Y.Blink})},{test:[/(apple)?webkit/i],describe(e){const t={name:Y.WebKit},r=Z.getFirstMatch(/webkit\\/(\\d+(\\.?_?\\d+)+)/i,e);return r&&(t.version=r),t}}];class ie{constructor(e,t=!1){if(null==e||\"\"===e)throw new Error(\"UserAgent parameter can't be empty\");this._ua=e,this.parsedResult={},!0!==t&&this.parse()}getUA(){return this._ua}test(e){return e.test(this._ua)}parseBrowser(){this.parsedResult.browser={};const e=Z.find(ee,e=>{if(\"function\"==typeof e.test)return e.test(this);if(e.test instanceof Array)return e.test.some(e=>this.test(e));throw new Error(\"Browser's test function is not valid\")});return e&&(this.parsedResult.browser=e.describe(this.getUA())),this.parsedResult.browser}getBrowser(){return this.parsedResult.browser?this.parsedResult.browser:this.parseBrowser()}getBrowserName(e){return e?String(this.getBrowser().name).toLowerCase()||\"\":this.getBrowser().name||\"\"}getBrowserVersion(){return this.getBrowser().version}getOS(){return this.parsedResult.os?this.parsedResult.os:this.parseOS()}parseOS(){this.parsedResult.os={};const e=Z.find(te,e=>{if(\"function\"==typeof e.test)return e.test(this);if(e.test instanceof Array)return e.test.some(e=>this.test(e));throw new Error(\"Browser's test function is not valid\")});return e&&(this.parsedResult.os=e.describe(this.getUA())),this.parsedResult.os}getOSName(e){const{name:t}=this.getOS();return e?String(t).toLowerCase()||\"\":t||\"\"}getOSVersion(){return this.getOS().version}getPlatform(){return this.parsedResult.platform?this.parsedResult.platform:this.parsePlatform()}getPlatformType(e=!1){const{type:t}=this.getPlatform();return e?String(t).toLowerCase()||\"\":t||\"\"}parsePlatform(){this.parsedResult.platform={};const e=Z.find(re,e=>{if(\"function\"==typeof e.test)return e.test(this);if(e.test instanceof Array)return e.test.some(e=>this.test(e));throw new Error(\"Browser's test function is not valid\")});return e&&(this.parsedResult.platform=e.describe(this.getUA())),this.parsedResult.platform}getEngine(){return this.parsedResult.engine?this.parsedResult.engine:this.parseEngine()}getEngineName(e){return e?String(this.getEngine().name).toLowerCase()||\"\":this.getEngine().name||\"\"}parseEngine(){this.parsedResult.engine={};const e=Z.find(ne,e=>{if(\"function\"==typeof e.test)return e.test(this);if(e.test instanceof Array)return e.test.some(e=>this.test(e));throw new Error(\"Browser's test function is not valid\")});return e&&(this.parsedResult.engine=e.describe(this.getUA())),this.parsedResult.engine}parse(){return this.parseBrowser(),this.parseOS(),this.parsePlatform(),this.parseEngine(),this}getResult(){return Z.assign({},this.parsedResult)}satisfies(e){const t={};let r=0;const n={};let i=0;if(Object.keys(e).forEach(a=>{const o=e[a];\"string\"==typeof o?(n[a]=o,i+=1):\"object\"==typeof o&&(t[a]=o,r+=1)}),r>0){const e=Object.keys(t),r=Z.find(e,e=>this.isOS(e));if(r){const e=this.satisfies(t[r]);if(void 0!==e)return e}const n=Z.find(e,e=>this.isPlatform(e));if(n){const e=this.satisfies(t[n]);if(void 0!==e)return e}}if(i>0){const e=Object.keys(n),t=Z.find(e,e=>this.isBrowser(e,!0));if(void 0!==t)return this.compareVersion(n[t])}}isBrowser(e,t=!1){const r=this.getBrowserName().toLowerCase();let n=e.toLowerCase();const i=Z.getBrowserTypeByAlias(n);return t&&i&&(n=i.toLowerCase()),n===r}compareVersion(e){let t=[0],r=e,n=!1;const i=this.getBrowserVersion();if(\"string\"==typeof i)return\">\"===e[0]||\"<\"===e[0]?(r=e.substr(1),\"=\"===e[1]?(n=!0,r=e.substr(2)):t=[],\">\"===e[0]?t.push(1):t.push(-1)):\"=\"===e[0]?r=e.substr(1):\"~\"===e[0]&&(n=!0,r=e.substr(1)),t.indexOf(Z.compareVersions(i,r,n))>-1}isOS(e){return this.getOSName(!0)===String(e).toLowerCase()}isPlatform(e){return this.getPlatformType(!0)===String(e).toLowerCase()}isEngine(e){return this.getEngineName(!0)===String(e).toLowerCase()}is(e){return this.isBrowser(e)||this.isOS(e)||this.isPlatform(e)}some(e=[]){return e.some(e=>this.is(e))}}var ae=\"new\",oe=\"loading\",se=\"joining-meeting\",ce=\"joined-meeting\",ue=\"left-meeting\",le=\"error\",de=\"blocked\",pe=\"off\",he=\"sendable\",fe=\"loading\",ve=\"interrupted\",me=\"playable\",ge=\"unknown\",ye=\"full\",be=\"lobby\",we=\"none\",ke=\"base\",_e=\"*\",Me=\"ejected\",Se=\"nbf-room\",Ce=\"nbf-token\",Te=\"exp-room\",je=\"exp-token\",Oe=\"cam-in-use\",Pe=\"mic-in-use\",xe=\"cam-mic-in-use\",Ae=\"iframe-ready-for-launch-config\",Ee=\"iframe-launch-config\",Fe=\"theme-updated\",Le=\"loading\",Ie=\"load-attempt-failed\",Be=\"loaded\",De=\"started-camera\",Ne=\"camera-error\",Re=\"joining-meeting\",Ve=\"joined-meeting\",Ue=\"left-meeting\",ze=\"available-devices-updated\",Je=\"participant-joined\",qe=\"participant-updated\",We=\"participant-left\",Ge=\"participant-counts-updated\",He=\"access-state-updated\",Ke=\"meeting-session-updated\",Qe=\"waiting-participant-added\",$e=\"waiting-participant-updated\",Ye=\"waiting-participant-removed\",Ze=\"track-started\",Xe=\"track-stopped\",et=\"transcription-started\",tt=\"transcription-stopped\",rt=\"transcription-error\",nt=\"recording-started\",it=\"recording-stopped\",at=\"recording-stats\",ot=\"recording-error\",st=\"recording-upload-completed\",ct=\"recording-data\",ut=\"app-message\",lt=\"input-event\",dt=\"remote-media-player-started\",pt=\"remote-media-player-updated\",ht=\"remote-media-player-stopped\",ft=\"local-screen-share-started\",vt=\"local-screen-share-stopped\",mt=\"active-speaker-change\",gt=\"active-speaker-mode-change\",yt=\"network-quality-change\",bt=\"network-connection\",wt=\"fullscreen\",kt=\"exited-fullscreen\",_t=\"live-streaming-started\",Mt=\"live-streaming-stopped\",St=\"live-streaming-error\",Ct=\"lang-updated\",Tt=\"receive-settings-updated\",jt=\"input-settings-updated\",Ot=\"nonfatal-error\",Pt=\"error\",xt=\"daily-custom-track\",At={NONE:\"none\",BGBLUR:\"background-blur\",BGIMAGE:\"background-image\"},Et={PLAY:\"play\",PAUSE:\"pause\"},Ft=\"playing\",Lt=\"paused\",It=10,Bt=[\"jpg\",\"png\",\"jpeg\"];function Dt(){return!Nt()&&\"undefined\"!=typeof window&&window.navigator&&window.navigator.userAgent?window.navigator.userAgent:\"\"}function Nt(){return\"undefined\"!=typeof navigator&&navigator.product&&\"ReactNative\"===navigator.product}function Rt(){return navigator&&navigator.mediaDevices&&navigator.mediaDevices.getUserMedia}function Vt(){return!!(navigator&&navigator.mediaDevices&&navigator.mediaDevices.getDisplayMedia)&&function(e,t){if(!e||!t)return!0;switch(e){case\"Chrome\":return t.major>=75;case\"Safari\":return RTCRtpTransceiver.prototype.hasOwnProperty(\"currentDirection\")&&!(13===t.major&&0===t.minor&&0===t.point);case\"Firefox\":return t.major>=67}return!0}(Gt(),function(){switch(Gt()){case\"Chrome\":return Ht();case\"Safari\":return Qt();case\"Firefox\":return $t();case\"Edge\":return function(){var e=0,t=0;if(\"undefined\"!=typeof window){var r=Dt(),n=r.match(/Edge\\/(\\d+).(\\d+)/);if(n)try{e=parseInt(n[1]),t=parseInt(n[2])}catch(e){}}return{major:e,minor:t}}()}}())}function Ut(){if(Nt())return!1;if(!document)return!1;var e=document.createElement(\"iframe\");return!!e.requestFullscreen||!!e.webkitRequestFullscreen}var zt=[\"Chrome\",\"Firefox\"];function Jt(){return!Nt()&&(!function(){var e=Dt();if(e.match(/Mobi/)||e.match(/Android/))return!0;if(Dt().match(/DailyAnd\\//))return!0}()&&zt.includes(Gt()))}function qt(){return!!Nt()||Wt()}function Wt(){return Rt()&&!function(){var e,t=Gt();if(!Dt())return!0;switch(t){case\"Chrome\":return(e=Ht()).major&&e.major>0&&e.major<61;case\"Firefox\":return(e=$t()).major<78;case\"Safari\":return(e=Qt()).major<12;default:return!0}}()}function Gt(){if(\"undefined\"!=typeof window){var e=Dt();return Kt()?\"Safari\":e.indexOf(\"Edge\")>-1?\"Edge\":e.match(/Chrome\\//)?\"Chrome\":e.indexOf(\"Safari\")>-1?\"Safari\":e.indexOf(\"Firefox\")>-1?\"Firefox\":e.indexOf(\"MSIE\")>-1||e.indexOf(\".NET\")>-1?\"IE\":\"Unknown Browser\"}}function Ht(){var e=0,t=0,r=0,n=0,i=!1;if(\"undefined\"!=typeof window){var a=Dt(),o=a.match(/Chrome\\/(\\d+).(\\d+).(\\d+).(\\d+)/);if(o)try{e=parseInt(o[1]),t=parseInt(o[2]),r=parseInt(o[3]),n=parseInt(o[4]),i=a.indexOf(\"OPR/\")>-1}catch(e){}}return{major:e,minor:t,build:r,patch:n,opera:i}}function Kt(){return!!Dt().match(/iPad|iPhone|iPod/i)&&Rt()}function Qt(){var e=0,t=0,r=0;if(\"undefined\"!=typeof window){var n=Dt().match(/Version\\/(\\d+).(\\d+)(.(\\d+))?/);if(n)try{e=parseInt(n[1]),t=parseInt(n[2]),r=parseInt(n[4])}catch(e){}else Kt()&&(e=14,t=0,r=3)}return{major:e,minor:t,point:r}}function $t(){var e=0,t=0;if(\"undefined\"!=typeof window){var r=Dt().match(/Firefox\\/(\\d+).(\\d+)/);if(r)try{e=parseInt(r[1]),t=parseInt(r[2])}catch(e){}}return{major:e,minor:t}}function Yt(){return Date.now()+Math.random().toString()}function Zt(){throw new Error(\"Method must be implemented in subclass\")}function Xt(e){var t=e?new URL(e).origin:null;return!t||t.match(/https:\\/\\/[^.]+\\.daily\\.co/)?qt()?\"https://c.daily.co/static/call-machine-object-bundle.js\":\"https://c.daily.co/static/call-machine-object-nosfu-bundle.js\":(t||(console.warn(\"No baseUrl provided for call object bundle. Defaulting to production CDN...\"),t=\"https://c.daily.co\"),qt()?\"\".concat(t,\"/static/call-machine-object-bundle.js\"):\"\".concat(t,\"/static/call-machine-object-nosfu-bundle.js\"))}function er(e){try{new URL(e)}catch(e){return!1}return!0}var tr=function(){function e(){v(this,e)}return y(e,[{key:\"addListenerForMessagesFromCallMachine\",value:function(e,t,r){Zt()}},{key:\"addListenerForMessagesFromDailyJs\",value:function(e,t,r){Zt()}},{key:\"sendMessageToCallMachine\",value:function(e,t,r,n){Zt()}},{key:\"sendMessageToDailyJs\",value:function(e,t,r){Zt()}},{key:\"removeListener\",value:function(e){Zt()}}]),e}();function rr(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),r.push.apply(r,n)}return r}function nr(e){for(var t=1;t0),e._attemptsRemaining<=0||setTimeout(function(){e._currentAttempt.cancelled||(e._currentAttempt=new gr(e._meetingOrBaseUrl,e._callFrameId,e._successCallback,t),e._currentAttempt.start())},3e3))}),this._currentAttempt.start()}}},{key:\"cancel\",value:function(){this._currentAttempt&&this._currentAttempt.cancel()}},{key:\"cancelled\",get:function(){return this._currentAttempt&&this._currentAttempt.cancelled}},{key:\"succeeded\",get:function(){return this._currentAttempt&&this._currentAttempt.succeeded}}]),e}(),mr=function(e){w(r,e);var t=pr(r);function r(){return v(this,r),t.apply(this,arguments)}return r}(dr(Error)),gr=function(){function e(t,r,n,i){v(this,e),this.cancelled=!1,this.succeeded=!1,this._networkTimedOut=!1,this._networkTimeout=null,this._iosCache=\"undefined\"!=typeof iOSCallObjectBundleCache&&iOSCallObjectBundleCache,this._refetchHeaders=null,this._meetingOrBaseUrl=t,this._callFrameId=r,this._successCallback=n,this._failureCallback=i}return y(e,[{key:\"start\",value:function(){var e=f(p.mark(function e(){var t;return p.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:e.prev=0,t=Xt(this._meetingOrBaseUrl),e.next=8;break;case 4:return e.prev=4,e.t0=e.catch(0),this._failureCallback(\"Failed to get call object bundle URL \".concat(t,\": \").concat(e.t0)),e.abrupt(\"return\");case 8:return e.next=10,this._tryLoadFromIOSCache(t);case 10:!e.sent&&this._loadFromNetwork(t);case 12:case\"end\":return e.stop()}},e,this,[[0,4]])}));return function(){return e.apply(this,arguments)}}()},{key:\"cancel\",value:function(){clearTimeout(this._networkTimeout),this.cancelled=!0}},{key:\"_tryLoadFromIOSCache\",value:function(){var e=f(p.mark(function e(t){var r;return p.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:if(this._iosCache){e.next=2;break}return e.abrupt(\"return\",!1);case 2:return e.prev=2,e.next=5,this._iosCache.get(t);case 5:if(r=e.sent,!this.cancelled){e.next=8;break}return e.abrupt(\"return\",!0);case 8:if(r){e.next=10;break}return e.abrupt(\"return\",!1);case 10:if(r.code){e.next=13;break}return this._refetchHeaders=r.refetchHeaders,e.abrupt(\"return\",!1);case 13:return Function('\"use strict\";'+r.code)(),this.succeeded=!0,this._successCallback(),e.abrupt(\"return\",!0);case 19:return e.prev=19,e.t0=e.catch(2),e.abrupt(\"return\",!1);case 22:case\"end\":return e.stop()}},e,this,[[2,19]])}));return function(t){return e.apply(this,arguments)}}()},{key:\"_loadFromNetwork\",value:function(){var e=f(p.mark(function e(t){var r,n,i,a=this;return p.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return this._networkTimeout=setTimeout(function(){a._networkTimedOut=!0,a._failureCallback(\"Timed out (>\".concat(2e4,\" ms) when loading call object bundle \").concat(t))},2e4),e.prev=1,r=this._refetchHeaders?{headers:this._refetchHeaders}:{},e.next=5,fetch(t,r);case 5:if(n=e.sent,clearTimeout(this._networkTimeout),!this.cancelled&&!this._networkTimedOut){e.next=9;break}throw new mr;case 9:return e.next=11,this._getBundleCodeFromResponse(t,n);case 11:if(i=e.sent,!this.cancelled){e.next=14;break}throw new mr;case 14:Function('\"use strict\";'+i)(),this._iosCache&&this._iosCache.set(t,i,n.headers),this.succeeded=!0,this._successCallback(),e.next=26;break;case 20:if(e.prev=20,e.t0=e.catch(1),clearTimeout(this._networkTimeout),!(e.t0 instanceof mr||this.cancelled||this._networkTimedOut)){e.next=25;break}return e.abrupt(\"return\");case 25:this._failureCallback(\"Failed to load call object bundle \".concat(t,\": \").concat(e.t0));case 26:case\"end\":return e.stop()}},e,this,[[1,20]])}));return function(t){return e.apply(this,arguments)}}()},{key:\"_getBundleCodeFromResponse\",value:function(){var e=f(p.mark(function e(t,r){var n;return p.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:if(!r.ok){e.next=4;break}return e.next=3,r.text();case 3:return e.abrupt(\"return\",e.sent);case 4:if(!this._iosCache||304!==r.status){e.next=9;break}return e.next=7,this._iosCache.renew(t,r.headers);case 7:return n=e.sent,e.abrupt(\"return\",n.code);case 9:throw new Error(\"Received \".concat(r.status,\" response\"));case 10:case\"end\":return e.stop()}},e,this)}));return function(t,r){return e.apply(this,arguments)}}()}]),e}();var yr=function(e,t){for(var r=-1,n=null==e?0:e.length,i=0,a=[];++r-1&&e%1==0&&e-1&&e%1==0&&e<=Qr},Yr={};Yr[\"[object Float32Array]\"]=Yr[\"[object Float64Array]\"]=Yr[\"[object Int8Array]\"]=Yr[\"[object Int16Array]\"]=Yr[\"[object Int32Array]\"]=Yr[\"[object Uint8Array]\"]=Yr[\"[object Uint8ClampedArray]\"]=Yr[\"[object Uint16Array]\"]=Yr[\"[object Uint32Array]\"]=!0,Yr[\"[object Arguments]\"]=Yr[\"[object Array]\"]=Yr[\"[object ArrayBuffer]\"]=Yr[\"[object Boolean]\"]=Yr[\"[object DataView]\"]=Yr[\"[object Date]\"]=Yr[\"[object Error]\"]=Yr[\"[object Function]\"]=Yr[\"[object Map]\"]=Yr[\"[object Number]\"]=Yr[\"[object Object]\"]=Yr[\"[object RegExp]\"]=Yr[\"[object Set]\"]=Yr[\"[object String]\"]=Yr[\"[object WeakMap]\"]=!1;var Zr=function(e){return Br(e)&&$r(e.length)&&!!Yr[Ir(e)]};var Xr=function(e){return function(t){return e(t)}},en=d(function(e,t){var r=t&&!t.nodeType&&t,n=r&&e&&!e.nodeType&&e,i=n&&n.exports===r&&kr.process,a=function(){try{var e=n&&n.require&&n.require(\"util\").types;return e||i&&i.binding&&i.binding(\"util\")}catch(e){}}();e.exports=a}),tn=en&&en.isTypedArray,rn=tn?Xr(tn):Zr,nn=Object.prototype.hasOwnProperty;var an=function(e,t){var r=Jr(e),n=!r&&zr(e),i=!r&&!n&&Wr(e),a=!r&&!n&&!i&&rn(e),o=r||n||i||a,s=o?wr(e.length,String):[],c=s.length;for(var u in e)!t&&!nn.call(e,u)||o&&(\"length\"==u||i&&(\"offset\"==u||\"parent\"==u)||a&&(\"buffer\"==u||\"byteLength\"==u||\"byteOffset\"==u)||Kr(u,c))||s.push(u);return s},on=Object.prototype;var sn=function(e){var t=e&&e.constructor;return e===(\"function\"==typeof t&&t.prototype||on)};var cn=function(e,t){return function(r){return e(t(r))}}(Object.keys,Object),un=Object.prototype.hasOwnProperty;var ln=function(e){if(!sn(e))return cn(e);var t=[];for(var r in Object(e))un.call(e,r)&&\"constructor\"!=r&&t.push(r);return t};var dn=function(e){var t=typeof e;return null!=e&&(\"object\"==t||\"function\"==t)},pn=\"[object AsyncFunction]\",hn=\"[object Function]\",fn=\"[object GeneratorFunction]\",vn=\"[object Proxy]\";var mn=function(e){if(!dn(e))return!1;var t=Ir(e);return t==hn||t==fn||t==pn||t==vn};var gn=function(e){return null!=e&&$r(e.length)&&!mn(e)};var yn=function(e){return gn(e)?an(e):ln(e)};var bn=function(e,t){return function(r,n){if(null==r)return r;if(!gn(r))return e(r,n);for(var i=r.length,a=t?i:-1,o=Object(r);(t?a--:++a-1};var On=function(e,t){var r=this.__data__,n=Mn(r,e);return n<0?(++this.size,r.push([e,t])):r[n][1]=t,this};function Pn(e){var t=-1,r=null==e?0:e.length;for(this.clear();++ts))return!1;var u=a.get(e);if(u&&a.get(t))return u==t;var l=-1,d=!0,p=r&xi?new Ti:void 0;for(a.set(e,t),a.set(t,e);++lt||a&&o&&c&&!s&&!u||n&&o&&c||!r&&c||!i)return 1;if(!n&&!a&&!u&&e=s?c:c*(\"desc\"==r[n]?-1:1)}return e.index-t.index};var yo=function(e,t,r){var n=-1;t=qa(t.length?t:[so],Xr(po));var i=fo(e,function(e,r,i){return{criteria:qa(t,function(t){return t(e)}),index:++n,value:e}});return vo(i,function(e,t){return go(e,t,r)})};var bo=function(e,t,r,n){return null==e?[]:(Jr(t)||(t=null==t?[]:[t]),Jr(r=n?void 0:r)||(r=null==r?[]:[r]),yo(e,t,r))},wo=function(e,t,r){return!0===Mo(e.local,t,r)},ko=function(e,t,r){return e.local.streams&&e.local.streams[t]&&e.local.streams[t].stream&&e.local.streams[t].stream[\"get\".concat(\"video\"===r?\"Video\":\"Audio\",\"Tracks\")]()[0]},_o=function(e,t,r,n){var i=So(e,t,r,n);return i&&i.pendingTrack},Mo=function(e,t,r){if(!e)return!1;var n=function(e){switch(e){case\"avatar\":return!0;case\"staged\":return e;default:return!!e}},i=e.public.subscribedTracks;return i&&i[t]?-1===[\"cam-audio\",\"cam-video\",\"screen-video\",\"screen-audio\",\"rmpAudio\",\"rmpVideo\"].indexOf(r)&&i[t].custom?[!0,\"staged\"].includes(i[t].custom)?n(i[t].custom):n(i[t].custom[r]):n(i[t][r]):!i||n(i.ALL)},So=function(e,t,r,n){var i=bo(ho(e.streams,function(e){return e.participantId===t&&e.type===r&&e.pendingTrack&&e.pendingTrack.kind===n}),\"starttime\",\"desc\");return i&&i[0]},Co=function(e,t){var r=e.local.public.customTracks;if(r&&r[t])return r[t].track},To=function(e,t,r,n){var i=\"soup-\"+r,a=bo(ho(e.streams,function(e){return e.participantId===t&&e.streamId===i&&e.pendingTrack&&e.pendingTrack.kind===n}),\"starttime\",\"desc\");return a&&a[0]&&a[0].pendingTrack};function jo(e){for(var t=store.getState(),r=0,n=[\"cam\",\"screen\"];r49)return console.error(\"grid.maxTilesPerPage can't be larger than 49 without sacrificing browser performance. Please contact us at https://www.daily.co/contact to talk about your use case.\"),!1}if(\"minTilesPerPage\"in t){if(!Number.isInteger(t.minTilesPerPage))return console.error(\"grid.minTilesPerPage should be an integer. You passed \".concat(t.minTilesPerPage,\".\")),!1;if(t.minTilesPerPage<1)return console.error(\"grid.minTilesPerPage can't be lower than 1.\"),!1;if(\"maxTilesPerPage\"in t&&t.minTilesPerPage>t.maxTilesPerPage)return console.error(\"grid.minTilesPerPage can't be higher than grid.maxTilesPerPage.\"),!1}}return!0},help:\"unsupported layoutConfig. Check error logs for detailed info.\"},receiveSettings:{validate:function(e){return Ho(e,{allowAllParticipantsKey:!1})},help:$o({allowAllParticipantsKey:!1})},inputSettings:{validate:function(e){return Ko(e)},help:Qo()},layout:{validate:function(e){return\"custom-v1\"===e||\"browser\"===e||\"none\"===e},help:'layout may only be set to \"custom-v1\"',queryString:\"layout\"},emb:{queryString:\"emb\"},embHref:{queryString:\"embHref\"},dailyJsVersion:{queryString:\"dailyJsVersion\"}},Jo={styles:{validate:function(e){for(var t in e)if(\"cam\"!==t&&\"screen\"!==t)return!1;if(e.cam)for(var t in e.cam)if(\"div\"!==t&&\"video\"!==t)return!1;if(e.screen)for(var t in e.screen)if(\"div\"!==t&&\"video\"!==t)return!1;return!0},help:\"styles format should be a subset of: { cam: {div: {}, video: {}}, screen: {div: {}, video: {}} }\"},setSubscribedTracks:{validate:function(e,t,r){if(t._preloadCache.subscribeToTracksAutomatically)return!1;var n=[!0,!1,\"staged\"];if(n.includes(e)||!Nt()&&\"avatar\"===e)return!0;var i=[\"audio\",\"video\",\"screenAudio\",\"screenVideo\",\"rmpAudio\",\"rmpVideo\"];return function e(t){var r=arguments.length>1&&void 0!==arguments[1]&&arguments[1];for(var a in t)if(\"custom\"===a){if(!n.includes(t[a])&&!e(t[a],!0))return!1}else{var o=!r&&!i.includes(a),s=!n.includes(t[a]);if(o||s)return!1}return!0}(e)},help:\"setSubscribedTracks cannot be used when setSubscribeToTracksAutomatically is enabled, and should be of the form: \"+\"true\".concat(Nt()?\"\":\" | 'avatar'\",\" | false | 'staged' | { [audio: true|false|'staged'], [video: true|false|'staged'], [screenAudio: true|false|'staged'], [screenVideo: true|false|'staged'] }\")},setAudio:!0,setVideo:!0,eject:!0};function qo(e){var t={};for(var r in e)e[r]instanceof MediaStreamTrack?t[r]=xt:\"dailyConfig\"===r?(e[r].modifyLocalSdpHook&&(window._dailyConfig&&(window._dailyConfig.modifyLocalSdpHook=e[r].modifyLocalSdpHook),delete e[r].modifyLocalSdpHook),e[r].modifyRemoteSdpHook&&(window._dailyConfig&&(window._dailyConfig.modifyRemoteSdpHook=e[r].modifyRemoteSdpHook),delete e[r].modifyRemoteSdpHook),t[r]=e[r]):t[r]=e[r];return t}function Wo(){if(Nt())throw new Error(\"This daily-js method is not currently supported in React Native\")}function Go(){if(!Nt())throw new Error(\"This daily-js method is only supported in React Native\")}function Ho(e,t){for(var r=t.allowAllParticipantsKey,n=function(e){var t=[\"local\"];return r||t.push(\"*\"),e&&!t.includes(e)},i=function(e){return!!(void 0===e.layer||Number.isInteger(e.layer)&&e.layer>=0||\"inherit\"===e.layer)},a=function(e){return!!e&&(!(e.video&&!i(e.video))&&!(e.screenVideo&&!i(e.screenVideo)))},o=0,c=Object.entries(e);o video -> processor -> config\";switch(e){case At.BGBLUR:return r.length>1||\"strength\"!==r[0]?(console.error(n),!1):!(\"number\"!=typeof t.strength||t.strength<=0||t.strength>1||isNaN(t.strength))||(console.error(\"\".concat(n,\"; expected: {0 < strength <= 1}, got: \").concat(t.strength)),!1);case At.BGIMAGE:return!(void 0!==t.source&&!function(e){if(\"default\"===e.source)return e.type=\"default\",!0;if(er(e.source))return e.type=\"url\",!!function(e){var t=new URL(e),r=t.pathname;if(\"data:\"===t.protocol)try{var n=r.substring(r.indexOf(\":\")+1,r.indexOf(\";\")),i=n.split(\"/\")[1];return Bt.includes(i)}catch(e){return console.error(\"failed to deduce blob content type\",e),!1}var a=r.split(\".\").at(-1).toLowerCase().trim();return Bt.includes(a)}(e.source)||(console.error(\"invalid image type; supported types: [\".concat(Bt.join(\", \"),\"]\")),!1);return t=e.source,r=Number(t),isNaN(r)||!Number.isInteger(r)||r<=0||r>It?(console.error(\"invalid image selection; must be an int, > 0, <= \".concat(It)),!1):(e.type=\"daily-preselect\",!0);var t,r}(t));default:return!0}}(e.type,e.config))return!1}return Object.keys(e).filter(function(e){return!t.includes(e)}).forEach(function(t){console.warn(\"invalid key inputSettings -> video -> processor : \".concat(t)),delete e[t]}),!0}(e.video.processor))}function Qo(){var e=Object.values(At).join(\" | \");return\"inputSettings must be of the form: { video: { processor: [ \".concat(e,\" ] }, config?: {} }\")}function $o(e){var t=e.allowAllParticipantsKey;return\"receiveSettings must be of the form { [ | \".concat(ke).concat(t?' | \"'.concat(_e,'\"'):\"\",\"]: \")+'{ [video: [{ layer: [ | \"inherit\"] } | \"inherit\"]], [screenVideo: [{ layer: [ | \"inherit\"] } | \"inherit\"]] }}}'}function Yo(e){if(e&&\"object\"!==k(e)||Array.isArray(e))return console.error(\"customTrayButtons should be an Object of the type \".concat(JSON.stringify(Uo),\".\")),!1;if(e)for(var t=0,r=Object.entries(e);tr)}function ts(e){for(var t in e)if(!Ro.includes(t))throw new Error(\"Invalid key \".concat(t,\", valid keys are: \").concat(Ro));if(e.simulcastEncodings){if(!(e.simulcastEncodings instanceof Array))throw new Error('simulcastEncodings must be \"Array\"');if(!es(e.simulcastEncodings.length,0,Bo))throw new Error('\"simulcastEncodings\" not in range. valid range 1 to 3 layers');e.simulcastEncodings.every(function(e){for(var t in e){if(!No.hasOwnProperty(t))throw new Error(\"Invalid key \".concat(t,\", valid keys are:\")+Object.keys(No));if(\"number\"!=typeof e[t])throw new Error(\"simulcastEncodings[].\".concat(t,' must be \"number\"'));var r=No[t],n=r.min,i=r.max;if(!es(e[t],n,i))throw new Error(\"simulcastEncodings[].\".concat(t,\" value not in range. valid range: \").concat(n,\" to \").concat(i))}if(!e.hasOwnProperty(\"maxBitrate\"))throw new Error(\"simulcastEncodings[].maxBitrate is not specified\")})}}export default(function(t){w(n,e);var r=Fo(n);function n(e){var t,i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(v(this,n),t=r.call(this),S(m(t),\"startListeningForDeviceChanges\",function(){void 0!==navigator.mediaDevices.ondevicechange||Nt()?navigator.mediaDevices.addEventListener(\"devicechange\",t.deviceChangeListener):t.startPollingForDeviceChanges()}),S(m(t),\"stopListeningForDeviceChanges\",function(){void 0!==navigator.mediaDevices.ondevicechange||Nt()?navigator.mediaDevices.removeEventListener(\"devicechange\",t.deviceChangeListener):t.stopPollingForDeviceChanges()}),S(m(t),\"deviceChangeListener\",f(p.mark(function e(){var r;return p.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,t.enumerateDevices();case 2:r=e.sent,t.handleDeviceChange(r.devices);case 4:case\"end\":return e.stop()}},e)}))),S(m(t),\"handleDeviceChange\",function(e){t.emit(ze,{action:ze,availableDevices:e})}),S(m(t),\"startPollingForDeviceChanges\",function(){t._deviceChangeInterval||(t._deviceChangeInterval=setInterval(f(p.mark(function e(){var r,n;return p.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,t.enumerateDevices();case 2:r=e.sent,n=JSON.stringify(r),t._lastDevicesJSON&&n!==t._lastDevicesJSON&&t.handleDeviceChange(r.devices),t._lastDevicesJSON=n;case 6:case\"end\":return e.stop()}},e)})),3e3))}),S(m(t),\"stopPollingForDeviceChanges\",function(){t._deviceChangeInterval&&(clearInterval(t._deviceChangeInterval),t._deviceChangeInterval=null,t._lastDevicesJSON=null)}),S(m(t),\"handleNativeAppActiveStateChange\",function(e){t.disableReactNativeAutoDeviceManagement(\"video\")||(e?t.camUnmutedBeforeLosingNativeActiveState&&t.setLocalVideo(!0):(t.camUnmutedBeforeLosingNativeActiveState=t.localVideo(),t.camUnmutedBeforeLosingNativeActiveState&&t.setLocalVideo(!1)))}),S(m(t),\"handleNativeAudioFocusChange\",function(e){t.disableReactNativeAutoDeviceManagement(\"audio\")||(t._hasNativeAudioFocus=e,t.toggleParticipantAudioBasedOnNativeAudioFocus(),t._hasNativeAudioFocus?t.micUnmutedBeforeLosingNativeAudioFocus&&t.setLocalAudio(!0):(t.micUnmutedBeforeLosingNativeAudioFocus=t.localAudio(),t.setLocalAudio(!1)))}),i.dailyJsVersion=n.version(),t._iframe=e,t._callObjectMode=\"none\"===i.layout&&!t._iframe,t._preloadCache={subscribeToTracksAutomatically:!0,audioDeviceId:null,videoDeviceId:null,outputDeviceId:null},t._callObjectMode&&(window._dailyPreloadCache=t._preloadCache),void 0!==i.showLocalVideo?t._callObjectMode?console.error(\"showLocalVideo is not available in call object mode\"):t._showLocalVideo=!!i.showLocalVideo:t._showLocalVideo=!0,void 0!==i.showParticipantsBar?t._callObjectMode?console.error(\"showParticipantsBar is not available in call object mode\"):t._showParticipantsBar=!!i.showParticipantsBar:t._showParticipantsBar=!0,void 0!==i.customTrayButtons?t._callObjectMode?console.error(\"customTrayButtons is not available in call object mode\"):t._customTrayButtons=i.customTrayButtons:t._customTrayButtons={},void 0!==i.activeSpeakerMode?t._callObjectMode?console.error(\"activeSpeakerMode is not available in call object mode\"):t._activeSpeakerMode=!!i.activeSpeakerMode:t._activeSpeakerMode=!1,i.receiveSettings?t._callObjectMode?t._receiveSettings=i.receiveSettings:console.error(\"receiveSettings is only available in call object mode\"):t._receiveSettings={},t._inputSettings={},i.inputSettings&&(t._inputSettings=i.inputSettings),t.validateProperties(i),t.properties=Eo({},i),t._callObjectLoader=t._callObjectMode?new hr:null,t._meetingState=ae,t._isPreparingToJoin=!1,t._accessState={access:ge},t._nativeInCallAudioMode=Lo,t._participants={},t._participantCounts=Do,t._rmpPlayerState={},t._waitingParticipants={},t._inputEventsOn={},t._network={threshold:\"good\",quality:100},t._activeSpeaker={},t._callFrameId=Yt(),t._messageChannel=Nt()?new sr:new ar,t._iframe&&(t._iframe.requestFullscreen?t._iframe.addEventListener(\"fullscreenchange\",function(e){document.fullscreenElement===t._iframe?(t.emit(wt,{action:wt}),t.sendMessageToCallMachine({action:wt})):(t.emit(kt,{action:kt}),t.sendMessageToCallMachine({action:kt}))}):t._iframe.webkitRequestFullscreen&&t._iframe.addEventListener(\"webkitfullscreenchange\",function(e){document.webkitFullscreenElement===t._iframe?(t.emit(wt,{action:wt}),t.sendMessageToCallMachine({action:wt})):(t.emit(kt,{action:kt}),t.sendMessageToCallMachine({action:kt}))})),Nt()){var a=t.nativeUtils();a.addAudioFocusChangeListener&&a.removeAudioFocusChangeListener&&a.addAppActiveStateChangeListener&&a.removeAppActiveStateChangeListener||console.warn(\"expected (add|remove)(AudioFocus|AppActiveState)ChangeListener to be available in React Native\"),t._hasNativeAudioFocus=!0,a.addAudioFocusChangeListener(t.handleNativeAudioFocusChange),a.addAppActiveStateChangeListener(t.handleNativeAppActiveStateChange)}return t._callObjectMode&&t.startListeningForDeviceChanges(),t._messageChannel.addListenerForMessagesFromCallMachine(t.handleMessageFromCallMachine,t._callFrameId,m(t)),t}return y(n,null,[{key:\"supportedBrowser\",value:function(){if(Nt())return{supported:!0,mobile:!0,name:\"React Native\",version:null,supportsScreenShare:!1,supportsSfu:!0,supportsVideoProcessing:!1};var e=class{static getParser(e,t=!1){if(\"string\"!=typeof e)throw new Error(\"UserAgent should be a string\");return new ie(e,t)}static parse(e){return new ie(e).getResult()}static get BROWSER_MAP(){return K}static get ENGINE_MAP(){return Y}static get OS_MAP(){return $}static get PLATFORMS_MAP(){return Q}}.getParser(Dt());return{supported:!!Wt(),mobile:\"mobile\"===e.getPlatformType(),name:e.getBrowserName(),version:e.getBrowserVersion(),supportsFullscreen:!!Ut(),supportsScreenShare:!!Vt(),supportsSfu:!!qt(),supportsVideoProcessing:Jt()}}},{key:\"version\",value:function(){return\"0.26.0\"}},{key:\"createCallObject\",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return e.layout=\"none\",new n(null,e)}},{key:\"wrap\",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(Wo(),!e||!e.contentWindow||\"string\"!=typeof e.src)throw new Error(\"DailyIframe::Wrap needs an iframe-like first argument\");return t.layout||(t.customLayout?t.layout=\"custom-v1\":t.layout=\"browser\"),new n(e,t)}},{key:\"createFrame\",value:function(e,t){var r,i;Wo(),e&&t?(r=e,i=t):e&&e.append?(r=e,i={}):(r=document.body,i=e||{});var a=i.iframeStyle;a||(a=r===document.body?{position:\"fixed\",border:\"1px solid black\",backgroundColor:\"white\",width:\"375px\",height:\"450px\",right:\"1em\",bottom:\"1em\"}:{border:0,width:\"100%\",height:\"100%\"});var o=document.createElement(\"iframe\");window.navigator&&window.navigator.userAgent.match(/Chrome\\/61\\./)?o.allow=\"microphone, camera\":o.allow=\"microphone; camera; autoplay; display-capture\",o.style.visibility=\"hidden\",r.appendChild(o),o.style.visibility=null,Object.keys(a).forEach(function(e){return o.style[e]=a[e]}),i.layout||(i.customLayout?i.layout=\"custom-v1\":i.layout=\"browser\");try{return new n(o,i)}catch(e){throw r.removeChild(o),e}}},{key:\"createTransparentFrame\",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};Wo();var t=document.createElement(\"iframe\");return t.allow=\"microphone; camera; autoplay\",t.style.cssText=\"\\n position: fixed;\\n top: 0;\\n left: 0;\\n width: 100%;\\n height: 100%;\\n border: 0;\\n pointer-events: none;\\n \",document.body.appendChild(t),e.layout||(e.layout=\"custom-v1\"),n.wrap(t,e)}}]),y(n,[{key:\"destroy\",value:function(){var e=f(p.mark(function e(){var t,r,n;return p.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:if(e.prev=0,![ce,oe].includes(this._meetingState)){e.next=4;break}return e.next=4,this.leave();case 4:e.next=8;break;case 6:e.prev=6,e.t0=e.catch(0);case 8:(t=this._iframe)&&(r=t.parentElement)&&r.removeChild(t),this._messageChannel.removeListener(this.handleMessageFromCallMachine),Nt()&&((n=this.nativeUtils()).removeAudioFocusChangeListener(this.handleNativeAudioFocusChange),n.removeAppActiveStateChangeListener(this.handleNativeAppActiveStateChange)),this._callObjectMode&&this.stopListeningForDeviceChanges(),this.resetMeetingDependentVars();case 14:case\"end\":return e.stop()}},e,this,[[0,6]])}));return function(){return e.apply(this,arguments)}}()},{key:\"loadCss\",value:function(e){var t=e.bodyClass,r=e.cssFile,n=e.cssText;return Wo(),this.sendMessageToCallMachine({action:\"load-css\",cssFile:this.absoluteUrl(r),bodyClass:t,cssText:n}),this}},{key:\"iframe\",value:function(){return Wo(),this._iframe}},{key:\"meetingState\",value:function(){return this._meetingState}},{key:\"accessState\",value:function(){if(!this._callObjectMode)throw new Error(\"accessState() currently only supported in call object mode\");return this._accessState}},{key:\"participants\",value:function(){return this._participants}},{key:\"participantCounts\",value:function(){return this._participantCounts}},{key:\"waitingParticipants\",value:function(){if(!this._callObjectMode)throw new Error(\"waitingParticipants() currently only supported in call object mode\");return this._waitingParticipants}},{key:\"validateParticipantProperties\",value:function(e,t){for(var r in t){if(!Jo[r])throw new Error(\"unrecognized updateParticipant property \".concat(r));if(Jo[r].validate&&!Jo[r].validate(t[r],this,this._participants[e]))throw new Error(Jo[r].help)}}},{key:\"updateParticipant\",value:function(e,t){return this._participants.local&&this._participants.local.session_id===e&&(e=\"local\"),e&&t&&this._participants[e]&&(this.validateParticipantProperties(e,t),this.sendMessageToCallMachine({action:\"update-participant\",id:e,properties:t})),this}},{key:\"updateParticipants\",value:function(e){var t=this._participants.local&&this._participants.local.session_id;for(var r in e)r===t&&(r=\"local\"),r&&e[r]&&(this._participants[r]||\"*\"===r)?this.validateParticipantProperties(r,e[r]):(console.warn(\"unrecognized participant in updateParticipants: \".concat(r)),delete e[r]);return this.sendMessageToCallMachine({action:\"update-participants\",participants:e}),this}},{key:\"updateWaitingParticipant\",value:function(){var e=f(p.mark(function e(){var t,r,n=this,i=arguments;return p.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:if(t=i.length>0&&void 0!==i[0]?i[0]:\"\",r=i.length>1&&void 0!==i[1]?i[1]:{},this._callObjectMode){e.next=4;break}throw new Error(\"updateWaitingParticipant() currently only supported in call object mode\");case 4:if(this._meetingState===ce){e.next=6;break}throw new Error(\"updateWaitingParticipant() only supported for joined meetings\");case 6:if(\"string\"==typeof t&&\"object\"===k(r)){e.next=8;break}throw new Error(\"updateWaitingParticipant() must take an id string and a updates object\");case 8:return e.abrupt(\"return\",new Promise(function(e,i){n.sendMessageToCallMachine({action:\"daily-method-update-waiting-participant\",id:t,updates:r},function(t){t.error&&i(t.error),t.id||i(new Error(\"unknown error in updateWaitingParticipant()\")),e({id:t.id})})}));case 9:case\"end\":return e.stop()}},e,this)}));return function(){return e.apply(this,arguments)}}()},{key:\"updateWaitingParticipants\",value:function(){var e=f(p.mark(function e(){var t,r=this,n=arguments;return p.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:if(t=n.length>0&&void 0!==n[0]?n[0]:{},this._callObjectMode){e.next=3;break}throw new Error(\"updateWaitingParticipants() currently only supported in call object mode\");case 3:if(this._meetingState===ce){e.next=5;break}throw new Error(\"updateWaitingParticipants() only supported for joined meetings\");case 5:if(\"object\"===k(t)){e.next=7;break}throw new Error(\"updateWaitingParticipants() must take a mapping between ids and update objects\");case 7:return e.abrupt(\"return\",new Promise(function(e,n){r.sendMessageToCallMachine({action:\"daily-method-update-waiting-participants\",updatesById:t},function(t){t.error&&n(t.error),t.ids||n(new Error(\"unknown error in updateWaitingParticipants()\")),e({ids:t.ids})})}));case 8:case\"end\":return e.stop()}},e,this)}));return function(){return e.apply(this,arguments)}}()},{key:\"requestAccess\",value:function(){var e=f(p.mark(function e(){var t,r,n,i,a,o=this,s=arguments;return p.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:if(t=s.length>0&&void 0!==s[0]?s[0]:{},r=t.access,n=void 0===r?{level:\"full\"}:r,i=t.name,a=void 0===i?\"\":i,this._callObjectMode){e.next=3;break}throw new Error(\"requestAccess() currently only supported in call object mode\");case 3:if(this._meetingState===ce){e.next=5;break}throw new Error(\"requestAccess() only supported for joined meetings\");case 5:return e.abrupt(\"return\",new Promise(function(e,t){o.sendMessageToCallMachine({action:\"daily-method-request-access\",access:n,name:a},function(r){r.error&&t(r.error),r.access||t(new Error(\"unknown error in requestAccess()\")),e({access:r.access,granted:r.granted})})}));case 6:case\"end\":return e.stop()}},e,this)}));return function(){return e.apply(this,arguments)}}()},{key:\"localAudio\",value:function(){return this._participants.local?this._participants.local.audio:null}},{key:\"localVideo\",value:function(){return this._participants.local?this._participants.local.video:null}},{key:\"setLocalAudio\",value:function(e){return this.sendMessageToCallMachine({action:\"local-audio\",state:e}),this}},{key:\"setLocalVideo\",value:function(e){return this.sendMessageToCallMachine({action:\"local-video\",state:e}),this}},{key:\"getReceiveSettings\",value:function(){var e=f(p.mark(function e(t){var r,n,i,a=this,o=arguments;return p.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:if(r=o.length>1&&void 0!==o[1]?o[1]:{},n=r.showInheritedValues,i=void 0!==n&&n,this._callObjectMode){e.next=3;break}throw new Error(\"getReceiveSettings() only supported in call object mode\");case 3:e.t0=k(t),e.next=\"string\"===e.t0?6:\"undefined\"===e.t0?7:8;break;case 6:return e.abrupt(\"return\",new Promise(function(e){a.sendMessageToCallMachine({action:\"get-single-participant-receive-settings\",id:t,showInheritedValues:i},function(t){e(t.receiveSettings)})}));case 7:return e.abrupt(\"return\",this._receiveSettings);case 8:throw new Error('first argument to getReceiveSettings() must be a participant id (or \"base\"), or there should be no arguments');case 9:case\"end\":return e.stop()}},e,this)}));return function(t){return e.apply(this,arguments)}}()},{key:\"updateReceiveSettings\",value:function(){var e=f(p.mark(function e(t){var r=this;return p.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:if(this._callObjectMode){e.next=2;break}throw new Error(\"updateReceiveSettings() only supported in call object mode\");case 2:if(Ho(t,{allowAllParticipantsKey:!0})){e.next=4;break}throw new Error($o({allowAllParticipantsKey:!0}));case 4:if(this._meetingState===ce){e.next=6;break}throw new Error(\"updateReceiveSettings() is only allowed when joined. To specify receive settings earlier, use the receiveSettings config property.\");case 6:return e.abrupt(\"return\",new Promise(function(e){r.sendMessageToCallMachine({action:\"update-receive-settings\",receiveSettings:t},function(t){e({receiveSettings:t.receiveSettings})})}));case 7:case\"end\":return e.stop()}},e,this)}));return function(t){return e.apply(this,arguments)}}()},{key:\"getInputSettings\",value:function(){var e=this;return new Promise(function(t){t(e._inputSettings)})}},{key:\"updateInputSettings\",value:function(){var e=f(p.mark(function e(t){var r=this;return p.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt(\"return\",new Promise(function(e,n){if(!Ko(t))return console.error(Qo()),void n(Qo());r.sendMessageToCallMachine({action:\"update-input-settings\",inputSettings:t},function(t){t.error?n(t.error):e({inputSettings:t.inputSettings})})}));case 1:case\"end\":return e.stop()}},e)}));return function(t){return e.apply(this,arguments)}}()},{key:\"setBandwidth\",value:function(e){var t=e.kbs,r=e.trackConstraints;return Wo(),this.sendMessageToCallMachine({action:\"set-bandwidth\",kbs:t,trackConstraints:r}),this}},{key:\"getDailyLang\",value:function(){var e=this;return Wo(),new Promise(function(){var t=f(p.mark(function t(r){var n;return p.wrap(function(t){for(;;)switch(t.prev=t.next){case 0:n=function(e){delete e.action,delete e.callbackStamp,r(e)},e.sendMessageToCallMachine({action:\"get-daily-lang\"},n);case 2:case\"end\":return t.stop()}},t)}));return function(e){return t.apply(this,arguments)}}())}},{key:\"setDailyLang\",value:function(e){return Wo(),this.sendMessageToCallMachine({action:\"set-daily-lang\",lang:e}),this}},{key:\"getMeetingSession\",value:function(){var e=f(p.mark(function e(){var t=this;return p.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:if(this._meetingState===ce){e.next=2;break}throw new Error(\"getMeetingSession() is only allowed when joined\");case 2:return e.abrupt(\"return\",new Promise(function(){var e=f(p.mark(function e(r){var n;return p.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:n=function(e){delete e.action,delete e.callbackStamp,delete e.callFrameId,r(e)},t.sendMessageToCallMachine({action:\"get-meeting-session\"},n);case 2:case\"end\":return e.stop()}},e)}));return function(t){return e.apply(this,arguments)}}()));case 3:case\"end\":return e.stop()}},e,this)}));return function(){return e.apply(this,arguments)}}()},{key:\"setUserName\",value:function(e,t){var r=this;return this.properties.userName=e,new Promise(function(){var n=f(p.mark(function n(i){var a;return p.wrap(function(n){for(;;)switch(n.prev=n.next){case 0:a=function(e){delete e.action,delete e.callbackStamp,i(e)},r.sendMessageToCallMachine({action:\"set-user-name\",name:null!=e?e:\"\",thisMeetingOnly:Nt()||!!t&&!!t.thisMeetingOnly},a);case 2:case\"end\":return n.stop()}},n)}));return function(e){return n.apply(this,arguments)}}())}},{key:\"startCamera\",value:function(){var e=this,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};if(!this._callObjectMode)throw new Error(\"startCamera() currently only supported in call object mode\");if([se,ce].includes(this._meetingState))throw new Error(\"startCamera() not supported after joining a meeting: did you mean to use setLocalAudio() and/or setLocalVideo() instead?\");return new Promise(function(){var r=f(p.mark(function r(n,i){var a;return p.wrap(function(r){for(;;)switch(r.prev=r.next){case 0:if(a=function(e){delete e.action,delete e.callbackStamp,n(e)},!e.needsLoad()){r.next=12;break}return r.prev=2,r.next=5,e.load(t);case 5:r.next=10;break;case 7:r.prev=7,r.t0=r.catch(2),i(r.t0);case 10:r.next=13;break;case 12:e.validateProperties(t);case 13:e.sendMessageToCallMachine({action:\"start-camera\",properties:qo(e.properties),preloadCache:qo(e._preloadCache)},a);case 14:case\"end\":return r.stop()}},r,null,[[2,7]])}));return function(e,t){return r.apply(this,arguments)}}())}},{key:\"setCamera\",value:function(e){var t=this;if(Go(),this.needsLoad())throw new Error(\"Before you can invoke setCamera, first you need to invoke one of these methods: join, startCamera, or preAuth\");return new Promise(function(r,n){t.sendMessageToCallMachine({action:\"set-camera\",cameraDeviceId:e},function(e){r({device:e.device})})})}},{key:\"setAudioDevice\",value:function(){var e=f(p.mark(function e(t){var r;return p.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return Go(),this.nativeUtils().setAudioDevice(t),e.next=4,this.nativeUtils().getAudioDevice();case 4:return r=e.sent,e.abrupt(\"return\",{deviceId:r});case 6:case\"end\":return e.stop()}},e,this)}));return function(t){return e.apply(this,arguments)}}()},{key:\"cycleCamera\",value:function(){var e=this;return new Promise(function(t,r){e.sendMessageToCallMachine({action:\"cycle-camera\"},function(e){t({device:e.device})})})}},{key:\"cycleMic\",value:function(){var e=this;return Wo(),new Promise(function(t,r){e.sendMessageToCallMachine({action:\"cycle-mic\"},function(e){t({device:e.device})})})}},{key:\"getCameraFacingMode\",value:function(){var e=this;return Go(),new Promise(function(t,r){e.sendMessageToCallMachine({action:\"get-camera-facing-mode\"},function(e){t(e.facingMode)})})}},{key:\"setInputDevices\",value:function(e){var t=e.audioDeviceId,r=e.videoDeviceId,n=e.audioSource,i=e.videoSource;return console.warn(\"setInputDevices() is deprecated: instead use setInputDevicesAsync(), which returns a Promise\"),this.setInputDevicesAsync({audioDeviceId:t,videoDeviceId:r,audioSource:n,videoSource:i}),this}},{key:\"setInputDevicesAsync\",value:function(){var e=f(p.mark(function e(t){var r,n,i,a,o=this;return p.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:if(r=t.audioDeviceId,n=t.videoDeviceId,i=t.audioSource,a=t.videoSource,Wo(),void 0!==i&&(r=i),void 0!==a&&(n=a),r&&(this._preloadCache.audioDeviceId=r),n&&(this._preloadCache.videoDeviceId=n),!this._callObjectMode||!this.needsLoad()){e.next=8;break}return e.abrupt(\"return\",{camera:{deviceId:this._preloadCache.videoDeviceId},mic:{deviceId:this._preloadCache.audioDeviceId},speaker:{deviceId:this._preloadCache.outputDeviceId}});case 8:return r instanceof MediaStreamTrack&&(r=xt),n instanceof MediaStreamTrack&&(n=xt),e.abrupt(\"return\",new Promise(function(e){o.sendMessageToCallMachine({action:\"set-input-devices\",audioDeviceId:r,videoDeviceId:n},function(t){delete t.action,delete t.callbackStamp,t.returnPreloadCache?e({camera:{deviceId:o._preloadCache.videoDeviceId},mic:{deviceId:o._preloadCache.audioDeviceId},speaker:{deviceId:o._preloadCache.outputDeviceId}}):e(t)})}));case 11:case\"end\":return e.stop()}},e,this)}));return function(t){return e.apply(this,arguments)}}()},{key:\"setOutputDevice\",value:function(e){var t=e.outputDeviceId;return Wo(),t&&(this._preloadCache.outputDeviceId=t),this._callObjectMode&&this._meetingState!==ce&&!this._didPreAuth?(console.warn(\"setOutputDevice() not supported before preAuth() or join()\"),this):(this.sendMessageToCallMachine({action:\"set-output-device\",outputDeviceId:t}),this)}},{key:\"getInputDevices\",value:function(){var e=f(p.mark(function e(){var t=this;return p.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:if(!this._callObjectMode||!this.needsLoad()){e.next=2;break}return e.abrupt(\"return\",{camera:{deviceId:this._preloadCache.videoDeviceId},mic:{deviceId:this._preloadCache.audioDeviceId},speaker:{deviceId:this._preloadCache.outputDeviceId}});case 2:return e.abrupt(\"return\",new Promise(function(e,r){t.sendMessageToCallMachine({action:\"get-input-devices\"},function(r){delete r.action,delete r.callbackStamp,r.returnPreloadCache?e({camera:{deviceId:t._preloadCache.videoDeviceId},mic:{deviceId:t._preloadCache.audioDeviceId},speaker:{deviceId:t._preloadCache.outputDeviceId}}):e(r)})}));case 3:case\"end\":return e.stop()}},e,this)}));return function(){return e.apply(this,arguments)}}()},{key:\"nativeInCallAudioMode\",value:function(){return Go(),this._nativeInCallAudioMode}},{key:\"setNativeInCallAudioMode\",value:function(e){if(Go(),[Lo,Io].includes(e)){if(e!==this._nativeInCallAudioMode)return this._nativeInCallAudioMode=e,!this.disableReactNativeAutoDeviceManagement(\"audio\")&&this.isMeetingPendingOrOngoing(this._meetingState,this._isPreparingToJoin)&&this.nativeUtils().setAudioMode(this._nativeInCallAudioMode),this}else console.error(\"invalid in-call audio mode specified: \",e)}},{key:\"preAuth\",value:function(){var e=f(p.mark(function e(){var t,r,n,i=this,a=arguments;return p.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:if(t=a.length>0&&void 0!==a[0]?a[0]:{},this._callObjectMode){e.next=3;break}throw new Error(\"preAuth() currently only supported in call object mode\");case 3:if(![se,ce].includes(this._meetingState)){e.next=5;break}throw new Error(\"preAuth() not supported after joining a meeting\");case 5:if(!this.needsLoad()){e.next=8;break}return e.next=8,this.load(t);case 8:if(t.url){e.next=10;break}throw new Error(\"preAuth() requires at least a url to be provided\");case 10:if(r=Xt(t.url),n=Xt(this.properties.url||this.properties.baseUrl),r===n){e.next=14;break}throw new Error(\"url in preAuth() has a different bundle url than the one loaded (\".concat(n,\" -> \").concat(r,\")\"));case 14:return this.validateProperties(t),this.properties=Eo(Eo({},this.properties),t),e.abrupt(\"return\",new Promise(function(e,t){i.sendMessageToCallMachine({action:\"daily-method-preauth\",properties:qo(i.properties)},function(r){return r.error?t(r.error):r.access?(i._didPreAuth=!0,void e({access:r.access})):t(new Error(\"unknown error in preAuth()\"))})}));case 17:case\"end\":return e.stop()}},e,this)}));return function(){return e.apply(this,arguments)}}()},{key:\"load\",value:function(){var e=f(p.mark(function e(t){var r=this;return p.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:if(this.needsLoad()){e.next=2;break}return e.abrupt(\"return\");case 2:if(t&&(this.validateProperties(t),this.properties=Eo(Eo({},this.properties),t)),this._callObjectMode||this.properties.url){e.next=5;break}throw new Error(\"can't load iframe meeting because url property isn't set\");case 5:this.updateMeetingState(oe);try{this.emit(\"loading\",{action:\"loading\"})}catch(e){console.log(\"could not emit 'loading'\",e)}if(!this._callObjectMode){e.next=11;break}return e.abrupt(\"return\",new Promise(function(e,t){r._callObjectLoader.cancel(),r._callObjectLoader.load(r.properties.url||r.properties.baseUrl,r._callFrameId,function(t){r.updateMeetingState(\"loaded\"),t&&r.emit(\"loaded\",{action:\"loaded\"}),e()},function(e,n){r.emit(\"load-attempt-failed\",{action:\"load-attempt-failed\",errorMsg:e}),n||(r.updateMeetingState(le),r.resetMeetingDependentVars(),r.emit(\"error\",{action:\"error\",errorMsg:e}),t(e))})}));case 11:return this._iframe.src=this.assembleMeetingUrl(),e.abrupt(\"return\",new Promise(function(e,t){r._loadedCallback=function(n){if(r._meetingState!==le){for(var i in r.updateMeetingState(\"loaded\"),(r.properties.cssFile||r.properties.cssText)&&r.loadCss(r.properties),r._inputEventsOn)r.sendMessageToCallMachine({action:\"register-input-handler\",on:i});e()}else t(n)}}));case 13:case\"end\":return e.stop()}},e,this)}));return function(t){return e.apply(this,arguments)}}()},{key:\"join\",value:function(){var e=f(p.mark(function e(){var t,r,n,i,a=this,o=arguments;return p.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:if(t=o.length>0&&void 0!==o[0]?o[0]:{},r=!1,!this.needsLoad()){e.next=15;break}return this.updateIsPreparingToJoin(!0),e.prev=4,e.next=7,this.load(t);case 7:e.next=13;break;case 9:return e.prev=9,e.t0=e.catch(4),this.updateIsPreparingToJoin(!1),e.abrupt(\"return\",Promise.reject(e.t0));case 13:e.next=42;break;case 15:if(r=!(!this.properties.cssFile&&!this.properties.cssText),!this._didPreAuth){e.next=25;break}if(!t.url||t.url===this.properties.url){e.next=21;break}return console.error(\"url in join() is different than the one used in preAuth()\"),this.updateIsPreparingToJoin(!1),e.abrupt(\"return\",Promise.reject());case 21:if(!t.token||t.token===this.properties.token){e.next=25;break}return console.error(\"token in join() is different than the one used in preAuth()\"),this.updateIsPreparingToJoin(!1),e.abrupt(\"return\",Promise.reject());case 25:if(!t.url){e.next=40;break}if(!this._callObjectMode){e.next=36;break}if(n=Xt(t.url),i=Xt(this.properties.url||this.properties.baseUrl),n===i){e.next=33;break}return console.error(\"url in join() has a different bundle url than the one loaded (\".concat(i,\" -> \").concat(n,\")\")),this.updateIsPreparingToJoin(!1),e.abrupt(\"return\",Promise.reject());case 33:this.properties.url=t.url,e.next=40;break;case 36:if(!t.url||t.url===this.properties.url){e.next=40;break}return console.error(\"url in join() is different than the one used in load() (\".concat(this.properties.url,\" -> \").concat(t.url,\")\")),this.updateIsPreparingToJoin(!1),e.abrupt(\"return\",Promise.reject());case 40:this.validateProperties(t),this.properties=Eo(Eo({},this.properties),t);case 42:if(void 0!==t.showLocalVideo&&(this._callObjectMode?console.error(\"showLocalVideo is not available in callObject mode\"):this._showLocalVideo=!!t.showLocalVideo),void 0!==t.showParticipantsBar&&(this._callObjectMode?console.error(\"showParticipantsBar is not available in callObject mode\"):this._showParticipantsBar=!!t.showParticipantsBar),this._meetingState!==ce&&this._meetingState!==se){e.next=48;break}return console.warn(\"already joined meeting, call leave() before joining again\"),this.updateIsPreparingToJoin(!1),e.abrupt(\"return\");case 48:this.updateMeetingState(se,!1);try{this.emit(\"joining-meeting\",{action:\"joining-meeting\"})}catch(e){console.log(\"could not emit 'joining-meeting'\",e)}return this.sendMessageToCallMachine({action:\"join-meeting\",properties:qo(this.properties),preloadCache:qo(this._preloadCache)}),e.abrupt(\"return\",new Promise(function(e,t){a._joinedCallback=function(n,i){if(a._meetingState!==le){if(a.updateMeetingState(ce),n)for(var o in n)a._callObjectMode&&(jo(n[o]),Oo(n[o]),xo(n[o],a._participants[o])),a._participants[o]=Eo({},n[o]),a.toggleParticipantAudioBasedOnNativeAudioFocus();r&&a.loadCss(a.properties),e(n)}else t(i)}}));case 52:case\"end\":return e.stop()}},e,this,[[4,9]])}));return function(){return e.apply(this,arguments)}}()},{key:\"leave\",value:function(){var e=f(p.mark(function e(){var t=this;return p.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt(\"return\",new Promise(function(e,r){if(t._callObjectLoader&&!t._callObjectLoader.loaded){t._callObjectLoader.cancel(),t.updateMeetingState(ue),t.resetMeetingDependentVars();try{t.emit(ue,{action:ue})}catch(e){console.log(\"could not emit 'left-meeting'\",e)}e()}else t._meetingState===ue||t._meetingState===le?e():(t._leftCallback=function(){t._meetingState!==le&&t.updateMeetingState(ue),t.resetMeetingDependentVars(),e()},t.sendMessageToCallMachine({action:\"leave-meeting\"}))}));case 1:case\"end\":return e.stop()}},e)}));return function(){return e.apply(this,arguments)}}()},{key:\"startScreenShare\",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};Wo(),e.mediaStream&&(this._preloadCache.screenMediaStream=e.mediaStream,e.mediaStream=xt),this.sendMessageToCallMachine({action:\"local-screen-start\",captureOptions:e})}},{key:\"stopScreenShare\",value:function(){Wo(),this.sendMessageToCallMachine({action:\"local-screen-stop\"})}},{key:\"startRecording\",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};this.sendMessageToCallMachine(Eo({action:\"local-recording-start\"},e))}},{key:\"updateRecording\",value:function(e){var t=e.layout,r=void 0===t?{preset:\"default\"}:t;this.sendMessageToCallMachine({action:\"daily-method-update-recording\",layout:r})}},{key:\"stopRecording\",value:function(){this.sendMessageToCallMachine({action:\"local-recording-stop\"})}},{key:\"startLiveStreaming\",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};this.sendMessageToCallMachine(Eo({action:\"daily-method-start-live-streaming\"},e))}},{key:\"updateLiveStreaming\",value:function(e){var t=e.layout,r=void 0===t?{preset:\"default\"}:t;this.sendMessageToCallMachine({action:\"daily-method-update-live-streaming\",layout:r})}},{key:\"stopLiveStreaming\",value:function(){this.sendMessageToCallMachine({action:\"daily-method-stop-live-streaming\"})}},{key:\"startRemoteMediaPlayer\",value:function(){var e=f(p.mark(function e(t){var r,n,i,a=this;return p.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:r=t.url,n=t.settings,i=void 0===n?{state:Et.PLAY}:n,e.prev=1,Zo(r),Xo(i),ts(i),e.next=12;break;case 7:throw e.prev=7,e.t0=e.catch(1),console.error(\"invalid argument Error: \".concat(e.t0)),console.error('startRemoteMediaPlayer arguments must be of the form: \\n { url: \"playback url\", \\n settings?: \\n {state: \"play\"|\"pause\", simulcastEncodings?: [{}] } }'),e.t0;case 12:return e.abrupt(\"return\",new Promise(function(){var e=f(p.mark(function e(t,n){var o;return p.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:o=function(e){e.error?n({error:e.error,errorMsg:e.errorMsg}):t({session_id:e.session_id,remoteMediaPlayerState:{state:e.state,settings:e.settings}})},a.sendMessageToCallMachine({action:\"daily-method-start-remote-media-player\",url:r,settings:i},o);case 2:case\"end\":return e.stop()}},e)}));return function(t,r){return e.apply(this,arguments)}}()));case 13:case\"end\":return e.stop()}},e,null,[[1,7]])}));return function(t){return e.apply(this,arguments)}}()},{key:\"stopRemoteMediaPlayer\",value:function(){var e=f(p.mark(function e(t){var r=this;return p.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:if(\"string\"==typeof t){e.next=2;break}throw new Error(\" remotePlayerID must be of type string\");case 2:return e.abrupt(\"return\",new Promise(function(){var e=f(p.mark(function e(n,i){var a;return p.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:a=function(e){e.error?i({error:e.error,errorMsg:e.errorMsg}):n()},r.sendMessageToCallMachine({action:\"daily-method-stop-remote-media-player\",session_id:t},a);case 2:case\"end\":return e.stop()}},e)}));return function(t,r){return e.apply(this,arguments)}}()));case 3:case\"end\":return e.stop()}},e)}));return function(t){return e.apply(this,arguments)}}()},{key:\"updateRemoteMediaPlayer\",value:function(){var e=f(p.mark(function e(t){var r,n,i=this;return p.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:r=t.session_id,n=t.settings,e.prev=1,Xo(n),e.next=10;break;case 5:throw e.prev=5,e.t0=e.catch(1),console.error(\"invalid argument Error: \".concat(e.t0)),console.error('updateRemoteMediaPlayer arguments must be of the form: \\n session_id: \"participant session\", \\n { settings?: {state: \"play\"|\"pause\"} }'),e.t0;case 10:return e.abrupt(\"return\",new Promise(function(){var e=f(p.mark(function e(t,a){var o;return p.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:o=function(e){e.error?a({error:e.error,errorMsg:e.errorMsg}):t({session_id:e.session_id,remoteMediaPlayerState:{state:e.state,settings:e.settings}})},i.sendMessageToCallMachine({action:\"daily-method-update-remote-media-player\",session_id:r,settings:n},o);case 2:case\"end\":return e.stop()}},e)}));return function(t,r){return e.apply(this,arguments)}}()));case 11:case\"end\":return e.stop()}},e,null,[[1,5]])}));return function(t){return e.apply(this,arguments)}}()},{key:\"startTranscription\",value:function(){this.sendMessageToCallMachine({action:\"daily-method-start-transcription\"})}},{key:\"stopTranscription\",value:function(){this.sendMessageToCallMachine({action:\"daily-method-stop-transcription\"})}},{key:\"getNetworkStats\",value:function(){var e=this;if(this._meetingState!==ce){return{stats:{latest:{}}}}return new Promise(function(t,r){e.sendMessageToCallMachine({action:\"get-calc-stats\"},function(r){t(Eo({stats:r.stats},e._network))})})}},{key:\"getActiveSpeaker\",value:function(){return Wo(),this._activeSpeaker}},{key:\"setActiveSpeakerMode\",value:function(e){return Wo(),this.sendMessageToCallMachine({action:\"set-active-speaker-mode\",enabled:e}),this}},{key:\"activeSpeakerMode\",value:function(){return Wo(),this._activeSpeakerMode}},{key:\"subscribeToTracksAutomatically\",value:function(){return this._preloadCache.subscribeToTracksAutomatically}},{key:\"setSubscribeToTracksAutomatically\",value:function(e){if(this._meetingState!==ce)throw new Error(\"setSubscribeToTracksAutomatically() is only allowed when joined\");return this._preloadCache.subscribeToTracksAutomatically=e,this.sendMessageToCallMachine({action:\"daily-method-subscribe-to-tracks-automatically\",enabled:e}),this}},{key:\"enumerateDevices\",value:function(){var e=f(p.mark(function e(){var t,r=this;return p.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:if(!this._callObjectMode){e.next=5;break}return e.next=3,navigator.mediaDevices.enumerateDevices();case 3:return t=e.sent,e.abrupt(\"return\",{devices:t.map(function(e){return JSON.parse(JSON.stringify(e))})});case 5:return e.abrupt(\"return\",new Promise(function(e,t){r.sendMessageToCallMachine({action:\"enumerate-devices\"},function(t){e({devices:t.devices})})}));case 6:case\"end\":return e.stop()}},e,this)}));return function(){return e.apply(this,arguments)}}()},{key:\"sendAppMessage\",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:\"*\";if(JSON.stringify(e).length>4096)throw new Error(\"Message data too large. Max size is 4096\");return this.sendMessageToCallMachine({action:\"app-msg\",data:e,to:t}),this}},{key:\"addFakeParticipant\",value:function(e){return Wo(),this.sendMessageToCallMachine(Eo({action:\"add-fake-participant\"},e)),this}},{key:\"setShowNamesMode\",value:function(e){return Wo(),e&&\"always\"!==e&&\"never\"!==e?(console.error('setShowNamesMode argument should be \"always\", \"never\", or false'),this):(this.sendMessageToCallMachine({action:\"set-show-names\",mode:e}),this)}},{key:\"setShowLocalVideo\",value:function(){var e=!(arguments.length>0&&void 0!==arguments[0])||arguments[0];return Wo(),\"boolean\"!=typeof e?(console.error(\"setShowLocalVideo only accepts a boolean value\"),this):this._callObjectMode?(console.error(\"setShowLocalVideo is not available in callObject mode\"),this):this._meetingState!==ce?(console.error(\"the meeting must be joined before calling setShowLocalVideo\"),this):(this.sendMessageToCallMachine({action:\"set-show-local-video\",show:e}),this._showLocalVideo=e,this)}},{key:\"showLocalVideo\",value:function(){return Wo(),this._callObjectMode?(console.error(\"showLocalVideo is not available in callObject mode\"),this):this._showLocalVideo}},{key:\"setShowParticipantsBar\",value:function(){var e=!(arguments.length>0&&void 0!==arguments[0])||arguments[0];return Wo(),\"boolean\"!=typeof e?(console.error(\"setShowParticipantsBar only accepts a boolean value\"),this):this._callObjectMode?(console.error(\"setShowParticipantsBar is not available in callObject mode\"),this):this._meetingState!==ce?(console.error(\"the meeting must be joined before calling setShowParticipantsBar\"),this):(this.sendMessageToCallMachine({action:\"set-show-participants-bar\",show:e}),this._showParticipantsBar=e,this)}},{key:\"showParticipantsBar\",value:function(){return Wo(),this._callObjectMode?(console.error(\"showParticipantsBar is not available in callObject mode\"),this):this._showParticipantsBar}},{key:\"customTrayButtons\",value:function(){return Wo(),this._callObjectMode?(console.error(\"customTrayButtons is not available in callObject mode\"),this):this._customTrayButtons}},{key:\"updateCustomTrayButtons\",value:function(e){return Wo(),this._callObjectMode?(console.error(\"updateCustomTrayButtons is not available in callObject mode\"),this):this._meetingState!==ce?(console.error(\"the meeting must be joined before calling updateCustomTrayButtons\"),this):Yo(e)?(this.sendMessageToCallMachine({action:\"update-custom-tray-buttons\",btns:e}),this._customTrayButtons=e,this):(console.error(\"updateCustomTrayButtons only accepts a dictionary of the type \".concat(JSON.stringify(Uo))),this)}},{key:\"theme\",value:function(){return this._callObjectMode?(console.error(\"theme is not available in callObject mode\"),this):this.properties.theme}},{key:\"setTheme\",value:function(e){var t=this;return new Promise(function(r,n){if(t._callObjectMode)n(\"setTheme is not available in callObject mode\");else try{t.validateProperties({theme:e}),t.properties.theme=Eo({},e),t.sendMessageToCallMachine({action:\"set-theme\",theme:t.properties.theme});try{t.emit(\"theme-updated\",{action:\"theme-updated\",theme:t.properties.theme})}catch(e){console.log(\"could not emit 'theme-updated'\",e)}r(t.properties.theme)}catch(e){n(e)}})}},{key:\"detectAllFaces\",value:function(){var e=this;return Wo(),new Promise(function(t,r){e.sendMessageToCallMachine({action:\"detect-all-faces\"},function(e){delete e.action,delete e.callbackStamp,t(e)})})}},{key:\"requestFullscreen\",value:function(){var e=f(p.mark(function e(){return p.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:if(Wo(),this._iframe&&!document.fullscreenElement&&Ut()){e.next=3;break}return e.abrupt(\"return\");case 3:return e.prev=3,e.next=6,this._iframe.requestFullscreen;case 6:if(!e.sent){e.next=10;break}this._iframe.requestFullscreen(),e.next=11;break;case 10:this._iframe.webkitRequestFullscreen();case 11:e.next=16;break;case 13:e.prev=13,e.t0=e.catch(3),console.log(\"could not make video call fullscreen\",e.t0);case 16:case\"end\":return e.stop()}},e,this,[[3,13]])}));return function(){return e.apply(this,arguments)}}()},{key:\"exitFullscreen\",value:function(){Wo(),document.fullscreenElement?document.exitFullscreen():document.webkitFullscreenElement&&document.webkitExitFullscreen()}},{key:\"room\",value:function(){var e=f(p.mark(function e(){var t,r,n,i=this,a=arguments;return p.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:if(t=a.length>0&&void 0!==a[0]?a[0]:{},r=t.includeRoomConfigDefaults,n=void 0===r||r,this._accessState.access===ge||this.needsLoad()){e.next=5;break}return e.abrupt(\"return\",new Promise(function(e,t){i.sendMessageToCallMachine({action:\"lib-room-info\",includeRoomConfigDefaults:n},function(t){delete t.action,delete t.callbackStamp,e(t)})}));case 5:if(!this.properties.url){e.next=7;break}return e.abrupt(\"return\",{roomUrlPendingJoin:this.properties.url});case 7:return e.abrupt(\"return\",null);case 8:case\"end\":return e.stop()}},e,this)}));return function(){return e.apply(this,arguments)}}()},{key:\"geo\",value:function(){var e=f(p.mark(function e(){return p.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt(\"return\",new Promise(function(){var e=f(p.mark(function e(t,r){var n,i;return p.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.prev=0,\"https://gs.daily.co/_ks_/x-swsl/:\",e.next=4,fetch(\"https://gs.daily.co/_ks_/x-swsl/:\");case 4:return n=e.sent,e.next=7,n.json();case 7:i=e.sent,t({current:i.geo}),e.next=15;break;case 11:e.prev=11,e.t0=e.catch(0),console.error(\"geo lookup failed\",e.t0),t({current:\"\"});case 15:case\"end\":return e.stop()}},e,null,[[0,11]])}));return function(t,r){return e.apply(this,arguments)}}()));case 1:case\"end\":return e.stop()}},e)}));return function(){return e.apply(this,arguments)}}()},{key:\"setNetworkTopology\",value:function(){var e=f(p.mark(function e(t){var r=this;return p.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return Wo(),e.abrupt(\"return\",new Promise(function(){var e=f(p.mark(function e(n,i){var a;return p.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:a=function(e){e.error?i({error:e.error}):n({workerId:e.workerId})},r.sendMessageToCallMachine({action:\"set-network-topology\",opts:t},a);case 2:case\"end\":return e.stop()}},e)}));return function(t,r){return e.apply(this,arguments)}}()));case 2:case\"end\":return e.stop()}},e)}));return function(t){return e.apply(this,arguments)}}()},{key:\"getNetworkTopology\",value:function(){var e=f(p.mark(function e(){var t=this;return p.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt(\"return\",new Promise(function(){var e=f(p.mark(function e(r,n){var i;return p.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:i=function(e){e.error?n({error:e.error}):r({topology:e.topology})},t.sendMessageToCallMachine({action:\"get-network-topology\"},i);case 2:case\"end\":return e.stop()}},e)}));return function(t,r){return e.apply(this,arguments)}}()));case 1:case\"end\":return e.stop()}},e)}));return function(){return e.apply(this,arguments)}}()},{key:\"setPlayNewParticipantSound\",value:function(e){if(Wo(),\"number\"!=typeof e&&!0!==e&&!1!==e)throw new Error(\"argument to setShouldPlayNewParticipantSound should be true, false, or a number, but is \".concat(e));this.sendMessageToCallMachine({action:\"daily-method-set-play-ding\",arg:e})}},{key:\"on\",value:function(t,r){return this._inputEventsOn[t]={},this.sendMessageToCallMachine({action:\"register-input-handler\",on:t}),e.prototype.on.call(this,t,r)}},{key:\"once\",value:function(t,r){return this._inputEventsOn[t]={},this.sendMessageToCallMachine({action:\"register-input-handler\",on:t}),e.prototype.once.call(this,t,r)}},{key:\"off\",value:function(t,r){return delete this._inputEventsOn[t],this.sendMessageToCallMachine({action:\"register-input-handler\",off:t}),e.prototype.off.call(this,t,r)}},{key:\"validateProperties\",value:function(e){for(var t in e){if(!zo[t])throw new Error(\"unrecognized property '\".concat(t,\"'\"));if(zo[t].validate&&!zo[t].validate(e[t],this))throw new Error(\"property '\".concat(t,\"': \").concat(zo[t].help))}}},{key:\"assembleMeetingUrl\",value:function(){var e=Eo(Eo({},this.properties),{},{emb:this._callFrameId,embHref:encodeURIComponent(window.location.href)}),t=e.url.match(/\\?/)?\"&\":\"?\";return e.url+t+Object.keys(zo).filter(function(t){return zo[t].queryString&&void 0!==e[t]}).map(function(t){return\"\".concat(zo[t].queryString,\"=\").concat(e[t])}).join(\"&\")}},{key:\"needsLoad\",value:function(){return[ae,oe,ue,le].includes(this._meetingState)}},{key:\"sendMessageToCallMachine\",value:function(e,t){this._messageChannel.sendMessageToCallMachine(e,t,this._iframe,this._callFrameId)}},{key:\"forwardPackagedMessageToCallMachine\",value:function(e){this._messageChannel.forwardPackagedMessageToCallMachine(e,this._iframe,this._callFrameId)}},{key:\"addListenerForPackagedMessagesFromCallMachine\",value:function(e){return this._messageChannel.addListenerForPackagedMessagesFromCallMachine(e,this._callFrameId)}},{key:\"removeListenerForPackagedMessagesFromCallMachine\",value:function(e){this._messageChannel.removeListenerForPackagedMessagesFromCallMachine(e)}},{key:\"handleMessageFromCallMachine\",value:function(e){switch(e.action){case\"iframe-ready-for-launch-config\":this.sendMessageToCallMachine(Eo({action:\"iframe-launch-config\"},this.properties));break;case\"loaded\":this._loadedCallback&&(this._loadedCallback(),this._loadedCallback=null);try{this.emit(e.action,e)}catch(t){console.log(\"could not emit\",e,t)}break;case\"joined-meeting\":this._joinedCallback&&(this._joinedCallback(e.participants),this._joinedCallback=null);try{this.emit(e.action,e)}catch(t){console.log(\"could not emit\",e,t)}break;case\"participant-joined\":case\"participant-updated\":if(this._meetingState===ue)return;if(e.participant&&e.participant.session_id){var t=e.participant.local?\"local\":e.participant.session_id;this._callObjectMode&&(jo(e.participant),Oo(e.participant),xo(e.participant,this._participants[t]));try{this.maybeEventTrackStopped(this._participants[t],e.participant,\"audioTrack\"),this.maybeEventTrackStopped(this._participants[t],e.participant,\"videoTrack\"),this.maybeEventTrackStopped(this._participants[t],e.participant,\"screenVideoTrack\"),this.maybeEventTrackStopped(this._participants[t],e.participant,\"screenAudioTrack\"),this.maybeEventTrackStarted(this._participants[t],e.participant,\"audioTrack\"),this.maybeEventTrackStarted(this._participants[t],e.participant,\"videoTrack\"),this.maybeEventTrackStarted(this._participants[t],e.participant,\"screenVideoTrack\"),this.maybeEventTrackStarted(this._participants[t],e.participant,\"screenAudioTrack\"),this.maybeEventTrackStoppedForCustomTracks(this._participants[t],e.participant),this.maybeEventTrackStartedForCustomTracks(this._participants[t],e.participant),this.maybeEventRecordingStopped(this._participants[t],e.participant),this.maybeEventRecordingStarted(this._participants[t],e.participant)}catch(e){console.error(\"track events error\",e)}if(!this.compareEqualForParticipantUpdateEvent(e.participant,this._participants[t])){this._participants[t]=Eo({},e.participant),this.toggleParticipantAudioBasedOnNativeAudioFocus();try{this.emit(e.action,e)}catch(t){console.log(\"could not emit\",e,t)}}}break;case\"participant-left\":if(e.participant&&e.participant.session_id){var r=this._participants[e.participant.session_id];r&&(this.maybeEventTrackStopped(r,null,\"audioTrack\"),this.maybeEventTrackStopped(r,null,\"videoTrack\"),this.maybeEventTrackStopped(r,null,\"screenVideoTrack\"),this.maybeEventTrackStopped(r,null,\"screenAudioTrack\"),this.maybeEventTrackStoppedForCustomTracks(r,null)),delete this._participants[e.participant.session_id];try{this.emit(e.action,e)}catch(t){console.log(\"could not emit\",e,t)}}break;case\"participant-counts-updated\":if(!G(this._participantCounts,e.participantCounts)){this._participantCounts=e.participantCounts;try{this.emit(e.action,e)}catch(t){console.log(\"could not emit\",e,t)}}break;case\"access-state-updated\":var n={access:e.access};if(e.awaitingAccess&&(n.awaitingAccess=e.awaitingAccess),!G(this._accessState,n)){this._accessState=n;try{this.emit(e.action,e)}catch(t){console.log(\"could not emit\",e,t)}}break;case\"meeting-session-updated\":if(e.meetingSession)try{delete e.callFrameId,this.emit(e.action,e)}catch(t){console.log(\"could not emit\",e,t)}break;case\"error\":this._iframe&&!e.preserveIframe&&(this._iframe.src=\"\"),this.updateMeetingState(le),this.resetMeetingDependentVars(),this._loadedCallback&&(this._loadedCallback(e.errorMsg),this._loadedCallback=null),this._joinedCallback&&(this._joinedCallback(null,e.errorMsg),this._joinedCallback=null);try{e.preserveIframe;var i=u(e,[\"preserveIframe\"]);this.emit(e.action,i)}catch(t){console.log(\"could not emit\",e,t)}break;case\"left-meeting\":this._leftCallback&&(this._leftCallback(),this._leftCallback=null);try{this.emit(e.action,e)}catch(t){console.log(\"could not emit\",e,t)}break;case\"input-event\":var a=this._participants[e.session_id];a||(a=e.session_id===this._participants.local.session_id?this._participants.local:{});try{this.emit(e.event.type,{action:e.event.type,event:e.event,participant:Eo({},a)})}catch(t){console.log(\"could not emit\",e,t)}break;case\"network-quality-change\":var o=e.threshold,s=e.quality;if(o!==this._network.threshold||s!==this._network.quality){this._network.quality=s,this._network.threshold=o;try{this.emit(e.action,e)}catch(t){console.log(\"could not emit\",e,t)}}break;case\"active-speaker-change\":var c=e.activeSpeaker;if(this._activeSpeaker.peerId!==c.peerId){this._activeSpeaker.peerId=c.peerId;try{this.emit(e.action,{action:e.action,activeSpeaker:this._activeSpeaker})}catch(t){console.log(\"could not emit\",e,t)}}break;case\"show-local-video-changed\":if(this._callObjectMode)return;var l=e.show;this._showLocalVideo=l;try{this.emit(e.action,{action:e.action,show:l})}catch(t){console.log(\"could not emit\",e,t)}break;case\"active-speaker-mode-change\":var d=e.enabled;if(this._activeSpeakerMode!==d){this._activeSpeakerMode=d;try{this.emit(e.action,{action:e.action,enabled:this._activeSpeakerMode})}catch(t){console.log(\"could not emit\",e,t)}}break;case\"waiting-participant-added\":case\"waiting-participant-updated\":case\"waiting-participant-removed\":this._waitingParticipants=e.allWaitingParticipants;try{this.emit(e.action,{action:e.action,participant:e.participant})}catch(t){console.log(\"could not emit\",e,t)}break;case\"receive-settings-updated\":if(!G(this._receiveSettings,e.receiveSettings)){this._receiveSettings=e.receiveSettings;try{this.emit(e.action,{action:e.action,receiveSettings:e.receiveSettings})}catch(t){console.log(\"could not emit\",e,t)}}break;case\"input-settings-updated\":if(!G(this._inputSettings,e.inputSettings)){this._inputSettings=e.inputSettings;try{this.emit(e.action,{action:e.action,inputSettings:e.inputSettings})}catch(t){console.log(\"could not emit\",e,t)}}break;case\"remote-media-player-started\":var p=e.session_id;this._rmpPlayerState[p]=e.playerState,this.emitDailyJSEvent(e);break;case\"remote-media-player-stopped\":delete this._rmpPlayerState[e.session_id],this.emitDailyJSEvent(e);break;case\"remote-media-player-updated\":var h=e.session_id,f=this._rmpPlayerState[h];f&&this.compareEqualForRMPUpdateEvent(f,e.remoteMediaPlayerState)||(this._rmpPlayerState[h]=e.remoteMediaPlayerState,this.emitDailyJSEvent(e));break;case\"custom-button-click\":this.emitDailyJSEvent(e);break;case\"recording-started\":case\"recording-stopped\":case\"recording-stats\":case\"recording-error\":case\"recording-upload-completed\":case\"transcription-started\":case\"transcription-stopped\":case\"transcription-error\":case\"started-camera\":case\"camera-error\":case\"app-message\":case\"local-screen-share-started\":case\"local-screen-share-stopped\":case\"network-connection\":case\"recording-data\":case\"live-streaming-started\":case\"live-streaming-stopped\":case\"live-streaming-error\":case\"nonfatal-error\":case\"lang-updated\":try{this.emit(e.action,e)}catch(t){console.log(\"could not emit\",e,t)}break;case\"request-fullscreen\":this.requestFullscreen();break;case\"request-exit-fullscreen\":this.exitFullscreen()}}},{key:\"maybeEventRecordingStopped\",value:function(e,t){var r=\"record\";if(e&&!t.local&&!1===t[r]&&e[r]!==t[r])try{this.emit(\"recording-stopped\",{action:\"recording-stopped\"})}catch(e){console.log(\"could not emit\",e)}}},{key:\"maybeEventRecordingStarted\",value:function(e,t){var r=\"record\";if(e&&!t.local&&!0===t[r]&&e[r]!==t[r])try{this.emit(\"recording-started\",{action:\"recording-started\"})}catch(e){console.log(\"could not emit\",e)}}},{key:\"maybeEventTrackStopped\",value:function(e,t,r){if(e&&(e[r]&&\"ended\"===e[r].readyState||e[r]&&(!t||!t[r])||e[r]&&e[r].id!==t[r].id))try{this.emit(\"track-stopped\",{action:\"track-stopped\",track:e[r],participant:t})}catch(e){console.log(\"could not emit\",e)}}},{key:\"maybeEventCustomTrackStopped\",value:function(e,t,r,n){if(e&&(!n||!n.remoteMediaPlayerState||n.remoteMediaPlayerState.state!=Ft&&n.remoteMediaPlayerState.state!=Lt)&&(e&&\"ended\"===e.readyState||e&&!t||e&&e.id!==t.id))try{this.emit(\"track-stopped\",{action:\"track-stopped\",track:e,participant:r})}catch(e){console.log(\"maybeEventCustomTrackStopped: could not emit\",e)}}},{key:\"maybeEventCustomTrackStarted\",value:function(e,t,r){if(t&&!e||t&&\"ended\"===e.readyState||t&&t.id!==e.id)try{this.emit(\"track-started\",{action:\"track-started\",track:t,participant:r})}catch(e){console.log(\"maybeEventCustomTrackStarted: could not emit\",e)}}},{key:\"maybeEventTrackStarted\",value:function(e,t,r){if(t[r]&&(!e||!e[r])||t[r]&&\"ended\"===e[r].readyState||t[r]&&t[r].id!==e[r].id)try{this.emit(\"track-started\",{action:\"track-started\",track:t[r],participant:t})}catch(e){console.log(\"could not emit\",e)}}},{key:\"maybeEventTrackStoppedForCustomTracks\",value:function(e,t){if(e)for(var r in e.tracks)Po(r)||this.maybeEventCustomTrackStopped(e.tracks[r].track,t&&t.tracks[r]?t.tracks[r].track:null,e,t)}},{key:\"maybeEventTrackStartedForCustomTracks\",value:function(e,t){if(t)for(var r in t.tracks)Po(r)||this.maybeEventCustomTrackStarted(e&&e.tracks[r]?e.tracks[r].track:null,t.tracks[r].track,t)}},{key:\"compareEqualForRMPUpdateEvent\",value:function(e,t){return e.state===t.state}},{key:\"emitDailyJSEvent\",value:function(e){try{this.emit(e.action,e)}catch(t){console.log(\"could not emit\",e,t)}}},{key:\"compareEqualForParticipantUpdateEvent\",value:function(e,t){return!!G(e,t)&&((!e.videoTrack||!t.videoTrack||e.videoTrack.id===t.videoTrack.id&&e.videoTrack.muted===t.videoTrack.muted&&e.videoTrack.enabled===t.videoTrack.enabled)&&(!e.audioTrack||!t.audioTrack||e.audioTrack.id===t.audioTrack.id&&e.audioTrack.muted===t.audioTrack.muted&&e.audioTrack.enabled===t.audioTrack.enabled))}},{key:\"nativeUtils\",value:function(){return Nt()?\"undefined\"==typeof DailyNativeUtils?(console.warn(\"in React Native, DailyNativeUtils is expected to be available\"),null):DailyNativeUtils:null}},{key:\"updateIsPreparingToJoin\",value:function(e){this.updateMeetingState(this._meetingState,e)}},{key:\"updateMeetingState\",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:this._isPreparingToJoin;if(e!==this._meetingState||t!==this._isPreparingToJoin){var r=this._meetingState,n=this._isPreparingToJoin;this._meetingState=e,this._isPreparingToJoin=t;var i=this.isMeetingPendingOrOngoing(r,n),a=this.isMeetingPendingOrOngoing(this._meetingState,this._isPreparingToJoin);i!==a&&(this.updateKeepDeviceAwake(a),this.updateDeviceAudioMode(a),this.updateShowAndroidOngoingMeetingNotification(a),this.updateNoOpRecordingEnsuringBackgroundContinuity(a))}}},{key:\"resetMeetingDependentVars\",value:function(){this._participants={},this._participantCounts=Do,this._waitingParticipants={},this._activeSpeaker={},this._activeSpeakerMode=!1,this._didPreAuth=!1,this._accessState={access:ge},this._receiveSettings={},this._inputSettings={},this._preloadCache}},{key:\"updateKeepDeviceAwake\",value:function(e){Nt()&&this.nativeUtils().setKeepDeviceAwake(e,this._callFrameId)}},{key:\"updateDeviceAudioMode\",value:function(e){if(Nt()&&!this.disableReactNativeAutoDeviceManagement(\"audio\")){var t=e?this._nativeInCallAudioMode:\"idle\";this.nativeUtils().setAudioMode(t)}}},{key:\"updateShowAndroidOngoingMeetingNotification\",value:function(e){if(Nt()&&this.nativeUtils().setShowOngoingMeetingNotification){var t,r,n,i;if(this.properties.reactNativeConfig&&this.properties.reactNativeConfig.androidInCallNotification){var a=this.properties.reactNativeConfig.androidInCallNotification;t=a.title,r=a.subtitle,n=a.iconName,i=a.disableForCustomOverride}i&&(e=!1),this.nativeUtils().setShowOngoingMeetingNotification(e,t,r,n,this._callFrameId)}}},{key:\"updateNoOpRecordingEnsuringBackgroundContinuity\",value:function(e){Nt()&&this.nativeUtils().enableNoOpRecordingEnsuringBackgroundContinuity&&this.nativeUtils().enableNoOpRecordingEnsuringBackgroundContinuity(e)}},{key:\"isMeetingPendingOrOngoing\",value:function(e,t){return[se,ce].includes(e)||t}},{key:\"toggleParticipantAudioBasedOnNativeAudioFocus\",value:function(){if(Nt()){var e=store.getState();for(var t in e.streams){var r=e.streams[t];r&&r.pendingTrack&&\"audio\"===r.pendingTrack.kind&&(r.pendingTrack.enabled=this._hasNativeAudioFocus)}}}},{key:\"disableReactNativeAutoDeviceManagement\",value:function(e){return this.properties.reactNativeConfig&&this.properties.reactNativeConfig.disableAutoDeviceManagement&&this.properties.reactNativeConfig.disableAutoDeviceManagement[e]}},{key:\"absoluteUrl\",value:function(e){if(void 0!==e){var t=document.createElement(\"a\");return t.href=e,t.href}}},{key:\"sayHello\",value:function(){var e=\"hello, world.\";return console.log(e),e}}]),n}());export{ye as DAILY_ACCESS_LEVEL_FULL,be as DAILY_ACCESS_LEVEL_LOBBY,we as DAILY_ACCESS_LEVEL_NONE,ge as DAILY_ACCESS_UNKNOWN,xe as DAILY_CAMERA_ERROR_CAM_AND_MIC_IN_USE,Oe as DAILY_CAMERA_ERROR_CAM_IN_USE,Pe as DAILY_CAMERA_ERROR_MIC_IN_USE,He as DAILY_EVENT_ACCESS_STATE_UPDATED,mt as DAILY_EVENT_ACTIVE_SPEAKER_CHANGE,gt as DAILY_EVENT_ACTIVE_SPEAKER_MODE_CHANGE,ut as DAILY_EVENT_APP_MSG,Ne as DAILY_EVENT_CAMERA_ERROR,Pt as DAILY_EVENT_ERROR,kt as DAILY_EVENT_EXIT_FULLSCREEN,wt as DAILY_EVENT_FULLSCREEN,Ee as DAILY_EVENT_IFRAME_LAUNCH_CONFIG,Ae as DAILY_EVENT_IFRAME_READY_FOR_LAUNCH_CONFIG,lt as DAILY_EVENT_INPUT_EVENT,jt as DAILY_EVENT_INPUT_SETTINGS_UPDATED,Ve as DAILY_EVENT_JOINED_MEETING,Re as DAILY_EVENT_JOINING_MEETING,Ct as DAILY_EVENT_LANG_UPDATED,Ue as DAILY_EVENT_LEFT_MEETING,St as DAILY_EVENT_LIVE_STREAMING_ERROR,_t as DAILY_EVENT_LIVE_STREAMING_STARTED,Mt as DAILY_EVENT_LIVE_STREAMING_STOPPED,Be as DAILY_EVENT_LOADED,Le as DAILY_EVENT_LOADING,Ie as DAILY_EVENT_LOAD_ATTEMPT_FAILED,ft as DAILY_EVENT_LOCAL_SCREEN_SHARE_STARTED,vt as DAILY_EVENT_LOCAL_SCREEN_SHARE_STOPPED,Ke as DAILY_EVENT_MEETING_SESSION_UPDATED,bt as DAILY_EVENT_NETWORK_CONNECTION,yt as DAILY_EVENT_NETWORK_QUALITY_CHANGE,Ot as DAILY_EVENT_NONFATAL_ERROR,Ge as DAILY_EVENT_PARTICIPANT_COUNTS_UPDATED,Je as DAILY_EVENT_PARTICIPANT_JOINED,We as DAILY_EVENT_PARTICIPANT_LEFT,qe as DAILY_EVENT_PARTICIPANT_UPDATED,Tt as DAILY_EVENT_RECEIVE_SETTINGS_UPDATED,ct as DAILY_EVENT_RECORDING_DATA,ot as DAILY_EVENT_RECORDING_ERROR,nt as DAILY_EVENT_RECORDING_STARTED,at as DAILY_EVENT_RECORDING_STATS,it as DAILY_EVENT_RECORDING_STOPPED,st as DAILY_EVENT_RECORDING_UPLOAD_COMPLETED,dt as DAILY_EVENT_REMOTE_MEDIA_PLAYER_STARTED,ht as DAILY_EVENT_REMOTE_MEDIA_PLAYER_STOPPED,pt as DAILY_EVENT_REMOTE_MEDIA_PLAYER_UPDATED,De as DAILY_EVENT_STARTED_CAMERA,Fe as DAILY_EVENT_THEME_UPDATED,Ze as DAILY_EVENT_TRACK_STARTED,Xe as DAILY_EVENT_TRACK_STOPPED,rt as DAILY_EVENT_TRANSCRIPTION_ERROR,et as DAILY_EVENT_TRANSCRIPTION_STARTED,tt as DAILY_EVENT_TRANSCRIPTION_STOPPED,Qe as DAILY_EVENT_WAITING_PARTICIPANT_ADDED,Ye as DAILY_EVENT_WAITING_PARTICIPANT_REMOVED,$e as DAILY_EVENT_WAITING_PARTICIPANT_UPDATED,Me as DAILY_FATAL_ERROR_EJECTED,Te as DAILY_FATAL_ERROR_EXP_ROOM,je as DAILY_FATAL_ERROR_EXP_TOKEN,Se as DAILY_FATAL_ERROR_NBF_ROOM,Ce as DAILY_FATAL_ERROR_NBF_TOKEN,_e as DAILY_RECEIVE_SETTINGS_ALL_PARTICIPANTS_KEY,ke as DAILY_RECEIVE_SETTINGS_BASE_KEY,le as DAILY_STATE_ERROR,ce as DAILY_STATE_JOINED,se as DAILY_STATE_JOINING,ue as DAILY_STATE_LEFT,ae as DAILY_STATE_NEW,de as DAILY_TRACK_STATE_BLOCKED,ve as DAILY_TRACK_STATE_INTERRUPTED,fe as DAILY_TRACK_STATE_LOADING,pe as DAILY_TRACK_STATE_OFF,me as DAILY_TRACK_STATE_PLAYABLE,he as DAILY_TRACK_STATE_SENDABLE};\n","import DailyIframe, {\n\tDailyCall,\n\tDailyEventObjectActiveSpeakerChange,\n\tDailyEventObjectParticipant,\n\tDailyParticipant,\n\tDailyParticipantsObject,\n} from \"@daily-co/daily-js\"\nimport create from \"zustand\"\nimport { useSettingsStore } from \"./settingsStore\"\n\ntype CommunicationStore = {\n\troom: DailyCall | undefined\n\tbaseURL: string\n\n\tstate: SocketConnectionState\n\tparticipants: Record\n\tactiveSpeakerId: string | undefined\n\tconnected: boolean\n\n\tjoin: (eventId: string, token: string, video: boolean) => void\n\tleave: () => void\n\n\tmuteAudio: boolean\n\n\tioActions: {\n\t\tupdateMicrophone: (id: string) => void\n\t\tupdateCamera: (id: string) => void\n\t\tmuteAudio: (mute: boolean) => void\n\t\tmuteVideo: (mute: boolean) => void\n\t}\n}\n\nexport enum SocketConnectionState {\n\tdisconnected = \"Disconnected\",\n\tconnecting = \"Connecting\",\n\tconnected = \"Connected\",\n\treconnecting = \"Reconnecting\",\n}\n\nexport const useCommunicationStore = create((set, get) => {\n\treturn {\n\t\troom: undefined,\n\t\tbaseURL: \"https://sonofun.daily.co/\",\n\n\t\tparticipants: {},\n\t\tactiveSpeakerId: undefined,\n\t\tconnected: false,\n\n\t\tstate: SocketConnectionState.disconnected,\n\n\t\tmuteAudio: false,\n\n\t\tjoin: async (eventId, token, video) => {\n\t\t\tlet { room, baseURL, participants } = get()\n\n\t\t\tset({ state: SocketConnectionState.connecting })\n\n\t\t\tconst microphone = useSettingsStore.getState().selectedMicrophone\n\t\t\tconst camera = useSettingsStore.getState().selectedCamera\n\n\t\t\troom = DailyIframe.createCallObject({\n\t\t\t\tsubscribeToTracksAutomatically: true,\n\t\t\t\tdailyConfig: {\n\t\t\t\t\texperimentalChromeVideoMuteLightOff: true,\n\t\t\t\t},\n\t\t\t})\n\n\t\t\tconst roomURL = baseURL + eventId\n\n\t\t\tawait room.join({\n\t\t\t\turl: roomURL,\n\t\t\t\ttoken: token,\n\t\t\t\tvideoSource: video ? camera : false,\n\t\t\t})\n\n\t\t\tawait room.setNetworkTopology({ topology: \"sfu\" })\n\t\t\tawait room.setInputDevicesAsync({\n\t\t\t\taudioDeviceId: microphone,\n\t\t\t\tvideoDeviceId: video ? camera : false,\n\t\t\t}) // TODO: Need to create own Mediastream?\n\n\t\t\tObject.entries(room.participants() as DailyParticipantsObject).forEach(\n\t\t\t\t([id, participant]) => {\n\t\t\t\t\tparticipants[participant.user_id] = participant\n\t\t\t\t}\n\t\t\t)\n\n\t\t\t// Input devices\n\n\t\t\troom.on(\n\t\t\t\t\"participant-joined\",\n\t\t\t\t(event: DailyEventObjectParticipant | undefined) => {\n\t\t\t\t\tif (!event) return // TODO: Log error\n\n\t\t\t\t\tconst { participants } = get()\n\t\t\t\t\tconst { participant } = event\n\n\t\t\t\t\tif (participant.user_id) {\n\t\t\t\t\t\tparticipants[participant.user_id] = participant\n\t\t\t\t\t}\n\n\t\t\t\t\t// TODO: Maybe filter similar to twilio?\n\t\t\t\t\tset({ participants: { ...participants } })\n\t\t\t\t}\n\t\t\t)\n\n\t\t\troom.on(\n\t\t\t\t\"participant-updated\",\n\t\t\t\t(event: DailyEventObjectParticipant | undefined) => {\n\t\t\t\t\tif (!event) return // TODO: Log error\n\n\t\t\t\t\tconst { participants } = get()\n\t\t\t\t\tconst { participant } = event\n\n\t\t\t\t\tif (participant.user_id) {\n\t\t\t\t\t\tparticipants[participant.user_id] = participant\n\t\t\t\t\t}\n\n\t\t\t\t\t// TODO: Maybe filter similar to twilio?\n\t\t\t\t\tset({ participants: { ...participants } })\n\t\t\t\t}\n\t\t\t)\n\n\t\t\troom.on(\n\t\t\t\t\"participant-left\",\n\t\t\t\t(event: DailyEventObjectParticipant | undefined) => {\n\t\t\t\t\tif (!event) return // TODO: Log error\n\n\t\t\t\t\tconst { participants } = get()\n\t\t\t\t\tconst { participant } = event\n\n\t\t\t\t\tif (participant.user_id) {\n\t\t\t\t\t\tdelete participants[participant.user_id]\n\t\t\t\t\t}\n\n\t\t\t\t\t// TODO: Maybe filter similar to twilio?\n\t\t\t\t\tset({ participants: { ...participants } })\n\t\t\t\t}\n\t\t\t)\n\n\t\t\troom.on(\n\t\t\t\t\"active-speaker-change\",\n\t\t\t\t(event: DailyEventObjectActiveSpeakerChange | undefined) => {\n\t\t\t\t\tif (event) {\n\t\t\t\t\t\tconst id = event.activeSpeaker.peerId\n\t\t\t\t\t\tset({ activeSpeakerId: id })\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t)\n\n\t\t\t// room.on(\"track-started\", (event: DailyEventObjectTrack | undefined) => {\n\t\t\t// \tevent.\n\t\t\t// })\n\n\t\t\tconst _mute = get().muteAudio\n\t\t\tif (_mute) {\n\t\t\t\troom.setLocalAudio(!_mute)\n\t\t\t}\n\n\t\t\tset({ room, participants: { ...participants }, connected: true })\n\t\t},\n\t\tleave: () => {\n\t\t\tconst { room } = get()\n\n\t\t\tif (room) {\n\t\t\t\troom.leave()\n\t\t\t\troom.destroy()\n\n\t\t\t\tset({ room: undefined })\n\t\t\t}\n\t\t},\n\n\t\tioActions: {\n\t\t\tupdateMicrophone: (id: string) => {\n\t\t\t\tconst { room } = get()\n\n\t\t\t\tif (room) {\n\t\t\t\t\t// TODO: working?\n\t\t\t\t\troom.setInputDevicesAsync({ audioDeviceId: id })\n\t\t\t\t}\n\t\t\t},\n\n\t\t\tupdateCamera: (id: string) => {\n\t\t\t\tconst { room } = get()\n\n\t\t\t\tif (room) {\n\t\t\t\t\troom.setInputDevicesAsync({ videoDeviceId: id })\n\t\t\t\t}\n\t\t\t},\n\n\t\t\tmuteAudio: (mute: boolean) => {\n\t\t\t\tconst { room } = get()\n\n\t\t\t\tif (room) {\n\t\t\t\t\troom.setLocalAudio(!mute)\n\t\t\t\t}\n\n\t\t\t\tset({ muteAudio: mute })\n\t\t\t},\n\n\t\t\tmuteVideo: (mute: boolean) => {\n\t\t\t\tconst { room } = get()\n\n\t\t\t\tif (room) {\n\t\t\t\t\troom.setLocalVideo(!mute)\n\t\t\t\t}\n\t\t\t},\n\t\t},\n\t}\n})\n","import create from \"zustand\"\nimport { persist } from \"zustand/middleware\"\nimport { useCommunicationStore } from \"./communicationStore\"\n\ninterface SettingsStore extends Record {\n\tselectedMicrophone: string | undefined\n\tselectedSpeaker: string | undefined\n\tselectedCamera: string | undefined\n\tmicrophones: MediaDeviceInfo[]\n\tspeakers: MediaDeviceInfo[]\n\tcameras: MediaDeviceInfo[]\n\tupdateIO: (devices: MediaDeviceInfo[]) => void\n\tupdateMicrophone: (id: string) => void\n\tupdateSpeaker: (id: string) => void\n\tupdateCamera: (id: string) => void\n\n\tcompletedTutorial: string[]\n\tcompleteTutorial: (code: string) => void\n}\n\nconst updateDevice = (\n\tdevices: MediaDeviceInfo[],\n\tselected: string | unknown,\n\tupdate: (id: string) => void\n) => {\n\tif (devices.length > 0) {\n\t\tif (selected === undefined) {\n\t\t\t// prefer devices including \"default\"\n\t\t\tconst defaultDevices = devices.filter(\n\t\t\t\t(device) => device.deviceId === \"default\"\n\t\t\t)[0]\n\t\t\tupdate(\n\t\t\t\tdefaultDevices !== undefined\n\t\t\t\t\t? defaultDevices.deviceId\n\t\t\t\t\t: devices[0].deviceId\n\t\t\t)\n\t\t} else {\n\t\t\t// already has a device but ids get flushed out the cache at some point\n\t\t\tconst microphone = devices.filter(\n\t\t\t\t(device) => device.deviceId === selected\n\t\t\t)\n\t\t\tif (microphone.length === 0) {\n\t\t\t\tupdate(devices[0].deviceId)\n\t\t\t}\n\t\t}\n\t}\n}\n\nexport const useSettingsStore = create(\n\tpersist(\n\t\t(set, get) => ({\n\t\t\tselectedMicrophone: undefined,\n\t\t\tselectedSpeaker: undefined,\n\t\t\tselectedCamera: undefined,\n\t\t\tmicrophones: [],\n\t\t\tspeakers: [],\n\t\t\tcameras: [],\n\n\t\t\tupdateIO: (devices: MediaDeviceInfo[]) => {\n\t\t\t\tconst microphones = devices.filter(\n\t\t\t\t\t(device) => device.kind === \"audioinput\"\n\t\t\t\t)\n\t\t\t\tconst speakers = devices.filter(\n\t\t\t\t\t(device) => device.kind === \"audiooutput\"\n\t\t\t\t)\n\t\t\t\tconst cameras = devices.filter((device) => device.kind === \"videoinput\")\n\n\t\t\t\tset({\n\t\t\t\t\tmicrophones,\n\t\t\t\t\tspeakers,\n\t\t\t\t\tcameras,\n\t\t\t\t})\n\n\t\t\t\tconst {\n\t\t\t\t\tselectedMicrophone,\n\t\t\t\t\tselectedSpeaker,\n\t\t\t\t\tselectedCamera,\n\t\t\t\t\tupdateMicrophone,\n\t\t\t\t\tupdateSpeaker,\n\t\t\t\t\tupdateCamera,\n\t\t\t\t} = get()\n\n\t\t\t\tupdateDevice(microphones, selectedMicrophone, updateMicrophone)\n\t\t\t\tupdateDevice(cameras, selectedCamera, updateCamera)\n\t\t\t\tupdateDevice(speakers, selectedSpeaker, updateSpeaker)\n\t\t\t},\n\t\t\tupdateMicrophone: (id) => {\n\t\t\t\tset({ selectedMicrophone: id })\n\n\t\t\t\tuseCommunicationStore.getState().ioActions.updateMicrophone(id)\n\t\t\t},\n\t\t\tupdateSpeaker: (id) => {\n\t\t\t\tset({ selectedSpeaker: id })\n\t\t\t},\n\t\t\tupdateCamera: (id) => {\n\t\t\t\tset({ selectedCamera: id })\n\n\t\t\t\tuseCommunicationStore.getState().ioActions.updateCamera(id)\n\t\t\t},\n\n\t\t\tcompletedTutorial: [],\n\t\t\tcompleteTutorial: (code) => {\n\t\t\t\tconst { completedTutorial } = get()\n\n\t\t\t\tset({ completedTutorial: [...completedTutorial, code] })\n\t\t\t},\n\t\t}),\n\t\t{ name: \"settings\" }\n\t)\n)\n","import { DetailedHTMLProps, SelectHTMLAttributes } from \"react\"\n\nconst Select = ({\n\tonChange,\n\tclassName,\n\t...props\n}: Omit<\n\tDetailedHTMLProps, HTMLSelectElement>,\n\t\"onChange\" | \"style\"\n> & { onChange: (value: string) => void }) => {\n\treturn (\n\t\t {\n\t\t\t\tonChange(value)\n\t\t\t}}\n\t\t/>\n\t)\n}\n\nexport default Select\n","import { useTranslation } from \"react-i18next\"\nimport Webcam from \"react-webcam\"\nimport { useSettingsStore } from \"src/state/stores/settingsStore\"\nimport Select from \"../input/select\"\n\ninterface CameraSettingsProps {\n\tcamera: boolean\n}\n\nconst CameraSettings = ({ camera }: CameraSettingsProps) => {\n\tconst { t } = useTranslation()\n\n\tconst microphones = useSettingsStore((state) => state.microphones)\n\tconst speakers = useSettingsStore((state) => state.speakers)\n\tconst cameras = useSettingsStore((state) => state.cameras)\n\n\tconst selectedMicrophone = useSettingsStore(\n\t\t(state) => state.selectedMicrophone\n\t)\n\tconst selectedSpeaker = useSettingsStore((state) => state.selectedSpeaker)\n\tconst selectedCamera = useSettingsStore((state) => state.selectedCamera)\n\n\tconst setMicrophone = useSettingsStore((state) => state.updateMicrophone)\n\tconst setSpeaker = useSettingsStore((state) => state.updateSpeaker)\n\tconst setCamera = useSettingsStore((state) => state.updateCamera)\n\n\treturn (\n\t\t
\n\t\t\t{camera && (\n\t\t\t\t\n\t\t\t)}\n\t\t\t
\n\t\t\t\t
\n\t\t\t\t\t

{t(\"microphone\")}

\n\t\t\t\t\t\n\t\t\t\t
\n\n\t\t\t\t
\n\t\t\t\t\t

{t(\"speaker\")}

\n\t\t\t\t\t{speakers.length > 0 ? (\n\t\t\t\t\t\t\n\t\t\t\t\t) : (\n\t\t\t\t\t\t

{t(\"change_in_settings\")}

\n\t\t\t\t\t)}\n\t\t\t\t
\n\n\t\t\t\t{camera && (\n\t\t\t\t\t
\n\t\t\t\t\t\t

{t(\"camera\")}

\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t)}\n\t\t\t
\n\t\t
\n\t)\n}\n\nexport default CameraSettings\n","import { forwardRef, useState } from \"react\"\nimport { useTranslation } from \"react-i18next\"\nimport { useKeyPressEvent } from \"react-use\"\nimport {\n\tshowSettingsValue,\n\tuseCameraSettingsStore,\n} from \"../../state/stores/cameraSettingsStore\"\nimport Button from \"../button/button\"\nimport CameraSettings from \"../cameraSettings/cameraSettings\"\n\nconst CameraSettingsOverlay = forwardRef(\n\t({ camera }, ref) => {\n\t\tconst { t } = useTranslation()\n\n\t\tconst [transform, setTransform] = useState(\"scale(0.9) rotateX(0deg)\")\n\n\t\tconst close = () => {\n\t\t\tsetTransform(\"scale(0.9) rotateX(0deg)\")\n\n\t\t\tuseCameraSettingsStore.setState({ showSettings: showSettingsValue.none })\n\t\t}\n\n\t\tuseKeyPressEvent(\"Enter\", close)\n\t\tuseKeyPressEvent(\"Escape\", close)\n\n\t\treturn (\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\n\t\t\t\n\t\t)\n\t}\n)\n\nexport default CameraSettingsOverlay\n","import { useEffect, useLayoutEffect, createContext, useContext, useState, createElement, useRef, useCallback, useDebugValue } from 'react';\n\n/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n\r\nfunction __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nfunction __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\n\nvar noop = function () { };\n// Using noop() as the undefined value as undefined can possibly be replaced\n// by something else. Prettier ignore and extra parentheses are necessary here\n// to ensure that tsc doesn't remove the __NOINLINE__ comment.\n// prettier-ignore\nvar UNDEFINED = ( /*#__NOINLINE__*/noop());\nvar OBJECT = Object;\nvar isUndefined = function (v) { return v === UNDEFINED; };\nvar isFunction = function (v) { return typeof v == 'function'; };\nvar mergeObjects = function (a, b) { return OBJECT.assign({}, a, b); };\nvar STR_UNDEFINED = 'undefined';\n// NOTE: Use function to guarantee it's re-evaluated between jsdom and node runtime for tests.\nvar hasWindow = function () { return typeof window != STR_UNDEFINED; };\nvar hasDocument = function () { return typeof document != STR_UNDEFINED; };\nvar hasRequestAnimationFrame = function () {\n return hasWindow() && typeof window['requestAnimationFrame'] != STR_UNDEFINED;\n};\n\n// use WeakMap to store the object->key mapping\n// so the objects can be garbage collected.\n// WeakMap uses a hashtable under the hood, so the lookup\n// complexity is almost O(1).\nvar table = new WeakMap();\n// counter of the key\nvar counter = 0;\n// A stable hash implementation that supports:\n// - Fast and ensures unique hash properties\n// - Handles unserializable values\n// - Handles object key ordering\n// - Generates short results\n//\n// This is not a serialization function, and the result is not guaranteed to be\n// parsible.\nvar stableHash = function (arg) {\n var type = typeof arg;\n var constructor = arg && arg.constructor;\n var isDate = constructor == Date;\n var result;\n var index;\n if (OBJECT(arg) === arg && !isDate && constructor != RegExp) {\n // Object/function, not null/date/regexp. Use WeakMap to store the id first.\n // If it's already hashed, directly return the result.\n result = table.get(arg);\n if (result)\n return result;\n // Store the hash first for circular reference detection before entering the\n // recursive `stableHash` calls.\n // For other objects like set and map, we use this id directly as the hash.\n result = ++counter + '~';\n table.set(arg, result);\n if (constructor == Array) {\n // Array.\n result = '@';\n for (index = 0; index < arg.length; index++) {\n result += stableHash(arg[index]) + ',';\n }\n table.set(arg, result);\n }\n if (constructor == OBJECT) {\n // Object, sort keys.\n result = '#';\n var keys = OBJECT.keys(arg).sort();\n while (!isUndefined((index = keys.pop()))) {\n if (!isUndefined(arg[index])) {\n result += index + ':' + stableHash(arg[index]) + ',';\n }\n }\n table.set(arg, result);\n }\n }\n else {\n result = isDate\n ? arg.toJSON()\n : type == 'symbol'\n ? arg.toString()\n : type == 'string'\n ? JSON.stringify(arg)\n : '' + arg;\n }\n return result;\n};\n\n/**\n * Due to bug https://bugs.chromium.org/p/chromium/issues/detail?id=678075,\n * it's not reliable to detect if the browser is currently online or offline\n * based on `navigator.onLine`.\n * As a work around, we always assume it's online on first load, and change\n * the status upon `online` or `offline` events.\n */\nvar online = true;\nvar isOnline = function () { return online; };\nvar hasWin = hasWindow();\nvar hasDoc = hasDocument();\n// For node and React Native, `add/removeEventListener` doesn't exist on window.\nvar onWindowEvent = hasWin && window.addEventListener\n ? window.addEventListener.bind(window)\n : noop;\nvar onDocumentEvent = hasDoc ? document.addEventListener.bind(document) : noop;\nvar offWindowEvent = hasWin && window.removeEventListener\n ? window.removeEventListener.bind(window)\n : noop;\nvar offDocumentEvent = hasDoc\n ? document.removeEventListener.bind(document)\n : noop;\nvar isVisible = function () {\n var visibilityState = hasDoc && document.visibilityState;\n return isUndefined(visibilityState) || visibilityState !== 'hidden';\n};\nvar initFocus = function (callback) {\n // focus revalidate\n onDocumentEvent('visibilitychange', callback);\n onWindowEvent('focus', callback);\n return function () {\n offDocumentEvent('visibilitychange', callback);\n offWindowEvent('focus', callback);\n };\n};\nvar initReconnect = function (callback) {\n // revalidate on reconnected\n var onOnline = function () {\n online = true;\n callback();\n };\n // nothing to revalidate, just update the status\n var onOffline = function () {\n online = false;\n };\n onWindowEvent('online', onOnline);\n onWindowEvent('offline', onOffline);\n return function () {\n offWindowEvent('online', onOnline);\n offWindowEvent('offline', onOffline);\n };\n};\nvar preset = {\n isOnline: isOnline,\n isVisible: isVisible\n};\nvar defaultConfigOptions = {\n initFocus: initFocus,\n initReconnect: initReconnect\n};\n\nvar IS_SERVER = !hasWindow() || 'Deno' in window;\n// Polyfill requestAnimationFrame\nvar rAF = function (f) {\n return hasRequestAnimationFrame() ? window['requestAnimationFrame'](f) : setTimeout(f, 1);\n};\n// React currently throws a warning when using useLayoutEffect on the server.\n// To get around it, we can conditionally useEffect on the server (no-op) and\n// useLayoutEffect in the browser.\nvar useIsomorphicLayoutEffect = IS_SERVER ? useEffect : useLayoutEffect;\n// This assignment is to extend the Navigator type to use effectiveType.\nvar navigatorConnection = typeof navigator !== 'undefined' &&\n navigator.connection;\n// Adjust the config based on slow connection status (<= 70Kbps).\nvar slowConnection = !IS_SERVER &&\n navigatorConnection &&\n (['slow-2g', '2g'].includes(navigatorConnection.effectiveType) ||\n navigatorConnection.saveData);\n\nvar serialize = function (key) {\n if (isFunction(key)) {\n try {\n key = key();\n }\n catch (err) {\n // dependencies not ready\n key = '';\n }\n }\n var args = [].concat(key);\n // If key is not falsy, or not an empty array, hash it.\n key =\n typeof key == 'string'\n ? key\n : (Array.isArray(key) ? key.length : key)\n ? stableHash(key)\n : '';\n var infoKey = key ? '$swr$' + key : '';\n return [key, args, infoKey];\n};\n\n// Global state used to deduplicate requests and store listeners\nvar SWRGlobalState = new WeakMap();\n\nvar FOCUS_EVENT = 0;\nvar RECONNECT_EVENT = 1;\nvar MUTATE_EVENT = 2;\n\nvar broadcastState = function (cache, key, data, error, isValidating, revalidate, broadcast) {\n if (broadcast === void 0) { broadcast = true; }\n var _a = SWRGlobalState.get(cache), EVENT_REVALIDATORS = _a[0], STATE_UPDATERS = _a[1], FETCH = _a[3];\n var revalidators = EVENT_REVALIDATORS[key];\n var updaters = STATE_UPDATERS[key];\n // Cache was populated, update states of all hooks.\n if (broadcast && updaters) {\n for (var i = 0; i < updaters.length; ++i) {\n updaters[i](data, error, isValidating);\n }\n }\n // If we also need to revalidate, only do it for the first hook.\n if (revalidate) {\n // Invalidate the key by deleting the concurrent request markers so new\n // requests will not be deduped.\n delete FETCH[key];\n if (revalidators && revalidators[0]) {\n return revalidators[0](MUTATE_EVENT).then(function () {\n return cache.get(key);\n });\n }\n }\n return cache.get(key);\n};\n\n// Global timestamp.\nvar __timestamp = 0;\nvar getTimestamp = function () { return ++__timestamp; };\n\nvar internalMutate = function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n return __awaiter(void 0, void 0, void 0, function () {\n var cache, _key, _data, _opts, options, populateCache, revalidate, rollbackOnError, customOptimisticData, _a, key, keyInfo, _b, MUTATION, data, error, beforeMutationTs, hasCustomOptimisticData, rollbackData, optimisticData, res;\n return __generator(this, function (_c) {\n switch (_c.label) {\n case 0:\n cache = args[0], _key = args[1], _data = args[2], _opts = args[3];\n options = typeof _opts === 'boolean' ? { revalidate: _opts } : _opts || {};\n populateCache = isUndefined(options.populateCache)\n ? true\n : options.populateCache;\n revalidate = options.revalidate !== false;\n rollbackOnError = options.rollbackOnError !== false;\n customOptimisticData = options.optimisticData;\n _a = serialize(_key), key = _a[0], keyInfo = _a[2];\n if (!key)\n return [2 /*return*/];\n _b = SWRGlobalState.get(cache), MUTATION = _b[2];\n // If there is no new data provided, revalidate the key with current state.\n if (args.length < 3) {\n // Revalidate and broadcast state.\n return [2 /*return*/, broadcastState(cache, key, cache.get(key), UNDEFINED, UNDEFINED, revalidate, true)];\n }\n data = _data;\n beforeMutationTs = getTimestamp();\n MUTATION[key] = [beforeMutationTs, 0];\n hasCustomOptimisticData = !isUndefined(customOptimisticData);\n rollbackData = cache.get(key);\n // Do optimistic data update.\n if (hasCustomOptimisticData) {\n optimisticData = isFunction(customOptimisticData)\n ? customOptimisticData(rollbackData)\n : customOptimisticData;\n cache.set(key, optimisticData);\n broadcastState(cache, key, optimisticData);\n }\n if (isFunction(data)) {\n // `data` is a function, call it passing current cache value.\n try {\n data = data(cache.get(key));\n }\n catch (err) {\n // If it throws an error synchronously, we shouldn't update the cache.\n error = err;\n }\n }\n if (!(data && isFunction(data.then))) return [3 /*break*/, 2];\n return [4 /*yield*/, data.catch(function (err) {\n error = err;\n })\n // Check if other mutations have occurred since we've started this mutation.\n // If there's a race we don't update cache or broadcast the change,\n // just return the data.\n ];\n case 1:\n // This means that the mutation is async, we need to check timestamps to\n // avoid race conditions.\n data = _c.sent();\n // Check if other mutations have occurred since we've started this mutation.\n // If there's a race we don't update cache or broadcast the change,\n // just return the data.\n if (beforeMutationTs !== MUTATION[key][0]) {\n if (error)\n throw error;\n return [2 /*return*/, data];\n }\n else if (error && hasCustomOptimisticData && rollbackOnError) {\n // Rollback. Always populate the cache in this case but without\n // transforming the data.\n populateCache = true;\n data = rollbackData;\n cache.set(key, rollbackData);\n }\n _c.label = 2;\n case 2:\n // If we should write back the cache after request.\n if (populateCache) {\n if (!error) {\n // Transform the result into data.\n if (isFunction(populateCache)) {\n data = populateCache(data, rollbackData);\n }\n // Only update cached data if there's no error. Data can be `undefined` here.\n cache.set(key, data);\n }\n // Always update or reset the error.\n cache.set(keyInfo, mergeObjects(cache.get(keyInfo), { error: error }));\n }\n // Reset the timestamp to mark the mutation has ended.\n MUTATION[key][1] = getTimestamp();\n return [4 /*yield*/, broadcastState(cache, key, data, error, UNDEFINED, revalidate, !!populateCache)\n // Throw error or return data\n ];\n case 3:\n res = _c.sent();\n // Throw error or return data\n if (error)\n throw error;\n return [2 /*return*/, populateCache ? res : data];\n }\n });\n });\n};\n\nvar revalidateAllKeys = function (revalidators, type) {\n for (var key in revalidators) {\n if (revalidators[key][0])\n revalidators[key][0](type);\n }\n};\nvar initCache = function (provider, options) {\n // The global state for a specific provider will be used to deduplicate\n // requests and store listeners. As well as a mutate function that bound to\n // the cache.\n // Provider's global state might be already initialized. Let's try to get the\n // global state associated with the provider first.\n if (!SWRGlobalState.has(provider)) {\n var opts = mergeObjects(defaultConfigOptions, options);\n // If there's no global state bound to the provider, create a new one with the\n // new mutate function.\n var EVENT_REVALIDATORS = {};\n var mutate = internalMutate.bind(UNDEFINED, provider);\n var unmount = noop;\n // Update the state if it's new, or the provider has been extended.\n SWRGlobalState.set(provider, [EVENT_REVALIDATORS, {}, {}, {}, mutate]);\n // This is a new provider, we need to initialize it and setup DOM events\n // listeners for `focus` and `reconnect` actions.\n if (!IS_SERVER) {\n // When listening to the native events for auto revalidations,\n // we intentionally put a delay (setTimeout) here to make sure they are\n // fired after immediate JavaScript executions, which can possibly be\n // React's state updates.\n // This avoids some unnecessary revalidations such as\n // https://github.com/vercel/swr/issues/1680.\n var releaseFocus_1 = opts.initFocus(setTimeout.bind(UNDEFINED, revalidateAllKeys.bind(UNDEFINED, EVENT_REVALIDATORS, FOCUS_EVENT)));\n var releaseReconnect_1 = opts.initReconnect(setTimeout.bind(UNDEFINED, revalidateAllKeys.bind(UNDEFINED, EVENT_REVALIDATORS, RECONNECT_EVENT)));\n unmount = function () {\n releaseFocus_1 && releaseFocus_1();\n releaseReconnect_1 && releaseReconnect_1();\n // When un-mounting, we need to remove the cache provider from the state\n // storage too because it's a side-effect. Otherwise when re-mounting we\n // will not re-register those event listeners.\n SWRGlobalState.delete(provider);\n };\n }\n // We might want to inject an extra layer on top of `provider` in the future,\n // such as key serialization, auto GC, etc.\n // For now, it's just a `Map` interface without any modifications.\n return [provider, mutate, unmount];\n }\n return [provider, SWRGlobalState.get(provider)[4]];\n};\n\n// error retry\nvar onErrorRetry = function (_, __, config, revalidate, opts) {\n var maxRetryCount = config.errorRetryCount;\n var currentRetryCount = opts.retryCount;\n // Exponential backoff\n var timeout = ~~((Math.random() + 0.5) *\n (1 << (currentRetryCount < 8 ? currentRetryCount : 8))) * config.errorRetryInterval;\n if (!isUndefined(maxRetryCount) && currentRetryCount > maxRetryCount) {\n return;\n }\n setTimeout(revalidate, timeout, opts);\n};\n// Default cache provider\nvar _a = initCache(new Map()), cache = _a[0], mutate = _a[1];\n// Default config\nvar defaultConfig = mergeObjects({\n // events\n onLoadingSlow: noop,\n onSuccess: noop,\n onError: noop,\n onErrorRetry: onErrorRetry,\n onDiscarded: noop,\n // switches\n revalidateOnFocus: true,\n revalidateOnReconnect: true,\n revalidateIfStale: true,\n shouldRetryOnError: true,\n // timeouts\n errorRetryInterval: slowConnection ? 10000 : 5000,\n focusThrottleInterval: 5 * 1000,\n dedupingInterval: 2 * 1000,\n loadingTimeout: slowConnection ? 5000 : 3000,\n // providers\n compare: function (currentData, newData) {\n return stableHash(currentData) == stableHash(newData);\n },\n isPaused: function () { return false; },\n cache: cache,\n mutate: mutate,\n fallback: {}\n}, \n// use web preset by default\npreset);\n\nvar mergeConfigs = function (a, b) {\n // Need to create a new object to avoid mutating the original here.\n var v = mergeObjects(a, b);\n // If two configs are provided, merge their `use` and `fallback` options.\n if (b) {\n var u1 = a.use, f1 = a.fallback;\n var u2 = b.use, f2 = b.fallback;\n if (u1 && u2) {\n v.use = u1.concat(u2);\n }\n if (f1 && f2) {\n v.fallback = mergeObjects(f1, f2);\n }\n }\n return v;\n};\n\nvar SWRConfigContext = createContext({});\nvar SWRConfig$1 = function (props) {\n var value = props.value;\n // Extend parent context values and middleware.\n var extendedConfig = mergeConfigs(useContext(SWRConfigContext), value);\n // Should not use the inherited provider.\n var provider = value && value.provider;\n // Use a lazy initialized state to create the cache on first access.\n var cacheContext = useState(function () {\n return provider\n ? initCache(provider(extendedConfig.cache || cache), value)\n : UNDEFINED;\n })[0];\n // Override the cache if a new provider is given.\n if (cacheContext) {\n extendedConfig.cache = cacheContext[0];\n extendedConfig.mutate = cacheContext[1];\n }\n // Unsubscribe events.\n useIsomorphicLayoutEffect(function () { return (cacheContext ? cacheContext[2] : UNDEFINED); }, []);\n return createElement(SWRConfigContext.Provider, mergeObjects(props, {\n value: extendedConfig\n }));\n};\n\n/**\n * An implementation of state with dependency-tracking.\n */\nvar useStateWithDeps = function (state, unmountedRef) {\n var rerender = useState({})[1];\n var stateRef = useRef(state);\n // If a state property (data, error or isValidating) is accessed by the render\n // function, we mark the property as a dependency so if it is updated again\n // in the future, we trigger a rerender.\n // This is also known as dependency-tracking.\n var stateDependenciesRef = useRef({\n data: false,\n error: false,\n isValidating: false\n });\n /**\n * @param payload To change stateRef, pass the values explicitly to setState:\n * @example\n * ```js\n * setState({\n * isValidating: false\n * data: newData // set data to newData\n * error: undefined // set error to undefined\n * })\n *\n * setState({\n * isValidating: false\n * data: undefined // set data to undefined\n * error: err // set error to err\n * })\n * ```\n */\n var setState = useCallback(function (payload) {\n var shouldRerender = false;\n var currentState = stateRef.current;\n for (var _ in payload) {\n var k = _;\n // If the property has changed, update the state and mark rerender as\n // needed.\n if (currentState[k] !== payload[k]) {\n currentState[k] = payload[k];\n // If the property is accessed by the component, a rerender should be\n // triggered.\n if (stateDependenciesRef.current[k]) {\n shouldRerender = true;\n }\n }\n }\n if (shouldRerender && !unmountedRef.current) {\n rerender({});\n }\n }, \n // config.suspense isn't allowed to change during the lifecycle\n // eslint-disable-next-line react-hooks/exhaustive-deps\n []);\n // Always update the state reference.\n useIsomorphicLayoutEffect(function () {\n stateRef.current = state;\n });\n return [stateRef, stateDependenciesRef.current, setState];\n};\n\nvar normalize = function (args) {\n return isFunction(args[1])\n ? [args[0], args[1], args[2] || {}]\n : [args[0], null, (args[1] === null ? args[2] : args[1]) || {}];\n};\n\nvar useSWRConfig = function () {\n return mergeObjects(defaultConfig, useContext(SWRConfigContext));\n};\n\n// It's tricky to pass generic types as parameters, so we just directly override\n// the types here.\nvar withArgs = function (hook) {\n return function useSWRArgs() {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n // Get the default and inherited configuration.\n var fallbackConfig = useSWRConfig();\n // Normalize arguments.\n var _a = normalize(args), key = _a[0], fn = _a[1], _config = _a[2];\n // Merge configurations.\n var config = mergeConfigs(fallbackConfig, _config);\n // Apply middleware\n var next = hook;\n var use = config.use;\n if (use) {\n for (var i = use.length; i-- > 0;) {\n next = use[i](next);\n }\n }\n return next(key, fn || config.fetcher, config);\n };\n};\n\n// Add a callback function to a list of keyed callback functions and return\n// the unsubscribe function.\nvar subscribeCallback = function (key, callbacks, callback) {\n var keyedRevalidators = callbacks[key] || (callbacks[key] = []);\n keyedRevalidators.push(callback);\n return function () {\n var index = keyedRevalidators.indexOf(callback);\n if (index >= 0) {\n // O(1): faster than splice\n keyedRevalidators[index] = keyedRevalidators[keyedRevalidators.length - 1];\n keyedRevalidators.pop();\n }\n };\n};\n\nvar WITH_DEDUPE = { dedupe: true };\nvar useSWRHandler = function (_key, fetcher, config) {\n var cache = config.cache, compare = config.compare, fallbackData = config.fallbackData, suspense = config.suspense, revalidateOnMount = config.revalidateOnMount, refreshInterval = config.refreshInterval, refreshWhenHidden = config.refreshWhenHidden, refreshWhenOffline = config.refreshWhenOffline;\n var _a = SWRGlobalState.get(cache), EVENT_REVALIDATORS = _a[0], STATE_UPDATERS = _a[1], MUTATION = _a[2], FETCH = _a[3];\n // `key` is the identifier of the SWR `data` state, `keyInfo` holds extra\n // states such as `error` and `isValidating` inside,\n // all of them are derived from `_key`.\n // `fnArgs` is an array of arguments parsed from the key, which will be passed\n // to the fetcher.\n var _b = serialize(_key), key = _b[0], fnArgs = _b[1], keyInfo = _b[2];\n // If it's the initial render of this hook.\n var initialMountedRef = useRef(false);\n // If the hook is unmounted already. This will be used to prevent some effects\n // to be called after unmounting.\n var unmountedRef = useRef(false);\n // Refs to keep the key and config.\n var keyRef = useRef(key);\n var fetcherRef = useRef(fetcher);\n var configRef = useRef(config);\n var getConfig = function () { return configRef.current; };\n var isActive = function () { return getConfig().isVisible() && getConfig().isOnline(); };\n var patchFetchInfo = function (info) {\n return cache.set(keyInfo, mergeObjects(cache.get(keyInfo), info));\n };\n // Get the current state that SWR should return.\n var cached = cache.get(key);\n var fallback = isUndefined(fallbackData)\n ? config.fallback[key]\n : fallbackData;\n var data = isUndefined(cached) ? fallback : cached;\n var info = cache.get(keyInfo) || {};\n var error = info.error;\n var isInitialMount = !initialMountedRef.current;\n // - Suspense mode and there's stale data for the initial render.\n // - Not suspense mode and there is no fallback data and `revalidateIfStale` is enabled.\n // - `revalidateIfStale` is enabled but `data` is not defined.\n var shouldRevalidate = function () {\n // If `revalidateOnMount` is set, we take the value directly.\n if (isInitialMount && !isUndefined(revalidateOnMount))\n return revalidateOnMount;\n // If it's paused, we skip revalidation.\n if (getConfig().isPaused())\n return false;\n // Under suspense mode, it will always fetch on render if there is no\n // stale data so no need to revalidate immediately on mount again.\n // If data exists, only revalidate if `revalidateIfStale` is true.\n if (suspense)\n return isUndefined(data) ? false : config.revalidateIfStale;\n // If there is no stale data, we need to revalidate on mount;\n // If `revalidateIfStale` is set to true, we will always revalidate.\n return isUndefined(data) || config.revalidateIfStale;\n };\n // Resolve the current validating state.\n var resolveValidating = function () {\n if (!key || !fetcher)\n return false;\n if (info.isValidating)\n return true;\n // If it's not mounted yet and it should revalidate on mount, revalidate.\n return isInitialMount && shouldRevalidate();\n };\n var isValidating = resolveValidating();\n var _c = useStateWithDeps({\n data: data,\n error: error,\n isValidating: isValidating\n }, unmountedRef), stateRef = _c[0], stateDependencies = _c[1], setState = _c[2];\n // The revalidation function is a carefully crafted wrapper of the original\n // `fetcher`, to correctly handle the many edge cases.\n var revalidate = useCallback(function (revalidateOpts) { return __awaiter(void 0, void 0, void 0, function () {\n var currentFetcher, newData, startAt, loading, opts, shouldStartNewRequest, isCurrentKeyMounted, cleanupState, newState, finishRequestAndUpdateState, mutationInfo, err_1;\n var _a;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n currentFetcher = fetcherRef.current;\n if (!key ||\n !currentFetcher ||\n unmountedRef.current ||\n getConfig().isPaused()) {\n return [2 /*return*/, false];\n }\n loading = true;\n opts = revalidateOpts || {};\n shouldStartNewRequest = !FETCH[key] || !opts.dedupe;\n isCurrentKeyMounted = function () {\n return !unmountedRef.current &&\n key === keyRef.current &&\n initialMountedRef.current;\n };\n cleanupState = function () {\n // Check if it's still the same request before deleting.\n var requestInfo = FETCH[key];\n if (requestInfo && requestInfo[1] === startAt) {\n delete FETCH[key];\n }\n };\n newState = { isValidating: false };\n finishRequestAndUpdateState = function () {\n patchFetchInfo({ isValidating: false });\n // We can only set state if it's safe (still mounted with the same key).\n if (isCurrentKeyMounted()) {\n setState(newState);\n }\n };\n // Start fetching. Change the `isValidating` state, update the cache.\n patchFetchInfo({\n isValidating: true\n });\n setState({ isValidating: true });\n _b.label = 1;\n case 1:\n _b.trys.push([1, 3, , 4]);\n if (shouldStartNewRequest) {\n // Tell all other hooks to change the `isValidating` state.\n broadcastState(cache, key, stateRef.current.data, stateRef.current.error, true);\n // If no cache being rendered currently (it shows a blank page),\n // we trigger the loading slow event.\n if (config.loadingTimeout && !cache.get(key)) {\n setTimeout(function () {\n if (loading && isCurrentKeyMounted()) {\n getConfig().onLoadingSlow(key, config);\n }\n }, config.loadingTimeout);\n }\n // Start the request and save the timestamp.\n FETCH[key] = [currentFetcher.apply(void 0, fnArgs), getTimestamp()];\n }\n _a = FETCH[key], newData = _a[0], startAt = _a[1];\n return [4 /*yield*/, newData];\n case 2:\n newData = _b.sent();\n if (shouldStartNewRequest) {\n // If the request isn't interrupted, clean it up after the\n // deduplication interval.\n setTimeout(cleanupState, config.dedupingInterval);\n }\n // If there're other ongoing request(s), started after the current one,\n // we need to ignore the current one to avoid possible race conditions:\n // req1------------------>res1 (current one)\n // req2---------------->res2\n // the request that fired later will always be kept.\n // The timestamp maybe be `undefined` or a number\n if (!FETCH[key] || FETCH[key][1] !== startAt) {\n if (shouldStartNewRequest) {\n if (isCurrentKeyMounted()) {\n getConfig().onDiscarded(key);\n }\n }\n return [2 /*return*/, false];\n }\n // Clear error.\n patchFetchInfo({\n error: UNDEFINED\n });\n newState.error = UNDEFINED;\n mutationInfo = MUTATION[key];\n if (!isUndefined(mutationInfo) &&\n // case 1\n (startAt <= mutationInfo[0] ||\n // case 2\n startAt <= mutationInfo[1] ||\n // case 3\n mutationInfo[1] === 0)) {\n finishRequestAndUpdateState();\n if (shouldStartNewRequest) {\n if (isCurrentKeyMounted()) {\n getConfig().onDiscarded(key);\n }\n }\n return [2 /*return*/, false];\n }\n // Deep compare with latest state to avoid extra re-renders.\n // For local state, compare and assign.\n if (!compare(stateRef.current.data, newData)) {\n newState.data = newData;\n }\n else {\n // data and newData are deeply equal\n // it should be safe to broadcast the stale data\n newState.data = stateRef.current.data;\n // At the end of this function, `brocastState` invokes the `onStateUpdate` function,\n // which takes care of avoiding the re-render\n }\n // For global state, it's possible that the key has changed.\n // https://github.com/vercel/swr/pull/1058\n if (!compare(cache.get(key), newData)) {\n cache.set(key, newData);\n }\n // Trigger the successful callback if it's the original request.\n if (shouldStartNewRequest) {\n if (isCurrentKeyMounted()) {\n getConfig().onSuccess(newData, key, config);\n }\n }\n return [3 /*break*/, 4];\n case 3:\n err_1 = _b.sent();\n cleanupState();\n // Not paused, we continue handling the error. Otherwise discard it.\n if (!getConfig().isPaused()) {\n // Get a new error, don't use deep comparison for errors.\n patchFetchInfo({ error: err_1 });\n newState.error = err_1;\n // Error event and retry logic. Only for the actual request, not\n // deduped ones.\n if (shouldStartNewRequest && isCurrentKeyMounted()) {\n getConfig().onError(err_1, key, config);\n if ((typeof config.shouldRetryOnError === 'boolean' &&\n config.shouldRetryOnError) ||\n (isFunction(config.shouldRetryOnError) &&\n config.shouldRetryOnError(err_1))) {\n // When retrying, dedupe is always enabled\n if (isActive()) {\n // If it's active, stop. It will auto revalidate when refocusing\n // or reconnecting.\n getConfig().onErrorRetry(err_1, key, config, revalidate, {\n retryCount: (opts.retryCount || 0) + 1,\n dedupe: true\n });\n }\n }\n }\n }\n return [3 /*break*/, 4];\n case 4:\n // Mark loading as stopped.\n loading = false;\n // Update the current hook's state.\n finishRequestAndUpdateState();\n // Here is the source of the request, need to tell all other hooks to\n // update their states.\n if (isCurrentKeyMounted() && shouldStartNewRequest) {\n broadcastState(cache, key, newState.data, newState.error, false);\n }\n return [2 /*return*/, true];\n }\n });\n }); }, \n // `setState` is immutable, and `eventsCallback`, `fnArgs`, `keyInfo`,\n // and `keyValidating` are depending on `key`, so we can exclude them from\n // the deps array.\n //\n // FIXME:\n // `fn` and `config` might be changed during the lifecycle,\n // but they might be changed every render like this.\n // `useSWR('key', () => fetch('/api/'), { suspense: true })`\n // So we omit the values from the deps array\n // even though it might cause unexpected behaviors.\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [key]);\n // Similar to the global mutate, but bound to the current cache and key.\n // `cache` isn't allowed to change during the lifecycle.\n // eslint-disable-next-line react-hooks/exhaustive-deps\n var boundMutate = useCallback(\n // By using `bind` we don't need to modify the size of the rest arguments.\n // Due to https://github.com/microsoft/TypeScript/issues/37181, we have to\n // cast it to any for now.\n internalMutate.bind(UNDEFINED, cache, function () { return keyRef.current; }), \n // eslint-disable-next-line react-hooks/exhaustive-deps\n []);\n // Always update fetcher and config refs.\n useIsomorphicLayoutEffect(function () {\n fetcherRef.current = fetcher;\n configRef.current = config;\n });\n // After mounted or key changed.\n useIsomorphicLayoutEffect(function () {\n if (!key)\n return;\n var keyChanged = key !== keyRef.current;\n var softRevalidate = revalidate.bind(UNDEFINED, WITH_DEDUPE);\n // Expose state updater to global event listeners. So we can update hook's\n // internal state from the outside.\n var onStateUpdate = function (updatedData, updatedError, updatedIsValidating) {\n setState(mergeObjects({\n error: updatedError,\n isValidating: updatedIsValidating\n }, \n // Since `setState` only shallowly compares states, we do a deep\n // comparison here.\n compare(stateRef.current.data, updatedData)\n ? UNDEFINED\n : {\n data: updatedData\n }));\n };\n // Expose revalidators to global event listeners. So we can trigger\n // revalidation from the outside.\n var nextFocusRevalidatedAt = 0;\n var onRevalidate = function (type) {\n if (type == FOCUS_EVENT) {\n var now = Date.now();\n if (getConfig().revalidateOnFocus &&\n now > nextFocusRevalidatedAt &&\n isActive()) {\n nextFocusRevalidatedAt = now + getConfig().focusThrottleInterval;\n softRevalidate();\n }\n }\n else if (type == RECONNECT_EVENT) {\n if (getConfig().revalidateOnReconnect && isActive()) {\n softRevalidate();\n }\n }\n else if (type == MUTATE_EVENT) {\n return revalidate();\n }\n return;\n };\n var unsubUpdate = subscribeCallback(key, STATE_UPDATERS, onStateUpdate);\n var unsubEvents = subscribeCallback(key, EVENT_REVALIDATORS, onRevalidate);\n // Mark the component as mounted and update corresponding refs.\n unmountedRef.current = false;\n keyRef.current = key;\n initialMountedRef.current = true;\n // When `key` updates, reset the state to the initial value\n // and trigger a rerender if necessary.\n if (keyChanged) {\n setState({\n data: data,\n error: error,\n isValidating: isValidating\n });\n }\n // Trigger a revalidation.\n if (shouldRevalidate()) {\n if (isUndefined(data) || IS_SERVER) {\n // Revalidate immediately.\n softRevalidate();\n }\n else {\n // Delay the revalidate if we have data to return so we won't block\n // rendering.\n rAF(softRevalidate);\n }\n }\n return function () {\n // Mark it as unmounted.\n unmountedRef.current = true;\n unsubUpdate();\n unsubEvents();\n };\n }, [key, revalidate]);\n // Polling\n useIsomorphicLayoutEffect(function () {\n var timer;\n function next() {\n // Use the passed interval\n // ...or invoke the function with the updated data to get the interval\n var interval = isFunction(refreshInterval)\n ? refreshInterval(data)\n : refreshInterval;\n // We only start next interval if `refreshInterval` is not 0, and:\n // - `force` is true, which is the start of polling\n // - or `timer` is not 0, which means the effect wasn't canceled\n if (interval && timer !== -1) {\n timer = setTimeout(execute, interval);\n }\n }\n function execute() {\n // Check if it's OK to execute:\n // Only revalidate when the page is visible, online and not errored.\n if (!stateRef.current.error &&\n (refreshWhenHidden || getConfig().isVisible()) &&\n (refreshWhenOffline || getConfig().isOnline())) {\n revalidate(WITH_DEDUPE).then(next);\n }\n else {\n // Schedule next interval to check again.\n next();\n }\n }\n next();\n return function () {\n if (timer) {\n clearTimeout(timer);\n timer = -1;\n }\n };\n }, [refreshInterval, refreshWhenHidden, refreshWhenOffline, revalidate]);\n // Display debug info in React DevTools.\n useDebugValue(data);\n // In Suspense mode, we can't return the empty `data` state.\n // If there is `error`, the `error` needs to be thrown to the error boundary.\n // If there is no `error`, the `revalidation` promise needs to be thrown to\n // the suspense boundary.\n if (suspense && isUndefined(data) && key) {\n // Always update fetcher and config refs even with the Suspense mode.\n fetcherRef.current = fetcher;\n configRef.current = config;\n unmountedRef.current = false;\n throw isUndefined(error) ? revalidate(WITH_DEDUPE) : error;\n }\n return {\n mutate: boundMutate,\n get data() {\n stateDependencies.data = true;\n return data;\n },\n get error() {\n stateDependencies.error = true;\n return error;\n },\n get isValidating() {\n stateDependencies.isValidating = true;\n return isValidating;\n }\n };\n};\nvar SWRConfig = OBJECT.defineProperty(SWRConfig$1, 'default', {\n value: defaultConfig\n});\nvar unstable_serialize = function (key) { return serialize(key)[0]; };\nvar useSWR = withArgs(useSWRHandler);\n\n// useSWR\n\nexport { SWRConfig, useSWR as default, mutate, unstable_serialize, useSWRConfig };\n","const locations = {\n\tlive: \"https://api.sonofun.live\",\n\tbeta: \"https://api.beta.sonofun.live\",\n\tlocal: `http://${window.location.host.split(\":\")[0]}:3000`,\n}\n\nconst frontendLocations = {\n\tlive: \"https://sonofun.live\",\n\tbeta: \"https://beta.sonofun.live\",\n\tlocal: `http://${window.location.host.split(\":\")[0]}:3001`,\n}\n\nlet location = locations.local\n\nlet frontendLocation = frontendLocations.local\nif (process.env.NODE_ENV === \"production\") {\n\tif (process.env.REACT_APP_STAGING === \"1\") {\n\t\tlocation = locations.beta\n\t\tfrontendLocation = frontendLocations.beta\n\t} else {\n\t\tlocation = locations.live\n\t\tfrontendLocation = frontendLocations.live\n\t}\n}\n\nexport const BASE_URL = location\nexport const FRONT_BASE_URL = frontendLocation\n","import { BASE_URL } from \"../constants/constants\"\n\nexport const formatUrl = (\n\turl: string,\n\tparameter?: Record\n) => {\n\tif (!parameter || parameter === null) {\n\t\treturn BASE_URL + url\n\t}\n\n\tObject.keys(parameter).forEach((key) =>\n\t\tparameter[key] === undefined ? delete parameter[key] : {}\n\t)\n\n\tconst esc = encodeURIComponent\n\tconst query = Object.keys(parameter)\n\t\t.map((k) => {\n\t\t\treturn esc(k) + \"=\" + esc(parameter[k])\n\t\t})\n\t\t.join(\"&\")\n\n\tlet final = url\n\tif (query.length > 0) {\n\t\tfinal += \"?\" + query\n\t}\n\n\tfinal = BASE_URL + final\n\n\treturn final\n}\n\nexport const formatObject = (obj: Record) => {\n\tlet copy = obj\n\tObject.keys(copy).forEach((key) =>\n\t\tcopy[key] === undefined ? delete copy[key] : {}\n\t)\n\n\treturn copy\n}\n","import { useErrorStore } from \"../state/stores/errorStore\"\nimport { formatUrl } from \"../utils/formatUrl\"\nimport { GlobalHistory } from \"../utils/history\"\n\n// General\n\nconst formatConfig = (\n\tbody?: BodyInit | Record,\n\tmethod?: string,\n\ttoken?: string\n) => {\n\tconst config: RequestInit = {\n\t\tmethod,\n\t}\n\tconst headers: Record = {}\n\n\tif (token) {\n\t\theaders[\"Authorization\"] = `Bearer ${token}`\n\t}\n\n\tif (body) {\n\t\tif (typeof body === \"string\" || Object.keys(body).length > 0) {\n\t\t\tconfig.body = JSON.stringify(body)\n\t\t} else {\n\t\t\tconfig.body = body as BodyInit\n\t\t}\n\t}\n\n\tif ((config.body && typeof config.body === \"string\") || !config.body) {\n\t\theaders[\"Content-Type\"] = \"application/json\"\n\t}\n\n\tconfig.headers = headers\n\n\treturn config\n}\n\n// Normal fetching\n\nexport const fetchNormal = async (\n\turl: string,\n\tbody?: BodyInit | Record,\n\tmethod = \"GET\"\n) => {\n\ttry {\n\t\tconst result = await fetch(url, formatConfig(body, method))\n\t\tconst json = await result.json()\n\t\tif (json.message) {\n\t\t\tthrow new Error(json.message)\n\t\t} else {\n\t\t\treturn json\n\t\t}\n\t} catch (error) {\n\t\tuseErrorStore.getState().update(error as Error)\n\t}\n}\n\nexport const fetchApi = async (\n\turl: string,\n\tbody?: BodyInit | Record,\n\tmethod = \"GET\"\n) => {\n\treturn fetchNormal(formatUrl(url), body, method)\n}\n\n// Authorized fetching\n\nconst fetchAuthorized = async (\n\turl: string,\n\ttoken: string,\n\tbody?: BodyInit | Record,\n\tmethod = \"GET\"\n) => {\n\ttry {\n\t\tconst result = await fetch(url, formatConfig(body, method, token))\n\t\tconst json = await result.json()\n\t\tif (json.message) {\n\t\t\tthrow new Error(json.message)\n\t\t} else {\n\t\t\treturn json\n\t\t}\n\t} catch (error) {\n\t\tuseErrorStore.getState().update(error as Error)\n\t}\n}\n\nconst _fetchAuthorized = async (\n\turl: string,\n\ttoken: string,\n\tbody?: BodyInit | Record,\n\tmethod = \"GET\"\n) => {\n\treturn fetchAuthorized(formatUrl(url), token, body, method)\n}\n\nexport const fetchApiAuthorized = async (\n\turl: string,\n\ttoken: string,\n\texpiresIn: number,\n\tbody?: BodyInit | Record,\n\tmethod = \"GET\"\n) => {\n\tconst now = new Date().getTime() / 1000 + 60\n\n\tif (expiresIn > now) {\n\t\treturn _fetchAuthorized(url, token, body, method)\n\t} else {\n\t\tGlobalHistory.replace(\n\t\t\tGlobalHistory.location.pathname.includes(\"moderator\")\n\t\t\t\t? \"/moderator/login\"\n\t\t\t\t: \"/join\"\n\t\t)\n\t}\n}\n","import * as cookie from 'cookie';\r\nexport function hasDocumentCookie() {\r\n // Can we get/set cookies on document.cookie?\r\n return typeof document === 'object' && typeof document.cookie === 'string';\r\n}\r\nexport function cleanCookies() {\r\n document.cookie.split(';').forEach(function (c) {\r\n document.cookie = c\r\n .replace(/^ +/, '')\r\n .replace(/=.*/, '=;expires=' + new Date().toUTCString() + ';path=/');\r\n });\r\n}\r\nexport function parseCookies(cookies, options) {\r\n if (typeof cookies === 'string') {\r\n return cookie.parse(cookies, options);\r\n }\r\n else if (typeof cookies === 'object' && cookies !== null) {\r\n return cookies;\r\n }\r\n else {\r\n return {};\r\n }\r\n}\r\nexport function isParsingCookie(value, doNotParse) {\r\n if (typeof doNotParse === 'undefined') {\r\n // We guess if the cookie start with { or [, it has been serialized\r\n doNotParse =\r\n !value || (value[0] !== '{' && value[0] !== '[' && value[0] !== '\"');\r\n }\r\n return !doNotParse;\r\n}\r\nexport function readCookie(value, options) {\r\n if (options === void 0) { options = {}; }\r\n var cleanValue = cleanupCookieValue(value);\r\n if (isParsingCookie(cleanValue, options.doNotParse)) {\r\n try {\r\n return JSON.parse(cleanValue);\r\n }\r\n catch (e) {\r\n // At least we tried\r\n }\r\n }\r\n // Ignore clean value if we failed the deserialization\r\n // It is not relevant anymore to trim those values\r\n return value;\r\n}\r\nfunction cleanupCookieValue(value) {\r\n // express prepend j: before serializing a cookie\r\n if (value && value[0] === 'j' && value[1] === ':') {\r\n return value.substr(2);\r\n }\r\n return value;\r\n}\r\n","/**\n * @license\n * Copyright 2010-2022 Three.js Authors\n * SPDX-License-Identifier: MIT\n */\nconst REVISION = '141';\nconst MOUSE = { LEFT: 0, MIDDLE: 1, RIGHT: 2, ROTATE: 0, DOLLY: 1, PAN: 2 };\nconst TOUCH = { ROTATE: 0, PAN: 1, DOLLY_PAN: 2, DOLLY_ROTATE: 3 };\nconst CullFaceNone = 0;\nconst CullFaceBack = 1;\nconst CullFaceFront = 2;\nconst CullFaceFrontBack = 3;\nconst BasicShadowMap = 0;\nconst PCFShadowMap = 1;\nconst PCFSoftShadowMap = 2;\nconst VSMShadowMap = 3;\nconst FrontSide = 0;\nconst BackSide = 1;\nconst DoubleSide = 2;\nconst FlatShading = 1;\nconst SmoothShading = 2;\nconst NoBlending = 0;\nconst NormalBlending = 1;\nconst AdditiveBlending = 2;\nconst SubtractiveBlending = 3;\nconst MultiplyBlending = 4;\nconst CustomBlending = 5;\nconst AddEquation = 100;\nconst SubtractEquation = 101;\nconst ReverseSubtractEquation = 102;\nconst MinEquation = 103;\nconst MaxEquation = 104;\nconst ZeroFactor = 200;\nconst OneFactor = 201;\nconst SrcColorFactor = 202;\nconst OneMinusSrcColorFactor = 203;\nconst SrcAlphaFactor = 204;\nconst OneMinusSrcAlphaFactor = 205;\nconst DstAlphaFactor = 206;\nconst OneMinusDstAlphaFactor = 207;\nconst DstColorFactor = 208;\nconst OneMinusDstColorFactor = 209;\nconst SrcAlphaSaturateFactor = 210;\nconst NeverDepth = 0;\nconst AlwaysDepth = 1;\nconst LessDepth = 2;\nconst LessEqualDepth = 3;\nconst EqualDepth = 4;\nconst GreaterEqualDepth = 5;\nconst GreaterDepth = 6;\nconst NotEqualDepth = 7;\nconst MultiplyOperation = 0;\nconst MixOperation = 1;\nconst AddOperation = 2;\nconst NoToneMapping = 0;\nconst LinearToneMapping = 1;\nconst ReinhardToneMapping = 2;\nconst CineonToneMapping = 3;\nconst ACESFilmicToneMapping = 4;\nconst CustomToneMapping = 5;\n\nconst UVMapping = 300;\nconst CubeReflectionMapping = 301;\nconst CubeRefractionMapping = 302;\nconst EquirectangularReflectionMapping = 303;\nconst EquirectangularRefractionMapping = 304;\nconst CubeUVReflectionMapping = 306;\nconst RepeatWrapping = 1000;\nconst ClampToEdgeWrapping = 1001;\nconst MirroredRepeatWrapping = 1002;\nconst NearestFilter = 1003;\nconst NearestMipmapNearestFilter = 1004;\nconst NearestMipMapNearestFilter = 1004;\nconst NearestMipmapLinearFilter = 1005;\nconst NearestMipMapLinearFilter = 1005;\nconst LinearFilter = 1006;\nconst LinearMipmapNearestFilter = 1007;\nconst LinearMipMapNearestFilter = 1007;\nconst LinearMipmapLinearFilter = 1008;\nconst LinearMipMapLinearFilter = 1008;\nconst UnsignedByteType = 1009;\nconst ByteType = 1010;\nconst ShortType = 1011;\nconst UnsignedShortType = 1012;\nconst IntType = 1013;\nconst UnsignedIntType = 1014;\nconst FloatType = 1015;\nconst HalfFloatType = 1016;\nconst UnsignedShort4444Type = 1017;\nconst UnsignedShort5551Type = 1018;\nconst UnsignedInt248Type = 1020;\nconst AlphaFormat = 1021;\nconst RGBFormat = 1022;\nconst RGBAFormat = 1023;\nconst LuminanceFormat = 1024;\nconst LuminanceAlphaFormat = 1025;\nconst DepthFormat = 1026;\nconst DepthStencilFormat = 1027;\nconst RedFormat = 1028;\nconst RedIntegerFormat = 1029;\nconst RGFormat = 1030;\nconst RGIntegerFormat = 1031;\nconst RGBAIntegerFormat = 1033;\n\nconst RGB_S3TC_DXT1_Format = 33776;\nconst RGBA_S3TC_DXT1_Format = 33777;\nconst RGBA_S3TC_DXT3_Format = 33778;\nconst RGBA_S3TC_DXT5_Format = 33779;\nconst RGB_PVRTC_4BPPV1_Format = 35840;\nconst RGB_PVRTC_2BPPV1_Format = 35841;\nconst RGBA_PVRTC_4BPPV1_Format = 35842;\nconst RGBA_PVRTC_2BPPV1_Format = 35843;\nconst RGB_ETC1_Format = 36196;\nconst RGB_ETC2_Format = 37492;\nconst RGBA_ETC2_EAC_Format = 37496;\nconst RGBA_ASTC_4x4_Format = 37808;\nconst RGBA_ASTC_5x4_Format = 37809;\nconst RGBA_ASTC_5x5_Format = 37810;\nconst RGBA_ASTC_6x5_Format = 37811;\nconst RGBA_ASTC_6x6_Format = 37812;\nconst RGBA_ASTC_8x5_Format = 37813;\nconst RGBA_ASTC_8x6_Format = 37814;\nconst RGBA_ASTC_8x8_Format = 37815;\nconst RGBA_ASTC_10x5_Format = 37816;\nconst RGBA_ASTC_10x6_Format = 37817;\nconst RGBA_ASTC_10x8_Format = 37818;\nconst RGBA_ASTC_10x10_Format = 37819;\nconst RGBA_ASTC_12x10_Format = 37820;\nconst RGBA_ASTC_12x12_Format = 37821;\nconst RGBA_BPTC_Format = 36492;\nconst LoopOnce = 2200;\nconst LoopRepeat = 2201;\nconst LoopPingPong = 2202;\nconst InterpolateDiscrete = 2300;\nconst InterpolateLinear = 2301;\nconst InterpolateSmooth = 2302;\nconst ZeroCurvatureEnding = 2400;\nconst ZeroSlopeEnding = 2401;\nconst WrapAroundEnding = 2402;\nconst NormalAnimationBlendMode = 2500;\nconst AdditiveAnimationBlendMode = 2501;\nconst TrianglesDrawMode = 0;\nconst TriangleStripDrawMode = 1;\nconst TriangleFanDrawMode = 2;\nconst LinearEncoding = 3000;\nconst sRGBEncoding = 3001;\nconst BasicDepthPacking = 3200;\nconst RGBADepthPacking = 3201;\nconst TangentSpaceNormalMap = 0;\nconst ObjectSpaceNormalMap = 1;\n\n// Color space string identifiers, matching CSS Color Module Level 4 and WebGPU names where available.\nconst NoColorSpace = '';\nconst SRGBColorSpace = 'srgb';\nconst LinearSRGBColorSpace = 'srgb-linear';\n\nconst ZeroStencilOp = 0;\nconst KeepStencilOp = 7680;\nconst ReplaceStencilOp = 7681;\nconst IncrementStencilOp = 7682;\nconst DecrementStencilOp = 7683;\nconst IncrementWrapStencilOp = 34055;\nconst DecrementWrapStencilOp = 34056;\nconst InvertStencilOp = 5386;\n\nconst NeverStencilFunc = 512;\nconst LessStencilFunc = 513;\nconst EqualStencilFunc = 514;\nconst LessEqualStencilFunc = 515;\nconst GreaterStencilFunc = 516;\nconst NotEqualStencilFunc = 517;\nconst GreaterEqualStencilFunc = 518;\nconst AlwaysStencilFunc = 519;\n\nconst StaticDrawUsage = 35044;\nconst DynamicDrawUsage = 35048;\nconst StreamDrawUsage = 35040;\nconst StaticReadUsage = 35045;\nconst DynamicReadUsage = 35049;\nconst StreamReadUsage = 35041;\nconst StaticCopyUsage = 35046;\nconst DynamicCopyUsage = 35050;\nconst StreamCopyUsage = 35042;\n\nconst GLSL1 = '100';\nconst GLSL3 = '300 es';\n\nconst _SRGBAFormat = 1035; // fallback for WebGL 1\n\n/**\n * https://github.com/mrdoob/eventdispatcher.js/\n */\n\nclass EventDispatcher {\n\n\taddEventListener( type, listener ) {\n\n\t\tif ( this._listeners === undefined ) this._listeners = {};\n\n\t\tconst listeners = this._listeners;\n\n\t\tif ( listeners[ type ] === undefined ) {\n\n\t\t\tlisteners[ type ] = [];\n\n\t\t}\n\n\t\tif ( listeners[ type ].indexOf( listener ) === - 1 ) {\n\n\t\t\tlisteners[ type ].push( listener );\n\n\t\t}\n\n\t}\n\n\thasEventListener( type, listener ) {\n\n\t\tif ( this._listeners === undefined ) return false;\n\n\t\tconst listeners = this._listeners;\n\n\t\treturn listeners[ type ] !== undefined && listeners[ type ].indexOf( listener ) !== - 1;\n\n\t}\n\n\tremoveEventListener( type, listener ) {\n\n\t\tif ( this._listeners === undefined ) return;\n\n\t\tconst listeners = this._listeners;\n\t\tconst listenerArray = listeners[ type ];\n\n\t\tif ( listenerArray !== undefined ) {\n\n\t\t\tconst index = listenerArray.indexOf( listener );\n\n\t\t\tif ( index !== - 1 ) {\n\n\t\t\t\tlistenerArray.splice( index, 1 );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tdispatchEvent( event ) {\n\n\t\tif ( this._listeners === undefined ) return;\n\n\t\tconst listeners = this._listeners;\n\t\tconst listenerArray = listeners[ event.type ];\n\n\t\tif ( listenerArray !== undefined ) {\n\n\t\t\tevent.target = this;\n\n\t\t\t// Make a copy, in case listeners are removed while iterating.\n\t\t\tconst array = listenerArray.slice( 0 );\n\n\t\t\tfor ( let i = 0, l = array.length; i < l; i ++ ) {\n\n\t\t\t\tarray[ i ].call( this, event );\n\n\t\t\t}\n\n\t\t\tevent.target = null;\n\n\t\t}\n\n\t}\n\n}\n\nconst _lut = [];\n\nfor ( let i = 0; i < 256; i ++ ) {\n\n\t_lut[ i ] = ( i < 16 ? '0' : '' ) + ( i ).toString( 16 );\n\n}\n\nlet _seed = 1234567;\n\n\nconst DEG2RAD = Math.PI / 180;\nconst RAD2DEG = 180 / Math.PI;\n\n// http://stackoverflow.com/questions/105034/how-to-create-a-guid-uuid-in-javascript/21963136#21963136\nfunction generateUUID() {\n\n\tconst d0 = Math.random() * 0xffffffff | 0;\n\tconst d1 = Math.random() * 0xffffffff | 0;\n\tconst d2 = Math.random() * 0xffffffff | 0;\n\tconst d3 = Math.random() * 0xffffffff | 0;\n\tconst uuid = _lut[ d0 & 0xff ] + _lut[ d0 >> 8 & 0xff ] + _lut[ d0 >> 16 & 0xff ] + _lut[ d0 >> 24 & 0xff ] + '-' +\n\t\t\t_lut[ d1 & 0xff ] + _lut[ d1 >> 8 & 0xff ] + '-' + _lut[ d1 >> 16 & 0x0f | 0x40 ] + _lut[ d1 >> 24 & 0xff ] + '-' +\n\t\t\t_lut[ d2 & 0x3f | 0x80 ] + _lut[ d2 >> 8 & 0xff ] + '-' + _lut[ d2 >> 16 & 0xff ] + _lut[ d2 >> 24 & 0xff ] +\n\t\t\t_lut[ d3 & 0xff ] + _lut[ d3 >> 8 & 0xff ] + _lut[ d3 >> 16 & 0xff ] + _lut[ d3 >> 24 & 0xff ];\n\n\t// .toLowerCase() here flattens concatenated strings to save heap memory space.\n\treturn uuid.toLowerCase();\n\n}\n\nfunction clamp( value, min, max ) {\n\n\treturn Math.max( min, Math.min( max, value ) );\n\n}\n\n// compute euclidean modulo of m % n\n// https://en.wikipedia.org/wiki/Modulo_operation\nfunction euclideanModulo( n, m ) {\n\n\treturn ( ( n % m ) + m ) % m;\n\n}\n\n// Linear mapping from range to range \nfunction mapLinear( x, a1, a2, b1, b2 ) {\n\n\treturn b1 + ( x - a1 ) * ( b2 - b1 ) / ( a2 - a1 );\n\n}\n\n// https://www.gamedev.net/tutorials/programming/general-and-gameplay-programming/inverse-lerp-a-super-useful-yet-often-overlooked-function-r5230/\nfunction inverseLerp( x, y, value ) {\n\n\tif ( x !== y ) {\n\n\t\treturn ( value - x ) / ( y - x );\n\n\t} else {\n\n\t\treturn 0;\n\n\t}\n\n}\n\n// https://en.wikipedia.org/wiki/Linear_interpolation\nfunction lerp( x, y, t ) {\n\n\treturn ( 1 - t ) * x + t * y;\n\n}\n\n// http://www.rorydriscoll.com/2016/03/07/frame-rate-independent-damping-using-lerp/\nfunction damp( x, y, lambda, dt ) {\n\n\treturn lerp( x, y, 1 - Math.exp( - lambda * dt ) );\n\n}\n\n// https://www.desmos.com/calculator/vcsjnyz7x4\nfunction pingpong( x, length = 1 ) {\n\n\treturn length - Math.abs( euclideanModulo( x, length * 2 ) - length );\n\n}\n\n// http://en.wikipedia.org/wiki/Smoothstep\nfunction smoothstep( x, min, max ) {\n\n\tif ( x <= min ) return 0;\n\tif ( x >= max ) return 1;\n\n\tx = ( x - min ) / ( max - min );\n\n\treturn x * x * ( 3 - 2 * x );\n\n}\n\nfunction smootherstep( x, min, max ) {\n\n\tif ( x <= min ) return 0;\n\tif ( x >= max ) return 1;\n\n\tx = ( x - min ) / ( max - min );\n\n\treturn x * x * x * ( x * ( x * 6 - 15 ) + 10 );\n\n}\n\n// Random integer from interval\nfunction randInt( low, high ) {\n\n\treturn low + Math.floor( Math.random() * ( high - low + 1 ) );\n\n}\n\n// Random float from interval\nfunction randFloat( low, high ) {\n\n\treturn low + Math.random() * ( high - low );\n\n}\n\n// Random float from <-range/2, range/2> interval\nfunction randFloatSpread( range ) {\n\n\treturn range * ( 0.5 - Math.random() );\n\n}\n\n// Deterministic pseudo-random float in the interval [ 0, 1 ]\nfunction seededRandom( s ) {\n\n\tif ( s !== undefined ) _seed = s;\n\n\t// Mulberry32 generator\n\n\tlet t = _seed += 0x6D2B79F5;\n\n\tt = Math.imul( t ^ t >>> 15, t | 1 );\n\n\tt ^= t + Math.imul( t ^ t >>> 7, t | 61 );\n\n\treturn ( ( t ^ t >>> 14 ) >>> 0 ) / 4294967296;\n\n}\n\nfunction degToRad( degrees ) {\n\n\treturn degrees * DEG2RAD;\n\n}\n\nfunction radToDeg( radians ) {\n\n\treturn radians * RAD2DEG;\n\n}\n\nfunction isPowerOfTwo( value ) {\n\n\treturn ( value & ( value - 1 ) ) === 0 && value !== 0;\n\n}\n\nfunction ceilPowerOfTwo( value ) {\n\n\treturn Math.pow( 2, Math.ceil( Math.log( value ) / Math.LN2 ) );\n\n}\n\nfunction floorPowerOfTwo( value ) {\n\n\treturn Math.pow( 2, Math.floor( Math.log( value ) / Math.LN2 ) );\n\n}\n\nfunction setQuaternionFromProperEuler( q, a, b, c, order ) {\n\n\t// Intrinsic Proper Euler Angles - see https://en.wikipedia.org/wiki/Euler_angles\n\n\t// rotations are applied to the axes in the order specified by 'order'\n\t// rotation by angle 'a' is applied first, then by angle 'b', then by angle 'c'\n\t// angles are in radians\n\n\tconst cos = Math.cos;\n\tconst sin = Math.sin;\n\n\tconst c2 = cos( b / 2 );\n\tconst s2 = sin( b / 2 );\n\n\tconst c13 = cos( ( a + c ) / 2 );\n\tconst s13 = sin( ( a + c ) / 2 );\n\n\tconst c1_3 = cos( ( a - c ) / 2 );\n\tconst s1_3 = sin( ( a - c ) / 2 );\n\n\tconst c3_1 = cos( ( c - a ) / 2 );\n\tconst s3_1 = sin( ( c - a ) / 2 );\n\n\tswitch ( order ) {\n\n\t\tcase 'XYX':\n\t\t\tq.set( c2 * s13, s2 * c1_3, s2 * s1_3, c2 * c13 );\n\t\t\tbreak;\n\n\t\tcase 'YZY':\n\t\t\tq.set( s2 * s1_3, c2 * s13, s2 * c1_3, c2 * c13 );\n\t\t\tbreak;\n\n\t\tcase 'ZXZ':\n\t\t\tq.set( s2 * c1_3, s2 * s1_3, c2 * s13, c2 * c13 );\n\t\t\tbreak;\n\n\t\tcase 'XZX':\n\t\t\tq.set( c2 * s13, s2 * s3_1, s2 * c3_1, c2 * c13 );\n\t\t\tbreak;\n\n\t\tcase 'YXY':\n\t\t\tq.set( s2 * c3_1, c2 * s13, s2 * s3_1, c2 * c13 );\n\t\t\tbreak;\n\n\t\tcase 'ZYZ':\n\t\t\tq.set( s2 * s3_1, s2 * c3_1, c2 * s13, c2 * c13 );\n\t\t\tbreak;\n\n\t\tdefault:\n\t\t\tconsole.warn( 'THREE.MathUtils: .setQuaternionFromProperEuler() encountered an unknown order: ' + order );\n\n\t}\n\n}\n\nfunction denormalize$1( value, array ) {\n\n\tswitch ( array.constructor ) {\n\n\t\tcase Float32Array:\n\n\t\t\treturn value;\n\n\t\tcase Uint16Array:\n\n\t\t\treturn value / 65535.0;\n\n\t\tcase Uint8Array:\n\n\t\t\treturn value / 255.0;\n\n\t\tcase Int16Array:\n\n\t\t\treturn Math.max( value / 32767.0, - 1.0 );\n\n\t\tcase Int8Array:\n\n\t\t\treturn Math.max( value / 127.0, - 1.0 );\n\n\t\tdefault:\n\n\t\t\tthrow new Error( 'Invalid component type.' );\n\n\t}\n\n}\n\nfunction normalize( value, array ) {\n\n\tswitch ( array.constructor ) {\n\n\t\tcase Float32Array:\n\n\t\t\treturn value;\n\n\t\tcase Uint16Array:\n\n\t\t\treturn Math.round( value * 65535.0 );\n\n\t\tcase Uint8Array:\n\n\t\t\treturn Math.round( value * 255.0 );\n\n\t\tcase Int16Array:\n\n\t\t\treturn Math.round( value * 32767.0 );\n\n\t\tcase Int8Array:\n\n\t\t\treturn Math.round( value * 127.0 );\n\n\t\tdefault:\n\n\t\t\tthrow new Error( 'Invalid component type.' );\n\n\t}\n\n}\n\nvar MathUtils = /*#__PURE__*/Object.freeze({\n\t__proto__: null,\n\tDEG2RAD: DEG2RAD,\n\tRAD2DEG: RAD2DEG,\n\tgenerateUUID: generateUUID,\n\tclamp: clamp,\n\teuclideanModulo: euclideanModulo,\n\tmapLinear: mapLinear,\n\tinverseLerp: inverseLerp,\n\tlerp: lerp,\n\tdamp: damp,\n\tpingpong: pingpong,\n\tsmoothstep: smoothstep,\n\tsmootherstep: smootherstep,\n\trandInt: randInt,\n\trandFloat: randFloat,\n\trandFloatSpread: randFloatSpread,\n\tseededRandom: seededRandom,\n\tdegToRad: degToRad,\n\tradToDeg: radToDeg,\n\tisPowerOfTwo: isPowerOfTwo,\n\tceilPowerOfTwo: ceilPowerOfTwo,\n\tfloorPowerOfTwo: floorPowerOfTwo,\n\tsetQuaternionFromProperEuler: setQuaternionFromProperEuler,\n\tnormalize: normalize,\n\tdenormalize: denormalize$1\n});\n\nclass Vector2 {\n\n\tconstructor( x = 0, y = 0 ) {\n\n\t\tthis.isVector2 = true;\n\n\t\tthis.x = x;\n\t\tthis.y = y;\n\n\t}\n\n\tget width() {\n\n\t\treturn this.x;\n\n\t}\n\n\tset width( value ) {\n\n\t\tthis.x = value;\n\n\t}\n\n\tget height() {\n\n\t\treturn this.y;\n\n\t}\n\n\tset height( value ) {\n\n\t\tthis.y = value;\n\n\t}\n\n\tset( x, y ) {\n\n\t\tthis.x = x;\n\t\tthis.y = y;\n\n\t\treturn this;\n\n\t}\n\n\tsetScalar( scalar ) {\n\n\t\tthis.x = scalar;\n\t\tthis.y = scalar;\n\n\t\treturn this;\n\n\t}\n\n\tsetX( x ) {\n\n\t\tthis.x = x;\n\n\t\treturn this;\n\n\t}\n\n\tsetY( y ) {\n\n\t\tthis.y = y;\n\n\t\treturn this;\n\n\t}\n\n\tsetComponent( index, value ) {\n\n\t\tswitch ( index ) {\n\n\t\t\tcase 0: this.x = value; break;\n\t\t\tcase 1: this.y = value; break;\n\t\t\tdefault: throw new Error( 'index is out of range: ' + index );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tgetComponent( index ) {\n\n\t\tswitch ( index ) {\n\n\t\t\tcase 0: return this.x;\n\t\t\tcase 1: return this.y;\n\t\t\tdefault: throw new Error( 'index is out of range: ' + index );\n\n\t\t}\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor( this.x, this.y );\n\n\t}\n\n\tcopy( v ) {\n\n\t\tthis.x = v.x;\n\t\tthis.y = v.y;\n\n\t\treturn this;\n\n\t}\n\n\tadd( v, w ) {\n\n\t\tif ( w !== undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Vector2: .add() now only accepts one argument. Use .addVectors( a, b ) instead.' );\n\t\t\treturn this.addVectors( v, w );\n\n\t\t}\n\n\t\tthis.x += v.x;\n\t\tthis.y += v.y;\n\n\t\treturn this;\n\n\t}\n\n\taddScalar( s ) {\n\n\t\tthis.x += s;\n\t\tthis.y += s;\n\n\t\treturn this;\n\n\t}\n\n\taddVectors( a, b ) {\n\n\t\tthis.x = a.x + b.x;\n\t\tthis.y = a.y + b.y;\n\n\t\treturn this;\n\n\t}\n\n\taddScaledVector( v, s ) {\n\n\t\tthis.x += v.x * s;\n\t\tthis.y += v.y * s;\n\n\t\treturn this;\n\n\t}\n\n\tsub( v, w ) {\n\n\t\tif ( w !== undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Vector2: .sub() now only accepts one argument. Use .subVectors( a, b ) instead.' );\n\t\t\treturn this.subVectors( v, w );\n\n\t\t}\n\n\t\tthis.x -= v.x;\n\t\tthis.y -= v.y;\n\n\t\treturn this;\n\n\t}\n\n\tsubScalar( s ) {\n\n\t\tthis.x -= s;\n\t\tthis.y -= s;\n\n\t\treturn this;\n\n\t}\n\n\tsubVectors( a, b ) {\n\n\t\tthis.x = a.x - b.x;\n\t\tthis.y = a.y - b.y;\n\n\t\treturn this;\n\n\t}\n\n\tmultiply( v ) {\n\n\t\tthis.x *= v.x;\n\t\tthis.y *= v.y;\n\n\t\treturn this;\n\n\t}\n\n\tmultiplyScalar( scalar ) {\n\n\t\tthis.x *= scalar;\n\t\tthis.y *= scalar;\n\n\t\treturn this;\n\n\t}\n\n\tdivide( v ) {\n\n\t\tthis.x /= v.x;\n\t\tthis.y /= v.y;\n\n\t\treturn this;\n\n\t}\n\n\tdivideScalar( scalar ) {\n\n\t\treturn this.multiplyScalar( 1 / scalar );\n\n\t}\n\n\tapplyMatrix3( m ) {\n\n\t\tconst x = this.x, y = this.y;\n\t\tconst e = m.elements;\n\n\t\tthis.x = e[ 0 ] * x + e[ 3 ] * y + e[ 6 ];\n\t\tthis.y = e[ 1 ] * x + e[ 4 ] * y + e[ 7 ];\n\n\t\treturn this;\n\n\t}\n\n\tmin( v ) {\n\n\t\tthis.x = Math.min( this.x, v.x );\n\t\tthis.y = Math.min( this.y, v.y );\n\n\t\treturn this;\n\n\t}\n\n\tmax( v ) {\n\n\t\tthis.x = Math.max( this.x, v.x );\n\t\tthis.y = Math.max( this.y, v.y );\n\n\t\treturn this;\n\n\t}\n\n\tclamp( min, max ) {\n\n\t\t// assumes min < max, componentwise\n\n\t\tthis.x = Math.max( min.x, Math.min( max.x, this.x ) );\n\t\tthis.y = Math.max( min.y, Math.min( max.y, this.y ) );\n\n\t\treturn this;\n\n\t}\n\n\tclampScalar( minVal, maxVal ) {\n\n\t\tthis.x = Math.max( minVal, Math.min( maxVal, this.x ) );\n\t\tthis.y = Math.max( minVal, Math.min( maxVal, this.y ) );\n\n\t\treturn this;\n\n\t}\n\n\tclampLength( min, max ) {\n\n\t\tconst length = this.length();\n\n\t\treturn this.divideScalar( length || 1 ).multiplyScalar( Math.max( min, Math.min( max, length ) ) );\n\n\t}\n\n\tfloor() {\n\n\t\tthis.x = Math.floor( this.x );\n\t\tthis.y = Math.floor( this.y );\n\n\t\treturn this;\n\n\t}\n\n\tceil() {\n\n\t\tthis.x = Math.ceil( this.x );\n\t\tthis.y = Math.ceil( this.y );\n\n\t\treturn this;\n\n\t}\n\n\tround() {\n\n\t\tthis.x = Math.round( this.x );\n\t\tthis.y = Math.round( this.y );\n\n\t\treturn this;\n\n\t}\n\n\troundToZero() {\n\n\t\tthis.x = ( this.x < 0 ) ? Math.ceil( this.x ) : Math.floor( this.x );\n\t\tthis.y = ( this.y < 0 ) ? Math.ceil( this.y ) : Math.floor( this.y );\n\n\t\treturn this;\n\n\t}\n\n\tnegate() {\n\n\t\tthis.x = - this.x;\n\t\tthis.y = - this.y;\n\n\t\treturn this;\n\n\t}\n\n\tdot( v ) {\n\n\t\treturn this.x * v.x + this.y * v.y;\n\n\t}\n\n\tcross( v ) {\n\n\t\treturn this.x * v.y - this.y * v.x;\n\n\t}\n\n\tlengthSq() {\n\n\t\treturn this.x * this.x + this.y * this.y;\n\n\t}\n\n\tlength() {\n\n\t\treturn Math.sqrt( this.x * this.x + this.y * this.y );\n\n\t}\n\n\tmanhattanLength() {\n\n\t\treturn Math.abs( this.x ) + Math.abs( this.y );\n\n\t}\n\n\tnormalize() {\n\n\t\treturn this.divideScalar( this.length() || 1 );\n\n\t}\n\n\tangle() {\n\n\t\t// computes the angle in radians with respect to the positive x-axis\n\n\t\tconst angle = Math.atan2( - this.y, - this.x ) + Math.PI;\n\n\t\treturn angle;\n\n\t}\n\n\tdistanceTo( v ) {\n\n\t\treturn Math.sqrt( this.distanceToSquared( v ) );\n\n\t}\n\n\tdistanceToSquared( v ) {\n\n\t\tconst dx = this.x - v.x, dy = this.y - v.y;\n\t\treturn dx * dx + dy * dy;\n\n\t}\n\n\tmanhattanDistanceTo( v ) {\n\n\t\treturn Math.abs( this.x - v.x ) + Math.abs( this.y - v.y );\n\n\t}\n\n\tsetLength( length ) {\n\n\t\treturn this.normalize().multiplyScalar( length );\n\n\t}\n\n\tlerp( v, alpha ) {\n\n\t\tthis.x += ( v.x - this.x ) * alpha;\n\t\tthis.y += ( v.y - this.y ) * alpha;\n\n\t\treturn this;\n\n\t}\n\n\tlerpVectors( v1, v2, alpha ) {\n\n\t\tthis.x = v1.x + ( v2.x - v1.x ) * alpha;\n\t\tthis.y = v1.y + ( v2.y - v1.y ) * alpha;\n\n\t\treturn this;\n\n\t}\n\n\tequals( v ) {\n\n\t\treturn ( ( v.x === this.x ) && ( v.y === this.y ) );\n\n\t}\n\n\tfromArray( array, offset = 0 ) {\n\n\t\tthis.x = array[ offset ];\n\t\tthis.y = array[ offset + 1 ];\n\n\t\treturn this;\n\n\t}\n\n\ttoArray( array = [], offset = 0 ) {\n\n\t\tarray[ offset ] = this.x;\n\t\tarray[ offset + 1 ] = this.y;\n\n\t\treturn array;\n\n\t}\n\n\tfromBufferAttribute( attribute, index, offset ) {\n\n\t\tif ( offset !== undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Vector2: offset has been removed from .fromBufferAttribute().' );\n\n\t\t}\n\n\t\tthis.x = attribute.getX( index );\n\t\tthis.y = attribute.getY( index );\n\n\t\treturn this;\n\n\t}\n\n\trotateAround( center, angle ) {\n\n\t\tconst c = Math.cos( angle ), s = Math.sin( angle );\n\n\t\tconst x = this.x - center.x;\n\t\tconst y = this.y - center.y;\n\n\t\tthis.x = x * c - y * s + center.x;\n\t\tthis.y = x * s + y * c + center.y;\n\n\t\treturn this;\n\n\t}\n\n\trandom() {\n\n\t\tthis.x = Math.random();\n\t\tthis.y = Math.random();\n\n\t\treturn this;\n\n\t}\n\n\t*[ Symbol.iterator ]() {\n\n\t\tyield this.x;\n\t\tyield this.y;\n\n\t}\n\n}\n\nclass Matrix3 {\n\n\tconstructor() {\n\n\t\tthis.isMatrix3 = true;\n\n\t\tthis.elements = [\n\n\t\t\t1, 0, 0,\n\t\t\t0, 1, 0,\n\t\t\t0, 0, 1\n\n\t\t];\n\n\t\tif ( arguments.length > 0 ) {\n\n\t\t\tconsole.error( 'THREE.Matrix3: the constructor no longer reads arguments. use .set() instead.' );\n\n\t\t}\n\n\t}\n\n\tset( n11, n12, n13, n21, n22, n23, n31, n32, n33 ) {\n\n\t\tconst te = this.elements;\n\n\t\tte[ 0 ] = n11; te[ 1 ] = n21; te[ 2 ] = n31;\n\t\tte[ 3 ] = n12; te[ 4 ] = n22; te[ 5 ] = n32;\n\t\tte[ 6 ] = n13; te[ 7 ] = n23; te[ 8 ] = n33;\n\n\t\treturn this;\n\n\t}\n\n\tidentity() {\n\n\t\tthis.set(\n\n\t\t\t1, 0, 0,\n\t\t\t0, 1, 0,\n\t\t\t0, 0, 1\n\n\t\t);\n\n\t\treturn this;\n\n\t}\n\n\tcopy( m ) {\n\n\t\tconst te = this.elements;\n\t\tconst me = m.elements;\n\n\t\tte[ 0 ] = me[ 0 ]; te[ 1 ] = me[ 1 ]; te[ 2 ] = me[ 2 ];\n\t\tte[ 3 ] = me[ 3 ]; te[ 4 ] = me[ 4 ]; te[ 5 ] = me[ 5 ];\n\t\tte[ 6 ] = me[ 6 ]; te[ 7 ] = me[ 7 ]; te[ 8 ] = me[ 8 ];\n\n\t\treturn this;\n\n\t}\n\n\textractBasis( xAxis, yAxis, zAxis ) {\n\n\t\txAxis.setFromMatrix3Column( this, 0 );\n\t\tyAxis.setFromMatrix3Column( this, 1 );\n\t\tzAxis.setFromMatrix3Column( this, 2 );\n\n\t\treturn this;\n\n\t}\n\n\tsetFromMatrix4( m ) {\n\n\t\tconst me = m.elements;\n\n\t\tthis.set(\n\n\t\t\tme[ 0 ], me[ 4 ], me[ 8 ],\n\t\t\tme[ 1 ], me[ 5 ], me[ 9 ],\n\t\t\tme[ 2 ], me[ 6 ], me[ 10 ]\n\n\t\t);\n\n\t\treturn this;\n\n\t}\n\n\tmultiply( m ) {\n\n\t\treturn this.multiplyMatrices( this, m );\n\n\t}\n\n\tpremultiply( m ) {\n\n\t\treturn this.multiplyMatrices( m, this );\n\n\t}\n\n\tmultiplyMatrices( a, b ) {\n\n\t\tconst ae = a.elements;\n\t\tconst be = b.elements;\n\t\tconst te = this.elements;\n\n\t\tconst a11 = ae[ 0 ], a12 = ae[ 3 ], a13 = ae[ 6 ];\n\t\tconst a21 = ae[ 1 ], a22 = ae[ 4 ], a23 = ae[ 7 ];\n\t\tconst a31 = ae[ 2 ], a32 = ae[ 5 ], a33 = ae[ 8 ];\n\n\t\tconst b11 = be[ 0 ], b12 = be[ 3 ], b13 = be[ 6 ];\n\t\tconst b21 = be[ 1 ], b22 = be[ 4 ], b23 = be[ 7 ];\n\t\tconst b31 = be[ 2 ], b32 = be[ 5 ], b33 = be[ 8 ];\n\n\t\tte[ 0 ] = a11 * b11 + a12 * b21 + a13 * b31;\n\t\tte[ 3 ] = a11 * b12 + a12 * b22 + a13 * b32;\n\t\tte[ 6 ] = a11 * b13 + a12 * b23 + a13 * b33;\n\n\t\tte[ 1 ] = a21 * b11 + a22 * b21 + a23 * b31;\n\t\tte[ 4 ] = a21 * b12 + a22 * b22 + a23 * b32;\n\t\tte[ 7 ] = a21 * b13 + a22 * b23 + a23 * b33;\n\n\t\tte[ 2 ] = a31 * b11 + a32 * b21 + a33 * b31;\n\t\tte[ 5 ] = a31 * b12 + a32 * b22 + a33 * b32;\n\t\tte[ 8 ] = a31 * b13 + a32 * b23 + a33 * b33;\n\n\t\treturn this;\n\n\t}\n\n\tmultiplyScalar( s ) {\n\n\t\tconst te = this.elements;\n\n\t\tte[ 0 ] *= s; te[ 3 ] *= s; te[ 6 ] *= s;\n\t\tte[ 1 ] *= s; te[ 4 ] *= s; te[ 7 ] *= s;\n\t\tte[ 2 ] *= s; te[ 5 ] *= s; te[ 8 ] *= s;\n\n\t\treturn this;\n\n\t}\n\n\tdeterminant() {\n\n\t\tconst te = this.elements;\n\n\t\tconst a = te[ 0 ], b = te[ 1 ], c = te[ 2 ],\n\t\t\td = te[ 3 ], e = te[ 4 ], f = te[ 5 ],\n\t\t\tg = te[ 6 ], h = te[ 7 ], i = te[ 8 ];\n\n\t\treturn a * e * i - a * f * h - b * d * i + b * f * g + c * d * h - c * e * g;\n\n\t}\n\n\tinvert() {\n\n\t\tconst te = this.elements,\n\n\t\t\tn11 = te[ 0 ], n21 = te[ 1 ], n31 = te[ 2 ],\n\t\t\tn12 = te[ 3 ], n22 = te[ 4 ], n32 = te[ 5 ],\n\t\t\tn13 = te[ 6 ], n23 = te[ 7 ], n33 = te[ 8 ],\n\n\t\t\tt11 = n33 * n22 - n32 * n23,\n\t\t\tt12 = n32 * n13 - n33 * n12,\n\t\t\tt13 = n23 * n12 - n22 * n13,\n\n\t\t\tdet = n11 * t11 + n21 * t12 + n31 * t13;\n\n\t\tif ( det === 0 ) return this.set( 0, 0, 0, 0, 0, 0, 0, 0, 0 );\n\n\t\tconst detInv = 1 / det;\n\n\t\tte[ 0 ] = t11 * detInv;\n\t\tte[ 1 ] = ( n31 * n23 - n33 * n21 ) * detInv;\n\t\tte[ 2 ] = ( n32 * n21 - n31 * n22 ) * detInv;\n\n\t\tte[ 3 ] = t12 * detInv;\n\t\tte[ 4 ] = ( n33 * n11 - n31 * n13 ) * detInv;\n\t\tte[ 5 ] = ( n31 * n12 - n32 * n11 ) * detInv;\n\n\t\tte[ 6 ] = t13 * detInv;\n\t\tte[ 7 ] = ( n21 * n13 - n23 * n11 ) * detInv;\n\t\tte[ 8 ] = ( n22 * n11 - n21 * n12 ) * detInv;\n\n\t\treturn this;\n\n\t}\n\n\ttranspose() {\n\n\t\tlet tmp;\n\t\tconst m = this.elements;\n\n\t\ttmp = m[ 1 ]; m[ 1 ] = m[ 3 ]; m[ 3 ] = tmp;\n\t\ttmp = m[ 2 ]; m[ 2 ] = m[ 6 ]; m[ 6 ] = tmp;\n\t\ttmp = m[ 5 ]; m[ 5 ] = m[ 7 ]; m[ 7 ] = tmp;\n\n\t\treturn this;\n\n\t}\n\n\tgetNormalMatrix( matrix4 ) {\n\n\t\treturn this.setFromMatrix4( matrix4 ).invert().transpose();\n\n\t}\n\n\ttransposeIntoArray( r ) {\n\n\t\tconst m = this.elements;\n\n\t\tr[ 0 ] = m[ 0 ];\n\t\tr[ 1 ] = m[ 3 ];\n\t\tr[ 2 ] = m[ 6 ];\n\t\tr[ 3 ] = m[ 1 ];\n\t\tr[ 4 ] = m[ 4 ];\n\t\tr[ 5 ] = m[ 7 ];\n\t\tr[ 6 ] = m[ 2 ];\n\t\tr[ 7 ] = m[ 5 ];\n\t\tr[ 8 ] = m[ 8 ];\n\n\t\treturn this;\n\n\t}\n\n\tsetUvTransform( tx, ty, sx, sy, rotation, cx, cy ) {\n\n\t\tconst c = Math.cos( rotation );\n\t\tconst s = Math.sin( rotation );\n\n\t\tthis.set(\n\t\t\tsx * c, sx * s, - sx * ( c * cx + s * cy ) + cx + tx,\n\t\t\t- sy * s, sy * c, - sy * ( - s * cx + c * cy ) + cy + ty,\n\t\t\t0, 0, 1\n\t\t);\n\n\t\treturn this;\n\n\t}\n\n\tscale( sx, sy ) {\n\n\t\tconst te = this.elements;\n\n\t\tte[ 0 ] *= sx; te[ 3 ] *= sx; te[ 6 ] *= sx;\n\t\tte[ 1 ] *= sy; te[ 4 ] *= sy; te[ 7 ] *= sy;\n\n\t\treturn this;\n\n\t}\n\n\trotate( theta ) {\n\n\t\tconst c = Math.cos( theta );\n\t\tconst s = Math.sin( theta );\n\n\t\tconst te = this.elements;\n\n\t\tconst a11 = te[ 0 ], a12 = te[ 3 ], a13 = te[ 6 ];\n\t\tconst a21 = te[ 1 ], a22 = te[ 4 ], a23 = te[ 7 ];\n\n\t\tte[ 0 ] = c * a11 + s * a21;\n\t\tte[ 3 ] = c * a12 + s * a22;\n\t\tte[ 6 ] = c * a13 + s * a23;\n\n\t\tte[ 1 ] = - s * a11 + c * a21;\n\t\tte[ 4 ] = - s * a12 + c * a22;\n\t\tte[ 7 ] = - s * a13 + c * a23;\n\n\t\treturn this;\n\n\t}\n\n\ttranslate( tx, ty ) {\n\n\t\tconst te = this.elements;\n\n\t\tte[ 0 ] += tx * te[ 2 ]; te[ 3 ] += tx * te[ 5 ]; te[ 6 ] += tx * te[ 8 ];\n\t\tte[ 1 ] += ty * te[ 2 ]; te[ 4 ] += ty * te[ 5 ]; te[ 7 ] += ty * te[ 8 ];\n\n\t\treturn this;\n\n\t}\n\n\tequals( matrix ) {\n\n\t\tconst te = this.elements;\n\t\tconst me = matrix.elements;\n\n\t\tfor ( let i = 0; i < 9; i ++ ) {\n\n\t\t\tif ( te[ i ] !== me[ i ] ) return false;\n\n\t\t}\n\n\t\treturn true;\n\n\t}\n\n\tfromArray( array, offset = 0 ) {\n\n\t\tfor ( let i = 0; i < 9; i ++ ) {\n\n\t\t\tthis.elements[ i ] = array[ i + offset ];\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\ttoArray( array = [], offset = 0 ) {\n\n\t\tconst te = this.elements;\n\n\t\tarray[ offset ] = te[ 0 ];\n\t\tarray[ offset + 1 ] = te[ 1 ];\n\t\tarray[ offset + 2 ] = te[ 2 ];\n\n\t\tarray[ offset + 3 ] = te[ 3 ];\n\t\tarray[ offset + 4 ] = te[ 4 ];\n\t\tarray[ offset + 5 ] = te[ 5 ];\n\n\t\tarray[ offset + 6 ] = te[ 6 ];\n\t\tarray[ offset + 7 ] = te[ 7 ];\n\t\tarray[ offset + 8 ] = te[ 8 ];\n\n\t\treturn array;\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor().fromArray( this.elements );\n\n\t}\n\n}\n\nfunction arrayNeedsUint32( array ) {\n\n\t// assumes larger values usually on last\n\n\tfor ( let i = array.length - 1; i >= 0; -- i ) {\n\n\t\tif ( array[ i ] > 65535 ) return true;\n\n\t}\n\n\treturn false;\n\n}\n\nconst TYPED_ARRAYS = {\n\tInt8Array: Int8Array,\n\tUint8Array: Uint8Array,\n\tUint8ClampedArray: Uint8ClampedArray,\n\tInt16Array: Int16Array,\n\tUint16Array: Uint16Array,\n\tInt32Array: Int32Array,\n\tUint32Array: Uint32Array,\n\tFloat32Array: Float32Array,\n\tFloat64Array: Float64Array\n};\n\nfunction getTypedArray( type, buffer ) {\n\n\treturn new TYPED_ARRAYS[ type ]( buffer );\n\n}\n\nfunction createElementNS( name ) {\n\n\treturn document.createElementNS( 'http://www.w3.org/1999/xhtml', name );\n\n}\n\nfunction SRGBToLinear( c ) {\n\n\treturn ( c < 0.04045 ) ? c * 0.0773993808 : Math.pow( c * 0.9478672986 + 0.0521327014, 2.4 );\n\n}\n\nfunction LinearToSRGB( c ) {\n\n\treturn ( c < 0.0031308 ) ? c * 12.92 : 1.055 * ( Math.pow( c, 0.41666 ) ) - 0.055;\n\n}\n\n// JavaScript RGB-to-RGB transforms, defined as\n// FN[InputColorSpace][OutputColorSpace] callback functions.\nconst FN = {\n\t[ SRGBColorSpace ]: { [ LinearSRGBColorSpace ]: SRGBToLinear },\n\t[ LinearSRGBColorSpace ]: { [ SRGBColorSpace ]: LinearToSRGB },\n};\n\nconst ColorManagement = {\n\n\tlegacyMode: true,\n\n\tget workingColorSpace() {\n\n\t\treturn LinearSRGBColorSpace;\n\n\t},\n\n\tset workingColorSpace( colorSpace ) {\n\n\t\tconsole.warn( 'THREE.ColorManagement: .workingColorSpace is readonly.' );\n\n\t},\n\n\tconvert: function ( color, sourceColorSpace, targetColorSpace ) {\n\n\t\tif ( this.legacyMode || sourceColorSpace === targetColorSpace || ! sourceColorSpace || ! targetColorSpace ) {\n\n\t\t\treturn color;\n\n\t\t}\n\n\t\tif ( FN[ sourceColorSpace ] && FN[ sourceColorSpace ][ targetColorSpace ] !== undefined ) {\n\n\t\t\tconst fn = FN[ sourceColorSpace ][ targetColorSpace ];\n\n\t\t\tcolor.r = fn( color.r );\n\t\t\tcolor.g = fn( color.g );\n\t\t\tcolor.b = fn( color.b );\n\n\t\t\treturn color;\n\n\t\t}\n\n\t\tthrow new Error( 'Unsupported color space conversion.' );\n\n\t},\n\n\tfromWorkingColorSpace: function ( color, targetColorSpace ) {\n\n\t\treturn this.convert( color, this.workingColorSpace, targetColorSpace );\n\n\t},\n\n\ttoWorkingColorSpace: function ( color, sourceColorSpace ) {\n\n\t\treturn this.convert( color, sourceColorSpace, this.workingColorSpace );\n\n\t},\n\n};\n\nconst _colorKeywords = { 'aliceblue': 0xF0F8FF, 'antiquewhite': 0xFAEBD7, 'aqua': 0x00FFFF, 'aquamarine': 0x7FFFD4, 'azure': 0xF0FFFF,\n\t'beige': 0xF5F5DC, 'bisque': 0xFFE4C4, 'black': 0x000000, 'blanchedalmond': 0xFFEBCD, 'blue': 0x0000FF, 'blueviolet': 0x8A2BE2,\n\t'brown': 0xA52A2A, 'burlywood': 0xDEB887, 'cadetblue': 0x5F9EA0, 'chartreuse': 0x7FFF00, 'chocolate': 0xD2691E, 'coral': 0xFF7F50,\n\t'cornflowerblue': 0x6495ED, 'cornsilk': 0xFFF8DC, 'crimson': 0xDC143C, 'cyan': 0x00FFFF, 'darkblue': 0x00008B, 'darkcyan': 0x008B8B,\n\t'darkgoldenrod': 0xB8860B, 'darkgray': 0xA9A9A9, 'darkgreen': 0x006400, 'darkgrey': 0xA9A9A9, 'darkkhaki': 0xBDB76B, 'darkmagenta': 0x8B008B,\n\t'darkolivegreen': 0x556B2F, 'darkorange': 0xFF8C00, 'darkorchid': 0x9932CC, 'darkred': 0x8B0000, 'darksalmon': 0xE9967A, 'darkseagreen': 0x8FBC8F,\n\t'darkslateblue': 0x483D8B, 'darkslategray': 0x2F4F4F, 'darkslategrey': 0x2F4F4F, 'darkturquoise': 0x00CED1, 'darkviolet': 0x9400D3,\n\t'deeppink': 0xFF1493, 'deepskyblue': 0x00BFFF, 'dimgray': 0x696969, 'dimgrey': 0x696969, 'dodgerblue': 0x1E90FF, 'firebrick': 0xB22222,\n\t'floralwhite': 0xFFFAF0, 'forestgreen': 0x228B22, 'fuchsia': 0xFF00FF, 'gainsboro': 0xDCDCDC, 'ghostwhite': 0xF8F8FF, 'gold': 0xFFD700,\n\t'goldenrod': 0xDAA520, 'gray': 0x808080, 'green': 0x008000, 'greenyellow': 0xADFF2F, 'grey': 0x808080, 'honeydew': 0xF0FFF0, 'hotpink': 0xFF69B4,\n\t'indianred': 0xCD5C5C, 'indigo': 0x4B0082, 'ivory': 0xFFFFF0, 'khaki': 0xF0E68C, 'lavender': 0xE6E6FA, 'lavenderblush': 0xFFF0F5, 'lawngreen': 0x7CFC00,\n\t'lemonchiffon': 0xFFFACD, 'lightblue': 0xADD8E6, 'lightcoral': 0xF08080, 'lightcyan': 0xE0FFFF, 'lightgoldenrodyellow': 0xFAFAD2, 'lightgray': 0xD3D3D3,\n\t'lightgreen': 0x90EE90, 'lightgrey': 0xD3D3D3, 'lightpink': 0xFFB6C1, 'lightsalmon': 0xFFA07A, 'lightseagreen': 0x20B2AA, 'lightskyblue': 0x87CEFA,\n\t'lightslategray': 0x778899, 'lightslategrey': 0x778899, 'lightsteelblue': 0xB0C4DE, 'lightyellow': 0xFFFFE0, 'lime': 0x00FF00, 'limegreen': 0x32CD32,\n\t'linen': 0xFAF0E6, 'magenta': 0xFF00FF, 'maroon': 0x800000, 'mediumaquamarine': 0x66CDAA, 'mediumblue': 0x0000CD, 'mediumorchid': 0xBA55D3,\n\t'mediumpurple': 0x9370DB, 'mediumseagreen': 0x3CB371, 'mediumslateblue': 0x7B68EE, 'mediumspringgreen': 0x00FA9A, 'mediumturquoise': 0x48D1CC,\n\t'mediumvioletred': 0xC71585, 'midnightblue': 0x191970, 'mintcream': 0xF5FFFA, 'mistyrose': 0xFFE4E1, 'moccasin': 0xFFE4B5, 'navajowhite': 0xFFDEAD,\n\t'navy': 0x000080, 'oldlace': 0xFDF5E6, 'olive': 0x808000, 'olivedrab': 0x6B8E23, 'orange': 0xFFA500, 'orangered': 0xFF4500, 'orchid': 0xDA70D6,\n\t'palegoldenrod': 0xEEE8AA, 'palegreen': 0x98FB98, 'paleturquoise': 0xAFEEEE, 'palevioletred': 0xDB7093, 'papayawhip': 0xFFEFD5, 'peachpuff': 0xFFDAB9,\n\t'peru': 0xCD853F, 'pink': 0xFFC0CB, 'plum': 0xDDA0DD, 'powderblue': 0xB0E0E6, 'purple': 0x800080, 'rebeccapurple': 0x663399, 'red': 0xFF0000, 'rosybrown': 0xBC8F8F,\n\t'royalblue': 0x4169E1, 'saddlebrown': 0x8B4513, 'salmon': 0xFA8072, 'sandybrown': 0xF4A460, 'seagreen': 0x2E8B57, 'seashell': 0xFFF5EE,\n\t'sienna': 0xA0522D, 'silver': 0xC0C0C0, 'skyblue': 0x87CEEB, 'slateblue': 0x6A5ACD, 'slategray': 0x708090, 'slategrey': 0x708090, 'snow': 0xFFFAFA,\n\t'springgreen': 0x00FF7F, 'steelblue': 0x4682B4, 'tan': 0xD2B48C, 'teal': 0x008080, 'thistle': 0xD8BFD8, 'tomato': 0xFF6347, 'turquoise': 0x40E0D0,\n\t'violet': 0xEE82EE, 'wheat': 0xF5DEB3, 'white': 0xFFFFFF, 'whitesmoke': 0xF5F5F5, 'yellow': 0xFFFF00, 'yellowgreen': 0x9ACD32 };\n\nconst _rgb = { r: 0, g: 0, b: 0 };\nconst _hslA = { h: 0, s: 0, l: 0 };\nconst _hslB = { h: 0, s: 0, l: 0 };\n\nfunction hue2rgb( p, q, t ) {\n\n\tif ( t < 0 ) t += 1;\n\tif ( t > 1 ) t -= 1;\n\tif ( t < 1 / 6 ) return p + ( q - p ) * 6 * t;\n\tif ( t < 1 / 2 ) return q;\n\tif ( t < 2 / 3 ) return p + ( q - p ) * 6 * ( 2 / 3 - t );\n\treturn p;\n\n}\n\nfunction toComponents( source, target ) {\n\n\ttarget.r = source.r;\n\ttarget.g = source.g;\n\ttarget.b = source.b;\n\n\treturn target;\n\n}\n\nclass Color {\n\n\tconstructor( r, g, b ) {\n\n\t\tthis.isColor = true;\n\n\t\tthis.r = 1;\n\t\tthis.g = 1;\n\t\tthis.b = 1;\n\n\t\tif ( g === undefined && b === undefined ) {\n\n\t\t\t// r is THREE.Color, hex or string\n\t\t\treturn this.set( r );\n\n\t\t}\n\n\t\treturn this.setRGB( r, g, b );\n\n\t}\n\n\tset( value ) {\n\n\t\tif ( value && value.isColor ) {\n\n\t\t\tthis.copy( value );\n\n\t\t} else if ( typeof value === 'number' ) {\n\n\t\t\tthis.setHex( value );\n\n\t\t} else if ( typeof value === 'string' ) {\n\n\t\t\tthis.setStyle( value );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tsetScalar( scalar ) {\n\n\t\tthis.r = scalar;\n\t\tthis.g = scalar;\n\t\tthis.b = scalar;\n\n\t\treturn this;\n\n\t}\n\n\tsetHex( hex, colorSpace = SRGBColorSpace ) {\n\n\t\thex = Math.floor( hex );\n\n\t\tthis.r = ( hex >> 16 & 255 ) / 255;\n\t\tthis.g = ( hex >> 8 & 255 ) / 255;\n\t\tthis.b = ( hex & 255 ) / 255;\n\n\t\tColorManagement.toWorkingColorSpace( this, colorSpace );\n\n\t\treturn this;\n\n\t}\n\n\tsetRGB( r, g, b, colorSpace = LinearSRGBColorSpace ) {\n\n\t\tthis.r = r;\n\t\tthis.g = g;\n\t\tthis.b = b;\n\n\t\tColorManagement.toWorkingColorSpace( this, colorSpace );\n\n\t\treturn this;\n\n\t}\n\n\tsetHSL( h, s, l, colorSpace = LinearSRGBColorSpace ) {\n\n\t\t// h,s,l ranges are in 0.0 - 1.0\n\t\th = euclideanModulo( h, 1 );\n\t\ts = clamp( s, 0, 1 );\n\t\tl = clamp( l, 0, 1 );\n\n\t\tif ( s === 0 ) {\n\n\t\t\tthis.r = this.g = this.b = l;\n\n\t\t} else {\n\n\t\t\tconst p = l <= 0.5 ? l * ( 1 + s ) : l + s - ( l * s );\n\t\t\tconst q = ( 2 * l ) - p;\n\n\t\t\tthis.r = hue2rgb( q, p, h + 1 / 3 );\n\t\t\tthis.g = hue2rgb( q, p, h );\n\t\t\tthis.b = hue2rgb( q, p, h - 1 / 3 );\n\n\t\t}\n\n\t\tColorManagement.toWorkingColorSpace( this, colorSpace );\n\n\t\treturn this;\n\n\t}\n\n\tsetStyle( style, colorSpace = SRGBColorSpace ) {\n\n\t\tfunction handleAlpha( string ) {\n\n\t\t\tif ( string === undefined ) return;\n\n\t\t\tif ( parseFloat( string ) < 1 ) {\n\n\t\t\t\tconsole.warn( 'THREE.Color: Alpha component of ' + style + ' will be ignored.' );\n\n\t\t\t}\n\n\t\t}\n\n\n\t\tlet m;\n\n\t\tif ( m = /^((?:rgb|hsl)a?)\\(([^\\)]*)\\)/.exec( style ) ) {\n\n\t\t\t// rgb / hsl\n\n\t\t\tlet color;\n\t\t\tconst name = m[ 1 ];\n\t\t\tconst components = m[ 2 ];\n\n\t\t\tswitch ( name ) {\n\n\t\t\t\tcase 'rgb':\n\t\t\t\tcase 'rgba':\n\n\t\t\t\t\tif ( color = /^\\s*(\\d+)\\s*,\\s*(\\d+)\\s*,\\s*(\\d+)\\s*(?:,\\s*(\\d*\\.?\\d+)\\s*)?$/.exec( components ) ) {\n\n\t\t\t\t\t\t// rgb(255,0,0) rgba(255,0,0,0.5)\n\t\t\t\t\t\tthis.r = Math.min( 255, parseInt( color[ 1 ], 10 ) ) / 255;\n\t\t\t\t\t\tthis.g = Math.min( 255, parseInt( color[ 2 ], 10 ) ) / 255;\n\t\t\t\t\t\tthis.b = Math.min( 255, parseInt( color[ 3 ], 10 ) ) / 255;\n\n\t\t\t\t\t\tColorManagement.toWorkingColorSpace( this, colorSpace );\n\n\t\t\t\t\t\thandleAlpha( color[ 4 ] );\n\n\t\t\t\t\t\treturn this;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( color = /^\\s*(\\d+)\\%\\s*,\\s*(\\d+)\\%\\s*,\\s*(\\d+)\\%\\s*(?:,\\s*(\\d*\\.?\\d+)\\s*)?$/.exec( components ) ) {\n\n\t\t\t\t\t\t// rgb(100%,0%,0%) rgba(100%,0%,0%,0.5)\n\t\t\t\t\t\tthis.r = Math.min( 100, parseInt( color[ 1 ], 10 ) ) / 100;\n\t\t\t\t\t\tthis.g = Math.min( 100, parseInt( color[ 2 ], 10 ) ) / 100;\n\t\t\t\t\t\tthis.b = Math.min( 100, parseInt( color[ 3 ], 10 ) ) / 100;\n\n\t\t\t\t\t\tColorManagement.toWorkingColorSpace( this, colorSpace );\n\n\t\t\t\t\t\thandleAlpha( color[ 4 ] );\n\n\t\t\t\t\t\treturn this;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'hsl':\n\t\t\t\tcase 'hsla':\n\n\t\t\t\t\tif ( color = /^\\s*(\\d*\\.?\\d+)\\s*,\\s*(\\d+)\\%\\s*,\\s*(\\d+)\\%\\s*(?:,\\s*(\\d*\\.?\\d+)\\s*)?$/.exec( components ) ) {\n\n\t\t\t\t\t\t// hsl(120,50%,50%) hsla(120,50%,50%,0.5)\n\t\t\t\t\t\tconst h = parseFloat( color[ 1 ] ) / 360;\n\t\t\t\t\t\tconst s = parseInt( color[ 2 ], 10 ) / 100;\n\t\t\t\t\t\tconst l = parseInt( color[ 3 ], 10 ) / 100;\n\n\t\t\t\t\t\thandleAlpha( color[ 4 ] );\n\n\t\t\t\t\t\treturn this.setHSL( h, s, l, colorSpace );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\n\t\t\t}\n\n\t\t} else if ( m = /^\\#([A-Fa-f\\d]+)$/.exec( style ) ) {\n\n\t\t\t// hex color\n\n\t\t\tconst hex = m[ 1 ];\n\t\t\tconst size = hex.length;\n\n\t\t\tif ( size === 3 ) {\n\n\t\t\t\t// #ff0\n\t\t\t\tthis.r = parseInt( hex.charAt( 0 ) + hex.charAt( 0 ), 16 ) / 255;\n\t\t\t\tthis.g = parseInt( hex.charAt( 1 ) + hex.charAt( 1 ), 16 ) / 255;\n\t\t\t\tthis.b = parseInt( hex.charAt( 2 ) + hex.charAt( 2 ), 16 ) / 255;\n\n\t\t\t\tColorManagement.toWorkingColorSpace( this, colorSpace );\n\n\t\t\t\treturn this;\n\n\t\t\t} else if ( size === 6 ) {\n\n\t\t\t\t// #ff0000\n\t\t\t\tthis.r = parseInt( hex.charAt( 0 ) + hex.charAt( 1 ), 16 ) / 255;\n\t\t\t\tthis.g = parseInt( hex.charAt( 2 ) + hex.charAt( 3 ), 16 ) / 255;\n\t\t\t\tthis.b = parseInt( hex.charAt( 4 ) + hex.charAt( 5 ), 16 ) / 255;\n\n\t\t\t\tColorManagement.toWorkingColorSpace( this, colorSpace );\n\n\t\t\t\treturn this;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( style && style.length > 0 ) {\n\n\t\t\treturn this.setColorName( style, colorSpace );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tsetColorName( style, colorSpace = SRGBColorSpace ) {\n\n\t\t// color keywords\n\t\tconst hex = _colorKeywords[ style.toLowerCase() ];\n\n\t\tif ( hex !== undefined ) {\n\n\t\t\t// red\n\t\t\tthis.setHex( hex, colorSpace );\n\n\t\t} else {\n\n\t\t\t// unknown color\n\t\t\tconsole.warn( 'THREE.Color: Unknown color ' + style );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor( this.r, this.g, this.b );\n\n\t}\n\n\tcopy( color ) {\n\n\t\tthis.r = color.r;\n\t\tthis.g = color.g;\n\t\tthis.b = color.b;\n\n\t\treturn this;\n\n\t}\n\n\tcopySRGBToLinear( color ) {\n\n\t\tthis.r = SRGBToLinear( color.r );\n\t\tthis.g = SRGBToLinear( color.g );\n\t\tthis.b = SRGBToLinear( color.b );\n\n\t\treturn this;\n\n\t}\n\n\tcopyLinearToSRGB( color ) {\n\n\t\tthis.r = LinearToSRGB( color.r );\n\t\tthis.g = LinearToSRGB( color.g );\n\t\tthis.b = LinearToSRGB( color.b );\n\n\t\treturn this;\n\n\t}\n\n\tconvertSRGBToLinear() {\n\n\t\tthis.copySRGBToLinear( this );\n\n\t\treturn this;\n\n\t}\n\n\tconvertLinearToSRGB() {\n\n\t\tthis.copyLinearToSRGB( this );\n\n\t\treturn this;\n\n\t}\n\n\tgetHex( colorSpace = SRGBColorSpace ) {\n\n\t\tColorManagement.fromWorkingColorSpace( toComponents( this, _rgb ), colorSpace );\n\n\t\treturn clamp( _rgb.r * 255, 0, 255 ) << 16 ^ clamp( _rgb.g * 255, 0, 255 ) << 8 ^ clamp( _rgb.b * 255, 0, 255 ) << 0;\n\n\t}\n\n\tgetHexString( colorSpace = SRGBColorSpace ) {\n\n\t\treturn ( '000000' + this.getHex( colorSpace ).toString( 16 ) ).slice( - 6 );\n\n\t}\n\n\tgetHSL( target, colorSpace = LinearSRGBColorSpace ) {\n\n\t\t// h,s,l ranges are in 0.0 - 1.0\n\n\t\tColorManagement.fromWorkingColorSpace( toComponents( this, _rgb ), colorSpace );\n\n\t\tconst r = _rgb.r, g = _rgb.g, b = _rgb.b;\n\n\t\tconst max = Math.max( r, g, b );\n\t\tconst min = Math.min( r, g, b );\n\n\t\tlet hue, saturation;\n\t\tconst lightness = ( min + max ) / 2.0;\n\n\t\tif ( min === max ) {\n\n\t\t\thue = 0;\n\t\t\tsaturation = 0;\n\n\t\t} else {\n\n\t\t\tconst delta = max - min;\n\n\t\t\tsaturation = lightness <= 0.5 ? delta / ( max + min ) : delta / ( 2 - max - min );\n\n\t\t\tswitch ( max ) {\n\n\t\t\t\tcase r: hue = ( g - b ) / delta + ( g < b ? 6 : 0 ); break;\n\t\t\t\tcase g: hue = ( b - r ) / delta + 2; break;\n\t\t\t\tcase b: hue = ( r - g ) / delta + 4; break;\n\n\t\t\t}\n\n\t\t\thue /= 6;\n\n\t\t}\n\n\t\ttarget.h = hue;\n\t\ttarget.s = saturation;\n\t\ttarget.l = lightness;\n\n\t\treturn target;\n\n\t}\n\n\tgetRGB( target, colorSpace = LinearSRGBColorSpace ) {\n\n\t\tColorManagement.fromWorkingColorSpace( toComponents( this, _rgb ), colorSpace );\n\n\t\ttarget.r = _rgb.r;\n\t\ttarget.g = _rgb.g;\n\t\ttarget.b = _rgb.b;\n\n\t\treturn target;\n\n\t}\n\n\tgetStyle( colorSpace = SRGBColorSpace ) {\n\n\t\tColorManagement.fromWorkingColorSpace( toComponents( this, _rgb ), colorSpace );\n\n\t\tif ( colorSpace !== SRGBColorSpace ) {\n\n\t\t\t// Requires CSS Color Module Level 4 (https://www.w3.org/TR/css-color-4/).\n\t\t\treturn `color(${ colorSpace } ${ _rgb.r } ${ _rgb.g } ${ _rgb.b })`;\n\n\t\t}\n\n\t\treturn `rgb(${( _rgb.r * 255 ) | 0},${( _rgb.g * 255 ) | 0},${( _rgb.b * 255 ) | 0})`;\n\n\t}\n\n\toffsetHSL( h, s, l ) {\n\n\t\tthis.getHSL( _hslA );\n\n\t\t_hslA.h += h; _hslA.s += s; _hslA.l += l;\n\n\t\tthis.setHSL( _hslA.h, _hslA.s, _hslA.l );\n\n\t\treturn this;\n\n\t}\n\n\tadd( color ) {\n\n\t\tthis.r += color.r;\n\t\tthis.g += color.g;\n\t\tthis.b += color.b;\n\n\t\treturn this;\n\n\t}\n\n\taddColors( color1, color2 ) {\n\n\t\tthis.r = color1.r + color2.r;\n\t\tthis.g = color1.g + color2.g;\n\t\tthis.b = color1.b + color2.b;\n\n\t\treturn this;\n\n\t}\n\n\taddScalar( s ) {\n\n\t\tthis.r += s;\n\t\tthis.g += s;\n\t\tthis.b += s;\n\n\t\treturn this;\n\n\t}\n\n\tsub( color ) {\n\n\t\tthis.r = Math.max( 0, this.r - color.r );\n\t\tthis.g = Math.max( 0, this.g - color.g );\n\t\tthis.b = Math.max( 0, this.b - color.b );\n\n\t\treturn this;\n\n\t}\n\n\tmultiply( color ) {\n\n\t\tthis.r *= color.r;\n\t\tthis.g *= color.g;\n\t\tthis.b *= color.b;\n\n\t\treturn this;\n\n\t}\n\n\tmultiplyScalar( s ) {\n\n\t\tthis.r *= s;\n\t\tthis.g *= s;\n\t\tthis.b *= s;\n\n\t\treturn this;\n\n\t}\n\n\tlerp( color, alpha ) {\n\n\t\tthis.r += ( color.r - this.r ) * alpha;\n\t\tthis.g += ( color.g - this.g ) * alpha;\n\t\tthis.b += ( color.b - this.b ) * alpha;\n\n\t\treturn this;\n\n\t}\n\n\tlerpColors( color1, color2, alpha ) {\n\n\t\tthis.r = color1.r + ( color2.r - color1.r ) * alpha;\n\t\tthis.g = color1.g + ( color2.g - color1.g ) * alpha;\n\t\tthis.b = color1.b + ( color2.b - color1.b ) * alpha;\n\n\t\treturn this;\n\n\t}\n\n\tlerpHSL( color, alpha ) {\n\n\t\tthis.getHSL( _hslA );\n\t\tcolor.getHSL( _hslB );\n\n\t\tconst h = lerp( _hslA.h, _hslB.h, alpha );\n\t\tconst s = lerp( _hslA.s, _hslB.s, alpha );\n\t\tconst l = lerp( _hslA.l, _hslB.l, alpha );\n\n\t\tthis.setHSL( h, s, l );\n\n\t\treturn this;\n\n\t}\n\n\tequals( c ) {\n\n\t\treturn ( c.r === this.r ) && ( c.g === this.g ) && ( c.b === this.b );\n\n\t}\n\n\tfromArray( array, offset = 0 ) {\n\n\t\tthis.r = array[ offset ];\n\t\tthis.g = array[ offset + 1 ];\n\t\tthis.b = array[ offset + 2 ];\n\n\t\treturn this;\n\n\t}\n\n\ttoArray( array = [], offset = 0 ) {\n\n\t\tarray[ offset ] = this.r;\n\t\tarray[ offset + 1 ] = this.g;\n\t\tarray[ offset + 2 ] = this.b;\n\n\t\treturn array;\n\n\t}\n\n\tfromBufferAttribute( attribute, index ) {\n\n\t\tthis.r = attribute.getX( index );\n\t\tthis.g = attribute.getY( index );\n\t\tthis.b = attribute.getZ( index );\n\n\t\tif ( attribute.normalized === true ) {\n\n\t\t\t// assuming Uint8Array\n\n\t\t\tthis.r /= 255;\n\t\t\tthis.g /= 255;\n\t\t\tthis.b /= 255;\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON() {\n\n\t\treturn this.getHex();\n\n\t}\n\n\t*[ Symbol.iterator ]() {\n\n\t\tyield this.r;\n\t\tyield this.g;\n\t\tyield this.b;\n\n\t}\n\n}\n\nColor.NAMES = _colorKeywords;\n\nlet _canvas;\n\nclass ImageUtils {\n\n\tstatic getDataURL( image ) {\n\n\t\tif ( /^data:/i.test( image.src ) ) {\n\n\t\t\treturn image.src;\n\n\t\t}\n\n\t\tif ( typeof HTMLCanvasElement == 'undefined' ) {\n\n\t\t\treturn image.src;\n\n\t\t}\n\n\t\tlet canvas;\n\n\t\tif ( image instanceof HTMLCanvasElement ) {\n\n\t\t\tcanvas = image;\n\n\t\t} else {\n\n\t\t\tif ( _canvas === undefined ) _canvas = createElementNS( 'canvas' );\n\n\t\t\t_canvas.width = image.width;\n\t\t\t_canvas.height = image.height;\n\n\t\t\tconst context = _canvas.getContext( '2d' );\n\n\t\t\tif ( image instanceof ImageData ) {\n\n\t\t\t\tcontext.putImageData( image, 0, 0 );\n\n\t\t\t} else {\n\n\t\t\t\tcontext.drawImage( image, 0, 0, image.width, image.height );\n\n\t\t\t}\n\n\t\t\tcanvas = _canvas;\n\n\t\t}\n\n\t\tif ( canvas.width > 2048 || canvas.height > 2048 ) {\n\n\t\t\tconsole.warn( 'THREE.ImageUtils.getDataURL: Image converted to jpg for performance reasons', image );\n\n\t\t\treturn canvas.toDataURL( 'image/jpeg', 0.6 );\n\n\t\t} else {\n\n\t\t\treturn canvas.toDataURL( 'image/png' );\n\n\t\t}\n\n\t}\n\n\tstatic sRGBToLinear( image ) {\n\n\t\tif ( ( typeof HTMLImageElement !== 'undefined' && image instanceof HTMLImageElement ) ||\n\t\t\t( typeof HTMLCanvasElement !== 'undefined' && image instanceof HTMLCanvasElement ) ||\n\t\t\t( typeof ImageBitmap !== 'undefined' && image instanceof ImageBitmap ) ) {\n\n\t\t\tconst canvas = createElementNS( 'canvas' );\n\n\t\t\tcanvas.width = image.width;\n\t\t\tcanvas.height = image.height;\n\n\t\t\tconst context = canvas.getContext( '2d' );\n\t\t\tcontext.drawImage( image, 0, 0, image.width, image.height );\n\n\t\t\tconst imageData = context.getImageData( 0, 0, image.width, image.height );\n\t\t\tconst data = imageData.data;\n\n\t\t\tfor ( let i = 0; i < data.length; i ++ ) {\n\n\t\t\t\tdata[ i ] = SRGBToLinear( data[ i ] / 255 ) * 255;\n\n\t\t\t}\n\n\t\t\tcontext.putImageData( imageData, 0, 0 );\n\n\t\t\treturn canvas;\n\n\t\t} else if ( image.data ) {\n\n\t\t\tconst data = image.data.slice( 0 );\n\n\t\t\tfor ( let i = 0; i < data.length; i ++ ) {\n\n\t\t\t\tif ( data instanceof Uint8Array || data instanceof Uint8ClampedArray ) {\n\n\t\t\t\t\tdata[ i ] = Math.floor( SRGBToLinear( data[ i ] / 255 ) * 255 );\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// assuming float\n\n\t\t\t\t\tdata[ i ] = SRGBToLinear( data[ i ] );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn {\n\t\t\t\tdata: data,\n\t\t\t\twidth: image.width,\n\t\t\t\theight: image.height\n\t\t\t};\n\n\t\t} else {\n\n\t\t\tconsole.warn( 'THREE.ImageUtils.sRGBToLinear(): Unsupported image type. No color space conversion applied.' );\n\t\t\treturn image;\n\n\t\t}\n\n\t}\n\n}\n\nclass Source {\n\n\tconstructor( data = null ) {\n\n\t\tthis.isSource = true;\n\n\t\tthis.uuid = generateUUID();\n\n\t\tthis.data = data;\n\n\t\tthis.version = 0;\n\n\t}\n\n\tset needsUpdate( value ) {\n\n\t\tif ( value === true ) this.version ++;\n\n\t}\n\n\ttoJSON( meta ) {\n\n\t\tconst isRootObject = ( meta === undefined || typeof meta === 'string' );\n\n\t\tif ( ! isRootObject && meta.images[ this.uuid ] !== undefined ) {\n\n\t\t\treturn meta.images[ this.uuid ];\n\n\t\t}\n\n\t\tconst output = {\n\t\t\tuuid: this.uuid,\n\t\t\turl: ''\n\t\t};\n\n\t\tconst data = this.data;\n\n\t\tif ( data !== null ) {\n\n\t\t\tlet url;\n\n\t\t\tif ( Array.isArray( data ) ) {\n\n\t\t\t\t// cube texture\n\n\t\t\t\turl = [];\n\n\t\t\t\tfor ( let i = 0, l = data.length; i < l; i ++ ) {\n\n\t\t\t\t\tif ( data[ i ].isDataTexture ) {\n\n\t\t\t\t\t\turl.push( serializeImage( data[ i ].image ) );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\turl.push( serializeImage( data[ i ] ) );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\t// texture\n\n\t\t\t\turl = serializeImage( data );\n\n\t\t\t}\n\n\t\t\toutput.url = url;\n\n\t\t}\n\n\t\tif ( ! isRootObject ) {\n\n\t\t\tmeta.images[ this.uuid ] = output;\n\n\t\t}\n\n\t\treturn output;\n\n\t}\n\n}\n\nfunction serializeImage( image ) {\n\n\tif ( ( typeof HTMLImageElement !== 'undefined' && image instanceof HTMLImageElement ) ||\n\t\t( typeof HTMLCanvasElement !== 'undefined' && image instanceof HTMLCanvasElement ) ||\n\t\t( typeof ImageBitmap !== 'undefined' && image instanceof ImageBitmap ) ) {\n\n\t\t// default images\n\n\t\treturn ImageUtils.getDataURL( image );\n\n\t} else {\n\n\t\tif ( image.data ) {\n\n\t\t\t// images of DataTexture\n\n\t\t\treturn {\n\t\t\t\tdata: Array.prototype.slice.call( image.data ),\n\t\t\t\twidth: image.width,\n\t\t\t\theight: image.height,\n\t\t\t\ttype: image.data.constructor.name\n\t\t\t};\n\n\t\t} else {\n\n\t\t\tconsole.warn( 'THREE.Texture: Unable to serialize Texture.' );\n\t\t\treturn {};\n\n\t\t}\n\n\t}\n\n}\n\nlet textureId = 0;\n\nclass Texture extends EventDispatcher {\n\n\tconstructor( image = Texture.DEFAULT_IMAGE, mapping = Texture.DEFAULT_MAPPING, wrapS = ClampToEdgeWrapping, wrapT = ClampToEdgeWrapping, magFilter = LinearFilter, minFilter = LinearMipmapLinearFilter, format = RGBAFormat, type = UnsignedByteType, anisotropy = 1, encoding = LinearEncoding ) {\n\n\t\tsuper();\n\n\t\tthis.isTexture = true;\n\n\t\tObject.defineProperty( this, 'id', { value: textureId ++ } );\n\n\t\tthis.uuid = generateUUID();\n\n\t\tthis.name = '';\n\n\t\tthis.source = new Source( image );\n\t\tthis.mipmaps = [];\n\n\t\tthis.mapping = mapping;\n\n\t\tthis.wrapS = wrapS;\n\t\tthis.wrapT = wrapT;\n\n\t\tthis.magFilter = magFilter;\n\t\tthis.minFilter = minFilter;\n\n\t\tthis.anisotropy = anisotropy;\n\n\t\tthis.format = format;\n\t\tthis.internalFormat = null;\n\t\tthis.type = type;\n\n\t\tthis.offset = new Vector2( 0, 0 );\n\t\tthis.repeat = new Vector2( 1, 1 );\n\t\tthis.center = new Vector2( 0, 0 );\n\t\tthis.rotation = 0;\n\n\t\tthis.matrixAutoUpdate = true;\n\t\tthis.matrix = new Matrix3();\n\n\t\tthis.generateMipmaps = true;\n\t\tthis.premultiplyAlpha = false;\n\t\tthis.flipY = true;\n\t\tthis.unpackAlignment = 4;\t// valid values: 1, 2, 4, 8 (see http://www.khronos.org/opengles/sdk/docs/man/xhtml/glPixelStorei.xml)\n\n\t\t// Values of encoding !== THREE.LinearEncoding only supported on map, envMap and emissiveMap.\n\t\t//\n\t\t// Also changing the encoding after already used by a Material will not automatically make the Material\n\t\t// update. You need to explicitly call Material.needsUpdate to trigger it to recompile.\n\t\tthis.encoding = encoding;\n\n\t\tthis.userData = {};\n\n\t\tthis.version = 0;\n\t\tthis.onUpdate = null;\n\n\t\tthis.isRenderTargetTexture = false; // indicates whether a texture belongs to a render target or not\n\t\tthis.needsPMREMUpdate = false; // indicates whether this texture should be processed by PMREMGenerator or not (only relevant for render target textures)\n\n\t}\n\n\tget image() {\n\n\t\treturn this.source.data;\n\n\t}\n\n\tset image( value ) {\n\n\t\tthis.source.data = value;\n\n\t}\n\n\tupdateMatrix() {\n\n\t\tthis.matrix.setUvTransform( this.offset.x, this.offset.y, this.repeat.x, this.repeat.y, this.rotation, this.center.x, this.center.y );\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tthis.name = source.name;\n\n\t\tthis.source = source.source;\n\t\tthis.mipmaps = source.mipmaps.slice( 0 );\n\n\t\tthis.mapping = source.mapping;\n\n\t\tthis.wrapS = source.wrapS;\n\t\tthis.wrapT = source.wrapT;\n\n\t\tthis.magFilter = source.magFilter;\n\t\tthis.minFilter = source.minFilter;\n\n\t\tthis.anisotropy = source.anisotropy;\n\n\t\tthis.format = source.format;\n\t\tthis.internalFormat = source.internalFormat;\n\t\tthis.type = source.type;\n\n\t\tthis.offset.copy( source.offset );\n\t\tthis.repeat.copy( source.repeat );\n\t\tthis.center.copy( source.center );\n\t\tthis.rotation = source.rotation;\n\n\t\tthis.matrixAutoUpdate = source.matrixAutoUpdate;\n\t\tthis.matrix.copy( source.matrix );\n\n\t\tthis.generateMipmaps = source.generateMipmaps;\n\t\tthis.premultiplyAlpha = source.premultiplyAlpha;\n\t\tthis.flipY = source.flipY;\n\t\tthis.unpackAlignment = source.unpackAlignment;\n\t\tthis.encoding = source.encoding;\n\n\t\tthis.userData = JSON.parse( JSON.stringify( source.userData ) );\n\n\t\tthis.needsUpdate = true;\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON( meta ) {\n\n\t\tconst isRootObject = ( meta === undefined || typeof meta === 'string' );\n\n\t\tif ( ! isRootObject && meta.textures[ this.uuid ] !== undefined ) {\n\n\t\t\treturn meta.textures[ this.uuid ];\n\n\t\t}\n\n\t\tconst output = {\n\n\t\t\tmetadata: {\n\t\t\t\tversion: 4.5,\n\t\t\t\ttype: 'Texture',\n\t\t\t\tgenerator: 'Texture.toJSON'\n\t\t\t},\n\n\t\t\tuuid: this.uuid,\n\t\t\tname: this.name,\n\n\t\t\timage: this.source.toJSON( meta ).uuid,\n\n\t\t\tmapping: this.mapping,\n\n\t\t\trepeat: [ this.repeat.x, this.repeat.y ],\n\t\t\toffset: [ this.offset.x, this.offset.y ],\n\t\t\tcenter: [ this.center.x, this.center.y ],\n\t\t\trotation: this.rotation,\n\n\t\t\twrap: [ this.wrapS, this.wrapT ],\n\n\t\t\tformat: this.format,\n\t\t\ttype: this.type,\n\t\t\tencoding: this.encoding,\n\n\t\t\tminFilter: this.minFilter,\n\t\t\tmagFilter: this.magFilter,\n\t\t\tanisotropy: this.anisotropy,\n\n\t\t\tflipY: this.flipY,\n\n\t\t\tpremultiplyAlpha: this.premultiplyAlpha,\n\t\t\tunpackAlignment: this.unpackAlignment\n\n\t\t};\n\n\t\tif ( JSON.stringify( this.userData ) !== '{}' ) output.userData = this.userData;\n\n\t\tif ( ! isRootObject ) {\n\n\t\t\tmeta.textures[ this.uuid ] = output;\n\n\t\t}\n\n\t\treturn output;\n\n\t}\n\n\tdispose() {\n\n\t\tthis.dispatchEvent( { type: 'dispose' } );\n\n\t}\n\n\ttransformUv( uv ) {\n\n\t\tif ( this.mapping !== UVMapping ) return uv;\n\n\t\tuv.applyMatrix3( this.matrix );\n\n\t\tif ( uv.x < 0 || uv.x > 1 ) {\n\n\t\t\tswitch ( this.wrapS ) {\n\n\t\t\t\tcase RepeatWrapping:\n\n\t\t\t\t\tuv.x = uv.x - Math.floor( uv.x );\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase ClampToEdgeWrapping:\n\n\t\t\t\t\tuv.x = uv.x < 0 ? 0 : 1;\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase MirroredRepeatWrapping:\n\n\t\t\t\t\tif ( Math.abs( Math.floor( uv.x ) % 2 ) === 1 ) {\n\n\t\t\t\t\t\tuv.x = Math.ceil( uv.x ) - uv.x;\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tuv.x = uv.x - Math.floor( uv.x );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( uv.y < 0 || uv.y > 1 ) {\n\n\t\t\tswitch ( this.wrapT ) {\n\n\t\t\t\tcase RepeatWrapping:\n\n\t\t\t\t\tuv.y = uv.y - Math.floor( uv.y );\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase ClampToEdgeWrapping:\n\n\t\t\t\t\tuv.y = uv.y < 0 ? 0 : 1;\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase MirroredRepeatWrapping:\n\n\t\t\t\t\tif ( Math.abs( Math.floor( uv.y ) % 2 ) === 1 ) {\n\n\t\t\t\t\t\tuv.y = Math.ceil( uv.y ) - uv.y;\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tuv.y = uv.y - Math.floor( uv.y );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( this.flipY ) {\n\n\t\t\tuv.y = 1 - uv.y;\n\n\t\t}\n\n\t\treturn uv;\n\n\t}\n\n\tset needsUpdate( value ) {\n\n\t\tif ( value === true ) {\n\n\t\t\tthis.version ++;\n\t\t\tthis.source.needsUpdate = true;\n\n\t\t}\n\n\t}\n\n}\n\nTexture.DEFAULT_IMAGE = null;\nTexture.DEFAULT_MAPPING = UVMapping;\n\nclass Vector4 {\n\n\tconstructor( x = 0, y = 0, z = 0, w = 1 ) {\n\n\t\tthis.isVector4 = true;\n\n\t\tthis.x = x;\n\t\tthis.y = y;\n\t\tthis.z = z;\n\t\tthis.w = w;\n\n\t}\n\n\tget width() {\n\n\t\treturn this.z;\n\n\t}\n\n\tset width( value ) {\n\n\t\tthis.z = value;\n\n\t}\n\n\tget height() {\n\n\t\treturn this.w;\n\n\t}\n\n\tset height( value ) {\n\n\t\tthis.w = value;\n\n\t}\n\n\tset( x, y, z, w ) {\n\n\t\tthis.x = x;\n\t\tthis.y = y;\n\t\tthis.z = z;\n\t\tthis.w = w;\n\n\t\treturn this;\n\n\t}\n\n\tsetScalar( scalar ) {\n\n\t\tthis.x = scalar;\n\t\tthis.y = scalar;\n\t\tthis.z = scalar;\n\t\tthis.w = scalar;\n\n\t\treturn this;\n\n\t}\n\n\tsetX( x ) {\n\n\t\tthis.x = x;\n\n\t\treturn this;\n\n\t}\n\n\tsetY( y ) {\n\n\t\tthis.y = y;\n\n\t\treturn this;\n\n\t}\n\n\tsetZ( z ) {\n\n\t\tthis.z = z;\n\n\t\treturn this;\n\n\t}\n\n\tsetW( w ) {\n\n\t\tthis.w = w;\n\n\t\treturn this;\n\n\t}\n\n\tsetComponent( index, value ) {\n\n\t\tswitch ( index ) {\n\n\t\t\tcase 0: this.x = value; break;\n\t\t\tcase 1: this.y = value; break;\n\t\t\tcase 2: this.z = value; break;\n\t\t\tcase 3: this.w = value; break;\n\t\t\tdefault: throw new Error( 'index is out of range: ' + index );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tgetComponent( index ) {\n\n\t\tswitch ( index ) {\n\n\t\t\tcase 0: return this.x;\n\t\t\tcase 1: return this.y;\n\t\t\tcase 2: return this.z;\n\t\t\tcase 3: return this.w;\n\t\t\tdefault: throw new Error( 'index is out of range: ' + index );\n\n\t\t}\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor( this.x, this.y, this.z, this.w );\n\n\t}\n\n\tcopy( v ) {\n\n\t\tthis.x = v.x;\n\t\tthis.y = v.y;\n\t\tthis.z = v.z;\n\t\tthis.w = ( v.w !== undefined ) ? v.w : 1;\n\n\t\treturn this;\n\n\t}\n\n\tadd( v, w ) {\n\n\t\tif ( w !== undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Vector4: .add() now only accepts one argument. Use .addVectors( a, b ) instead.' );\n\t\t\treturn this.addVectors( v, w );\n\n\t\t}\n\n\t\tthis.x += v.x;\n\t\tthis.y += v.y;\n\t\tthis.z += v.z;\n\t\tthis.w += v.w;\n\n\t\treturn this;\n\n\t}\n\n\taddScalar( s ) {\n\n\t\tthis.x += s;\n\t\tthis.y += s;\n\t\tthis.z += s;\n\t\tthis.w += s;\n\n\t\treturn this;\n\n\t}\n\n\taddVectors( a, b ) {\n\n\t\tthis.x = a.x + b.x;\n\t\tthis.y = a.y + b.y;\n\t\tthis.z = a.z + b.z;\n\t\tthis.w = a.w + b.w;\n\n\t\treturn this;\n\n\t}\n\n\taddScaledVector( v, s ) {\n\n\t\tthis.x += v.x * s;\n\t\tthis.y += v.y * s;\n\t\tthis.z += v.z * s;\n\t\tthis.w += v.w * s;\n\n\t\treturn this;\n\n\t}\n\n\tsub( v, w ) {\n\n\t\tif ( w !== undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Vector4: .sub() now only accepts one argument. Use .subVectors( a, b ) instead.' );\n\t\t\treturn this.subVectors( v, w );\n\n\t\t}\n\n\t\tthis.x -= v.x;\n\t\tthis.y -= v.y;\n\t\tthis.z -= v.z;\n\t\tthis.w -= v.w;\n\n\t\treturn this;\n\n\t}\n\n\tsubScalar( s ) {\n\n\t\tthis.x -= s;\n\t\tthis.y -= s;\n\t\tthis.z -= s;\n\t\tthis.w -= s;\n\n\t\treturn this;\n\n\t}\n\n\tsubVectors( a, b ) {\n\n\t\tthis.x = a.x - b.x;\n\t\tthis.y = a.y - b.y;\n\t\tthis.z = a.z - b.z;\n\t\tthis.w = a.w - b.w;\n\n\t\treturn this;\n\n\t}\n\n\tmultiply( v ) {\n\n\t\tthis.x *= v.x;\n\t\tthis.y *= v.y;\n\t\tthis.z *= v.z;\n\t\tthis.w *= v.w;\n\n\t\treturn this;\n\n\t}\n\n\tmultiplyScalar( scalar ) {\n\n\t\tthis.x *= scalar;\n\t\tthis.y *= scalar;\n\t\tthis.z *= scalar;\n\t\tthis.w *= scalar;\n\n\t\treturn this;\n\n\t}\n\n\tapplyMatrix4( m ) {\n\n\t\tconst x = this.x, y = this.y, z = this.z, w = this.w;\n\t\tconst e = m.elements;\n\n\t\tthis.x = e[ 0 ] * x + e[ 4 ] * y + e[ 8 ] * z + e[ 12 ] * w;\n\t\tthis.y = e[ 1 ] * x + e[ 5 ] * y + e[ 9 ] * z + e[ 13 ] * w;\n\t\tthis.z = e[ 2 ] * x + e[ 6 ] * y + e[ 10 ] * z + e[ 14 ] * w;\n\t\tthis.w = e[ 3 ] * x + e[ 7 ] * y + e[ 11 ] * z + e[ 15 ] * w;\n\n\t\treturn this;\n\n\t}\n\n\tdivideScalar( scalar ) {\n\n\t\treturn this.multiplyScalar( 1 / scalar );\n\n\t}\n\n\tsetAxisAngleFromQuaternion( q ) {\n\n\t\t// http://www.euclideanspace.com/maths/geometry/rotations/conversions/quaternionToAngle/index.htm\n\n\t\t// q is assumed to be normalized\n\n\t\tthis.w = 2 * Math.acos( q.w );\n\n\t\tconst s = Math.sqrt( 1 - q.w * q.w );\n\n\t\tif ( s < 0.0001 ) {\n\n\t\t\tthis.x = 1;\n\t\t\tthis.y = 0;\n\t\t\tthis.z = 0;\n\n\t\t} else {\n\n\t\t\tthis.x = q.x / s;\n\t\t\tthis.y = q.y / s;\n\t\t\tthis.z = q.z / s;\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tsetAxisAngleFromRotationMatrix( m ) {\n\n\t\t// http://www.euclideanspace.com/maths/geometry/rotations/conversions/matrixToAngle/index.htm\n\n\t\t// assumes the upper 3x3 of m is a pure rotation matrix (i.e, unscaled)\n\n\t\tlet angle, x, y, z; // variables for result\n\t\tconst epsilon = 0.01,\t\t// margin to allow for rounding errors\n\t\t\tepsilon2 = 0.1,\t\t// margin to distinguish between 0 and 180 degrees\n\n\t\t\tte = m.elements,\n\n\t\t\tm11 = te[ 0 ], m12 = te[ 4 ], m13 = te[ 8 ],\n\t\t\tm21 = te[ 1 ], m22 = te[ 5 ], m23 = te[ 9 ],\n\t\t\tm31 = te[ 2 ], m32 = te[ 6 ], m33 = te[ 10 ];\n\n\t\tif ( ( Math.abs( m12 - m21 ) < epsilon ) &&\n\t\t ( Math.abs( m13 - m31 ) < epsilon ) &&\n\t\t ( Math.abs( m23 - m32 ) < epsilon ) ) {\n\n\t\t\t// singularity found\n\t\t\t// first check for identity matrix which must have +1 for all terms\n\t\t\t// in leading diagonal and zero in other terms\n\n\t\t\tif ( ( Math.abs( m12 + m21 ) < epsilon2 ) &&\n\t\t\t ( Math.abs( m13 + m31 ) < epsilon2 ) &&\n\t\t\t ( Math.abs( m23 + m32 ) < epsilon2 ) &&\n\t\t\t ( Math.abs( m11 + m22 + m33 - 3 ) < epsilon2 ) ) {\n\n\t\t\t\t// this singularity is identity matrix so angle = 0\n\n\t\t\t\tthis.set( 1, 0, 0, 0 );\n\n\t\t\t\treturn this; // zero angle, arbitrary axis\n\n\t\t\t}\n\n\t\t\t// otherwise this singularity is angle = 180\n\n\t\t\tangle = Math.PI;\n\n\t\t\tconst xx = ( m11 + 1 ) / 2;\n\t\t\tconst yy = ( m22 + 1 ) / 2;\n\t\t\tconst zz = ( m33 + 1 ) / 2;\n\t\t\tconst xy = ( m12 + m21 ) / 4;\n\t\t\tconst xz = ( m13 + m31 ) / 4;\n\t\t\tconst yz = ( m23 + m32 ) / 4;\n\n\t\t\tif ( ( xx > yy ) && ( xx > zz ) ) {\n\n\t\t\t\t// m11 is the largest diagonal term\n\n\t\t\t\tif ( xx < epsilon ) {\n\n\t\t\t\t\tx = 0;\n\t\t\t\t\ty = 0.707106781;\n\t\t\t\t\tz = 0.707106781;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tx = Math.sqrt( xx );\n\t\t\t\t\ty = xy / x;\n\t\t\t\t\tz = xz / x;\n\n\t\t\t\t}\n\n\t\t\t} else if ( yy > zz ) {\n\n\t\t\t\t// m22 is the largest diagonal term\n\n\t\t\t\tif ( yy < epsilon ) {\n\n\t\t\t\t\tx = 0.707106781;\n\t\t\t\t\ty = 0;\n\t\t\t\t\tz = 0.707106781;\n\n\t\t\t\t} else {\n\n\t\t\t\t\ty = Math.sqrt( yy );\n\t\t\t\t\tx = xy / y;\n\t\t\t\t\tz = yz / y;\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\t// m33 is the largest diagonal term so base result on this\n\n\t\t\t\tif ( zz < epsilon ) {\n\n\t\t\t\t\tx = 0.707106781;\n\t\t\t\t\ty = 0.707106781;\n\t\t\t\t\tz = 0;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tz = Math.sqrt( zz );\n\t\t\t\t\tx = xz / z;\n\t\t\t\t\ty = yz / z;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tthis.set( x, y, z, angle );\n\n\t\t\treturn this; // return 180 deg rotation\n\n\t\t}\n\n\t\t// as we have reached here there are no singularities so we can handle normally\n\n\t\tlet s = Math.sqrt( ( m32 - m23 ) * ( m32 - m23 ) +\n\t\t\t( m13 - m31 ) * ( m13 - m31 ) +\n\t\t\t( m21 - m12 ) * ( m21 - m12 ) ); // used to normalize\n\n\t\tif ( Math.abs( s ) < 0.001 ) s = 1;\n\n\t\t// prevent divide by zero, should not happen if matrix is orthogonal and should be\n\t\t// caught by singularity test above, but I've left it in just in case\n\n\t\tthis.x = ( m32 - m23 ) / s;\n\t\tthis.y = ( m13 - m31 ) / s;\n\t\tthis.z = ( m21 - m12 ) / s;\n\t\tthis.w = Math.acos( ( m11 + m22 + m33 - 1 ) / 2 );\n\n\t\treturn this;\n\n\t}\n\n\tmin( v ) {\n\n\t\tthis.x = Math.min( this.x, v.x );\n\t\tthis.y = Math.min( this.y, v.y );\n\t\tthis.z = Math.min( this.z, v.z );\n\t\tthis.w = Math.min( this.w, v.w );\n\n\t\treturn this;\n\n\t}\n\n\tmax( v ) {\n\n\t\tthis.x = Math.max( this.x, v.x );\n\t\tthis.y = Math.max( this.y, v.y );\n\t\tthis.z = Math.max( this.z, v.z );\n\t\tthis.w = Math.max( this.w, v.w );\n\n\t\treturn this;\n\n\t}\n\n\tclamp( min, max ) {\n\n\t\t// assumes min < max, componentwise\n\n\t\tthis.x = Math.max( min.x, Math.min( max.x, this.x ) );\n\t\tthis.y = Math.max( min.y, Math.min( max.y, this.y ) );\n\t\tthis.z = Math.max( min.z, Math.min( max.z, this.z ) );\n\t\tthis.w = Math.max( min.w, Math.min( max.w, this.w ) );\n\n\t\treturn this;\n\n\t}\n\n\tclampScalar( minVal, maxVal ) {\n\n\t\tthis.x = Math.max( minVal, Math.min( maxVal, this.x ) );\n\t\tthis.y = Math.max( minVal, Math.min( maxVal, this.y ) );\n\t\tthis.z = Math.max( minVal, Math.min( maxVal, this.z ) );\n\t\tthis.w = Math.max( minVal, Math.min( maxVal, this.w ) );\n\n\t\treturn this;\n\n\t}\n\n\tclampLength( min, max ) {\n\n\t\tconst length = this.length();\n\n\t\treturn this.divideScalar( length || 1 ).multiplyScalar( Math.max( min, Math.min( max, length ) ) );\n\n\t}\n\n\tfloor() {\n\n\t\tthis.x = Math.floor( this.x );\n\t\tthis.y = Math.floor( this.y );\n\t\tthis.z = Math.floor( this.z );\n\t\tthis.w = Math.floor( this.w );\n\n\t\treturn this;\n\n\t}\n\n\tceil() {\n\n\t\tthis.x = Math.ceil( this.x );\n\t\tthis.y = Math.ceil( this.y );\n\t\tthis.z = Math.ceil( this.z );\n\t\tthis.w = Math.ceil( this.w );\n\n\t\treturn this;\n\n\t}\n\n\tround() {\n\n\t\tthis.x = Math.round( this.x );\n\t\tthis.y = Math.round( this.y );\n\t\tthis.z = Math.round( this.z );\n\t\tthis.w = Math.round( this.w );\n\n\t\treturn this;\n\n\t}\n\n\troundToZero() {\n\n\t\tthis.x = ( this.x < 0 ) ? Math.ceil( this.x ) : Math.floor( this.x );\n\t\tthis.y = ( this.y < 0 ) ? Math.ceil( this.y ) : Math.floor( this.y );\n\t\tthis.z = ( this.z < 0 ) ? Math.ceil( this.z ) : Math.floor( this.z );\n\t\tthis.w = ( this.w < 0 ) ? Math.ceil( this.w ) : Math.floor( this.w );\n\n\t\treturn this;\n\n\t}\n\n\tnegate() {\n\n\t\tthis.x = - this.x;\n\t\tthis.y = - this.y;\n\t\tthis.z = - this.z;\n\t\tthis.w = - this.w;\n\n\t\treturn this;\n\n\t}\n\n\tdot( v ) {\n\n\t\treturn this.x * v.x + this.y * v.y + this.z * v.z + this.w * v.w;\n\n\t}\n\n\tlengthSq() {\n\n\t\treturn this.x * this.x + this.y * this.y + this.z * this.z + this.w * this.w;\n\n\t}\n\n\tlength() {\n\n\t\treturn Math.sqrt( this.x * this.x + this.y * this.y + this.z * this.z + this.w * this.w );\n\n\t}\n\n\tmanhattanLength() {\n\n\t\treturn Math.abs( this.x ) + Math.abs( this.y ) + Math.abs( this.z ) + Math.abs( this.w );\n\n\t}\n\n\tnormalize() {\n\n\t\treturn this.divideScalar( this.length() || 1 );\n\n\t}\n\n\tsetLength( length ) {\n\n\t\treturn this.normalize().multiplyScalar( length );\n\n\t}\n\n\tlerp( v, alpha ) {\n\n\t\tthis.x += ( v.x - this.x ) * alpha;\n\t\tthis.y += ( v.y - this.y ) * alpha;\n\t\tthis.z += ( v.z - this.z ) * alpha;\n\t\tthis.w += ( v.w - this.w ) * alpha;\n\n\t\treturn this;\n\n\t}\n\n\tlerpVectors( v1, v2, alpha ) {\n\n\t\tthis.x = v1.x + ( v2.x - v1.x ) * alpha;\n\t\tthis.y = v1.y + ( v2.y - v1.y ) * alpha;\n\t\tthis.z = v1.z + ( v2.z - v1.z ) * alpha;\n\t\tthis.w = v1.w + ( v2.w - v1.w ) * alpha;\n\n\t\treturn this;\n\n\t}\n\n\tequals( v ) {\n\n\t\treturn ( ( v.x === this.x ) && ( v.y === this.y ) && ( v.z === this.z ) && ( v.w === this.w ) );\n\n\t}\n\n\tfromArray( array, offset = 0 ) {\n\n\t\tthis.x = array[ offset ];\n\t\tthis.y = array[ offset + 1 ];\n\t\tthis.z = array[ offset + 2 ];\n\t\tthis.w = array[ offset + 3 ];\n\n\t\treturn this;\n\n\t}\n\n\ttoArray( array = [], offset = 0 ) {\n\n\t\tarray[ offset ] = this.x;\n\t\tarray[ offset + 1 ] = this.y;\n\t\tarray[ offset + 2 ] = this.z;\n\t\tarray[ offset + 3 ] = this.w;\n\n\t\treturn array;\n\n\t}\n\n\tfromBufferAttribute( attribute, index, offset ) {\n\n\t\tif ( offset !== undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Vector4: offset has been removed from .fromBufferAttribute().' );\n\n\t\t}\n\n\t\tthis.x = attribute.getX( index );\n\t\tthis.y = attribute.getY( index );\n\t\tthis.z = attribute.getZ( index );\n\t\tthis.w = attribute.getW( index );\n\n\t\treturn this;\n\n\t}\n\n\trandom() {\n\n\t\tthis.x = Math.random();\n\t\tthis.y = Math.random();\n\t\tthis.z = Math.random();\n\t\tthis.w = Math.random();\n\n\t\treturn this;\n\n\t}\n\n\t*[ Symbol.iterator ]() {\n\n\t\tyield this.x;\n\t\tyield this.y;\n\t\tyield this.z;\n\t\tyield this.w;\n\n\t}\n\n}\n\n/*\n In options, we can specify:\n * Texture parameters for an auto-generated target texture\n * depthBuffer/stencilBuffer: Booleans to indicate if we should generate these buffers\n*/\nclass WebGLRenderTarget extends EventDispatcher {\n\n\tconstructor( width, height, options = {} ) {\n\n\t\tsuper();\n\n\t\tthis.isWebGLRenderTarget = true;\n\n\t\tthis.width = width;\n\t\tthis.height = height;\n\t\tthis.depth = 1;\n\n\t\tthis.scissor = new Vector4( 0, 0, width, height );\n\t\tthis.scissorTest = false;\n\n\t\tthis.viewport = new Vector4( 0, 0, width, height );\n\n\t\tconst image = { width: width, height: height, depth: 1 };\n\n\t\tthis.texture = new Texture( image, options.mapping, options.wrapS, options.wrapT, options.magFilter, options.minFilter, options.format, options.type, options.anisotropy, options.encoding );\n\t\tthis.texture.isRenderTargetTexture = true;\n\n\t\tthis.texture.flipY = false;\n\t\tthis.texture.generateMipmaps = options.generateMipmaps !== undefined ? options.generateMipmaps : false;\n\t\tthis.texture.internalFormat = options.internalFormat !== undefined ? options.internalFormat : null;\n\t\tthis.texture.minFilter = options.minFilter !== undefined ? options.minFilter : LinearFilter;\n\n\t\tthis.depthBuffer = options.depthBuffer !== undefined ? options.depthBuffer : true;\n\t\tthis.stencilBuffer = options.stencilBuffer !== undefined ? options.stencilBuffer : false;\n\n\t\tthis.depthTexture = options.depthTexture !== undefined ? options.depthTexture : null;\n\n\t\tthis.samples = options.samples !== undefined ? options.samples : 0;\n\n\t}\n\n\tsetSize( width, height, depth = 1 ) {\n\n\t\tif ( this.width !== width || this.height !== height || this.depth !== depth ) {\n\n\t\t\tthis.width = width;\n\t\t\tthis.height = height;\n\t\t\tthis.depth = depth;\n\n\t\t\tthis.texture.image.width = width;\n\t\t\tthis.texture.image.height = height;\n\t\t\tthis.texture.image.depth = depth;\n\n\t\t\tthis.dispose();\n\n\t\t}\n\n\t\tthis.viewport.set( 0, 0, width, height );\n\t\tthis.scissor.set( 0, 0, width, height );\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tthis.width = source.width;\n\t\tthis.height = source.height;\n\t\tthis.depth = source.depth;\n\n\t\tthis.viewport.copy( source.viewport );\n\n\t\tthis.texture = source.texture.clone();\n\t\tthis.texture.isRenderTargetTexture = true;\n\n\t\t// ensure image object is not shared, see #20328\n\n\t\tconst image = Object.assign( {}, source.texture.image );\n\t\tthis.texture.source = new Source( image );\n\n\t\tthis.depthBuffer = source.depthBuffer;\n\t\tthis.stencilBuffer = source.stencilBuffer;\n\n\t\tif ( source.depthTexture !== null ) this.depthTexture = source.depthTexture.clone();\n\n\t\tthis.samples = source.samples;\n\n\t\treturn this;\n\n\t}\n\n\tdispose() {\n\n\t\tthis.dispatchEvent( { type: 'dispose' } );\n\n\t}\n\n}\n\nclass DataArrayTexture extends Texture {\n\n\tconstructor( data = null, width = 1, height = 1, depth = 1 ) {\n\n\t\tsuper( null );\n\n\t\tthis.isDataArrayTexture = true;\n\n\t\tthis.image = { data, width, height, depth };\n\n\t\tthis.magFilter = NearestFilter;\n\t\tthis.minFilter = NearestFilter;\n\n\t\tthis.wrapR = ClampToEdgeWrapping;\n\n\t\tthis.generateMipmaps = false;\n\t\tthis.flipY = false;\n\t\tthis.unpackAlignment = 1;\n\n\t}\n\n}\n\nclass WebGLArrayRenderTarget extends WebGLRenderTarget {\n\n\tconstructor( width, height, depth ) {\n\n\t\tsuper( width, height );\n\n\t\tthis.isWebGLArrayRenderTarget = true;\n\n\t\tthis.depth = depth;\n\n\t\tthis.texture = new DataArrayTexture( null, width, height, depth );\n\n\t\tthis.texture.isRenderTargetTexture = true;\n\n\t}\n\n}\n\nclass Data3DTexture extends Texture {\n\n\tconstructor( data = null, width = 1, height = 1, depth = 1 ) {\n\n\t\t// We're going to add .setXXX() methods for setting properties later.\n\t\t// Users can still set in DataTexture3D directly.\n\t\t//\n\t\t//\tconst texture = new THREE.DataTexture3D( data, width, height, depth );\n\t\t// \ttexture.anisotropy = 16;\n\t\t//\n\t\t// See #14839\n\n\t\tsuper( null );\n\n\t\tthis.isData3DTexture = true;\n\n\t\tthis.image = { data, width, height, depth };\n\n\t\tthis.magFilter = NearestFilter;\n\t\tthis.minFilter = NearestFilter;\n\n\t\tthis.wrapR = ClampToEdgeWrapping;\n\n\t\tthis.generateMipmaps = false;\n\t\tthis.flipY = false;\n\t\tthis.unpackAlignment = 1;\n\n\t}\n\n}\n\nclass WebGL3DRenderTarget extends WebGLRenderTarget {\n\n\tconstructor( width, height, depth ) {\n\n\t\tsuper( width, height );\n\n\t\tthis.isWebGL3DRenderTarget = true;\n\n\t\tthis.depth = depth;\n\n\t\tthis.texture = new Data3DTexture( null, width, height, depth );\n\n\t\tthis.texture.isRenderTargetTexture = true;\n\n\t}\n\n}\n\nclass WebGLMultipleRenderTargets extends WebGLRenderTarget {\n\n\tconstructor( width, height, count, options = {} ) {\n\n\t\tsuper( width, height, options );\n\n\t\tthis.isWebGLMultipleRenderTargets = true;\n\n\t\tconst texture = this.texture;\n\n\t\tthis.texture = [];\n\n\t\tfor ( let i = 0; i < count; i ++ ) {\n\n\t\t\tthis.texture[ i ] = texture.clone();\n\t\t\tthis.texture[ i ].isRenderTargetTexture = true;\n\n\t\t}\n\n\t}\n\n\tsetSize( width, height, depth = 1 ) {\n\n\t\tif ( this.width !== width || this.height !== height || this.depth !== depth ) {\n\n\t\t\tthis.width = width;\n\t\t\tthis.height = height;\n\t\t\tthis.depth = depth;\n\n\t\t\tfor ( let i = 0, il = this.texture.length; i < il; i ++ ) {\n\n\t\t\t\tthis.texture[ i ].image.width = width;\n\t\t\t\tthis.texture[ i ].image.height = height;\n\t\t\t\tthis.texture[ i ].image.depth = depth;\n\n\t\t\t}\n\n\t\t\tthis.dispose();\n\n\t\t}\n\n\t\tthis.viewport.set( 0, 0, width, height );\n\t\tthis.scissor.set( 0, 0, width, height );\n\n\t\treturn this;\n\n\t}\n\n\tcopy( source ) {\n\n\t\tthis.dispose();\n\n\t\tthis.width = source.width;\n\t\tthis.height = source.height;\n\t\tthis.depth = source.depth;\n\n\t\tthis.viewport.set( 0, 0, this.width, this.height );\n\t\tthis.scissor.set( 0, 0, this.width, this.height );\n\n\t\tthis.depthBuffer = source.depthBuffer;\n\t\tthis.stencilBuffer = source.stencilBuffer;\n\n\t\tif ( source.depthTexture !== null ) this.depthTexture = source.depthTexture.clone();\n\n\t\tthis.texture.length = 0;\n\n\t\tfor ( let i = 0, il = source.texture.length; i < il; i ++ ) {\n\n\t\t\tthis.texture[ i ] = source.texture[ i ].clone();\n\t\t\tthis.texture[ i ].isRenderTargetTexture = true;\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n}\n\nclass Quaternion {\n\n\tconstructor( x = 0, y = 0, z = 0, w = 1 ) {\n\n\t\tthis.isQuaternion = true;\n\n\t\tthis._x = x;\n\t\tthis._y = y;\n\t\tthis._z = z;\n\t\tthis._w = w;\n\n\t}\n\n\tstatic slerp( qa, qb, qm, t ) {\n\n\t\tconsole.warn( 'THREE.Quaternion: Static .slerp() has been deprecated. Use qm.slerpQuaternions( qa, qb, t ) instead.' );\n\t\treturn qm.slerpQuaternions( qa, qb, t );\n\n\t}\n\n\tstatic slerpFlat( dst, dstOffset, src0, srcOffset0, src1, srcOffset1, t ) {\n\n\t\t// fuzz-free, array-based Quaternion SLERP operation\n\n\t\tlet x0 = src0[ srcOffset0 + 0 ],\n\t\t\ty0 = src0[ srcOffset0 + 1 ],\n\t\t\tz0 = src0[ srcOffset0 + 2 ],\n\t\t\tw0 = src0[ srcOffset0 + 3 ];\n\n\t\tconst x1 = src1[ srcOffset1 + 0 ],\n\t\t\ty1 = src1[ srcOffset1 + 1 ],\n\t\t\tz1 = src1[ srcOffset1 + 2 ],\n\t\t\tw1 = src1[ srcOffset1 + 3 ];\n\n\t\tif ( t === 0 ) {\n\n\t\t\tdst[ dstOffset + 0 ] = x0;\n\t\t\tdst[ dstOffset + 1 ] = y0;\n\t\t\tdst[ dstOffset + 2 ] = z0;\n\t\t\tdst[ dstOffset + 3 ] = w0;\n\t\t\treturn;\n\n\t\t}\n\n\t\tif ( t === 1 ) {\n\n\t\t\tdst[ dstOffset + 0 ] = x1;\n\t\t\tdst[ dstOffset + 1 ] = y1;\n\t\t\tdst[ dstOffset + 2 ] = z1;\n\t\t\tdst[ dstOffset + 3 ] = w1;\n\t\t\treturn;\n\n\t\t}\n\n\t\tif ( w0 !== w1 || x0 !== x1 || y0 !== y1 || z0 !== z1 ) {\n\n\t\t\tlet s = 1 - t;\n\t\t\tconst cos = x0 * x1 + y0 * y1 + z0 * z1 + w0 * w1,\n\t\t\t\tdir = ( cos >= 0 ? 1 : - 1 ),\n\t\t\t\tsqrSin = 1 - cos * cos;\n\n\t\t\t// Skip the Slerp for tiny steps to avoid numeric problems:\n\t\t\tif ( sqrSin > Number.EPSILON ) {\n\n\t\t\t\tconst sin = Math.sqrt( sqrSin ),\n\t\t\t\t\tlen = Math.atan2( sin, cos * dir );\n\n\t\t\t\ts = Math.sin( s * len ) / sin;\n\t\t\t\tt = Math.sin( t * len ) / sin;\n\n\t\t\t}\n\n\t\t\tconst tDir = t * dir;\n\n\t\t\tx0 = x0 * s + x1 * tDir;\n\t\t\ty0 = y0 * s + y1 * tDir;\n\t\t\tz0 = z0 * s + z1 * tDir;\n\t\t\tw0 = w0 * s + w1 * tDir;\n\n\t\t\t// Normalize in case we just did a lerp:\n\t\t\tif ( s === 1 - t ) {\n\n\t\t\t\tconst f = 1 / Math.sqrt( x0 * x0 + y0 * y0 + z0 * z0 + w0 * w0 );\n\n\t\t\t\tx0 *= f;\n\t\t\t\ty0 *= f;\n\t\t\t\tz0 *= f;\n\t\t\t\tw0 *= f;\n\n\t\t\t}\n\n\t\t}\n\n\t\tdst[ dstOffset ] = x0;\n\t\tdst[ dstOffset + 1 ] = y0;\n\t\tdst[ dstOffset + 2 ] = z0;\n\t\tdst[ dstOffset + 3 ] = w0;\n\n\t}\n\n\tstatic multiplyQuaternionsFlat( dst, dstOffset, src0, srcOffset0, src1, srcOffset1 ) {\n\n\t\tconst x0 = src0[ srcOffset0 ];\n\t\tconst y0 = src0[ srcOffset0 + 1 ];\n\t\tconst z0 = src0[ srcOffset0 + 2 ];\n\t\tconst w0 = src0[ srcOffset0 + 3 ];\n\n\t\tconst x1 = src1[ srcOffset1 ];\n\t\tconst y1 = src1[ srcOffset1 + 1 ];\n\t\tconst z1 = src1[ srcOffset1 + 2 ];\n\t\tconst w1 = src1[ srcOffset1 + 3 ];\n\n\t\tdst[ dstOffset ] = x0 * w1 + w0 * x1 + y0 * z1 - z0 * y1;\n\t\tdst[ dstOffset + 1 ] = y0 * w1 + w0 * y1 + z0 * x1 - x0 * z1;\n\t\tdst[ dstOffset + 2 ] = z0 * w1 + w0 * z1 + x0 * y1 - y0 * x1;\n\t\tdst[ dstOffset + 3 ] = w0 * w1 - x0 * x1 - y0 * y1 - z0 * z1;\n\n\t\treturn dst;\n\n\t}\n\n\tget x() {\n\n\t\treturn this._x;\n\n\t}\n\n\tset x( value ) {\n\n\t\tthis._x = value;\n\t\tthis._onChangeCallback();\n\n\t}\n\n\tget y() {\n\n\t\treturn this._y;\n\n\t}\n\n\tset y( value ) {\n\n\t\tthis._y = value;\n\t\tthis._onChangeCallback();\n\n\t}\n\n\tget z() {\n\n\t\treturn this._z;\n\n\t}\n\n\tset z( value ) {\n\n\t\tthis._z = value;\n\t\tthis._onChangeCallback();\n\n\t}\n\n\tget w() {\n\n\t\treturn this._w;\n\n\t}\n\n\tset w( value ) {\n\n\t\tthis._w = value;\n\t\tthis._onChangeCallback();\n\n\t}\n\n\tset( x, y, z, w ) {\n\n\t\tthis._x = x;\n\t\tthis._y = y;\n\t\tthis._z = z;\n\t\tthis._w = w;\n\n\t\tthis._onChangeCallback();\n\n\t\treturn this;\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor( this._x, this._y, this._z, this._w );\n\n\t}\n\n\tcopy( quaternion ) {\n\n\t\tthis._x = quaternion.x;\n\t\tthis._y = quaternion.y;\n\t\tthis._z = quaternion.z;\n\t\tthis._w = quaternion.w;\n\n\t\tthis._onChangeCallback();\n\n\t\treturn this;\n\n\t}\n\n\tsetFromEuler( euler, update ) {\n\n\t\tif ( ! ( euler && euler.isEuler ) ) {\n\n\t\t\tthrow new Error( 'THREE.Quaternion: .setFromEuler() now expects an Euler rotation rather than a Vector3 and order.' );\n\n\t\t}\n\n\t\tconst x = euler._x, y = euler._y, z = euler._z, order = euler._order;\n\n\t\t// http://www.mathworks.com/matlabcentral/fileexchange/\n\t\t// \t20696-function-to-convert-between-dcm-euler-angles-quaternions-and-euler-vectors/\n\t\t//\tcontent/SpinCalc.m\n\n\t\tconst cos = Math.cos;\n\t\tconst sin = Math.sin;\n\n\t\tconst c1 = cos( x / 2 );\n\t\tconst c2 = cos( y / 2 );\n\t\tconst c3 = cos( z / 2 );\n\n\t\tconst s1 = sin( x / 2 );\n\t\tconst s2 = sin( y / 2 );\n\t\tconst s3 = sin( z / 2 );\n\n\t\tswitch ( order ) {\n\n\t\t\tcase 'XYZ':\n\t\t\t\tthis._x = s1 * c2 * c3 + c1 * s2 * s3;\n\t\t\t\tthis._y = c1 * s2 * c3 - s1 * c2 * s3;\n\t\t\t\tthis._z = c1 * c2 * s3 + s1 * s2 * c3;\n\t\t\t\tthis._w = c1 * c2 * c3 - s1 * s2 * s3;\n\t\t\t\tbreak;\n\n\t\t\tcase 'YXZ':\n\t\t\t\tthis._x = s1 * c2 * c3 + c1 * s2 * s3;\n\t\t\t\tthis._y = c1 * s2 * c3 - s1 * c2 * s3;\n\t\t\t\tthis._z = c1 * c2 * s3 - s1 * s2 * c3;\n\t\t\t\tthis._w = c1 * c2 * c3 + s1 * s2 * s3;\n\t\t\t\tbreak;\n\n\t\t\tcase 'ZXY':\n\t\t\t\tthis._x = s1 * c2 * c3 - c1 * s2 * s3;\n\t\t\t\tthis._y = c1 * s2 * c3 + s1 * c2 * s3;\n\t\t\t\tthis._z = c1 * c2 * s3 + s1 * s2 * c3;\n\t\t\t\tthis._w = c1 * c2 * c3 - s1 * s2 * s3;\n\t\t\t\tbreak;\n\n\t\t\tcase 'ZYX':\n\t\t\t\tthis._x = s1 * c2 * c3 - c1 * s2 * s3;\n\t\t\t\tthis._y = c1 * s2 * c3 + s1 * c2 * s3;\n\t\t\t\tthis._z = c1 * c2 * s3 - s1 * s2 * c3;\n\t\t\t\tthis._w = c1 * c2 * c3 + s1 * s2 * s3;\n\t\t\t\tbreak;\n\n\t\t\tcase 'YZX':\n\t\t\t\tthis._x = s1 * c2 * c3 + c1 * s2 * s3;\n\t\t\t\tthis._y = c1 * s2 * c3 + s1 * c2 * s3;\n\t\t\t\tthis._z = c1 * c2 * s3 - s1 * s2 * c3;\n\t\t\t\tthis._w = c1 * c2 * c3 - s1 * s2 * s3;\n\t\t\t\tbreak;\n\n\t\t\tcase 'XZY':\n\t\t\t\tthis._x = s1 * c2 * c3 - c1 * s2 * s3;\n\t\t\t\tthis._y = c1 * s2 * c3 - s1 * c2 * s3;\n\t\t\t\tthis._z = c1 * c2 * s3 + s1 * s2 * c3;\n\t\t\t\tthis._w = c1 * c2 * c3 + s1 * s2 * s3;\n\t\t\t\tbreak;\n\n\t\t\tdefault:\n\t\t\t\tconsole.warn( 'THREE.Quaternion: .setFromEuler() encountered an unknown order: ' + order );\n\n\t\t}\n\n\t\tif ( update !== false ) this._onChangeCallback();\n\n\t\treturn this;\n\n\t}\n\n\tsetFromAxisAngle( axis, angle ) {\n\n\t\t// http://www.euclideanspace.com/maths/geometry/rotations/conversions/angleToQuaternion/index.htm\n\n\t\t// assumes axis is normalized\n\n\t\tconst halfAngle = angle / 2, s = Math.sin( halfAngle );\n\n\t\tthis._x = axis.x * s;\n\t\tthis._y = axis.y * s;\n\t\tthis._z = axis.z * s;\n\t\tthis._w = Math.cos( halfAngle );\n\n\t\tthis._onChangeCallback();\n\n\t\treturn this;\n\n\t}\n\n\tsetFromRotationMatrix( m ) {\n\n\t\t// http://www.euclideanspace.com/maths/geometry/rotations/conversions/matrixToQuaternion/index.htm\n\n\t\t// assumes the upper 3x3 of m is a pure rotation matrix (i.e, unscaled)\n\n\t\tconst te = m.elements,\n\n\t\t\tm11 = te[ 0 ], m12 = te[ 4 ], m13 = te[ 8 ],\n\t\t\tm21 = te[ 1 ], m22 = te[ 5 ], m23 = te[ 9 ],\n\t\t\tm31 = te[ 2 ], m32 = te[ 6 ], m33 = te[ 10 ],\n\n\t\t\ttrace = m11 + m22 + m33;\n\n\t\tif ( trace > 0 ) {\n\n\t\t\tconst s = 0.5 / Math.sqrt( trace + 1.0 );\n\n\t\t\tthis._w = 0.25 / s;\n\t\t\tthis._x = ( m32 - m23 ) * s;\n\t\t\tthis._y = ( m13 - m31 ) * s;\n\t\t\tthis._z = ( m21 - m12 ) * s;\n\n\t\t} else if ( m11 > m22 && m11 > m33 ) {\n\n\t\t\tconst s = 2.0 * Math.sqrt( 1.0 + m11 - m22 - m33 );\n\n\t\t\tthis._w = ( m32 - m23 ) / s;\n\t\t\tthis._x = 0.25 * s;\n\t\t\tthis._y = ( m12 + m21 ) / s;\n\t\t\tthis._z = ( m13 + m31 ) / s;\n\n\t\t} else if ( m22 > m33 ) {\n\n\t\t\tconst s = 2.0 * Math.sqrt( 1.0 + m22 - m11 - m33 );\n\n\t\t\tthis._w = ( m13 - m31 ) / s;\n\t\t\tthis._x = ( m12 + m21 ) / s;\n\t\t\tthis._y = 0.25 * s;\n\t\t\tthis._z = ( m23 + m32 ) / s;\n\n\t\t} else {\n\n\t\t\tconst s = 2.0 * Math.sqrt( 1.0 + m33 - m11 - m22 );\n\n\t\t\tthis._w = ( m21 - m12 ) / s;\n\t\t\tthis._x = ( m13 + m31 ) / s;\n\t\t\tthis._y = ( m23 + m32 ) / s;\n\t\t\tthis._z = 0.25 * s;\n\n\t\t}\n\n\t\tthis._onChangeCallback();\n\n\t\treturn this;\n\n\t}\n\n\tsetFromUnitVectors( vFrom, vTo ) {\n\n\t\t// assumes direction vectors vFrom and vTo are normalized\n\n\t\tlet r = vFrom.dot( vTo ) + 1;\n\n\t\tif ( r < Number.EPSILON ) {\n\n\t\t\t// vFrom and vTo point in opposite directions\n\n\t\t\tr = 0;\n\n\t\t\tif ( Math.abs( vFrom.x ) > Math.abs( vFrom.z ) ) {\n\n\t\t\t\tthis._x = - vFrom.y;\n\t\t\t\tthis._y = vFrom.x;\n\t\t\t\tthis._z = 0;\n\t\t\t\tthis._w = r;\n\n\t\t\t} else {\n\n\t\t\t\tthis._x = 0;\n\t\t\t\tthis._y = - vFrom.z;\n\t\t\t\tthis._z = vFrom.y;\n\t\t\t\tthis._w = r;\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\t// crossVectors( vFrom, vTo ); // inlined to avoid cyclic dependency on Vector3\n\n\t\t\tthis._x = vFrom.y * vTo.z - vFrom.z * vTo.y;\n\t\t\tthis._y = vFrom.z * vTo.x - vFrom.x * vTo.z;\n\t\t\tthis._z = vFrom.x * vTo.y - vFrom.y * vTo.x;\n\t\t\tthis._w = r;\n\n\t\t}\n\n\t\treturn this.normalize();\n\n\t}\n\n\tangleTo( q ) {\n\n\t\treturn 2 * Math.acos( Math.abs( clamp( this.dot( q ), - 1, 1 ) ) );\n\n\t}\n\n\trotateTowards( q, step ) {\n\n\t\tconst angle = this.angleTo( q );\n\n\t\tif ( angle === 0 ) return this;\n\n\t\tconst t = Math.min( 1, step / angle );\n\n\t\tthis.slerp( q, t );\n\n\t\treturn this;\n\n\t}\n\n\tidentity() {\n\n\t\treturn this.set( 0, 0, 0, 1 );\n\n\t}\n\n\tinvert() {\n\n\t\t// quaternion is assumed to have unit length\n\n\t\treturn this.conjugate();\n\n\t}\n\n\tconjugate() {\n\n\t\tthis._x *= - 1;\n\t\tthis._y *= - 1;\n\t\tthis._z *= - 1;\n\n\t\tthis._onChangeCallback();\n\n\t\treturn this;\n\n\t}\n\n\tdot( v ) {\n\n\t\treturn this._x * v._x + this._y * v._y + this._z * v._z + this._w * v._w;\n\n\t}\n\n\tlengthSq() {\n\n\t\treturn this._x * this._x + this._y * this._y + this._z * this._z + this._w * this._w;\n\n\t}\n\n\tlength() {\n\n\t\treturn Math.sqrt( this._x * this._x + this._y * this._y + this._z * this._z + this._w * this._w );\n\n\t}\n\n\tnormalize() {\n\n\t\tlet l = this.length();\n\n\t\tif ( l === 0 ) {\n\n\t\t\tthis._x = 0;\n\t\t\tthis._y = 0;\n\t\t\tthis._z = 0;\n\t\t\tthis._w = 1;\n\n\t\t} else {\n\n\t\t\tl = 1 / l;\n\n\t\t\tthis._x = this._x * l;\n\t\t\tthis._y = this._y * l;\n\t\t\tthis._z = this._z * l;\n\t\t\tthis._w = this._w * l;\n\n\t\t}\n\n\t\tthis._onChangeCallback();\n\n\t\treturn this;\n\n\t}\n\n\tmultiply( q, p ) {\n\n\t\tif ( p !== undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Quaternion: .multiply() now only accepts one argument. Use .multiplyQuaternions( a, b ) instead.' );\n\t\t\treturn this.multiplyQuaternions( q, p );\n\n\t\t}\n\n\t\treturn this.multiplyQuaternions( this, q );\n\n\t}\n\n\tpremultiply( q ) {\n\n\t\treturn this.multiplyQuaternions( q, this );\n\n\t}\n\n\tmultiplyQuaternions( a, b ) {\n\n\t\t// from http://www.euclideanspace.com/maths/algebra/realNormedAlgebra/quaternions/code/index.htm\n\n\t\tconst qax = a._x, qay = a._y, qaz = a._z, qaw = a._w;\n\t\tconst qbx = b._x, qby = b._y, qbz = b._z, qbw = b._w;\n\n\t\tthis._x = qax * qbw + qaw * qbx + qay * qbz - qaz * qby;\n\t\tthis._y = qay * qbw + qaw * qby + qaz * qbx - qax * qbz;\n\t\tthis._z = qaz * qbw + qaw * qbz + qax * qby - qay * qbx;\n\t\tthis._w = qaw * qbw - qax * qbx - qay * qby - qaz * qbz;\n\n\t\tthis._onChangeCallback();\n\n\t\treturn this;\n\n\t}\n\n\tslerp( qb, t ) {\n\n\t\tif ( t === 0 ) return this;\n\t\tif ( t === 1 ) return this.copy( qb );\n\n\t\tconst x = this._x, y = this._y, z = this._z, w = this._w;\n\n\t\t// http://www.euclideanspace.com/maths/algebra/realNormedAlgebra/quaternions/slerp/\n\n\t\tlet cosHalfTheta = w * qb._w + x * qb._x + y * qb._y + z * qb._z;\n\n\t\tif ( cosHalfTheta < 0 ) {\n\n\t\t\tthis._w = - qb._w;\n\t\t\tthis._x = - qb._x;\n\t\t\tthis._y = - qb._y;\n\t\t\tthis._z = - qb._z;\n\n\t\t\tcosHalfTheta = - cosHalfTheta;\n\n\t\t} else {\n\n\t\t\tthis.copy( qb );\n\n\t\t}\n\n\t\tif ( cosHalfTheta >= 1.0 ) {\n\n\t\t\tthis._w = w;\n\t\t\tthis._x = x;\n\t\t\tthis._y = y;\n\t\t\tthis._z = z;\n\n\t\t\treturn this;\n\n\t\t}\n\n\t\tconst sqrSinHalfTheta = 1.0 - cosHalfTheta * cosHalfTheta;\n\n\t\tif ( sqrSinHalfTheta <= Number.EPSILON ) {\n\n\t\t\tconst s = 1 - t;\n\t\t\tthis._w = s * w + t * this._w;\n\t\t\tthis._x = s * x + t * this._x;\n\t\t\tthis._y = s * y + t * this._y;\n\t\t\tthis._z = s * z + t * this._z;\n\n\t\t\tthis.normalize();\n\t\t\tthis._onChangeCallback();\n\n\t\t\treturn this;\n\n\t\t}\n\n\t\tconst sinHalfTheta = Math.sqrt( sqrSinHalfTheta );\n\t\tconst halfTheta = Math.atan2( sinHalfTheta, cosHalfTheta );\n\t\tconst ratioA = Math.sin( ( 1 - t ) * halfTheta ) / sinHalfTheta,\n\t\t\tratioB = Math.sin( t * halfTheta ) / sinHalfTheta;\n\n\t\tthis._w = ( w * ratioA + this._w * ratioB );\n\t\tthis._x = ( x * ratioA + this._x * ratioB );\n\t\tthis._y = ( y * ratioA + this._y * ratioB );\n\t\tthis._z = ( z * ratioA + this._z * ratioB );\n\n\t\tthis._onChangeCallback();\n\n\t\treturn this;\n\n\t}\n\n\tslerpQuaternions( qa, qb, t ) {\n\n\t\treturn this.copy( qa ).slerp( qb, t );\n\n\t}\n\n\trandom() {\n\n\t\t// Derived from http://planning.cs.uiuc.edu/node198.html\n\t\t// Note, this source uses w, x, y, z ordering,\n\t\t// so we swap the order below.\n\n\t\tconst u1 = Math.random();\n\t\tconst sqrt1u1 = Math.sqrt( 1 - u1 );\n\t\tconst sqrtu1 = Math.sqrt( u1 );\n\n\t\tconst u2 = 2 * Math.PI * Math.random();\n\n\t\tconst u3 = 2 * Math.PI * Math.random();\n\n\t\treturn this.set(\n\t\t\tsqrt1u1 * Math.cos( u2 ),\n\t\t\tsqrtu1 * Math.sin( u3 ),\n\t\t\tsqrtu1 * Math.cos( u3 ),\n\t\t\tsqrt1u1 * Math.sin( u2 ),\n\t\t);\n\n\t}\n\n\tequals( quaternion ) {\n\n\t\treturn ( quaternion._x === this._x ) && ( quaternion._y === this._y ) && ( quaternion._z === this._z ) && ( quaternion._w === this._w );\n\n\t}\n\n\tfromArray( array, offset = 0 ) {\n\n\t\tthis._x = array[ offset ];\n\t\tthis._y = array[ offset + 1 ];\n\t\tthis._z = array[ offset + 2 ];\n\t\tthis._w = array[ offset + 3 ];\n\n\t\tthis._onChangeCallback();\n\n\t\treturn this;\n\n\t}\n\n\ttoArray( array = [], offset = 0 ) {\n\n\t\tarray[ offset ] = this._x;\n\t\tarray[ offset + 1 ] = this._y;\n\t\tarray[ offset + 2 ] = this._z;\n\t\tarray[ offset + 3 ] = this._w;\n\n\t\treturn array;\n\n\t}\n\n\tfromBufferAttribute( attribute, index ) {\n\n\t\tthis._x = attribute.getX( index );\n\t\tthis._y = attribute.getY( index );\n\t\tthis._z = attribute.getZ( index );\n\t\tthis._w = attribute.getW( index );\n\n\t\treturn this;\n\n\t}\n\n\t_onChange( callback ) {\n\n\t\tthis._onChangeCallback = callback;\n\n\t\treturn this;\n\n\t}\n\n\t_onChangeCallback() {}\n\n\t*[ Symbol.iterator ]() {\n\n\t\tyield this._x;\n\t\tyield this._y;\n\t\tyield this._z;\n\t\tyield this._w;\n\n\t}\n\n}\n\nclass Vector3 {\n\n\tconstructor( x = 0, y = 0, z = 0 ) {\n\n\t\tthis.isVector3 = true;\n\n\t\tthis.x = x;\n\t\tthis.y = y;\n\t\tthis.z = z;\n\n\t}\n\n\tset( x, y, z ) {\n\n\t\tif ( z === undefined ) z = this.z; // sprite.scale.set(x,y)\n\n\t\tthis.x = x;\n\t\tthis.y = y;\n\t\tthis.z = z;\n\n\t\treturn this;\n\n\t}\n\n\tsetScalar( scalar ) {\n\n\t\tthis.x = scalar;\n\t\tthis.y = scalar;\n\t\tthis.z = scalar;\n\n\t\treturn this;\n\n\t}\n\n\tsetX( x ) {\n\n\t\tthis.x = x;\n\n\t\treturn this;\n\n\t}\n\n\tsetY( y ) {\n\n\t\tthis.y = y;\n\n\t\treturn this;\n\n\t}\n\n\tsetZ( z ) {\n\n\t\tthis.z = z;\n\n\t\treturn this;\n\n\t}\n\n\tsetComponent( index, value ) {\n\n\t\tswitch ( index ) {\n\n\t\t\tcase 0: this.x = value; break;\n\t\t\tcase 1: this.y = value; break;\n\t\t\tcase 2: this.z = value; break;\n\t\t\tdefault: throw new Error( 'index is out of range: ' + index );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tgetComponent( index ) {\n\n\t\tswitch ( index ) {\n\n\t\t\tcase 0: return this.x;\n\t\t\tcase 1: return this.y;\n\t\t\tcase 2: return this.z;\n\t\t\tdefault: throw new Error( 'index is out of range: ' + index );\n\n\t\t}\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor( this.x, this.y, this.z );\n\n\t}\n\n\tcopy( v ) {\n\n\t\tthis.x = v.x;\n\t\tthis.y = v.y;\n\t\tthis.z = v.z;\n\n\t\treturn this;\n\n\t}\n\n\tadd( v, w ) {\n\n\t\tif ( w !== undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Vector3: .add() now only accepts one argument. Use .addVectors( a, b ) instead.' );\n\t\t\treturn this.addVectors( v, w );\n\n\t\t}\n\n\t\tthis.x += v.x;\n\t\tthis.y += v.y;\n\t\tthis.z += v.z;\n\n\t\treturn this;\n\n\t}\n\n\taddScalar( s ) {\n\n\t\tthis.x += s;\n\t\tthis.y += s;\n\t\tthis.z += s;\n\n\t\treturn this;\n\n\t}\n\n\taddVectors( a, b ) {\n\n\t\tthis.x = a.x + b.x;\n\t\tthis.y = a.y + b.y;\n\t\tthis.z = a.z + b.z;\n\n\t\treturn this;\n\n\t}\n\n\taddScaledVector( v, s ) {\n\n\t\tthis.x += v.x * s;\n\t\tthis.y += v.y * s;\n\t\tthis.z += v.z * s;\n\n\t\treturn this;\n\n\t}\n\n\tsub( v, w ) {\n\n\t\tif ( w !== undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Vector3: .sub() now only accepts one argument. Use .subVectors( a, b ) instead.' );\n\t\t\treturn this.subVectors( v, w );\n\n\t\t}\n\n\t\tthis.x -= v.x;\n\t\tthis.y -= v.y;\n\t\tthis.z -= v.z;\n\n\t\treturn this;\n\n\t}\n\n\tsubScalar( s ) {\n\n\t\tthis.x -= s;\n\t\tthis.y -= s;\n\t\tthis.z -= s;\n\n\t\treturn this;\n\n\t}\n\n\tsubVectors( a, b ) {\n\n\t\tthis.x = a.x - b.x;\n\t\tthis.y = a.y - b.y;\n\t\tthis.z = a.z - b.z;\n\n\t\treturn this;\n\n\t}\n\n\tmultiply( v, w ) {\n\n\t\tif ( w !== undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Vector3: .multiply() now only accepts one argument. Use .multiplyVectors( a, b ) instead.' );\n\t\t\treturn this.multiplyVectors( v, w );\n\n\t\t}\n\n\t\tthis.x *= v.x;\n\t\tthis.y *= v.y;\n\t\tthis.z *= v.z;\n\n\t\treturn this;\n\n\t}\n\n\tmultiplyScalar( scalar ) {\n\n\t\tthis.x *= scalar;\n\t\tthis.y *= scalar;\n\t\tthis.z *= scalar;\n\n\t\treturn this;\n\n\t}\n\n\tmultiplyVectors( a, b ) {\n\n\t\tthis.x = a.x * b.x;\n\t\tthis.y = a.y * b.y;\n\t\tthis.z = a.z * b.z;\n\n\t\treturn this;\n\n\t}\n\n\tapplyEuler( euler ) {\n\n\t\tif ( ! ( euler && euler.isEuler ) ) {\n\n\t\t\tconsole.error( 'THREE.Vector3: .applyEuler() now expects an Euler rotation rather than a Vector3 and order.' );\n\n\t\t}\n\n\t\treturn this.applyQuaternion( _quaternion$4.setFromEuler( euler ) );\n\n\t}\n\n\tapplyAxisAngle( axis, angle ) {\n\n\t\treturn this.applyQuaternion( _quaternion$4.setFromAxisAngle( axis, angle ) );\n\n\t}\n\n\tapplyMatrix3( m ) {\n\n\t\tconst x = this.x, y = this.y, z = this.z;\n\t\tconst e = m.elements;\n\n\t\tthis.x = e[ 0 ] * x + e[ 3 ] * y + e[ 6 ] * z;\n\t\tthis.y = e[ 1 ] * x + e[ 4 ] * y + e[ 7 ] * z;\n\t\tthis.z = e[ 2 ] * x + e[ 5 ] * y + e[ 8 ] * z;\n\n\t\treturn this;\n\n\t}\n\n\tapplyNormalMatrix( m ) {\n\n\t\treturn this.applyMatrix3( m ).normalize();\n\n\t}\n\n\tapplyMatrix4( m ) {\n\n\t\tconst x = this.x, y = this.y, z = this.z;\n\t\tconst e = m.elements;\n\n\t\tconst w = 1 / ( e[ 3 ] * x + e[ 7 ] * y + e[ 11 ] * z + e[ 15 ] );\n\n\t\tthis.x = ( e[ 0 ] * x + e[ 4 ] * y + e[ 8 ] * z + e[ 12 ] ) * w;\n\t\tthis.y = ( e[ 1 ] * x + e[ 5 ] * y + e[ 9 ] * z + e[ 13 ] ) * w;\n\t\tthis.z = ( e[ 2 ] * x + e[ 6 ] * y + e[ 10 ] * z + e[ 14 ] ) * w;\n\n\t\treturn this;\n\n\t}\n\n\tapplyQuaternion( q ) {\n\n\t\tconst x = this.x, y = this.y, z = this.z;\n\t\tconst qx = q.x, qy = q.y, qz = q.z, qw = q.w;\n\n\t\t// calculate quat * vector\n\n\t\tconst ix = qw * x + qy * z - qz * y;\n\t\tconst iy = qw * y + qz * x - qx * z;\n\t\tconst iz = qw * z + qx * y - qy * x;\n\t\tconst iw = - qx * x - qy * y - qz * z;\n\n\t\t// calculate result * inverse quat\n\n\t\tthis.x = ix * qw + iw * - qx + iy * - qz - iz * - qy;\n\t\tthis.y = iy * qw + iw * - qy + iz * - qx - ix * - qz;\n\t\tthis.z = iz * qw + iw * - qz + ix * - qy - iy * - qx;\n\n\t\treturn this;\n\n\t}\n\n\tproject( camera ) {\n\n\t\treturn this.applyMatrix4( camera.matrixWorldInverse ).applyMatrix4( camera.projectionMatrix );\n\n\t}\n\n\tunproject( camera ) {\n\n\t\treturn this.applyMatrix4( camera.projectionMatrixInverse ).applyMatrix4( camera.matrixWorld );\n\n\t}\n\n\ttransformDirection( m ) {\n\n\t\t// input: THREE.Matrix4 affine matrix\n\t\t// vector interpreted as a direction\n\n\t\tconst x = this.x, y = this.y, z = this.z;\n\t\tconst e = m.elements;\n\n\t\tthis.x = e[ 0 ] * x + e[ 4 ] * y + e[ 8 ] * z;\n\t\tthis.y = e[ 1 ] * x + e[ 5 ] * y + e[ 9 ] * z;\n\t\tthis.z = e[ 2 ] * x + e[ 6 ] * y + e[ 10 ] * z;\n\n\t\treturn this.normalize();\n\n\t}\n\n\tdivide( v ) {\n\n\t\tthis.x /= v.x;\n\t\tthis.y /= v.y;\n\t\tthis.z /= v.z;\n\n\t\treturn this;\n\n\t}\n\n\tdivideScalar( scalar ) {\n\n\t\treturn this.multiplyScalar( 1 / scalar );\n\n\t}\n\n\tmin( v ) {\n\n\t\tthis.x = Math.min( this.x, v.x );\n\t\tthis.y = Math.min( this.y, v.y );\n\t\tthis.z = Math.min( this.z, v.z );\n\n\t\treturn this;\n\n\t}\n\n\tmax( v ) {\n\n\t\tthis.x = Math.max( this.x, v.x );\n\t\tthis.y = Math.max( this.y, v.y );\n\t\tthis.z = Math.max( this.z, v.z );\n\n\t\treturn this;\n\n\t}\n\n\tclamp( min, max ) {\n\n\t\t// assumes min < max, componentwise\n\n\t\tthis.x = Math.max( min.x, Math.min( max.x, this.x ) );\n\t\tthis.y = Math.max( min.y, Math.min( max.y, this.y ) );\n\t\tthis.z = Math.max( min.z, Math.min( max.z, this.z ) );\n\n\t\treturn this;\n\n\t}\n\n\tclampScalar( minVal, maxVal ) {\n\n\t\tthis.x = Math.max( minVal, Math.min( maxVal, this.x ) );\n\t\tthis.y = Math.max( minVal, Math.min( maxVal, this.y ) );\n\t\tthis.z = Math.max( minVal, Math.min( maxVal, this.z ) );\n\n\t\treturn this;\n\n\t}\n\n\tclampLength( min, max ) {\n\n\t\tconst length = this.length();\n\n\t\treturn this.divideScalar( length || 1 ).multiplyScalar( Math.max( min, Math.min( max, length ) ) );\n\n\t}\n\n\tfloor() {\n\n\t\tthis.x = Math.floor( this.x );\n\t\tthis.y = Math.floor( this.y );\n\t\tthis.z = Math.floor( this.z );\n\n\t\treturn this;\n\n\t}\n\n\tceil() {\n\n\t\tthis.x = Math.ceil( this.x );\n\t\tthis.y = Math.ceil( this.y );\n\t\tthis.z = Math.ceil( this.z );\n\n\t\treturn this;\n\n\t}\n\n\tround() {\n\n\t\tthis.x = Math.round( this.x );\n\t\tthis.y = Math.round( this.y );\n\t\tthis.z = Math.round( this.z );\n\n\t\treturn this;\n\n\t}\n\n\troundToZero() {\n\n\t\tthis.x = ( this.x < 0 ) ? Math.ceil( this.x ) : Math.floor( this.x );\n\t\tthis.y = ( this.y < 0 ) ? Math.ceil( this.y ) : Math.floor( this.y );\n\t\tthis.z = ( this.z < 0 ) ? Math.ceil( this.z ) : Math.floor( this.z );\n\n\t\treturn this;\n\n\t}\n\n\tnegate() {\n\n\t\tthis.x = - this.x;\n\t\tthis.y = - this.y;\n\t\tthis.z = - this.z;\n\n\t\treturn this;\n\n\t}\n\n\tdot( v ) {\n\n\t\treturn this.x * v.x + this.y * v.y + this.z * v.z;\n\n\t}\n\n\t// TODO lengthSquared?\n\n\tlengthSq() {\n\n\t\treturn this.x * this.x + this.y * this.y + this.z * this.z;\n\n\t}\n\n\tlength() {\n\n\t\treturn Math.sqrt( this.x * this.x + this.y * this.y + this.z * this.z );\n\n\t}\n\n\tmanhattanLength() {\n\n\t\treturn Math.abs( this.x ) + Math.abs( this.y ) + Math.abs( this.z );\n\n\t}\n\n\tnormalize() {\n\n\t\treturn this.divideScalar( this.length() || 1 );\n\n\t}\n\n\tsetLength( length ) {\n\n\t\treturn this.normalize().multiplyScalar( length );\n\n\t}\n\n\tlerp( v, alpha ) {\n\n\t\tthis.x += ( v.x - this.x ) * alpha;\n\t\tthis.y += ( v.y - this.y ) * alpha;\n\t\tthis.z += ( v.z - this.z ) * alpha;\n\n\t\treturn this;\n\n\t}\n\n\tlerpVectors( v1, v2, alpha ) {\n\n\t\tthis.x = v1.x + ( v2.x - v1.x ) * alpha;\n\t\tthis.y = v1.y + ( v2.y - v1.y ) * alpha;\n\t\tthis.z = v1.z + ( v2.z - v1.z ) * alpha;\n\n\t\treturn this;\n\n\t}\n\n\tcross( v, w ) {\n\n\t\tif ( w !== undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Vector3: .cross() now only accepts one argument. Use .crossVectors( a, b ) instead.' );\n\t\t\treturn this.crossVectors( v, w );\n\n\t\t}\n\n\t\treturn this.crossVectors( this, v );\n\n\t}\n\n\tcrossVectors( a, b ) {\n\n\t\tconst ax = a.x, ay = a.y, az = a.z;\n\t\tconst bx = b.x, by = b.y, bz = b.z;\n\n\t\tthis.x = ay * bz - az * by;\n\t\tthis.y = az * bx - ax * bz;\n\t\tthis.z = ax * by - ay * bx;\n\n\t\treturn this;\n\n\t}\n\n\tprojectOnVector( v ) {\n\n\t\tconst denominator = v.lengthSq();\n\n\t\tif ( denominator === 0 ) return this.set( 0, 0, 0 );\n\n\t\tconst scalar = v.dot( this ) / denominator;\n\n\t\treturn this.copy( v ).multiplyScalar( scalar );\n\n\t}\n\n\tprojectOnPlane( planeNormal ) {\n\n\t\t_vector$c.copy( this ).projectOnVector( planeNormal );\n\n\t\treturn this.sub( _vector$c );\n\n\t}\n\n\treflect( normal ) {\n\n\t\t// reflect incident vector off plane orthogonal to normal\n\t\t// normal is assumed to have unit length\n\n\t\treturn this.sub( _vector$c.copy( normal ).multiplyScalar( 2 * this.dot( normal ) ) );\n\n\t}\n\n\tangleTo( v ) {\n\n\t\tconst denominator = Math.sqrt( this.lengthSq() * v.lengthSq() );\n\n\t\tif ( denominator === 0 ) return Math.PI / 2;\n\n\t\tconst theta = this.dot( v ) / denominator;\n\n\t\t// clamp, to handle numerical problems\n\n\t\treturn Math.acos( clamp( theta, - 1, 1 ) );\n\n\t}\n\n\tdistanceTo( v ) {\n\n\t\treturn Math.sqrt( this.distanceToSquared( v ) );\n\n\t}\n\n\tdistanceToSquared( v ) {\n\n\t\tconst dx = this.x - v.x, dy = this.y - v.y, dz = this.z - v.z;\n\n\t\treturn dx * dx + dy * dy + dz * dz;\n\n\t}\n\n\tmanhattanDistanceTo( v ) {\n\n\t\treturn Math.abs( this.x - v.x ) + Math.abs( this.y - v.y ) + Math.abs( this.z - v.z );\n\n\t}\n\n\tsetFromSpherical( s ) {\n\n\t\treturn this.setFromSphericalCoords( s.radius, s.phi, s.theta );\n\n\t}\n\n\tsetFromSphericalCoords( radius, phi, theta ) {\n\n\t\tconst sinPhiRadius = Math.sin( phi ) * radius;\n\n\t\tthis.x = sinPhiRadius * Math.sin( theta );\n\t\tthis.y = Math.cos( phi ) * radius;\n\t\tthis.z = sinPhiRadius * Math.cos( theta );\n\n\t\treturn this;\n\n\t}\n\n\tsetFromCylindrical( c ) {\n\n\t\treturn this.setFromCylindricalCoords( c.radius, c.theta, c.y );\n\n\t}\n\n\tsetFromCylindricalCoords( radius, theta, y ) {\n\n\t\tthis.x = radius * Math.sin( theta );\n\t\tthis.y = y;\n\t\tthis.z = radius * Math.cos( theta );\n\n\t\treturn this;\n\n\t}\n\n\tsetFromMatrixPosition( m ) {\n\n\t\tconst e = m.elements;\n\n\t\tthis.x = e[ 12 ];\n\t\tthis.y = e[ 13 ];\n\t\tthis.z = e[ 14 ];\n\n\t\treturn this;\n\n\t}\n\n\tsetFromMatrixScale( m ) {\n\n\t\tconst sx = this.setFromMatrixColumn( m, 0 ).length();\n\t\tconst sy = this.setFromMatrixColumn( m, 1 ).length();\n\t\tconst sz = this.setFromMatrixColumn( m, 2 ).length();\n\n\t\tthis.x = sx;\n\t\tthis.y = sy;\n\t\tthis.z = sz;\n\n\t\treturn this;\n\n\t}\n\n\tsetFromMatrixColumn( m, index ) {\n\n\t\treturn this.fromArray( m.elements, index * 4 );\n\n\t}\n\n\tsetFromMatrix3Column( m, index ) {\n\n\t\treturn this.fromArray( m.elements, index * 3 );\n\n\t}\n\n\tsetFromEuler( e ) {\n\n\t\tthis.x = e._x;\n\t\tthis.y = e._y;\n\t\tthis.z = e._z;\n\n\t\treturn this;\n\n\t}\n\n\tequals( v ) {\n\n\t\treturn ( ( v.x === this.x ) && ( v.y === this.y ) && ( v.z === this.z ) );\n\n\t}\n\n\tfromArray( array, offset = 0 ) {\n\n\t\tthis.x = array[ offset ];\n\t\tthis.y = array[ offset + 1 ];\n\t\tthis.z = array[ offset + 2 ];\n\n\t\treturn this;\n\n\t}\n\n\ttoArray( array = [], offset = 0 ) {\n\n\t\tarray[ offset ] = this.x;\n\t\tarray[ offset + 1 ] = this.y;\n\t\tarray[ offset + 2 ] = this.z;\n\n\t\treturn array;\n\n\t}\n\n\tfromBufferAttribute( attribute, index, offset ) {\n\n\t\tif ( offset !== undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Vector3: offset has been removed from .fromBufferAttribute().' );\n\n\t\t}\n\n\t\tthis.x = attribute.getX( index );\n\t\tthis.y = attribute.getY( index );\n\t\tthis.z = attribute.getZ( index );\n\n\t\treturn this;\n\n\t}\n\n\trandom() {\n\n\t\tthis.x = Math.random();\n\t\tthis.y = Math.random();\n\t\tthis.z = Math.random();\n\n\t\treturn this;\n\n\t}\n\n\trandomDirection() {\n\n\t\t// Derived from https://mathworld.wolfram.com/SpherePointPicking.html\n\n\t\tconst u = ( Math.random() - 0.5 ) * 2;\n\t\tconst t = Math.random() * Math.PI * 2;\n\t\tconst f = Math.sqrt( 1 - u ** 2 );\n\n\t\tthis.x = f * Math.cos( t );\n\t\tthis.y = f * Math.sin( t );\n\t\tthis.z = u;\n\n\t\treturn this;\n\n\t}\n\n\t*[ Symbol.iterator ]() {\n\n\t\tyield this.x;\n\t\tyield this.y;\n\t\tyield this.z;\n\n\t}\n\n}\n\nconst _vector$c = /*@__PURE__*/ new Vector3();\nconst _quaternion$4 = /*@__PURE__*/ new Quaternion();\n\nclass Box3 {\n\n\tconstructor( min = new Vector3( + Infinity, + Infinity, + Infinity ), max = new Vector3( - Infinity, - Infinity, - Infinity ) ) {\n\n\t\tthis.isBox3 = true;\n\n\t\tthis.min = min;\n\t\tthis.max = max;\n\n\t}\n\n\tset( min, max ) {\n\n\t\tthis.min.copy( min );\n\t\tthis.max.copy( max );\n\n\t\treturn this;\n\n\t}\n\n\tsetFromArray( array ) {\n\n\t\tlet minX = + Infinity;\n\t\tlet minY = + Infinity;\n\t\tlet minZ = + Infinity;\n\n\t\tlet maxX = - Infinity;\n\t\tlet maxY = - Infinity;\n\t\tlet maxZ = - Infinity;\n\n\t\tfor ( let i = 0, l = array.length; i < l; i += 3 ) {\n\n\t\t\tconst x = array[ i ];\n\t\t\tconst y = array[ i + 1 ];\n\t\t\tconst z = array[ i + 2 ];\n\n\t\t\tif ( x < minX ) minX = x;\n\t\t\tif ( y < minY ) minY = y;\n\t\t\tif ( z < minZ ) minZ = z;\n\n\t\t\tif ( x > maxX ) maxX = x;\n\t\t\tif ( y > maxY ) maxY = y;\n\t\t\tif ( z > maxZ ) maxZ = z;\n\n\t\t}\n\n\t\tthis.min.set( minX, minY, minZ );\n\t\tthis.max.set( maxX, maxY, maxZ );\n\n\t\treturn this;\n\n\t}\n\n\tsetFromBufferAttribute( attribute ) {\n\n\t\tlet minX = + Infinity;\n\t\tlet minY = + Infinity;\n\t\tlet minZ = + Infinity;\n\n\t\tlet maxX = - Infinity;\n\t\tlet maxY = - Infinity;\n\t\tlet maxZ = - Infinity;\n\n\t\tfor ( let i = 0, l = attribute.count; i < l; i ++ ) {\n\n\t\t\tconst x = attribute.getX( i );\n\t\t\tconst y = attribute.getY( i );\n\t\t\tconst z = attribute.getZ( i );\n\n\t\t\tif ( x < minX ) minX = x;\n\t\t\tif ( y < minY ) minY = y;\n\t\t\tif ( z < minZ ) minZ = z;\n\n\t\t\tif ( x > maxX ) maxX = x;\n\t\t\tif ( y > maxY ) maxY = y;\n\t\t\tif ( z > maxZ ) maxZ = z;\n\n\t\t}\n\n\t\tthis.min.set( minX, minY, minZ );\n\t\tthis.max.set( maxX, maxY, maxZ );\n\n\t\treturn this;\n\n\t}\n\n\tsetFromPoints( points ) {\n\n\t\tthis.makeEmpty();\n\n\t\tfor ( let i = 0, il = points.length; i < il; i ++ ) {\n\n\t\t\tthis.expandByPoint( points[ i ] );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tsetFromCenterAndSize( center, size ) {\n\n\t\tconst halfSize = _vector$b.copy( size ).multiplyScalar( 0.5 );\n\n\t\tthis.min.copy( center ).sub( halfSize );\n\t\tthis.max.copy( center ).add( halfSize );\n\n\t\treturn this;\n\n\t}\n\n\tsetFromObject( object, precise = false ) {\n\n\t\tthis.makeEmpty();\n\n\t\treturn this.expandByObject( object, precise );\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n\tcopy( box ) {\n\n\t\tthis.min.copy( box.min );\n\t\tthis.max.copy( box.max );\n\n\t\treturn this;\n\n\t}\n\n\tmakeEmpty() {\n\n\t\tthis.min.x = this.min.y = this.min.z = + Infinity;\n\t\tthis.max.x = this.max.y = this.max.z = - Infinity;\n\n\t\treturn this;\n\n\t}\n\n\tisEmpty() {\n\n\t\t// this is a more robust check for empty than ( volume <= 0 ) because volume can get positive with two negative axes\n\n\t\treturn ( this.max.x < this.min.x ) || ( this.max.y < this.min.y ) || ( this.max.z < this.min.z );\n\n\t}\n\n\tgetCenter( target ) {\n\n\t\treturn this.isEmpty() ? target.set( 0, 0, 0 ) : target.addVectors( this.min, this.max ).multiplyScalar( 0.5 );\n\n\t}\n\n\tgetSize( target ) {\n\n\t\treturn this.isEmpty() ? target.set( 0, 0, 0 ) : target.subVectors( this.max, this.min );\n\n\t}\n\n\texpandByPoint( point ) {\n\n\t\tthis.min.min( point );\n\t\tthis.max.max( point );\n\n\t\treturn this;\n\n\t}\n\n\texpandByVector( vector ) {\n\n\t\tthis.min.sub( vector );\n\t\tthis.max.add( vector );\n\n\t\treturn this;\n\n\t}\n\n\texpandByScalar( scalar ) {\n\n\t\tthis.min.addScalar( - scalar );\n\t\tthis.max.addScalar( scalar );\n\n\t\treturn this;\n\n\t}\n\n\texpandByObject( object, precise = false ) {\n\n\t\t// Computes the world-axis-aligned bounding box of an object (including its children),\n\t\t// accounting for both the object's, and children's, world transforms\n\n\t\tobject.updateWorldMatrix( false, false );\n\n\t\tconst geometry = object.geometry;\n\n\t\tif ( geometry !== undefined ) {\n\n\t\t\tif ( precise && geometry.attributes != undefined && geometry.attributes.position !== undefined ) {\n\n\t\t\t\tconst position = geometry.attributes.position;\n\t\t\t\tfor ( let i = 0, l = position.count; i < l; i ++ ) {\n\n\t\t\t\t\t_vector$b.fromBufferAttribute( position, i ).applyMatrix4( object.matrixWorld );\n\t\t\t\t\tthis.expandByPoint( _vector$b );\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\tif ( geometry.boundingBox === null ) {\n\n\t\t\t\t\tgeometry.computeBoundingBox();\n\n\t\t\t\t}\n\n\t\t\t\t_box$3.copy( geometry.boundingBox );\n\t\t\t\t_box$3.applyMatrix4( object.matrixWorld );\n\n\t\t\t\tthis.union( _box$3 );\n\n\t\t\t}\n\n\t\t}\n\n\t\tconst children = object.children;\n\n\t\tfor ( let i = 0, l = children.length; i < l; i ++ ) {\n\n\t\t\tthis.expandByObject( children[ i ], precise );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tcontainsPoint( point ) {\n\n\t\treturn point.x < this.min.x || point.x > this.max.x ||\n\t\t\tpoint.y < this.min.y || point.y > this.max.y ||\n\t\t\tpoint.z < this.min.z || point.z > this.max.z ? false : true;\n\n\t}\n\n\tcontainsBox( box ) {\n\n\t\treturn this.min.x <= box.min.x && box.max.x <= this.max.x &&\n\t\t\tthis.min.y <= box.min.y && box.max.y <= this.max.y &&\n\t\t\tthis.min.z <= box.min.z && box.max.z <= this.max.z;\n\n\t}\n\n\tgetParameter( point, target ) {\n\n\t\t// This can potentially have a divide by zero if the box\n\t\t// has a size dimension of 0.\n\n\t\treturn target.set(\n\t\t\t( point.x - this.min.x ) / ( this.max.x - this.min.x ),\n\t\t\t( point.y - this.min.y ) / ( this.max.y - this.min.y ),\n\t\t\t( point.z - this.min.z ) / ( this.max.z - this.min.z )\n\t\t);\n\n\t}\n\n\tintersectsBox( box ) {\n\n\t\t// using 6 splitting planes to rule out intersections.\n\t\treturn box.max.x < this.min.x || box.min.x > this.max.x ||\n\t\t\tbox.max.y < this.min.y || box.min.y > this.max.y ||\n\t\t\tbox.max.z < this.min.z || box.min.z > this.max.z ? false : true;\n\n\t}\n\n\tintersectsSphere( sphere ) {\n\n\t\t// Find the point on the AABB closest to the sphere center.\n\t\tthis.clampPoint( sphere.center, _vector$b );\n\n\t\t// If that point is inside the sphere, the AABB and sphere intersect.\n\t\treturn _vector$b.distanceToSquared( sphere.center ) <= ( sphere.radius * sphere.radius );\n\n\t}\n\n\tintersectsPlane( plane ) {\n\n\t\t// We compute the minimum and maximum dot product values. If those values\n\t\t// are on the same side (back or front) of the plane, then there is no intersection.\n\n\t\tlet min, max;\n\n\t\tif ( plane.normal.x > 0 ) {\n\n\t\t\tmin = plane.normal.x * this.min.x;\n\t\t\tmax = plane.normal.x * this.max.x;\n\n\t\t} else {\n\n\t\t\tmin = plane.normal.x * this.max.x;\n\t\t\tmax = plane.normal.x * this.min.x;\n\n\t\t}\n\n\t\tif ( plane.normal.y > 0 ) {\n\n\t\t\tmin += plane.normal.y * this.min.y;\n\t\t\tmax += plane.normal.y * this.max.y;\n\n\t\t} else {\n\n\t\t\tmin += plane.normal.y * this.max.y;\n\t\t\tmax += plane.normal.y * this.min.y;\n\n\t\t}\n\n\t\tif ( plane.normal.z > 0 ) {\n\n\t\t\tmin += plane.normal.z * this.min.z;\n\t\t\tmax += plane.normal.z * this.max.z;\n\n\t\t} else {\n\n\t\t\tmin += plane.normal.z * this.max.z;\n\t\t\tmax += plane.normal.z * this.min.z;\n\n\t\t}\n\n\t\treturn ( min <= - plane.constant && max >= - plane.constant );\n\n\t}\n\n\tintersectsTriangle( triangle ) {\n\n\t\tif ( this.isEmpty() ) {\n\n\t\t\treturn false;\n\n\t\t}\n\n\t\t// compute box center and extents\n\t\tthis.getCenter( _center );\n\t\t_extents.subVectors( this.max, _center );\n\n\t\t// translate triangle to aabb origin\n\t\t_v0$2.subVectors( triangle.a, _center );\n\t\t_v1$7.subVectors( triangle.b, _center );\n\t\t_v2$3.subVectors( triangle.c, _center );\n\n\t\t// compute edge vectors for triangle\n\t\t_f0.subVectors( _v1$7, _v0$2 );\n\t\t_f1.subVectors( _v2$3, _v1$7 );\n\t\t_f2.subVectors( _v0$2, _v2$3 );\n\n\t\t// test against axes that are given by cross product combinations of the edges of the triangle and the edges of the aabb\n\t\t// make an axis testing of each of the 3 sides of the aabb against each of the 3 sides of the triangle = 9 axis of separation\n\t\t// axis_ij = u_i x f_j (u0, u1, u2 = face normals of aabb = x,y,z axes vectors since aabb is axis aligned)\n\t\tlet axes = [\n\t\t\t0, - _f0.z, _f0.y, 0, - _f1.z, _f1.y, 0, - _f2.z, _f2.y,\n\t\t\t_f0.z, 0, - _f0.x, _f1.z, 0, - _f1.x, _f2.z, 0, - _f2.x,\n\t\t\t- _f0.y, _f0.x, 0, - _f1.y, _f1.x, 0, - _f2.y, _f2.x, 0\n\t\t];\n\t\tif ( ! satForAxes( axes, _v0$2, _v1$7, _v2$3, _extents ) ) {\n\n\t\t\treturn false;\n\n\t\t}\n\n\t\t// test 3 face normals from the aabb\n\t\taxes = [ 1, 0, 0, 0, 1, 0, 0, 0, 1 ];\n\t\tif ( ! satForAxes( axes, _v0$2, _v1$7, _v2$3, _extents ) ) {\n\n\t\t\treturn false;\n\n\t\t}\n\n\t\t// finally testing the face normal of the triangle\n\t\t// use already existing triangle edge vectors here\n\t\t_triangleNormal.crossVectors( _f0, _f1 );\n\t\taxes = [ _triangleNormal.x, _triangleNormal.y, _triangleNormal.z ];\n\n\t\treturn satForAxes( axes, _v0$2, _v1$7, _v2$3, _extents );\n\n\t}\n\n\tclampPoint( point, target ) {\n\n\t\treturn target.copy( point ).clamp( this.min, this.max );\n\n\t}\n\n\tdistanceToPoint( point ) {\n\n\t\tconst clampedPoint = _vector$b.copy( point ).clamp( this.min, this.max );\n\n\t\treturn clampedPoint.sub( point ).length();\n\n\t}\n\n\tgetBoundingSphere( target ) {\n\n\t\tthis.getCenter( target.center );\n\n\t\ttarget.radius = this.getSize( _vector$b ).length() * 0.5;\n\n\t\treturn target;\n\n\t}\n\n\tintersect( box ) {\n\n\t\tthis.min.max( box.min );\n\t\tthis.max.min( box.max );\n\n\t\t// ensure that if there is no overlap, the result is fully empty, not slightly empty with non-inf/+inf values that will cause subsequence intersects to erroneously return valid values.\n\t\tif ( this.isEmpty() ) this.makeEmpty();\n\n\t\treturn this;\n\n\t}\n\n\tunion( box ) {\n\n\t\tthis.min.min( box.min );\n\t\tthis.max.max( box.max );\n\n\t\treturn this;\n\n\t}\n\n\tapplyMatrix4( matrix ) {\n\n\t\t// transform of empty box is an empty box.\n\t\tif ( this.isEmpty() ) return this;\n\n\t\t// NOTE: I am using a binary pattern to specify all 2^3 combinations below\n\t\t_points[ 0 ].set( this.min.x, this.min.y, this.min.z ).applyMatrix4( matrix ); // 000\n\t\t_points[ 1 ].set( this.min.x, this.min.y, this.max.z ).applyMatrix4( matrix ); // 001\n\t\t_points[ 2 ].set( this.min.x, this.max.y, this.min.z ).applyMatrix4( matrix ); // 010\n\t\t_points[ 3 ].set( this.min.x, this.max.y, this.max.z ).applyMatrix4( matrix ); // 011\n\t\t_points[ 4 ].set( this.max.x, this.min.y, this.min.z ).applyMatrix4( matrix ); // 100\n\t\t_points[ 5 ].set( this.max.x, this.min.y, this.max.z ).applyMatrix4( matrix ); // 101\n\t\t_points[ 6 ].set( this.max.x, this.max.y, this.min.z ).applyMatrix4( matrix ); // 110\n\t\t_points[ 7 ].set( this.max.x, this.max.y, this.max.z ).applyMatrix4( matrix ); // 111\n\n\t\tthis.setFromPoints( _points );\n\n\t\treturn this;\n\n\t}\n\n\ttranslate( offset ) {\n\n\t\tthis.min.add( offset );\n\t\tthis.max.add( offset );\n\n\t\treturn this;\n\n\t}\n\n\tequals( box ) {\n\n\t\treturn box.min.equals( this.min ) && box.max.equals( this.max );\n\n\t}\n\n}\n\nconst _points = [\n\t/*@__PURE__*/ new Vector3(),\n\t/*@__PURE__*/ new Vector3(),\n\t/*@__PURE__*/ new Vector3(),\n\t/*@__PURE__*/ new Vector3(),\n\t/*@__PURE__*/ new Vector3(),\n\t/*@__PURE__*/ new Vector3(),\n\t/*@__PURE__*/ new Vector3(),\n\t/*@__PURE__*/ new Vector3()\n];\n\nconst _vector$b = /*@__PURE__*/ new Vector3();\n\nconst _box$3 = /*@__PURE__*/ new Box3();\n\n// triangle centered vertices\n\nconst _v0$2 = /*@__PURE__*/ new Vector3();\nconst _v1$7 = /*@__PURE__*/ new Vector3();\nconst _v2$3 = /*@__PURE__*/ new Vector3();\n\n// triangle edge vectors\n\nconst _f0 = /*@__PURE__*/ new Vector3();\nconst _f1 = /*@__PURE__*/ new Vector3();\nconst _f2 = /*@__PURE__*/ new Vector3();\n\nconst _center = /*@__PURE__*/ new Vector3();\nconst _extents = /*@__PURE__*/ new Vector3();\nconst _triangleNormal = /*@__PURE__*/ new Vector3();\nconst _testAxis = /*@__PURE__*/ new Vector3();\n\nfunction satForAxes( axes, v0, v1, v2, extents ) {\n\n\tfor ( let i = 0, j = axes.length - 3; i <= j; i += 3 ) {\n\n\t\t_testAxis.fromArray( axes, i );\n\t\t// project the aabb onto the separating axis\n\t\tconst r = extents.x * Math.abs( _testAxis.x ) + extents.y * Math.abs( _testAxis.y ) + extents.z * Math.abs( _testAxis.z );\n\t\t// project all 3 vertices of the triangle onto the separating axis\n\t\tconst p0 = v0.dot( _testAxis );\n\t\tconst p1 = v1.dot( _testAxis );\n\t\tconst p2 = v2.dot( _testAxis );\n\t\t// actual test, basically see if either of the most extreme of the triangle points intersects r\n\t\tif ( Math.max( - Math.max( p0, p1, p2 ), Math.min( p0, p1, p2 ) ) > r ) {\n\n\t\t\t// points of the projected triangle are outside the projected half-length of the aabb\n\t\t\t// the axis is separating and we can exit\n\t\t\treturn false;\n\n\t\t}\n\n\t}\n\n\treturn true;\n\n}\n\nconst _box$2 = /*@__PURE__*/ new Box3();\nconst _v1$6 = /*@__PURE__*/ new Vector3();\nconst _toFarthestPoint = /*@__PURE__*/ new Vector3();\nconst _toPoint = /*@__PURE__*/ new Vector3();\n\nclass Sphere {\n\n\tconstructor( center = new Vector3(), radius = - 1 ) {\n\n\t\tthis.center = center;\n\t\tthis.radius = radius;\n\n\t}\n\n\tset( center, radius ) {\n\n\t\tthis.center.copy( center );\n\t\tthis.radius = radius;\n\n\t\treturn this;\n\n\t}\n\n\tsetFromPoints( points, optionalCenter ) {\n\n\t\tconst center = this.center;\n\n\t\tif ( optionalCenter !== undefined ) {\n\n\t\t\tcenter.copy( optionalCenter );\n\n\t\t} else {\n\n\t\t\t_box$2.setFromPoints( points ).getCenter( center );\n\n\t\t}\n\n\t\tlet maxRadiusSq = 0;\n\n\t\tfor ( let i = 0, il = points.length; i < il; i ++ ) {\n\n\t\t\tmaxRadiusSq = Math.max( maxRadiusSq, center.distanceToSquared( points[ i ] ) );\n\n\t\t}\n\n\t\tthis.radius = Math.sqrt( maxRadiusSq );\n\n\t\treturn this;\n\n\t}\n\n\tcopy( sphere ) {\n\n\t\tthis.center.copy( sphere.center );\n\t\tthis.radius = sphere.radius;\n\n\t\treturn this;\n\n\t}\n\n\tisEmpty() {\n\n\t\treturn ( this.radius < 0 );\n\n\t}\n\n\tmakeEmpty() {\n\n\t\tthis.center.set( 0, 0, 0 );\n\t\tthis.radius = - 1;\n\n\t\treturn this;\n\n\t}\n\n\tcontainsPoint( point ) {\n\n\t\treturn ( point.distanceToSquared( this.center ) <= ( this.radius * this.radius ) );\n\n\t}\n\n\tdistanceToPoint( point ) {\n\n\t\treturn ( point.distanceTo( this.center ) - this.radius );\n\n\t}\n\n\tintersectsSphere( sphere ) {\n\n\t\tconst radiusSum = this.radius + sphere.radius;\n\n\t\treturn sphere.center.distanceToSquared( this.center ) <= ( radiusSum * radiusSum );\n\n\t}\n\n\tintersectsBox( box ) {\n\n\t\treturn box.intersectsSphere( this );\n\n\t}\n\n\tintersectsPlane( plane ) {\n\n\t\treturn Math.abs( plane.distanceToPoint( this.center ) ) <= this.radius;\n\n\t}\n\n\tclampPoint( point, target ) {\n\n\t\tconst deltaLengthSq = this.center.distanceToSquared( point );\n\n\t\ttarget.copy( point );\n\n\t\tif ( deltaLengthSq > ( this.radius * this.radius ) ) {\n\n\t\t\ttarget.sub( this.center ).normalize();\n\t\t\ttarget.multiplyScalar( this.radius ).add( this.center );\n\n\t\t}\n\n\t\treturn target;\n\n\t}\n\n\tgetBoundingBox( target ) {\n\n\t\tif ( this.isEmpty() ) {\n\n\t\t\t// Empty sphere produces empty bounding box\n\t\t\ttarget.makeEmpty();\n\t\t\treturn target;\n\n\t\t}\n\n\t\ttarget.set( this.center, this.center );\n\t\ttarget.expandByScalar( this.radius );\n\n\t\treturn target;\n\n\t}\n\n\tapplyMatrix4( matrix ) {\n\n\t\tthis.center.applyMatrix4( matrix );\n\t\tthis.radius = this.radius * matrix.getMaxScaleOnAxis();\n\n\t\treturn this;\n\n\t}\n\n\ttranslate( offset ) {\n\n\t\tthis.center.add( offset );\n\n\t\treturn this;\n\n\t}\n\n\texpandByPoint( point ) {\n\n\t\t// from https://github.com/juj/MathGeoLib/blob/2940b99b99cfe575dd45103ef20f4019dee15b54/src/Geometry/Sphere.cpp#L649-L671\n\n\t\t_toPoint.subVectors( point, this.center );\n\n\t\tconst lengthSq = _toPoint.lengthSq();\n\n\t\tif ( lengthSq > ( this.radius * this.radius ) ) {\n\n\t\t\tconst length = Math.sqrt( lengthSq );\n\t\t\tconst missingRadiusHalf = ( length - this.radius ) * 0.5;\n\n\t\t\t// Nudge this sphere towards the target point. Add half the missing distance to radius,\n\t\t\t// and the other half to position. This gives a tighter enclosure, instead of if\n\t\t\t// the whole missing distance were just added to radius.\n\n\t\t\tthis.center.add( _toPoint.multiplyScalar( missingRadiusHalf / length ) );\n\t\t\tthis.radius += missingRadiusHalf;\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tunion( sphere ) {\n\n\t\t// from https://github.com/juj/MathGeoLib/blob/2940b99b99cfe575dd45103ef20f4019dee15b54/src/Geometry/Sphere.cpp#L759-L769\n\n\t\t// To enclose another sphere into this sphere, we only need to enclose two points:\n\t\t// 1) Enclose the farthest point on the other sphere into this sphere.\n\t\t// 2) Enclose the opposite point of the farthest point into this sphere.\n\n\t\t if ( this.center.equals( sphere.center ) === true ) {\n\n\t\t\t _toFarthestPoint.set( 0, 0, 1 ).multiplyScalar( sphere.radius );\n\n\n\t\t} else {\n\n\t\t\t_toFarthestPoint.subVectors( sphere.center, this.center ).normalize().multiplyScalar( sphere.radius );\n\n\t\t}\n\n\t\tthis.expandByPoint( _v1$6.copy( sphere.center ).add( _toFarthestPoint ) );\n\t\tthis.expandByPoint( _v1$6.copy( sphere.center ).sub( _toFarthestPoint ) );\n\n\t\treturn this;\n\n\t}\n\n\tequals( sphere ) {\n\n\t\treturn sphere.center.equals( this.center ) && ( sphere.radius === this.radius );\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n}\n\nconst _vector$a = /*@__PURE__*/ new Vector3();\nconst _segCenter = /*@__PURE__*/ new Vector3();\nconst _segDir = /*@__PURE__*/ new Vector3();\nconst _diff = /*@__PURE__*/ new Vector3();\n\nconst _edge1 = /*@__PURE__*/ new Vector3();\nconst _edge2 = /*@__PURE__*/ new Vector3();\nconst _normal$1 = /*@__PURE__*/ new Vector3();\n\nclass Ray {\n\n\tconstructor( origin = new Vector3(), direction = new Vector3( 0, 0, - 1 ) ) {\n\n\t\tthis.origin = origin;\n\t\tthis.direction = direction;\n\n\t}\n\n\tset( origin, direction ) {\n\n\t\tthis.origin.copy( origin );\n\t\tthis.direction.copy( direction );\n\n\t\treturn this;\n\n\t}\n\n\tcopy( ray ) {\n\n\t\tthis.origin.copy( ray.origin );\n\t\tthis.direction.copy( ray.direction );\n\n\t\treturn this;\n\n\t}\n\n\tat( t, target ) {\n\n\t\treturn target.copy( this.direction ).multiplyScalar( t ).add( this.origin );\n\n\t}\n\n\tlookAt( v ) {\n\n\t\tthis.direction.copy( v ).sub( this.origin ).normalize();\n\n\t\treturn this;\n\n\t}\n\n\trecast( t ) {\n\n\t\tthis.origin.copy( this.at( t, _vector$a ) );\n\n\t\treturn this;\n\n\t}\n\n\tclosestPointToPoint( point, target ) {\n\n\t\ttarget.subVectors( point, this.origin );\n\n\t\tconst directionDistance = target.dot( this.direction );\n\n\t\tif ( directionDistance < 0 ) {\n\n\t\t\treturn target.copy( this.origin );\n\n\t\t}\n\n\t\treturn target.copy( this.direction ).multiplyScalar( directionDistance ).add( this.origin );\n\n\t}\n\n\tdistanceToPoint( point ) {\n\n\t\treturn Math.sqrt( this.distanceSqToPoint( point ) );\n\n\t}\n\n\tdistanceSqToPoint( point ) {\n\n\t\tconst directionDistance = _vector$a.subVectors( point, this.origin ).dot( this.direction );\n\n\t\t// point behind the ray\n\n\t\tif ( directionDistance < 0 ) {\n\n\t\t\treturn this.origin.distanceToSquared( point );\n\n\t\t}\n\n\t\t_vector$a.copy( this.direction ).multiplyScalar( directionDistance ).add( this.origin );\n\n\t\treturn _vector$a.distanceToSquared( point );\n\n\t}\n\n\tdistanceSqToSegment( v0, v1, optionalPointOnRay, optionalPointOnSegment ) {\n\n\t\t// from https://github.com/pmjoniak/GeometricTools/blob/master/GTEngine/Include/Mathematics/GteDistRaySegment.h\n\t\t// It returns the min distance between the ray and the segment\n\t\t// defined by v0 and v1\n\t\t// It can also set two optional targets :\n\t\t// - The closest point on the ray\n\t\t// - The closest point on the segment\n\n\t\t_segCenter.copy( v0 ).add( v1 ).multiplyScalar( 0.5 );\n\t\t_segDir.copy( v1 ).sub( v0 ).normalize();\n\t\t_diff.copy( this.origin ).sub( _segCenter );\n\n\t\tconst segExtent = v0.distanceTo( v1 ) * 0.5;\n\t\tconst a01 = - this.direction.dot( _segDir );\n\t\tconst b0 = _diff.dot( this.direction );\n\t\tconst b1 = - _diff.dot( _segDir );\n\t\tconst c = _diff.lengthSq();\n\t\tconst det = Math.abs( 1 - a01 * a01 );\n\t\tlet s0, s1, sqrDist, extDet;\n\n\t\tif ( det > 0 ) {\n\n\t\t\t// The ray and segment are not parallel.\n\n\t\t\ts0 = a01 * b1 - b0;\n\t\t\ts1 = a01 * b0 - b1;\n\t\t\textDet = segExtent * det;\n\n\t\t\tif ( s0 >= 0 ) {\n\n\t\t\t\tif ( s1 >= - extDet ) {\n\n\t\t\t\t\tif ( s1 <= extDet ) {\n\n\t\t\t\t\t\t// region 0\n\t\t\t\t\t\t// Minimum at interior points of ray and segment.\n\n\t\t\t\t\t\tconst invDet = 1 / det;\n\t\t\t\t\t\ts0 *= invDet;\n\t\t\t\t\t\ts1 *= invDet;\n\t\t\t\t\t\tsqrDist = s0 * ( s0 + a01 * s1 + 2 * b0 ) + s1 * ( a01 * s0 + s1 + 2 * b1 ) + c;\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\t// region 1\n\n\t\t\t\t\t\ts1 = segExtent;\n\t\t\t\t\t\ts0 = Math.max( 0, - ( a01 * s1 + b0 ) );\n\t\t\t\t\t\tsqrDist = - s0 * s0 + s1 * ( s1 + 2 * b1 ) + c;\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// region 5\n\n\t\t\t\t\ts1 = - segExtent;\n\t\t\t\t\ts0 = Math.max( 0, - ( a01 * s1 + b0 ) );\n\t\t\t\t\tsqrDist = - s0 * s0 + s1 * ( s1 + 2 * b1 ) + c;\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\tif ( s1 <= - extDet ) {\n\n\t\t\t\t\t// region 4\n\n\t\t\t\t\ts0 = Math.max( 0, - ( - a01 * segExtent + b0 ) );\n\t\t\t\t\ts1 = ( s0 > 0 ) ? - segExtent : Math.min( Math.max( - segExtent, - b1 ), segExtent );\n\t\t\t\t\tsqrDist = - s0 * s0 + s1 * ( s1 + 2 * b1 ) + c;\n\n\t\t\t\t} else if ( s1 <= extDet ) {\n\n\t\t\t\t\t// region 3\n\n\t\t\t\t\ts0 = 0;\n\t\t\t\t\ts1 = Math.min( Math.max( - segExtent, - b1 ), segExtent );\n\t\t\t\t\tsqrDist = s1 * ( s1 + 2 * b1 ) + c;\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// region 2\n\n\t\t\t\t\ts0 = Math.max( 0, - ( a01 * segExtent + b0 ) );\n\t\t\t\t\ts1 = ( s0 > 0 ) ? segExtent : Math.min( Math.max( - segExtent, - b1 ), segExtent );\n\t\t\t\t\tsqrDist = - s0 * s0 + s1 * ( s1 + 2 * b1 ) + c;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\t// Ray and segment are parallel.\n\n\t\t\ts1 = ( a01 > 0 ) ? - segExtent : segExtent;\n\t\t\ts0 = Math.max( 0, - ( a01 * s1 + b0 ) );\n\t\t\tsqrDist = - s0 * s0 + s1 * ( s1 + 2 * b1 ) + c;\n\n\t\t}\n\n\t\tif ( optionalPointOnRay ) {\n\n\t\t\toptionalPointOnRay.copy( this.direction ).multiplyScalar( s0 ).add( this.origin );\n\n\t\t}\n\n\t\tif ( optionalPointOnSegment ) {\n\n\t\t\toptionalPointOnSegment.copy( _segDir ).multiplyScalar( s1 ).add( _segCenter );\n\n\t\t}\n\n\t\treturn sqrDist;\n\n\t}\n\n\tintersectSphere( sphere, target ) {\n\n\t\t_vector$a.subVectors( sphere.center, this.origin );\n\t\tconst tca = _vector$a.dot( this.direction );\n\t\tconst d2 = _vector$a.dot( _vector$a ) - tca * tca;\n\t\tconst radius2 = sphere.radius * sphere.radius;\n\n\t\tif ( d2 > radius2 ) return null;\n\n\t\tconst thc = Math.sqrt( radius2 - d2 );\n\n\t\t// t0 = first intersect point - entrance on front of sphere\n\t\tconst t0 = tca - thc;\n\n\t\t// t1 = second intersect point - exit point on back of sphere\n\t\tconst t1 = tca + thc;\n\n\t\t// test to see if both t0 and t1 are behind the ray - if so, return null\n\t\tif ( t0 < 0 && t1 < 0 ) return null;\n\n\t\t// test to see if t0 is behind the ray:\n\t\t// if it is, the ray is inside the sphere, so return the second exit point scaled by t1,\n\t\t// in order to always return an intersect point that is in front of the ray.\n\t\tif ( t0 < 0 ) return this.at( t1, target );\n\n\t\t// else t0 is in front of the ray, so return the first collision point scaled by t0\n\t\treturn this.at( t0, target );\n\n\t}\n\n\tintersectsSphere( sphere ) {\n\n\t\treturn this.distanceSqToPoint( sphere.center ) <= ( sphere.radius * sphere.radius );\n\n\t}\n\n\tdistanceToPlane( plane ) {\n\n\t\tconst denominator = plane.normal.dot( this.direction );\n\n\t\tif ( denominator === 0 ) {\n\n\t\t\t// line is coplanar, return origin\n\t\t\tif ( plane.distanceToPoint( this.origin ) === 0 ) {\n\n\t\t\t\treturn 0;\n\n\t\t\t}\n\n\t\t\t// Null is preferable to undefined since undefined means.... it is undefined\n\n\t\t\treturn null;\n\n\t\t}\n\n\t\tconst t = - ( this.origin.dot( plane.normal ) + plane.constant ) / denominator;\n\n\t\t// Return if the ray never intersects the plane\n\n\t\treturn t >= 0 ? t : null;\n\n\t}\n\n\tintersectPlane( plane, target ) {\n\n\t\tconst t = this.distanceToPlane( plane );\n\n\t\tif ( t === null ) {\n\n\t\t\treturn null;\n\n\t\t}\n\n\t\treturn this.at( t, target );\n\n\t}\n\n\tintersectsPlane( plane ) {\n\n\t\t// check if the ray lies on the plane first\n\n\t\tconst distToPoint = plane.distanceToPoint( this.origin );\n\n\t\tif ( distToPoint === 0 ) {\n\n\t\t\treturn true;\n\n\t\t}\n\n\t\tconst denominator = plane.normal.dot( this.direction );\n\n\t\tif ( denominator * distToPoint < 0 ) {\n\n\t\t\treturn true;\n\n\t\t}\n\n\t\t// ray origin is behind the plane (and is pointing behind it)\n\n\t\treturn false;\n\n\t}\n\n\tintersectBox( box, target ) {\n\n\t\tlet tmin, tmax, tymin, tymax, tzmin, tzmax;\n\n\t\tconst invdirx = 1 / this.direction.x,\n\t\t\tinvdiry = 1 / this.direction.y,\n\t\t\tinvdirz = 1 / this.direction.z;\n\n\t\tconst origin = this.origin;\n\n\t\tif ( invdirx >= 0 ) {\n\n\t\t\ttmin = ( box.min.x - origin.x ) * invdirx;\n\t\t\ttmax = ( box.max.x - origin.x ) * invdirx;\n\n\t\t} else {\n\n\t\t\ttmin = ( box.max.x - origin.x ) * invdirx;\n\t\t\ttmax = ( box.min.x - origin.x ) * invdirx;\n\n\t\t}\n\n\t\tif ( invdiry >= 0 ) {\n\n\t\t\ttymin = ( box.min.y - origin.y ) * invdiry;\n\t\t\ttymax = ( box.max.y - origin.y ) * invdiry;\n\n\t\t} else {\n\n\t\t\ttymin = ( box.max.y - origin.y ) * invdiry;\n\t\t\ttymax = ( box.min.y - origin.y ) * invdiry;\n\n\t\t}\n\n\t\tif ( ( tmin > tymax ) || ( tymin > tmax ) ) return null;\n\n\t\t// These lines also handle the case where tmin or tmax is NaN\n\t\t// (result of 0 * Infinity). x !== x returns true if x is NaN\n\n\t\tif ( tymin > tmin || tmin !== tmin ) tmin = tymin;\n\n\t\tif ( tymax < tmax || tmax !== tmax ) tmax = tymax;\n\n\t\tif ( invdirz >= 0 ) {\n\n\t\t\ttzmin = ( box.min.z - origin.z ) * invdirz;\n\t\t\ttzmax = ( box.max.z - origin.z ) * invdirz;\n\n\t\t} else {\n\n\t\t\ttzmin = ( box.max.z - origin.z ) * invdirz;\n\t\t\ttzmax = ( box.min.z - origin.z ) * invdirz;\n\n\t\t}\n\n\t\tif ( ( tmin > tzmax ) || ( tzmin > tmax ) ) return null;\n\n\t\tif ( tzmin > tmin || tmin !== tmin ) tmin = tzmin;\n\n\t\tif ( tzmax < tmax || tmax !== tmax ) tmax = tzmax;\n\n\t\t//return point closest to the ray (positive side)\n\n\t\tif ( tmax < 0 ) return null;\n\n\t\treturn this.at( tmin >= 0 ? tmin : tmax, target );\n\n\t}\n\n\tintersectsBox( box ) {\n\n\t\treturn this.intersectBox( box, _vector$a ) !== null;\n\n\t}\n\n\tintersectTriangle( a, b, c, backfaceCulling, target ) {\n\n\t\t// Compute the offset origin, edges, and normal.\n\n\t\t// from https://github.com/pmjoniak/GeometricTools/blob/master/GTEngine/Include/Mathematics/GteIntrRay3Triangle3.h\n\n\t\t_edge1.subVectors( b, a );\n\t\t_edge2.subVectors( c, a );\n\t\t_normal$1.crossVectors( _edge1, _edge2 );\n\n\t\t// Solve Q + t*D = b1*E1 + b2*E2 (Q = kDiff, D = ray direction,\n\t\t// E1 = kEdge1, E2 = kEdge2, N = Cross(E1,E2)) by\n\t\t// |Dot(D,N)|*b1 = sign(Dot(D,N))*Dot(D,Cross(Q,E2))\n\t\t// |Dot(D,N)|*b2 = sign(Dot(D,N))*Dot(D,Cross(E1,Q))\n\t\t// |Dot(D,N)|*t = -sign(Dot(D,N))*Dot(Q,N)\n\t\tlet DdN = this.direction.dot( _normal$1 );\n\t\tlet sign;\n\n\t\tif ( DdN > 0 ) {\n\n\t\t\tif ( backfaceCulling ) return null;\n\t\t\tsign = 1;\n\n\t\t} else if ( DdN < 0 ) {\n\n\t\t\tsign = - 1;\n\t\t\tDdN = - DdN;\n\n\t\t} else {\n\n\t\t\treturn null;\n\n\t\t}\n\n\t\t_diff.subVectors( this.origin, a );\n\t\tconst DdQxE2 = sign * this.direction.dot( _edge2.crossVectors( _diff, _edge2 ) );\n\n\t\t// b1 < 0, no intersection\n\t\tif ( DdQxE2 < 0 ) {\n\n\t\t\treturn null;\n\n\t\t}\n\n\t\tconst DdE1xQ = sign * this.direction.dot( _edge1.cross( _diff ) );\n\n\t\t// b2 < 0, no intersection\n\t\tif ( DdE1xQ < 0 ) {\n\n\t\t\treturn null;\n\n\t\t}\n\n\t\t// b1+b2 > 1, no intersection\n\t\tif ( DdQxE2 + DdE1xQ > DdN ) {\n\n\t\t\treturn null;\n\n\t\t}\n\n\t\t// Line intersects triangle, check if ray does.\n\t\tconst QdN = - sign * _diff.dot( _normal$1 );\n\n\t\t// t < 0, no intersection\n\t\tif ( QdN < 0 ) {\n\n\t\t\treturn null;\n\n\t\t}\n\n\t\t// Ray intersects triangle.\n\t\treturn this.at( QdN / DdN, target );\n\n\t}\n\n\tapplyMatrix4( matrix4 ) {\n\n\t\tthis.origin.applyMatrix4( matrix4 );\n\t\tthis.direction.transformDirection( matrix4 );\n\n\t\treturn this;\n\n\t}\n\n\tequals( ray ) {\n\n\t\treturn ray.origin.equals( this.origin ) && ray.direction.equals( this.direction );\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n}\n\nclass Matrix4 {\n\n\tconstructor() {\n\n\t\tthis.isMatrix4 = true;\n\n\t\tthis.elements = [\n\n\t\t\t1, 0, 0, 0,\n\t\t\t0, 1, 0, 0,\n\t\t\t0, 0, 1, 0,\n\t\t\t0, 0, 0, 1\n\n\t\t];\n\n\t\tif ( arguments.length > 0 ) {\n\n\t\t\tconsole.error( 'THREE.Matrix4: the constructor no longer reads arguments. use .set() instead.' );\n\n\t\t}\n\n\t}\n\n\tset( n11, n12, n13, n14, n21, n22, n23, n24, n31, n32, n33, n34, n41, n42, n43, n44 ) {\n\n\t\tconst te = this.elements;\n\n\t\tte[ 0 ] = n11; te[ 4 ] = n12; te[ 8 ] = n13; te[ 12 ] = n14;\n\t\tte[ 1 ] = n21; te[ 5 ] = n22; te[ 9 ] = n23; te[ 13 ] = n24;\n\t\tte[ 2 ] = n31; te[ 6 ] = n32; te[ 10 ] = n33; te[ 14 ] = n34;\n\t\tte[ 3 ] = n41; te[ 7 ] = n42; te[ 11 ] = n43; te[ 15 ] = n44;\n\n\t\treturn this;\n\n\t}\n\n\tidentity() {\n\n\t\tthis.set(\n\n\t\t\t1, 0, 0, 0,\n\t\t\t0, 1, 0, 0,\n\t\t\t0, 0, 1, 0,\n\t\t\t0, 0, 0, 1\n\n\t\t);\n\n\t\treturn this;\n\n\t}\n\n\tclone() {\n\n\t\treturn new Matrix4().fromArray( this.elements );\n\n\t}\n\n\tcopy( m ) {\n\n\t\tconst te = this.elements;\n\t\tconst me = m.elements;\n\n\t\tte[ 0 ] = me[ 0 ]; te[ 1 ] = me[ 1 ]; te[ 2 ] = me[ 2 ]; te[ 3 ] = me[ 3 ];\n\t\tte[ 4 ] = me[ 4 ]; te[ 5 ] = me[ 5 ]; te[ 6 ] = me[ 6 ]; te[ 7 ] = me[ 7 ];\n\t\tte[ 8 ] = me[ 8 ]; te[ 9 ] = me[ 9 ]; te[ 10 ] = me[ 10 ]; te[ 11 ] = me[ 11 ];\n\t\tte[ 12 ] = me[ 12 ]; te[ 13 ] = me[ 13 ]; te[ 14 ] = me[ 14 ]; te[ 15 ] = me[ 15 ];\n\n\t\treturn this;\n\n\t}\n\n\tcopyPosition( m ) {\n\n\t\tconst te = this.elements, me = m.elements;\n\n\t\tte[ 12 ] = me[ 12 ];\n\t\tte[ 13 ] = me[ 13 ];\n\t\tte[ 14 ] = me[ 14 ];\n\n\t\treturn this;\n\n\t}\n\n\tsetFromMatrix3( m ) {\n\n\t\tconst me = m.elements;\n\n\t\tthis.set(\n\n\t\t\tme[ 0 ], me[ 3 ], me[ 6 ], 0,\n\t\t\tme[ 1 ], me[ 4 ], me[ 7 ], 0,\n\t\t\tme[ 2 ], me[ 5 ], me[ 8 ], 0,\n\t\t\t0, 0, 0, 1\n\n\t\t);\n\n\t\treturn this;\n\n\t}\n\n\textractBasis( xAxis, yAxis, zAxis ) {\n\n\t\txAxis.setFromMatrixColumn( this, 0 );\n\t\tyAxis.setFromMatrixColumn( this, 1 );\n\t\tzAxis.setFromMatrixColumn( this, 2 );\n\n\t\treturn this;\n\n\t}\n\n\tmakeBasis( xAxis, yAxis, zAxis ) {\n\n\t\tthis.set(\n\t\t\txAxis.x, yAxis.x, zAxis.x, 0,\n\t\t\txAxis.y, yAxis.y, zAxis.y, 0,\n\t\t\txAxis.z, yAxis.z, zAxis.z, 0,\n\t\t\t0, 0, 0, 1\n\t\t);\n\n\t\treturn this;\n\n\t}\n\n\textractRotation( m ) {\n\n\t\t// this method does not support reflection matrices\n\n\t\tconst te = this.elements;\n\t\tconst me = m.elements;\n\n\t\tconst scaleX = 1 / _v1$5.setFromMatrixColumn( m, 0 ).length();\n\t\tconst scaleY = 1 / _v1$5.setFromMatrixColumn( m, 1 ).length();\n\t\tconst scaleZ = 1 / _v1$5.setFromMatrixColumn( m, 2 ).length();\n\n\t\tte[ 0 ] = me[ 0 ] * scaleX;\n\t\tte[ 1 ] = me[ 1 ] * scaleX;\n\t\tte[ 2 ] = me[ 2 ] * scaleX;\n\t\tte[ 3 ] = 0;\n\n\t\tte[ 4 ] = me[ 4 ] * scaleY;\n\t\tte[ 5 ] = me[ 5 ] * scaleY;\n\t\tte[ 6 ] = me[ 6 ] * scaleY;\n\t\tte[ 7 ] = 0;\n\n\t\tte[ 8 ] = me[ 8 ] * scaleZ;\n\t\tte[ 9 ] = me[ 9 ] * scaleZ;\n\t\tte[ 10 ] = me[ 10 ] * scaleZ;\n\t\tte[ 11 ] = 0;\n\n\t\tte[ 12 ] = 0;\n\t\tte[ 13 ] = 0;\n\t\tte[ 14 ] = 0;\n\t\tte[ 15 ] = 1;\n\n\t\treturn this;\n\n\t}\n\n\tmakeRotationFromEuler( euler ) {\n\n\t\tif ( ! ( euler && euler.isEuler ) ) {\n\n\t\t\tconsole.error( 'THREE.Matrix4: .makeRotationFromEuler() now expects a Euler rotation rather than a Vector3 and order.' );\n\n\t\t}\n\n\t\tconst te = this.elements;\n\n\t\tconst x = euler.x, y = euler.y, z = euler.z;\n\t\tconst a = Math.cos( x ), b = Math.sin( x );\n\t\tconst c = Math.cos( y ), d = Math.sin( y );\n\t\tconst e = Math.cos( z ), f = Math.sin( z );\n\n\t\tif ( euler.order === 'XYZ' ) {\n\n\t\t\tconst ae = a * e, af = a * f, be = b * e, bf = b * f;\n\n\t\t\tte[ 0 ] = c * e;\n\t\t\tte[ 4 ] = - c * f;\n\t\t\tte[ 8 ] = d;\n\n\t\t\tte[ 1 ] = af + be * d;\n\t\t\tte[ 5 ] = ae - bf * d;\n\t\t\tte[ 9 ] = - b * c;\n\n\t\t\tte[ 2 ] = bf - ae * d;\n\t\t\tte[ 6 ] = be + af * d;\n\t\t\tte[ 10 ] = a * c;\n\n\t\t} else if ( euler.order === 'YXZ' ) {\n\n\t\t\tconst ce = c * e, cf = c * f, de = d * e, df = d * f;\n\n\t\t\tte[ 0 ] = ce + df * b;\n\t\t\tte[ 4 ] = de * b - cf;\n\t\t\tte[ 8 ] = a * d;\n\n\t\t\tte[ 1 ] = a * f;\n\t\t\tte[ 5 ] = a * e;\n\t\t\tte[ 9 ] = - b;\n\n\t\t\tte[ 2 ] = cf * b - de;\n\t\t\tte[ 6 ] = df + ce * b;\n\t\t\tte[ 10 ] = a * c;\n\n\t\t} else if ( euler.order === 'ZXY' ) {\n\n\t\t\tconst ce = c * e, cf = c * f, de = d * e, df = d * f;\n\n\t\t\tte[ 0 ] = ce - df * b;\n\t\t\tte[ 4 ] = - a * f;\n\t\t\tte[ 8 ] = de + cf * b;\n\n\t\t\tte[ 1 ] = cf + de * b;\n\t\t\tte[ 5 ] = a * e;\n\t\t\tte[ 9 ] = df - ce * b;\n\n\t\t\tte[ 2 ] = - a * d;\n\t\t\tte[ 6 ] = b;\n\t\t\tte[ 10 ] = a * c;\n\n\t\t} else if ( euler.order === 'ZYX' ) {\n\n\t\t\tconst ae = a * e, af = a * f, be = b * e, bf = b * f;\n\n\t\t\tte[ 0 ] = c * e;\n\t\t\tte[ 4 ] = be * d - af;\n\t\t\tte[ 8 ] = ae * d + bf;\n\n\t\t\tte[ 1 ] = c * f;\n\t\t\tte[ 5 ] = bf * d + ae;\n\t\t\tte[ 9 ] = af * d - be;\n\n\t\t\tte[ 2 ] = - d;\n\t\t\tte[ 6 ] = b * c;\n\t\t\tte[ 10 ] = a * c;\n\n\t\t} else if ( euler.order === 'YZX' ) {\n\n\t\t\tconst ac = a * c, ad = a * d, bc = b * c, bd = b * d;\n\n\t\t\tte[ 0 ] = c * e;\n\t\t\tte[ 4 ] = bd - ac * f;\n\t\t\tte[ 8 ] = bc * f + ad;\n\n\t\t\tte[ 1 ] = f;\n\t\t\tte[ 5 ] = a * e;\n\t\t\tte[ 9 ] = - b * e;\n\n\t\t\tte[ 2 ] = - d * e;\n\t\t\tte[ 6 ] = ad * f + bc;\n\t\t\tte[ 10 ] = ac - bd * f;\n\n\t\t} else if ( euler.order === 'XZY' ) {\n\n\t\t\tconst ac = a * c, ad = a * d, bc = b * c, bd = b * d;\n\n\t\t\tte[ 0 ] = c * e;\n\t\t\tte[ 4 ] = - f;\n\t\t\tte[ 8 ] = d * e;\n\n\t\t\tte[ 1 ] = ac * f + bd;\n\t\t\tte[ 5 ] = a * e;\n\t\t\tte[ 9 ] = ad * f - bc;\n\n\t\t\tte[ 2 ] = bc * f - ad;\n\t\t\tte[ 6 ] = b * e;\n\t\t\tte[ 10 ] = bd * f + ac;\n\n\t\t}\n\n\t\t// bottom row\n\t\tte[ 3 ] = 0;\n\t\tte[ 7 ] = 0;\n\t\tte[ 11 ] = 0;\n\n\t\t// last column\n\t\tte[ 12 ] = 0;\n\t\tte[ 13 ] = 0;\n\t\tte[ 14 ] = 0;\n\t\tte[ 15 ] = 1;\n\n\t\treturn this;\n\n\t}\n\n\tmakeRotationFromQuaternion( q ) {\n\n\t\treturn this.compose( _zero, q, _one );\n\n\t}\n\n\tlookAt( eye, target, up ) {\n\n\t\tconst te = this.elements;\n\n\t\t_z.subVectors( eye, target );\n\n\t\tif ( _z.lengthSq() === 0 ) {\n\n\t\t\t// eye and target are in the same position\n\n\t\t\t_z.z = 1;\n\n\t\t}\n\n\t\t_z.normalize();\n\t\t_x.crossVectors( up, _z );\n\n\t\tif ( _x.lengthSq() === 0 ) {\n\n\t\t\t// up and z are parallel\n\n\t\t\tif ( Math.abs( up.z ) === 1 ) {\n\n\t\t\t\t_z.x += 0.0001;\n\n\t\t\t} else {\n\n\t\t\t\t_z.z += 0.0001;\n\n\t\t\t}\n\n\t\t\t_z.normalize();\n\t\t\t_x.crossVectors( up, _z );\n\n\t\t}\n\n\t\t_x.normalize();\n\t\t_y.crossVectors( _z, _x );\n\n\t\tte[ 0 ] = _x.x; te[ 4 ] = _y.x; te[ 8 ] = _z.x;\n\t\tte[ 1 ] = _x.y; te[ 5 ] = _y.y; te[ 9 ] = _z.y;\n\t\tte[ 2 ] = _x.z; te[ 6 ] = _y.z; te[ 10 ] = _z.z;\n\n\t\treturn this;\n\n\t}\n\n\tmultiply( m, n ) {\n\n\t\tif ( n !== undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Matrix4: .multiply() now only accepts one argument. Use .multiplyMatrices( a, b ) instead.' );\n\t\t\treturn this.multiplyMatrices( m, n );\n\n\t\t}\n\n\t\treturn this.multiplyMatrices( this, m );\n\n\t}\n\n\tpremultiply( m ) {\n\n\t\treturn this.multiplyMatrices( m, this );\n\n\t}\n\n\tmultiplyMatrices( a, b ) {\n\n\t\tconst ae = a.elements;\n\t\tconst be = b.elements;\n\t\tconst te = this.elements;\n\n\t\tconst a11 = ae[ 0 ], a12 = ae[ 4 ], a13 = ae[ 8 ], a14 = ae[ 12 ];\n\t\tconst a21 = ae[ 1 ], a22 = ae[ 5 ], a23 = ae[ 9 ], a24 = ae[ 13 ];\n\t\tconst a31 = ae[ 2 ], a32 = ae[ 6 ], a33 = ae[ 10 ], a34 = ae[ 14 ];\n\t\tconst a41 = ae[ 3 ], a42 = ae[ 7 ], a43 = ae[ 11 ], a44 = ae[ 15 ];\n\n\t\tconst b11 = be[ 0 ], b12 = be[ 4 ], b13 = be[ 8 ], b14 = be[ 12 ];\n\t\tconst b21 = be[ 1 ], b22 = be[ 5 ], b23 = be[ 9 ], b24 = be[ 13 ];\n\t\tconst b31 = be[ 2 ], b32 = be[ 6 ], b33 = be[ 10 ], b34 = be[ 14 ];\n\t\tconst b41 = be[ 3 ], b42 = be[ 7 ], b43 = be[ 11 ], b44 = be[ 15 ];\n\n\t\tte[ 0 ] = a11 * b11 + a12 * b21 + a13 * b31 + a14 * b41;\n\t\tte[ 4 ] = a11 * b12 + a12 * b22 + a13 * b32 + a14 * b42;\n\t\tte[ 8 ] = a11 * b13 + a12 * b23 + a13 * b33 + a14 * b43;\n\t\tte[ 12 ] = a11 * b14 + a12 * b24 + a13 * b34 + a14 * b44;\n\n\t\tte[ 1 ] = a21 * b11 + a22 * b21 + a23 * b31 + a24 * b41;\n\t\tte[ 5 ] = a21 * b12 + a22 * b22 + a23 * b32 + a24 * b42;\n\t\tte[ 9 ] = a21 * b13 + a22 * b23 + a23 * b33 + a24 * b43;\n\t\tte[ 13 ] = a21 * b14 + a22 * b24 + a23 * b34 + a24 * b44;\n\n\t\tte[ 2 ] = a31 * b11 + a32 * b21 + a33 * b31 + a34 * b41;\n\t\tte[ 6 ] = a31 * b12 + a32 * b22 + a33 * b32 + a34 * b42;\n\t\tte[ 10 ] = a31 * b13 + a32 * b23 + a33 * b33 + a34 * b43;\n\t\tte[ 14 ] = a31 * b14 + a32 * b24 + a33 * b34 + a34 * b44;\n\n\t\tte[ 3 ] = a41 * b11 + a42 * b21 + a43 * b31 + a44 * b41;\n\t\tte[ 7 ] = a41 * b12 + a42 * b22 + a43 * b32 + a44 * b42;\n\t\tte[ 11 ] = a41 * b13 + a42 * b23 + a43 * b33 + a44 * b43;\n\t\tte[ 15 ] = a41 * b14 + a42 * b24 + a43 * b34 + a44 * b44;\n\n\t\treturn this;\n\n\t}\n\n\tmultiplyScalar( s ) {\n\n\t\tconst te = this.elements;\n\n\t\tte[ 0 ] *= s; te[ 4 ] *= s; te[ 8 ] *= s; te[ 12 ] *= s;\n\t\tte[ 1 ] *= s; te[ 5 ] *= s; te[ 9 ] *= s; te[ 13 ] *= s;\n\t\tte[ 2 ] *= s; te[ 6 ] *= s; te[ 10 ] *= s; te[ 14 ] *= s;\n\t\tte[ 3 ] *= s; te[ 7 ] *= s; te[ 11 ] *= s; te[ 15 ] *= s;\n\n\t\treturn this;\n\n\t}\n\n\tdeterminant() {\n\n\t\tconst te = this.elements;\n\n\t\tconst n11 = te[ 0 ], n12 = te[ 4 ], n13 = te[ 8 ], n14 = te[ 12 ];\n\t\tconst n21 = te[ 1 ], n22 = te[ 5 ], n23 = te[ 9 ], n24 = te[ 13 ];\n\t\tconst n31 = te[ 2 ], n32 = te[ 6 ], n33 = te[ 10 ], n34 = te[ 14 ];\n\t\tconst n41 = te[ 3 ], n42 = te[ 7 ], n43 = te[ 11 ], n44 = te[ 15 ];\n\n\t\t//TODO: make this more efficient\n\t\t//( based on http://www.euclideanspace.com/maths/algebra/matrix/functions/inverse/fourD/index.htm )\n\n\t\treturn (\n\t\t\tn41 * (\n\t\t\t\t+ n14 * n23 * n32\n\t\t\t\t - n13 * n24 * n32\n\t\t\t\t - n14 * n22 * n33\n\t\t\t\t + n12 * n24 * n33\n\t\t\t\t + n13 * n22 * n34\n\t\t\t\t - n12 * n23 * n34\n\t\t\t) +\n\t\t\tn42 * (\n\t\t\t\t+ n11 * n23 * n34\n\t\t\t\t - n11 * n24 * n33\n\t\t\t\t + n14 * n21 * n33\n\t\t\t\t - n13 * n21 * n34\n\t\t\t\t + n13 * n24 * n31\n\t\t\t\t - n14 * n23 * n31\n\t\t\t) +\n\t\t\tn43 * (\n\t\t\t\t+ n11 * n24 * n32\n\t\t\t\t - n11 * n22 * n34\n\t\t\t\t - n14 * n21 * n32\n\t\t\t\t + n12 * n21 * n34\n\t\t\t\t + n14 * n22 * n31\n\t\t\t\t - n12 * n24 * n31\n\t\t\t) +\n\t\t\tn44 * (\n\t\t\t\t- n13 * n22 * n31\n\t\t\t\t - n11 * n23 * n32\n\t\t\t\t + n11 * n22 * n33\n\t\t\t\t + n13 * n21 * n32\n\t\t\t\t - n12 * n21 * n33\n\t\t\t\t + n12 * n23 * n31\n\t\t\t)\n\n\t\t);\n\n\t}\n\n\ttranspose() {\n\n\t\tconst te = this.elements;\n\t\tlet tmp;\n\n\t\ttmp = te[ 1 ]; te[ 1 ] = te[ 4 ]; te[ 4 ] = tmp;\n\t\ttmp = te[ 2 ]; te[ 2 ] = te[ 8 ]; te[ 8 ] = tmp;\n\t\ttmp = te[ 6 ]; te[ 6 ] = te[ 9 ]; te[ 9 ] = tmp;\n\n\t\ttmp = te[ 3 ]; te[ 3 ] = te[ 12 ]; te[ 12 ] = tmp;\n\t\ttmp = te[ 7 ]; te[ 7 ] = te[ 13 ]; te[ 13 ] = tmp;\n\t\ttmp = te[ 11 ]; te[ 11 ] = te[ 14 ]; te[ 14 ] = tmp;\n\n\t\treturn this;\n\n\t}\n\n\tsetPosition( x, y, z ) {\n\n\t\tconst te = this.elements;\n\n\t\tif ( x.isVector3 ) {\n\n\t\t\tte[ 12 ] = x.x;\n\t\t\tte[ 13 ] = x.y;\n\t\t\tte[ 14 ] = x.z;\n\n\t\t} else {\n\n\t\t\tte[ 12 ] = x;\n\t\t\tte[ 13 ] = y;\n\t\t\tte[ 14 ] = z;\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tinvert() {\n\n\t\t// based on http://www.euclideanspace.com/maths/algebra/matrix/functions/inverse/fourD/index.htm\n\t\tconst te = this.elements,\n\n\t\t\tn11 = te[ 0 ], n21 = te[ 1 ], n31 = te[ 2 ], n41 = te[ 3 ],\n\t\t\tn12 = te[ 4 ], n22 = te[ 5 ], n32 = te[ 6 ], n42 = te[ 7 ],\n\t\t\tn13 = te[ 8 ], n23 = te[ 9 ], n33 = te[ 10 ], n43 = te[ 11 ],\n\t\t\tn14 = te[ 12 ], n24 = te[ 13 ], n34 = te[ 14 ], n44 = te[ 15 ],\n\n\t\t\tt11 = n23 * n34 * n42 - n24 * n33 * n42 + n24 * n32 * n43 - n22 * n34 * n43 - n23 * n32 * n44 + n22 * n33 * n44,\n\t\t\tt12 = n14 * n33 * n42 - n13 * n34 * n42 - n14 * n32 * n43 + n12 * n34 * n43 + n13 * n32 * n44 - n12 * n33 * n44,\n\t\t\tt13 = n13 * n24 * n42 - n14 * n23 * n42 + n14 * n22 * n43 - n12 * n24 * n43 - n13 * n22 * n44 + n12 * n23 * n44,\n\t\t\tt14 = n14 * n23 * n32 - n13 * n24 * n32 - n14 * n22 * n33 + n12 * n24 * n33 + n13 * n22 * n34 - n12 * n23 * n34;\n\n\t\tconst det = n11 * t11 + n21 * t12 + n31 * t13 + n41 * t14;\n\n\t\tif ( det === 0 ) return this.set( 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 );\n\n\t\tconst detInv = 1 / det;\n\n\t\tte[ 0 ] = t11 * detInv;\n\t\tte[ 1 ] = ( n24 * n33 * n41 - n23 * n34 * n41 - n24 * n31 * n43 + n21 * n34 * n43 + n23 * n31 * n44 - n21 * n33 * n44 ) * detInv;\n\t\tte[ 2 ] = ( n22 * n34 * n41 - n24 * n32 * n41 + n24 * n31 * n42 - n21 * n34 * n42 - n22 * n31 * n44 + n21 * n32 * n44 ) * detInv;\n\t\tte[ 3 ] = ( n23 * n32 * n41 - n22 * n33 * n41 - n23 * n31 * n42 + n21 * n33 * n42 + n22 * n31 * n43 - n21 * n32 * n43 ) * detInv;\n\n\t\tte[ 4 ] = t12 * detInv;\n\t\tte[ 5 ] = ( n13 * n34 * n41 - n14 * n33 * n41 + n14 * n31 * n43 - n11 * n34 * n43 - n13 * n31 * n44 + n11 * n33 * n44 ) * detInv;\n\t\tte[ 6 ] = ( n14 * n32 * n41 - n12 * n34 * n41 - n14 * n31 * n42 + n11 * n34 * n42 + n12 * n31 * n44 - n11 * n32 * n44 ) * detInv;\n\t\tte[ 7 ] = ( n12 * n33 * n41 - n13 * n32 * n41 + n13 * n31 * n42 - n11 * n33 * n42 - n12 * n31 * n43 + n11 * n32 * n43 ) * detInv;\n\n\t\tte[ 8 ] = t13 * detInv;\n\t\tte[ 9 ] = ( n14 * n23 * n41 - n13 * n24 * n41 - n14 * n21 * n43 + n11 * n24 * n43 + n13 * n21 * n44 - n11 * n23 * n44 ) * detInv;\n\t\tte[ 10 ] = ( n12 * n24 * n41 - n14 * n22 * n41 + n14 * n21 * n42 - n11 * n24 * n42 - n12 * n21 * n44 + n11 * n22 * n44 ) * detInv;\n\t\tte[ 11 ] = ( n13 * n22 * n41 - n12 * n23 * n41 - n13 * n21 * n42 + n11 * n23 * n42 + n12 * n21 * n43 - n11 * n22 * n43 ) * detInv;\n\n\t\tte[ 12 ] = t14 * detInv;\n\t\tte[ 13 ] = ( n13 * n24 * n31 - n14 * n23 * n31 + n14 * n21 * n33 - n11 * n24 * n33 - n13 * n21 * n34 + n11 * n23 * n34 ) * detInv;\n\t\tte[ 14 ] = ( n14 * n22 * n31 - n12 * n24 * n31 - n14 * n21 * n32 + n11 * n24 * n32 + n12 * n21 * n34 - n11 * n22 * n34 ) * detInv;\n\t\tte[ 15 ] = ( n12 * n23 * n31 - n13 * n22 * n31 + n13 * n21 * n32 - n11 * n23 * n32 - n12 * n21 * n33 + n11 * n22 * n33 ) * detInv;\n\n\t\treturn this;\n\n\t}\n\n\tscale( v ) {\n\n\t\tconst te = this.elements;\n\t\tconst x = v.x, y = v.y, z = v.z;\n\n\t\tte[ 0 ] *= x; te[ 4 ] *= y; te[ 8 ] *= z;\n\t\tte[ 1 ] *= x; te[ 5 ] *= y; te[ 9 ] *= z;\n\t\tte[ 2 ] *= x; te[ 6 ] *= y; te[ 10 ] *= z;\n\t\tte[ 3 ] *= x; te[ 7 ] *= y; te[ 11 ] *= z;\n\n\t\treturn this;\n\n\t}\n\n\tgetMaxScaleOnAxis() {\n\n\t\tconst te = this.elements;\n\n\t\tconst scaleXSq = te[ 0 ] * te[ 0 ] + te[ 1 ] * te[ 1 ] + te[ 2 ] * te[ 2 ];\n\t\tconst scaleYSq = te[ 4 ] * te[ 4 ] + te[ 5 ] * te[ 5 ] + te[ 6 ] * te[ 6 ];\n\t\tconst scaleZSq = te[ 8 ] * te[ 8 ] + te[ 9 ] * te[ 9 ] + te[ 10 ] * te[ 10 ];\n\n\t\treturn Math.sqrt( Math.max( scaleXSq, scaleYSq, scaleZSq ) );\n\n\t}\n\n\tmakeTranslation( x, y, z ) {\n\n\t\tthis.set(\n\n\t\t\t1, 0, 0, x,\n\t\t\t0, 1, 0, y,\n\t\t\t0, 0, 1, z,\n\t\t\t0, 0, 0, 1\n\n\t\t);\n\n\t\treturn this;\n\n\t}\n\n\tmakeRotationX( theta ) {\n\n\t\tconst c = Math.cos( theta ), s = Math.sin( theta );\n\n\t\tthis.set(\n\n\t\t\t1, 0, 0, 0,\n\t\t\t0, c, - s, 0,\n\t\t\t0, s, c, 0,\n\t\t\t0, 0, 0, 1\n\n\t\t);\n\n\t\treturn this;\n\n\t}\n\n\tmakeRotationY( theta ) {\n\n\t\tconst c = Math.cos( theta ), s = Math.sin( theta );\n\n\t\tthis.set(\n\n\t\t\t c, 0, s, 0,\n\t\t\t 0, 1, 0, 0,\n\t\t\t- s, 0, c, 0,\n\t\t\t 0, 0, 0, 1\n\n\t\t);\n\n\t\treturn this;\n\n\t}\n\n\tmakeRotationZ( theta ) {\n\n\t\tconst c = Math.cos( theta ), s = Math.sin( theta );\n\n\t\tthis.set(\n\n\t\t\tc, - s, 0, 0,\n\t\t\ts, c, 0, 0,\n\t\t\t0, 0, 1, 0,\n\t\t\t0, 0, 0, 1\n\n\t\t);\n\n\t\treturn this;\n\n\t}\n\n\tmakeRotationAxis( axis, angle ) {\n\n\t\t// Based on http://www.gamedev.net/reference/articles/article1199.asp\n\n\t\tconst c = Math.cos( angle );\n\t\tconst s = Math.sin( angle );\n\t\tconst t = 1 - c;\n\t\tconst x = axis.x, y = axis.y, z = axis.z;\n\t\tconst tx = t * x, ty = t * y;\n\n\t\tthis.set(\n\n\t\t\ttx * x + c, tx * y - s * z, tx * z + s * y, 0,\n\t\t\ttx * y + s * z, ty * y + c, ty * z - s * x, 0,\n\t\t\ttx * z - s * y, ty * z + s * x, t * z * z + c, 0,\n\t\t\t0, 0, 0, 1\n\n\t\t);\n\n\t\treturn this;\n\n\t}\n\n\tmakeScale( x, y, z ) {\n\n\t\tthis.set(\n\n\t\t\tx, 0, 0, 0,\n\t\t\t0, y, 0, 0,\n\t\t\t0, 0, z, 0,\n\t\t\t0, 0, 0, 1\n\n\t\t);\n\n\t\treturn this;\n\n\t}\n\n\tmakeShear( xy, xz, yx, yz, zx, zy ) {\n\n\t\tthis.set(\n\n\t\t\t1, yx, zx, 0,\n\t\t\txy, 1, zy, 0,\n\t\t\txz, yz, 1, 0,\n\t\t\t0, 0, 0, 1\n\n\t\t);\n\n\t\treturn this;\n\n\t}\n\n\tcompose( position, quaternion, scale ) {\n\n\t\tconst te = this.elements;\n\n\t\tconst x = quaternion._x, y = quaternion._y, z = quaternion._z, w = quaternion._w;\n\t\tconst x2 = x + x,\ty2 = y + y, z2 = z + z;\n\t\tconst xx = x * x2, xy = x * y2, xz = x * z2;\n\t\tconst yy = y * y2, yz = y * z2, zz = z * z2;\n\t\tconst wx = w * x2, wy = w * y2, wz = w * z2;\n\n\t\tconst sx = scale.x, sy = scale.y, sz = scale.z;\n\n\t\tte[ 0 ] = ( 1 - ( yy + zz ) ) * sx;\n\t\tte[ 1 ] = ( xy + wz ) * sx;\n\t\tte[ 2 ] = ( xz - wy ) * sx;\n\t\tte[ 3 ] = 0;\n\n\t\tte[ 4 ] = ( xy - wz ) * sy;\n\t\tte[ 5 ] = ( 1 - ( xx + zz ) ) * sy;\n\t\tte[ 6 ] = ( yz + wx ) * sy;\n\t\tte[ 7 ] = 0;\n\n\t\tte[ 8 ] = ( xz + wy ) * sz;\n\t\tte[ 9 ] = ( yz - wx ) * sz;\n\t\tte[ 10 ] = ( 1 - ( xx + yy ) ) * sz;\n\t\tte[ 11 ] = 0;\n\n\t\tte[ 12 ] = position.x;\n\t\tte[ 13 ] = position.y;\n\t\tte[ 14 ] = position.z;\n\t\tte[ 15 ] = 1;\n\n\t\treturn this;\n\n\t}\n\n\tdecompose( position, quaternion, scale ) {\n\n\t\tconst te = this.elements;\n\n\t\tlet sx = _v1$5.set( te[ 0 ], te[ 1 ], te[ 2 ] ).length();\n\t\tconst sy = _v1$5.set( te[ 4 ], te[ 5 ], te[ 6 ] ).length();\n\t\tconst sz = _v1$5.set( te[ 8 ], te[ 9 ], te[ 10 ] ).length();\n\n\t\t// if determine is negative, we need to invert one scale\n\t\tconst det = this.determinant();\n\t\tif ( det < 0 ) sx = - sx;\n\n\t\tposition.x = te[ 12 ];\n\t\tposition.y = te[ 13 ];\n\t\tposition.z = te[ 14 ];\n\n\t\t// scale the rotation part\n\t\t_m1$2.copy( this );\n\n\t\tconst invSX = 1 / sx;\n\t\tconst invSY = 1 / sy;\n\t\tconst invSZ = 1 / sz;\n\n\t\t_m1$2.elements[ 0 ] *= invSX;\n\t\t_m1$2.elements[ 1 ] *= invSX;\n\t\t_m1$2.elements[ 2 ] *= invSX;\n\n\t\t_m1$2.elements[ 4 ] *= invSY;\n\t\t_m1$2.elements[ 5 ] *= invSY;\n\t\t_m1$2.elements[ 6 ] *= invSY;\n\n\t\t_m1$2.elements[ 8 ] *= invSZ;\n\t\t_m1$2.elements[ 9 ] *= invSZ;\n\t\t_m1$2.elements[ 10 ] *= invSZ;\n\n\t\tquaternion.setFromRotationMatrix( _m1$2 );\n\n\t\tscale.x = sx;\n\t\tscale.y = sy;\n\t\tscale.z = sz;\n\n\t\treturn this;\n\n\t}\n\n\tmakePerspective( left, right, top, bottom, near, far ) {\n\n\t\tif ( far === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Matrix4: .makePerspective() has been redefined and has a new signature. Please check the docs.' );\n\n\t\t}\n\n\t\tconst te = this.elements;\n\t\tconst x = 2 * near / ( right - left );\n\t\tconst y = 2 * near / ( top - bottom );\n\n\t\tconst a = ( right + left ) / ( right - left );\n\t\tconst b = ( top + bottom ) / ( top - bottom );\n\t\tconst c = - ( far + near ) / ( far - near );\n\t\tconst d = - 2 * far * near / ( far - near );\n\n\t\tte[ 0 ] = x;\tte[ 4 ] = 0;\tte[ 8 ] = a;\tte[ 12 ] = 0;\n\t\tte[ 1 ] = 0;\tte[ 5 ] = y;\tte[ 9 ] = b;\tte[ 13 ] = 0;\n\t\tte[ 2 ] = 0;\tte[ 6 ] = 0;\tte[ 10 ] = c;\tte[ 14 ] = d;\n\t\tte[ 3 ] = 0;\tte[ 7 ] = 0;\tte[ 11 ] = - 1;\tte[ 15 ] = 0;\n\n\t\treturn this;\n\n\t}\n\n\tmakeOrthographic( left, right, top, bottom, near, far ) {\n\n\t\tconst te = this.elements;\n\t\tconst w = 1.0 / ( right - left );\n\t\tconst h = 1.0 / ( top - bottom );\n\t\tconst p = 1.0 / ( far - near );\n\n\t\tconst x = ( right + left ) * w;\n\t\tconst y = ( top + bottom ) * h;\n\t\tconst z = ( far + near ) * p;\n\n\t\tte[ 0 ] = 2 * w;\tte[ 4 ] = 0;\tte[ 8 ] = 0;\tte[ 12 ] = - x;\n\t\tte[ 1 ] = 0;\tte[ 5 ] = 2 * h;\tte[ 9 ] = 0;\tte[ 13 ] = - y;\n\t\tte[ 2 ] = 0;\tte[ 6 ] = 0;\tte[ 10 ] = - 2 * p;\tte[ 14 ] = - z;\n\t\tte[ 3 ] = 0;\tte[ 7 ] = 0;\tte[ 11 ] = 0;\tte[ 15 ] = 1;\n\n\t\treturn this;\n\n\t}\n\n\tequals( matrix ) {\n\n\t\tconst te = this.elements;\n\t\tconst me = matrix.elements;\n\n\t\tfor ( let i = 0; i < 16; i ++ ) {\n\n\t\t\tif ( te[ i ] !== me[ i ] ) return false;\n\n\t\t}\n\n\t\treturn true;\n\n\t}\n\n\tfromArray( array, offset = 0 ) {\n\n\t\tfor ( let i = 0; i < 16; i ++ ) {\n\n\t\t\tthis.elements[ i ] = array[ i + offset ];\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\ttoArray( array = [], offset = 0 ) {\n\n\t\tconst te = this.elements;\n\n\t\tarray[ offset ] = te[ 0 ];\n\t\tarray[ offset + 1 ] = te[ 1 ];\n\t\tarray[ offset + 2 ] = te[ 2 ];\n\t\tarray[ offset + 3 ] = te[ 3 ];\n\n\t\tarray[ offset + 4 ] = te[ 4 ];\n\t\tarray[ offset + 5 ] = te[ 5 ];\n\t\tarray[ offset + 6 ] = te[ 6 ];\n\t\tarray[ offset + 7 ] = te[ 7 ];\n\n\t\tarray[ offset + 8 ] = te[ 8 ];\n\t\tarray[ offset + 9 ] = te[ 9 ];\n\t\tarray[ offset + 10 ] = te[ 10 ];\n\t\tarray[ offset + 11 ] = te[ 11 ];\n\n\t\tarray[ offset + 12 ] = te[ 12 ];\n\t\tarray[ offset + 13 ] = te[ 13 ];\n\t\tarray[ offset + 14 ] = te[ 14 ];\n\t\tarray[ offset + 15 ] = te[ 15 ];\n\n\t\treturn array;\n\n\t}\n\n}\n\nconst _v1$5 = /*@__PURE__*/ new Vector3();\nconst _m1$2 = /*@__PURE__*/ new Matrix4();\nconst _zero = /*@__PURE__*/ new Vector3( 0, 0, 0 );\nconst _one = /*@__PURE__*/ new Vector3( 1, 1, 1 );\nconst _x = /*@__PURE__*/ new Vector3();\nconst _y = /*@__PURE__*/ new Vector3();\nconst _z = /*@__PURE__*/ new Vector3();\n\nconst _matrix$1 = /*@__PURE__*/ new Matrix4();\nconst _quaternion$3 = /*@__PURE__*/ new Quaternion();\n\nclass Euler {\n\n\tconstructor( x = 0, y = 0, z = 0, order = Euler.DefaultOrder ) {\n\n\t\tthis.isEuler = true;\n\n\t\tthis._x = x;\n\t\tthis._y = y;\n\t\tthis._z = z;\n\t\tthis._order = order;\n\n\t}\n\n\tget x() {\n\n\t\treturn this._x;\n\n\t}\n\n\tset x( value ) {\n\n\t\tthis._x = value;\n\t\tthis._onChangeCallback();\n\n\t}\n\n\tget y() {\n\n\t\treturn this._y;\n\n\t}\n\n\tset y( value ) {\n\n\t\tthis._y = value;\n\t\tthis._onChangeCallback();\n\n\t}\n\n\tget z() {\n\n\t\treturn this._z;\n\n\t}\n\n\tset z( value ) {\n\n\t\tthis._z = value;\n\t\tthis._onChangeCallback();\n\n\t}\n\n\tget order() {\n\n\t\treturn this._order;\n\n\t}\n\n\tset order( value ) {\n\n\t\tthis._order = value;\n\t\tthis._onChangeCallback();\n\n\t}\n\n\tset( x, y, z, order = this._order ) {\n\n\t\tthis._x = x;\n\t\tthis._y = y;\n\t\tthis._z = z;\n\t\tthis._order = order;\n\n\t\tthis._onChangeCallback();\n\n\t\treturn this;\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor( this._x, this._y, this._z, this._order );\n\n\t}\n\n\tcopy( euler ) {\n\n\t\tthis._x = euler._x;\n\t\tthis._y = euler._y;\n\t\tthis._z = euler._z;\n\t\tthis._order = euler._order;\n\n\t\tthis._onChangeCallback();\n\n\t\treturn this;\n\n\t}\n\n\tsetFromRotationMatrix( m, order = this._order, update = true ) {\n\n\t\t// assumes the upper 3x3 of m is a pure rotation matrix (i.e, unscaled)\n\n\t\tconst te = m.elements;\n\t\tconst m11 = te[ 0 ], m12 = te[ 4 ], m13 = te[ 8 ];\n\t\tconst m21 = te[ 1 ], m22 = te[ 5 ], m23 = te[ 9 ];\n\t\tconst m31 = te[ 2 ], m32 = te[ 6 ], m33 = te[ 10 ];\n\n\t\tswitch ( order ) {\n\n\t\t\tcase 'XYZ':\n\n\t\t\t\tthis._y = Math.asin( clamp( m13, - 1, 1 ) );\n\n\t\t\t\tif ( Math.abs( m13 ) < 0.9999999 ) {\n\n\t\t\t\t\tthis._x = Math.atan2( - m23, m33 );\n\t\t\t\t\tthis._z = Math.atan2( - m12, m11 );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tthis._x = Math.atan2( m32, m22 );\n\t\t\t\t\tthis._z = 0;\n\n\t\t\t\t}\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'YXZ':\n\n\t\t\t\tthis._x = Math.asin( - clamp( m23, - 1, 1 ) );\n\n\t\t\t\tif ( Math.abs( m23 ) < 0.9999999 ) {\n\n\t\t\t\t\tthis._y = Math.atan2( m13, m33 );\n\t\t\t\t\tthis._z = Math.atan2( m21, m22 );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tthis._y = Math.atan2( - m31, m11 );\n\t\t\t\t\tthis._z = 0;\n\n\t\t\t\t}\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'ZXY':\n\n\t\t\t\tthis._x = Math.asin( clamp( m32, - 1, 1 ) );\n\n\t\t\t\tif ( Math.abs( m32 ) < 0.9999999 ) {\n\n\t\t\t\t\tthis._y = Math.atan2( - m31, m33 );\n\t\t\t\t\tthis._z = Math.atan2( - m12, m22 );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tthis._y = 0;\n\t\t\t\t\tthis._z = Math.atan2( m21, m11 );\n\n\t\t\t\t}\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'ZYX':\n\n\t\t\t\tthis._y = Math.asin( - clamp( m31, - 1, 1 ) );\n\n\t\t\t\tif ( Math.abs( m31 ) < 0.9999999 ) {\n\n\t\t\t\t\tthis._x = Math.atan2( m32, m33 );\n\t\t\t\t\tthis._z = Math.atan2( m21, m11 );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tthis._x = 0;\n\t\t\t\t\tthis._z = Math.atan2( - m12, m22 );\n\n\t\t\t\t}\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'YZX':\n\n\t\t\t\tthis._z = Math.asin( clamp( m21, - 1, 1 ) );\n\n\t\t\t\tif ( Math.abs( m21 ) < 0.9999999 ) {\n\n\t\t\t\t\tthis._x = Math.atan2( - m23, m22 );\n\t\t\t\t\tthis._y = Math.atan2( - m31, m11 );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tthis._x = 0;\n\t\t\t\t\tthis._y = Math.atan2( m13, m33 );\n\n\t\t\t\t}\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'XZY':\n\n\t\t\t\tthis._z = Math.asin( - clamp( m12, - 1, 1 ) );\n\n\t\t\t\tif ( Math.abs( m12 ) < 0.9999999 ) {\n\n\t\t\t\t\tthis._x = Math.atan2( m32, m22 );\n\t\t\t\t\tthis._y = Math.atan2( m13, m11 );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tthis._x = Math.atan2( - m23, m33 );\n\t\t\t\t\tthis._y = 0;\n\n\t\t\t\t}\n\n\t\t\t\tbreak;\n\n\t\t\tdefault:\n\n\t\t\t\tconsole.warn( 'THREE.Euler: .setFromRotationMatrix() encountered an unknown order: ' + order );\n\n\t\t}\n\n\t\tthis._order = order;\n\n\t\tif ( update === true ) this._onChangeCallback();\n\n\t\treturn this;\n\n\t}\n\n\tsetFromQuaternion( q, order, update ) {\n\n\t\t_matrix$1.makeRotationFromQuaternion( q );\n\n\t\treturn this.setFromRotationMatrix( _matrix$1, order, update );\n\n\t}\n\n\tsetFromVector3( v, order = this._order ) {\n\n\t\treturn this.set( v.x, v.y, v.z, order );\n\n\t}\n\n\treorder( newOrder ) {\n\n\t\t// WARNING: this discards revolution information -bhouston\n\n\t\t_quaternion$3.setFromEuler( this );\n\n\t\treturn this.setFromQuaternion( _quaternion$3, newOrder );\n\n\t}\n\n\tequals( euler ) {\n\n\t\treturn ( euler._x === this._x ) && ( euler._y === this._y ) && ( euler._z === this._z ) && ( euler._order === this._order );\n\n\t}\n\n\tfromArray( array ) {\n\n\t\tthis._x = array[ 0 ];\n\t\tthis._y = array[ 1 ];\n\t\tthis._z = array[ 2 ];\n\t\tif ( array[ 3 ] !== undefined ) this._order = array[ 3 ];\n\n\t\tthis._onChangeCallback();\n\n\t\treturn this;\n\n\t}\n\n\ttoArray( array = [], offset = 0 ) {\n\n\t\tarray[ offset ] = this._x;\n\t\tarray[ offset + 1 ] = this._y;\n\t\tarray[ offset + 2 ] = this._z;\n\t\tarray[ offset + 3 ] = this._order;\n\n\t\treturn array;\n\n\t}\n\n\t_onChange( callback ) {\n\n\t\tthis._onChangeCallback = callback;\n\n\t\treturn this;\n\n\t}\n\n\t_onChangeCallback() {}\n\n\t*[ Symbol.iterator ]() {\n\n\t\tyield this._x;\n\t\tyield this._y;\n\t\tyield this._z;\n\t\tyield this._order;\n\n\t}\n\n\t// @deprecated since r138, 02cf0df1cb4575d5842fef9c85bb5a89fe020d53\n\n\ttoVector3() {\n\n\t\tconsole.error( 'THREE.Euler: .toVector3() has been removed. Use Vector3.setFromEuler() instead' );\n\n\t}\n\n}\n\nEuler.DefaultOrder = 'XYZ';\nEuler.RotationOrders = [ 'XYZ', 'YZX', 'ZXY', 'XZY', 'YXZ', 'ZYX' ];\n\nclass Layers {\n\n\tconstructor() {\n\n\t\tthis.mask = 1 | 0;\n\n\t}\n\n\tset( channel ) {\n\n\t\tthis.mask = ( 1 << channel | 0 ) >>> 0;\n\n\t}\n\n\tenable( channel ) {\n\n\t\tthis.mask |= 1 << channel | 0;\n\n\t}\n\n\tenableAll() {\n\n\t\tthis.mask = 0xffffffff | 0;\n\n\t}\n\n\ttoggle( channel ) {\n\n\t\tthis.mask ^= 1 << channel | 0;\n\n\t}\n\n\tdisable( channel ) {\n\n\t\tthis.mask &= ~ ( 1 << channel | 0 );\n\n\t}\n\n\tdisableAll() {\n\n\t\tthis.mask = 0;\n\n\t}\n\n\ttest( layers ) {\n\n\t\treturn ( this.mask & layers.mask ) !== 0;\n\n\t}\n\n\tisEnabled( channel ) {\n\n\t\treturn ( this.mask & ( 1 << channel | 0 ) ) !== 0;\n\n\t}\n\n}\n\nlet _object3DId = 0;\n\nconst _v1$4 = /*@__PURE__*/ new Vector3();\nconst _q1 = /*@__PURE__*/ new Quaternion();\nconst _m1$1 = /*@__PURE__*/ new Matrix4();\nconst _target = /*@__PURE__*/ new Vector3();\n\nconst _position$3 = /*@__PURE__*/ new Vector3();\nconst _scale$2 = /*@__PURE__*/ new Vector3();\nconst _quaternion$2 = /*@__PURE__*/ new Quaternion();\n\nconst _xAxis = /*@__PURE__*/ new Vector3( 1, 0, 0 );\nconst _yAxis = /*@__PURE__*/ new Vector3( 0, 1, 0 );\nconst _zAxis = /*@__PURE__*/ new Vector3( 0, 0, 1 );\n\nconst _addedEvent = { type: 'added' };\nconst _removedEvent = { type: 'removed' };\n\nclass Object3D extends EventDispatcher {\n\n\tconstructor() {\n\n\t\tsuper();\n\n\t\tthis.isObject3D = true;\n\n\t\tObject.defineProperty( this, 'id', { value: _object3DId ++ } );\n\n\t\tthis.uuid = generateUUID();\n\n\t\tthis.name = '';\n\t\tthis.type = 'Object3D';\n\n\t\tthis.parent = null;\n\t\tthis.children = [];\n\n\t\tthis.up = Object3D.DefaultUp.clone();\n\n\t\tconst position = new Vector3();\n\t\tconst rotation = new Euler();\n\t\tconst quaternion = new Quaternion();\n\t\tconst scale = new Vector3( 1, 1, 1 );\n\n\t\tfunction onRotationChange() {\n\n\t\t\tquaternion.setFromEuler( rotation, false );\n\n\t\t}\n\n\t\tfunction onQuaternionChange() {\n\n\t\t\trotation.setFromQuaternion( quaternion, undefined, false );\n\n\t\t}\n\n\t\trotation._onChange( onRotationChange );\n\t\tquaternion._onChange( onQuaternionChange );\n\n\t\tObject.defineProperties( this, {\n\t\t\tposition: {\n\t\t\t\tconfigurable: true,\n\t\t\t\tenumerable: true,\n\t\t\t\tvalue: position\n\t\t\t},\n\t\t\trotation: {\n\t\t\t\tconfigurable: true,\n\t\t\t\tenumerable: true,\n\t\t\t\tvalue: rotation\n\t\t\t},\n\t\t\tquaternion: {\n\t\t\t\tconfigurable: true,\n\t\t\t\tenumerable: true,\n\t\t\t\tvalue: quaternion\n\t\t\t},\n\t\t\tscale: {\n\t\t\t\tconfigurable: true,\n\t\t\t\tenumerable: true,\n\t\t\t\tvalue: scale\n\t\t\t},\n\t\t\tmodelViewMatrix: {\n\t\t\t\tvalue: new Matrix4()\n\t\t\t},\n\t\t\tnormalMatrix: {\n\t\t\t\tvalue: new Matrix3()\n\t\t\t}\n\t\t} );\n\n\t\tthis.matrix = new Matrix4();\n\t\tthis.matrixWorld = new Matrix4();\n\n\t\tthis.matrixAutoUpdate = Object3D.DefaultMatrixAutoUpdate;\n\t\tthis.matrixWorldNeedsUpdate = false;\n\n\t\tthis.layers = new Layers();\n\t\tthis.visible = true;\n\n\t\tthis.castShadow = false;\n\t\tthis.receiveShadow = false;\n\n\t\tthis.frustumCulled = true;\n\t\tthis.renderOrder = 0;\n\n\t\tthis.animations = [];\n\n\t\tthis.userData = {};\n\n\t}\n\n\tonBeforeRender( /* renderer, scene, camera, geometry, material, group */ ) {}\n\n\tonAfterRender( /* renderer, scene, camera, geometry, material, group */ ) {}\n\n\tapplyMatrix4( matrix ) {\n\n\t\tif ( this.matrixAutoUpdate ) this.updateMatrix();\n\n\t\tthis.matrix.premultiply( matrix );\n\n\t\tthis.matrix.decompose( this.position, this.quaternion, this.scale );\n\n\t}\n\n\tapplyQuaternion( q ) {\n\n\t\tthis.quaternion.premultiply( q );\n\n\t\treturn this;\n\n\t}\n\n\tsetRotationFromAxisAngle( axis, angle ) {\n\n\t\t// assumes axis is normalized\n\n\t\tthis.quaternion.setFromAxisAngle( axis, angle );\n\n\t}\n\n\tsetRotationFromEuler( euler ) {\n\n\t\tthis.quaternion.setFromEuler( euler, true );\n\n\t}\n\n\tsetRotationFromMatrix( m ) {\n\n\t\t// assumes the upper 3x3 of m is a pure rotation matrix (i.e, unscaled)\n\n\t\tthis.quaternion.setFromRotationMatrix( m );\n\n\t}\n\n\tsetRotationFromQuaternion( q ) {\n\n\t\t// assumes q is normalized\n\n\t\tthis.quaternion.copy( q );\n\n\t}\n\n\trotateOnAxis( axis, angle ) {\n\n\t\t// rotate object on axis in object space\n\t\t// axis is assumed to be normalized\n\n\t\t_q1.setFromAxisAngle( axis, angle );\n\n\t\tthis.quaternion.multiply( _q1 );\n\n\t\treturn this;\n\n\t}\n\n\trotateOnWorldAxis( axis, angle ) {\n\n\t\t// rotate object on axis in world space\n\t\t// axis is assumed to be normalized\n\t\t// method assumes no rotated parent\n\n\t\t_q1.setFromAxisAngle( axis, angle );\n\n\t\tthis.quaternion.premultiply( _q1 );\n\n\t\treturn this;\n\n\t}\n\n\trotateX( angle ) {\n\n\t\treturn this.rotateOnAxis( _xAxis, angle );\n\n\t}\n\n\trotateY( angle ) {\n\n\t\treturn this.rotateOnAxis( _yAxis, angle );\n\n\t}\n\n\trotateZ( angle ) {\n\n\t\treturn this.rotateOnAxis( _zAxis, angle );\n\n\t}\n\n\ttranslateOnAxis( axis, distance ) {\n\n\t\t// translate object by distance along axis in object space\n\t\t// axis is assumed to be normalized\n\n\t\t_v1$4.copy( axis ).applyQuaternion( this.quaternion );\n\n\t\tthis.position.add( _v1$4.multiplyScalar( distance ) );\n\n\t\treturn this;\n\n\t}\n\n\ttranslateX( distance ) {\n\n\t\treturn this.translateOnAxis( _xAxis, distance );\n\n\t}\n\n\ttranslateY( distance ) {\n\n\t\treturn this.translateOnAxis( _yAxis, distance );\n\n\t}\n\n\ttranslateZ( distance ) {\n\n\t\treturn this.translateOnAxis( _zAxis, distance );\n\n\t}\n\n\tlocalToWorld( vector ) {\n\n\t\treturn vector.applyMatrix4( this.matrixWorld );\n\n\t}\n\n\tworldToLocal( vector ) {\n\n\t\treturn vector.applyMatrix4( _m1$1.copy( this.matrixWorld ).invert() );\n\n\t}\n\n\tlookAt( x, y, z ) {\n\n\t\t// This method does not support objects having non-uniformly-scaled parent(s)\n\n\t\tif ( x.isVector3 ) {\n\n\t\t\t_target.copy( x );\n\n\t\t} else {\n\n\t\t\t_target.set( x, y, z );\n\n\t\t}\n\n\t\tconst parent = this.parent;\n\n\t\tthis.updateWorldMatrix( true, false );\n\n\t\t_position$3.setFromMatrixPosition( this.matrixWorld );\n\n\t\tif ( this.isCamera || this.isLight ) {\n\n\t\t\t_m1$1.lookAt( _position$3, _target, this.up );\n\n\t\t} else {\n\n\t\t\t_m1$1.lookAt( _target, _position$3, this.up );\n\n\t\t}\n\n\t\tthis.quaternion.setFromRotationMatrix( _m1$1 );\n\n\t\tif ( parent ) {\n\n\t\t\t_m1$1.extractRotation( parent.matrixWorld );\n\t\t\t_q1.setFromRotationMatrix( _m1$1 );\n\t\t\tthis.quaternion.premultiply( _q1.invert() );\n\n\t\t}\n\n\t}\n\n\tadd( object ) {\n\n\t\tif ( arguments.length > 1 ) {\n\n\t\t\tfor ( let i = 0; i < arguments.length; i ++ ) {\n\n\t\t\t\tthis.add( arguments[ i ] );\n\n\t\t\t}\n\n\t\t\treturn this;\n\n\t\t}\n\n\t\tif ( object === this ) {\n\n\t\t\tconsole.error( 'THREE.Object3D.add: object can\\'t be added as a child of itself.', object );\n\t\t\treturn this;\n\n\t\t}\n\n\t\tif ( object && object.isObject3D ) {\n\n\t\t\tif ( object.parent !== null ) {\n\n\t\t\t\tobject.parent.remove( object );\n\n\t\t\t}\n\n\t\t\tobject.parent = this;\n\t\t\tthis.children.push( object );\n\n\t\t\tobject.dispatchEvent( _addedEvent );\n\n\t\t} else {\n\n\t\t\tconsole.error( 'THREE.Object3D.add: object not an instance of THREE.Object3D.', object );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tremove( object ) {\n\n\t\tif ( arguments.length > 1 ) {\n\n\t\t\tfor ( let i = 0; i < arguments.length; i ++ ) {\n\n\t\t\t\tthis.remove( arguments[ i ] );\n\n\t\t\t}\n\n\t\t\treturn this;\n\n\t\t}\n\n\t\tconst index = this.children.indexOf( object );\n\n\t\tif ( index !== - 1 ) {\n\n\t\t\tobject.parent = null;\n\t\t\tthis.children.splice( index, 1 );\n\n\t\t\tobject.dispatchEvent( _removedEvent );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tremoveFromParent() {\n\n\t\tconst parent = this.parent;\n\n\t\tif ( parent !== null ) {\n\n\t\t\tparent.remove( this );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tclear() {\n\n\t\tfor ( let i = 0; i < this.children.length; i ++ ) {\n\n\t\t\tconst object = this.children[ i ];\n\n\t\t\tobject.parent = null;\n\n\t\t\tobject.dispatchEvent( _removedEvent );\n\n\t\t}\n\n\t\tthis.children.length = 0;\n\n\t\treturn this;\n\n\n\t}\n\n\tattach( object ) {\n\n\t\t// adds object as a child of this, while maintaining the object's world transform\n\n\t\t// Note: This method does not support scene graphs having non-uniformly-scaled nodes(s)\n\n\t\tthis.updateWorldMatrix( true, false );\n\n\t\t_m1$1.copy( this.matrixWorld ).invert();\n\n\t\tif ( object.parent !== null ) {\n\n\t\t\tobject.parent.updateWorldMatrix( true, false );\n\n\t\t\t_m1$1.multiply( object.parent.matrixWorld );\n\n\t\t}\n\n\t\tobject.applyMatrix4( _m1$1 );\n\n\t\tthis.add( object );\n\n\t\tobject.updateWorldMatrix( false, true );\n\n\t\treturn this;\n\n\t}\n\n\tgetObjectById( id ) {\n\n\t\treturn this.getObjectByProperty( 'id', id );\n\n\t}\n\n\tgetObjectByName( name ) {\n\n\t\treturn this.getObjectByProperty( 'name', name );\n\n\t}\n\n\tgetObjectByProperty( name, value ) {\n\n\t\tif ( this[ name ] === value ) return this;\n\n\t\tfor ( let i = 0, l = this.children.length; i < l; i ++ ) {\n\n\t\t\tconst child = this.children[ i ];\n\t\t\tconst object = child.getObjectByProperty( name, value );\n\n\t\t\tif ( object !== undefined ) {\n\n\t\t\t\treturn object;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn undefined;\n\n\t}\n\n\tgetWorldPosition( target ) {\n\n\t\tthis.updateWorldMatrix( true, false );\n\n\t\treturn target.setFromMatrixPosition( this.matrixWorld );\n\n\t}\n\n\tgetWorldQuaternion( target ) {\n\n\t\tthis.updateWorldMatrix( true, false );\n\n\t\tthis.matrixWorld.decompose( _position$3, target, _scale$2 );\n\n\t\treturn target;\n\n\t}\n\n\tgetWorldScale( target ) {\n\n\t\tthis.updateWorldMatrix( true, false );\n\n\t\tthis.matrixWorld.decompose( _position$3, _quaternion$2, target );\n\n\t\treturn target;\n\n\t}\n\n\tgetWorldDirection( target ) {\n\n\t\tthis.updateWorldMatrix( true, false );\n\n\t\tconst e = this.matrixWorld.elements;\n\n\t\treturn target.set( e[ 8 ], e[ 9 ], e[ 10 ] ).normalize();\n\n\t}\n\n\traycast( /* raycaster, intersects */ ) {}\n\n\ttraverse( callback ) {\n\n\t\tcallback( this );\n\n\t\tconst children = this.children;\n\n\t\tfor ( let i = 0, l = children.length; i < l; i ++ ) {\n\n\t\t\tchildren[ i ].traverse( callback );\n\n\t\t}\n\n\t}\n\n\ttraverseVisible( callback ) {\n\n\t\tif ( this.visible === false ) return;\n\n\t\tcallback( this );\n\n\t\tconst children = this.children;\n\n\t\tfor ( let i = 0, l = children.length; i < l; i ++ ) {\n\n\t\t\tchildren[ i ].traverseVisible( callback );\n\n\t\t}\n\n\t}\n\n\ttraverseAncestors( callback ) {\n\n\t\tconst parent = this.parent;\n\n\t\tif ( parent !== null ) {\n\n\t\t\tcallback( parent );\n\n\t\t\tparent.traverseAncestors( callback );\n\n\t\t}\n\n\t}\n\n\tupdateMatrix() {\n\n\t\tthis.matrix.compose( this.position, this.quaternion, this.scale );\n\n\t\tthis.matrixWorldNeedsUpdate = true;\n\n\t}\n\n\tupdateMatrixWorld( force ) {\n\n\t\tif ( this.matrixAutoUpdate ) this.updateMatrix();\n\n\t\tif ( this.matrixWorldNeedsUpdate || force ) {\n\n\t\t\tif ( this.parent === null ) {\n\n\t\t\t\tthis.matrixWorld.copy( this.matrix );\n\n\t\t\t} else {\n\n\t\t\t\tthis.matrixWorld.multiplyMatrices( this.parent.matrixWorld, this.matrix );\n\n\t\t\t}\n\n\t\t\tthis.matrixWorldNeedsUpdate = false;\n\n\t\t\tforce = true;\n\n\t\t}\n\n\t\t// update children\n\n\t\tconst children = this.children;\n\n\t\tfor ( let i = 0, l = children.length; i < l; i ++ ) {\n\n\t\t\tchildren[ i ].updateMatrixWorld( force );\n\n\t\t}\n\n\t}\n\n\tupdateWorldMatrix( updateParents, updateChildren ) {\n\n\t\tconst parent = this.parent;\n\n\t\tif ( updateParents === true && parent !== null ) {\n\n\t\t\tparent.updateWorldMatrix( true, false );\n\n\t\t}\n\n\t\tif ( this.matrixAutoUpdate ) this.updateMatrix();\n\n\t\tif ( this.parent === null ) {\n\n\t\t\tthis.matrixWorld.copy( this.matrix );\n\n\t\t} else {\n\n\t\t\tthis.matrixWorld.multiplyMatrices( this.parent.matrixWorld, this.matrix );\n\n\t\t}\n\n\t\t// update children\n\n\t\tif ( updateChildren === true ) {\n\n\t\t\tconst children = this.children;\n\n\t\t\tfor ( let i = 0, l = children.length; i < l; i ++ ) {\n\n\t\t\t\tchildren[ i ].updateWorldMatrix( false, true );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\ttoJSON( meta ) {\n\n\t\t// meta is a string when called from JSON.stringify\n\t\tconst isRootObject = ( meta === undefined || typeof meta === 'string' );\n\n\t\tconst output = {};\n\n\t\t// meta is a hash used to collect geometries, materials.\n\t\t// not providing it implies that this is the root object\n\t\t// being serialized.\n\t\tif ( isRootObject ) {\n\n\t\t\t// initialize meta obj\n\t\t\tmeta = {\n\t\t\t\tgeometries: {},\n\t\t\t\tmaterials: {},\n\t\t\t\ttextures: {},\n\t\t\t\timages: {},\n\t\t\t\tshapes: {},\n\t\t\t\tskeletons: {},\n\t\t\t\tanimations: {},\n\t\t\t\tnodes: {}\n\t\t\t};\n\n\t\t\toutput.metadata = {\n\t\t\t\tversion: 4.5,\n\t\t\t\ttype: 'Object',\n\t\t\t\tgenerator: 'Object3D.toJSON'\n\t\t\t};\n\n\t\t}\n\n\t\t// standard Object3D serialization\n\n\t\tconst object = {};\n\n\t\tobject.uuid = this.uuid;\n\t\tobject.type = this.type;\n\n\t\tif ( this.name !== '' ) object.name = this.name;\n\t\tif ( this.castShadow === true ) object.castShadow = true;\n\t\tif ( this.receiveShadow === true ) object.receiveShadow = true;\n\t\tif ( this.visible === false ) object.visible = false;\n\t\tif ( this.frustumCulled === false ) object.frustumCulled = false;\n\t\tif ( this.renderOrder !== 0 ) object.renderOrder = this.renderOrder;\n\t\tif ( JSON.stringify( this.userData ) !== '{}' ) object.userData = this.userData;\n\n\t\tobject.layers = this.layers.mask;\n\t\tobject.matrix = this.matrix.toArray();\n\n\t\tif ( this.matrixAutoUpdate === false ) object.matrixAutoUpdate = false;\n\n\t\t// object specific properties\n\n\t\tif ( this.isInstancedMesh ) {\n\n\t\t\tobject.type = 'InstancedMesh';\n\t\t\tobject.count = this.count;\n\t\t\tobject.instanceMatrix = this.instanceMatrix.toJSON();\n\t\t\tif ( this.instanceColor !== null ) object.instanceColor = this.instanceColor.toJSON();\n\n\t\t}\n\n\t\t//\n\n\t\tfunction serialize( library, element ) {\n\n\t\t\tif ( library[ element.uuid ] === undefined ) {\n\n\t\t\t\tlibrary[ element.uuid ] = element.toJSON( meta );\n\n\t\t\t}\n\n\t\t\treturn element.uuid;\n\n\t\t}\n\n\t\tif ( this.isScene ) {\n\n\t\t\tif ( this.background ) {\n\n\t\t\t\tif ( this.background.isColor ) {\n\n\t\t\t\t\tobject.background = this.background.toJSON();\n\n\t\t\t\t} else if ( this.background.isTexture ) {\n\n\t\t\t\t\tobject.background = this.background.toJSON( meta ).uuid;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( this.environment && this.environment.isTexture ) {\n\n\t\t\t\tobject.environment = this.environment.toJSON( meta ).uuid;\n\n\t\t\t}\n\n\t\t} else if ( this.isMesh || this.isLine || this.isPoints ) {\n\n\t\t\tobject.geometry = serialize( meta.geometries, this.geometry );\n\n\t\t\tconst parameters = this.geometry.parameters;\n\n\t\t\tif ( parameters !== undefined && parameters.shapes !== undefined ) {\n\n\t\t\t\tconst shapes = parameters.shapes;\n\n\t\t\t\tif ( Array.isArray( shapes ) ) {\n\n\t\t\t\t\tfor ( let i = 0, l = shapes.length; i < l; i ++ ) {\n\n\t\t\t\t\t\tconst shape = shapes[ i ];\n\n\t\t\t\t\t\tserialize( meta.shapes, shape );\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\tserialize( meta.shapes, shapes );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( this.isSkinnedMesh ) {\n\n\t\t\tobject.bindMode = this.bindMode;\n\t\t\tobject.bindMatrix = this.bindMatrix.toArray();\n\n\t\t\tif ( this.skeleton !== undefined ) {\n\n\t\t\t\tserialize( meta.skeletons, this.skeleton );\n\n\t\t\t\tobject.skeleton = this.skeleton.uuid;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( this.material !== undefined ) {\n\n\t\t\tif ( Array.isArray( this.material ) ) {\n\n\t\t\t\tconst uuids = [];\n\n\t\t\t\tfor ( let i = 0, l = this.material.length; i < l; i ++ ) {\n\n\t\t\t\t\tuuids.push( serialize( meta.materials, this.material[ i ] ) );\n\n\t\t\t\t}\n\n\t\t\t\tobject.material = uuids;\n\n\t\t\t} else {\n\n\t\t\t\tobject.material = serialize( meta.materials, this.material );\n\n\t\t\t}\n\n\t\t}\n\n\t\t//\n\n\t\tif ( this.children.length > 0 ) {\n\n\t\t\tobject.children = [];\n\n\t\t\tfor ( let i = 0; i < this.children.length; i ++ ) {\n\n\t\t\t\tobject.children.push( this.children[ i ].toJSON( meta ).object );\n\n\t\t\t}\n\n\t\t}\n\n\t\t//\n\n\t\tif ( this.animations.length > 0 ) {\n\n\t\t\tobject.animations = [];\n\n\t\t\tfor ( let i = 0; i < this.animations.length; i ++ ) {\n\n\t\t\t\tconst animation = this.animations[ i ];\n\n\t\t\t\tobject.animations.push( serialize( meta.animations, animation ) );\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( isRootObject ) {\n\n\t\t\tconst geometries = extractFromCache( meta.geometries );\n\t\t\tconst materials = extractFromCache( meta.materials );\n\t\t\tconst textures = extractFromCache( meta.textures );\n\t\t\tconst images = extractFromCache( meta.images );\n\t\t\tconst shapes = extractFromCache( meta.shapes );\n\t\t\tconst skeletons = extractFromCache( meta.skeletons );\n\t\t\tconst animations = extractFromCache( meta.animations );\n\t\t\tconst nodes = extractFromCache( meta.nodes );\n\n\t\t\tif ( geometries.length > 0 ) output.geometries = geometries;\n\t\t\tif ( materials.length > 0 ) output.materials = materials;\n\t\t\tif ( textures.length > 0 ) output.textures = textures;\n\t\t\tif ( images.length > 0 ) output.images = images;\n\t\t\tif ( shapes.length > 0 ) output.shapes = shapes;\n\t\t\tif ( skeletons.length > 0 ) output.skeletons = skeletons;\n\t\t\tif ( animations.length > 0 ) output.animations = animations;\n\t\t\tif ( nodes.length > 0 ) output.nodes = nodes;\n\n\t\t}\n\n\t\toutput.object = object;\n\n\t\treturn output;\n\n\t\t// extract data from the cache hash\n\t\t// remove metadata on each item\n\t\t// and return as array\n\t\tfunction extractFromCache( cache ) {\n\n\t\t\tconst values = [];\n\t\t\tfor ( const key in cache ) {\n\n\t\t\t\tconst data = cache[ key ];\n\t\t\t\tdelete data.metadata;\n\t\t\t\tvalues.push( data );\n\n\t\t\t}\n\n\t\t\treturn values;\n\n\t\t}\n\n\t}\n\n\tclone( recursive ) {\n\n\t\treturn new this.constructor().copy( this, recursive );\n\n\t}\n\n\tcopy( source, recursive = true ) {\n\n\t\tthis.name = source.name;\n\n\t\tthis.up.copy( source.up );\n\n\t\tthis.position.copy( source.position );\n\t\tthis.rotation.order = source.rotation.order;\n\t\tthis.quaternion.copy( source.quaternion );\n\t\tthis.scale.copy( source.scale );\n\n\t\tthis.matrix.copy( source.matrix );\n\t\tthis.matrixWorld.copy( source.matrixWorld );\n\n\t\tthis.matrixAutoUpdate = source.matrixAutoUpdate;\n\t\tthis.matrixWorldNeedsUpdate = source.matrixWorldNeedsUpdate;\n\n\t\tthis.layers.mask = source.layers.mask;\n\t\tthis.visible = source.visible;\n\n\t\tthis.castShadow = source.castShadow;\n\t\tthis.receiveShadow = source.receiveShadow;\n\n\t\tthis.frustumCulled = source.frustumCulled;\n\t\tthis.renderOrder = source.renderOrder;\n\n\t\tthis.userData = JSON.parse( JSON.stringify( source.userData ) );\n\n\t\tif ( recursive === true ) {\n\n\t\t\tfor ( let i = 0; i < source.children.length; i ++ ) {\n\n\t\t\t\tconst child = source.children[ i ];\n\t\t\t\tthis.add( child.clone() );\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n}\n\nObject3D.DefaultUp = new Vector3( 0, 1, 0 );\nObject3D.DefaultMatrixAutoUpdate = true;\n\nconst _v0$1 = /*@__PURE__*/ new Vector3();\nconst _v1$3 = /*@__PURE__*/ new Vector3();\nconst _v2$2 = /*@__PURE__*/ new Vector3();\nconst _v3$1 = /*@__PURE__*/ new Vector3();\n\nconst _vab = /*@__PURE__*/ new Vector3();\nconst _vac = /*@__PURE__*/ new Vector3();\nconst _vbc = /*@__PURE__*/ new Vector3();\nconst _vap = /*@__PURE__*/ new Vector3();\nconst _vbp = /*@__PURE__*/ new Vector3();\nconst _vcp = /*@__PURE__*/ new Vector3();\n\nclass Triangle {\n\n\tconstructor( a = new Vector3(), b = new Vector3(), c = new Vector3() ) {\n\n\t\tthis.a = a;\n\t\tthis.b = b;\n\t\tthis.c = c;\n\n\t}\n\n\tstatic getNormal( a, b, c, target ) {\n\n\t\ttarget.subVectors( c, b );\n\t\t_v0$1.subVectors( a, b );\n\t\ttarget.cross( _v0$1 );\n\n\t\tconst targetLengthSq = target.lengthSq();\n\t\tif ( targetLengthSq > 0 ) {\n\n\t\t\treturn target.multiplyScalar( 1 / Math.sqrt( targetLengthSq ) );\n\n\t\t}\n\n\t\treturn target.set( 0, 0, 0 );\n\n\t}\n\n\t// static/instance method to calculate barycentric coordinates\n\t// based on: http://www.blackpawn.com/texts/pointinpoly/default.html\n\tstatic getBarycoord( point, a, b, c, target ) {\n\n\t\t_v0$1.subVectors( c, a );\n\t\t_v1$3.subVectors( b, a );\n\t\t_v2$2.subVectors( point, a );\n\n\t\tconst dot00 = _v0$1.dot( _v0$1 );\n\t\tconst dot01 = _v0$1.dot( _v1$3 );\n\t\tconst dot02 = _v0$1.dot( _v2$2 );\n\t\tconst dot11 = _v1$3.dot( _v1$3 );\n\t\tconst dot12 = _v1$3.dot( _v2$2 );\n\n\t\tconst denom = ( dot00 * dot11 - dot01 * dot01 );\n\n\t\t// collinear or singular triangle\n\t\tif ( denom === 0 ) {\n\n\t\t\t// arbitrary location outside of triangle?\n\t\t\t// not sure if this is the best idea, maybe should be returning undefined\n\t\t\treturn target.set( - 2, - 1, - 1 );\n\n\t\t}\n\n\t\tconst invDenom = 1 / denom;\n\t\tconst u = ( dot11 * dot02 - dot01 * dot12 ) * invDenom;\n\t\tconst v = ( dot00 * dot12 - dot01 * dot02 ) * invDenom;\n\n\t\t// barycentric coordinates must always sum to 1\n\t\treturn target.set( 1 - u - v, v, u );\n\n\t}\n\n\tstatic containsPoint( point, a, b, c ) {\n\n\t\tthis.getBarycoord( point, a, b, c, _v3$1 );\n\n\t\treturn ( _v3$1.x >= 0 ) && ( _v3$1.y >= 0 ) && ( ( _v3$1.x + _v3$1.y ) <= 1 );\n\n\t}\n\n\tstatic getUV( point, p1, p2, p3, uv1, uv2, uv3, target ) {\n\n\t\tthis.getBarycoord( point, p1, p2, p3, _v3$1 );\n\n\t\ttarget.set( 0, 0 );\n\t\ttarget.addScaledVector( uv1, _v3$1.x );\n\t\ttarget.addScaledVector( uv2, _v3$1.y );\n\t\ttarget.addScaledVector( uv3, _v3$1.z );\n\n\t\treturn target;\n\n\t}\n\n\tstatic isFrontFacing( a, b, c, direction ) {\n\n\t\t_v0$1.subVectors( c, b );\n\t\t_v1$3.subVectors( a, b );\n\n\t\t// strictly front facing\n\t\treturn ( _v0$1.cross( _v1$3 ).dot( direction ) < 0 ) ? true : false;\n\n\t}\n\n\tset( a, b, c ) {\n\n\t\tthis.a.copy( a );\n\t\tthis.b.copy( b );\n\t\tthis.c.copy( c );\n\n\t\treturn this;\n\n\t}\n\n\tsetFromPointsAndIndices( points, i0, i1, i2 ) {\n\n\t\tthis.a.copy( points[ i0 ] );\n\t\tthis.b.copy( points[ i1 ] );\n\t\tthis.c.copy( points[ i2 ] );\n\n\t\treturn this;\n\n\t}\n\n\tsetFromAttributeAndIndices( attribute, i0, i1, i2 ) {\n\n\t\tthis.a.fromBufferAttribute( attribute, i0 );\n\t\tthis.b.fromBufferAttribute( attribute, i1 );\n\t\tthis.c.fromBufferAttribute( attribute, i2 );\n\n\t\treturn this;\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n\tcopy( triangle ) {\n\n\t\tthis.a.copy( triangle.a );\n\t\tthis.b.copy( triangle.b );\n\t\tthis.c.copy( triangle.c );\n\n\t\treturn this;\n\n\t}\n\n\tgetArea() {\n\n\t\t_v0$1.subVectors( this.c, this.b );\n\t\t_v1$3.subVectors( this.a, this.b );\n\n\t\treturn _v0$1.cross( _v1$3 ).length() * 0.5;\n\n\t}\n\n\tgetMidpoint( target ) {\n\n\t\treturn target.addVectors( this.a, this.b ).add( this.c ).multiplyScalar( 1 / 3 );\n\n\t}\n\n\tgetNormal( target ) {\n\n\t\treturn Triangle.getNormal( this.a, this.b, this.c, target );\n\n\t}\n\n\tgetPlane( target ) {\n\n\t\treturn target.setFromCoplanarPoints( this.a, this.b, this.c );\n\n\t}\n\n\tgetBarycoord( point, target ) {\n\n\t\treturn Triangle.getBarycoord( point, this.a, this.b, this.c, target );\n\n\t}\n\n\tgetUV( point, uv1, uv2, uv3, target ) {\n\n\t\treturn Triangle.getUV( point, this.a, this.b, this.c, uv1, uv2, uv3, target );\n\n\t}\n\n\tcontainsPoint( point ) {\n\n\t\treturn Triangle.containsPoint( point, this.a, this.b, this.c );\n\n\t}\n\n\tisFrontFacing( direction ) {\n\n\t\treturn Triangle.isFrontFacing( this.a, this.b, this.c, direction );\n\n\t}\n\n\tintersectsBox( box ) {\n\n\t\treturn box.intersectsTriangle( this );\n\n\t}\n\n\tclosestPointToPoint( p, target ) {\n\n\t\tconst a = this.a, b = this.b, c = this.c;\n\t\tlet v, w;\n\n\t\t// algorithm thanks to Real-Time Collision Detection by Christer Ericson,\n\t\t// published by Morgan Kaufmann Publishers, (c) 2005 Elsevier Inc.,\n\t\t// under the accompanying license; see chapter 5.1.5 for detailed explanation.\n\t\t// basically, we're distinguishing which of the voronoi regions of the triangle\n\t\t// the point lies in with the minimum amount of redundant computation.\n\n\t\t_vab.subVectors( b, a );\n\t\t_vac.subVectors( c, a );\n\t\t_vap.subVectors( p, a );\n\t\tconst d1 = _vab.dot( _vap );\n\t\tconst d2 = _vac.dot( _vap );\n\t\tif ( d1 <= 0 && d2 <= 0 ) {\n\n\t\t\t// vertex region of A; barycentric coords (1, 0, 0)\n\t\t\treturn target.copy( a );\n\n\t\t}\n\n\t\t_vbp.subVectors( p, b );\n\t\tconst d3 = _vab.dot( _vbp );\n\t\tconst d4 = _vac.dot( _vbp );\n\t\tif ( d3 >= 0 && d4 <= d3 ) {\n\n\t\t\t// vertex region of B; barycentric coords (0, 1, 0)\n\t\t\treturn target.copy( b );\n\n\t\t}\n\n\t\tconst vc = d1 * d4 - d3 * d2;\n\t\tif ( vc <= 0 && d1 >= 0 && d3 <= 0 ) {\n\n\t\t\tv = d1 / ( d1 - d3 );\n\t\t\t// edge region of AB; barycentric coords (1-v, v, 0)\n\t\t\treturn target.copy( a ).addScaledVector( _vab, v );\n\n\t\t}\n\n\t\t_vcp.subVectors( p, c );\n\t\tconst d5 = _vab.dot( _vcp );\n\t\tconst d6 = _vac.dot( _vcp );\n\t\tif ( d6 >= 0 && d5 <= d6 ) {\n\n\t\t\t// vertex region of C; barycentric coords (0, 0, 1)\n\t\t\treturn target.copy( c );\n\n\t\t}\n\n\t\tconst vb = d5 * d2 - d1 * d6;\n\t\tif ( vb <= 0 && d2 >= 0 && d6 <= 0 ) {\n\n\t\t\tw = d2 / ( d2 - d6 );\n\t\t\t// edge region of AC; barycentric coords (1-w, 0, w)\n\t\t\treturn target.copy( a ).addScaledVector( _vac, w );\n\n\t\t}\n\n\t\tconst va = d3 * d6 - d5 * d4;\n\t\tif ( va <= 0 && ( d4 - d3 ) >= 0 && ( d5 - d6 ) >= 0 ) {\n\n\t\t\t_vbc.subVectors( c, b );\n\t\t\tw = ( d4 - d3 ) / ( ( d4 - d3 ) + ( d5 - d6 ) );\n\t\t\t// edge region of BC; barycentric coords (0, 1-w, w)\n\t\t\treturn target.copy( b ).addScaledVector( _vbc, w ); // edge region of BC\n\n\t\t}\n\n\t\t// face region\n\t\tconst denom = 1 / ( va + vb + vc );\n\t\t// u = va * denom\n\t\tv = vb * denom;\n\t\tw = vc * denom;\n\n\t\treturn target.copy( a ).addScaledVector( _vab, v ).addScaledVector( _vac, w );\n\n\t}\n\n\tequals( triangle ) {\n\n\t\treturn triangle.a.equals( this.a ) && triangle.b.equals( this.b ) && triangle.c.equals( this.c );\n\n\t}\n\n}\n\nlet materialId = 0;\n\nclass Material extends EventDispatcher {\n\n\tconstructor() {\n\n\t\tsuper();\n\n\t\tthis.isMaterial = true;\n\n\t\tObject.defineProperty( this, 'id', { value: materialId ++ } );\n\n\t\tthis.uuid = generateUUID();\n\n\t\tthis.name = '';\n\t\tthis.type = 'Material';\n\n\t\tthis.blending = NormalBlending;\n\t\tthis.side = FrontSide;\n\t\tthis.vertexColors = false;\n\n\t\tthis.opacity = 1;\n\t\tthis.transparent = false;\n\n\t\tthis.blendSrc = SrcAlphaFactor;\n\t\tthis.blendDst = OneMinusSrcAlphaFactor;\n\t\tthis.blendEquation = AddEquation;\n\t\tthis.blendSrcAlpha = null;\n\t\tthis.blendDstAlpha = null;\n\t\tthis.blendEquationAlpha = null;\n\n\t\tthis.depthFunc = LessEqualDepth;\n\t\tthis.depthTest = true;\n\t\tthis.depthWrite = true;\n\n\t\tthis.stencilWriteMask = 0xff;\n\t\tthis.stencilFunc = AlwaysStencilFunc;\n\t\tthis.stencilRef = 0;\n\t\tthis.stencilFuncMask = 0xff;\n\t\tthis.stencilFail = KeepStencilOp;\n\t\tthis.stencilZFail = KeepStencilOp;\n\t\tthis.stencilZPass = KeepStencilOp;\n\t\tthis.stencilWrite = false;\n\n\t\tthis.clippingPlanes = null;\n\t\tthis.clipIntersection = false;\n\t\tthis.clipShadows = false;\n\n\t\tthis.shadowSide = null;\n\n\t\tthis.colorWrite = true;\n\n\t\tthis.precision = null; // override the renderer's default precision for this material\n\n\t\tthis.polygonOffset = false;\n\t\tthis.polygonOffsetFactor = 0;\n\t\tthis.polygonOffsetUnits = 0;\n\n\t\tthis.dithering = false;\n\n\t\tthis.alphaToCoverage = false;\n\t\tthis.premultipliedAlpha = false;\n\n\t\tthis.visible = true;\n\n\t\tthis.toneMapped = true;\n\n\t\tthis.userData = {};\n\n\t\tthis.version = 0;\n\n\t\tthis._alphaTest = 0;\n\n\t}\n\n\tget alphaTest() {\n\n\t\treturn this._alphaTest;\n\n\t}\n\n\tset alphaTest( value ) {\n\n\t\tif ( this._alphaTest > 0 !== value > 0 ) {\n\n\t\t\tthis.version ++;\n\n\t\t}\n\n\t\tthis._alphaTest = value;\n\n\t}\n\n\tonBuild( /* shaderobject, renderer */ ) {}\n\n\tonBeforeRender( /* renderer, scene, camera, geometry, object, group */ ) {}\n\n\tonBeforeCompile( /* shaderobject, renderer */ ) {}\n\n\tcustomProgramCacheKey() {\n\n\t\treturn this.onBeforeCompile.toString();\n\n\t}\n\n\tsetValues( values ) {\n\n\t\tif ( values === undefined ) return;\n\n\t\tfor ( const key in values ) {\n\n\t\t\tconst newValue = values[ key ];\n\n\t\t\tif ( newValue === undefined ) {\n\n\t\t\t\tconsole.warn( 'THREE.Material: \\'' + key + '\\' parameter is undefined.' );\n\t\t\t\tcontinue;\n\n\t\t\t}\n\n\t\t\t// for backward compatibility if shading is set in the constructor\n\t\t\tif ( key === 'shading' ) {\n\n\t\t\t\tconsole.warn( 'THREE.' + this.type + ': .shading has been removed. Use the boolean .flatShading instead.' );\n\t\t\t\tthis.flatShading = ( newValue === FlatShading ) ? true : false;\n\t\t\t\tcontinue;\n\n\t\t\t}\n\n\t\t\tconst currentValue = this[ key ];\n\n\t\t\tif ( currentValue === undefined ) {\n\n\t\t\t\tconsole.warn( 'THREE.' + this.type + ': \\'' + key + '\\' is not a property of this material.' );\n\t\t\t\tcontinue;\n\n\t\t\t}\n\n\t\t\tif ( currentValue && currentValue.isColor ) {\n\n\t\t\t\tcurrentValue.set( newValue );\n\n\t\t\t} else if ( ( currentValue && currentValue.isVector3 ) && ( newValue && newValue.isVector3 ) ) {\n\n\t\t\t\tcurrentValue.copy( newValue );\n\n\t\t\t} else {\n\n\t\t\t\tthis[ key ] = newValue;\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\ttoJSON( meta ) {\n\n\t\tconst isRootObject = ( meta === undefined || typeof meta === 'string' );\n\n\t\tif ( isRootObject ) {\n\n\t\t\tmeta = {\n\t\t\t\ttextures: {},\n\t\t\t\timages: {}\n\t\t\t};\n\n\t\t}\n\n\t\tconst data = {\n\t\t\tmetadata: {\n\t\t\t\tversion: 4.5,\n\t\t\t\ttype: 'Material',\n\t\t\t\tgenerator: 'Material.toJSON'\n\t\t\t}\n\t\t};\n\n\t\t// standard Material serialization\n\t\tdata.uuid = this.uuid;\n\t\tdata.type = this.type;\n\n\t\tif ( this.name !== '' ) data.name = this.name;\n\n\t\tif ( this.color && this.color.isColor ) data.color = this.color.getHex();\n\n\t\tif ( this.roughness !== undefined ) data.roughness = this.roughness;\n\t\tif ( this.metalness !== undefined ) data.metalness = this.metalness;\n\n\t\tif ( this.sheen !== undefined ) data.sheen = this.sheen;\n\t\tif ( this.sheenColor && this.sheenColor.isColor ) data.sheenColor = this.sheenColor.getHex();\n\t\tif ( this.sheenRoughness !== undefined ) data.sheenRoughness = this.sheenRoughness;\n\t\tif ( this.emissive && this.emissive.isColor ) data.emissive = this.emissive.getHex();\n\t\tif ( this.emissiveIntensity && this.emissiveIntensity !== 1 ) data.emissiveIntensity = this.emissiveIntensity;\n\n\t\tif ( this.specular && this.specular.isColor ) data.specular = this.specular.getHex();\n\t\tif ( this.specularIntensity !== undefined ) data.specularIntensity = this.specularIntensity;\n\t\tif ( this.specularColor && this.specularColor.isColor ) data.specularColor = this.specularColor.getHex();\n\t\tif ( this.shininess !== undefined ) data.shininess = this.shininess;\n\t\tif ( this.clearcoat !== undefined ) data.clearcoat = this.clearcoat;\n\t\tif ( this.clearcoatRoughness !== undefined ) data.clearcoatRoughness = this.clearcoatRoughness;\n\n\t\tif ( this.clearcoatMap && this.clearcoatMap.isTexture ) {\n\n\t\t\tdata.clearcoatMap = this.clearcoatMap.toJSON( meta ).uuid;\n\n\t\t}\n\n\t\tif ( this.clearcoatRoughnessMap && this.clearcoatRoughnessMap.isTexture ) {\n\n\t\t\tdata.clearcoatRoughnessMap = this.clearcoatRoughnessMap.toJSON( meta ).uuid;\n\n\t\t}\n\n\t\tif ( this.clearcoatNormalMap && this.clearcoatNormalMap.isTexture ) {\n\n\t\t\tdata.clearcoatNormalMap = this.clearcoatNormalMap.toJSON( meta ).uuid;\n\t\t\tdata.clearcoatNormalScale = this.clearcoatNormalScale.toArray();\n\n\t\t}\n\n\t\tif ( this.iridescence !== undefined ) data.iridescence = this.iridescence;\n\t\tif ( this.iridescenceIOR !== undefined ) data.iridescenceIOR = this.iridescenceIOR;\n\t\tif ( this.iridescenceThicknessRange !== undefined ) data.iridescenceThicknessRange = this.iridescenceThicknessRange;\n\n\t\tif ( this.iridescenceMap && this.iridescenceMap.isTexture ) {\n\n\t\t\tdata.iridescenceMap = this.iridescenceMap.toJSON( meta ).uuid;\n\n\t\t}\n\n\t\tif ( this.iridescenceThicknessMap && this.iridescenceThicknessMap.isTexture ) {\n\n\t\t\tdata.iridescenceThicknessMap = this.iridescenceThicknessMap.toJSON( meta ).uuid;\n\n\t\t}\n\n\t\tif ( this.map && this.map.isTexture ) data.map = this.map.toJSON( meta ).uuid;\n\t\tif ( this.matcap && this.matcap.isTexture ) data.matcap = this.matcap.toJSON( meta ).uuid;\n\t\tif ( this.alphaMap && this.alphaMap.isTexture ) data.alphaMap = this.alphaMap.toJSON( meta ).uuid;\n\n\t\tif ( this.lightMap && this.lightMap.isTexture ) {\n\n\t\t\tdata.lightMap = this.lightMap.toJSON( meta ).uuid;\n\t\t\tdata.lightMapIntensity = this.lightMapIntensity;\n\n\t\t}\n\n\t\tif ( this.aoMap && this.aoMap.isTexture ) {\n\n\t\t\tdata.aoMap = this.aoMap.toJSON( meta ).uuid;\n\t\t\tdata.aoMapIntensity = this.aoMapIntensity;\n\n\t\t}\n\n\t\tif ( this.bumpMap && this.bumpMap.isTexture ) {\n\n\t\t\tdata.bumpMap = this.bumpMap.toJSON( meta ).uuid;\n\t\t\tdata.bumpScale = this.bumpScale;\n\n\t\t}\n\n\t\tif ( this.normalMap && this.normalMap.isTexture ) {\n\n\t\t\tdata.normalMap = this.normalMap.toJSON( meta ).uuid;\n\t\t\tdata.normalMapType = this.normalMapType;\n\t\t\tdata.normalScale = this.normalScale.toArray();\n\n\t\t}\n\n\t\tif ( this.displacementMap && this.displacementMap.isTexture ) {\n\n\t\t\tdata.displacementMap = this.displacementMap.toJSON( meta ).uuid;\n\t\t\tdata.displacementScale = this.displacementScale;\n\t\t\tdata.displacementBias = this.displacementBias;\n\n\t\t}\n\n\t\tif ( this.roughnessMap && this.roughnessMap.isTexture ) data.roughnessMap = this.roughnessMap.toJSON( meta ).uuid;\n\t\tif ( this.metalnessMap && this.metalnessMap.isTexture ) data.metalnessMap = this.metalnessMap.toJSON( meta ).uuid;\n\n\t\tif ( this.emissiveMap && this.emissiveMap.isTexture ) data.emissiveMap = this.emissiveMap.toJSON( meta ).uuid;\n\t\tif ( this.specularMap && this.specularMap.isTexture ) data.specularMap = this.specularMap.toJSON( meta ).uuid;\n\t\tif ( this.specularIntensityMap && this.specularIntensityMap.isTexture ) data.specularIntensityMap = this.specularIntensityMap.toJSON( meta ).uuid;\n\t\tif ( this.specularColorMap && this.specularColorMap.isTexture ) data.specularColorMap = this.specularColorMap.toJSON( meta ).uuid;\n\n\t\tif ( this.envMap && this.envMap.isTexture ) {\n\n\t\t\tdata.envMap = this.envMap.toJSON( meta ).uuid;\n\n\t\t\tif ( this.combine !== undefined ) data.combine = this.combine;\n\n\t\t}\n\n\t\tif ( this.envMapIntensity !== undefined ) data.envMapIntensity = this.envMapIntensity;\n\t\tif ( this.reflectivity !== undefined ) data.reflectivity = this.reflectivity;\n\t\tif ( this.refractionRatio !== undefined ) data.refractionRatio = this.refractionRatio;\n\n\t\tif ( this.gradientMap && this.gradientMap.isTexture ) {\n\n\t\t\tdata.gradientMap = this.gradientMap.toJSON( meta ).uuid;\n\n\t\t}\n\n\t\tif ( this.transmission !== undefined ) data.transmission = this.transmission;\n\t\tif ( this.transmissionMap && this.transmissionMap.isTexture ) data.transmissionMap = this.transmissionMap.toJSON( meta ).uuid;\n\t\tif ( this.thickness !== undefined ) data.thickness = this.thickness;\n\t\tif ( this.thicknessMap && this.thicknessMap.isTexture ) data.thicknessMap = this.thicknessMap.toJSON( meta ).uuid;\n\t\tif ( this.attenuationDistance !== undefined ) data.attenuationDistance = this.attenuationDistance;\n\t\tif ( this.attenuationColor !== undefined ) data.attenuationColor = this.attenuationColor.getHex();\n\n\t\tif ( this.size !== undefined ) data.size = this.size;\n\t\tif ( this.shadowSide !== null ) data.shadowSide = this.shadowSide;\n\t\tif ( this.sizeAttenuation !== undefined ) data.sizeAttenuation = this.sizeAttenuation;\n\n\t\tif ( this.blending !== NormalBlending ) data.blending = this.blending;\n\t\tif ( this.side !== FrontSide ) data.side = this.side;\n\t\tif ( this.vertexColors ) data.vertexColors = true;\n\n\t\tif ( this.opacity < 1 ) data.opacity = this.opacity;\n\t\tif ( this.transparent === true ) data.transparent = this.transparent;\n\n\t\tdata.depthFunc = this.depthFunc;\n\t\tdata.depthTest = this.depthTest;\n\t\tdata.depthWrite = this.depthWrite;\n\t\tdata.colorWrite = this.colorWrite;\n\n\t\tdata.stencilWrite = this.stencilWrite;\n\t\tdata.stencilWriteMask = this.stencilWriteMask;\n\t\tdata.stencilFunc = this.stencilFunc;\n\t\tdata.stencilRef = this.stencilRef;\n\t\tdata.stencilFuncMask = this.stencilFuncMask;\n\t\tdata.stencilFail = this.stencilFail;\n\t\tdata.stencilZFail = this.stencilZFail;\n\t\tdata.stencilZPass = this.stencilZPass;\n\n\t\t// rotation (SpriteMaterial)\n\t\tif ( this.rotation !== undefined && this.rotation !== 0 ) data.rotation = this.rotation;\n\n\t\tif ( this.polygonOffset === true ) data.polygonOffset = true;\n\t\tif ( this.polygonOffsetFactor !== 0 ) data.polygonOffsetFactor = this.polygonOffsetFactor;\n\t\tif ( this.polygonOffsetUnits !== 0 ) data.polygonOffsetUnits = this.polygonOffsetUnits;\n\n\t\tif ( this.linewidth !== undefined && this.linewidth !== 1 ) data.linewidth = this.linewidth;\n\t\tif ( this.dashSize !== undefined ) data.dashSize = this.dashSize;\n\t\tif ( this.gapSize !== undefined ) data.gapSize = this.gapSize;\n\t\tif ( this.scale !== undefined ) data.scale = this.scale;\n\n\t\tif ( this.dithering === true ) data.dithering = true;\n\n\t\tif ( this.alphaTest > 0 ) data.alphaTest = this.alphaTest;\n\t\tif ( this.alphaToCoverage === true ) data.alphaToCoverage = this.alphaToCoverage;\n\t\tif ( this.premultipliedAlpha === true ) data.premultipliedAlpha = this.premultipliedAlpha;\n\n\t\tif ( this.wireframe === true ) data.wireframe = this.wireframe;\n\t\tif ( this.wireframeLinewidth > 1 ) data.wireframeLinewidth = this.wireframeLinewidth;\n\t\tif ( this.wireframeLinecap !== 'round' ) data.wireframeLinecap = this.wireframeLinecap;\n\t\tif ( this.wireframeLinejoin !== 'round' ) data.wireframeLinejoin = this.wireframeLinejoin;\n\n\t\tif ( this.flatShading === true ) data.flatShading = this.flatShading;\n\n\t\tif ( this.visible === false ) data.visible = false;\n\n\t\tif ( this.toneMapped === false ) data.toneMapped = false;\n\n\t\tif ( this.fog === false ) data.fog = false;\n\n\t\tif ( JSON.stringify( this.userData ) !== '{}' ) data.userData = this.userData;\n\n\t\t// TODO: Copied from Object3D.toJSON\n\n\t\tfunction extractFromCache( cache ) {\n\n\t\t\tconst values = [];\n\n\t\t\tfor ( const key in cache ) {\n\n\t\t\t\tconst data = cache[ key ];\n\t\t\t\tdelete data.metadata;\n\t\t\t\tvalues.push( data );\n\n\t\t\t}\n\n\t\t\treturn values;\n\n\t\t}\n\n\t\tif ( isRootObject ) {\n\n\t\t\tconst textures = extractFromCache( meta.textures );\n\t\t\tconst images = extractFromCache( meta.images );\n\n\t\t\tif ( textures.length > 0 ) data.textures = textures;\n\t\t\tif ( images.length > 0 ) data.images = images;\n\n\t\t}\n\n\t\treturn data;\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tthis.name = source.name;\n\n\t\tthis.blending = source.blending;\n\t\tthis.side = source.side;\n\t\tthis.vertexColors = source.vertexColors;\n\n\t\tthis.opacity = source.opacity;\n\t\tthis.transparent = source.transparent;\n\n\t\tthis.blendSrc = source.blendSrc;\n\t\tthis.blendDst = source.blendDst;\n\t\tthis.blendEquation = source.blendEquation;\n\t\tthis.blendSrcAlpha = source.blendSrcAlpha;\n\t\tthis.blendDstAlpha = source.blendDstAlpha;\n\t\tthis.blendEquationAlpha = source.blendEquationAlpha;\n\n\t\tthis.depthFunc = source.depthFunc;\n\t\tthis.depthTest = source.depthTest;\n\t\tthis.depthWrite = source.depthWrite;\n\n\t\tthis.stencilWriteMask = source.stencilWriteMask;\n\t\tthis.stencilFunc = source.stencilFunc;\n\t\tthis.stencilRef = source.stencilRef;\n\t\tthis.stencilFuncMask = source.stencilFuncMask;\n\t\tthis.stencilFail = source.stencilFail;\n\t\tthis.stencilZFail = source.stencilZFail;\n\t\tthis.stencilZPass = source.stencilZPass;\n\t\tthis.stencilWrite = source.stencilWrite;\n\n\t\tconst srcPlanes = source.clippingPlanes;\n\t\tlet dstPlanes = null;\n\n\t\tif ( srcPlanes !== null ) {\n\n\t\t\tconst n = srcPlanes.length;\n\t\t\tdstPlanes = new Array( n );\n\n\t\t\tfor ( let i = 0; i !== n; ++ i ) {\n\n\t\t\t\tdstPlanes[ i ] = srcPlanes[ i ].clone();\n\n\t\t\t}\n\n\t\t}\n\n\t\tthis.clippingPlanes = dstPlanes;\n\t\tthis.clipIntersection = source.clipIntersection;\n\t\tthis.clipShadows = source.clipShadows;\n\n\t\tthis.shadowSide = source.shadowSide;\n\n\t\tthis.colorWrite = source.colorWrite;\n\n\t\tthis.precision = source.precision;\n\n\t\tthis.polygonOffset = source.polygonOffset;\n\t\tthis.polygonOffsetFactor = source.polygonOffsetFactor;\n\t\tthis.polygonOffsetUnits = source.polygonOffsetUnits;\n\n\t\tthis.dithering = source.dithering;\n\n\t\tthis.alphaTest = source.alphaTest;\n\t\tthis.alphaToCoverage = source.alphaToCoverage;\n\t\tthis.premultipliedAlpha = source.premultipliedAlpha;\n\n\t\tthis.visible = source.visible;\n\n\t\tthis.toneMapped = source.toneMapped;\n\n\t\tthis.userData = JSON.parse( JSON.stringify( source.userData ) );\n\n\t\treturn this;\n\n\t}\n\n\tdispose() {\n\n\t\tthis.dispatchEvent( { type: 'dispose' } );\n\n\t}\n\n\tset needsUpdate( value ) {\n\n\t\tif ( value === true ) this.version ++;\n\n\t}\n\n\t// @deprecated since r131, f5803c62cc4a29d90744e9dc7811d086e354c1d8\n\n\tget vertexTangents() {\n\n\t\tconsole.warn( 'THREE.' + this.type + ': .vertexTangents has been removed.' );\n\t\treturn false;\n\n\t}\n\n\tset vertexTangents( value ) {\n\n\t\tconsole.warn( 'THREE.' + this.type + ': .vertexTangents has been removed.' );\n\n\t}\n\n}\n\nMaterial.fromType = function ( /*type*/ ) {\n\n\t// TODO: Behavior added in Materials.js\n\n\treturn null;\n\n};\n\nclass MeshBasicMaterial extends Material {\n\n\tconstructor( parameters ) {\n\n\t\tsuper();\n\n\t\tthis.isMeshBasicMaterial = true;\n\n\t\tthis.type = 'MeshBasicMaterial';\n\n\t\tthis.color = new Color( 0xffffff ); // emissive\n\n\t\tthis.map = null;\n\n\t\tthis.lightMap = null;\n\t\tthis.lightMapIntensity = 1.0;\n\n\t\tthis.aoMap = null;\n\t\tthis.aoMapIntensity = 1.0;\n\n\t\tthis.specularMap = null;\n\n\t\tthis.alphaMap = null;\n\n\t\tthis.envMap = null;\n\t\tthis.combine = MultiplyOperation;\n\t\tthis.reflectivity = 1;\n\t\tthis.refractionRatio = 0.98;\n\n\t\tthis.wireframe = false;\n\t\tthis.wireframeLinewidth = 1;\n\t\tthis.wireframeLinecap = 'round';\n\t\tthis.wireframeLinejoin = 'round';\n\n\t\tthis.fog = true;\n\n\t\tthis.setValues( parameters );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.color.copy( source.color );\n\n\t\tthis.map = source.map;\n\n\t\tthis.lightMap = source.lightMap;\n\t\tthis.lightMapIntensity = source.lightMapIntensity;\n\n\t\tthis.aoMap = source.aoMap;\n\t\tthis.aoMapIntensity = source.aoMapIntensity;\n\n\t\tthis.specularMap = source.specularMap;\n\n\t\tthis.alphaMap = source.alphaMap;\n\n\t\tthis.envMap = source.envMap;\n\t\tthis.combine = source.combine;\n\t\tthis.reflectivity = source.reflectivity;\n\t\tthis.refractionRatio = source.refractionRatio;\n\n\t\tthis.wireframe = source.wireframe;\n\t\tthis.wireframeLinewidth = source.wireframeLinewidth;\n\t\tthis.wireframeLinecap = source.wireframeLinecap;\n\t\tthis.wireframeLinejoin = source.wireframeLinejoin;\n\n\t\tthis.fog = source.fog;\n\n\t\treturn this;\n\n\t}\n\n}\n\nconst _vector$9 = /*@__PURE__*/ new Vector3();\nconst _vector2$1 = /*@__PURE__*/ new Vector2();\n\nclass BufferAttribute {\n\n\tconstructor( array, itemSize, normalized ) {\n\n\t\tif ( Array.isArray( array ) ) {\n\n\t\t\tthrow new TypeError( 'THREE.BufferAttribute: array should be a Typed Array.' );\n\n\t\t}\n\n\t\tthis.isBufferAttribute = true;\n\n\t\tthis.name = '';\n\n\t\tthis.array = array;\n\t\tthis.itemSize = itemSize;\n\t\tthis.count = array !== undefined ? array.length / itemSize : 0;\n\t\tthis.normalized = normalized === true;\n\n\t\tthis.usage = StaticDrawUsage;\n\t\tthis.updateRange = { offset: 0, count: - 1 };\n\n\t\tthis.version = 0;\n\n\t}\n\n\tonUploadCallback() {}\n\n\tset needsUpdate( value ) {\n\n\t\tif ( value === true ) this.version ++;\n\n\t}\n\n\tsetUsage( value ) {\n\n\t\tthis.usage = value;\n\n\t\treturn this;\n\n\t}\n\n\tcopy( source ) {\n\n\t\tthis.name = source.name;\n\t\tthis.array = new source.array.constructor( source.array );\n\t\tthis.itemSize = source.itemSize;\n\t\tthis.count = source.count;\n\t\tthis.normalized = source.normalized;\n\n\t\tthis.usage = source.usage;\n\n\t\treturn this;\n\n\t}\n\n\tcopyAt( index1, attribute, index2 ) {\n\n\t\tindex1 *= this.itemSize;\n\t\tindex2 *= attribute.itemSize;\n\n\t\tfor ( let i = 0, l = this.itemSize; i < l; i ++ ) {\n\n\t\t\tthis.array[ index1 + i ] = attribute.array[ index2 + i ];\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tcopyArray( array ) {\n\n\t\tthis.array.set( array );\n\n\t\treturn this;\n\n\t}\n\n\tcopyColorsArray( colors ) {\n\n\t\tconst array = this.array;\n\t\tlet offset = 0;\n\n\t\tfor ( let i = 0, l = colors.length; i < l; i ++ ) {\n\n\t\t\tlet color = colors[ i ];\n\n\t\t\tif ( color === undefined ) {\n\n\t\t\t\tconsole.warn( 'THREE.BufferAttribute.copyColorsArray(): color is undefined', i );\n\t\t\t\tcolor = new Color();\n\n\t\t\t}\n\n\t\t\tarray[ offset ++ ] = color.r;\n\t\t\tarray[ offset ++ ] = color.g;\n\t\t\tarray[ offset ++ ] = color.b;\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tcopyVector2sArray( vectors ) {\n\n\t\tconst array = this.array;\n\t\tlet offset = 0;\n\n\t\tfor ( let i = 0, l = vectors.length; i < l; i ++ ) {\n\n\t\t\tlet vector = vectors[ i ];\n\n\t\t\tif ( vector === undefined ) {\n\n\t\t\t\tconsole.warn( 'THREE.BufferAttribute.copyVector2sArray(): vector is undefined', i );\n\t\t\t\tvector = new Vector2();\n\n\t\t\t}\n\n\t\t\tarray[ offset ++ ] = vector.x;\n\t\t\tarray[ offset ++ ] = vector.y;\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tcopyVector3sArray( vectors ) {\n\n\t\tconst array = this.array;\n\t\tlet offset = 0;\n\n\t\tfor ( let i = 0, l = vectors.length; i < l; i ++ ) {\n\n\t\t\tlet vector = vectors[ i ];\n\n\t\t\tif ( vector === undefined ) {\n\n\t\t\t\tconsole.warn( 'THREE.BufferAttribute.copyVector3sArray(): vector is undefined', i );\n\t\t\t\tvector = new Vector3();\n\n\t\t\t}\n\n\t\t\tarray[ offset ++ ] = vector.x;\n\t\t\tarray[ offset ++ ] = vector.y;\n\t\t\tarray[ offset ++ ] = vector.z;\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tcopyVector4sArray( vectors ) {\n\n\t\tconst array = this.array;\n\t\tlet offset = 0;\n\n\t\tfor ( let i = 0, l = vectors.length; i < l; i ++ ) {\n\n\t\t\tlet vector = vectors[ i ];\n\n\t\t\tif ( vector === undefined ) {\n\n\t\t\t\tconsole.warn( 'THREE.BufferAttribute.copyVector4sArray(): vector is undefined', i );\n\t\t\t\tvector = new Vector4();\n\n\t\t\t}\n\n\t\t\tarray[ offset ++ ] = vector.x;\n\t\t\tarray[ offset ++ ] = vector.y;\n\t\t\tarray[ offset ++ ] = vector.z;\n\t\t\tarray[ offset ++ ] = vector.w;\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tapplyMatrix3( m ) {\n\n\t\tif ( this.itemSize === 2 ) {\n\n\t\t\tfor ( let i = 0, l = this.count; i < l; i ++ ) {\n\n\t\t\t\t_vector2$1.fromBufferAttribute( this, i );\n\t\t\t\t_vector2$1.applyMatrix3( m );\n\n\t\t\t\tthis.setXY( i, _vector2$1.x, _vector2$1.y );\n\n\t\t\t}\n\n\t\t} else if ( this.itemSize === 3 ) {\n\n\t\t\tfor ( let i = 0, l = this.count; i < l; i ++ ) {\n\n\t\t\t\t_vector$9.fromBufferAttribute( this, i );\n\t\t\t\t_vector$9.applyMatrix3( m );\n\n\t\t\t\tthis.setXYZ( i, _vector$9.x, _vector$9.y, _vector$9.z );\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tapplyMatrix4( m ) {\n\n\t\tfor ( let i = 0, l = this.count; i < l; i ++ ) {\n\n\t\t\t_vector$9.fromBufferAttribute( this, i );\n\n\t\t\t_vector$9.applyMatrix4( m );\n\n\t\t\tthis.setXYZ( i, _vector$9.x, _vector$9.y, _vector$9.z );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tapplyNormalMatrix( m ) {\n\n\t\tfor ( let i = 0, l = this.count; i < l; i ++ ) {\n\n\t\t\t_vector$9.fromBufferAttribute( this, i );\n\n\t\t\t_vector$9.applyNormalMatrix( m );\n\n\t\t\tthis.setXYZ( i, _vector$9.x, _vector$9.y, _vector$9.z );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\ttransformDirection( m ) {\n\n\t\tfor ( let i = 0, l = this.count; i < l; i ++ ) {\n\n\t\t\t_vector$9.fromBufferAttribute( this, i );\n\n\t\t\t_vector$9.transformDirection( m );\n\n\t\t\tthis.setXYZ( i, _vector$9.x, _vector$9.y, _vector$9.z );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tset( value, offset = 0 ) {\n\n\t\tthis.array.set( value, offset );\n\n\t\treturn this;\n\n\t}\n\n\tgetX( index ) {\n\n\t\treturn this.array[ index * this.itemSize ];\n\n\t}\n\n\tsetX( index, x ) {\n\n\t\tthis.array[ index * this.itemSize ] = x;\n\n\t\treturn this;\n\n\t}\n\n\tgetY( index ) {\n\n\t\treturn this.array[ index * this.itemSize + 1 ];\n\n\t}\n\n\tsetY( index, y ) {\n\n\t\tthis.array[ index * this.itemSize + 1 ] = y;\n\n\t\treturn this;\n\n\t}\n\n\tgetZ( index ) {\n\n\t\treturn this.array[ index * this.itemSize + 2 ];\n\n\t}\n\n\tsetZ( index, z ) {\n\n\t\tthis.array[ index * this.itemSize + 2 ] = z;\n\n\t\treturn this;\n\n\t}\n\n\tgetW( index ) {\n\n\t\treturn this.array[ index * this.itemSize + 3 ];\n\n\t}\n\n\tsetW( index, w ) {\n\n\t\tthis.array[ index * this.itemSize + 3 ] = w;\n\n\t\treturn this;\n\n\t}\n\n\tsetXY( index, x, y ) {\n\n\t\tindex *= this.itemSize;\n\n\t\tthis.array[ index + 0 ] = x;\n\t\tthis.array[ index + 1 ] = y;\n\n\t\treturn this;\n\n\t}\n\n\tsetXYZ( index, x, y, z ) {\n\n\t\tindex *= this.itemSize;\n\n\t\tthis.array[ index + 0 ] = x;\n\t\tthis.array[ index + 1 ] = y;\n\t\tthis.array[ index + 2 ] = z;\n\n\t\treturn this;\n\n\t}\n\n\tsetXYZW( index, x, y, z, w ) {\n\n\t\tindex *= this.itemSize;\n\n\t\tthis.array[ index + 0 ] = x;\n\t\tthis.array[ index + 1 ] = y;\n\t\tthis.array[ index + 2 ] = z;\n\t\tthis.array[ index + 3 ] = w;\n\n\t\treturn this;\n\n\t}\n\n\tonUpload( callback ) {\n\n\t\tthis.onUploadCallback = callback;\n\n\t\treturn this;\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor( this.array, this.itemSize ).copy( this );\n\n\t}\n\n\ttoJSON() {\n\n\t\tconst data = {\n\t\t\titemSize: this.itemSize,\n\t\t\ttype: this.array.constructor.name,\n\t\t\tarray: Array.prototype.slice.call( this.array ),\n\t\t\tnormalized: this.normalized\n\t\t};\n\n\t\tif ( this.name !== '' ) data.name = this.name;\n\t\tif ( this.usage !== StaticDrawUsage ) data.usage = this.usage;\n\t\tif ( this.updateRange.offset !== 0 || this.updateRange.count !== - 1 ) data.updateRange = this.updateRange;\n\n\t\treturn data;\n\n\t}\n\n}\n\n//\n\nclass Int8BufferAttribute extends BufferAttribute {\n\n\tconstructor( array, itemSize, normalized ) {\n\n\t\tsuper( new Int8Array( array ), itemSize, normalized );\n\n\t}\n\n}\n\nclass Uint8BufferAttribute extends BufferAttribute {\n\n\tconstructor( array, itemSize, normalized ) {\n\n\t\tsuper( new Uint8Array( array ), itemSize, normalized );\n\n\t}\n\n}\n\nclass Uint8ClampedBufferAttribute extends BufferAttribute {\n\n\tconstructor( array, itemSize, normalized ) {\n\n\t\tsuper( new Uint8ClampedArray( array ), itemSize, normalized );\n\n\t}\n\n}\n\nclass Int16BufferAttribute extends BufferAttribute {\n\n\tconstructor( array, itemSize, normalized ) {\n\n\t\tsuper( new Int16Array( array ), itemSize, normalized );\n\n\t}\n\n}\n\nclass Uint16BufferAttribute extends BufferAttribute {\n\n\tconstructor( array, itemSize, normalized ) {\n\n\t\tsuper( new Uint16Array( array ), itemSize, normalized );\n\n\t}\n\n}\n\nclass Int32BufferAttribute extends BufferAttribute {\n\n\tconstructor( array, itemSize, normalized ) {\n\n\t\tsuper( new Int32Array( array ), itemSize, normalized );\n\n\t}\n\n}\n\nclass Uint32BufferAttribute extends BufferAttribute {\n\n\tconstructor( array, itemSize, normalized ) {\n\n\t\tsuper( new Uint32Array( array ), itemSize, normalized );\n\n\t}\n\n}\n\nclass Float16BufferAttribute extends BufferAttribute {\n\n\tconstructor( array, itemSize, normalized ) {\n\n\t\tsuper( new Uint16Array( array ), itemSize, normalized );\n\n\t\tthis.isFloat16BufferAttribute = true;\n\n\t}\n\n}\n\n\nclass Float32BufferAttribute extends BufferAttribute {\n\n\tconstructor( array, itemSize, normalized ) {\n\n\t\tsuper( new Float32Array( array ), itemSize, normalized );\n\n\t}\n\n}\n\nclass Float64BufferAttribute extends BufferAttribute {\n\n\tconstructor( array, itemSize, normalized ) {\n\n\t\tsuper( new Float64Array( array ), itemSize, normalized );\n\n\t}\n\n}\n\nlet _id$1 = 0;\n\nconst _m1 = /*@__PURE__*/ new Matrix4();\nconst _obj = /*@__PURE__*/ new Object3D();\nconst _offset = /*@__PURE__*/ new Vector3();\nconst _box$1 = /*@__PURE__*/ new Box3();\nconst _boxMorphTargets = /*@__PURE__*/ new Box3();\nconst _vector$8 = /*@__PURE__*/ new Vector3();\n\nclass BufferGeometry extends EventDispatcher {\n\n\tconstructor() {\n\n\t\tsuper();\n\n\t\tthis.isBufferGeometry = true;\n\n\t\tObject.defineProperty( this, 'id', { value: _id$1 ++ } );\n\n\t\tthis.uuid = generateUUID();\n\n\t\tthis.name = '';\n\t\tthis.type = 'BufferGeometry';\n\n\t\tthis.index = null;\n\t\tthis.attributes = {};\n\n\t\tthis.morphAttributes = {};\n\t\tthis.morphTargetsRelative = false;\n\n\t\tthis.groups = [];\n\n\t\tthis.boundingBox = null;\n\t\tthis.boundingSphere = null;\n\n\t\tthis.drawRange = { start: 0, count: Infinity };\n\n\t\tthis.userData = {};\n\n\t}\n\n\tgetIndex() {\n\n\t\treturn this.index;\n\n\t}\n\n\tsetIndex( index ) {\n\n\t\tif ( Array.isArray( index ) ) {\n\n\t\t\tthis.index = new ( arrayNeedsUint32( index ) ? Uint32BufferAttribute : Uint16BufferAttribute )( index, 1 );\n\n\t\t} else {\n\n\t\t\tthis.index = index;\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tgetAttribute( name ) {\n\n\t\treturn this.attributes[ name ];\n\n\t}\n\n\tsetAttribute( name, attribute ) {\n\n\t\tthis.attributes[ name ] = attribute;\n\n\t\treturn this;\n\n\t}\n\n\tdeleteAttribute( name ) {\n\n\t\tdelete this.attributes[ name ];\n\n\t\treturn this;\n\n\t}\n\n\thasAttribute( name ) {\n\n\t\treturn this.attributes[ name ] !== undefined;\n\n\t}\n\n\taddGroup( start, count, materialIndex = 0 ) {\n\n\t\tthis.groups.push( {\n\n\t\t\tstart: start,\n\t\t\tcount: count,\n\t\t\tmaterialIndex: materialIndex\n\n\t\t} );\n\n\t}\n\n\tclearGroups() {\n\n\t\tthis.groups = [];\n\n\t}\n\n\tsetDrawRange( start, count ) {\n\n\t\tthis.drawRange.start = start;\n\t\tthis.drawRange.count = count;\n\n\t}\n\n\tapplyMatrix4( matrix ) {\n\n\t\tconst position = this.attributes.position;\n\n\t\tif ( position !== undefined ) {\n\n\t\t\tposition.applyMatrix4( matrix );\n\n\t\t\tposition.needsUpdate = true;\n\n\t\t}\n\n\t\tconst normal = this.attributes.normal;\n\n\t\tif ( normal !== undefined ) {\n\n\t\t\tconst normalMatrix = new Matrix3().getNormalMatrix( matrix );\n\n\t\t\tnormal.applyNormalMatrix( normalMatrix );\n\n\t\t\tnormal.needsUpdate = true;\n\n\t\t}\n\n\t\tconst tangent = this.attributes.tangent;\n\n\t\tif ( tangent !== undefined ) {\n\n\t\t\ttangent.transformDirection( matrix );\n\n\t\t\ttangent.needsUpdate = true;\n\n\t\t}\n\n\t\tif ( this.boundingBox !== null ) {\n\n\t\t\tthis.computeBoundingBox();\n\n\t\t}\n\n\t\tif ( this.boundingSphere !== null ) {\n\n\t\t\tthis.computeBoundingSphere();\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tapplyQuaternion( q ) {\n\n\t\t_m1.makeRotationFromQuaternion( q );\n\n\t\tthis.applyMatrix4( _m1 );\n\n\t\treturn this;\n\n\t}\n\n\trotateX( angle ) {\n\n\t\t// rotate geometry around world x-axis\n\n\t\t_m1.makeRotationX( angle );\n\n\t\tthis.applyMatrix4( _m1 );\n\n\t\treturn this;\n\n\t}\n\n\trotateY( angle ) {\n\n\t\t// rotate geometry around world y-axis\n\n\t\t_m1.makeRotationY( angle );\n\n\t\tthis.applyMatrix4( _m1 );\n\n\t\treturn this;\n\n\t}\n\n\trotateZ( angle ) {\n\n\t\t// rotate geometry around world z-axis\n\n\t\t_m1.makeRotationZ( angle );\n\n\t\tthis.applyMatrix4( _m1 );\n\n\t\treturn this;\n\n\t}\n\n\ttranslate( x, y, z ) {\n\n\t\t// translate geometry\n\n\t\t_m1.makeTranslation( x, y, z );\n\n\t\tthis.applyMatrix4( _m1 );\n\n\t\treturn this;\n\n\t}\n\n\tscale( x, y, z ) {\n\n\t\t// scale geometry\n\n\t\t_m1.makeScale( x, y, z );\n\n\t\tthis.applyMatrix4( _m1 );\n\n\t\treturn this;\n\n\t}\n\n\tlookAt( vector ) {\n\n\t\t_obj.lookAt( vector );\n\n\t\t_obj.updateMatrix();\n\n\t\tthis.applyMatrix4( _obj.matrix );\n\n\t\treturn this;\n\n\t}\n\n\tcenter() {\n\n\t\tthis.computeBoundingBox();\n\n\t\tthis.boundingBox.getCenter( _offset ).negate();\n\n\t\tthis.translate( _offset.x, _offset.y, _offset.z );\n\n\t\treturn this;\n\n\t}\n\n\tsetFromPoints( points ) {\n\n\t\tconst position = [];\n\n\t\tfor ( let i = 0, l = points.length; i < l; i ++ ) {\n\n\t\t\tconst point = points[ i ];\n\t\t\tposition.push( point.x, point.y, point.z || 0 );\n\n\t\t}\n\n\t\tthis.setAttribute( 'position', new Float32BufferAttribute( position, 3 ) );\n\n\t\treturn this;\n\n\t}\n\n\tcomputeBoundingBox() {\n\n\t\tif ( this.boundingBox === null ) {\n\n\t\t\tthis.boundingBox = new Box3();\n\n\t\t}\n\n\t\tconst position = this.attributes.position;\n\t\tconst morphAttributesPosition = this.morphAttributes.position;\n\n\t\tif ( position && position.isGLBufferAttribute ) {\n\n\t\t\tconsole.error( 'THREE.BufferGeometry.computeBoundingBox(): GLBufferAttribute requires a manual bounding box. Alternatively set \"mesh.frustumCulled\" to \"false\".', this );\n\n\t\t\tthis.boundingBox.set(\n\t\t\t\tnew Vector3( - Infinity, - Infinity, - Infinity ),\n\t\t\t\tnew Vector3( + Infinity, + Infinity, + Infinity )\n\t\t\t);\n\n\t\t\treturn;\n\n\t\t}\n\n\t\tif ( position !== undefined ) {\n\n\t\t\tthis.boundingBox.setFromBufferAttribute( position );\n\n\t\t\t// process morph attributes if present\n\n\t\t\tif ( morphAttributesPosition ) {\n\n\t\t\t\tfor ( let i = 0, il = morphAttributesPosition.length; i < il; i ++ ) {\n\n\t\t\t\t\tconst morphAttribute = morphAttributesPosition[ i ];\n\t\t\t\t\t_box$1.setFromBufferAttribute( morphAttribute );\n\n\t\t\t\t\tif ( this.morphTargetsRelative ) {\n\n\t\t\t\t\t\t_vector$8.addVectors( this.boundingBox.min, _box$1.min );\n\t\t\t\t\t\tthis.boundingBox.expandByPoint( _vector$8 );\n\n\t\t\t\t\t\t_vector$8.addVectors( this.boundingBox.max, _box$1.max );\n\t\t\t\t\t\tthis.boundingBox.expandByPoint( _vector$8 );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tthis.boundingBox.expandByPoint( _box$1.min );\n\t\t\t\t\t\tthis.boundingBox.expandByPoint( _box$1.max );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tthis.boundingBox.makeEmpty();\n\n\t\t}\n\n\t\tif ( isNaN( this.boundingBox.min.x ) || isNaN( this.boundingBox.min.y ) || isNaN( this.boundingBox.min.z ) ) {\n\n\t\t\tconsole.error( 'THREE.BufferGeometry.computeBoundingBox(): Computed min/max have NaN values. The \"position\" attribute is likely to have NaN values.', this );\n\n\t\t}\n\n\t}\n\n\tcomputeBoundingSphere() {\n\n\t\tif ( this.boundingSphere === null ) {\n\n\t\t\tthis.boundingSphere = new Sphere();\n\n\t\t}\n\n\t\tconst position = this.attributes.position;\n\t\tconst morphAttributesPosition = this.morphAttributes.position;\n\n\t\tif ( position && position.isGLBufferAttribute ) {\n\n\t\t\tconsole.error( 'THREE.BufferGeometry.computeBoundingSphere(): GLBufferAttribute requires a manual bounding sphere. Alternatively set \"mesh.frustumCulled\" to \"false\".', this );\n\n\t\t\tthis.boundingSphere.set( new Vector3(), Infinity );\n\n\t\t\treturn;\n\n\t\t}\n\n\t\tif ( position ) {\n\n\t\t\t// first, find the center of the bounding sphere\n\n\t\t\tconst center = this.boundingSphere.center;\n\n\t\t\t_box$1.setFromBufferAttribute( position );\n\n\t\t\t// process morph attributes if present\n\n\t\t\tif ( morphAttributesPosition ) {\n\n\t\t\t\tfor ( let i = 0, il = morphAttributesPosition.length; i < il; i ++ ) {\n\n\t\t\t\t\tconst morphAttribute = morphAttributesPosition[ i ];\n\t\t\t\t\t_boxMorphTargets.setFromBufferAttribute( morphAttribute );\n\n\t\t\t\t\tif ( this.morphTargetsRelative ) {\n\n\t\t\t\t\t\t_vector$8.addVectors( _box$1.min, _boxMorphTargets.min );\n\t\t\t\t\t\t_box$1.expandByPoint( _vector$8 );\n\n\t\t\t\t\t\t_vector$8.addVectors( _box$1.max, _boxMorphTargets.max );\n\t\t\t\t\t\t_box$1.expandByPoint( _vector$8 );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\t_box$1.expandByPoint( _boxMorphTargets.min );\n\t\t\t\t\t\t_box$1.expandByPoint( _boxMorphTargets.max );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t_box$1.getCenter( center );\n\n\t\t\t// second, try to find a boundingSphere with a radius smaller than the\n\t\t\t// boundingSphere of the boundingBox: sqrt(3) smaller in the best case\n\n\t\t\tlet maxRadiusSq = 0;\n\n\t\t\tfor ( let i = 0, il = position.count; i < il; i ++ ) {\n\n\t\t\t\t_vector$8.fromBufferAttribute( position, i );\n\n\t\t\t\tmaxRadiusSq = Math.max( maxRadiusSq, center.distanceToSquared( _vector$8 ) );\n\n\t\t\t}\n\n\t\t\t// process morph attributes if present\n\n\t\t\tif ( morphAttributesPosition ) {\n\n\t\t\t\tfor ( let i = 0, il = morphAttributesPosition.length; i < il; i ++ ) {\n\n\t\t\t\t\tconst morphAttribute = morphAttributesPosition[ i ];\n\t\t\t\t\tconst morphTargetsRelative = this.morphTargetsRelative;\n\n\t\t\t\t\tfor ( let j = 0, jl = morphAttribute.count; j < jl; j ++ ) {\n\n\t\t\t\t\t\t_vector$8.fromBufferAttribute( morphAttribute, j );\n\n\t\t\t\t\t\tif ( morphTargetsRelative ) {\n\n\t\t\t\t\t\t\t_offset.fromBufferAttribute( position, j );\n\t\t\t\t\t\t\t_vector$8.add( _offset );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tmaxRadiusSq = Math.max( maxRadiusSq, center.distanceToSquared( _vector$8 ) );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tthis.boundingSphere.radius = Math.sqrt( maxRadiusSq );\n\n\t\t\tif ( isNaN( this.boundingSphere.radius ) ) {\n\n\t\t\t\tconsole.error( 'THREE.BufferGeometry.computeBoundingSphere(): Computed radius is NaN. The \"position\" attribute is likely to have NaN values.', this );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tcomputeTangents() {\n\n\t\tconst index = this.index;\n\t\tconst attributes = this.attributes;\n\n\t\t// based on http://www.terathon.com/code/tangent.html\n\t\t// (per vertex tangents)\n\n\t\tif ( index === null ||\n\t\t\t attributes.position === undefined ||\n\t\t\t attributes.normal === undefined ||\n\t\t\t attributes.uv === undefined ) {\n\n\t\t\tconsole.error( 'THREE.BufferGeometry: .computeTangents() failed. Missing required attributes (index, position, normal or uv)' );\n\t\t\treturn;\n\n\t\t}\n\n\t\tconst indices = index.array;\n\t\tconst positions = attributes.position.array;\n\t\tconst normals = attributes.normal.array;\n\t\tconst uvs = attributes.uv.array;\n\n\t\tconst nVertices = positions.length / 3;\n\n\t\tif ( this.hasAttribute( 'tangent' ) === false ) {\n\n\t\t\tthis.setAttribute( 'tangent', new BufferAttribute( new Float32Array( 4 * nVertices ), 4 ) );\n\n\t\t}\n\n\t\tconst tangents = this.getAttribute( 'tangent' ).array;\n\n\t\tconst tan1 = [], tan2 = [];\n\n\t\tfor ( let i = 0; i < nVertices; i ++ ) {\n\n\t\t\ttan1[ i ] = new Vector3();\n\t\t\ttan2[ i ] = new Vector3();\n\n\t\t}\n\n\t\tconst vA = new Vector3(),\n\t\t\tvB = new Vector3(),\n\t\t\tvC = new Vector3(),\n\n\t\t\tuvA = new Vector2(),\n\t\t\tuvB = new Vector2(),\n\t\t\tuvC = new Vector2(),\n\n\t\t\tsdir = new Vector3(),\n\t\t\ttdir = new Vector3();\n\n\t\tfunction handleTriangle( a, b, c ) {\n\n\t\t\tvA.fromArray( positions, a * 3 );\n\t\t\tvB.fromArray( positions, b * 3 );\n\t\t\tvC.fromArray( positions, c * 3 );\n\n\t\t\tuvA.fromArray( uvs, a * 2 );\n\t\t\tuvB.fromArray( uvs, b * 2 );\n\t\t\tuvC.fromArray( uvs, c * 2 );\n\n\t\t\tvB.sub( vA );\n\t\t\tvC.sub( vA );\n\n\t\t\tuvB.sub( uvA );\n\t\t\tuvC.sub( uvA );\n\n\t\t\tconst r = 1.0 / ( uvB.x * uvC.y - uvC.x * uvB.y );\n\n\t\t\t// silently ignore degenerate uv triangles having coincident or colinear vertices\n\n\t\t\tif ( ! isFinite( r ) ) return;\n\n\t\t\tsdir.copy( vB ).multiplyScalar( uvC.y ).addScaledVector( vC, - uvB.y ).multiplyScalar( r );\n\t\t\ttdir.copy( vC ).multiplyScalar( uvB.x ).addScaledVector( vB, - uvC.x ).multiplyScalar( r );\n\n\t\t\ttan1[ a ].add( sdir );\n\t\t\ttan1[ b ].add( sdir );\n\t\t\ttan1[ c ].add( sdir );\n\n\t\t\ttan2[ a ].add( tdir );\n\t\t\ttan2[ b ].add( tdir );\n\t\t\ttan2[ c ].add( tdir );\n\n\t\t}\n\n\t\tlet groups = this.groups;\n\n\t\tif ( groups.length === 0 ) {\n\n\t\t\tgroups = [ {\n\t\t\t\tstart: 0,\n\t\t\t\tcount: indices.length\n\t\t\t} ];\n\n\t\t}\n\n\t\tfor ( let i = 0, il = groups.length; i < il; ++ i ) {\n\n\t\t\tconst group = groups[ i ];\n\n\t\t\tconst start = group.start;\n\t\t\tconst count = group.count;\n\n\t\t\tfor ( let j = start, jl = start + count; j < jl; j += 3 ) {\n\n\t\t\t\thandleTriangle(\n\t\t\t\t\tindices[ j + 0 ],\n\t\t\t\t\tindices[ j + 1 ],\n\t\t\t\t\tindices[ j + 2 ]\n\t\t\t\t);\n\n\t\t\t}\n\n\t\t}\n\n\t\tconst tmp = new Vector3(), tmp2 = new Vector3();\n\t\tconst n = new Vector3(), n2 = new Vector3();\n\n\t\tfunction handleVertex( v ) {\n\n\t\t\tn.fromArray( normals, v * 3 );\n\t\t\tn2.copy( n );\n\n\t\t\tconst t = tan1[ v ];\n\n\t\t\t// Gram-Schmidt orthogonalize\n\n\t\t\ttmp.copy( t );\n\t\t\ttmp.sub( n.multiplyScalar( n.dot( t ) ) ).normalize();\n\n\t\t\t// Calculate handedness\n\n\t\t\ttmp2.crossVectors( n2, t );\n\t\t\tconst test = tmp2.dot( tan2[ v ] );\n\t\t\tconst w = ( test < 0.0 ) ? - 1.0 : 1.0;\n\n\t\t\ttangents[ v * 4 ] = tmp.x;\n\t\t\ttangents[ v * 4 + 1 ] = tmp.y;\n\t\t\ttangents[ v * 4 + 2 ] = tmp.z;\n\t\t\ttangents[ v * 4 + 3 ] = w;\n\n\t\t}\n\n\t\tfor ( let i = 0, il = groups.length; i < il; ++ i ) {\n\n\t\t\tconst group = groups[ i ];\n\n\t\t\tconst start = group.start;\n\t\t\tconst count = group.count;\n\n\t\t\tfor ( let j = start, jl = start + count; j < jl; j += 3 ) {\n\n\t\t\t\thandleVertex( indices[ j + 0 ] );\n\t\t\t\thandleVertex( indices[ j + 1 ] );\n\t\t\t\thandleVertex( indices[ j + 2 ] );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tcomputeVertexNormals() {\n\n\t\tconst index = this.index;\n\t\tconst positionAttribute = this.getAttribute( 'position' );\n\n\t\tif ( positionAttribute !== undefined ) {\n\n\t\t\tlet normalAttribute = this.getAttribute( 'normal' );\n\n\t\t\tif ( normalAttribute === undefined ) {\n\n\t\t\t\tnormalAttribute = new BufferAttribute( new Float32Array( positionAttribute.count * 3 ), 3 );\n\t\t\t\tthis.setAttribute( 'normal', normalAttribute );\n\n\t\t\t} else {\n\n\t\t\t\t// reset existing normals to zero\n\n\t\t\t\tfor ( let i = 0, il = normalAttribute.count; i < il; i ++ ) {\n\n\t\t\t\t\tnormalAttribute.setXYZ( i, 0, 0, 0 );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tconst pA = new Vector3(), pB = new Vector3(), pC = new Vector3();\n\t\t\tconst nA = new Vector3(), nB = new Vector3(), nC = new Vector3();\n\t\t\tconst cb = new Vector3(), ab = new Vector3();\n\n\t\t\t// indexed elements\n\n\t\t\tif ( index ) {\n\n\t\t\t\tfor ( let i = 0, il = index.count; i < il; i += 3 ) {\n\n\t\t\t\t\tconst vA = index.getX( i + 0 );\n\t\t\t\t\tconst vB = index.getX( i + 1 );\n\t\t\t\t\tconst vC = index.getX( i + 2 );\n\n\t\t\t\t\tpA.fromBufferAttribute( positionAttribute, vA );\n\t\t\t\t\tpB.fromBufferAttribute( positionAttribute, vB );\n\t\t\t\t\tpC.fromBufferAttribute( positionAttribute, vC );\n\n\t\t\t\t\tcb.subVectors( pC, pB );\n\t\t\t\t\tab.subVectors( pA, pB );\n\t\t\t\t\tcb.cross( ab );\n\n\t\t\t\t\tnA.fromBufferAttribute( normalAttribute, vA );\n\t\t\t\t\tnB.fromBufferAttribute( normalAttribute, vB );\n\t\t\t\t\tnC.fromBufferAttribute( normalAttribute, vC );\n\n\t\t\t\t\tnA.add( cb );\n\t\t\t\t\tnB.add( cb );\n\t\t\t\t\tnC.add( cb );\n\n\t\t\t\t\tnormalAttribute.setXYZ( vA, nA.x, nA.y, nA.z );\n\t\t\t\t\tnormalAttribute.setXYZ( vB, nB.x, nB.y, nB.z );\n\t\t\t\t\tnormalAttribute.setXYZ( vC, nC.x, nC.y, nC.z );\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\t// non-indexed elements (unconnected triangle soup)\n\n\t\t\t\tfor ( let i = 0, il = positionAttribute.count; i < il; i += 3 ) {\n\n\t\t\t\t\tpA.fromBufferAttribute( positionAttribute, i + 0 );\n\t\t\t\t\tpB.fromBufferAttribute( positionAttribute, i + 1 );\n\t\t\t\t\tpC.fromBufferAttribute( positionAttribute, i + 2 );\n\n\t\t\t\t\tcb.subVectors( pC, pB );\n\t\t\t\t\tab.subVectors( pA, pB );\n\t\t\t\t\tcb.cross( ab );\n\n\t\t\t\t\tnormalAttribute.setXYZ( i + 0, cb.x, cb.y, cb.z );\n\t\t\t\t\tnormalAttribute.setXYZ( i + 1, cb.x, cb.y, cb.z );\n\t\t\t\t\tnormalAttribute.setXYZ( i + 2, cb.x, cb.y, cb.z );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tthis.normalizeNormals();\n\n\t\t\tnormalAttribute.needsUpdate = true;\n\n\t\t}\n\n\t}\n\n\tmerge( geometry, offset ) {\n\n\t\tif ( ! ( geometry && geometry.isBufferGeometry ) ) {\n\n\t\t\tconsole.error( 'THREE.BufferGeometry.merge(): geometry not an instance of THREE.BufferGeometry.', geometry );\n\t\t\treturn;\n\n\t\t}\n\n\t\tif ( offset === undefined ) {\n\n\t\t\toffset = 0;\n\n\t\t\tconsole.warn(\n\t\t\t\t'THREE.BufferGeometry.merge(): Overwriting original geometry, starting at offset=0. '\n\t\t\t\t+ 'Use BufferGeometryUtils.mergeBufferGeometries() for lossless merge.'\n\t\t\t);\n\n\t\t}\n\n\t\tconst attributes = this.attributes;\n\n\t\tfor ( const key in attributes ) {\n\n\t\t\tif ( geometry.attributes[ key ] === undefined ) continue;\n\n\t\t\tconst attribute1 = attributes[ key ];\n\t\t\tconst attributeArray1 = attribute1.array;\n\n\t\t\tconst attribute2 = geometry.attributes[ key ];\n\t\t\tconst attributeArray2 = attribute2.array;\n\n\t\t\tconst attributeOffset = attribute2.itemSize * offset;\n\t\t\tconst length = Math.min( attributeArray2.length, attributeArray1.length - attributeOffset );\n\n\t\t\tfor ( let i = 0, j = attributeOffset; i < length; i ++, j ++ ) {\n\n\t\t\t\tattributeArray1[ j ] = attributeArray2[ i ];\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tnormalizeNormals() {\n\n\t\tconst normals = this.attributes.normal;\n\n\t\tfor ( let i = 0, il = normals.count; i < il; i ++ ) {\n\n\t\t\t_vector$8.fromBufferAttribute( normals, i );\n\n\t\t\t_vector$8.normalize();\n\n\t\t\tnormals.setXYZ( i, _vector$8.x, _vector$8.y, _vector$8.z );\n\n\t\t}\n\n\t}\n\n\ttoNonIndexed() {\n\n\t\tfunction convertBufferAttribute( attribute, indices ) {\n\n\t\t\tconst array = attribute.array;\n\t\t\tconst itemSize = attribute.itemSize;\n\t\t\tconst normalized = attribute.normalized;\n\n\t\t\tconst array2 = new array.constructor( indices.length * itemSize );\n\n\t\t\tlet index = 0, index2 = 0;\n\n\t\t\tfor ( let i = 0, l = indices.length; i < l; i ++ ) {\n\n\t\t\t\tif ( attribute.isInterleavedBufferAttribute ) {\n\n\t\t\t\t\tindex = indices[ i ] * attribute.data.stride + attribute.offset;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tindex = indices[ i ] * itemSize;\n\n\t\t\t\t}\n\n\t\t\t\tfor ( let j = 0; j < itemSize; j ++ ) {\n\n\t\t\t\t\tarray2[ index2 ++ ] = array[ index ++ ];\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn new BufferAttribute( array2, itemSize, normalized );\n\n\t\t}\n\n\t\t//\n\n\t\tif ( this.index === null ) {\n\n\t\t\tconsole.warn( 'THREE.BufferGeometry.toNonIndexed(): BufferGeometry is already non-indexed.' );\n\t\t\treturn this;\n\n\t\t}\n\n\t\tconst geometry2 = new BufferGeometry();\n\n\t\tconst indices = this.index.array;\n\t\tconst attributes = this.attributes;\n\n\t\t// attributes\n\n\t\tfor ( const name in attributes ) {\n\n\t\t\tconst attribute = attributes[ name ];\n\n\t\t\tconst newAttribute = convertBufferAttribute( attribute, indices );\n\n\t\t\tgeometry2.setAttribute( name, newAttribute );\n\n\t\t}\n\n\t\t// morph attributes\n\n\t\tconst morphAttributes = this.morphAttributes;\n\n\t\tfor ( const name in morphAttributes ) {\n\n\t\t\tconst morphArray = [];\n\t\t\tconst morphAttribute = morphAttributes[ name ]; // morphAttribute: array of Float32BufferAttributes\n\n\t\t\tfor ( let i = 0, il = morphAttribute.length; i < il; i ++ ) {\n\n\t\t\t\tconst attribute = morphAttribute[ i ];\n\n\t\t\t\tconst newAttribute = convertBufferAttribute( attribute, indices );\n\n\t\t\t\tmorphArray.push( newAttribute );\n\n\t\t\t}\n\n\t\t\tgeometry2.morphAttributes[ name ] = morphArray;\n\n\t\t}\n\n\t\tgeometry2.morphTargetsRelative = this.morphTargetsRelative;\n\n\t\t// groups\n\n\t\tconst groups = this.groups;\n\n\t\tfor ( let i = 0, l = groups.length; i < l; i ++ ) {\n\n\t\t\tconst group = groups[ i ];\n\t\t\tgeometry2.addGroup( group.start, group.count, group.materialIndex );\n\n\t\t}\n\n\t\treturn geometry2;\n\n\t}\n\n\ttoJSON() {\n\n\t\tconst data = {\n\t\t\tmetadata: {\n\t\t\t\tversion: 4.5,\n\t\t\t\ttype: 'BufferGeometry',\n\t\t\t\tgenerator: 'BufferGeometry.toJSON'\n\t\t\t}\n\t\t};\n\n\t\t// standard BufferGeometry serialization\n\n\t\tdata.uuid = this.uuid;\n\t\tdata.type = this.type;\n\t\tif ( this.name !== '' ) data.name = this.name;\n\t\tif ( Object.keys( this.userData ).length > 0 ) data.userData = this.userData;\n\n\t\tif ( this.parameters !== undefined ) {\n\n\t\t\tconst parameters = this.parameters;\n\n\t\t\tfor ( const key in parameters ) {\n\n\t\t\t\tif ( parameters[ key ] !== undefined ) data[ key ] = parameters[ key ];\n\n\t\t\t}\n\n\t\t\treturn data;\n\n\t\t}\n\n\t\t// for simplicity the code assumes attributes are not shared across geometries, see #15811\n\n\t\tdata.data = { attributes: {} };\n\n\t\tconst index = this.index;\n\n\t\tif ( index !== null ) {\n\n\t\t\tdata.data.index = {\n\t\t\t\ttype: index.array.constructor.name,\n\t\t\t\tarray: Array.prototype.slice.call( index.array )\n\t\t\t};\n\n\t\t}\n\n\t\tconst attributes = this.attributes;\n\n\t\tfor ( const key in attributes ) {\n\n\t\t\tconst attribute = attributes[ key ];\n\n\t\t\tdata.data.attributes[ key ] = attribute.toJSON( data.data );\n\n\t\t}\n\n\t\tconst morphAttributes = {};\n\t\tlet hasMorphAttributes = false;\n\n\t\tfor ( const key in this.morphAttributes ) {\n\n\t\t\tconst attributeArray = this.morphAttributes[ key ];\n\n\t\t\tconst array = [];\n\n\t\t\tfor ( let i = 0, il = attributeArray.length; i < il; i ++ ) {\n\n\t\t\t\tconst attribute = attributeArray[ i ];\n\n\t\t\t\tarray.push( attribute.toJSON( data.data ) );\n\n\t\t\t}\n\n\t\t\tif ( array.length > 0 ) {\n\n\t\t\t\tmorphAttributes[ key ] = array;\n\n\t\t\t\thasMorphAttributes = true;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( hasMorphAttributes ) {\n\n\t\t\tdata.data.morphAttributes = morphAttributes;\n\t\t\tdata.data.morphTargetsRelative = this.morphTargetsRelative;\n\n\t\t}\n\n\t\tconst groups = this.groups;\n\n\t\tif ( groups.length > 0 ) {\n\n\t\t\tdata.data.groups = JSON.parse( JSON.stringify( groups ) );\n\n\t\t}\n\n\t\tconst boundingSphere = this.boundingSphere;\n\n\t\tif ( boundingSphere !== null ) {\n\n\t\t\tdata.data.boundingSphere = {\n\t\t\t\tcenter: boundingSphere.center.toArray(),\n\t\t\t\tradius: boundingSphere.radius\n\t\t\t};\n\n\t\t}\n\n\t\treturn data;\n\n\t}\n\n\tclone() {\n\n\t\t return new this.constructor().copy( this );\n\n\t}\n\n\tcopy( source ) {\n\n\t\t// reset\n\n\t\tthis.index = null;\n\t\tthis.attributes = {};\n\t\tthis.morphAttributes = {};\n\t\tthis.groups = [];\n\t\tthis.boundingBox = null;\n\t\tthis.boundingSphere = null;\n\n\t\t// used for storing cloned, shared data\n\n\t\tconst data = {};\n\n\t\t// name\n\n\t\tthis.name = source.name;\n\n\t\t// index\n\n\t\tconst index = source.index;\n\n\t\tif ( index !== null ) {\n\n\t\t\tthis.setIndex( index.clone( data ) );\n\n\t\t}\n\n\t\t// attributes\n\n\t\tconst attributes = source.attributes;\n\n\t\tfor ( const name in attributes ) {\n\n\t\t\tconst attribute = attributes[ name ];\n\t\t\tthis.setAttribute( name, attribute.clone( data ) );\n\n\t\t}\n\n\t\t// morph attributes\n\n\t\tconst morphAttributes = source.morphAttributes;\n\n\t\tfor ( const name in morphAttributes ) {\n\n\t\t\tconst array = [];\n\t\t\tconst morphAttribute = morphAttributes[ name ]; // morphAttribute: array of Float32BufferAttributes\n\n\t\t\tfor ( let i = 0, l = morphAttribute.length; i < l; i ++ ) {\n\n\t\t\t\tarray.push( morphAttribute[ i ].clone( data ) );\n\n\t\t\t}\n\n\t\t\tthis.morphAttributes[ name ] = array;\n\n\t\t}\n\n\t\tthis.morphTargetsRelative = source.morphTargetsRelative;\n\n\t\t// groups\n\n\t\tconst groups = source.groups;\n\n\t\tfor ( let i = 0, l = groups.length; i < l; i ++ ) {\n\n\t\t\tconst group = groups[ i ];\n\t\t\tthis.addGroup( group.start, group.count, group.materialIndex );\n\n\t\t}\n\n\t\t// bounding box\n\n\t\tconst boundingBox = source.boundingBox;\n\n\t\tif ( boundingBox !== null ) {\n\n\t\t\tthis.boundingBox = boundingBox.clone();\n\n\t\t}\n\n\t\t// bounding sphere\n\n\t\tconst boundingSphere = source.boundingSphere;\n\n\t\tif ( boundingSphere !== null ) {\n\n\t\t\tthis.boundingSphere = boundingSphere.clone();\n\n\t\t}\n\n\t\t// draw range\n\n\t\tthis.drawRange.start = source.drawRange.start;\n\t\tthis.drawRange.count = source.drawRange.count;\n\n\t\t// user data\n\n\t\tthis.userData = source.userData;\n\n\t\t// geometry generator parameters\n\n\t\tif ( source.parameters !== undefined ) this.parameters = Object.assign( {}, source.parameters );\n\n\t\treturn this;\n\n\t}\n\n\tdispose() {\n\n\t\tthis.dispatchEvent( { type: 'dispose' } );\n\n\t}\n\n}\n\nconst _inverseMatrix$2 = /*@__PURE__*/ new Matrix4();\nconst _ray$2 = /*@__PURE__*/ new Ray();\nconst _sphere$3 = /*@__PURE__*/ new Sphere();\n\nconst _vA$1 = /*@__PURE__*/ new Vector3();\nconst _vB$1 = /*@__PURE__*/ new Vector3();\nconst _vC$1 = /*@__PURE__*/ new Vector3();\n\nconst _tempA = /*@__PURE__*/ new Vector3();\nconst _tempB = /*@__PURE__*/ new Vector3();\nconst _tempC = /*@__PURE__*/ new Vector3();\n\nconst _morphA = /*@__PURE__*/ new Vector3();\nconst _morphB = /*@__PURE__*/ new Vector3();\nconst _morphC = /*@__PURE__*/ new Vector3();\n\nconst _uvA$1 = /*@__PURE__*/ new Vector2();\nconst _uvB$1 = /*@__PURE__*/ new Vector2();\nconst _uvC$1 = /*@__PURE__*/ new Vector2();\n\nconst _intersectionPoint = /*@__PURE__*/ new Vector3();\nconst _intersectionPointWorld = /*@__PURE__*/ new Vector3();\n\nclass Mesh extends Object3D {\n\n\tconstructor( geometry = new BufferGeometry(), material = new MeshBasicMaterial() ) {\n\n\t\tsuper();\n\n\t\tthis.isMesh = true;\n\n\t\tthis.type = 'Mesh';\n\n\t\tthis.geometry = geometry;\n\t\tthis.material = material;\n\n\t\tthis.updateMorphTargets();\n\n\t}\n\n\tcopy( source, recursive ) {\n\n\t\tsuper.copy( source, recursive );\n\n\t\tif ( source.morphTargetInfluences !== undefined ) {\n\n\t\t\tthis.morphTargetInfluences = source.morphTargetInfluences.slice();\n\n\t\t}\n\n\t\tif ( source.morphTargetDictionary !== undefined ) {\n\n\t\t\tthis.morphTargetDictionary = Object.assign( {}, source.morphTargetDictionary );\n\n\t\t}\n\n\t\tthis.material = source.material;\n\t\tthis.geometry = source.geometry;\n\n\t\treturn this;\n\n\t}\n\n\tupdateMorphTargets() {\n\n\t\tconst geometry = this.geometry;\n\n\t\tconst morphAttributes = geometry.morphAttributes;\n\t\tconst keys = Object.keys( morphAttributes );\n\n\t\tif ( keys.length > 0 ) {\n\n\t\t\tconst morphAttribute = morphAttributes[ keys[ 0 ] ];\n\n\t\t\tif ( morphAttribute !== undefined ) {\n\n\t\t\t\tthis.morphTargetInfluences = [];\n\t\t\t\tthis.morphTargetDictionary = {};\n\n\t\t\t\tfor ( let m = 0, ml = morphAttribute.length; m < ml; m ++ ) {\n\n\t\t\t\t\tconst name = morphAttribute[ m ].name || String( m );\n\n\t\t\t\t\tthis.morphTargetInfluences.push( 0 );\n\t\t\t\t\tthis.morphTargetDictionary[ name ] = m;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\traycast( raycaster, intersects ) {\n\n\t\tconst geometry = this.geometry;\n\t\tconst material = this.material;\n\t\tconst matrixWorld = this.matrixWorld;\n\n\t\tif ( material === undefined ) return;\n\n\t\t// Checking boundingSphere distance to ray\n\n\t\tif ( geometry.boundingSphere === null ) geometry.computeBoundingSphere();\n\n\t\t_sphere$3.copy( geometry.boundingSphere );\n\t\t_sphere$3.applyMatrix4( matrixWorld );\n\n\t\tif ( raycaster.ray.intersectsSphere( _sphere$3 ) === false ) return;\n\n\t\t//\n\n\t\t_inverseMatrix$2.copy( matrixWorld ).invert();\n\t\t_ray$2.copy( raycaster.ray ).applyMatrix4( _inverseMatrix$2 );\n\n\t\t// Check boundingBox before continuing\n\n\t\tif ( geometry.boundingBox !== null ) {\n\n\t\t\tif ( _ray$2.intersectsBox( geometry.boundingBox ) === false ) return;\n\n\t\t}\n\n\t\tlet intersection;\n\n\t\tconst index = geometry.index;\n\t\tconst position = geometry.attributes.position;\n\t\tconst morphPosition = geometry.morphAttributes.position;\n\t\tconst morphTargetsRelative = geometry.morphTargetsRelative;\n\t\tconst uv = geometry.attributes.uv;\n\t\tconst uv2 = geometry.attributes.uv2;\n\t\tconst groups = geometry.groups;\n\t\tconst drawRange = geometry.drawRange;\n\n\t\tif ( index !== null ) {\n\n\t\t\t// indexed buffer geometry\n\n\t\t\tif ( Array.isArray( material ) ) {\n\n\t\t\t\tfor ( let i = 0, il = groups.length; i < il; i ++ ) {\n\n\t\t\t\t\tconst group = groups[ i ];\n\t\t\t\t\tconst groupMaterial = material[ group.materialIndex ];\n\n\t\t\t\t\tconst start = Math.max( group.start, drawRange.start );\n\t\t\t\t\tconst end = Math.min( index.count, Math.min( ( group.start + group.count ), ( drawRange.start + drawRange.count ) ) );\n\n\t\t\t\t\tfor ( let j = start, jl = end; j < jl; j += 3 ) {\n\n\t\t\t\t\t\tconst a = index.getX( j );\n\t\t\t\t\t\tconst b = index.getX( j + 1 );\n\t\t\t\t\t\tconst c = index.getX( j + 2 );\n\n\t\t\t\t\t\tintersection = checkBufferGeometryIntersection( this, groupMaterial, raycaster, _ray$2, position, morphPosition, morphTargetsRelative, uv, uv2, a, b, c );\n\n\t\t\t\t\t\tif ( intersection ) {\n\n\t\t\t\t\t\t\tintersection.faceIndex = Math.floor( j / 3 ); // triangle number in indexed buffer semantics\n\t\t\t\t\t\t\tintersection.face.materialIndex = group.materialIndex;\n\t\t\t\t\t\t\tintersects.push( intersection );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\tconst start = Math.max( 0, drawRange.start );\n\t\t\t\tconst end = Math.min( index.count, ( drawRange.start + drawRange.count ) );\n\n\t\t\t\tfor ( let i = start, il = end; i < il; i += 3 ) {\n\n\t\t\t\t\tconst a = index.getX( i );\n\t\t\t\t\tconst b = index.getX( i + 1 );\n\t\t\t\t\tconst c = index.getX( i + 2 );\n\n\t\t\t\t\tintersection = checkBufferGeometryIntersection( this, material, raycaster, _ray$2, position, morphPosition, morphTargetsRelative, uv, uv2, a, b, c );\n\n\t\t\t\t\tif ( intersection ) {\n\n\t\t\t\t\t\tintersection.faceIndex = Math.floor( i / 3 ); // triangle number in indexed buffer semantics\n\t\t\t\t\t\tintersects.push( intersection );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t} else if ( position !== undefined ) {\n\n\t\t\t// non-indexed buffer geometry\n\n\t\t\tif ( Array.isArray( material ) ) {\n\n\t\t\t\tfor ( let i = 0, il = groups.length; i < il; i ++ ) {\n\n\t\t\t\t\tconst group = groups[ i ];\n\t\t\t\t\tconst groupMaterial = material[ group.materialIndex ];\n\n\t\t\t\t\tconst start = Math.max( group.start, drawRange.start );\n\t\t\t\t\tconst end = Math.min( position.count, Math.min( ( group.start + group.count ), ( drawRange.start + drawRange.count ) ) );\n\n\t\t\t\t\tfor ( let j = start, jl = end; j < jl; j += 3 ) {\n\n\t\t\t\t\t\tconst a = j;\n\t\t\t\t\t\tconst b = j + 1;\n\t\t\t\t\t\tconst c = j + 2;\n\n\t\t\t\t\t\tintersection = checkBufferGeometryIntersection( this, groupMaterial, raycaster, _ray$2, position, morphPosition, morphTargetsRelative, uv, uv2, a, b, c );\n\n\t\t\t\t\t\tif ( intersection ) {\n\n\t\t\t\t\t\t\tintersection.faceIndex = Math.floor( j / 3 ); // triangle number in non-indexed buffer semantics\n\t\t\t\t\t\t\tintersection.face.materialIndex = group.materialIndex;\n\t\t\t\t\t\t\tintersects.push( intersection );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\tconst start = Math.max( 0, drawRange.start );\n\t\t\t\tconst end = Math.min( position.count, ( drawRange.start + drawRange.count ) );\n\n\t\t\t\tfor ( let i = start, il = end; i < il; i += 3 ) {\n\n\t\t\t\t\tconst a = i;\n\t\t\t\t\tconst b = i + 1;\n\t\t\t\t\tconst c = i + 2;\n\n\t\t\t\t\tintersection = checkBufferGeometryIntersection( this, material, raycaster, _ray$2, position, morphPosition, morphTargetsRelative, uv, uv2, a, b, c );\n\n\t\t\t\t\tif ( intersection ) {\n\n\t\t\t\t\t\tintersection.faceIndex = Math.floor( i / 3 ); // triangle number in non-indexed buffer semantics\n\t\t\t\t\t\tintersects.push( intersection );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n}\n\nfunction checkIntersection( object, material, raycaster, ray, pA, pB, pC, point ) {\n\n\tlet intersect;\n\n\tif ( material.side === BackSide ) {\n\n\t\tintersect = ray.intersectTriangle( pC, pB, pA, true, point );\n\n\t} else {\n\n\t\tintersect = ray.intersectTriangle( pA, pB, pC, material.side !== DoubleSide, point );\n\n\t}\n\n\tif ( intersect === null ) return null;\n\n\t_intersectionPointWorld.copy( point );\n\t_intersectionPointWorld.applyMatrix4( object.matrixWorld );\n\n\tconst distance = raycaster.ray.origin.distanceTo( _intersectionPointWorld );\n\n\tif ( distance < raycaster.near || distance > raycaster.far ) return null;\n\n\treturn {\n\t\tdistance: distance,\n\t\tpoint: _intersectionPointWorld.clone(),\n\t\tobject: object\n\t};\n\n}\n\nfunction checkBufferGeometryIntersection( object, material, raycaster, ray, position, morphPosition, morphTargetsRelative, uv, uv2, a, b, c ) {\n\n\t_vA$1.fromBufferAttribute( position, a );\n\t_vB$1.fromBufferAttribute( position, b );\n\t_vC$1.fromBufferAttribute( position, c );\n\n\tconst morphInfluences = object.morphTargetInfluences;\n\n\tif ( morphPosition && morphInfluences ) {\n\n\t\t_morphA.set( 0, 0, 0 );\n\t\t_morphB.set( 0, 0, 0 );\n\t\t_morphC.set( 0, 0, 0 );\n\n\t\tfor ( let i = 0, il = morphPosition.length; i < il; i ++ ) {\n\n\t\t\tconst influence = morphInfluences[ i ];\n\t\t\tconst morphAttribute = morphPosition[ i ];\n\n\t\t\tif ( influence === 0 ) continue;\n\n\t\t\t_tempA.fromBufferAttribute( morphAttribute, a );\n\t\t\t_tempB.fromBufferAttribute( morphAttribute, b );\n\t\t\t_tempC.fromBufferAttribute( morphAttribute, c );\n\n\t\t\tif ( morphTargetsRelative ) {\n\n\t\t\t\t_morphA.addScaledVector( _tempA, influence );\n\t\t\t\t_morphB.addScaledVector( _tempB, influence );\n\t\t\t\t_morphC.addScaledVector( _tempC, influence );\n\n\t\t\t} else {\n\n\t\t\t\t_morphA.addScaledVector( _tempA.sub( _vA$1 ), influence );\n\t\t\t\t_morphB.addScaledVector( _tempB.sub( _vB$1 ), influence );\n\t\t\t\t_morphC.addScaledVector( _tempC.sub( _vC$1 ), influence );\n\n\t\t\t}\n\n\t\t}\n\n\t\t_vA$1.add( _morphA );\n\t\t_vB$1.add( _morphB );\n\t\t_vC$1.add( _morphC );\n\n\t}\n\n\tif ( object.isSkinnedMesh ) {\n\n\t\tobject.boneTransform( a, _vA$1 );\n\t\tobject.boneTransform( b, _vB$1 );\n\t\tobject.boneTransform( c, _vC$1 );\n\n\t}\n\n\tconst intersection = checkIntersection( object, material, raycaster, ray, _vA$1, _vB$1, _vC$1, _intersectionPoint );\n\n\tif ( intersection ) {\n\n\t\tif ( uv ) {\n\n\t\t\t_uvA$1.fromBufferAttribute( uv, a );\n\t\t\t_uvB$1.fromBufferAttribute( uv, b );\n\t\t\t_uvC$1.fromBufferAttribute( uv, c );\n\n\t\t\tintersection.uv = Triangle.getUV( _intersectionPoint, _vA$1, _vB$1, _vC$1, _uvA$1, _uvB$1, _uvC$1, new Vector2() );\n\n\t\t}\n\n\t\tif ( uv2 ) {\n\n\t\t\t_uvA$1.fromBufferAttribute( uv2, a );\n\t\t\t_uvB$1.fromBufferAttribute( uv2, b );\n\t\t\t_uvC$1.fromBufferAttribute( uv2, c );\n\n\t\t\tintersection.uv2 = Triangle.getUV( _intersectionPoint, _vA$1, _vB$1, _vC$1, _uvA$1, _uvB$1, _uvC$1, new Vector2() );\n\n\t\t}\n\n\t\tconst face = {\n\t\t\ta: a,\n\t\t\tb: b,\n\t\t\tc: c,\n\t\t\tnormal: new Vector3(),\n\t\t\tmaterialIndex: 0\n\t\t};\n\n\t\tTriangle.getNormal( _vA$1, _vB$1, _vC$1, face.normal );\n\n\t\tintersection.face = face;\n\n\t}\n\n\treturn intersection;\n\n}\n\nclass BoxGeometry extends BufferGeometry {\n\n\tconstructor( width = 1, height = 1, depth = 1, widthSegments = 1, heightSegments = 1, depthSegments = 1 ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'BoxGeometry';\n\n\t\tthis.parameters = {\n\t\t\twidth: width,\n\t\t\theight: height,\n\t\t\tdepth: depth,\n\t\t\twidthSegments: widthSegments,\n\t\t\theightSegments: heightSegments,\n\t\t\tdepthSegments: depthSegments\n\t\t};\n\n\t\tconst scope = this;\n\n\t\t// segments\n\n\t\twidthSegments = Math.floor( widthSegments );\n\t\theightSegments = Math.floor( heightSegments );\n\t\tdepthSegments = Math.floor( depthSegments );\n\n\t\t// buffers\n\n\t\tconst indices = [];\n\t\tconst vertices = [];\n\t\tconst normals = [];\n\t\tconst uvs = [];\n\n\t\t// helper variables\n\n\t\tlet numberOfVertices = 0;\n\t\tlet groupStart = 0;\n\n\t\t// build each side of the box geometry\n\n\t\tbuildPlane( 'z', 'y', 'x', - 1, - 1, depth, height, width, depthSegments, heightSegments, 0 ); // px\n\t\tbuildPlane( 'z', 'y', 'x', 1, - 1, depth, height, - width, depthSegments, heightSegments, 1 ); // nx\n\t\tbuildPlane( 'x', 'z', 'y', 1, 1, width, depth, height, widthSegments, depthSegments, 2 ); // py\n\t\tbuildPlane( 'x', 'z', 'y', 1, - 1, width, depth, - height, widthSegments, depthSegments, 3 ); // ny\n\t\tbuildPlane( 'x', 'y', 'z', 1, - 1, width, height, depth, widthSegments, heightSegments, 4 ); // pz\n\t\tbuildPlane( 'x', 'y', 'z', - 1, - 1, width, height, - depth, widthSegments, heightSegments, 5 ); // nz\n\n\t\t// build geometry\n\n\t\tthis.setIndex( indices );\n\t\tthis.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\t\tthis.setAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) );\n\t\tthis.setAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) );\n\n\t\tfunction buildPlane( u, v, w, udir, vdir, width, height, depth, gridX, gridY, materialIndex ) {\n\n\t\t\tconst segmentWidth = width / gridX;\n\t\t\tconst segmentHeight = height / gridY;\n\n\t\t\tconst widthHalf = width / 2;\n\t\t\tconst heightHalf = height / 2;\n\t\t\tconst depthHalf = depth / 2;\n\n\t\t\tconst gridX1 = gridX + 1;\n\t\t\tconst gridY1 = gridY + 1;\n\n\t\t\tlet vertexCounter = 0;\n\t\t\tlet groupCount = 0;\n\n\t\t\tconst vector = new Vector3();\n\n\t\t\t// generate vertices, normals and uvs\n\n\t\t\tfor ( let iy = 0; iy < gridY1; iy ++ ) {\n\n\t\t\t\tconst y = iy * segmentHeight - heightHalf;\n\n\t\t\t\tfor ( let ix = 0; ix < gridX1; ix ++ ) {\n\n\t\t\t\t\tconst x = ix * segmentWidth - widthHalf;\n\n\t\t\t\t\t// set values to correct vector component\n\n\t\t\t\t\tvector[ u ] = x * udir;\n\t\t\t\t\tvector[ v ] = y * vdir;\n\t\t\t\t\tvector[ w ] = depthHalf;\n\n\t\t\t\t\t// now apply vector to vertex buffer\n\n\t\t\t\t\tvertices.push( vector.x, vector.y, vector.z );\n\n\t\t\t\t\t// set values to correct vector component\n\n\t\t\t\t\tvector[ u ] = 0;\n\t\t\t\t\tvector[ v ] = 0;\n\t\t\t\t\tvector[ w ] = depth > 0 ? 1 : - 1;\n\n\t\t\t\t\t// now apply vector to normal buffer\n\n\t\t\t\t\tnormals.push( vector.x, vector.y, vector.z );\n\n\t\t\t\t\t// uvs\n\n\t\t\t\t\tuvs.push( ix / gridX );\n\t\t\t\t\tuvs.push( 1 - ( iy / gridY ) );\n\n\t\t\t\t\t// counters\n\n\t\t\t\t\tvertexCounter += 1;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// indices\n\n\t\t\t// 1. you need three indices to draw a single face\n\t\t\t// 2. a single segment consists of two faces\n\t\t\t// 3. so we need to generate six (2*3) indices per segment\n\n\t\t\tfor ( let iy = 0; iy < gridY; iy ++ ) {\n\n\t\t\t\tfor ( let ix = 0; ix < gridX; ix ++ ) {\n\n\t\t\t\t\tconst a = numberOfVertices + ix + gridX1 * iy;\n\t\t\t\t\tconst b = numberOfVertices + ix + gridX1 * ( iy + 1 );\n\t\t\t\t\tconst c = numberOfVertices + ( ix + 1 ) + gridX1 * ( iy + 1 );\n\t\t\t\t\tconst d = numberOfVertices + ( ix + 1 ) + gridX1 * iy;\n\n\t\t\t\t\t// faces\n\n\t\t\t\t\tindices.push( a, b, d );\n\t\t\t\t\tindices.push( b, c, d );\n\n\t\t\t\t\t// increase counter\n\n\t\t\t\t\tgroupCount += 6;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// add a group to the geometry. this will ensure multi material support\n\n\t\t\tscope.addGroup( groupStart, groupCount, materialIndex );\n\n\t\t\t// calculate new start value for groups\n\n\t\t\tgroupStart += groupCount;\n\n\t\t\t// update total number of vertices\n\n\t\t\tnumberOfVertices += vertexCounter;\n\n\t\t}\n\n\t}\n\n\tstatic fromJSON( data ) {\n\n\t\treturn new BoxGeometry( data.width, data.height, data.depth, data.widthSegments, data.heightSegments, data.depthSegments );\n\n\t}\n\n}\n\n/**\n * Uniform Utilities\n */\n\nfunction cloneUniforms( src ) {\n\n\tconst dst = {};\n\n\tfor ( const u in src ) {\n\n\t\tdst[ u ] = {};\n\n\t\tfor ( const p in src[ u ] ) {\n\n\t\t\tconst property = src[ u ][ p ];\n\n\t\t\tif ( property && ( property.isColor ||\n\t\t\t\tproperty.isMatrix3 || property.isMatrix4 ||\n\t\t\t\tproperty.isVector2 || property.isVector3 || property.isVector4 ||\n\t\t\t\tproperty.isTexture || property.isQuaternion ) ) {\n\n\t\t\t\tdst[ u ][ p ] = property.clone();\n\n\t\t\t} else if ( Array.isArray( property ) ) {\n\n\t\t\t\tdst[ u ][ p ] = property.slice();\n\n\t\t\t} else {\n\n\t\t\t\tdst[ u ][ p ] = property;\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\treturn dst;\n\n}\n\nfunction mergeUniforms( uniforms ) {\n\n\tconst merged = {};\n\n\tfor ( let u = 0; u < uniforms.length; u ++ ) {\n\n\t\tconst tmp = cloneUniforms( uniforms[ u ] );\n\n\t\tfor ( const p in tmp ) {\n\n\t\t\tmerged[ p ] = tmp[ p ];\n\n\t\t}\n\n\t}\n\n\treturn merged;\n\n}\n\n// Legacy\n\nconst UniformsUtils = { clone: cloneUniforms, merge: mergeUniforms };\n\nvar default_vertex = \"void main() {\\n\\tgl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\\n}\";\n\nvar default_fragment = \"void main() {\\n\\tgl_FragColor = vec4( 1.0, 0.0, 0.0, 1.0 );\\n}\";\n\nclass ShaderMaterial extends Material {\n\n\tconstructor( parameters ) {\n\n\t\tsuper();\n\n\t\tthis.isShaderMaterial = true;\n\n\t\tthis.type = 'ShaderMaterial';\n\n\t\tthis.defines = {};\n\t\tthis.uniforms = {};\n\n\t\tthis.vertexShader = default_vertex;\n\t\tthis.fragmentShader = default_fragment;\n\n\t\tthis.linewidth = 1;\n\n\t\tthis.wireframe = false;\n\t\tthis.wireframeLinewidth = 1;\n\n\t\tthis.fog = false; // set to use scene fog\n\t\tthis.lights = false; // set to use scene lights\n\t\tthis.clipping = false; // set to use user-defined clipping planes\n\n\t\tthis.extensions = {\n\t\t\tderivatives: false, // set to use derivatives\n\t\t\tfragDepth: false, // set to use fragment depth values\n\t\t\tdrawBuffers: false, // set to use draw buffers\n\t\t\tshaderTextureLOD: false // set to use shader texture LOD\n\t\t};\n\n\t\t// When rendered geometry doesn't include these attributes but the material does,\n\t\t// use these default values in WebGL. This avoids errors when buffer data is missing.\n\t\tthis.defaultAttributeValues = {\n\t\t\t'color': [ 1, 1, 1 ],\n\t\t\t'uv': [ 0, 0 ],\n\t\t\t'uv2': [ 0, 0 ]\n\t\t};\n\n\t\tthis.index0AttributeName = undefined;\n\t\tthis.uniformsNeedUpdate = false;\n\n\t\tthis.glslVersion = null;\n\n\t\tif ( parameters !== undefined ) {\n\n\t\t\tif ( parameters.attributes !== undefined ) {\n\n\t\t\t\tconsole.error( 'THREE.ShaderMaterial: attributes should now be defined in THREE.BufferGeometry instead.' );\n\n\t\t\t}\n\n\t\t\tthis.setValues( parameters );\n\n\t\t}\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.fragmentShader = source.fragmentShader;\n\t\tthis.vertexShader = source.vertexShader;\n\n\t\tthis.uniforms = cloneUniforms( source.uniforms );\n\n\t\tthis.defines = Object.assign( {}, source.defines );\n\n\t\tthis.wireframe = source.wireframe;\n\t\tthis.wireframeLinewidth = source.wireframeLinewidth;\n\n\t\tthis.fog = source.fog;\n\t\tthis.lights = source.lights;\n\t\tthis.clipping = source.clipping;\n\n\t\tthis.extensions = Object.assign( {}, source.extensions );\n\n\t\tthis.glslVersion = source.glslVersion;\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON( meta ) {\n\n\t\tconst data = super.toJSON( meta );\n\n\t\tdata.glslVersion = this.glslVersion;\n\t\tdata.uniforms = {};\n\n\t\tfor ( const name in this.uniforms ) {\n\n\t\t\tconst uniform = this.uniforms[ name ];\n\t\t\tconst value = uniform.value;\n\n\t\t\tif ( value && value.isTexture ) {\n\n\t\t\t\tdata.uniforms[ name ] = {\n\t\t\t\t\ttype: 't',\n\t\t\t\t\tvalue: value.toJSON( meta ).uuid\n\t\t\t\t};\n\n\t\t\t} else if ( value && value.isColor ) {\n\n\t\t\t\tdata.uniforms[ name ] = {\n\t\t\t\t\ttype: 'c',\n\t\t\t\t\tvalue: value.getHex()\n\t\t\t\t};\n\n\t\t\t} else if ( value && value.isVector2 ) {\n\n\t\t\t\tdata.uniforms[ name ] = {\n\t\t\t\t\ttype: 'v2',\n\t\t\t\t\tvalue: value.toArray()\n\t\t\t\t};\n\n\t\t\t} else if ( value && value.isVector3 ) {\n\n\t\t\t\tdata.uniforms[ name ] = {\n\t\t\t\t\ttype: 'v3',\n\t\t\t\t\tvalue: value.toArray()\n\t\t\t\t};\n\n\t\t\t} else if ( value && value.isVector4 ) {\n\n\t\t\t\tdata.uniforms[ name ] = {\n\t\t\t\t\ttype: 'v4',\n\t\t\t\t\tvalue: value.toArray()\n\t\t\t\t};\n\n\t\t\t} else if ( value && value.isMatrix3 ) {\n\n\t\t\t\tdata.uniforms[ name ] = {\n\t\t\t\t\ttype: 'm3',\n\t\t\t\t\tvalue: value.toArray()\n\t\t\t\t};\n\n\t\t\t} else if ( value && value.isMatrix4 ) {\n\n\t\t\t\tdata.uniforms[ name ] = {\n\t\t\t\t\ttype: 'm4',\n\t\t\t\t\tvalue: value.toArray()\n\t\t\t\t};\n\n\t\t\t} else {\n\n\t\t\t\tdata.uniforms[ name ] = {\n\t\t\t\t\tvalue: value\n\t\t\t\t};\n\n\t\t\t\t// note: the array variants v2v, v3v, v4v, m4v and tv are not supported so far\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( Object.keys( this.defines ).length > 0 ) data.defines = this.defines;\n\n\t\tdata.vertexShader = this.vertexShader;\n\t\tdata.fragmentShader = this.fragmentShader;\n\n\t\tconst extensions = {};\n\n\t\tfor ( const key in this.extensions ) {\n\n\t\t\tif ( this.extensions[ key ] === true ) extensions[ key ] = true;\n\n\t\t}\n\n\t\tif ( Object.keys( extensions ).length > 0 ) data.extensions = extensions;\n\n\t\treturn data;\n\n\t}\n\n}\n\nclass Camera extends Object3D {\n\n\tconstructor() {\n\n\t\tsuper();\n\n\t\tthis.isCamera = true;\n\n\t\tthis.type = 'Camera';\n\n\t\tthis.matrixWorldInverse = new Matrix4();\n\n\t\tthis.projectionMatrix = new Matrix4();\n\t\tthis.projectionMatrixInverse = new Matrix4();\n\n\t}\n\n\tcopy( source, recursive ) {\n\n\t\tsuper.copy( source, recursive );\n\n\t\tthis.matrixWorldInverse.copy( source.matrixWorldInverse );\n\n\t\tthis.projectionMatrix.copy( source.projectionMatrix );\n\t\tthis.projectionMatrixInverse.copy( source.projectionMatrixInverse );\n\n\t\treturn this;\n\n\t}\n\n\tgetWorldDirection( target ) {\n\n\t\tthis.updateWorldMatrix( true, false );\n\n\t\tconst e = this.matrixWorld.elements;\n\n\t\treturn target.set( - e[ 8 ], - e[ 9 ], - e[ 10 ] ).normalize();\n\n\t}\n\n\tupdateMatrixWorld( force ) {\n\n\t\tsuper.updateMatrixWorld( force );\n\n\t\tthis.matrixWorldInverse.copy( this.matrixWorld ).invert();\n\n\t}\n\n\tupdateWorldMatrix( updateParents, updateChildren ) {\n\n\t\tsuper.updateWorldMatrix( updateParents, updateChildren );\n\n\t\tthis.matrixWorldInverse.copy( this.matrixWorld ).invert();\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n}\n\nclass PerspectiveCamera extends Camera {\n\n\tconstructor( fov = 50, aspect = 1, near = 0.1, far = 2000 ) {\n\n\t\tsuper();\n\n\t\tthis.isPerspectiveCamera = true;\n\n\t\tthis.type = 'PerspectiveCamera';\n\n\t\tthis.fov = fov;\n\t\tthis.zoom = 1;\n\n\t\tthis.near = near;\n\t\tthis.far = far;\n\t\tthis.focus = 10;\n\n\t\tthis.aspect = aspect;\n\t\tthis.view = null;\n\n\t\tthis.filmGauge = 35;\t// width of the film (default in millimeters)\n\t\tthis.filmOffset = 0;\t// horizontal film offset (same unit as gauge)\n\n\t\tthis.updateProjectionMatrix();\n\n\t}\n\n\tcopy( source, recursive ) {\n\n\t\tsuper.copy( source, recursive );\n\n\t\tthis.fov = source.fov;\n\t\tthis.zoom = source.zoom;\n\n\t\tthis.near = source.near;\n\t\tthis.far = source.far;\n\t\tthis.focus = source.focus;\n\n\t\tthis.aspect = source.aspect;\n\t\tthis.view = source.view === null ? null : Object.assign( {}, source.view );\n\n\t\tthis.filmGauge = source.filmGauge;\n\t\tthis.filmOffset = source.filmOffset;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Sets the FOV by focal length in respect to the current .filmGauge.\n\t *\n\t * The default film gauge is 35, so that the focal length can be specified for\n\t * a 35mm (full frame) camera.\n\t *\n\t * Values for focal length and film gauge must have the same unit.\n\t */\n\tsetFocalLength( focalLength ) {\n\n\t\t/** see {@link http://www.bobatkins.com/photography/technical/field_of_view.html} */\n\t\tconst vExtentSlope = 0.5 * this.getFilmHeight() / focalLength;\n\n\t\tthis.fov = RAD2DEG * 2 * Math.atan( vExtentSlope );\n\t\tthis.updateProjectionMatrix();\n\n\t}\n\n\t/**\n\t * Calculates the focal length from the current .fov and .filmGauge.\n\t */\n\tgetFocalLength() {\n\n\t\tconst vExtentSlope = Math.tan( DEG2RAD * 0.5 * this.fov );\n\n\t\treturn 0.5 * this.getFilmHeight() / vExtentSlope;\n\n\t}\n\n\tgetEffectiveFOV() {\n\n\t\treturn RAD2DEG * 2 * Math.atan(\n\t\t\tMath.tan( DEG2RAD * 0.5 * this.fov ) / this.zoom );\n\n\t}\n\n\tgetFilmWidth() {\n\n\t\t// film not completely covered in portrait format (aspect < 1)\n\t\treturn this.filmGauge * Math.min( this.aspect, 1 );\n\n\t}\n\n\tgetFilmHeight() {\n\n\t\t// film not completely covered in landscape format (aspect > 1)\n\t\treturn this.filmGauge / Math.max( this.aspect, 1 );\n\n\t}\n\n\t/**\n\t * Sets an offset in a larger frustum. This is useful for multi-window or\n\t * multi-monitor/multi-machine setups.\n\t *\n\t * For example, if you have 3x2 monitors and each monitor is 1920x1080 and\n\t * the monitors are in grid like this\n\t *\n\t * +---+---+---+\n\t * | A | B | C |\n\t * +---+---+---+\n\t * | D | E | F |\n\t * +---+---+---+\n\t *\n\t * then for each monitor you would call it like this\n\t *\n\t * const w = 1920;\n\t * const h = 1080;\n\t * const fullWidth = w * 3;\n\t * const fullHeight = h * 2;\n\t *\n\t * --A--\n\t * camera.setViewOffset( fullWidth, fullHeight, w * 0, h * 0, w, h );\n\t * --B--\n\t * camera.setViewOffset( fullWidth, fullHeight, w * 1, h * 0, w, h );\n\t * --C--\n\t * camera.setViewOffset( fullWidth, fullHeight, w * 2, h * 0, w, h );\n\t * --D--\n\t * camera.setViewOffset( fullWidth, fullHeight, w * 0, h * 1, w, h );\n\t * --E--\n\t * camera.setViewOffset( fullWidth, fullHeight, w * 1, h * 1, w, h );\n\t * --F--\n\t * camera.setViewOffset( fullWidth, fullHeight, w * 2, h * 1, w, h );\n\t *\n\t * Note there is no reason monitors have to be the same size or in a grid.\n\t */\n\tsetViewOffset( fullWidth, fullHeight, x, y, width, height ) {\n\n\t\tthis.aspect = fullWidth / fullHeight;\n\n\t\tif ( this.view === null ) {\n\n\t\t\tthis.view = {\n\t\t\t\tenabled: true,\n\t\t\t\tfullWidth: 1,\n\t\t\t\tfullHeight: 1,\n\t\t\t\toffsetX: 0,\n\t\t\t\toffsetY: 0,\n\t\t\t\twidth: 1,\n\t\t\t\theight: 1\n\t\t\t};\n\n\t\t}\n\n\t\tthis.view.enabled = true;\n\t\tthis.view.fullWidth = fullWidth;\n\t\tthis.view.fullHeight = fullHeight;\n\t\tthis.view.offsetX = x;\n\t\tthis.view.offsetY = y;\n\t\tthis.view.width = width;\n\t\tthis.view.height = height;\n\n\t\tthis.updateProjectionMatrix();\n\n\t}\n\n\tclearViewOffset() {\n\n\t\tif ( this.view !== null ) {\n\n\t\t\tthis.view.enabled = false;\n\n\t\t}\n\n\t\tthis.updateProjectionMatrix();\n\n\t}\n\n\tupdateProjectionMatrix() {\n\n\t\tconst near = this.near;\n\t\tlet top = near * Math.tan( DEG2RAD * 0.5 * this.fov ) / this.zoom;\n\t\tlet height = 2 * top;\n\t\tlet width = this.aspect * height;\n\t\tlet left = - 0.5 * width;\n\t\tconst view = this.view;\n\n\t\tif ( this.view !== null && this.view.enabled ) {\n\n\t\t\tconst fullWidth = view.fullWidth,\n\t\t\t\tfullHeight = view.fullHeight;\n\n\t\t\tleft += view.offsetX * width / fullWidth;\n\t\t\ttop -= view.offsetY * height / fullHeight;\n\t\t\twidth *= view.width / fullWidth;\n\t\t\theight *= view.height / fullHeight;\n\n\t\t}\n\n\t\tconst skew = this.filmOffset;\n\t\tif ( skew !== 0 ) left += near * skew / this.getFilmWidth();\n\n\t\tthis.projectionMatrix.makePerspective( left, left + width, top, top - height, near, this.far );\n\n\t\tthis.projectionMatrixInverse.copy( this.projectionMatrix ).invert();\n\n\t}\n\n\ttoJSON( meta ) {\n\n\t\tconst data = super.toJSON( meta );\n\n\t\tdata.object.fov = this.fov;\n\t\tdata.object.zoom = this.zoom;\n\n\t\tdata.object.near = this.near;\n\t\tdata.object.far = this.far;\n\t\tdata.object.focus = this.focus;\n\n\t\tdata.object.aspect = this.aspect;\n\n\t\tif ( this.view !== null ) data.object.view = Object.assign( {}, this.view );\n\n\t\tdata.object.filmGauge = this.filmGauge;\n\t\tdata.object.filmOffset = this.filmOffset;\n\n\t\treturn data;\n\n\t}\n\n}\n\nconst fov = 90, aspect = 1;\n\nclass CubeCamera extends Object3D {\n\n\tconstructor( near, far, renderTarget ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'CubeCamera';\n\n\t\tif ( renderTarget.isWebGLCubeRenderTarget !== true ) {\n\n\t\t\tconsole.error( 'THREE.CubeCamera: The constructor now expects an instance of WebGLCubeRenderTarget as third parameter.' );\n\t\t\treturn;\n\n\t\t}\n\n\t\tthis.renderTarget = renderTarget;\n\n\t\tconst cameraPX = new PerspectiveCamera( fov, aspect, near, far );\n\t\tcameraPX.layers = this.layers;\n\t\tcameraPX.up.set( 0, - 1, 0 );\n\t\tcameraPX.lookAt( new Vector3( 1, 0, 0 ) );\n\t\tthis.add( cameraPX );\n\n\t\tconst cameraNX = new PerspectiveCamera( fov, aspect, near, far );\n\t\tcameraNX.layers = this.layers;\n\t\tcameraNX.up.set( 0, - 1, 0 );\n\t\tcameraNX.lookAt( new Vector3( - 1, 0, 0 ) );\n\t\tthis.add( cameraNX );\n\n\t\tconst cameraPY = new PerspectiveCamera( fov, aspect, near, far );\n\t\tcameraPY.layers = this.layers;\n\t\tcameraPY.up.set( 0, 0, 1 );\n\t\tcameraPY.lookAt( new Vector3( 0, 1, 0 ) );\n\t\tthis.add( cameraPY );\n\n\t\tconst cameraNY = new PerspectiveCamera( fov, aspect, near, far );\n\t\tcameraNY.layers = this.layers;\n\t\tcameraNY.up.set( 0, 0, - 1 );\n\t\tcameraNY.lookAt( new Vector3( 0, - 1, 0 ) );\n\t\tthis.add( cameraNY );\n\n\t\tconst cameraPZ = new PerspectiveCamera( fov, aspect, near, far );\n\t\tcameraPZ.layers = this.layers;\n\t\tcameraPZ.up.set( 0, - 1, 0 );\n\t\tcameraPZ.lookAt( new Vector3( 0, 0, 1 ) );\n\t\tthis.add( cameraPZ );\n\n\t\tconst cameraNZ = new PerspectiveCamera( fov, aspect, near, far );\n\t\tcameraNZ.layers = this.layers;\n\t\tcameraNZ.up.set( 0, - 1, 0 );\n\t\tcameraNZ.lookAt( new Vector3( 0, 0, - 1 ) );\n\t\tthis.add( cameraNZ );\n\n\t}\n\n\tupdate( renderer, scene ) {\n\n\t\tif ( this.parent === null ) this.updateMatrixWorld();\n\n\t\tconst renderTarget = this.renderTarget;\n\n\t\tconst [ cameraPX, cameraNX, cameraPY, cameraNY, cameraPZ, cameraNZ ] = this.children;\n\n\t\tconst currentRenderTarget = renderer.getRenderTarget();\n\n\t\tconst currentToneMapping = renderer.toneMapping;\n\t\tconst currentXrEnabled = renderer.xr.enabled;\n\n\t\trenderer.toneMapping = NoToneMapping;\n\t\trenderer.xr.enabled = false;\n\n\t\tconst generateMipmaps = renderTarget.texture.generateMipmaps;\n\n\t\trenderTarget.texture.generateMipmaps = false;\n\n\t\trenderer.setRenderTarget( renderTarget, 0 );\n\t\trenderer.render( scene, cameraPX );\n\n\t\trenderer.setRenderTarget( renderTarget, 1 );\n\t\trenderer.render( scene, cameraNX );\n\n\t\trenderer.setRenderTarget( renderTarget, 2 );\n\t\trenderer.render( scene, cameraPY );\n\n\t\trenderer.setRenderTarget( renderTarget, 3 );\n\t\trenderer.render( scene, cameraNY );\n\n\t\trenderer.setRenderTarget( renderTarget, 4 );\n\t\trenderer.render( scene, cameraPZ );\n\n\t\trenderTarget.texture.generateMipmaps = generateMipmaps;\n\n\t\trenderer.setRenderTarget( renderTarget, 5 );\n\t\trenderer.render( scene, cameraNZ );\n\n\t\trenderer.setRenderTarget( currentRenderTarget );\n\n\t\trenderer.toneMapping = currentToneMapping;\n\t\trenderer.xr.enabled = currentXrEnabled;\n\n\t\trenderTarget.texture.needsPMREMUpdate = true;\n\n\t}\n\n}\n\nclass CubeTexture extends Texture {\n\n\tconstructor( images, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy, encoding ) {\n\n\t\timages = images !== undefined ? images : [];\n\t\tmapping = mapping !== undefined ? mapping : CubeReflectionMapping;\n\n\t\tsuper( images, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy, encoding );\n\n\t\tthis.isCubeTexture = true;\n\n\t\tthis.flipY = false;\n\n\t}\n\n\tget images() {\n\n\t\treturn this.image;\n\n\t}\n\n\tset images( value ) {\n\n\t\tthis.image = value;\n\n\t}\n\n}\n\nclass WebGLCubeRenderTarget extends WebGLRenderTarget {\n\n\tconstructor( size, options = {} ) {\n\n\t\tsuper( size, size, options );\n\n\t\tthis.isWebGLCubeRenderTarget = true;\n\n\t\tconst image = { width: size, height: size, depth: 1 };\n\t\tconst images = [ image, image, image, image, image, image ];\n\n\t\tthis.texture = new CubeTexture( images, options.mapping, options.wrapS, options.wrapT, options.magFilter, options.minFilter, options.format, options.type, options.anisotropy, options.encoding );\n\n\t\t// By convention -- likely based on the RenderMan spec from the 1990's -- cube maps are specified by WebGL (and three.js)\n\t\t// in a coordinate system in which positive-x is to the right when looking up the positive-z axis -- in other words,\n\t\t// in a left-handed coordinate system. By continuing this convention, preexisting cube maps continued to render correctly.\n\n\t\t// three.js uses a right-handed coordinate system. So environment maps used in three.js appear to have px and nx swapped\n\t\t// and the flag isRenderTargetTexture controls this conversion. The flip is not required when using WebGLCubeRenderTarget.texture\n\t\t// as a cube texture (this is detected when isRenderTargetTexture is set to true for cube textures).\n\n\t\tthis.texture.isRenderTargetTexture = true;\n\n\t\tthis.texture.generateMipmaps = options.generateMipmaps !== undefined ? options.generateMipmaps : false;\n\t\tthis.texture.minFilter = options.minFilter !== undefined ? options.minFilter : LinearFilter;\n\n\t}\n\n\tfromEquirectangularTexture( renderer, texture ) {\n\n\t\tthis.texture.type = texture.type;\n\t\tthis.texture.encoding = texture.encoding;\n\n\t\tthis.texture.generateMipmaps = texture.generateMipmaps;\n\t\tthis.texture.minFilter = texture.minFilter;\n\t\tthis.texture.magFilter = texture.magFilter;\n\n\t\tconst shader = {\n\n\t\t\tuniforms: {\n\t\t\t\ttEquirect: { value: null },\n\t\t\t},\n\n\t\t\tvertexShader: /* glsl */`\n\n\t\t\t\tvarying vec3 vWorldDirection;\n\n\t\t\t\tvec3 transformDirection( in vec3 dir, in mat4 matrix ) {\n\n\t\t\t\t\treturn normalize( ( matrix * vec4( dir, 0.0 ) ).xyz );\n\n\t\t\t\t}\n\n\t\t\t\tvoid main() {\n\n\t\t\t\t\tvWorldDirection = transformDirection( position, modelMatrix );\n\n\t\t\t\t\t#include \n\t\t\t\t\t#include \n\n\t\t\t\t}\n\t\t\t`,\n\n\t\t\tfragmentShader: /* glsl */`\n\n\t\t\t\tuniform sampler2D tEquirect;\n\n\t\t\t\tvarying vec3 vWorldDirection;\n\n\t\t\t\t#include \n\n\t\t\t\tvoid main() {\n\n\t\t\t\t\tvec3 direction = normalize( vWorldDirection );\n\n\t\t\t\t\tvec2 sampleUV = equirectUv( direction );\n\n\t\t\t\t\tgl_FragColor = texture2D( tEquirect, sampleUV );\n\n\t\t\t\t}\n\t\t\t`\n\t\t};\n\n\t\tconst geometry = new BoxGeometry( 5, 5, 5 );\n\n\t\tconst material = new ShaderMaterial( {\n\n\t\t\tname: 'CubemapFromEquirect',\n\n\t\t\tuniforms: cloneUniforms( shader.uniforms ),\n\t\t\tvertexShader: shader.vertexShader,\n\t\t\tfragmentShader: shader.fragmentShader,\n\t\t\tside: BackSide,\n\t\t\tblending: NoBlending\n\n\t\t} );\n\n\t\tmaterial.uniforms.tEquirect.value = texture;\n\n\t\tconst mesh = new Mesh( geometry, material );\n\n\t\tconst currentMinFilter = texture.minFilter;\n\n\t\t// Avoid blurred poles\n\t\tif ( texture.minFilter === LinearMipmapLinearFilter ) texture.minFilter = LinearFilter;\n\n\t\tconst camera = new CubeCamera( 1, 10, this );\n\t\tcamera.update( renderer, mesh );\n\n\t\ttexture.minFilter = currentMinFilter;\n\n\t\tmesh.geometry.dispose();\n\t\tmesh.material.dispose();\n\n\t\treturn this;\n\n\t}\n\n\tclear( renderer, color, depth, stencil ) {\n\n\t\tconst currentRenderTarget = renderer.getRenderTarget();\n\n\t\tfor ( let i = 0; i < 6; i ++ ) {\n\n\t\t\trenderer.setRenderTarget( this, i );\n\n\t\t\trenderer.clear( color, depth, stencil );\n\n\t\t}\n\n\t\trenderer.setRenderTarget( currentRenderTarget );\n\n\t}\n\n}\n\nconst _vector1 = /*@__PURE__*/ new Vector3();\nconst _vector2 = /*@__PURE__*/ new Vector3();\nconst _normalMatrix = /*@__PURE__*/ new Matrix3();\n\nclass Plane {\n\n\tconstructor( normal = new Vector3( 1, 0, 0 ), constant = 0 ) {\n\n\t\tthis.isPlane = true;\n\n\t\t// normal is assumed to be normalized\n\n\t\tthis.normal = normal;\n\t\tthis.constant = constant;\n\n\t}\n\n\tset( normal, constant ) {\n\n\t\tthis.normal.copy( normal );\n\t\tthis.constant = constant;\n\n\t\treturn this;\n\n\t}\n\n\tsetComponents( x, y, z, w ) {\n\n\t\tthis.normal.set( x, y, z );\n\t\tthis.constant = w;\n\n\t\treturn this;\n\n\t}\n\n\tsetFromNormalAndCoplanarPoint( normal, point ) {\n\n\t\tthis.normal.copy( normal );\n\t\tthis.constant = - point.dot( this.normal );\n\n\t\treturn this;\n\n\t}\n\n\tsetFromCoplanarPoints( a, b, c ) {\n\n\t\tconst normal = _vector1.subVectors( c, b ).cross( _vector2.subVectors( a, b ) ).normalize();\n\n\t\t// Q: should an error be thrown if normal is zero (e.g. degenerate plane)?\n\n\t\tthis.setFromNormalAndCoplanarPoint( normal, a );\n\n\t\treturn this;\n\n\t}\n\n\tcopy( plane ) {\n\n\t\tthis.normal.copy( plane.normal );\n\t\tthis.constant = plane.constant;\n\n\t\treturn this;\n\n\t}\n\n\tnormalize() {\n\n\t\t// Note: will lead to a divide by zero if the plane is invalid.\n\n\t\tconst inverseNormalLength = 1.0 / this.normal.length();\n\t\tthis.normal.multiplyScalar( inverseNormalLength );\n\t\tthis.constant *= inverseNormalLength;\n\n\t\treturn this;\n\n\t}\n\n\tnegate() {\n\n\t\tthis.constant *= - 1;\n\t\tthis.normal.negate();\n\n\t\treturn this;\n\n\t}\n\n\tdistanceToPoint( point ) {\n\n\t\treturn this.normal.dot( point ) + this.constant;\n\n\t}\n\n\tdistanceToSphere( sphere ) {\n\n\t\treturn this.distanceToPoint( sphere.center ) - sphere.radius;\n\n\t}\n\n\tprojectPoint( point, target ) {\n\n\t\treturn target.copy( this.normal ).multiplyScalar( - this.distanceToPoint( point ) ).add( point );\n\n\t}\n\n\tintersectLine( line, target ) {\n\n\t\tconst direction = line.delta( _vector1 );\n\n\t\tconst denominator = this.normal.dot( direction );\n\n\t\tif ( denominator === 0 ) {\n\n\t\t\t// line is coplanar, return origin\n\t\t\tif ( this.distanceToPoint( line.start ) === 0 ) {\n\n\t\t\t\treturn target.copy( line.start );\n\n\t\t\t}\n\n\t\t\t// Unsure if this is the correct method to handle this case.\n\t\t\treturn null;\n\n\t\t}\n\n\t\tconst t = - ( line.start.dot( this.normal ) + this.constant ) / denominator;\n\n\t\tif ( t < 0 || t > 1 ) {\n\n\t\t\treturn null;\n\n\t\t}\n\n\t\treturn target.copy( direction ).multiplyScalar( t ).add( line.start );\n\n\t}\n\n\tintersectsLine( line ) {\n\n\t\t// Note: this tests if a line intersects the plane, not whether it (or its end-points) are coplanar with it.\n\n\t\tconst startSign = this.distanceToPoint( line.start );\n\t\tconst endSign = this.distanceToPoint( line.end );\n\n\t\treturn ( startSign < 0 && endSign > 0 ) || ( endSign < 0 && startSign > 0 );\n\n\t}\n\n\tintersectsBox( box ) {\n\n\t\treturn box.intersectsPlane( this );\n\n\t}\n\n\tintersectsSphere( sphere ) {\n\n\t\treturn sphere.intersectsPlane( this );\n\n\t}\n\n\tcoplanarPoint( target ) {\n\n\t\treturn target.copy( this.normal ).multiplyScalar( - this.constant );\n\n\t}\n\n\tapplyMatrix4( matrix, optionalNormalMatrix ) {\n\n\t\tconst normalMatrix = optionalNormalMatrix || _normalMatrix.getNormalMatrix( matrix );\n\n\t\tconst referencePoint = this.coplanarPoint( _vector1 ).applyMatrix4( matrix );\n\n\t\tconst normal = this.normal.applyMatrix3( normalMatrix ).normalize();\n\n\t\tthis.constant = - referencePoint.dot( normal );\n\n\t\treturn this;\n\n\t}\n\n\ttranslate( offset ) {\n\n\t\tthis.constant -= offset.dot( this.normal );\n\n\t\treturn this;\n\n\t}\n\n\tequals( plane ) {\n\n\t\treturn plane.normal.equals( this.normal ) && ( plane.constant === this.constant );\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n}\n\nconst _sphere$2 = /*@__PURE__*/ new Sphere();\nconst _vector$7 = /*@__PURE__*/ new Vector3();\n\nclass Frustum {\n\n\tconstructor( p0 = new Plane(), p1 = new Plane(), p2 = new Plane(), p3 = new Plane(), p4 = new Plane(), p5 = new Plane() ) {\n\n\t\tthis.planes = [ p0, p1, p2, p3, p4, p5 ];\n\n\t}\n\n\tset( p0, p1, p2, p3, p4, p5 ) {\n\n\t\tconst planes = this.planes;\n\n\t\tplanes[ 0 ].copy( p0 );\n\t\tplanes[ 1 ].copy( p1 );\n\t\tplanes[ 2 ].copy( p2 );\n\t\tplanes[ 3 ].copy( p3 );\n\t\tplanes[ 4 ].copy( p4 );\n\t\tplanes[ 5 ].copy( p5 );\n\n\t\treturn this;\n\n\t}\n\n\tcopy( frustum ) {\n\n\t\tconst planes = this.planes;\n\n\t\tfor ( let i = 0; i < 6; i ++ ) {\n\n\t\t\tplanes[ i ].copy( frustum.planes[ i ] );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tsetFromProjectionMatrix( m ) {\n\n\t\tconst planes = this.planes;\n\t\tconst me = m.elements;\n\t\tconst me0 = me[ 0 ], me1 = me[ 1 ], me2 = me[ 2 ], me3 = me[ 3 ];\n\t\tconst me4 = me[ 4 ], me5 = me[ 5 ], me6 = me[ 6 ], me7 = me[ 7 ];\n\t\tconst me8 = me[ 8 ], me9 = me[ 9 ], me10 = me[ 10 ], me11 = me[ 11 ];\n\t\tconst me12 = me[ 12 ], me13 = me[ 13 ], me14 = me[ 14 ], me15 = me[ 15 ];\n\n\t\tplanes[ 0 ].setComponents( me3 - me0, me7 - me4, me11 - me8, me15 - me12 ).normalize();\n\t\tplanes[ 1 ].setComponents( me3 + me0, me7 + me4, me11 + me8, me15 + me12 ).normalize();\n\t\tplanes[ 2 ].setComponents( me3 + me1, me7 + me5, me11 + me9, me15 + me13 ).normalize();\n\t\tplanes[ 3 ].setComponents( me3 - me1, me7 - me5, me11 - me9, me15 - me13 ).normalize();\n\t\tplanes[ 4 ].setComponents( me3 - me2, me7 - me6, me11 - me10, me15 - me14 ).normalize();\n\t\tplanes[ 5 ].setComponents( me3 + me2, me7 + me6, me11 + me10, me15 + me14 ).normalize();\n\n\t\treturn this;\n\n\t}\n\n\tintersectsObject( object ) {\n\n\t\tconst geometry = object.geometry;\n\n\t\tif ( geometry.boundingSphere === null ) geometry.computeBoundingSphere();\n\n\t\t_sphere$2.copy( geometry.boundingSphere ).applyMatrix4( object.matrixWorld );\n\n\t\treturn this.intersectsSphere( _sphere$2 );\n\n\t}\n\n\tintersectsSprite( sprite ) {\n\n\t\t_sphere$2.center.set( 0, 0, 0 );\n\t\t_sphere$2.radius = 0.7071067811865476;\n\t\t_sphere$2.applyMatrix4( sprite.matrixWorld );\n\n\t\treturn this.intersectsSphere( _sphere$2 );\n\n\t}\n\n\tintersectsSphere( sphere ) {\n\n\t\tconst planes = this.planes;\n\t\tconst center = sphere.center;\n\t\tconst negRadius = - sphere.radius;\n\n\t\tfor ( let i = 0; i < 6; i ++ ) {\n\n\t\t\tconst distance = planes[ i ].distanceToPoint( center );\n\n\t\t\tif ( distance < negRadius ) {\n\n\t\t\t\treturn false;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn true;\n\n\t}\n\n\tintersectsBox( box ) {\n\n\t\tconst planes = this.planes;\n\n\t\tfor ( let i = 0; i < 6; i ++ ) {\n\n\t\t\tconst plane = planes[ i ];\n\n\t\t\t// corner at max distance\n\n\t\t\t_vector$7.x = plane.normal.x > 0 ? box.max.x : box.min.x;\n\t\t\t_vector$7.y = plane.normal.y > 0 ? box.max.y : box.min.y;\n\t\t\t_vector$7.z = plane.normal.z > 0 ? box.max.z : box.min.z;\n\n\t\t\tif ( plane.distanceToPoint( _vector$7 ) < 0 ) {\n\n\t\t\t\treturn false;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn true;\n\n\t}\n\n\tcontainsPoint( point ) {\n\n\t\tconst planes = this.planes;\n\n\t\tfor ( let i = 0; i < 6; i ++ ) {\n\n\t\t\tif ( planes[ i ].distanceToPoint( point ) < 0 ) {\n\n\t\t\t\treturn false;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn true;\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n}\n\nfunction WebGLAnimation() {\n\n\tlet context = null;\n\tlet isAnimating = false;\n\tlet animationLoop = null;\n\tlet requestId = null;\n\n\tfunction onAnimationFrame( time, frame ) {\n\n\t\tanimationLoop( time, frame );\n\n\t\trequestId = context.requestAnimationFrame( onAnimationFrame );\n\n\t}\n\n\treturn {\n\n\t\tstart: function () {\n\n\t\t\tif ( isAnimating === true ) return;\n\t\t\tif ( animationLoop === null ) return;\n\n\t\t\trequestId = context.requestAnimationFrame( onAnimationFrame );\n\n\t\t\tisAnimating = true;\n\n\t\t},\n\n\t\tstop: function () {\n\n\t\t\tcontext.cancelAnimationFrame( requestId );\n\n\t\t\tisAnimating = false;\n\n\t\t},\n\n\t\tsetAnimationLoop: function ( callback ) {\n\n\t\t\tanimationLoop = callback;\n\n\t\t},\n\n\t\tsetContext: function ( value ) {\n\n\t\t\tcontext = value;\n\n\t\t}\n\n\t};\n\n}\n\nfunction WebGLAttributes( gl, capabilities ) {\n\n\tconst isWebGL2 = capabilities.isWebGL2;\n\n\tconst buffers = new WeakMap();\n\n\tfunction createBuffer( attribute, bufferType ) {\n\n\t\tconst array = attribute.array;\n\t\tconst usage = attribute.usage;\n\n\t\tconst buffer = gl.createBuffer();\n\n\t\tgl.bindBuffer( bufferType, buffer );\n\t\tgl.bufferData( bufferType, array, usage );\n\n\t\tattribute.onUploadCallback();\n\n\t\tlet type;\n\n\t\tif ( array instanceof Float32Array ) {\n\n\t\t\ttype = 5126;\n\n\t\t} else if ( array instanceof Uint16Array ) {\n\n\t\t\tif ( attribute.isFloat16BufferAttribute ) {\n\n\t\t\t\tif ( isWebGL2 ) {\n\n\t\t\t\t\ttype = 5131;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tthrow new Error( 'THREE.WebGLAttributes: Usage of Float16BufferAttribute requires WebGL2.' );\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\ttype = 5123;\n\n\t\t\t}\n\n\t\t} else if ( array instanceof Int16Array ) {\n\n\t\t\ttype = 5122;\n\n\t\t} else if ( array instanceof Uint32Array ) {\n\n\t\t\ttype = 5125;\n\n\t\t} else if ( array instanceof Int32Array ) {\n\n\t\t\ttype = 5124;\n\n\t\t} else if ( array instanceof Int8Array ) {\n\n\t\t\ttype = 5120;\n\n\t\t} else if ( array instanceof Uint8Array ) {\n\n\t\t\ttype = 5121;\n\n\t\t} else if ( array instanceof Uint8ClampedArray ) {\n\n\t\t\ttype = 5121;\n\n\t\t} else {\n\n\t\t\tthrow new Error( 'THREE.WebGLAttributes: Unsupported buffer data format: ' + array );\n\n\t\t}\n\n\t\treturn {\n\t\t\tbuffer: buffer,\n\t\t\ttype: type,\n\t\t\tbytesPerElement: array.BYTES_PER_ELEMENT,\n\t\t\tversion: attribute.version\n\t\t};\n\n\t}\n\n\tfunction updateBuffer( buffer, attribute, bufferType ) {\n\n\t\tconst array = attribute.array;\n\t\tconst updateRange = attribute.updateRange;\n\n\t\tgl.bindBuffer( bufferType, buffer );\n\n\t\tif ( updateRange.count === - 1 ) {\n\n\t\t\t// Not using update ranges\n\n\t\t\tgl.bufferSubData( bufferType, 0, array );\n\n\t\t} else {\n\n\t\t\tif ( isWebGL2 ) {\n\n\t\t\t\tgl.bufferSubData( bufferType, updateRange.offset * array.BYTES_PER_ELEMENT,\n\t\t\t\t\tarray, updateRange.offset, updateRange.count );\n\n\t\t\t} else {\n\n\t\t\t\tgl.bufferSubData( bufferType, updateRange.offset * array.BYTES_PER_ELEMENT,\n\t\t\t\t\tarray.subarray( updateRange.offset, updateRange.offset + updateRange.count ) );\n\n\t\t\t}\n\n\t\t\tupdateRange.count = - 1; // reset range\n\n\t\t}\n\n\t}\n\n\t//\n\n\tfunction get( attribute ) {\n\n\t\tif ( attribute.isInterleavedBufferAttribute ) attribute = attribute.data;\n\n\t\treturn buffers.get( attribute );\n\n\t}\n\n\tfunction remove( attribute ) {\n\n\t\tif ( attribute.isInterleavedBufferAttribute ) attribute = attribute.data;\n\n\t\tconst data = buffers.get( attribute );\n\n\t\tif ( data ) {\n\n\t\t\tgl.deleteBuffer( data.buffer );\n\n\t\t\tbuffers.delete( attribute );\n\n\t\t}\n\n\t}\n\n\tfunction update( attribute, bufferType ) {\n\n\t\tif ( attribute.isGLBufferAttribute ) {\n\n\t\t\tconst cached = buffers.get( attribute );\n\n\t\t\tif ( ! cached || cached.version < attribute.version ) {\n\n\t\t\t\tbuffers.set( attribute, {\n\t\t\t\t\tbuffer: attribute.buffer,\n\t\t\t\t\ttype: attribute.type,\n\t\t\t\t\tbytesPerElement: attribute.elementSize,\n\t\t\t\t\tversion: attribute.version\n\t\t\t\t} );\n\n\t\t\t}\n\n\t\t\treturn;\n\n\t\t}\n\n\t\tif ( attribute.isInterleavedBufferAttribute ) attribute = attribute.data;\n\n\t\tconst data = buffers.get( attribute );\n\n\t\tif ( data === undefined ) {\n\n\t\t\tbuffers.set( attribute, createBuffer( attribute, bufferType ) );\n\n\t\t} else if ( data.version < attribute.version ) {\n\n\t\t\tupdateBuffer( data.buffer, attribute, bufferType );\n\n\t\t\tdata.version = attribute.version;\n\n\t\t}\n\n\t}\n\n\treturn {\n\n\t\tget: get,\n\t\tremove: remove,\n\t\tupdate: update\n\n\t};\n\n}\n\nclass PlaneGeometry extends BufferGeometry {\n\n\tconstructor( width = 1, height = 1, widthSegments = 1, heightSegments = 1 ) {\n\n\t\tsuper();\n\t\tthis.type = 'PlaneGeometry';\n\n\t\tthis.parameters = {\n\t\t\twidth: width,\n\t\t\theight: height,\n\t\t\twidthSegments: widthSegments,\n\t\t\theightSegments: heightSegments\n\t\t};\n\n\t\tconst width_half = width / 2;\n\t\tconst height_half = height / 2;\n\n\t\tconst gridX = Math.floor( widthSegments );\n\t\tconst gridY = Math.floor( heightSegments );\n\n\t\tconst gridX1 = gridX + 1;\n\t\tconst gridY1 = gridY + 1;\n\n\t\tconst segment_width = width / gridX;\n\t\tconst segment_height = height / gridY;\n\n\t\t//\n\n\t\tconst indices = [];\n\t\tconst vertices = [];\n\t\tconst normals = [];\n\t\tconst uvs = [];\n\n\t\tfor ( let iy = 0; iy < gridY1; iy ++ ) {\n\n\t\t\tconst y = iy * segment_height - height_half;\n\n\t\t\tfor ( let ix = 0; ix < gridX1; ix ++ ) {\n\n\t\t\t\tconst x = ix * segment_width - width_half;\n\n\t\t\t\tvertices.push( x, - y, 0 );\n\n\t\t\t\tnormals.push( 0, 0, 1 );\n\n\t\t\t\tuvs.push( ix / gridX );\n\t\t\t\tuvs.push( 1 - ( iy / gridY ) );\n\n\t\t\t}\n\n\t\t}\n\n\t\tfor ( let iy = 0; iy < gridY; iy ++ ) {\n\n\t\t\tfor ( let ix = 0; ix < gridX; ix ++ ) {\n\n\t\t\t\tconst a = ix + gridX1 * iy;\n\t\t\t\tconst b = ix + gridX1 * ( iy + 1 );\n\t\t\t\tconst c = ( ix + 1 ) + gridX1 * ( iy + 1 );\n\t\t\t\tconst d = ( ix + 1 ) + gridX1 * iy;\n\n\t\t\t\tindices.push( a, b, d );\n\t\t\t\tindices.push( b, c, d );\n\n\t\t\t}\n\n\t\t}\n\n\t\tthis.setIndex( indices );\n\t\tthis.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\t\tthis.setAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) );\n\t\tthis.setAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) );\n\n\t}\n\n\tstatic fromJSON( data ) {\n\n\t\treturn new PlaneGeometry( data.width, data.height, data.widthSegments, data.heightSegments );\n\n\t}\n\n}\n\nvar alphamap_fragment = \"#ifdef USE_ALPHAMAP\\n\\tdiffuseColor.a *= texture2D( alphaMap, vUv ).g;\\n#endif\";\n\nvar alphamap_pars_fragment = \"#ifdef USE_ALPHAMAP\\n\\tuniform sampler2D alphaMap;\\n#endif\";\n\nvar alphatest_fragment = \"#ifdef USE_ALPHATEST\\n\\tif ( diffuseColor.a < alphaTest ) discard;\\n#endif\";\n\nvar alphatest_pars_fragment = \"#ifdef USE_ALPHATEST\\n\\tuniform float alphaTest;\\n#endif\";\n\nvar aomap_fragment = \"#ifdef USE_AOMAP\\n\\tfloat ambientOcclusion = ( texture2D( aoMap, vUv2 ).r - 1.0 ) * aoMapIntensity + 1.0;\\n\\treflectedLight.indirectDiffuse *= ambientOcclusion;\\n\\t#if defined( USE_ENVMAP ) && defined( STANDARD )\\n\\t\\tfloat dotNV = saturate( dot( geometry.normal, geometry.viewDir ) );\\n\\t\\treflectedLight.indirectSpecular *= computeSpecularOcclusion( dotNV, ambientOcclusion, material.roughness );\\n\\t#endif\\n#endif\";\n\nvar aomap_pars_fragment = \"#ifdef USE_AOMAP\\n\\tuniform sampler2D aoMap;\\n\\tuniform float aoMapIntensity;\\n#endif\";\n\nvar begin_vertex = \"vec3 transformed = vec3( position );\";\n\nvar beginnormal_vertex = \"vec3 objectNormal = vec3( normal );\\n#ifdef USE_TANGENT\\n\\tvec3 objectTangent = vec3( tangent.xyz );\\n#endif\";\n\nvar bsdfs = \"vec3 BRDF_Lambert( const in vec3 diffuseColor ) {\\n\\treturn RECIPROCAL_PI * diffuseColor;\\n}\\nvec3 F_Schlick( const in vec3 f0, const in float f90, const in float dotVH ) {\\n\\tfloat fresnel = exp2( ( - 5.55473 * dotVH - 6.98316 ) * dotVH );\\n\\treturn f0 * ( 1.0 - fresnel ) + ( f90 * fresnel );\\n}\\nfloat F_Schlick( const in float f0, const in float f90, const in float dotVH ) {\\n\\tfloat fresnel = exp2( ( - 5.55473 * dotVH - 6.98316 ) * dotVH );\\n\\treturn f0 * ( 1.0 - fresnel ) + ( f90 * fresnel );\\n}\\nvec3 Schlick_to_F0( const in vec3 f, const in float f90, const in float dotVH ) {\\n float x = clamp( 1.0 - dotVH, 0.0, 1.0 );\\n float x2 = x * x;\\n float x5 = clamp( x * x2 * x2, 0.0, 0.9999 );\\n return ( f - vec3( f90 ) * x5 ) / ( 1.0 - x5 );\\n}\\nfloat V_GGX_SmithCorrelated( const in float alpha, const in float dotNL, const in float dotNV ) {\\n\\tfloat a2 = pow2( alpha );\\n\\tfloat gv = dotNL * sqrt( a2 + ( 1.0 - a2 ) * pow2( dotNV ) );\\n\\tfloat gl = dotNV * sqrt( a2 + ( 1.0 - a2 ) * pow2( dotNL ) );\\n\\treturn 0.5 / max( gv + gl, EPSILON );\\n}\\nfloat D_GGX( const in float alpha, const in float dotNH ) {\\n\\tfloat a2 = pow2( alpha );\\n\\tfloat denom = pow2( dotNH ) * ( a2 - 1.0 ) + 1.0;\\n\\treturn RECIPROCAL_PI * a2 / pow2( denom );\\n}\\nvec3 BRDF_GGX( const in vec3 lightDir, const in vec3 viewDir, const in vec3 normal, const in vec3 f0, const in float f90, const in float roughness ) {\\n\\tfloat alpha = pow2( roughness );\\n\\tvec3 halfDir = normalize( lightDir + viewDir );\\n\\tfloat dotNL = saturate( dot( normal, lightDir ) );\\n\\tfloat dotNV = saturate( dot( normal, viewDir ) );\\n\\tfloat dotNH = saturate( dot( normal, halfDir ) );\\n\\tfloat dotVH = saturate( dot( viewDir, halfDir ) );\\n\\tvec3 F = F_Schlick( f0, f90, dotVH );\\n\\tfloat V = V_GGX_SmithCorrelated( alpha, dotNL, dotNV );\\n\\tfloat D = D_GGX( alpha, dotNH );\\n\\treturn F * ( V * D );\\n}\\n#ifdef USE_IRIDESCENCE\\nvec3 BRDF_GGX_Iridescence( const in vec3 lightDir, const in vec3 viewDir, const in vec3 normal, const in vec3 f0, const in float f90, const in float iridescence, const in vec3 iridescenceFresnel, const in float roughness ) {\\n\\tfloat alpha = pow2( roughness );\\n\\tvec3 halfDir = normalize( lightDir + viewDir );\\n\\tfloat dotNL = saturate( dot( normal, lightDir ) );\\n\\tfloat dotNV = saturate( dot( normal, viewDir ) );\\n\\tfloat dotNH = saturate( dot( normal, halfDir ) );\\n\\tfloat dotVH = saturate( dot( viewDir, halfDir ) );\\n\\tvec3 F = mix(F_Schlick( f0, f90, dotVH ), iridescenceFresnel, iridescence);\\n\\tfloat V = V_GGX_SmithCorrelated( alpha, dotNL, dotNV );\\n\\tfloat D = D_GGX( alpha, dotNH );\\n\\treturn F * ( V * D );\\n}\\n#endif\\nvec2 LTC_Uv( const in vec3 N, const in vec3 V, const in float roughness ) {\\n\\tconst float LUT_SIZE = 64.0;\\n\\tconst float LUT_SCALE = ( LUT_SIZE - 1.0 ) / LUT_SIZE;\\n\\tconst float LUT_BIAS = 0.5 / LUT_SIZE;\\n\\tfloat dotNV = saturate( dot( N, V ) );\\n\\tvec2 uv = vec2( roughness, sqrt( 1.0 - dotNV ) );\\n\\tuv = uv * LUT_SCALE + LUT_BIAS;\\n\\treturn uv;\\n}\\nfloat LTC_ClippedSphereFormFactor( const in vec3 f ) {\\n\\tfloat l = length( f );\\n\\treturn max( ( l * l + f.z ) / ( l + 1.0 ), 0.0 );\\n}\\nvec3 LTC_EdgeVectorFormFactor( const in vec3 v1, const in vec3 v2 ) {\\n\\tfloat x = dot( v1, v2 );\\n\\tfloat y = abs( x );\\n\\tfloat a = 0.8543985 + ( 0.4965155 + 0.0145206 * y ) * y;\\n\\tfloat b = 3.4175940 + ( 4.1616724 + y ) * y;\\n\\tfloat v = a / b;\\n\\tfloat theta_sintheta = ( x > 0.0 ) ? v : 0.5 * inversesqrt( max( 1.0 - x * x, 1e-7 ) ) - v;\\n\\treturn cross( v1, v2 ) * theta_sintheta;\\n}\\nvec3 LTC_Evaluate( const in vec3 N, const in vec3 V, const in vec3 P, const in mat3 mInv, const in vec3 rectCoords[ 4 ] ) {\\n\\tvec3 v1 = rectCoords[ 1 ] - rectCoords[ 0 ];\\n\\tvec3 v2 = rectCoords[ 3 ] - rectCoords[ 0 ];\\n\\tvec3 lightNormal = cross( v1, v2 );\\n\\tif( dot( lightNormal, P - rectCoords[ 0 ] ) < 0.0 ) return vec3( 0.0 );\\n\\tvec3 T1, T2;\\n\\tT1 = normalize( V - N * dot( V, N ) );\\n\\tT2 = - cross( N, T1 );\\n\\tmat3 mat = mInv * transposeMat3( mat3( T1, T2, N ) );\\n\\tvec3 coords[ 4 ];\\n\\tcoords[ 0 ] = mat * ( rectCoords[ 0 ] - P );\\n\\tcoords[ 1 ] = mat * ( rectCoords[ 1 ] - P );\\n\\tcoords[ 2 ] = mat * ( rectCoords[ 2 ] - P );\\n\\tcoords[ 3 ] = mat * ( rectCoords[ 3 ] - P );\\n\\tcoords[ 0 ] = normalize( coords[ 0 ] );\\n\\tcoords[ 1 ] = normalize( coords[ 1 ] );\\n\\tcoords[ 2 ] = normalize( coords[ 2 ] );\\n\\tcoords[ 3 ] = normalize( coords[ 3 ] );\\n\\tvec3 vectorFormFactor = vec3( 0.0 );\\n\\tvectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 0 ], coords[ 1 ] );\\n\\tvectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 1 ], coords[ 2 ] );\\n\\tvectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 2 ], coords[ 3 ] );\\n\\tvectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 3 ], coords[ 0 ] );\\n\\tfloat result = LTC_ClippedSphereFormFactor( vectorFormFactor );\\n\\treturn vec3( result );\\n}\\nfloat G_BlinnPhong_Implicit( ) {\\n\\treturn 0.25;\\n}\\nfloat D_BlinnPhong( const in float shininess, const in float dotNH ) {\\n\\treturn RECIPROCAL_PI * ( shininess * 0.5 + 1.0 ) * pow( dotNH, shininess );\\n}\\nvec3 BRDF_BlinnPhong( const in vec3 lightDir, const in vec3 viewDir, const in vec3 normal, const in vec3 specularColor, const in float shininess ) {\\n\\tvec3 halfDir = normalize( lightDir + viewDir );\\n\\tfloat dotNH = saturate( dot( normal, halfDir ) );\\n\\tfloat dotVH = saturate( dot( viewDir, halfDir ) );\\n\\tvec3 F = F_Schlick( specularColor, 1.0, dotVH );\\n\\tfloat G = G_BlinnPhong_Implicit( );\\n\\tfloat D = D_BlinnPhong( shininess, dotNH );\\n\\treturn F * ( G * D );\\n}\\n#if defined( USE_SHEEN )\\nfloat D_Charlie( float roughness, float dotNH ) {\\n\\tfloat alpha = pow2( roughness );\\n\\tfloat invAlpha = 1.0 / alpha;\\n\\tfloat cos2h = dotNH * dotNH;\\n\\tfloat sin2h = max( 1.0 - cos2h, 0.0078125 );\\n\\treturn ( 2.0 + invAlpha ) * pow( sin2h, invAlpha * 0.5 ) / ( 2.0 * PI );\\n}\\nfloat V_Neubelt( float dotNV, float dotNL ) {\\n\\treturn saturate( 1.0 / ( 4.0 * ( dotNL + dotNV - dotNL * dotNV ) ) );\\n}\\nvec3 BRDF_Sheen( const in vec3 lightDir, const in vec3 viewDir, const in vec3 normal, vec3 sheenColor, const in float sheenRoughness ) {\\n\\tvec3 halfDir = normalize( lightDir + viewDir );\\n\\tfloat dotNL = saturate( dot( normal, lightDir ) );\\n\\tfloat dotNV = saturate( dot( normal, viewDir ) );\\n\\tfloat dotNH = saturate( dot( normal, halfDir ) );\\n\\tfloat D = D_Charlie( sheenRoughness, dotNH );\\n\\tfloat V = V_Neubelt( dotNV, dotNL );\\n\\treturn sheenColor * ( D * V );\\n}\\n#endif\";\n\nvar iridescence_fragment = \"#ifdef USE_IRIDESCENCE\\nconst mat3 XYZ_TO_REC709 = mat3(\\n 3.2404542, -0.9692660, 0.0556434,\\n -1.5371385, 1.8760108, -0.2040259,\\n -0.4985314, 0.0415560, 1.0572252\\n);\\nvec3 Fresnel0ToIor( vec3 fresnel0 ) {\\n vec3 sqrtF0 = sqrt( fresnel0 );\\n return ( vec3( 1.0 ) + sqrtF0 ) / ( vec3( 1.0 ) - sqrtF0 );\\n}\\nvec3 IorToFresnel0( vec3 transmittedIor, float incidentIor ) {\\n return pow2( ( transmittedIor - vec3( incidentIor ) ) / ( transmittedIor + vec3( incidentIor ) ) );\\n}\\nfloat IorToFresnel0( float transmittedIor, float incidentIor ) {\\n return pow2( ( transmittedIor - incidentIor ) / ( transmittedIor + incidentIor ));\\n}\\nvec3 evalSensitivity( float OPD, vec3 shift ) {\\n float phase = 2.0 * PI * OPD * 1.0e-9;\\n vec3 val = vec3( 5.4856e-13, 4.4201e-13, 5.2481e-13 );\\n vec3 pos = vec3( 1.6810e+06, 1.7953e+06, 2.2084e+06 );\\n vec3 var = vec3( 4.3278e+09, 9.3046e+09, 6.6121e+09 );\\n vec3 xyz = val * sqrt( 2.0 * PI * var ) * cos( pos * phase + shift ) * exp( -pow2( phase ) * var );\\n xyz.x += 9.7470e-14 * sqrt( 2.0 * PI * 4.5282e+09 ) * cos( 2.2399e+06 * phase + shift[0] ) * exp( -4.5282e+09 * pow2( phase ) );\\n xyz /= 1.0685e-7;\\n vec3 srgb = XYZ_TO_REC709 * xyz;\\n return srgb;\\n}\\nvec3 evalIridescence( float outsideIOR, float eta2, float cosTheta1, float thinFilmThickness, vec3 baseF0 ) {\\n vec3 I;\\n float iridescenceIOR = mix( outsideIOR, eta2, smoothstep( 0.0, 0.03, thinFilmThickness ) );\\n float sinTheta2Sq = pow2( outsideIOR / iridescenceIOR ) * ( 1.0 - pow2( cosTheta1 ) );\\n float cosTheta2Sq = 1.0 - sinTheta2Sq;\\n if ( cosTheta2Sq < 0.0 ) {\\n return vec3( 1.0 );\\n }\\n float cosTheta2 = sqrt( cosTheta2Sq );\\n float R0 = IorToFresnel0( iridescenceIOR, outsideIOR );\\n float R12 = F_Schlick( R0, 1.0, cosTheta1 );\\n float R21 = R12;\\n float T121 = 1.0 - R12;\\n float phi12 = 0.0;\\n if ( iridescenceIOR < outsideIOR ) phi12 = PI;\\n float phi21 = PI - phi12;\\n vec3 baseIOR = Fresnel0ToIor( clamp( baseF0, 0.0, 0.9999 ) ); vec3 R1 = IorToFresnel0( baseIOR, iridescenceIOR );\\n vec3 R23 = F_Schlick( R1, 1.0, cosTheta2 );\\n vec3 phi23 = vec3( 0.0 );\\n if ( baseIOR[0] < iridescenceIOR ) phi23[0] = PI;\\n if ( baseIOR[1] < iridescenceIOR ) phi23[1] = PI;\\n if ( baseIOR[2] < iridescenceIOR ) phi23[2] = PI;\\n float OPD = 2.0 * iridescenceIOR * thinFilmThickness * cosTheta2;\\n vec3 phi = vec3( phi21 ) + phi23;\\n vec3 R123 = clamp( R12 * R23, 1e-5, 0.9999 );\\n vec3 r123 = sqrt( R123 );\\n vec3 Rs = pow2( T121 ) * R23 / ( vec3( 1.0 ) - R123 );\\n vec3 C0 = R12 + Rs;\\n I = C0;\\n vec3 Cm = Rs - T121;\\n for ( int m = 1; m <= 2; ++m ) {\\n Cm *= r123;\\n vec3 Sm = 2.0 * evalSensitivity( float( m ) * OPD, float( m ) * phi );\\n I += Cm * Sm;\\n }\\n return max( I, vec3( 0.0 ) );\\n}\\n#endif\";\n\nvar bumpmap_pars_fragment = \"#ifdef USE_BUMPMAP\\n\\tuniform sampler2D bumpMap;\\n\\tuniform float bumpScale;\\n\\tvec2 dHdxy_fwd() {\\n\\t\\tvec2 dSTdx = dFdx( vUv );\\n\\t\\tvec2 dSTdy = dFdy( vUv );\\n\\t\\tfloat Hll = bumpScale * texture2D( bumpMap, vUv ).x;\\n\\t\\tfloat dBx = bumpScale * texture2D( bumpMap, vUv + dSTdx ).x - Hll;\\n\\t\\tfloat dBy = bumpScale * texture2D( bumpMap, vUv + dSTdy ).x - Hll;\\n\\t\\treturn vec2( dBx, dBy );\\n\\t}\\n\\tvec3 perturbNormalArb( vec3 surf_pos, vec3 surf_norm, vec2 dHdxy, float faceDirection ) {\\n\\t\\tvec3 vSigmaX = vec3( dFdx( surf_pos.x ), dFdx( surf_pos.y ), dFdx( surf_pos.z ) );\\n\\t\\tvec3 vSigmaY = vec3( dFdy( surf_pos.x ), dFdy( surf_pos.y ), dFdy( surf_pos.z ) );\\n\\t\\tvec3 vN = surf_norm;\\n\\t\\tvec3 R1 = cross( vSigmaY, vN );\\n\\t\\tvec3 R2 = cross( vN, vSigmaX );\\n\\t\\tfloat fDet = dot( vSigmaX, R1 ) * faceDirection;\\n\\t\\tvec3 vGrad = sign( fDet ) * ( dHdxy.x * R1 + dHdxy.y * R2 );\\n\\t\\treturn normalize( abs( fDet ) * surf_norm - vGrad );\\n\\t}\\n#endif\";\n\nvar clipping_planes_fragment = \"#if NUM_CLIPPING_PLANES > 0\\n\\tvec4 plane;\\n\\t#pragma unroll_loop_start\\n\\tfor ( int i = 0; i < UNION_CLIPPING_PLANES; i ++ ) {\\n\\t\\tplane = clippingPlanes[ i ];\\n\\t\\tif ( dot( vClipPosition, plane.xyz ) > plane.w ) discard;\\n\\t}\\n\\t#pragma unroll_loop_end\\n\\t#if UNION_CLIPPING_PLANES < NUM_CLIPPING_PLANES\\n\\t\\tbool clipped = true;\\n\\t\\t#pragma unroll_loop_start\\n\\t\\tfor ( int i = UNION_CLIPPING_PLANES; i < NUM_CLIPPING_PLANES; i ++ ) {\\n\\t\\t\\tplane = clippingPlanes[ i ];\\n\\t\\t\\tclipped = ( dot( vClipPosition, plane.xyz ) > plane.w ) && clipped;\\n\\t\\t}\\n\\t\\t#pragma unroll_loop_end\\n\\t\\tif ( clipped ) discard;\\n\\t#endif\\n#endif\";\n\nvar clipping_planes_pars_fragment = \"#if NUM_CLIPPING_PLANES > 0\\n\\tvarying vec3 vClipPosition;\\n\\tuniform vec4 clippingPlanes[ NUM_CLIPPING_PLANES ];\\n#endif\";\n\nvar clipping_planes_pars_vertex = \"#if NUM_CLIPPING_PLANES > 0\\n\\tvarying vec3 vClipPosition;\\n#endif\";\n\nvar clipping_planes_vertex = \"#if NUM_CLIPPING_PLANES > 0\\n\\tvClipPosition = - mvPosition.xyz;\\n#endif\";\n\nvar color_fragment = \"#if defined( USE_COLOR_ALPHA )\\n\\tdiffuseColor *= vColor;\\n#elif defined( USE_COLOR )\\n\\tdiffuseColor.rgb *= vColor;\\n#endif\";\n\nvar color_pars_fragment = \"#if defined( USE_COLOR_ALPHA )\\n\\tvarying vec4 vColor;\\n#elif defined( USE_COLOR )\\n\\tvarying vec3 vColor;\\n#endif\";\n\nvar color_pars_vertex = \"#if defined( USE_COLOR_ALPHA )\\n\\tvarying vec4 vColor;\\n#elif defined( USE_COLOR ) || defined( USE_INSTANCING_COLOR )\\n\\tvarying vec3 vColor;\\n#endif\";\n\nvar color_vertex = \"#if defined( USE_COLOR_ALPHA )\\n\\tvColor = vec4( 1.0 );\\n#elif defined( USE_COLOR ) || defined( USE_INSTANCING_COLOR )\\n\\tvColor = vec3( 1.0 );\\n#endif\\n#ifdef USE_COLOR\\n\\tvColor *= color;\\n#endif\\n#ifdef USE_INSTANCING_COLOR\\n\\tvColor.xyz *= instanceColor.xyz;\\n#endif\";\n\nvar common = \"#define PI 3.141592653589793\\n#define PI2 6.283185307179586\\n#define PI_HALF 1.5707963267948966\\n#define RECIPROCAL_PI 0.3183098861837907\\n#define RECIPROCAL_PI2 0.15915494309189535\\n#define EPSILON 1e-6\\n#ifndef saturate\\n#define saturate( a ) clamp( a, 0.0, 1.0 )\\n#endif\\n#define whiteComplement( a ) ( 1.0 - saturate( a ) )\\nfloat pow2( const in float x ) { return x*x; }\\nvec3 pow2( const in vec3 x ) { return x*x; }\\nfloat pow3( const in float x ) { return x*x*x; }\\nfloat pow4( const in float x ) { float x2 = x*x; return x2*x2; }\\nfloat max3( const in vec3 v ) { return max( max( v.x, v.y ), v.z ); }\\nfloat average( const in vec3 color ) { return dot( color, vec3( 0.3333 ) ); }\\nhighp float rand( const in vec2 uv ) {\\n\\tconst highp float a = 12.9898, b = 78.233, c = 43758.5453;\\n\\thighp float dt = dot( uv.xy, vec2( a,b ) ), sn = mod( dt, PI );\\n\\treturn fract( sin( sn ) * c );\\n}\\n#ifdef HIGH_PRECISION\\n\\tfloat precisionSafeLength( vec3 v ) { return length( v ); }\\n#else\\n\\tfloat precisionSafeLength( vec3 v ) {\\n\\t\\tfloat maxComponent = max3( abs( v ) );\\n\\t\\treturn length( v / maxComponent ) * maxComponent;\\n\\t}\\n#endif\\nstruct IncidentLight {\\n\\tvec3 color;\\n\\tvec3 direction;\\n\\tbool visible;\\n};\\nstruct ReflectedLight {\\n\\tvec3 directDiffuse;\\n\\tvec3 directSpecular;\\n\\tvec3 indirectDiffuse;\\n\\tvec3 indirectSpecular;\\n};\\nstruct GeometricContext {\\n\\tvec3 position;\\n\\tvec3 normal;\\n\\tvec3 viewDir;\\n#ifdef USE_CLEARCOAT\\n\\tvec3 clearcoatNormal;\\n#endif\\n};\\nvec3 transformDirection( in vec3 dir, in mat4 matrix ) {\\n\\treturn normalize( ( matrix * vec4( dir, 0.0 ) ).xyz );\\n}\\nvec3 inverseTransformDirection( in vec3 dir, in mat4 matrix ) {\\n\\treturn normalize( ( vec4( dir, 0.0 ) * matrix ).xyz );\\n}\\nmat3 transposeMat3( const in mat3 m ) {\\n\\tmat3 tmp;\\n\\ttmp[ 0 ] = vec3( m[ 0 ].x, m[ 1 ].x, m[ 2 ].x );\\n\\ttmp[ 1 ] = vec3( m[ 0 ].y, m[ 1 ].y, m[ 2 ].y );\\n\\ttmp[ 2 ] = vec3( m[ 0 ].z, m[ 1 ].z, m[ 2 ].z );\\n\\treturn tmp;\\n}\\nfloat linearToRelativeLuminance( const in vec3 color ) {\\n\\tvec3 weights = vec3( 0.2126, 0.7152, 0.0722 );\\n\\treturn dot( weights, color.rgb );\\n}\\nbool isPerspectiveMatrix( mat4 m ) {\\n\\treturn m[ 2 ][ 3 ] == - 1.0;\\n}\\nvec2 equirectUv( in vec3 dir ) {\\n\\tfloat u = atan( dir.z, dir.x ) * RECIPROCAL_PI2 + 0.5;\\n\\tfloat v = asin( clamp( dir.y, - 1.0, 1.0 ) ) * RECIPROCAL_PI + 0.5;\\n\\treturn vec2( u, v );\\n}\";\n\nvar cube_uv_reflection_fragment = \"#ifdef ENVMAP_TYPE_CUBE_UV\\n\\t#define cubeUV_minMipLevel 4.0\\n\\t#define cubeUV_minTileSize 16.0\\n\\tfloat getFace( vec3 direction ) {\\n\\t\\tvec3 absDirection = abs( direction );\\n\\t\\tfloat face = - 1.0;\\n\\t\\tif ( absDirection.x > absDirection.z ) {\\n\\t\\t\\tif ( absDirection.x > absDirection.y )\\n\\t\\t\\t\\tface = direction.x > 0.0 ? 0.0 : 3.0;\\n\\t\\t\\telse\\n\\t\\t\\t\\tface = direction.y > 0.0 ? 1.0 : 4.0;\\n\\t\\t} else {\\n\\t\\t\\tif ( absDirection.z > absDirection.y )\\n\\t\\t\\t\\tface = direction.z > 0.0 ? 2.0 : 5.0;\\n\\t\\t\\telse\\n\\t\\t\\t\\tface = direction.y > 0.0 ? 1.0 : 4.0;\\n\\t\\t}\\n\\t\\treturn face;\\n\\t}\\n\\tvec2 getUV( vec3 direction, float face ) {\\n\\t\\tvec2 uv;\\n\\t\\tif ( face == 0.0 ) {\\n\\t\\t\\tuv = vec2( direction.z, direction.y ) / abs( direction.x );\\n\\t\\t} else if ( face == 1.0 ) {\\n\\t\\t\\tuv = vec2( - direction.x, - direction.z ) / abs( direction.y );\\n\\t\\t} else if ( face == 2.0 ) {\\n\\t\\t\\tuv = vec2( - direction.x, direction.y ) / abs( direction.z );\\n\\t\\t} else if ( face == 3.0 ) {\\n\\t\\t\\tuv = vec2( - direction.z, direction.y ) / abs( direction.x );\\n\\t\\t} else if ( face == 4.0 ) {\\n\\t\\t\\tuv = vec2( - direction.x, direction.z ) / abs( direction.y );\\n\\t\\t} else {\\n\\t\\t\\tuv = vec2( direction.x, direction.y ) / abs( direction.z );\\n\\t\\t}\\n\\t\\treturn 0.5 * ( uv + 1.0 );\\n\\t}\\n\\tvec3 bilinearCubeUV( sampler2D envMap, vec3 direction, float mipInt ) {\\n\\t\\tfloat face = getFace( direction );\\n\\t\\tfloat filterInt = max( cubeUV_minMipLevel - mipInt, 0.0 );\\n\\t\\tmipInt = max( mipInt, cubeUV_minMipLevel );\\n\\t\\tfloat faceSize = exp2( mipInt );\\n\\t\\tvec2 uv = getUV( direction, face ) * ( faceSize - 2.0 ) + 1.0;\\n\\t\\tif ( face > 2.0 ) {\\n\\t\\t\\tuv.y += faceSize;\\n\\t\\t\\tface -= 3.0;\\n\\t\\t}\\n\\t\\tuv.x += face * faceSize;\\n\\t\\tuv.x += filterInt * 3.0 * cubeUV_minTileSize;\\n\\t\\tuv.y += 4.0 * ( exp2( CUBEUV_MAX_MIP ) - faceSize );\\n\\t\\tuv.x *= CUBEUV_TEXEL_WIDTH;\\n\\t\\tuv.y *= CUBEUV_TEXEL_HEIGHT;\\n\\t\\t#ifdef texture2DGradEXT\\n\\t\\t\\treturn texture2DGradEXT( envMap, uv, vec2( 0.0 ), vec2( 0.0 ) ).rgb;\\n\\t\\t#else\\n\\t\\t\\treturn texture2D( envMap, uv ).rgb;\\n\\t\\t#endif\\n\\t}\\n\\t#define r0 1.0\\n\\t#define v0 0.339\\n\\t#define m0 - 2.0\\n\\t#define r1 0.8\\n\\t#define v1 0.276\\n\\t#define m1 - 1.0\\n\\t#define r4 0.4\\n\\t#define v4 0.046\\n\\t#define m4 2.0\\n\\t#define r5 0.305\\n\\t#define v5 0.016\\n\\t#define m5 3.0\\n\\t#define r6 0.21\\n\\t#define v6 0.0038\\n\\t#define m6 4.0\\n\\tfloat roughnessToMip( float roughness ) {\\n\\t\\tfloat mip = 0.0;\\n\\t\\tif ( roughness >= r1 ) {\\n\\t\\t\\tmip = ( r0 - roughness ) * ( m1 - m0 ) / ( r0 - r1 ) + m0;\\n\\t\\t} else if ( roughness >= r4 ) {\\n\\t\\t\\tmip = ( r1 - roughness ) * ( m4 - m1 ) / ( r1 - r4 ) + m1;\\n\\t\\t} else if ( roughness >= r5 ) {\\n\\t\\t\\tmip = ( r4 - roughness ) * ( m5 - m4 ) / ( r4 - r5 ) + m4;\\n\\t\\t} else if ( roughness >= r6 ) {\\n\\t\\t\\tmip = ( r5 - roughness ) * ( m6 - m5 ) / ( r5 - r6 ) + m5;\\n\\t\\t} else {\\n\\t\\t\\tmip = - 2.0 * log2( 1.16 * roughness );\\t\\t}\\n\\t\\treturn mip;\\n\\t}\\n\\tvec4 textureCubeUV( sampler2D envMap, vec3 sampleDir, float roughness ) {\\n\\t\\tfloat mip = clamp( roughnessToMip( roughness ), m0, CUBEUV_MAX_MIP );\\n\\t\\tfloat mipF = fract( mip );\\n\\t\\tfloat mipInt = floor( mip );\\n\\t\\tvec3 color0 = bilinearCubeUV( envMap, sampleDir, mipInt );\\n\\t\\tif ( mipF == 0.0 ) {\\n\\t\\t\\treturn vec4( color0, 1.0 );\\n\\t\\t} else {\\n\\t\\t\\tvec3 color1 = bilinearCubeUV( envMap, sampleDir, mipInt + 1.0 );\\n\\t\\t\\treturn vec4( mix( color0, color1, mipF ), 1.0 );\\n\\t\\t}\\n\\t}\\n#endif\";\n\nvar defaultnormal_vertex = \"vec3 transformedNormal = objectNormal;\\n#ifdef USE_INSTANCING\\n\\tmat3 m = mat3( instanceMatrix );\\n\\ttransformedNormal /= vec3( dot( m[ 0 ], m[ 0 ] ), dot( m[ 1 ], m[ 1 ] ), dot( m[ 2 ], m[ 2 ] ) );\\n\\ttransformedNormal = m * transformedNormal;\\n#endif\\ntransformedNormal = normalMatrix * transformedNormal;\\n#ifdef FLIP_SIDED\\n\\ttransformedNormal = - transformedNormal;\\n#endif\\n#ifdef USE_TANGENT\\n\\tvec3 transformedTangent = ( modelViewMatrix * vec4( objectTangent, 0.0 ) ).xyz;\\n\\t#ifdef FLIP_SIDED\\n\\t\\ttransformedTangent = - transformedTangent;\\n\\t#endif\\n#endif\";\n\nvar displacementmap_pars_vertex = \"#ifdef USE_DISPLACEMENTMAP\\n\\tuniform sampler2D displacementMap;\\n\\tuniform float displacementScale;\\n\\tuniform float displacementBias;\\n#endif\";\n\nvar displacementmap_vertex = \"#ifdef USE_DISPLACEMENTMAP\\n\\ttransformed += normalize( objectNormal ) * ( texture2D( displacementMap, vUv ).x * displacementScale + displacementBias );\\n#endif\";\n\nvar emissivemap_fragment = \"#ifdef USE_EMISSIVEMAP\\n\\tvec4 emissiveColor = texture2D( emissiveMap, vUv );\\n\\ttotalEmissiveRadiance *= emissiveColor.rgb;\\n#endif\";\n\nvar emissivemap_pars_fragment = \"#ifdef USE_EMISSIVEMAP\\n\\tuniform sampler2D emissiveMap;\\n#endif\";\n\nvar encodings_fragment = \"gl_FragColor = linearToOutputTexel( gl_FragColor );\";\n\nvar encodings_pars_fragment = \"vec4 LinearToLinear( in vec4 value ) {\\n\\treturn value;\\n}\\nvec4 LinearTosRGB( in vec4 value ) {\\n\\treturn vec4( mix( pow( value.rgb, vec3( 0.41666 ) ) * 1.055 - vec3( 0.055 ), value.rgb * 12.92, vec3( lessThanEqual( value.rgb, vec3( 0.0031308 ) ) ) ), value.a );\\n}\";\n\nvar envmap_fragment = \"#ifdef USE_ENVMAP\\n\\t#ifdef ENV_WORLDPOS\\n\\t\\tvec3 cameraToFrag;\\n\\t\\tif ( isOrthographic ) {\\n\\t\\t\\tcameraToFrag = normalize( vec3( - viewMatrix[ 0 ][ 2 ], - viewMatrix[ 1 ][ 2 ], - viewMatrix[ 2 ][ 2 ] ) );\\n\\t\\t} else {\\n\\t\\t\\tcameraToFrag = normalize( vWorldPosition - cameraPosition );\\n\\t\\t}\\n\\t\\tvec3 worldNormal = inverseTransformDirection( normal, viewMatrix );\\n\\t\\t#ifdef ENVMAP_MODE_REFLECTION\\n\\t\\t\\tvec3 reflectVec = reflect( cameraToFrag, worldNormal );\\n\\t\\t#else\\n\\t\\t\\tvec3 reflectVec = refract( cameraToFrag, worldNormal, refractionRatio );\\n\\t\\t#endif\\n\\t#else\\n\\t\\tvec3 reflectVec = vReflect;\\n\\t#endif\\n\\t#ifdef ENVMAP_TYPE_CUBE\\n\\t\\tvec4 envColor = textureCube( envMap, vec3( flipEnvMap * reflectVec.x, reflectVec.yz ) );\\n\\t#elif defined( ENVMAP_TYPE_CUBE_UV )\\n\\t\\tvec4 envColor = textureCubeUV( envMap, reflectVec, 0.0 );\\n\\t#else\\n\\t\\tvec4 envColor = vec4( 0.0 );\\n\\t#endif\\n\\t#ifdef ENVMAP_BLENDING_MULTIPLY\\n\\t\\toutgoingLight = mix( outgoingLight, outgoingLight * envColor.xyz, specularStrength * reflectivity );\\n\\t#elif defined( ENVMAP_BLENDING_MIX )\\n\\t\\toutgoingLight = mix( outgoingLight, envColor.xyz, specularStrength * reflectivity );\\n\\t#elif defined( ENVMAP_BLENDING_ADD )\\n\\t\\toutgoingLight += envColor.xyz * specularStrength * reflectivity;\\n\\t#endif\\n#endif\";\n\nvar envmap_common_pars_fragment = \"#ifdef USE_ENVMAP\\n\\tuniform float envMapIntensity;\\n\\tuniform float flipEnvMap;\\n\\t#ifdef ENVMAP_TYPE_CUBE\\n\\t\\tuniform samplerCube envMap;\\n\\t#else\\n\\t\\tuniform sampler2D envMap;\\n\\t#endif\\n\\t\\n#endif\";\n\nvar envmap_pars_fragment = \"#ifdef USE_ENVMAP\\n\\tuniform float reflectivity;\\n\\t#if defined( USE_BUMPMAP ) || defined( USE_NORMALMAP ) || defined( PHONG )\\n\\t\\t#define ENV_WORLDPOS\\n\\t#endif\\n\\t#ifdef ENV_WORLDPOS\\n\\t\\tvarying vec3 vWorldPosition;\\n\\t\\tuniform float refractionRatio;\\n\\t#else\\n\\t\\tvarying vec3 vReflect;\\n\\t#endif\\n#endif\";\n\nvar envmap_pars_vertex = \"#ifdef USE_ENVMAP\\n\\t#if defined( USE_BUMPMAP ) || defined( USE_NORMALMAP ) ||defined( PHONG )\\n\\t\\t#define ENV_WORLDPOS\\n\\t#endif\\n\\t#ifdef ENV_WORLDPOS\\n\\t\\t\\n\\t\\tvarying vec3 vWorldPosition;\\n\\t#else\\n\\t\\tvarying vec3 vReflect;\\n\\t\\tuniform float refractionRatio;\\n\\t#endif\\n#endif\";\n\nvar envmap_vertex = \"#ifdef USE_ENVMAP\\n\\t#ifdef ENV_WORLDPOS\\n\\t\\tvWorldPosition = worldPosition.xyz;\\n\\t#else\\n\\t\\tvec3 cameraToVertex;\\n\\t\\tif ( isOrthographic ) {\\n\\t\\t\\tcameraToVertex = normalize( vec3( - viewMatrix[ 0 ][ 2 ], - viewMatrix[ 1 ][ 2 ], - viewMatrix[ 2 ][ 2 ] ) );\\n\\t\\t} else {\\n\\t\\t\\tcameraToVertex = normalize( worldPosition.xyz - cameraPosition );\\n\\t\\t}\\n\\t\\tvec3 worldNormal = inverseTransformDirection( transformedNormal, viewMatrix );\\n\\t\\t#ifdef ENVMAP_MODE_REFLECTION\\n\\t\\t\\tvReflect = reflect( cameraToVertex, worldNormal );\\n\\t\\t#else\\n\\t\\t\\tvReflect = refract( cameraToVertex, worldNormal, refractionRatio );\\n\\t\\t#endif\\n\\t#endif\\n#endif\";\n\nvar fog_vertex = \"#ifdef USE_FOG\\n\\tvFogDepth = - mvPosition.z;\\n#endif\";\n\nvar fog_pars_vertex = \"#ifdef USE_FOG\\n\\tvarying float vFogDepth;\\n#endif\";\n\nvar fog_fragment = \"#ifdef USE_FOG\\n\\t#ifdef FOG_EXP2\\n\\t\\tfloat fogFactor = 1.0 - exp( - fogDensity * fogDensity * vFogDepth * vFogDepth );\\n\\t#else\\n\\t\\tfloat fogFactor = smoothstep( fogNear, fogFar, vFogDepth );\\n\\t#endif\\n\\tgl_FragColor.rgb = mix( gl_FragColor.rgb, fogColor, fogFactor );\\n#endif\";\n\nvar fog_pars_fragment = \"#ifdef USE_FOG\\n\\tuniform vec3 fogColor;\\n\\tvarying float vFogDepth;\\n\\t#ifdef FOG_EXP2\\n\\t\\tuniform float fogDensity;\\n\\t#else\\n\\t\\tuniform float fogNear;\\n\\t\\tuniform float fogFar;\\n\\t#endif\\n#endif\";\n\nvar gradientmap_pars_fragment = \"#ifdef USE_GRADIENTMAP\\n\\tuniform sampler2D gradientMap;\\n#endif\\nvec3 getGradientIrradiance( vec3 normal, vec3 lightDirection ) {\\n\\tfloat dotNL = dot( normal, lightDirection );\\n\\tvec2 coord = vec2( dotNL * 0.5 + 0.5, 0.0 );\\n\\t#ifdef USE_GRADIENTMAP\\n\\t\\treturn vec3( texture2D( gradientMap, coord ).r );\\n\\t#else\\n\\t\\treturn ( coord.x < 0.7 ) ? vec3( 0.7 ) : vec3( 1.0 );\\n\\t#endif\\n}\";\n\nvar lightmap_fragment = \"#ifdef USE_LIGHTMAP\\n\\tvec4 lightMapTexel = texture2D( lightMap, vUv2 );\\n\\tvec3 lightMapIrradiance = lightMapTexel.rgb * lightMapIntensity;\\n\\treflectedLight.indirectDiffuse += lightMapIrradiance;\\n#endif\";\n\nvar lightmap_pars_fragment = \"#ifdef USE_LIGHTMAP\\n\\tuniform sampler2D lightMap;\\n\\tuniform float lightMapIntensity;\\n#endif\";\n\nvar lights_lambert_vertex = \"vec3 diffuse = vec3( 1.0 );\\nGeometricContext geometry;\\ngeometry.position = mvPosition.xyz;\\ngeometry.normal = normalize( transformedNormal );\\ngeometry.viewDir = ( isOrthographic ) ? vec3( 0, 0, 1 ) : normalize( -mvPosition.xyz );\\nGeometricContext backGeometry;\\nbackGeometry.position = geometry.position;\\nbackGeometry.normal = -geometry.normal;\\nbackGeometry.viewDir = geometry.viewDir;\\nvLightFront = vec3( 0.0 );\\nvIndirectFront = vec3( 0.0 );\\n#ifdef DOUBLE_SIDED\\n\\tvLightBack = vec3( 0.0 );\\n\\tvIndirectBack = vec3( 0.0 );\\n#endif\\nIncidentLight directLight;\\nfloat dotNL;\\nvec3 directLightColor_Diffuse;\\nvIndirectFront += getAmbientLightIrradiance( ambientLightColor );\\nvIndirectFront += getLightProbeIrradiance( lightProbe, geometry.normal );\\n#ifdef DOUBLE_SIDED\\n\\tvIndirectBack += getAmbientLightIrradiance( ambientLightColor );\\n\\tvIndirectBack += getLightProbeIrradiance( lightProbe, backGeometry.normal );\\n#endif\\n#if NUM_POINT_LIGHTS > 0\\n\\t#pragma unroll_loop_start\\n\\tfor ( int i = 0; i < NUM_POINT_LIGHTS; i ++ ) {\\n\\t\\tgetPointLightInfo( pointLights[ i ], geometry, directLight );\\n\\t\\tdotNL = dot( geometry.normal, directLight.direction );\\n\\t\\tdirectLightColor_Diffuse = directLight.color;\\n\\t\\tvLightFront += saturate( dotNL ) * directLightColor_Diffuse;\\n\\t\\t#ifdef DOUBLE_SIDED\\n\\t\\t\\tvLightBack += saturate( - dotNL ) * directLightColor_Diffuse;\\n\\t\\t#endif\\n\\t}\\n\\t#pragma unroll_loop_end\\n#endif\\n#if NUM_SPOT_LIGHTS > 0\\n\\t#pragma unroll_loop_start\\n\\tfor ( int i = 0; i < NUM_SPOT_LIGHTS; i ++ ) {\\n\\t\\tgetSpotLightInfo( spotLights[ i ], geometry, directLight );\\n\\t\\tdotNL = dot( geometry.normal, directLight.direction );\\n\\t\\tdirectLightColor_Diffuse = directLight.color;\\n\\t\\tvLightFront += saturate( dotNL ) * directLightColor_Diffuse;\\n\\t\\t#ifdef DOUBLE_SIDED\\n\\t\\t\\tvLightBack += saturate( - dotNL ) * directLightColor_Diffuse;\\n\\t\\t#endif\\n\\t}\\n\\t#pragma unroll_loop_end\\n#endif\\n#if NUM_DIR_LIGHTS > 0\\n\\t#pragma unroll_loop_start\\n\\tfor ( int i = 0; i < NUM_DIR_LIGHTS; i ++ ) {\\n\\t\\tgetDirectionalLightInfo( directionalLights[ i ], geometry, directLight );\\n\\t\\tdotNL = dot( geometry.normal, directLight.direction );\\n\\t\\tdirectLightColor_Diffuse = directLight.color;\\n\\t\\tvLightFront += saturate( dotNL ) * directLightColor_Diffuse;\\n\\t\\t#ifdef DOUBLE_SIDED\\n\\t\\t\\tvLightBack += saturate( - dotNL ) * directLightColor_Diffuse;\\n\\t\\t#endif\\n\\t}\\n\\t#pragma unroll_loop_end\\n#endif\\n#if NUM_HEMI_LIGHTS > 0\\n\\t#pragma unroll_loop_start\\n\\tfor ( int i = 0; i < NUM_HEMI_LIGHTS; i ++ ) {\\n\\t\\tvIndirectFront += getHemisphereLightIrradiance( hemisphereLights[ i ], geometry.normal );\\n\\t\\t#ifdef DOUBLE_SIDED\\n\\t\\t\\tvIndirectBack += getHemisphereLightIrradiance( hemisphereLights[ i ], backGeometry.normal );\\n\\t\\t#endif\\n\\t}\\n\\t#pragma unroll_loop_end\\n#endif\";\n\nvar lights_pars_begin = \"uniform bool receiveShadow;\\nuniform vec3 ambientLightColor;\\nuniform vec3 lightProbe[ 9 ];\\nvec3 shGetIrradianceAt( in vec3 normal, in vec3 shCoefficients[ 9 ] ) {\\n\\tfloat x = normal.x, y = normal.y, z = normal.z;\\n\\tvec3 result = shCoefficients[ 0 ] * 0.886227;\\n\\tresult += shCoefficients[ 1 ] * 2.0 * 0.511664 * y;\\n\\tresult += shCoefficients[ 2 ] * 2.0 * 0.511664 * z;\\n\\tresult += shCoefficients[ 3 ] * 2.0 * 0.511664 * x;\\n\\tresult += shCoefficients[ 4 ] * 2.0 * 0.429043 * x * y;\\n\\tresult += shCoefficients[ 5 ] * 2.0 * 0.429043 * y * z;\\n\\tresult += shCoefficients[ 6 ] * ( 0.743125 * z * z - 0.247708 );\\n\\tresult += shCoefficients[ 7 ] * 2.0 * 0.429043 * x * z;\\n\\tresult += shCoefficients[ 8 ] * 0.429043 * ( x * x - y * y );\\n\\treturn result;\\n}\\nvec3 getLightProbeIrradiance( const in vec3 lightProbe[ 9 ], const in vec3 normal ) {\\n\\tvec3 worldNormal = inverseTransformDirection( normal, viewMatrix );\\n\\tvec3 irradiance = shGetIrradianceAt( worldNormal, lightProbe );\\n\\treturn irradiance;\\n}\\nvec3 getAmbientLightIrradiance( const in vec3 ambientLightColor ) {\\n\\tvec3 irradiance = ambientLightColor;\\n\\treturn irradiance;\\n}\\nfloat getDistanceAttenuation( const in float lightDistance, const in float cutoffDistance, const in float decayExponent ) {\\n\\t#if defined ( PHYSICALLY_CORRECT_LIGHTS )\\n\\t\\tfloat distanceFalloff = 1.0 / max( pow( lightDistance, decayExponent ), 0.01 );\\n\\t\\tif ( cutoffDistance > 0.0 ) {\\n\\t\\t\\tdistanceFalloff *= pow2( saturate( 1.0 - pow4( lightDistance / cutoffDistance ) ) );\\n\\t\\t}\\n\\t\\treturn distanceFalloff;\\n\\t#else\\n\\t\\tif ( cutoffDistance > 0.0 && decayExponent > 0.0 ) {\\n\\t\\t\\treturn pow( saturate( - lightDistance / cutoffDistance + 1.0 ), decayExponent );\\n\\t\\t}\\n\\t\\treturn 1.0;\\n\\t#endif\\n}\\nfloat getSpotAttenuation( const in float coneCosine, const in float penumbraCosine, const in float angleCosine ) {\\n\\treturn smoothstep( coneCosine, penumbraCosine, angleCosine );\\n}\\n#if NUM_DIR_LIGHTS > 0\\n\\tstruct DirectionalLight {\\n\\t\\tvec3 direction;\\n\\t\\tvec3 color;\\n\\t};\\n\\tuniform DirectionalLight directionalLights[ NUM_DIR_LIGHTS ];\\n\\tvoid getDirectionalLightInfo( const in DirectionalLight directionalLight, const in GeometricContext geometry, out IncidentLight light ) {\\n\\t\\tlight.color = directionalLight.color;\\n\\t\\tlight.direction = directionalLight.direction;\\n\\t\\tlight.visible = true;\\n\\t}\\n#endif\\n#if NUM_POINT_LIGHTS > 0\\n\\tstruct PointLight {\\n\\t\\tvec3 position;\\n\\t\\tvec3 color;\\n\\t\\tfloat distance;\\n\\t\\tfloat decay;\\n\\t};\\n\\tuniform PointLight pointLights[ NUM_POINT_LIGHTS ];\\n\\tvoid getPointLightInfo( const in PointLight pointLight, const in GeometricContext geometry, out IncidentLight light ) {\\n\\t\\tvec3 lVector = pointLight.position - geometry.position;\\n\\t\\tlight.direction = normalize( lVector );\\n\\t\\tfloat lightDistance = length( lVector );\\n\\t\\tlight.color = pointLight.color;\\n\\t\\tlight.color *= getDistanceAttenuation( lightDistance, pointLight.distance, pointLight.decay );\\n\\t\\tlight.visible = ( light.color != vec3( 0.0 ) );\\n\\t}\\n#endif\\n#if NUM_SPOT_LIGHTS > 0\\n\\tstruct SpotLight {\\n\\t\\tvec3 position;\\n\\t\\tvec3 direction;\\n\\t\\tvec3 color;\\n\\t\\tfloat distance;\\n\\t\\tfloat decay;\\n\\t\\tfloat coneCos;\\n\\t\\tfloat penumbraCos;\\n\\t};\\n\\tuniform SpotLight spotLights[ NUM_SPOT_LIGHTS ];\\n\\tvoid getSpotLightInfo( const in SpotLight spotLight, const in GeometricContext geometry, out IncidentLight light ) {\\n\\t\\tvec3 lVector = spotLight.position - geometry.position;\\n\\t\\tlight.direction = normalize( lVector );\\n\\t\\tfloat angleCos = dot( light.direction, spotLight.direction );\\n\\t\\tfloat spotAttenuation = getSpotAttenuation( spotLight.coneCos, spotLight.penumbraCos, angleCos );\\n\\t\\tif ( spotAttenuation > 0.0 ) {\\n\\t\\t\\tfloat lightDistance = length( lVector );\\n\\t\\t\\tlight.color = spotLight.color * spotAttenuation;\\n\\t\\t\\tlight.color *= getDistanceAttenuation( lightDistance, spotLight.distance, spotLight.decay );\\n\\t\\t\\tlight.visible = ( light.color != vec3( 0.0 ) );\\n\\t\\t} else {\\n\\t\\t\\tlight.color = vec3( 0.0 );\\n\\t\\t\\tlight.visible = false;\\n\\t\\t}\\n\\t}\\n#endif\\n#if NUM_RECT_AREA_LIGHTS > 0\\n\\tstruct RectAreaLight {\\n\\t\\tvec3 color;\\n\\t\\tvec3 position;\\n\\t\\tvec3 halfWidth;\\n\\t\\tvec3 halfHeight;\\n\\t};\\n\\tuniform sampler2D ltc_1;\\tuniform sampler2D ltc_2;\\n\\tuniform RectAreaLight rectAreaLights[ NUM_RECT_AREA_LIGHTS ];\\n#endif\\n#if NUM_HEMI_LIGHTS > 0\\n\\tstruct HemisphereLight {\\n\\t\\tvec3 direction;\\n\\t\\tvec3 skyColor;\\n\\t\\tvec3 groundColor;\\n\\t};\\n\\tuniform HemisphereLight hemisphereLights[ NUM_HEMI_LIGHTS ];\\n\\tvec3 getHemisphereLightIrradiance( const in HemisphereLight hemiLight, const in vec3 normal ) {\\n\\t\\tfloat dotNL = dot( normal, hemiLight.direction );\\n\\t\\tfloat hemiDiffuseWeight = 0.5 * dotNL + 0.5;\\n\\t\\tvec3 irradiance = mix( hemiLight.groundColor, hemiLight.skyColor, hemiDiffuseWeight );\\n\\t\\treturn irradiance;\\n\\t}\\n#endif\";\n\nvar envmap_physical_pars_fragment = \"#if defined( USE_ENVMAP )\\n\\tvec3 getIBLIrradiance( const in vec3 normal ) {\\n\\t\\t#if defined( ENVMAP_TYPE_CUBE_UV )\\n\\t\\t\\tvec3 worldNormal = inverseTransformDirection( normal, viewMatrix );\\n\\t\\t\\tvec4 envMapColor = textureCubeUV( envMap, worldNormal, 1.0 );\\n\\t\\t\\treturn PI * envMapColor.rgb * envMapIntensity;\\n\\t\\t#else\\n\\t\\t\\treturn vec3( 0.0 );\\n\\t\\t#endif\\n\\t}\\n\\tvec3 getIBLRadiance( const in vec3 viewDir, const in vec3 normal, const in float roughness ) {\\n\\t\\t#if defined( ENVMAP_TYPE_CUBE_UV )\\n\\t\\t\\tvec3 reflectVec = reflect( - viewDir, normal );\\n\\t\\t\\treflectVec = normalize( mix( reflectVec, normal, roughness * roughness) );\\n\\t\\t\\treflectVec = inverseTransformDirection( reflectVec, viewMatrix );\\n\\t\\t\\tvec4 envMapColor = textureCubeUV( envMap, reflectVec, roughness );\\n\\t\\t\\treturn envMapColor.rgb * envMapIntensity;\\n\\t\\t#else\\n\\t\\t\\treturn vec3( 0.0 );\\n\\t\\t#endif\\n\\t}\\n#endif\";\n\nvar lights_toon_fragment = \"ToonMaterial material;\\nmaterial.diffuseColor = diffuseColor.rgb;\";\n\nvar lights_toon_pars_fragment = \"varying vec3 vViewPosition;\\nstruct ToonMaterial {\\n\\tvec3 diffuseColor;\\n};\\nvoid RE_Direct_Toon( const in IncidentLight directLight, const in GeometricContext geometry, const in ToonMaterial material, inout ReflectedLight reflectedLight ) {\\n\\tvec3 irradiance = getGradientIrradiance( geometry.normal, directLight.direction ) * directLight.color;\\n\\treflectedLight.directDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );\\n}\\nvoid RE_IndirectDiffuse_Toon( const in vec3 irradiance, const in GeometricContext geometry, const in ToonMaterial material, inout ReflectedLight reflectedLight ) {\\n\\treflectedLight.indirectDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );\\n}\\n#define RE_Direct\\t\\t\\t\\tRE_Direct_Toon\\n#define RE_IndirectDiffuse\\t\\tRE_IndirectDiffuse_Toon\\n#define Material_LightProbeLOD( material )\\t(0)\";\n\nvar lights_phong_fragment = \"BlinnPhongMaterial material;\\nmaterial.diffuseColor = diffuseColor.rgb;\\nmaterial.specularColor = specular;\\nmaterial.specularShininess = shininess;\\nmaterial.specularStrength = specularStrength;\";\n\nvar lights_phong_pars_fragment = \"varying vec3 vViewPosition;\\nstruct BlinnPhongMaterial {\\n\\tvec3 diffuseColor;\\n\\tvec3 specularColor;\\n\\tfloat specularShininess;\\n\\tfloat specularStrength;\\n};\\nvoid RE_Direct_BlinnPhong( const in IncidentLight directLight, const in GeometricContext geometry, const in BlinnPhongMaterial material, inout ReflectedLight reflectedLight ) {\\n\\tfloat dotNL = saturate( dot( geometry.normal, directLight.direction ) );\\n\\tvec3 irradiance = dotNL * directLight.color;\\n\\treflectedLight.directDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );\\n\\treflectedLight.directSpecular += irradiance * BRDF_BlinnPhong( directLight.direction, geometry.viewDir, geometry.normal, material.specularColor, material.specularShininess ) * material.specularStrength;\\n}\\nvoid RE_IndirectDiffuse_BlinnPhong( const in vec3 irradiance, const in GeometricContext geometry, const in BlinnPhongMaterial material, inout ReflectedLight reflectedLight ) {\\n\\treflectedLight.indirectDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );\\n}\\n#define RE_Direct\\t\\t\\t\\tRE_Direct_BlinnPhong\\n#define RE_IndirectDiffuse\\t\\tRE_IndirectDiffuse_BlinnPhong\\n#define Material_LightProbeLOD( material )\\t(0)\";\n\nvar lights_physical_fragment = \"PhysicalMaterial material;\\nmaterial.diffuseColor = diffuseColor.rgb * ( 1.0 - metalnessFactor );\\nvec3 dxy = max( abs( dFdx( geometryNormal ) ), abs( dFdy( geometryNormal ) ) );\\nfloat geometryRoughness = max( max( dxy.x, dxy.y ), dxy.z );\\nmaterial.roughness = max( roughnessFactor, 0.0525 );material.roughness += geometryRoughness;\\nmaterial.roughness = min( material.roughness, 1.0 );\\n#ifdef IOR\\n\\t#ifdef SPECULAR\\n\\t\\tfloat specularIntensityFactor = specularIntensity;\\n\\t\\tvec3 specularColorFactor = specularColor;\\n\\t\\t#ifdef USE_SPECULARINTENSITYMAP\\n\\t\\t\\tspecularIntensityFactor *= texture2D( specularIntensityMap, vUv ).a;\\n\\t\\t#endif\\n\\t\\t#ifdef USE_SPECULARCOLORMAP\\n\\t\\t\\tspecularColorFactor *= texture2D( specularColorMap, vUv ).rgb;\\n\\t\\t#endif\\n\\t\\tmaterial.specularF90 = mix( specularIntensityFactor, 1.0, metalnessFactor );\\n\\t#else\\n\\t\\tfloat specularIntensityFactor = 1.0;\\n\\t\\tvec3 specularColorFactor = vec3( 1.0 );\\n\\t\\tmaterial.specularF90 = 1.0;\\n\\t#endif\\n\\tmaterial.specularColor = mix( min( pow2( ( ior - 1.0 ) / ( ior + 1.0 ) ) * specularColorFactor, vec3( 1.0 ) ) * specularIntensityFactor, diffuseColor.rgb, metalnessFactor );\\n#else\\n\\tmaterial.specularColor = mix( vec3( 0.04 ), diffuseColor.rgb, metalnessFactor );\\n\\tmaterial.specularF90 = 1.0;\\n#endif\\n#ifdef USE_CLEARCOAT\\n\\tmaterial.clearcoat = clearcoat;\\n\\tmaterial.clearcoatRoughness = clearcoatRoughness;\\n\\tmaterial.clearcoatF0 = vec3( 0.04 );\\n\\tmaterial.clearcoatF90 = 1.0;\\n\\t#ifdef USE_CLEARCOATMAP\\n\\t\\tmaterial.clearcoat *= texture2D( clearcoatMap, vUv ).x;\\n\\t#endif\\n\\t#ifdef USE_CLEARCOAT_ROUGHNESSMAP\\n\\t\\tmaterial.clearcoatRoughness *= texture2D( clearcoatRoughnessMap, vUv ).y;\\n\\t#endif\\n\\tmaterial.clearcoat = saturate( material.clearcoat );\\tmaterial.clearcoatRoughness = max( material.clearcoatRoughness, 0.0525 );\\n\\tmaterial.clearcoatRoughness += geometryRoughness;\\n\\tmaterial.clearcoatRoughness = min( material.clearcoatRoughness, 1.0 );\\n#endif\\n#ifdef USE_IRIDESCENCE\\n\\tmaterial.iridescence = iridescence;\\n\\tmaterial.iridescenceIOR = iridescenceIOR;\\n\\t#ifdef USE_IRIDESCENCEMAP\\n\\t\\tmaterial.iridescence *= texture2D( iridescenceMap, vUv ).r;\\n\\t#endif\\n\\t#ifdef USE_IRIDESCENCE_THICKNESSMAP\\n\\t\\tmaterial.iridescenceThickness = (iridescenceThicknessMaximum - iridescenceThicknessMinimum) * texture2D( iridescenceThicknessMap, vUv ).g + iridescenceThicknessMinimum;\\n\\t#else\\n\\t\\tmaterial.iridescenceThickness = iridescenceThicknessMaximum;\\n\\t#endif\\n#endif\\n#ifdef USE_SHEEN\\n\\tmaterial.sheenColor = sheenColor;\\n\\t#ifdef USE_SHEENCOLORMAP\\n\\t\\tmaterial.sheenColor *= texture2D( sheenColorMap, vUv ).rgb;\\n\\t#endif\\n\\tmaterial.sheenRoughness = clamp( sheenRoughness, 0.07, 1.0 );\\n\\t#ifdef USE_SHEENROUGHNESSMAP\\n\\t\\tmaterial.sheenRoughness *= texture2D( sheenRoughnessMap, vUv ).a;\\n\\t#endif\\n#endif\";\n\nvar lights_physical_pars_fragment = \"struct PhysicalMaterial {\\n\\tvec3 diffuseColor;\\n\\tfloat roughness;\\n\\tvec3 specularColor;\\n\\tfloat specularF90;\\n\\t#ifdef USE_CLEARCOAT\\n\\t\\tfloat clearcoat;\\n\\t\\tfloat clearcoatRoughness;\\n\\t\\tvec3 clearcoatF0;\\n\\t\\tfloat clearcoatF90;\\n\\t#endif\\n\\t#ifdef USE_IRIDESCENCE\\n\\t\\tfloat iridescence;\\n\\t\\tfloat iridescenceIOR;\\n\\t\\tfloat iridescenceThickness;\\n\\t\\tvec3 iridescenceFresnel;\\n\\t\\tvec3 iridescenceF0;\\n\\t#endif\\n\\t#ifdef USE_SHEEN\\n\\t\\tvec3 sheenColor;\\n\\t\\tfloat sheenRoughness;\\n\\t#endif\\n};\\nvec3 clearcoatSpecular = vec3( 0.0 );\\nvec3 sheenSpecular = vec3( 0.0 );\\nfloat IBLSheenBRDF( const in vec3 normal, const in vec3 viewDir, const in float roughness) {\\n\\tfloat dotNV = saturate( dot( normal, viewDir ) );\\n\\tfloat r2 = roughness * roughness;\\n\\tfloat a = roughness < 0.25 ? -339.2 * r2 + 161.4 * roughness - 25.9 : -8.48 * r2 + 14.3 * roughness - 9.95;\\n\\tfloat b = roughness < 0.25 ? 44.0 * r2 - 23.7 * roughness + 3.26 : 1.97 * r2 - 3.27 * roughness + 0.72;\\n\\tfloat DG = exp( a * dotNV + b ) + ( roughness < 0.25 ? 0.0 : 0.1 * ( roughness - 0.25 ) );\\n\\treturn saturate( DG * RECIPROCAL_PI );\\n}\\nvec2 DFGApprox( const in vec3 normal, const in vec3 viewDir, const in float roughness ) {\\n\\tfloat dotNV = saturate( dot( normal, viewDir ) );\\n\\tconst vec4 c0 = vec4( - 1, - 0.0275, - 0.572, 0.022 );\\n\\tconst vec4 c1 = vec4( 1, 0.0425, 1.04, - 0.04 );\\n\\tvec4 r = roughness * c0 + c1;\\n\\tfloat a004 = min( r.x * r.x, exp2( - 9.28 * dotNV ) ) * r.x + r.y;\\n\\tvec2 fab = vec2( - 1.04, 1.04 ) * a004 + r.zw;\\n\\treturn fab;\\n}\\nvec3 EnvironmentBRDF( const in vec3 normal, const in vec3 viewDir, const in vec3 specularColor, const in float specularF90, const in float roughness ) {\\n\\tvec2 fab = DFGApprox( normal, viewDir, roughness );\\n\\treturn specularColor * fab.x + specularF90 * fab.y;\\n}\\n#ifdef USE_IRIDESCENCE\\nvoid computeMultiscatteringIridescence( const in vec3 normal, const in vec3 viewDir, const in vec3 specularColor, const in float specularF90, const in float iridescence, const in vec3 iridescenceF0, const in float roughness, inout vec3 singleScatter, inout vec3 multiScatter ) {\\n#else\\nvoid computeMultiscattering( const in vec3 normal, const in vec3 viewDir, const in vec3 specularColor, const in float specularF90, const in float roughness, inout vec3 singleScatter, inout vec3 multiScatter ) {\\n#endif\\n\\tvec2 fab = DFGApprox( normal, viewDir, roughness );\\n\\t#ifdef USE_IRIDESCENCE\\n\\t\\tvec3 Fr = mix( specularColor, iridescenceF0, iridescence );\\n\\t#else\\n\\t\\tvec3 Fr = specularColor;\\n\\t#endif\\n\\tvec3 FssEss = Fr * fab.x + specularF90 * fab.y;\\n\\tfloat Ess = fab.x + fab.y;\\n\\tfloat Ems = 1.0 - Ess;\\n\\tvec3 Favg = Fr + ( 1.0 - Fr ) * 0.047619;\\tvec3 Fms = FssEss * Favg / ( 1.0 - Ems * Favg );\\n\\tsingleScatter += FssEss;\\n\\tmultiScatter += Fms * Ems;\\n}\\n#if NUM_RECT_AREA_LIGHTS > 0\\n\\tvoid RE_Direct_RectArea_Physical( const in RectAreaLight rectAreaLight, const in GeometricContext geometry, const in PhysicalMaterial material, inout ReflectedLight reflectedLight ) {\\n\\t\\tvec3 normal = geometry.normal;\\n\\t\\tvec3 viewDir = geometry.viewDir;\\n\\t\\tvec3 position = geometry.position;\\n\\t\\tvec3 lightPos = rectAreaLight.position;\\n\\t\\tvec3 halfWidth = rectAreaLight.halfWidth;\\n\\t\\tvec3 halfHeight = rectAreaLight.halfHeight;\\n\\t\\tvec3 lightColor = rectAreaLight.color;\\n\\t\\tfloat roughness = material.roughness;\\n\\t\\tvec3 rectCoords[ 4 ];\\n\\t\\trectCoords[ 0 ] = lightPos + halfWidth - halfHeight;\\t\\trectCoords[ 1 ] = lightPos - halfWidth - halfHeight;\\n\\t\\trectCoords[ 2 ] = lightPos - halfWidth + halfHeight;\\n\\t\\trectCoords[ 3 ] = lightPos + halfWidth + halfHeight;\\n\\t\\tvec2 uv = LTC_Uv( normal, viewDir, roughness );\\n\\t\\tvec4 t1 = texture2D( ltc_1, uv );\\n\\t\\tvec4 t2 = texture2D( ltc_2, uv );\\n\\t\\tmat3 mInv = mat3(\\n\\t\\t\\tvec3( t1.x, 0, t1.y ),\\n\\t\\t\\tvec3( 0, 1, 0 ),\\n\\t\\t\\tvec3( t1.z, 0, t1.w )\\n\\t\\t);\\n\\t\\tvec3 fresnel = ( material.specularColor * t2.x + ( vec3( 1.0 ) - material.specularColor ) * t2.y );\\n\\t\\treflectedLight.directSpecular += lightColor * fresnel * LTC_Evaluate( normal, viewDir, position, mInv, rectCoords );\\n\\t\\treflectedLight.directDiffuse += lightColor * material.diffuseColor * LTC_Evaluate( normal, viewDir, position, mat3( 1.0 ), rectCoords );\\n\\t}\\n#endif\\nvoid RE_Direct_Physical( const in IncidentLight directLight, const in GeometricContext geometry, const in PhysicalMaterial material, inout ReflectedLight reflectedLight ) {\\n\\tfloat dotNL = saturate( dot( geometry.normal, directLight.direction ) );\\n\\tvec3 irradiance = dotNL * directLight.color;\\n\\t#ifdef USE_CLEARCOAT\\n\\t\\tfloat dotNLcc = saturate( dot( geometry.clearcoatNormal, directLight.direction ) );\\n\\t\\tvec3 ccIrradiance = dotNLcc * directLight.color;\\n\\t\\tclearcoatSpecular += ccIrradiance * BRDF_GGX( directLight.direction, geometry.viewDir, geometry.clearcoatNormal, material.clearcoatF0, material.clearcoatF90, material.clearcoatRoughness );\\n\\t#endif\\n\\t#ifdef USE_SHEEN\\n\\t\\tsheenSpecular += irradiance * BRDF_Sheen( directLight.direction, geometry.viewDir, geometry.normal, material.sheenColor, material.sheenRoughness );\\n\\t#endif\\n\\t#ifdef USE_IRIDESCENCE\\n\\t\\treflectedLight.directSpecular += irradiance * BRDF_GGX_Iridescence( directLight.direction, geometry.viewDir, geometry.normal, material.specularColor, material.specularF90, material.iridescence, material.iridescenceFresnel, material.roughness );\\n\\t#else\\n\\t\\treflectedLight.directSpecular += irradiance * BRDF_GGX( directLight.direction, geometry.viewDir, geometry.normal, material.specularColor, material.specularF90, material.roughness );\\n\\t#endif\\n\\treflectedLight.directDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );\\n}\\nvoid RE_IndirectDiffuse_Physical( const in vec3 irradiance, const in GeometricContext geometry, const in PhysicalMaterial material, inout ReflectedLight reflectedLight ) {\\n\\treflectedLight.indirectDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );\\n}\\nvoid RE_IndirectSpecular_Physical( const in vec3 radiance, const in vec3 irradiance, const in vec3 clearcoatRadiance, const in GeometricContext geometry, const in PhysicalMaterial material, inout ReflectedLight reflectedLight) {\\n\\t#ifdef USE_CLEARCOAT\\n\\t\\tclearcoatSpecular += clearcoatRadiance * EnvironmentBRDF( geometry.clearcoatNormal, geometry.viewDir, material.clearcoatF0, material.clearcoatF90, material.clearcoatRoughness );\\n\\t#endif\\n\\t#ifdef USE_SHEEN\\n\\t\\tsheenSpecular += irradiance * material.sheenColor * IBLSheenBRDF( geometry.normal, geometry.viewDir, material.sheenRoughness );\\n\\t#endif\\n\\tvec3 singleScattering = vec3( 0.0 );\\n\\tvec3 multiScattering = vec3( 0.0 );\\n\\tvec3 cosineWeightedIrradiance = irradiance * RECIPROCAL_PI;\\n\\t#ifdef USE_IRIDESCENCE\\n\\t\\tcomputeMultiscatteringIridescence( geometry.normal, geometry.viewDir, material.specularColor, material.specularF90, material.iridescence, material.iridescenceFresnel, material.roughness, singleScattering, multiScattering );\\n\\t#else\\n\\t\\tcomputeMultiscattering( geometry.normal, geometry.viewDir, material.specularColor, material.specularF90, material.roughness, singleScattering, multiScattering );\\n\\t#endif\\n\\tvec3 totalScattering = singleScattering + multiScattering;\\n\\tvec3 diffuse = material.diffuseColor * ( 1.0 - max( max( totalScattering.r, totalScattering.g ), totalScattering.b ) );\\n\\treflectedLight.indirectSpecular += radiance * singleScattering;\\n\\treflectedLight.indirectSpecular += multiScattering * cosineWeightedIrradiance;\\n\\treflectedLight.indirectDiffuse += diffuse * cosineWeightedIrradiance;\\n}\\n#define RE_Direct\\t\\t\\t\\tRE_Direct_Physical\\n#define RE_Direct_RectArea\\t\\tRE_Direct_RectArea_Physical\\n#define RE_IndirectDiffuse\\t\\tRE_IndirectDiffuse_Physical\\n#define RE_IndirectSpecular\\t\\tRE_IndirectSpecular_Physical\\nfloat computeSpecularOcclusion( const in float dotNV, const in float ambientOcclusion, const in float roughness ) {\\n\\treturn saturate( pow( dotNV + ambientOcclusion, exp2( - 16.0 * roughness - 1.0 ) ) - 1.0 + ambientOcclusion );\\n}\";\n\nvar lights_fragment_begin = \"\\nGeometricContext geometry;\\ngeometry.position = - vViewPosition;\\ngeometry.normal = normal;\\ngeometry.viewDir = ( isOrthographic ) ? vec3( 0, 0, 1 ) : normalize( vViewPosition );\\n#ifdef USE_CLEARCOAT\\n\\tgeometry.clearcoatNormal = clearcoatNormal;\\n#endif\\n#ifdef USE_IRIDESCENCE\\nfloat dotNVi = saturate( dot( normal, geometry.viewDir ) );\\nif ( material.iridescenceThickness == 0.0 ) {\\n\\tmaterial.iridescence = 0.0;\\n} else {\\n\\tmaterial.iridescence = saturate( material.iridescence );\\n}\\nif ( material.iridescence > 0.0 ) {\\n\\tmaterial.iridescenceFresnel = evalIridescence( 1.0, material.iridescenceIOR, dotNVi, material.iridescenceThickness, material.specularColor );\\n\\tmaterial.iridescenceF0 = Schlick_to_F0( material.iridescenceFresnel, 1.0, dotNVi );\\n}\\n#endif\\nIncidentLight directLight;\\n#if ( NUM_POINT_LIGHTS > 0 ) && defined( RE_Direct )\\n\\tPointLight pointLight;\\n\\t#if defined( USE_SHADOWMAP ) && NUM_POINT_LIGHT_SHADOWS > 0\\n\\tPointLightShadow pointLightShadow;\\n\\t#endif\\n\\t#pragma unroll_loop_start\\n\\tfor ( int i = 0; i < NUM_POINT_LIGHTS; i ++ ) {\\n\\t\\tpointLight = pointLights[ i ];\\n\\t\\tgetPointLightInfo( pointLight, geometry, directLight );\\n\\t\\t#if defined( USE_SHADOWMAP ) && ( UNROLLED_LOOP_INDEX < NUM_POINT_LIGHT_SHADOWS )\\n\\t\\tpointLightShadow = pointLightShadows[ i ];\\n\\t\\tdirectLight.color *= all( bvec2( directLight.visible, receiveShadow ) ) ? getPointShadow( pointShadowMap[ i ], pointLightShadow.shadowMapSize, pointLightShadow.shadowBias, pointLightShadow.shadowRadius, vPointShadowCoord[ i ], pointLightShadow.shadowCameraNear, pointLightShadow.shadowCameraFar ) : 1.0;\\n\\t\\t#endif\\n\\t\\tRE_Direct( directLight, geometry, material, reflectedLight );\\n\\t}\\n\\t#pragma unroll_loop_end\\n#endif\\n#if ( NUM_SPOT_LIGHTS > 0 ) && defined( RE_Direct )\\n\\tSpotLight spotLight;\\n\\t#if defined( USE_SHADOWMAP ) && NUM_SPOT_LIGHT_SHADOWS > 0\\n\\tSpotLightShadow spotLightShadow;\\n\\t#endif\\n\\t#pragma unroll_loop_start\\n\\tfor ( int i = 0; i < NUM_SPOT_LIGHTS; i ++ ) {\\n\\t\\tspotLight = spotLights[ i ];\\n\\t\\tgetSpotLightInfo( spotLight, geometry, directLight );\\n\\t\\t#if defined( USE_SHADOWMAP ) && ( UNROLLED_LOOP_INDEX < NUM_SPOT_LIGHT_SHADOWS )\\n\\t\\tspotLightShadow = spotLightShadows[ i ];\\n\\t\\tdirectLight.color *= all( bvec2( directLight.visible, receiveShadow ) ) ? getShadow( spotShadowMap[ i ], spotLightShadow.shadowMapSize, spotLightShadow.shadowBias, spotLightShadow.shadowRadius, vSpotShadowCoord[ i ] ) : 1.0;\\n\\t\\t#endif\\n\\t\\tRE_Direct( directLight, geometry, material, reflectedLight );\\n\\t}\\n\\t#pragma unroll_loop_end\\n#endif\\n#if ( NUM_DIR_LIGHTS > 0 ) && defined( RE_Direct )\\n\\tDirectionalLight directionalLight;\\n\\t#if defined( USE_SHADOWMAP ) && NUM_DIR_LIGHT_SHADOWS > 0\\n\\tDirectionalLightShadow directionalLightShadow;\\n\\t#endif\\n\\t#pragma unroll_loop_start\\n\\tfor ( int i = 0; i < NUM_DIR_LIGHTS; i ++ ) {\\n\\t\\tdirectionalLight = directionalLights[ i ];\\n\\t\\tgetDirectionalLightInfo( directionalLight, geometry, directLight );\\n\\t\\t#if defined( USE_SHADOWMAP ) && ( UNROLLED_LOOP_INDEX < NUM_DIR_LIGHT_SHADOWS )\\n\\t\\tdirectionalLightShadow = directionalLightShadows[ i ];\\n\\t\\tdirectLight.color *= all( bvec2( directLight.visible, receiveShadow ) ) ? getShadow( directionalShadowMap[ i ], directionalLightShadow.shadowMapSize, directionalLightShadow.shadowBias, directionalLightShadow.shadowRadius, vDirectionalShadowCoord[ i ] ) : 1.0;\\n\\t\\t#endif\\n\\t\\tRE_Direct( directLight, geometry, material, reflectedLight );\\n\\t}\\n\\t#pragma unroll_loop_end\\n#endif\\n#if ( NUM_RECT_AREA_LIGHTS > 0 ) && defined( RE_Direct_RectArea )\\n\\tRectAreaLight rectAreaLight;\\n\\t#pragma unroll_loop_start\\n\\tfor ( int i = 0; i < NUM_RECT_AREA_LIGHTS; i ++ ) {\\n\\t\\trectAreaLight = rectAreaLights[ i ];\\n\\t\\tRE_Direct_RectArea( rectAreaLight, geometry, material, reflectedLight );\\n\\t}\\n\\t#pragma unroll_loop_end\\n#endif\\n#if defined( RE_IndirectDiffuse )\\n\\tvec3 iblIrradiance = vec3( 0.0 );\\n\\tvec3 irradiance = getAmbientLightIrradiance( ambientLightColor );\\n\\tirradiance += getLightProbeIrradiance( lightProbe, geometry.normal );\\n\\t#if ( NUM_HEMI_LIGHTS > 0 )\\n\\t\\t#pragma unroll_loop_start\\n\\t\\tfor ( int i = 0; i < NUM_HEMI_LIGHTS; i ++ ) {\\n\\t\\t\\tirradiance += getHemisphereLightIrradiance( hemisphereLights[ i ], geometry.normal );\\n\\t\\t}\\n\\t\\t#pragma unroll_loop_end\\n\\t#endif\\n#endif\\n#if defined( RE_IndirectSpecular )\\n\\tvec3 radiance = vec3( 0.0 );\\n\\tvec3 clearcoatRadiance = vec3( 0.0 );\\n#endif\";\n\nvar lights_fragment_maps = \"#if defined( RE_IndirectDiffuse )\\n\\t#ifdef USE_LIGHTMAP\\n\\t\\tvec4 lightMapTexel = texture2D( lightMap, vUv2 );\\n\\t\\tvec3 lightMapIrradiance = lightMapTexel.rgb * lightMapIntensity;\\n\\t\\tirradiance += lightMapIrradiance;\\n\\t#endif\\n\\t#if defined( USE_ENVMAP ) && defined( STANDARD ) && defined( ENVMAP_TYPE_CUBE_UV )\\n\\t\\tiblIrradiance += getIBLIrradiance( geometry.normal );\\n\\t#endif\\n#endif\\n#if defined( USE_ENVMAP ) && defined( RE_IndirectSpecular )\\n\\tradiance += getIBLRadiance( geometry.viewDir, geometry.normal, material.roughness );\\n\\t#ifdef USE_CLEARCOAT\\n\\t\\tclearcoatRadiance += getIBLRadiance( geometry.viewDir, geometry.clearcoatNormal, material.clearcoatRoughness );\\n\\t#endif\\n#endif\";\n\nvar lights_fragment_end = \"#if defined( RE_IndirectDiffuse )\\n\\tRE_IndirectDiffuse( irradiance, geometry, material, reflectedLight );\\n#endif\\n#if defined( RE_IndirectSpecular )\\n\\tRE_IndirectSpecular( radiance, iblIrradiance, clearcoatRadiance, geometry, material, reflectedLight );\\n#endif\";\n\nvar logdepthbuf_fragment = \"#if defined( USE_LOGDEPTHBUF ) && defined( USE_LOGDEPTHBUF_EXT )\\n\\tgl_FragDepthEXT = vIsPerspective == 0.0 ? gl_FragCoord.z : log2( vFragDepth ) * logDepthBufFC * 0.5;\\n#endif\";\n\nvar logdepthbuf_pars_fragment = \"#if defined( USE_LOGDEPTHBUF ) && defined( USE_LOGDEPTHBUF_EXT )\\n\\tuniform float logDepthBufFC;\\n\\tvarying float vFragDepth;\\n\\tvarying float vIsPerspective;\\n#endif\";\n\nvar logdepthbuf_pars_vertex = \"#ifdef USE_LOGDEPTHBUF\\n\\t#ifdef USE_LOGDEPTHBUF_EXT\\n\\t\\tvarying float vFragDepth;\\n\\t\\tvarying float vIsPerspective;\\n\\t#else\\n\\t\\tuniform float logDepthBufFC;\\n\\t#endif\\n#endif\";\n\nvar logdepthbuf_vertex = \"#ifdef USE_LOGDEPTHBUF\\n\\t#ifdef USE_LOGDEPTHBUF_EXT\\n\\t\\tvFragDepth = 1.0 + gl_Position.w;\\n\\t\\tvIsPerspective = float( isPerspectiveMatrix( projectionMatrix ) );\\n\\t#else\\n\\t\\tif ( isPerspectiveMatrix( projectionMatrix ) ) {\\n\\t\\t\\tgl_Position.z = log2( max( EPSILON, gl_Position.w + 1.0 ) ) * logDepthBufFC - 1.0;\\n\\t\\t\\tgl_Position.z *= gl_Position.w;\\n\\t\\t}\\n\\t#endif\\n#endif\";\n\nvar map_fragment = \"#ifdef USE_MAP\\n\\tvec4 sampledDiffuseColor = texture2D( map, vUv );\\n\\t#ifdef DECODE_VIDEO_TEXTURE\\n\\t\\tsampledDiffuseColor = vec4( mix( pow( sampledDiffuseColor.rgb * 0.9478672986 + vec3( 0.0521327014 ), vec3( 2.4 ) ), sampledDiffuseColor.rgb * 0.0773993808, vec3( lessThanEqual( sampledDiffuseColor.rgb, vec3( 0.04045 ) ) ) ), sampledDiffuseColor.w );\\n\\t#endif\\n\\tdiffuseColor *= sampledDiffuseColor;\\n#endif\";\n\nvar map_pars_fragment = \"#ifdef USE_MAP\\n\\tuniform sampler2D map;\\n#endif\";\n\nvar map_particle_fragment = \"#if defined( USE_MAP ) || defined( USE_ALPHAMAP )\\n\\tvec2 uv = ( uvTransform * vec3( gl_PointCoord.x, 1.0 - gl_PointCoord.y, 1 ) ).xy;\\n#endif\\n#ifdef USE_MAP\\n\\tdiffuseColor *= texture2D( map, uv );\\n#endif\\n#ifdef USE_ALPHAMAP\\n\\tdiffuseColor.a *= texture2D( alphaMap, uv ).g;\\n#endif\";\n\nvar map_particle_pars_fragment = \"#if defined( USE_MAP ) || defined( USE_ALPHAMAP )\\n\\tuniform mat3 uvTransform;\\n#endif\\n#ifdef USE_MAP\\n\\tuniform sampler2D map;\\n#endif\\n#ifdef USE_ALPHAMAP\\n\\tuniform sampler2D alphaMap;\\n#endif\";\n\nvar metalnessmap_fragment = \"float metalnessFactor = metalness;\\n#ifdef USE_METALNESSMAP\\n\\tvec4 texelMetalness = texture2D( metalnessMap, vUv );\\n\\tmetalnessFactor *= texelMetalness.b;\\n#endif\";\n\nvar metalnessmap_pars_fragment = \"#ifdef USE_METALNESSMAP\\n\\tuniform sampler2D metalnessMap;\\n#endif\";\n\nvar morphcolor_vertex = \"#if defined( USE_MORPHCOLORS ) && defined( MORPHTARGETS_TEXTURE )\\n\\tvColor *= morphTargetBaseInfluence;\\n\\tfor ( int i = 0; i < MORPHTARGETS_COUNT; i ++ ) {\\n\\t\\t#if defined( USE_COLOR_ALPHA )\\n\\t\\t\\tif ( morphTargetInfluences[ i ] != 0.0 ) vColor += getMorph( gl_VertexID, i, 2 ) * morphTargetInfluences[ i ];\\n\\t\\t#elif defined( USE_COLOR )\\n\\t\\t\\tif ( morphTargetInfluences[ i ] != 0.0 ) vColor += getMorph( gl_VertexID, i, 2 ).rgb * morphTargetInfluences[ i ];\\n\\t\\t#endif\\n\\t}\\n#endif\";\n\nvar morphnormal_vertex = \"#ifdef USE_MORPHNORMALS\\n\\tobjectNormal *= morphTargetBaseInfluence;\\n\\t#ifdef MORPHTARGETS_TEXTURE\\n\\t\\tfor ( int i = 0; i < MORPHTARGETS_COUNT; i ++ ) {\\n\\t\\t\\tif ( morphTargetInfluences[ i ] != 0.0 ) objectNormal += getMorph( gl_VertexID, i, 1 ).xyz * morphTargetInfluences[ i ];\\n\\t\\t}\\n\\t#else\\n\\t\\tobjectNormal += morphNormal0 * morphTargetInfluences[ 0 ];\\n\\t\\tobjectNormal += morphNormal1 * morphTargetInfluences[ 1 ];\\n\\t\\tobjectNormal += morphNormal2 * morphTargetInfluences[ 2 ];\\n\\t\\tobjectNormal += morphNormal3 * morphTargetInfluences[ 3 ];\\n\\t#endif\\n#endif\";\n\nvar morphtarget_pars_vertex = \"#ifdef USE_MORPHTARGETS\\n\\tuniform float morphTargetBaseInfluence;\\n\\t#ifdef MORPHTARGETS_TEXTURE\\n\\t\\tuniform float morphTargetInfluences[ MORPHTARGETS_COUNT ];\\n\\t\\tuniform sampler2DArray morphTargetsTexture;\\n\\t\\tuniform ivec2 morphTargetsTextureSize;\\n\\t\\tvec4 getMorph( const in int vertexIndex, const in int morphTargetIndex, const in int offset ) {\\n\\t\\t\\tint texelIndex = vertexIndex * MORPHTARGETS_TEXTURE_STRIDE + offset;\\n\\t\\t\\tint y = texelIndex / morphTargetsTextureSize.x;\\n\\t\\t\\tint x = texelIndex - y * morphTargetsTextureSize.x;\\n\\t\\t\\tivec3 morphUV = ivec3( x, y, morphTargetIndex );\\n\\t\\t\\treturn texelFetch( morphTargetsTexture, morphUV, 0 );\\n\\t\\t}\\n\\t#else\\n\\t\\t#ifndef USE_MORPHNORMALS\\n\\t\\t\\tuniform float morphTargetInfluences[ 8 ];\\n\\t\\t#else\\n\\t\\t\\tuniform float morphTargetInfluences[ 4 ];\\n\\t\\t#endif\\n\\t#endif\\n#endif\";\n\nvar morphtarget_vertex = \"#ifdef USE_MORPHTARGETS\\n\\ttransformed *= morphTargetBaseInfluence;\\n\\t#ifdef MORPHTARGETS_TEXTURE\\n\\t\\tfor ( int i = 0; i < MORPHTARGETS_COUNT; i ++ ) {\\n\\t\\t\\tif ( morphTargetInfluences[ i ] != 0.0 ) transformed += getMorph( gl_VertexID, i, 0 ).xyz * morphTargetInfluences[ i ];\\n\\t\\t}\\n\\t#else\\n\\t\\ttransformed += morphTarget0 * morphTargetInfluences[ 0 ];\\n\\t\\ttransformed += morphTarget1 * morphTargetInfluences[ 1 ];\\n\\t\\ttransformed += morphTarget2 * morphTargetInfluences[ 2 ];\\n\\t\\ttransformed += morphTarget3 * morphTargetInfluences[ 3 ];\\n\\t\\t#ifndef USE_MORPHNORMALS\\n\\t\\t\\ttransformed += morphTarget4 * morphTargetInfluences[ 4 ];\\n\\t\\t\\ttransformed += morphTarget5 * morphTargetInfluences[ 5 ];\\n\\t\\t\\ttransformed += morphTarget6 * morphTargetInfluences[ 6 ];\\n\\t\\t\\ttransformed += morphTarget7 * morphTargetInfluences[ 7 ];\\n\\t\\t#endif\\n\\t#endif\\n#endif\";\n\nvar normal_fragment_begin = \"float faceDirection = gl_FrontFacing ? 1.0 : - 1.0;\\n#ifdef FLAT_SHADED\\n\\tvec3 fdx = vec3( dFdx( vViewPosition.x ), dFdx( vViewPosition.y ), dFdx( vViewPosition.z ) );\\n\\tvec3 fdy = vec3( dFdy( vViewPosition.x ), dFdy( vViewPosition.y ), dFdy( vViewPosition.z ) );\\n\\tvec3 normal = normalize( cross( fdx, fdy ) );\\n#else\\n\\tvec3 normal = normalize( vNormal );\\n\\t#ifdef DOUBLE_SIDED\\n\\t\\tnormal = normal * faceDirection;\\n\\t#endif\\n\\t#ifdef USE_TANGENT\\n\\t\\tvec3 tangent = normalize( vTangent );\\n\\t\\tvec3 bitangent = normalize( vBitangent );\\n\\t\\t#ifdef DOUBLE_SIDED\\n\\t\\t\\ttangent = tangent * faceDirection;\\n\\t\\t\\tbitangent = bitangent * faceDirection;\\n\\t\\t#endif\\n\\t\\t#if defined( TANGENTSPACE_NORMALMAP ) || defined( USE_CLEARCOAT_NORMALMAP )\\n\\t\\t\\tmat3 vTBN = mat3( tangent, bitangent, normal );\\n\\t\\t#endif\\n\\t#endif\\n#endif\\nvec3 geometryNormal = normal;\";\n\nvar normal_fragment_maps = \"#ifdef OBJECTSPACE_NORMALMAP\\n\\tnormal = texture2D( normalMap, vUv ).xyz * 2.0 - 1.0;\\n\\t#ifdef FLIP_SIDED\\n\\t\\tnormal = - normal;\\n\\t#endif\\n\\t#ifdef DOUBLE_SIDED\\n\\t\\tnormal = normal * faceDirection;\\n\\t#endif\\n\\tnormal = normalize( normalMatrix * normal );\\n#elif defined( TANGENTSPACE_NORMALMAP )\\n\\tvec3 mapN = texture2D( normalMap, vUv ).xyz * 2.0 - 1.0;\\n\\tmapN.xy *= normalScale;\\n\\t#ifdef USE_TANGENT\\n\\t\\tnormal = normalize( vTBN * mapN );\\n\\t#else\\n\\t\\tnormal = perturbNormal2Arb( - vViewPosition, normal, mapN, faceDirection );\\n\\t#endif\\n#elif defined( USE_BUMPMAP )\\n\\tnormal = perturbNormalArb( - vViewPosition, normal, dHdxy_fwd(), faceDirection );\\n#endif\";\n\nvar normal_pars_fragment = \"#ifndef FLAT_SHADED\\n\\tvarying vec3 vNormal;\\n\\t#ifdef USE_TANGENT\\n\\t\\tvarying vec3 vTangent;\\n\\t\\tvarying vec3 vBitangent;\\n\\t#endif\\n#endif\";\n\nvar normal_pars_vertex = \"#ifndef FLAT_SHADED\\n\\tvarying vec3 vNormal;\\n\\t#ifdef USE_TANGENT\\n\\t\\tvarying vec3 vTangent;\\n\\t\\tvarying vec3 vBitangent;\\n\\t#endif\\n#endif\";\n\nvar normal_vertex = \"#ifndef FLAT_SHADED\\n\\tvNormal = normalize( transformedNormal );\\n\\t#ifdef USE_TANGENT\\n\\t\\tvTangent = normalize( transformedTangent );\\n\\t\\tvBitangent = normalize( cross( vNormal, vTangent ) * tangent.w );\\n\\t#endif\\n#endif\";\n\nvar normalmap_pars_fragment = \"#ifdef USE_NORMALMAP\\n\\tuniform sampler2D normalMap;\\n\\tuniform vec2 normalScale;\\n#endif\\n#ifdef OBJECTSPACE_NORMALMAP\\n\\tuniform mat3 normalMatrix;\\n#endif\\n#if ! defined ( USE_TANGENT ) && ( defined ( TANGENTSPACE_NORMALMAP ) || defined ( USE_CLEARCOAT_NORMALMAP ) )\\n\\tvec3 perturbNormal2Arb( vec3 eye_pos, vec3 surf_norm, vec3 mapN, float faceDirection ) {\\n\\t\\tvec3 q0 = vec3( dFdx( eye_pos.x ), dFdx( eye_pos.y ), dFdx( eye_pos.z ) );\\n\\t\\tvec3 q1 = vec3( dFdy( eye_pos.x ), dFdy( eye_pos.y ), dFdy( eye_pos.z ) );\\n\\t\\tvec2 st0 = dFdx( vUv.st );\\n\\t\\tvec2 st1 = dFdy( vUv.st );\\n\\t\\tvec3 N = surf_norm;\\n\\t\\tvec3 q1perp = cross( q1, N );\\n\\t\\tvec3 q0perp = cross( N, q0 );\\n\\t\\tvec3 T = q1perp * st0.x + q0perp * st1.x;\\n\\t\\tvec3 B = q1perp * st0.y + q0perp * st1.y;\\n\\t\\tfloat det = max( dot( T, T ), dot( B, B ) );\\n\\t\\tfloat scale = ( det == 0.0 ) ? 0.0 : faceDirection * inversesqrt( det );\\n\\t\\treturn normalize( T * ( mapN.x * scale ) + B * ( mapN.y * scale ) + N * mapN.z );\\n\\t}\\n#endif\";\n\nvar clearcoat_normal_fragment_begin = \"#ifdef USE_CLEARCOAT\\n\\tvec3 clearcoatNormal = geometryNormal;\\n#endif\";\n\nvar clearcoat_normal_fragment_maps = \"#ifdef USE_CLEARCOAT_NORMALMAP\\n\\tvec3 clearcoatMapN = texture2D( clearcoatNormalMap, vUv ).xyz * 2.0 - 1.0;\\n\\tclearcoatMapN.xy *= clearcoatNormalScale;\\n\\t#ifdef USE_TANGENT\\n\\t\\tclearcoatNormal = normalize( vTBN * clearcoatMapN );\\n\\t#else\\n\\t\\tclearcoatNormal = perturbNormal2Arb( - vViewPosition, clearcoatNormal, clearcoatMapN, faceDirection );\\n\\t#endif\\n#endif\";\n\nvar clearcoat_pars_fragment = \"#ifdef USE_CLEARCOATMAP\\n\\tuniform sampler2D clearcoatMap;\\n#endif\\n#ifdef USE_CLEARCOAT_ROUGHNESSMAP\\n\\tuniform sampler2D clearcoatRoughnessMap;\\n#endif\\n#ifdef USE_CLEARCOAT_NORMALMAP\\n\\tuniform sampler2D clearcoatNormalMap;\\n\\tuniform vec2 clearcoatNormalScale;\\n#endif\";\n\nvar iridescence_pars_fragment = \"#ifdef USE_IRIDESCENCEMAP\\n\\tuniform sampler2D iridescenceMap;\\n#endif\\n#ifdef USE_IRIDESCENCE_THICKNESSMAP\\n\\tuniform sampler2D iridescenceThicknessMap;\\n#endif\";\n\nvar output_fragment = \"#ifdef OPAQUE\\ndiffuseColor.a = 1.0;\\n#endif\\n#ifdef USE_TRANSMISSION\\ndiffuseColor.a *= transmissionAlpha + 0.1;\\n#endif\\ngl_FragColor = vec4( outgoingLight, diffuseColor.a );\";\n\nvar packing = \"vec3 packNormalToRGB( const in vec3 normal ) {\\n\\treturn normalize( normal ) * 0.5 + 0.5;\\n}\\nvec3 unpackRGBToNormal( const in vec3 rgb ) {\\n\\treturn 2.0 * rgb.xyz - 1.0;\\n}\\nconst float PackUpscale = 256. / 255.;const float UnpackDownscale = 255. / 256.;\\nconst vec3 PackFactors = vec3( 256. * 256. * 256., 256. * 256., 256. );\\nconst vec4 UnpackFactors = UnpackDownscale / vec4( PackFactors, 1. );\\nconst float ShiftRight8 = 1. / 256.;\\nvec4 packDepthToRGBA( const in float v ) {\\n\\tvec4 r = vec4( fract( v * PackFactors ), v );\\n\\tr.yzw -= r.xyz * ShiftRight8;\\treturn r * PackUpscale;\\n}\\nfloat unpackRGBAToDepth( const in vec4 v ) {\\n\\treturn dot( v, UnpackFactors );\\n}\\nvec4 pack2HalfToRGBA( vec2 v ) {\\n\\tvec4 r = vec4( v.x, fract( v.x * 255.0 ), v.y, fract( v.y * 255.0 ) );\\n\\treturn vec4( r.x - r.y / 255.0, r.y, r.z - r.w / 255.0, r.w );\\n}\\nvec2 unpackRGBATo2Half( vec4 v ) {\\n\\treturn vec2( v.x + ( v.y / 255.0 ), v.z + ( v.w / 255.0 ) );\\n}\\nfloat viewZToOrthographicDepth( const in float viewZ, const in float near, const in float far ) {\\n\\treturn ( viewZ + near ) / ( near - far );\\n}\\nfloat orthographicDepthToViewZ( const in float linearClipZ, const in float near, const in float far ) {\\n\\treturn linearClipZ * ( near - far ) - near;\\n}\\nfloat viewZToPerspectiveDepth( const in float viewZ, const in float near, const in float far ) {\\n\\treturn ( ( near + viewZ ) * far ) / ( ( far - near ) * viewZ );\\n}\\nfloat perspectiveDepthToViewZ( const in float invClipZ, const in float near, const in float far ) {\\n\\treturn ( near * far ) / ( ( far - near ) * invClipZ - far );\\n}\";\n\nvar premultiplied_alpha_fragment = \"#ifdef PREMULTIPLIED_ALPHA\\n\\tgl_FragColor.rgb *= gl_FragColor.a;\\n#endif\";\n\nvar project_vertex = \"vec4 mvPosition = vec4( transformed, 1.0 );\\n#ifdef USE_INSTANCING\\n\\tmvPosition = instanceMatrix * mvPosition;\\n#endif\\nmvPosition = modelViewMatrix * mvPosition;\\ngl_Position = projectionMatrix * mvPosition;\";\n\nvar dithering_fragment = \"#ifdef DITHERING\\n\\tgl_FragColor.rgb = dithering( gl_FragColor.rgb );\\n#endif\";\n\nvar dithering_pars_fragment = \"#ifdef DITHERING\\n\\tvec3 dithering( vec3 color ) {\\n\\t\\tfloat grid_position = rand( gl_FragCoord.xy );\\n\\t\\tvec3 dither_shift_RGB = vec3( 0.25 / 255.0, -0.25 / 255.0, 0.25 / 255.0 );\\n\\t\\tdither_shift_RGB = mix( 2.0 * dither_shift_RGB, -2.0 * dither_shift_RGB, grid_position );\\n\\t\\treturn color + dither_shift_RGB;\\n\\t}\\n#endif\";\n\nvar roughnessmap_fragment = \"float roughnessFactor = roughness;\\n#ifdef USE_ROUGHNESSMAP\\n\\tvec4 texelRoughness = texture2D( roughnessMap, vUv );\\n\\troughnessFactor *= texelRoughness.g;\\n#endif\";\n\nvar roughnessmap_pars_fragment = \"#ifdef USE_ROUGHNESSMAP\\n\\tuniform sampler2D roughnessMap;\\n#endif\";\n\nvar shadowmap_pars_fragment = \"#ifdef USE_SHADOWMAP\\n\\t#if NUM_DIR_LIGHT_SHADOWS > 0\\n\\t\\tuniform sampler2D directionalShadowMap[ NUM_DIR_LIGHT_SHADOWS ];\\n\\t\\tvarying vec4 vDirectionalShadowCoord[ NUM_DIR_LIGHT_SHADOWS ];\\n\\t\\tstruct DirectionalLightShadow {\\n\\t\\t\\tfloat shadowBias;\\n\\t\\t\\tfloat shadowNormalBias;\\n\\t\\t\\tfloat shadowRadius;\\n\\t\\t\\tvec2 shadowMapSize;\\n\\t\\t};\\n\\t\\tuniform DirectionalLightShadow directionalLightShadows[ NUM_DIR_LIGHT_SHADOWS ];\\n\\t#endif\\n\\t#if NUM_SPOT_LIGHT_SHADOWS > 0\\n\\t\\tuniform sampler2D spotShadowMap[ NUM_SPOT_LIGHT_SHADOWS ];\\n\\t\\tvarying vec4 vSpotShadowCoord[ NUM_SPOT_LIGHT_SHADOWS ];\\n\\t\\tstruct SpotLightShadow {\\n\\t\\t\\tfloat shadowBias;\\n\\t\\t\\tfloat shadowNormalBias;\\n\\t\\t\\tfloat shadowRadius;\\n\\t\\t\\tvec2 shadowMapSize;\\n\\t\\t};\\n\\t\\tuniform SpotLightShadow spotLightShadows[ NUM_SPOT_LIGHT_SHADOWS ];\\n\\t#endif\\n\\t#if NUM_POINT_LIGHT_SHADOWS > 0\\n\\t\\tuniform sampler2D pointShadowMap[ NUM_POINT_LIGHT_SHADOWS ];\\n\\t\\tvarying vec4 vPointShadowCoord[ NUM_POINT_LIGHT_SHADOWS ];\\n\\t\\tstruct PointLightShadow {\\n\\t\\t\\tfloat shadowBias;\\n\\t\\t\\tfloat shadowNormalBias;\\n\\t\\t\\tfloat shadowRadius;\\n\\t\\t\\tvec2 shadowMapSize;\\n\\t\\t\\tfloat shadowCameraNear;\\n\\t\\t\\tfloat shadowCameraFar;\\n\\t\\t};\\n\\t\\tuniform PointLightShadow pointLightShadows[ NUM_POINT_LIGHT_SHADOWS ];\\n\\t#endif\\n\\tfloat texture2DCompare( sampler2D depths, vec2 uv, float compare ) {\\n\\t\\treturn step( compare, unpackRGBAToDepth( texture2D( depths, uv ) ) );\\n\\t}\\n\\tvec2 texture2DDistribution( sampler2D shadow, vec2 uv ) {\\n\\t\\treturn unpackRGBATo2Half( texture2D( shadow, uv ) );\\n\\t}\\n\\tfloat VSMShadow (sampler2D shadow, vec2 uv, float compare ){\\n\\t\\tfloat occlusion = 1.0;\\n\\t\\tvec2 distribution = texture2DDistribution( shadow, uv );\\n\\t\\tfloat hard_shadow = step( compare , distribution.x );\\n\\t\\tif (hard_shadow != 1.0 ) {\\n\\t\\t\\tfloat distance = compare - distribution.x ;\\n\\t\\t\\tfloat variance = max( 0.00000, distribution.y * distribution.y );\\n\\t\\t\\tfloat softness_probability = variance / (variance + distance * distance );\\t\\t\\tsoftness_probability = clamp( ( softness_probability - 0.3 ) / ( 0.95 - 0.3 ), 0.0, 1.0 );\\t\\t\\tocclusion = clamp( max( hard_shadow, softness_probability ), 0.0, 1.0 );\\n\\t\\t}\\n\\t\\treturn occlusion;\\n\\t}\\n\\tfloat getShadow( sampler2D shadowMap, vec2 shadowMapSize, float shadowBias, float shadowRadius, vec4 shadowCoord ) {\\n\\t\\tfloat shadow = 1.0;\\n\\t\\tshadowCoord.xyz /= shadowCoord.w;\\n\\t\\tshadowCoord.z += shadowBias;\\n\\t\\tbvec4 inFrustumVec = bvec4 ( shadowCoord.x >= 0.0, shadowCoord.x <= 1.0, shadowCoord.y >= 0.0, shadowCoord.y <= 1.0 );\\n\\t\\tbool inFrustum = all( inFrustumVec );\\n\\t\\tbvec2 frustumTestVec = bvec2( inFrustum, shadowCoord.z <= 1.0 );\\n\\t\\tbool frustumTest = all( frustumTestVec );\\n\\t\\tif ( frustumTest ) {\\n\\t\\t#if defined( SHADOWMAP_TYPE_PCF )\\n\\t\\t\\tvec2 texelSize = vec2( 1.0 ) / shadowMapSize;\\n\\t\\t\\tfloat dx0 = - texelSize.x * shadowRadius;\\n\\t\\t\\tfloat dy0 = - texelSize.y * shadowRadius;\\n\\t\\t\\tfloat dx1 = + texelSize.x * shadowRadius;\\n\\t\\t\\tfloat dy1 = + texelSize.y * shadowRadius;\\n\\t\\t\\tfloat dx2 = dx0 / 2.0;\\n\\t\\t\\tfloat dy2 = dy0 / 2.0;\\n\\t\\t\\tfloat dx3 = dx1 / 2.0;\\n\\t\\t\\tfloat dy3 = dy1 / 2.0;\\n\\t\\t\\tshadow = (\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx0, dy0 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( 0.0, dy0 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx1, dy0 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx2, dy2 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( 0.0, dy2 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx3, dy2 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx0, 0.0 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx2, 0.0 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy, shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx3, 0.0 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx1, 0.0 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx2, dy3 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( 0.0, dy3 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx3, dy3 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx0, dy1 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( 0.0, dy1 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx1, dy1 ), shadowCoord.z )\\n\\t\\t\\t) * ( 1.0 / 17.0 );\\n\\t\\t#elif defined( SHADOWMAP_TYPE_PCF_SOFT )\\n\\t\\t\\tvec2 texelSize = vec2( 1.0 ) / shadowMapSize;\\n\\t\\t\\tfloat dx = texelSize.x;\\n\\t\\t\\tfloat dy = texelSize.y;\\n\\t\\t\\tvec2 uv = shadowCoord.xy;\\n\\t\\t\\tvec2 f = fract( uv * shadowMapSize + 0.5 );\\n\\t\\t\\tuv -= f * texelSize;\\n\\t\\t\\tshadow = (\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, uv, shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, uv + vec2( dx, 0.0 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, uv + vec2( 0.0, dy ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, uv + texelSize, shadowCoord.z ) +\\n\\t\\t\\t\\tmix( texture2DCompare( shadowMap, uv + vec2( -dx, 0.0 ), shadowCoord.z ), \\n\\t\\t\\t\\t\\t texture2DCompare( shadowMap, uv + vec2( 2.0 * dx, 0.0 ), shadowCoord.z ),\\n\\t\\t\\t\\t\\t f.x ) +\\n\\t\\t\\t\\tmix( texture2DCompare( shadowMap, uv + vec2( -dx, dy ), shadowCoord.z ), \\n\\t\\t\\t\\t\\t texture2DCompare( shadowMap, uv + vec2( 2.0 * dx, dy ), shadowCoord.z ),\\n\\t\\t\\t\\t\\t f.x ) +\\n\\t\\t\\t\\tmix( texture2DCompare( shadowMap, uv + vec2( 0.0, -dy ), shadowCoord.z ), \\n\\t\\t\\t\\t\\t texture2DCompare( shadowMap, uv + vec2( 0.0, 2.0 * dy ), shadowCoord.z ),\\n\\t\\t\\t\\t\\t f.y ) +\\n\\t\\t\\t\\tmix( texture2DCompare( shadowMap, uv + vec2( dx, -dy ), shadowCoord.z ), \\n\\t\\t\\t\\t\\t texture2DCompare( shadowMap, uv + vec2( dx, 2.0 * dy ), shadowCoord.z ),\\n\\t\\t\\t\\t\\t f.y ) +\\n\\t\\t\\t\\tmix( mix( texture2DCompare( shadowMap, uv + vec2( -dx, -dy ), shadowCoord.z ), \\n\\t\\t\\t\\t\\t\\t texture2DCompare( shadowMap, uv + vec2( 2.0 * dx, -dy ), shadowCoord.z ),\\n\\t\\t\\t\\t\\t\\t f.x ),\\n\\t\\t\\t\\t\\t mix( texture2DCompare( shadowMap, uv + vec2( -dx, 2.0 * dy ), shadowCoord.z ), \\n\\t\\t\\t\\t\\t\\t texture2DCompare( shadowMap, uv + vec2( 2.0 * dx, 2.0 * dy ), shadowCoord.z ),\\n\\t\\t\\t\\t\\t\\t f.x ),\\n\\t\\t\\t\\t\\t f.y )\\n\\t\\t\\t) * ( 1.0 / 9.0 );\\n\\t\\t#elif defined( SHADOWMAP_TYPE_VSM )\\n\\t\\t\\tshadow = VSMShadow( shadowMap, shadowCoord.xy, shadowCoord.z );\\n\\t\\t#else\\n\\t\\t\\tshadow = texture2DCompare( shadowMap, shadowCoord.xy, shadowCoord.z );\\n\\t\\t#endif\\n\\t\\t}\\n\\t\\treturn shadow;\\n\\t}\\n\\tvec2 cubeToUV( vec3 v, float texelSizeY ) {\\n\\t\\tvec3 absV = abs( v );\\n\\t\\tfloat scaleToCube = 1.0 / max( absV.x, max( absV.y, absV.z ) );\\n\\t\\tabsV *= scaleToCube;\\n\\t\\tv *= scaleToCube * ( 1.0 - 2.0 * texelSizeY );\\n\\t\\tvec2 planar = v.xy;\\n\\t\\tfloat almostATexel = 1.5 * texelSizeY;\\n\\t\\tfloat almostOne = 1.0 - almostATexel;\\n\\t\\tif ( absV.z >= almostOne ) {\\n\\t\\t\\tif ( v.z > 0.0 )\\n\\t\\t\\t\\tplanar.x = 4.0 - v.x;\\n\\t\\t} else if ( absV.x >= almostOne ) {\\n\\t\\t\\tfloat signX = sign( v.x );\\n\\t\\t\\tplanar.x = v.z * signX + 2.0 * signX;\\n\\t\\t} else if ( absV.y >= almostOne ) {\\n\\t\\t\\tfloat signY = sign( v.y );\\n\\t\\t\\tplanar.x = v.x + 2.0 * signY + 2.0;\\n\\t\\t\\tplanar.y = v.z * signY - 2.0;\\n\\t\\t}\\n\\t\\treturn vec2( 0.125, 0.25 ) * planar + vec2( 0.375, 0.75 );\\n\\t}\\n\\tfloat getPointShadow( sampler2D shadowMap, vec2 shadowMapSize, float shadowBias, float shadowRadius, vec4 shadowCoord, float shadowCameraNear, float shadowCameraFar ) {\\n\\t\\tvec2 texelSize = vec2( 1.0 ) / ( shadowMapSize * vec2( 4.0, 2.0 ) );\\n\\t\\tvec3 lightToPosition = shadowCoord.xyz;\\n\\t\\tfloat dp = ( length( lightToPosition ) - shadowCameraNear ) / ( shadowCameraFar - shadowCameraNear );\\t\\tdp += shadowBias;\\n\\t\\tvec3 bd3D = normalize( lightToPosition );\\n\\t\\t#if defined( SHADOWMAP_TYPE_PCF ) || defined( SHADOWMAP_TYPE_PCF_SOFT ) || defined( SHADOWMAP_TYPE_VSM )\\n\\t\\t\\tvec2 offset = vec2( - 1, 1 ) * shadowRadius * texelSize.y;\\n\\t\\t\\treturn (\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.xyy, texelSize.y ), dp ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.yyy, texelSize.y ), dp ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.xyx, texelSize.y ), dp ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.yyx, texelSize.y ), dp ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, cubeToUV( bd3D, texelSize.y ), dp ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.xxy, texelSize.y ), dp ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.yxy, texelSize.y ), dp ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.xxx, texelSize.y ), dp ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.yxx, texelSize.y ), dp )\\n\\t\\t\\t) * ( 1.0 / 9.0 );\\n\\t\\t#else\\n\\t\\t\\treturn texture2DCompare( shadowMap, cubeToUV( bd3D, texelSize.y ), dp );\\n\\t\\t#endif\\n\\t}\\n#endif\";\n\nvar shadowmap_pars_vertex = \"#ifdef USE_SHADOWMAP\\n\\t#if NUM_DIR_LIGHT_SHADOWS > 0\\n\\t\\tuniform mat4 directionalShadowMatrix[ NUM_DIR_LIGHT_SHADOWS ];\\n\\t\\tvarying vec4 vDirectionalShadowCoord[ NUM_DIR_LIGHT_SHADOWS ];\\n\\t\\tstruct DirectionalLightShadow {\\n\\t\\t\\tfloat shadowBias;\\n\\t\\t\\tfloat shadowNormalBias;\\n\\t\\t\\tfloat shadowRadius;\\n\\t\\t\\tvec2 shadowMapSize;\\n\\t\\t};\\n\\t\\tuniform DirectionalLightShadow directionalLightShadows[ NUM_DIR_LIGHT_SHADOWS ];\\n\\t#endif\\n\\t#if NUM_SPOT_LIGHT_SHADOWS > 0\\n\\t\\tuniform mat4 spotShadowMatrix[ NUM_SPOT_LIGHT_SHADOWS ];\\n\\t\\tvarying vec4 vSpotShadowCoord[ NUM_SPOT_LIGHT_SHADOWS ];\\n\\t\\tstruct SpotLightShadow {\\n\\t\\t\\tfloat shadowBias;\\n\\t\\t\\tfloat shadowNormalBias;\\n\\t\\t\\tfloat shadowRadius;\\n\\t\\t\\tvec2 shadowMapSize;\\n\\t\\t};\\n\\t\\tuniform SpotLightShadow spotLightShadows[ NUM_SPOT_LIGHT_SHADOWS ];\\n\\t#endif\\n\\t#if NUM_POINT_LIGHT_SHADOWS > 0\\n\\t\\tuniform mat4 pointShadowMatrix[ NUM_POINT_LIGHT_SHADOWS ];\\n\\t\\tvarying vec4 vPointShadowCoord[ NUM_POINT_LIGHT_SHADOWS ];\\n\\t\\tstruct PointLightShadow {\\n\\t\\t\\tfloat shadowBias;\\n\\t\\t\\tfloat shadowNormalBias;\\n\\t\\t\\tfloat shadowRadius;\\n\\t\\t\\tvec2 shadowMapSize;\\n\\t\\t\\tfloat shadowCameraNear;\\n\\t\\t\\tfloat shadowCameraFar;\\n\\t\\t};\\n\\t\\tuniform PointLightShadow pointLightShadows[ NUM_POINT_LIGHT_SHADOWS ];\\n\\t#endif\\n#endif\";\n\nvar shadowmap_vertex = \"#ifdef USE_SHADOWMAP\\n\\t#if NUM_DIR_LIGHT_SHADOWS > 0 || NUM_SPOT_LIGHT_SHADOWS > 0 || NUM_POINT_LIGHT_SHADOWS > 0\\n\\t\\tvec3 shadowWorldNormal = inverseTransformDirection( transformedNormal, viewMatrix );\\n\\t\\tvec4 shadowWorldPosition;\\n\\t#endif\\n\\t#if NUM_DIR_LIGHT_SHADOWS > 0\\n\\t#pragma unroll_loop_start\\n\\tfor ( int i = 0; i < NUM_DIR_LIGHT_SHADOWS; i ++ ) {\\n\\t\\tshadowWorldPosition = worldPosition + vec4( shadowWorldNormal * directionalLightShadows[ i ].shadowNormalBias, 0 );\\n\\t\\tvDirectionalShadowCoord[ i ] = directionalShadowMatrix[ i ] * shadowWorldPosition;\\n\\t}\\n\\t#pragma unroll_loop_end\\n\\t#endif\\n\\t#if NUM_SPOT_LIGHT_SHADOWS > 0\\n\\t#pragma unroll_loop_start\\n\\tfor ( int i = 0; i < NUM_SPOT_LIGHT_SHADOWS; i ++ ) {\\n\\t\\tshadowWorldPosition = worldPosition + vec4( shadowWorldNormal * spotLightShadows[ i ].shadowNormalBias, 0 );\\n\\t\\tvSpotShadowCoord[ i ] = spotShadowMatrix[ i ] * shadowWorldPosition;\\n\\t}\\n\\t#pragma unroll_loop_end\\n\\t#endif\\n\\t#if NUM_POINT_LIGHT_SHADOWS > 0\\n\\t#pragma unroll_loop_start\\n\\tfor ( int i = 0; i < NUM_POINT_LIGHT_SHADOWS; i ++ ) {\\n\\t\\tshadowWorldPosition = worldPosition + vec4( shadowWorldNormal * pointLightShadows[ i ].shadowNormalBias, 0 );\\n\\t\\tvPointShadowCoord[ i ] = pointShadowMatrix[ i ] * shadowWorldPosition;\\n\\t}\\n\\t#pragma unroll_loop_end\\n\\t#endif\\n#endif\";\n\nvar shadowmask_pars_fragment = \"float getShadowMask() {\\n\\tfloat shadow = 1.0;\\n\\t#ifdef USE_SHADOWMAP\\n\\t#if NUM_DIR_LIGHT_SHADOWS > 0\\n\\tDirectionalLightShadow directionalLight;\\n\\t#pragma unroll_loop_start\\n\\tfor ( int i = 0; i < NUM_DIR_LIGHT_SHADOWS; i ++ ) {\\n\\t\\tdirectionalLight = directionalLightShadows[ i ];\\n\\t\\tshadow *= receiveShadow ? getShadow( directionalShadowMap[ i ], directionalLight.shadowMapSize, directionalLight.shadowBias, directionalLight.shadowRadius, vDirectionalShadowCoord[ i ] ) : 1.0;\\n\\t}\\n\\t#pragma unroll_loop_end\\n\\t#endif\\n\\t#if NUM_SPOT_LIGHT_SHADOWS > 0\\n\\tSpotLightShadow spotLight;\\n\\t#pragma unroll_loop_start\\n\\tfor ( int i = 0; i < NUM_SPOT_LIGHT_SHADOWS; i ++ ) {\\n\\t\\tspotLight = spotLightShadows[ i ];\\n\\t\\tshadow *= receiveShadow ? getShadow( spotShadowMap[ i ], spotLight.shadowMapSize, spotLight.shadowBias, spotLight.shadowRadius, vSpotShadowCoord[ i ] ) : 1.0;\\n\\t}\\n\\t#pragma unroll_loop_end\\n\\t#endif\\n\\t#if NUM_POINT_LIGHT_SHADOWS > 0\\n\\tPointLightShadow pointLight;\\n\\t#pragma unroll_loop_start\\n\\tfor ( int i = 0; i < NUM_POINT_LIGHT_SHADOWS; i ++ ) {\\n\\t\\tpointLight = pointLightShadows[ i ];\\n\\t\\tshadow *= receiveShadow ? getPointShadow( pointShadowMap[ i ], pointLight.shadowMapSize, pointLight.shadowBias, pointLight.shadowRadius, vPointShadowCoord[ i ], pointLight.shadowCameraNear, pointLight.shadowCameraFar ) : 1.0;\\n\\t}\\n\\t#pragma unroll_loop_end\\n\\t#endif\\n\\t#endif\\n\\treturn shadow;\\n}\";\n\nvar skinbase_vertex = \"#ifdef USE_SKINNING\\n\\tmat4 boneMatX = getBoneMatrix( skinIndex.x );\\n\\tmat4 boneMatY = getBoneMatrix( skinIndex.y );\\n\\tmat4 boneMatZ = getBoneMatrix( skinIndex.z );\\n\\tmat4 boneMatW = getBoneMatrix( skinIndex.w );\\n#endif\";\n\nvar skinning_pars_vertex = \"#ifdef USE_SKINNING\\n\\tuniform mat4 bindMatrix;\\n\\tuniform mat4 bindMatrixInverse;\\n\\tuniform highp sampler2D boneTexture;\\n\\tuniform int boneTextureSize;\\n\\tmat4 getBoneMatrix( const in float i ) {\\n\\t\\tfloat j = i * 4.0;\\n\\t\\tfloat x = mod( j, float( boneTextureSize ) );\\n\\t\\tfloat y = floor( j / float( boneTextureSize ) );\\n\\t\\tfloat dx = 1.0 / float( boneTextureSize );\\n\\t\\tfloat dy = 1.0 / float( boneTextureSize );\\n\\t\\ty = dy * ( y + 0.5 );\\n\\t\\tvec4 v1 = texture2D( boneTexture, vec2( dx * ( x + 0.5 ), y ) );\\n\\t\\tvec4 v2 = texture2D( boneTexture, vec2( dx * ( x + 1.5 ), y ) );\\n\\t\\tvec4 v3 = texture2D( boneTexture, vec2( dx * ( x + 2.5 ), y ) );\\n\\t\\tvec4 v4 = texture2D( boneTexture, vec2( dx * ( x + 3.5 ), y ) );\\n\\t\\tmat4 bone = mat4( v1, v2, v3, v4 );\\n\\t\\treturn bone;\\n\\t}\\n#endif\";\n\nvar skinning_vertex = \"#ifdef USE_SKINNING\\n\\tvec4 skinVertex = bindMatrix * vec4( transformed, 1.0 );\\n\\tvec4 skinned = vec4( 0.0 );\\n\\tskinned += boneMatX * skinVertex * skinWeight.x;\\n\\tskinned += boneMatY * skinVertex * skinWeight.y;\\n\\tskinned += boneMatZ * skinVertex * skinWeight.z;\\n\\tskinned += boneMatW * skinVertex * skinWeight.w;\\n\\ttransformed = ( bindMatrixInverse * skinned ).xyz;\\n#endif\";\n\nvar skinnormal_vertex = \"#ifdef USE_SKINNING\\n\\tmat4 skinMatrix = mat4( 0.0 );\\n\\tskinMatrix += skinWeight.x * boneMatX;\\n\\tskinMatrix += skinWeight.y * boneMatY;\\n\\tskinMatrix += skinWeight.z * boneMatZ;\\n\\tskinMatrix += skinWeight.w * boneMatW;\\n\\tskinMatrix = bindMatrixInverse * skinMatrix * bindMatrix;\\n\\tobjectNormal = vec4( skinMatrix * vec4( objectNormal, 0.0 ) ).xyz;\\n\\t#ifdef USE_TANGENT\\n\\t\\tobjectTangent = vec4( skinMatrix * vec4( objectTangent, 0.0 ) ).xyz;\\n\\t#endif\\n#endif\";\n\nvar specularmap_fragment = \"float specularStrength;\\n#ifdef USE_SPECULARMAP\\n\\tvec4 texelSpecular = texture2D( specularMap, vUv );\\n\\tspecularStrength = texelSpecular.r;\\n#else\\n\\tspecularStrength = 1.0;\\n#endif\";\n\nvar specularmap_pars_fragment = \"#ifdef USE_SPECULARMAP\\n\\tuniform sampler2D specularMap;\\n#endif\";\n\nvar tonemapping_fragment = \"#if defined( TONE_MAPPING )\\n\\tgl_FragColor.rgb = toneMapping( gl_FragColor.rgb );\\n#endif\";\n\nvar tonemapping_pars_fragment = \"#ifndef saturate\\n#define saturate( a ) clamp( a, 0.0, 1.0 )\\n#endif\\nuniform float toneMappingExposure;\\nvec3 LinearToneMapping( vec3 color ) {\\n\\treturn toneMappingExposure * color;\\n}\\nvec3 ReinhardToneMapping( vec3 color ) {\\n\\tcolor *= toneMappingExposure;\\n\\treturn saturate( color / ( vec3( 1.0 ) + color ) );\\n}\\nvec3 OptimizedCineonToneMapping( vec3 color ) {\\n\\tcolor *= toneMappingExposure;\\n\\tcolor = max( vec3( 0.0 ), color - 0.004 );\\n\\treturn pow( ( color * ( 6.2 * color + 0.5 ) ) / ( color * ( 6.2 * color + 1.7 ) + 0.06 ), vec3( 2.2 ) );\\n}\\nvec3 RRTAndODTFit( vec3 v ) {\\n\\tvec3 a = v * ( v + 0.0245786 ) - 0.000090537;\\n\\tvec3 b = v * ( 0.983729 * v + 0.4329510 ) + 0.238081;\\n\\treturn a / b;\\n}\\nvec3 ACESFilmicToneMapping( vec3 color ) {\\n\\tconst mat3 ACESInputMat = mat3(\\n\\t\\tvec3( 0.59719, 0.07600, 0.02840 ),\\t\\tvec3( 0.35458, 0.90834, 0.13383 ),\\n\\t\\tvec3( 0.04823, 0.01566, 0.83777 )\\n\\t);\\n\\tconst mat3 ACESOutputMat = mat3(\\n\\t\\tvec3( 1.60475, -0.10208, -0.00327 ),\\t\\tvec3( -0.53108, 1.10813, -0.07276 ),\\n\\t\\tvec3( -0.07367, -0.00605, 1.07602 )\\n\\t);\\n\\tcolor *= toneMappingExposure / 0.6;\\n\\tcolor = ACESInputMat * color;\\n\\tcolor = RRTAndODTFit( color );\\n\\tcolor = ACESOutputMat * color;\\n\\treturn saturate( color );\\n}\\nvec3 CustomToneMapping( vec3 color ) { return color; }\";\n\nvar transmission_fragment = \"#ifdef USE_TRANSMISSION\\n\\tfloat transmissionAlpha = 1.0;\\n\\tfloat transmissionFactor = transmission;\\n\\tfloat thicknessFactor = thickness;\\n\\t#ifdef USE_TRANSMISSIONMAP\\n\\t\\ttransmissionFactor *= texture2D( transmissionMap, vUv ).r;\\n\\t#endif\\n\\t#ifdef USE_THICKNESSMAP\\n\\t\\tthicknessFactor *= texture2D( thicknessMap, vUv ).g;\\n\\t#endif\\n\\tvec3 pos = vWorldPosition;\\n\\tvec3 v = normalize( cameraPosition - pos );\\n\\tvec3 n = inverseTransformDirection( normal, viewMatrix );\\n\\tvec4 transmission = getIBLVolumeRefraction(\\n\\t\\tn, v, roughnessFactor, material.diffuseColor, material.specularColor, material.specularF90,\\n\\t\\tpos, modelMatrix, viewMatrix, projectionMatrix, ior, thicknessFactor,\\n\\t\\tattenuationColor, attenuationDistance );\\n\\ttotalDiffuse = mix( totalDiffuse, transmission.rgb, transmissionFactor );\\n\\ttransmissionAlpha = mix( transmissionAlpha, transmission.a, transmissionFactor );\\n#endif\";\n\nvar transmission_pars_fragment = \"#ifdef USE_TRANSMISSION\\n\\tuniform float transmission;\\n\\tuniform float thickness;\\n\\tuniform float attenuationDistance;\\n\\tuniform vec3 attenuationColor;\\n\\t#ifdef USE_TRANSMISSIONMAP\\n\\t\\tuniform sampler2D transmissionMap;\\n\\t#endif\\n\\t#ifdef USE_THICKNESSMAP\\n\\t\\tuniform sampler2D thicknessMap;\\n\\t#endif\\n\\tuniform vec2 transmissionSamplerSize;\\n\\tuniform sampler2D transmissionSamplerMap;\\n\\tuniform mat4 modelMatrix;\\n\\tuniform mat4 projectionMatrix;\\n\\tvarying vec3 vWorldPosition;\\n\\tvec3 getVolumeTransmissionRay( const in vec3 n, const in vec3 v, const in float thickness, const in float ior, const in mat4 modelMatrix ) {\\n\\t\\tvec3 refractionVector = refract( - v, normalize( n ), 1.0 / ior );\\n\\t\\tvec3 modelScale;\\n\\t\\tmodelScale.x = length( vec3( modelMatrix[ 0 ].xyz ) );\\n\\t\\tmodelScale.y = length( vec3( modelMatrix[ 1 ].xyz ) );\\n\\t\\tmodelScale.z = length( vec3( modelMatrix[ 2 ].xyz ) );\\n\\t\\treturn normalize( refractionVector ) * thickness * modelScale;\\n\\t}\\n\\tfloat applyIorToRoughness( const in float roughness, const in float ior ) {\\n\\t\\treturn roughness * clamp( ior * 2.0 - 2.0, 0.0, 1.0 );\\n\\t}\\n\\tvec4 getTransmissionSample( const in vec2 fragCoord, const in float roughness, const in float ior ) {\\n\\t\\tfloat framebufferLod = log2( transmissionSamplerSize.x ) * applyIorToRoughness( roughness, ior );\\n\\t\\t#ifdef texture2DLodEXT\\n\\t\\t\\treturn texture2DLodEXT( transmissionSamplerMap, fragCoord.xy, framebufferLod );\\n\\t\\t#else\\n\\t\\t\\treturn texture2D( transmissionSamplerMap, fragCoord.xy, framebufferLod );\\n\\t\\t#endif\\n\\t}\\n\\tvec3 applyVolumeAttenuation( const in vec3 radiance, const in float transmissionDistance, const in vec3 attenuationColor, const in float attenuationDistance ) {\\n\\t\\tif ( attenuationDistance == 0.0 ) {\\n\\t\\t\\treturn radiance;\\n\\t\\t} else {\\n\\t\\t\\tvec3 attenuationCoefficient = -log( attenuationColor ) / attenuationDistance;\\n\\t\\t\\tvec3 transmittance = exp( - attenuationCoefficient * transmissionDistance );\\t\\t\\treturn transmittance * radiance;\\n\\t\\t}\\n\\t}\\n\\tvec4 getIBLVolumeRefraction( const in vec3 n, const in vec3 v, const in float roughness, const in vec3 diffuseColor,\\n\\t\\tconst in vec3 specularColor, const in float specularF90, const in vec3 position, const in mat4 modelMatrix,\\n\\t\\tconst in mat4 viewMatrix, const in mat4 projMatrix, const in float ior, const in float thickness,\\n\\t\\tconst in vec3 attenuationColor, const in float attenuationDistance ) {\\n\\t\\tvec3 transmissionRay = getVolumeTransmissionRay( n, v, thickness, ior, modelMatrix );\\n\\t\\tvec3 refractedRayExit = position + transmissionRay;\\n\\t\\tvec4 ndcPos = projMatrix * viewMatrix * vec4( refractedRayExit, 1.0 );\\n\\t\\tvec2 refractionCoords = ndcPos.xy / ndcPos.w;\\n\\t\\trefractionCoords += 1.0;\\n\\t\\trefractionCoords /= 2.0;\\n\\t\\tvec4 transmittedLight = getTransmissionSample( refractionCoords, roughness, ior );\\n\\t\\tvec3 attenuatedColor = applyVolumeAttenuation( transmittedLight.rgb, length( transmissionRay ), attenuationColor, attenuationDistance );\\n\\t\\tvec3 F = EnvironmentBRDF( n, v, specularColor, specularF90, roughness );\\n\\t\\treturn vec4( ( 1.0 - F ) * attenuatedColor * diffuseColor, transmittedLight.a );\\n\\t}\\n#endif\";\n\nvar uv_pars_fragment = \"#if ( defined( USE_UV ) && ! defined( UVS_VERTEX_ONLY ) )\\n\\tvarying vec2 vUv;\\n#endif\";\n\nvar uv_pars_vertex = \"#ifdef USE_UV\\n\\t#ifdef UVS_VERTEX_ONLY\\n\\t\\tvec2 vUv;\\n\\t#else\\n\\t\\tvarying vec2 vUv;\\n\\t#endif\\n\\tuniform mat3 uvTransform;\\n#endif\";\n\nvar uv_vertex = \"#ifdef USE_UV\\n\\tvUv = ( uvTransform * vec3( uv, 1 ) ).xy;\\n#endif\";\n\nvar uv2_pars_fragment = \"#if defined( USE_LIGHTMAP ) || defined( USE_AOMAP )\\n\\tvarying vec2 vUv2;\\n#endif\";\n\nvar uv2_pars_vertex = \"#if defined( USE_LIGHTMAP ) || defined( USE_AOMAP )\\n\\tattribute vec2 uv2;\\n\\tvarying vec2 vUv2;\\n\\tuniform mat3 uv2Transform;\\n#endif\";\n\nvar uv2_vertex = \"#if defined( USE_LIGHTMAP ) || defined( USE_AOMAP )\\n\\tvUv2 = ( uv2Transform * vec3( uv2, 1 ) ).xy;\\n#endif\";\n\nvar worldpos_vertex = \"#if defined( USE_ENVMAP ) || defined( DISTANCE ) || defined ( USE_SHADOWMAP ) || defined ( USE_TRANSMISSION )\\n\\tvec4 worldPosition = vec4( transformed, 1.0 );\\n\\t#ifdef USE_INSTANCING\\n\\t\\tworldPosition = instanceMatrix * worldPosition;\\n\\t#endif\\n\\tworldPosition = modelMatrix * worldPosition;\\n#endif\";\n\nconst vertex$g = \"varying vec2 vUv;\\nuniform mat3 uvTransform;\\nvoid main() {\\n\\tvUv = ( uvTransform * vec3( uv, 1 ) ).xy;\\n\\tgl_Position = vec4( position.xy, 1.0, 1.0 );\\n}\";\n\nconst fragment$g = \"uniform sampler2D t2D;\\nvarying vec2 vUv;\\nvoid main() {\\n\\tgl_FragColor = texture2D( t2D, vUv );\\n\\t#ifdef DECODE_VIDEO_TEXTURE\\n\\t\\tgl_FragColor = vec4( mix( pow( gl_FragColor.rgb * 0.9478672986 + vec3( 0.0521327014 ), vec3( 2.4 ) ), gl_FragColor.rgb * 0.0773993808, vec3( lessThanEqual( gl_FragColor.rgb, vec3( 0.04045 ) ) ) ), gl_FragColor.w );\\n\\t#endif\\n\\t#include \\n\\t#include \\n}\";\n\nconst vertex$f = \"varying vec3 vWorldDirection;\\n#include \\nvoid main() {\\n\\tvWorldDirection = transformDirection( position, modelMatrix );\\n\\t#include \\n\\t#include \\n\\tgl_Position.z = gl_Position.w;\\n}\";\n\nconst fragment$f = \"#include \\nuniform float opacity;\\nvarying vec3 vWorldDirection;\\n#include \\nvoid main() {\\n\\tvec3 vReflect = vWorldDirection;\\n\\t#include \\n\\tgl_FragColor = envColor;\\n\\tgl_FragColor.a *= opacity;\\n\\t#include \\n\\t#include \\n}\";\n\nconst vertex$e = \"#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvarying vec2 vHighPrecisionZW;\\nvoid main() {\\n\\t#include \\n\\t#include \\n\\t#ifdef USE_DISPLACEMENTMAP\\n\\t\\t#include \\n\\t\\t#include \\n\\t\\t#include \\n\\t#endif\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\tvHighPrecisionZW = gl_Position.zw;\\n}\";\n\nconst fragment$e = \"#if DEPTH_PACKING == 3200\\n\\tuniform float opacity;\\n#endif\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvarying vec2 vHighPrecisionZW;\\nvoid main() {\\n\\t#include \\n\\tvec4 diffuseColor = vec4( 1.0 );\\n\\t#if DEPTH_PACKING == 3200\\n\\t\\tdiffuseColor.a = opacity;\\n\\t#endif\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\tfloat fragCoordZ = 0.5 * vHighPrecisionZW[0] / vHighPrecisionZW[1] + 0.5;\\n\\t#if DEPTH_PACKING == 3200\\n\\t\\tgl_FragColor = vec4( vec3( 1.0 - fragCoordZ ), opacity );\\n\\t#elif DEPTH_PACKING == 3201\\n\\t\\tgl_FragColor = packDepthToRGBA( fragCoordZ );\\n\\t#endif\\n}\";\n\nconst vertex$d = \"#define DISTANCE\\nvarying vec3 vWorldPosition;\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\t#include \\n\\t#include \\n\\t#ifdef USE_DISPLACEMENTMAP\\n\\t\\t#include \\n\\t\\t#include \\n\\t\\t#include \\n\\t#endif\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\tvWorldPosition = worldPosition.xyz;\\n}\";\n\nconst fragment$d = \"#define DISTANCE\\nuniform vec3 referencePosition;\\nuniform float nearDistance;\\nuniform float farDistance;\\nvarying vec3 vWorldPosition;\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main () {\\n\\t#include \\n\\tvec4 diffuseColor = vec4( 1.0 );\\n\\t#include \\n\\t#include \\n\\t#include \\n\\tfloat dist = length( vWorldPosition - referencePosition );\\n\\tdist = ( dist - nearDistance ) / ( farDistance - nearDistance );\\n\\tdist = saturate( dist );\\n\\tgl_FragColor = packDepthToRGBA( dist );\\n}\";\n\nconst vertex$c = \"varying vec3 vWorldDirection;\\n#include \\nvoid main() {\\n\\tvWorldDirection = transformDirection( position, modelMatrix );\\n\\t#include \\n\\t#include \\n}\";\n\nconst fragment$c = \"uniform sampler2D tEquirect;\\nvarying vec3 vWorldDirection;\\n#include \\nvoid main() {\\n\\tvec3 direction = normalize( vWorldDirection );\\n\\tvec2 sampleUV = equirectUv( direction );\\n\\tgl_FragColor = texture2D( tEquirect, sampleUV );\\n\\t#include \\n\\t#include \\n}\";\n\nconst vertex$b = \"uniform float scale;\\nattribute float lineDistance;\\nvarying float vLineDistance;\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\tvLineDistance = scale * lineDistance;\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n}\";\n\nconst fragment$b = \"uniform vec3 diffuse;\\nuniform float opacity;\\nuniform float dashSize;\\nuniform float totalSize;\\nvarying float vLineDistance;\\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\t#include \\n\\tif ( mod( vLineDistance, totalSize ) > dashSize ) {\\n\\t\\tdiscard;\\n\\t}\\n\\tvec3 outgoingLight = vec3( 0.0 );\\n\\tvec4 diffuseColor = vec4( diffuse, opacity );\\n\\t#include \\n\\t#include \\n\\toutgoingLight = diffuseColor.rgb;\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n}\";\n\nconst vertex$a = \"#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#if defined ( USE_ENVMAP ) || defined ( USE_SKINNING )\\n\\t\\t#include \\n\\t\\t#include \\n\\t\\t#include \\n\\t\\t#include \\n\\t\\t#include \\n\\t#endif\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n}\";\n\nconst fragment$a = \"uniform vec3 diffuse;\\nuniform float opacity;\\n#ifndef FLAT_SHADED\\n\\tvarying vec3 vNormal;\\n#endif\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\t#include \\n\\tvec4 diffuseColor = vec4( diffuse, opacity );\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\tReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );\\n\\t#ifdef USE_LIGHTMAP\\n\\t\\tvec4 lightMapTexel = texture2D( lightMap, vUv2 );\\n\\t\\treflectedLight.indirectDiffuse += lightMapTexel.rgb * lightMapIntensity * RECIPROCAL_PI;\\n\\t#else\\n\\t\\treflectedLight.indirectDiffuse += vec3( 1.0 );\\n\\t#endif\\n\\t#include \\n\\treflectedLight.indirectDiffuse *= diffuseColor.rgb;\\n\\tvec3 outgoingLight = reflectedLight.indirectDiffuse;\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n}\";\n\nconst vertex$9 = \"#define LAMBERT\\nvarying vec3 vLightFront;\\nvarying vec3 vIndirectFront;\\n#ifdef DOUBLE_SIDED\\n\\tvarying vec3 vLightBack;\\n\\tvarying vec3 vIndirectBack;\\n#endif\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n}\";\n\nconst fragment$9 = \"uniform vec3 diffuse;\\nuniform vec3 emissive;\\nuniform float opacity;\\nvarying vec3 vLightFront;\\nvarying vec3 vIndirectFront;\\n#ifdef DOUBLE_SIDED\\n\\tvarying vec3 vLightBack;\\n\\tvarying vec3 vIndirectBack;\\n#endif\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\t#include \\n\\tvec4 diffuseColor = vec4( diffuse, opacity );\\n\\tReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );\\n\\tvec3 totalEmissiveRadiance = emissive;\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#ifdef DOUBLE_SIDED\\n\\t\\treflectedLight.indirectDiffuse += ( gl_FrontFacing ) ? vIndirectFront : vIndirectBack;\\n\\t#else\\n\\t\\treflectedLight.indirectDiffuse += vIndirectFront;\\n\\t#endif\\n\\t#include \\n\\treflectedLight.indirectDiffuse *= BRDF_Lambert( diffuseColor.rgb );\\n\\t#ifdef DOUBLE_SIDED\\n\\t\\treflectedLight.directDiffuse = ( gl_FrontFacing ) ? vLightFront : vLightBack;\\n\\t#else\\n\\t\\treflectedLight.directDiffuse = vLightFront;\\n\\t#endif\\n\\treflectedLight.directDiffuse *= BRDF_Lambert( diffuseColor.rgb ) * getShadowMask();\\n\\t#include \\n\\tvec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + totalEmissiveRadiance;\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n}\";\n\nconst vertex$8 = \"#define MATCAP\\nvarying vec3 vViewPosition;\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\tvViewPosition = - mvPosition.xyz;\\n}\";\n\nconst fragment$8 = \"#define MATCAP\\nuniform vec3 diffuse;\\nuniform float opacity;\\nuniform sampler2D matcap;\\nvarying vec3 vViewPosition;\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\t#include \\n\\tvec4 diffuseColor = vec4( diffuse, opacity );\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\tvec3 viewDir = normalize( vViewPosition );\\n\\tvec3 x = normalize( vec3( viewDir.z, 0.0, - viewDir.x ) );\\n\\tvec3 y = cross( viewDir, x );\\n\\tvec2 uv = vec2( dot( x, normal ), dot( y, normal ) ) * 0.495 + 0.5;\\n\\t#ifdef USE_MATCAP\\n\\t\\tvec4 matcapColor = texture2D( matcap, uv );\\n\\t#else\\n\\t\\tvec4 matcapColor = vec4( vec3( mix( 0.2, 0.8, uv.y ) ), 1.0 );\\n\\t#endif\\n\\tvec3 outgoingLight = diffuseColor.rgb * matcapColor.rgb;\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n}\";\n\nconst vertex$7 = \"#define NORMAL\\n#if defined( FLAT_SHADED ) || defined( USE_BUMPMAP ) || defined( TANGENTSPACE_NORMALMAP )\\n\\tvarying vec3 vViewPosition;\\n#endif\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n#if defined( FLAT_SHADED ) || defined( USE_BUMPMAP ) || defined( TANGENTSPACE_NORMALMAP )\\n\\tvViewPosition = - mvPosition.xyz;\\n#endif\\n}\";\n\nconst fragment$7 = \"#define NORMAL\\nuniform float opacity;\\n#if defined( FLAT_SHADED ) || defined( USE_BUMPMAP ) || defined( TANGENTSPACE_NORMALMAP )\\n\\tvarying vec3 vViewPosition;\\n#endif\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\tgl_FragColor = vec4( packNormalToRGB( normal ), opacity );\\n\\t#ifdef OPAQUE\\n\\t\\tgl_FragColor.a = 1.0;\\n\\t#endif\\n}\";\n\nconst vertex$6 = \"#define PHONG\\nvarying vec3 vViewPosition;\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\tvViewPosition = - mvPosition.xyz;\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n}\";\n\nconst fragment$6 = \"#define PHONG\\nuniform vec3 diffuse;\\nuniform vec3 emissive;\\nuniform vec3 specular;\\nuniform float shininess;\\nuniform float opacity;\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\t#include \\n\\tvec4 diffuseColor = vec4( diffuse, opacity );\\n\\tReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );\\n\\tvec3 totalEmissiveRadiance = emissive;\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\tvec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + reflectedLight.directSpecular + reflectedLight.indirectSpecular + totalEmissiveRadiance;\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n}\";\n\nconst vertex$5 = \"#define STANDARD\\nvarying vec3 vViewPosition;\\n#ifdef USE_TRANSMISSION\\n\\tvarying vec3 vWorldPosition;\\n#endif\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\tvViewPosition = - mvPosition.xyz;\\n\\t#include \\n\\t#include \\n\\t#include \\n#ifdef USE_TRANSMISSION\\n\\tvWorldPosition = worldPosition.xyz;\\n#endif\\n}\";\n\nconst fragment$5 = \"#define STANDARD\\n#ifdef PHYSICAL\\n\\t#define IOR\\n\\t#define SPECULAR\\n#endif\\nuniform vec3 diffuse;\\nuniform vec3 emissive;\\nuniform float roughness;\\nuniform float metalness;\\nuniform float opacity;\\n#ifdef IOR\\n\\tuniform float ior;\\n#endif\\n#ifdef SPECULAR\\n\\tuniform float specularIntensity;\\n\\tuniform vec3 specularColor;\\n\\t#ifdef USE_SPECULARINTENSITYMAP\\n\\t\\tuniform sampler2D specularIntensityMap;\\n\\t#endif\\n\\t#ifdef USE_SPECULARCOLORMAP\\n\\t\\tuniform sampler2D specularColorMap;\\n\\t#endif\\n#endif\\n#ifdef USE_CLEARCOAT\\n\\tuniform float clearcoat;\\n\\tuniform float clearcoatRoughness;\\n#endif\\n#ifdef USE_IRIDESCENCE\\n\\tuniform float iridescence;\\n\\tuniform float iridescenceIOR;\\n\\tuniform float iridescenceThicknessMinimum;\\n\\tuniform float iridescenceThicknessMaximum;\\n#endif\\n#ifdef USE_SHEEN\\n\\tuniform vec3 sheenColor;\\n\\tuniform float sheenRoughness;\\n\\t#ifdef USE_SHEENCOLORMAP\\n\\t\\tuniform sampler2D sheenColorMap;\\n\\t#endif\\n\\t#ifdef USE_SHEENROUGHNESSMAP\\n\\t\\tuniform sampler2D sheenRoughnessMap;\\n\\t#endif\\n#endif\\nvarying vec3 vViewPosition;\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\t#include \\n\\tvec4 diffuseColor = vec4( diffuse, opacity );\\n\\tReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );\\n\\tvec3 totalEmissiveRadiance = emissive;\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\tvec3 totalDiffuse = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse;\\n\\tvec3 totalSpecular = reflectedLight.directSpecular + reflectedLight.indirectSpecular;\\n\\t#include \\n\\tvec3 outgoingLight = totalDiffuse + totalSpecular + totalEmissiveRadiance;\\n\\t#ifdef USE_SHEEN\\n\\t\\tfloat sheenEnergyComp = 1.0 - 0.157 * max3( material.sheenColor );\\n\\t\\toutgoingLight = outgoingLight * sheenEnergyComp + sheenSpecular;\\n\\t#endif\\n\\t#ifdef USE_CLEARCOAT\\n\\t\\tfloat dotNVcc = saturate( dot( geometry.clearcoatNormal, geometry.viewDir ) );\\n\\t\\tvec3 Fcc = F_Schlick( material.clearcoatF0, material.clearcoatF90, dotNVcc );\\n\\t\\toutgoingLight = outgoingLight * ( 1.0 - material.clearcoat * Fcc ) + clearcoatSpecular * material.clearcoat;\\n\\t#endif\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n}\";\n\nconst vertex$4 = \"#define TOON\\nvarying vec3 vViewPosition;\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\tvViewPosition = - mvPosition.xyz;\\n\\t#include \\n\\t#include \\n\\t#include \\n}\";\n\nconst fragment$4 = \"#define TOON\\nuniform vec3 diffuse;\\nuniform vec3 emissive;\\nuniform float opacity;\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\t#include \\n\\tvec4 diffuseColor = vec4( diffuse, opacity );\\n\\tReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );\\n\\tvec3 totalEmissiveRadiance = emissive;\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\tvec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + totalEmissiveRadiance;\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n}\";\n\nconst vertex$3 = \"uniform float size;\\nuniform float scale;\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\tgl_PointSize = size;\\n\\t#ifdef USE_SIZEATTENUATION\\n\\t\\tbool isPerspective = isPerspectiveMatrix( projectionMatrix );\\n\\t\\tif ( isPerspective ) gl_PointSize *= ( scale / - mvPosition.z );\\n\\t#endif\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n}\";\n\nconst fragment$3 = \"uniform vec3 diffuse;\\nuniform float opacity;\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\t#include \\n\\tvec3 outgoingLight = vec3( 0.0 );\\n\\tvec4 diffuseColor = vec4( diffuse, opacity );\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\toutgoingLight = diffuseColor.rgb;\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n}\";\n\nconst vertex$2 = \"#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n}\";\n\nconst fragment$2 = \"uniform vec3 color;\\nuniform float opacity;\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\tgl_FragColor = vec4( color, opacity * ( 1.0 - getShadowMask() ) );\\n\\t#include \\n\\t#include \\n\\t#include \\n}\";\n\nconst vertex$1 = \"uniform float rotation;\\nuniform vec2 center;\\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\t#include \\n\\tvec4 mvPosition = modelViewMatrix * vec4( 0.0, 0.0, 0.0, 1.0 );\\n\\tvec2 scale;\\n\\tscale.x = length( vec3( modelMatrix[ 0 ].x, modelMatrix[ 0 ].y, modelMatrix[ 0 ].z ) );\\n\\tscale.y = length( vec3( modelMatrix[ 1 ].x, modelMatrix[ 1 ].y, modelMatrix[ 1 ].z ) );\\n\\t#ifndef USE_SIZEATTENUATION\\n\\t\\tbool isPerspective = isPerspectiveMatrix( projectionMatrix );\\n\\t\\tif ( isPerspective ) scale *= - mvPosition.z;\\n\\t#endif\\n\\tvec2 alignedPosition = ( position.xy - ( center - vec2( 0.5 ) ) ) * scale;\\n\\tvec2 rotatedPosition;\\n\\trotatedPosition.x = cos( rotation ) * alignedPosition.x - sin( rotation ) * alignedPosition.y;\\n\\trotatedPosition.y = sin( rotation ) * alignedPosition.x + cos( rotation ) * alignedPosition.y;\\n\\tmvPosition.xy += rotatedPosition;\\n\\tgl_Position = projectionMatrix * mvPosition;\\n\\t#include \\n\\t#include \\n\\t#include \\n}\";\n\nconst fragment$1 = \"uniform vec3 diffuse;\\nuniform float opacity;\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\t#include \\n\\tvec3 outgoingLight = vec3( 0.0 );\\n\\tvec4 diffuseColor = vec4( diffuse, opacity );\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\toutgoingLight = diffuseColor.rgb;\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n}\";\n\nconst ShaderChunk = {\n\talphamap_fragment: alphamap_fragment,\n\talphamap_pars_fragment: alphamap_pars_fragment,\n\talphatest_fragment: alphatest_fragment,\n\talphatest_pars_fragment: alphatest_pars_fragment,\n\taomap_fragment: aomap_fragment,\n\taomap_pars_fragment: aomap_pars_fragment,\n\tbegin_vertex: begin_vertex,\n\tbeginnormal_vertex: beginnormal_vertex,\n\tbsdfs: bsdfs,\n\tiridescence_fragment: iridescence_fragment,\n\tbumpmap_pars_fragment: bumpmap_pars_fragment,\n\tclipping_planes_fragment: clipping_planes_fragment,\n\tclipping_planes_pars_fragment: clipping_planes_pars_fragment,\n\tclipping_planes_pars_vertex: clipping_planes_pars_vertex,\n\tclipping_planes_vertex: clipping_planes_vertex,\n\tcolor_fragment: color_fragment,\n\tcolor_pars_fragment: color_pars_fragment,\n\tcolor_pars_vertex: color_pars_vertex,\n\tcolor_vertex: color_vertex,\n\tcommon: common,\n\tcube_uv_reflection_fragment: cube_uv_reflection_fragment,\n\tdefaultnormal_vertex: defaultnormal_vertex,\n\tdisplacementmap_pars_vertex: displacementmap_pars_vertex,\n\tdisplacementmap_vertex: displacementmap_vertex,\n\temissivemap_fragment: emissivemap_fragment,\n\temissivemap_pars_fragment: emissivemap_pars_fragment,\n\tencodings_fragment: encodings_fragment,\n\tencodings_pars_fragment: encodings_pars_fragment,\n\tenvmap_fragment: envmap_fragment,\n\tenvmap_common_pars_fragment: envmap_common_pars_fragment,\n\tenvmap_pars_fragment: envmap_pars_fragment,\n\tenvmap_pars_vertex: envmap_pars_vertex,\n\tenvmap_physical_pars_fragment: envmap_physical_pars_fragment,\n\tenvmap_vertex: envmap_vertex,\n\tfog_vertex: fog_vertex,\n\tfog_pars_vertex: fog_pars_vertex,\n\tfog_fragment: fog_fragment,\n\tfog_pars_fragment: fog_pars_fragment,\n\tgradientmap_pars_fragment: gradientmap_pars_fragment,\n\tlightmap_fragment: lightmap_fragment,\n\tlightmap_pars_fragment: lightmap_pars_fragment,\n\tlights_lambert_vertex: lights_lambert_vertex,\n\tlights_pars_begin: lights_pars_begin,\n\tlights_toon_fragment: lights_toon_fragment,\n\tlights_toon_pars_fragment: lights_toon_pars_fragment,\n\tlights_phong_fragment: lights_phong_fragment,\n\tlights_phong_pars_fragment: lights_phong_pars_fragment,\n\tlights_physical_fragment: lights_physical_fragment,\n\tlights_physical_pars_fragment: lights_physical_pars_fragment,\n\tlights_fragment_begin: lights_fragment_begin,\n\tlights_fragment_maps: lights_fragment_maps,\n\tlights_fragment_end: lights_fragment_end,\n\tlogdepthbuf_fragment: logdepthbuf_fragment,\n\tlogdepthbuf_pars_fragment: logdepthbuf_pars_fragment,\n\tlogdepthbuf_pars_vertex: logdepthbuf_pars_vertex,\n\tlogdepthbuf_vertex: logdepthbuf_vertex,\n\tmap_fragment: map_fragment,\n\tmap_pars_fragment: map_pars_fragment,\n\tmap_particle_fragment: map_particle_fragment,\n\tmap_particle_pars_fragment: map_particle_pars_fragment,\n\tmetalnessmap_fragment: metalnessmap_fragment,\n\tmetalnessmap_pars_fragment: metalnessmap_pars_fragment,\n\tmorphcolor_vertex: morphcolor_vertex,\n\tmorphnormal_vertex: morphnormal_vertex,\n\tmorphtarget_pars_vertex: morphtarget_pars_vertex,\n\tmorphtarget_vertex: morphtarget_vertex,\n\tnormal_fragment_begin: normal_fragment_begin,\n\tnormal_fragment_maps: normal_fragment_maps,\n\tnormal_pars_fragment: normal_pars_fragment,\n\tnormal_pars_vertex: normal_pars_vertex,\n\tnormal_vertex: normal_vertex,\n\tnormalmap_pars_fragment: normalmap_pars_fragment,\n\tclearcoat_normal_fragment_begin: clearcoat_normal_fragment_begin,\n\tclearcoat_normal_fragment_maps: clearcoat_normal_fragment_maps,\n\tclearcoat_pars_fragment: clearcoat_pars_fragment,\n\tiridescence_pars_fragment: iridescence_pars_fragment,\n\toutput_fragment: output_fragment,\n\tpacking: packing,\n\tpremultiplied_alpha_fragment: premultiplied_alpha_fragment,\n\tproject_vertex: project_vertex,\n\tdithering_fragment: dithering_fragment,\n\tdithering_pars_fragment: dithering_pars_fragment,\n\troughnessmap_fragment: roughnessmap_fragment,\n\troughnessmap_pars_fragment: roughnessmap_pars_fragment,\n\tshadowmap_pars_fragment: shadowmap_pars_fragment,\n\tshadowmap_pars_vertex: shadowmap_pars_vertex,\n\tshadowmap_vertex: shadowmap_vertex,\n\tshadowmask_pars_fragment: shadowmask_pars_fragment,\n\tskinbase_vertex: skinbase_vertex,\n\tskinning_pars_vertex: skinning_pars_vertex,\n\tskinning_vertex: skinning_vertex,\n\tskinnormal_vertex: skinnormal_vertex,\n\tspecularmap_fragment: specularmap_fragment,\n\tspecularmap_pars_fragment: specularmap_pars_fragment,\n\ttonemapping_fragment: tonemapping_fragment,\n\ttonemapping_pars_fragment: tonemapping_pars_fragment,\n\ttransmission_fragment: transmission_fragment,\n\ttransmission_pars_fragment: transmission_pars_fragment,\n\tuv_pars_fragment: uv_pars_fragment,\n\tuv_pars_vertex: uv_pars_vertex,\n\tuv_vertex: uv_vertex,\n\tuv2_pars_fragment: uv2_pars_fragment,\n\tuv2_pars_vertex: uv2_pars_vertex,\n\tuv2_vertex: uv2_vertex,\n\tworldpos_vertex: worldpos_vertex,\n\n\tbackground_vert: vertex$g,\n\tbackground_frag: fragment$g,\n\tcube_vert: vertex$f,\n\tcube_frag: fragment$f,\n\tdepth_vert: vertex$e,\n\tdepth_frag: fragment$e,\n\tdistanceRGBA_vert: vertex$d,\n\tdistanceRGBA_frag: fragment$d,\n\tequirect_vert: vertex$c,\n\tequirect_frag: fragment$c,\n\tlinedashed_vert: vertex$b,\n\tlinedashed_frag: fragment$b,\n\tmeshbasic_vert: vertex$a,\n\tmeshbasic_frag: fragment$a,\n\tmeshlambert_vert: vertex$9,\n\tmeshlambert_frag: fragment$9,\n\tmeshmatcap_vert: vertex$8,\n\tmeshmatcap_frag: fragment$8,\n\tmeshnormal_vert: vertex$7,\n\tmeshnormal_frag: fragment$7,\n\tmeshphong_vert: vertex$6,\n\tmeshphong_frag: fragment$6,\n\tmeshphysical_vert: vertex$5,\n\tmeshphysical_frag: fragment$5,\n\tmeshtoon_vert: vertex$4,\n\tmeshtoon_frag: fragment$4,\n\tpoints_vert: vertex$3,\n\tpoints_frag: fragment$3,\n\tshadow_vert: vertex$2,\n\tshadow_frag: fragment$2,\n\tsprite_vert: vertex$1,\n\tsprite_frag: fragment$1\n};\n\n/**\n * Uniforms library for shared webgl shaders\n */\n\nconst UniformsLib = {\n\n\tcommon: {\n\n\t\tdiffuse: { value: new Color( 0xffffff ) },\n\t\topacity: { value: 1.0 },\n\n\t\tmap: { value: null },\n\t\tuvTransform: { value: new Matrix3() },\n\t\tuv2Transform: { value: new Matrix3() },\n\n\t\talphaMap: { value: null },\n\t\talphaTest: { value: 0 }\n\n\t},\n\n\tspecularmap: {\n\n\t\tspecularMap: { value: null },\n\n\t},\n\n\tenvmap: {\n\n\t\tenvMap: { value: null },\n\t\tflipEnvMap: { value: - 1 },\n\t\treflectivity: { value: 1.0 }, // basic, lambert, phong\n\t\tior: { value: 1.5 }, // physical\n\t\trefractionRatio: { value: 0.98 } // basic, lambert, phong\n\n\t},\n\n\taomap: {\n\n\t\taoMap: { value: null },\n\t\taoMapIntensity: { value: 1 }\n\n\t},\n\n\tlightmap: {\n\n\t\tlightMap: { value: null },\n\t\tlightMapIntensity: { value: 1 }\n\n\t},\n\n\temissivemap: {\n\n\t\temissiveMap: { value: null }\n\n\t},\n\n\tbumpmap: {\n\n\t\tbumpMap: { value: null },\n\t\tbumpScale: { value: 1 }\n\n\t},\n\n\tnormalmap: {\n\n\t\tnormalMap: { value: null },\n\t\tnormalScale: { value: new Vector2( 1, 1 ) }\n\n\t},\n\n\tdisplacementmap: {\n\n\t\tdisplacementMap: { value: null },\n\t\tdisplacementScale: { value: 1 },\n\t\tdisplacementBias: { value: 0 }\n\n\t},\n\n\troughnessmap: {\n\n\t\troughnessMap: { value: null }\n\n\t},\n\n\tmetalnessmap: {\n\n\t\tmetalnessMap: { value: null }\n\n\t},\n\n\tgradientmap: {\n\n\t\tgradientMap: { value: null }\n\n\t},\n\n\tfog: {\n\n\t\tfogDensity: { value: 0.00025 },\n\t\tfogNear: { value: 1 },\n\t\tfogFar: { value: 2000 },\n\t\tfogColor: { value: new Color( 0xffffff ) }\n\n\t},\n\n\tlights: {\n\n\t\tambientLightColor: { value: [] },\n\n\t\tlightProbe: { value: [] },\n\n\t\tdirectionalLights: { value: [], properties: {\n\t\t\tdirection: {},\n\t\t\tcolor: {}\n\t\t} },\n\n\t\tdirectionalLightShadows: { value: [], properties: {\n\t\t\tshadowBias: {},\n\t\t\tshadowNormalBias: {},\n\t\t\tshadowRadius: {},\n\t\t\tshadowMapSize: {}\n\t\t} },\n\n\t\tdirectionalShadowMap: { value: [] },\n\t\tdirectionalShadowMatrix: { value: [] },\n\n\t\tspotLights: { value: [], properties: {\n\t\t\tcolor: {},\n\t\t\tposition: {},\n\t\t\tdirection: {},\n\t\t\tdistance: {},\n\t\t\tconeCos: {},\n\t\t\tpenumbraCos: {},\n\t\t\tdecay: {}\n\t\t} },\n\n\t\tspotLightShadows: { value: [], properties: {\n\t\t\tshadowBias: {},\n\t\t\tshadowNormalBias: {},\n\t\t\tshadowRadius: {},\n\t\t\tshadowMapSize: {}\n\t\t} },\n\n\t\tspotShadowMap: { value: [] },\n\t\tspotShadowMatrix: { value: [] },\n\n\t\tpointLights: { value: [], properties: {\n\t\t\tcolor: {},\n\t\t\tposition: {},\n\t\t\tdecay: {},\n\t\t\tdistance: {}\n\t\t} },\n\n\t\tpointLightShadows: { value: [], properties: {\n\t\t\tshadowBias: {},\n\t\t\tshadowNormalBias: {},\n\t\t\tshadowRadius: {},\n\t\t\tshadowMapSize: {},\n\t\t\tshadowCameraNear: {},\n\t\t\tshadowCameraFar: {}\n\t\t} },\n\n\t\tpointShadowMap: { value: [] },\n\t\tpointShadowMatrix: { value: [] },\n\n\t\themisphereLights: { value: [], properties: {\n\t\t\tdirection: {},\n\t\t\tskyColor: {},\n\t\t\tgroundColor: {}\n\t\t} },\n\n\t\t// TODO (abelnation): RectAreaLight BRDF data needs to be moved from example to main src\n\t\trectAreaLights: { value: [], properties: {\n\t\t\tcolor: {},\n\t\t\tposition: {},\n\t\t\twidth: {},\n\t\t\theight: {}\n\t\t} },\n\n\t\tltc_1: { value: null },\n\t\tltc_2: { value: null }\n\n\t},\n\n\tpoints: {\n\n\t\tdiffuse: { value: new Color( 0xffffff ) },\n\t\topacity: { value: 1.0 },\n\t\tsize: { value: 1.0 },\n\t\tscale: { value: 1.0 },\n\t\tmap: { value: null },\n\t\talphaMap: { value: null },\n\t\talphaTest: { value: 0 },\n\t\tuvTransform: { value: new Matrix3() }\n\n\t},\n\n\tsprite: {\n\n\t\tdiffuse: { value: new Color( 0xffffff ) },\n\t\topacity: { value: 1.0 },\n\t\tcenter: { value: new Vector2( 0.5, 0.5 ) },\n\t\trotation: { value: 0.0 },\n\t\tmap: { value: null },\n\t\talphaMap: { value: null },\n\t\talphaTest: { value: 0 },\n\t\tuvTransform: { value: new Matrix3() }\n\n\t}\n\n};\n\nconst ShaderLib = {\n\n\tbasic: {\n\n\t\tuniforms: mergeUniforms( [\n\t\t\tUniformsLib.common,\n\t\t\tUniformsLib.specularmap,\n\t\t\tUniformsLib.envmap,\n\t\t\tUniformsLib.aomap,\n\t\t\tUniformsLib.lightmap,\n\t\t\tUniformsLib.fog\n\t\t] ),\n\n\t\tvertexShader: ShaderChunk.meshbasic_vert,\n\t\tfragmentShader: ShaderChunk.meshbasic_frag\n\n\t},\n\n\tlambert: {\n\n\t\tuniforms: mergeUniforms( [\n\t\t\tUniformsLib.common,\n\t\t\tUniformsLib.specularmap,\n\t\t\tUniformsLib.envmap,\n\t\t\tUniformsLib.aomap,\n\t\t\tUniformsLib.lightmap,\n\t\t\tUniformsLib.emissivemap,\n\t\t\tUniformsLib.fog,\n\t\t\tUniformsLib.lights,\n\t\t\t{\n\t\t\t\temissive: { value: new Color( 0x000000 ) }\n\t\t\t}\n\t\t] ),\n\n\t\tvertexShader: ShaderChunk.meshlambert_vert,\n\t\tfragmentShader: ShaderChunk.meshlambert_frag\n\n\t},\n\n\tphong: {\n\n\t\tuniforms: mergeUniforms( [\n\t\t\tUniformsLib.common,\n\t\t\tUniformsLib.specularmap,\n\t\t\tUniformsLib.envmap,\n\t\t\tUniformsLib.aomap,\n\t\t\tUniformsLib.lightmap,\n\t\t\tUniformsLib.emissivemap,\n\t\t\tUniformsLib.bumpmap,\n\t\t\tUniformsLib.normalmap,\n\t\t\tUniformsLib.displacementmap,\n\t\t\tUniformsLib.fog,\n\t\t\tUniformsLib.lights,\n\t\t\t{\n\t\t\t\temissive: { value: new Color( 0x000000 ) },\n\t\t\t\tspecular: { value: new Color( 0x111111 ) },\n\t\t\t\tshininess: { value: 30 }\n\t\t\t}\n\t\t] ),\n\n\t\tvertexShader: ShaderChunk.meshphong_vert,\n\t\tfragmentShader: ShaderChunk.meshphong_frag\n\n\t},\n\n\tstandard: {\n\n\t\tuniforms: mergeUniforms( [\n\t\t\tUniformsLib.common,\n\t\t\tUniformsLib.envmap,\n\t\t\tUniformsLib.aomap,\n\t\t\tUniformsLib.lightmap,\n\t\t\tUniformsLib.emissivemap,\n\t\t\tUniformsLib.bumpmap,\n\t\t\tUniformsLib.normalmap,\n\t\t\tUniformsLib.displacementmap,\n\t\t\tUniformsLib.roughnessmap,\n\t\t\tUniformsLib.metalnessmap,\n\t\t\tUniformsLib.fog,\n\t\t\tUniformsLib.lights,\n\t\t\t{\n\t\t\t\temissive: { value: new Color( 0x000000 ) },\n\t\t\t\troughness: { value: 1.0 },\n\t\t\t\tmetalness: { value: 0.0 },\n\t\t\t\tenvMapIntensity: { value: 1 } // temporary\n\t\t\t}\n\t\t] ),\n\n\t\tvertexShader: ShaderChunk.meshphysical_vert,\n\t\tfragmentShader: ShaderChunk.meshphysical_frag\n\n\t},\n\n\ttoon: {\n\n\t\tuniforms: mergeUniforms( [\n\t\t\tUniformsLib.common,\n\t\t\tUniformsLib.aomap,\n\t\t\tUniformsLib.lightmap,\n\t\t\tUniformsLib.emissivemap,\n\t\t\tUniformsLib.bumpmap,\n\t\t\tUniformsLib.normalmap,\n\t\t\tUniformsLib.displacementmap,\n\t\t\tUniformsLib.gradientmap,\n\t\t\tUniformsLib.fog,\n\t\t\tUniformsLib.lights,\n\t\t\t{\n\t\t\t\temissive: { value: new Color( 0x000000 ) }\n\t\t\t}\n\t\t] ),\n\n\t\tvertexShader: ShaderChunk.meshtoon_vert,\n\t\tfragmentShader: ShaderChunk.meshtoon_frag\n\n\t},\n\n\tmatcap: {\n\n\t\tuniforms: mergeUniforms( [\n\t\t\tUniformsLib.common,\n\t\t\tUniformsLib.bumpmap,\n\t\t\tUniformsLib.normalmap,\n\t\t\tUniformsLib.displacementmap,\n\t\t\tUniformsLib.fog,\n\t\t\t{\n\t\t\t\tmatcap: { value: null }\n\t\t\t}\n\t\t] ),\n\n\t\tvertexShader: ShaderChunk.meshmatcap_vert,\n\t\tfragmentShader: ShaderChunk.meshmatcap_frag\n\n\t},\n\n\tpoints: {\n\n\t\tuniforms: mergeUniforms( [\n\t\t\tUniformsLib.points,\n\t\t\tUniformsLib.fog\n\t\t] ),\n\n\t\tvertexShader: ShaderChunk.points_vert,\n\t\tfragmentShader: ShaderChunk.points_frag\n\n\t},\n\n\tdashed: {\n\n\t\tuniforms: mergeUniforms( [\n\t\t\tUniformsLib.common,\n\t\t\tUniformsLib.fog,\n\t\t\t{\n\t\t\t\tscale: { value: 1 },\n\t\t\t\tdashSize: { value: 1 },\n\t\t\t\ttotalSize: { value: 2 }\n\t\t\t}\n\t\t] ),\n\n\t\tvertexShader: ShaderChunk.linedashed_vert,\n\t\tfragmentShader: ShaderChunk.linedashed_frag\n\n\t},\n\n\tdepth: {\n\n\t\tuniforms: mergeUniforms( [\n\t\t\tUniformsLib.common,\n\t\t\tUniformsLib.displacementmap\n\t\t] ),\n\n\t\tvertexShader: ShaderChunk.depth_vert,\n\t\tfragmentShader: ShaderChunk.depth_frag\n\n\t},\n\n\tnormal: {\n\n\t\tuniforms: mergeUniforms( [\n\t\t\tUniformsLib.common,\n\t\t\tUniformsLib.bumpmap,\n\t\t\tUniformsLib.normalmap,\n\t\t\tUniformsLib.displacementmap,\n\t\t\t{\n\t\t\t\topacity: { value: 1.0 }\n\t\t\t}\n\t\t] ),\n\n\t\tvertexShader: ShaderChunk.meshnormal_vert,\n\t\tfragmentShader: ShaderChunk.meshnormal_frag\n\n\t},\n\n\tsprite: {\n\n\t\tuniforms: mergeUniforms( [\n\t\t\tUniformsLib.sprite,\n\t\t\tUniformsLib.fog\n\t\t] ),\n\n\t\tvertexShader: ShaderChunk.sprite_vert,\n\t\tfragmentShader: ShaderChunk.sprite_frag\n\n\t},\n\n\tbackground: {\n\n\t\tuniforms: {\n\t\t\tuvTransform: { value: new Matrix3() },\n\t\t\tt2D: { value: null },\n\t\t},\n\n\t\tvertexShader: ShaderChunk.background_vert,\n\t\tfragmentShader: ShaderChunk.background_frag\n\n\t},\n\t/* -------------------------------------------------------------------------\n\t//\tCube map shader\n\t ------------------------------------------------------------------------- */\n\n\tcube: {\n\n\t\tuniforms: mergeUniforms( [\n\t\t\tUniformsLib.envmap,\n\t\t\t{\n\t\t\t\topacity: { value: 1.0 }\n\t\t\t}\n\t\t] ),\n\n\t\tvertexShader: ShaderChunk.cube_vert,\n\t\tfragmentShader: ShaderChunk.cube_frag\n\n\t},\n\n\tequirect: {\n\n\t\tuniforms: {\n\t\t\ttEquirect: { value: null },\n\t\t},\n\n\t\tvertexShader: ShaderChunk.equirect_vert,\n\t\tfragmentShader: ShaderChunk.equirect_frag\n\n\t},\n\n\tdistanceRGBA: {\n\n\t\tuniforms: mergeUniforms( [\n\t\t\tUniformsLib.common,\n\t\t\tUniformsLib.displacementmap,\n\t\t\t{\n\t\t\t\treferencePosition: { value: new Vector3() },\n\t\t\t\tnearDistance: { value: 1 },\n\t\t\t\tfarDistance: { value: 1000 }\n\t\t\t}\n\t\t] ),\n\n\t\tvertexShader: ShaderChunk.distanceRGBA_vert,\n\t\tfragmentShader: ShaderChunk.distanceRGBA_frag\n\n\t},\n\n\tshadow: {\n\n\t\tuniforms: mergeUniforms( [\n\t\t\tUniformsLib.lights,\n\t\t\tUniformsLib.fog,\n\t\t\t{\n\t\t\t\tcolor: { value: new Color( 0x00000 ) },\n\t\t\t\topacity: { value: 1.0 }\n\t\t\t},\n\t\t] ),\n\n\t\tvertexShader: ShaderChunk.shadow_vert,\n\t\tfragmentShader: ShaderChunk.shadow_frag\n\n\t}\n\n};\n\nShaderLib.physical = {\n\n\tuniforms: mergeUniforms( [\n\t\tShaderLib.standard.uniforms,\n\t\t{\n\t\t\tclearcoat: { value: 0 },\n\t\t\tclearcoatMap: { value: null },\n\t\t\tclearcoatRoughness: { value: 0 },\n\t\t\tclearcoatRoughnessMap: { value: null },\n\t\t\tclearcoatNormalScale: { value: new Vector2( 1, 1 ) },\n\t\t\tclearcoatNormalMap: { value: null },\n\t\t\tiridescence: { value: 0 },\n\t\t\tiridescenceMap: { value: null },\n\t\t\tiridescenceIOR: { value: 1.3 },\n\t\t\tiridescenceThicknessMinimum: { value: 100 },\n\t\t\tiridescenceThicknessMaximum: { value: 400 },\n\t\t\tiridescenceThicknessMap: { value: null },\n\t\t\tsheen: { value: 0 },\n\t\t\tsheenColor: { value: new Color( 0x000000 ) },\n\t\t\tsheenColorMap: { value: null },\n\t\t\tsheenRoughness: { value: 1 },\n\t\t\tsheenRoughnessMap: { value: null },\n\t\t\ttransmission: { value: 0 },\n\t\t\ttransmissionMap: { value: null },\n\t\t\ttransmissionSamplerSize: { value: new Vector2() },\n\t\t\ttransmissionSamplerMap: { value: null },\n\t\t\tthickness: { value: 0 },\n\t\t\tthicknessMap: { value: null },\n\t\t\tattenuationDistance: { value: 0 },\n\t\t\tattenuationColor: { value: new Color( 0x000000 ) },\n\t\t\tspecularIntensity: { value: 1 },\n\t\t\tspecularIntensityMap: { value: null },\n\t\t\tspecularColor: { value: new Color( 1, 1, 1 ) },\n\t\t\tspecularColorMap: { value: null },\n\t\t}\n\t] ),\n\n\tvertexShader: ShaderChunk.meshphysical_vert,\n\tfragmentShader: ShaderChunk.meshphysical_frag\n\n};\n\nfunction WebGLBackground( renderer, cubemaps, state, objects, alpha, premultipliedAlpha ) {\n\n\tconst clearColor = new Color( 0x000000 );\n\tlet clearAlpha = alpha === true ? 0 : 1;\n\n\tlet planeMesh;\n\tlet boxMesh;\n\n\tlet currentBackground = null;\n\tlet currentBackgroundVersion = 0;\n\tlet currentTonemapping = null;\n\n\tfunction render( renderList, scene ) {\n\n\t\tlet forceClear = false;\n\t\tlet background = scene.isScene === true ? scene.background : null;\n\n\t\tif ( background && background.isTexture ) {\n\n\t\t\tbackground = cubemaps.get( background );\n\n\t\t}\n\n\t\t// Ignore background in AR\n\t\t// TODO: Reconsider this.\n\n\t\tconst xr = renderer.xr;\n\t\tconst session = xr.getSession && xr.getSession();\n\n\t\tif ( session && session.environmentBlendMode === 'additive' ) {\n\n\t\t\tbackground = null;\n\n\t\t}\n\n\t\tif ( background === null ) {\n\n\t\t\tsetClear( clearColor, clearAlpha );\n\n\t\t} else if ( background && background.isColor ) {\n\n\t\t\tsetClear( background, 1 );\n\t\t\tforceClear = true;\n\n\t\t}\n\n\t\tif ( renderer.autoClear || forceClear ) {\n\n\t\t\trenderer.clear( renderer.autoClearColor, renderer.autoClearDepth, renderer.autoClearStencil );\n\n\t\t}\n\n\t\tif ( background && ( background.isCubeTexture || background.mapping === CubeUVReflectionMapping ) ) {\n\n\t\t\tif ( boxMesh === undefined ) {\n\n\t\t\t\tboxMesh = new Mesh(\n\t\t\t\t\tnew BoxGeometry( 1, 1, 1 ),\n\t\t\t\t\tnew ShaderMaterial( {\n\t\t\t\t\t\tname: 'BackgroundCubeMaterial',\n\t\t\t\t\t\tuniforms: cloneUniforms( ShaderLib.cube.uniforms ),\n\t\t\t\t\t\tvertexShader: ShaderLib.cube.vertexShader,\n\t\t\t\t\t\tfragmentShader: ShaderLib.cube.fragmentShader,\n\t\t\t\t\t\tside: BackSide,\n\t\t\t\t\t\tdepthTest: false,\n\t\t\t\t\t\tdepthWrite: false,\n\t\t\t\t\t\tfog: false\n\t\t\t\t\t} )\n\t\t\t\t);\n\n\t\t\t\tboxMesh.geometry.deleteAttribute( 'normal' );\n\t\t\t\tboxMesh.geometry.deleteAttribute( 'uv' );\n\n\t\t\t\tboxMesh.onBeforeRender = function ( renderer, scene, camera ) {\n\n\t\t\t\t\tthis.matrixWorld.copyPosition( camera.matrixWorld );\n\n\t\t\t\t};\n\n\t\t\t\t// enable code injection for non-built-in material\n\t\t\t\tObject.defineProperty( boxMesh.material, 'envMap', {\n\n\t\t\t\t\tget: function () {\n\n\t\t\t\t\t\treturn this.uniforms.envMap.value;\n\n\t\t\t\t\t}\n\n\t\t\t\t} );\n\n\t\t\t\tobjects.update( boxMesh );\n\n\t\t\t}\n\n\t\t\tboxMesh.material.uniforms.envMap.value = background;\n\t\t\tboxMesh.material.uniforms.flipEnvMap.value = ( background.isCubeTexture && background.isRenderTargetTexture === false ) ? - 1 : 1;\n\n\t\t\tif ( currentBackground !== background ||\n\t\t\t\tcurrentBackgroundVersion !== background.version ||\n\t\t\t\tcurrentTonemapping !== renderer.toneMapping ) {\n\n\t\t\t\tboxMesh.material.needsUpdate = true;\n\n\t\t\t\tcurrentBackground = background;\n\t\t\t\tcurrentBackgroundVersion = background.version;\n\t\t\t\tcurrentTonemapping = renderer.toneMapping;\n\n\t\t\t}\n\n\t\t\tboxMesh.layers.enableAll();\n\n\t\t\t// push to the pre-sorted opaque render list\n\t\t\trenderList.unshift( boxMesh, boxMesh.geometry, boxMesh.material, 0, 0, null );\n\n\t\t} else if ( background && background.isTexture ) {\n\n\t\t\tif ( planeMesh === undefined ) {\n\n\t\t\t\tplaneMesh = new Mesh(\n\t\t\t\t\tnew PlaneGeometry( 2, 2 ),\n\t\t\t\t\tnew ShaderMaterial( {\n\t\t\t\t\t\tname: 'BackgroundMaterial',\n\t\t\t\t\t\tuniforms: cloneUniforms( ShaderLib.background.uniforms ),\n\t\t\t\t\t\tvertexShader: ShaderLib.background.vertexShader,\n\t\t\t\t\t\tfragmentShader: ShaderLib.background.fragmentShader,\n\t\t\t\t\t\tside: FrontSide,\n\t\t\t\t\t\tdepthTest: false,\n\t\t\t\t\t\tdepthWrite: false,\n\t\t\t\t\t\tfog: false\n\t\t\t\t\t} )\n\t\t\t\t);\n\n\t\t\t\tplaneMesh.geometry.deleteAttribute( 'normal' );\n\n\t\t\t\t// enable code injection for non-built-in material\n\t\t\t\tObject.defineProperty( planeMesh.material, 'map', {\n\n\t\t\t\t\tget: function () {\n\n\t\t\t\t\t\treturn this.uniforms.t2D.value;\n\n\t\t\t\t\t}\n\n\t\t\t\t} );\n\n\t\t\t\tobjects.update( planeMesh );\n\n\t\t\t}\n\n\t\t\tplaneMesh.material.uniforms.t2D.value = background;\n\n\t\t\tif ( background.matrixAutoUpdate === true ) {\n\n\t\t\t\tbackground.updateMatrix();\n\n\t\t\t}\n\n\t\t\tplaneMesh.material.uniforms.uvTransform.value.copy( background.matrix );\n\n\t\t\tif ( currentBackground !== background ||\n\t\t\t\tcurrentBackgroundVersion !== background.version ||\n\t\t\t\tcurrentTonemapping !== renderer.toneMapping ) {\n\n\t\t\t\tplaneMesh.material.needsUpdate = true;\n\n\t\t\t\tcurrentBackground = background;\n\t\t\t\tcurrentBackgroundVersion = background.version;\n\t\t\t\tcurrentTonemapping = renderer.toneMapping;\n\n\t\t\t}\n\n\t\t\tplaneMesh.layers.enableAll();\n\n\t\t\t// push to the pre-sorted opaque render list\n\t\t\trenderList.unshift( planeMesh, planeMesh.geometry, planeMesh.material, 0, 0, null );\n\n\t\t}\n\n\t}\n\n\tfunction setClear( color, alpha ) {\n\n\t\tstate.buffers.color.setClear( color.r, color.g, color.b, alpha, premultipliedAlpha );\n\n\t}\n\n\treturn {\n\n\t\tgetClearColor: function () {\n\n\t\t\treturn clearColor;\n\n\t\t},\n\t\tsetClearColor: function ( color, alpha = 1 ) {\n\n\t\t\tclearColor.set( color );\n\t\t\tclearAlpha = alpha;\n\t\t\tsetClear( clearColor, clearAlpha );\n\n\t\t},\n\t\tgetClearAlpha: function () {\n\n\t\t\treturn clearAlpha;\n\n\t\t},\n\t\tsetClearAlpha: function ( alpha ) {\n\n\t\t\tclearAlpha = alpha;\n\t\t\tsetClear( clearColor, clearAlpha );\n\n\t\t},\n\t\trender: render\n\n\t};\n\n}\n\nfunction WebGLBindingStates( gl, extensions, attributes, capabilities ) {\n\n\tconst maxVertexAttributes = gl.getParameter( 34921 );\n\n\tconst extension = capabilities.isWebGL2 ? null : extensions.get( 'OES_vertex_array_object' );\n\tconst vaoAvailable = capabilities.isWebGL2 || extension !== null;\n\n\tconst bindingStates = {};\n\n\tconst defaultState = createBindingState( null );\n\tlet currentState = defaultState;\n\tlet forceUpdate = false;\n\n\tfunction setup( object, material, program, geometry, index ) {\n\n\t\tlet updateBuffers = false;\n\n\t\tif ( vaoAvailable ) {\n\n\t\t\tconst state = getBindingState( geometry, program, material );\n\n\t\t\tif ( currentState !== state ) {\n\n\t\t\t\tcurrentState = state;\n\t\t\t\tbindVertexArrayObject( currentState.object );\n\n\t\t\t}\n\n\t\t\tupdateBuffers = needsUpdate( object, geometry, program, index );\n\n\t\t\tif ( updateBuffers ) saveCache( object, geometry, program, index );\n\n\t\t} else {\n\n\t\t\tconst wireframe = ( material.wireframe === true );\n\n\t\t\tif ( currentState.geometry !== geometry.id ||\n\t\t\t\tcurrentState.program !== program.id ||\n\t\t\t\tcurrentState.wireframe !== wireframe ) {\n\n\t\t\t\tcurrentState.geometry = geometry.id;\n\t\t\t\tcurrentState.program = program.id;\n\t\t\t\tcurrentState.wireframe = wireframe;\n\n\t\t\t\tupdateBuffers = true;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( index !== null ) {\n\n\t\t\tattributes.update( index, 34963 );\n\n\t\t}\n\n\t\tif ( updateBuffers || forceUpdate ) {\n\n\t\t\tforceUpdate = false;\n\n\t\t\tsetupVertexAttributes( object, material, program, geometry );\n\n\t\t\tif ( index !== null ) {\n\n\t\t\t\tgl.bindBuffer( 34963, attributes.get( index ).buffer );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tfunction createVertexArrayObject() {\n\n\t\tif ( capabilities.isWebGL2 ) return gl.createVertexArray();\n\n\t\treturn extension.createVertexArrayOES();\n\n\t}\n\n\tfunction bindVertexArrayObject( vao ) {\n\n\t\tif ( capabilities.isWebGL2 ) return gl.bindVertexArray( vao );\n\n\t\treturn extension.bindVertexArrayOES( vao );\n\n\t}\n\n\tfunction deleteVertexArrayObject( vao ) {\n\n\t\tif ( capabilities.isWebGL2 ) return gl.deleteVertexArray( vao );\n\n\t\treturn extension.deleteVertexArrayOES( vao );\n\n\t}\n\n\tfunction getBindingState( geometry, program, material ) {\n\n\t\tconst wireframe = ( material.wireframe === true );\n\n\t\tlet programMap = bindingStates[ geometry.id ];\n\n\t\tif ( programMap === undefined ) {\n\n\t\t\tprogramMap = {};\n\t\t\tbindingStates[ geometry.id ] = programMap;\n\n\t\t}\n\n\t\tlet stateMap = programMap[ program.id ];\n\n\t\tif ( stateMap === undefined ) {\n\n\t\t\tstateMap = {};\n\t\t\tprogramMap[ program.id ] = stateMap;\n\n\t\t}\n\n\t\tlet state = stateMap[ wireframe ];\n\n\t\tif ( state === undefined ) {\n\n\t\t\tstate = createBindingState( createVertexArrayObject() );\n\t\t\tstateMap[ wireframe ] = state;\n\n\t\t}\n\n\t\treturn state;\n\n\t}\n\n\tfunction createBindingState( vao ) {\n\n\t\tconst newAttributes = [];\n\t\tconst enabledAttributes = [];\n\t\tconst attributeDivisors = [];\n\n\t\tfor ( let i = 0; i < maxVertexAttributes; i ++ ) {\n\n\t\t\tnewAttributes[ i ] = 0;\n\t\t\tenabledAttributes[ i ] = 0;\n\t\t\tattributeDivisors[ i ] = 0;\n\n\t\t}\n\n\t\treturn {\n\n\t\t\t// for backward compatibility on non-VAO support browser\n\t\t\tgeometry: null,\n\t\t\tprogram: null,\n\t\t\twireframe: false,\n\n\t\t\tnewAttributes: newAttributes,\n\t\t\tenabledAttributes: enabledAttributes,\n\t\t\tattributeDivisors: attributeDivisors,\n\t\t\tobject: vao,\n\t\t\tattributes: {},\n\t\t\tindex: null\n\n\t\t};\n\n\t}\n\n\tfunction needsUpdate( object, geometry, program, index ) {\n\n\t\tconst cachedAttributes = currentState.attributes;\n\t\tconst geometryAttributes = geometry.attributes;\n\n\t\tlet attributesNum = 0;\n\n\t\tconst programAttributes = program.getAttributes();\n\n\t\tfor ( const name in programAttributes ) {\n\n\t\t\tconst programAttribute = programAttributes[ name ];\n\n\t\t\tif ( programAttribute.location >= 0 ) {\n\n\t\t\t\tconst cachedAttribute = cachedAttributes[ name ];\n\t\t\t\tlet geometryAttribute = geometryAttributes[ name ];\n\n\t\t\t\tif ( geometryAttribute === undefined ) {\n\n\t\t\t\t\tif ( name === 'instanceMatrix' && object.instanceMatrix ) geometryAttribute = object.instanceMatrix;\n\t\t\t\t\tif ( name === 'instanceColor' && object.instanceColor ) geometryAttribute = object.instanceColor;\n\n\t\t\t\t}\n\n\t\t\t\tif ( cachedAttribute === undefined ) return true;\n\n\t\t\t\tif ( cachedAttribute.attribute !== geometryAttribute ) return true;\n\n\t\t\t\tif ( geometryAttribute && cachedAttribute.data !== geometryAttribute.data ) return true;\n\n\t\t\t\tattributesNum ++;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( currentState.attributesNum !== attributesNum ) return true;\n\n\t\tif ( currentState.index !== index ) return true;\n\n\t\treturn false;\n\n\t}\n\n\tfunction saveCache( object, geometry, program, index ) {\n\n\t\tconst cache = {};\n\t\tconst attributes = geometry.attributes;\n\t\tlet attributesNum = 0;\n\n\t\tconst programAttributes = program.getAttributes();\n\n\t\tfor ( const name in programAttributes ) {\n\n\t\t\tconst programAttribute = programAttributes[ name ];\n\n\t\t\tif ( programAttribute.location >= 0 ) {\n\n\t\t\t\tlet attribute = attributes[ name ];\n\n\t\t\t\tif ( attribute === undefined ) {\n\n\t\t\t\t\tif ( name === 'instanceMatrix' && object.instanceMatrix ) attribute = object.instanceMatrix;\n\t\t\t\t\tif ( name === 'instanceColor' && object.instanceColor ) attribute = object.instanceColor;\n\n\t\t\t\t}\n\n\t\t\t\tconst data = {};\n\t\t\t\tdata.attribute = attribute;\n\n\t\t\t\tif ( attribute && attribute.data ) {\n\n\t\t\t\t\tdata.data = attribute.data;\n\n\t\t\t\t}\n\n\t\t\t\tcache[ name ] = data;\n\n\t\t\t\tattributesNum ++;\n\n\t\t\t}\n\n\t\t}\n\n\t\tcurrentState.attributes = cache;\n\t\tcurrentState.attributesNum = attributesNum;\n\n\t\tcurrentState.index = index;\n\n\t}\n\n\tfunction initAttributes() {\n\n\t\tconst newAttributes = currentState.newAttributes;\n\n\t\tfor ( let i = 0, il = newAttributes.length; i < il; i ++ ) {\n\n\t\t\tnewAttributes[ i ] = 0;\n\n\t\t}\n\n\t}\n\n\tfunction enableAttribute( attribute ) {\n\n\t\tenableAttributeAndDivisor( attribute, 0 );\n\n\t}\n\n\tfunction enableAttributeAndDivisor( attribute, meshPerAttribute ) {\n\n\t\tconst newAttributes = currentState.newAttributes;\n\t\tconst enabledAttributes = currentState.enabledAttributes;\n\t\tconst attributeDivisors = currentState.attributeDivisors;\n\n\t\tnewAttributes[ attribute ] = 1;\n\n\t\tif ( enabledAttributes[ attribute ] === 0 ) {\n\n\t\t\tgl.enableVertexAttribArray( attribute );\n\t\t\tenabledAttributes[ attribute ] = 1;\n\n\t\t}\n\n\t\tif ( attributeDivisors[ attribute ] !== meshPerAttribute ) {\n\n\t\t\tconst extension = capabilities.isWebGL2 ? gl : extensions.get( 'ANGLE_instanced_arrays' );\n\n\t\t\textension[ capabilities.isWebGL2 ? 'vertexAttribDivisor' : 'vertexAttribDivisorANGLE' ]( attribute, meshPerAttribute );\n\t\t\tattributeDivisors[ attribute ] = meshPerAttribute;\n\n\t\t}\n\n\t}\n\n\tfunction disableUnusedAttributes() {\n\n\t\tconst newAttributes = currentState.newAttributes;\n\t\tconst enabledAttributes = currentState.enabledAttributes;\n\n\t\tfor ( let i = 0, il = enabledAttributes.length; i < il; i ++ ) {\n\n\t\t\tif ( enabledAttributes[ i ] !== newAttributes[ i ] ) {\n\n\t\t\t\tgl.disableVertexAttribArray( i );\n\t\t\t\tenabledAttributes[ i ] = 0;\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tfunction vertexAttribPointer( index, size, type, normalized, stride, offset ) {\n\n\t\tif ( capabilities.isWebGL2 === true && ( type === 5124 || type === 5125 ) ) {\n\n\t\t\tgl.vertexAttribIPointer( index, size, type, stride, offset );\n\n\t\t} else {\n\n\t\t\tgl.vertexAttribPointer( index, size, type, normalized, stride, offset );\n\n\t\t}\n\n\t}\n\n\tfunction setupVertexAttributes( object, material, program, geometry ) {\n\n\t\tif ( capabilities.isWebGL2 === false && ( object.isInstancedMesh || geometry.isInstancedBufferGeometry ) ) {\n\n\t\t\tif ( extensions.get( 'ANGLE_instanced_arrays' ) === null ) return;\n\n\t\t}\n\n\t\tinitAttributes();\n\n\t\tconst geometryAttributes = geometry.attributes;\n\n\t\tconst programAttributes = program.getAttributes();\n\n\t\tconst materialDefaultAttributeValues = material.defaultAttributeValues;\n\n\t\tfor ( const name in programAttributes ) {\n\n\t\t\tconst programAttribute = programAttributes[ name ];\n\n\t\t\tif ( programAttribute.location >= 0 ) {\n\n\t\t\t\tlet geometryAttribute = geometryAttributes[ name ];\n\n\t\t\t\tif ( geometryAttribute === undefined ) {\n\n\t\t\t\t\tif ( name === 'instanceMatrix' && object.instanceMatrix ) geometryAttribute = object.instanceMatrix;\n\t\t\t\t\tif ( name === 'instanceColor' && object.instanceColor ) geometryAttribute = object.instanceColor;\n\n\t\t\t\t}\n\n\t\t\t\tif ( geometryAttribute !== undefined ) {\n\n\t\t\t\t\tconst normalized = geometryAttribute.normalized;\n\t\t\t\t\tconst size = geometryAttribute.itemSize;\n\n\t\t\t\t\tconst attribute = attributes.get( geometryAttribute );\n\n\t\t\t\t\t// TODO Attribute may not be available on context restore\n\n\t\t\t\t\tif ( attribute === undefined ) continue;\n\n\t\t\t\t\tconst buffer = attribute.buffer;\n\t\t\t\t\tconst type = attribute.type;\n\t\t\t\t\tconst bytesPerElement = attribute.bytesPerElement;\n\n\t\t\t\t\tif ( geometryAttribute.isInterleavedBufferAttribute ) {\n\n\t\t\t\t\t\tconst data = geometryAttribute.data;\n\t\t\t\t\t\tconst stride = data.stride;\n\t\t\t\t\t\tconst offset = geometryAttribute.offset;\n\n\t\t\t\t\t\tif ( data.isInstancedInterleavedBuffer ) {\n\n\t\t\t\t\t\t\tfor ( let i = 0; i < programAttribute.locationSize; i ++ ) {\n\n\t\t\t\t\t\t\t\tenableAttributeAndDivisor( programAttribute.location + i, data.meshPerAttribute );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tif ( object.isInstancedMesh !== true && geometry._maxInstanceCount === undefined ) {\n\n\t\t\t\t\t\t\t\tgeometry._maxInstanceCount = data.meshPerAttribute * data.count;\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\tfor ( let i = 0; i < programAttribute.locationSize; i ++ ) {\n\n\t\t\t\t\t\t\t\tenableAttribute( programAttribute.location + i );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tgl.bindBuffer( 34962, buffer );\n\n\t\t\t\t\t\tfor ( let i = 0; i < programAttribute.locationSize; i ++ ) {\n\n\t\t\t\t\t\t\tvertexAttribPointer(\n\t\t\t\t\t\t\t\tprogramAttribute.location + i,\n\t\t\t\t\t\t\t\tsize / programAttribute.locationSize,\n\t\t\t\t\t\t\t\ttype,\n\t\t\t\t\t\t\t\tnormalized,\n\t\t\t\t\t\t\t\tstride * bytesPerElement,\n\t\t\t\t\t\t\t\t( offset + ( size / programAttribute.locationSize ) * i ) * bytesPerElement\n\t\t\t\t\t\t\t);\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tif ( geometryAttribute.isInstancedBufferAttribute ) {\n\n\t\t\t\t\t\t\tfor ( let i = 0; i < programAttribute.locationSize; i ++ ) {\n\n\t\t\t\t\t\t\t\tenableAttributeAndDivisor( programAttribute.location + i, geometryAttribute.meshPerAttribute );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tif ( object.isInstancedMesh !== true && geometry._maxInstanceCount === undefined ) {\n\n\t\t\t\t\t\t\t\tgeometry._maxInstanceCount = geometryAttribute.meshPerAttribute * geometryAttribute.count;\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\tfor ( let i = 0; i < programAttribute.locationSize; i ++ ) {\n\n\t\t\t\t\t\t\t\tenableAttribute( programAttribute.location + i );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tgl.bindBuffer( 34962, buffer );\n\n\t\t\t\t\t\tfor ( let i = 0; i < programAttribute.locationSize; i ++ ) {\n\n\t\t\t\t\t\t\tvertexAttribPointer(\n\t\t\t\t\t\t\t\tprogramAttribute.location + i,\n\t\t\t\t\t\t\t\tsize / programAttribute.locationSize,\n\t\t\t\t\t\t\t\ttype,\n\t\t\t\t\t\t\t\tnormalized,\n\t\t\t\t\t\t\t\tsize * bytesPerElement,\n\t\t\t\t\t\t\t\t( size / programAttribute.locationSize ) * i * bytesPerElement\n\t\t\t\t\t\t\t);\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t} else if ( materialDefaultAttributeValues !== undefined ) {\n\n\t\t\t\t\tconst value = materialDefaultAttributeValues[ name ];\n\n\t\t\t\t\tif ( value !== undefined ) {\n\n\t\t\t\t\t\tswitch ( value.length ) {\n\n\t\t\t\t\t\t\tcase 2:\n\t\t\t\t\t\t\t\tgl.vertexAttrib2fv( programAttribute.location, value );\n\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\tcase 3:\n\t\t\t\t\t\t\t\tgl.vertexAttrib3fv( programAttribute.location, value );\n\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\tcase 4:\n\t\t\t\t\t\t\t\tgl.vertexAttrib4fv( programAttribute.location, value );\n\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\tgl.vertexAttrib1fv( programAttribute.location, value );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tdisableUnusedAttributes();\n\n\t}\n\n\tfunction dispose() {\n\n\t\treset();\n\n\t\tfor ( const geometryId in bindingStates ) {\n\n\t\t\tconst programMap = bindingStates[ geometryId ];\n\n\t\t\tfor ( const programId in programMap ) {\n\n\t\t\t\tconst stateMap = programMap[ programId ];\n\n\t\t\t\tfor ( const wireframe in stateMap ) {\n\n\t\t\t\t\tdeleteVertexArrayObject( stateMap[ wireframe ].object );\n\n\t\t\t\t\tdelete stateMap[ wireframe ];\n\n\t\t\t\t}\n\n\t\t\t\tdelete programMap[ programId ];\n\n\t\t\t}\n\n\t\t\tdelete bindingStates[ geometryId ];\n\n\t\t}\n\n\t}\n\n\tfunction releaseStatesOfGeometry( geometry ) {\n\n\t\tif ( bindingStates[ geometry.id ] === undefined ) return;\n\n\t\tconst programMap = bindingStates[ geometry.id ];\n\n\t\tfor ( const programId in programMap ) {\n\n\t\t\tconst stateMap = programMap[ programId ];\n\n\t\t\tfor ( const wireframe in stateMap ) {\n\n\t\t\t\tdeleteVertexArrayObject( stateMap[ wireframe ].object );\n\n\t\t\t\tdelete stateMap[ wireframe ];\n\n\t\t\t}\n\n\t\t\tdelete programMap[ programId ];\n\n\t\t}\n\n\t\tdelete bindingStates[ geometry.id ];\n\n\t}\n\n\tfunction releaseStatesOfProgram( program ) {\n\n\t\tfor ( const geometryId in bindingStates ) {\n\n\t\t\tconst programMap = bindingStates[ geometryId ];\n\n\t\t\tif ( programMap[ program.id ] === undefined ) continue;\n\n\t\t\tconst stateMap = programMap[ program.id ];\n\n\t\t\tfor ( const wireframe in stateMap ) {\n\n\t\t\t\tdeleteVertexArrayObject( stateMap[ wireframe ].object );\n\n\t\t\t\tdelete stateMap[ wireframe ];\n\n\t\t\t}\n\n\t\t\tdelete programMap[ program.id ];\n\n\t\t}\n\n\t}\n\n\tfunction reset() {\n\n\t\tresetDefaultState();\n\t\tforceUpdate = true;\n\n\t\tif ( currentState === defaultState ) return;\n\n\t\tcurrentState = defaultState;\n\t\tbindVertexArrayObject( currentState.object );\n\n\t}\n\n\t// for backward-compatibility\n\n\tfunction resetDefaultState() {\n\n\t\tdefaultState.geometry = null;\n\t\tdefaultState.program = null;\n\t\tdefaultState.wireframe = false;\n\n\t}\n\n\treturn {\n\n\t\tsetup: setup,\n\t\treset: reset,\n\t\tresetDefaultState: resetDefaultState,\n\t\tdispose: dispose,\n\t\treleaseStatesOfGeometry: releaseStatesOfGeometry,\n\t\treleaseStatesOfProgram: releaseStatesOfProgram,\n\n\t\tinitAttributes: initAttributes,\n\t\tenableAttribute: enableAttribute,\n\t\tdisableUnusedAttributes: disableUnusedAttributes\n\n\t};\n\n}\n\nfunction WebGLBufferRenderer( gl, extensions, info, capabilities ) {\n\n\tconst isWebGL2 = capabilities.isWebGL2;\n\n\tlet mode;\n\n\tfunction setMode( value ) {\n\n\t\tmode = value;\n\n\t}\n\n\tfunction render( start, count ) {\n\n\t\tgl.drawArrays( mode, start, count );\n\n\t\tinfo.update( count, mode, 1 );\n\n\t}\n\n\tfunction renderInstances( start, count, primcount ) {\n\n\t\tif ( primcount === 0 ) return;\n\n\t\tlet extension, methodName;\n\n\t\tif ( isWebGL2 ) {\n\n\t\t\textension = gl;\n\t\t\tmethodName = 'drawArraysInstanced';\n\n\t\t} else {\n\n\t\t\textension = extensions.get( 'ANGLE_instanced_arrays' );\n\t\t\tmethodName = 'drawArraysInstancedANGLE';\n\n\t\t\tif ( extension === null ) {\n\n\t\t\t\tconsole.error( 'THREE.WebGLBufferRenderer: using THREE.InstancedBufferGeometry but hardware does not support extension ANGLE_instanced_arrays.' );\n\t\t\t\treturn;\n\n\t\t\t}\n\n\t\t}\n\n\t\textension[ methodName ]( mode, start, count, primcount );\n\n\t\tinfo.update( count, mode, primcount );\n\n\t}\n\n\t//\n\n\tthis.setMode = setMode;\n\tthis.render = render;\n\tthis.renderInstances = renderInstances;\n\n}\n\nfunction WebGLCapabilities( gl, extensions, parameters ) {\n\n\tlet maxAnisotropy;\n\n\tfunction getMaxAnisotropy() {\n\n\t\tif ( maxAnisotropy !== undefined ) return maxAnisotropy;\n\n\t\tif ( extensions.has( 'EXT_texture_filter_anisotropic' ) === true ) {\n\n\t\t\tconst extension = extensions.get( 'EXT_texture_filter_anisotropic' );\n\n\t\t\tmaxAnisotropy = gl.getParameter( extension.MAX_TEXTURE_MAX_ANISOTROPY_EXT );\n\n\t\t} else {\n\n\t\t\tmaxAnisotropy = 0;\n\n\t\t}\n\n\t\treturn maxAnisotropy;\n\n\t}\n\n\tfunction getMaxPrecision( precision ) {\n\n\t\tif ( precision === 'highp' ) {\n\n\t\t\tif ( gl.getShaderPrecisionFormat( 35633, 36338 ).precision > 0 &&\n\t\t\t\tgl.getShaderPrecisionFormat( 35632, 36338 ).precision > 0 ) {\n\n\t\t\t\treturn 'highp';\n\n\t\t\t}\n\n\t\t\tprecision = 'mediump';\n\n\t\t}\n\n\t\tif ( precision === 'mediump' ) {\n\n\t\t\tif ( gl.getShaderPrecisionFormat( 35633, 36337 ).precision > 0 &&\n\t\t\t\tgl.getShaderPrecisionFormat( 35632, 36337 ).precision > 0 ) {\n\n\t\t\t\treturn 'mediump';\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn 'lowp';\n\n\t}\n\n\tconst isWebGL2 = ( typeof WebGL2RenderingContext !== 'undefined' && gl instanceof WebGL2RenderingContext ) ||\n\t\t( typeof WebGL2ComputeRenderingContext !== 'undefined' && gl instanceof WebGL2ComputeRenderingContext );\n\n\tlet precision = parameters.precision !== undefined ? parameters.precision : 'highp';\n\tconst maxPrecision = getMaxPrecision( precision );\n\n\tif ( maxPrecision !== precision ) {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer:', precision, 'not supported, using', maxPrecision, 'instead.' );\n\t\tprecision = maxPrecision;\n\n\t}\n\n\tconst drawBuffers = isWebGL2 || extensions.has( 'WEBGL_draw_buffers' );\n\n\tconst logarithmicDepthBuffer = parameters.logarithmicDepthBuffer === true;\n\n\tconst maxTextures = gl.getParameter( 34930 );\n\tconst maxVertexTextures = gl.getParameter( 35660 );\n\tconst maxTextureSize = gl.getParameter( 3379 );\n\tconst maxCubemapSize = gl.getParameter( 34076 );\n\n\tconst maxAttributes = gl.getParameter( 34921 );\n\tconst maxVertexUniforms = gl.getParameter( 36347 );\n\tconst maxVaryings = gl.getParameter( 36348 );\n\tconst maxFragmentUniforms = gl.getParameter( 36349 );\n\n\tconst vertexTextures = maxVertexTextures > 0;\n\tconst floatFragmentTextures = isWebGL2 || extensions.has( 'OES_texture_float' );\n\tconst floatVertexTextures = vertexTextures && floatFragmentTextures;\n\n\tconst maxSamples = isWebGL2 ? gl.getParameter( 36183 ) : 0;\n\n\treturn {\n\n\t\tisWebGL2: isWebGL2,\n\n\t\tdrawBuffers: drawBuffers,\n\n\t\tgetMaxAnisotropy: getMaxAnisotropy,\n\t\tgetMaxPrecision: getMaxPrecision,\n\n\t\tprecision: precision,\n\t\tlogarithmicDepthBuffer: logarithmicDepthBuffer,\n\n\t\tmaxTextures: maxTextures,\n\t\tmaxVertexTextures: maxVertexTextures,\n\t\tmaxTextureSize: maxTextureSize,\n\t\tmaxCubemapSize: maxCubemapSize,\n\n\t\tmaxAttributes: maxAttributes,\n\t\tmaxVertexUniforms: maxVertexUniforms,\n\t\tmaxVaryings: maxVaryings,\n\t\tmaxFragmentUniforms: maxFragmentUniforms,\n\n\t\tvertexTextures: vertexTextures,\n\t\tfloatFragmentTextures: floatFragmentTextures,\n\t\tfloatVertexTextures: floatVertexTextures,\n\n\t\tmaxSamples: maxSamples\n\n\t};\n\n}\n\nfunction WebGLClipping( properties ) {\n\n\tconst scope = this;\n\n\tlet globalState = null,\n\t\tnumGlobalPlanes = 0,\n\t\tlocalClippingEnabled = false,\n\t\trenderingShadows = false;\n\n\tconst plane = new Plane(),\n\t\tviewNormalMatrix = new Matrix3(),\n\n\t\tuniform = { value: null, needsUpdate: false };\n\n\tthis.uniform = uniform;\n\tthis.numPlanes = 0;\n\tthis.numIntersection = 0;\n\n\tthis.init = function ( planes, enableLocalClipping, camera ) {\n\n\t\tconst enabled =\n\t\t\tplanes.length !== 0 ||\n\t\t\tenableLocalClipping ||\n\t\t\t// enable state of previous frame - the clipping code has to\n\t\t\t// run another frame in order to reset the state:\n\t\t\tnumGlobalPlanes !== 0 ||\n\t\t\tlocalClippingEnabled;\n\n\t\tlocalClippingEnabled = enableLocalClipping;\n\n\t\tglobalState = projectPlanes( planes, camera, 0 );\n\t\tnumGlobalPlanes = planes.length;\n\n\t\treturn enabled;\n\n\t};\n\n\tthis.beginShadows = function () {\n\n\t\trenderingShadows = true;\n\t\tprojectPlanes( null );\n\n\t};\n\n\tthis.endShadows = function () {\n\n\t\trenderingShadows = false;\n\t\tresetGlobalState();\n\n\t};\n\n\tthis.setState = function ( material, camera, useCache ) {\n\n\t\tconst planes = material.clippingPlanes,\n\t\t\tclipIntersection = material.clipIntersection,\n\t\t\tclipShadows = material.clipShadows;\n\n\t\tconst materialProperties = properties.get( material );\n\n\t\tif ( ! localClippingEnabled || planes === null || planes.length === 0 || renderingShadows && ! clipShadows ) {\n\n\t\t\t// there's no local clipping\n\n\t\t\tif ( renderingShadows ) {\n\n\t\t\t\t// there's no global clipping\n\n\t\t\t\tprojectPlanes( null );\n\n\t\t\t} else {\n\n\t\t\t\tresetGlobalState();\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tconst nGlobal = renderingShadows ? 0 : numGlobalPlanes,\n\t\t\t\tlGlobal = nGlobal * 4;\n\n\t\t\tlet dstArray = materialProperties.clippingState || null;\n\n\t\t\tuniform.value = dstArray; // ensure unique state\n\n\t\t\tdstArray = projectPlanes( planes, camera, lGlobal, useCache );\n\n\t\t\tfor ( let i = 0; i !== lGlobal; ++ i ) {\n\n\t\t\t\tdstArray[ i ] = globalState[ i ];\n\n\t\t\t}\n\n\t\t\tmaterialProperties.clippingState = dstArray;\n\t\t\tthis.numIntersection = clipIntersection ? this.numPlanes : 0;\n\t\t\tthis.numPlanes += nGlobal;\n\n\t\t}\n\n\n\t};\n\n\tfunction resetGlobalState() {\n\n\t\tif ( uniform.value !== globalState ) {\n\n\t\t\tuniform.value = globalState;\n\t\t\tuniform.needsUpdate = numGlobalPlanes > 0;\n\n\t\t}\n\n\t\tscope.numPlanes = numGlobalPlanes;\n\t\tscope.numIntersection = 0;\n\n\t}\n\n\tfunction projectPlanes( planes, camera, dstOffset, skipTransform ) {\n\n\t\tconst nPlanes = planes !== null ? planes.length : 0;\n\t\tlet dstArray = null;\n\n\t\tif ( nPlanes !== 0 ) {\n\n\t\t\tdstArray = uniform.value;\n\n\t\t\tif ( skipTransform !== true || dstArray === null ) {\n\n\t\t\t\tconst flatSize = dstOffset + nPlanes * 4,\n\t\t\t\t\tviewMatrix = camera.matrixWorldInverse;\n\n\t\t\t\tviewNormalMatrix.getNormalMatrix( viewMatrix );\n\n\t\t\t\tif ( dstArray === null || dstArray.length < flatSize ) {\n\n\t\t\t\t\tdstArray = new Float32Array( flatSize );\n\n\t\t\t\t}\n\n\t\t\t\tfor ( let i = 0, i4 = dstOffset; i !== nPlanes; ++ i, i4 += 4 ) {\n\n\t\t\t\t\tplane.copy( planes[ i ] ).applyMatrix4( viewMatrix, viewNormalMatrix );\n\n\t\t\t\t\tplane.normal.toArray( dstArray, i4 );\n\t\t\t\t\tdstArray[ i4 + 3 ] = plane.constant;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tuniform.value = dstArray;\n\t\t\tuniform.needsUpdate = true;\n\n\t\t}\n\n\t\tscope.numPlanes = nPlanes;\n\t\tscope.numIntersection = 0;\n\n\t\treturn dstArray;\n\n\t}\n\n}\n\nfunction WebGLCubeMaps( renderer ) {\n\n\tlet cubemaps = new WeakMap();\n\n\tfunction mapTextureMapping( texture, mapping ) {\n\n\t\tif ( mapping === EquirectangularReflectionMapping ) {\n\n\t\t\ttexture.mapping = CubeReflectionMapping;\n\n\t\t} else if ( mapping === EquirectangularRefractionMapping ) {\n\n\t\t\ttexture.mapping = CubeRefractionMapping;\n\n\t\t}\n\n\t\treturn texture;\n\n\t}\n\n\tfunction get( texture ) {\n\n\t\tif ( texture && texture.isTexture && texture.isRenderTargetTexture === false ) {\n\n\t\t\tconst mapping = texture.mapping;\n\n\t\t\tif ( mapping === EquirectangularReflectionMapping || mapping === EquirectangularRefractionMapping ) {\n\n\t\t\t\tif ( cubemaps.has( texture ) ) {\n\n\t\t\t\t\tconst cubemap = cubemaps.get( texture ).texture;\n\t\t\t\t\treturn mapTextureMapping( cubemap, texture.mapping );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tconst image = texture.image;\n\n\t\t\t\t\tif ( image && image.height > 0 ) {\n\n\t\t\t\t\t\tconst renderTarget = new WebGLCubeRenderTarget( image.height / 2 );\n\t\t\t\t\t\trenderTarget.fromEquirectangularTexture( renderer, texture );\n\t\t\t\t\t\tcubemaps.set( texture, renderTarget );\n\n\t\t\t\t\t\ttexture.addEventListener( 'dispose', onTextureDispose );\n\n\t\t\t\t\t\treturn mapTextureMapping( renderTarget.texture, texture.mapping );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\t// image not yet ready. try the conversion next frame\n\n\t\t\t\t\t\treturn null;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn texture;\n\n\t}\n\n\tfunction onTextureDispose( event ) {\n\n\t\tconst texture = event.target;\n\n\t\ttexture.removeEventListener( 'dispose', onTextureDispose );\n\n\t\tconst cubemap = cubemaps.get( texture );\n\n\t\tif ( cubemap !== undefined ) {\n\n\t\t\tcubemaps.delete( texture );\n\t\t\tcubemap.dispose();\n\n\t\t}\n\n\t}\n\n\tfunction dispose() {\n\n\t\tcubemaps = new WeakMap();\n\n\t}\n\n\treturn {\n\t\tget: get,\n\t\tdispose: dispose\n\t};\n\n}\n\nclass OrthographicCamera extends Camera {\n\n\tconstructor( left = - 1, right = 1, top = 1, bottom = - 1, near = 0.1, far = 2000 ) {\n\n\t\tsuper();\n\n\t\tthis.isOrthographicCamera = true;\n\n\t\tthis.type = 'OrthographicCamera';\n\n\t\tthis.zoom = 1;\n\t\tthis.view = null;\n\n\t\tthis.left = left;\n\t\tthis.right = right;\n\t\tthis.top = top;\n\t\tthis.bottom = bottom;\n\n\t\tthis.near = near;\n\t\tthis.far = far;\n\n\t\tthis.updateProjectionMatrix();\n\n\t}\n\n\tcopy( source, recursive ) {\n\n\t\tsuper.copy( source, recursive );\n\n\t\tthis.left = source.left;\n\t\tthis.right = source.right;\n\t\tthis.top = source.top;\n\t\tthis.bottom = source.bottom;\n\t\tthis.near = source.near;\n\t\tthis.far = source.far;\n\n\t\tthis.zoom = source.zoom;\n\t\tthis.view = source.view === null ? null : Object.assign( {}, source.view );\n\n\t\treturn this;\n\n\t}\n\n\tsetViewOffset( fullWidth, fullHeight, x, y, width, height ) {\n\n\t\tif ( this.view === null ) {\n\n\t\t\tthis.view = {\n\t\t\t\tenabled: true,\n\t\t\t\tfullWidth: 1,\n\t\t\t\tfullHeight: 1,\n\t\t\t\toffsetX: 0,\n\t\t\t\toffsetY: 0,\n\t\t\t\twidth: 1,\n\t\t\t\theight: 1\n\t\t\t};\n\n\t\t}\n\n\t\tthis.view.enabled = true;\n\t\tthis.view.fullWidth = fullWidth;\n\t\tthis.view.fullHeight = fullHeight;\n\t\tthis.view.offsetX = x;\n\t\tthis.view.offsetY = y;\n\t\tthis.view.width = width;\n\t\tthis.view.height = height;\n\n\t\tthis.updateProjectionMatrix();\n\n\t}\n\n\tclearViewOffset() {\n\n\t\tif ( this.view !== null ) {\n\n\t\t\tthis.view.enabled = false;\n\n\t\t}\n\n\t\tthis.updateProjectionMatrix();\n\n\t}\n\n\tupdateProjectionMatrix() {\n\n\t\tconst dx = ( this.right - this.left ) / ( 2 * this.zoom );\n\t\tconst dy = ( this.top - this.bottom ) / ( 2 * this.zoom );\n\t\tconst cx = ( this.right + this.left ) / 2;\n\t\tconst cy = ( this.top + this.bottom ) / 2;\n\n\t\tlet left = cx - dx;\n\t\tlet right = cx + dx;\n\t\tlet top = cy + dy;\n\t\tlet bottom = cy - dy;\n\n\t\tif ( this.view !== null && this.view.enabled ) {\n\n\t\t\tconst scaleW = ( this.right - this.left ) / this.view.fullWidth / this.zoom;\n\t\t\tconst scaleH = ( this.top - this.bottom ) / this.view.fullHeight / this.zoom;\n\n\t\t\tleft += scaleW * this.view.offsetX;\n\t\t\tright = left + scaleW * this.view.width;\n\t\t\ttop -= scaleH * this.view.offsetY;\n\t\t\tbottom = top - scaleH * this.view.height;\n\n\t\t}\n\n\t\tthis.projectionMatrix.makeOrthographic( left, right, top, bottom, this.near, this.far );\n\n\t\tthis.projectionMatrixInverse.copy( this.projectionMatrix ).invert();\n\n\t}\n\n\ttoJSON( meta ) {\n\n\t\tconst data = super.toJSON( meta );\n\n\t\tdata.object.zoom = this.zoom;\n\t\tdata.object.left = this.left;\n\t\tdata.object.right = this.right;\n\t\tdata.object.top = this.top;\n\t\tdata.object.bottom = this.bottom;\n\t\tdata.object.near = this.near;\n\t\tdata.object.far = this.far;\n\n\t\tif ( this.view !== null ) data.object.view = Object.assign( {}, this.view );\n\n\t\treturn data;\n\n\t}\n\n}\n\nconst LOD_MIN = 4;\n\n// The standard deviations (radians) associated with the extra mips. These are\n// chosen to approximate a Trowbridge-Reitz distribution function times the\n// geometric shadowing function. These sigma values squared must match the\n// variance #defines in cube_uv_reflection_fragment.glsl.js.\nconst EXTRA_LOD_SIGMA = [ 0.125, 0.215, 0.35, 0.446, 0.526, 0.582 ];\n\n// The maximum length of the blur for loop. Smaller sigmas will use fewer\n// samples and exit early, but not recompile the shader.\nconst MAX_SAMPLES = 20;\n\nconst _flatCamera = /*@__PURE__*/ new OrthographicCamera();\nconst _clearColor = /*@__PURE__*/ new Color();\nlet _oldTarget = null;\n\n// Golden Ratio\nconst PHI = ( 1 + Math.sqrt( 5 ) ) / 2;\nconst INV_PHI = 1 / PHI;\n\n// Vertices of a dodecahedron (except the opposites, which represent the\n// same axis), used as axis directions evenly spread on a sphere.\nconst _axisDirections = [\n\t/*@__PURE__*/ new Vector3( 1, 1, 1 ),\n\t/*@__PURE__*/ new Vector3( - 1, 1, 1 ),\n\t/*@__PURE__*/ new Vector3( 1, 1, - 1 ),\n\t/*@__PURE__*/ new Vector3( - 1, 1, - 1 ),\n\t/*@__PURE__*/ new Vector3( 0, PHI, INV_PHI ),\n\t/*@__PURE__*/ new Vector3( 0, PHI, - INV_PHI ),\n\t/*@__PURE__*/ new Vector3( INV_PHI, 0, PHI ),\n\t/*@__PURE__*/ new Vector3( - INV_PHI, 0, PHI ),\n\t/*@__PURE__*/ new Vector3( PHI, INV_PHI, 0 ),\n\t/*@__PURE__*/ new Vector3( - PHI, INV_PHI, 0 ) ];\n\n/**\n * This class generates a Prefiltered, Mipmapped Radiance Environment Map\n * (PMREM) from a cubeMap environment texture. This allows different levels of\n * blur to be quickly accessed based on material roughness. It is packed into a\n * special CubeUV format that allows us to perform custom interpolation so that\n * we can support nonlinear formats such as RGBE. Unlike a traditional mipmap\n * chain, it only goes down to the LOD_MIN level (above), and then creates extra\n * even more filtered 'mips' at the same LOD_MIN resolution, associated with\n * higher roughness levels. In this way we maintain resolution to smoothly\n * interpolate diffuse lighting while limiting sampling computation.\n *\n * Paper: Fast, Accurate Image-Based Lighting\n * https://drive.google.com/file/d/15y8r_UpKlU9SvV4ILb0C3qCPecS8pvLz/view\n*/\n\nclass PMREMGenerator {\n\n\tconstructor( renderer ) {\n\n\t\tthis._renderer = renderer;\n\t\tthis._pingPongRenderTarget = null;\n\n\t\tthis._lodMax = 0;\n\t\tthis._cubeSize = 0;\n\t\tthis._lodPlanes = [];\n\t\tthis._sizeLods = [];\n\t\tthis._sigmas = [];\n\n\t\tthis._blurMaterial = null;\n\t\tthis._cubemapMaterial = null;\n\t\tthis._equirectMaterial = null;\n\n\t\tthis._compileMaterial( this._blurMaterial );\n\n\t}\n\n\t/**\n\t * Generates a PMREM from a supplied Scene, which can be faster than using an\n\t * image if networking bandwidth is low. Optional sigma specifies a blur radius\n\t * in radians to be applied to the scene before PMREM generation. Optional near\n\t * and far planes ensure the scene is rendered in its entirety (the cubeCamera\n\t * is placed at the origin).\n\t */\n\tfromScene( scene, sigma = 0, near = 0.1, far = 100 ) {\n\n\t\t_oldTarget = this._renderer.getRenderTarget();\n\n\t\tthis._setSize( 256 );\n\n\t\tconst cubeUVRenderTarget = this._allocateTargets();\n\t\tcubeUVRenderTarget.depthBuffer = true;\n\n\t\tthis._sceneToCubeUV( scene, near, far, cubeUVRenderTarget );\n\n\t\tif ( sigma > 0 ) {\n\n\t\t\tthis._blur( cubeUVRenderTarget, 0, 0, sigma );\n\n\t\t}\n\n\t\tthis._applyPMREM( cubeUVRenderTarget );\n\t\tthis._cleanup( cubeUVRenderTarget );\n\n\t\treturn cubeUVRenderTarget;\n\n\t}\n\n\t/**\n\t * Generates a PMREM from an equirectangular texture, which can be either LDR\n\t * or HDR. The ideal input image size is 1k (1024 x 512),\n\t * as this matches best with the 256 x 256 cubemap output.\n\t */\n\tfromEquirectangular( equirectangular, renderTarget = null ) {\n\n\t\treturn this._fromTexture( equirectangular, renderTarget );\n\n\t}\n\n\t/**\n\t * Generates a PMREM from an cubemap texture, which can be either LDR\n\t * or HDR. The ideal input cube size is 256 x 256,\n\t * as this matches best with the 256 x 256 cubemap output.\n\t */\n\tfromCubemap( cubemap, renderTarget = null ) {\n\n\t\treturn this._fromTexture( cubemap, renderTarget );\n\n\t}\n\n\t/**\n\t * Pre-compiles the cubemap shader. You can get faster start-up by invoking this method during\n\t * your texture's network fetch for increased concurrency.\n\t */\n\tcompileCubemapShader() {\n\n\t\tif ( this._cubemapMaterial === null ) {\n\n\t\t\tthis._cubemapMaterial = _getCubemapMaterial();\n\t\t\tthis._compileMaterial( this._cubemapMaterial );\n\n\t\t}\n\n\t}\n\n\t/**\n\t * Pre-compiles the equirectangular shader. You can get faster start-up by invoking this method during\n\t * your texture's network fetch for increased concurrency.\n\t */\n\tcompileEquirectangularShader() {\n\n\t\tif ( this._equirectMaterial === null ) {\n\n\t\t\tthis._equirectMaterial = _getEquirectMaterial();\n\t\t\tthis._compileMaterial( this._equirectMaterial );\n\n\t\t}\n\n\t}\n\n\t/**\n\t * Disposes of the PMREMGenerator's internal memory. Note that PMREMGenerator is a static class,\n\t * so you should not need more than one PMREMGenerator object. If you do, calling dispose() on\n\t * one of them will cause any others to also become unusable.\n\t */\n\tdispose() {\n\n\t\tthis._dispose();\n\n\t\tif ( this._cubemapMaterial !== null ) this._cubemapMaterial.dispose();\n\t\tif ( this._equirectMaterial !== null ) this._equirectMaterial.dispose();\n\n\t}\n\n\t// private interface\n\n\t_setSize( cubeSize ) {\n\n\t\tthis._lodMax = Math.floor( Math.log2( cubeSize ) );\n\t\tthis._cubeSize = Math.pow( 2, this._lodMax );\n\n\t}\n\n\t_dispose() {\n\n\t\tif ( this._blurMaterial !== null ) this._blurMaterial.dispose();\n\n\t\tif ( this._pingPongRenderTarget !== null ) this._pingPongRenderTarget.dispose();\n\n\t\tfor ( let i = 0; i < this._lodPlanes.length; i ++ ) {\n\n\t\t\tthis._lodPlanes[ i ].dispose();\n\n\t\t}\n\n\t}\n\n\t_cleanup( outputTarget ) {\n\n\t\tthis._renderer.setRenderTarget( _oldTarget );\n\t\toutputTarget.scissorTest = false;\n\t\t_setViewport( outputTarget, 0, 0, outputTarget.width, outputTarget.height );\n\n\t}\n\n\t_fromTexture( texture, renderTarget ) {\n\n\t\tif ( texture.mapping === CubeReflectionMapping || texture.mapping === CubeRefractionMapping ) {\n\n\t\t\tthis._setSize( texture.image.length === 0 ? 16 : ( texture.image[ 0 ].width || texture.image[ 0 ].image.width ) );\n\n\t\t} else { // Equirectangular\n\n\t\t\tthis._setSize( texture.image.width / 4 );\n\n\t\t}\n\n\t\t_oldTarget = this._renderer.getRenderTarget();\n\n\t\tconst cubeUVRenderTarget = renderTarget || this._allocateTargets();\n\t\tthis._textureToCubeUV( texture, cubeUVRenderTarget );\n\t\tthis._applyPMREM( cubeUVRenderTarget );\n\t\tthis._cleanup( cubeUVRenderTarget );\n\n\t\treturn cubeUVRenderTarget;\n\n\t}\n\n\t_allocateTargets() {\n\n\t\tconst width = 3 * Math.max( this._cubeSize, 16 * 7 );\n\t\tconst height = 4 * this._cubeSize;\n\n\t\tconst params = {\n\t\t\tmagFilter: LinearFilter,\n\t\t\tminFilter: LinearFilter,\n\t\t\tgenerateMipmaps: false,\n\t\t\ttype: HalfFloatType,\n\t\t\tformat: RGBAFormat,\n\t\t\tencoding: LinearEncoding,\n\t\t\tdepthBuffer: false\n\t\t};\n\n\t\tconst cubeUVRenderTarget = _createRenderTarget( width, height, params );\n\n\t\tif ( this._pingPongRenderTarget === null || this._pingPongRenderTarget.width !== width ) {\n\n\t\t\tif ( this._pingPongRenderTarget !== null ) {\n\n\t\t\t\tthis._dispose();\n\n\t\t\t}\n\n\t\t\tthis._pingPongRenderTarget = _createRenderTarget( width, height, params );\n\n\t\t\tconst { _lodMax } = this;\n\t\t\t( { sizeLods: this._sizeLods, lodPlanes: this._lodPlanes, sigmas: this._sigmas } = _createPlanes( _lodMax ) );\n\n\t\t\tthis._blurMaterial = _getBlurShader( _lodMax, width, height );\n\n\t\t}\n\n\t\treturn cubeUVRenderTarget;\n\n\t}\n\n\t_compileMaterial( material ) {\n\n\t\tconst tmpMesh = new Mesh( this._lodPlanes[ 0 ], material );\n\t\tthis._renderer.compile( tmpMesh, _flatCamera );\n\n\t}\n\n\t_sceneToCubeUV( scene, near, far, cubeUVRenderTarget ) {\n\n\t\tconst fov = 90;\n\t\tconst aspect = 1;\n\t\tconst cubeCamera = new PerspectiveCamera( fov, aspect, near, far );\n\t\tconst upSign = [ 1, - 1, 1, 1, 1, 1 ];\n\t\tconst forwardSign = [ 1, 1, 1, - 1, - 1, - 1 ];\n\t\tconst renderer = this._renderer;\n\n\t\tconst originalAutoClear = renderer.autoClear;\n\t\tconst toneMapping = renderer.toneMapping;\n\t\trenderer.getClearColor( _clearColor );\n\n\t\trenderer.toneMapping = NoToneMapping;\n\t\trenderer.autoClear = false;\n\n\t\tconst backgroundMaterial = new MeshBasicMaterial( {\n\t\t\tname: 'PMREM.Background',\n\t\t\tside: BackSide,\n\t\t\tdepthWrite: false,\n\t\t\tdepthTest: false,\n\t\t} );\n\n\t\tconst backgroundBox = new Mesh( new BoxGeometry(), backgroundMaterial );\n\n\t\tlet useSolidColor = false;\n\t\tconst background = scene.background;\n\n\t\tif ( background ) {\n\n\t\t\tif ( background.isColor ) {\n\n\t\t\t\tbackgroundMaterial.color.copy( background );\n\t\t\t\tscene.background = null;\n\t\t\t\tuseSolidColor = true;\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tbackgroundMaterial.color.copy( _clearColor );\n\t\t\tuseSolidColor = true;\n\n\t\t}\n\n\t\tfor ( let i = 0; i < 6; i ++ ) {\n\n\t\t\tconst col = i % 3;\n\n\t\t\tif ( col === 0 ) {\n\n\t\t\t\tcubeCamera.up.set( 0, upSign[ i ], 0 );\n\t\t\t\tcubeCamera.lookAt( forwardSign[ i ], 0, 0 );\n\n\t\t\t} else if ( col === 1 ) {\n\n\t\t\t\tcubeCamera.up.set( 0, 0, upSign[ i ] );\n\t\t\t\tcubeCamera.lookAt( 0, forwardSign[ i ], 0 );\n\n\t\t\t} else {\n\n\t\t\t\tcubeCamera.up.set( 0, upSign[ i ], 0 );\n\t\t\t\tcubeCamera.lookAt( 0, 0, forwardSign[ i ] );\n\n\t\t\t}\n\n\t\t\tconst size = this._cubeSize;\n\n\t\t\t_setViewport( cubeUVRenderTarget, col * size, i > 2 ? size : 0, size, size );\n\n\t\t\trenderer.setRenderTarget( cubeUVRenderTarget );\n\n\t\t\tif ( useSolidColor ) {\n\n\t\t\t\trenderer.render( backgroundBox, cubeCamera );\n\n\t\t\t}\n\n\t\t\trenderer.render( scene, cubeCamera );\n\n\t\t}\n\n\t\tbackgroundBox.geometry.dispose();\n\t\tbackgroundBox.material.dispose();\n\n\t\trenderer.toneMapping = toneMapping;\n\t\trenderer.autoClear = originalAutoClear;\n\t\tscene.background = background;\n\n\t}\n\n\t_textureToCubeUV( texture, cubeUVRenderTarget ) {\n\n\t\tconst renderer = this._renderer;\n\n\t\tconst isCubeTexture = ( texture.mapping === CubeReflectionMapping || texture.mapping === CubeRefractionMapping );\n\n\t\tif ( isCubeTexture ) {\n\n\t\t\tif ( this._cubemapMaterial === null ) {\n\n\t\t\t\tthis._cubemapMaterial = _getCubemapMaterial();\n\n\t\t\t}\n\n\t\t\tthis._cubemapMaterial.uniforms.flipEnvMap.value = ( texture.isRenderTargetTexture === false ) ? - 1 : 1;\n\n\t\t} else {\n\n\t\t\tif ( this._equirectMaterial === null ) {\n\n\t\t\t\tthis._equirectMaterial = _getEquirectMaterial();\n\n\t\t\t}\n\n\t\t}\n\n\t\tconst material = isCubeTexture ? this._cubemapMaterial : this._equirectMaterial;\n\t\tconst mesh = new Mesh( this._lodPlanes[ 0 ], material );\n\n\t\tconst uniforms = material.uniforms;\n\n\t\tuniforms[ 'envMap' ].value = texture;\n\n\t\tconst size = this._cubeSize;\n\n\t\t_setViewport( cubeUVRenderTarget, 0, 0, 3 * size, 2 * size );\n\n\t\trenderer.setRenderTarget( cubeUVRenderTarget );\n\t\trenderer.render( mesh, _flatCamera );\n\n\t}\n\n\t_applyPMREM( cubeUVRenderTarget ) {\n\n\t\tconst renderer = this._renderer;\n\t\tconst autoClear = renderer.autoClear;\n\t\trenderer.autoClear = false;\n\n\t\tfor ( let i = 1; i < this._lodPlanes.length; i ++ ) {\n\n\t\t\tconst sigma = Math.sqrt( this._sigmas[ i ] * this._sigmas[ i ] - this._sigmas[ i - 1 ] * this._sigmas[ i - 1 ] );\n\n\t\t\tconst poleAxis = _axisDirections[ ( i - 1 ) % _axisDirections.length ];\n\n\t\t\tthis._blur( cubeUVRenderTarget, i - 1, i, sigma, poleAxis );\n\n\t\t}\n\n\t\trenderer.autoClear = autoClear;\n\n\t}\n\n\t/**\n\t * This is a two-pass Gaussian blur for a cubemap. Normally this is done\n\t * vertically and horizontally, but this breaks down on a cube. Here we apply\n\t * the blur latitudinally (around the poles), and then longitudinally (towards\n\t * the poles) to approximate the orthogonally-separable blur. It is least\n\t * accurate at the poles, but still does a decent job.\n\t */\n\t_blur( cubeUVRenderTarget, lodIn, lodOut, sigma, poleAxis ) {\n\n\t\tconst pingPongRenderTarget = this._pingPongRenderTarget;\n\n\t\tthis._halfBlur(\n\t\t\tcubeUVRenderTarget,\n\t\t\tpingPongRenderTarget,\n\t\t\tlodIn,\n\t\t\tlodOut,\n\t\t\tsigma,\n\t\t\t'latitudinal',\n\t\t\tpoleAxis );\n\n\t\tthis._halfBlur(\n\t\t\tpingPongRenderTarget,\n\t\t\tcubeUVRenderTarget,\n\t\t\tlodOut,\n\t\t\tlodOut,\n\t\t\tsigma,\n\t\t\t'longitudinal',\n\t\t\tpoleAxis );\n\n\t}\n\n\t_halfBlur( targetIn, targetOut, lodIn, lodOut, sigmaRadians, direction, poleAxis ) {\n\n\t\tconst renderer = this._renderer;\n\t\tconst blurMaterial = this._blurMaterial;\n\n\t\tif ( direction !== 'latitudinal' && direction !== 'longitudinal' ) {\n\n\t\t\tconsole.error(\n\t\t\t\t'blur direction must be either latitudinal or longitudinal!' );\n\n\t\t}\n\n\t\t// Number of standard deviations at which to cut off the discrete approximation.\n\t\tconst STANDARD_DEVIATIONS = 3;\n\n\t\tconst blurMesh = new Mesh( this._lodPlanes[ lodOut ], blurMaterial );\n\t\tconst blurUniforms = blurMaterial.uniforms;\n\n\t\tconst pixels = this._sizeLods[ lodIn ] - 1;\n\t\tconst radiansPerPixel = isFinite( sigmaRadians ) ? Math.PI / ( 2 * pixels ) : 2 * Math.PI / ( 2 * MAX_SAMPLES - 1 );\n\t\tconst sigmaPixels = sigmaRadians / radiansPerPixel;\n\t\tconst samples = isFinite( sigmaRadians ) ? 1 + Math.floor( STANDARD_DEVIATIONS * sigmaPixels ) : MAX_SAMPLES;\n\n\t\tif ( samples > MAX_SAMPLES ) {\n\n\t\t\tconsole.warn( `sigmaRadians, ${\n\t\t\t\tsigmaRadians}, is too large and will clip, as it requested ${\n\t\t\t\tsamples} samples when the maximum is set to ${MAX_SAMPLES}` );\n\n\t\t}\n\n\t\tconst weights = [];\n\t\tlet sum = 0;\n\n\t\tfor ( let i = 0; i < MAX_SAMPLES; ++ i ) {\n\n\t\t\tconst x = i / sigmaPixels;\n\t\t\tconst weight = Math.exp( - x * x / 2 );\n\t\t\tweights.push( weight );\n\n\t\t\tif ( i === 0 ) {\n\n\t\t\t\tsum += weight;\n\n\t\t\t} else if ( i < samples ) {\n\n\t\t\t\tsum += 2 * weight;\n\n\t\t\t}\n\n\t\t}\n\n\t\tfor ( let i = 0; i < weights.length; i ++ ) {\n\n\t\t\tweights[ i ] = weights[ i ] / sum;\n\n\t\t}\n\n\t\tblurUniforms[ 'envMap' ].value = targetIn.texture;\n\t\tblurUniforms[ 'samples' ].value = samples;\n\t\tblurUniforms[ 'weights' ].value = weights;\n\t\tblurUniforms[ 'latitudinal' ].value = direction === 'latitudinal';\n\n\t\tif ( poleAxis ) {\n\n\t\t\tblurUniforms[ 'poleAxis' ].value = poleAxis;\n\n\t\t}\n\n\t\tconst { _lodMax } = this;\n\t\tblurUniforms[ 'dTheta' ].value = radiansPerPixel;\n\t\tblurUniforms[ 'mipInt' ].value = _lodMax - lodIn;\n\n\t\tconst outputSize = this._sizeLods[ lodOut ];\n\t\tconst x = 3 * outputSize * ( lodOut > _lodMax - LOD_MIN ? lodOut - _lodMax + LOD_MIN : 0 );\n\t\tconst y = 4 * ( this._cubeSize - outputSize );\n\n\t\t_setViewport( targetOut, x, y, 3 * outputSize, 2 * outputSize );\n\t\trenderer.setRenderTarget( targetOut );\n\t\trenderer.render( blurMesh, _flatCamera );\n\n\t}\n\n}\n\n\n\nfunction _createPlanes( lodMax ) {\n\n\tconst lodPlanes = [];\n\tconst sizeLods = [];\n\tconst sigmas = [];\n\n\tlet lod = lodMax;\n\n\tconst totalLods = lodMax - LOD_MIN + 1 + EXTRA_LOD_SIGMA.length;\n\n\tfor ( let i = 0; i < totalLods; i ++ ) {\n\n\t\tconst sizeLod = Math.pow( 2, lod );\n\t\tsizeLods.push( sizeLod );\n\t\tlet sigma = 1.0 / sizeLod;\n\n\t\tif ( i > lodMax - LOD_MIN ) {\n\n\t\t\tsigma = EXTRA_LOD_SIGMA[ i - lodMax + LOD_MIN - 1 ];\n\n\t\t} else if ( i === 0 ) {\n\n\t\t\tsigma = 0;\n\n\t\t}\n\n\t\tsigmas.push( sigma );\n\n\t\tconst texelSize = 1.0 / ( sizeLod - 2 );\n\t\tconst min = - texelSize;\n\t\tconst max = 1 + texelSize;\n\t\tconst uv1 = [ min, min, max, min, max, max, min, min, max, max, min, max ];\n\n\t\tconst cubeFaces = 6;\n\t\tconst vertices = 6;\n\t\tconst positionSize = 3;\n\t\tconst uvSize = 2;\n\t\tconst faceIndexSize = 1;\n\n\t\tconst position = new Float32Array( positionSize * vertices * cubeFaces );\n\t\tconst uv = new Float32Array( uvSize * vertices * cubeFaces );\n\t\tconst faceIndex = new Float32Array( faceIndexSize * vertices * cubeFaces );\n\n\t\tfor ( let face = 0; face < cubeFaces; face ++ ) {\n\n\t\t\tconst x = ( face % 3 ) * 2 / 3 - 1;\n\t\t\tconst y = face > 2 ? 0 : - 1;\n\t\t\tconst coordinates = [\n\t\t\t\tx, y, 0,\n\t\t\t\tx + 2 / 3, y, 0,\n\t\t\t\tx + 2 / 3, y + 1, 0,\n\t\t\t\tx, y, 0,\n\t\t\t\tx + 2 / 3, y + 1, 0,\n\t\t\t\tx, y + 1, 0\n\t\t\t];\n\t\t\tposition.set( coordinates, positionSize * vertices * face );\n\t\t\tuv.set( uv1, uvSize * vertices * face );\n\t\t\tconst fill = [ face, face, face, face, face, face ];\n\t\t\tfaceIndex.set( fill, faceIndexSize * vertices * face );\n\n\t\t}\n\n\t\tconst planes = new BufferGeometry();\n\t\tplanes.setAttribute( 'position', new BufferAttribute( position, positionSize ) );\n\t\tplanes.setAttribute( 'uv', new BufferAttribute( uv, uvSize ) );\n\t\tplanes.setAttribute( 'faceIndex', new BufferAttribute( faceIndex, faceIndexSize ) );\n\t\tlodPlanes.push( planes );\n\n\t\tif ( lod > LOD_MIN ) {\n\n\t\t\tlod --;\n\n\t\t}\n\n\t}\n\n\treturn { lodPlanes, sizeLods, sigmas };\n\n}\n\nfunction _createRenderTarget( width, height, params ) {\n\n\tconst cubeUVRenderTarget = new WebGLRenderTarget( width, height, params );\n\tcubeUVRenderTarget.texture.mapping = CubeUVReflectionMapping;\n\tcubeUVRenderTarget.texture.name = 'PMREM.cubeUv';\n\tcubeUVRenderTarget.scissorTest = true;\n\treturn cubeUVRenderTarget;\n\n}\n\nfunction _setViewport( target, x, y, width, height ) {\n\n\ttarget.viewport.set( x, y, width, height );\n\ttarget.scissor.set( x, y, width, height );\n\n}\n\nfunction _getBlurShader( lodMax, width, height ) {\n\n\tconst weights = new Float32Array( MAX_SAMPLES );\n\tconst poleAxis = new Vector3( 0, 1, 0 );\n\tconst shaderMaterial = new ShaderMaterial( {\n\n\t\tname: 'SphericalGaussianBlur',\n\n\t\tdefines: {\n\t\t\t'n': MAX_SAMPLES,\n\t\t\t'CUBEUV_TEXEL_WIDTH': 1.0 / width,\n\t\t\t'CUBEUV_TEXEL_HEIGHT': 1.0 / height,\n\t\t\t'CUBEUV_MAX_MIP': `${lodMax}.0`,\n\t\t},\n\n\t\tuniforms: {\n\t\t\t'envMap': { value: null },\n\t\t\t'samples': { value: 1 },\n\t\t\t'weights': { value: weights },\n\t\t\t'latitudinal': { value: false },\n\t\t\t'dTheta': { value: 0 },\n\t\t\t'mipInt': { value: 0 },\n\t\t\t'poleAxis': { value: poleAxis }\n\t\t},\n\n\t\tvertexShader: _getCommonVertexShader(),\n\n\t\tfragmentShader: /* glsl */`\n\n\t\t\tprecision mediump float;\n\t\t\tprecision mediump int;\n\n\t\t\tvarying vec3 vOutputDirection;\n\n\t\t\tuniform sampler2D envMap;\n\t\t\tuniform int samples;\n\t\t\tuniform float weights[ n ];\n\t\t\tuniform bool latitudinal;\n\t\t\tuniform float dTheta;\n\t\t\tuniform float mipInt;\n\t\t\tuniform vec3 poleAxis;\n\n\t\t\t#define ENVMAP_TYPE_CUBE_UV\n\t\t\t#include \n\n\t\t\tvec3 getSample( float theta, vec3 axis ) {\n\n\t\t\t\tfloat cosTheta = cos( theta );\n\t\t\t\t// Rodrigues' axis-angle rotation\n\t\t\t\tvec3 sampleDirection = vOutputDirection * cosTheta\n\t\t\t\t\t+ cross( axis, vOutputDirection ) * sin( theta )\n\t\t\t\t\t+ axis * dot( axis, vOutputDirection ) * ( 1.0 - cosTheta );\n\n\t\t\t\treturn bilinearCubeUV( envMap, sampleDirection, mipInt );\n\n\t\t\t}\n\n\t\t\tvoid main() {\n\n\t\t\t\tvec3 axis = latitudinal ? poleAxis : cross( poleAxis, vOutputDirection );\n\n\t\t\t\tif ( all( equal( axis, vec3( 0.0 ) ) ) ) {\n\n\t\t\t\t\taxis = vec3( vOutputDirection.z, 0.0, - vOutputDirection.x );\n\n\t\t\t\t}\n\n\t\t\t\taxis = normalize( axis );\n\n\t\t\t\tgl_FragColor = vec4( 0.0, 0.0, 0.0, 1.0 );\n\t\t\t\tgl_FragColor.rgb += weights[ 0 ] * getSample( 0.0, axis );\n\n\t\t\t\tfor ( int i = 1; i < n; i++ ) {\n\n\t\t\t\t\tif ( i >= samples ) {\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tfloat theta = dTheta * float( i );\n\t\t\t\t\tgl_FragColor.rgb += weights[ i ] * getSample( -1.0 * theta, axis );\n\t\t\t\t\tgl_FragColor.rgb += weights[ i ] * getSample( theta, axis );\n\n\t\t\t\t}\n\n\t\t\t}\n\t\t`,\n\n\t\tblending: NoBlending,\n\t\tdepthTest: false,\n\t\tdepthWrite: false\n\n\t} );\n\n\treturn shaderMaterial;\n\n}\n\nfunction _getEquirectMaterial() {\n\n\treturn new ShaderMaterial( {\n\n\t\tname: 'EquirectangularToCubeUV',\n\n\t\tuniforms: {\n\t\t\t'envMap': { value: null }\n\t\t},\n\n\t\tvertexShader: _getCommonVertexShader(),\n\n\t\tfragmentShader: /* glsl */`\n\n\t\t\tprecision mediump float;\n\t\t\tprecision mediump int;\n\n\t\t\tvarying vec3 vOutputDirection;\n\n\t\t\tuniform sampler2D envMap;\n\n\t\t\t#include \n\n\t\t\tvoid main() {\n\n\t\t\t\tvec3 outputDirection = normalize( vOutputDirection );\n\t\t\t\tvec2 uv = equirectUv( outputDirection );\n\n\t\t\t\tgl_FragColor = vec4( texture2D ( envMap, uv ).rgb, 1.0 );\n\n\t\t\t}\n\t\t`,\n\n\t\tblending: NoBlending,\n\t\tdepthTest: false,\n\t\tdepthWrite: false\n\n\t} );\n\n}\n\nfunction _getCubemapMaterial() {\n\n\treturn new ShaderMaterial( {\n\n\t\tname: 'CubemapToCubeUV',\n\n\t\tuniforms: {\n\t\t\t'envMap': { value: null },\n\t\t\t'flipEnvMap': { value: - 1 }\n\t\t},\n\n\t\tvertexShader: _getCommonVertexShader(),\n\n\t\tfragmentShader: /* glsl */`\n\n\t\t\tprecision mediump float;\n\t\t\tprecision mediump int;\n\n\t\t\tuniform float flipEnvMap;\n\n\t\t\tvarying vec3 vOutputDirection;\n\n\t\t\tuniform samplerCube envMap;\n\n\t\t\tvoid main() {\n\n\t\t\t\tgl_FragColor = textureCube( envMap, vec3( flipEnvMap * vOutputDirection.x, vOutputDirection.yz ) );\n\n\t\t\t}\n\t\t`,\n\n\t\tblending: NoBlending,\n\t\tdepthTest: false,\n\t\tdepthWrite: false\n\n\t} );\n\n}\n\nfunction _getCommonVertexShader() {\n\n\treturn /* glsl */`\n\n\t\tprecision mediump float;\n\t\tprecision mediump int;\n\n\t\tattribute float faceIndex;\n\n\t\tvarying vec3 vOutputDirection;\n\n\t\t// RH coordinate system; PMREM face-indexing convention\n\t\tvec3 getDirection( vec2 uv, float face ) {\n\n\t\t\tuv = 2.0 * uv - 1.0;\n\n\t\t\tvec3 direction = vec3( uv, 1.0 );\n\n\t\t\tif ( face == 0.0 ) {\n\n\t\t\t\tdirection = direction.zyx; // ( 1, v, u ) pos x\n\n\t\t\t} else if ( face == 1.0 ) {\n\n\t\t\t\tdirection = direction.xzy;\n\t\t\t\tdirection.xz *= -1.0; // ( -u, 1, -v ) pos y\n\n\t\t\t} else if ( face == 2.0 ) {\n\n\t\t\t\tdirection.x *= -1.0; // ( -u, v, 1 ) pos z\n\n\t\t\t} else if ( face == 3.0 ) {\n\n\t\t\t\tdirection = direction.zyx;\n\t\t\t\tdirection.xz *= -1.0; // ( -1, v, -u ) neg x\n\n\t\t\t} else if ( face == 4.0 ) {\n\n\t\t\t\tdirection = direction.xzy;\n\t\t\t\tdirection.xy *= -1.0; // ( -u, -1, v ) neg y\n\n\t\t\t} else if ( face == 5.0 ) {\n\n\t\t\t\tdirection.z *= -1.0; // ( u, v, -1 ) neg z\n\n\t\t\t}\n\n\t\t\treturn direction;\n\n\t\t}\n\n\t\tvoid main() {\n\n\t\t\tvOutputDirection = getDirection( uv, faceIndex );\n\t\t\tgl_Position = vec4( position, 1.0 );\n\n\t\t}\n\t`;\n\n}\n\nfunction WebGLCubeUVMaps( renderer ) {\n\n\tlet cubeUVmaps = new WeakMap();\n\n\tlet pmremGenerator = null;\n\n\tfunction get( texture ) {\n\n\t\tif ( texture && texture.isTexture ) {\n\n\t\t\tconst mapping = texture.mapping;\n\n\t\t\tconst isEquirectMap = ( mapping === EquirectangularReflectionMapping || mapping === EquirectangularRefractionMapping );\n\t\t\tconst isCubeMap = ( mapping === CubeReflectionMapping || mapping === CubeRefractionMapping );\n\n\t\t\t// equirect/cube map to cubeUV conversion\n\n\t\t\tif ( isEquirectMap || isCubeMap ) {\n\n\t\t\t\tif ( texture.isRenderTargetTexture && texture.needsPMREMUpdate === true ) {\n\n\t\t\t\t\ttexture.needsPMREMUpdate = false;\n\n\t\t\t\t\tlet renderTarget = cubeUVmaps.get( texture );\n\n\t\t\t\t\tif ( pmremGenerator === null ) pmremGenerator = new PMREMGenerator( renderer );\n\n\t\t\t\t\trenderTarget = isEquirectMap ? pmremGenerator.fromEquirectangular( texture, renderTarget ) : pmremGenerator.fromCubemap( texture, renderTarget );\n\t\t\t\t\tcubeUVmaps.set( texture, renderTarget );\n\n\t\t\t\t\treturn renderTarget.texture;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tif ( cubeUVmaps.has( texture ) ) {\n\n\t\t\t\t\t\treturn cubeUVmaps.get( texture ).texture;\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tconst image = texture.image;\n\n\t\t\t\t\t\tif ( ( isEquirectMap && image && image.height > 0 ) || ( isCubeMap && image && isCubeTextureComplete( image ) ) ) {\n\n\t\t\t\t\t\t\tif ( pmremGenerator === null ) pmremGenerator = new PMREMGenerator( renderer );\n\n\t\t\t\t\t\t\tconst renderTarget = isEquirectMap ? pmremGenerator.fromEquirectangular( texture ) : pmremGenerator.fromCubemap( texture );\n\t\t\t\t\t\t\tcubeUVmaps.set( texture, renderTarget );\n\n\t\t\t\t\t\t\ttexture.addEventListener( 'dispose', onTextureDispose );\n\n\t\t\t\t\t\t\treturn renderTarget.texture;\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t// image not yet ready. try the conversion next frame\n\n\t\t\t\t\t\t\treturn null;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn texture;\n\n\t}\n\n\tfunction isCubeTextureComplete( image ) {\n\n\t\tlet count = 0;\n\t\tconst length = 6;\n\n\t\tfor ( let i = 0; i < length; i ++ ) {\n\n\t\t\tif ( image[ i ] !== undefined ) count ++;\n\n\t\t}\n\n\t\treturn count === length;\n\n\n\t}\n\n\tfunction onTextureDispose( event ) {\n\n\t\tconst texture = event.target;\n\n\t\ttexture.removeEventListener( 'dispose', onTextureDispose );\n\n\t\tconst cubemapUV = cubeUVmaps.get( texture );\n\n\t\tif ( cubemapUV !== undefined ) {\n\n\t\t\tcubeUVmaps.delete( texture );\n\t\t\tcubemapUV.dispose();\n\n\t\t}\n\n\t}\n\n\tfunction dispose() {\n\n\t\tcubeUVmaps = new WeakMap();\n\n\t\tif ( pmremGenerator !== null ) {\n\n\t\t\tpmremGenerator.dispose();\n\t\t\tpmremGenerator = null;\n\n\t\t}\n\n\t}\n\n\treturn {\n\t\tget: get,\n\t\tdispose: dispose\n\t};\n\n}\n\nfunction WebGLExtensions( gl ) {\n\n\tconst extensions = {};\n\n\tfunction getExtension( name ) {\n\n\t\tif ( extensions[ name ] !== undefined ) {\n\n\t\t\treturn extensions[ name ];\n\n\t\t}\n\n\t\tlet extension;\n\n\t\tswitch ( name ) {\n\n\t\t\tcase 'WEBGL_depth_texture':\n\t\t\t\textension = gl.getExtension( 'WEBGL_depth_texture' ) || gl.getExtension( 'MOZ_WEBGL_depth_texture' ) || gl.getExtension( 'WEBKIT_WEBGL_depth_texture' );\n\t\t\t\tbreak;\n\n\t\t\tcase 'EXT_texture_filter_anisotropic':\n\t\t\t\textension = gl.getExtension( 'EXT_texture_filter_anisotropic' ) || gl.getExtension( 'MOZ_EXT_texture_filter_anisotropic' ) || gl.getExtension( 'WEBKIT_EXT_texture_filter_anisotropic' );\n\t\t\t\tbreak;\n\n\t\t\tcase 'WEBGL_compressed_texture_s3tc':\n\t\t\t\textension = gl.getExtension( 'WEBGL_compressed_texture_s3tc' ) || gl.getExtension( 'MOZ_WEBGL_compressed_texture_s3tc' ) || gl.getExtension( 'WEBKIT_WEBGL_compressed_texture_s3tc' );\n\t\t\t\tbreak;\n\n\t\t\tcase 'WEBGL_compressed_texture_pvrtc':\n\t\t\t\textension = gl.getExtension( 'WEBGL_compressed_texture_pvrtc' ) || gl.getExtension( 'WEBKIT_WEBGL_compressed_texture_pvrtc' );\n\t\t\t\tbreak;\n\n\t\t\tdefault:\n\t\t\t\textension = gl.getExtension( name );\n\n\t\t}\n\n\t\textensions[ name ] = extension;\n\n\t\treturn extension;\n\n\t}\n\n\treturn {\n\n\t\thas: function ( name ) {\n\n\t\t\treturn getExtension( name ) !== null;\n\n\t\t},\n\n\t\tinit: function ( capabilities ) {\n\n\t\t\tif ( capabilities.isWebGL2 ) {\n\n\t\t\t\tgetExtension( 'EXT_color_buffer_float' );\n\n\t\t\t} else {\n\n\t\t\t\tgetExtension( 'WEBGL_depth_texture' );\n\t\t\t\tgetExtension( 'OES_texture_float' );\n\t\t\t\tgetExtension( 'OES_texture_half_float' );\n\t\t\t\tgetExtension( 'OES_texture_half_float_linear' );\n\t\t\t\tgetExtension( 'OES_standard_derivatives' );\n\t\t\t\tgetExtension( 'OES_element_index_uint' );\n\t\t\t\tgetExtension( 'OES_vertex_array_object' );\n\t\t\t\tgetExtension( 'ANGLE_instanced_arrays' );\n\n\t\t\t}\n\n\t\t\tgetExtension( 'OES_texture_float_linear' );\n\t\t\tgetExtension( 'EXT_color_buffer_half_float' );\n\t\t\tgetExtension( 'WEBGL_multisampled_render_to_texture' );\n\n\t\t},\n\n\t\tget: function ( name ) {\n\n\t\t\tconst extension = getExtension( name );\n\n\t\t\tif ( extension === null ) {\n\n\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: ' + name + ' extension not supported.' );\n\n\t\t\t}\n\n\t\t\treturn extension;\n\n\t\t}\n\n\t};\n\n}\n\nfunction WebGLGeometries( gl, attributes, info, bindingStates ) {\n\n\tconst geometries = {};\n\tconst wireframeAttributes = new WeakMap();\n\n\tfunction onGeometryDispose( event ) {\n\n\t\tconst geometry = event.target;\n\n\t\tif ( geometry.index !== null ) {\n\n\t\t\tattributes.remove( geometry.index );\n\n\t\t}\n\n\t\tfor ( const name in geometry.attributes ) {\n\n\t\t\tattributes.remove( geometry.attributes[ name ] );\n\n\t\t}\n\n\t\tgeometry.removeEventListener( 'dispose', onGeometryDispose );\n\n\t\tdelete geometries[ geometry.id ];\n\n\t\tconst attribute = wireframeAttributes.get( geometry );\n\n\t\tif ( attribute ) {\n\n\t\t\tattributes.remove( attribute );\n\t\t\twireframeAttributes.delete( geometry );\n\n\t\t}\n\n\t\tbindingStates.releaseStatesOfGeometry( geometry );\n\n\t\tif ( geometry.isInstancedBufferGeometry === true ) {\n\n\t\t\tdelete geometry._maxInstanceCount;\n\n\t\t}\n\n\t\t//\n\n\t\tinfo.memory.geometries --;\n\n\t}\n\n\tfunction get( object, geometry ) {\n\n\t\tif ( geometries[ geometry.id ] === true ) return geometry;\n\n\t\tgeometry.addEventListener( 'dispose', onGeometryDispose );\n\n\t\tgeometries[ geometry.id ] = true;\n\n\t\tinfo.memory.geometries ++;\n\n\t\treturn geometry;\n\n\t}\n\n\tfunction update( geometry ) {\n\n\t\tconst geometryAttributes = geometry.attributes;\n\n\t\t// Updating index buffer in VAO now. See WebGLBindingStates.\n\n\t\tfor ( const name in geometryAttributes ) {\n\n\t\t\tattributes.update( geometryAttributes[ name ], 34962 );\n\n\t\t}\n\n\t\t// morph targets\n\n\t\tconst morphAttributes = geometry.morphAttributes;\n\n\t\tfor ( const name in morphAttributes ) {\n\n\t\t\tconst array = morphAttributes[ name ];\n\n\t\t\tfor ( let i = 0, l = array.length; i < l; i ++ ) {\n\n\t\t\t\tattributes.update( array[ i ], 34962 );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tfunction updateWireframeAttribute( geometry ) {\n\n\t\tconst indices = [];\n\n\t\tconst geometryIndex = geometry.index;\n\t\tconst geometryPosition = geometry.attributes.position;\n\t\tlet version = 0;\n\n\t\tif ( geometryIndex !== null ) {\n\n\t\t\tconst array = geometryIndex.array;\n\t\t\tversion = geometryIndex.version;\n\n\t\t\tfor ( let i = 0, l = array.length; i < l; i += 3 ) {\n\n\t\t\t\tconst a = array[ i + 0 ];\n\t\t\t\tconst b = array[ i + 1 ];\n\t\t\t\tconst c = array[ i + 2 ];\n\n\t\t\t\tindices.push( a, b, b, c, c, a );\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tconst array = geometryPosition.array;\n\t\t\tversion = geometryPosition.version;\n\n\t\t\tfor ( let i = 0, l = ( array.length / 3 ) - 1; i < l; i += 3 ) {\n\n\t\t\t\tconst a = i + 0;\n\t\t\t\tconst b = i + 1;\n\t\t\t\tconst c = i + 2;\n\n\t\t\t\tindices.push( a, b, b, c, c, a );\n\n\t\t\t}\n\n\t\t}\n\n\t\tconst attribute = new ( arrayNeedsUint32( indices ) ? Uint32BufferAttribute : Uint16BufferAttribute )( indices, 1 );\n\t\tattribute.version = version;\n\n\t\t// Updating index buffer in VAO now. See WebGLBindingStates\n\n\t\t//\n\n\t\tconst previousAttribute = wireframeAttributes.get( geometry );\n\n\t\tif ( previousAttribute ) attributes.remove( previousAttribute );\n\n\t\t//\n\n\t\twireframeAttributes.set( geometry, attribute );\n\n\t}\n\n\tfunction getWireframeAttribute( geometry ) {\n\n\t\tconst currentAttribute = wireframeAttributes.get( geometry );\n\n\t\tif ( currentAttribute ) {\n\n\t\t\tconst geometryIndex = geometry.index;\n\n\t\t\tif ( geometryIndex !== null ) {\n\n\t\t\t\t// if the attribute is obsolete, create a new one\n\n\t\t\t\tif ( currentAttribute.version < geometryIndex.version ) {\n\n\t\t\t\t\tupdateWireframeAttribute( geometry );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tupdateWireframeAttribute( geometry );\n\n\t\t}\n\n\t\treturn wireframeAttributes.get( geometry );\n\n\t}\n\n\treturn {\n\n\t\tget: get,\n\t\tupdate: update,\n\n\t\tgetWireframeAttribute: getWireframeAttribute\n\n\t};\n\n}\n\nfunction WebGLIndexedBufferRenderer( gl, extensions, info, capabilities ) {\n\n\tconst isWebGL2 = capabilities.isWebGL2;\n\n\tlet mode;\n\n\tfunction setMode( value ) {\n\n\t\tmode = value;\n\n\t}\n\n\tlet type, bytesPerElement;\n\n\tfunction setIndex( value ) {\n\n\t\ttype = value.type;\n\t\tbytesPerElement = value.bytesPerElement;\n\n\t}\n\n\tfunction render( start, count ) {\n\n\t\tgl.drawElements( mode, count, type, start * bytesPerElement );\n\n\t\tinfo.update( count, mode, 1 );\n\n\t}\n\n\tfunction renderInstances( start, count, primcount ) {\n\n\t\tif ( primcount === 0 ) return;\n\n\t\tlet extension, methodName;\n\n\t\tif ( isWebGL2 ) {\n\n\t\t\textension = gl;\n\t\t\tmethodName = 'drawElementsInstanced';\n\n\t\t} else {\n\n\t\t\textension = extensions.get( 'ANGLE_instanced_arrays' );\n\t\t\tmethodName = 'drawElementsInstancedANGLE';\n\n\t\t\tif ( extension === null ) {\n\n\t\t\t\tconsole.error( 'THREE.WebGLIndexedBufferRenderer: using THREE.InstancedBufferGeometry but hardware does not support extension ANGLE_instanced_arrays.' );\n\t\t\t\treturn;\n\n\t\t\t}\n\n\t\t}\n\n\t\textension[ methodName ]( mode, count, type, start * bytesPerElement, primcount );\n\n\t\tinfo.update( count, mode, primcount );\n\n\t}\n\n\t//\n\n\tthis.setMode = setMode;\n\tthis.setIndex = setIndex;\n\tthis.render = render;\n\tthis.renderInstances = renderInstances;\n\n}\n\nfunction WebGLInfo( gl ) {\n\n\tconst memory = {\n\t\tgeometries: 0,\n\t\ttextures: 0\n\t};\n\n\tconst render = {\n\t\tframe: 0,\n\t\tcalls: 0,\n\t\ttriangles: 0,\n\t\tpoints: 0,\n\t\tlines: 0\n\t};\n\n\tfunction update( count, mode, instanceCount ) {\n\n\t\trender.calls ++;\n\n\t\tswitch ( mode ) {\n\n\t\t\tcase 4:\n\t\t\t\trender.triangles += instanceCount * ( count / 3 );\n\t\t\t\tbreak;\n\n\t\t\tcase 1:\n\t\t\t\trender.lines += instanceCount * ( count / 2 );\n\t\t\t\tbreak;\n\n\t\t\tcase 3:\n\t\t\t\trender.lines += instanceCount * ( count - 1 );\n\t\t\t\tbreak;\n\n\t\t\tcase 2:\n\t\t\t\trender.lines += instanceCount * count;\n\t\t\t\tbreak;\n\n\t\t\tcase 0:\n\t\t\t\trender.points += instanceCount * count;\n\t\t\t\tbreak;\n\n\t\t\tdefault:\n\t\t\t\tconsole.error( 'THREE.WebGLInfo: Unknown draw mode:', mode );\n\t\t\t\tbreak;\n\n\t\t}\n\n\t}\n\n\tfunction reset() {\n\n\t\trender.frame ++;\n\t\trender.calls = 0;\n\t\trender.triangles = 0;\n\t\trender.points = 0;\n\t\trender.lines = 0;\n\n\t}\n\n\treturn {\n\t\tmemory: memory,\n\t\trender: render,\n\t\tprograms: null,\n\t\tautoReset: true,\n\t\treset: reset,\n\t\tupdate: update\n\t};\n\n}\n\nfunction numericalSort( a, b ) {\n\n\treturn a[ 0 ] - b[ 0 ];\n\n}\n\nfunction absNumericalSort( a, b ) {\n\n\treturn Math.abs( b[ 1 ] ) - Math.abs( a[ 1 ] );\n\n}\n\nfunction denormalize( morph, attribute ) {\n\n\tlet denominator = 1;\n\tconst array = attribute.isInterleavedBufferAttribute ? attribute.data.array : attribute.array;\n\n\tif ( array instanceof Int8Array ) denominator = 127;\n\telse if ( array instanceof Int16Array ) denominator = 32767;\n\telse if ( array instanceof Int32Array ) denominator = 2147483647;\n\telse console.error( 'THREE.WebGLMorphtargets: Unsupported morph attribute data type: ', array );\n\n\tmorph.divideScalar( denominator );\n\n}\n\nfunction WebGLMorphtargets( gl, capabilities, textures ) {\n\n\tconst influencesList = {};\n\tconst morphInfluences = new Float32Array( 8 );\n\tconst morphTextures = new WeakMap();\n\tconst morph = new Vector4();\n\n\tconst workInfluences = [];\n\n\tfor ( let i = 0; i < 8; i ++ ) {\n\n\t\tworkInfluences[ i ] = [ i, 0 ];\n\n\t}\n\n\tfunction update( object, geometry, material, program ) {\n\n\t\tconst objectInfluences = object.morphTargetInfluences;\n\n\t\tif ( capabilities.isWebGL2 === true ) {\n\n\t\t\t// instead of using attributes, the WebGL 2 code path encodes morph targets\n\t\t\t// into an array of data textures. Each layer represents a single morph target.\n\n\t\t\tconst morphAttribute = geometry.morphAttributes.position || geometry.morphAttributes.normal || geometry.morphAttributes.color;\n\t\t\tconst morphTargetsCount = ( morphAttribute !== undefined ) ? morphAttribute.length : 0;\n\n\t\t\tlet entry = morphTextures.get( geometry );\n\n\t\t\tif ( entry === undefined || entry.count !== morphTargetsCount ) {\n\n\t\t\t\tif ( entry !== undefined ) entry.texture.dispose();\n\n\t\t\t\tconst hasMorphPosition = geometry.morphAttributes.position !== undefined;\n\t\t\t\tconst hasMorphNormals = geometry.morphAttributes.normal !== undefined;\n\t\t\t\tconst hasMorphColors = geometry.morphAttributes.color !== undefined;\n\n\t\t\t\tconst morphTargets = geometry.morphAttributes.position || [];\n\t\t\t\tconst morphNormals = geometry.morphAttributes.normal || [];\n\t\t\t\tconst morphColors = geometry.morphAttributes.color || [];\n\n\t\t\t\tlet vertexDataCount = 0;\n\n\t\t\t\tif ( hasMorphPosition === true ) vertexDataCount = 1;\n\t\t\t\tif ( hasMorphNormals === true ) vertexDataCount = 2;\n\t\t\t\tif ( hasMorphColors === true ) vertexDataCount = 3;\n\n\t\t\t\tlet width = geometry.attributes.position.count * vertexDataCount;\n\t\t\t\tlet height = 1;\n\n\t\t\t\tif ( width > capabilities.maxTextureSize ) {\n\n\t\t\t\t\theight = Math.ceil( width / capabilities.maxTextureSize );\n\t\t\t\t\twidth = capabilities.maxTextureSize;\n\n\t\t\t\t}\n\n\t\t\t\tconst buffer = new Float32Array( width * height * 4 * morphTargetsCount );\n\n\t\t\t\tconst texture = new DataArrayTexture( buffer, width, height, morphTargetsCount );\n\t\t\t\ttexture.type = FloatType;\n\t\t\t\ttexture.needsUpdate = true;\n\n\t\t\t\t// fill buffer\n\n\t\t\t\tconst vertexDataStride = vertexDataCount * 4;\n\n\t\t\t\tfor ( let i = 0; i < morphTargetsCount; i ++ ) {\n\n\t\t\t\t\tconst morphTarget = morphTargets[ i ];\n\t\t\t\t\tconst morphNormal = morphNormals[ i ];\n\t\t\t\t\tconst morphColor = morphColors[ i ];\n\n\t\t\t\t\tconst offset = width * height * 4 * i;\n\n\t\t\t\t\tfor ( let j = 0; j < morphTarget.count; j ++ ) {\n\n\t\t\t\t\t\tconst stride = j * vertexDataStride;\n\n\t\t\t\t\t\tif ( hasMorphPosition === true ) {\n\n\t\t\t\t\t\t\tmorph.fromBufferAttribute( morphTarget, j );\n\n\t\t\t\t\t\t\tif ( morphTarget.normalized === true ) denormalize( morph, morphTarget );\n\n\t\t\t\t\t\t\tbuffer[ offset + stride + 0 ] = morph.x;\n\t\t\t\t\t\t\tbuffer[ offset + stride + 1 ] = morph.y;\n\t\t\t\t\t\t\tbuffer[ offset + stride + 2 ] = morph.z;\n\t\t\t\t\t\t\tbuffer[ offset + stride + 3 ] = 0;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif ( hasMorphNormals === true ) {\n\n\t\t\t\t\t\t\tmorph.fromBufferAttribute( morphNormal, j );\n\n\t\t\t\t\t\t\tif ( morphNormal.normalized === true ) denormalize( morph, morphNormal );\n\n\t\t\t\t\t\t\tbuffer[ offset + stride + 4 ] = morph.x;\n\t\t\t\t\t\t\tbuffer[ offset + stride + 5 ] = morph.y;\n\t\t\t\t\t\t\tbuffer[ offset + stride + 6 ] = morph.z;\n\t\t\t\t\t\t\tbuffer[ offset + stride + 7 ] = 0;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif ( hasMorphColors === true ) {\n\n\t\t\t\t\t\t\tmorph.fromBufferAttribute( morphColor, j );\n\n\t\t\t\t\t\t\tif ( morphColor.normalized === true ) denormalize( morph, morphColor );\n\n\t\t\t\t\t\t\tbuffer[ offset + stride + 8 ] = morph.x;\n\t\t\t\t\t\t\tbuffer[ offset + stride + 9 ] = morph.y;\n\t\t\t\t\t\t\tbuffer[ offset + stride + 10 ] = morph.z;\n\t\t\t\t\t\t\tbuffer[ offset + stride + 11 ] = ( morphColor.itemSize === 4 ) ? morph.w : 1;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\tentry = {\n\t\t\t\t\tcount: morphTargetsCount,\n\t\t\t\t\ttexture: texture,\n\t\t\t\t\tsize: new Vector2( width, height )\n\t\t\t\t};\n\n\t\t\t\tmorphTextures.set( geometry, entry );\n\n\t\t\t\tfunction disposeTexture() {\n\n\t\t\t\t\ttexture.dispose();\n\n\t\t\t\t\tmorphTextures.delete( geometry );\n\n\t\t\t\t\tgeometry.removeEventListener( 'dispose', disposeTexture );\n\n\t\t\t\t}\n\n\t\t\t\tgeometry.addEventListener( 'dispose', disposeTexture );\n\n\t\t\t}\n\n\t\t\t//\n\n\t\t\tlet morphInfluencesSum = 0;\n\n\t\t\tfor ( let i = 0; i < objectInfluences.length; i ++ ) {\n\n\t\t\t\tmorphInfluencesSum += objectInfluences[ i ];\n\n\t\t\t}\n\n\t\t\tconst morphBaseInfluence = geometry.morphTargetsRelative ? 1 : 1 - morphInfluencesSum;\n\n\t\t\tprogram.getUniforms().setValue( gl, 'morphTargetBaseInfluence', morphBaseInfluence );\n\t\t\tprogram.getUniforms().setValue( gl, 'morphTargetInfluences', objectInfluences );\n\n\t\t\tprogram.getUniforms().setValue( gl, 'morphTargetsTexture', entry.texture, textures );\n\t\t\tprogram.getUniforms().setValue( gl, 'morphTargetsTextureSize', entry.size );\n\n\n\t\t} else {\n\n\t\t\t// When object doesn't have morph target influences defined, we treat it as a 0-length array\n\t\t\t// This is important to make sure we set up morphTargetBaseInfluence / morphTargetInfluences\n\n\t\t\tconst length = objectInfluences === undefined ? 0 : objectInfluences.length;\n\n\t\t\tlet influences = influencesList[ geometry.id ];\n\n\t\t\tif ( influences === undefined || influences.length !== length ) {\n\n\t\t\t\t// initialise list\n\n\t\t\t\tinfluences = [];\n\n\t\t\t\tfor ( let i = 0; i < length; i ++ ) {\n\n\t\t\t\t\tinfluences[ i ] = [ i, 0 ];\n\n\t\t\t\t}\n\n\t\t\t\tinfluencesList[ geometry.id ] = influences;\n\n\t\t\t}\n\n\t\t\t// Collect influences\n\n\t\t\tfor ( let i = 0; i < length; i ++ ) {\n\n\t\t\t\tconst influence = influences[ i ];\n\n\t\t\t\tinfluence[ 0 ] = i;\n\t\t\t\tinfluence[ 1 ] = objectInfluences[ i ];\n\n\t\t\t}\n\n\t\t\tinfluences.sort( absNumericalSort );\n\n\t\t\tfor ( let i = 0; i < 8; i ++ ) {\n\n\t\t\t\tif ( i < length && influences[ i ][ 1 ] ) {\n\n\t\t\t\t\tworkInfluences[ i ][ 0 ] = influences[ i ][ 0 ];\n\t\t\t\t\tworkInfluences[ i ][ 1 ] = influences[ i ][ 1 ];\n\n\t\t\t\t} else {\n\n\t\t\t\t\tworkInfluences[ i ][ 0 ] = Number.MAX_SAFE_INTEGER;\n\t\t\t\t\tworkInfluences[ i ][ 1 ] = 0;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tworkInfluences.sort( numericalSort );\n\n\t\t\tconst morphTargets = geometry.morphAttributes.position;\n\t\t\tconst morphNormals = geometry.morphAttributes.normal;\n\n\t\t\tlet morphInfluencesSum = 0;\n\n\t\t\tfor ( let i = 0; i < 8; i ++ ) {\n\n\t\t\t\tconst influence = workInfluences[ i ];\n\t\t\t\tconst index = influence[ 0 ];\n\t\t\t\tconst value = influence[ 1 ];\n\n\t\t\t\tif ( index !== Number.MAX_SAFE_INTEGER && value ) {\n\n\t\t\t\t\tif ( morphTargets && geometry.getAttribute( 'morphTarget' + i ) !== morphTargets[ index ] ) {\n\n\t\t\t\t\t\tgeometry.setAttribute( 'morphTarget' + i, morphTargets[ index ] );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( morphNormals && geometry.getAttribute( 'morphNormal' + i ) !== morphNormals[ index ] ) {\n\n\t\t\t\t\t\tgeometry.setAttribute( 'morphNormal' + i, morphNormals[ index ] );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tmorphInfluences[ i ] = value;\n\t\t\t\t\tmorphInfluencesSum += value;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tif ( morphTargets && geometry.hasAttribute( 'morphTarget' + i ) === true ) {\n\n\t\t\t\t\t\tgeometry.deleteAttribute( 'morphTarget' + i );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( morphNormals && geometry.hasAttribute( 'morphNormal' + i ) === true ) {\n\n\t\t\t\t\t\tgeometry.deleteAttribute( 'morphNormal' + i );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tmorphInfluences[ i ] = 0;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// GLSL shader uses formula baseinfluence * base + sum(target * influence)\n\t\t\t// This allows us to switch between absolute morphs and relative morphs without changing shader code\n\t\t\t// When baseinfluence = 1 - sum(influence), the above is equivalent to sum((target - base) * influence)\n\t\t\tconst morphBaseInfluence = geometry.morphTargetsRelative ? 1 : 1 - morphInfluencesSum;\n\n\t\t\tprogram.getUniforms().setValue( gl, 'morphTargetBaseInfluence', morphBaseInfluence );\n\t\t\tprogram.getUniforms().setValue( gl, 'morphTargetInfluences', morphInfluences );\n\n\t\t}\n\n\t}\n\n\treturn {\n\n\t\tupdate: update\n\n\t};\n\n}\n\nfunction WebGLObjects( gl, geometries, attributes, info ) {\n\n\tlet updateMap = new WeakMap();\n\n\tfunction update( object ) {\n\n\t\tconst frame = info.render.frame;\n\n\t\tconst geometry = object.geometry;\n\t\tconst buffergeometry = geometries.get( object, geometry );\n\n\t\t// Update once per frame\n\n\t\tif ( updateMap.get( buffergeometry ) !== frame ) {\n\n\t\t\tgeometries.update( buffergeometry );\n\n\t\t\tupdateMap.set( buffergeometry, frame );\n\n\t\t}\n\n\t\tif ( object.isInstancedMesh ) {\n\n\t\t\tif ( object.hasEventListener( 'dispose', onInstancedMeshDispose ) === false ) {\n\n\t\t\t\tobject.addEventListener( 'dispose', onInstancedMeshDispose );\n\n\t\t\t}\n\n\t\t\tattributes.update( object.instanceMatrix, 34962 );\n\n\t\t\tif ( object.instanceColor !== null ) {\n\n\t\t\t\tattributes.update( object.instanceColor, 34962 );\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn buffergeometry;\n\n\t}\n\n\tfunction dispose() {\n\n\t\tupdateMap = new WeakMap();\n\n\t}\n\n\tfunction onInstancedMeshDispose( event ) {\n\n\t\tconst instancedMesh = event.target;\n\n\t\tinstancedMesh.removeEventListener( 'dispose', onInstancedMeshDispose );\n\n\t\tattributes.remove( instancedMesh.instanceMatrix );\n\n\t\tif ( instancedMesh.instanceColor !== null ) attributes.remove( instancedMesh.instanceColor );\n\n\t}\n\n\treturn {\n\n\t\tupdate: update,\n\t\tdispose: dispose\n\n\t};\n\n}\n\n/**\n * Uniforms of a program.\n * Those form a tree structure with a special top-level container for the root,\n * which you get by calling 'new WebGLUniforms( gl, program )'.\n *\n *\n * Properties of inner nodes including the top-level container:\n *\n * .seq - array of nested uniforms\n * .map - nested uniforms by name\n *\n *\n * Methods of all nodes except the top-level container:\n *\n * .setValue( gl, value, [textures] )\n *\n * \t\tuploads a uniform value(s)\n * \tthe 'textures' parameter is needed for sampler uniforms\n *\n *\n * Static methods of the top-level container (textures factorizations):\n *\n * .upload( gl, seq, values, textures )\n *\n * \t\tsets uniforms in 'seq' to 'values[id].value'\n *\n * .seqWithValue( seq, values ) : filteredSeq\n *\n * \t\tfilters 'seq' entries with corresponding entry in values\n *\n *\n * Methods of the top-level container (textures factorizations):\n *\n * .setValue( gl, name, value, textures )\n *\n * \t\tsets uniform with name 'name' to 'value'\n *\n * .setOptional( gl, obj, prop )\n *\n * \t\tlike .set for an optional property of the object\n *\n */\n\nconst emptyTexture = new Texture();\nconst emptyArrayTexture = new DataArrayTexture();\nconst empty3dTexture = new Data3DTexture();\nconst emptyCubeTexture = new CubeTexture();\n\n// --- Utilities ---\n\n// Array Caches (provide typed arrays for temporary by size)\n\nconst arrayCacheF32 = [];\nconst arrayCacheI32 = [];\n\n// Float32Array caches used for uploading Matrix uniforms\n\nconst mat4array = new Float32Array( 16 );\nconst mat3array = new Float32Array( 9 );\nconst mat2array = new Float32Array( 4 );\n\n// Flattening for arrays of vectors and matrices\n\nfunction flatten( array, nBlocks, blockSize ) {\n\n\tconst firstElem = array[ 0 ];\n\n\tif ( firstElem <= 0 || firstElem > 0 ) return array;\n\t// unoptimized: ! isNaN( firstElem )\n\t// see http://jacksondunstan.com/articles/983\n\n\tconst n = nBlocks * blockSize;\n\tlet r = arrayCacheF32[ n ];\n\n\tif ( r === undefined ) {\n\n\t\tr = new Float32Array( n );\n\t\tarrayCacheF32[ n ] = r;\n\n\t}\n\n\tif ( nBlocks !== 0 ) {\n\n\t\tfirstElem.toArray( r, 0 );\n\n\t\tfor ( let i = 1, offset = 0; i !== nBlocks; ++ i ) {\n\n\t\t\toffset += blockSize;\n\t\t\tarray[ i ].toArray( r, offset );\n\n\t\t}\n\n\t}\n\n\treturn r;\n\n}\n\nfunction arraysEqual( a, b ) {\n\n\tif ( a.length !== b.length ) return false;\n\n\tfor ( let i = 0, l = a.length; i < l; i ++ ) {\n\n\t\tif ( a[ i ] !== b[ i ] ) return false;\n\n\t}\n\n\treturn true;\n\n}\n\nfunction copyArray( a, b ) {\n\n\tfor ( let i = 0, l = b.length; i < l; i ++ ) {\n\n\t\ta[ i ] = b[ i ];\n\n\t}\n\n}\n\n// Texture unit allocation\n\nfunction allocTexUnits( textures, n ) {\n\n\tlet r = arrayCacheI32[ n ];\n\n\tif ( r === undefined ) {\n\n\t\tr = new Int32Array( n );\n\t\tarrayCacheI32[ n ] = r;\n\n\t}\n\n\tfor ( let i = 0; i !== n; ++ i ) {\n\n\t\tr[ i ] = textures.allocateTextureUnit();\n\n\t}\n\n\treturn r;\n\n}\n\n// --- Setters ---\n\n// Note: Defining these methods externally, because they come in a bunch\n// and this way their names minify.\n\n// Single scalar\n\nfunction setValueV1f( gl, v ) {\n\n\tconst cache = this.cache;\n\n\tif ( cache[ 0 ] === v ) return;\n\n\tgl.uniform1f( this.addr, v );\n\n\tcache[ 0 ] = v;\n\n}\n\n// Single float vector (from flat array or THREE.VectorN)\n\nfunction setValueV2f( gl, v ) {\n\n\tconst cache = this.cache;\n\n\tif ( v.x !== undefined ) {\n\n\t\tif ( cache[ 0 ] !== v.x || cache[ 1 ] !== v.y ) {\n\n\t\t\tgl.uniform2f( this.addr, v.x, v.y );\n\n\t\t\tcache[ 0 ] = v.x;\n\t\t\tcache[ 1 ] = v.y;\n\n\t\t}\n\n\t} else {\n\n\t\tif ( arraysEqual( cache, v ) ) return;\n\n\t\tgl.uniform2fv( this.addr, v );\n\n\t\tcopyArray( cache, v );\n\n\t}\n\n}\n\nfunction setValueV3f( gl, v ) {\n\n\tconst cache = this.cache;\n\n\tif ( v.x !== undefined ) {\n\n\t\tif ( cache[ 0 ] !== v.x || cache[ 1 ] !== v.y || cache[ 2 ] !== v.z ) {\n\n\t\t\tgl.uniform3f( this.addr, v.x, v.y, v.z );\n\n\t\t\tcache[ 0 ] = v.x;\n\t\t\tcache[ 1 ] = v.y;\n\t\t\tcache[ 2 ] = v.z;\n\n\t\t}\n\n\t} else if ( v.r !== undefined ) {\n\n\t\tif ( cache[ 0 ] !== v.r || cache[ 1 ] !== v.g || cache[ 2 ] !== v.b ) {\n\n\t\t\tgl.uniform3f( this.addr, v.r, v.g, v.b );\n\n\t\t\tcache[ 0 ] = v.r;\n\t\t\tcache[ 1 ] = v.g;\n\t\t\tcache[ 2 ] = v.b;\n\n\t\t}\n\n\t} else {\n\n\t\tif ( arraysEqual( cache, v ) ) return;\n\n\t\tgl.uniform3fv( this.addr, v );\n\n\t\tcopyArray( cache, v );\n\n\t}\n\n}\n\nfunction setValueV4f( gl, v ) {\n\n\tconst cache = this.cache;\n\n\tif ( v.x !== undefined ) {\n\n\t\tif ( cache[ 0 ] !== v.x || cache[ 1 ] !== v.y || cache[ 2 ] !== v.z || cache[ 3 ] !== v.w ) {\n\n\t\t\tgl.uniform4f( this.addr, v.x, v.y, v.z, v.w );\n\n\t\t\tcache[ 0 ] = v.x;\n\t\t\tcache[ 1 ] = v.y;\n\t\t\tcache[ 2 ] = v.z;\n\t\t\tcache[ 3 ] = v.w;\n\n\t\t}\n\n\t} else {\n\n\t\tif ( arraysEqual( cache, v ) ) return;\n\n\t\tgl.uniform4fv( this.addr, v );\n\n\t\tcopyArray( cache, v );\n\n\t}\n\n}\n\n// Single matrix (from flat array or THREE.MatrixN)\n\nfunction setValueM2( gl, v ) {\n\n\tconst cache = this.cache;\n\tconst elements = v.elements;\n\n\tif ( elements === undefined ) {\n\n\t\tif ( arraysEqual( cache, v ) ) return;\n\n\t\tgl.uniformMatrix2fv( this.addr, false, v );\n\n\t\tcopyArray( cache, v );\n\n\t} else {\n\n\t\tif ( arraysEqual( cache, elements ) ) return;\n\n\t\tmat2array.set( elements );\n\n\t\tgl.uniformMatrix2fv( this.addr, false, mat2array );\n\n\t\tcopyArray( cache, elements );\n\n\t}\n\n}\n\nfunction setValueM3( gl, v ) {\n\n\tconst cache = this.cache;\n\tconst elements = v.elements;\n\n\tif ( elements === undefined ) {\n\n\t\tif ( arraysEqual( cache, v ) ) return;\n\n\t\tgl.uniformMatrix3fv( this.addr, false, v );\n\n\t\tcopyArray( cache, v );\n\n\t} else {\n\n\t\tif ( arraysEqual( cache, elements ) ) return;\n\n\t\tmat3array.set( elements );\n\n\t\tgl.uniformMatrix3fv( this.addr, false, mat3array );\n\n\t\tcopyArray( cache, elements );\n\n\t}\n\n}\n\nfunction setValueM4( gl, v ) {\n\n\tconst cache = this.cache;\n\tconst elements = v.elements;\n\n\tif ( elements === undefined ) {\n\n\t\tif ( arraysEqual( cache, v ) ) return;\n\n\t\tgl.uniformMatrix4fv( this.addr, false, v );\n\n\t\tcopyArray( cache, v );\n\n\t} else {\n\n\t\tif ( arraysEqual( cache, elements ) ) return;\n\n\t\tmat4array.set( elements );\n\n\t\tgl.uniformMatrix4fv( this.addr, false, mat4array );\n\n\t\tcopyArray( cache, elements );\n\n\t}\n\n}\n\n// Single integer / boolean\n\nfunction setValueV1i( gl, v ) {\n\n\tconst cache = this.cache;\n\n\tif ( cache[ 0 ] === v ) return;\n\n\tgl.uniform1i( this.addr, v );\n\n\tcache[ 0 ] = v;\n\n}\n\n// Single integer / boolean vector (from flat array)\n\nfunction setValueV2i( gl, v ) {\n\n\tconst cache = this.cache;\n\n\tif ( arraysEqual( cache, v ) ) return;\n\n\tgl.uniform2iv( this.addr, v );\n\n\tcopyArray( cache, v );\n\n}\n\nfunction setValueV3i( gl, v ) {\n\n\tconst cache = this.cache;\n\n\tif ( arraysEqual( cache, v ) ) return;\n\n\tgl.uniform3iv( this.addr, v );\n\n\tcopyArray( cache, v );\n\n}\n\nfunction setValueV4i( gl, v ) {\n\n\tconst cache = this.cache;\n\n\tif ( arraysEqual( cache, v ) ) return;\n\n\tgl.uniform4iv( this.addr, v );\n\n\tcopyArray( cache, v );\n\n}\n\n// Single unsigned integer\n\nfunction setValueV1ui( gl, v ) {\n\n\tconst cache = this.cache;\n\n\tif ( cache[ 0 ] === v ) return;\n\n\tgl.uniform1ui( this.addr, v );\n\n\tcache[ 0 ] = v;\n\n}\n\n// Single unsigned integer vector (from flat array)\n\nfunction setValueV2ui( gl, v ) {\n\n\tconst cache = this.cache;\n\n\tif ( arraysEqual( cache, v ) ) return;\n\n\tgl.uniform2uiv( this.addr, v );\n\n\tcopyArray( cache, v );\n\n}\n\nfunction setValueV3ui( gl, v ) {\n\n\tconst cache = this.cache;\n\n\tif ( arraysEqual( cache, v ) ) return;\n\n\tgl.uniform3uiv( this.addr, v );\n\n\tcopyArray( cache, v );\n\n}\n\nfunction setValueV4ui( gl, v ) {\n\n\tconst cache = this.cache;\n\n\tif ( arraysEqual( cache, v ) ) return;\n\n\tgl.uniform4uiv( this.addr, v );\n\n\tcopyArray( cache, v );\n\n}\n\n\n// Single texture (2D / Cube)\n\nfunction setValueT1( gl, v, textures ) {\n\n\tconst cache = this.cache;\n\tconst unit = textures.allocateTextureUnit();\n\n\tif ( cache[ 0 ] !== unit ) {\n\n\t\tgl.uniform1i( this.addr, unit );\n\t\tcache[ 0 ] = unit;\n\n\t}\n\n\ttextures.setTexture2D( v || emptyTexture, unit );\n\n}\n\nfunction setValueT3D1( gl, v, textures ) {\n\n\tconst cache = this.cache;\n\tconst unit = textures.allocateTextureUnit();\n\n\tif ( cache[ 0 ] !== unit ) {\n\n\t\tgl.uniform1i( this.addr, unit );\n\t\tcache[ 0 ] = unit;\n\n\t}\n\n\ttextures.setTexture3D( v || empty3dTexture, unit );\n\n}\n\nfunction setValueT6( gl, v, textures ) {\n\n\tconst cache = this.cache;\n\tconst unit = textures.allocateTextureUnit();\n\n\tif ( cache[ 0 ] !== unit ) {\n\n\t\tgl.uniform1i( this.addr, unit );\n\t\tcache[ 0 ] = unit;\n\n\t}\n\n\ttextures.setTextureCube( v || emptyCubeTexture, unit );\n\n}\n\nfunction setValueT2DArray1( gl, v, textures ) {\n\n\tconst cache = this.cache;\n\tconst unit = textures.allocateTextureUnit();\n\n\tif ( cache[ 0 ] !== unit ) {\n\n\t\tgl.uniform1i( this.addr, unit );\n\t\tcache[ 0 ] = unit;\n\n\t}\n\n\ttextures.setTexture2DArray( v || emptyArrayTexture, unit );\n\n}\n\n// Helper to pick the right setter for the singular case\n\nfunction getSingularSetter( type ) {\n\n\tswitch ( type ) {\n\n\t\tcase 0x1406: return setValueV1f; // FLOAT\n\t\tcase 0x8b50: return setValueV2f; // _VEC2\n\t\tcase 0x8b51: return setValueV3f; // _VEC3\n\t\tcase 0x8b52: return setValueV4f; // _VEC4\n\n\t\tcase 0x8b5a: return setValueM2; // _MAT2\n\t\tcase 0x8b5b: return setValueM3; // _MAT3\n\t\tcase 0x8b5c: return setValueM4; // _MAT4\n\n\t\tcase 0x1404: case 0x8b56: return setValueV1i; // INT, BOOL\n\t\tcase 0x8b53: case 0x8b57: return setValueV2i; // _VEC2\n\t\tcase 0x8b54: case 0x8b58: return setValueV3i; // _VEC3\n\t\tcase 0x8b55: case 0x8b59: return setValueV4i; // _VEC4\n\n\t\tcase 0x1405: return setValueV1ui; // UINT\n\t\tcase 0x8dc6: return setValueV2ui; // _VEC2\n\t\tcase 0x8dc7: return setValueV3ui; // _VEC3\n\t\tcase 0x8dc8: return setValueV4ui; // _VEC4\n\n\t\tcase 0x8b5e: // SAMPLER_2D\n\t\tcase 0x8d66: // SAMPLER_EXTERNAL_OES\n\t\tcase 0x8dca: // INT_SAMPLER_2D\n\t\tcase 0x8dd2: // UNSIGNED_INT_SAMPLER_2D\n\t\tcase 0x8b62: // SAMPLER_2D_SHADOW\n\t\t\treturn setValueT1;\n\n\t\tcase 0x8b5f: // SAMPLER_3D\n\t\tcase 0x8dcb: // INT_SAMPLER_3D\n\t\tcase 0x8dd3: // UNSIGNED_INT_SAMPLER_3D\n\t\t\treturn setValueT3D1;\n\n\t\tcase 0x8b60: // SAMPLER_CUBE\n\t\tcase 0x8dcc: // INT_SAMPLER_CUBE\n\t\tcase 0x8dd4: // UNSIGNED_INT_SAMPLER_CUBE\n\t\tcase 0x8dc5: // SAMPLER_CUBE_SHADOW\n\t\t\treturn setValueT6;\n\n\t\tcase 0x8dc1: // SAMPLER_2D_ARRAY\n\t\tcase 0x8dcf: // INT_SAMPLER_2D_ARRAY\n\t\tcase 0x8dd7: // UNSIGNED_INT_SAMPLER_2D_ARRAY\n\t\tcase 0x8dc4: // SAMPLER_2D_ARRAY_SHADOW\n\t\t\treturn setValueT2DArray1;\n\n\t}\n\n}\n\n\n// Array of scalars\n\nfunction setValueV1fArray( gl, v ) {\n\n\tgl.uniform1fv( this.addr, v );\n\n}\n\n// Array of vectors (from flat array or array of THREE.VectorN)\n\nfunction setValueV2fArray( gl, v ) {\n\n\tconst data = flatten( v, this.size, 2 );\n\n\tgl.uniform2fv( this.addr, data );\n\n}\n\nfunction setValueV3fArray( gl, v ) {\n\n\tconst data = flatten( v, this.size, 3 );\n\n\tgl.uniform3fv( this.addr, data );\n\n}\n\nfunction setValueV4fArray( gl, v ) {\n\n\tconst data = flatten( v, this.size, 4 );\n\n\tgl.uniform4fv( this.addr, data );\n\n}\n\n// Array of matrices (from flat array or array of THREE.MatrixN)\n\nfunction setValueM2Array( gl, v ) {\n\n\tconst data = flatten( v, this.size, 4 );\n\n\tgl.uniformMatrix2fv( this.addr, false, data );\n\n}\n\nfunction setValueM3Array( gl, v ) {\n\n\tconst data = flatten( v, this.size, 9 );\n\n\tgl.uniformMatrix3fv( this.addr, false, data );\n\n}\n\nfunction setValueM4Array( gl, v ) {\n\n\tconst data = flatten( v, this.size, 16 );\n\n\tgl.uniformMatrix4fv( this.addr, false, data );\n\n}\n\n// Array of integer / boolean\n\nfunction setValueV1iArray( gl, v ) {\n\n\tgl.uniform1iv( this.addr, v );\n\n}\n\n// Array of integer / boolean vectors (from flat array)\n\nfunction setValueV2iArray( gl, v ) {\n\n\tgl.uniform2iv( this.addr, v );\n\n}\n\nfunction setValueV3iArray( gl, v ) {\n\n\tgl.uniform3iv( this.addr, v );\n\n}\n\nfunction setValueV4iArray( gl, v ) {\n\n\tgl.uniform4iv( this.addr, v );\n\n}\n\n// Array of unsigned integer\n\nfunction setValueV1uiArray( gl, v ) {\n\n\tgl.uniform1uiv( this.addr, v );\n\n}\n\n// Array of unsigned integer vectors (from flat array)\n\nfunction setValueV2uiArray( gl, v ) {\n\n\tgl.uniform2uiv( this.addr, v );\n\n}\n\nfunction setValueV3uiArray( gl, v ) {\n\n\tgl.uniform3uiv( this.addr, v );\n\n}\n\nfunction setValueV4uiArray( gl, v ) {\n\n\tgl.uniform4uiv( this.addr, v );\n\n}\n\n\n// Array of textures (2D / 3D / Cube / 2DArray)\n\nfunction setValueT1Array( gl, v, textures ) {\n\n\tconst n = v.length;\n\n\tconst units = allocTexUnits( textures, n );\n\n\tgl.uniform1iv( this.addr, units );\n\n\tfor ( let i = 0; i !== n; ++ i ) {\n\n\t\ttextures.setTexture2D( v[ i ] || emptyTexture, units[ i ] );\n\n\t}\n\n}\n\nfunction setValueT3DArray( gl, v, textures ) {\n\n\tconst n = v.length;\n\n\tconst units = allocTexUnits( textures, n );\n\n\tgl.uniform1iv( this.addr, units );\n\n\tfor ( let i = 0; i !== n; ++ i ) {\n\n\t\ttextures.setTexture3D( v[ i ] || empty3dTexture, units[ i ] );\n\n\t}\n\n}\n\nfunction setValueT6Array( gl, v, textures ) {\n\n\tconst n = v.length;\n\n\tconst units = allocTexUnits( textures, n );\n\n\tgl.uniform1iv( this.addr, units );\n\n\tfor ( let i = 0; i !== n; ++ i ) {\n\n\t\ttextures.setTextureCube( v[ i ] || emptyCubeTexture, units[ i ] );\n\n\t}\n\n}\n\nfunction setValueT2DArrayArray( gl, v, textures ) {\n\n\tconst n = v.length;\n\n\tconst units = allocTexUnits( textures, n );\n\n\tgl.uniform1iv( this.addr, units );\n\n\tfor ( let i = 0; i !== n; ++ i ) {\n\n\t\ttextures.setTexture2DArray( v[ i ] || emptyArrayTexture, units[ i ] );\n\n\t}\n\n}\n\n\n// Helper to pick the right setter for a pure (bottom-level) array\n\nfunction getPureArraySetter( type ) {\n\n\tswitch ( type ) {\n\n\t\tcase 0x1406: return setValueV1fArray; // FLOAT\n\t\tcase 0x8b50: return setValueV2fArray; // _VEC2\n\t\tcase 0x8b51: return setValueV3fArray; // _VEC3\n\t\tcase 0x8b52: return setValueV4fArray; // _VEC4\n\n\t\tcase 0x8b5a: return setValueM2Array; // _MAT2\n\t\tcase 0x8b5b: return setValueM3Array; // _MAT3\n\t\tcase 0x8b5c: return setValueM4Array; // _MAT4\n\n\t\tcase 0x1404: case 0x8b56: return setValueV1iArray; // INT, BOOL\n\t\tcase 0x8b53: case 0x8b57: return setValueV2iArray; // _VEC2\n\t\tcase 0x8b54: case 0x8b58: return setValueV3iArray; // _VEC3\n\t\tcase 0x8b55: case 0x8b59: return setValueV4iArray; // _VEC4\n\n\t\tcase 0x1405: return setValueV1uiArray; // UINT\n\t\tcase 0x8dc6: return setValueV2uiArray; // _VEC2\n\t\tcase 0x8dc7: return setValueV3uiArray; // _VEC3\n\t\tcase 0x8dc8: return setValueV4uiArray; // _VEC4\n\n\t\tcase 0x8b5e: // SAMPLER_2D\n\t\tcase 0x8d66: // SAMPLER_EXTERNAL_OES\n\t\tcase 0x8dca: // INT_SAMPLER_2D\n\t\tcase 0x8dd2: // UNSIGNED_INT_SAMPLER_2D\n\t\tcase 0x8b62: // SAMPLER_2D_SHADOW\n\t\t\treturn setValueT1Array;\n\n\t\tcase 0x8b5f: // SAMPLER_3D\n\t\tcase 0x8dcb: // INT_SAMPLER_3D\n\t\tcase 0x8dd3: // UNSIGNED_INT_SAMPLER_3D\n\t\t\treturn setValueT3DArray;\n\n\t\tcase 0x8b60: // SAMPLER_CUBE\n\t\tcase 0x8dcc: // INT_SAMPLER_CUBE\n\t\tcase 0x8dd4: // UNSIGNED_INT_SAMPLER_CUBE\n\t\tcase 0x8dc5: // SAMPLER_CUBE_SHADOW\n\t\t\treturn setValueT6Array;\n\n\t\tcase 0x8dc1: // SAMPLER_2D_ARRAY\n\t\tcase 0x8dcf: // INT_SAMPLER_2D_ARRAY\n\t\tcase 0x8dd7: // UNSIGNED_INT_SAMPLER_2D_ARRAY\n\t\tcase 0x8dc4: // SAMPLER_2D_ARRAY_SHADOW\n\t\t\treturn setValueT2DArrayArray;\n\n\t}\n\n}\n\n// --- Uniform Classes ---\n\nclass SingleUniform {\n\n\tconstructor( id, activeInfo, addr ) {\n\n\t\tthis.id = id;\n\t\tthis.addr = addr;\n\t\tthis.cache = [];\n\t\tthis.setValue = getSingularSetter( activeInfo.type );\n\n\t\t// this.path = activeInfo.name; // DEBUG\n\n\t}\n\n}\n\nclass PureArrayUniform {\n\n\tconstructor( id, activeInfo, addr ) {\n\n\t\tthis.id = id;\n\t\tthis.addr = addr;\n\t\tthis.cache = [];\n\t\tthis.size = activeInfo.size;\n\t\tthis.setValue = getPureArraySetter( activeInfo.type );\n\n\t\t// this.path = activeInfo.name; // DEBUG\n\n\t}\n\n}\n\nclass StructuredUniform {\n\n\tconstructor( id ) {\n\n\t\tthis.id = id;\n\n\t\tthis.seq = [];\n\t\tthis.map = {};\n\n\t}\n\n\tsetValue( gl, value, textures ) {\n\n\t\tconst seq = this.seq;\n\n\t\tfor ( let i = 0, n = seq.length; i !== n; ++ i ) {\n\n\t\t\tconst u = seq[ i ];\n\t\t\tu.setValue( gl, value[ u.id ], textures );\n\n\t\t}\n\n\t}\n\n}\n\n// --- Top-level ---\n\n// Parser - builds up the property tree from the path strings\n\nconst RePathPart = /(\\w+)(\\])?(\\[|\\.)?/g;\n\n// extracts\n// \t- the identifier (member name or array index)\n// - followed by an optional right bracket (found when array index)\n// - followed by an optional left bracket or dot (type of subscript)\n//\n// Note: These portions can be read in a non-overlapping fashion and\n// allow straightforward parsing of the hierarchy that WebGL encodes\n// in the uniform names.\n\nfunction addUniform( container, uniformObject ) {\n\n\tcontainer.seq.push( uniformObject );\n\tcontainer.map[ uniformObject.id ] = uniformObject;\n\n}\n\nfunction parseUniform( activeInfo, addr, container ) {\n\n\tconst path = activeInfo.name,\n\t\tpathLength = path.length;\n\n\t// reset RegExp object, because of the early exit of a previous run\n\tRePathPart.lastIndex = 0;\n\n\twhile ( true ) {\n\n\t\tconst match = RePathPart.exec( path ),\n\t\t\tmatchEnd = RePathPart.lastIndex;\n\n\t\tlet id = match[ 1 ];\n\t\tconst idIsIndex = match[ 2 ] === ']',\n\t\t\tsubscript = match[ 3 ];\n\n\t\tif ( idIsIndex ) id = id | 0; // convert to integer\n\n\t\tif ( subscript === undefined || subscript === '[' && matchEnd + 2 === pathLength ) {\n\n\t\t\t// bare name or \"pure\" bottom-level array \"[0]\" suffix\n\n\t\t\taddUniform( container, subscript === undefined ?\n\t\t\t\tnew SingleUniform( id, activeInfo, addr ) :\n\t\t\t\tnew PureArrayUniform( id, activeInfo, addr ) );\n\n\t\t\tbreak;\n\n\t\t} else {\n\n\t\t\t// step into inner node / create it in case it doesn't exist\n\n\t\t\tconst map = container.map;\n\t\t\tlet next = map[ id ];\n\n\t\t\tif ( next === undefined ) {\n\n\t\t\t\tnext = new StructuredUniform( id );\n\t\t\t\taddUniform( container, next );\n\n\t\t\t}\n\n\t\t\tcontainer = next;\n\n\t\t}\n\n\t}\n\n}\n\n// Root Container\n\nclass WebGLUniforms {\n\n\tconstructor( gl, program ) {\n\n\t\tthis.seq = [];\n\t\tthis.map = {};\n\n\t\tconst n = gl.getProgramParameter( program, 35718 );\n\n\t\tfor ( let i = 0; i < n; ++ i ) {\n\n\t\t\tconst info = gl.getActiveUniform( program, i ),\n\t\t\t\taddr = gl.getUniformLocation( program, info.name );\n\n\t\t\tparseUniform( info, addr, this );\n\n\t\t}\n\n\t}\n\n\tsetValue( gl, name, value, textures ) {\n\n\t\tconst u = this.map[ name ];\n\n\t\tif ( u !== undefined ) u.setValue( gl, value, textures );\n\n\t}\n\n\tsetOptional( gl, object, name ) {\n\n\t\tconst v = object[ name ];\n\n\t\tif ( v !== undefined ) this.setValue( gl, name, v );\n\n\t}\n\n\tstatic upload( gl, seq, values, textures ) {\n\n\t\tfor ( let i = 0, n = seq.length; i !== n; ++ i ) {\n\n\t\t\tconst u = seq[ i ],\n\t\t\t\tv = values[ u.id ];\n\n\t\t\tif ( v.needsUpdate !== false ) {\n\n\t\t\t\t// note: always updating when .needsUpdate is undefined\n\t\t\t\tu.setValue( gl, v.value, textures );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tstatic seqWithValue( seq, values ) {\n\n\t\tconst r = [];\n\n\t\tfor ( let i = 0, n = seq.length; i !== n; ++ i ) {\n\n\t\t\tconst u = seq[ i ];\n\t\t\tif ( u.id in values ) r.push( u );\n\n\t\t}\n\n\t\treturn r;\n\n\t}\n\n}\n\nfunction WebGLShader( gl, type, string ) {\n\n\tconst shader = gl.createShader( type );\n\n\tgl.shaderSource( shader, string );\n\tgl.compileShader( shader );\n\n\treturn shader;\n\n}\n\nlet programIdCount = 0;\n\nfunction handleSource( string, errorLine ) {\n\n\tconst lines = string.split( '\\n' );\n\tconst lines2 = [];\n\n\tconst from = Math.max( errorLine - 6, 0 );\n\tconst to = Math.min( errorLine + 6, lines.length );\n\n\tfor ( let i = from; i < to; i ++ ) {\n\n\t\tconst line = i + 1;\n\t\tlines2.push( `${line === errorLine ? '>' : ' '} ${line}: ${lines[ i ]}` );\n\n\t}\n\n\treturn lines2.join( '\\n' );\n\n}\n\nfunction getEncodingComponents( encoding ) {\n\n\tswitch ( encoding ) {\n\n\t\tcase LinearEncoding:\n\t\t\treturn [ 'Linear', '( value )' ];\n\t\tcase sRGBEncoding:\n\t\t\treturn [ 'sRGB', '( value )' ];\n\t\tdefault:\n\t\t\tconsole.warn( 'THREE.WebGLProgram: Unsupported encoding:', encoding );\n\t\t\treturn [ 'Linear', '( value )' ];\n\n\t}\n\n}\n\nfunction getShaderErrors( gl, shader, type ) {\n\n\tconst status = gl.getShaderParameter( shader, 35713 );\n\tconst errors = gl.getShaderInfoLog( shader ).trim();\n\n\tif ( status && errors === '' ) return '';\n\n\tconst errorMatches = /ERROR: 0:(\\d+)/.exec( errors );\n\tif ( errorMatches ) {\n\n\t\t// --enable-privileged-webgl-extension\n\t\t// console.log( '**' + type + '**', gl.getExtension( 'WEBGL_debug_shaders' ).getTranslatedShaderSource( shader ) );\n\n\t\tconst errorLine = parseInt( errorMatches[ 1 ] );\n\t\treturn type.toUpperCase() + '\\n\\n' + errors + '\\n\\n' + handleSource( gl.getShaderSource( shader ), errorLine );\n\n\t} else {\n\n\t\treturn errors;\n\n\t}\n\n}\n\nfunction getTexelEncodingFunction( functionName, encoding ) {\n\n\tconst components = getEncodingComponents( encoding );\n\treturn 'vec4 ' + functionName + '( vec4 value ) { return LinearTo' + components[ 0 ] + components[ 1 ] + '; }';\n\n}\n\nfunction getToneMappingFunction( functionName, toneMapping ) {\n\n\tlet toneMappingName;\n\n\tswitch ( toneMapping ) {\n\n\t\tcase LinearToneMapping:\n\t\t\ttoneMappingName = 'Linear';\n\t\t\tbreak;\n\n\t\tcase ReinhardToneMapping:\n\t\t\ttoneMappingName = 'Reinhard';\n\t\t\tbreak;\n\n\t\tcase CineonToneMapping:\n\t\t\ttoneMappingName = 'OptimizedCineon';\n\t\t\tbreak;\n\n\t\tcase ACESFilmicToneMapping:\n\t\t\ttoneMappingName = 'ACESFilmic';\n\t\t\tbreak;\n\n\t\tcase CustomToneMapping:\n\t\t\ttoneMappingName = 'Custom';\n\t\t\tbreak;\n\n\t\tdefault:\n\t\t\tconsole.warn( 'THREE.WebGLProgram: Unsupported toneMapping:', toneMapping );\n\t\t\ttoneMappingName = 'Linear';\n\n\t}\n\n\treturn 'vec3 ' + functionName + '( vec3 color ) { return ' + toneMappingName + 'ToneMapping( color ); }';\n\n}\n\nfunction generateExtensions( parameters ) {\n\n\tconst chunks = [\n\t\t( parameters.extensionDerivatives || !! parameters.envMapCubeUVHeight || parameters.bumpMap || parameters.tangentSpaceNormalMap || parameters.clearcoatNormalMap || parameters.flatShading || parameters.shaderID === 'physical' ) ? '#extension GL_OES_standard_derivatives : enable' : '',\n\t\t( parameters.extensionFragDepth || parameters.logarithmicDepthBuffer ) && parameters.rendererExtensionFragDepth ? '#extension GL_EXT_frag_depth : enable' : '',\n\t\t( parameters.extensionDrawBuffers && parameters.rendererExtensionDrawBuffers ) ? '#extension GL_EXT_draw_buffers : require' : '',\n\t\t( parameters.extensionShaderTextureLOD || parameters.envMap || parameters.transmission ) && parameters.rendererExtensionShaderTextureLod ? '#extension GL_EXT_shader_texture_lod : enable' : ''\n\t];\n\n\treturn chunks.filter( filterEmptyLine ).join( '\\n' );\n\n}\n\nfunction generateDefines( defines ) {\n\n\tconst chunks = [];\n\n\tfor ( const name in defines ) {\n\n\t\tconst value = defines[ name ];\n\n\t\tif ( value === false ) continue;\n\n\t\tchunks.push( '#define ' + name + ' ' + value );\n\n\t}\n\n\treturn chunks.join( '\\n' );\n\n}\n\nfunction fetchAttributeLocations( gl, program ) {\n\n\tconst attributes = {};\n\n\tconst n = gl.getProgramParameter( program, 35721 );\n\n\tfor ( let i = 0; i < n; i ++ ) {\n\n\t\tconst info = gl.getActiveAttrib( program, i );\n\t\tconst name = info.name;\n\n\t\tlet locationSize = 1;\n\t\tif ( info.type === 35674 ) locationSize = 2;\n\t\tif ( info.type === 35675 ) locationSize = 3;\n\t\tif ( info.type === 35676 ) locationSize = 4;\n\n\t\t// console.log( 'THREE.WebGLProgram: ACTIVE VERTEX ATTRIBUTE:', name, i );\n\n\t\tattributes[ name ] = {\n\t\t\ttype: info.type,\n\t\t\tlocation: gl.getAttribLocation( program, name ),\n\t\t\tlocationSize: locationSize\n\t\t};\n\n\t}\n\n\treturn attributes;\n\n}\n\nfunction filterEmptyLine( string ) {\n\n\treturn string !== '';\n\n}\n\nfunction replaceLightNums( string, parameters ) {\n\n\treturn string\n\t\t.replace( /NUM_DIR_LIGHTS/g, parameters.numDirLights )\n\t\t.replace( /NUM_SPOT_LIGHTS/g, parameters.numSpotLights )\n\t\t.replace( /NUM_RECT_AREA_LIGHTS/g, parameters.numRectAreaLights )\n\t\t.replace( /NUM_POINT_LIGHTS/g, parameters.numPointLights )\n\t\t.replace( /NUM_HEMI_LIGHTS/g, parameters.numHemiLights )\n\t\t.replace( /NUM_DIR_LIGHT_SHADOWS/g, parameters.numDirLightShadows )\n\t\t.replace( /NUM_SPOT_LIGHT_SHADOWS/g, parameters.numSpotLightShadows )\n\t\t.replace( /NUM_POINT_LIGHT_SHADOWS/g, parameters.numPointLightShadows );\n\n}\n\nfunction replaceClippingPlaneNums( string, parameters ) {\n\n\treturn string\n\t\t.replace( /NUM_CLIPPING_PLANES/g, parameters.numClippingPlanes )\n\t\t.replace( /UNION_CLIPPING_PLANES/g, ( parameters.numClippingPlanes - parameters.numClipIntersection ) );\n\n}\n\n// Resolve Includes\n\nconst includePattern = /^[ \\t]*#include +<([\\w\\d./]+)>/gm;\n\nfunction resolveIncludes( string ) {\n\n\treturn string.replace( includePattern, includeReplacer );\n\n}\n\nfunction includeReplacer( match, include ) {\n\n\tconst string = ShaderChunk[ include ];\n\n\tif ( string === undefined ) {\n\n\t\tthrow new Error( 'Can not resolve #include <' + include + '>' );\n\n\t}\n\n\treturn resolveIncludes( string );\n\n}\n\n// Unroll Loops\n\nconst deprecatedUnrollLoopPattern = /#pragma unroll_loop[\\s]+?for \\( int i \\= (\\d+)\\; i < (\\d+)\\; i \\+\\+ \\) \\{([\\s\\S]+?)(?=\\})\\}/g;\nconst unrollLoopPattern = /#pragma unroll_loop_start\\s+for\\s*\\(\\s*int\\s+i\\s*=\\s*(\\d+)\\s*;\\s*i\\s*<\\s*(\\d+)\\s*;\\s*i\\s*\\+\\+\\s*\\)\\s*{([\\s\\S]+?)}\\s+#pragma unroll_loop_end/g;\n\nfunction unrollLoops( string ) {\n\n\treturn string\n\t\t.replace( unrollLoopPattern, loopReplacer )\n\t\t.replace( deprecatedUnrollLoopPattern, deprecatedLoopReplacer );\n\n}\n\nfunction deprecatedLoopReplacer( match, start, end, snippet ) {\n\n\tconsole.warn( 'WebGLProgram: #pragma unroll_loop shader syntax is deprecated. Please use #pragma unroll_loop_start syntax instead.' );\n\treturn loopReplacer( match, start, end, snippet );\n\n}\n\nfunction loopReplacer( match, start, end, snippet ) {\n\n\tlet string = '';\n\n\tfor ( let i = parseInt( start ); i < parseInt( end ); i ++ ) {\n\n\t\tstring += snippet\n\t\t\t.replace( /\\[\\s*i\\s*\\]/g, '[ ' + i + ' ]' )\n\t\t\t.replace( /UNROLLED_LOOP_INDEX/g, i );\n\n\t}\n\n\treturn string;\n\n}\n\n//\n\nfunction generatePrecision( parameters ) {\n\n\tlet precisionstring = 'precision ' + parameters.precision + ' float;\\nprecision ' + parameters.precision + ' int;';\n\n\tif ( parameters.precision === 'highp' ) {\n\n\t\tprecisionstring += '\\n#define HIGH_PRECISION';\n\n\t} else if ( parameters.precision === 'mediump' ) {\n\n\t\tprecisionstring += '\\n#define MEDIUM_PRECISION';\n\n\t} else if ( parameters.precision === 'lowp' ) {\n\n\t\tprecisionstring += '\\n#define LOW_PRECISION';\n\n\t}\n\n\treturn precisionstring;\n\n}\n\nfunction generateShadowMapTypeDefine( parameters ) {\n\n\tlet shadowMapTypeDefine = 'SHADOWMAP_TYPE_BASIC';\n\n\tif ( parameters.shadowMapType === PCFShadowMap ) {\n\n\t\tshadowMapTypeDefine = 'SHADOWMAP_TYPE_PCF';\n\n\t} else if ( parameters.shadowMapType === PCFSoftShadowMap ) {\n\n\t\tshadowMapTypeDefine = 'SHADOWMAP_TYPE_PCF_SOFT';\n\n\t} else if ( parameters.shadowMapType === VSMShadowMap ) {\n\n\t\tshadowMapTypeDefine = 'SHADOWMAP_TYPE_VSM';\n\n\t}\n\n\treturn shadowMapTypeDefine;\n\n}\n\nfunction generateEnvMapTypeDefine( parameters ) {\n\n\tlet envMapTypeDefine = 'ENVMAP_TYPE_CUBE';\n\n\tif ( parameters.envMap ) {\n\n\t\tswitch ( parameters.envMapMode ) {\n\n\t\t\tcase CubeReflectionMapping:\n\t\t\tcase CubeRefractionMapping:\n\t\t\t\tenvMapTypeDefine = 'ENVMAP_TYPE_CUBE';\n\t\t\t\tbreak;\n\n\t\t\tcase CubeUVReflectionMapping:\n\t\t\t\tenvMapTypeDefine = 'ENVMAP_TYPE_CUBE_UV';\n\t\t\t\tbreak;\n\n\t\t}\n\n\t}\n\n\treturn envMapTypeDefine;\n\n}\n\nfunction generateEnvMapModeDefine( parameters ) {\n\n\tlet envMapModeDefine = 'ENVMAP_MODE_REFLECTION';\n\n\tif ( parameters.envMap ) {\n\n\t\tswitch ( parameters.envMapMode ) {\n\n\t\t\tcase CubeRefractionMapping:\n\n\t\t\t\tenvMapModeDefine = 'ENVMAP_MODE_REFRACTION';\n\t\t\t\tbreak;\n\n\t\t}\n\n\t}\n\n\treturn envMapModeDefine;\n\n}\n\nfunction generateEnvMapBlendingDefine( parameters ) {\n\n\tlet envMapBlendingDefine = 'ENVMAP_BLENDING_NONE';\n\n\tif ( parameters.envMap ) {\n\n\t\tswitch ( parameters.combine ) {\n\n\t\t\tcase MultiplyOperation:\n\t\t\t\tenvMapBlendingDefine = 'ENVMAP_BLENDING_MULTIPLY';\n\t\t\t\tbreak;\n\n\t\t\tcase MixOperation:\n\t\t\t\tenvMapBlendingDefine = 'ENVMAP_BLENDING_MIX';\n\t\t\t\tbreak;\n\n\t\t\tcase AddOperation:\n\t\t\t\tenvMapBlendingDefine = 'ENVMAP_BLENDING_ADD';\n\t\t\t\tbreak;\n\n\t\t}\n\n\t}\n\n\treturn envMapBlendingDefine;\n\n}\n\nfunction generateCubeUVSize( parameters ) {\n\n\tconst imageHeight = parameters.envMapCubeUVHeight;\n\n\tif ( imageHeight === null ) return null;\n\n\tconst maxMip = Math.log2( imageHeight ) - 2;\n\n\tconst texelHeight = 1.0 / imageHeight;\n\n\tconst texelWidth = 1.0 / ( 3 * Math.max( Math.pow( 2, maxMip ), 7 * 16 ) );\n\n\treturn { texelWidth, texelHeight, maxMip };\n\n}\n\nfunction WebGLProgram( renderer, cacheKey, parameters, bindingStates ) {\n\n\t// TODO Send this event to Three.js DevTools\n\t// console.log( 'WebGLProgram', cacheKey );\n\n\tconst gl = renderer.getContext();\n\n\tconst defines = parameters.defines;\n\n\tlet vertexShader = parameters.vertexShader;\n\tlet fragmentShader = parameters.fragmentShader;\n\n\tconst shadowMapTypeDefine = generateShadowMapTypeDefine( parameters );\n\tconst envMapTypeDefine = generateEnvMapTypeDefine( parameters );\n\tconst envMapModeDefine = generateEnvMapModeDefine( parameters );\n\tconst envMapBlendingDefine = generateEnvMapBlendingDefine( parameters );\n\tconst envMapCubeUVSize = generateCubeUVSize( parameters );\n\n\tconst customExtensions = parameters.isWebGL2 ? '' : generateExtensions( parameters );\n\n\tconst customDefines = generateDefines( defines );\n\n\tconst program = gl.createProgram();\n\n\tlet prefixVertex, prefixFragment;\n\tlet versionString = parameters.glslVersion ? '#version ' + parameters.glslVersion + '\\n' : '';\n\n\tif ( parameters.isRawShaderMaterial ) {\n\n\t\tprefixVertex = [\n\n\t\t\tcustomDefines\n\n\t\t].filter( filterEmptyLine ).join( '\\n' );\n\n\t\tif ( prefixVertex.length > 0 ) {\n\n\t\t\tprefixVertex += '\\n';\n\n\t\t}\n\n\t\tprefixFragment = [\n\n\t\t\tcustomExtensions,\n\t\t\tcustomDefines\n\n\t\t].filter( filterEmptyLine ).join( '\\n' );\n\n\t\tif ( prefixFragment.length > 0 ) {\n\n\t\t\tprefixFragment += '\\n';\n\n\t\t}\n\n\t} else {\n\n\t\tprefixVertex = [\n\n\t\t\tgeneratePrecision( parameters ),\n\n\t\t\t'#define SHADER_NAME ' + parameters.shaderName,\n\n\t\t\tcustomDefines,\n\n\t\t\tparameters.instancing ? '#define USE_INSTANCING' : '',\n\t\t\tparameters.instancingColor ? '#define USE_INSTANCING_COLOR' : '',\n\n\t\t\tparameters.supportsVertexTextures ? '#define VERTEX_TEXTURES' : '',\n\n\t\t\t( parameters.useFog && parameters.fog ) ? '#define USE_FOG' : '',\n\t\t\t( parameters.useFog && parameters.fogExp2 ) ? '#define FOG_EXP2' : '',\n\n\t\t\tparameters.map ? '#define USE_MAP' : '',\n\t\t\tparameters.envMap ? '#define USE_ENVMAP' : '',\n\t\t\tparameters.envMap ? '#define ' + envMapModeDefine : '',\n\t\t\tparameters.lightMap ? '#define USE_LIGHTMAP' : '',\n\t\t\tparameters.aoMap ? '#define USE_AOMAP' : '',\n\t\t\tparameters.emissiveMap ? '#define USE_EMISSIVEMAP' : '',\n\t\t\tparameters.bumpMap ? '#define USE_BUMPMAP' : '',\n\t\t\tparameters.normalMap ? '#define USE_NORMALMAP' : '',\n\t\t\t( parameters.normalMap && parameters.objectSpaceNormalMap ) ? '#define OBJECTSPACE_NORMALMAP' : '',\n\t\t\t( parameters.normalMap && parameters.tangentSpaceNormalMap ) ? '#define TANGENTSPACE_NORMALMAP' : '',\n\n\t\t\tparameters.clearcoatMap ? '#define USE_CLEARCOATMAP' : '',\n\t\t\tparameters.clearcoatRoughnessMap ? '#define USE_CLEARCOAT_ROUGHNESSMAP' : '',\n\t\t\tparameters.clearcoatNormalMap ? '#define USE_CLEARCOAT_NORMALMAP' : '',\n\n\t\t\tparameters.iridescenceMap ? '#define USE_IRIDESCENCEMAP' : '',\n\t\t\tparameters.iridescenceThicknessMap ? '#define USE_IRIDESCENCE_THICKNESSMAP' : '',\n\n\t\t\tparameters.displacementMap && parameters.supportsVertexTextures ? '#define USE_DISPLACEMENTMAP' : '',\n\n\t\t\tparameters.specularMap ? '#define USE_SPECULARMAP' : '',\n\t\t\tparameters.specularIntensityMap ? '#define USE_SPECULARINTENSITYMAP' : '',\n\t\t\tparameters.specularColorMap ? '#define USE_SPECULARCOLORMAP' : '',\n\n\t\t\tparameters.roughnessMap ? '#define USE_ROUGHNESSMAP' : '',\n\t\t\tparameters.metalnessMap ? '#define USE_METALNESSMAP' : '',\n\t\t\tparameters.alphaMap ? '#define USE_ALPHAMAP' : '',\n\n\t\t\tparameters.transmission ? '#define USE_TRANSMISSION' : '',\n\t\t\tparameters.transmissionMap ? '#define USE_TRANSMISSIONMAP' : '',\n\t\t\tparameters.thicknessMap ? '#define USE_THICKNESSMAP' : '',\n\n\t\t\tparameters.sheenColorMap ? '#define USE_SHEENCOLORMAP' : '',\n\t\t\tparameters.sheenRoughnessMap ? '#define USE_SHEENROUGHNESSMAP' : '',\n\n\t\t\tparameters.vertexTangents ? '#define USE_TANGENT' : '',\n\t\t\tparameters.vertexColors ? '#define USE_COLOR' : '',\n\t\t\tparameters.vertexAlphas ? '#define USE_COLOR_ALPHA' : '',\n\t\t\tparameters.vertexUvs ? '#define USE_UV' : '',\n\t\t\tparameters.uvsVertexOnly ? '#define UVS_VERTEX_ONLY' : '',\n\n\t\t\tparameters.flatShading ? '#define FLAT_SHADED' : '',\n\n\t\t\tparameters.skinning ? '#define USE_SKINNING' : '',\n\n\t\t\tparameters.morphTargets ? '#define USE_MORPHTARGETS' : '',\n\t\t\tparameters.morphNormals && parameters.flatShading === false ? '#define USE_MORPHNORMALS' : '',\n\t\t\t( parameters.morphColors && parameters.isWebGL2 ) ? '#define USE_MORPHCOLORS' : '',\n\t\t\t( parameters.morphTargetsCount > 0 && parameters.isWebGL2 ) ? '#define MORPHTARGETS_TEXTURE' : '',\n\t\t\t( parameters.morphTargetsCount > 0 && parameters.isWebGL2 ) ? '#define MORPHTARGETS_TEXTURE_STRIDE ' + parameters.morphTextureStride : '',\n\t\t\t( parameters.morphTargetsCount > 0 && parameters.isWebGL2 ) ? '#define MORPHTARGETS_COUNT ' + parameters.morphTargetsCount : '',\n\t\t\tparameters.doubleSided ? '#define DOUBLE_SIDED' : '',\n\t\t\tparameters.flipSided ? '#define FLIP_SIDED' : '',\n\n\t\t\tparameters.shadowMapEnabled ? '#define USE_SHADOWMAP' : '',\n\t\t\tparameters.shadowMapEnabled ? '#define ' + shadowMapTypeDefine : '',\n\n\t\t\tparameters.sizeAttenuation ? '#define USE_SIZEATTENUATION' : '',\n\n\t\t\tparameters.logarithmicDepthBuffer ? '#define USE_LOGDEPTHBUF' : '',\n\t\t\t( parameters.logarithmicDepthBuffer && parameters.rendererExtensionFragDepth ) ? '#define USE_LOGDEPTHBUF_EXT' : '',\n\n\t\t\t'uniform mat4 modelMatrix;',\n\t\t\t'uniform mat4 modelViewMatrix;',\n\t\t\t'uniform mat4 projectionMatrix;',\n\t\t\t'uniform mat4 viewMatrix;',\n\t\t\t'uniform mat3 normalMatrix;',\n\t\t\t'uniform vec3 cameraPosition;',\n\t\t\t'uniform bool isOrthographic;',\n\n\t\t\t'#ifdef USE_INSTANCING',\n\n\t\t\t'\tattribute mat4 instanceMatrix;',\n\n\t\t\t'#endif',\n\n\t\t\t'#ifdef USE_INSTANCING_COLOR',\n\n\t\t\t'\tattribute vec3 instanceColor;',\n\n\t\t\t'#endif',\n\n\t\t\t'attribute vec3 position;',\n\t\t\t'attribute vec3 normal;',\n\t\t\t'attribute vec2 uv;',\n\n\t\t\t'#ifdef USE_TANGENT',\n\n\t\t\t'\tattribute vec4 tangent;',\n\n\t\t\t'#endif',\n\n\t\t\t'#if defined( USE_COLOR_ALPHA )',\n\n\t\t\t'\tattribute vec4 color;',\n\n\t\t\t'#elif defined( USE_COLOR )',\n\n\t\t\t'\tattribute vec3 color;',\n\n\t\t\t'#endif',\n\n\t\t\t'#if ( defined( USE_MORPHTARGETS ) && ! defined( MORPHTARGETS_TEXTURE ) )',\n\n\t\t\t'\tattribute vec3 morphTarget0;',\n\t\t\t'\tattribute vec3 morphTarget1;',\n\t\t\t'\tattribute vec3 morphTarget2;',\n\t\t\t'\tattribute vec3 morphTarget3;',\n\n\t\t\t'\t#ifdef USE_MORPHNORMALS',\n\n\t\t\t'\t\tattribute vec3 morphNormal0;',\n\t\t\t'\t\tattribute vec3 morphNormal1;',\n\t\t\t'\t\tattribute vec3 morphNormal2;',\n\t\t\t'\t\tattribute vec3 morphNormal3;',\n\n\t\t\t'\t#else',\n\n\t\t\t'\t\tattribute vec3 morphTarget4;',\n\t\t\t'\t\tattribute vec3 morphTarget5;',\n\t\t\t'\t\tattribute vec3 morphTarget6;',\n\t\t\t'\t\tattribute vec3 morphTarget7;',\n\n\t\t\t'\t#endif',\n\n\t\t\t'#endif',\n\n\t\t\t'#ifdef USE_SKINNING',\n\n\t\t\t'\tattribute vec4 skinIndex;',\n\t\t\t'\tattribute vec4 skinWeight;',\n\n\t\t\t'#endif',\n\n\t\t\t'\\n'\n\n\t\t].filter( filterEmptyLine ).join( '\\n' );\n\n\t\tprefixFragment = [\n\n\t\t\tcustomExtensions,\n\n\t\t\tgeneratePrecision( parameters ),\n\n\t\t\t'#define SHADER_NAME ' + parameters.shaderName,\n\n\t\t\tcustomDefines,\n\n\t\t\t( parameters.useFog && parameters.fog ) ? '#define USE_FOG' : '',\n\t\t\t( parameters.useFog && parameters.fogExp2 ) ? '#define FOG_EXP2' : '',\n\n\t\t\tparameters.map ? '#define USE_MAP' : '',\n\t\t\tparameters.matcap ? '#define USE_MATCAP' : '',\n\t\t\tparameters.envMap ? '#define USE_ENVMAP' : '',\n\t\t\tparameters.envMap ? '#define ' + envMapTypeDefine : '',\n\t\t\tparameters.envMap ? '#define ' + envMapModeDefine : '',\n\t\t\tparameters.envMap ? '#define ' + envMapBlendingDefine : '',\n\t\t\tenvMapCubeUVSize ? '#define CUBEUV_TEXEL_WIDTH ' + envMapCubeUVSize.texelWidth : '',\n\t\t\tenvMapCubeUVSize ? '#define CUBEUV_TEXEL_HEIGHT ' + envMapCubeUVSize.texelHeight : '',\n\t\t\tenvMapCubeUVSize ? '#define CUBEUV_MAX_MIP ' + envMapCubeUVSize.maxMip + '.0' : '',\n\t\t\tparameters.lightMap ? '#define USE_LIGHTMAP' : '',\n\t\t\tparameters.aoMap ? '#define USE_AOMAP' : '',\n\t\t\tparameters.emissiveMap ? '#define USE_EMISSIVEMAP' : '',\n\t\t\tparameters.bumpMap ? '#define USE_BUMPMAP' : '',\n\t\t\tparameters.normalMap ? '#define USE_NORMALMAP' : '',\n\t\t\t( parameters.normalMap && parameters.objectSpaceNormalMap ) ? '#define OBJECTSPACE_NORMALMAP' : '',\n\t\t\t( parameters.normalMap && parameters.tangentSpaceNormalMap ) ? '#define TANGENTSPACE_NORMALMAP' : '',\n\n\t\t\tparameters.clearcoat ? '#define USE_CLEARCOAT' : '',\n\t\t\tparameters.clearcoatMap ? '#define USE_CLEARCOATMAP' : '',\n\t\t\tparameters.clearcoatRoughnessMap ? '#define USE_CLEARCOAT_ROUGHNESSMAP' : '',\n\t\t\tparameters.clearcoatNormalMap ? '#define USE_CLEARCOAT_NORMALMAP' : '',\n\n\t\t\tparameters.iridescence ? '#define USE_IRIDESCENCE' : '',\n\t\t\tparameters.iridescenceMap ? '#define USE_IRIDESCENCEMAP' : '',\n\t\t\tparameters.iridescenceThicknessMap ? '#define USE_IRIDESCENCE_THICKNESSMAP' : '',\n\n\t\t\tparameters.specularMap ? '#define USE_SPECULARMAP' : '',\n\t\t\tparameters.specularIntensityMap ? '#define USE_SPECULARINTENSITYMAP' : '',\n\t\t\tparameters.specularColorMap ? '#define USE_SPECULARCOLORMAP' : '',\n\t\t\tparameters.roughnessMap ? '#define USE_ROUGHNESSMAP' : '',\n\t\t\tparameters.metalnessMap ? '#define USE_METALNESSMAP' : '',\n\n\t\t\tparameters.alphaMap ? '#define USE_ALPHAMAP' : '',\n\t\t\tparameters.alphaTest ? '#define USE_ALPHATEST' : '',\n\n\t\t\tparameters.sheen ? '#define USE_SHEEN' : '',\n\t\t\tparameters.sheenColorMap ? '#define USE_SHEENCOLORMAP' : '',\n\t\t\tparameters.sheenRoughnessMap ? '#define USE_SHEENROUGHNESSMAP' : '',\n\n\t\t\tparameters.transmission ? '#define USE_TRANSMISSION' : '',\n\t\t\tparameters.transmissionMap ? '#define USE_TRANSMISSIONMAP' : '',\n\t\t\tparameters.thicknessMap ? '#define USE_THICKNESSMAP' : '',\n\n\t\t\tparameters.decodeVideoTexture ? '#define DECODE_VIDEO_TEXTURE' : '',\n\n\t\t\tparameters.vertexTangents ? '#define USE_TANGENT' : '',\n\t\t\tparameters.vertexColors || parameters.instancingColor ? '#define USE_COLOR' : '',\n\t\t\tparameters.vertexAlphas ? '#define USE_COLOR_ALPHA' : '',\n\t\t\tparameters.vertexUvs ? '#define USE_UV' : '',\n\t\t\tparameters.uvsVertexOnly ? '#define UVS_VERTEX_ONLY' : '',\n\n\t\t\tparameters.gradientMap ? '#define USE_GRADIENTMAP' : '',\n\n\t\t\tparameters.flatShading ? '#define FLAT_SHADED' : '',\n\n\t\t\tparameters.doubleSided ? '#define DOUBLE_SIDED' : '',\n\t\t\tparameters.flipSided ? '#define FLIP_SIDED' : '',\n\n\t\t\tparameters.shadowMapEnabled ? '#define USE_SHADOWMAP' : '',\n\t\t\tparameters.shadowMapEnabled ? '#define ' + shadowMapTypeDefine : '',\n\n\t\t\tparameters.premultipliedAlpha ? '#define PREMULTIPLIED_ALPHA' : '',\n\n\t\t\tparameters.physicallyCorrectLights ? '#define PHYSICALLY_CORRECT_LIGHTS' : '',\n\n\t\t\tparameters.logarithmicDepthBuffer ? '#define USE_LOGDEPTHBUF' : '',\n\t\t\t( parameters.logarithmicDepthBuffer && parameters.rendererExtensionFragDepth ) ? '#define USE_LOGDEPTHBUF_EXT' : '',\n\n\t\t\t'uniform mat4 viewMatrix;',\n\t\t\t'uniform vec3 cameraPosition;',\n\t\t\t'uniform bool isOrthographic;',\n\n\t\t\t( parameters.toneMapping !== NoToneMapping ) ? '#define TONE_MAPPING' : '',\n\t\t\t( parameters.toneMapping !== NoToneMapping ) ? ShaderChunk[ 'tonemapping_pars_fragment' ] : '', // this code is required here because it is used by the toneMapping() function defined below\n\t\t\t( parameters.toneMapping !== NoToneMapping ) ? getToneMappingFunction( 'toneMapping', parameters.toneMapping ) : '',\n\n\t\t\tparameters.dithering ? '#define DITHERING' : '',\n\t\t\tparameters.opaque ? '#define OPAQUE' : '',\n\n\t\t\tShaderChunk[ 'encodings_pars_fragment' ], // this code is required here because it is used by the various encoding/decoding function defined below\n\t\t\tgetTexelEncodingFunction( 'linearToOutputTexel', parameters.outputEncoding ),\n\n\t\t\tparameters.useDepthPacking ? '#define DEPTH_PACKING ' + parameters.depthPacking : '',\n\n\t\t\t'\\n'\n\n\t\t].filter( filterEmptyLine ).join( '\\n' );\n\n\t}\n\n\tvertexShader = resolveIncludes( vertexShader );\n\tvertexShader = replaceLightNums( vertexShader, parameters );\n\tvertexShader = replaceClippingPlaneNums( vertexShader, parameters );\n\n\tfragmentShader = resolveIncludes( fragmentShader );\n\tfragmentShader = replaceLightNums( fragmentShader, parameters );\n\tfragmentShader = replaceClippingPlaneNums( fragmentShader, parameters );\n\n\tvertexShader = unrollLoops( vertexShader );\n\tfragmentShader = unrollLoops( fragmentShader );\n\n\tif ( parameters.isWebGL2 && parameters.isRawShaderMaterial !== true ) {\n\n\t\t// GLSL 3.0 conversion for built-in materials and ShaderMaterial\n\n\t\tversionString = '#version 300 es\\n';\n\n\t\tprefixVertex = [\n\t\t\t'precision mediump sampler2DArray;',\n\t\t\t'#define attribute in',\n\t\t\t'#define varying out',\n\t\t\t'#define texture2D texture'\n\t\t].join( '\\n' ) + '\\n' + prefixVertex;\n\n\t\tprefixFragment = [\n\t\t\t'#define varying in',\n\t\t\t( parameters.glslVersion === GLSL3 ) ? '' : 'layout(location = 0) out highp vec4 pc_fragColor;',\n\t\t\t( parameters.glslVersion === GLSL3 ) ? '' : '#define gl_FragColor pc_fragColor',\n\t\t\t'#define gl_FragDepthEXT gl_FragDepth',\n\t\t\t'#define texture2D texture',\n\t\t\t'#define textureCube texture',\n\t\t\t'#define texture2DProj textureProj',\n\t\t\t'#define texture2DLodEXT textureLod',\n\t\t\t'#define texture2DProjLodEXT textureProjLod',\n\t\t\t'#define textureCubeLodEXT textureLod',\n\t\t\t'#define texture2DGradEXT textureGrad',\n\t\t\t'#define texture2DProjGradEXT textureProjGrad',\n\t\t\t'#define textureCubeGradEXT textureGrad'\n\t\t].join( '\\n' ) + '\\n' + prefixFragment;\n\n\t}\n\n\tconst vertexGlsl = versionString + prefixVertex + vertexShader;\n\tconst fragmentGlsl = versionString + prefixFragment + fragmentShader;\n\n\t// console.log( '*VERTEX*', vertexGlsl );\n\t// console.log( '*FRAGMENT*', fragmentGlsl );\n\n\tconst glVertexShader = WebGLShader( gl, 35633, vertexGlsl );\n\tconst glFragmentShader = WebGLShader( gl, 35632, fragmentGlsl );\n\n\tgl.attachShader( program, glVertexShader );\n\tgl.attachShader( program, glFragmentShader );\n\n\t// Force a particular attribute to index 0.\n\n\tif ( parameters.index0AttributeName !== undefined ) {\n\n\t\tgl.bindAttribLocation( program, 0, parameters.index0AttributeName );\n\n\t} else if ( parameters.morphTargets === true ) {\n\n\t\t// programs with morphTargets displace position out of attribute 0\n\t\tgl.bindAttribLocation( program, 0, 'position' );\n\n\t}\n\n\tgl.linkProgram( program );\n\n\t// check for link errors\n\tif ( renderer.debug.checkShaderErrors ) {\n\n\t\tconst programLog = gl.getProgramInfoLog( program ).trim();\n\t\tconst vertexLog = gl.getShaderInfoLog( glVertexShader ).trim();\n\t\tconst fragmentLog = gl.getShaderInfoLog( glFragmentShader ).trim();\n\n\t\tlet runnable = true;\n\t\tlet haveDiagnostics = true;\n\n\t\tif ( gl.getProgramParameter( program, 35714 ) === false ) {\n\n\t\t\trunnable = false;\n\n\t\t\tconst vertexErrors = getShaderErrors( gl, glVertexShader, 'vertex' );\n\t\t\tconst fragmentErrors = getShaderErrors( gl, glFragmentShader, 'fragment' );\n\n\t\t\tconsole.error(\n\t\t\t\t'THREE.WebGLProgram: Shader Error ' + gl.getError() + ' - ' +\n\t\t\t\t'VALIDATE_STATUS ' + gl.getProgramParameter( program, 35715 ) + '\\n\\n' +\n\t\t\t\t'Program Info Log: ' + programLog + '\\n' +\n\t\t\t\tvertexErrors + '\\n' +\n\t\t\t\tfragmentErrors\n\t\t\t);\n\n\t\t} else if ( programLog !== '' ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLProgram: Program Info Log:', programLog );\n\n\t\t} else if ( vertexLog === '' || fragmentLog === '' ) {\n\n\t\t\thaveDiagnostics = false;\n\n\t\t}\n\n\t\tif ( haveDiagnostics ) {\n\n\t\t\tthis.diagnostics = {\n\n\t\t\t\trunnable: runnable,\n\n\t\t\t\tprogramLog: programLog,\n\n\t\t\t\tvertexShader: {\n\n\t\t\t\t\tlog: vertexLog,\n\t\t\t\t\tprefix: prefixVertex\n\n\t\t\t\t},\n\n\t\t\t\tfragmentShader: {\n\n\t\t\t\t\tlog: fragmentLog,\n\t\t\t\t\tprefix: prefixFragment\n\n\t\t\t\t}\n\n\t\t\t};\n\n\t\t}\n\n\t}\n\n\t// Clean up\n\n\t// Crashes in iOS9 and iOS10. #18402\n\t// gl.detachShader( program, glVertexShader );\n\t// gl.detachShader( program, glFragmentShader );\n\n\tgl.deleteShader( glVertexShader );\n\tgl.deleteShader( glFragmentShader );\n\n\t// set up caching for uniform locations\n\n\tlet cachedUniforms;\n\n\tthis.getUniforms = function () {\n\n\t\tif ( cachedUniforms === undefined ) {\n\n\t\t\tcachedUniforms = new WebGLUniforms( gl, program );\n\n\t\t}\n\n\t\treturn cachedUniforms;\n\n\t};\n\n\t// set up caching for attribute locations\n\n\tlet cachedAttributes;\n\n\tthis.getAttributes = function () {\n\n\t\tif ( cachedAttributes === undefined ) {\n\n\t\t\tcachedAttributes = fetchAttributeLocations( gl, program );\n\n\t\t}\n\n\t\treturn cachedAttributes;\n\n\t};\n\n\t// free resource\n\n\tthis.destroy = function () {\n\n\t\tbindingStates.releaseStatesOfProgram( this );\n\n\t\tgl.deleteProgram( program );\n\t\tthis.program = undefined;\n\n\t};\n\n\t//\n\n\tthis.name = parameters.shaderName;\n\tthis.id = programIdCount ++;\n\tthis.cacheKey = cacheKey;\n\tthis.usedTimes = 1;\n\tthis.program = program;\n\tthis.vertexShader = glVertexShader;\n\tthis.fragmentShader = glFragmentShader;\n\n\treturn this;\n\n}\n\nlet _id = 0;\n\nclass WebGLShaderCache {\n\n\tconstructor() {\n\n\t\tthis.shaderCache = new Map();\n\t\tthis.materialCache = new Map();\n\n\t}\n\n\tupdate( material ) {\n\n\t\tconst vertexShader = material.vertexShader;\n\t\tconst fragmentShader = material.fragmentShader;\n\n\t\tconst vertexShaderStage = this._getShaderStage( vertexShader );\n\t\tconst fragmentShaderStage = this._getShaderStage( fragmentShader );\n\n\t\tconst materialShaders = this._getShaderCacheForMaterial( material );\n\n\t\tif ( materialShaders.has( vertexShaderStage ) === false ) {\n\n\t\t\tmaterialShaders.add( vertexShaderStage );\n\t\t\tvertexShaderStage.usedTimes ++;\n\n\t\t}\n\n\t\tif ( materialShaders.has( fragmentShaderStage ) === false ) {\n\n\t\t\tmaterialShaders.add( fragmentShaderStage );\n\t\t\tfragmentShaderStage.usedTimes ++;\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tremove( material ) {\n\n\t\tconst materialShaders = this.materialCache.get( material );\n\n\t\tfor ( const shaderStage of materialShaders ) {\n\n\t\t\tshaderStage.usedTimes --;\n\n\t\t\tif ( shaderStage.usedTimes === 0 ) this.shaderCache.delete( shaderStage.code );\n\n\t\t}\n\n\t\tthis.materialCache.delete( material );\n\n\t\treturn this;\n\n\t}\n\n\tgetVertexShaderID( material ) {\n\n\t\treturn this._getShaderStage( material.vertexShader ).id;\n\n\t}\n\n\tgetFragmentShaderID( material ) {\n\n\t\treturn this._getShaderStage( material.fragmentShader ).id;\n\n\t}\n\n\tdispose() {\n\n\t\tthis.shaderCache.clear();\n\t\tthis.materialCache.clear();\n\n\t}\n\n\t_getShaderCacheForMaterial( material ) {\n\n\t\tconst cache = this.materialCache;\n\n\t\tif ( cache.has( material ) === false ) {\n\n\t\t\tcache.set( material, new Set() );\n\n\t\t}\n\n\t\treturn cache.get( material );\n\n\t}\n\n\t_getShaderStage( code ) {\n\n\t\tconst cache = this.shaderCache;\n\n\t\tif ( cache.has( code ) === false ) {\n\n\t\t\tconst stage = new WebGLShaderStage( code );\n\t\t\tcache.set( code, stage );\n\n\t\t}\n\n\t\treturn cache.get( code );\n\n\t}\n\n}\n\nclass WebGLShaderStage {\n\n\tconstructor( code ) {\n\n\t\tthis.id = _id ++;\n\n\t\tthis.code = code;\n\t\tthis.usedTimes = 0;\n\n\t}\n\n}\n\nfunction WebGLPrograms( renderer, cubemaps, cubeuvmaps, extensions, capabilities, bindingStates, clipping ) {\n\n\tconst _programLayers = new Layers();\n\tconst _customShaders = new WebGLShaderCache();\n\tconst programs = [];\n\n\tconst isWebGL2 = capabilities.isWebGL2;\n\tconst logarithmicDepthBuffer = capabilities.logarithmicDepthBuffer;\n\tconst vertexTextures = capabilities.vertexTextures;\n\tlet precision = capabilities.precision;\n\n\tconst shaderIDs = {\n\t\tMeshDepthMaterial: 'depth',\n\t\tMeshDistanceMaterial: 'distanceRGBA',\n\t\tMeshNormalMaterial: 'normal',\n\t\tMeshBasicMaterial: 'basic',\n\t\tMeshLambertMaterial: 'lambert',\n\t\tMeshPhongMaterial: 'phong',\n\t\tMeshToonMaterial: 'toon',\n\t\tMeshStandardMaterial: 'physical',\n\t\tMeshPhysicalMaterial: 'physical',\n\t\tMeshMatcapMaterial: 'matcap',\n\t\tLineBasicMaterial: 'basic',\n\t\tLineDashedMaterial: 'dashed',\n\t\tPointsMaterial: 'points',\n\t\tShadowMaterial: 'shadow',\n\t\tSpriteMaterial: 'sprite'\n\t};\n\n\tfunction getParameters( material, lights, shadows, scene, object ) {\n\n\t\tconst fog = scene.fog;\n\t\tconst geometry = object.geometry;\n\t\tconst environment = material.isMeshStandardMaterial ? scene.environment : null;\n\n\t\tconst envMap = ( material.isMeshStandardMaterial ? cubeuvmaps : cubemaps ).get( material.envMap || environment );\n\t\tconst envMapCubeUVHeight = ( !! envMap ) && ( envMap.mapping === CubeUVReflectionMapping ) ? envMap.image.height : null;\n\n\t\tconst shaderID = shaderIDs[ material.type ];\n\n\t\t// heuristics to create shader parameters according to lights in the scene\n\t\t// (not to blow over maxLights budget)\n\n\t\tif ( material.precision !== null ) {\n\n\t\t\tprecision = capabilities.getMaxPrecision( material.precision );\n\n\t\t\tif ( precision !== material.precision ) {\n\n\t\t\t\tconsole.warn( 'THREE.WebGLProgram.getParameters:', material.precision, 'not supported, using', precision, 'instead.' );\n\n\t\t\t}\n\n\t\t}\n\n\t\t//\n\n\t\tconst morphAttribute = geometry.morphAttributes.position || geometry.morphAttributes.normal || geometry.morphAttributes.color;\n\t\tconst morphTargetsCount = ( morphAttribute !== undefined ) ? morphAttribute.length : 0;\n\n\t\tlet morphTextureStride = 0;\n\n\t\tif ( geometry.morphAttributes.position !== undefined ) morphTextureStride = 1;\n\t\tif ( geometry.morphAttributes.normal !== undefined ) morphTextureStride = 2;\n\t\tif ( geometry.morphAttributes.color !== undefined ) morphTextureStride = 3;\n\n\t\t//\n\n\t\tlet vertexShader, fragmentShader;\n\t\tlet customVertexShaderID, customFragmentShaderID;\n\n\t\tif ( shaderID ) {\n\n\t\t\tconst shader = ShaderLib[ shaderID ];\n\n\t\t\tvertexShader = shader.vertexShader;\n\t\t\tfragmentShader = shader.fragmentShader;\n\n\t\t} else {\n\n\t\t\tvertexShader = material.vertexShader;\n\t\t\tfragmentShader = material.fragmentShader;\n\n\t\t\t_customShaders.update( material );\n\n\t\t\tcustomVertexShaderID = _customShaders.getVertexShaderID( material );\n\t\t\tcustomFragmentShaderID = _customShaders.getFragmentShaderID( material );\n\n\t\t}\n\n\t\tconst currentRenderTarget = renderer.getRenderTarget();\n\n\t\tconst useAlphaTest = material.alphaTest > 0;\n\t\tconst useClearcoat = material.clearcoat > 0;\n\t\tconst useIridescence = material.iridescence > 0;\n\n\t\tconst parameters = {\n\n\t\t\tisWebGL2: isWebGL2,\n\n\t\t\tshaderID: shaderID,\n\t\t\tshaderName: material.type,\n\n\t\t\tvertexShader: vertexShader,\n\t\t\tfragmentShader: fragmentShader,\n\t\t\tdefines: material.defines,\n\n\t\t\tcustomVertexShaderID: customVertexShaderID,\n\t\t\tcustomFragmentShaderID: customFragmentShaderID,\n\n\t\t\tisRawShaderMaterial: material.isRawShaderMaterial === true,\n\t\t\tglslVersion: material.glslVersion,\n\n\t\t\tprecision: precision,\n\n\t\t\tinstancing: object.isInstancedMesh === true,\n\t\t\tinstancingColor: object.isInstancedMesh === true && object.instanceColor !== null,\n\n\t\t\tsupportsVertexTextures: vertexTextures,\n\t\t\toutputEncoding: ( currentRenderTarget === null ) ? renderer.outputEncoding : ( currentRenderTarget.isXRRenderTarget === true ? currentRenderTarget.texture.encoding : LinearEncoding ),\n\t\t\tmap: !! material.map,\n\t\t\tmatcap: !! material.matcap,\n\t\t\tenvMap: !! envMap,\n\t\t\tenvMapMode: envMap && envMap.mapping,\n\t\t\tenvMapCubeUVHeight: envMapCubeUVHeight,\n\t\t\tlightMap: !! material.lightMap,\n\t\t\taoMap: !! material.aoMap,\n\t\t\temissiveMap: !! material.emissiveMap,\n\t\t\tbumpMap: !! material.bumpMap,\n\t\t\tnormalMap: !! material.normalMap,\n\t\t\tobjectSpaceNormalMap: material.normalMapType === ObjectSpaceNormalMap,\n\t\t\ttangentSpaceNormalMap: material.normalMapType === TangentSpaceNormalMap,\n\n\t\t\tdecodeVideoTexture: !! material.map && ( material.map.isVideoTexture === true ) && ( material.map.encoding === sRGBEncoding ),\n\n\t\t\tclearcoat: useClearcoat,\n\t\t\tclearcoatMap: useClearcoat && !! material.clearcoatMap,\n\t\t\tclearcoatRoughnessMap: useClearcoat && !! material.clearcoatRoughnessMap,\n\t\t\tclearcoatNormalMap: useClearcoat && !! material.clearcoatNormalMap,\n\n\t\t\tiridescence: useIridescence,\n\t\t\tiridescenceMap: useIridescence && !! material.iridescenceMap,\n\t\t\tiridescenceThicknessMap: useIridescence && !! material.iridescenceThicknessMap,\n\n\t\t\tdisplacementMap: !! material.displacementMap,\n\t\t\troughnessMap: !! material.roughnessMap,\n\t\t\tmetalnessMap: !! material.metalnessMap,\n\t\t\tspecularMap: !! material.specularMap,\n\t\t\tspecularIntensityMap: !! material.specularIntensityMap,\n\t\t\tspecularColorMap: !! material.specularColorMap,\n\n\t\t\topaque: material.transparent === false && material.blending === NormalBlending,\n\n\t\t\talphaMap: !! material.alphaMap,\n\t\t\talphaTest: useAlphaTest,\n\n\t\t\tgradientMap: !! material.gradientMap,\n\n\t\t\tsheen: material.sheen > 0,\n\t\t\tsheenColorMap: !! material.sheenColorMap,\n\t\t\tsheenRoughnessMap: !! material.sheenRoughnessMap,\n\n\t\t\ttransmission: material.transmission > 0,\n\t\t\ttransmissionMap: !! material.transmissionMap,\n\t\t\tthicknessMap: !! material.thicknessMap,\n\n\t\t\tcombine: material.combine,\n\n\t\t\tvertexTangents: ( !! material.normalMap && !! geometry.attributes.tangent ),\n\t\t\tvertexColors: material.vertexColors,\n\t\t\tvertexAlphas: material.vertexColors === true && !! geometry.attributes.color && geometry.attributes.color.itemSize === 4,\n\t\t\tvertexUvs: !! material.map || !! material.bumpMap || !! material.normalMap || !! material.specularMap || !! material.alphaMap || !! material.emissiveMap || !! material.roughnessMap || !! material.metalnessMap || !! material.clearcoatMap || !! material.clearcoatRoughnessMap || !! material.clearcoatNormalMap || !! material.iridescenceMap || !! material.iridescenceThicknessMap || !! material.displacementMap || !! material.transmissionMap || !! material.thicknessMap || !! material.specularIntensityMap || !! material.specularColorMap || !! material.sheenColorMap || !! material.sheenRoughnessMap,\n\t\t\tuvsVertexOnly: ! ( !! material.map || !! material.bumpMap || !! material.normalMap || !! material.specularMap || !! material.alphaMap || !! material.emissiveMap || !! material.roughnessMap || !! material.metalnessMap || !! material.clearcoatNormalMap || !! material.iridescenceMap || !! material.iridescenceThicknessMap || material.transmission > 0 || !! material.transmissionMap || !! material.thicknessMap || !! material.specularIntensityMap || !! material.specularColorMap || material.sheen > 0 || !! material.sheenColorMap || !! material.sheenRoughnessMap ) && !! material.displacementMap,\n\n\t\t\tfog: !! fog,\n\t\t\tuseFog: material.fog === true,\n\t\t\tfogExp2: ( fog && fog.isFogExp2 ),\n\n\t\t\tflatShading: !! material.flatShading,\n\n\t\t\tsizeAttenuation: material.sizeAttenuation,\n\t\t\tlogarithmicDepthBuffer: logarithmicDepthBuffer,\n\n\t\t\tskinning: object.isSkinnedMesh === true,\n\n\t\t\tmorphTargets: geometry.morphAttributes.position !== undefined,\n\t\t\tmorphNormals: geometry.morphAttributes.normal !== undefined,\n\t\t\tmorphColors: geometry.morphAttributes.color !== undefined,\n\t\t\tmorphTargetsCount: morphTargetsCount,\n\t\t\tmorphTextureStride: morphTextureStride,\n\n\t\t\tnumDirLights: lights.directional.length,\n\t\t\tnumPointLights: lights.point.length,\n\t\t\tnumSpotLights: lights.spot.length,\n\t\t\tnumRectAreaLights: lights.rectArea.length,\n\t\t\tnumHemiLights: lights.hemi.length,\n\n\t\t\tnumDirLightShadows: lights.directionalShadowMap.length,\n\t\t\tnumPointLightShadows: lights.pointShadowMap.length,\n\t\t\tnumSpotLightShadows: lights.spotShadowMap.length,\n\n\t\t\tnumClippingPlanes: clipping.numPlanes,\n\t\t\tnumClipIntersection: clipping.numIntersection,\n\n\t\t\tdithering: material.dithering,\n\n\t\t\tshadowMapEnabled: renderer.shadowMap.enabled && shadows.length > 0,\n\t\t\tshadowMapType: renderer.shadowMap.type,\n\n\t\t\ttoneMapping: material.toneMapped ? renderer.toneMapping : NoToneMapping,\n\t\t\tphysicallyCorrectLights: renderer.physicallyCorrectLights,\n\n\t\t\tpremultipliedAlpha: material.premultipliedAlpha,\n\n\t\t\tdoubleSided: material.side === DoubleSide,\n\t\t\tflipSided: material.side === BackSide,\n\n\t\t\tuseDepthPacking: !! material.depthPacking,\n\t\t\tdepthPacking: material.depthPacking || 0,\n\n\t\t\tindex0AttributeName: material.index0AttributeName,\n\n\t\t\textensionDerivatives: material.extensions && material.extensions.derivatives,\n\t\t\textensionFragDepth: material.extensions && material.extensions.fragDepth,\n\t\t\textensionDrawBuffers: material.extensions && material.extensions.drawBuffers,\n\t\t\textensionShaderTextureLOD: material.extensions && material.extensions.shaderTextureLOD,\n\n\t\t\trendererExtensionFragDepth: isWebGL2 || extensions.has( 'EXT_frag_depth' ),\n\t\t\trendererExtensionDrawBuffers: isWebGL2 || extensions.has( 'WEBGL_draw_buffers' ),\n\t\t\trendererExtensionShaderTextureLod: isWebGL2 || extensions.has( 'EXT_shader_texture_lod' ),\n\n\t\t\tcustomProgramCacheKey: material.customProgramCacheKey()\n\n\t\t};\n\n\t\treturn parameters;\n\n\t}\n\n\tfunction getProgramCacheKey( parameters ) {\n\n\t\tconst array = [];\n\n\t\tif ( parameters.shaderID ) {\n\n\t\t\tarray.push( parameters.shaderID );\n\n\t\t} else {\n\n\t\t\tarray.push( parameters.customVertexShaderID );\n\t\t\tarray.push( parameters.customFragmentShaderID );\n\n\t\t}\n\n\t\tif ( parameters.defines !== undefined ) {\n\n\t\t\tfor ( const name in parameters.defines ) {\n\n\t\t\t\tarray.push( name );\n\t\t\t\tarray.push( parameters.defines[ name ] );\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( parameters.isRawShaderMaterial === false ) {\n\n\t\t\tgetProgramCacheKeyParameters( array, parameters );\n\t\t\tgetProgramCacheKeyBooleans( array, parameters );\n\t\t\tarray.push( renderer.outputEncoding );\n\n\t\t}\n\n\t\tarray.push( parameters.customProgramCacheKey );\n\n\t\treturn array.join();\n\n\t}\n\n\tfunction getProgramCacheKeyParameters( array, parameters ) {\n\n\t\tarray.push( parameters.precision );\n\t\tarray.push( parameters.outputEncoding );\n\t\tarray.push( parameters.envMapMode );\n\t\tarray.push( parameters.envMapCubeUVHeight );\n\t\tarray.push( parameters.combine );\n\t\tarray.push( parameters.vertexUvs );\n\t\tarray.push( parameters.fogExp2 );\n\t\tarray.push( parameters.sizeAttenuation );\n\t\tarray.push( parameters.morphTargetsCount );\n\t\tarray.push( parameters.morphAttributeCount );\n\t\tarray.push( parameters.numDirLights );\n\t\tarray.push( parameters.numPointLights );\n\t\tarray.push( parameters.numSpotLights );\n\t\tarray.push( parameters.numHemiLights );\n\t\tarray.push( parameters.numRectAreaLights );\n\t\tarray.push( parameters.numDirLightShadows );\n\t\tarray.push( parameters.numPointLightShadows );\n\t\tarray.push( parameters.numSpotLightShadows );\n\t\tarray.push( parameters.shadowMapType );\n\t\tarray.push( parameters.toneMapping );\n\t\tarray.push( parameters.numClippingPlanes );\n\t\tarray.push( parameters.numClipIntersection );\n\t\tarray.push( parameters.depthPacking );\n\n\t}\n\n\tfunction getProgramCacheKeyBooleans( array, parameters ) {\n\n\t\t_programLayers.disableAll();\n\n\t\tif ( parameters.isWebGL2 )\n\t\t\t_programLayers.enable( 0 );\n\t\tif ( parameters.supportsVertexTextures )\n\t\t\t_programLayers.enable( 1 );\n\t\tif ( parameters.instancing )\n\t\t\t_programLayers.enable( 2 );\n\t\tif ( parameters.instancingColor )\n\t\t\t_programLayers.enable( 3 );\n\t\tif ( parameters.map )\n\t\t\t_programLayers.enable( 4 );\n\t\tif ( parameters.matcap )\n\t\t\t_programLayers.enable( 5 );\n\t\tif ( parameters.envMap )\n\t\t\t_programLayers.enable( 6 );\n\t\tif ( parameters.lightMap )\n\t\t\t_programLayers.enable( 7 );\n\t\tif ( parameters.aoMap )\n\t\t\t_programLayers.enable( 8 );\n\t\tif ( parameters.emissiveMap )\n\t\t\t_programLayers.enable( 9 );\n\t\tif ( parameters.bumpMap )\n\t\t\t_programLayers.enable( 10 );\n\t\tif ( parameters.normalMap )\n\t\t\t_programLayers.enable( 11 );\n\t\tif ( parameters.objectSpaceNormalMap )\n\t\t\t_programLayers.enable( 12 );\n\t\tif ( parameters.tangentSpaceNormalMap )\n\t\t\t_programLayers.enable( 13 );\n\t\tif ( parameters.clearcoat )\n\t\t\t_programLayers.enable( 14 );\n\t\tif ( parameters.clearcoatMap )\n\t\t\t_programLayers.enable( 15 );\n\t\tif ( parameters.clearcoatRoughnessMap )\n\t\t\t_programLayers.enable( 16 );\n\t\tif ( parameters.clearcoatNormalMap )\n\t\t\t_programLayers.enable( 17 );\n\t\tif ( parameters.iridescence )\n\t\t\t_programLayers.enable( 18 );\n\t\tif ( parameters.iridescenceMap )\n\t\t\t_programLayers.enable( 19 );\n\t\tif ( parameters.iridescenceThicknessMap )\n\t\t\t_programLayers.enable( 20 );\n\t\tif ( parameters.displacementMap )\n\t\t\t_programLayers.enable( 21 );\n\t\tif ( parameters.specularMap )\n\t\t\t_programLayers.enable( 22 );\n\t\tif ( parameters.roughnessMap )\n\t\t\t_programLayers.enable( 23 );\n\t\tif ( parameters.metalnessMap )\n\t\t\t_programLayers.enable( 24 );\n\t\tif ( parameters.gradientMap )\n\t\t\t_programLayers.enable( 25 );\n\t\tif ( parameters.alphaMap )\n\t\t\t_programLayers.enable( 26 );\n\t\tif ( parameters.alphaTest )\n\t\t\t_programLayers.enable( 27 );\n\t\tif ( parameters.vertexColors )\n\t\t\t_programLayers.enable( 28 );\n\t\tif ( parameters.vertexAlphas )\n\t\t\t_programLayers.enable( 29 );\n\t\tif ( parameters.vertexUvs )\n\t\t\t_programLayers.enable( 30 );\n\t\tif ( parameters.vertexTangents )\n\t\t\t_programLayers.enable( 31 );\n\t\tif ( parameters.uvsVertexOnly )\n\t\t\t_programLayers.enable( 32 );\n\t\tif ( parameters.fog )\n\t\t\t_programLayers.enable( 33 );\n\n\t\tarray.push( _programLayers.mask );\n\t\t_programLayers.disableAll();\n\n\t\tif ( parameters.useFog )\n\t\t\t_programLayers.enable( 0 );\n\t\tif ( parameters.flatShading )\n\t\t\t_programLayers.enable( 1 );\n\t\tif ( parameters.logarithmicDepthBuffer )\n\t\t\t_programLayers.enable( 2 );\n\t\tif ( parameters.skinning )\n\t\t\t_programLayers.enable( 3 );\n\t\tif ( parameters.morphTargets )\n\t\t\t_programLayers.enable( 4 );\n\t\tif ( parameters.morphNormals )\n\t\t\t_programLayers.enable( 5 );\n\t\tif ( parameters.morphColors )\n\t\t\t_programLayers.enable( 6 );\n\t\tif ( parameters.premultipliedAlpha )\n\t\t\t_programLayers.enable( 7 );\n\t\tif ( parameters.shadowMapEnabled )\n\t\t\t_programLayers.enable( 8 );\n\t\tif ( parameters.physicallyCorrectLights )\n\t\t\t_programLayers.enable( 9 );\n\t\tif ( parameters.doubleSided )\n\t\t\t_programLayers.enable( 10 );\n\t\tif ( parameters.flipSided )\n\t\t\t_programLayers.enable( 11 );\n\t\tif ( parameters.useDepthPacking )\n\t\t\t_programLayers.enable( 12 );\n\t\tif ( parameters.dithering )\n\t\t\t_programLayers.enable( 13 );\n\t\tif ( parameters.specularIntensityMap )\n\t\t\t_programLayers.enable( 14 );\n\t\tif ( parameters.specularColorMap )\n\t\t\t_programLayers.enable( 15 );\n\t\tif ( parameters.transmission )\n\t\t\t_programLayers.enable( 16 );\n\t\tif ( parameters.transmissionMap )\n\t\t\t_programLayers.enable( 17 );\n\t\tif ( parameters.thicknessMap )\n\t\t\t_programLayers.enable( 18 );\n\t\tif ( parameters.sheen )\n\t\t\t_programLayers.enable( 19 );\n\t\tif ( parameters.sheenColorMap )\n\t\t\t_programLayers.enable( 20 );\n\t\tif ( parameters.sheenRoughnessMap )\n\t\t\t_programLayers.enable( 21 );\n\t\tif ( parameters.decodeVideoTexture )\n\t\t\t_programLayers.enable( 22 );\n\t\tif ( parameters.opaque )\n\t\t\t_programLayers.enable( 23 );\n\n\t\tarray.push( _programLayers.mask );\n\n\t}\n\n\tfunction getUniforms( material ) {\n\n\t\tconst shaderID = shaderIDs[ material.type ];\n\t\tlet uniforms;\n\n\t\tif ( shaderID ) {\n\n\t\t\tconst shader = ShaderLib[ shaderID ];\n\t\t\tuniforms = UniformsUtils.clone( shader.uniforms );\n\n\t\t} else {\n\n\t\t\tuniforms = material.uniforms;\n\n\t\t}\n\n\t\treturn uniforms;\n\n\t}\n\n\tfunction acquireProgram( parameters, cacheKey ) {\n\n\t\tlet program;\n\n\t\t// Check if code has been already compiled\n\t\tfor ( let p = 0, pl = programs.length; p < pl; p ++ ) {\n\n\t\t\tconst preexistingProgram = programs[ p ];\n\n\t\t\tif ( preexistingProgram.cacheKey === cacheKey ) {\n\n\t\t\t\tprogram = preexistingProgram;\n\t\t\t\t++ program.usedTimes;\n\n\t\t\t\tbreak;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( program === undefined ) {\n\n\t\t\tprogram = new WebGLProgram( renderer, cacheKey, parameters, bindingStates );\n\t\t\tprograms.push( program );\n\n\t\t}\n\n\t\treturn program;\n\n\t}\n\n\tfunction releaseProgram( program ) {\n\n\t\tif ( -- program.usedTimes === 0 ) {\n\n\t\t\t// Remove from unordered set\n\t\t\tconst i = programs.indexOf( program );\n\t\t\tprograms[ i ] = programs[ programs.length - 1 ];\n\t\t\tprograms.pop();\n\n\t\t\t// Free WebGL resources\n\t\t\tprogram.destroy();\n\n\t\t}\n\n\t}\n\n\tfunction releaseShaderCache( material ) {\n\n\t\t_customShaders.remove( material );\n\n\t}\n\n\tfunction dispose() {\n\n\t\t_customShaders.dispose();\n\n\t}\n\n\treturn {\n\t\tgetParameters: getParameters,\n\t\tgetProgramCacheKey: getProgramCacheKey,\n\t\tgetUniforms: getUniforms,\n\t\tacquireProgram: acquireProgram,\n\t\treleaseProgram: releaseProgram,\n\t\treleaseShaderCache: releaseShaderCache,\n\t\t// Exposed for resource monitoring & error feedback via renderer.info:\n\t\tprograms: programs,\n\t\tdispose: dispose\n\t};\n\n}\n\nfunction WebGLProperties() {\n\n\tlet properties = new WeakMap();\n\n\tfunction get( object ) {\n\n\t\tlet map = properties.get( object );\n\n\t\tif ( map === undefined ) {\n\n\t\t\tmap = {};\n\t\t\tproperties.set( object, map );\n\n\t\t}\n\n\t\treturn map;\n\n\t}\n\n\tfunction remove( object ) {\n\n\t\tproperties.delete( object );\n\n\t}\n\n\tfunction update( object, key, value ) {\n\n\t\tproperties.get( object )[ key ] = value;\n\n\t}\n\n\tfunction dispose() {\n\n\t\tproperties = new WeakMap();\n\n\t}\n\n\treturn {\n\t\tget: get,\n\t\tremove: remove,\n\t\tupdate: update,\n\t\tdispose: dispose\n\t};\n\n}\n\nfunction painterSortStable( a, b ) {\n\n\tif ( a.groupOrder !== b.groupOrder ) {\n\n\t\treturn a.groupOrder - b.groupOrder;\n\n\t} else if ( a.renderOrder !== b.renderOrder ) {\n\n\t\treturn a.renderOrder - b.renderOrder;\n\n\t} else if ( a.material.id !== b.material.id ) {\n\n\t\treturn a.material.id - b.material.id;\n\n\t} else if ( a.z !== b.z ) {\n\n\t\treturn a.z - b.z;\n\n\t} else {\n\n\t\treturn a.id - b.id;\n\n\t}\n\n}\n\nfunction reversePainterSortStable( a, b ) {\n\n\tif ( a.groupOrder !== b.groupOrder ) {\n\n\t\treturn a.groupOrder - b.groupOrder;\n\n\t} else if ( a.renderOrder !== b.renderOrder ) {\n\n\t\treturn a.renderOrder - b.renderOrder;\n\n\t} else if ( a.z !== b.z ) {\n\n\t\treturn b.z - a.z;\n\n\t} else {\n\n\t\treturn a.id - b.id;\n\n\t}\n\n}\n\n\nfunction WebGLRenderList() {\n\n\tconst renderItems = [];\n\tlet renderItemsIndex = 0;\n\n\tconst opaque = [];\n\tconst transmissive = [];\n\tconst transparent = [];\n\n\tfunction init() {\n\n\t\trenderItemsIndex = 0;\n\n\t\topaque.length = 0;\n\t\ttransmissive.length = 0;\n\t\ttransparent.length = 0;\n\n\t}\n\n\tfunction getNextRenderItem( object, geometry, material, groupOrder, z, group ) {\n\n\t\tlet renderItem = renderItems[ renderItemsIndex ];\n\n\t\tif ( renderItem === undefined ) {\n\n\t\t\trenderItem = {\n\t\t\t\tid: object.id,\n\t\t\t\tobject: object,\n\t\t\t\tgeometry: geometry,\n\t\t\t\tmaterial: material,\n\t\t\t\tgroupOrder: groupOrder,\n\t\t\t\trenderOrder: object.renderOrder,\n\t\t\t\tz: z,\n\t\t\t\tgroup: group\n\t\t\t};\n\n\t\t\trenderItems[ renderItemsIndex ] = renderItem;\n\n\t\t} else {\n\n\t\t\trenderItem.id = object.id;\n\t\t\trenderItem.object = object;\n\t\t\trenderItem.geometry = geometry;\n\t\t\trenderItem.material = material;\n\t\t\trenderItem.groupOrder = groupOrder;\n\t\t\trenderItem.renderOrder = object.renderOrder;\n\t\t\trenderItem.z = z;\n\t\t\trenderItem.group = group;\n\n\t\t}\n\n\t\trenderItemsIndex ++;\n\n\t\treturn renderItem;\n\n\t}\n\n\tfunction push( object, geometry, material, groupOrder, z, group ) {\n\n\t\tconst renderItem = getNextRenderItem( object, geometry, material, groupOrder, z, group );\n\n\t\tif ( material.transmission > 0.0 ) {\n\n\t\t\ttransmissive.push( renderItem );\n\n\t\t} else if ( material.transparent === true ) {\n\n\t\t\ttransparent.push( renderItem );\n\n\t\t} else {\n\n\t\t\topaque.push( renderItem );\n\n\t\t}\n\n\t}\n\n\tfunction unshift( object, geometry, material, groupOrder, z, group ) {\n\n\t\tconst renderItem = getNextRenderItem( object, geometry, material, groupOrder, z, group );\n\n\t\tif ( material.transmission > 0.0 ) {\n\n\t\t\ttransmissive.unshift( renderItem );\n\n\t\t} else if ( material.transparent === true ) {\n\n\t\t\ttransparent.unshift( renderItem );\n\n\t\t} else {\n\n\t\t\topaque.unshift( renderItem );\n\n\t\t}\n\n\t}\n\n\tfunction sort( customOpaqueSort, customTransparentSort ) {\n\n\t\tif ( opaque.length > 1 ) opaque.sort( customOpaqueSort || painterSortStable );\n\t\tif ( transmissive.length > 1 ) transmissive.sort( customTransparentSort || reversePainterSortStable );\n\t\tif ( transparent.length > 1 ) transparent.sort( customTransparentSort || reversePainterSortStable );\n\n\t}\n\n\tfunction finish() {\n\n\t\t// Clear references from inactive renderItems in the list\n\n\t\tfor ( let i = renderItemsIndex, il = renderItems.length; i < il; i ++ ) {\n\n\t\t\tconst renderItem = renderItems[ i ];\n\n\t\t\tif ( renderItem.id === null ) break;\n\n\t\t\trenderItem.id = null;\n\t\t\trenderItem.object = null;\n\t\t\trenderItem.geometry = null;\n\t\t\trenderItem.material = null;\n\t\t\trenderItem.group = null;\n\n\t\t}\n\n\t}\n\n\treturn {\n\n\t\topaque: opaque,\n\t\ttransmissive: transmissive,\n\t\ttransparent: transparent,\n\n\t\tinit: init,\n\t\tpush: push,\n\t\tunshift: unshift,\n\t\tfinish: finish,\n\n\t\tsort: sort\n\t};\n\n}\n\nfunction WebGLRenderLists() {\n\n\tlet lists = new WeakMap();\n\n\tfunction get( scene, renderCallDepth ) {\n\n\t\tlet list;\n\n\t\tif ( lists.has( scene ) === false ) {\n\n\t\t\tlist = new WebGLRenderList();\n\t\t\tlists.set( scene, [ list ] );\n\n\t\t} else {\n\n\t\t\tif ( renderCallDepth >= lists.get( scene ).length ) {\n\n\t\t\t\tlist = new WebGLRenderList();\n\t\t\t\tlists.get( scene ).push( list );\n\n\t\t\t} else {\n\n\t\t\t\tlist = lists.get( scene )[ renderCallDepth ];\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn list;\n\n\t}\n\n\tfunction dispose() {\n\n\t\tlists = new WeakMap();\n\n\t}\n\n\treturn {\n\t\tget: get,\n\t\tdispose: dispose\n\t};\n\n}\n\nfunction UniformsCache() {\n\n\tconst lights = {};\n\n\treturn {\n\n\t\tget: function ( light ) {\n\n\t\t\tif ( lights[ light.id ] !== undefined ) {\n\n\t\t\t\treturn lights[ light.id ];\n\n\t\t\t}\n\n\t\t\tlet uniforms;\n\n\t\t\tswitch ( light.type ) {\n\n\t\t\t\tcase 'DirectionalLight':\n\t\t\t\t\tuniforms = {\n\t\t\t\t\t\tdirection: new Vector3(),\n\t\t\t\t\t\tcolor: new Color()\n\t\t\t\t\t};\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'SpotLight':\n\t\t\t\t\tuniforms = {\n\t\t\t\t\t\tposition: new Vector3(),\n\t\t\t\t\t\tdirection: new Vector3(),\n\t\t\t\t\t\tcolor: new Color(),\n\t\t\t\t\t\tdistance: 0,\n\t\t\t\t\t\tconeCos: 0,\n\t\t\t\t\t\tpenumbraCos: 0,\n\t\t\t\t\t\tdecay: 0\n\t\t\t\t\t};\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'PointLight':\n\t\t\t\t\tuniforms = {\n\t\t\t\t\t\tposition: new Vector3(),\n\t\t\t\t\t\tcolor: new Color(),\n\t\t\t\t\t\tdistance: 0,\n\t\t\t\t\t\tdecay: 0\n\t\t\t\t\t};\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'HemisphereLight':\n\t\t\t\t\tuniforms = {\n\t\t\t\t\t\tdirection: new Vector3(),\n\t\t\t\t\t\tskyColor: new Color(),\n\t\t\t\t\t\tgroundColor: new Color()\n\t\t\t\t\t};\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'RectAreaLight':\n\t\t\t\t\tuniforms = {\n\t\t\t\t\t\tcolor: new Color(),\n\t\t\t\t\t\tposition: new Vector3(),\n\t\t\t\t\t\thalfWidth: new Vector3(),\n\t\t\t\t\t\thalfHeight: new Vector3()\n\t\t\t\t\t};\n\t\t\t\t\tbreak;\n\n\t\t\t}\n\n\t\t\tlights[ light.id ] = uniforms;\n\n\t\t\treturn uniforms;\n\n\t\t}\n\n\t};\n\n}\n\nfunction ShadowUniformsCache() {\n\n\tconst lights = {};\n\n\treturn {\n\n\t\tget: function ( light ) {\n\n\t\t\tif ( lights[ light.id ] !== undefined ) {\n\n\t\t\t\treturn lights[ light.id ];\n\n\t\t\t}\n\n\t\t\tlet uniforms;\n\n\t\t\tswitch ( light.type ) {\n\n\t\t\t\tcase 'DirectionalLight':\n\t\t\t\t\tuniforms = {\n\t\t\t\t\t\tshadowBias: 0,\n\t\t\t\t\t\tshadowNormalBias: 0,\n\t\t\t\t\t\tshadowRadius: 1,\n\t\t\t\t\t\tshadowMapSize: new Vector2()\n\t\t\t\t\t};\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'SpotLight':\n\t\t\t\t\tuniforms = {\n\t\t\t\t\t\tshadowBias: 0,\n\t\t\t\t\t\tshadowNormalBias: 0,\n\t\t\t\t\t\tshadowRadius: 1,\n\t\t\t\t\t\tshadowMapSize: new Vector2()\n\t\t\t\t\t};\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'PointLight':\n\t\t\t\t\tuniforms = {\n\t\t\t\t\t\tshadowBias: 0,\n\t\t\t\t\t\tshadowNormalBias: 0,\n\t\t\t\t\t\tshadowRadius: 1,\n\t\t\t\t\t\tshadowMapSize: new Vector2(),\n\t\t\t\t\t\tshadowCameraNear: 1,\n\t\t\t\t\t\tshadowCameraFar: 1000\n\t\t\t\t\t};\n\t\t\t\t\tbreak;\n\n\t\t\t\t// TODO (abelnation): set RectAreaLight shadow uniforms\n\n\t\t\t}\n\n\t\t\tlights[ light.id ] = uniforms;\n\n\t\t\treturn uniforms;\n\n\t\t}\n\n\t};\n\n}\n\n\n\nlet nextVersion = 0;\n\nfunction shadowCastingLightsFirst( lightA, lightB ) {\n\n\treturn ( lightB.castShadow ? 1 : 0 ) - ( lightA.castShadow ? 1 : 0 );\n\n}\n\nfunction WebGLLights( extensions, capabilities ) {\n\n\tconst cache = new UniformsCache();\n\n\tconst shadowCache = ShadowUniformsCache();\n\n\tconst state = {\n\n\t\tversion: 0,\n\n\t\thash: {\n\t\t\tdirectionalLength: - 1,\n\t\t\tpointLength: - 1,\n\t\t\tspotLength: - 1,\n\t\t\trectAreaLength: - 1,\n\t\t\themiLength: - 1,\n\n\t\t\tnumDirectionalShadows: - 1,\n\t\t\tnumPointShadows: - 1,\n\t\t\tnumSpotShadows: - 1\n\t\t},\n\n\t\tambient: [ 0, 0, 0 ],\n\t\tprobe: [],\n\t\tdirectional: [],\n\t\tdirectionalShadow: [],\n\t\tdirectionalShadowMap: [],\n\t\tdirectionalShadowMatrix: [],\n\t\tspot: [],\n\t\tspotShadow: [],\n\t\tspotShadowMap: [],\n\t\tspotShadowMatrix: [],\n\t\trectArea: [],\n\t\trectAreaLTC1: null,\n\t\trectAreaLTC2: null,\n\t\tpoint: [],\n\t\tpointShadow: [],\n\t\tpointShadowMap: [],\n\t\tpointShadowMatrix: [],\n\t\themi: []\n\n\t};\n\n\tfor ( let i = 0; i < 9; i ++ ) state.probe.push( new Vector3() );\n\n\tconst vector3 = new Vector3();\n\tconst matrix4 = new Matrix4();\n\tconst matrix42 = new Matrix4();\n\n\tfunction setup( lights, physicallyCorrectLights ) {\n\n\t\tlet r = 0, g = 0, b = 0;\n\n\t\tfor ( let i = 0; i < 9; i ++ ) state.probe[ i ].set( 0, 0, 0 );\n\n\t\tlet directionalLength = 0;\n\t\tlet pointLength = 0;\n\t\tlet spotLength = 0;\n\t\tlet rectAreaLength = 0;\n\t\tlet hemiLength = 0;\n\n\t\tlet numDirectionalShadows = 0;\n\t\tlet numPointShadows = 0;\n\t\tlet numSpotShadows = 0;\n\n\t\tlights.sort( shadowCastingLightsFirst );\n\n\t\t// artist-friendly light intensity scaling factor\n\t\tconst scaleFactor = ( physicallyCorrectLights !== true ) ? Math.PI : 1;\n\n\t\tfor ( let i = 0, l = lights.length; i < l; i ++ ) {\n\n\t\t\tconst light = lights[ i ];\n\n\t\t\tconst color = light.color;\n\t\t\tconst intensity = light.intensity;\n\t\t\tconst distance = light.distance;\n\n\t\t\tconst shadowMap = ( light.shadow && light.shadow.map ) ? light.shadow.map.texture : null;\n\n\t\t\tif ( light.isAmbientLight ) {\n\n\t\t\t\tr += color.r * intensity * scaleFactor;\n\t\t\t\tg += color.g * intensity * scaleFactor;\n\t\t\t\tb += color.b * intensity * scaleFactor;\n\n\t\t\t} else if ( light.isLightProbe ) {\n\n\t\t\t\tfor ( let j = 0; j < 9; j ++ ) {\n\n\t\t\t\t\tstate.probe[ j ].addScaledVector( light.sh.coefficients[ j ], intensity );\n\n\t\t\t\t}\n\n\t\t\t} else if ( light.isDirectionalLight ) {\n\n\t\t\t\tconst uniforms = cache.get( light );\n\n\t\t\t\tuniforms.color.copy( light.color ).multiplyScalar( light.intensity * scaleFactor );\n\n\t\t\t\tif ( light.castShadow ) {\n\n\t\t\t\t\tconst shadow = light.shadow;\n\n\t\t\t\t\tconst shadowUniforms = shadowCache.get( light );\n\n\t\t\t\t\tshadowUniforms.shadowBias = shadow.bias;\n\t\t\t\t\tshadowUniforms.shadowNormalBias = shadow.normalBias;\n\t\t\t\t\tshadowUniforms.shadowRadius = shadow.radius;\n\t\t\t\t\tshadowUniforms.shadowMapSize = shadow.mapSize;\n\n\t\t\t\t\tstate.directionalShadow[ directionalLength ] = shadowUniforms;\n\t\t\t\t\tstate.directionalShadowMap[ directionalLength ] = shadowMap;\n\t\t\t\t\tstate.directionalShadowMatrix[ directionalLength ] = light.shadow.matrix;\n\n\t\t\t\t\tnumDirectionalShadows ++;\n\n\t\t\t\t}\n\n\t\t\t\tstate.directional[ directionalLength ] = uniforms;\n\n\t\t\t\tdirectionalLength ++;\n\n\t\t\t} else if ( light.isSpotLight ) {\n\n\t\t\t\tconst uniforms = cache.get( light );\n\n\t\t\t\tuniforms.position.setFromMatrixPosition( light.matrixWorld );\n\n\t\t\t\tuniforms.color.copy( color ).multiplyScalar( intensity * scaleFactor );\n\t\t\t\tuniforms.distance = distance;\n\n\t\t\t\tuniforms.coneCos = Math.cos( light.angle );\n\t\t\t\tuniforms.penumbraCos = Math.cos( light.angle * ( 1 - light.penumbra ) );\n\t\t\t\tuniforms.decay = light.decay;\n\n\t\t\t\tif ( light.castShadow ) {\n\n\t\t\t\t\tconst shadow = light.shadow;\n\n\t\t\t\t\tconst shadowUniforms = shadowCache.get( light );\n\n\t\t\t\t\tshadowUniforms.shadowBias = shadow.bias;\n\t\t\t\t\tshadowUniforms.shadowNormalBias = shadow.normalBias;\n\t\t\t\t\tshadowUniforms.shadowRadius = shadow.radius;\n\t\t\t\t\tshadowUniforms.shadowMapSize = shadow.mapSize;\n\n\t\t\t\t\tstate.spotShadow[ spotLength ] = shadowUniforms;\n\t\t\t\t\tstate.spotShadowMap[ spotLength ] = shadowMap;\n\t\t\t\t\tstate.spotShadowMatrix[ spotLength ] = light.shadow.matrix;\n\n\t\t\t\t\tnumSpotShadows ++;\n\n\t\t\t\t}\n\n\t\t\t\tstate.spot[ spotLength ] = uniforms;\n\n\t\t\t\tspotLength ++;\n\n\t\t\t} else if ( light.isRectAreaLight ) {\n\n\t\t\t\tconst uniforms = cache.get( light );\n\n\t\t\t\t// (a) intensity is the total visible light emitted\n\t\t\t\t//uniforms.color.copy( color ).multiplyScalar( intensity / ( light.width * light.height * Math.PI ) );\n\n\t\t\t\t// (b) intensity is the brightness of the light\n\t\t\t\tuniforms.color.copy( color ).multiplyScalar( intensity );\n\n\t\t\t\tuniforms.halfWidth.set( light.width * 0.5, 0.0, 0.0 );\n\t\t\t\tuniforms.halfHeight.set( 0.0, light.height * 0.5, 0.0 );\n\n\t\t\t\tstate.rectArea[ rectAreaLength ] = uniforms;\n\n\t\t\t\trectAreaLength ++;\n\n\t\t\t} else if ( light.isPointLight ) {\n\n\t\t\t\tconst uniforms = cache.get( light );\n\n\t\t\t\tuniforms.color.copy( light.color ).multiplyScalar( light.intensity * scaleFactor );\n\t\t\t\tuniforms.distance = light.distance;\n\t\t\t\tuniforms.decay = light.decay;\n\n\t\t\t\tif ( light.castShadow ) {\n\n\t\t\t\t\tconst shadow = light.shadow;\n\n\t\t\t\t\tconst shadowUniforms = shadowCache.get( light );\n\n\t\t\t\t\tshadowUniforms.shadowBias = shadow.bias;\n\t\t\t\t\tshadowUniforms.shadowNormalBias = shadow.normalBias;\n\t\t\t\t\tshadowUniforms.shadowRadius = shadow.radius;\n\t\t\t\t\tshadowUniforms.shadowMapSize = shadow.mapSize;\n\t\t\t\t\tshadowUniforms.shadowCameraNear = shadow.camera.near;\n\t\t\t\t\tshadowUniforms.shadowCameraFar = shadow.camera.far;\n\n\t\t\t\t\tstate.pointShadow[ pointLength ] = shadowUniforms;\n\t\t\t\t\tstate.pointShadowMap[ pointLength ] = shadowMap;\n\t\t\t\t\tstate.pointShadowMatrix[ pointLength ] = light.shadow.matrix;\n\n\t\t\t\t\tnumPointShadows ++;\n\n\t\t\t\t}\n\n\t\t\t\tstate.point[ pointLength ] = uniforms;\n\n\t\t\t\tpointLength ++;\n\n\t\t\t} else if ( light.isHemisphereLight ) {\n\n\t\t\t\tconst uniforms = cache.get( light );\n\n\t\t\t\tuniforms.skyColor.copy( light.color ).multiplyScalar( intensity * scaleFactor );\n\t\t\t\tuniforms.groundColor.copy( light.groundColor ).multiplyScalar( intensity * scaleFactor );\n\n\t\t\t\tstate.hemi[ hemiLength ] = uniforms;\n\n\t\t\t\themiLength ++;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( rectAreaLength > 0 ) {\n\n\t\t\tif ( capabilities.isWebGL2 ) {\n\n\t\t\t\t// WebGL 2\n\n\t\t\t\tstate.rectAreaLTC1 = UniformsLib.LTC_FLOAT_1;\n\t\t\t\tstate.rectAreaLTC2 = UniformsLib.LTC_FLOAT_2;\n\n\t\t\t} else {\n\n\t\t\t\t// WebGL 1\n\n\t\t\t\tif ( extensions.has( 'OES_texture_float_linear' ) === true ) {\n\n\t\t\t\t\tstate.rectAreaLTC1 = UniformsLib.LTC_FLOAT_1;\n\t\t\t\t\tstate.rectAreaLTC2 = UniformsLib.LTC_FLOAT_2;\n\n\t\t\t\t} else if ( extensions.has( 'OES_texture_half_float_linear' ) === true ) {\n\n\t\t\t\t\tstate.rectAreaLTC1 = UniformsLib.LTC_HALF_1;\n\t\t\t\t\tstate.rectAreaLTC2 = UniformsLib.LTC_HALF_2;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tconsole.error( 'THREE.WebGLRenderer: Unable to use RectAreaLight. Missing WebGL extensions.' );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tstate.ambient[ 0 ] = r;\n\t\tstate.ambient[ 1 ] = g;\n\t\tstate.ambient[ 2 ] = b;\n\n\t\tconst hash = state.hash;\n\n\t\tif ( hash.directionalLength !== directionalLength ||\n\t\t\thash.pointLength !== pointLength ||\n\t\t\thash.spotLength !== spotLength ||\n\t\t\thash.rectAreaLength !== rectAreaLength ||\n\t\t\thash.hemiLength !== hemiLength ||\n\t\t\thash.numDirectionalShadows !== numDirectionalShadows ||\n\t\t\thash.numPointShadows !== numPointShadows ||\n\t\t\thash.numSpotShadows !== numSpotShadows ) {\n\n\t\t\tstate.directional.length = directionalLength;\n\t\t\tstate.spot.length = spotLength;\n\t\t\tstate.rectArea.length = rectAreaLength;\n\t\t\tstate.point.length = pointLength;\n\t\t\tstate.hemi.length = hemiLength;\n\n\t\t\tstate.directionalShadow.length = numDirectionalShadows;\n\t\t\tstate.directionalShadowMap.length = numDirectionalShadows;\n\t\t\tstate.pointShadow.length = numPointShadows;\n\t\t\tstate.pointShadowMap.length = numPointShadows;\n\t\t\tstate.spotShadow.length = numSpotShadows;\n\t\t\tstate.spotShadowMap.length = numSpotShadows;\n\t\t\tstate.directionalShadowMatrix.length = numDirectionalShadows;\n\t\t\tstate.pointShadowMatrix.length = numPointShadows;\n\t\t\tstate.spotShadowMatrix.length = numSpotShadows;\n\n\t\t\thash.directionalLength = directionalLength;\n\t\t\thash.pointLength = pointLength;\n\t\t\thash.spotLength = spotLength;\n\t\t\thash.rectAreaLength = rectAreaLength;\n\t\t\thash.hemiLength = hemiLength;\n\n\t\t\thash.numDirectionalShadows = numDirectionalShadows;\n\t\t\thash.numPointShadows = numPointShadows;\n\t\t\thash.numSpotShadows = numSpotShadows;\n\n\t\t\tstate.version = nextVersion ++;\n\n\t\t}\n\n\t}\n\n\tfunction setupView( lights, camera ) {\n\n\t\tlet directionalLength = 0;\n\t\tlet pointLength = 0;\n\t\tlet spotLength = 0;\n\t\tlet rectAreaLength = 0;\n\t\tlet hemiLength = 0;\n\n\t\tconst viewMatrix = camera.matrixWorldInverse;\n\n\t\tfor ( let i = 0, l = lights.length; i < l; i ++ ) {\n\n\t\t\tconst light = lights[ i ];\n\n\t\t\tif ( light.isDirectionalLight ) {\n\n\t\t\t\tconst uniforms = state.directional[ directionalLength ];\n\n\t\t\t\tuniforms.direction.setFromMatrixPosition( light.matrixWorld );\n\t\t\t\tvector3.setFromMatrixPosition( light.target.matrixWorld );\n\t\t\t\tuniforms.direction.sub( vector3 );\n\t\t\t\tuniforms.direction.transformDirection( viewMatrix );\n\n\t\t\t\tdirectionalLength ++;\n\n\t\t\t} else if ( light.isSpotLight ) {\n\n\t\t\t\tconst uniforms = state.spot[ spotLength ];\n\n\t\t\t\tuniforms.position.setFromMatrixPosition( light.matrixWorld );\n\t\t\t\tuniforms.position.applyMatrix4( viewMatrix );\n\n\t\t\t\tuniforms.direction.setFromMatrixPosition( light.matrixWorld );\n\t\t\t\tvector3.setFromMatrixPosition( light.target.matrixWorld );\n\t\t\t\tuniforms.direction.sub( vector3 );\n\t\t\t\tuniforms.direction.transformDirection( viewMatrix );\n\n\t\t\t\tspotLength ++;\n\n\t\t\t} else if ( light.isRectAreaLight ) {\n\n\t\t\t\tconst uniforms = state.rectArea[ rectAreaLength ];\n\n\t\t\t\tuniforms.position.setFromMatrixPosition( light.matrixWorld );\n\t\t\t\tuniforms.position.applyMatrix4( viewMatrix );\n\n\t\t\t\t// extract local rotation of light to derive width/height half vectors\n\t\t\t\tmatrix42.identity();\n\t\t\t\tmatrix4.copy( light.matrixWorld );\n\t\t\t\tmatrix4.premultiply( viewMatrix );\n\t\t\t\tmatrix42.extractRotation( matrix4 );\n\n\t\t\t\tuniforms.halfWidth.set( light.width * 0.5, 0.0, 0.0 );\n\t\t\t\tuniforms.halfHeight.set( 0.0, light.height * 0.5, 0.0 );\n\n\t\t\t\tuniforms.halfWidth.applyMatrix4( matrix42 );\n\t\t\t\tuniforms.halfHeight.applyMatrix4( matrix42 );\n\n\t\t\t\trectAreaLength ++;\n\n\t\t\t} else if ( light.isPointLight ) {\n\n\t\t\t\tconst uniforms = state.point[ pointLength ];\n\n\t\t\t\tuniforms.position.setFromMatrixPosition( light.matrixWorld );\n\t\t\t\tuniforms.position.applyMatrix4( viewMatrix );\n\n\t\t\t\tpointLength ++;\n\n\t\t\t} else if ( light.isHemisphereLight ) {\n\n\t\t\t\tconst uniforms = state.hemi[ hemiLength ];\n\n\t\t\t\tuniforms.direction.setFromMatrixPosition( light.matrixWorld );\n\t\t\t\tuniforms.direction.transformDirection( viewMatrix );\n\n\t\t\t\themiLength ++;\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\treturn {\n\t\tsetup: setup,\n\t\tsetupView: setupView,\n\t\tstate: state\n\t};\n\n}\n\nfunction WebGLRenderState( extensions, capabilities ) {\n\n\tconst lights = new WebGLLights( extensions, capabilities );\n\n\tconst lightsArray = [];\n\tconst shadowsArray = [];\n\n\tfunction init() {\n\n\t\tlightsArray.length = 0;\n\t\tshadowsArray.length = 0;\n\n\t}\n\n\tfunction pushLight( light ) {\n\n\t\tlightsArray.push( light );\n\n\t}\n\n\tfunction pushShadow( shadowLight ) {\n\n\t\tshadowsArray.push( shadowLight );\n\n\t}\n\n\tfunction setupLights( physicallyCorrectLights ) {\n\n\t\tlights.setup( lightsArray, physicallyCorrectLights );\n\n\t}\n\n\tfunction setupLightsView( camera ) {\n\n\t\tlights.setupView( lightsArray, camera );\n\n\t}\n\n\tconst state = {\n\t\tlightsArray: lightsArray,\n\t\tshadowsArray: shadowsArray,\n\n\t\tlights: lights\n\t};\n\n\treturn {\n\t\tinit: init,\n\t\tstate: state,\n\t\tsetupLights: setupLights,\n\t\tsetupLightsView: setupLightsView,\n\n\t\tpushLight: pushLight,\n\t\tpushShadow: pushShadow\n\t};\n\n}\n\nfunction WebGLRenderStates( extensions, capabilities ) {\n\n\tlet renderStates = new WeakMap();\n\n\tfunction get( scene, renderCallDepth = 0 ) {\n\n\t\tlet renderState;\n\n\t\tif ( renderStates.has( scene ) === false ) {\n\n\t\t\trenderState = new WebGLRenderState( extensions, capabilities );\n\t\t\trenderStates.set( scene, [ renderState ] );\n\n\t\t} else {\n\n\t\t\tif ( renderCallDepth >= renderStates.get( scene ).length ) {\n\n\t\t\t\trenderState = new WebGLRenderState( extensions, capabilities );\n\t\t\t\trenderStates.get( scene ).push( renderState );\n\n\t\t\t} else {\n\n\t\t\t\trenderState = renderStates.get( scene )[ renderCallDepth ];\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn renderState;\n\n\t}\n\n\tfunction dispose() {\n\n\t\trenderStates = new WeakMap();\n\n\t}\n\n\treturn {\n\t\tget: get,\n\t\tdispose: dispose\n\t};\n\n}\n\nclass MeshDepthMaterial extends Material {\n\n\tconstructor( parameters ) {\n\n\t\tsuper();\n\n\t\tthis.isMeshDepthMaterial = true;\n\n\t\tthis.type = 'MeshDepthMaterial';\n\n\t\tthis.depthPacking = BasicDepthPacking;\n\n\t\tthis.map = null;\n\n\t\tthis.alphaMap = null;\n\n\t\tthis.displacementMap = null;\n\t\tthis.displacementScale = 1;\n\t\tthis.displacementBias = 0;\n\n\t\tthis.wireframe = false;\n\t\tthis.wireframeLinewidth = 1;\n\n\t\tthis.setValues( parameters );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.depthPacking = source.depthPacking;\n\n\t\tthis.map = source.map;\n\n\t\tthis.alphaMap = source.alphaMap;\n\n\t\tthis.displacementMap = source.displacementMap;\n\t\tthis.displacementScale = source.displacementScale;\n\t\tthis.displacementBias = source.displacementBias;\n\n\t\tthis.wireframe = source.wireframe;\n\t\tthis.wireframeLinewidth = source.wireframeLinewidth;\n\n\t\treturn this;\n\n\t}\n\n}\n\nclass MeshDistanceMaterial extends Material {\n\n\tconstructor( parameters ) {\n\n\t\tsuper();\n\n\t\tthis.isMeshDistanceMaterial = true;\n\n\t\tthis.type = 'MeshDistanceMaterial';\n\n\t\tthis.referencePosition = new Vector3();\n\t\tthis.nearDistance = 1;\n\t\tthis.farDistance = 1000;\n\n\t\tthis.map = null;\n\n\t\tthis.alphaMap = null;\n\n\t\tthis.displacementMap = null;\n\t\tthis.displacementScale = 1;\n\t\tthis.displacementBias = 0;\n\n\t\tthis.setValues( parameters );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.referencePosition.copy( source.referencePosition );\n\t\tthis.nearDistance = source.nearDistance;\n\t\tthis.farDistance = source.farDistance;\n\n\t\tthis.map = source.map;\n\n\t\tthis.alphaMap = source.alphaMap;\n\n\t\tthis.displacementMap = source.displacementMap;\n\t\tthis.displacementScale = source.displacementScale;\n\t\tthis.displacementBias = source.displacementBias;\n\n\t\treturn this;\n\n\t}\n\n}\n\nconst vertex = \"void main() {\\n\\tgl_Position = vec4( position, 1.0 );\\n}\";\n\nconst fragment = \"uniform sampler2D shadow_pass;\\nuniform vec2 resolution;\\nuniform float radius;\\n#include \\nvoid main() {\\n\\tconst float samples = float( VSM_SAMPLES );\\n\\tfloat mean = 0.0;\\n\\tfloat squared_mean = 0.0;\\n\\tfloat uvStride = samples <= 1.0 ? 0.0 : 2.0 / ( samples - 1.0 );\\n\\tfloat uvStart = samples <= 1.0 ? 0.0 : - 1.0;\\n\\tfor ( float i = 0.0; i < samples; i ++ ) {\\n\\t\\tfloat uvOffset = uvStart + i * uvStride;\\n\\t\\t#ifdef HORIZONTAL_PASS\\n\\t\\t\\tvec2 distribution = unpackRGBATo2Half( texture2D( shadow_pass, ( gl_FragCoord.xy + vec2( uvOffset, 0.0 ) * radius ) / resolution ) );\\n\\t\\t\\tmean += distribution.x;\\n\\t\\t\\tsquared_mean += distribution.y * distribution.y + distribution.x * distribution.x;\\n\\t\\t#else\\n\\t\\t\\tfloat depth = unpackRGBAToDepth( texture2D( shadow_pass, ( gl_FragCoord.xy + vec2( 0.0, uvOffset ) * radius ) / resolution ) );\\n\\t\\t\\tmean += depth;\\n\\t\\t\\tsquared_mean += depth * depth;\\n\\t\\t#endif\\n\\t}\\n\\tmean = mean / samples;\\n\\tsquared_mean = squared_mean / samples;\\n\\tfloat std_dev = sqrt( squared_mean - mean * mean );\\n\\tgl_FragColor = pack2HalfToRGBA( vec2( mean, std_dev ) );\\n}\";\n\nfunction WebGLShadowMap( _renderer, _objects, _capabilities ) {\n\n\tlet _frustum = new Frustum();\n\n\tconst _shadowMapSize = new Vector2(),\n\t\t_viewportSize = new Vector2(),\n\n\t\t_viewport = new Vector4(),\n\n\t\t_depthMaterial = new MeshDepthMaterial( { depthPacking: RGBADepthPacking } ),\n\t\t_distanceMaterial = new MeshDistanceMaterial(),\n\n\t\t_materialCache = {},\n\n\t\t_maxTextureSize = _capabilities.maxTextureSize;\n\n\tconst shadowSide = { 0: BackSide, 1: FrontSide, 2: DoubleSide };\n\n\tconst shadowMaterialVertical = new ShaderMaterial( {\n\t\tdefines: {\n\t\t\tVSM_SAMPLES: 8\n\t\t},\n\t\tuniforms: {\n\t\t\tshadow_pass: { value: null },\n\t\t\tresolution: { value: new Vector2() },\n\t\t\tradius: { value: 4.0 }\n\t\t},\n\n\t\tvertexShader: vertex,\n\t\tfragmentShader: fragment\n\n\t} );\n\n\tconst shadowMaterialHorizontal = shadowMaterialVertical.clone();\n\tshadowMaterialHorizontal.defines.HORIZONTAL_PASS = 1;\n\n\tconst fullScreenTri = new BufferGeometry();\n\tfullScreenTri.setAttribute(\n\t\t'position',\n\t\tnew BufferAttribute(\n\t\t\tnew Float32Array( [ - 1, - 1, 0.5, 3, - 1, 0.5, - 1, 3, 0.5 ] ),\n\t\t\t3\n\t\t)\n\t);\n\n\tconst fullScreenMesh = new Mesh( fullScreenTri, shadowMaterialVertical );\n\n\tconst scope = this;\n\n\tthis.enabled = false;\n\n\tthis.autoUpdate = true;\n\tthis.needsUpdate = false;\n\n\tthis.type = PCFShadowMap;\n\n\tthis.render = function ( lights, scene, camera ) {\n\n\t\tif ( scope.enabled === false ) return;\n\t\tif ( scope.autoUpdate === false && scope.needsUpdate === false ) return;\n\n\t\tif ( lights.length === 0 ) return;\n\n\t\tconst currentRenderTarget = _renderer.getRenderTarget();\n\t\tconst activeCubeFace = _renderer.getActiveCubeFace();\n\t\tconst activeMipmapLevel = _renderer.getActiveMipmapLevel();\n\n\t\tconst _state = _renderer.state;\n\n\t\t// Set GL state for depth map.\n\t\t_state.setBlending( NoBlending );\n\t\t_state.buffers.color.setClear( 1, 1, 1, 1 );\n\t\t_state.buffers.depth.setTest( true );\n\t\t_state.setScissorTest( false );\n\n\t\t// render depth map\n\n\t\tfor ( let i = 0, il = lights.length; i < il; i ++ ) {\n\n\t\t\tconst light = lights[ i ];\n\t\t\tconst shadow = light.shadow;\n\n\t\t\tif ( shadow === undefined ) {\n\n\t\t\t\tconsole.warn( 'THREE.WebGLShadowMap:', light, 'has no shadow.' );\n\t\t\t\tcontinue;\n\n\t\t\t}\n\n\t\t\tif ( shadow.autoUpdate === false && shadow.needsUpdate === false ) continue;\n\n\t\t\t_shadowMapSize.copy( shadow.mapSize );\n\n\t\t\tconst shadowFrameExtents = shadow.getFrameExtents();\n\n\t\t\t_shadowMapSize.multiply( shadowFrameExtents );\n\n\t\t\t_viewportSize.copy( shadow.mapSize );\n\n\t\t\tif ( _shadowMapSize.x > _maxTextureSize || _shadowMapSize.y > _maxTextureSize ) {\n\n\t\t\t\tif ( _shadowMapSize.x > _maxTextureSize ) {\n\n\t\t\t\t\t_viewportSize.x = Math.floor( _maxTextureSize / shadowFrameExtents.x );\n\t\t\t\t\t_shadowMapSize.x = _viewportSize.x * shadowFrameExtents.x;\n\t\t\t\t\tshadow.mapSize.x = _viewportSize.x;\n\n\t\t\t\t}\n\n\t\t\t\tif ( _shadowMapSize.y > _maxTextureSize ) {\n\n\t\t\t\t\t_viewportSize.y = Math.floor( _maxTextureSize / shadowFrameExtents.y );\n\t\t\t\t\t_shadowMapSize.y = _viewportSize.y * shadowFrameExtents.y;\n\t\t\t\t\tshadow.mapSize.y = _viewportSize.y;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( shadow.map === null && ! shadow.isPointLightShadow && this.type === VSMShadowMap ) {\n\n\t\t\t\tshadow.map = new WebGLRenderTarget( _shadowMapSize.x, _shadowMapSize.y );\n\t\t\t\tshadow.map.texture.name = light.name + '.shadowMap';\n\n\t\t\t\tshadow.mapPass = new WebGLRenderTarget( _shadowMapSize.x, _shadowMapSize.y );\n\n\t\t\t\tshadow.camera.updateProjectionMatrix();\n\n\t\t\t}\n\n\t\t\tif ( shadow.map === null ) {\n\n\t\t\t\tconst pars = { minFilter: NearestFilter, magFilter: NearestFilter, format: RGBAFormat };\n\n\t\t\t\tshadow.map = new WebGLRenderTarget( _shadowMapSize.x, _shadowMapSize.y, pars );\n\t\t\t\tshadow.map.texture.name = light.name + '.shadowMap';\n\n\t\t\t\tshadow.camera.updateProjectionMatrix();\n\n\t\t\t}\n\n\t\t\t_renderer.setRenderTarget( shadow.map );\n\t\t\t_renderer.clear();\n\n\t\t\tconst viewportCount = shadow.getViewportCount();\n\n\t\t\tfor ( let vp = 0; vp < viewportCount; vp ++ ) {\n\n\t\t\t\tconst viewport = shadow.getViewport( vp );\n\n\t\t\t\t_viewport.set(\n\t\t\t\t\t_viewportSize.x * viewport.x,\n\t\t\t\t\t_viewportSize.y * viewport.y,\n\t\t\t\t\t_viewportSize.x * viewport.z,\n\t\t\t\t\t_viewportSize.y * viewport.w\n\t\t\t\t);\n\n\t\t\t\t_state.viewport( _viewport );\n\n\t\t\t\tshadow.updateMatrices( light, vp );\n\n\t\t\t\t_frustum = shadow.getFrustum();\n\n\t\t\t\trenderObject( scene, camera, shadow.camera, light, this.type );\n\n\t\t\t}\n\n\t\t\t// do blur pass for VSM\n\n\t\t\tif ( ! shadow.isPointLightShadow && this.type === VSMShadowMap ) {\n\n\t\t\t\tVSMPass( shadow, camera );\n\n\t\t\t}\n\n\t\t\tshadow.needsUpdate = false;\n\n\t\t}\n\n\t\tscope.needsUpdate = false;\n\n\t\t_renderer.setRenderTarget( currentRenderTarget, activeCubeFace, activeMipmapLevel );\n\n\t};\n\n\tfunction VSMPass( shadow, camera ) {\n\n\t\tconst geometry = _objects.update( fullScreenMesh );\n\n\t\tif ( shadowMaterialVertical.defines.VSM_SAMPLES !== shadow.blurSamples ) {\n\n\t\t\tshadowMaterialVertical.defines.VSM_SAMPLES = shadow.blurSamples;\n\t\t\tshadowMaterialHorizontal.defines.VSM_SAMPLES = shadow.blurSamples;\n\n\t\t\tshadowMaterialVertical.needsUpdate = true;\n\t\t\tshadowMaterialHorizontal.needsUpdate = true;\n\n\t\t}\n\n\t\t// vertical pass\n\n\t\tshadowMaterialVertical.uniforms.shadow_pass.value = shadow.map.texture;\n\t\tshadowMaterialVertical.uniforms.resolution.value = shadow.mapSize;\n\t\tshadowMaterialVertical.uniforms.radius.value = shadow.radius;\n\t\t_renderer.setRenderTarget( shadow.mapPass );\n\t\t_renderer.clear();\n\t\t_renderer.renderBufferDirect( camera, null, geometry, shadowMaterialVertical, fullScreenMesh, null );\n\n\t\t// horizontal pass\n\n\t\tshadowMaterialHorizontal.uniforms.shadow_pass.value = shadow.mapPass.texture;\n\t\tshadowMaterialHorizontal.uniforms.resolution.value = shadow.mapSize;\n\t\tshadowMaterialHorizontal.uniforms.radius.value = shadow.radius;\n\t\t_renderer.setRenderTarget( shadow.map );\n\t\t_renderer.clear();\n\t\t_renderer.renderBufferDirect( camera, null, geometry, shadowMaterialHorizontal, fullScreenMesh, null );\n\n\t}\n\n\tfunction getDepthMaterial( object, material, light, shadowCameraNear, shadowCameraFar, type ) {\n\n\t\tlet result = null;\n\n\t\tconst customMaterial = ( light.isPointLight === true ) ? object.customDistanceMaterial : object.customDepthMaterial;\n\n\t\tif ( customMaterial !== undefined ) {\n\n\t\t\tresult = customMaterial;\n\n\t\t} else {\n\n\t\t\tresult = ( light.isPointLight === true ) ? _distanceMaterial : _depthMaterial;\n\n\t\t}\n\n\t\tif ( ( _renderer.localClippingEnabled && material.clipShadows === true && material.clippingPlanes.length !== 0 ) ||\n\t\t\t( material.displacementMap && material.displacementScale !== 0 ) ||\n\t\t\t( material.alphaMap && material.alphaTest > 0 ) ) {\n\n\t\t\t// in this case we need a unique material instance reflecting the\n\t\t\t// appropriate state\n\n\t\t\tconst keyA = result.uuid, keyB = material.uuid;\n\n\t\t\tlet materialsForVariant = _materialCache[ keyA ];\n\n\t\t\tif ( materialsForVariant === undefined ) {\n\n\t\t\t\tmaterialsForVariant = {};\n\t\t\t\t_materialCache[ keyA ] = materialsForVariant;\n\n\t\t\t}\n\n\t\t\tlet cachedMaterial = materialsForVariant[ keyB ];\n\n\t\t\tif ( cachedMaterial === undefined ) {\n\n\t\t\t\tcachedMaterial = result.clone();\n\t\t\t\tmaterialsForVariant[ keyB ] = cachedMaterial;\n\n\t\t\t}\n\n\t\t\tresult = cachedMaterial;\n\n\t\t}\n\n\t\tresult.visible = material.visible;\n\t\tresult.wireframe = material.wireframe;\n\n\t\tif ( type === VSMShadowMap ) {\n\n\t\t\tresult.side = ( material.shadowSide !== null ) ? material.shadowSide : material.side;\n\n\t\t} else {\n\n\t\t\tresult.side = ( material.shadowSide !== null ) ? material.shadowSide : shadowSide[ material.side ];\n\n\t\t}\n\n\t\tresult.alphaMap = material.alphaMap;\n\t\tresult.alphaTest = material.alphaTest;\n\n\t\tresult.clipShadows = material.clipShadows;\n\t\tresult.clippingPlanes = material.clippingPlanes;\n\t\tresult.clipIntersection = material.clipIntersection;\n\n\t\tresult.displacementMap = material.displacementMap;\n\t\tresult.displacementScale = material.displacementScale;\n\t\tresult.displacementBias = material.displacementBias;\n\n\t\tresult.wireframeLinewidth = material.wireframeLinewidth;\n\t\tresult.linewidth = material.linewidth;\n\n\t\tif ( light.isPointLight === true && result.isMeshDistanceMaterial === true ) {\n\n\t\t\tresult.referencePosition.setFromMatrixPosition( light.matrixWorld );\n\t\t\tresult.nearDistance = shadowCameraNear;\n\t\t\tresult.farDistance = shadowCameraFar;\n\n\t\t}\n\n\t\treturn result;\n\n\t}\n\n\tfunction renderObject( object, camera, shadowCamera, light, type ) {\n\n\t\tif ( object.visible === false ) return;\n\n\t\tconst visible = object.layers.test( camera.layers );\n\n\t\tif ( visible && ( object.isMesh || object.isLine || object.isPoints ) ) {\n\n\t\t\tif ( ( object.castShadow || ( object.receiveShadow && type === VSMShadowMap ) ) && ( ! object.frustumCulled || _frustum.intersectsObject( object ) ) ) {\n\n\t\t\t\tobject.modelViewMatrix.multiplyMatrices( shadowCamera.matrixWorldInverse, object.matrixWorld );\n\n\t\t\t\tconst geometry = _objects.update( object );\n\t\t\t\tconst material = object.material;\n\n\t\t\t\tif ( Array.isArray( material ) ) {\n\n\t\t\t\t\tconst groups = geometry.groups;\n\n\t\t\t\t\tfor ( let k = 0, kl = groups.length; k < kl; k ++ ) {\n\n\t\t\t\t\t\tconst group = groups[ k ];\n\t\t\t\t\t\tconst groupMaterial = material[ group.materialIndex ];\n\n\t\t\t\t\t\tif ( groupMaterial && groupMaterial.visible ) {\n\n\t\t\t\t\t\t\tconst depthMaterial = getDepthMaterial( object, groupMaterial, light, shadowCamera.near, shadowCamera.far, type );\n\n\t\t\t\t\t\t\t_renderer.renderBufferDirect( shadowCamera, null, geometry, depthMaterial, object, group );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t} else if ( material.visible ) {\n\n\t\t\t\t\tconst depthMaterial = getDepthMaterial( object, material, light, shadowCamera.near, shadowCamera.far, type );\n\n\t\t\t\t\t_renderer.renderBufferDirect( shadowCamera, null, geometry, depthMaterial, object, null );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tconst children = object.children;\n\n\t\tfor ( let i = 0, l = children.length; i < l; i ++ ) {\n\n\t\t\trenderObject( children[ i ], camera, shadowCamera, light, type );\n\n\t\t}\n\n\t}\n\n}\n\nfunction WebGLState( gl, extensions, capabilities ) {\n\n\tconst isWebGL2 = capabilities.isWebGL2;\n\n\tfunction ColorBuffer() {\n\n\t\tlet locked = false;\n\n\t\tconst color = new Vector4();\n\t\tlet currentColorMask = null;\n\t\tconst currentColorClear = new Vector4( 0, 0, 0, 0 );\n\n\t\treturn {\n\n\t\t\tsetMask: function ( colorMask ) {\n\n\t\t\t\tif ( currentColorMask !== colorMask && ! locked ) {\n\n\t\t\t\t\tgl.colorMask( colorMask, colorMask, colorMask, colorMask );\n\t\t\t\t\tcurrentColorMask = colorMask;\n\n\t\t\t\t}\n\n\t\t\t},\n\n\t\t\tsetLocked: function ( lock ) {\n\n\t\t\t\tlocked = lock;\n\n\t\t\t},\n\n\t\t\tsetClear: function ( r, g, b, a, premultipliedAlpha ) {\n\n\t\t\t\tif ( premultipliedAlpha === true ) {\n\n\t\t\t\t\tr *= a; g *= a; b *= a;\n\n\t\t\t\t}\n\n\t\t\t\tcolor.set( r, g, b, a );\n\n\t\t\t\tif ( currentColorClear.equals( color ) === false ) {\n\n\t\t\t\t\tgl.clearColor( r, g, b, a );\n\t\t\t\t\tcurrentColorClear.copy( color );\n\n\t\t\t\t}\n\n\t\t\t},\n\n\t\t\treset: function () {\n\n\t\t\t\tlocked = false;\n\n\t\t\t\tcurrentColorMask = null;\n\t\t\t\tcurrentColorClear.set( - 1, 0, 0, 0 ); // set to invalid state\n\n\t\t\t}\n\n\t\t};\n\n\t}\n\n\tfunction DepthBuffer() {\n\n\t\tlet locked = false;\n\n\t\tlet currentDepthMask = null;\n\t\tlet currentDepthFunc = null;\n\t\tlet currentDepthClear = null;\n\n\t\treturn {\n\n\t\t\tsetTest: function ( depthTest ) {\n\n\t\t\t\tif ( depthTest ) {\n\n\t\t\t\t\tenable( 2929 );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tdisable( 2929 );\n\n\t\t\t\t}\n\n\t\t\t},\n\n\t\t\tsetMask: function ( depthMask ) {\n\n\t\t\t\tif ( currentDepthMask !== depthMask && ! locked ) {\n\n\t\t\t\t\tgl.depthMask( depthMask );\n\t\t\t\t\tcurrentDepthMask = depthMask;\n\n\t\t\t\t}\n\n\t\t\t},\n\n\t\t\tsetFunc: function ( depthFunc ) {\n\n\t\t\t\tif ( currentDepthFunc !== depthFunc ) {\n\n\t\t\t\t\tif ( depthFunc ) {\n\n\t\t\t\t\t\tswitch ( depthFunc ) {\n\n\t\t\t\t\t\t\tcase NeverDepth:\n\n\t\t\t\t\t\t\t\tgl.depthFunc( 512 );\n\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\tcase AlwaysDepth:\n\n\t\t\t\t\t\t\t\tgl.depthFunc( 519 );\n\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\tcase LessDepth:\n\n\t\t\t\t\t\t\t\tgl.depthFunc( 513 );\n\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\tcase LessEqualDepth:\n\n\t\t\t\t\t\t\t\tgl.depthFunc( 515 );\n\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\tcase EqualDepth:\n\n\t\t\t\t\t\t\t\tgl.depthFunc( 514 );\n\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\tcase GreaterEqualDepth:\n\n\t\t\t\t\t\t\t\tgl.depthFunc( 518 );\n\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\tcase GreaterDepth:\n\n\t\t\t\t\t\t\t\tgl.depthFunc( 516 );\n\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\tcase NotEqualDepth:\n\n\t\t\t\t\t\t\t\tgl.depthFunc( 517 );\n\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\tdefault:\n\n\t\t\t\t\t\t\t\tgl.depthFunc( 515 );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tgl.depthFunc( 515 );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tcurrentDepthFunc = depthFunc;\n\n\t\t\t\t}\n\n\t\t\t},\n\n\t\t\tsetLocked: function ( lock ) {\n\n\t\t\t\tlocked = lock;\n\n\t\t\t},\n\n\t\t\tsetClear: function ( depth ) {\n\n\t\t\t\tif ( currentDepthClear !== depth ) {\n\n\t\t\t\t\tgl.clearDepth( depth );\n\t\t\t\t\tcurrentDepthClear = depth;\n\n\t\t\t\t}\n\n\t\t\t},\n\n\t\t\treset: function () {\n\n\t\t\t\tlocked = false;\n\n\t\t\t\tcurrentDepthMask = null;\n\t\t\t\tcurrentDepthFunc = null;\n\t\t\t\tcurrentDepthClear = null;\n\n\t\t\t}\n\n\t\t};\n\n\t}\n\n\tfunction StencilBuffer() {\n\n\t\tlet locked = false;\n\n\t\tlet currentStencilMask = null;\n\t\tlet currentStencilFunc = null;\n\t\tlet currentStencilRef = null;\n\t\tlet currentStencilFuncMask = null;\n\t\tlet currentStencilFail = null;\n\t\tlet currentStencilZFail = null;\n\t\tlet currentStencilZPass = null;\n\t\tlet currentStencilClear = null;\n\n\t\treturn {\n\n\t\t\tsetTest: function ( stencilTest ) {\n\n\t\t\t\tif ( ! locked ) {\n\n\t\t\t\t\tif ( stencilTest ) {\n\n\t\t\t\t\t\tenable( 2960 );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tdisable( 2960 );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t},\n\n\t\t\tsetMask: function ( stencilMask ) {\n\n\t\t\t\tif ( currentStencilMask !== stencilMask && ! locked ) {\n\n\t\t\t\t\tgl.stencilMask( stencilMask );\n\t\t\t\t\tcurrentStencilMask = stencilMask;\n\n\t\t\t\t}\n\n\t\t\t},\n\n\t\t\tsetFunc: function ( stencilFunc, stencilRef, stencilMask ) {\n\n\t\t\t\tif ( currentStencilFunc !== stencilFunc ||\n\t\t\t\t currentStencilRef !== stencilRef ||\n\t\t\t\t currentStencilFuncMask !== stencilMask ) {\n\n\t\t\t\t\tgl.stencilFunc( stencilFunc, stencilRef, stencilMask );\n\n\t\t\t\t\tcurrentStencilFunc = stencilFunc;\n\t\t\t\t\tcurrentStencilRef = stencilRef;\n\t\t\t\t\tcurrentStencilFuncMask = stencilMask;\n\n\t\t\t\t}\n\n\t\t\t},\n\n\t\t\tsetOp: function ( stencilFail, stencilZFail, stencilZPass ) {\n\n\t\t\t\tif ( currentStencilFail !== stencilFail ||\n\t\t\t\t currentStencilZFail !== stencilZFail ||\n\t\t\t\t currentStencilZPass !== stencilZPass ) {\n\n\t\t\t\t\tgl.stencilOp( stencilFail, stencilZFail, stencilZPass );\n\n\t\t\t\t\tcurrentStencilFail = stencilFail;\n\t\t\t\t\tcurrentStencilZFail = stencilZFail;\n\t\t\t\t\tcurrentStencilZPass = stencilZPass;\n\n\t\t\t\t}\n\n\t\t\t},\n\n\t\t\tsetLocked: function ( lock ) {\n\n\t\t\t\tlocked = lock;\n\n\t\t\t},\n\n\t\t\tsetClear: function ( stencil ) {\n\n\t\t\t\tif ( currentStencilClear !== stencil ) {\n\n\t\t\t\t\tgl.clearStencil( stencil );\n\t\t\t\t\tcurrentStencilClear = stencil;\n\n\t\t\t\t}\n\n\t\t\t},\n\n\t\t\treset: function () {\n\n\t\t\t\tlocked = false;\n\n\t\t\t\tcurrentStencilMask = null;\n\t\t\t\tcurrentStencilFunc = null;\n\t\t\t\tcurrentStencilRef = null;\n\t\t\t\tcurrentStencilFuncMask = null;\n\t\t\t\tcurrentStencilFail = null;\n\t\t\t\tcurrentStencilZFail = null;\n\t\t\t\tcurrentStencilZPass = null;\n\t\t\t\tcurrentStencilClear = null;\n\n\t\t\t}\n\n\t\t};\n\n\t}\n\n\t//\n\n\tconst colorBuffer = new ColorBuffer();\n\tconst depthBuffer = new DepthBuffer();\n\tconst stencilBuffer = new StencilBuffer();\n\n\tlet enabledCapabilities = {};\n\n\tlet currentBoundFramebuffers = {};\n\tlet currentDrawbuffers = new WeakMap();\n\tlet defaultDrawbuffers = [];\n\n\tlet currentProgram = null;\n\n\tlet currentBlendingEnabled = false;\n\tlet currentBlending = null;\n\tlet currentBlendEquation = null;\n\tlet currentBlendSrc = null;\n\tlet currentBlendDst = null;\n\tlet currentBlendEquationAlpha = null;\n\tlet currentBlendSrcAlpha = null;\n\tlet currentBlendDstAlpha = null;\n\tlet currentPremultipledAlpha = false;\n\n\tlet currentFlipSided = null;\n\tlet currentCullFace = null;\n\n\tlet currentLineWidth = null;\n\n\tlet currentPolygonOffsetFactor = null;\n\tlet currentPolygonOffsetUnits = null;\n\n\tconst maxTextures = gl.getParameter( 35661 );\n\n\tlet lineWidthAvailable = false;\n\tlet version = 0;\n\tconst glVersion = gl.getParameter( 7938 );\n\n\tif ( glVersion.indexOf( 'WebGL' ) !== - 1 ) {\n\n\t\tversion = parseFloat( /^WebGL (\\d)/.exec( glVersion )[ 1 ] );\n\t\tlineWidthAvailable = ( version >= 1.0 );\n\n\t} else if ( glVersion.indexOf( 'OpenGL ES' ) !== - 1 ) {\n\n\t\tversion = parseFloat( /^OpenGL ES (\\d)/.exec( glVersion )[ 1 ] );\n\t\tlineWidthAvailable = ( version >= 2.0 );\n\n\t}\n\n\tlet currentTextureSlot = null;\n\tlet currentBoundTextures = {};\n\n\tconst scissorParam = gl.getParameter( 3088 );\n\tconst viewportParam = gl.getParameter( 2978 );\n\n\tconst currentScissor = new Vector4().fromArray( scissorParam );\n\tconst currentViewport = new Vector4().fromArray( viewportParam );\n\n\tfunction createTexture( type, target, count ) {\n\n\t\tconst data = new Uint8Array( 4 ); // 4 is required to match default unpack alignment of 4.\n\t\tconst texture = gl.createTexture();\n\n\t\tgl.bindTexture( type, texture );\n\t\tgl.texParameteri( type, 10241, 9728 );\n\t\tgl.texParameteri( type, 10240, 9728 );\n\n\t\tfor ( let i = 0; i < count; i ++ ) {\n\n\t\t\tgl.texImage2D( target + i, 0, 6408, 1, 1, 0, 6408, 5121, data );\n\n\t\t}\n\n\t\treturn texture;\n\n\t}\n\n\tconst emptyTextures = {};\n\temptyTextures[ 3553 ] = createTexture( 3553, 3553, 1 );\n\temptyTextures[ 34067 ] = createTexture( 34067, 34069, 6 );\n\n\t// init\n\n\tcolorBuffer.setClear( 0, 0, 0, 1 );\n\tdepthBuffer.setClear( 1 );\n\tstencilBuffer.setClear( 0 );\n\n\tenable( 2929 );\n\tdepthBuffer.setFunc( LessEqualDepth );\n\n\tsetFlipSided( false );\n\tsetCullFace( CullFaceBack );\n\tenable( 2884 );\n\n\tsetBlending( NoBlending );\n\n\t//\n\n\tfunction enable( id ) {\n\n\t\tif ( enabledCapabilities[ id ] !== true ) {\n\n\t\t\tgl.enable( id );\n\t\t\tenabledCapabilities[ id ] = true;\n\n\t\t}\n\n\t}\n\n\tfunction disable( id ) {\n\n\t\tif ( enabledCapabilities[ id ] !== false ) {\n\n\t\t\tgl.disable( id );\n\t\t\tenabledCapabilities[ id ] = false;\n\n\t\t}\n\n\t}\n\n\tfunction bindFramebuffer( target, framebuffer ) {\n\n\t\tif ( currentBoundFramebuffers[ target ] !== framebuffer ) {\n\n\t\t\tgl.bindFramebuffer( target, framebuffer );\n\n\t\t\tcurrentBoundFramebuffers[ target ] = framebuffer;\n\n\t\t\tif ( isWebGL2 ) {\n\n\t\t\t\t// 36009 is equivalent to 36160\n\n\t\t\t\tif ( target === 36009 ) {\n\n\t\t\t\t\tcurrentBoundFramebuffers[ 36160 ] = framebuffer;\n\n\t\t\t\t}\n\n\t\t\t\tif ( target === 36160 ) {\n\n\t\t\t\t\tcurrentBoundFramebuffers[ 36009 ] = framebuffer;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn true;\n\n\t\t}\n\n\t\treturn false;\n\n\t}\n\n\tfunction drawBuffers( renderTarget, framebuffer ) {\n\n\t\tlet drawBuffers = defaultDrawbuffers;\n\n\t\tlet needsUpdate = false;\n\n\t\tif ( renderTarget ) {\n\n\t\t\tdrawBuffers = currentDrawbuffers.get( framebuffer );\n\n\t\t\tif ( drawBuffers === undefined ) {\n\n\t\t\t\tdrawBuffers = [];\n\t\t\t\tcurrentDrawbuffers.set( framebuffer, drawBuffers );\n\n\t\t\t}\n\n\t\t\tif ( renderTarget.isWebGLMultipleRenderTargets ) {\n\n\t\t\t\tconst textures = renderTarget.texture;\n\n\t\t\t\tif ( drawBuffers.length !== textures.length || drawBuffers[ 0 ] !== 36064 ) {\n\n\t\t\t\t\tfor ( let i = 0, il = textures.length; i < il; i ++ ) {\n\n\t\t\t\t\t\tdrawBuffers[ i ] = 36064 + i;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tdrawBuffers.length = textures.length;\n\n\t\t\t\t\tneedsUpdate = true;\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\tif ( drawBuffers[ 0 ] !== 36064 ) {\n\n\t\t\t\t\tdrawBuffers[ 0 ] = 36064;\n\n\t\t\t\t\tneedsUpdate = true;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tif ( drawBuffers[ 0 ] !== 1029 ) {\n\n\t\t\t\tdrawBuffers[ 0 ] = 1029;\n\n\t\t\t\tneedsUpdate = true;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( needsUpdate ) {\n\n\t\t\tif ( capabilities.isWebGL2 ) {\n\n\t\t\t\tgl.drawBuffers( drawBuffers );\n\n\t\t\t} else {\n\n\t\t\t\textensions.get( 'WEBGL_draw_buffers' ).drawBuffersWEBGL( drawBuffers );\n\n\t\t\t}\n\n\t\t}\n\n\n\t}\n\n\tfunction useProgram( program ) {\n\n\t\tif ( currentProgram !== program ) {\n\n\t\t\tgl.useProgram( program );\n\n\t\t\tcurrentProgram = program;\n\n\t\t\treturn true;\n\n\t\t}\n\n\t\treturn false;\n\n\t}\n\n\tconst equationToGL = {\n\t\t[ AddEquation ]: 32774,\n\t\t[ SubtractEquation ]: 32778,\n\t\t[ ReverseSubtractEquation ]: 32779\n\t};\n\n\tif ( isWebGL2 ) {\n\n\t\tequationToGL[ MinEquation ] = 32775;\n\t\tequationToGL[ MaxEquation ] = 32776;\n\n\t} else {\n\n\t\tconst extension = extensions.get( 'EXT_blend_minmax' );\n\n\t\tif ( extension !== null ) {\n\n\t\t\tequationToGL[ MinEquation ] = extension.MIN_EXT;\n\t\t\tequationToGL[ MaxEquation ] = extension.MAX_EXT;\n\n\t\t}\n\n\t}\n\n\tconst factorToGL = {\n\t\t[ ZeroFactor ]: 0,\n\t\t[ OneFactor ]: 1,\n\t\t[ SrcColorFactor ]: 768,\n\t\t[ SrcAlphaFactor ]: 770,\n\t\t[ SrcAlphaSaturateFactor ]: 776,\n\t\t[ DstColorFactor ]: 774,\n\t\t[ DstAlphaFactor ]: 772,\n\t\t[ OneMinusSrcColorFactor ]: 769,\n\t\t[ OneMinusSrcAlphaFactor ]: 771,\n\t\t[ OneMinusDstColorFactor ]: 775,\n\t\t[ OneMinusDstAlphaFactor ]: 773\n\t};\n\n\tfunction setBlending( blending, blendEquation, blendSrc, blendDst, blendEquationAlpha, blendSrcAlpha, blendDstAlpha, premultipliedAlpha ) {\n\n\t\tif ( blending === NoBlending ) {\n\n\t\t\tif ( currentBlendingEnabled === true ) {\n\n\t\t\t\tdisable( 3042 );\n\t\t\t\tcurrentBlendingEnabled = false;\n\n\t\t\t}\n\n\t\t\treturn;\n\n\t\t}\n\n\t\tif ( currentBlendingEnabled === false ) {\n\n\t\t\tenable( 3042 );\n\t\t\tcurrentBlendingEnabled = true;\n\n\t\t}\n\n\t\tif ( blending !== CustomBlending ) {\n\n\t\t\tif ( blending !== currentBlending || premultipliedAlpha !== currentPremultipledAlpha ) {\n\n\t\t\t\tif ( currentBlendEquation !== AddEquation || currentBlendEquationAlpha !== AddEquation ) {\n\n\t\t\t\t\tgl.blendEquation( 32774 );\n\n\t\t\t\t\tcurrentBlendEquation = AddEquation;\n\t\t\t\t\tcurrentBlendEquationAlpha = AddEquation;\n\n\t\t\t\t}\n\n\t\t\t\tif ( premultipliedAlpha ) {\n\n\t\t\t\t\tswitch ( blending ) {\n\n\t\t\t\t\t\tcase NormalBlending:\n\t\t\t\t\t\t\tgl.blendFuncSeparate( 1, 771, 1, 771 );\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tcase AdditiveBlending:\n\t\t\t\t\t\t\tgl.blendFunc( 1, 1 );\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tcase SubtractiveBlending:\n\t\t\t\t\t\t\tgl.blendFuncSeparate( 0, 769, 0, 1 );\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tcase MultiplyBlending:\n\t\t\t\t\t\t\tgl.blendFuncSeparate( 0, 768, 0, 770 );\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\tconsole.error( 'THREE.WebGLState: Invalid blending: ', blending );\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\tswitch ( blending ) {\n\n\t\t\t\t\t\tcase NormalBlending:\n\t\t\t\t\t\t\tgl.blendFuncSeparate( 770, 771, 1, 771 );\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tcase AdditiveBlending:\n\t\t\t\t\t\t\tgl.blendFunc( 770, 1 );\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tcase SubtractiveBlending:\n\t\t\t\t\t\t\tgl.blendFuncSeparate( 0, 769, 0, 1 );\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tcase MultiplyBlending:\n\t\t\t\t\t\t\tgl.blendFunc( 0, 768 );\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\tconsole.error( 'THREE.WebGLState: Invalid blending: ', blending );\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\tcurrentBlendSrc = null;\n\t\t\t\tcurrentBlendDst = null;\n\t\t\t\tcurrentBlendSrcAlpha = null;\n\t\t\t\tcurrentBlendDstAlpha = null;\n\n\t\t\t\tcurrentBlending = blending;\n\t\t\t\tcurrentPremultipledAlpha = premultipliedAlpha;\n\n\t\t\t}\n\n\t\t\treturn;\n\n\t\t}\n\n\t\t// custom blending\n\n\t\tblendEquationAlpha = blendEquationAlpha || blendEquation;\n\t\tblendSrcAlpha = blendSrcAlpha || blendSrc;\n\t\tblendDstAlpha = blendDstAlpha || blendDst;\n\n\t\tif ( blendEquation !== currentBlendEquation || blendEquationAlpha !== currentBlendEquationAlpha ) {\n\n\t\t\tgl.blendEquationSeparate( equationToGL[ blendEquation ], equationToGL[ blendEquationAlpha ] );\n\n\t\t\tcurrentBlendEquation = blendEquation;\n\t\t\tcurrentBlendEquationAlpha = blendEquationAlpha;\n\n\t\t}\n\n\t\tif ( blendSrc !== currentBlendSrc || blendDst !== currentBlendDst || blendSrcAlpha !== currentBlendSrcAlpha || blendDstAlpha !== currentBlendDstAlpha ) {\n\n\t\t\tgl.blendFuncSeparate( factorToGL[ blendSrc ], factorToGL[ blendDst ], factorToGL[ blendSrcAlpha ], factorToGL[ blendDstAlpha ] );\n\n\t\t\tcurrentBlendSrc = blendSrc;\n\t\t\tcurrentBlendDst = blendDst;\n\t\t\tcurrentBlendSrcAlpha = blendSrcAlpha;\n\t\t\tcurrentBlendDstAlpha = blendDstAlpha;\n\n\t\t}\n\n\t\tcurrentBlending = blending;\n\t\tcurrentPremultipledAlpha = null;\n\n\t}\n\n\tfunction setMaterial( material, frontFaceCW ) {\n\n\t\tmaterial.side === DoubleSide\n\t\t\t? disable( 2884 )\n\t\t\t: enable( 2884 );\n\n\t\tlet flipSided = ( material.side === BackSide );\n\t\tif ( frontFaceCW ) flipSided = ! flipSided;\n\n\t\tsetFlipSided( flipSided );\n\n\t\t( material.blending === NormalBlending && material.transparent === false )\n\t\t\t? setBlending( NoBlending )\n\t\t\t: setBlending( material.blending, material.blendEquation, material.blendSrc, material.blendDst, material.blendEquationAlpha, material.blendSrcAlpha, material.blendDstAlpha, material.premultipliedAlpha );\n\n\t\tdepthBuffer.setFunc( material.depthFunc );\n\t\tdepthBuffer.setTest( material.depthTest );\n\t\tdepthBuffer.setMask( material.depthWrite );\n\t\tcolorBuffer.setMask( material.colorWrite );\n\n\t\tconst stencilWrite = material.stencilWrite;\n\t\tstencilBuffer.setTest( stencilWrite );\n\t\tif ( stencilWrite ) {\n\n\t\t\tstencilBuffer.setMask( material.stencilWriteMask );\n\t\t\tstencilBuffer.setFunc( material.stencilFunc, material.stencilRef, material.stencilFuncMask );\n\t\t\tstencilBuffer.setOp( material.stencilFail, material.stencilZFail, material.stencilZPass );\n\n\t\t}\n\n\t\tsetPolygonOffset( material.polygonOffset, material.polygonOffsetFactor, material.polygonOffsetUnits );\n\n\t\tmaterial.alphaToCoverage === true\n\t\t\t? enable( 32926 )\n\t\t\t: disable( 32926 );\n\n\t}\n\n\t//\n\n\tfunction setFlipSided( flipSided ) {\n\n\t\tif ( currentFlipSided !== flipSided ) {\n\n\t\t\tif ( flipSided ) {\n\n\t\t\t\tgl.frontFace( 2304 );\n\n\t\t\t} else {\n\n\t\t\t\tgl.frontFace( 2305 );\n\n\t\t\t}\n\n\t\t\tcurrentFlipSided = flipSided;\n\n\t\t}\n\n\t}\n\n\tfunction setCullFace( cullFace ) {\n\n\t\tif ( cullFace !== CullFaceNone ) {\n\n\t\t\tenable( 2884 );\n\n\t\t\tif ( cullFace !== currentCullFace ) {\n\n\t\t\t\tif ( cullFace === CullFaceBack ) {\n\n\t\t\t\t\tgl.cullFace( 1029 );\n\n\t\t\t\t} else if ( cullFace === CullFaceFront ) {\n\n\t\t\t\t\tgl.cullFace( 1028 );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tgl.cullFace( 1032 );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tdisable( 2884 );\n\n\t\t}\n\n\t\tcurrentCullFace = cullFace;\n\n\t}\n\n\tfunction setLineWidth( width ) {\n\n\t\tif ( width !== currentLineWidth ) {\n\n\t\t\tif ( lineWidthAvailable ) gl.lineWidth( width );\n\n\t\t\tcurrentLineWidth = width;\n\n\t\t}\n\n\t}\n\n\tfunction setPolygonOffset( polygonOffset, factor, units ) {\n\n\t\tif ( polygonOffset ) {\n\n\t\t\tenable( 32823 );\n\n\t\t\tif ( currentPolygonOffsetFactor !== factor || currentPolygonOffsetUnits !== units ) {\n\n\t\t\t\tgl.polygonOffset( factor, units );\n\n\t\t\t\tcurrentPolygonOffsetFactor = factor;\n\t\t\t\tcurrentPolygonOffsetUnits = units;\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tdisable( 32823 );\n\n\t\t}\n\n\t}\n\n\tfunction setScissorTest( scissorTest ) {\n\n\t\tif ( scissorTest ) {\n\n\t\t\tenable( 3089 );\n\n\t\t} else {\n\n\t\t\tdisable( 3089 );\n\n\t\t}\n\n\t}\n\n\t// texture\n\n\tfunction activeTexture( webglSlot ) {\n\n\t\tif ( webglSlot === undefined ) webglSlot = 33984 + maxTextures - 1;\n\n\t\tif ( currentTextureSlot !== webglSlot ) {\n\n\t\t\tgl.activeTexture( webglSlot );\n\t\t\tcurrentTextureSlot = webglSlot;\n\n\t\t}\n\n\t}\n\n\tfunction bindTexture( webglType, webglTexture ) {\n\n\t\tif ( currentTextureSlot === null ) {\n\n\t\t\tactiveTexture();\n\n\t\t}\n\n\t\tlet boundTexture = currentBoundTextures[ currentTextureSlot ];\n\n\t\tif ( boundTexture === undefined ) {\n\n\t\t\tboundTexture = { type: undefined, texture: undefined };\n\t\t\tcurrentBoundTextures[ currentTextureSlot ] = boundTexture;\n\n\t\t}\n\n\t\tif ( boundTexture.type !== webglType || boundTexture.texture !== webglTexture ) {\n\n\t\t\tgl.bindTexture( webglType, webglTexture || emptyTextures[ webglType ] );\n\n\t\t\tboundTexture.type = webglType;\n\t\t\tboundTexture.texture = webglTexture;\n\n\t\t}\n\n\t}\n\n\tfunction unbindTexture() {\n\n\t\tconst boundTexture = currentBoundTextures[ currentTextureSlot ];\n\n\t\tif ( boundTexture !== undefined && boundTexture.type !== undefined ) {\n\n\t\t\tgl.bindTexture( boundTexture.type, null );\n\n\t\t\tboundTexture.type = undefined;\n\t\t\tboundTexture.texture = undefined;\n\n\t\t}\n\n\t}\n\n\tfunction compressedTexImage2D() {\n\n\t\ttry {\n\n\t\t\tgl.compressedTexImage2D.apply( gl, arguments );\n\n\t\t} catch ( error ) {\n\n\t\t\tconsole.error( 'THREE.WebGLState:', error );\n\n\t\t}\n\n\t}\n\n\tfunction texSubImage2D() {\n\n\t\ttry {\n\n\t\t\tgl.texSubImage2D.apply( gl, arguments );\n\n\t\t} catch ( error ) {\n\n\t\t\tconsole.error( 'THREE.WebGLState:', error );\n\n\t\t}\n\n\t}\n\n\tfunction texSubImage3D() {\n\n\t\ttry {\n\n\t\t\tgl.texSubImage3D.apply( gl, arguments );\n\n\t\t} catch ( error ) {\n\n\t\t\tconsole.error( 'THREE.WebGLState:', error );\n\n\t\t}\n\n\t}\n\n\tfunction compressedTexSubImage2D() {\n\n\t\ttry {\n\n\t\t\tgl.compressedTexSubImage2D.apply( gl, arguments );\n\n\t\t} catch ( error ) {\n\n\t\t\tconsole.error( 'THREE.WebGLState:', error );\n\n\t\t}\n\n\t}\n\n\tfunction texStorage2D() {\n\n\t\ttry {\n\n\t\t\tgl.texStorage2D.apply( gl, arguments );\n\n\t\t} catch ( error ) {\n\n\t\t\tconsole.error( 'THREE.WebGLState:', error );\n\n\t\t}\n\n\t}\n\n\tfunction texStorage3D() {\n\n\t\ttry {\n\n\t\t\tgl.texStorage3D.apply( gl, arguments );\n\n\t\t} catch ( error ) {\n\n\t\t\tconsole.error( 'THREE.WebGLState:', error );\n\n\t\t}\n\n\t}\n\n\tfunction texImage2D() {\n\n\t\ttry {\n\n\t\t\tgl.texImage2D.apply( gl, arguments );\n\n\t\t} catch ( error ) {\n\n\t\t\tconsole.error( 'THREE.WebGLState:', error );\n\n\t\t}\n\n\t}\n\n\tfunction texImage3D() {\n\n\t\ttry {\n\n\t\t\tgl.texImage3D.apply( gl, arguments );\n\n\t\t} catch ( error ) {\n\n\t\t\tconsole.error( 'THREE.WebGLState:', error );\n\n\t\t}\n\n\t}\n\n\t//\n\n\tfunction scissor( scissor ) {\n\n\t\tif ( currentScissor.equals( scissor ) === false ) {\n\n\t\t\tgl.scissor( scissor.x, scissor.y, scissor.z, scissor.w );\n\t\t\tcurrentScissor.copy( scissor );\n\n\t\t}\n\n\t}\n\n\tfunction viewport( viewport ) {\n\n\t\tif ( currentViewport.equals( viewport ) === false ) {\n\n\t\t\tgl.viewport( viewport.x, viewport.y, viewport.z, viewport.w );\n\t\t\tcurrentViewport.copy( viewport );\n\n\t\t}\n\n\t}\n\n\t//\n\n\tfunction reset() {\n\n\t\t// reset state\n\n\t\tgl.disable( 3042 );\n\t\tgl.disable( 2884 );\n\t\tgl.disable( 2929 );\n\t\tgl.disable( 32823 );\n\t\tgl.disable( 3089 );\n\t\tgl.disable( 2960 );\n\t\tgl.disable( 32926 );\n\n\t\tgl.blendEquation( 32774 );\n\t\tgl.blendFunc( 1, 0 );\n\t\tgl.blendFuncSeparate( 1, 0, 1, 0 );\n\n\t\tgl.colorMask( true, true, true, true );\n\t\tgl.clearColor( 0, 0, 0, 0 );\n\n\t\tgl.depthMask( true );\n\t\tgl.depthFunc( 513 );\n\t\tgl.clearDepth( 1 );\n\n\t\tgl.stencilMask( 0xffffffff );\n\t\tgl.stencilFunc( 519, 0, 0xffffffff );\n\t\tgl.stencilOp( 7680, 7680, 7680 );\n\t\tgl.clearStencil( 0 );\n\n\t\tgl.cullFace( 1029 );\n\t\tgl.frontFace( 2305 );\n\n\t\tgl.polygonOffset( 0, 0 );\n\n\t\tgl.activeTexture( 33984 );\n\n\t\tgl.bindFramebuffer( 36160, null );\n\n\t\tif ( isWebGL2 === true ) {\n\n\t\t\tgl.bindFramebuffer( 36009, null );\n\t\t\tgl.bindFramebuffer( 36008, null );\n\n\t\t}\n\n\t\tgl.useProgram( null );\n\n\t\tgl.lineWidth( 1 );\n\n\t\tgl.scissor( 0, 0, gl.canvas.width, gl.canvas.height );\n\t\tgl.viewport( 0, 0, gl.canvas.width, gl.canvas.height );\n\n\t\t// reset internals\n\n\t\tenabledCapabilities = {};\n\n\t\tcurrentTextureSlot = null;\n\t\tcurrentBoundTextures = {};\n\n\t\tcurrentBoundFramebuffers = {};\n\t\tcurrentDrawbuffers = new WeakMap();\n\t\tdefaultDrawbuffers = [];\n\n\t\tcurrentProgram = null;\n\n\t\tcurrentBlendingEnabled = false;\n\t\tcurrentBlending = null;\n\t\tcurrentBlendEquation = null;\n\t\tcurrentBlendSrc = null;\n\t\tcurrentBlendDst = null;\n\t\tcurrentBlendEquationAlpha = null;\n\t\tcurrentBlendSrcAlpha = null;\n\t\tcurrentBlendDstAlpha = null;\n\t\tcurrentPremultipledAlpha = false;\n\n\t\tcurrentFlipSided = null;\n\t\tcurrentCullFace = null;\n\n\t\tcurrentLineWidth = null;\n\n\t\tcurrentPolygonOffsetFactor = null;\n\t\tcurrentPolygonOffsetUnits = null;\n\n\t\tcurrentScissor.set( 0, 0, gl.canvas.width, gl.canvas.height );\n\t\tcurrentViewport.set( 0, 0, gl.canvas.width, gl.canvas.height );\n\n\t\tcolorBuffer.reset();\n\t\tdepthBuffer.reset();\n\t\tstencilBuffer.reset();\n\n\t}\n\n\treturn {\n\n\t\tbuffers: {\n\t\t\tcolor: colorBuffer,\n\t\t\tdepth: depthBuffer,\n\t\t\tstencil: stencilBuffer\n\t\t},\n\n\t\tenable: enable,\n\t\tdisable: disable,\n\n\t\tbindFramebuffer: bindFramebuffer,\n\t\tdrawBuffers: drawBuffers,\n\n\t\tuseProgram: useProgram,\n\n\t\tsetBlending: setBlending,\n\t\tsetMaterial: setMaterial,\n\n\t\tsetFlipSided: setFlipSided,\n\t\tsetCullFace: setCullFace,\n\n\t\tsetLineWidth: setLineWidth,\n\t\tsetPolygonOffset: setPolygonOffset,\n\n\t\tsetScissorTest: setScissorTest,\n\n\t\tactiveTexture: activeTexture,\n\t\tbindTexture: bindTexture,\n\t\tunbindTexture: unbindTexture,\n\t\tcompressedTexImage2D: compressedTexImage2D,\n\t\ttexImage2D: texImage2D,\n\t\ttexImage3D: texImage3D,\n\n\t\ttexStorage2D: texStorage2D,\n\t\ttexStorage3D: texStorage3D,\n\t\ttexSubImage2D: texSubImage2D,\n\t\ttexSubImage3D: texSubImage3D,\n\t\tcompressedTexSubImage2D: compressedTexSubImage2D,\n\n\t\tscissor: scissor,\n\t\tviewport: viewport,\n\n\t\treset: reset\n\n\t};\n\n}\n\nfunction WebGLTextures( _gl, extensions, state, properties, capabilities, utils, info ) {\n\n\tconst isWebGL2 = capabilities.isWebGL2;\n\tconst maxTextures = capabilities.maxTextures;\n\tconst maxCubemapSize = capabilities.maxCubemapSize;\n\tconst maxTextureSize = capabilities.maxTextureSize;\n\tconst maxSamples = capabilities.maxSamples;\n\tconst multisampledRTTExt = extensions.has( 'WEBGL_multisampled_render_to_texture' ) ? extensions.get( 'WEBGL_multisampled_render_to_texture' ) : null;\n\tconst supportsInvalidateFramebuffer = /OculusBrowser/g.test( navigator.userAgent );\n\n\tconst _videoTextures = new WeakMap();\n\tlet _canvas;\n\n\tconst _sources = new WeakMap(); // maps WebglTexture objects to instances of Source\n\n\t// cordova iOS (as of 5.0) still uses UIWebView, which provides OffscreenCanvas,\n\t// also OffscreenCanvas.getContext(\"webgl\"), but not OffscreenCanvas.getContext(\"2d\")!\n\t// Some implementations may only implement OffscreenCanvas partially (e.g. lacking 2d).\n\n\tlet useOffscreenCanvas = false;\n\n\ttry {\n\n\t\tuseOffscreenCanvas = typeof OffscreenCanvas !== 'undefined'\n\t\t\t// eslint-disable-next-line compat/compat\n\t\t\t&& ( new OffscreenCanvas( 1, 1 ).getContext( '2d' ) ) !== null;\n\n\t} catch ( err ) {\n\n\t\t// Ignore any errors\n\n\t}\n\n\tfunction createCanvas( width, height ) {\n\n\t\t// Use OffscreenCanvas when available. Specially needed in web workers\n\n\t\treturn useOffscreenCanvas ?\n\t\t\t// eslint-disable-next-line compat/compat\n\t\t\tnew OffscreenCanvas( width, height ) : createElementNS( 'canvas' );\n\n\t}\n\n\tfunction resizeImage( image, needsPowerOfTwo, needsNewCanvas, maxSize ) {\n\n\t\tlet scale = 1;\n\n\t\t// handle case if texture exceeds max size\n\n\t\tif ( image.width > maxSize || image.height > maxSize ) {\n\n\t\t\tscale = maxSize / Math.max( image.width, image.height );\n\n\t\t}\n\n\t\t// only perform resize if necessary\n\n\t\tif ( scale < 1 || needsPowerOfTwo === true ) {\n\n\t\t\t// only perform resize for certain image types\n\n\t\t\tif ( ( typeof HTMLImageElement !== 'undefined' && image instanceof HTMLImageElement ) ||\n\t\t\t\t( typeof HTMLCanvasElement !== 'undefined' && image instanceof HTMLCanvasElement ) ||\n\t\t\t\t( typeof ImageBitmap !== 'undefined' && image instanceof ImageBitmap ) ) {\n\n\t\t\t\tconst floor = needsPowerOfTwo ? floorPowerOfTwo : Math.floor;\n\n\t\t\t\tconst width = floor( scale * image.width );\n\t\t\t\tconst height = floor( scale * image.height );\n\n\t\t\t\tif ( _canvas === undefined ) _canvas = createCanvas( width, height );\n\n\t\t\t\t// cube textures can't reuse the same canvas\n\n\t\t\t\tconst canvas = needsNewCanvas ? createCanvas( width, height ) : _canvas;\n\n\t\t\t\tcanvas.width = width;\n\t\t\t\tcanvas.height = height;\n\n\t\t\t\tconst context = canvas.getContext( '2d' );\n\t\t\t\tcontext.drawImage( image, 0, 0, width, height );\n\n\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: Texture has been resized from (' + image.width + 'x' + image.height + ') to (' + width + 'x' + height + ').' );\n\n\t\t\t\treturn canvas;\n\n\t\t\t} else {\n\n\t\t\t\tif ( 'data' in image ) {\n\n\t\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: Image in DataTexture is too big (' + image.width + 'x' + image.height + ').' );\n\n\t\t\t\t}\n\n\t\t\t\treturn image;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn image;\n\n\t}\n\n\tfunction isPowerOfTwo$1( image ) {\n\n\t\treturn isPowerOfTwo( image.width ) && isPowerOfTwo( image.height );\n\n\t}\n\n\tfunction textureNeedsPowerOfTwo( texture ) {\n\n\t\tif ( isWebGL2 ) return false;\n\n\t\treturn ( texture.wrapS !== ClampToEdgeWrapping || texture.wrapT !== ClampToEdgeWrapping ) ||\n\t\t\t( texture.minFilter !== NearestFilter && texture.minFilter !== LinearFilter );\n\n\t}\n\n\tfunction textureNeedsGenerateMipmaps( texture, supportsMips ) {\n\n\t\treturn texture.generateMipmaps && supportsMips &&\n\t\t\ttexture.minFilter !== NearestFilter && texture.minFilter !== LinearFilter;\n\n\t}\n\n\tfunction generateMipmap( target ) {\n\n\t\t_gl.generateMipmap( target );\n\n\t}\n\n\tfunction getInternalFormat( internalFormatName, glFormat, glType, encoding, isVideoTexture = false ) {\n\n\t\tif ( isWebGL2 === false ) return glFormat;\n\n\t\tif ( internalFormatName !== null ) {\n\n\t\t\tif ( _gl[ internalFormatName ] !== undefined ) return _gl[ internalFormatName ];\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: Attempt to use non-existing WebGL internal format \\'' + internalFormatName + '\\'' );\n\n\t\t}\n\n\t\tlet internalFormat = glFormat;\n\n\t\tif ( glFormat === 6403 ) {\n\n\t\t\tif ( glType === 5126 ) internalFormat = 33326;\n\t\t\tif ( glType === 5131 ) internalFormat = 33325;\n\t\t\tif ( glType === 5121 ) internalFormat = 33321;\n\n\t\t}\n\n\t\tif ( glFormat === 33319 ) {\n\n\t\t\tif ( glType === 5126 ) internalFormat = 33328;\n\t\t\tif ( glType === 5131 ) internalFormat = 33327;\n\t\t\tif ( glType === 5121 ) internalFormat = 33323;\n\n\t\t}\n\n\t\tif ( glFormat === 6408 ) {\n\n\t\t\tif ( glType === 5126 ) internalFormat = 34836;\n\t\t\tif ( glType === 5131 ) internalFormat = 34842;\n\t\t\tif ( glType === 5121 ) internalFormat = ( encoding === sRGBEncoding && isVideoTexture === false ) ? 35907 : 32856;\n\t\t\tif ( glType === 32819 ) internalFormat = 32854;\n\t\t\tif ( glType === 32820 ) internalFormat = 32855;\n\n\t\t}\n\n\t\tif ( internalFormat === 33325 || internalFormat === 33326 ||\n\t\t\tinternalFormat === 33327 || internalFormat === 33328 ||\n\t\t\tinternalFormat === 34842 || internalFormat === 34836 ) {\n\n\t\t\textensions.get( 'EXT_color_buffer_float' );\n\n\t\t}\n\n\t\treturn internalFormat;\n\n\t}\n\n\tfunction getMipLevels( texture, image, supportsMips ) {\n\n\t\tif ( textureNeedsGenerateMipmaps( texture, supportsMips ) === true || ( texture.isFramebufferTexture && texture.minFilter !== NearestFilter && texture.minFilter !== LinearFilter ) ) {\n\n\t\t\treturn Math.log2( Math.max( image.width, image.height ) ) + 1;\n\n\t\t} else if ( texture.mipmaps !== undefined && texture.mipmaps.length > 0 ) {\n\n\t\t\t// user-defined mipmaps\n\n\t\t\treturn texture.mipmaps.length;\n\n\t\t} else if ( texture.isCompressedTexture && Array.isArray( texture.image ) ) {\n\n\t\t\treturn image.mipmaps.length;\n\n\t\t} else {\n\n\t\t\t// texture without mipmaps (only base level)\n\n\t\t\treturn 1;\n\n\t\t}\n\n\t}\n\n\t// Fallback filters for non-power-of-2 textures\n\n\tfunction filterFallback( f ) {\n\n\t\tif ( f === NearestFilter || f === NearestMipmapNearestFilter || f === NearestMipmapLinearFilter ) {\n\n\t\t\treturn 9728;\n\n\t\t}\n\n\t\treturn 9729;\n\n\t}\n\n\t//\n\n\tfunction onTextureDispose( event ) {\n\n\t\tconst texture = event.target;\n\n\t\ttexture.removeEventListener( 'dispose', onTextureDispose );\n\n\t\tdeallocateTexture( texture );\n\n\t\tif ( texture.isVideoTexture ) {\n\n\t\t\t_videoTextures.delete( texture );\n\n\t\t}\n\n\t}\n\n\tfunction onRenderTargetDispose( event ) {\n\n\t\tconst renderTarget = event.target;\n\n\t\trenderTarget.removeEventListener( 'dispose', onRenderTargetDispose );\n\n\t\tdeallocateRenderTarget( renderTarget );\n\n\t}\n\n\t//\n\n\tfunction deallocateTexture( texture ) {\n\n\t\tconst textureProperties = properties.get( texture );\n\n\t\tif ( textureProperties.__webglInit === undefined ) return;\n\n\t\t// check if it's necessary to remove the WebGLTexture object\n\n\t\tconst source = texture.source;\n\t\tconst webglTextures = _sources.get( source );\n\n\t\tif ( webglTextures ) {\n\n\t\t\tconst webglTexture = webglTextures[ textureProperties.__cacheKey ];\n\t\t\twebglTexture.usedTimes --;\n\n\t\t\t// the WebGLTexture object is not used anymore, remove it\n\n\t\t\tif ( webglTexture.usedTimes === 0 ) {\n\n\t\t\t\tdeleteTexture( texture );\n\n\t\t\t}\n\n\t\t\t// remove the weak map entry if no WebGLTexture uses the source anymore\n\n\t\t\tif ( Object.keys( webglTextures ).length === 0 ) {\n\n\t\t\t\t_sources.delete( source );\n\n\t\t\t}\n\n\t\t}\n\n\t\tproperties.remove( texture );\n\n\t}\n\n\tfunction deleteTexture( texture ) {\n\n\t\tconst textureProperties = properties.get( texture );\n\t\t_gl.deleteTexture( textureProperties.__webglTexture );\n\n\t\tconst source = texture.source;\n\t\tconst webglTextures = _sources.get( source );\n\t\tdelete webglTextures[ textureProperties.__cacheKey ];\n\n\t\tinfo.memory.textures --;\n\n\t}\n\n\tfunction deallocateRenderTarget( renderTarget ) {\n\n\t\tconst texture = renderTarget.texture;\n\n\t\tconst renderTargetProperties = properties.get( renderTarget );\n\t\tconst textureProperties = properties.get( texture );\n\n\t\tif ( textureProperties.__webglTexture !== undefined ) {\n\n\t\t\t_gl.deleteTexture( textureProperties.__webglTexture );\n\n\t\t\tinfo.memory.textures --;\n\n\t\t}\n\n\t\tif ( renderTarget.depthTexture ) {\n\n\t\t\trenderTarget.depthTexture.dispose();\n\n\t\t}\n\n\t\tif ( renderTarget.isWebGLCubeRenderTarget ) {\n\n\t\t\tfor ( let i = 0; i < 6; i ++ ) {\n\n\t\t\t\t_gl.deleteFramebuffer( renderTargetProperties.__webglFramebuffer[ i ] );\n\t\t\t\tif ( renderTargetProperties.__webglDepthbuffer ) _gl.deleteRenderbuffer( renderTargetProperties.__webglDepthbuffer[ i ] );\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\t_gl.deleteFramebuffer( renderTargetProperties.__webglFramebuffer );\n\t\t\tif ( renderTargetProperties.__webglDepthbuffer ) _gl.deleteRenderbuffer( renderTargetProperties.__webglDepthbuffer );\n\t\t\tif ( renderTargetProperties.__webglMultisampledFramebuffer ) _gl.deleteFramebuffer( renderTargetProperties.__webglMultisampledFramebuffer );\n\n\t\t\tif ( renderTargetProperties.__webglColorRenderbuffer ) {\n\n\t\t\t\tfor ( let i = 0; i < renderTargetProperties.__webglColorRenderbuffer.length; i ++ ) {\n\n\t\t\t\t\tif ( renderTargetProperties.__webglColorRenderbuffer[ i ] ) _gl.deleteRenderbuffer( renderTargetProperties.__webglColorRenderbuffer[ i ] );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( renderTargetProperties.__webglDepthRenderbuffer ) _gl.deleteRenderbuffer( renderTargetProperties.__webglDepthRenderbuffer );\n\n\t\t}\n\n\t\tif ( renderTarget.isWebGLMultipleRenderTargets ) {\n\n\t\t\tfor ( let i = 0, il = texture.length; i < il; i ++ ) {\n\n\t\t\t\tconst attachmentProperties = properties.get( texture[ i ] );\n\n\t\t\t\tif ( attachmentProperties.__webglTexture ) {\n\n\t\t\t\t\t_gl.deleteTexture( attachmentProperties.__webglTexture );\n\n\t\t\t\t\tinfo.memory.textures --;\n\n\t\t\t\t}\n\n\t\t\t\tproperties.remove( texture[ i ] );\n\n\t\t\t}\n\n\t\t}\n\n\t\tproperties.remove( texture );\n\t\tproperties.remove( renderTarget );\n\n\t}\n\n\t//\n\n\tlet textureUnits = 0;\n\n\tfunction resetTextureUnits() {\n\n\t\ttextureUnits = 0;\n\n\t}\n\n\tfunction allocateTextureUnit() {\n\n\t\tconst textureUnit = textureUnits;\n\n\t\tif ( textureUnit >= maxTextures ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLTextures: Trying to use ' + textureUnit + ' texture units while this GPU supports only ' + maxTextures );\n\n\t\t}\n\n\t\ttextureUnits += 1;\n\n\t\treturn textureUnit;\n\n\t}\n\n\tfunction getTextureCacheKey( texture ) {\n\n\t\tconst array = [];\n\n\t\tarray.push( texture.wrapS );\n\t\tarray.push( texture.wrapT );\n\t\tarray.push( texture.magFilter );\n\t\tarray.push( texture.minFilter );\n\t\tarray.push( texture.anisotropy );\n\t\tarray.push( texture.internalFormat );\n\t\tarray.push( texture.format );\n\t\tarray.push( texture.type );\n\t\tarray.push( texture.generateMipmaps );\n\t\tarray.push( texture.premultiplyAlpha );\n\t\tarray.push( texture.flipY );\n\t\tarray.push( texture.unpackAlignment );\n\t\tarray.push( texture.encoding );\n\n\t\treturn array.join();\n\n\t}\n\n\t//\n\n\tfunction setTexture2D( texture, slot ) {\n\n\t\tconst textureProperties = properties.get( texture );\n\n\t\tif ( texture.isVideoTexture ) updateVideoTexture( texture );\n\n\t\tif ( texture.isRenderTargetTexture === false && texture.version > 0 && textureProperties.__version !== texture.version ) {\n\n\t\t\tconst image = texture.image;\n\n\t\t\tif ( image === null ) {\n\n\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: Texture marked for update but no image data found.' );\n\n\t\t\t} else if ( image.complete === false ) {\n\n\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: Texture marked for update but image is incomplete' );\n\n\t\t\t} else {\n\n\t\t\t\tuploadTexture( textureProperties, texture, slot );\n\t\t\t\treturn;\n\n\t\t\t}\n\n\t\t}\n\n\t\tstate.activeTexture( 33984 + slot );\n\t\tstate.bindTexture( 3553, textureProperties.__webglTexture );\n\n\t}\n\n\tfunction setTexture2DArray( texture, slot ) {\n\n\t\tconst textureProperties = properties.get( texture );\n\n\t\tif ( texture.version > 0 && textureProperties.__version !== texture.version ) {\n\n\t\t\tuploadTexture( textureProperties, texture, slot );\n\t\t\treturn;\n\n\t\t}\n\n\t\tstate.activeTexture( 33984 + slot );\n\t\tstate.bindTexture( 35866, textureProperties.__webglTexture );\n\n\t}\n\n\tfunction setTexture3D( texture, slot ) {\n\n\t\tconst textureProperties = properties.get( texture );\n\n\t\tif ( texture.version > 0 && textureProperties.__version !== texture.version ) {\n\n\t\t\tuploadTexture( textureProperties, texture, slot );\n\t\t\treturn;\n\n\t\t}\n\n\t\tstate.activeTexture( 33984 + slot );\n\t\tstate.bindTexture( 32879, textureProperties.__webglTexture );\n\n\t}\n\n\tfunction setTextureCube( texture, slot ) {\n\n\t\tconst textureProperties = properties.get( texture );\n\n\t\tif ( texture.version > 0 && textureProperties.__version !== texture.version ) {\n\n\t\t\tuploadCubeTexture( textureProperties, texture, slot );\n\t\t\treturn;\n\n\t\t}\n\n\t\tstate.activeTexture( 33984 + slot );\n\t\tstate.bindTexture( 34067, textureProperties.__webglTexture );\n\n\t}\n\n\tconst wrappingToGL = {\n\t\t[ RepeatWrapping ]: 10497,\n\t\t[ ClampToEdgeWrapping ]: 33071,\n\t\t[ MirroredRepeatWrapping ]: 33648\n\t};\n\n\tconst filterToGL = {\n\t\t[ NearestFilter ]: 9728,\n\t\t[ NearestMipmapNearestFilter ]: 9984,\n\t\t[ NearestMipmapLinearFilter ]: 9986,\n\n\t\t[ LinearFilter ]: 9729,\n\t\t[ LinearMipmapNearestFilter ]: 9985,\n\t\t[ LinearMipmapLinearFilter ]: 9987\n\t};\n\n\tfunction setTextureParameters( textureType, texture, supportsMips ) {\n\n\t\tif ( supportsMips ) {\n\n\t\t\t_gl.texParameteri( textureType, 10242, wrappingToGL[ texture.wrapS ] );\n\t\t\t_gl.texParameteri( textureType, 10243, wrappingToGL[ texture.wrapT ] );\n\n\t\t\tif ( textureType === 32879 || textureType === 35866 ) {\n\n\t\t\t\t_gl.texParameteri( textureType, 32882, wrappingToGL[ texture.wrapR ] );\n\n\t\t\t}\n\n\t\t\t_gl.texParameteri( textureType, 10240, filterToGL[ texture.magFilter ] );\n\t\t\t_gl.texParameteri( textureType, 10241, filterToGL[ texture.minFilter ] );\n\n\t\t} else {\n\n\t\t\t_gl.texParameteri( textureType, 10242, 33071 );\n\t\t\t_gl.texParameteri( textureType, 10243, 33071 );\n\n\t\t\tif ( textureType === 32879 || textureType === 35866 ) {\n\n\t\t\t\t_gl.texParameteri( textureType, 32882, 33071 );\n\n\t\t\t}\n\n\t\t\tif ( texture.wrapS !== ClampToEdgeWrapping || texture.wrapT !== ClampToEdgeWrapping ) {\n\n\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: Texture is not power of two. Texture.wrapS and Texture.wrapT should be set to THREE.ClampToEdgeWrapping.' );\n\n\t\t\t}\n\n\t\t\t_gl.texParameteri( textureType, 10240, filterFallback( texture.magFilter ) );\n\t\t\t_gl.texParameteri( textureType, 10241, filterFallback( texture.minFilter ) );\n\n\t\t\tif ( texture.minFilter !== NearestFilter && texture.minFilter !== LinearFilter ) {\n\n\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: Texture is not power of two. Texture.minFilter should be set to THREE.NearestFilter or THREE.LinearFilter.' );\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( extensions.has( 'EXT_texture_filter_anisotropic' ) === true ) {\n\n\t\t\tconst extension = extensions.get( 'EXT_texture_filter_anisotropic' );\n\n\t\t\tif ( texture.type === FloatType && extensions.has( 'OES_texture_float_linear' ) === false ) return; // verify extension for WebGL 1 and WebGL 2\n\t\t\tif ( isWebGL2 === false && ( texture.type === HalfFloatType && extensions.has( 'OES_texture_half_float_linear' ) === false ) ) return; // verify extension for WebGL 1 only\n\n\t\t\tif ( texture.anisotropy > 1 || properties.get( texture ).__currentAnisotropy ) {\n\n\t\t\t\t_gl.texParameterf( textureType, extension.TEXTURE_MAX_ANISOTROPY_EXT, Math.min( texture.anisotropy, capabilities.getMaxAnisotropy() ) );\n\t\t\t\tproperties.get( texture ).__currentAnisotropy = texture.anisotropy;\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tfunction initTexture( textureProperties, texture ) {\n\n\t\tlet forceUpload = false;\n\n\t\tif ( textureProperties.__webglInit === undefined ) {\n\n\t\t\ttextureProperties.__webglInit = true;\n\n\t\t\ttexture.addEventListener( 'dispose', onTextureDispose );\n\n\t\t}\n\n\t\t// create Source <-> WebGLTextures mapping if necessary\n\n\t\tconst source = texture.source;\n\t\tlet webglTextures = _sources.get( source );\n\n\t\tif ( webglTextures === undefined ) {\n\n\t\t\twebglTextures = {};\n\t\t\t_sources.set( source, webglTextures );\n\n\t\t}\n\n\t\t// check if there is already a WebGLTexture object for the given texture parameters\n\n\t\tconst textureCacheKey = getTextureCacheKey( texture );\n\n\t\tif ( textureCacheKey !== textureProperties.__cacheKey ) {\n\n\t\t\t// if not, create a new instance of WebGLTexture\n\n\t\t\tif ( webglTextures[ textureCacheKey ] === undefined ) {\n\n\t\t\t\t// create new entry\n\n\t\t\t\twebglTextures[ textureCacheKey ] = {\n\t\t\t\t\ttexture: _gl.createTexture(),\n\t\t\t\t\tusedTimes: 0\n\t\t\t\t};\n\n\t\t\t\tinfo.memory.textures ++;\n\n\t\t\t\t// when a new instance of WebGLTexture was created, a texture upload is required\n\t\t\t\t// even if the image contents are identical\n\n\t\t\t\tforceUpload = true;\n\n\t\t\t}\n\n\t\t\twebglTextures[ textureCacheKey ].usedTimes ++;\n\n\t\t\t// every time the texture cache key changes, it's necessary to check if an instance of\n\t\t\t// WebGLTexture can be deleted in order to avoid a memory leak.\n\n\t\t\tconst webglTexture = webglTextures[ textureProperties.__cacheKey ];\n\n\t\t\tif ( webglTexture !== undefined ) {\n\n\t\t\t\twebglTextures[ textureProperties.__cacheKey ].usedTimes --;\n\n\t\t\t\tif ( webglTexture.usedTimes === 0 ) {\n\n\t\t\t\t\tdeleteTexture( texture );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// store references to cache key and WebGLTexture object\n\n\t\t\ttextureProperties.__cacheKey = textureCacheKey;\n\t\t\ttextureProperties.__webglTexture = webglTextures[ textureCacheKey ].texture;\n\n\t\t}\n\n\t\treturn forceUpload;\n\n\t}\n\n\tfunction uploadTexture( textureProperties, texture, slot ) {\n\n\t\tlet textureType = 3553;\n\n\t\tif ( texture.isDataArrayTexture ) textureType = 35866;\n\t\tif ( texture.isData3DTexture ) textureType = 32879;\n\n\t\tconst forceUpload = initTexture( textureProperties, texture );\n\t\tconst source = texture.source;\n\n\t\tstate.activeTexture( 33984 + slot );\n\t\tstate.bindTexture( textureType, textureProperties.__webglTexture );\n\n\t\tif ( source.version !== source.__currentVersion || forceUpload === true ) {\n\n\t\t\t_gl.pixelStorei( 37440, texture.flipY );\n\t\t\t_gl.pixelStorei( 37441, texture.premultiplyAlpha );\n\t\t\t_gl.pixelStorei( 3317, texture.unpackAlignment );\n\t\t\t_gl.pixelStorei( 37443, 0 );\n\n\t\t\tconst needsPowerOfTwo = textureNeedsPowerOfTwo( texture ) && isPowerOfTwo$1( texture.image ) === false;\n\t\t\tlet image = resizeImage( texture.image, needsPowerOfTwo, false, maxTextureSize );\n\t\t\timage = verifyColorSpace( texture, image );\n\n\t\t\tconst supportsMips = isPowerOfTwo$1( image ) || isWebGL2,\n\t\t\t\tglFormat = utils.convert( texture.format, texture.encoding );\n\n\t\t\tlet glType = utils.convert( texture.type ),\n\t\t\t\tglInternalFormat = getInternalFormat( texture.internalFormat, glFormat, glType, texture.encoding, texture.isVideoTexture );\n\n\t\t\tsetTextureParameters( textureType, texture, supportsMips );\n\n\t\t\tlet mipmap;\n\t\t\tconst mipmaps = texture.mipmaps;\n\n\t\t\tconst useTexStorage = ( isWebGL2 && texture.isVideoTexture !== true );\n\t\t\tconst allocateMemory = ( source.__currentVersion === undefined ) || ( forceUpload === true );\n\t\t\tconst levels = getMipLevels( texture, image, supportsMips );\n\n\t\t\tif ( texture.isDepthTexture ) {\n\n\t\t\t\t// populate depth texture with dummy data\n\n\t\t\t\tglInternalFormat = 6402;\n\n\t\t\t\tif ( isWebGL2 ) {\n\n\t\t\t\t\tif ( texture.type === FloatType ) {\n\n\t\t\t\t\t\tglInternalFormat = 36012;\n\n\t\t\t\t\t} else if ( texture.type === UnsignedIntType ) {\n\n\t\t\t\t\t\tglInternalFormat = 33190;\n\n\t\t\t\t\t} else if ( texture.type === UnsignedInt248Type ) {\n\n\t\t\t\t\t\tglInternalFormat = 35056;\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tglInternalFormat = 33189; // WebGL2 requires sized internalformat for glTexImage2D\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\tif ( texture.type === FloatType ) {\n\n\t\t\t\t\t\tconsole.error( 'WebGLRenderer: Floating point depth texture requires WebGL2.' );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\t// validation checks for WebGL 1\n\n\t\t\t\tif ( texture.format === DepthFormat && glInternalFormat === 6402 ) {\n\n\t\t\t\t\t// The error INVALID_OPERATION is generated by texImage2D if format and internalformat are\n\t\t\t\t\t// DEPTH_COMPONENT and type is not UNSIGNED_SHORT or UNSIGNED_INT\n\t\t\t\t\t// (https://www.khronos.org/registry/webgl/extensions/WEBGL_depth_texture/)\n\t\t\t\t\tif ( texture.type !== UnsignedShortType && texture.type !== UnsignedIntType ) {\n\n\t\t\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: Use UnsignedShortType or UnsignedIntType for DepthFormat DepthTexture.' );\n\n\t\t\t\t\t\ttexture.type = UnsignedIntType;\n\t\t\t\t\t\tglType = utils.convert( texture.type );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\tif ( texture.format === DepthStencilFormat && glInternalFormat === 6402 ) {\n\n\t\t\t\t\t// Depth stencil textures need the DEPTH_STENCIL internal format\n\t\t\t\t\t// (https://www.khronos.org/registry/webgl/extensions/WEBGL_depth_texture/)\n\t\t\t\t\tglInternalFormat = 34041;\n\n\t\t\t\t\t// The error INVALID_OPERATION is generated by texImage2D if format and internalformat are\n\t\t\t\t\t// DEPTH_STENCIL and type is not UNSIGNED_INT_24_8_WEBGL.\n\t\t\t\t\t// (https://www.khronos.org/registry/webgl/extensions/WEBGL_depth_texture/)\n\t\t\t\t\tif ( texture.type !== UnsignedInt248Type ) {\n\n\t\t\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: Use UnsignedInt248Type for DepthStencilFormat DepthTexture.' );\n\n\t\t\t\t\t\ttexture.type = UnsignedInt248Type;\n\t\t\t\t\t\tglType = utils.convert( texture.type );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\t//\n\n\t\t\t\tif ( allocateMemory ) {\n\n\t\t\t\t\tif ( useTexStorage ) {\n\n\t\t\t\t\t\tstate.texStorage2D( 3553, 1, glInternalFormat, image.width, image.height );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tstate.texImage2D( 3553, 0, glInternalFormat, image.width, image.height, 0, glFormat, glType, null );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t} else if ( texture.isDataTexture ) {\n\n\t\t\t\t// use manually created mipmaps if available\n\t\t\t\t// if there are no manual mipmaps\n\t\t\t\t// set 0 level mipmap and then use GL to generate other mipmap levels\n\n\t\t\t\tif ( mipmaps.length > 0 && supportsMips ) {\n\n\t\t\t\t\tif ( useTexStorage && allocateMemory ) {\n\n\t\t\t\t\t\tstate.texStorage2D( 3553, levels, glInternalFormat, mipmaps[ 0 ].width, mipmaps[ 0 ].height );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tfor ( let i = 0, il = mipmaps.length; i < il; i ++ ) {\n\n\t\t\t\t\t\tmipmap = mipmaps[ i ];\n\n\t\t\t\t\t\tif ( useTexStorage ) {\n\n\t\t\t\t\t\t\tstate.texSubImage2D( 3553, i, 0, 0, mipmap.width, mipmap.height, glFormat, glType, mipmap.data );\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\tstate.texImage2D( 3553, i, glInternalFormat, mipmap.width, mipmap.height, 0, glFormat, glType, mipmap.data );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t\ttexture.generateMipmaps = false;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tif ( useTexStorage ) {\n\n\t\t\t\t\t\tif ( allocateMemory ) {\n\n\t\t\t\t\t\t\tstate.texStorage2D( 3553, levels, glInternalFormat, image.width, image.height );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tstate.texSubImage2D( 3553, 0, 0, 0, image.width, image.height, glFormat, glType, image.data );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tstate.texImage2D( 3553, 0, glInternalFormat, image.width, image.height, 0, glFormat, glType, image.data );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t} else if ( texture.isCompressedTexture ) {\n\n\t\t\t\tif ( useTexStorage && allocateMemory ) {\n\n\t\t\t\t\tstate.texStorage2D( 3553, levels, glInternalFormat, mipmaps[ 0 ].width, mipmaps[ 0 ].height );\n\n\t\t\t\t}\n\n\t\t\t\tfor ( let i = 0, il = mipmaps.length; i < il; i ++ ) {\n\n\t\t\t\t\tmipmap = mipmaps[ i ];\n\n\t\t\t\t\tif ( texture.format !== RGBAFormat ) {\n\n\t\t\t\t\t\tif ( glFormat !== null ) {\n\n\t\t\t\t\t\t\tif ( useTexStorage ) {\n\n\t\t\t\t\t\t\t\tstate.compressedTexSubImage2D( 3553, i, 0, 0, mipmap.width, mipmap.height, glFormat, mipmap.data );\n\n\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\tstate.compressedTexImage2D( 3553, i, glInternalFormat, mipmap.width, mipmap.height, 0, mipmap.data );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: Attempt to load unsupported compressed texture format in .uploadTexture()' );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tif ( useTexStorage ) {\n\n\t\t\t\t\t\t\tstate.texSubImage2D( 3553, i, 0, 0, mipmap.width, mipmap.height, glFormat, glType, mipmap.data );\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\tstate.texImage2D( 3553, i, glInternalFormat, mipmap.width, mipmap.height, 0, glFormat, glType, mipmap.data );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t} else if ( texture.isDataArrayTexture ) {\n\n\t\t\t\tif ( useTexStorage ) {\n\n\t\t\t\t\tif ( allocateMemory ) {\n\n\t\t\t\t\t\tstate.texStorage3D( 35866, levels, glInternalFormat, image.width, image.height, image.depth );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tstate.texSubImage3D( 35866, 0, 0, 0, 0, image.width, image.height, image.depth, glFormat, glType, image.data );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tstate.texImage3D( 35866, 0, glInternalFormat, image.width, image.height, image.depth, 0, glFormat, glType, image.data );\n\n\t\t\t\t}\n\n\t\t\t} else if ( texture.isData3DTexture ) {\n\n\t\t\t\tif ( useTexStorage ) {\n\n\t\t\t\t\tif ( allocateMemory ) {\n\n\t\t\t\t\t\tstate.texStorage3D( 32879, levels, glInternalFormat, image.width, image.height, image.depth );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tstate.texSubImage3D( 32879, 0, 0, 0, 0, image.width, image.height, image.depth, glFormat, glType, image.data );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tstate.texImage3D( 32879, 0, glInternalFormat, image.width, image.height, image.depth, 0, glFormat, glType, image.data );\n\n\t\t\t\t}\n\n\t\t\t} else if ( texture.isFramebufferTexture ) {\n\n\t\t\t\tif ( allocateMemory ) {\n\n\t\t\t\t\tif ( useTexStorage ) {\n\n\t\t\t\t\t\tstate.texStorage2D( 3553, levels, glInternalFormat, image.width, image.height );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tlet width = image.width, height = image.height;\n\n\t\t\t\t\t\tfor ( let i = 0; i < levels; i ++ ) {\n\n\t\t\t\t\t\t\tstate.texImage2D( 3553, i, glInternalFormat, width, height, 0, glFormat, glType, null );\n\n\t\t\t\t\t\t\twidth >>= 1;\n\t\t\t\t\t\t\theight >>= 1;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\t// regular Texture (image, video, canvas)\n\n\t\t\t\t// use manually created mipmaps if available\n\t\t\t\t// if there are no manual mipmaps\n\t\t\t\t// set 0 level mipmap and then use GL to generate other mipmap levels\n\n\t\t\t\tif ( mipmaps.length > 0 && supportsMips ) {\n\n\t\t\t\t\tif ( useTexStorage && allocateMemory ) {\n\n\t\t\t\t\t\tstate.texStorage2D( 3553, levels, glInternalFormat, mipmaps[ 0 ].width, mipmaps[ 0 ].height );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tfor ( let i = 0, il = mipmaps.length; i < il; i ++ ) {\n\n\t\t\t\t\t\tmipmap = mipmaps[ i ];\n\n\t\t\t\t\t\tif ( useTexStorage ) {\n\n\t\t\t\t\t\t\tstate.texSubImage2D( 3553, i, 0, 0, glFormat, glType, mipmap );\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\tstate.texImage2D( 3553, i, glInternalFormat, glFormat, glType, mipmap );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t\ttexture.generateMipmaps = false;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tif ( useTexStorage ) {\n\n\t\t\t\t\t\tif ( allocateMemory ) {\n\n\t\t\t\t\t\t\tstate.texStorage2D( 3553, levels, glInternalFormat, image.width, image.height );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tstate.texSubImage2D( 3553, 0, 0, 0, glFormat, glType, image );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tstate.texImage2D( 3553, 0, glInternalFormat, glFormat, glType, image );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( textureNeedsGenerateMipmaps( texture, supportsMips ) ) {\n\n\t\t\t\tgenerateMipmap( textureType );\n\n\t\t\t}\n\n\t\t\tsource.__currentVersion = source.version;\n\n\t\t\tif ( texture.onUpdate ) texture.onUpdate( texture );\n\n\t\t}\n\n\t\ttextureProperties.__version = texture.version;\n\n\t}\n\n\tfunction uploadCubeTexture( textureProperties, texture, slot ) {\n\n\t\tif ( texture.image.length !== 6 ) return;\n\n\t\tconst forceUpload = initTexture( textureProperties, texture );\n\t\tconst source = texture.source;\n\n\t\tstate.activeTexture( 33984 + slot );\n\t\tstate.bindTexture( 34067, textureProperties.__webglTexture );\n\n\t\tif ( source.version !== source.__currentVersion || forceUpload === true ) {\n\n\t\t\t_gl.pixelStorei( 37440, texture.flipY );\n\t\t\t_gl.pixelStorei( 37441, texture.premultiplyAlpha );\n\t\t\t_gl.pixelStorei( 3317, texture.unpackAlignment );\n\t\t\t_gl.pixelStorei( 37443, 0 );\n\n\t\t\tconst isCompressed = ( texture.isCompressedTexture || texture.image[ 0 ].isCompressedTexture );\n\t\t\tconst isDataTexture = ( texture.image[ 0 ] && texture.image[ 0 ].isDataTexture );\n\n\t\t\tconst cubeImage = [];\n\n\t\t\tfor ( let i = 0; i < 6; i ++ ) {\n\n\t\t\t\tif ( ! isCompressed && ! isDataTexture ) {\n\n\t\t\t\t\tcubeImage[ i ] = resizeImage( texture.image[ i ], false, true, maxCubemapSize );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tcubeImage[ i ] = isDataTexture ? texture.image[ i ].image : texture.image[ i ];\n\n\t\t\t\t}\n\n\t\t\t\tcubeImage[ i ] = verifyColorSpace( texture, cubeImage[ i ] );\n\n\t\t\t}\n\n\t\t\tconst image = cubeImage[ 0 ],\n\t\t\t\tsupportsMips = isPowerOfTwo$1( image ) || isWebGL2,\n\t\t\t\tglFormat = utils.convert( texture.format, texture.encoding ),\n\t\t\t\tglType = utils.convert( texture.type ),\n\t\t\t\tglInternalFormat = getInternalFormat( texture.internalFormat, glFormat, glType, texture.encoding );\n\n\t\t\tconst useTexStorage = ( isWebGL2 && texture.isVideoTexture !== true );\n\t\t\tconst allocateMemory = ( source.__currentVersion === undefined ) || ( forceUpload === true );\n\t\t\tlet levels = getMipLevels( texture, image, supportsMips );\n\n\t\t\tsetTextureParameters( 34067, texture, supportsMips );\n\n\t\t\tlet mipmaps;\n\n\t\t\tif ( isCompressed ) {\n\n\t\t\t\tif ( useTexStorage && allocateMemory ) {\n\n\t\t\t\t\tstate.texStorage2D( 34067, levels, glInternalFormat, image.width, image.height );\n\n\t\t\t\t}\n\n\t\t\t\tfor ( let i = 0; i < 6; i ++ ) {\n\n\t\t\t\t\tmipmaps = cubeImage[ i ].mipmaps;\n\n\t\t\t\t\tfor ( let j = 0; j < mipmaps.length; j ++ ) {\n\n\t\t\t\t\t\tconst mipmap = mipmaps[ j ];\n\n\t\t\t\t\t\tif ( texture.format !== RGBAFormat ) {\n\n\t\t\t\t\t\t\tif ( glFormat !== null ) {\n\n\t\t\t\t\t\t\t\tif ( useTexStorage ) {\n\n\t\t\t\t\t\t\t\t\tstate.compressedTexSubImage2D( 34069 + i, j, 0, 0, mipmap.width, mipmap.height, glFormat, mipmap.data );\n\n\t\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\t\tstate.compressedTexImage2D( 34069 + i, j, glInternalFormat, mipmap.width, mipmap.height, 0, mipmap.data );\n\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: Attempt to load unsupported compressed texture format in .setTextureCube()' );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\tif ( useTexStorage ) {\n\n\t\t\t\t\t\t\t\tstate.texSubImage2D( 34069 + i, j, 0, 0, mipmap.width, mipmap.height, glFormat, glType, mipmap.data );\n\n\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\tstate.texImage2D( 34069 + i, j, glInternalFormat, mipmap.width, mipmap.height, 0, glFormat, glType, mipmap.data );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\tmipmaps = texture.mipmaps;\n\n\t\t\t\tif ( useTexStorage && allocateMemory ) {\n\n\t\t\t\t\t// TODO: Uniformly handle mipmap definitions\n\t\t\t\t\t// Normal textures and compressed cube textures define base level + mips with their mipmap array\n\t\t\t\t\t// Uncompressed cube textures use their mipmap array only for mips (no base level)\n\n\t\t\t\t\tif ( mipmaps.length > 0 ) levels ++;\n\n\t\t\t\t\tstate.texStorage2D( 34067, levels, glInternalFormat, cubeImage[ 0 ].width, cubeImage[ 0 ].height );\n\n\t\t\t\t}\n\n\t\t\t\tfor ( let i = 0; i < 6; i ++ ) {\n\n\t\t\t\t\tif ( isDataTexture ) {\n\n\t\t\t\t\t\tif ( useTexStorage ) {\n\n\t\t\t\t\t\t\tstate.texSubImage2D( 34069 + i, 0, 0, 0, cubeImage[ i ].width, cubeImage[ i ].height, glFormat, glType, cubeImage[ i ].data );\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\tstate.texImage2D( 34069 + i, 0, glInternalFormat, cubeImage[ i ].width, cubeImage[ i ].height, 0, glFormat, glType, cubeImage[ i ].data );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tfor ( let j = 0; j < mipmaps.length; j ++ ) {\n\n\t\t\t\t\t\t\tconst mipmap = mipmaps[ j ];\n\t\t\t\t\t\t\tconst mipmapImage = mipmap.image[ i ].image;\n\n\t\t\t\t\t\t\tif ( useTexStorage ) {\n\n\t\t\t\t\t\t\t\tstate.texSubImage2D( 34069 + i, j + 1, 0, 0, mipmapImage.width, mipmapImage.height, glFormat, glType, mipmapImage.data );\n\n\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\tstate.texImage2D( 34069 + i, j + 1, glInternalFormat, mipmapImage.width, mipmapImage.height, 0, glFormat, glType, mipmapImage.data );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tif ( useTexStorage ) {\n\n\t\t\t\t\t\t\tstate.texSubImage2D( 34069 + i, 0, 0, 0, glFormat, glType, cubeImage[ i ] );\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\tstate.texImage2D( 34069 + i, 0, glInternalFormat, glFormat, glType, cubeImage[ i ] );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tfor ( let j = 0; j < mipmaps.length; j ++ ) {\n\n\t\t\t\t\t\t\tconst mipmap = mipmaps[ j ];\n\n\t\t\t\t\t\t\tif ( useTexStorage ) {\n\n\t\t\t\t\t\t\t\tstate.texSubImage2D( 34069 + i, j + 1, 0, 0, glFormat, glType, mipmap.image[ i ] );\n\n\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\tstate.texImage2D( 34069 + i, j + 1, glInternalFormat, glFormat, glType, mipmap.image[ i ] );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( textureNeedsGenerateMipmaps( texture, supportsMips ) ) {\n\n\t\t\t\t// We assume images for cube map have the same size.\n\t\t\t\tgenerateMipmap( 34067 );\n\n\t\t\t}\n\n\t\t\tsource.__currentVersion = source.version;\n\n\t\t\tif ( texture.onUpdate ) texture.onUpdate( texture );\n\n\t\t}\n\n\t\ttextureProperties.__version = texture.version;\n\n\t}\n\n\t// Render targets\n\n\t// Setup storage for target texture and bind it to correct framebuffer\n\tfunction setupFrameBufferTexture( framebuffer, renderTarget, texture, attachment, textureTarget ) {\n\n\t\tconst glFormat = utils.convert( texture.format, texture.encoding );\n\t\tconst glType = utils.convert( texture.type );\n\t\tconst glInternalFormat = getInternalFormat( texture.internalFormat, glFormat, glType, texture.encoding );\n\t\tconst renderTargetProperties = properties.get( renderTarget );\n\n\t\tif ( ! renderTargetProperties.__hasExternalTextures ) {\n\n\t\t\tif ( textureTarget === 32879 || textureTarget === 35866 ) {\n\n\t\t\t\tstate.texImage3D( textureTarget, 0, glInternalFormat, renderTarget.width, renderTarget.height, renderTarget.depth, 0, glFormat, glType, null );\n\n\t\t\t} else {\n\n\t\t\t\tstate.texImage2D( textureTarget, 0, glInternalFormat, renderTarget.width, renderTarget.height, 0, glFormat, glType, null );\n\n\t\t\t}\n\n\t\t}\n\n\t\tstate.bindFramebuffer( 36160, framebuffer );\n\n\t\tif ( useMultisampledRTT( renderTarget ) ) {\n\n\t\t\tmultisampledRTTExt.framebufferTexture2DMultisampleEXT( 36160, attachment, textureTarget, properties.get( texture ).__webglTexture, 0, getRenderTargetSamples( renderTarget ) );\n\n\t\t} else {\n\n\t\t\t_gl.framebufferTexture2D( 36160, attachment, textureTarget, properties.get( texture ).__webglTexture, 0 );\n\n\t\t}\n\n\t\tstate.bindFramebuffer( 36160, null );\n\n\t}\n\n\n\t// Setup storage for internal depth/stencil buffers and bind to correct framebuffer\n\tfunction setupRenderBufferStorage( renderbuffer, renderTarget, isMultisample ) {\n\n\t\t_gl.bindRenderbuffer( 36161, renderbuffer );\n\n\t\tif ( renderTarget.depthBuffer && ! renderTarget.stencilBuffer ) {\n\n\t\t\tlet glInternalFormat = 33189;\n\n\t\t\tif ( isMultisample || useMultisampledRTT( renderTarget ) ) {\n\n\t\t\t\tconst depthTexture = renderTarget.depthTexture;\n\n\t\t\t\tif ( depthTexture && depthTexture.isDepthTexture ) {\n\n\t\t\t\t\tif ( depthTexture.type === FloatType ) {\n\n\t\t\t\t\t\tglInternalFormat = 36012;\n\n\t\t\t\t\t} else if ( depthTexture.type === UnsignedIntType ) {\n\n\t\t\t\t\t\tglInternalFormat = 33190;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\tconst samples = getRenderTargetSamples( renderTarget );\n\n\t\t\t\tif ( useMultisampledRTT( renderTarget ) ) {\n\n\t\t\t\t\tmultisampledRTTExt.renderbufferStorageMultisampleEXT( 36161, samples, glInternalFormat, renderTarget.width, renderTarget.height );\n\n\t\t\t\t} else {\n\n\t\t\t\t\t_gl.renderbufferStorageMultisample( 36161, samples, glInternalFormat, renderTarget.width, renderTarget.height );\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\t_gl.renderbufferStorage( 36161, glInternalFormat, renderTarget.width, renderTarget.height );\n\n\t\t\t}\n\n\t\t\t_gl.framebufferRenderbuffer( 36160, 36096, 36161, renderbuffer );\n\n\t\t} else if ( renderTarget.depthBuffer && renderTarget.stencilBuffer ) {\n\n\t\t\tconst samples = getRenderTargetSamples( renderTarget );\n\n\t\t\tif ( isMultisample && useMultisampledRTT( renderTarget ) === false ) {\n\n\t\t\t\t_gl.renderbufferStorageMultisample( 36161, samples, 35056, renderTarget.width, renderTarget.height );\n\n\t\t\t} else if ( useMultisampledRTT( renderTarget ) ) {\n\n\t\t\t\tmultisampledRTTExt.renderbufferStorageMultisampleEXT( 36161, samples, 35056, renderTarget.width, renderTarget.height );\n\n\t\t\t} else {\n\n\t\t\t\t_gl.renderbufferStorage( 36161, 34041, renderTarget.width, renderTarget.height );\n\n\t\t\t}\n\n\n\t\t\t_gl.framebufferRenderbuffer( 36160, 33306, 36161, renderbuffer );\n\n\t\t} else {\n\n\t\t\tconst textures = renderTarget.isWebGLMultipleRenderTargets === true ? renderTarget.texture : [ renderTarget.texture ];\n\n\t\t\tfor ( let i = 0; i < textures.length; i ++ ) {\n\n\t\t\t\tconst texture = textures[ i ];\n\n\t\t\t\tconst glFormat = utils.convert( texture.format, texture.encoding );\n\t\t\t\tconst glType = utils.convert( texture.type );\n\t\t\t\tconst glInternalFormat = getInternalFormat( texture.internalFormat, glFormat, glType, texture.encoding );\n\t\t\t\tconst samples = getRenderTargetSamples( renderTarget );\n\n\t\t\t\tif ( isMultisample && useMultisampledRTT( renderTarget ) === false ) {\n\n\t\t\t\t\t_gl.renderbufferStorageMultisample( 36161, samples, glInternalFormat, renderTarget.width, renderTarget.height );\n\n\t\t\t\t} else if ( useMultisampledRTT( renderTarget ) ) {\n\n\t\t\t\t\tmultisampledRTTExt.renderbufferStorageMultisampleEXT( 36161, samples, glInternalFormat, renderTarget.width, renderTarget.height );\n\n\t\t\t\t} else {\n\n\t\t\t\t\t_gl.renderbufferStorage( 36161, glInternalFormat, renderTarget.width, renderTarget.height );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\t_gl.bindRenderbuffer( 36161, null );\n\n\t}\n\n\t// Setup resources for a Depth Texture for a FBO (needs an extension)\n\tfunction setupDepthTexture( framebuffer, renderTarget ) {\n\n\t\tconst isCube = ( renderTarget && renderTarget.isWebGLCubeRenderTarget );\n\t\tif ( isCube ) throw new Error( 'Depth Texture with cube render targets is not supported' );\n\n\t\tstate.bindFramebuffer( 36160, framebuffer );\n\n\t\tif ( ! ( renderTarget.depthTexture && renderTarget.depthTexture.isDepthTexture ) ) {\n\n\t\t\tthrow new Error( 'renderTarget.depthTexture must be an instance of THREE.DepthTexture' );\n\n\t\t}\n\n\t\t// upload an empty depth texture with framebuffer size\n\t\tif ( ! properties.get( renderTarget.depthTexture ).__webglTexture ||\n\t\t\t\trenderTarget.depthTexture.image.width !== renderTarget.width ||\n\t\t\t\trenderTarget.depthTexture.image.height !== renderTarget.height ) {\n\n\t\t\trenderTarget.depthTexture.image.width = renderTarget.width;\n\t\t\trenderTarget.depthTexture.image.height = renderTarget.height;\n\t\t\trenderTarget.depthTexture.needsUpdate = true;\n\n\t\t}\n\n\t\tsetTexture2D( renderTarget.depthTexture, 0 );\n\n\t\tconst webglDepthTexture = properties.get( renderTarget.depthTexture ).__webglTexture;\n\t\tconst samples = getRenderTargetSamples( renderTarget );\n\n\t\tif ( renderTarget.depthTexture.format === DepthFormat ) {\n\n\t\t\tif ( useMultisampledRTT( renderTarget ) ) {\n\n\t\t\t\tmultisampledRTTExt.framebufferTexture2DMultisampleEXT( 36160, 36096, 3553, webglDepthTexture, 0, samples );\n\n\t\t\t} else {\n\n\t\t\t\t_gl.framebufferTexture2D( 36160, 36096, 3553, webglDepthTexture, 0 );\n\n\t\t\t}\n\n\t\t} else if ( renderTarget.depthTexture.format === DepthStencilFormat ) {\n\n\t\t\tif ( useMultisampledRTT( renderTarget ) ) {\n\n\t\t\t\tmultisampledRTTExt.framebufferTexture2DMultisampleEXT( 36160, 33306, 3553, webglDepthTexture, 0, samples );\n\n\t\t\t} else {\n\n\t\t\t\t_gl.framebufferTexture2D( 36160, 33306, 3553, webglDepthTexture, 0 );\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tthrow new Error( 'Unknown depthTexture format' );\n\n\t\t}\n\n\t}\n\n\t// Setup GL resources for a non-texture depth buffer\n\tfunction setupDepthRenderbuffer( renderTarget ) {\n\n\t\tconst renderTargetProperties = properties.get( renderTarget );\n\t\tconst isCube = ( renderTarget.isWebGLCubeRenderTarget === true );\n\n\t\tif ( renderTarget.depthTexture && ! renderTargetProperties.__autoAllocateDepthBuffer ) {\n\n\t\t\tif ( isCube ) throw new Error( 'target.depthTexture not supported in Cube render targets' );\n\n\t\t\tsetupDepthTexture( renderTargetProperties.__webglFramebuffer, renderTarget );\n\n\t\t} else {\n\n\t\t\tif ( isCube ) {\n\n\t\t\t\trenderTargetProperties.__webglDepthbuffer = [];\n\n\t\t\t\tfor ( let i = 0; i < 6; i ++ ) {\n\n\t\t\t\t\tstate.bindFramebuffer( 36160, renderTargetProperties.__webglFramebuffer[ i ] );\n\t\t\t\t\trenderTargetProperties.__webglDepthbuffer[ i ] = _gl.createRenderbuffer();\n\t\t\t\t\tsetupRenderBufferStorage( renderTargetProperties.__webglDepthbuffer[ i ], renderTarget, false );\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\tstate.bindFramebuffer( 36160, renderTargetProperties.__webglFramebuffer );\n\t\t\t\trenderTargetProperties.__webglDepthbuffer = _gl.createRenderbuffer();\n\t\t\t\tsetupRenderBufferStorage( renderTargetProperties.__webglDepthbuffer, renderTarget, false );\n\n\t\t\t}\n\n\t\t}\n\n\t\tstate.bindFramebuffer( 36160, null );\n\n\t}\n\n\t// rebind framebuffer with external textures\n\tfunction rebindTextures( renderTarget, colorTexture, depthTexture ) {\n\n\t\tconst renderTargetProperties = properties.get( renderTarget );\n\n\t\tif ( colorTexture !== undefined ) {\n\n\t\t\tsetupFrameBufferTexture( renderTargetProperties.__webglFramebuffer, renderTarget, renderTarget.texture, 36064, 3553 );\n\n\t\t}\n\n\t\tif ( depthTexture !== undefined ) {\n\n\t\t\tsetupDepthRenderbuffer( renderTarget );\n\n\t\t}\n\n\t}\n\n\t// Set up GL resources for the render target\n\tfunction setupRenderTarget( renderTarget ) {\n\n\t\tconst texture = renderTarget.texture;\n\n\t\tconst renderTargetProperties = properties.get( renderTarget );\n\t\tconst textureProperties = properties.get( texture );\n\n\t\trenderTarget.addEventListener( 'dispose', onRenderTargetDispose );\n\n\t\tif ( renderTarget.isWebGLMultipleRenderTargets !== true ) {\n\n\t\t\tif ( textureProperties.__webglTexture === undefined ) {\n\n\t\t\t\ttextureProperties.__webglTexture = _gl.createTexture();\n\n\t\t\t}\n\n\t\t\ttextureProperties.__version = texture.version;\n\t\t\tinfo.memory.textures ++;\n\n\t\t}\n\n\t\tconst isCube = ( renderTarget.isWebGLCubeRenderTarget === true );\n\t\tconst isMultipleRenderTargets = ( renderTarget.isWebGLMultipleRenderTargets === true );\n\t\tconst supportsMips = isPowerOfTwo$1( renderTarget ) || isWebGL2;\n\n\t\t// Setup framebuffer\n\n\t\tif ( isCube ) {\n\n\t\t\trenderTargetProperties.__webglFramebuffer = [];\n\n\t\t\tfor ( let i = 0; i < 6; i ++ ) {\n\n\t\t\t\trenderTargetProperties.__webglFramebuffer[ i ] = _gl.createFramebuffer();\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\trenderTargetProperties.__webglFramebuffer = _gl.createFramebuffer();\n\n\t\t\tif ( isMultipleRenderTargets ) {\n\n\t\t\t\tif ( capabilities.drawBuffers ) {\n\n\t\t\t\t\tconst textures = renderTarget.texture;\n\n\t\t\t\t\tfor ( let i = 0, il = textures.length; i < il; i ++ ) {\n\n\t\t\t\t\t\tconst attachmentProperties = properties.get( textures[ i ] );\n\n\t\t\t\t\t\tif ( attachmentProperties.__webglTexture === undefined ) {\n\n\t\t\t\t\t\t\tattachmentProperties.__webglTexture = _gl.createTexture();\n\n\t\t\t\t\t\t\tinfo.memory.textures ++;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: WebGLMultipleRenderTargets can only be used with WebGL2 or WEBGL_draw_buffers extension.' );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( ( isWebGL2 && renderTarget.samples > 0 ) && useMultisampledRTT( renderTarget ) === false ) {\n\n\t\t\t\tconst textures = isMultipleRenderTargets ? texture : [ texture ];\n\n\t\t\t\trenderTargetProperties.__webglMultisampledFramebuffer = _gl.createFramebuffer();\n\t\t\t\trenderTargetProperties.__webglColorRenderbuffer = [];\n\n\t\t\t\tstate.bindFramebuffer( 36160, renderTargetProperties.__webglMultisampledFramebuffer );\n\n\t\t\t\tfor ( let i = 0; i < textures.length; i ++ ) {\n\n\t\t\t\t\tconst texture = textures[ i ];\n\t\t\t\t\trenderTargetProperties.__webglColorRenderbuffer[ i ] = _gl.createRenderbuffer();\n\n\t\t\t\t\t_gl.bindRenderbuffer( 36161, renderTargetProperties.__webglColorRenderbuffer[ i ] );\n\n\t\t\t\t\tconst glFormat = utils.convert( texture.format, texture.encoding );\n\t\t\t\t\tconst glType = utils.convert( texture.type );\n\t\t\t\t\tconst glInternalFormat = getInternalFormat( texture.internalFormat, glFormat, glType, texture.encoding );\n\t\t\t\t\tconst samples = getRenderTargetSamples( renderTarget );\n\t\t\t\t\t_gl.renderbufferStorageMultisample( 36161, samples, glInternalFormat, renderTarget.width, renderTarget.height );\n\n\t\t\t\t\t_gl.framebufferRenderbuffer( 36160, 36064 + i, 36161, renderTargetProperties.__webglColorRenderbuffer[ i ] );\n\n\t\t\t\t}\n\n\t\t\t\t_gl.bindRenderbuffer( 36161, null );\n\n\t\t\t\tif ( renderTarget.depthBuffer ) {\n\n\t\t\t\t\trenderTargetProperties.__webglDepthRenderbuffer = _gl.createRenderbuffer();\n\t\t\t\t\tsetupRenderBufferStorage( renderTargetProperties.__webglDepthRenderbuffer, renderTarget, true );\n\n\t\t\t\t}\n\n\t\t\t\tstate.bindFramebuffer( 36160, null );\n\n\t\t\t}\n\n\t\t}\n\n\t\t// Setup color buffer\n\n\t\tif ( isCube ) {\n\n\t\t\tstate.bindTexture( 34067, textureProperties.__webglTexture );\n\t\t\tsetTextureParameters( 34067, texture, supportsMips );\n\n\t\t\tfor ( let i = 0; i < 6; i ++ ) {\n\n\t\t\t\tsetupFrameBufferTexture( renderTargetProperties.__webglFramebuffer[ i ], renderTarget, texture, 36064, 34069 + i );\n\n\t\t\t}\n\n\t\t\tif ( textureNeedsGenerateMipmaps( texture, supportsMips ) ) {\n\n\t\t\t\tgenerateMipmap( 34067 );\n\n\t\t\t}\n\n\t\t\tstate.unbindTexture();\n\n\t\t} else if ( isMultipleRenderTargets ) {\n\n\t\t\tconst textures = renderTarget.texture;\n\n\t\t\tfor ( let i = 0, il = textures.length; i < il; i ++ ) {\n\n\t\t\t\tconst attachment = textures[ i ];\n\t\t\t\tconst attachmentProperties = properties.get( attachment );\n\n\t\t\t\tstate.bindTexture( 3553, attachmentProperties.__webglTexture );\n\t\t\t\tsetTextureParameters( 3553, attachment, supportsMips );\n\t\t\t\tsetupFrameBufferTexture( renderTargetProperties.__webglFramebuffer, renderTarget, attachment, 36064 + i, 3553 );\n\n\t\t\t\tif ( textureNeedsGenerateMipmaps( attachment, supportsMips ) ) {\n\n\t\t\t\t\tgenerateMipmap( 3553 );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tstate.unbindTexture();\n\n\t\t} else {\n\n\t\t\tlet glTextureType = 3553;\n\n\t\t\tif ( renderTarget.isWebGL3DRenderTarget || renderTarget.isWebGLArrayRenderTarget ) {\n\n\t\t\t\tif ( isWebGL2 ) {\n\n\t\t\t\t\tglTextureType = renderTarget.isWebGL3DRenderTarget ? 32879 : 35866;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tconsole.error( 'THREE.WebGLTextures: THREE.Data3DTexture and THREE.DataArrayTexture only supported with WebGL2.' );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tstate.bindTexture( glTextureType, textureProperties.__webglTexture );\n\t\t\tsetTextureParameters( glTextureType, texture, supportsMips );\n\t\t\tsetupFrameBufferTexture( renderTargetProperties.__webglFramebuffer, renderTarget, texture, 36064, glTextureType );\n\n\t\t\tif ( textureNeedsGenerateMipmaps( texture, supportsMips ) ) {\n\n\t\t\t\tgenerateMipmap( glTextureType );\n\n\t\t\t}\n\n\t\t\tstate.unbindTexture();\n\n\t\t}\n\n\t\t// Setup depth and stencil buffers\n\n\t\tif ( renderTarget.depthBuffer ) {\n\n\t\t\tsetupDepthRenderbuffer( renderTarget );\n\n\t\t}\n\n\t}\n\n\tfunction updateRenderTargetMipmap( renderTarget ) {\n\n\t\tconst supportsMips = isPowerOfTwo$1( renderTarget ) || isWebGL2;\n\n\t\tconst textures = renderTarget.isWebGLMultipleRenderTargets === true ? renderTarget.texture : [ renderTarget.texture ];\n\n\t\tfor ( let i = 0, il = textures.length; i < il; i ++ ) {\n\n\t\t\tconst texture = textures[ i ];\n\n\t\t\tif ( textureNeedsGenerateMipmaps( texture, supportsMips ) ) {\n\n\t\t\t\tconst target = renderTarget.isWebGLCubeRenderTarget ? 34067 : 3553;\n\t\t\t\tconst webglTexture = properties.get( texture ).__webglTexture;\n\n\t\t\t\tstate.bindTexture( target, webglTexture );\n\t\t\t\tgenerateMipmap( target );\n\t\t\t\tstate.unbindTexture();\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tfunction updateMultisampleRenderTarget( renderTarget ) {\n\n\t\tif ( ( isWebGL2 && renderTarget.samples > 0 ) && useMultisampledRTT( renderTarget ) === false ) {\n\n\t\t\tconst textures = renderTarget.isWebGLMultipleRenderTargets ? renderTarget.texture : [ renderTarget.texture ];\n\t\t\tconst width = renderTarget.width;\n\t\t\tconst height = renderTarget.height;\n\t\t\tlet mask = 16384;\n\t\t\tconst invalidationArray = [];\n\t\t\tconst depthStyle = renderTarget.stencilBuffer ? 33306 : 36096;\n\t\t\tconst renderTargetProperties = properties.get( renderTarget );\n\t\t\tconst isMultipleRenderTargets = ( renderTarget.isWebGLMultipleRenderTargets === true );\n\n\t\t\t// If MRT we need to remove FBO attachments\n\t\t\tif ( isMultipleRenderTargets ) {\n\n\t\t\t\tfor ( let i = 0; i < textures.length; i ++ ) {\n\n\t\t\t\t\tstate.bindFramebuffer( 36160, renderTargetProperties.__webglMultisampledFramebuffer );\n\t\t\t\t\t_gl.framebufferRenderbuffer( 36160, 36064 + i, 36161, null );\n\n\t\t\t\t\tstate.bindFramebuffer( 36160, renderTargetProperties.__webglFramebuffer );\n\t\t\t\t\t_gl.framebufferTexture2D( 36009, 36064 + i, 3553, null, 0 );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tstate.bindFramebuffer( 36008, renderTargetProperties.__webglMultisampledFramebuffer );\n\t\t\tstate.bindFramebuffer( 36009, renderTargetProperties.__webglFramebuffer );\n\n\t\t\tfor ( let i = 0; i < textures.length; i ++ ) {\n\n\t\t\t\tinvalidationArray.push( 36064 + i );\n\n\t\t\t\tif ( renderTarget.depthBuffer ) {\n\n\t\t\t\t\tinvalidationArray.push( depthStyle );\n\n\t\t\t\t}\n\n\t\t\t\tconst ignoreDepthValues = ( renderTargetProperties.__ignoreDepthValues !== undefined ) ? renderTargetProperties.__ignoreDepthValues : false;\n\n\t\t\t\tif ( ignoreDepthValues === false ) {\n\n\t\t\t\t\tif ( renderTarget.depthBuffer ) mask |= 256;\n\t\t\t\t\tif ( renderTarget.stencilBuffer ) mask |= 1024;\n\n\t\t\t\t}\n\n\t\t\t\tif ( isMultipleRenderTargets ) {\n\n\t\t\t\t\t_gl.framebufferRenderbuffer( 36008, 36064, 36161, renderTargetProperties.__webglColorRenderbuffer[ i ] );\n\n\t\t\t\t}\n\n\t\t\t\tif ( ignoreDepthValues === true ) {\n\n\t\t\t\t\t_gl.invalidateFramebuffer( 36008, [ depthStyle ] );\n\t\t\t\t\t_gl.invalidateFramebuffer( 36009, [ depthStyle ] );\n\n\t\t\t\t}\n\n\t\t\t\tif ( isMultipleRenderTargets ) {\n\n\t\t\t\t\tconst webglTexture = properties.get( textures[ i ] ).__webglTexture;\n\t\t\t\t\t_gl.framebufferTexture2D( 36009, 36064, 3553, webglTexture, 0 );\n\n\t\t\t\t}\n\n\t\t\t\t_gl.blitFramebuffer( 0, 0, width, height, 0, 0, width, height, mask, 9728 );\n\n\t\t\t\tif ( supportsInvalidateFramebuffer ) {\n\n\t\t\t\t\t_gl.invalidateFramebuffer( 36008, invalidationArray );\n\n\t\t\t\t}\n\n\n\t\t\t}\n\n\t\t\tstate.bindFramebuffer( 36008, null );\n\t\t\tstate.bindFramebuffer( 36009, null );\n\n\t\t\t// If MRT since pre-blit we removed the FBO we need to reconstruct the attachments\n\t\t\tif ( isMultipleRenderTargets ) {\n\n\t\t\t\tfor ( let i = 0; i < textures.length; i ++ ) {\n\n\t\t\t\t\tstate.bindFramebuffer( 36160, renderTargetProperties.__webglMultisampledFramebuffer );\n\t\t\t\t\t_gl.framebufferRenderbuffer( 36160, 36064 + i, 36161, renderTargetProperties.__webglColorRenderbuffer[ i ] );\n\n\t\t\t\t\tconst webglTexture = properties.get( textures[ i ] ).__webglTexture;\n\n\t\t\t\t\tstate.bindFramebuffer( 36160, renderTargetProperties.__webglFramebuffer );\n\t\t\t\t\t_gl.framebufferTexture2D( 36009, 36064 + i, 3553, webglTexture, 0 );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tstate.bindFramebuffer( 36009, renderTargetProperties.__webglMultisampledFramebuffer );\n\n\t\t}\n\n\t}\n\n\tfunction getRenderTargetSamples( renderTarget ) {\n\n\t\treturn Math.min( maxSamples, renderTarget.samples );\n\n\t}\n\n\tfunction useMultisampledRTT( renderTarget ) {\n\n\t\tconst renderTargetProperties = properties.get( renderTarget );\n\n\t\treturn isWebGL2 && renderTarget.samples > 0 && extensions.has( 'WEBGL_multisampled_render_to_texture' ) === true && renderTargetProperties.__useRenderToTexture !== false;\n\n\t}\n\n\tfunction updateVideoTexture( texture ) {\n\n\t\tconst frame = info.render.frame;\n\n\t\t// Check the last frame we updated the VideoTexture\n\n\t\tif ( _videoTextures.get( texture ) !== frame ) {\n\n\t\t\t_videoTextures.set( texture, frame );\n\t\t\ttexture.update();\n\n\t\t}\n\n\t}\n\n\tfunction verifyColorSpace( texture, image ) {\n\n\t\tconst encoding = texture.encoding;\n\t\tconst format = texture.format;\n\t\tconst type = texture.type;\n\n\t\tif ( texture.isCompressedTexture === true || texture.isVideoTexture === true || texture.format === _SRGBAFormat ) return image;\n\n\t\tif ( encoding !== LinearEncoding ) {\n\n\t\t\t// sRGB\n\n\t\t\tif ( encoding === sRGBEncoding ) {\n\n\t\t\t\tif ( isWebGL2 === false ) {\n\n\t\t\t\t\t// in WebGL 1, try to use EXT_sRGB extension and unsized formats\n\n\t\t\t\t\tif ( extensions.has( 'EXT_sRGB' ) === true && format === RGBAFormat ) {\n\n\t\t\t\t\t\ttexture.format = _SRGBAFormat;\n\n\t\t\t\t\t\t// it's not possible to generate mips in WebGL 1 with this extension\n\n\t\t\t\t\t\ttexture.minFilter = LinearFilter;\n\t\t\t\t\t\ttexture.generateMipmaps = false;\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\t// slow fallback (CPU decode)\n\n\t\t\t\t\t\timage = ImageUtils.sRGBToLinear( image );\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// in WebGL 2 uncompressed textures can only be sRGB encoded if they have the RGBA8 format\n\n\t\t\t\t\tif ( format !== RGBAFormat || type !== UnsignedByteType ) {\n\n\t\t\t\t\t\tconsole.warn( 'THREE.WebGLTextures: sRGB encoded textures have to use RGBAFormat and UnsignedByteType.' );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\tconsole.error( 'THREE.WebGLTextures: Unsupported texture encoding:', encoding );\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn image;\n\n\t}\n\n\t//\n\n\tthis.allocateTextureUnit = allocateTextureUnit;\n\tthis.resetTextureUnits = resetTextureUnits;\n\n\tthis.setTexture2D = setTexture2D;\n\tthis.setTexture2DArray = setTexture2DArray;\n\tthis.setTexture3D = setTexture3D;\n\tthis.setTextureCube = setTextureCube;\n\tthis.rebindTextures = rebindTextures;\n\tthis.setupRenderTarget = setupRenderTarget;\n\tthis.updateRenderTargetMipmap = updateRenderTargetMipmap;\n\tthis.updateMultisampleRenderTarget = updateMultisampleRenderTarget;\n\tthis.setupDepthRenderbuffer = setupDepthRenderbuffer;\n\tthis.setupFrameBufferTexture = setupFrameBufferTexture;\n\tthis.useMultisampledRTT = useMultisampledRTT;\n\n}\n\nfunction WebGLUtils( gl, extensions, capabilities ) {\n\n\tconst isWebGL2 = capabilities.isWebGL2;\n\n\tfunction convert( p, encoding = null ) {\n\n\t\tlet extension;\n\n\t\tif ( p === UnsignedByteType ) return 5121;\n\t\tif ( p === UnsignedShort4444Type ) return 32819;\n\t\tif ( p === UnsignedShort5551Type ) return 32820;\n\n\t\tif ( p === ByteType ) return 5120;\n\t\tif ( p === ShortType ) return 5122;\n\t\tif ( p === UnsignedShortType ) return 5123;\n\t\tif ( p === IntType ) return 5124;\n\t\tif ( p === UnsignedIntType ) return 5125;\n\t\tif ( p === FloatType ) return 5126;\n\n\t\tif ( p === HalfFloatType ) {\n\n\t\t\tif ( isWebGL2 ) return 5131;\n\n\t\t\textension = extensions.get( 'OES_texture_half_float' );\n\n\t\t\tif ( extension !== null ) {\n\n\t\t\t\treturn extension.HALF_FLOAT_OES;\n\n\t\t\t} else {\n\n\t\t\t\treturn null;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( p === AlphaFormat ) return 6406;\n\t\tif ( p === RGBAFormat ) return 6408;\n\t\tif ( p === LuminanceFormat ) return 6409;\n\t\tif ( p === LuminanceAlphaFormat ) return 6410;\n\t\tif ( p === DepthFormat ) return 6402;\n\t\tif ( p === DepthStencilFormat ) return 34041;\n\t\tif ( p === RedFormat ) return 6403;\n\n\t\tif ( p === RGBFormat ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: THREE.RGBFormat has been removed. Use THREE.RGBAFormat instead. https://github.com/mrdoob/three.js/pull/23228' );\n\t\t\treturn 6408;\n\n\t\t}\n\n\t\t// WebGL 1 sRGB fallback\n\n\t\tif ( p === _SRGBAFormat ) {\n\n\t\t\textension = extensions.get( 'EXT_sRGB' );\n\n\t\t\tif ( extension !== null ) {\n\n\t\t\t\treturn extension.SRGB_ALPHA_EXT;\n\n\t\t\t} else {\n\n\t\t\t\treturn null;\n\n\t\t\t}\n\n\t\t}\n\n\t\t// WebGL2 formats.\n\n\t\tif ( p === RedIntegerFormat ) return 36244;\n\t\tif ( p === RGFormat ) return 33319;\n\t\tif ( p === RGIntegerFormat ) return 33320;\n\t\tif ( p === RGBAIntegerFormat ) return 36249;\n\n\t\t// S3TC\n\n\t\tif ( p === RGB_S3TC_DXT1_Format || p === RGBA_S3TC_DXT1_Format || p === RGBA_S3TC_DXT3_Format || p === RGBA_S3TC_DXT5_Format ) {\n\n\t\t\tif ( encoding === sRGBEncoding ) {\n\n\t\t\t\textension = extensions.get( 'WEBGL_compressed_texture_s3tc_srgb' );\n\n\t\t\t\tif ( extension !== null ) {\n\n\t\t\t\t\tif ( p === RGB_S3TC_DXT1_Format ) return extension.COMPRESSED_SRGB_S3TC_DXT1_EXT;\n\t\t\t\t\tif ( p === RGBA_S3TC_DXT1_Format ) return extension.COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT;\n\t\t\t\t\tif ( p === RGBA_S3TC_DXT3_Format ) return extension.COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT;\n\t\t\t\t\tif ( p === RGBA_S3TC_DXT5_Format ) return extension.COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT;\n\n\t\t\t\t} else {\n\n\t\t\t\t\treturn null;\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\textension = extensions.get( 'WEBGL_compressed_texture_s3tc' );\n\n\t\t\t\tif ( extension !== null ) {\n\n\t\t\t\t\tif ( p === RGB_S3TC_DXT1_Format ) return extension.COMPRESSED_RGB_S3TC_DXT1_EXT;\n\t\t\t\t\tif ( p === RGBA_S3TC_DXT1_Format ) return extension.COMPRESSED_RGBA_S3TC_DXT1_EXT;\n\t\t\t\t\tif ( p === RGBA_S3TC_DXT3_Format ) return extension.COMPRESSED_RGBA_S3TC_DXT3_EXT;\n\t\t\t\t\tif ( p === RGBA_S3TC_DXT5_Format ) return extension.COMPRESSED_RGBA_S3TC_DXT5_EXT;\n\n\t\t\t\t} else {\n\n\t\t\t\t\treturn null;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\t// PVRTC\n\n\t\tif ( p === RGB_PVRTC_4BPPV1_Format || p === RGB_PVRTC_2BPPV1_Format || p === RGBA_PVRTC_4BPPV1_Format || p === RGBA_PVRTC_2BPPV1_Format ) {\n\n\t\t\textension = extensions.get( 'WEBGL_compressed_texture_pvrtc' );\n\n\t\t\tif ( extension !== null ) {\n\n\t\t\t\tif ( p === RGB_PVRTC_4BPPV1_Format ) return extension.COMPRESSED_RGB_PVRTC_4BPPV1_IMG;\n\t\t\t\tif ( p === RGB_PVRTC_2BPPV1_Format ) return extension.COMPRESSED_RGB_PVRTC_2BPPV1_IMG;\n\t\t\t\tif ( p === RGBA_PVRTC_4BPPV1_Format ) return extension.COMPRESSED_RGBA_PVRTC_4BPPV1_IMG;\n\t\t\t\tif ( p === RGBA_PVRTC_2BPPV1_Format ) return extension.COMPRESSED_RGBA_PVRTC_2BPPV1_IMG;\n\n\t\t\t} else {\n\n\t\t\t\treturn null;\n\n\t\t\t}\n\n\t\t}\n\n\t\t// ETC1\n\n\t\tif ( p === RGB_ETC1_Format ) {\n\n\t\t\textension = extensions.get( 'WEBGL_compressed_texture_etc1' );\n\n\t\t\tif ( extension !== null ) {\n\n\t\t\t\treturn extension.COMPRESSED_RGB_ETC1_WEBGL;\n\n\t\t\t} else {\n\n\t\t\t\treturn null;\n\n\t\t\t}\n\n\t\t}\n\n\t\t// ETC2\n\n\t\tif ( p === RGB_ETC2_Format || p === RGBA_ETC2_EAC_Format ) {\n\n\t\t\textension = extensions.get( 'WEBGL_compressed_texture_etc' );\n\n\t\t\tif ( extension !== null ) {\n\n\t\t\t\tif ( p === RGB_ETC2_Format ) return ( encoding === sRGBEncoding ) ? extension.COMPRESSED_SRGB8_ETC2 : extension.COMPRESSED_RGB8_ETC2;\n\t\t\t\tif ( p === RGBA_ETC2_EAC_Format ) return ( encoding === sRGBEncoding ) ? extension.COMPRESSED_SRGB8_ALPHA8_ETC2_EAC : extension.COMPRESSED_RGBA8_ETC2_EAC;\n\n\t\t\t} else {\n\n\t\t\t\treturn null;\n\n\t\t\t}\n\n\t\t}\n\n\t\t// ASTC\n\n\t\tif ( p === RGBA_ASTC_4x4_Format || p === RGBA_ASTC_5x4_Format || p === RGBA_ASTC_5x5_Format ||\n\t\t\tp === RGBA_ASTC_6x5_Format || p === RGBA_ASTC_6x6_Format || p === RGBA_ASTC_8x5_Format ||\n\t\t\tp === RGBA_ASTC_8x6_Format || p === RGBA_ASTC_8x8_Format || p === RGBA_ASTC_10x5_Format ||\n\t\t\tp === RGBA_ASTC_10x6_Format || p === RGBA_ASTC_10x8_Format || p === RGBA_ASTC_10x10_Format ||\n\t\t\tp === RGBA_ASTC_12x10_Format || p === RGBA_ASTC_12x12_Format ) {\n\n\t\t\textension = extensions.get( 'WEBGL_compressed_texture_astc' );\n\n\t\t\tif ( extension !== null ) {\n\n\t\t\t\tif ( p === RGBA_ASTC_4x4_Format ) return ( encoding === sRGBEncoding ) ? extension.COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR : extension.COMPRESSED_RGBA_ASTC_4x4_KHR;\n\t\t\t\tif ( p === RGBA_ASTC_5x4_Format ) return ( encoding === sRGBEncoding ) ? extension.COMPRESSED_SRGB8_ALPHA8_ASTC_5x4_KHR : extension.COMPRESSED_RGBA_ASTC_5x4_KHR;\n\t\t\t\tif ( p === RGBA_ASTC_5x5_Format ) return ( encoding === sRGBEncoding ) ? extension.COMPRESSED_SRGB8_ALPHA8_ASTC_5x5_KHR : extension.COMPRESSED_RGBA_ASTC_5x5_KHR;\n\t\t\t\tif ( p === RGBA_ASTC_6x5_Format ) return ( encoding === sRGBEncoding ) ? extension.COMPRESSED_SRGB8_ALPHA8_ASTC_6x5_KHR : extension.COMPRESSED_RGBA_ASTC_6x5_KHR;\n\t\t\t\tif ( p === RGBA_ASTC_6x6_Format ) return ( encoding === sRGBEncoding ) ? extension.COMPRESSED_SRGB8_ALPHA8_ASTC_6x6_KHR : extension.COMPRESSED_RGBA_ASTC_6x6_KHR;\n\t\t\t\tif ( p === RGBA_ASTC_8x5_Format ) return ( encoding === sRGBEncoding ) ? extension.COMPRESSED_SRGB8_ALPHA8_ASTC_8x5_KHR : extension.COMPRESSED_RGBA_ASTC_8x5_KHR;\n\t\t\t\tif ( p === RGBA_ASTC_8x6_Format ) return ( encoding === sRGBEncoding ) ? extension.COMPRESSED_SRGB8_ALPHA8_ASTC_8x6_KHR : extension.COMPRESSED_RGBA_ASTC_8x6_KHR;\n\t\t\t\tif ( p === RGBA_ASTC_8x8_Format ) return ( encoding === sRGBEncoding ) ? extension.COMPRESSED_SRGB8_ALPHA8_ASTC_8x8_KHR : extension.COMPRESSED_RGBA_ASTC_8x8_KHR;\n\t\t\t\tif ( p === RGBA_ASTC_10x5_Format ) return ( encoding === sRGBEncoding ) ? extension.COMPRESSED_SRGB8_ALPHA8_ASTC_10x5_KHR : extension.COMPRESSED_RGBA_ASTC_10x5_KHR;\n\t\t\t\tif ( p === RGBA_ASTC_10x6_Format ) return ( encoding === sRGBEncoding ) ? extension.COMPRESSED_SRGB8_ALPHA8_ASTC_10x6_KHR : extension.COMPRESSED_RGBA_ASTC_10x6_KHR;\n\t\t\t\tif ( p === RGBA_ASTC_10x8_Format ) return ( encoding === sRGBEncoding ) ? extension.COMPRESSED_SRGB8_ALPHA8_ASTC_10x8_KHR : extension.COMPRESSED_RGBA_ASTC_10x8_KHR;\n\t\t\t\tif ( p === RGBA_ASTC_10x10_Format ) return ( encoding === sRGBEncoding ) ? extension.COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR : extension.COMPRESSED_RGBA_ASTC_10x10_KHR;\n\t\t\t\tif ( p === RGBA_ASTC_12x10_Format ) return ( encoding === sRGBEncoding ) ? extension.COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR : extension.COMPRESSED_RGBA_ASTC_12x10_KHR;\n\t\t\t\tif ( p === RGBA_ASTC_12x12_Format ) return ( encoding === sRGBEncoding ) ? extension.COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_KHR : extension.COMPRESSED_RGBA_ASTC_12x12_KHR;\n\n\t\t\t} else {\n\n\t\t\t\treturn null;\n\n\t\t\t}\n\n\t\t}\n\n\t\t// BPTC\n\n\t\tif ( p === RGBA_BPTC_Format ) {\n\n\t\t\textension = extensions.get( 'EXT_texture_compression_bptc' );\n\n\t\t\tif ( extension !== null ) {\n\n\t\t\t\tif ( p === RGBA_BPTC_Format ) return ( encoding === sRGBEncoding ) ? extension.COMPRESSED_SRGB_ALPHA_BPTC_UNORM_EXT : extension.COMPRESSED_RGBA_BPTC_UNORM_EXT;\n\n\t\t\t} else {\n\n\t\t\t\treturn null;\n\n\t\t\t}\n\n\t\t}\n\n\t\t//\n\n\t\tif ( p === UnsignedInt248Type ) {\n\n\t\t\tif ( isWebGL2 ) return 34042;\n\n\t\t\textension = extensions.get( 'WEBGL_depth_texture' );\n\n\t\t\tif ( extension !== null ) {\n\n\t\t\t\treturn extension.UNSIGNED_INT_24_8_WEBGL;\n\n\t\t\t} else {\n\n\t\t\t\treturn null;\n\n\t\t\t}\n\n\t\t}\n\n\t\t// if \"p\" can't be resolved, assume the user defines a WebGL constant as a string (fallback/workaround for packed RGB formats)\n\n\t\treturn ( gl[ p ] !== undefined ) ? gl[ p ] : null;\n\n\t}\n\n\treturn { convert: convert };\n\n}\n\nclass ArrayCamera extends PerspectiveCamera {\n\n\tconstructor( array = [] ) {\n\n\t\tsuper();\n\n\t\tthis.isArrayCamera = true;\n\n\t\tthis.cameras = array;\n\n\t}\n\n}\n\nclass Group extends Object3D {\n\n\tconstructor() {\n\n\t\tsuper();\n\n\t\tthis.isGroup = true;\n\n\t\tthis.type = 'Group';\n\n\t}\n\n}\n\nconst _moveEvent = { type: 'move' };\n\nclass WebXRController {\n\n\tconstructor() {\n\n\t\tthis._targetRay = null;\n\t\tthis._grip = null;\n\t\tthis._hand = null;\n\n\t}\n\n\tgetHandSpace() {\n\n\t\tif ( this._hand === null ) {\n\n\t\t\tthis._hand = new Group();\n\t\t\tthis._hand.matrixAutoUpdate = false;\n\t\t\tthis._hand.visible = false;\n\n\t\t\tthis._hand.joints = {};\n\t\t\tthis._hand.inputState = { pinching: false };\n\n\t\t}\n\n\t\treturn this._hand;\n\n\t}\n\n\tgetTargetRaySpace() {\n\n\t\tif ( this._targetRay === null ) {\n\n\t\t\tthis._targetRay = new Group();\n\t\t\tthis._targetRay.matrixAutoUpdate = false;\n\t\t\tthis._targetRay.visible = false;\n\t\t\tthis._targetRay.hasLinearVelocity = false;\n\t\t\tthis._targetRay.linearVelocity = new Vector3();\n\t\t\tthis._targetRay.hasAngularVelocity = false;\n\t\t\tthis._targetRay.angularVelocity = new Vector3();\n\n\t\t}\n\n\t\treturn this._targetRay;\n\n\t}\n\n\tgetGripSpace() {\n\n\t\tif ( this._grip === null ) {\n\n\t\t\tthis._grip = new Group();\n\t\t\tthis._grip.matrixAutoUpdate = false;\n\t\t\tthis._grip.visible = false;\n\t\t\tthis._grip.hasLinearVelocity = false;\n\t\t\tthis._grip.linearVelocity = new Vector3();\n\t\t\tthis._grip.hasAngularVelocity = false;\n\t\t\tthis._grip.angularVelocity = new Vector3();\n\n\t\t}\n\n\t\treturn this._grip;\n\n\t}\n\n\tdispatchEvent( event ) {\n\n\t\tif ( this._targetRay !== null ) {\n\n\t\t\tthis._targetRay.dispatchEvent( event );\n\n\t\t}\n\n\t\tif ( this._grip !== null ) {\n\n\t\t\tthis._grip.dispatchEvent( event );\n\n\t\t}\n\n\t\tif ( this._hand !== null ) {\n\n\t\t\tthis._hand.dispatchEvent( event );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tdisconnect( inputSource ) {\n\n\t\tthis.dispatchEvent( { type: 'disconnected', data: inputSource } );\n\n\t\tif ( this._targetRay !== null ) {\n\n\t\t\tthis._targetRay.visible = false;\n\n\t\t}\n\n\t\tif ( this._grip !== null ) {\n\n\t\t\tthis._grip.visible = false;\n\n\t\t}\n\n\t\tif ( this._hand !== null ) {\n\n\t\t\tthis._hand.visible = false;\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tupdate( inputSource, frame, referenceSpace ) {\n\n\t\tlet inputPose = null;\n\t\tlet gripPose = null;\n\t\tlet handPose = null;\n\n\t\tconst targetRay = this._targetRay;\n\t\tconst grip = this._grip;\n\t\tconst hand = this._hand;\n\n\t\tif ( inputSource && frame.session.visibilityState !== 'visible-blurred' ) {\n\n\t\t\tif ( targetRay !== null ) {\n\n\t\t\t\tinputPose = frame.getPose( inputSource.targetRaySpace, referenceSpace );\n\n\t\t\t\tif ( inputPose !== null ) {\n\n\t\t\t\t\ttargetRay.matrix.fromArray( inputPose.transform.matrix );\n\t\t\t\t\ttargetRay.matrix.decompose( targetRay.position, targetRay.rotation, targetRay.scale );\n\n\t\t\t\t\tif ( inputPose.linearVelocity ) {\n\n\t\t\t\t\t\ttargetRay.hasLinearVelocity = true;\n\t\t\t\t\t\ttargetRay.linearVelocity.copy( inputPose.linearVelocity );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\ttargetRay.hasLinearVelocity = false;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( inputPose.angularVelocity ) {\n\n\t\t\t\t\t\ttargetRay.hasAngularVelocity = true;\n\t\t\t\t\t\ttargetRay.angularVelocity.copy( inputPose.angularVelocity );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\ttargetRay.hasAngularVelocity = false;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tthis.dispatchEvent( _moveEvent );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( hand && inputSource.hand ) {\n\n\t\t\t\thandPose = true;\n\n\t\t\t\tfor ( const inputjoint of inputSource.hand.values() ) {\n\n\t\t\t\t\t// Update the joints groups with the XRJoint poses\n\t\t\t\t\tconst jointPose = frame.getJointPose( inputjoint, referenceSpace );\n\n\t\t\t\t\tif ( hand.joints[ inputjoint.jointName ] === undefined ) {\n\n\t\t\t\t\t\t// The transform of this joint will be updated with the joint pose on each frame\n\t\t\t\t\t\tconst joint = new Group();\n\t\t\t\t\t\tjoint.matrixAutoUpdate = false;\n\t\t\t\t\t\tjoint.visible = false;\n\t\t\t\t\t\thand.joints[ inputjoint.jointName ] = joint;\n\t\t\t\t\t\t// ??\n\t\t\t\t\t\thand.add( joint );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tconst joint = hand.joints[ inputjoint.jointName ];\n\n\t\t\t\t\tif ( jointPose !== null ) {\n\n\t\t\t\t\t\tjoint.matrix.fromArray( jointPose.transform.matrix );\n\t\t\t\t\t\tjoint.matrix.decompose( joint.position, joint.rotation, joint.scale );\n\t\t\t\t\t\tjoint.jointRadius = jointPose.radius;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tjoint.visible = jointPose !== null;\n\n\t\t\t\t}\n\n\t\t\t\t// Custom events\n\n\t\t\t\t// Check pinchz\n\t\t\t\tconst indexTip = hand.joints[ 'index-finger-tip' ];\n\t\t\t\tconst thumbTip = hand.joints[ 'thumb-tip' ];\n\t\t\t\tconst distance = indexTip.position.distanceTo( thumbTip.position );\n\n\t\t\t\tconst distanceToPinch = 0.02;\n\t\t\t\tconst threshold = 0.005;\n\n\t\t\t\tif ( hand.inputState.pinching && distance > distanceToPinch + threshold ) {\n\n\t\t\t\t\thand.inputState.pinching = false;\n\t\t\t\t\tthis.dispatchEvent( {\n\t\t\t\t\t\ttype: 'pinchend',\n\t\t\t\t\t\thandedness: inputSource.handedness,\n\t\t\t\t\t\ttarget: this\n\t\t\t\t\t} );\n\n\t\t\t\t} else if ( ! hand.inputState.pinching && distance <= distanceToPinch - threshold ) {\n\n\t\t\t\t\thand.inputState.pinching = true;\n\t\t\t\t\tthis.dispatchEvent( {\n\t\t\t\t\t\ttype: 'pinchstart',\n\t\t\t\t\t\thandedness: inputSource.handedness,\n\t\t\t\t\t\ttarget: this\n\t\t\t\t\t} );\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\tif ( grip !== null && inputSource.gripSpace ) {\n\n\t\t\t\t\tgripPose = frame.getPose( inputSource.gripSpace, referenceSpace );\n\n\t\t\t\t\tif ( gripPose !== null ) {\n\n\t\t\t\t\t\tgrip.matrix.fromArray( gripPose.transform.matrix );\n\t\t\t\t\t\tgrip.matrix.decompose( grip.position, grip.rotation, grip.scale );\n\n\t\t\t\t\t\tif ( gripPose.linearVelocity ) {\n\n\t\t\t\t\t\t\tgrip.hasLinearVelocity = true;\n\t\t\t\t\t\t\tgrip.linearVelocity.copy( gripPose.linearVelocity );\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\tgrip.hasLinearVelocity = false;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif ( gripPose.angularVelocity ) {\n\n\t\t\t\t\t\t\tgrip.hasAngularVelocity = true;\n\t\t\t\t\t\t\tgrip.angularVelocity.copy( gripPose.angularVelocity );\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\tgrip.hasAngularVelocity = false;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( targetRay !== null ) {\n\n\t\t\ttargetRay.visible = ( inputPose !== null );\n\n\t\t}\n\n\t\tif ( grip !== null ) {\n\n\t\t\tgrip.visible = ( gripPose !== null );\n\n\t\t}\n\n\t\tif ( hand !== null ) {\n\n\t\t\thand.visible = ( handPose !== null );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n}\n\nclass DepthTexture extends Texture {\n\n\tconstructor( width, height, type, mapping, wrapS, wrapT, magFilter, minFilter, anisotropy, format ) {\n\n\t\tformat = format !== undefined ? format : DepthFormat;\n\n\t\tif ( format !== DepthFormat && format !== DepthStencilFormat ) {\n\n\t\t\tthrow new Error( 'DepthTexture format must be either THREE.DepthFormat or THREE.DepthStencilFormat' );\n\n\t\t}\n\n\t\tif ( type === undefined && format === DepthFormat ) type = UnsignedIntType;\n\t\tif ( type === undefined && format === DepthStencilFormat ) type = UnsignedInt248Type;\n\n\t\tsuper( null, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy );\n\n\t\tthis.isDepthTexture = true;\n\n\t\tthis.image = { width: width, height: height };\n\n\t\tthis.magFilter = magFilter !== undefined ? magFilter : NearestFilter;\n\t\tthis.minFilter = minFilter !== undefined ? minFilter : NearestFilter;\n\n\t\tthis.flipY = false;\n\t\tthis.generateMipmaps = false;\n\n\t}\n\n\n}\n\nclass WebXRManager extends EventDispatcher {\n\n\tconstructor( renderer, gl ) {\n\n\t\tsuper();\n\n\t\tconst scope = this;\n\n\t\tlet session = null;\n\t\tlet framebufferScaleFactor = 1.0;\n\n\t\tlet referenceSpace = null;\n\t\tlet referenceSpaceType = 'local-floor';\n\t\tlet customReferenceSpace = null;\n\n\t\tlet pose = null;\n\t\tlet glBinding = null;\n\t\tlet glProjLayer = null;\n\t\tlet glBaseLayer = null;\n\t\tlet xrFrame = null;\n\t\tconst attributes = gl.getContextAttributes();\n\t\tlet initialRenderTarget = null;\n\t\tlet newRenderTarget = null;\n\n\t\tconst controllers = [];\n\t\tconst inputSourcesMap = new Map();\n\n\t\t//\n\n\t\tconst cameraL = new PerspectiveCamera();\n\t\tcameraL.layers.enable( 1 );\n\t\tcameraL.viewport = new Vector4();\n\n\t\tconst cameraR = new PerspectiveCamera();\n\t\tcameraR.layers.enable( 2 );\n\t\tcameraR.viewport = new Vector4();\n\n\t\tconst cameras = [ cameraL, cameraR ];\n\n\t\tconst cameraVR = new ArrayCamera();\n\t\tcameraVR.layers.enable( 1 );\n\t\tcameraVR.layers.enable( 2 );\n\n\t\tlet _currentDepthNear = null;\n\t\tlet _currentDepthFar = null;\n\n\t\t//\n\n\t\tthis.cameraAutoUpdate = true;\n\t\tthis.enabled = false;\n\n\t\tthis.isPresenting = false;\n\n\t\tthis.getController = function ( index ) {\n\n\t\t\tlet controller = controllers[ index ];\n\n\t\t\tif ( controller === undefined ) {\n\n\t\t\t\tcontroller = new WebXRController();\n\t\t\t\tcontrollers[ index ] = controller;\n\n\t\t\t}\n\n\t\t\treturn controller.getTargetRaySpace();\n\n\t\t};\n\n\t\tthis.getControllerGrip = function ( index ) {\n\n\t\t\tlet controller = controllers[ index ];\n\n\t\t\tif ( controller === undefined ) {\n\n\t\t\t\tcontroller = new WebXRController();\n\t\t\t\tcontrollers[ index ] = controller;\n\n\t\t\t}\n\n\t\t\treturn controller.getGripSpace();\n\n\t\t};\n\n\t\tthis.getHand = function ( index ) {\n\n\t\t\tlet controller = controllers[ index ];\n\n\t\t\tif ( controller === undefined ) {\n\n\t\t\t\tcontroller = new WebXRController();\n\t\t\t\tcontrollers[ index ] = controller;\n\n\t\t\t}\n\n\t\t\treturn controller.getHandSpace();\n\n\t\t};\n\n\t\t//\n\n\t\tfunction onSessionEvent( event ) {\n\n\t\t\tconst controller = inputSourcesMap.get( event.inputSource );\n\n\t\t\tif ( controller !== undefined ) {\n\n\t\t\t\tcontroller.dispatchEvent( { type: event.type, data: event.inputSource } );\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction onSessionEnd() {\n\n\t\t\tsession.removeEventListener( 'select', onSessionEvent );\n\t\t\tsession.removeEventListener( 'selectstart', onSessionEvent );\n\t\t\tsession.removeEventListener( 'selectend', onSessionEvent );\n\t\t\tsession.removeEventListener( 'squeeze', onSessionEvent );\n\t\t\tsession.removeEventListener( 'squeezestart', onSessionEvent );\n\t\t\tsession.removeEventListener( 'squeezeend', onSessionEvent );\n\t\t\tsession.removeEventListener( 'end', onSessionEnd );\n\t\t\tsession.removeEventListener( 'inputsourceschange', onInputSourcesChange );\n\n\t\t\tinputSourcesMap.forEach( function ( controller, inputSource ) {\n\n\t\t\t\tif ( controller !== undefined ) {\n\n\t\t\t\t\tcontroller.disconnect( inputSource );\n\n\t\t\t\t}\n\n\t\t\t} );\n\n\t\t\tinputSourcesMap.clear();\n\n\t\t\t_currentDepthNear = null;\n\t\t\t_currentDepthFar = null;\n\n\t\t\t// restore framebuffer/rendering state\n\n\t\t\trenderer.setRenderTarget( initialRenderTarget );\n\n\t\t\tglBaseLayer = null;\n\t\t\tglProjLayer = null;\n\t\t\tglBinding = null;\n\t\t\tsession = null;\n\t\t\tnewRenderTarget = null;\n\n\t\t\t//\n\n\t\t\tanimation.stop();\n\n\t\t\tscope.isPresenting = false;\n\n\t\t\tscope.dispatchEvent( { type: 'sessionend' } );\n\n\t\t}\n\n\t\tthis.setFramebufferScaleFactor = function ( value ) {\n\n\t\t\tframebufferScaleFactor = value;\n\n\t\t\tif ( scope.isPresenting === true ) {\n\n\t\t\t\tconsole.warn( 'THREE.WebXRManager: Cannot change framebuffer scale while presenting.' );\n\n\t\t\t}\n\n\t\t};\n\n\t\tthis.setReferenceSpaceType = function ( value ) {\n\n\t\t\treferenceSpaceType = value;\n\n\t\t\tif ( scope.isPresenting === true ) {\n\n\t\t\t\tconsole.warn( 'THREE.WebXRManager: Cannot change reference space type while presenting.' );\n\n\t\t\t}\n\n\t\t};\n\n\t\tthis.getReferenceSpace = function () {\n\n\t\t\treturn customReferenceSpace || referenceSpace;\n\n\t\t};\n\n\t\tthis.setReferenceSpace = function ( space ) {\n\n\t\t\tcustomReferenceSpace = space;\n\n\t\t};\n\n\t\tthis.getBaseLayer = function () {\n\n\t\t\treturn glProjLayer !== null ? glProjLayer : glBaseLayer;\n\n\t\t};\n\n\t\tthis.getBinding = function () {\n\n\t\t\treturn glBinding;\n\n\t\t};\n\n\t\tthis.getFrame = function () {\n\n\t\t\treturn xrFrame;\n\n\t\t};\n\n\t\tthis.getSession = function () {\n\n\t\t\treturn session;\n\n\t\t};\n\n\t\tthis.setSession = async function ( value ) {\n\n\t\t\tsession = value;\n\n\t\t\tif ( session !== null ) {\n\n\t\t\t\tinitialRenderTarget = renderer.getRenderTarget();\n\n\t\t\t\tsession.addEventListener( 'select', onSessionEvent );\n\t\t\t\tsession.addEventListener( 'selectstart', onSessionEvent );\n\t\t\t\tsession.addEventListener( 'selectend', onSessionEvent );\n\t\t\t\tsession.addEventListener( 'squeeze', onSessionEvent );\n\t\t\t\tsession.addEventListener( 'squeezestart', onSessionEvent );\n\t\t\t\tsession.addEventListener( 'squeezeend', onSessionEvent );\n\t\t\t\tsession.addEventListener( 'end', onSessionEnd );\n\t\t\t\tsession.addEventListener( 'inputsourceschange', onInputSourcesChange );\n\n\t\t\t\tif ( attributes.xrCompatible !== true ) {\n\n\t\t\t\t\tawait gl.makeXRCompatible();\n\n\t\t\t\t}\n\n\t\t\t\tif ( ( session.renderState.layers === undefined ) || ( renderer.capabilities.isWebGL2 === false ) ) {\n\n\t\t\t\t\tconst layerInit = {\n\t\t\t\t\t\tantialias: ( session.renderState.layers === undefined ) ? attributes.antialias : true,\n\t\t\t\t\t\talpha: attributes.alpha,\n\t\t\t\t\t\tdepth: attributes.depth,\n\t\t\t\t\t\tstencil: attributes.stencil,\n\t\t\t\t\t\tframebufferScaleFactor: framebufferScaleFactor\n\t\t\t\t\t};\n\n\t\t\t\t\tglBaseLayer = new XRWebGLLayer( session, gl, layerInit );\n\n\t\t\t\t\tsession.updateRenderState( { baseLayer: glBaseLayer } );\n\n\t\t\t\t\tnewRenderTarget = new WebGLRenderTarget(\n\t\t\t\t\t\tglBaseLayer.framebufferWidth,\n\t\t\t\t\t\tglBaseLayer.framebufferHeight,\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tformat: RGBAFormat,\n\t\t\t\t\t\t\ttype: UnsignedByteType,\n\t\t\t\t\t\t\tencoding: renderer.outputEncoding\n\t\t\t\t\t\t}\n\t\t\t\t\t);\n\n\t\t\t\t} else {\n\n\t\t\t\t\tlet depthFormat = null;\n\t\t\t\t\tlet depthType = null;\n\t\t\t\t\tlet glDepthFormat = null;\n\n\t\t\t\t\tif ( attributes.depth ) {\n\n\t\t\t\t\t\tglDepthFormat = attributes.stencil ? 35056 : 33190;\n\t\t\t\t\t\tdepthFormat = attributes.stencil ? DepthStencilFormat : DepthFormat;\n\t\t\t\t\t\tdepthType = attributes.stencil ? UnsignedInt248Type : UnsignedIntType;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tconst projectionlayerInit = {\n\t\t\t\t\t\tcolorFormat: ( renderer.outputEncoding === sRGBEncoding ) ? 35907 : 32856,\n\t\t\t\t\t\tdepthFormat: glDepthFormat,\n\t\t\t\t\t\tscaleFactor: framebufferScaleFactor\n\t\t\t\t\t};\n\n\t\t\t\t\tglBinding = new XRWebGLBinding( session, gl );\n\n\t\t\t\t\tglProjLayer = glBinding.createProjectionLayer( projectionlayerInit );\n\n\t\t\t\t\tsession.updateRenderState( { layers: [ glProjLayer ] } );\n\n\t\t\t\t\tnewRenderTarget = new WebGLRenderTarget(\n\t\t\t\t\t\tglProjLayer.textureWidth,\n\t\t\t\t\t\tglProjLayer.textureHeight,\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tformat: RGBAFormat,\n\t\t\t\t\t\t\ttype: UnsignedByteType,\n\t\t\t\t\t\t\tdepthTexture: new DepthTexture( glProjLayer.textureWidth, glProjLayer.textureHeight, depthType, undefined, undefined, undefined, undefined, undefined, undefined, depthFormat ),\n\t\t\t\t\t\t\tstencilBuffer: attributes.stencil,\n\t\t\t\t\t\t\tencoding: renderer.outputEncoding,\n\t\t\t\t\t\t\tsamples: attributes.antialias ? 4 : 0\n\t\t\t\t\t\t} );\n\n\t\t\t\t\tconst renderTargetProperties = renderer.properties.get( newRenderTarget );\n\t\t\t\t\trenderTargetProperties.__ignoreDepthValues = glProjLayer.ignoreDepthValues;\n\n\t\t\t\t}\n\n\t\t\t\tnewRenderTarget.isXRRenderTarget = true; // TODO Remove this when possible, see #23278\n\n\t\t\t\t// Set foveation to maximum.\n\t\t\t\tthis.setFoveation( 1.0 );\n\n\t\t\t\tcustomReferenceSpace = null;\n\t\t\t\treferenceSpace = await session.requestReferenceSpace( referenceSpaceType );\n\n\t\t\t\tanimation.setContext( session );\n\t\t\t\tanimation.start();\n\n\t\t\t\tscope.isPresenting = true;\n\n\t\t\t\tscope.dispatchEvent( { type: 'sessionstart' } );\n\n\t\t\t}\n\n\t\t};\n\n\t\tfunction onInputSourcesChange( event ) {\n\n\t\t\tconst inputSources = session.inputSources;\n\n\t\t\t// Assign controllers to available inputSources\n\n\t\t\tfor ( let i = 0; i < inputSources.length; i ++ ) {\n\n\t\t\t\tconst index = inputSources[ i ].handedness === 'right' ? 1 : 0;\n\t\t\t\tinputSourcesMap.set( inputSources[ i ], controllers[ index ] );\n\n\t\t\t}\n\n\t\t\t// Notify disconnected\n\n\t\t\tfor ( let i = 0; i < event.removed.length; i ++ ) {\n\n\t\t\t\tconst inputSource = event.removed[ i ];\n\t\t\t\tconst controller = inputSourcesMap.get( inputSource );\n\n\t\t\t\tif ( controller ) {\n\n\t\t\t\t\tcontroller.dispatchEvent( { type: 'disconnected', data: inputSource } );\n\t\t\t\t\tinputSourcesMap.delete( inputSource );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// Notify connected\n\n\t\t\tfor ( let i = 0; i < event.added.length; i ++ ) {\n\n\t\t\t\tconst inputSource = event.added[ i ];\n\t\t\t\tconst controller = inputSourcesMap.get( inputSource );\n\n\t\t\t\tif ( controller ) {\n\n\t\t\t\t\tcontroller.dispatchEvent( { type: 'connected', data: inputSource } );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\t//\n\n\t\tconst cameraLPos = new Vector3();\n\t\tconst cameraRPos = new Vector3();\n\n\t\t/**\n\t\t * Assumes 2 cameras that are parallel and share an X-axis, and that\n\t\t * the cameras' projection and world matrices have already been set.\n\t\t * And that near and far planes are identical for both cameras.\n\t\t * Visualization of this technique: https://computergraphics.stackexchange.com/a/4765\n\t\t */\n\t\tfunction setProjectionFromUnion( camera, cameraL, cameraR ) {\n\n\t\t\tcameraLPos.setFromMatrixPosition( cameraL.matrixWorld );\n\t\t\tcameraRPos.setFromMatrixPosition( cameraR.matrixWorld );\n\n\t\t\tconst ipd = cameraLPos.distanceTo( cameraRPos );\n\n\t\t\tconst projL = cameraL.projectionMatrix.elements;\n\t\t\tconst projR = cameraR.projectionMatrix.elements;\n\n\t\t\t// VR systems will have identical far and near planes, and\n\t\t\t// most likely identical top and bottom frustum extents.\n\t\t\t// Use the left camera for these values.\n\t\t\tconst near = projL[ 14 ] / ( projL[ 10 ] - 1 );\n\t\t\tconst far = projL[ 14 ] / ( projL[ 10 ] + 1 );\n\t\t\tconst topFov = ( projL[ 9 ] + 1 ) / projL[ 5 ];\n\t\t\tconst bottomFov = ( projL[ 9 ] - 1 ) / projL[ 5 ];\n\n\t\t\tconst leftFov = ( projL[ 8 ] - 1 ) / projL[ 0 ];\n\t\t\tconst rightFov = ( projR[ 8 ] + 1 ) / projR[ 0 ];\n\t\t\tconst left = near * leftFov;\n\t\t\tconst right = near * rightFov;\n\n\t\t\t// Calculate the new camera's position offset from the\n\t\t\t// left camera. xOffset should be roughly half `ipd`.\n\t\t\tconst zOffset = ipd / ( - leftFov + rightFov );\n\t\t\tconst xOffset = zOffset * - leftFov;\n\n\t\t\t// TODO: Better way to apply this offset?\n\t\t\tcameraL.matrixWorld.decompose( camera.position, camera.quaternion, camera.scale );\n\t\t\tcamera.translateX( xOffset );\n\t\t\tcamera.translateZ( zOffset );\n\t\t\tcamera.matrixWorld.compose( camera.position, camera.quaternion, camera.scale );\n\t\t\tcamera.matrixWorldInverse.copy( camera.matrixWorld ).invert();\n\n\t\t\t// Find the union of the frustum values of the cameras and scale\n\t\t\t// the values so that the near plane's position does not change in world space,\n\t\t\t// although must now be relative to the new union camera.\n\t\t\tconst near2 = near + zOffset;\n\t\t\tconst far2 = far + zOffset;\n\t\t\tconst left2 = left - xOffset;\n\t\t\tconst right2 = right + ( ipd - xOffset );\n\t\t\tconst top2 = topFov * far / far2 * near2;\n\t\t\tconst bottom2 = bottomFov * far / far2 * near2;\n\n\t\t\tcamera.projectionMatrix.makePerspective( left2, right2, top2, bottom2, near2, far2 );\n\n\t\t}\n\n\t\tfunction updateCamera( camera, parent ) {\n\n\t\t\tif ( parent === null ) {\n\n\t\t\t\tcamera.matrixWorld.copy( camera.matrix );\n\n\t\t\t} else {\n\n\t\t\t\tcamera.matrixWorld.multiplyMatrices( parent.matrixWorld, camera.matrix );\n\n\t\t\t}\n\n\t\t\tcamera.matrixWorldInverse.copy( camera.matrixWorld ).invert();\n\n\t\t}\n\n\t\tthis.updateCamera = function ( camera ) {\n\n\t\t\tif ( session === null ) return;\n\n\t\t\tcameraVR.near = cameraR.near = cameraL.near = camera.near;\n\t\t\tcameraVR.far = cameraR.far = cameraL.far = camera.far;\n\n\t\t\tif ( _currentDepthNear !== cameraVR.near || _currentDepthFar !== cameraVR.far ) {\n\n\t\t\t\t// Note that the new renderState won't apply until the next frame. See #18320\n\n\t\t\t\tsession.updateRenderState( {\n\t\t\t\t\tdepthNear: cameraVR.near,\n\t\t\t\t\tdepthFar: cameraVR.far\n\t\t\t\t} );\n\n\t\t\t\t_currentDepthNear = cameraVR.near;\n\t\t\t\t_currentDepthFar = cameraVR.far;\n\n\t\t\t}\n\n\t\t\tconst parent = camera.parent;\n\t\t\tconst cameras = cameraVR.cameras;\n\n\t\t\tupdateCamera( cameraVR, parent );\n\n\t\t\tfor ( let i = 0; i < cameras.length; i ++ ) {\n\n\t\t\t\tupdateCamera( cameras[ i ], parent );\n\n\t\t\t}\n\n\t\t\tcameraVR.matrixWorld.decompose( cameraVR.position, cameraVR.quaternion, cameraVR.scale );\n\n\t\t\t// update user camera and its children\n\n\t\t\tcamera.position.copy( cameraVR.position );\n\t\t\tcamera.quaternion.copy( cameraVR.quaternion );\n\t\t\tcamera.scale.copy( cameraVR.scale );\n\t\t\tcamera.matrix.copy( cameraVR.matrix );\n\t\t\tcamera.matrixWorld.copy( cameraVR.matrixWorld );\n\n\t\t\tconst children = camera.children;\n\n\t\t\tfor ( let i = 0, l = children.length; i < l; i ++ ) {\n\n\t\t\t\tchildren[ i ].updateMatrixWorld( true );\n\n\t\t\t}\n\n\t\t\t// update projection matrix for proper view frustum culling\n\n\t\t\tif ( cameras.length === 2 ) {\n\n\t\t\t\tsetProjectionFromUnion( cameraVR, cameraL, cameraR );\n\n\t\t\t} else {\n\n\t\t\t\t// assume single camera setup (AR)\n\n\t\t\t\tcameraVR.projectionMatrix.copy( cameraL.projectionMatrix );\n\n\t\t\t}\n\n\t\t};\n\n\t\tthis.getCamera = function () {\n\n\t\t\treturn cameraVR;\n\n\t\t};\n\n\t\tthis.getFoveation = function () {\n\n\t\t\tif ( glProjLayer !== null ) {\n\n\t\t\t\treturn glProjLayer.fixedFoveation;\n\n\t\t\t}\n\n\t\t\tif ( glBaseLayer !== null ) {\n\n\t\t\t\treturn glBaseLayer.fixedFoveation;\n\n\t\t\t}\n\n\t\t\treturn undefined;\n\n\t\t};\n\n\t\tthis.setFoveation = function ( foveation ) {\n\n\t\t\t// 0 = no foveation = full resolution\n\t\t\t// 1 = maximum foveation = the edges render at lower resolution\n\n\t\t\tif ( glProjLayer !== null ) {\n\n\t\t\t\tglProjLayer.fixedFoveation = foveation;\n\n\t\t\t}\n\n\t\t\tif ( glBaseLayer !== null && glBaseLayer.fixedFoveation !== undefined ) {\n\n\t\t\t\tglBaseLayer.fixedFoveation = foveation;\n\n\t\t\t}\n\n\t\t};\n\n\t\t// Animation Loop\n\n\t\tlet onAnimationFrameCallback = null;\n\n\t\tfunction onAnimationFrame( time, frame ) {\n\n\t\t\tpose = frame.getViewerPose( customReferenceSpace || referenceSpace );\n\t\t\txrFrame = frame;\n\n\t\t\tif ( pose !== null ) {\n\n\t\t\t\tconst views = pose.views;\n\n\t\t\t\tif ( glBaseLayer !== null ) {\n\n\t\t\t\t\trenderer.setRenderTargetFramebuffer( newRenderTarget, glBaseLayer.framebuffer );\n\t\t\t\t\trenderer.setRenderTarget( newRenderTarget );\n\n\t\t\t\t}\n\n\t\t\t\tlet cameraVRNeedsUpdate = false;\n\n\t\t\t\t// check if it's necessary to rebuild cameraVR's camera list\n\n\t\t\t\tif ( views.length !== cameraVR.cameras.length ) {\n\n\t\t\t\t\tcameraVR.cameras.length = 0;\n\t\t\t\t\tcameraVRNeedsUpdate = true;\n\n\t\t\t\t}\n\n\t\t\t\tfor ( let i = 0; i < views.length; i ++ ) {\n\n\t\t\t\t\tconst view = views[ i ];\n\n\t\t\t\t\tlet viewport = null;\n\n\t\t\t\t\tif ( glBaseLayer !== null ) {\n\n\t\t\t\t\t\tviewport = glBaseLayer.getViewport( view );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tconst glSubImage = glBinding.getViewSubImage( glProjLayer, view );\n\t\t\t\t\t\tviewport = glSubImage.viewport;\n\n\t\t\t\t\t\t// For side-by-side projection, we only produce a single texture for both eyes.\n\t\t\t\t\t\tif ( i === 0 ) {\n\n\t\t\t\t\t\t\trenderer.setRenderTargetTextures(\n\t\t\t\t\t\t\t\tnewRenderTarget,\n\t\t\t\t\t\t\t\tglSubImage.colorTexture,\n\t\t\t\t\t\t\t\tglProjLayer.ignoreDepthValues ? undefined : glSubImage.depthStencilTexture );\n\n\t\t\t\t\t\t\trenderer.setRenderTarget( newRenderTarget );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t\tlet camera = cameras[ i ];\n\n\t\t\t\t\tif ( camera === undefined ) {\n\n\t\t\t\t\t\tcamera = new PerspectiveCamera();\n\t\t\t\t\t\tcamera.layers.enable( i );\n\t\t\t\t\t\tcamera.viewport = new Vector4();\n\t\t\t\t\t\tcameras[ i ] = camera;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tcamera.matrix.fromArray( view.transform.matrix );\n\t\t\t\t\tcamera.projectionMatrix.fromArray( view.projectionMatrix );\n\t\t\t\t\tcamera.viewport.set( viewport.x, viewport.y, viewport.width, viewport.height );\n\n\t\t\t\t\tif ( i === 0 ) {\n\n\t\t\t\t\t\tcameraVR.matrix.copy( camera.matrix );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( cameraVRNeedsUpdate === true ) {\n\n\t\t\t\t\t\tcameraVR.cameras.push( camera );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t//\n\n\t\t\tconst inputSources = session.inputSources;\n\n\t\t\tfor ( let i = 0; i < controllers.length; i ++ ) {\n\n\t\t\t\tconst inputSource = inputSources[ i ];\n\t\t\t\tconst controller = inputSourcesMap.get( inputSource );\n\n\t\t\t\tif ( controller !== undefined ) {\n\n\t\t\t\t\tcontroller.update( inputSource, frame, customReferenceSpace || referenceSpace );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( onAnimationFrameCallback ) onAnimationFrameCallback( time, frame );\n\n\t\t\txrFrame = null;\n\n\t\t}\n\n\t\tconst animation = new WebGLAnimation();\n\n\t\tanimation.setAnimationLoop( onAnimationFrame );\n\n\t\tthis.setAnimationLoop = function ( callback ) {\n\n\t\t\tonAnimationFrameCallback = callback;\n\n\t\t};\n\n\t\tthis.dispose = function () {};\n\n\t}\n\n}\n\nfunction WebGLMaterials( renderer, properties ) {\n\n\tfunction refreshFogUniforms( uniforms, fog ) {\n\n\t\tuniforms.fogColor.value.copy( fog.color );\n\n\t\tif ( fog.isFog ) {\n\n\t\t\tuniforms.fogNear.value = fog.near;\n\t\t\tuniforms.fogFar.value = fog.far;\n\n\t\t} else if ( fog.isFogExp2 ) {\n\n\t\t\tuniforms.fogDensity.value = fog.density;\n\n\t\t}\n\n\t}\n\n\tfunction refreshMaterialUniforms( uniforms, material, pixelRatio, height, transmissionRenderTarget ) {\n\n\t\tif ( material.isMeshBasicMaterial ) {\n\n\t\t\trefreshUniformsCommon( uniforms, material );\n\n\t\t} else if ( material.isMeshLambertMaterial ) {\n\n\t\t\trefreshUniformsCommon( uniforms, material );\n\n\t\t} else if ( material.isMeshToonMaterial ) {\n\n\t\t\trefreshUniformsCommon( uniforms, material );\n\t\t\trefreshUniformsToon( uniforms, material );\n\n\t\t} else if ( material.isMeshPhongMaterial ) {\n\n\t\t\trefreshUniformsCommon( uniforms, material );\n\t\t\trefreshUniformsPhong( uniforms, material );\n\n\t\t} else if ( material.isMeshStandardMaterial ) {\n\n\t\t\trefreshUniformsCommon( uniforms, material );\n\t\t\trefreshUniformsStandard( uniforms, material );\n\n\t\t\tif ( material.isMeshPhysicalMaterial ) {\n\n\t\t\t\trefreshUniformsPhysical( uniforms, material, transmissionRenderTarget );\n\n\t\t\t}\n\n\t\t} else if ( material.isMeshMatcapMaterial ) {\n\n\t\t\trefreshUniformsCommon( uniforms, material );\n\t\t\trefreshUniformsMatcap( uniforms, material );\n\n\t\t} else if ( material.isMeshDepthMaterial ) {\n\n\t\t\trefreshUniformsCommon( uniforms, material );\n\n\t\t} else if ( material.isMeshDistanceMaterial ) {\n\n\t\t\trefreshUniformsCommon( uniforms, material );\n\t\t\trefreshUniformsDistance( uniforms, material );\n\n\t\t} else if ( material.isMeshNormalMaterial ) {\n\n\t\t\trefreshUniformsCommon( uniforms, material );\n\n\t\t} else if ( material.isLineBasicMaterial ) {\n\n\t\t\trefreshUniformsLine( uniforms, material );\n\n\t\t\tif ( material.isLineDashedMaterial ) {\n\n\t\t\t\trefreshUniformsDash( uniforms, material );\n\n\t\t\t}\n\n\t\t} else if ( material.isPointsMaterial ) {\n\n\t\t\trefreshUniformsPoints( uniforms, material, pixelRatio, height );\n\n\t\t} else if ( material.isSpriteMaterial ) {\n\n\t\t\trefreshUniformsSprites( uniforms, material );\n\n\t\t} else if ( material.isShadowMaterial ) {\n\n\t\t\tuniforms.color.value.copy( material.color );\n\t\t\tuniforms.opacity.value = material.opacity;\n\n\t\t} else if ( material.isShaderMaterial ) {\n\n\t\t\tmaterial.uniformsNeedUpdate = false; // #15581\n\n\t\t}\n\n\t}\n\n\tfunction refreshUniformsCommon( uniforms, material ) {\n\n\t\tuniforms.opacity.value = material.opacity;\n\n\t\tif ( material.color ) {\n\n\t\t\tuniforms.diffuse.value.copy( material.color );\n\n\t\t}\n\n\t\tif ( material.emissive ) {\n\n\t\t\tuniforms.emissive.value.copy( material.emissive ).multiplyScalar( material.emissiveIntensity );\n\n\t\t}\n\n\t\tif ( material.map ) {\n\n\t\t\tuniforms.map.value = material.map;\n\n\t\t}\n\n\t\tif ( material.alphaMap ) {\n\n\t\t\tuniforms.alphaMap.value = material.alphaMap;\n\n\t\t}\n\n\t\tif ( material.bumpMap ) {\n\n\t\t\tuniforms.bumpMap.value = material.bumpMap;\n\t\t\tuniforms.bumpScale.value = material.bumpScale;\n\t\t\tif ( material.side === BackSide ) uniforms.bumpScale.value *= - 1;\n\n\t\t}\n\n\t\tif ( material.displacementMap ) {\n\n\t\t\tuniforms.displacementMap.value = material.displacementMap;\n\t\t\tuniforms.displacementScale.value = material.displacementScale;\n\t\t\tuniforms.displacementBias.value = material.displacementBias;\n\n\t\t}\n\n\t\tif ( material.emissiveMap ) {\n\n\t\t\tuniforms.emissiveMap.value = material.emissiveMap;\n\n\t\t}\n\n\t\tif ( material.normalMap ) {\n\n\t\t\tuniforms.normalMap.value = material.normalMap;\n\t\t\tuniforms.normalScale.value.copy( material.normalScale );\n\t\t\tif ( material.side === BackSide ) uniforms.normalScale.value.negate();\n\n\t\t}\n\n\t\tif ( material.specularMap ) {\n\n\t\t\tuniforms.specularMap.value = material.specularMap;\n\n\t\t}\n\n\t\tif ( material.alphaTest > 0 ) {\n\n\t\t\tuniforms.alphaTest.value = material.alphaTest;\n\n\t\t}\n\n\t\tconst envMap = properties.get( material ).envMap;\n\n\t\tif ( envMap ) {\n\n\t\t\tuniforms.envMap.value = envMap;\n\n\t\t\tuniforms.flipEnvMap.value = ( envMap.isCubeTexture && envMap.isRenderTargetTexture === false ) ? - 1 : 1;\n\n\t\t\tuniforms.reflectivity.value = material.reflectivity;\n\t\t\tuniforms.ior.value = material.ior;\n\t\t\tuniforms.refractionRatio.value = material.refractionRatio;\n\n\t\t}\n\n\t\tif ( material.lightMap ) {\n\n\t\t\tuniforms.lightMap.value = material.lightMap;\n\n\t\t\t// artist-friendly light intensity scaling factor\n\t\t\tconst scaleFactor = ( renderer.physicallyCorrectLights !== true ) ? Math.PI : 1;\n\n\t\t\tuniforms.lightMapIntensity.value = material.lightMapIntensity * scaleFactor;\n\n\t\t}\n\n\t\tif ( material.aoMap ) {\n\n\t\t\tuniforms.aoMap.value = material.aoMap;\n\t\t\tuniforms.aoMapIntensity.value = material.aoMapIntensity;\n\n\t\t}\n\n\t\t// uv repeat and offset setting priorities\n\t\t// 1. color map\n\t\t// 2. specular map\n\t\t// 3. displacementMap map\n\t\t// 4. normal map\n\t\t// 5. bump map\n\t\t// 6. roughnessMap map\n\t\t// 7. metalnessMap map\n\t\t// 8. alphaMap map\n\t\t// 9. emissiveMap map\n\t\t// 10. clearcoat map\n\t\t// 11. clearcoat normal map\n\t\t// 12. clearcoat roughnessMap map\n\t\t// 13. iridescence map\n\t\t// 14. iridescence thickness map\n\t\t// 15. specular intensity map\n\t\t// 16. specular tint map\n\t\t// 17. transmission map\n\t\t// 18. thickness map\n\n\t\tlet uvScaleMap;\n\n\t\tif ( material.map ) {\n\n\t\t\tuvScaleMap = material.map;\n\n\t\t} else if ( material.specularMap ) {\n\n\t\t\tuvScaleMap = material.specularMap;\n\n\t\t} else if ( material.displacementMap ) {\n\n\t\t\tuvScaleMap = material.displacementMap;\n\n\t\t} else if ( material.normalMap ) {\n\n\t\t\tuvScaleMap = material.normalMap;\n\n\t\t} else if ( material.bumpMap ) {\n\n\t\t\tuvScaleMap = material.bumpMap;\n\n\t\t} else if ( material.roughnessMap ) {\n\n\t\t\tuvScaleMap = material.roughnessMap;\n\n\t\t} else if ( material.metalnessMap ) {\n\n\t\t\tuvScaleMap = material.metalnessMap;\n\n\t\t} else if ( material.alphaMap ) {\n\n\t\t\tuvScaleMap = material.alphaMap;\n\n\t\t} else if ( material.emissiveMap ) {\n\n\t\t\tuvScaleMap = material.emissiveMap;\n\n\t\t} else if ( material.clearcoatMap ) {\n\n\t\t\tuvScaleMap = material.clearcoatMap;\n\n\t\t} else if ( material.clearcoatNormalMap ) {\n\n\t\t\tuvScaleMap = material.clearcoatNormalMap;\n\n\t\t} else if ( material.clearcoatRoughnessMap ) {\n\n\t\t\tuvScaleMap = material.clearcoatRoughnessMap;\n\n\t\t} else if ( material.iridescenceMap ) {\n\n\t\t\tuvScaleMap = material.iridescenceMap;\n\n\t\t} else if ( material.iridescenceThicknessMap ) {\n\n\t\t\tuvScaleMap = material.iridescenceThicknessMap;\n\n\t\t} else if ( material.specularIntensityMap ) {\n\n\t\t\tuvScaleMap = material.specularIntensityMap;\n\n\t\t} else if ( material.specularColorMap ) {\n\n\t\t\tuvScaleMap = material.specularColorMap;\n\n\t\t} else if ( material.transmissionMap ) {\n\n\t\t\tuvScaleMap = material.transmissionMap;\n\n\t\t} else if ( material.thicknessMap ) {\n\n\t\t\tuvScaleMap = material.thicknessMap;\n\n\t\t} else if ( material.sheenColorMap ) {\n\n\t\t\tuvScaleMap = material.sheenColorMap;\n\n\t\t} else if ( material.sheenRoughnessMap ) {\n\n\t\t\tuvScaleMap = material.sheenRoughnessMap;\n\n\t\t}\n\n\t\tif ( uvScaleMap !== undefined ) {\n\n\t\t\t// backwards compatibility\n\t\t\tif ( uvScaleMap.isWebGLRenderTarget ) {\n\n\t\t\t\tuvScaleMap = uvScaleMap.texture;\n\n\t\t\t}\n\n\t\t\tif ( uvScaleMap.matrixAutoUpdate === true ) {\n\n\t\t\t\tuvScaleMap.updateMatrix();\n\n\t\t\t}\n\n\t\t\tuniforms.uvTransform.value.copy( uvScaleMap.matrix );\n\n\t\t}\n\n\t\t// uv repeat and offset setting priorities for uv2\n\t\t// 1. ao map\n\t\t// 2. light map\n\n\t\tlet uv2ScaleMap;\n\n\t\tif ( material.aoMap ) {\n\n\t\t\tuv2ScaleMap = material.aoMap;\n\n\t\t} else if ( material.lightMap ) {\n\n\t\t\tuv2ScaleMap = material.lightMap;\n\n\t\t}\n\n\t\tif ( uv2ScaleMap !== undefined ) {\n\n\t\t\t// backwards compatibility\n\t\t\tif ( uv2ScaleMap.isWebGLRenderTarget ) {\n\n\t\t\t\tuv2ScaleMap = uv2ScaleMap.texture;\n\n\t\t\t}\n\n\t\t\tif ( uv2ScaleMap.matrixAutoUpdate === true ) {\n\n\t\t\t\tuv2ScaleMap.updateMatrix();\n\n\t\t\t}\n\n\t\t\tuniforms.uv2Transform.value.copy( uv2ScaleMap.matrix );\n\n\t\t}\n\n\t}\n\n\tfunction refreshUniformsLine( uniforms, material ) {\n\n\t\tuniforms.diffuse.value.copy( material.color );\n\t\tuniforms.opacity.value = material.opacity;\n\n\t}\n\n\tfunction refreshUniformsDash( uniforms, material ) {\n\n\t\tuniforms.dashSize.value = material.dashSize;\n\t\tuniforms.totalSize.value = material.dashSize + material.gapSize;\n\t\tuniforms.scale.value = material.scale;\n\n\t}\n\n\tfunction refreshUniformsPoints( uniforms, material, pixelRatio, height ) {\n\n\t\tuniforms.diffuse.value.copy( material.color );\n\t\tuniforms.opacity.value = material.opacity;\n\t\tuniforms.size.value = material.size * pixelRatio;\n\t\tuniforms.scale.value = height * 0.5;\n\n\t\tif ( material.map ) {\n\n\t\t\tuniforms.map.value = material.map;\n\n\t\t}\n\n\t\tif ( material.alphaMap ) {\n\n\t\t\tuniforms.alphaMap.value = material.alphaMap;\n\n\t\t}\n\n\t\tif ( material.alphaTest > 0 ) {\n\n\t\t\tuniforms.alphaTest.value = material.alphaTest;\n\n\t\t}\n\n\t\t// uv repeat and offset setting priorities\n\t\t// 1. color map\n\t\t// 2. alpha map\n\n\t\tlet uvScaleMap;\n\n\t\tif ( material.map ) {\n\n\t\t\tuvScaleMap = material.map;\n\n\t\t} else if ( material.alphaMap ) {\n\n\t\t\tuvScaleMap = material.alphaMap;\n\n\t\t}\n\n\t\tif ( uvScaleMap !== undefined ) {\n\n\t\t\tif ( uvScaleMap.matrixAutoUpdate === true ) {\n\n\t\t\t\tuvScaleMap.updateMatrix();\n\n\t\t\t}\n\n\t\t\tuniforms.uvTransform.value.copy( uvScaleMap.matrix );\n\n\t\t}\n\n\t}\n\n\tfunction refreshUniformsSprites( uniforms, material ) {\n\n\t\tuniforms.diffuse.value.copy( material.color );\n\t\tuniforms.opacity.value = material.opacity;\n\t\tuniforms.rotation.value = material.rotation;\n\n\t\tif ( material.map ) {\n\n\t\t\tuniforms.map.value = material.map;\n\n\t\t}\n\n\t\tif ( material.alphaMap ) {\n\n\t\t\tuniforms.alphaMap.value = material.alphaMap;\n\n\t\t}\n\n\t\tif ( material.alphaTest > 0 ) {\n\n\t\t\tuniforms.alphaTest.value = material.alphaTest;\n\n\t\t}\n\n\t\t// uv repeat and offset setting priorities\n\t\t// 1. color map\n\t\t// 2. alpha map\n\n\t\tlet uvScaleMap;\n\n\t\tif ( material.map ) {\n\n\t\t\tuvScaleMap = material.map;\n\n\t\t} else if ( material.alphaMap ) {\n\n\t\t\tuvScaleMap = material.alphaMap;\n\n\t\t}\n\n\t\tif ( uvScaleMap !== undefined ) {\n\n\t\t\tif ( uvScaleMap.matrixAutoUpdate === true ) {\n\n\t\t\t\tuvScaleMap.updateMatrix();\n\n\t\t\t}\n\n\t\t\tuniforms.uvTransform.value.copy( uvScaleMap.matrix );\n\n\t\t}\n\n\t}\n\n\tfunction refreshUniformsPhong( uniforms, material ) {\n\n\t\tuniforms.specular.value.copy( material.specular );\n\t\tuniforms.shininess.value = Math.max( material.shininess, 1e-4 ); // to prevent pow( 0.0, 0.0 )\n\n\t}\n\n\tfunction refreshUniformsToon( uniforms, material ) {\n\n\t\tif ( material.gradientMap ) {\n\n\t\t\tuniforms.gradientMap.value = material.gradientMap;\n\n\t\t}\n\n\t}\n\n\tfunction refreshUniformsStandard( uniforms, material ) {\n\n\t\tuniforms.roughness.value = material.roughness;\n\t\tuniforms.metalness.value = material.metalness;\n\n\t\tif ( material.roughnessMap ) {\n\n\t\t\tuniforms.roughnessMap.value = material.roughnessMap;\n\n\t\t}\n\n\t\tif ( material.metalnessMap ) {\n\n\t\t\tuniforms.metalnessMap.value = material.metalnessMap;\n\n\t\t}\n\n\t\tconst envMap = properties.get( material ).envMap;\n\n\t\tif ( envMap ) {\n\n\t\t\t//uniforms.envMap.value = material.envMap; // part of uniforms common\n\t\t\tuniforms.envMapIntensity.value = material.envMapIntensity;\n\n\t\t}\n\n\t}\n\n\tfunction refreshUniformsPhysical( uniforms, material, transmissionRenderTarget ) {\n\n\t\tuniforms.ior.value = material.ior; // also part of uniforms common\n\n\t\tif ( material.sheen > 0 ) {\n\n\t\t\tuniforms.sheenColor.value.copy( material.sheenColor ).multiplyScalar( material.sheen );\n\n\t\t\tuniforms.sheenRoughness.value = material.sheenRoughness;\n\n\t\t\tif ( material.sheenColorMap ) {\n\n\t\t\t\tuniforms.sheenColorMap.value = material.sheenColorMap;\n\n\t\t\t}\n\n\t\t\tif ( material.sheenRoughnessMap ) {\n\n\t\t\t\tuniforms.sheenRoughnessMap.value = material.sheenRoughnessMap;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( material.clearcoat > 0 ) {\n\n\t\t\tuniforms.clearcoat.value = material.clearcoat;\n\t\t\tuniforms.clearcoatRoughness.value = material.clearcoatRoughness;\n\n\t\t\tif ( material.clearcoatMap ) {\n\n\t\t\t\tuniforms.clearcoatMap.value = material.clearcoatMap;\n\n\t\t\t}\n\n\t\t\tif ( material.clearcoatRoughnessMap ) {\n\n\t\t\t\tuniforms.clearcoatRoughnessMap.value = material.clearcoatRoughnessMap;\n\n\t\t\t}\n\n\t\t\tif ( material.clearcoatNormalMap ) {\n\n\t\t\t\tuniforms.clearcoatNormalScale.value.copy( material.clearcoatNormalScale );\n\t\t\t\tuniforms.clearcoatNormalMap.value = material.clearcoatNormalMap;\n\n\t\t\t\tif ( material.side === BackSide ) {\n\n\t\t\t\t\tuniforms.clearcoatNormalScale.value.negate();\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( material.iridescence > 0 ) {\n\n\t\t\tuniforms.iridescence.value = material.iridescence;\n\t\t\tuniforms.iridescenceIOR.value = material.iridescenceIOR;\n\t\t\tuniforms.iridescenceThicknessMinimum.value = material.iridescenceThicknessRange[ 0 ];\n\t\t\tuniforms.iridescenceThicknessMaximum.value = material.iridescenceThicknessRange[ 1 ];\n\n\t\t\tif ( material.iridescenceMap ) {\n\n\t\t\t\tuniforms.iridescenceMap.value = material.iridescenceMap;\n\n\t\t\t}\n\n\t\t\tif ( material.iridescenceThicknessMap ) {\n\n\t\t\t\tuniforms.iridescenceThicknessMap.value = material.iridescenceThicknessMap;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( material.transmission > 0 ) {\n\n\t\t\tuniforms.transmission.value = material.transmission;\n\t\t\tuniforms.transmissionSamplerMap.value = transmissionRenderTarget.texture;\n\t\t\tuniforms.transmissionSamplerSize.value.set( transmissionRenderTarget.width, transmissionRenderTarget.height );\n\n\t\t\tif ( material.transmissionMap ) {\n\n\t\t\t\tuniforms.transmissionMap.value = material.transmissionMap;\n\n\t\t\t}\n\n\t\t\tuniforms.thickness.value = material.thickness;\n\n\t\t\tif ( material.thicknessMap ) {\n\n\t\t\t\tuniforms.thicknessMap.value = material.thicknessMap;\n\n\t\t\t}\n\n\t\t\tuniforms.attenuationDistance.value = material.attenuationDistance;\n\t\t\tuniforms.attenuationColor.value.copy( material.attenuationColor );\n\n\t\t}\n\n\t\tuniforms.specularIntensity.value = material.specularIntensity;\n\t\tuniforms.specularColor.value.copy( material.specularColor );\n\n\t\tif ( material.specularIntensityMap ) {\n\n\t\t\tuniforms.specularIntensityMap.value = material.specularIntensityMap;\n\n\t\t}\n\n\t\tif ( material.specularColorMap ) {\n\n\t\t\tuniforms.specularColorMap.value = material.specularColorMap;\n\n\t\t}\n\n\t}\n\n\tfunction refreshUniformsMatcap( uniforms, material ) {\n\n\t\tif ( material.matcap ) {\n\n\t\t\tuniforms.matcap.value = material.matcap;\n\n\t\t}\n\n\t}\n\n\tfunction refreshUniformsDistance( uniforms, material ) {\n\n\t\tuniforms.referencePosition.value.copy( material.referencePosition );\n\t\tuniforms.nearDistance.value = material.nearDistance;\n\t\tuniforms.farDistance.value = material.farDistance;\n\n\t}\n\n\treturn {\n\t\trefreshFogUniforms: refreshFogUniforms,\n\t\trefreshMaterialUniforms: refreshMaterialUniforms\n\t};\n\n}\n\nfunction createCanvasElement() {\n\n\tconst canvas = createElementNS( 'canvas' );\n\tcanvas.style.display = 'block';\n\treturn canvas;\n\n}\n\nfunction WebGLRenderer( parameters = {} ) {\n\n\tthis.isWebGLRenderer = true;\n\n\tconst _canvas = parameters.canvas !== undefined ? parameters.canvas : createCanvasElement(),\n\t\t_context = parameters.context !== undefined ? parameters.context : null,\n\n\t\t_depth = parameters.depth !== undefined ? parameters.depth : true,\n\t\t_stencil = parameters.stencil !== undefined ? parameters.stencil : true,\n\t\t_antialias = parameters.antialias !== undefined ? parameters.antialias : false,\n\t\t_premultipliedAlpha = parameters.premultipliedAlpha !== undefined ? parameters.premultipliedAlpha : true,\n\t\t_preserveDrawingBuffer = parameters.preserveDrawingBuffer !== undefined ? parameters.preserveDrawingBuffer : false,\n\t\t_powerPreference = parameters.powerPreference !== undefined ? parameters.powerPreference : 'default',\n\t\t_failIfMajorPerformanceCaveat = parameters.failIfMajorPerformanceCaveat !== undefined ? parameters.failIfMajorPerformanceCaveat : false;\n\n\tlet _alpha;\n\n\tif ( _context !== null ) {\n\n\t\t_alpha = _context.getContextAttributes().alpha;\n\n\t} else {\n\n\t\t_alpha = parameters.alpha !== undefined ? parameters.alpha : false;\n\n\t}\n\n\tlet currentRenderList = null;\n\tlet currentRenderState = null;\n\n\t// render() can be called from within a callback triggered by another render.\n\t// We track this so that the nested render call gets its list and state isolated from the parent render call.\n\n\tconst renderListStack = [];\n\tconst renderStateStack = [];\n\n\t// public properties\n\n\tthis.domElement = _canvas;\n\n\t// Debug configuration container\n\tthis.debug = {\n\n\t\t/**\n\t\t * Enables error checking and reporting when shader programs are being compiled\n\t\t * @type {boolean}\n\t\t */\n\t\tcheckShaderErrors: true\n\t};\n\n\t// clearing\n\n\tthis.autoClear = true;\n\tthis.autoClearColor = true;\n\tthis.autoClearDepth = true;\n\tthis.autoClearStencil = true;\n\n\t// scene graph\n\n\tthis.sortObjects = true;\n\n\t// user-defined clipping\n\n\tthis.clippingPlanes = [];\n\tthis.localClippingEnabled = false;\n\n\t// physically based shading\n\n\tthis.outputEncoding = LinearEncoding;\n\n\t// physical lights\n\n\tthis.physicallyCorrectLights = false;\n\n\t// tone mapping\n\n\tthis.toneMapping = NoToneMapping;\n\tthis.toneMappingExposure = 1.0;\n\n\t//\n\n\tObject.defineProperties( this, {\n\n\t\t// @deprecated since r136, 0e21088102b4de7e0a0a33140620b7a3424b9e6d\n\n\t\tgammaFactor: {\n\t\t\tget: function () {\n\n\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: .gammaFactor has been removed.' );\n\t\t\t\treturn 2;\n\n\t\t\t},\n\t\t\tset: function () {\n\n\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: .gammaFactor has been removed.' );\n\n\t\t\t}\n\t\t}\n\n\t} );\n\n\t// internal properties\n\n\tconst _this = this;\n\n\tlet _isContextLost = false;\n\n\t// internal state cache\n\n\tlet _currentActiveCubeFace = 0;\n\tlet _currentActiveMipmapLevel = 0;\n\tlet _currentRenderTarget = null;\n\tlet _currentMaterialId = - 1;\n\n\tlet _currentCamera = null;\n\n\tconst _currentViewport = new Vector4();\n\tconst _currentScissor = new Vector4();\n\tlet _currentScissorTest = null;\n\n\t//\n\n\tlet _width = _canvas.width;\n\tlet _height = _canvas.height;\n\n\tlet _pixelRatio = 1;\n\tlet _opaqueSort = null;\n\tlet _transparentSort = null;\n\n\tconst _viewport = new Vector4( 0, 0, _width, _height );\n\tconst _scissor = new Vector4( 0, 0, _width, _height );\n\tlet _scissorTest = false;\n\n\t// frustum\n\n\tconst _frustum = new Frustum();\n\n\t// clipping\n\n\tlet _clippingEnabled = false;\n\tlet _localClippingEnabled = false;\n\n\t// transmission\n\n\tlet _transmissionRenderTarget = null;\n\n\t// camera matrices cache\n\n\tconst _projScreenMatrix = new Matrix4();\n\n\tconst _vector2 = new Vector2();\n\tconst _vector3 = new Vector3();\n\n\tconst _emptyScene = { background: null, fog: null, environment: null, overrideMaterial: null, isScene: true };\n\n\tfunction getTargetPixelRatio() {\n\n\t\treturn _currentRenderTarget === null ? _pixelRatio : 1;\n\n\t}\n\n\t// initialize\n\n\tlet _gl = _context;\n\n\tfunction getContext( contextNames, contextAttributes ) {\n\n\t\tfor ( let i = 0; i < contextNames.length; i ++ ) {\n\n\t\t\tconst contextName = contextNames[ i ];\n\t\t\tconst context = _canvas.getContext( contextName, contextAttributes );\n\t\t\tif ( context !== null ) return context;\n\n\t\t}\n\n\t\treturn null;\n\n\t}\n\n\ttry {\n\n\t\tconst contextAttributes = {\n\t\t\talpha: true,\n\t\t\tdepth: _depth,\n\t\t\tstencil: _stencil,\n\t\t\tantialias: _antialias,\n\t\t\tpremultipliedAlpha: _premultipliedAlpha,\n\t\t\tpreserveDrawingBuffer: _preserveDrawingBuffer,\n\t\t\tpowerPreference: _powerPreference,\n\t\t\tfailIfMajorPerformanceCaveat: _failIfMajorPerformanceCaveat\n\t\t};\n\n\t\t// OffscreenCanvas does not have setAttribute, see #22811\n\t\tif ( 'setAttribute' in _canvas ) _canvas.setAttribute( 'data-engine', `three.js r${REVISION}` );\n\n\t\t// event listeners must be registered before WebGL context is created, see #12753\n\t\t_canvas.addEventListener( 'webglcontextlost', onContextLost, false );\n\t\t_canvas.addEventListener( 'webglcontextrestored', onContextRestore, false );\n\t\t_canvas.addEventListener( 'webglcontextcreationerror', onContextCreationError, false );\n\n\t\tif ( _gl === null ) {\n\n\t\t\tconst contextNames = [ 'webgl2', 'webgl', 'experimental-webgl' ];\n\n\t\t\tif ( _this.isWebGL1Renderer === true ) {\n\n\t\t\t\tcontextNames.shift();\n\n\t\t\t}\n\n\t\t\t_gl = getContext( contextNames, contextAttributes );\n\n\t\t\tif ( _gl === null ) {\n\n\t\t\t\tif ( getContext( contextNames ) ) {\n\n\t\t\t\t\tthrow new Error( 'Error creating WebGL context with your selected attributes.' );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tthrow new Error( 'Error creating WebGL context.' );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\t// Some experimental-webgl implementations do not have getShaderPrecisionFormat\n\n\t\tif ( _gl.getShaderPrecisionFormat === undefined ) {\n\n\t\t\t_gl.getShaderPrecisionFormat = function () {\n\n\t\t\t\treturn { 'rangeMin': 1, 'rangeMax': 1, 'precision': 1 };\n\n\t\t\t};\n\n\t\t}\n\n\t} catch ( error ) {\n\n\t\tconsole.error( 'THREE.WebGLRenderer: ' + error.message );\n\t\tthrow error;\n\n\t}\n\n\tlet extensions, capabilities, state, info;\n\tlet properties, textures, cubemaps, cubeuvmaps, attributes, geometries, objects;\n\tlet programCache, materials, renderLists, renderStates, clipping, shadowMap;\n\n\tlet background, morphtargets, bufferRenderer, indexedBufferRenderer;\n\n\tlet utils, bindingStates;\n\n\tfunction initGLContext() {\n\n\t\textensions = new WebGLExtensions( _gl );\n\n\t\tcapabilities = new WebGLCapabilities( _gl, extensions, parameters );\n\n\t\textensions.init( capabilities );\n\n\t\tutils = new WebGLUtils( _gl, extensions, capabilities );\n\n\t\tstate = new WebGLState( _gl, extensions, capabilities );\n\n\t\tinfo = new WebGLInfo( _gl );\n\t\tproperties = new WebGLProperties();\n\t\ttextures = new WebGLTextures( _gl, extensions, state, properties, capabilities, utils, info );\n\t\tcubemaps = new WebGLCubeMaps( _this );\n\t\tcubeuvmaps = new WebGLCubeUVMaps( _this );\n\t\tattributes = new WebGLAttributes( _gl, capabilities );\n\t\tbindingStates = new WebGLBindingStates( _gl, extensions, attributes, capabilities );\n\t\tgeometries = new WebGLGeometries( _gl, attributes, info, bindingStates );\n\t\tobjects = new WebGLObjects( _gl, geometries, attributes, info );\n\t\tmorphtargets = new WebGLMorphtargets( _gl, capabilities, textures );\n\t\tclipping = new WebGLClipping( properties );\n\t\tprogramCache = new WebGLPrograms( _this, cubemaps, cubeuvmaps, extensions, capabilities, bindingStates, clipping );\n\t\tmaterials = new WebGLMaterials( _this, properties );\n\t\trenderLists = new WebGLRenderLists();\n\t\trenderStates = new WebGLRenderStates( extensions, capabilities );\n\t\tbackground = new WebGLBackground( _this, cubemaps, state, objects, _alpha, _premultipliedAlpha );\n\t\tshadowMap = new WebGLShadowMap( _this, objects, capabilities );\n\n\t\tbufferRenderer = new WebGLBufferRenderer( _gl, extensions, info, capabilities );\n\t\tindexedBufferRenderer = new WebGLIndexedBufferRenderer( _gl, extensions, info, capabilities );\n\n\t\tinfo.programs = programCache.programs;\n\n\t\t_this.capabilities = capabilities;\n\t\t_this.extensions = extensions;\n\t\t_this.properties = properties;\n\t\t_this.renderLists = renderLists;\n\t\t_this.shadowMap = shadowMap;\n\t\t_this.state = state;\n\t\t_this.info = info;\n\n\t}\n\n\tinitGLContext();\n\n\t// xr\n\n\tconst xr = new WebXRManager( _this, _gl );\n\n\tthis.xr = xr;\n\n\t// API\n\n\tthis.getContext = function () {\n\n\t\treturn _gl;\n\n\t};\n\n\tthis.getContextAttributes = function () {\n\n\t\treturn _gl.getContextAttributes();\n\n\t};\n\n\tthis.forceContextLoss = function () {\n\n\t\tconst extension = extensions.get( 'WEBGL_lose_context' );\n\t\tif ( extension ) extension.loseContext();\n\n\t};\n\n\tthis.forceContextRestore = function () {\n\n\t\tconst extension = extensions.get( 'WEBGL_lose_context' );\n\t\tif ( extension ) extension.restoreContext();\n\n\t};\n\n\tthis.getPixelRatio = function () {\n\n\t\treturn _pixelRatio;\n\n\t};\n\n\tthis.setPixelRatio = function ( value ) {\n\n\t\tif ( value === undefined ) return;\n\n\t\t_pixelRatio = value;\n\n\t\tthis.setSize( _width, _height, false );\n\n\t};\n\n\tthis.getSize = function ( target ) {\n\n\t\treturn target.set( _width, _height );\n\n\t};\n\n\tthis.setSize = function ( width, height, updateStyle ) {\n\n\t\tif ( xr.isPresenting ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: Can\\'t change size while VR device is presenting.' );\n\t\t\treturn;\n\n\t\t}\n\n\t\t_width = width;\n\t\t_height = height;\n\n\t\t_canvas.width = Math.floor( width * _pixelRatio );\n\t\t_canvas.height = Math.floor( height * _pixelRatio );\n\n\t\tif ( updateStyle !== false ) {\n\n\t\t\t_canvas.style.width = width + 'px';\n\t\t\t_canvas.style.height = height + 'px';\n\n\t\t}\n\n\t\tthis.setViewport( 0, 0, width, height );\n\n\t};\n\n\tthis.getDrawingBufferSize = function ( target ) {\n\n\t\treturn target.set( _width * _pixelRatio, _height * _pixelRatio ).floor();\n\n\t};\n\n\tthis.setDrawingBufferSize = function ( width, height, pixelRatio ) {\n\n\t\t_width = width;\n\t\t_height = height;\n\n\t\t_pixelRatio = pixelRatio;\n\n\t\t_canvas.width = Math.floor( width * pixelRatio );\n\t\t_canvas.height = Math.floor( height * pixelRatio );\n\n\t\tthis.setViewport( 0, 0, width, height );\n\n\t};\n\n\tthis.getCurrentViewport = function ( target ) {\n\n\t\treturn target.copy( _currentViewport );\n\n\t};\n\n\tthis.getViewport = function ( target ) {\n\n\t\treturn target.copy( _viewport );\n\n\t};\n\n\tthis.setViewport = function ( x, y, width, height ) {\n\n\t\tif ( x.isVector4 ) {\n\n\t\t\t_viewport.set( x.x, x.y, x.z, x.w );\n\n\t\t} else {\n\n\t\t\t_viewport.set( x, y, width, height );\n\n\t\t}\n\n\t\tstate.viewport( _currentViewport.copy( _viewport ).multiplyScalar( _pixelRatio ).floor() );\n\n\t};\n\n\tthis.getScissor = function ( target ) {\n\n\t\treturn target.copy( _scissor );\n\n\t};\n\n\tthis.setScissor = function ( x, y, width, height ) {\n\n\t\tif ( x.isVector4 ) {\n\n\t\t\t_scissor.set( x.x, x.y, x.z, x.w );\n\n\t\t} else {\n\n\t\t\t_scissor.set( x, y, width, height );\n\n\t\t}\n\n\t\tstate.scissor( _currentScissor.copy( _scissor ).multiplyScalar( _pixelRatio ).floor() );\n\n\t};\n\n\tthis.getScissorTest = function () {\n\n\t\treturn _scissorTest;\n\n\t};\n\n\tthis.setScissorTest = function ( boolean ) {\n\n\t\tstate.setScissorTest( _scissorTest = boolean );\n\n\t};\n\n\tthis.setOpaqueSort = function ( method ) {\n\n\t\t_opaqueSort = method;\n\n\t};\n\n\tthis.setTransparentSort = function ( method ) {\n\n\t\t_transparentSort = method;\n\n\t};\n\n\t// Clearing\n\n\tthis.getClearColor = function ( target ) {\n\n\t\treturn target.copy( background.getClearColor() );\n\n\t};\n\n\tthis.setClearColor = function () {\n\n\t\tbackground.setClearColor.apply( background, arguments );\n\n\t};\n\n\tthis.getClearAlpha = function () {\n\n\t\treturn background.getClearAlpha();\n\n\t};\n\n\tthis.setClearAlpha = function () {\n\n\t\tbackground.setClearAlpha.apply( background, arguments );\n\n\t};\n\n\tthis.clear = function ( color = true, depth = true, stencil = true ) {\n\n\t\tlet bits = 0;\n\n\t\tif ( color ) bits |= 16384;\n\t\tif ( depth ) bits |= 256;\n\t\tif ( stencil ) bits |= 1024;\n\n\t\t_gl.clear( bits );\n\n\t};\n\n\tthis.clearColor = function () {\n\n\t\tthis.clear( true, false, false );\n\n\t};\n\n\tthis.clearDepth = function () {\n\n\t\tthis.clear( false, true, false );\n\n\t};\n\n\tthis.clearStencil = function () {\n\n\t\tthis.clear( false, false, true );\n\n\t};\n\n\t//\n\n\tthis.dispose = function () {\n\n\t\t_canvas.removeEventListener( 'webglcontextlost', onContextLost, false );\n\t\t_canvas.removeEventListener( 'webglcontextrestored', onContextRestore, false );\n\t\t_canvas.removeEventListener( 'webglcontextcreationerror', onContextCreationError, false );\n\n\t\trenderLists.dispose();\n\t\trenderStates.dispose();\n\t\tproperties.dispose();\n\t\tcubemaps.dispose();\n\t\tcubeuvmaps.dispose();\n\t\tobjects.dispose();\n\t\tbindingStates.dispose();\n\t\tprogramCache.dispose();\n\n\t\txr.dispose();\n\n\t\txr.removeEventListener( 'sessionstart', onXRSessionStart );\n\t\txr.removeEventListener( 'sessionend', onXRSessionEnd );\n\n\t\tif ( _transmissionRenderTarget ) {\n\n\t\t\t_transmissionRenderTarget.dispose();\n\t\t\t_transmissionRenderTarget = null;\n\n\t\t}\n\n\t\tanimation.stop();\n\n\t};\n\n\t// Events\n\n\tfunction onContextLost( event ) {\n\n\t\tevent.preventDefault();\n\n\t\tconsole.log( 'THREE.WebGLRenderer: Context Lost.' );\n\n\t\t_isContextLost = true;\n\n\t}\n\n\tfunction onContextRestore( /* event */ ) {\n\n\t\tconsole.log( 'THREE.WebGLRenderer: Context Restored.' );\n\n\t\t_isContextLost = false;\n\n\t\tconst infoAutoReset = info.autoReset;\n\t\tconst shadowMapEnabled = shadowMap.enabled;\n\t\tconst shadowMapAutoUpdate = shadowMap.autoUpdate;\n\t\tconst shadowMapNeedsUpdate = shadowMap.needsUpdate;\n\t\tconst shadowMapType = shadowMap.type;\n\n\t\tinitGLContext();\n\n\t\tinfo.autoReset = infoAutoReset;\n\t\tshadowMap.enabled = shadowMapEnabled;\n\t\tshadowMap.autoUpdate = shadowMapAutoUpdate;\n\t\tshadowMap.needsUpdate = shadowMapNeedsUpdate;\n\t\tshadowMap.type = shadowMapType;\n\n\t}\n\n\tfunction onContextCreationError( event ) {\n\n\t\tconsole.error( 'THREE.WebGLRenderer: A WebGL context could not be created. Reason: ', event.statusMessage );\n\n\t}\n\n\tfunction onMaterialDispose( event ) {\n\n\t\tconst material = event.target;\n\n\t\tmaterial.removeEventListener( 'dispose', onMaterialDispose );\n\n\t\tdeallocateMaterial( material );\n\n\t}\n\n\t// Buffer deallocation\n\n\tfunction deallocateMaterial( material ) {\n\n\t\treleaseMaterialProgramReferences( material );\n\n\t\tproperties.remove( material );\n\n\t}\n\n\n\tfunction releaseMaterialProgramReferences( material ) {\n\n\t\tconst programs = properties.get( material ).programs;\n\n\t\tif ( programs !== undefined ) {\n\n\t\t\tprograms.forEach( function ( program ) {\n\n\t\t\t\tprogramCache.releaseProgram( program );\n\n\t\t\t} );\n\n\t\t\tif ( material.isShaderMaterial ) {\n\n\t\t\t\tprogramCache.releaseShaderCache( material );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\t// Buffer rendering\n\n\tthis.renderBufferDirect = function ( camera, scene, geometry, material, object, group ) {\n\n\t\tif ( scene === null ) scene = _emptyScene; // renderBufferDirect second parameter used to be fog (could be null)\n\n\t\tconst frontFaceCW = ( object.isMesh && object.matrixWorld.determinant() < 0 );\n\n\t\tconst program = setProgram( camera, scene, geometry, material, object );\n\n\t\tstate.setMaterial( material, frontFaceCW );\n\n\t\t//\n\n\t\tlet index = geometry.index;\n\t\tconst position = geometry.attributes.position;\n\n\t\t//\n\n\t\tif ( index === null ) {\n\n\t\t\tif ( position === undefined || position.count === 0 ) return;\n\n\t\t} else if ( index.count === 0 ) {\n\n\t\t\treturn;\n\n\t\t}\n\n\t\t//\n\n\t\tlet rangeFactor = 1;\n\n\t\tif ( material.wireframe === true ) {\n\n\t\t\tindex = geometries.getWireframeAttribute( geometry );\n\t\t\trangeFactor = 2;\n\n\t\t}\n\n\t\tbindingStates.setup( object, material, program, geometry, index );\n\n\t\tlet attribute;\n\t\tlet renderer = bufferRenderer;\n\n\t\tif ( index !== null ) {\n\n\t\t\tattribute = attributes.get( index );\n\n\t\t\trenderer = indexedBufferRenderer;\n\t\t\trenderer.setIndex( attribute );\n\n\t\t}\n\n\t\t//\n\n\t\tconst dataCount = ( index !== null ) ? index.count : position.count;\n\n\t\tconst rangeStart = geometry.drawRange.start * rangeFactor;\n\t\tconst rangeCount = geometry.drawRange.count * rangeFactor;\n\n\t\tconst groupStart = group !== null ? group.start * rangeFactor : 0;\n\t\tconst groupCount = group !== null ? group.count * rangeFactor : Infinity;\n\n\t\tconst drawStart = Math.max( rangeStart, groupStart );\n\t\tconst drawEnd = Math.min( dataCount, rangeStart + rangeCount, groupStart + groupCount ) - 1;\n\n\t\tconst drawCount = Math.max( 0, drawEnd - drawStart + 1 );\n\n\t\tif ( drawCount === 0 ) return;\n\n\t\t//\n\n\t\tif ( object.isMesh ) {\n\n\t\t\tif ( material.wireframe === true ) {\n\n\t\t\t\tstate.setLineWidth( material.wireframeLinewidth * getTargetPixelRatio() );\n\t\t\t\trenderer.setMode( 1 );\n\n\t\t\t} else {\n\n\t\t\t\trenderer.setMode( 4 );\n\n\t\t\t}\n\n\t\t} else if ( object.isLine ) {\n\n\t\t\tlet lineWidth = material.linewidth;\n\n\t\t\tif ( lineWidth === undefined ) lineWidth = 1; // Not using Line*Material\n\n\t\t\tstate.setLineWidth( lineWidth * getTargetPixelRatio() );\n\n\t\t\tif ( object.isLineSegments ) {\n\n\t\t\t\trenderer.setMode( 1 );\n\n\t\t\t} else if ( object.isLineLoop ) {\n\n\t\t\t\trenderer.setMode( 2 );\n\n\t\t\t} else {\n\n\t\t\t\trenderer.setMode( 3 );\n\n\t\t\t}\n\n\t\t} else if ( object.isPoints ) {\n\n\t\t\trenderer.setMode( 0 );\n\n\t\t} else if ( object.isSprite ) {\n\n\t\t\trenderer.setMode( 4 );\n\n\t\t}\n\n\t\tif ( object.isInstancedMesh ) {\n\n\t\t\trenderer.renderInstances( drawStart, drawCount, object.count );\n\n\t\t} else if ( geometry.isInstancedBufferGeometry ) {\n\n\t\t\tconst instanceCount = Math.min( geometry.instanceCount, geometry._maxInstanceCount );\n\n\t\t\trenderer.renderInstances( drawStart, drawCount, instanceCount );\n\n\t\t} else {\n\n\t\t\trenderer.render( drawStart, drawCount );\n\n\t\t}\n\n\t};\n\n\t// Compile\n\n\tthis.compile = function ( scene, camera ) {\n\n\t\tcurrentRenderState = renderStates.get( scene );\n\t\tcurrentRenderState.init();\n\n\t\trenderStateStack.push( currentRenderState );\n\n\t\tscene.traverseVisible( function ( object ) {\n\n\t\t\tif ( object.isLight && object.layers.test( camera.layers ) ) {\n\n\t\t\t\tcurrentRenderState.pushLight( object );\n\n\t\t\t\tif ( object.castShadow ) {\n\n\t\t\t\t\tcurrentRenderState.pushShadow( object );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t} );\n\n\t\tcurrentRenderState.setupLights( _this.physicallyCorrectLights );\n\n\t\tscene.traverse( function ( object ) {\n\n\t\t\tconst material = object.material;\n\n\t\t\tif ( material ) {\n\n\t\t\t\tif ( Array.isArray( material ) ) {\n\n\t\t\t\t\tfor ( let i = 0; i < material.length; i ++ ) {\n\n\t\t\t\t\t\tconst material2 = material[ i ];\n\n\t\t\t\t\t\tgetProgram( material2, scene, object );\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\tgetProgram( material, scene, object );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t} );\n\n\t\trenderStateStack.pop();\n\t\tcurrentRenderState = null;\n\n\t};\n\n\t// Animation Loop\n\n\tlet onAnimationFrameCallback = null;\n\n\tfunction onAnimationFrame( time ) {\n\n\t\tif ( onAnimationFrameCallback ) onAnimationFrameCallback( time );\n\n\t}\n\n\tfunction onXRSessionStart() {\n\n\t\tanimation.stop();\n\n\t}\n\n\tfunction onXRSessionEnd() {\n\n\t\tanimation.start();\n\n\t}\n\n\tconst animation = new WebGLAnimation();\n\tanimation.setAnimationLoop( onAnimationFrame );\n\n\tif ( typeof self !== 'undefined' ) animation.setContext( self );\n\n\tthis.setAnimationLoop = function ( callback ) {\n\n\t\tonAnimationFrameCallback = callback;\n\t\txr.setAnimationLoop( callback );\n\n\t\t( callback === null ) ? animation.stop() : animation.start();\n\n\t};\n\n\txr.addEventListener( 'sessionstart', onXRSessionStart );\n\txr.addEventListener( 'sessionend', onXRSessionEnd );\n\n\t// Rendering\n\n\tthis.render = function ( scene, camera ) {\n\n\t\tif ( camera !== undefined && camera.isCamera !== true ) {\n\n\t\t\tconsole.error( 'THREE.WebGLRenderer.render: camera is not an instance of THREE.Camera.' );\n\t\t\treturn;\n\n\t\t}\n\n\t\tif ( _isContextLost === true ) return;\n\n\t\t// update scene graph\n\n\t\tif ( scene.autoUpdate === true ) scene.updateMatrixWorld();\n\n\t\t// update camera matrices and frustum\n\n\t\tif ( camera.parent === null ) camera.updateMatrixWorld();\n\n\t\tif ( xr.enabled === true && xr.isPresenting === true ) {\n\n\t\t\tif ( xr.cameraAutoUpdate === true ) xr.updateCamera( camera );\n\n\t\t\tcamera = xr.getCamera(); // use XR camera for rendering\n\n\t\t}\n\n\t\t//\n\t\tif ( scene.isScene === true ) scene.onBeforeRender( _this, scene, camera, _currentRenderTarget );\n\n\t\tcurrentRenderState = renderStates.get( scene, renderStateStack.length );\n\t\tcurrentRenderState.init();\n\n\t\trenderStateStack.push( currentRenderState );\n\n\t\t_projScreenMatrix.multiplyMatrices( camera.projectionMatrix, camera.matrixWorldInverse );\n\t\t_frustum.setFromProjectionMatrix( _projScreenMatrix );\n\n\t\t_localClippingEnabled = this.localClippingEnabled;\n\t\t_clippingEnabled = clipping.init( this.clippingPlanes, _localClippingEnabled, camera );\n\n\t\tcurrentRenderList = renderLists.get( scene, renderListStack.length );\n\t\tcurrentRenderList.init();\n\n\t\trenderListStack.push( currentRenderList );\n\n\t\tprojectObject( scene, camera, 0, _this.sortObjects );\n\n\t\tcurrentRenderList.finish();\n\n\t\tif ( _this.sortObjects === true ) {\n\n\t\t\tcurrentRenderList.sort( _opaqueSort, _transparentSort );\n\n\t\t}\n\n\t\t//\n\n\t\tif ( _clippingEnabled === true ) clipping.beginShadows();\n\n\t\tconst shadowsArray = currentRenderState.state.shadowsArray;\n\n\t\tshadowMap.render( shadowsArray, scene, camera );\n\n\t\tif ( _clippingEnabled === true ) clipping.endShadows();\n\n\t\t//\n\n\t\tif ( this.info.autoReset === true ) this.info.reset();\n\n\t\t//\n\n\t\tbackground.render( currentRenderList, scene );\n\n\t\t// render scene\n\n\t\tcurrentRenderState.setupLights( _this.physicallyCorrectLights );\n\n\t\tif ( camera.isArrayCamera ) {\n\n\t\t\tconst cameras = camera.cameras;\n\n\t\t\tfor ( let i = 0, l = cameras.length; i < l; i ++ ) {\n\n\t\t\t\tconst camera2 = cameras[ i ];\n\n\t\t\t\trenderScene( currentRenderList, scene, camera2, camera2.viewport );\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\trenderScene( currentRenderList, scene, camera );\n\n\t\t}\n\n\t\t//\n\n\t\tif ( _currentRenderTarget !== null ) {\n\n\t\t\t// resolve multisample renderbuffers to a single-sample texture if necessary\n\n\t\t\ttextures.updateMultisampleRenderTarget( _currentRenderTarget );\n\n\t\t\t// Generate mipmap if we're using any kind of mipmap filtering\n\n\t\t\ttextures.updateRenderTargetMipmap( _currentRenderTarget );\n\n\t\t}\n\n\t\t//\n\n\t\tif ( scene.isScene === true ) scene.onAfterRender( _this, scene, camera );\n\n\t\t// _gl.finish();\n\n\t\tbindingStates.resetDefaultState();\n\t\t_currentMaterialId = - 1;\n\t\t_currentCamera = null;\n\n\t\trenderStateStack.pop();\n\n\t\tif ( renderStateStack.length > 0 ) {\n\n\t\t\tcurrentRenderState = renderStateStack[ renderStateStack.length - 1 ];\n\n\t\t} else {\n\n\t\t\tcurrentRenderState = null;\n\n\t\t}\n\n\t\trenderListStack.pop();\n\n\t\tif ( renderListStack.length > 0 ) {\n\n\t\t\tcurrentRenderList = renderListStack[ renderListStack.length - 1 ];\n\n\t\t} else {\n\n\t\t\tcurrentRenderList = null;\n\n\t\t}\n\n\t};\n\n\tfunction projectObject( object, camera, groupOrder, sortObjects ) {\n\n\t\tif ( object.visible === false ) return;\n\n\t\tconst visible = object.layers.test( camera.layers );\n\n\t\tif ( visible ) {\n\n\t\t\tif ( object.isGroup ) {\n\n\t\t\t\tgroupOrder = object.renderOrder;\n\n\t\t\t} else if ( object.isLOD ) {\n\n\t\t\t\tif ( object.autoUpdate === true ) object.update( camera );\n\n\t\t\t} else if ( object.isLight ) {\n\n\t\t\t\tcurrentRenderState.pushLight( object );\n\n\t\t\t\tif ( object.castShadow ) {\n\n\t\t\t\t\tcurrentRenderState.pushShadow( object );\n\n\t\t\t\t}\n\n\t\t\t} else if ( object.isSprite ) {\n\n\t\t\t\tif ( ! object.frustumCulled || _frustum.intersectsSprite( object ) ) {\n\n\t\t\t\t\tif ( sortObjects ) {\n\n\t\t\t\t\t\t_vector3.setFromMatrixPosition( object.matrixWorld )\n\t\t\t\t\t\t\t.applyMatrix4( _projScreenMatrix );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tconst geometry = objects.update( object );\n\t\t\t\t\tconst material = object.material;\n\n\t\t\t\t\tif ( material.visible ) {\n\n\t\t\t\t\t\tcurrentRenderList.push( object, geometry, material, groupOrder, _vector3.z, null );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t} else if ( object.isMesh || object.isLine || object.isPoints ) {\n\n\t\t\t\tif ( object.isSkinnedMesh ) {\n\n\t\t\t\t\t// update skeleton only once in a frame\n\n\t\t\t\t\tif ( object.skeleton.frame !== info.render.frame ) {\n\n\t\t\t\t\t\tobject.skeleton.update();\n\t\t\t\t\t\tobject.skeleton.frame = info.render.frame;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\tif ( ! object.frustumCulled || _frustum.intersectsObject( object ) ) {\n\n\t\t\t\t\tif ( sortObjects ) {\n\n\t\t\t\t\t\t_vector3.setFromMatrixPosition( object.matrixWorld )\n\t\t\t\t\t\t\t.applyMatrix4( _projScreenMatrix );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tconst geometry = objects.update( object );\n\t\t\t\t\tconst material = object.material;\n\n\t\t\t\t\tif ( Array.isArray( material ) ) {\n\n\t\t\t\t\t\tconst groups = geometry.groups;\n\n\t\t\t\t\t\tfor ( let i = 0, l = groups.length; i < l; i ++ ) {\n\n\t\t\t\t\t\t\tconst group = groups[ i ];\n\t\t\t\t\t\t\tconst groupMaterial = material[ group.materialIndex ];\n\n\t\t\t\t\t\t\tif ( groupMaterial && groupMaterial.visible ) {\n\n\t\t\t\t\t\t\t\tcurrentRenderList.push( object, geometry, groupMaterial, groupOrder, _vector3.z, group );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t} else if ( material.visible ) {\n\n\t\t\t\t\t\tcurrentRenderList.push( object, geometry, material, groupOrder, _vector3.z, null );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tconst children = object.children;\n\n\t\tfor ( let i = 0, l = children.length; i < l; i ++ ) {\n\n\t\t\tprojectObject( children[ i ], camera, groupOrder, sortObjects );\n\n\t\t}\n\n\t}\n\n\tfunction renderScene( currentRenderList, scene, camera, viewport ) {\n\n\t\tconst opaqueObjects = currentRenderList.opaque;\n\t\tconst transmissiveObjects = currentRenderList.transmissive;\n\t\tconst transparentObjects = currentRenderList.transparent;\n\n\t\tcurrentRenderState.setupLightsView( camera );\n\n\t\tif ( transmissiveObjects.length > 0 ) renderTransmissionPass( opaqueObjects, scene, camera );\n\n\t\tif ( viewport ) state.viewport( _currentViewport.copy( viewport ) );\n\n\t\tif ( opaqueObjects.length > 0 ) renderObjects( opaqueObjects, scene, camera );\n\t\tif ( transmissiveObjects.length > 0 ) renderObjects( transmissiveObjects, scene, camera );\n\t\tif ( transparentObjects.length > 0 ) renderObjects( transparentObjects, scene, camera );\n\n\t\t// Ensure depth buffer writing is enabled so it can be cleared on next render\n\n\t\tstate.buffers.depth.setTest( true );\n\t\tstate.buffers.depth.setMask( true );\n\t\tstate.buffers.color.setMask( true );\n\n\t\tstate.setPolygonOffset( false );\n\n\t}\n\n\tfunction renderTransmissionPass( opaqueObjects, scene, camera ) {\n\n\t\tconst isWebGL2 = capabilities.isWebGL2;\n\n\t\tif ( _transmissionRenderTarget === null ) {\n\n\t\t\t_transmissionRenderTarget = new WebGLRenderTarget( 1, 1, {\n\t\t\t\tgenerateMipmaps: true,\n\t\t\t\ttype: extensions.has( 'EXT_color_buffer_half_float' ) ? HalfFloatType : UnsignedByteType,\n\t\t\t\tminFilter: LinearMipmapLinearFilter,\n\t\t\t\tsamples: ( isWebGL2 && _antialias === true ) ? 4 : 0\n\t\t\t} );\n\n\t\t}\n\n\t\t_this.getDrawingBufferSize( _vector2 );\n\n\t\tif ( isWebGL2 ) {\n\n\t\t\t_transmissionRenderTarget.setSize( _vector2.x, _vector2.y );\n\n\t\t} else {\n\n\t\t\t_transmissionRenderTarget.setSize( floorPowerOfTwo( _vector2.x ), floorPowerOfTwo( _vector2.y ) );\n\n\t\t}\n\n\t\t//\n\n\t\tconst currentRenderTarget = _this.getRenderTarget();\n\t\t_this.setRenderTarget( _transmissionRenderTarget );\n\t\t_this.clear();\n\n\t\t// Turn off the features which can affect the frag color for opaque objects pass.\n\t\t// Otherwise they are applied twice in opaque objects pass and transmission objects pass.\n\t\tconst currentToneMapping = _this.toneMapping;\n\t\t_this.toneMapping = NoToneMapping;\n\n\t\trenderObjects( opaqueObjects, scene, camera );\n\n\t\t_this.toneMapping = currentToneMapping;\n\n\t\ttextures.updateMultisampleRenderTarget( _transmissionRenderTarget );\n\t\ttextures.updateRenderTargetMipmap( _transmissionRenderTarget );\n\n\t\t_this.setRenderTarget( currentRenderTarget );\n\n\t}\n\n\tfunction renderObjects( renderList, scene, camera ) {\n\n\t\tconst overrideMaterial = scene.isScene === true ? scene.overrideMaterial : null;\n\n\t\tfor ( let i = 0, l = renderList.length; i < l; i ++ ) {\n\n\t\t\tconst renderItem = renderList[ i ];\n\n\t\t\tconst object = renderItem.object;\n\t\t\tconst geometry = renderItem.geometry;\n\t\t\tconst material = overrideMaterial === null ? renderItem.material : overrideMaterial;\n\t\t\tconst group = renderItem.group;\n\n\t\t\tif ( object.layers.test( camera.layers ) ) {\n\n\t\t\t\trenderObject( object, scene, camera, geometry, material, group );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tfunction renderObject( object, scene, camera, geometry, material, group ) {\n\n\t\tobject.onBeforeRender( _this, scene, camera, geometry, material, group );\n\n\t\tobject.modelViewMatrix.multiplyMatrices( camera.matrixWorldInverse, object.matrixWorld );\n\t\tobject.normalMatrix.getNormalMatrix( object.modelViewMatrix );\n\n\t\tmaterial.onBeforeRender( _this, scene, camera, geometry, object, group );\n\n\t\tif ( material.transparent === true && material.side === DoubleSide ) {\n\n\t\t\tmaterial.side = BackSide;\n\t\t\tmaterial.needsUpdate = true;\n\t\t\t_this.renderBufferDirect( camera, scene, geometry, material, object, group );\n\n\t\t\tmaterial.side = FrontSide;\n\t\t\tmaterial.needsUpdate = true;\n\t\t\t_this.renderBufferDirect( camera, scene, geometry, material, object, group );\n\n\t\t\tmaterial.side = DoubleSide;\n\n\t\t} else {\n\n\t\t\t_this.renderBufferDirect( camera, scene, geometry, material, object, group );\n\n\t\t}\n\n\t\tobject.onAfterRender( _this, scene, camera, geometry, material, group );\n\n\t}\n\n\tfunction getProgram( material, scene, object ) {\n\n\t\tif ( scene.isScene !== true ) scene = _emptyScene; // scene could be a Mesh, Line, Points, ...\n\n\t\tconst materialProperties = properties.get( material );\n\n\t\tconst lights = currentRenderState.state.lights;\n\t\tconst shadowsArray = currentRenderState.state.shadowsArray;\n\n\t\tconst lightsStateVersion = lights.state.version;\n\n\t\tconst parameters = programCache.getParameters( material, lights.state, shadowsArray, scene, object );\n\t\tconst programCacheKey = programCache.getProgramCacheKey( parameters );\n\n\t\tlet programs = materialProperties.programs;\n\n\t\t// always update environment and fog - changing these trigger an getProgram call, but it's possible that the program doesn't change\n\n\t\tmaterialProperties.environment = material.isMeshStandardMaterial ? scene.environment : null;\n\t\tmaterialProperties.fog = scene.fog;\n\t\tmaterialProperties.envMap = ( material.isMeshStandardMaterial ? cubeuvmaps : cubemaps ).get( material.envMap || materialProperties.environment );\n\n\t\tif ( programs === undefined ) {\n\n\t\t\t// new material\n\n\t\t\tmaterial.addEventListener( 'dispose', onMaterialDispose );\n\n\t\t\tprograms = new Map();\n\t\t\tmaterialProperties.programs = programs;\n\n\t\t}\n\n\t\tlet program = programs.get( programCacheKey );\n\n\t\tif ( program !== undefined ) {\n\n\t\t\t// early out if program and light state is identical\n\n\t\t\tif ( materialProperties.currentProgram === program && materialProperties.lightsStateVersion === lightsStateVersion ) {\n\n\t\t\t\tupdateCommonMaterialProperties( material, parameters );\n\n\t\t\t\treturn program;\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tparameters.uniforms = programCache.getUniforms( material );\n\n\t\t\tmaterial.onBuild( object, parameters, _this );\n\n\t\t\tmaterial.onBeforeCompile( parameters, _this );\n\n\t\t\tprogram = programCache.acquireProgram( parameters, programCacheKey );\n\t\t\tprograms.set( programCacheKey, program );\n\n\t\t\tmaterialProperties.uniforms = parameters.uniforms;\n\n\t\t}\n\n\t\tconst uniforms = materialProperties.uniforms;\n\n\t\tif ( ( ! material.isShaderMaterial && ! material.isRawShaderMaterial ) || material.clipping === true ) {\n\n\t\t\tuniforms.clippingPlanes = clipping.uniform;\n\n\t\t}\n\n\t\tupdateCommonMaterialProperties( material, parameters );\n\n\t\t// store the light setup it was created for\n\n\t\tmaterialProperties.needsLights = materialNeedsLights( material );\n\t\tmaterialProperties.lightsStateVersion = lightsStateVersion;\n\n\t\tif ( materialProperties.needsLights ) {\n\n\t\t\t// wire up the material to this renderer's lighting state\n\n\t\t\tuniforms.ambientLightColor.value = lights.state.ambient;\n\t\t\tuniforms.lightProbe.value = lights.state.probe;\n\t\t\tuniforms.directionalLights.value = lights.state.directional;\n\t\t\tuniforms.directionalLightShadows.value = lights.state.directionalShadow;\n\t\t\tuniforms.spotLights.value = lights.state.spot;\n\t\t\tuniforms.spotLightShadows.value = lights.state.spotShadow;\n\t\t\tuniforms.rectAreaLights.value = lights.state.rectArea;\n\t\t\tuniforms.ltc_1.value = lights.state.rectAreaLTC1;\n\t\t\tuniforms.ltc_2.value = lights.state.rectAreaLTC2;\n\t\t\tuniforms.pointLights.value = lights.state.point;\n\t\t\tuniforms.pointLightShadows.value = lights.state.pointShadow;\n\t\t\tuniforms.hemisphereLights.value = lights.state.hemi;\n\n\t\t\tuniforms.directionalShadowMap.value = lights.state.directionalShadowMap;\n\t\t\tuniforms.directionalShadowMatrix.value = lights.state.directionalShadowMatrix;\n\t\t\tuniforms.spotShadowMap.value = lights.state.spotShadowMap;\n\t\t\tuniforms.spotShadowMatrix.value = lights.state.spotShadowMatrix;\n\t\t\tuniforms.pointShadowMap.value = lights.state.pointShadowMap;\n\t\t\tuniforms.pointShadowMatrix.value = lights.state.pointShadowMatrix;\n\t\t\t// TODO (abelnation): add area lights shadow info to uniforms\n\n\t\t}\n\n\t\tconst progUniforms = program.getUniforms();\n\t\tconst uniformsList = WebGLUniforms.seqWithValue( progUniforms.seq, uniforms );\n\n\t\tmaterialProperties.currentProgram = program;\n\t\tmaterialProperties.uniformsList = uniformsList;\n\n\t\treturn program;\n\n\t}\n\n\tfunction updateCommonMaterialProperties( material, parameters ) {\n\n\t\tconst materialProperties = properties.get( material );\n\n\t\tmaterialProperties.outputEncoding = parameters.outputEncoding;\n\t\tmaterialProperties.instancing = parameters.instancing;\n\t\tmaterialProperties.skinning = parameters.skinning;\n\t\tmaterialProperties.morphTargets = parameters.morphTargets;\n\t\tmaterialProperties.morphNormals = parameters.morphNormals;\n\t\tmaterialProperties.morphColors = parameters.morphColors;\n\t\tmaterialProperties.morphTargetsCount = parameters.morphTargetsCount;\n\t\tmaterialProperties.numClippingPlanes = parameters.numClippingPlanes;\n\t\tmaterialProperties.numIntersection = parameters.numClipIntersection;\n\t\tmaterialProperties.vertexAlphas = parameters.vertexAlphas;\n\t\tmaterialProperties.vertexTangents = parameters.vertexTangents;\n\t\tmaterialProperties.toneMapping = parameters.toneMapping;\n\n\t}\n\n\tfunction setProgram( camera, scene, geometry, material, object ) {\n\n\t\tif ( scene.isScene !== true ) scene = _emptyScene; // scene could be a Mesh, Line, Points, ...\n\n\t\ttextures.resetTextureUnits();\n\n\t\tconst fog = scene.fog;\n\t\tconst environment = material.isMeshStandardMaterial ? scene.environment : null;\n\t\tconst encoding = ( _currentRenderTarget === null ) ? _this.outputEncoding : ( _currentRenderTarget.isXRRenderTarget === true ? _currentRenderTarget.texture.encoding : LinearEncoding );\n\t\tconst envMap = ( material.isMeshStandardMaterial ? cubeuvmaps : cubemaps ).get( material.envMap || environment );\n\t\tconst vertexAlphas = material.vertexColors === true && !! geometry.attributes.color && geometry.attributes.color.itemSize === 4;\n\t\tconst vertexTangents = !! material.normalMap && !! geometry.attributes.tangent;\n\t\tconst morphTargets = !! geometry.morphAttributes.position;\n\t\tconst morphNormals = !! geometry.morphAttributes.normal;\n\t\tconst morphColors = !! geometry.morphAttributes.color;\n\t\tconst toneMapping = material.toneMapped ? _this.toneMapping : NoToneMapping;\n\n\t\tconst morphAttribute = geometry.morphAttributes.position || geometry.morphAttributes.normal || geometry.morphAttributes.color;\n\t\tconst morphTargetsCount = ( morphAttribute !== undefined ) ? morphAttribute.length : 0;\n\n\t\tconst materialProperties = properties.get( material );\n\t\tconst lights = currentRenderState.state.lights;\n\n\t\tif ( _clippingEnabled === true ) {\n\n\t\t\tif ( _localClippingEnabled === true || camera !== _currentCamera ) {\n\n\t\t\t\tconst useCache =\n\t\t\t\t\tcamera === _currentCamera &&\n\t\t\t\t\tmaterial.id === _currentMaterialId;\n\n\t\t\t\t// we might want to call this function with some ClippingGroup\n\t\t\t\t// object instead of the material, once it becomes feasible\n\t\t\t\t// (#8465, #8379)\n\t\t\t\tclipping.setState( material, camera, useCache );\n\n\t\t\t}\n\n\t\t}\n\n\t\t//\n\n\t\tlet needsProgramChange = false;\n\n\t\tif ( material.version === materialProperties.__version ) {\n\n\t\t\tif ( materialProperties.needsLights && ( materialProperties.lightsStateVersion !== lights.state.version ) ) {\n\n\t\t\t\tneedsProgramChange = true;\n\n\t\t\t} else if ( materialProperties.outputEncoding !== encoding ) {\n\n\t\t\t\tneedsProgramChange = true;\n\n\t\t\t} else if ( object.isInstancedMesh && materialProperties.instancing === false ) {\n\n\t\t\t\tneedsProgramChange = true;\n\n\t\t\t} else if ( ! object.isInstancedMesh && materialProperties.instancing === true ) {\n\n\t\t\t\tneedsProgramChange = true;\n\n\t\t\t} else if ( object.isSkinnedMesh && materialProperties.skinning === false ) {\n\n\t\t\t\tneedsProgramChange = true;\n\n\t\t\t} else if ( ! object.isSkinnedMesh && materialProperties.skinning === true ) {\n\n\t\t\t\tneedsProgramChange = true;\n\n\t\t\t} else if ( materialProperties.envMap !== envMap ) {\n\n\t\t\t\tneedsProgramChange = true;\n\n\t\t\t} else if ( material.fog === true && materialProperties.fog !== fog ) {\n\n\t\t\t\tneedsProgramChange = true;\n\n\t\t\t} else if ( materialProperties.numClippingPlanes !== undefined &&\n\t\t\t\t( materialProperties.numClippingPlanes !== clipping.numPlanes ||\n\t\t\t\tmaterialProperties.numIntersection !== clipping.numIntersection ) ) {\n\n\t\t\t\tneedsProgramChange = true;\n\n\t\t\t} else if ( materialProperties.vertexAlphas !== vertexAlphas ) {\n\n\t\t\t\tneedsProgramChange = true;\n\n\t\t\t} else if ( materialProperties.vertexTangents !== vertexTangents ) {\n\n\t\t\t\tneedsProgramChange = true;\n\n\t\t\t} else if ( materialProperties.morphTargets !== morphTargets ) {\n\n\t\t\t\tneedsProgramChange = true;\n\n\t\t\t} else if ( materialProperties.morphNormals !== morphNormals ) {\n\n\t\t\t\tneedsProgramChange = true;\n\n\t\t\t} else if ( materialProperties.morphColors !== morphColors ) {\n\n\t\t\t\tneedsProgramChange = true;\n\n\t\t\t} else if ( materialProperties.toneMapping !== toneMapping ) {\n\n\t\t\t\tneedsProgramChange = true;\n\n\t\t\t} else if ( capabilities.isWebGL2 === true && materialProperties.morphTargetsCount !== morphTargetsCount ) {\n\n\t\t\t\tneedsProgramChange = true;\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tneedsProgramChange = true;\n\t\t\tmaterialProperties.__version = material.version;\n\n\t\t}\n\n\t\t//\n\n\t\tlet program = materialProperties.currentProgram;\n\n\t\tif ( needsProgramChange === true ) {\n\n\t\t\tprogram = getProgram( material, scene, object );\n\n\t\t}\n\n\t\tlet refreshProgram = false;\n\t\tlet refreshMaterial = false;\n\t\tlet refreshLights = false;\n\n\t\tconst p_uniforms = program.getUniforms(),\n\t\t\tm_uniforms = materialProperties.uniforms;\n\n\t\tif ( state.useProgram( program.program ) ) {\n\n\t\t\trefreshProgram = true;\n\t\t\trefreshMaterial = true;\n\t\t\trefreshLights = true;\n\n\t\t}\n\n\t\tif ( material.id !== _currentMaterialId ) {\n\n\t\t\t_currentMaterialId = material.id;\n\n\t\t\trefreshMaterial = true;\n\n\t\t}\n\n\t\tif ( refreshProgram || _currentCamera !== camera ) {\n\n\t\t\tp_uniforms.setValue( _gl, 'projectionMatrix', camera.projectionMatrix );\n\n\t\t\tif ( capabilities.logarithmicDepthBuffer ) {\n\n\t\t\t\tp_uniforms.setValue( _gl, 'logDepthBufFC',\n\t\t\t\t\t2.0 / ( Math.log( camera.far + 1.0 ) / Math.LN2 ) );\n\n\t\t\t}\n\n\t\t\tif ( _currentCamera !== camera ) {\n\n\t\t\t\t_currentCamera = camera;\n\n\t\t\t\t// lighting uniforms depend on the camera so enforce an update\n\t\t\t\t// now, in case this material supports lights - or later, when\n\t\t\t\t// the next material that does gets activated:\n\n\t\t\t\trefreshMaterial = true;\t\t// set to true on material change\n\t\t\t\trefreshLights = true;\t\t// remains set until update done\n\n\t\t\t}\n\n\t\t\t// load material specific uniforms\n\t\t\t// (shader material also gets them for the sake of genericity)\n\n\t\t\tif ( material.isShaderMaterial ||\n\t\t\t\tmaterial.isMeshPhongMaterial ||\n\t\t\t\tmaterial.isMeshToonMaterial ||\n\t\t\t\tmaterial.isMeshStandardMaterial ||\n\t\t\t\tmaterial.envMap ) {\n\n\t\t\t\tconst uCamPos = p_uniforms.map.cameraPosition;\n\n\t\t\t\tif ( uCamPos !== undefined ) {\n\n\t\t\t\t\tuCamPos.setValue( _gl,\n\t\t\t\t\t\t_vector3.setFromMatrixPosition( camera.matrixWorld ) );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( material.isMeshPhongMaterial ||\n\t\t\t\tmaterial.isMeshToonMaterial ||\n\t\t\t\tmaterial.isMeshLambertMaterial ||\n\t\t\t\tmaterial.isMeshBasicMaterial ||\n\t\t\t\tmaterial.isMeshStandardMaterial ||\n\t\t\t\tmaterial.isShaderMaterial ) {\n\n\t\t\t\tp_uniforms.setValue( _gl, 'isOrthographic', camera.isOrthographicCamera === true );\n\n\t\t\t}\n\n\t\t\tif ( material.isMeshPhongMaterial ||\n\t\t\t\tmaterial.isMeshToonMaterial ||\n\t\t\t\tmaterial.isMeshLambertMaterial ||\n\t\t\t\tmaterial.isMeshBasicMaterial ||\n\t\t\t\tmaterial.isMeshStandardMaterial ||\n\t\t\t\tmaterial.isShaderMaterial ||\n\t\t\t\tmaterial.isShadowMaterial ||\n\t\t\t\tobject.isSkinnedMesh ) {\n\n\t\t\t\tp_uniforms.setValue( _gl, 'viewMatrix', camera.matrixWorldInverse );\n\n\t\t\t}\n\n\t\t}\n\n\t\t// skinning and morph target uniforms must be set even if material didn't change\n\t\t// auto-setting of texture unit for bone and morph texture must go before other textures\n\t\t// otherwise textures used for skinning and morphing can take over texture units reserved for other material textures\n\n\t\tif ( object.isSkinnedMesh ) {\n\n\t\t\tp_uniforms.setOptional( _gl, object, 'bindMatrix' );\n\t\t\tp_uniforms.setOptional( _gl, object, 'bindMatrixInverse' );\n\n\t\t\tconst skeleton = object.skeleton;\n\n\t\t\tif ( skeleton ) {\n\n\t\t\t\tif ( capabilities.floatVertexTextures ) {\n\n\t\t\t\t\tif ( skeleton.boneTexture === null ) skeleton.computeBoneTexture();\n\n\t\t\t\t\tp_uniforms.setValue( _gl, 'boneTexture', skeleton.boneTexture, textures );\n\t\t\t\t\tp_uniforms.setValue( _gl, 'boneTextureSize', skeleton.boneTextureSize );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: SkinnedMesh can only be used with WebGL 2. With WebGL 1 OES_texture_float and vertex textures support is required.' );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tconst morphAttributes = geometry.morphAttributes;\n\n\t\tif ( morphAttributes.position !== undefined || morphAttributes.normal !== undefined || ( morphAttributes.color !== undefined && capabilities.isWebGL2 === true ) ) {\n\n\t\t\tmorphtargets.update( object, geometry, material, program );\n\n\t\t}\n\n\n\t\tif ( refreshMaterial || materialProperties.receiveShadow !== object.receiveShadow ) {\n\n\t\t\tmaterialProperties.receiveShadow = object.receiveShadow;\n\t\t\tp_uniforms.setValue( _gl, 'receiveShadow', object.receiveShadow );\n\n\t\t}\n\n\t\tif ( refreshMaterial ) {\n\n\t\t\tp_uniforms.setValue( _gl, 'toneMappingExposure', _this.toneMappingExposure );\n\n\t\t\tif ( materialProperties.needsLights ) {\n\n\t\t\t\t// the current material requires lighting info\n\n\t\t\t\t// note: all lighting uniforms are always set correctly\n\t\t\t\t// they simply reference the renderer's state for their\n\t\t\t\t// values\n\t\t\t\t//\n\t\t\t\t// use the current material's .needsUpdate flags to set\n\t\t\t\t// the GL state when required\n\n\t\t\t\tmarkUniformsLightsNeedsUpdate( m_uniforms, refreshLights );\n\n\t\t\t}\n\n\t\t\t// refresh uniforms common to several materials\n\n\t\t\tif ( fog && material.fog === true ) {\n\n\t\t\t\tmaterials.refreshFogUniforms( m_uniforms, fog );\n\n\t\t\t}\n\n\t\t\tmaterials.refreshMaterialUniforms( m_uniforms, material, _pixelRatio, _height, _transmissionRenderTarget );\n\n\t\t\tWebGLUniforms.upload( _gl, materialProperties.uniformsList, m_uniforms, textures );\n\n\t\t}\n\n\t\tif ( material.isShaderMaterial && material.uniformsNeedUpdate === true ) {\n\n\t\t\tWebGLUniforms.upload( _gl, materialProperties.uniformsList, m_uniforms, textures );\n\t\t\tmaterial.uniformsNeedUpdate = false;\n\n\t\t}\n\n\t\tif ( material.isSpriteMaterial ) {\n\n\t\t\tp_uniforms.setValue( _gl, 'center', object.center );\n\n\t\t}\n\n\t\t// common matrices\n\n\t\tp_uniforms.setValue( _gl, 'modelViewMatrix', object.modelViewMatrix );\n\t\tp_uniforms.setValue( _gl, 'normalMatrix', object.normalMatrix );\n\t\tp_uniforms.setValue( _gl, 'modelMatrix', object.matrixWorld );\n\n\t\treturn program;\n\n\t}\n\n\t// If uniforms are marked as clean, they don't need to be loaded to the GPU.\n\n\tfunction markUniformsLightsNeedsUpdate( uniforms, value ) {\n\n\t\tuniforms.ambientLightColor.needsUpdate = value;\n\t\tuniforms.lightProbe.needsUpdate = value;\n\n\t\tuniforms.directionalLights.needsUpdate = value;\n\t\tuniforms.directionalLightShadows.needsUpdate = value;\n\t\tuniforms.pointLights.needsUpdate = value;\n\t\tuniforms.pointLightShadows.needsUpdate = value;\n\t\tuniforms.spotLights.needsUpdate = value;\n\t\tuniforms.spotLightShadows.needsUpdate = value;\n\t\tuniforms.rectAreaLights.needsUpdate = value;\n\t\tuniforms.hemisphereLights.needsUpdate = value;\n\n\t}\n\n\tfunction materialNeedsLights( material ) {\n\n\t\treturn material.isMeshLambertMaterial || material.isMeshToonMaterial || material.isMeshPhongMaterial ||\n\t\t\tmaterial.isMeshStandardMaterial || material.isShadowMaterial ||\n\t\t\t( material.isShaderMaterial && material.lights === true );\n\n\t}\n\n\tthis.getActiveCubeFace = function () {\n\n\t\treturn _currentActiveCubeFace;\n\n\t};\n\n\tthis.getActiveMipmapLevel = function () {\n\n\t\treturn _currentActiveMipmapLevel;\n\n\t};\n\n\tthis.getRenderTarget = function () {\n\n\t\treturn _currentRenderTarget;\n\n\t};\n\n\tthis.setRenderTargetTextures = function ( renderTarget, colorTexture, depthTexture ) {\n\n\t\tproperties.get( renderTarget.texture ).__webglTexture = colorTexture;\n\t\tproperties.get( renderTarget.depthTexture ).__webglTexture = depthTexture;\n\n\t\tconst renderTargetProperties = properties.get( renderTarget );\n\t\trenderTargetProperties.__hasExternalTextures = true;\n\n\t\tif ( renderTargetProperties.__hasExternalTextures ) {\n\n\t\t\trenderTargetProperties.__autoAllocateDepthBuffer = depthTexture === undefined;\n\n\t\t\tif ( ! renderTargetProperties.__autoAllocateDepthBuffer ) {\n\n\t\t\t\t// The multisample_render_to_texture extension doesn't work properly if there\n\t\t\t\t// are midframe flushes and an external depth buffer. Disable use of the extension.\n\t\t\t\tif ( extensions.has( 'WEBGL_multisampled_render_to_texture' ) === true ) {\n\n\t\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: Render-to-texture extension was disabled because an external texture was provided' );\n\t\t\t\t\trenderTargetProperties.__useRenderToTexture = false;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t};\n\n\tthis.setRenderTargetFramebuffer = function ( renderTarget, defaultFramebuffer ) {\n\n\t\tconst renderTargetProperties = properties.get( renderTarget );\n\t\trenderTargetProperties.__webglFramebuffer = defaultFramebuffer;\n\t\trenderTargetProperties.__useDefaultFramebuffer = defaultFramebuffer === undefined;\n\n\t};\n\n\tthis.setRenderTarget = function ( renderTarget, activeCubeFace = 0, activeMipmapLevel = 0 ) {\n\n\t\t_currentRenderTarget = renderTarget;\n\t\t_currentActiveCubeFace = activeCubeFace;\n\t\t_currentActiveMipmapLevel = activeMipmapLevel;\n\n\t\tlet useDefaultFramebuffer = true;\n\n\t\tif ( renderTarget ) {\n\n\t\t\tconst renderTargetProperties = properties.get( renderTarget );\n\n\t\t\tif ( renderTargetProperties.__useDefaultFramebuffer !== undefined ) {\n\n\t\t\t\t// We need to make sure to rebind the framebuffer.\n\t\t\t\tstate.bindFramebuffer( 36160, null );\n\t\t\t\tuseDefaultFramebuffer = false;\n\n\t\t\t} else if ( renderTargetProperties.__webglFramebuffer === undefined ) {\n\n\t\t\t\ttextures.setupRenderTarget( renderTarget );\n\n\t\t\t} else if ( renderTargetProperties.__hasExternalTextures ) {\n\n\t\t\t\t// Color and depth texture must be rebound in order for the swapchain to update.\n\t\t\t\ttextures.rebindTextures( renderTarget, properties.get( renderTarget.texture ).__webglTexture, properties.get( renderTarget.depthTexture ).__webglTexture );\n\n\t\t\t}\n\n\t\t}\n\n\t\tlet framebuffer = null;\n\t\tlet isCube = false;\n\t\tlet isRenderTarget3D = false;\n\n\t\tif ( renderTarget ) {\n\n\t\t\tconst texture = renderTarget.texture;\n\n\t\t\tif ( texture.isData3DTexture || texture.isDataArrayTexture ) {\n\n\t\t\t\tisRenderTarget3D = true;\n\n\t\t\t}\n\n\t\t\tconst __webglFramebuffer = properties.get( renderTarget ).__webglFramebuffer;\n\n\t\t\tif ( renderTarget.isWebGLCubeRenderTarget ) {\n\n\t\t\t\tframebuffer = __webglFramebuffer[ activeCubeFace ];\n\t\t\t\tisCube = true;\n\n\t\t\t} else if ( ( capabilities.isWebGL2 && renderTarget.samples > 0 ) && textures.useMultisampledRTT( renderTarget ) === false ) {\n\n\t\t\t\tframebuffer = properties.get( renderTarget ).__webglMultisampledFramebuffer;\n\n\t\t\t} else {\n\n\t\t\t\tframebuffer = __webglFramebuffer;\n\n\t\t\t}\n\n\t\t\t_currentViewport.copy( renderTarget.viewport );\n\t\t\t_currentScissor.copy( renderTarget.scissor );\n\t\t\t_currentScissorTest = renderTarget.scissorTest;\n\n\t\t} else {\n\n\t\t\t_currentViewport.copy( _viewport ).multiplyScalar( _pixelRatio ).floor();\n\t\t\t_currentScissor.copy( _scissor ).multiplyScalar( _pixelRatio ).floor();\n\t\t\t_currentScissorTest = _scissorTest;\n\n\t\t}\n\n\t\tconst framebufferBound = state.bindFramebuffer( 36160, framebuffer );\n\n\t\tif ( framebufferBound && capabilities.drawBuffers && useDefaultFramebuffer ) {\n\n\t\t\tstate.drawBuffers( renderTarget, framebuffer );\n\n\t\t}\n\n\t\tstate.viewport( _currentViewport );\n\t\tstate.scissor( _currentScissor );\n\t\tstate.setScissorTest( _currentScissorTest );\n\n\t\tif ( isCube ) {\n\n\t\t\tconst textureProperties = properties.get( renderTarget.texture );\n\t\t\t_gl.framebufferTexture2D( 36160, 36064, 34069 + activeCubeFace, textureProperties.__webglTexture, activeMipmapLevel );\n\n\t\t} else if ( isRenderTarget3D ) {\n\n\t\t\tconst textureProperties = properties.get( renderTarget.texture );\n\t\t\tconst layer = activeCubeFace || 0;\n\t\t\t_gl.framebufferTextureLayer( 36160, 36064, textureProperties.__webglTexture, activeMipmapLevel || 0, layer );\n\n\t\t}\n\n\t\t_currentMaterialId = - 1; // reset current material to ensure correct uniform bindings\n\n\t};\n\n\tthis.readRenderTargetPixels = function ( renderTarget, x, y, width, height, buffer, activeCubeFaceIndex ) {\n\n\t\tif ( ! ( renderTarget && renderTarget.isWebGLRenderTarget ) ) {\n\n\t\t\tconsole.error( 'THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not THREE.WebGLRenderTarget.' );\n\t\t\treturn;\n\n\t\t}\n\n\t\tlet framebuffer = properties.get( renderTarget ).__webglFramebuffer;\n\n\t\tif ( renderTarget.isWebGLCubeRenderTarget && activeCubeFaceIndex !== undefined ) {\n\n\t\t\tframebuffer = framebuffer[ activeCubeFaceIndex ];\n\n\t\t}\n\n\t\tif ( framebuffer ) {\n\n\t\t\tstate.bindFramebuffer( 36160, framebuffer );\n\n\t\t\ttry {\n\n\t\t\t\tconst texture = renderTarget.texture;\n\t\t\t\tconst textureFormat = texture.format;\n\t\t\t\tconst textureType = texture.type;\n\n\t\t\t\tif ( textureFormat !== RGBAFormat && utils.convert( textureFormat ) !== _gl.getParameter( 35739 ) ) {\n\n\t\t\t\t\tconsole.error( 'THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not in RGBA or implementation defined format.' );\n\t\t\t\t\treturn;\n\n\t\t\t\t}\n\n\t\t\t\tconst halfFloatSupportedByExt = ( textureType === HalfFloatType ) && ( extensions.has( 'EXT_color_buffer_half_float' ) || ( capabilities.isWebGL2 && extensions.has( 'EXT_color_buffer_float' ) ) );\n\n\t\t\t\tif ( textureType !== UnsignedByteType && utils.convert( textureType ) !== _gl.getParameter( 35738 ) && // Edge and Chrome Mac < 52 (#9513)\n\t\t\t\t\t! ( textureType === FloatType && ( capabilities.isWebGL2 || extensions.has( 'OES_texture_float' ) || extensions.has( 'WEBGL_color_buffer_float' ) ) ) && // Chrome Mac >= 52 and Firefox\n\t\t\t\t\t! halfFloatSupportedByExt ) {\n\n\t\t\t\t\tconsole.error( 'THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not in UnsignedByteType or implementation defined type.' );\n\t\t\t\t\treturn;\n\n\t\t\t\t}\n\n\t\t\t\t// the following if statement ensures valid read requests (no out-of-bounds pixels, see #8604)\n\n\t\t\t\tif ( ( x >= 0 && x <= ( renderTarget.width - width ) ) && ( y >= 0 && y <= ( renderTarget.height - height ) ) ) {\n\n\t\t\t\t\t_gl.readPixels( x, y, width, height, utils.convert( textureFormat ), utils.convert( textureType ), buffer );\n\n\t\t\t\t}\n\n\t\t\t} finally {\n\n\t\t\t\t// restore framebuffer of current render target if necessary\n\n\t\t\t\tconst framebuffer = ( _currentRenderTarget !== null ) ? properties.get( _currentRenderTarget ).__webglFramebuffer : null;\n\t\t\t\tstate.bindFramebuffer( 36160, framebuffer );\n\n\t\t\t}\n\n\t\t}\n\n\t};\n\n\tthis.copyFramebufferToTexture = function ( position, texture, level = 0 ) {\n\n\t\tconst levelScale = Math.pow( 2, - level );\n\t\tconst width = Math.floor( texture.image.width * levelScale );\n\t\tconst height = Math.floor( texture.image.height * levelScale );\n\n\t\ttextures.setTexture2D( texture, 0 );\n\n\t\t_gl.copyTexSubImage2D( 3553, level, 0, 0, position.x, position.y, width, height );\n\n\t\tstate.unbindTexture();\n\n\t};\n\n\tthis.copyTextureToTexture = function ( position, srcTexture, dstTexture, level = 0 ) {\n\n\t\tconst width = srcTexture.image.width;\n\t\tconst height = srcTexture.image.height;\n\t\tconst glFormat = utils.convert( dstTexture.format );\n\t\tconst glType = utils.convert( dstTexture.type );\n\n\t\ttextures.setTexture2D( dstTexture, 0 );\n\n\t\t// As another texture upload may have changed pixelStorei\n\t\t// parameters, make sure they are correct for the dstTexture\n\t\t_gl.pixelStorei( 37440, dstTexture.flipY );\n\t\t_gl.pixelStorei( 37441, dstTexture.premultiplyAlpha );\n\t\t_gl.pixelStorei( 3317, dstTexture.unpackAlignment );\n\n\t\tif ( srcTexture.isDataTexture ) {\n\n\t\t\t_gl.texSubImage2D( 3553, level, position.x, position.y, width, height, glFormat, glType, srcTexture.image.data );\n\n\t\t} else {\n\n\t\t\tif ( srcTexture.isCompressedTexture ) {\n\n\t\t\t\t_gl.compressedTexSubImage2D( 3553, level, position.x, position.y, srcTexture.mipmaps[ 0 ].width, srcTexture.mipmaps[ 0 ].height, glFormat, srcTexture.mipmaps[ 0 ].data );\n\n\t\t\t} else {\n\n\t\t\t\t_gl.texSubImage2D( 3553, level, position.x, position.y, glFormat, glType, srcTexture.image );\n\n\t\t\t}\n\n\t\t}\n\n\t\t// Generate mipmaps only when copying level 0\n\t\tif ( level === 0 && dstTexture.generateMipmaps ) _gl.generateMipmap( 3553 );\n\n\t\tstate.unbindTexture();\n\n\t};\n\n\tthis.copyTextureToTexture3D = function ( sourceBox, position, srcTexture, dstTexture, level = 0 ) {\n\n\t\tif ( _this.isWebGL1Renderer ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer.copyTextureToTexture3D: can only be used with WebGL2.' );\n\t\t\treturn;\n\n\t\t}\n\n\t\tconst width = sourceBox.max.x - sourceBox.min.x + 1;\n\t\tconst height = sourceBox.max.y - sourceBox.min.y + 1;\n\t\tconst depth = sourceBox.max.z - sourceBox.min.z + 1;\n\t\tconst glFormat = utils.convert( dstTexture.format );\n\t\tconst glType = utils.convert( dstTexture.type );\n\t\tlet glTarget;\n\n\t\tif ( dstTexture.isData3DTexture ) {\n\n\t\t\ttextures.setTexture3D( dstTexture, 0 );\n\t\t\tglTarget = 32879;\n\n\t\t} else if ( dstTexture.isDataArrayTexture ) {\n\n\t\t\ttextures.setTexture2DArray( dstTexture, 0 );\n\t\t\tglTarget = 35866;\n\n\t\t} else {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer.copyTextureToTexture3D: only supports THREE.DataTexture3D and THREE.DataTexture2DArray.' );\n\t\t\treturn;\n\n\t\t}\n\n\t\t_gl.pixelStorei( 37440, dstTexture.flipY );\n\t\t_gl.pixelStorei( 37441, dstTexture.premultiplyAlpha );\n\t\t_gl.pixelStorei( 3317, dstTexture.unpackAlignment );\n\n\t\tconst unpackRowLen = _gl.getParameter( 3314 );\n\t\tconst unpackImageHeight = _gl.getParameter( 32878 );\n\t\tconst unpackSkipPixels = _gl.getParameter( 3316 );\n\t\tconst unpackSkipRows = _gl.getParameter( 3315 );\n\t\tconst unpackSkipImages = _gl.getParameter( 32877 );\n\n\t\tconst image = srcTexture.isCompressedTexture ? srcTexture.mipmaps[ 0 ] : srcTexture.image;\n\n\t\t_gl.pixelStorei( 3314, image.width );\n\t\t_gl.pixelStorei( 32878, image.height );\n\t\t_gl.pixelStorei( 3316, sourceBox.min.x );\n\t\t_gl.pixelStorei( 3315, sourceBox.min.y );\n\t\t_gl.pixelStorei( 32877, sourceBox.min.z );\n\n\t\tif ( srcTexture.isDataTexture || srcTexture.isData3DTexture ) {\n\n\t\t\t_gl.texSubImage3D( glTarget, level, position.x, position.y, position.z, width, height, depth, glFormat, glType, image.data );\n\n\t\t} else {\n\n\t\t\tif ( srcTexture.isCompressedTexture ) {\n\n\t\t\t\tconsole.warn( 'THREE.WebGLRenderer.copyTextureToTexture3D: untested support for compressed srcTexture.' );\n\t\t\t\t_gl.compressedTexSubImage3D( glTarget, level, position.x, position.y, position.z, width, height, depth, glFormat, image.data );\n\n\t\t\t} else {\n\n\t\t\t\t_gl.texSubImage3D( glTarget, level, position.x, position.y, position.z, width, height, depth, glFormat, glType, image );\n\n\t\t\t}\n\n\t\t}\n\n\t\t_gl.pixelStorei( 3314, unpackRowLen );\n\t\t_gl.pixelStorei( 32878, unpackImageHeight );\n\t\t_gl.pixelStorei( 3316, unpackSkipPixels );\n\t\t_gl.pixelStorei( 3315, unpackSkipRows );\n\t\t_gl.pixelStorei( 32877, unpackSkipImages );\n\n\t\t// Generate mipmaps only when copying level 0\n\t\tif ( level === 0 && dstTexture.generateMipmaps ) _gl.generateMipmap( glTarget );\n\n\t\tstate.unbindTexture();\n\n\t};\n\n\tthis.initTexture = function ( texture ) {\n\n\t\ttextures.setTexture2D( texture, 0 );\n\n\t\tstate.unbindTexture();\n\n\t};\n\n\tthis.resetState = function () {\n\n\t\t_currentActiveCubeFace = 0;\n\t\t_currentActiveMipmapLevel = 0;\n\t\t_currentRenderTarget = null;\n\n\t\tstate.reset();\n\t\tbindingStates.reset();\n\n\t};\n\n\tif ( typeof __THREE_DEVTOOLS__ !== 'undefined' ) {\n\n\t\t__THREE_DEVTOOLS__.dispatchEvent( new CustomEvent( 'observe', { detail: this } ) );\n\n\t}\n\n}\n\nclass WebGL1Renderer extends WebGLRenderer {}\n\nWebGL1Renderer.prototype.isWebGL1Renderer = true;\n\nclass FogExp2 {\n\n\tconstructor( color, density = 0.00025 ) {\n\n\t\tthis.isFogExp2 = true;\n\n\t\tthis.name = '';\n\n\t\tthis.color = new Color( color );\n\t\tthis.density = density;\n\n\t}\n\n\tclone() {\n\n\t\treturn new FogExp2( this.color, this.density );\n\n\t}\n\n\ttoJSON( /* meta */ ) {\n\n\t\treturn {\n\t\t\ttype: 'FogExp2',\n\t\t\tcolor: this.color.getHex(),\n\t\t\tdensity: this.density\n\t\t};\n\n\t}\n\n}\n\nclass Fog {\n\n\tconstructor( color, near = 1, far = 1000 ) {\n\n\t\tthis.isFog = true;\n\n\t\tthis.name = '';\n\n\t\tthis.color = new Color( color );\n\n\t\tthis.near = near;\n\t\tthis.far = far;\n\n\t}\n\n\tclone() {\n\n\t\treturn new Fog( this.color, this.near, this.far );\n\n\t}\n\n\ttoJSON( /* meta */ ) {\n\n\t\treturn {\n\t\t\ttype: 'Fog',\n\t\t\tcolor: this.color.getHex(),\n\t\t\tnear: this.near,\n\t\t\tfar: this.far\n\t\t};\n\n\t}\n\n}\n\nclass Scene extends Object3D {\n\n\tconstructor() {\n\n\t\tsuper();\n\n\t\tthis.isScene = true;\n\n\t\tthis.type = 'Scene';\n\n\t\tthis.background = null;\n\t\tthis.environment = null;\n\t\tthis.fog = null;\n\n\t\tthis.overrideMaterial = null;\n\n\t\tthis.autoUpdate = true; // checked by the renderer\n\n\t\tif ( typeof __THREE_DEVTOOLS__ !== 'undefined' ) {\n\n\t\t\t__THREE_DEVTOOLS__.dispatchEvent( new CustomEvent( 'observe', { detail: this } ) );\n\n\t\t}\n\n\t}\n\n\tcopy( source, recursive ) {\n\n\t\tsuper.copy( source, recursive );\n\n\t\tif ( source.background !== null ) this.background = source.background.clone();\n\t\tif ( source.environment !== null ) this.environment = source.environment.clone();\n\t\tif ( source.fog !== null ) this.fog = source.fog.clone();\n\n\t\tif ( source.overrideMaterial !== null ) this.overrideMaterial = source.overrideMaterial.clone();\n\n\t\tthis.autoUpdate = source.autoUpdate;\n\t\tthis.matrixAutoUpdate = source.matrixAutoUpdate;\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON( meta ) {\n\n\t\tconst data = super.toJSON( meta );\n\n\t\tif ( this.fog !== null ) data.object.fog = this.fog.toJSON();\n\n\t\treturn data;\n\n\t}\n\n}\n\nclass InterleavedBuffer {\n\n\tconstructor( array, stride ) {\n\n\t\tthis.isInterleavedBuffer = true;\n\n\t\tthis.array = array;\n\t\tthis.stride = stride;\n\t\tthis.count = array !== undefined ? array.length / stride : 0;\n\n\t\tthis.usage = StaticDrawUsage;\n\t\tthis.updateRange = { offset: 0, count: - 1 };\n\n\t\tthis.version = 0;\n\n\t\tthis.uuid = generateUUID();\n\n\t}\n\n\tonUploadCallback() {}\n\n\tset needsUpdate( value ) {\n\n\t\tif ( value === true ) this.version ++;\n\n\t}\n\n\tsetUsage( value ) {\n\n\t\tthis.usage = value;\n\n\t\treturn this;\n\n\t}\n\n\tcopy( source ) {\n\n\t\tthis.array = new source.array.constructor( source.array );\n\t\tthis.count = source.count;\n\t\tthis.stride = source.stride;\n\t\tthis.usage = source.usage;\n\n\t\treturn this;\n\n\t}\n\n\tcopyAt( index1, attribute, index2 ) {\n\n\t\tindex1 *= this.stride;\n\t\tindex2 *= attribute.stride;\n\n\t\tfor ( let i = 0, l = this.stride; i < l; i ++ ) {\n\n\t\t\tthis.array[ index1 + i ] = attribute.array[ index2 + i ];\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tset( value, offset = 0 ) {\n\n\t\tthis.array.set( value, offset );\n\n\t\treturn this;\n\n\t}\n\n\tclone( data ) {\n\n\t\tif ( data.arrayBuffers === undefined ) {\n\n\t\t\tdata.arrayBuffers = {};\n\n\t\t}\n\n\t\tif ( this.array.buffer._uuid === undefined ) {\n\n\t\t\tthis.array.buffer._uuid = generateUUID();\n\n\t\t}\n\n\t\tif ( data.arrayBuffers[ this.array.buffer._uuid ] === undefined ) {\n\n\t\t\tdata.arrayBuffers[ this.array.buffer._uuid ] = this.array.slice( 0 ).buffer;\n\n\t\t}\n\n\t\tconst array = new this.array.constructor( data.arrayBuffers[ this.array.buffer._uuid ] );\n\n\t\tconst ib = new this.constructor( array, this.stride );\n\t\tib.setUsage( this.usage );\n\n\t\treturn ib;\n\n\t}\n\n\tonUpload( callback ) {\n\n\t\tthis.onUploadCallback = callback;\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON( data ) {\n\n\t\tif ( data.arrayBuffers === undefined ) {\n\n\t\t\tdata.arrayBuffers = {};\n\n\t\t}\n\n\t\t// generate UUID for array buffer if necessary\n\n\t\tif ( this.array.buffer._uuid === undefined ) {\n\n\t\t\tthis.array.buffer._uuid = generateUUID();\n\n\t\t}\n\n\t\tif ( data.arrayBuffers[ this.array.buffer._uuid ] === undefined ) {\n\n\t\t\tdata.arrayBuffers[ this.array.buffer._uuid ] = Array.prototype.slice.call( new Uint32Array( this.array.buffer ) );\n\n\t\t}\n\n\t\t//\n\n\t\treturn {\n\t\t\tuuid: this.uuid,\n\t\t\tbuffer: this.array.buffer._uuid,\n\t\t\ttype: this.array.constructor.name,\n\t\t\tstride: this.stride\n\t\t};\n\n\t}\n\n}\n\nconst _vector$6 = /*@__PURE__*/ new Vector3();\n\nclass InterleavedBufferAttribute {\n\n\tconstructor( interleavedBuffer, itemSize, offset, normalized = false ) {\n\n\t\tthis.isInterleavedBufferAttribute = true;\n\n\t\tthis.name = '';\n\n\t\tthis.data = interleavedBuffer;\n\t\tthis.itemSize = itemSize;\n\t\tthis.offset = offset;\n\n\t\tthis.normalized = normalized === true;\n\n\t}\n\n\tget count() {\n\n\t\treturn this.data.count;\n\n\t}\n\n\tget array() {\n\n\t\treturn this.data.array;\n\n\t}\n\n\tset needsUpdate( value ) {\n\n\t\tthis.data.needsUpdate = value;\n\n\t}\n\n\tapplyMatrix4( m ) {\n\n\t\tfor ( let i = 0, l = this.data.count; i < l; i ++ ) {\n\n\t\t\t_vector$6.fromBufferAttribute( this, i );\n\n\t\t\t_vector$6.applyMatrix4( m );\n\n\t\t\tthis.setXYZ( i, _vector$6.x, _vector$6.y, _vector$6.z );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tapplyNormalMatrix( m ) {\n\n\t\tfor ( let i = 0, l = this.count; i < l; i ++ ) {\n\n\t\t\t_vector$6.fromBufferAttribute( this, i );\n\n\t\t\t_vector$6.applyNormalMatrix( m );\n\n\t\t\tthis.setXYZ( i, _vector$6.x, _vector$6.y, _vector$6.z );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\ttransformDirection( m ) {\n\n\t\tfor ( let i = 0, l = this.count; i < l; i ++ ) {\n\n\t\t\t_vector$6.fromBufferAttribute( this, i );\n\n\t\t\t_vector$6.transformDirection( m );\n\n\t\t\tthis.setXYZ( i, _vector$6.x, _vector$6.y, _vector$6.z );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tsetX( index, x ) {\n\n\t\tthis.data.array[ index * this.data.stride + this.offset ] = x;\n\n\t\treturn this;\n\n\t}\n\n\tsetY( index, y ) {\n\n\t\tthis.data.array[ index * this.data.stride + this.offset + 1 ] = y;\n\n\t\treturn this;\n\n\t}\n\n\tsetZ( index, z ) {\n\n\t\tthis.data.array[ index * this.data.stride + this.offset + 2 ] = z;\n\n\t\treturn this;\n\n\t}\n\n\tsetW( index, w ) {\n\n\t\tthis.data.array[ index * this.data.stride + this.offset + 3 ] = w;\n\n\t\treturn this;\n\n\t}\n\n\tgetX( index ) {\n\n\t\treturn this.data.array[ index * this.data.stride + this.offset ];\n\n\t}\n\n\tgetY( index ) {\n\n\t\treturn this.data.array[ index * this.data.stride + this.offset + 1 ];\n\n\t}\n\n\tgetZ( index ) {\n\n\t\treturn this.data.array[ index * this.data.stride + this.offset + 2 ];\n\n\t}\n\n\tgetW( index ) {\n\n\t\treturn this.data.array[ index * this.data.stride + this.offset + 3 ];\n\n\t}\n\n\tsetXY( index, x, y ) {\n\n\t\tindex = index * this.data.stride + this.offset;\n\n\t\tthis.data.array[ index + 0 ] = x;\n\t\tthis.data.array[ index + 1 ] = y;\n\n\t\treturn this;\n\n\t}\n\n\tsetXYZ( index, x, y, z ) {\n\n\t\tindex = index * this.data.stride + this.offset;\n\n\t\tthis.data.array[ index + 0 ] = x;\n\t\tthis.data.array[ index + 1 ] = y;\n\t\tthis.data.array[ index + 2 ] = z;\n\n\t\treturn this;\n\n\t}\n\n\tsetXYZW( index, x, y, z, w ) {\n\n\t\tindex = index * this.data.stride + this.offset;\n\n\t\tthis.data.array[ index + 0 ] = x;\n\t\tthis.data.array[ index + 1 ] = y;\n\t\tthis.data.array[ index + 2 ] = z;\n\t\tthis.data.array[ index + 3 ] = w;\n\n\t\treturn this;\n\n\t}\n\n\tclone( data ) {\n\n\t\tif ( data === undefined ) {\n\n\t\t\tconsole.log( 'THREE.InterleavedBufferAttribute.clone(): Cloning an interlaved buffer attribute will deinterleave buffer data.' );\n\n\t\t\tconst array = [];\n\n\t\t\tfor ( let i = 0; i < this.count; i ++ ) {\n\n\t\t\t\tconst index = i * this.data.stride + this.offset;\n\n\t\t\t\tfor ( let j = 0; j < this.itemSize; j ++ ) {\n\n\t\t\t\t\tarray.push( this.data.array[ index + j ] );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn new BufferAttribute( new this.array.constructor( array ), this.itemSize, this.normalized );\n\n\t\t} else {\n\n\t\t\tif ( data.interleavedBuffers === undefined ) {\n\n\t\t\t\tdata.interleavedBuffers = {};\n\n\t\t\t}\n\n\t\t\tif ( data.interleavedBuffers[ this.data.uuid ] === undefined ) {\n\n\t\t\t\tdata.interleavedBuffers[ this.data.uuid ] = this.data.clone( data );\n\n\t\t\t}\n\n\t\t\treturn new InterleavedBufferAttribute( data.interleavedBuffers[ this.data.uuid ], this.itemSize, this.offset, this.normalized );\n\n\t\t}\n\n\t}\n\n\ttoJSON( data ) {\n\n\t\tif ( data === undefined ) {\n\n\t\t\tconsole.log( 'THREE.InterleavedBufferAttribute.toJSON(): Serializing an interlaved buffer attribute will deinterleave buffer data.' );\n\n\t\t\tconst array = [];\n\n\t\t\tfor ( let i = 0; i < this.count; i ++ ) {\n\n\t\t\t\tconst index = i * this.data.stride + this.offset;\n\n\t\t\t\tfor ( let j = 0; j < this.itemSize; j ++ ) {\n\n\t\t\t\t\tarray.push( this.data.array[ index + j ] );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// deinterleave data and save it as an ordinary buffer attribute for now\n\n\t\t\treturn {\n\t\t\t\titemSize: this.itemSize,\n\t\t\t\ttype: this.array.constructor.name,\n\t\t\t\tarray: array,\n\t\t\t\tnormalized: this.normalized\n\t\t\t};\n\n\t\t} else {\n\n\t\t\t// save as true interlaved attribtue\n\n\t\t\tif ( data.interleavedBuffers === undefined ) {\n\n\t\t\t\tdata.interleavedBuffers = {};\n\n\t\t\t}\n\n\t\t\tif ( data.interleavedBuffers[ this.data.uuid ] === undefined ) {\n\n\t\t\t\tdata.interleavedBuffers[ this.data.uuid ] = this.data.toJSON( data );\n\n\t\t\t}\n\n\t\t\treturn {\n\t\t\t\tisInterleavedBufferAttribute: true,\n\t\t\t\titemSize: this.itemSize,\n\t\t\t\tdata: this.data.uuid,\n\t\t\t\toffset: this.offset,\n\t\t\t\tnormalized: this.normalized\n\t\t\t};\n\n\t\t}\n\n\t}\n\n}\n\nclass SpriteMaterial extends Material {\n\n\tconstructor( parameters ) {\n\n\t\tsuper();\n\n\t\tthis.isSpriteMaterial = true;\n\n\t\tthis.type = 'SpriteMaterial';\n\n\t\tthis.color = new Color( 0xffffff );\n\n\t\tthis.map = null;\n\n\t\tthis.alphaMap = null;\n\n\t\tthis.rotation = 0;\n\n\t\tthis.sizeAttenuation = true;\n\n\t\tthis.transparent = true;\n\n\t\tthis.fog = true;\n\n\t\tthis.setValues( parameters );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.color.copy( source.color );\n\n\t\tthis.map = source.map;\n\n\t\tthis.alphaMap = source.alphaMap;\n\n\t\tthis.rotation = source.rotation;\n\n\t\tthis.sizeAttenuation = source.sizeAttenuation;\n\n\t\tthis.fog = source.fog;\n\n\t\treturn this;\n\n\t}\n\n}\n\nlet _geometry;\n\nconst _intersectPoint = /*@__PURE__*/ new Vector3();\nconst _worldScale = /*@__PURE__*/ new Vector3();\nconst _mvPosition = /*@__PURE__*/ new Vector3();\n\nconst _alignedPosition = /*@__PURE__*/ new Vector2();\nconst _rotatedPosition = /*@__PURE__*/ new Vector2();\nconst _viewWorldMatrix = /*@__PURE__*/ new Matrix4();\n\nconst _vA = /*@__PURE__*/ new Vector3();\nconst _vB = /*@__PURE__*/ new Vector3();\nconst _vC = /*@__PURE__*/ new Vector3();\n\nconst _uvA = /*@__PURE__*/ new Vector2();\nconst _uvB = /*@__PURE__*/ new Vector2();\nconst _uvC = /*@__PURE__*/ new Vector2();\n\nclass Sprite extends Object3D {\n\n\tconstructor( material ) {\n\n\t\tsuper();\n\n\t\tthis.isSprite = true;\n\n\t\tthis.type = 'Sprite';\n\n\t\tif ( _geometry === undefined ) {\n\n\t\t\t_geometry = new BufferGeometry();\n\n\t\t\tconst float32Array = new Float32Array( [\n\t\t\t\t- 0.5, - 0.5, 0, 0, 0,\n\t\t\t\t0.5, - 0.5, 0, 1, 0,\n\t\t\t\t0.5, 0.5, 0, 1, 1,\n\t\t\t\t- 0.5, 0.5, 0, 0, 1\n\t\t\t] );\n\n\t\t\tconst interleavedBuffer = new InterleavedBuffer( float32Array, 5 );\n\n\t\t\t_geometry.setIndex( [ 0, 1, 2,\t0, 2, 3 ] );\n\t\t\t_geometry.setAttribute( 'position', new InterleavedBufferAttribute( interleavedBuffer, 3, 0, false ) );\n\t\t\t_geometry.setAttribute( 'uv', new InterleavedBufferAttribute( interleavedBuffer, 2, 3, false ) );\n\n\t\t}\n\n\t\tthis.geometry = _geometry;\n\t\tthis.material = ( material !== undefined ) ? material : new SpriteMaterial();\n\n\t\tthis.center = new Vector2( 0.5, 0.5 );\n\n\t}\n\n\traycast( raycaster, intersects ) {\n\n\t\tif ( raycaster.camera === null ) {\n\n\t\t\tconsole.error( 'THREE.Sprite: \"Raycaster.camera\" needs to be set in order to raycast against sprites.' );\n\n\t\t}\n\n\t\t_worldScale.setFromMatrixScale( this.matrixWorld );\n\n\t\t_viewWorldMatrix.copy( raycaster.camera.matrixWorld );\n\t\tthis.modelViewMatrix.multiplyMatrices( raycaster.camera.matrixWorldInverse, this.matrixWorld );\n\n\t\t_mvPosition.setFromMatrixPosition( this.modelViewMatrix );\n\n\t\tif ( raycaster.camera.isPerspectiveCamera && this.material.sizeAttenuation === false ) {\n\n\t\t\t_worldScale.multiplyScalar( - _mvPosition.z );\n\n\t\t}\n\n\t\tconst rotation = this.material.rotation;\n\t\tlet sin, cos;\n\n\t\tif ( rotation !== 0 ) {\n\n\t\t\tcos = Math.cos( rotation );\n\t\t\tsin = Math.sin( rotation );\n\n\t\t}\n\n\t\tconst center = this.center;\n\n\t\ttransformVertex( _vA.set( - 0.5, - 0.5, 0 ), _mvPosition, center, _worldScale, sin, cos );\n\t\ttransformVertex( _vB.set( 0.5, - 0.5, 0 ), _mvPosition, center, _worldScale, sin, cos );\n\t\ttransformVertex( _vC.set( 0.5, 0.5, 0 ), _mvPosition, center, _worldScale, sin, cos );\n\n\t\t_uvA.set( 0, 0 );\n\t\t_uvB.set( 1, 0 );\n\t\t_uvC.set( 1, 1 );\n\n\t\t// check first triangle\n\t\tlet intersect = raycaster.ray.intersectTriangle( _vA, _vB, _vC, false, _intersectPoint );\n\n\t\tif ( intersect === null ) {\n\n\t\t\t// check second triangle\n\t\t\ttransformVertex( _vB.set( - 0.5, 0.5, 0 ), _mvPosition, center, _worldScale, sin, cos );\n\t\t\t_uvB.set( 0, 1 );\n\n\t\t\tintersect = raycaster.ray.intersectTriangle( _vA, _vC, _vB, false, _intersectPoint );\n\t\t\tif ( intersect === null ) {\n\n\t\t\t\treturn;\n\n\t\t\t}\n\n\t\t}\n\n\t\tconst distance = raycaster.ray.origin.distanceTo( _intersectPoint );\n\n\t\tif ( distance < raycaster.near || distance > raycaster.far ) return;\n\n\t\tintersects.push( {\n\n\t\t\tdistance: distance,\n\t\t\tpoint: _intersectPoint.clone(),\n\t\t\tuv: Triangle.getUV( _intersectPoint, _vA, _vB, _vC, _uvA, _uvB, _uvC, new Vector2() ),\n\t\t\tface: null,\n\t\t\tobject: this\n\n\t\t} );\n\n\t}\n\n\tcopy( source, recursive ) {\n\n\t\tsuper.copy( source, recursive );\n\n\t\tif ( source.center !== undefined ) this.center.copy( source.center );\n\n\t\tthis.material = source.material;\n\n\t\treturn this;\n\n\t}\n\n}\n\nfunction transformVertex( vertexPosition, mvPosition, center, scale, sin, cos ) {\n\n\t// compute position in camera space\n\t_alignedPosition.subVectors( vertexPosition, center ).addScalar( 0.5 ).multiply( scale );\n\n\t// to check if rotation is not zero\n\tif ( sin !== undefined ) {\n\n\t\t_rotatedPosition.x = ( cos * _alignedPosition.x ) - ( sin * _alignedPosition.y );\n\t\t_rotatedPosition.y = ( sin * _alignedPosition.x ) + ( cos * _alignedPosition.y );\n\n\t} else {\n\n\t\t_rotatedPosition.copy( _alignedPosition );\n\n\t}\n\n\n\tvertexPosition.copy( mvPosition );\n\tvertexPosition.x += _rotatedPosition.x;\n\tvertexPosition.y += _rotatedPosition.y;\n\n\t// transform to world space\n\tvertexPosition.applyMatrix4( _viewWorldMatrix );\n\n}\n\nconst _v1$2 = /*@__PURE__*/ new Vector3();\nconst _v2$1 = /*@__PURE__*/ new Vector3();\n\nclass LOD extends Object3D {\n\n\tconstructor() {\n\n\t\tsuper();\n\n\t\tthis._currentLevel = 0;\n\n\t\tthis.type = 'LOD';\n\n\t\tObject.defineProperties( this, {\n\t\t\tlevels: {\n\t\t\t\tenumerable: true,\n\t\t\t\tvalue: []\n\t\t\t},\n\t\t\tisLOD: {\n\t\t\t\tvalue: true,\n\t\t\t}\n\t\t} );\n\n\t\tthis.autoUpdate = true;\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source, false );\n\n\t\tconst levels = source.levels;\n\n\t\tfor ( let i = 0, l = levels.length; i < l; i ++ ) {\n\n\t\t\tconst level = levels[ i ];\n\n\t\t\tthis.addLevel( level.object.clone(), level.distance );\n\n\t\t}\n\n\t\tthis.autoUpdate = source.autoUpdate;\n\n\t\treturn this;\n\n\t}\n\n\taddLevel( object, distance = 0 ) {\n\n\t\tdistance = Math.abs( distance );\n\n\t\tconst levels = this.levels;\n\n\t\tlet l;\n\n\t\tfor ( l = 0; l < levels.length; l ++ ) {\n\n\t\t\tif ( distance < levels[ l ].distance ) {\n\n\t\t\t\tbreak;\n\n\t\t\t}\n\n\t\t}\n\n\t\tlevels.splice( l, 0, { distance: distance, object: object } );\n\n\t\tthis.add( object );\n\n\t\treturn this;\n\n\t}\n\n\tgetCurrentLevel() {\n\n\t\treturn this._currentLevel;\n\n\t}\n\n\tgetObjectForDistance( distance ) {\n\n\t\tconst levels = this.levels;\n\n\t\tif ( levels.length > 0 ) {\n\n\t\t\tlet i, l;\n\n\t\t\tfor ( i = 1, l = levels.length; i < l; i ++ ) {\n\n\t\t\t\tif ( distance < levels[ i ].distance ) {\n\n\t\t\t\t\tbreak;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn levels[ i - 1 ].object;\n\n\t\t}\n\n\t\treturn null;\n\n\t}\n\n\traycast( raycaster, intersects ) {\n\n\t\tconst levels = this.levels;\n\n\t\tif ( levels.length > 0 ) {\n\n\t\t\t_v1$2.setFromMatrixPosition( this.matrixWorld );\n\n\t\t\tconst distance = raycaster.ray.origin.distanceTo( _v1$2 );\n\n\t\t\tthis.getObjectForDistance( distance ).raycast( raycaster, intersects );\n\n\t\t}\n\n\t}\n\n\tupdate( camera ) {\n\n\t\tconst levels = this.levels;\n\n\t\tif ( levels.length > 1 ) {\n\n\t\t\t_v1$2.setFromMatrixPosition( camera.matrixWorld );\n\t\t\t_v2$1.setFromMatrixPosition( this.matrixWorld );\n\n\t\t\tconst distance = _v1$2.distanceTo( _v2$1 ) / camera.zoom;\n\n\t\t\tlevels[ 0 ].object.visible = true;\n\n\t\t\tlet i, l;\n\n\t\t\tfor ( i = 1, l = levels.length; i < l; i ++ ) {\n\n\t\t\t\tif ( distance >= levels[ i ].distance ) {\n\n\t\t\t\t\tlevels[ i - 1 ].object.visible = false;\n\t\t\t\t\tlevels[ i ].object.visible = true;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tbreak;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tthis._currentLevel = i - 1;\n\n\t\t\tfor ( ; i < l; i ++ ) {\n\n\t\t\t\tlevels[ i ].object.visible = false;\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\ttoJSON( meta ) {\n\n\t\tconst data = super.toJSON( meta );\n\n\t\tif ( this.autoUpdate === false ) data.object.autoUpdate = false;\n\n\t\tdata.object.levels = [];\n\n\t\tconst levels = this.levels;\n\n\t\tfor ( let i = 0, l = levels.length; i < l; i ++ ) {\n\n\t\t\tconst level = levels[ i ];\n\n\t\t\tdata.object.levels.push( {\n\t\t\t\tobject: level.object.uuid,\n\t\t\t\tdistance: level.distance\n\t\t\t} );\n\n\t\t}\n\n\t\treturn data;\n\n\t}\n\n}\n\nconst _basePosition = /*@__PURE__*/ new Vector3();\n\nconst _skinIndex = /*@__PURE__*/ new Vector4();\nconst _skinWeight = /*@__PURE__*/ new Vector4();\n\nconst _vector$5 = /*@__PURE__*/ new Vector3();\nconst _matrix = /*@__PURE__*/ new Matrix4();\n\nclass SkinnedMesh extends Mesh {\n\n\tconstructor( geometry, material ) {\n\n\t\tsuper( geometry, material );\n\n\t\tthis.isSkinnedMesh = true;\n\n\t\tthis.type = 'SkinnedMesh';\n\n\t\tthis.bindMode = 'attached';\n\t\tthis.bindMatrix = new Matrix4();\n\t\tthis.bindMatrixInverse = new Matrix4();\n\n\t}\n\n\tcopy( source, recursive ) {\n\n\t\tsuper.copy( source, recursive );\n\n\t\tthis.bindMode = source.bindMode;\n\t\tthis.bindMatrix.copy( source.bindMatrix );\n\t\tthis.bindMatrixInverse.copy( source.bindMatrixInverse );\n\n\t\tthis.skeleton = source.skeleton;\n\n\t\treturn this;\n\n\t}\n\n\tbind( skeleton, bindMatrix ) {\n\n\t\tthis.skeleton = skeleton;\n\n\t\tif ( bindMatrix === undefined ) {\n\n\t\t\tthis.updateMatrixWorld( true );\n\n\t\t\tthis.skeleton.calculateInverses();\n\n\t\t\tbindMatrix = this.matrixWorld;\n\n\t\t}\n\n\t\tthis.bindMatrix.copy( bindMatrix );\n\t\tthis.bindMatrixInverse.copy( bindMatrix ).invert();\n\n\t}\n\n\tpose() {\n\n\t\tthis.skeleton.pose();\n\n\t}\n\n\tnormalizeSkinWeights() {\n\n\t\tconst vector = new Vector4();\n\n\t\tconst skinWeight = this.geometry.attributes.skinWeight;\n\n\t\tfor ( let i = 0, l = skinWeight.count; i < l; i ++ ) {\n\n\t\t\tvector.fromBufferAttribute( skinWeight, i );\n\n\t\t\tconst scale = 1.0 / vector.manhattanLength();\n\n\t\t\tif ( scale !== Infinity ) {\n\n\t\t\t\tvector.multiplyScalar( scale );\n\n\t\t\t} else {\n\n\t\t\t\tvector.set( 1, 0, 0, 0 ); // do something reasonable\n\n\t\t\t}\n\n\t\t\tskinWeight.setXYZW( i, vector.x, vector.y, vector.z, vector.w );\n\n\t\t}\n\n\t}\n\n\tupdateMatrixWorld( force ) {\n\n\t\tsuper.updateMatrixWorld( force );\n\n\t\tif ( this.bindMode === 'attached' ) {\n\n\t\t\tthis.bindMatrixInverse.copy( this.matrixWorld ).invert();\n\n\t\t} else if ( this.bindMode === 'detached' ) {\n\n\t\t\tthis.bindMatrixInverse.copy( this.bindMatrix ).invert();\n\n\t\t} else {\n\n\t\t\tconsole.warn( 'THREE.SkinnedMesh: Unrecognized bindMode: ' + this.bindMode );\n\n\t\t}\n\n\t}\n\n\tboneTransform( index, target ) {\n\n\t\tconst skeleton = this.skeleton;\n\t\tconst geometry = this.geometry;\n\n\t\t_skinIndex.fromBufferAttribute( geometry.attributes.skinIndex, index );\n\t\t_skinWeight.fromBufferAttribute( geometry.attributes.skinWeight, index );\n\n\t\t_basePosition.copy( target ).applyMatrix4( this.bindMatrix );\n\n\t\ttarget.set( 0, 0, 0 );\n\n\t\tfor ( let i = 0; i < 4; i ++ ) {\n\n\t\t\tconst weight = _skinWeight.getComponent( i );\n\n\t\t\tif ( weight !== 0 ) {\n\n\t\t\t\tconst boneIndex = _skinIndex.getComponent( i );\n\n\t\t\t\t_matrix.multiplyMatrices( skeleton.bones[ boneIndex ].matrixWorld, skeleton.boneInverses[ boneIndex ] );\n\n\t\t\t\ttarget.addScaledVector( _vector$5.copy( _basePosition ).applyMatrix4( _matrix ), weight );\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn target.applyMatrix4( this.bindMatrixInverse );\n\n\t}\n\n}\n\nclass Bone extends Object3D {\n\n\tconstructor() {\n\n\t\tsuper();\n\n\t\tthis.isBone = true;\n\n\t\tthis.type = 'Bone';\n\n\t}\n\n}\n\nclass DataTexture extends Texture {\n\n\tconstructor( data = null, width = 1, height = 1, format, type, mapping, wrapS, wrapT, magFilter = NearestFilter, minFilter = NearestFilter, anisotropy, encoding ) {\n\n\t\tsuper( null, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy, encoding );\n\n\t\tthis.isDataTexture = true;\n\n\t\tthis.image = { data: data, width: width, height: height };\n\n\t\tthis.generateMipmaps = false;\n\t\tthis.flipY = false;\n\t\tthis.unpackAlignment = 1;\n\n\t}\n\n}\n\nconst _offsetMatrix = /*@__PURE__*/ new Matrix4();\nconst _identityMatrix = /*@__PURE__*/ new Matrix4();\n\nclass Skeleton {\n\n\tconstructor( bones = [], boneInverses = [] ) {\n\n\t\tthis.uuid = generateUUID();\n\n\t\tthis.bones = bones.slice( 0 );\n\t\tthis.boneInverses = boneInverses;\n\t\tthis.boneMatrices = null;\n\n\t\tthis.boneTexture = null;\n\t\tthis.boneTextureSize = 0;\n\n\t\tthis.frame = - 1;\n\n\t\tthis.init();\n\n\t}\n\n\tinit() {\n\n\t\tconst bones = this.bones;\n\t\tconst boneInverses = this.boneInverses;\n\n\t\tthis.boneMatrices = new Float32Array( bones.length * 16 );\n\n\t\t// calculate inverse bone matrices if necessary\n\n\t\tif ( boneInverses.length === 0 ) {\n\n\t\t\tthis.calculateInverses();\n\n\t\t} else {\n\n\t\t\t// handle special case\n\n\t\t\tif ( bones.length !== boneInverses.length ) {\n\n\t\t\t\tconsole.warn( 'THREE.Skeleton: Number of inverse bone matrices does not match amount of bones.' );\n\n\t\t\t\tthis.boneInverses = [];\n\n\t\t\t\tfor ( let i = 0, il = this.bones.length; i < il; i ++ ) {\n\n\t\t\t\t\tthis.boneInverses.push( new Matrix4() );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tcalculateInverses() {\n\n\t\tthis.boneInverses.length = 0;\n\n\t\tfor ( let i = 0, il = this.bones.length; i < il; i ++ ) {\n\n\t\t\tconst inverse = new Matrix4();\n\n\t\t\tif ( this.bones[ i ] ) {\n\n\t\t\t\tinverse.copy( this.bones[ i ].matrixWorld ).invert();\n\n\t\t\t}\n\n\t\t\tthis.boneInverses.push( inverse );\n\n\t\t}\n\n\t}\n\n\tpose() {\n\n\t\t// recover the bind-time world matrices\n\n\t\tfor ( let i = 0, il = this.bones.length; i < il; i ++ ) {\n\n\t\t\tconst bone = this.bones[ i ];\n\n\t\t\tif ( bone ) {\n\n\t\t\t\tbone.matrixWorld.copy( this.boneInverses[ i ] ).invert();\n\n\t\t\t}\n\n\t\t}\n\n\t\t// compute the local matrices, positions, rotations and scales\n\n\t\tfor ( let i = 0, il = this.bones.length; i < il; i ++ ) {\n\n\t\t\tconst bone = this.bones[ i ];\n\n\t\t\tif ( bone ) {\n\n\t\t\t\tif ( bone.parent && bone.parent.isBone ) {\n\n\t\t\t\t\tbone.matrix.copy( bone.parent.matrixWorld ).invert();\n\t\t\t\t\tbone.matrix.multiply( bone.matrixWorld );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tbone.matrix.copy( bone.matrixWorld );\n\n\t\t\t\t}\n\n\t\t\t\tbone.matrix.decompose( bone.position, bone.quaternion, bone.scale );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tupdate() {\n\n\t\tconst bones = this.bones;\n\t\tconst boneInverses = this.boneInverses;\n\t\tconst boneMatrices = this.boneMatrices;\n\t\tconst boneTexture = this.boneTexture;\n\n\t\t// flatten bone matrices to array\n\n\t\tfor ( let i = 0, il = bones.length; i < il; i ++ ) {\n\n\t\t\t// compute the offset between the current and the original transform\n\n\t\t\tconst matrix = bones[ i ] ? bones[ i ].matrixWorld : _identityMatrix;\n\n\t\t\t_offsetMatrix.multiplyMatrices( matrix, boneInverses[ i ] );\n\t\t\t_offsetMatrix.toArray( boneMatrices, i * 16 );\n\n\t\t}\n\n\t\tif ( boneTexture !== null ) {\n\n\t\t\tboneTexture.needsUpdate = true;\n\n\t\t}\n\n\t}\n\n\tclone() {\n\n\t\treturn new Skeleton( this.bones, this.boneInverses );\n\n\t}\n\n\tcomputeBoneTexture() {\n\n\t\t// layout (1 matrix = 4 pixels)\n\t\t// RGBA RGBA RGBA RGBA (=> column1, column2, column3, column4)\n\t\t// with 8x8 pixel texture max 16 bones * 4 pixels = (8 * 8)\n\t\t// 16x16 pixel texture max 64 bones * 4 pixels = (16 * 16)\n\t\t// 32x32 pixel texture max 256 bones * 4 pixels = (32 * 32)\n\t\t// 64x64 pixel texture max 1024 bones * 4 pixels = (64 * 64)\n\n\t\tlet size = Math.sqrt( this.bones.length * 4 ); // 4 pixels needed for 1 matrix\n\t\tsize = ceilPowerOfTwo( size );\n\t\tsize = Math.max( size, 4 );\n\n\t\tconst boneMatrices = new Float32Array( size * size * 4 ); // 4 floats per RGBA pixel\n\t\tboneMatrices.set( this.boneMatrices ); // copy current values\n\n\t\tconst boneTexture = new DataTexture( boneMatrices, size, size, RGBAFormat, FloatType );\n\t\tboneTexture.needsUpdate = true;\n\n\t\tthis.boneMatrices = boneMatrices;\n\t\tthis.boneTexture = boneTexture;\n\t\tthis.boneTextureSize = size;\n\n\t\treturn this;\n\n\t}\n\n\tgetBoneByName( name ) {\n\n\t\tfor ( let i = 0, il = this.bones.length; i < il; i ++ ) {\n\n\t\t\tconst bone = this.bones[ i ];\n\n\t\t\tif ( bone.name === name ) {\n\n\t\t\t\treturn bone;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn undefined;\n\n\t}\n\n\tdispose( ) {\n\n\t\tif ( this.boneTexture !== null ) {\n\n\t\t\tthis.boneTexture.dispose();\n\n\t\t\tthis.boneTexture = null;\n\n\t\t}\n\n\t}\n\n\tfromJSON( json, bones ) {\n\n\t\tthis.uuid = json.uuid;\n\n\t\tfor ( let i = 0, l = json.bones.length; i < l; i ++ ) {\n\n\t\t\tconst uuid = json.bones[ i ];\n\t\t\tlet bone = bones[ uuid ];\n\n\t\t\tif ( bone === undefined ) {\n\n\t\t\t\tconsole.warn( 'THREE.Skeleton: No bone found with UUID:', uuid );\n\t\t\t\tbone = new Bone();\n\n\t\t\t}\n\n\t\t\tthis.bones.push( bone );\n\t\t\tthis.boneInverses.push( new Matrix4().fromArray( json.boneInverses[ i ] ) );\n\n\t\t}\n\n\t\tthis.init();\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON() {\n\n\t\tconst data = {\n\t\t\tmetadata: {\n\t\t\t\tversion: 4.5,\n\t\t\t\ttype: 'Skeleton',\n\t\t\t\tgenerator: 'Skeleton.toJSON'\n\t\t\t},\n\t\t\tbones: [],\n\t\t\tboneInverses: []\n\t\t};\n\n\t\tdata.uuid = this.uuid;\n\n\t\tconst bones = this.bones;\n\t\tconst boneInverses = this.boneInverses;\n\n\t\tfor ( let i = 0, l = bones.length; i < l; i ++ ) {\n\n\t\t\tconst bone = bones[ i ];\n\t\t\tdata.bones.push( bone.uuid );\n\n\t\t\tconst boneInverse = boneInverses[ i ];\n\t\t\tdata.boneInverses.push( boneInverse.toArray() );\n\n\t\t}\n\n\t\treturn data;\n\n\t}\n\n}\n\nclass InstancedBufferAttribute extends BufferAttribute {\n\n\tconstructor( array, itemSize, normalized, meshPerAttribute = 1 ) {\n\n\t\tif ( typeof normalized === 'number' ) {\n\n\t\t\tmeshPerAttribute = normalized;\n\n\t\t\tnormalized = false;\n\n\t\t\tconsole.error( 'THREE.InstancedBufferAttribute: The constructor now expects normalized as the third argument.' );\n\n\t\t}\n\n\t\tsuper( array, itemSize, normalized );\n\n\t\tthis.isInstancedBufferAttribute = true;\n\n\t\tthis.meshPerAttribute = meshPerAttribute;\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.meshPerAttribute = source.meshPerAttribute;\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON() {\n\n\t\tconst data = super.toJSON();\n\n\t\tdata.meshPerAttribute = this.meshPerAttribute;\n\n\t\tdata.isInstancedBufferAttribute = true;\n\n\t\treturn data;\n\n\t}\n\n}\n\nconst _instanceLocalMatrix = /*@__PURE__*/ new Matrix4();\nconst _instanceWorldMatrix = /*@__PURE__*/ new Matrix4();\n\nconst _instanceIntersects = [];\n\nconst _mesh = /*@__PURE__*/ new Mesh();\n\nclass InstancedMesh extends Mesh {\n\n\tconstructor( geometry, material, count ) {\n\n\t\tsuper( geometry, material );\n\n\t\tthis.isInstancedMesh = true;\n\n\t\tthis.instanceMatrix = new InstancedBufferAttribute( new Float32Array( count * 16 ), 16 );\n\t\tthis.instanceColor = null;\n\n\t\tthis.count = count;\n\n\t\tthis.frustumCulled = false;\n\n\t}\n\n\tcopy( source, recursive ) {\n\n\t\tsuper.copy( source, recursive );\n\n\t\tthis.instanceMatrix.copy( source.instanceMatrix );\n\n\t\tif ( source.instanceColor !== null ) this.instanceColor = source.instanceColor.clone();\n\n\t\tthis.count = source.count;\n\n\t\treturn this;\n\n\t}\n\n\tgetColorAt( index, color ) {\n\n\t\tcolor.fromArray( this.instanceColor.array, index * 3 );\n\n\t}\n\n\tgetMatrixAt( index, matrix ) {\n\n\t\tmatrix.fromArray( this.instanceMatrix.array, index * 16 );\n\n\t}\n\n\traycast( raycaster, intersects ) {\n\n\t\tconst matrixWorld = this.matrixWorld;\n\t\tconst raycastTimes = this.count;\n\n\t\t_mesh.geometry = this.geometry;\n\t\t_mesh.material = this.material;\n\n\t\tif ( _mesh.material === undefined ) return;\n\n\t\tfor ( let instanceId = 0; instanceId < raycastTimes; instanceId ++ ) {\n\n\t\t\t// calculate the world matrix for each instance\n\n\t\t\tthis.getMatrixAt( instanceId, _instanceLocalMatrix );\n\n\t\t\t_instanceWorldMatrix.multiplyMatrices( matrixWorld, _instanceLocalMatrix );\n\n\t\t\t// the mesh represents this single instance\n\n\t\t\t_mesh.matrixWorld = _instanceWorldMatrix;\n\n\t\t\t_mesh.raycast( raycaster, _instanceIntersects );\n\n\t\t\t// process the result of raycast\n\n\t\t\tfor ( let i = 0, l = _instanceIntersects.length; i < l; i ++ ) {\n\n\t\t\t\tconst intersect = _instanceIntersects[ i ];\n\t\t\t\tintersect.instanceId = instanceId;\n\t\t\t\tintersect.object = this;\n\t\t\t\tintersects.push( intersect );\n\n\t\t\t}\n\n\t\t\t_instanceIntersects.length = 0;\n\n\t\t}\n\n\t}\n\n\tsetColorAt( index, color ) {\n\n\t\tif ( this.instanceColor === null ) {\n\n\t\t\tthis.instanceColor = new InstancedBufferAttribute( new Float32Array( this.instanceMatrix.count * 3 ), 3 );\n\n\t\t}\n\n\t\tcolor.toArray( this.instanceColor.array, index * 3 );\n\n\t}\n\n\tsetMatrixAt( index, matrix ) {\n\n\t\tmatrix.toArray( this.instanceMatrix.array, index * 16 );\n\n\t}\n\n\tupdateMorphTargets() {\n\n\t}\n\n\tdispose() {\n\n\t\tthis.dispatchEvent( { type: 'dispose' } );\n\n\t}\n\n}\n\nclass LineBasicMaterial extends Material {\n\n\tconstructor( parameters ) {\n\n\t\tsuper();\n\n\t\tthis.isLineBasicMaterial = true;\n\n\t\tthis.type = 'LineBasicMaterial';\n\n\t\tthis.color = new Color( 0xffffff );\n\n\t\tthis.linewidth = 1;\n\t\tthis.linecap = 'round';\n\t\tthis.linejoin = 'round';\n\n\t\tthis.fog = true;\n\n\t\tthis.setValues( parameters );\n\n\t}\n\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.color.copy( source.color );\n\n\t\tthis.linewidth = source.linewidth;\n\t\tthis.linecap = source.linecap;\n\t\tthis.linejoin = source.linejoin;\n\n\t\tthis.fog = source.fog;\n\n\t\treturn this;\n\n\t}\n\n}\n\nconst _start$1 = /*@__PURE__*/ new Vector3();\nconst _end$1 = /*@__PURE__*/ new Vector3();\nconst _inverseMatrix$1 = /*@__PURE__*/ new Matrix4();\nconst _ray$1 = /*@__PURE__*/ new Ray();\nconst _sphere$1 = /*@__PURE__*/ new Sphere();\n\nclass Line extends Object3D {\n\n\tconstructor( geometry = new BufferGeometry(), material = new LineBasicMaterial() ) {\n\n\t\tsuper();\n\n\t\tthis.isLine = true;\n\n\t\tthis.type = 'Line';\n\n\t\tthis.geometry = geometry;\n\t\tthis.material = material;\n\n\t\tthis.updateMorphTargets();\n\n\t}\n\n\tcopy( source, recursive ) {\n\n\t\tsuper.copy( source, recursive );\n\n\t\tthis.material = source.material;\n\t\tthis.geometry = source.geometry;\n\n\t\treturn this;\n\n\t}\n\n\tcomputeLineDistances() {\n\n\t\tconst geometry = this.geometry;\n\n\t\t// we assume non-indexed geometry\n\n\t\tif ( geometry.index === null ) {\n\n\t\t\tconst positionAttribute = geometry.attributes.position;\n\t\t\tconst lineDistances = [ 0 ];\n\n\t\t\tfor ( let i = 1, l = positionAttribute.count; i < l; i ++ ) {\n\n\t\t\t\t_start$1.fromBufferAttribute( positionAttribute, i - 1 );\n\t\t\t\t_end$1.fromBufferAttribute( positionAttribute, i );\n\n\t\t\t\tlineDistances[ i ] = lineDistances[ i - 1 ];\n\t\t\t\tlineDistances[ i ] += _start$1.distanceTo( _end$1 );\n\n\t\t\t}\n\n\t\t\tgeometry.setAttribute( 'lineDistance', new Float32BufferAttribute( lineDistances, 1 ) );\n\n\t\t} else {\n\n\t\t\tconsole.warn( 'THREE.Line.computeLineDistances(): Computation only possible with non-indexed BufferGeometry.' );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\traycast( raycaster, intersects ) {\n\n\t\tconst geometry = this.geometry;\n\t\tconst matrixWorld = this.matrixWorld;\n\t\tconst threshold = raycaster.params.Line.threshold;\n\t\tconst drawRange = geometry.drawRange;\n\n\t\t// Checking boundingSphere distance to ray\n\n\t\tif ( geometry.boundingSphere === null ) geometry.computeBoundingSphere();\n\n\t\t_sphere$1.copy( geometry.boundingSphere );\n\t\t_sphere$1.applyMatrix4( matrixWorld );\n\t\t_sphere$1.radius += threshold;\n\n\t\tif ( raycaster.ray.intersectsSphere( _sphere$1 ) === false ) return;\n\n\t\t//\n\n\t\t_inverseMatrix$1.copy( matrixWorld ).invert();\n\t\t_ray$1.copy( raycaster.ray ).applyMatrix4( _inverseMatrix$1 );\n\n\t\tconst localThreshold = threshold / ( ( this.scale.x + this.scale.y + this.scale.z ) / 3 );\n\t\tconst localThresholdSq = localThreshold * localThreshold;\n\n\t\tconst vStart = new Vector3();\n\t\tconst vEnd = new Vector3();\n\t\tconst interSegment = new Vector3();\n\t\tconst interRay = new Vector3();\n\t\tconst step = this.isLineSegments ? 2 : 1;\n\n\t\tconst index = geometry.index;\n\t\tconst attributes = geometry.attributes;\n\t\tconst positionAttribute = attributes.position;\n\n\t\tif ( index !== null ) {\n\n\t\t\tconst start = Math.max( 0, drawRange.start );\n\t\t\tconst end = Math.min( index.count, ( drawRange.start + drawRange.count ) );\n\n\t\t\tfor ( let i = start, l = end - 1; i < l; i += step ) {\n\n\t\t\t\tconst a = index.getX( i );\n\t\t\t\tconst b = index.getX( i + 1 );\n\n\t\t\t\tvStart.fromBufferAttribute( positionAttribute, a );\n\t\t\t\tvEnd.fromBufferAttribute( positionAttribute, b );\n\n\t\t\t\tconst distSq = _ray$1.distanceSqToSegment( vStart, vEnd, interRay, interSegment );\n\n\t\t\t\tif ( distSq > localThresholdSq ) continue;\n\n\t\t\t\tinterRay.applyMatrix4( this.matrixWorld ); //Move back to world space for distance calculation\n\n\t\t\t\tconst distance = raycaster.ray.origin.distanceTo( interRay );\n\n\t\t\t\tif ( distance < raycaster.near || distance > raycaster.far ) continue;\n\n\t\t\t\tintersects.push( {\n\n\t\t\t\t\tdistance: distance,\n\t\t\t\t\t// What do we want? intersection point on the ray or on the segment??\n\t\t\t\t\t// point: raycaster.ray.at( distance ),\n\t\t\t\t\tpoint: interSegment.clone().applyMatrix4( this.matrixWorld ),\n\t\t\t\t\tindex: i,\n\t\t\t\t\tface: null,\n\t\t\t\t\tfaceIndex: null,\n\t\t\t\t\tobject: this\n\n\t\t\t\t} );\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tconst start = Math.max( 0, drawRange.start );\n\t\t\tconst end = Math.min( positionAttribute.count, ( drawRange.start + drawRange.count ) );\n\n\t\t\tfor ( let i = start, l = end - 1; i < l; i += step ) {\n\n\t\t\t\tvStart.fromBufferAttribute( positionAttribute, i );\n\t\t\t\tvEnd.fromBufferAttribute( positionAttribute, i + 1 );\n\n\t\t\t\tconst distSq = _ray$1.distanceSqToSegment( vStart, vEnd, interRay, interSegment );\n\n\t\t\t\tif ( distSq > localThresholdSq ) continue;\n\n\t\t\t\tinterRay.applyMatrix4( this.matrixWorld ); //Move back to world space for distance calculation\n\n\t\t\t\tconst distance = raycaster.ray.origin.distanceTo( interRay );\n\n\t\t\t\tif ( distance < raycaster.near || distance > raycaster.far ) continue;\n\n\t\t\t\tintersects.push( {\n\n\t\t\t\t\tdistance: distance,\n\t\t\t\t\t// What do we want? intersection point on the ray or on the segment??\n\t\t\t\t\t// point: raycaster.ray.at( distance ),\n\t\t\t\t\tpoint: interSegment.clone().applyMatrix4( this.matrixWorld ),\n\t\t\t\t\tindex: i,\n\t\t\t\t\tface: null,\n\t\t\t\t\tfaceIndex: null,\n\t\t\t\t\tobject: this\n\n\t\t\t\t} );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tupdateMorphTargets() {\n\n\t\tconst geometry = this.geometry;\n\n\t\tconst morphAttributes = geometry.morphAttributes;\n\t\tconst keys = Object.keys( morphAttributes );\n\n\t\tif ( keys.length > 0 ) {\n\n\t\t\tconst morphAttribute = morphAttributes[ keys[ 0 ] ];\n\n\t\t\tif ( morphAttribute !== undefined ) {\n\n\t\t\t\tthis.morphTargetInfluences = [];\n\t\t\t\tthis.morphTargetDictionary = {};\n\n\t\t\t\tfor ( let m = 0, ml = morphAttribute.length; m < ml; m ++ ) {\n\n\t\t\t\t\tconst name = morphAttribute[ m ].name || String( m );\n\n\t\t\t\t\tthis.morphTargetInfluences.push( 0 );\n\t\t\t\t\tthis.morphTargetDictionary[ name ] = m;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n}\n\nconst _start = /*@__PURE__*/ new Vector3();\nconst _end = /*@__PURE__*/ new Vector3();\n\nclass LineSegments extends Line {\n\n\tconstructor( geometry, material ) {\n\n\t\tsuper( geometry, material );\n\n\t\tthis.isLineSegments = true;\n\n\t\tthis.type = 'LineSegments';\n\n\t}\n\n\tcomputeLineDistances() {\n\n\t\tconst geometry = this.geometry;\n\n\t\t// we assume non-indexed geometry\n\n\t\tif ( geometry.index === null ) {\n\n\t\t\tconst positionAttribute = geometry.attributes.position;\n\t\t\tconst lineDistances = [];\n\n\t\t\tfor ( let i = 0, l = positionAttribute.count; i < l; i += 2 ) {\n\n\t\t\t\t_start.fromBufferAttribute( positionAttribute, i );\n\t\t\t\t_end.fromBufferAttribute( positionAttribute, i + 1 );\n\n\t\t\t\tlineDistances[ i ] = ( i === 0 ) ? 0 : lineDistances[ i - 1 ];\n\t\t\t\tlineDistances[ i + 1 ] = lineDistances[ i ] + _start.distanceTo( _end );\n\n\t\t\t}\n\n\t\t\tgeometry.setAttribute( 'lineDistance', new Float32BufferAttribute( lineDistances, 1 ) );\n\n\t\t} else {\n\n\t\t\tconsole.warn( 'THREE.LineSegments.computeLineDistances(): Computation only possible with non-indexed BufferGeometry.' );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n}\n\nclass LineLoop extends Line {\n\n\tconstructor( geometry, material ) {\n\n\t\tsuper( geometry, material );\n\n\t\tthis.isLineLoop = true;\n\n\t\tthis.type = 'LineLoop';\n\n\t}\n\n}\n\nclass PointsMaterial extends Material {\n\n\tconstructor( parameters ) {\n\n\t\tsuper();\n\n\t\tthis.isPointsMaterial = true;\n\n\t\tthis.type = 'PointsMaterial';\n\n\t\tthis.color = new Color( 0xffffff );\n\n\t\tthis.map = null;\n\n\t\tthis.alphaMap = null;\n\n\t\tthis.size = 1;\n\t\tthis.sizeAttenuation = true;\n\n\t\tthis.fog = true;\n\n\t\tthis.setValues( parameters );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.color.copy( source.color );\n\n\t\tthis.map = source.map;\n\n\t\tthis.alphaMap = source.alphaMap;\n\n\t\tthis.size = source.size;\n\t\tthis.sizeAttenuation = source.sizeAttenuation;\n\n\t\tthis.fog = source.fog;\n\n\t\treturn this;\n\n\t}\n\n}\n\nconst _inverseMatrix = /*@__PURE__*/ new Matrix4();\nconst _ray = /*@__PURE__*/ new Ray();\nconst _sphere = /*@__PURE__*/ new Sphere();\nconst _position$2 = /*@__PURE__*/ new Vector3();\n\nclass Points extends Object3D {\n\n\tconstructor( geometry = new BufferGeometry(), material = new PointsMaterial() ) {\n\n\t\tsuper();\n\n\t\tthis.isPoints = true;\n\n\t\tthis.type = 'Points';\n\n\t\tthis.geometry = geometry;\n\t\tthis.material = material;\n\n\t\tthis.updateMorphTargets();\n\n\t}\n\n\tcopy( source, recursive ) {\n\n\t\tsuper.copy( source, recursive );\n\n\t\tthis.material = source.material;\n\t\tthis.geometry = source.geometry;\n\n\t\treturn this;\n\n\t}\n\n\traycast( raycaster, intersects ) {\n\n\t\tconst geometry = this.geometry;\n\t\tconst matrixWorld = this.matrixWorld;\n\t\tconst threshold = raycaster.params.Points.threshold;\n\t\tconst drawRange = geometry.drawRange;\n\n\t\t// Checking boundingSphere distance to ray\n\n\t\tif ( geometry.boundingSphere === null ) geometry.computeBoundingSphere();\n\n\t\t_sphere.copy( geometry.boundingSphere );\n\t\t_sphere.applyMatrix4( matrixWorld );\n\t\t_sphere.radius += threshold;\n\n\t\tif ( raycaster.ray.intersectsSphere( _sphere ) === false ) return;\n\n\t\t//\n\n\t\t_inverseMatrix.copy( matrixWorld ).invert();\n\t\t_ray.copy( raycaster.ray ).applyMatrix4( _inverseMatrix );\n\n\t\tconst localThreshold = threshold / ( ( this.scale.x + this.scale.y + this.scale.z ) / 3 );\n\t\tconst localThresholdSq = localThreshold * localThreshold;\n\n\t\tconst index = geometry.index;\n\t\tconst attributes = geometry.attributes;\n\t\tconst positionAttribute = attributes.position;\n\n\t\tif ( index !== null ) {\n\n\t\t\tconst start = Math.max( 0, drawRange.start );\n\t\t\tconst end = Math.min( index.count, ( drawRange.start + drawRange.count ) );\n\n\t\t\tfor ( let i = start, il = end; i < il; i ++ ) {\n\n\t\t\t\tconst a = index.getX( i );\n\n\t\t\t\t_position$2.fromBufferAttribute( positionAttribute, a );\n\n\t\t\t\ttestPoint( _position$2, a, localThresholdSq, matrixWorld, raycaster, intersects, this );\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tconst start = Math.max( 0, drawRange.start );\n\t\t\tconst end = Math.min( positionAttribute.count, ( drawRange.start + drawRange.count ) );\n\n\t\t\tfor ( let i = start, l = end; i < l; i ++ ) {\n\n\t\t\t\t_position$2.fromBufferAttribute( positionAttribute, i );\n\n\t\t\t\ttestPoint( _position$2, i, localThresholdSq, matrixWorld, raycaster, intersects, this );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tupdateMorphTargets() {\n\n\t\tconst geometry = this.geometry;\n\n\t\tconst morphAttributes = geometry.morphAttributes;\n\t\tconst keys = Object.keys( morphAttributes );\n\n\t\tif ( keys.length > 0 ) {\n\n\t\t\tconst morphAttribute = morphAttributes[ keys[ 0 ] ];\n\n\t\t\tif ( morphAttribute !== undefined ) {\n\n\t\t\t\tthis.morphTargetInfluences = [];\n\t\t\t\tthis.morphTargetDictionary = {};\n\n\t\t\t\tfor ( let m = 0, ml = morphAttribute.length; m < ml; m ++ ) {\n\n\t\t\t\t\tconst name = morphAttribute[ m ].name || String( m );\n\n\t\t\t\t\tthis.morphTargetInfluences.push( 0 );\n\t\t\t\t\tthis.morphTargetDictionary[ name ] = m;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n}\n\nfunction testPoint( point, index, localThresholdSq, matrixWorld, raycaster, intersects, object ) {\n\n\tconst rayPointDistanceSq = _ray.distanceSqToPoint( point );\n\n\tif ( rayPointDistanceSq < localThresholdSq ) {\n\n\t\tconst intersectPoint = new Vector3();\n\n\t\t_ray.closestPointToPoint( point, intersectPoint );\n\t\tintersectPoint.applyMatrix4( matrixWorld );\n\n\t\tconst distance = raycaster.ray.origin.distanceTo( intersectPoint );\n\n\t\tif ( distance < raycaster.near || distance > raycaster.far ) return;\n\n\t\tintersects.push( {\n\n\t\t\tdistance: distance,\n\t\t\tdistanceToRay: Math.sqrt( rayPointDistanceSq ),\n\t\t\tpoint: intersectPoint,\n\t\t\tindex: index,\n\t\t\tface: null,\n\t\t\tobject: object\n\n\t\t} );\n\n\t}\n\n}\n\nclass VideoTexture extends Texture {\n\n\tconstructor( video, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy ) {\n\n\t\tsuper( video, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy );\n\n\t\tthis.isVideoTexture = true;\n\n\t\tthis.minFilter = minFilter !== undefined ? minFilter : LinearFilter;\n\t\tthis.magFilter = magFilter !== undefined ? magFilter : LinearFilter;\n\n\t\tthis.generateMipmaps = false;\n\n\t\tconst scope = this;\n\n\t\tfunction updateVideo() {\n\n\t\t\tscope.needsUpdate = true;\n\t\t\tvideo.requestVideoFrameCallback( updateVideo );\n\n\t\t}\n\n\t\tif ( 'requestVideoFrameCallback' in video ) {\n\n\t\t\tvideo.requestVideoFrameCallback( updateVideo );\n\n\t\t}\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor( this.image ).copy( this );\n\n\t}\n\n\tupdate() {\n\n\t\tconst video = this.image;\n\t\tconst hasVideoFrameCallback = 'requestVideoFrameCallback' in video;\n\n\t\tif ( hasVideoFrameCallback === false && video.readyState >= video.HAVE_CURRENT_DATA ) {\n\n\t\t\tthis.needsUpdate = true;\n\n\t\t}\n\n\t}\n\n}\n\nclass FramebufferTexture extends Texture {\n\n\tconstructor( width, height, format ) {\n\n\t\tsuper( { width, height } );\n\n\t\tthis.isFramebufferTexture = true;\n\n\t\tthis.format = format;\n\n\t\tthis.magFilter = NearestFilter;\n\t\tthis.minFilter = NearestFilter;\n\n\t\tthis.generateMipmaps = false;\n\n\t\tthis.needsUpdate = true;\n\n\t}\n\n}\n\nclass CompressedTexture extends Texture {\n\n\tconstructor( mipmaps, width, height, format, type, mapping, wrapS, wrapT, magFilter, minFilter, anisotropy, encoding ) {\n\n\t\tsuper( null, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy, encoding );\n\n\t\tthis.isCompressedTexture = true;\n\n\t\tthis.image = { width: width, height: height };\n\t\tthis.mipmaps = mipmaps;\n\n\t\t// no flipping for cube textures\n\t\t// (also flipping doesn't work for compressed textures )\n\n\t\tthis.flipY = false;\n\n\t\t// can't generate mipmaps for compressed textures\n\t\t// mips must be embedded in DDS files\n\n\t\tthis.generateMipmaps = false;\n\n\t}\n\n}\n\nclass CanvasTexture extends Texture {\n\n\tconstructor( canvas, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy ) {\n\n\t\tsuper( canvas, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy );\n\n\t\tthis.isCanvasTexture = true;\n\n\t\tthis.needsUpdate = true;\n\n\t}\n\n}\n\n/**\n * Extensible curve object.\n *\n * Some common of curve methods:\n * .getPoint( t, optionalTarget ), .getTangent( t, optionalTarget )\n * .getPointAt( u, optionalTarget ), .getTangentAt( u, optionalTarget )\n * .getPoints(), .getSpacedPoints()\n * .getLength()\n * .updateArcLengths()\n *\n * This following curves inherit from THREE.Curve:\n *\n * -- 2D curves --\n * THREE.ArcCurve\n * THREE.CubicBezierCurve\n * THREE.EllipseCurve\n * THREE.LineCurve\n * THREE.QuadraticBezierCurve\n * THREE.SplineCurve\n *\n * -- 3D curves --\n * THREE.CatmullRomCurve3\n * THREE.CubicBezierCurve3\n * THREE.LineCurve3\n * THREE.QuadraticBezierCurve3\n *\n * A series of curves can be represented as a THREE.CurvePath.\n *\n **/\n\nclass Curve {\n\n\tconstructor() {\n\n\t\tthis.type = 'Curve';\n\n\t\tthis.arcLengthDivisions = 200;\n\n\t}\n\n\t// Virtual base class method to overwrite and implement in subclasses\n\t//\t- t [0 .. 1]\n\n\tgetPoint( /* t, optionalTarget */ ) {\n\n\t\tconsole.warn( 'THREE.Curve: .getPoint() not implemented.' );\n\t\treturn null;\n\n\t}\n\n\t// Get point at relative position in curve according to arc length\n\t// - u [0 .. 1]\n\n\tgetPointAt( u, optionalTarget ) {\n\n\t\tconst t = this.getUtoTmapping( u );\n\t\treturn this.getPoint( t, optionalTarget );\n\n\t}\n\n\t// Get sequence of points using getPoint( t )\n\n\tgetPoints( divisions = 5 ) {\n\n\t\tconst points = [];\n\n\t\tfor ( let d = 0; d <= divisions; d ++ ) {\n\n\t\t\tpoints.push( this.getPoint( d / divisions ) );\n\n\t\t}\n\n\t\treturn points;\n\n\t}\n\n\t// Get sequence of points using getPointAt( u )\n\n\tgetSpacedPoints( divisions = 5 ) {\n\n\t\tconst points = [];\n\n\t\tfor ( let d = 0; d <= divisions; d ++ ) {\n\n\t\t\tpoints.push( this.getPointAt( d / divisions ) );\n\n\t\t}\n\n\t\treturn points;\n\n\t}\n\n\t// Get total curve arc length\n\n\tgetLength() {\n\n\t\tconst lengths = this.getLengths();\n\t\treturn lengths[ lengths.length - 1 ];\n\n\t}\n\n\t// Get list of cumulative segment lengths\n\n\tgetLengths( divisions = this.arcLengthDivisions ) {\n\n\t\tif ( this.cacheArcLengths &&\n\t\t\t( this.cacheArcLengths.length === divisions + 1 ) &&\n\t\t\t! this.needsUpdate ) {\n\n\t\t\treturn this.cacheArcLengths;\n\n\t\t}\n\n\t\tthis.needsUpdate = false;\n\n\t\tconst cache = [];\n\t\tlet current, last = this.getPoint( 0 );\n\t\tlet sum = 0;\n\n\t\tcache.push( 0 );\n\n\t\tfor ( let p = 1; p <= divisions; p ++ ) {\n\n\t\t\tcurrent = this.getPoint( p / divisions );\n\t\t\tsum += current.distanceTo( last );\n\t\t\tcache.push( sum );\n\t\t\tlast = current;\n\n\t\t}\n\n\t\tthis.cacheArcLengths = cache;\n\n\t\treturn cache; // { sums: cache, sum: sum }; Sum is in the last element.\n\n\t}\n\n\tupdateArcLengths() {\n\n\t\tthis.needsUpdate = true;\n\t\tthis.getLengths();\n\n\t}\n\n\t// Given u ( 0 .. 1 ), get a t to find p. This gives you points which are equidistant\n\n\tgetUtoTmapping( u, distance ) {\n\n\t\tconst arcLengths = this.getLengths();\n\n\t\tlet i = 0;\n\t\tconst il = arcLengths.length;\n\n\t\tlet targetArcLength; // The targeted u distance value to get\n\n\t\tif ( distance ) {\n\n\t\t\ttargetArcLength = distance;\n\n\t\t} else {\n\n\t\t\ttargetArcLength = u * arcLengths[ il - 1 ];\n\n\t\t}\n\n\t\t// binary search for the index with largest value smaller than target u distance\n\n\t\tlet low = 0, high = il - 1, comparison;\n\n\t\twhile ( low <= high ) {\n\n\t\t\ti = Math.floor( low + ( high - low ) / 2 ); // less likely to overflow, though probably not issue here, JS doesn't really have integers, all numbers are floats\n\n\t\t\tcomparison = arcLengths[ i ] - targetArcLength;\n\n\t\t\tif ( comparison < 0 ) {\n\n\t\t\t\tlow = i + 1;\n\n\t\t\t} else if ( comparison > 0 ) {\n\n\t\t\t\thigh = i - 1;\n\n\t\t\t} else {\n\n\t\t\t\thigh = i;\n\t\t\t\tbreak;\n\n\t\t\t\t// DONE\n\n\t\t\t}\n\n\t\t}\n\n\t\ti = high;\n\n\t\tif ( arcLengths[ i ] === targetArcLength ) {\n\n\t\t\treturn i / ( il - 1 );\n\n\t\t}\n\n\t\t// we could get finer grain at lengths, or use simple interpolation between two points\n\n\t\tconst lengthBefore = arcLengths[ i ];\n\t\tconst lengthAfter = arcLengths[ i + 1 ];\n\n\t\tconst segmentLength = lengthAfter - lengthBefore;\n\n\t\t// determine where we are between the 'before' and 'after' points\n\n\t\tconst segmentFraction = ( targetArcLength - lengthBefore ) / segmentLength;\n\n\t\t// add that fractional amount to t\n\n\t\tconst t = ( i + segmentFraction ) / ( il - 1 );\n\n\t\treturn t;\n\n\t}\n\n\t// Returns a unit vector tangent at t\n\t// In case any sub curve does not implement its tangent derivation,\n\t// 2 points a small delta apart will be used to find its gradient\n\t// which seems to give a reasonable approximation\n\n\tgetTangent( t, optionalTarget ) {\n\n\t\tconst delta = 0.0001;\n\t\tlet t1 = t - delta;\n\t\tlet t2 = t + delta;\n\n\t\t// Capping in case of danger\n\n\t\tif ( t1 < 0 ) t1 = 0;\n\t\tif ( t2 > 1 ) t2 = 1;\n\n\t\tconst pt1 = this.getPoint( t1 );\n\t\tconst pt2 = this.getPoint( t2 );\n\n\t\tconst tangent = optionalTarget || ( ( pt1.isVector2 ) ? new Vector2() : new Vector3() );\n\n\t\ttangent.copy( pt2 ).sub( pt1 ).normalize();\n\n\t\treturn tangent;\n\n\t}\n\n\tgetTangentAt( u, optionalTarget ) {\n\n\t\tconst t = this.getUtoTmapping( u );\n\t\treturn this.getTangent( t, optionalTarget );\n\n\t}\n\n\tcomputeFrenetFrames( segments, closed ) {\n\n\t\t// see http://www.cs.indiana.edu/pub/techreports/TR425.pdf\n\n\t\tconst normal = new Vector3();\n\n\t\tconst tangents = [];\n\t\tconst normals = [];\n\t\tconst binormals = [];\n\n\t\tconst vec = new Vector3();\n\t\tconst mat = new Matrix4();\n\n\t\t// compute the tangent vectors for each segment on the curve\n\n\t\tfor ( let i = 0; i <= segments; i ++ ) {\n\n\t\t\tconst u = i / segments;\n\n\t\t\ttangents[ i ] = this.getTangentAt( u, new Vector3() );\n\n\t\t}\n\n\t\t// select an initial normal vector perpendicular to the first tangent vector,\n\t\t// and in the direction of the minimum tangent xyz component\n\n\t\tnormals[ 0 ] = new Vector3();\n\t\tbinormals[ 0 ] = new Vector3();\n\t\tlet min = Number.MAX_VALUE;\n\t\tconst tx = Math.abs( tangents[ 0 ].x );\n\t\tconst ty = Math.abs( tangents[ 0 ].y );\n\t\tconst tz = Math.abs( tangents[ 0 ].z );\n\n\t\tif ( tx <= min ) {\n\n\t\t\tmin = tx;\n\t\t\tnormal.set( 1, 0, 0 );\n\n\t\t}\n\n\t\tif ( ty <= min ) {\n\n\t\t\tmin = ty;\n\t\t\tnormal.set( 0, 1, 0 );\n\n\t\t}\n\n\t\tif ( tz <= min ) {\n\n\t\t\tnormal.set( 0, 0, 1 );\n\n\t\t}\n\n\t\tvec.crossVectors( tangents[ 0 ], normal ).normalize();\n\n\t\tnormals[ 0 ].crossVectors( tangents[ 0 ], vec );\n\t\tbinormals[ 0 ].crossVectors( tangents[ 0 ], normals[ 0 ] );\n\n\n\t\t// compute the slowly-varying normal and binormal vectors for each segment on the curve\n\n\t\tfor ( let i = 1; i <= segments; i ++ ) {\n\n\t\t\tnormals[ i ] = normals[ i - 1 ].clone();\n\n\t\t\tbinormals[ i ] = binormals[ i - 1 ].clone();\n\n\t\t\tvec.crossVectors( tangents[ i - 1 ], tangents[ i ] );\n\n\t\t\tif ( vec.length() > Number.EPSILON ) {\n\n\t\t\t\tvec.normalize();\n\n\t\t\t\tconst theta = Math.acos( clamp( tangents[ i - 1 ].dot( tangents[ i ] ), - 1, 1 ) ); // clamp for floating pt errors\n\n\t\t\t\tnormals[ i ].applyMatrix4( mat.makeRotationAxis( vec, theta ) );\n\n\t\t\t}\n\n\t\t\tbinormals[ i ].crossVectors( tangents[ i ], normals[ i ] );\n\n\t\t}\n\n\t\t// if the curve is closed, postprocess the vectors so the first and last normal vectors are the same\n\n\t\tif ( closed === true ) {\n\n\t\t\tlet theta = Math.acos( clamp( normals[ 0 ].dot( normals[ segments ] ), - 1, 1 ) );\n\t\t\ttheta /= segments;\n\n\t\t\tif ( tangents[ 0 ].dot( vec.crossVectors( normals[ 0 ], normals[ segments ] ) ) > 0 ) {\n\n\t\t\t\ttheta = - theta;\n\n\t\t\t}\n\n\t\t\tfor ( let i = 1; i <= segments; i ++ ) {\n\n\t\t\t\t// twist a little...\n\t\t\t\tnormals[ i ].applyMatrix4( mat.makeRotationAxis( tangents[ i ], theta * i ) );\n\t\t\t\tbinormals[ i ].crossVectors( tangents[ i ], normals[ i ] );\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn {\n\t\t\ttangents: tangents,\n\t\t\tnormals: normals,\n\t\t\tbinormals: binormals\n\t\t};\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tthis.arcLengthDivisions = source.arcLengthDivisions;\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON() {\n\n\t\tconst data = {\n\t\t\tmetadata: {\n\t\t\t\tversion: 4.5,\n\t\t\t\ttype: 'Curve',\n\t\t\t\tgenerator: 'Curve.toJSON'\n\t\t\t}\n\t\t};\n\n\t\tdata.arcLengthDivisions = this.arcLengthDivisions;\n\t\tdata.type = this.type;\n\n\t\treturn data;\n\n\t}\n\n\tfromJSON( json ) {\n\n\t\tthis.arcLengthDivisions = json.arcLengthDivisions;\n\n\t\treturn this;\n\n\t}\n\n}\n\nclass EllipseCurve extends Curve {\n\n\tconstructor( aX = 0, aY = 0, xRadius = 1, yRadius = 1, aStartAngle = 0, aEndAngle = Math.PI * 2, aClockwise = false, aRotation = 0 ) {\n\n\t\tsuper();\n\n\t\tthis.isEllipseCurve = true;\n\n\t\tthis.type = 'EllipseCurve';\n\n\t\tthis.aX = aX;\n\t\tthis.aY = aY;\n\n\t\tthis.xRadius = xRadius;\n\t\tthis.yRadius = yRadius;\n\n\t\tthis.aStartAngle = aStartAngle;\n\t\tthis.aEndAngle = aEndAngle;\n\n\t\tthis.aClockwise = aClockwise;\n\n\t\tthis.aRotation = aRotation;\n\n\t}\n\n\tgetPoint( t, optionalTarget ) {\n\n\t\tconst point = optionalTarget || new Vector2();\n\n\t\tconst twoPi = Math.PI * 2;\n\t\tlet deltaAngle = this.aEndAngle - this.aStartAngle;\n\t\tconst samePoints = Math.abs( deltaAngle ) < Number.EPSILON;\n\n\t\t// ensures that deltaAngle is 0 .. 2 PI\n\t\twhile ( deltaAngle < 0 ) deltaAngle += twoPi;\n\t\twhile ( deltaAngle > twoPi ) deltaAngle -= twoPi;\n\n\t\tif ( deltaAngle < Number.EPSILON ) {\n\n\t\t\tif ( samePoints ) {\n\n\t\t\t\tdeltaAngle = 0;\n\n\t\t\t} else {\n\n\t\t\t\tdeltaAngle = twoPi;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( this.aClockwise === true && ! samePoints ) {\n\n\t\t\tif ( deltaAngle === twoPi ) {\n\n\t\t\t\tdeltaAngle = - twoPi;\n\n\t\t\t} else {\n\n\t\t\t\tdeltaAngle = deltaAngle - twoPi;\n\n\t\t\t}\n\n\t\t}\n\n\t\tconst angle = this.aStartAngle + t * deltaAngle;\n\t\tlet x = this.aX + this.xRadius * Math.cos( angle );\n\t\tlet y = this.aY + this.yRadius * Math.sin( angle );\n\n\t\tif ( this.aRotation !== 0 ) {\n\n\t\t\tconst cos = Math.cos( this.aRotation );\n\t\t\tconst sin = Math.sin( this.aRotation );\n\n\t\t\tconst tx = x - this.aX;\n\t\t\tconst ty = y - this.aY;\n\n\t\t\t// Rotate the point about the center of the ellipse.\n\t\t\tx = tx * cos - ty * sin + this.aX;\n\t\t\ty = tx * sin + ty * cos + this.aY;\n\n\t\t}\n\n\t\treturn point.set( x, y );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.aX = source.aX;\n\t\tthis.aY = source.aY;\n\n\t\tthis.xRadius = source.xRadius;\n\t\tthis.yRadius = source.yRadius;\n\n\t\tthis.aStartAngle = source.aStartAngle;\n\t\tthis.aEndAngle = source.aEndAngle;\n\n\t\tthis.aClockwise = source.aClockwise;\n\n\t\tthis.aRotation = source.aRotation;\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON() {\n\n\t\tconst data = super.toJSON();\n\n\t\tdata.aX = this.aX;\n\t\tdata.aY = this.aY;\n\n\t\tdata.xRadius = this.xRadius;\n\t\tdata.yRadius = this.yRadius;\n\n\t\tdata.aStartAngle = this.aStartAngle;\n\t\tdata.aEndAngle = this.aEndAngle;\n\n\t\tdata.aClockwise = this.aClockwise;\n\n\t\tdata.aRotation = this.aRotation;\n\n\t\treturn data;\n\n\t}\n\n\tfromJSON( json ) {\n\n\t\tsuper.fromJSON( json );\n\n\t\tthis.aX = json.aX;\n\t\tthis.aY = json.aY;\n\n\t\tthis.xRadius = json.xRadius;\n\t\tthis.yRadius = json.yRadius;\n\n\t\tthis.aStartAngle = json.aStartAngle;\n\t\tthis.aEndAngle = json.aEndAngle;\n\n\t\tthis.aClockwise = json.aClockwise;\n\n\t\tthis.aRotation = json.aRotation;\n\n\t\treturn this;\n\n\t}\n\n}\n\nclass ArcCurve extends EllipseCurve {\n\n\tconstructor( aX, aY, aRadius, aStartAngle, aEndAngle, aClockwise ) {\n\n\t\tsuper( aX, aY, aRadius, aRadius, aStartAngle, aEndAngle, aClockwise );\n\n\t\tthis.isArcCurve = true;\n\n\t\tthis.type = 'ArcCurve';\n\n\t}\n\n}\n\n/**\n * Centripetal CatmullRom Curve - which is useful for avoiding\n * cusps and self-intersections in non-uniform catmull rom curves.\n * http://www.cemyuksel.com/research/catmullrom_param/catmullrom.pdf\n *\n * curve.type accepts centripetal(default), chordal and catmullrom\n * curve.tension is used for catmullrom which defaults to 0.5\n */\n\n\n/*\nBased on an optimized c++ solution in\n - http://stackoverflow.com/questions/9489736/catmull-rom-curve-with-no-cusps-and-no-self-intersections/\n - http://ideone.com/NoEbVM\n\nThis CubicPoly class could be used for reusing some variables and calculations,\nbut for three.js curve use, it could be possible inlined and flatten into a single function call\nwhich can be placed in CurveUtils.\n*/\n\nfunction CubicPoly() {\n\n\tlet c0 = 0, c1 = 0, c2 = 0, c3 = 0;\n\n\t/*\n\t * Compute coefficients for a cubic polynomial\n\t * p(s) = c0 + c1*s + c2*s^2 + c3*s^3\n\t * such that\n\t * p(0) = x0, p(1) = x1\n\t * and\n\t * p'(0) = t0, p'(1) = t1.\n\t */\n\tfunction init( x0, x1, t0, t1 ) {\n\n\t\tc0 = x0;\n\t\tc1 = t0;\n\t\tc2 = - 3 * x0 + 3 * x1 - 2 * t0 - t1;\n\t\tc3 = 2 * x0 - 2 * x1 + t0 + t1;\n\n\t}\n\n\treturn {\n\n\t\tinitCatmullRom: function ( x0, x1, x2, x3, tension ) {\n\n\t\t\tinit( x1, x2, tension * ( x2 - x0 ), tension * ( x3 - x1 ) );\n\n\t\t},\n\n\t\tinitNonuniformCatmullRom: function ( x0, x1, x2, x3, dt0, dt1, dt2 ) {\n\n\t\t\t// compute tangents when parameterized in [t1,t2]\n\t\t\tlet t1 = ( x1 - x0 ) / dt0 - ( x2 - x0 ) / ( dt0 + dt1 ) + ( x2 - x1 ) / dt1;\n\t\t\tlet t2 = ( x2 - x1 ) / dt1 - ( x3 - x1 ) / ( dt1 + dt2 ) + ( x3 - x2 ) / dt2;\n\n\t\t\t// rescale tangents for parametrization in [0,1]\n\t\t\tt1 *= dt1;\n\t\t\tt2 *= dt1;\n\n\t\t\tinit( x1, x2, t1, t2 );\n\n\t\t},\n\n\t\tcalc: function ( t ) {\n\n\t\t\tconst t2 = t * t;\n\t\t\tconst t3 = t2 * t;\n\t\t\treturn c0 + c1 * t + c2 * t2 + c3 * t3;\n\n\t\t}\n\n\t};\n\n}\n\n//\n\nconst tmp = new Vector3();\nconst px = new CubicPoly(), py = new CubicPoly(), pz = new CubicPoly();\n\nclass CatmullRomCurve3 extends Curve {\n\n\tconstructor( points = [], closed = false, curveType = 'centripetal', tension = 0.5 ) {\n\n\t\tsuper();\n\n\t\tthis.isCatmullRomCurve3 = true;\n\n\t\tthis.type = 'CatmullRomCurve3';\n\n\t\tthis.points = points;\n\t\tthis.closed = closed;\n\t\tthis.curveType = curveType;\n\t\tthis.tension = tension;\n\n\t}\n\n\tgetPoint( t, optionalTarget = new Vector3() ) {\n\n\t\tconst point = optionalTarget;\n\n\t\tconst points = this.points;\n\t\tconst l = points.length;\n\n\t\tconst p = ( l - ( this.closed ? 0 : 1 ) ) * t;\n\t\tlet intPoint = Math.floor( p );\n\t\tlet weight = p - intPoint;\n\n\t\tif ( this.closed ) {\n\n\t\t\tintPoint += intPoint > 0 ? 0 : ( Math.floor( Math.abs( intPoint ) / l ) + 1 ) * l;\n\n\t\t} else if ( weight === 0 && intPoint === l - 1 ) {\n\n\t\t\tintPoint = l - 2;\n\t\t\tweight = 1;\n\n\t\t}\n\n\t\tlet p0, p3; // 4 points (p1 & p2 defined below)\n\n\t\tif ( this.closed || intPoint > 0 ) {\n\n\t\t\tp0 = points[ ( intPoint - 1 ) % l ];\n\n\t\t} else {\n\n\t\t\t// extrapolate first point\n\t\t\ttmp.subVectors( points[ 0 ], points[ 1 ] ).add( points[ 0 ] );\n\t\t\tp0 = tmp;\n\n\t\t}\n\n\t\tconst p1 = points[ intPoint % l ];\n\t\tconst p2 = points[ ( intPoint + 1 ) % l ];\n\n\t\tif ( this.closed || intPoint + 2 < l ) {\n\n\t\t\tp3 = points[ ( intPoint + 2 ) % l ];\n\n\t\t} else {\n\n\t\t\t// extrapolate last point\n\t\t\ttmp.subVectors( points[ l - 1 ], points[ l - 2 ] ).add( points[ l - 1 ] );\n\t\t\tp3 = tmp;\n\n\t\t}\n\n\t\tif ( this.curveType === 'centripetal' || this.curveType === 'chordal' ) {\n\n\t\t\t// init Centripetal / Chordal Catmull-Rom\n\t\t\tconst pow = this.curveType === 'chordal' ? 0.5 : 0.25;\n\t\t\tlet dt0 = Math.pow( p0.distanceToSquared( p1 ), pow );\n\t\t\tlet dt1 = Math.pow( p1.distanceToSquared( p2 ), pow );\n\t\t\tlet dt2 = Math.pow( p2.distanceToSquared( p3 ), pow );\n\n\t\t\t// safety check for repeated points\n\t\t\tif ( dt1 < 1e-4 ) dt1 = 1.0;\n\t\t\tif ( dt0 < 1e-4 ) dt0 = dt1;\n\t\t\tif ( dt2 < 1e-4 ) dt2 = dt1;\n\n\t\t\tpx.initNonuniformCatmullRom( p0.x, p1.x, p2.x, p3.x, dt0, dt1, dt2 );\n\t\t\tpy.initNonuniformCatmullRom( p0.y, p1.y, p2.y, p3.y, dt0, dt1, dt2 );\n\t\t\tpz.initNonuniformCatmullRom( p0.z, p1.z, p2.z, p3.z, dt0, dt1, dt2 );\n\n\t\t} else if ( this.curveType === 'catmullrom' ) {\n\n\t\t\tpx.initCatmullRom( p0.x, p1.x, p2.x, p3.x, this.tension );\n\t\t\tpy.initCatmullRom( p0.y, p1.y, p2.y, p3.y, this.tension );\n\t\t\tpz.initCatmullRom( p0.z, p1.z, p2.z, p3.z, this.tension );\n\n\t\t}\n\n\t\tpoint.set(\n\t\t\tpx.calc( weight ),\n\t\t\tpy.calc( weight ),\n\t\t\tpz.calc( weight )\n\t\t);\n\n\t\treturn point;\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.points = [];\n\n\t\tfor ( let i = 0, l = source.points.length; i < l; i ++ ) {\n\n\t\t\tconst point = source.points[ i ];\n\n\t\t\tthis.points.push( point.clone() );\n\n\t\t}\n\n\t\tthis.closed = source.closed;\n\t\tthis.curveType = source.curveType;\n\t\tthis.tension = source.tension;\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON() {\n\n\t\tconst data = super.toJSON();\n\n\t\tdata.points = [];\n\n\t\tfor ( let i = 0, l = this.points.length; i < l; i ++ ) {\n\n\t\t\tconst point = this.points[ i ];\n\t\t\tdata.points.push( point.toArray() );\n\n\t\t}\n\n\t\tdata.closed = this.closed;\n\t\tdata.curveType = this.curveType;\n\t\tdata.tension = this.tension;\n\n\t\treturn data;\n\n\t}\n\n\tfromJSON( json ) {\n\n\t\tsuper.fromJSON( json );\n\n\t\tthis.points = [];\n\n\t\tfor ( let i = 0, l = json.points.length; i < l; i ++ ) {\n\n\t\t\tconst point = json.points[ i ];\n\t\t\tthis.points.push( new Vector3().fromArray( point ) );\n\n\t\t}\n\n\t\tthis.closed = json.closed;\n\t\tthis.curveType = json.curveType;\n\t\tthis.tension = json.tension;\n\n\t\treturn this;\n\n\t}\n\n}\n\n/**\n * Bezier Curves formulas obtained from\n * https://en.wikipedia.org/wiki/B%C3%A9zier_curve\n */\n\nfunction CatmullRom( t, p0, p1, p2, p3 ) {\n\n\tconst v0 = ( p2 - p0 ) * 0.5;\n\tconst v1 = ( p3 - p1 ) * 0.5;\n\tconst t2 = t * t;\n\tconst t3 = t * t2;\n\treturn ( 2 * p1 - 2 * p2 + v0 + v1 ) * t3 + ( - 3 * p1 + 3 * p2 - 2 * v0 - v1 ) * t2 + v0 * t + p1;\n\n}\n\n//\n\nfunction QuadraticBezierP0( t, p ) {\n\n\tconst k = 1 - t;\n\treturn k * k * p;\n\n}\n\nfunction QuadraticBezierP1( t, p ) {\n\n\treturn 2 * ( 1 - t ) * t * p;\n\n}\n\nfunction QuadraticBezierP2( t, p ) {\n\n\treturn t * t * p;\n\n}\n\nfunction QuadraticBezier( t, p0, p1, p2 ) {\n\n\treturn QuadraticBezierP0( t, p0 ) + QuadraticBezierP1( t, p1 ) +\n\t\tQuadraticBezierP2( t, p2 );\n\n}\n\n//\n\nfunction CubicBezierP0( t, p ) {\n\n\tconst k = 1 - t;\n\treturn k * k * k * p;\n\n}\n\nfunction CubicBezierP1( t, p ) {\n\n\tconst k = 1 - t;\n\treturn 3 * k * k * t * p;\n\n}\n\nfunction CubicBezierP2( t, p ) {\n\n\treturn 3 * ( 1 - t ) * t * t * p;\n\n}\n\nfunction CubicBezierP3( t, p ) {\n\n\treturn t * t * t * p;\n\n}\n\nfunction CubicBezier( t, p0, p1, p2, p3 ) {\n\n\treturn CubicBezierP0( t, p0 ) + CubicBezierP1( t, p1 ) + CubicBezierP2( t, p2 ) +\n\t\tCubicBezierP3( t, p3 );\n\n}\n\nclass CubicBezierCurve extends Curve {\n\n\tconstructor( v0 = new Vector2(), v1 = new Vector2(), v2 = new Vector2(), v3 = new Vector2() ) {\n\n\t\tsuper();\n\n\t\tthis.isCubicBezierCurve = true;\n\n\t\tthis.type = 'CubicBezierCurve';\n\n\t\tthis.v0 = v0;\n\t\tthis.v1 = v1;\n\t\tthis.v2 = v2;\n\t\tthis.v3 = v3;\n\n\t}\n\n\tgetPoint( t, optionalTarget = new Vector2() ) {\n\n\t\tconst point = optionalTarget;\n\n\t\tconst v0 = this.v0, v1 = this.v1, v2 = this.v2, v3 = this.v3;\n\n\t\tpoint.set(\n\t\t\tCubicBezier( t, v0.x, v1.x, v2.x, v3.x ),\n\t\t\tCubicBezier( t, v0.y, v1.y, v2.y, v3.y )\n\t\t);\n\n\t\treturn point;\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.v0.copy( source.v0 );\n\t\tthis.v1.copy( source.v1 );\n\t\tthis.v2.copy( source.v2 );\n\t\tthis.v3.copy( source.v3 );\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON() {\n\n\t\tconst data = super.toJSON();\n\n\t\tdata.v0 = this.v0.toArray();\n\t\tdata.v1 = this.v1.toArray();\n\t\tdata.v2 = this.v2.toArray();\n\t\tdata.v3 = this.v3.toArray();\n\n\t\treturn data;\n\n\t}\n\n\tfromJSON( json ) {\n\n\t\tsuper.fromJSON( json );\n\n\t\tthis.v0.fromArray( json.v0 );\n\t\tthis.v1.fromArray( json.v1 );\n\t\tthis.v2.fromArray( json.v2 );\n\t\tthis.v3.fromArray( json.v3 );\n\n\t\treturn this;\n\n\t}\n\n}\n\nclass CubicBezierCurve3 extends Curve {\n\n\tconstructor( v0 = new Vector3(), v1 = new Vector3(), v2 = new Vector3(), v3 = new Vector3() ) {\n\n\t\tsuper();\n\n\t\tthis.isCubicBezierCurve3 = true;\n\n\t\tthis.type = 'CubicBezierCurve3';\n\n\t\tthis.v0 = v0;\n\t\tthis.v1 = v1;\n\t\tthis.v2 = v2;\n\t\tthis.v3 = v3;\n\n\t}\n\n\tgetPoint( t, optionalTarget = new Vector3() ) {\n\n\t\tconst point = optionalTarget;\n\n\t\tconst v0 = this.v0, v1 = this.v1, v2 = this.v2, v3 = this.v3;\n\n\t\tpoint.set(\n\t\t\tCubicBezier( t, v0.x, v1.x, v2.x, v3.x ),\n\t\t\tCubicBezier( t, v0.y, v1.y, v2.y, v3.y ),\n\t\t\tCubicBezier( t, v0.z, v1.z, v2.z, v3.z )\n\t\t);\n\n\t\treturn point;\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.v0.copy( source.v0 );\n\t\tthis.v1.copy( source.v1 );\n\t\tthis.v2.copy( source.v2 );\n\t\tthis.v3.copy( source.v3 );\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON() {\n\n\t\tconst data = super.toJSON();\n\n\t\tdata.v0 = this.v0.toArray();\n\t\tdata.v1 = this.v1.toArray();\n\t\tdata.v2 = this.v2.toArray();\n\t\tdata.v3 = this.v3.toArray();\n\n\t\treturn data;\n\n\t}\n\n\tfromJSON( json ) {\n\n\t\tsuper.fromJSON( json );\n\n\t\tthis.v0.fromArray( json.v0 );\n\t\tthis.v1.fromArray( json.v1 );\n\t\tthis.v2.fromArray( json.v2 );\n\t\tthis.v3.fromArray( json.v3 );\n\n\t\treturn this;\n\n\t}\n\n}\n\nclass LineCurve extends Curve {\n\n\tconstructor( v1 = new Vector2(), v2 = new Vector2() ) {\n\n\t\tsuper();\n\n\t\tthis.isLineCurve = true;\n\n\t\tthis.type = 'LineCurve';\n\n\t\tthis.v1 = v1;\n\t\tthis.v2 = v2;\n\n\t}\n\n\tgetPoint( t, optionalTarget = new Vector2() ) {\n\n\t\tconst point = optionalTarget;\n\n\t\tif ( t === 1 ) {\n\n\t\t\tpoint.copy( this.v2 );\n\n\t\t} else {\n\n\t\t\tpoint.copy( this.v2 ).sub( this.v1 );\n\t\t\tpoint.multiplyScalar( t ).add( this.v1 );\n\n\t\t}\n\n\t\treturn point;\n\n\t}\n\n\t// Line curve is linear, so we can overwrite default getPointAt\n\tgetPointAt( u, optionalTarget ) {\n\n\t\treturn this.getPoint( u, optionalTarget );\n\n\t}\n\n\tgetTangent( t, optionalTarget ) {\n\n\t\tconst tangent = optionalTarget || new Vector2();\n\n\t\ttangent.copy( this.v2 ).sub( this.v1 ).normalize();\n\n\t\treturn tangent;\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.v1.copy( source.v1 );\n\t\tthis.v2.copy( source.v2 );\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON() {\n\n\t\tconst data = super.toJSON();\n\n\t\tdata.v1 = this.v1.toArray();\n\t\tdata.v2 = this.v2.toArray();\n\n\t\treturn data;\n\n\t}\n\n\tfromJSON( json ) {\n\n\t\tsuper.fromJSON( json );\n\n\t\tthis.v1.fromArray( json.v1 );\n\t\tthis.v2.fromArray( json.v2 );\n\n\t\treturn this;\n\n\t}\n\n}\n\nclass LineCurve3 extends Curve {\n\n\tconstructor( v1 = new Vector3(), v2 = new Vector3() ) {\n\n\t\tsuper();\n\n\t\tthis.isLineCurve3 = true;\n\n\t\tthis.type = 'LineCurve3';\n\n\t\tthis.v1 = v1;\n\t\tthis.v2 = v2;\n\n\t}\n\tgetPoint( t, optionalTarget = new Vector3() ) {\n\n\t\tconst point = optionalTarget;\n\n\t\tif ( t === 1 ) {\n\n\t\t\tpoint.copy( this.v2 );\n\n\t\t} else {\n\n\t\t\tpoint.copy( this.v2 ).sub( this.v1 );\n\t\t\tpoint.multiplyScalar( t ).add( this.v1 );\n\n\t\t}\n\n\t\treturn point;\n\n\t}\n\t// Line curve is linear, so we can overwrite default getPointAt\n\tgetPointAt( u, optionalTarget ) {\n\n\t\treturn this.getPoint( u, optionalTarget );\n\n\t}\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.v1.copy( source.v1 );\n\t\tthis.v2.copy( source.v2 );\n\n\t\treturn this;\n\n\t}\n\ttoJSON() {\n\n\t\tconst data = super.toJSON();\n\n\t\tdata.v1 = this.v1.toArray();\n\t\tdata.v2 = this.v2.toArray();\n\n\t\treturn data;\n\n\t}\n\tfromJSON( json ) {\n\n\t\tsuper.fromJSON( json );\n\n\t\tthis.v1.fromArray( json.v1 );\n\t\tthis.v2.fromArray( json.v2 );\n\n\t\treturn this;\n\n\t}\n\n}\n\nclass QuadraticBezierCurve extends Curve {\n\n\tconstructor( v0 = new Vector2(), v1 = new Vector2(), v2 = new Vector2() ) {\n\n\t\tsuper();\n\n\t\tthis.isQuadraticBezierCurve = true;\n\n\t\tthis.type = 'QuadraticBezierCurve';\n\n\t\tthis.v0 = v0;\n\t\tthis.v1 = v1;\n\t\tthis.v2 = v2;\n\n\t}\n\n\tgetPoint( t, optionalTarget = new Vector2() ) {\n\n\t\tconst point = optionalTarget;\n\n\t\tconst v0 = this.v0, v1 = this.v1, v2 = this.v2;\n\n\t\tpoint.set(\n\t\t\tQuadraticBezier( t, v0.x, v1.x, v2.x ),\n\t\t\tQuadraticBezier( t, v0.y, v1.y, v2.y )\n\t\t);\n\n\t\treturn point;\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.v0.copy( source.v0 );\n\t\tthis.v1.copy( source.v1 );\n\t\tthis.v2.copy( source.v2 );\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON() {\n\n\t\tconst data = super.toJSON();\n\n\t\tdata.v0 = this.v0.toArray();\n\t\tdata.v1 = this.v1.toArray();\n\t\tdata.v2 = this.v2.toArray();\n\n\t\treturn data;\n\n\t}\n\n\tfromJSON( json ) {\n\n\t\tsuper.fromJSON( json );\n\n\t\tthis.v0.fromArray( json.v0 );\n\t\tthis.v1.fromArray( json.v1 );\n\t\tthis.v2.fromArray( json.v2 );\n\n\t\treturn this;\n\n\t}\n\n}\n\nclass QuadraticBezierCurve3 extends Curve {\n\n\tconstructor( v0 = new Vector3(), v1 = new Vector3(), v2 = new Vector3() ) {\n\n\t\tsuper();\n\n\t\tthis.isQuadraticBezierCurve3 = true;\n\n\t\tthis.type = 'QuadraticBezierCurve3';\n\n\t\tthis.v0 = v0;\n\t\tthis.v1 = v1;\n\t\tthis.v2 = v2;\n\n\t}\n\n\tgetPoint( t, optionalTarget = new Vector3() ) {\n\n\t\tconst point = optionalTarget;\n\n\t\tconst v0 = this.v0, v1 = this.v1, v2 = this.v2;\n\n\t\tpoint.set(\n\t\t\tQuadraticBezier( t, v0.x, v1.x, v2.x ),\n\t\t\tQuadraticBezier( t, v0.y, v1.y, v2.y ),\n\t\t\tQuadraticBezier( t, v0.z, v1.z, v2.z )\n\t\t);\n\n\t\treturn point;\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.v0.copy( source.v0 );\n\t\tthis.v1.copy( source.v1 );\n\t\tthis.v2.copy( source.v2 );\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON() {\n\n\t\tconst data = super.toJSON();\n\n\t\tdata.v0 = this.v0.toArray();\n\t\tdata.v1 = this.v1.toArray();\n\t\tdata.v2 = this.v2.toArray();\n\n\t\treturn data;\n\n\t}\n\n\tfromJSON( json ) {\n\n\t\tsuper.fromJSON( json );\n\n\t\tthis.v0.fromArray( json.v0 );\n\t\tthis.v1.fromArray( json.v1 );\n\t\tthis.v2.fromArray( json.v2 );\n\n\t\treturn this;\n\n\t}\n\n}\n\nclass SplineCurve extends Curve {\n\n\tconstructor( points = [] ) {\n\n\t\tsuper();\n\n\t\tthis.isSplineCurve = true;\n\n\t\tthis.type = 'SplineCurve';\n\n\t\tthis.points = points;\n\n\t}\n\n\tgetPoint( t, optionalTarget = new Vector2() ) {\n\n\t\tconst point = optionalTarget;\n\n\t\tconst points = this.points;\n\t\tconst p = ( points.length - 1 ) * t;\n\n\t\tconst intPoint = Math.floor( p );\n\t\tconst weight = p - intPoint;\n\n\t\tconst p0 = points[ intPoint === 0 ? intPoint : intPoint - 1 ];\n\t\tconst p1 = points[ intPoint ];\n\t\tconst p2 = points[ intPoint > points.length - 2 ? points.length - 1 : intPoint + 1 ];\n\t\tconst p3 = points[ intPoint > points.length - 3 ? points.length - 1 : intPoint + 2 ];\n\n\t\tpoint.set(\n\t\t\tCatmullRom( weight, p0.x, p1.x, p2.x, p3.x ),\n\t\t\tCatmullRom( weight, p0.y, p1.y, p2.y, p3.y )\n\t\t);\n\n\t\treturn point;\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.points = [];\n\n\t\tfor ( let i = 0, l = source.points.length; i < l; i ++ ) {\n\n\t\t\tconst point = source.points[ i ];\n\n\t\t\tthis.points.push( point.clone() );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON() {\n\n\t\tconst data = super.toJSON();\n\n\t\tdata.points = [];\n\n\t\tfor ( let i = 0, l = this.points.length; i < l; i ++ ) {\n\n\t\t\tconst point = this.points[ i ];\n\t\t\tdata.points.push( point.toArray() );\n\n\t\t}\n\n\t\treturn data;\n\n\t}\n\n\tfromJSON( json ) {\n\n\t\tsuper.fromJSON( json );\n\n\t\tthis.points = [];\n\n\t\tfor ( let i = 0, l = json.points.length; i < l; i ++ ) {\n\n\t\t\tconst point = json.points[ i ];\n\t\t\tthis.points.push( new Vector2().fromArray( point ) );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n}\n\nvar Curves = /*#__PURE__*/Object.freeze({\n\t__proto__: null,\n\tArcCurve: ArcCurve,\n\tCatmullRomCurve3: CatmullRomCurve3,\n\tCubicBezierCurve: CubicBezierCurve,\n\tCubicBezierCurve3: CubicBezierCurve3,\n\tEllipseCurve: EllipseCurve,\n\tLineCurve: LineCurve,\n\tLineCurve3: LineCurve3,\n\tQuadraticBezierCurve: QuadraticBezierCurve,\n\tQuadraticBezierCurve3: QuadraticBezierCurve3,\n\tSplineCurve: SplineCurve\n});\n\n/**************************************************************\n *\tCurved Path - a curve path is simply a array of connected\n * curves, but retains the api of a curve\n **************************************************************/\n\nclass CurvePath extends Curve {\n\n\tconstructor() {\n\n\t\tsuper();\n\n\t\tthis.type = 'CurvePath';\n\n\t\tthis.curves = [];\n\t\tthis.autoClose = false; // Automatically closes the path\n\n\t}\n\n\tadd( curve ) {\n\n\t\tthis.curves.push( curve );\n\n\t}\n\n\tclosePath() {\n\n\t\t// Add a line curve if start and end of lines are not connected\n\t\tconst startPoint = this.curves[ 0 ].getPoint( 0 );\n\t\tconst endPoint = this.curves[ this.curves.length - 1 ].getPoint( 1 );\n\n\t\tif ( ! startPoint.equals( endPoint ) ) {\n\n\t\t\tthis.curves.push( new LineCurve( endPoint, startPoint ) );\n\n\t\t}\n\n\t}\n\n\t// To get accurate point with reference to\n\t// entire path distance at time t,\n\t// following has to be done:\n\n\t// 1. Length of each sub path have to be known\n\t// 2. Locate and identify type of curve\n\t// 3. Get t for the curve\n\t// 4. Return curve.getPointAt(t')\n\n\tgetPoint( t, optionalTarget ) {\n\n\t\tconst d = t * this.getLength();\n\t\tconst curveLengths = this.getCurveLengths();\n\t\tlet i = 0;\n\n\t\t// To think about boundaries points.\n\n\t\twhile ( i < curveLengths.length ) {\n\n\t\t\tif ( curveLengths[ i ] >= d ) {\n\n\t\t\t\tconst diff = curveLengths[ i ] - d;\n\t\t\t\tconst curve = this.curves[ i ];\n\n\t\t\t\tconst segmentLength = curve.getLength();\n\t\t\t\tconst u = segmentLength === 0 ? 0 : 1 - diff / segmentLength;\n\n\t\t\t\treturn curve.getPointAt( u, optionalTarget );\n\n\t\t\t}\n\n\t\t\ti ++;\n\n\t\t}\n\n\t\treturn null;\n\n\t\t// loop where sum != 0, sum > d , sum+1 1 && ! points[ points.length - 1 ].equals( points[ 0 ] ) ) {\n\n\t\t\tpoints.push( points[ 0 ] );\n\n\t\t}\n\n\t\treturn points;\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.curves = [];\n\n\t\tfor ( let i = 0, l = source.curves.length; i < l; i ++ ) {\n\n\t\t\tconst curve = source.curves[ i ];\n\n\t\t\tthis.curves.push( curve.clone() );\n\n\t\t}\n\n\t\tthis.autoClose = source.autoClose;\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON() {\n\n\t\tconst data = super.toJSON();\n\n\t\tdata.autoClose = this.autoClose;\n\t\tdata.curves = [];\n\n\t\tfor ( let i = 0, l = this.curves.length; i < l; i ++ ) {\n\n\t\t\tconst curve = this.curves[ i ];\n\t\t\tdata.curves.push( curve.toJSON() );\n\n\t\t}\n\n\t\treturn data;\n\n\t}\n\n\tfromJSON( json ) {\n\n\t\tsuper.fromJSON( json );\n\n\t\tthis.autoClose = json.autoClose;\n\t\tthis.curves = [];\n\n\t\tfor ( let i = 0, l = json.curves.length; i < l; i ++ ) {\n\n\t\t\tconst curve = json.curves[ i ];\n\t\t\tthis.curves.push( new Curves[ curve.type ]().fromJSON( curve ) );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n}\n\nclass Path extends CurvePath {\n\n\tconstructor( points ) {\n\n\t\tsuper();\n\t\tthis.type = 'Path';\n\n\t\tthis.currentPoint = new Vector2();\n\n\t\tif ( points ) {\n\n\t\t\tthis.setFromPoints( points );\n\n\t\t}\n\n\t}\n\n\tsetFromPoints( points ) {\n\n\t\tthis.moveTo( points[ 0 ].x, points[ 0 ].y );\n\n\t\tfor ( let i = 1, l = points.length; i < l; i ++ ) {\n\n\t\t\tthis.lineTo( points[ i ].x, points[ i ].y );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tmoveTo( x, y ) {\n\n\t\tthis.currentPoint.set( x, y ); // TODO consider referencing vectors instead of copying?\n\n\t\treturn this;\n\n\t}\n\n\tlineTo( x, y ) {\n\n\t\tconst curve = new LineCurve( this.currentPoint.clone(), new Vector2( x, y ) );\n\t\tthis.curves.push( curve );\n\n\t\tthis.currentPoint.set( x, y );\n\n\t\treturn this;\n\n\t}\n\n\tquadraticCurveTo( aCPx, aCPy, aX, aY ) {\n\n\t\tconst curve = new QuadraticBezierCurve(\n\t\t\tthis.currentPoint.clone(),\n\t\t\tnew Vector2( aCPx, aCPy ),\n\t\t\tnew Vector2( aX, aY )\n\t\t);\n\n\t\tthis.curves.push( curve );\n\n\t\tthis.currentPoint.set( aX, aY );\n\n\t\treturn this;\n\n\t}\n\n\tbezierCurveTo( aCP1x, aCP1y, aCP2x, aCP2y, aX, aY ) {\n\n\t\tconst curve = new CubicBezierCurve(\n\t\t\tthis.currentPoint.clone(),\n\t\t\tnew Vector2( aCP1x, aCP1y ),\n\t\t\tnew Vector2( aCP2x, aCP2y ),\n\t\t\tnew Vector2( aX, aY )\n\t\t);\n\n\t\tthis.curves.push( curve );\n\n\t\tthis.currentPoint.set( aX, aY );\n\n\t\treturn this;\n\n\t}\n\n\tsplineThru( pts /*Array of Vector*/ ) {\n\n\t\tconst npts = [ this.currentPoint.clone() ].concat( pts );\n\n\t\tconst curve = new SplineCurve( npts );\n\t\tthis.curves.push( curve );\n\n\t\tthis.currentPoint.copy( pts[ pts.length - 1 ] );\n\n\t\treturn this;\n\n\t}\n\n\tarc( aX, aY, aRadius, aStartAngle, aEndAngle, aClockwise ) {\n\n\t\tconst x0 = this.currentPoint.x;\n\t\tconst y0 = this.currentPoint.y;\n\n\t\tthis.absarc( aX + x0, aY + y0, aRadius,\n\t\t\taStartAngle, aEndAngle, aClockwise );\n\n\t\treturn this;\n\n\t}\n\n\tabsarc( aX, aY, aRadius, aStartAngle, aEndAngle, aClockwise ) {\n\n\t\tthis.absellipse( aX, aY, aRadius, aRadius, aStartAngle, aEndAngle, aClockwise );\n\n\t\treturn this;\n\n\t}\n\n\tellipse( aX, aY, xRadius, yRadius, aStartAngle, aEndAngle, aClockwise, aRotation ) {\n\n\t\tconst x0 = this.currentPoint.x;\n\t\tconst y0 = this.currentPoint.y;\n\n\t\tthis.absellipse( aX + x0, aY + y0, xRadius, yRadius, aStartAngle, aEndAngle, aClockwise, aRotation );\n\n\t\treturn this;\n\n\t}\n\n\tabsellipse( aX, aY, xRadius, yRadius, aStartAngle, aEndAngle, aClockwise, aRotation ) {\n\n\t\tconst curve = new EllipseCurve( aX, aY, xRadius, yRadius, aStartAngle, aEndAngle, aClockwise, aRotation );\n\n\t\tif ( this.curves.length > 0 ) {\n\n\t\t\t// if a previous curve is present, attempt to join\n\t\t\tconst firstPoint = curve.getPoint( 0 );\n\n\t\t\tif ( ! firstPoint.equals( this.currentPoint ) ) {\n\n\t\t\t\tthis.lineTo( firstPoint.x, firstPoint.y );\n\n\t\t\t}\n\n\t\t}\n\n\t\tthis.curves.push( curve );\n\n\t\tconst lastPoint = curve.getPoint( 1 );\n\t\tthis.currentPoint.copy( lastPoint );\n\n\t\treturn this;\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.currentPoint.copy( source.currentPoint );\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON() {\n\n\t\tconst data = super.toJSON();\n\n\t\tdata.currentPoint = this.currentPoint.toArray();\n\n\t\treturn data;\n\n\t}\n\n\tfromJSON( json ) {\n\n\t\tsuper.fromJSON( json );\n\n\t\tthis.currentPoint.fromArray( json.currentPoint );\n\n\t\treturn this;\n\n\t}\n\n}\n\nclass LatheGeometry extends BufferGeometry {\n\n\tconstructor( points = [ new Vector2( 0, 0.5 ), new Vector2( 0.5, 0 ), new Vector2( 0, - 0.5 ) ], segments = 12, phiStart = 0, phiLength = Math.PI * 2 ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'LatheGeometry';\n\n\t\tthis.parameters = {\n\t\t\tpoints: points,\n\t\t\tsegments: segments,\n\t\t\tphiStart: phiStart,\n\t\t\tphiLength: phiLength\n\t\t};\n\n\t\tsegments = Math.floor( segments );\n\n\t\t// clamp phiLength so it's in range of [ 0, 2PI ]\n\n\t\tphiLength = clamp( phiLength, 0, Math.PI * 2 );\n\n\t\t// buffers\n\n\t\tconst indices = [];\n\t\tconst vertices = [];\n\t\tconst uvs = [];\n\t\tconst initNormals = [];\n\t\tconst normals = [];\n\n\t\t// helper variables\n\n\t\tconst inverseSegments = 1.0 / segments;\n\t\tconst vertex = new Vector3();\n\t\tconst uv = new Vector2();\n\t\tconst normal = new Vector3();\n\t\tconst curNormal = new Vector3();\n\t\tconst prevNormal = new Vector3();\n\t\tlet dx = 0;\n\t\tlet dy = 0;\n\n\t\t// pre-compute normals for initial \"meridian\"\n\n\t\tfor ( let j = 0; j <= ( points.length - 1 ); j ++ ) {\n\n\t\t\tswitch ( j ) {\n\n\t\t\t\tcase 0:\t\t\t\t// special handling for 1st vertex on path\n\n\t\t\t\t\tdx = points[ j + 1 ].x - points[ j ].x;\n\t\t\t\t\tdy = points[ j + 1 ].y - points[ j ].y;\n\n\t\t\t\t\tnormal.x = dy * 1.0;\n\t\t\t\t\tnormal.y = - dx;\n\t\t\t\t\tnormal.z = dy * 0.0;\n\n\t\t\t\t\tprevNormal.copy( normal );\n\n\t\t\t\t\tnormal.normalize();\n\n\t\t\t\t\tinitNormals.push( normal.x, normal.y, normal.z );\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase ( points.length - 1 ):\t// special handling for last Vertex on path\n\n\t\t\t\t\tinitNormals.push( prevNormal.x, prevNormal.y, prevNormal.z );\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tdefault:\t\t\t// default handling for all vertices in between\n\n\t\t\t\t\tdx = points[ j + 1 ].x - points[ j ].x;\n\t\t\t\t\tdy = points[ j + 1 ].y - points[ j ].y;\n\n\t\t\t\t\tnormal.x = dy * 1.0;\n\t\t\t\t\tnormal.y = - dx;\n\t\t\t\t\tnormal.z = dy * 0.0;\n\n\t\t\t\t\tcurNormal.copy( normal );\n\n\t\t\t\t\tnormal.x += prevNormal.x;\n\t\t\t\t\tnormal.y += prevNormal.y;\n\t\t\t\t\tnormal.z += prevNormal.z;\n\n\t\t\t\t\tnormal.normalize();\n\n\t\t\t\t\tinitNormals.push( normal.x, normal.y, normal.z );\n\n\t\t\t\t\tprevNormal.copy( curNormal );\n\n\t\t\t}\n\n\t\t}\n\n\t\t// generate vertices, uvs and normals\n\n\t\tfor ( let i = 0; i <= segments; i ++ ) {\n\n\t\t\tconst phi = phiStart + i * inverseSegments * phiLength;\n\n\t\t\tconst sin = Math.sin( phi );\n\t\t\tconst cos = Math.cos( phi );\n\n\t\t\tfor ( let j = 0; j <= ( points.length - 1 ); j ++ ) {\n\n\t\t\t\t// vertex\n\n\t\t\t\tvertex.x = points[ j ].x * sin;\n\t\t\t\tvertex.y = points[ j ].y;\n\t\t\t\tvertex.z = points[ j ].x * cos;\n\n\t\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t\t\t// uv\n\n\t\t\t\tuv.x = i / segments;\n\t\t\t\tuv.y = j / ( points.length - 1 );\n\n\t\t\t\tuvs.push( uv.x, uv.y );\n\n\t\t\t\t// normal\n\n\t\t\t\tconst x = initNormals[ 3 * j + 0 ] * sin;\n\t\t\t\tconst y = initNormals[ 3 * j + 1 ];\n\t\t\t\tconst z = initNormals[ 3 * j + 0 ] * cos;\n\n\t\t\t\tnormals.push( x, y, z );\n\n\t\t\t}\n\n\t\t}\n\n\t\t// indices\n\n\t\tfor ( let i = 0; i < segments; i ++ ) {\n\n\t\t\tfor ( let j = 0; j < ( points.length - 1 ); j ++ ) {\n\n\t\t\t\tconst base = j + i * points.length;\n\n\t\t\t\tconst a = base;\n\t\t\t\tconst b = base + points.length;\n\t\t\t\tconst c = base + points.length + 1;\n\t\t\t\tconst d = base + 1;\n\n\t\t\t\t// faces\n\n\t\t\t\tindices.push( a, b, d );\n\t\t\t\tindices.push( c, d, b );\n\n\t\t\t}\n\n\t\t}\n\n\t\t// build geometry\n\n\t\tthis.setIndex( indices );\n\t\tthis.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\t\tthis.setAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) );\n\t\tthis.setAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) );\n\n\t}\n\n\tstatic fromJSON( data ) {\n\n\t\treturn new LatheGeometry( data.points, data.segments, data.phiStart, data.phiLength );\n\n\t}\n\n}\n\nclass CapsuleGeometry extends LatheGeometry {\n\n\tconstructor( radius = 1, length = 1, capSegments = 4, radialSegments = 8 ) {\n\n\t\tconst path = new Path();\n\t\tpath.absarc( 0, - length / 2, radius, Math.PI * 1.5, 0 );\n\t\tpath.absarc( 0, length / 2, radius, 0, Math.PI * 0.5 );\n\n\t\tsuper( path.getPoints( capSegments ), radialSegments );\n\n\t\tthis.type = 'CapsuleGeometry';\n\n\t\tthis.parameters = {\n\t\t\tradius: radius,\n\t\t\theight: length,\n\t\t\tcapSegments: capSegments,\n\t\t\tradialSegments: radialSegments,\n\t\t};\n\n\t}\n\n\tstatic fromJSON( data ) {\n\n\t\treturn new CapsuleGeometry( data.radius, data.length, data.capSegments, data.radialSegments );\n\n\t}\n\n}\n\nclass CircleGeometry extends BufferGeometry {\n\n\tconstructor( radius = 1, segments = 8, thetaStart = 0, thetaLength = Math.PI * 2 ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'CircleGeometry';\n\n\t\tthis.parameters = {\n\t\t\tradius: radius,\n\t\t\tsegments: segments,\n\t\t\tthetaStart: thetaStart,\n\t\t\tthetaLength: thetaLength\n\t\t};\n\n\t\tsegments = Math.max( 3, segments );\n\n\t\t// buffers\n\n\t\tconst indices = [];\n\t\tconst vertices = [];\n\t\tconst normals = [];\n\t\tconst uvs = [];\n\n\t\t// helper variables\n\n\t\tconst vertex = new Vector3();\n\t\tconst uv = new Vector2();\n\n\t\t// center point\n\n\t\tvertices.push( 0, 0, 0 );\n\t\tnormals.push( 0, 0, 1 );\n\t\tuvs.push( 0.5, 0.5 );\n\n\t\tfor ( let s = 0, i = 3; s <= segments; s ++, i += 3 ) {\n\n\t\t\tconst segment = thetaStart + s / segments * thetaLength;\n\n\t\t\t// vertex\n\n\t\t\tvertex.x = radius * Math.cos( segment );\n\t\t\tvertex.y = radius * Math.sin( segment );\n\n\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t\t// normal\n\n\t\t\tnormals.push( 0, 0, 1 );\n\n\t\t\t// uvs\n\n\t\t\tuv.x = ( vertices[ i ] / radius + 1 ) / 2;\n\t\t\tuv.y = ( vertices[ i + 1 ] / radius + 1 ) / 2;\n\n\t\t\tuvs.push( uv.x, uv.y );\n\n\t\t}\n\n\t\t// indices\n\n\t\tfor ( let i = 1; i <= segments; i ++ ) {\n\n\t\t\tindices.push( i, i + 1, 0 );\n\n\t\t}\n\n\t\t// build geometry\n\n\t\tthis.setIndex( indices );\n\t\tthis.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\t\tthis.setAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) );\n\t\tthis.setAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) );\n\n\t}\n\n\tstatic fromJSON( data ) {\n\n\t\treturn new CircleGeometry( data.radius, data.segments, data.thetaStart, data.thetaLength );\n\n\t}\n\n}\n\nclass CylinderGeometry extends BufferGeometry {\n\n\tconstructor( radiusTop = 1, radiusBottom = 1, height = 1, radialSegments = 8, heightSegments = 1, openEnded = false, thetaStart = 0, thetaLength = Math.PI * 2 ) {\n\n\t\tsuper();\n\t\tthis.type = 'CylinderGeometry';\n\n\t\tthis.parameters = {\n\t\t\tradiusTop: radiusTop,\n\t\t\tradiusBottom: radiusBottom,\n\t\t\theight: height,\n\t\t\tradialSegments: radialSegments,\n\t\t\theightSegments: heightSegments,\n\t\t\topenEnded: openEnded,\n\t\t\tthetaStart: thetaStart,\n\t\t\tthetaLength: thetaLength\n\t\t};\n\n\t\tconst scope = this;\n\n\t\tradialSegments = Math.floor( radialSegments );\n\t\theightSegments = Math.floor( heightSegments );\n\n\t\t// buffers\n\n\t\tconst indices = [];\n\t\tconst vertices = [];\n\t\tconst normals = [];\n\t\tconst uvs = [];\n\n\t\t// helper variables\n\n\t\tlet index = 0;\n\t\tconst indexArray = [];\n\t\tconst halfHeight = height / 2;\n\t\tlet groupStart = 0;\n\n\t\t// generate geometry\n\n\t\tgenerateTorso();\n\n\t\tif ( openEnded === false ) {\n\n\t\t\tif ( radiusTop > 0 ) generateCap( true );\n\t\t\tif ( radiusBottom > 0 ) generateCap( false );\n\n\t\t}\n\n\t\t// build geometry\n\n\t\tthis.setIndex( indices );\n\t\tthis.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\t\tthis.setAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) );\n\t\tthis.setAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) );\n\n\t\tfunction generateTorso() {\n\n\t\t\tconst normal = new Vector3();\n\t\t\tconst vertex = new Vector3();\n\n\t\t\tlet groupCount = 0;\n\n\t\t\t// this will be used to calculate the normal\n\t\t\tconst slope = ( radiusBottom - radiusTop ) / height;\n\n\t\t\t// generate vertices, normals and uvs\n\n\t\t\tfor ( let y = 0; y <= heightSegments; y ++ ) {\n\n\t\t\t\tconst indexRow = [];\n\n\t\t\t\tconst v = y / heightSegments;\n\n\t\t\t\t// calculate the radius of the current row\n\n\t\t\t\tconst radius = v * ( radiusBottom - radiusTop ) + radiusTop;\n\n\t\t\t\tfor ( let x = 0; x <= radialSegments; x ++ ) {\n\n\t\t\t\t\tconst u = x / radialSegments;\n\n\t\t\t\t\tconst theta = u * thetaLength + thetaStart;\n\n\t\t\t\t\tconst sinTheta = Math.sin( theta );\n\t\t\t\t\tconst cosTheta = Math.cos( theta );\n\n\t\t\t\t\t// vertex\n\n\t\t\t\t\tvertex.x = radius * sinTheta;\n\t\t\t\t\tvertex.y = - v * height + halfHeight;\n\t\t\t\t\tvertex.z = radius * cosTheta;\n\t\t\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t\t\t\t// normal\n\n\t\t\t\t\tnormal.set( sinTheta, slope, cosTheta ).normalize();\n\t\t\t\t\tnormals.push( normal.x, normal.y, normal.z );\n\n\t\t\t\t\t// uv\n\n\t\t\t\t\tuvs.push( u, 1 - v );\n\n\t\t\t\t\t// save index of vertex in respective row\n\n\t\t\t\t\tindexRow.push( index ++ );\n\n\t\t\t\t}\n\n\t\t\t\t// now save vertices of the row in our index array\n\n\t\t\t\tindexArray.push( indexRow );\n\n\t\t\t}\n\n\t\t\t// generate indices\n\n\t\t\tfor ( let x = 0; x < radialSegments; x ++ ) {\n\n\t\t\t\tfor ( let y = 0; y < heightSegments; y ++ ) {\n\n\t\t\t\t\t// we use the index array to access the correct indices\n\n\t\t\t\t\tconst a = indexArray[ y ][ x ];\n\t\t\t\t\tconst b = indexArray[ y + 1 ][ x ];\n\t\t\t\t\tconst c = indexArray[ y + 1 ][ x + 1 ];\n\t\t\t\t\tconst d = indexArray[ y ][ x + 1 ];\n\n\t\t\t\t\t// faces\n\n\t\t\t\t\tindices.push( a, b, d );\n\t\t\t\t\tindices.push( b, c, d );\n\n\t\t\t\t\t// update group counter\n\n\t\t\t\t\tgroupCount += 6;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// add a group to the geometry. this will ensure multi material support\n\n\t\t\tscope.addGroup( groupStart, groupCount, 0 );\n\n\t\t\t// calculate new start value for groups\n\n\t\t\tgroupStart += groupCount;\n\n\t\t}\n\n\t\tfunction generateCap( top ) {\n\n\t\t\t// save the index of the first center vertex\n\t\t\tconst centerIndexStart = index;\n\n\t\t\tconst uv = new Vector2();\n\t\t\tconst vertex = new Vector3();\n\n\t\t\tlet groupCount = 0;\n\n\t\t\tconst radius = ( top === true ) ? radiusTop : radiusBottom;\n\t\t\tconst sign = ( top === true ) ? 1 : - 1;\n\n\t\t\t// first we generate the center vertex data of the cap.\n\t\t\t// because the geometry needs one set of uvs per face,\n\t\t\t// we must generate a center vertex per face/segment\n\n\t\t\tfor ( let x = 1; x <= radialSegments; x ++ ) {\n\n\t\t\t\t// vertex\n\n\t\t\t\tvertices.push( 0, halfHeight * sign, 0 );\n\n\t\t\t\t// normal\n\n\t\t\t\tnormals.push( 0, sign, 0 );\n\n\t\t\t\t// uv\n\n\t\t\t\tuvs.push( 0.5, 0.5 );\n\n\t\t\t\t// increase index\n\n\t\t\t\tindex ++;\n\n\t\t\t}\n\n\t\t\t// save the index of the last center vertex\n\t\t\tconst centerIndexEnd = index;\n\n\t\t\t// now we generate the surrounding vertices, normals and uvs\n\n\t\t\tfor ( let x = 0; x <= radialSegments; x ++ ) {\n\n\t\t\t\tconst u = x / radialSegments;\n\t\t\t\tconst theta = u * thetaLength + thetaStart;\n\n\t\t\t\tconst cosTheta = Math.cos( theta );\n\t\t\t\tconst sinTheta = Math.sin( theta );\n\n\t\t\t\t// vertex\n\n\t\t\t\tvertex.x = radius * sinTheta;\n\t\t\t\tvertex.y = halfHeight * sign;\n\t\t\t\tvertex.z = radius * cosTheta;\n\t\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t\t\t// normal\n\n\t\t\t\tnormals.push( 0, sign, 0 );\n\n\t\t\t\t// uv\n\n\t\t\t\tuv.x = ( cosTheta * 0.5 ) + 0.5;\n\t\t\t\tuv.y = ( sinTheta * 0.5 * sign ) + 0.5;\n\t\t\t\tuvs.push( uv.x, uv.y );\n\n\t\t\t\t// increase index\n\n\t\t\t\tindex ++;\n\n\t\t\t}\n\n\t\t\t// generate indices\n\n\t\t\tfor ( let x = 0; x < radialSegments; x ++ ) {\n\n\t\t\t\tconst c = centerIndexStart + x;\n\t\t\t\tconst i = centerIndexEnd + x;\n\n\t\t\t\tif ( top === true ) {\n\n\t\t\t\t\t// face top\n\n\t\t\t\t\tindices.push( i, i + 1, c );\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// face bottom\n\n\t\t\t\t\tindices.push( i + 1, i, c );\n\n\t\t\t\t}\n\n\t\t\t\tgroupCount += 3;\n\n\t\t\t}\n\n\t\t\t// add a group to the geometry. this will ensure multi material support\n\n\t\t\tscope.addGroup( groupStart, groupCount, top === true ? 1 : 2 );\n\n\t\t\t// calculate new start value for groups\n\n\t\t\tgroupStart += groupCount;\n\n\t\t}\n\n\t}\n\n\tstatic fromJSON( data ) {\n\n\t\treturn new CylinderGeometry( data.radiusTop, data.radiusBottom, data.height, data.radialSegments, data.heightSegments, data.openEnded, data.thetaStart, data.thetaLength );\n\n\t}\n\n}\n\nclass ConeGeometry extends CylinderGeometry {\n\n\tconstructor( radius = 1, height = 1, radialSegments = 8, heightSegments = 1, openEnded = false, thetaStart = 0, thetaLength = Math.PI * 2 ) {\n\n\t\tsuper( 0, radius, height, radialSegments, heightSegments, openEnded, thetaStart, thetaLength );\n\n\t\tthis.type = 'ConeGeometry';\n\n\t\tthis.parameters = {\n\t\t\tradius: radius,\n\t\t\theight: height,\n\t\t\tradialSegments: radialSegments,\n\t\t\theightSegments: heightSegments,\n\t\t\topenEnded: openEnded,\n\t\t\tthetaStart: thetaStart,\n\t\t\tthetaLength: thetaLength\n\t\t};\n\n\t}\n\n\tstatic fromJSON( data ) {\n\n\t\treturn new ConeGeometry( data.radius, data.height, data.radialSegments, data.heightSegments, data.openEnded, data.thetaStart, data.thetaLength );\n\n\t}\n\n}\n\nclass PolyhedronGeometry extends BufferGeometry {\n\n\tconstructor( vertices = [], indices = [], radius = 1, detail = 0 ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'PolyhedronGeometry';\n\n\t\tthis.parameters = {\n\t\t\tvertices: vertices,\n\t\t\tindices: indices,\n\t\t\tradius: radius,\n\t\t\tdetail: detail\n\t\t};\n\n\t\t// default buffer data\n\n\t\tconst vertexBuffer = [];\n\t\tconst uvBuffer = [];\n\n\t\t// the subdivision creates the vertex buffer data\n\n\t\tsubdivide( detail );\n\n\t\t// all vertices should lie on a conceptual sphere with a given radius\n\n\t\tapplyRadius( radius );\n\n\t\t// finally, create the uv data\n\n\t\tgenerateUVs();\n\n\t\t// build non-indexed geometry\n\n\t\tthis.setAttribute( 'position', new Float32BufferAttribute( vertexBuffer, 3 ) );\n\t\tthis.setAttribute( 'normal', new Float32BufferAttribute( vertexBuffer.slice(), 3 ) );\n\t\tthis.setAttribute( 'uv', new Float32BufferAttribute( uvBuffer, 2 ) );\n\n\t\tif ( detail === 0 ) {\n\n\t\t\tthis.computeVertexNormals(); // flat normals\n\n\t\t} else {\n\n\t\t\tthis.normalizeNormals(); // smooth normals\n\n\t\t}\n\n\t\t// helper functions\n\n\t\tfunction subdivide( detail ) {\n\n\t\t\tconst a = new Vector3();\n\t\t\tconst b = new Vector3();\n\t\t\tconst c = new Vector3();\n\n\t\t\t// iterate over all faces and apply a subdivison with the given detail value\n\n\t\t\tfor ( let i = 0; i < indices.length; i += 3 ) {\n\n\t\t\t\t// get the vertices of the face\n\n\t\t\t\tgetVertexByIndex( indices[ i + 0 ], a );\n\t\t\t\tgetVertexByIndex( indices[ i + 1 ], b );\n\t\t\t\tgetVertexByIndex( indices[ i + 2 ], c );\n\n\t\t\t\t// perform subdivision\n\n\t\t\t\tsubdivideFace( a, b, c, detail );\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction subdivideFace( a, b, c, detail ) {\n\n\t\t\tconst cols = detail + 1;\n\n\t\t\t// we use this multidimensional array as a data structure for creating the subdivision\n\n\t\t\tconst v = [];\n\n\t\t\t// construct all of the vertices for this subdivision\n\n\t\t\tfor ( let i = 0; i <= cols; i ++ ) {\n\n\t\t\t\tv[ i ] = [];\n\n\t\t\t\tconst aj = a.clone().lerp( c, i / cols );\n\t\t\t\tconst bj = b.clone().lerp( c, i / cols );\n\n\t\t\t\tconst rows = cols - i;\n\n\t\t\t\tfor ( let j = 0; j <= rows; j ++ ) {\n\n\t\t\t\t\tif ( j === 0 && i === cols ) {\n\n\t\t\t\t\t\tv[ i ][ j ] = aj;\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tv[ i ][ j ] = aj.clone().lerp( bj, j / rows );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// construct all of the faces\n\n\t\t\tfor ( let i = 0; i < cols; i ++ ) {\n\n\t\t\t\tfor ( let j = 0; j < 2 * ( cols - i ) - 1; j ++ ) {\n\n\t\t\t\t\tconst k = Math.floor( j / 2 );\n\n\t\t\t\t\tif ( j % 2 === 0 ) {\n\n\t\t\t\t\t\tpushVertex( v[ i ][ k + 1 ] );\n\t\t\t\t\t\tpushVertex( v[ i + 1 ][ k ] );\n\t\t\t\t\t\tpushVertex( v[ i ][ k ] );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tpushVertex( v[ i ][ k + 1 ] );\n\t\t\t\t\t\tpushVertex( v[ i + 1 ][ k + 1 ] );\n\t\t\t\t\t\tpushVertex( v[ i + 1 ][ k ] );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction applyRadius( radius ) {\n\n\t\t\tconst vertex = new Vector3();\n\n\t\t\t// iterate over the entire buffer and apply the radius to each vertex\n\n\t\t\tfor ( let i = 0; i < vertexBuffer.length; i += 3 ) {\n\n\t\t\t\tvertex.x = vertexBuffer[ i + 0 ];\n\t\t\t\tvertex.y = vertexBuffer[ i + 1 ];\n\t\t\t\tvertex.z = vertexBuffer[ i + 2 ];\n\n\t\t\t\tvertex.normalize().multiplyScalar( radius );\n\n\t\t\t\tvertexBuffer[ i + 0 ] = vertex.x;\n\t\t\t\tvertexBuffer[ i + 1 ] = vertex.y;\n\t\t\t\tvertexBuffer[ i + 2 ] = vertex.z;\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction generateUVs() {\n\n\t\t\tconst vertex = new Vector3();\n\n\t\t\tfor ( let i = 0; i < vertexBuffer.length; i += 3 ) {\n\n\t\t\t\tvertex.x = vertexBuffer[ i + 0 ];\n\t\t\t\tvertex.y = vertexBuffer[ i + 1 ];\n\t\t\t\tvertex.z = vertexBuffer[ i + 2 ];\n\n\t\t\t\tconst u = azimuth( vertex ) / 2 / Math.PI + 0.5;\n\t\t\t\tconst v = inclination( vertex ) / Math.PI + 0.5;\n\t\t\t\tuvBuffer.push( u, 1 - v );\n\n\t\t\t}\n\n\t\t\tcorrectUVs();\n\n\t\t\tcorrectSeam();\n\n\t\t}\n\n\t\tfunction correctSeam() {\n\n\t\t\t// handle case when face straddles the seam, see #3269\n\n\t\t\tfor ( let i = 0; i < uvBuffer.length; i += 6 ) {\n\n\t\t\t\t// uv data of a single face\n\n\t\t\t\tconst x0 = uvBuffer[ i + 0 ];\n\t\t\t\tconst x1 = uvBuffer[ i + 2 ];\n\t\t\t\tconst x2 = uvBuffer[ i + 4 ];\n\n\t\t\t\tconst max = Math.max( x0, x1, x2 );\n\t\t\t\tconst min = Math.min( x0, x1, x2 );\n\n\t\t\t\t// 0.9 is somewhat arbitrary\n\n\t\t\t\tif ( max > 0.9 && min < 0.1 ) {\n\n\t\t\t\t\tif ( x0 < 0.2 ) uvBuffer[ i + 0 ] += 1;\n\t\t\t\t\tif ( x1 < 0.2 ) uvBuffer[ i + 2 ] += 1;\n\t\t\t\t\tif ( x2 < 0.2 ) uvBuffer[ i + 4 ] += 1;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction pushVertex( vertex ) {\n\n\t\t\tvertexBuffer.push( vertex.x, vertex.y, vertex.z );\n\n\t\t}\n\n\t\tfunction getVertexByIndex( index, vertex ) {\n\n\t\t\tconst stride = index * 3;\n\n\t\t\tvertex.x = vertices[ stride + 0 ];\n\t\t\tvertex.y = vertices[ stride + 1 ];\n\t\t\tvertex.z = vertices[ stride + 2 ];\n\n\t\t}\n\n\t\tfunction correctUVs() {\n\n\t\t\tconst a = new Vector3();\n\t\t\tconst b = new Vector3();\n\t\t\tconst c = new Vector3();\n\n\t\t\tconst centroid = new Vector3();\n\n\t\t\tconst uvA = new Vector2();\n\t\t\tconst uvB = new Vector2();\n\t\t\tconst uvC = new Vector2();\n\n\t\t\tfor ( let i = 0, j = 0; i < vertexBuffer.length; i += 9, j += 6 ) {\n\n\t\t\t\ta.set( vertexBuffer[ i + 0 ], vertexBuffer[ i + 1 ], vertexBuffer[ i + 2 ] );\n\t\t\t\tb.set( vertexBuffer[ i + 3 ], vertexBuffer[ i + 4 ], vertexBuffer[ i + 5 ] );\n\t\t\t\tc.set( vertexBuffer[ i + 6 ], vertexBuffer[ i + 7 ], vertexBuffer[ i + 8 ] );\n\n\t\t\t\tuvA.set( uvBuffer[ j + 0 ], uvBuffer[ j + 1 ] );\n\t\t\t\tuvB.set( uvBuffer[ j + 2 ], uvBuffer[ j + 3 ] );\n\t\t\t\tuvC.set( uvBuffer[ j + 4 ], uvBuffer[ j + 5 ] );\n\n\t\t\t\tcentroid.copy( a ).add( b ).add( c ).divideScalar( 3 );\n\n\t\t\t\tconst azi = azimuth( centroid );\n\n\t\t\t\tcorrectUV( uvA, j + 0, a, azi );\n\t\t\t\tcorrectUV( uvB, j + 2, b, azi );\n\t\t\t\tcorrectUV( uvC, j + 4, c, azi );\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction correctUV( uv, stride, vector, azimuth ) {\n\n\t\t\tif ( ( azimuth < 0 ) && ( uv.x === 1 ) ) {\n\n\t\t\t\tuvBuffer[ stride ] = uv.x - 1;\n\n\t\t\t}\n\n\t\t\tif ( ( vector.x === 0 ) && ( vector.z === 0 ) ) {\n\n\t\t\t\tuvBuffer[ stride ] = azimuth / 2 / Math.PI + 0.5;\n\n\t\t\t}\n\n\t\t}\n\n\t\t// Angle around the Y axis, counter-clockwise when looking from above.\n\n\t\tfunction azimuth( vector ) {\n\n\t\t\treturn Math.atan2( vector.z, - vector.x );\n\n\t\t}\n\n\n\t\t// Angle above the XZ plane.\n\n\t\tfunction inclination( vector ) {\n\n\t\t\treturn Math.atan2( - vector.y, Math.sqrt( ( vector.x * vector.x ) + ( vector.z * vector.z ) ) );\n\n\t\t}\n\n\t}\n\n\tstatic fromJSON( data ) {\n\n\t\treturn new PolyhedronGeometry( data.vertices, data.indices, data.radius, data.details );\n\n\t}\n\n}\n\nclass DodecahedronGeometry extends PolyhedronGeometry {\n\n\tconstructor( radius = 1, detail = 0 ) {\n\n\t\tconst t = ( 1 + Math.sqrt( 5 ) ) / 2;\n\t\tconst r = 1 / t;\n\n\t\tconst vertices = [\n\n\t\t\t// (±1, ±1, ±1)\n\t\t\t- 1, - 1, - 1,\t- 1, - 1, 1,\n\t\t\t- 1, 1, - 1, - 1, 1, 1,\n\t\t\t1, - 1, - 1, 1, - 1, 1,\n\t\t\t1, 1, - 1, 1, 1, 1,\n\n\t\t\t// (0, ±1/φ, ±φ)\n\t\t\t0, - r, - t, 0, - r, t,\n\t\t\t0, r, - t, 0, r, t,\n\n\t\t\t// (±1/φ, ±φ, 0)\n\t\t\t- r, - t, 0, - r, t, 0,\n\t\t\tr, - t, 0, r, t, 0,\n\n\t\t\t// (±φ, 0, ±1/φ)\n\t\t\t- t, 0, - r, t, 0, - r,\n\t\t\t- t, 0, r, t, 0, r\n\t\t];\n\n\t\tconst indices = [\n\t\t\t3, 11, 7, \t3, 7, 15, \t3, 15, 13,\n\t\t\t7, 19, 17, \t7, 17, 6, \t7, 6, 15,\n\t\t\t17, 4, 8, \t17, 8, 10, \t17, 10, 6,\n\t\t\t8, 0, 16, \t8, 16, 2, \t8, 2, 10,\n\t\t\t0, 12, 1, \t0, 1, 18, \t0, 18, 16,\n\t\t\t6, 10, 2, \t6, 2, 13, \t6, 13, 15,\n\t\t\t2, 16, 18, \t2, 18, 3, \t2, 3, 13,\n\t\t\t18, 1, 9, \t18, 9, 11, \t18, 11, 3,\n\t\t\t4, 14, 12, \t4, 12, 0, \t4, 0, 8,\n\t\t\t11, 9, 5, \t11, 5, 19, \t11, 19, 7,\n\t\t\t19, 5, 14, \t19, 14, 4, \t19, 4, 17,\n\t\t\t1, 12, 14, \t1, 14, 5, \t1, 5, 9\n\t\t];\n\n\t\tsuper( vertices, indices, radius, detail );\n\n\t\tthis.type = 'DodecahedronGeometry';\n\n\t\tthis.parameters = {\n\t\t\tradius: radius,\n\t\t\tdetail: detail\n\t\t};\n\n\t}\n\n\tstatic fromJSON( data ) {\n\n\t\treturn new DodecahedronGeometry( data.radius, data.detail );\n\n\t}\n\n}\n\nconst _v0 = new Vector3();\nconst _v1$1 = new Vector3();\nconst _normal = new Vector3();\nconst _triangle = new Triangle();\n\nclass EdgesGeometry extends BufferGeometry {\n\n\tconstructor( geometry = null, thresholdAngle = 1 ) {\n\n\t\tsuper();\n\t\tthis.type = 'EdgesGeometry';\n\n\t\tthis.parameters = {\n\t\t\tgeometry: geometry,\n\t\t\tthresholdAngle: thresholdAngle\n\t\t};\n\n\t\tif ( geometry !== null ) {\n\n\t\t\tconst precisionPoints = 4;\n\t\t\tconst precision = Math.pow( 10, precisionPoints );\n\t\t\tconst thresholdDot = Math.cos( DEG2RAD * thresholdAngle );\n\n\t\t\tconst indexAttr = geometry.getIndex();\n\t\t\tconst positionAttr = geometry.getAttribute( 'position' );\n\t\t\tconst indexCount = indexAttr ? indexAttr.count : positionAttr.count;\n\n\t\t\tconst indexArr = [ 0, 0, 0 ];\n\t\t\tconst vertKeys = [ 'a', 'b', 'c' ];\n\t\t\tconst hashes = new Array( 3 );\n\n\t\t\tconst edgeData = {};\n\t\t\tconst vertices = [];\n\t\t\tfor ( let i = 0; i < indexCount; i += 3 ) {\n\n\t\t\t\tif ( indexAttr ) {\n\n\t\t\t\t\tindexArr[ 0 ] = indexAttr.getX( i );\n\t\t\t\t\tindexArr[ 1 ] = indexAttr.getX( i + 1 );\n\t\t\t\t\tindexArr[ 2 ] = indexAttr.getX( i + 2 );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tindexArr[ 0 ] = i;\n\t\t\t\t\tindexArr[ 1 ] = i + 1;\n\t\t\t\t\tindexArr[ 2 ] = i + 2;\n\n\t\t\t\t}\n\n\t\t\t\tconst { a, b, c } = _triangle;\n\t\t\t\ta.fromBufferAttribute( positionAttr, indexArr[ 0 ] );\n\t\t\t\tb.fromBufferAttribute( positionAttr, indexArr[ 1 ] );\n\t\t\t\tc.fromBufferAttribute( positionAttr, indexArr[ 2 ] );\n\t\t\t\t_triangle.getNormal( _normal );\n\n\t\t\t\t// create hashes for the edge from the vertices\n\t\t\t\thashes[ 0 ] = `${ Math.round( a.x * precision ) },${ Math.round( a.y * precision ) },${ Math.round( a.z * precision ) }`;\n\t\t\t\thashes[ 1 ] = `${ Math.round( b.x * precision ) },${ Math.round( b.y * precision ) },${ Math.round( b.z * precision ) }`;\n\t\t\t\thashes[ 2 ] = `${ Math.round( c.x * precision ) },${ Math.round( c.y * precision ) },${ Math.round( c.z * precision ) }`;\n\n\t\t\t\t// skip degenerate triangles\n\t\t\t\tif ( hashes[ 0 ] === hashes[ 1 ] || hashes[ 1 ] === hashes[ 2 ] || hashes[ 2 ] === hashes[ 0 ] ) {\n\n\t\t\t\t\tcontinue;\n\n\t\t\t\t}\n\n\t\t\t\t// iterate over every edge\n\t\t\t\tfor ( let j = 0; j < 3; j ++ ) {\n\n\t\t\t\t\t// get the first and next vertex making up the edge\n\t\t\t\t\tconst jNext = ( j + 1 ) % 3;\n\t\t\t\t\tconst vecHash0 = hashes[ j ];\n\t\t\t\t\tconst vecHash1 = hashes[ jNext ];\n\t\t\t\t\tconst v0 = _triangle[ vertKeys[ j ] ];\n\t\t\t\t\tconst v1 = _triangle[ vertKeys[ jNext ] ];\n\n\t\t\t\t\tconst hash = `${ vecHash0 }_${ vecHash1 }`;\n\t\t\t\t\tconst reverseHash = `${ vecHash1 }_${ vecHash0 }`;\n\n\t\t\t\t\tif ( reverseHash in edgeData && edgeData[ reverseHash ] ) {\n\n\t\t\t\t\t\t// if we found a sibling edge add it into the vertex array if\n\t\t\t\t\t\t// it meets the angle threshold and delete the edge from the map.\n\t\t\t\t\t\tif ( _normal.dot( edgeData[ reverseHash ].normal ) <= thresholdDot ) {\n\n\t\t\t\t\t\t\tvertices.push( v0.x, v0.y, v0.z );\n\t\t\t\t\t\t\tvertices.push( v1.x, v1.y, v1.z );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tedgeData[ reverseHash ] = null;\n\n\t\t\t\t\t} else if ( ! ( hash in edgeData ) ) {\n\n\t\t\t\t\t\t// if we've already got an edge here then skip adding a new one\n\t\t\t\t\t\tedgeData[ hash ] = {\n\n\t\t\t\t\t\t\tindex0: indexArr[ j ],\n\t\t\t\t\t\t\tindex1: indexArr[ jNext ],\n\t\t\t\t\t\t\tnormal: _normal.clone(),\n\n\t\t\t\t\t\t};\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// iterate over all remaining, unmatched edges and add them to the vertex array\n\t\t\tfor ( const key in edgeData ) {\n\n\t\t\t\tif ( edgeData[ key ] ) {\n\n\t\t\t\t\tconst { index0, index1 } = edgeData[ key ];\n\t\t\t\t\t_v0.fromBufferAttribute( positionAttr, index0 );\n\t\t\t\t\t_v1$1.fromBufferAttribute( positionAttr, index1 );\n\n\t\t\t\t\tvertices.push( _v0.x, _v0.y, _v0.z );\n\t\t\t\t\tvertices.push( _v1$1.x, _v1$1.y, _v1$1.z );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tthis.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\n\t\t}\n\n\t}\n\n}\n\nclass Shape extends Path {\n\n\tconstructor( points ) {\n\n\t\tsuper( points );\n\n\t\tthis.uuid = generateUUID();\n\n\t\tthis.type = 'Shape';\n\n\t\tthis.holes = [];\n\n\t}\n\n\tgetPointsHoles( divisions ) {\n\n\t\tconst holesPts = [];\n\n\t\tfor ( let i = 0, l = this.holes.length; i < l; i ++ ) {\n\n\t\t\tholesPts[ i ] = this.holes[ i ].getPoints( divisions );\n\n\t\t}\n\n\t\treturn holesPts;\n\n\t}\n\n\t// get points of shape and holes (keypoints based on segments parameter)\n\n\textractPoints( divisions ) {\n\n\t\treturn {\n\n\t\t\tshape: this.getPoints( divisions ),\n\t\t\tholes: this.getPointsHoles( divisions )\n\n\t\t};\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.holes = [];\n\n\t\tfor ( let i = 0, l = source.holes.length; i < l; i ++ ) {\n\n\t\t\tconst hole = source.holes[ i ];\n\n\t\t\tthis.holes.push( hole.clone() );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON() {\n\n\t\tconst data = super.toJSON();\n\n\t\tdata.uuid = this.uuid;\n\t\tdata.holes = [];\n\n\t\tfor ( let i = 0, l = this.holes.length; i < l; i ++ ) {\n\n\t\t\tconst hole = this.holes[ i ];\n\t\t\tdata.holes.push( hole.toJSON() );\n\n\t\t}\n\n\t\treturn data;\n\n\t}\n\n\tfromJSON( json ) {\n\n\t\tsuper.fromJSON( json );\n\n\t\tthis.uuid = json.uuid;\n\t\tthis.holes = [];\n\n\t\tfor ( let i = 0, l = json.holes.length; i < l; i ++ ) {\n\n\t\t\tconst hole = json.holes[ i ];\n\t\t\tthis.holes.push( new Path().fromJSON( hole ) );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n}\n\n/**\n * Port from https://github.com/mapbox/earcut (v2.2.2)\n */\n\nconst Earcut = {\n\n\ttriangulate: function ( data, holeIndices, dim = 2 ) {\n\n\t\tconst hasHoles = holeIndices && holeIndices.length;\n\t\tconst outerLen = hasHoles ? holeIndices[ 0 ] * dim : data.length;\n\t\tlet outerNode = linkedList( data, 0, outerLen, dim, true );\n\t\tconst triangles = [];\n\n\t\tif ( ! outerNode || outerNode.next === outerNode.prev ) return triangles;\n\n\t\tlet minX, minY, maxX, maxY, x, y, invSize;\n\n\t\tif ( hasHoles ) outerNode = eliminateHoles( data, holeIndices, outerNode, dim );\n\n\t\t// if the shape is not too simple, we'll use z-order curve hash later; calculate polygon bbox\n\t\tif ( data.length > 80 * dim ) {\n\n\t\t\tminX = maxX = data[ 0 ];\n\t\t\tminY = maxY = data[ 1 ];\n\n\t\t\tfor ( let i = dim; i < outerLen; i += dim ) {\n\n\t\t\t\tx = data[ i ];\n\t\t\t\ty = data[ i + 1 ];\n\t\t\t\tif ( x < minX ) minX = x;\n\t\t\t\tif ( y < minY ) minY = y;\n\t\t\t\tif ( x > maxX ) maxX = x;\n\t\t\t\tif ( y > maxY ) maxY = y;\n\n\t\t\t}\n\n\t\t\t// minX, minY and invSize are later used to transform coords into integers for z-order calculation\n\t\t\tinvSize = Math.max( maxX - minX, maxY - minY );\n\t\t\tinvSize = invSize !== 0 ? 1 / invSize : 0;\n\n\t\t}\n\n\t\tearcutLinked( outerNode, triangles, dim, minX, minY, invSize );\n\n\t\treturn triangles;\n\n\t}\n\n};\n\n// create a circular doubly linked list from polygon points in the specified winding order\nfunction linkedList( data, start, end, dim, clockwise ) {\n\n\tlet i, last;\n\n\tif ( clockwise === ( signedArea( data, start, end, dim ) > 0 ) ) {\n\n\t\tfor ( i = start; i < end; i += dim ) last = insertNode( i, data[ i ], data[ i + 1 ], last );\n\n\t} else {\n\n\t\tfor ( i = end - dim; i >= start; i -= dim ) last = insertNode( i, data[ i ], data[ i + 1 ], last );\n\n\t}\n\n\tif ( last && equals( last, last.next ) ) {\n\n\t\tremoveNode( last );\n\t\tlast = last.next;\n\n\t}\n\n\treturn last;\n\n}\n\n// eliminate colinear or duplicate points\nfunction filterPoints( start, end ) {\n\n\tif ( ! start ) return start;\n\tif ( ! end ) end = start;\n\n\tlet p = start,\n\t\tagain;\n\tdo {\n\n\t\tagain = false;\n\n\t\tif ( ! p.steiner && ( equals( p, p.next ) || area( p.prev, p, p.next ) === 0 ) ) {\n\n\t\t\tremoveNode( p );\n\t\t\tp = end = p.prev;\n\t\t\tif ( p === p.next ) break;\n\t\t\tagain = true;\n\n\t\t} else {\n\n\t\t\tp = p.next;\n\n\t\t}\n\n\t} while ( again || p !== end );\n\n\treturn end;\n\n}\n\n// main ear slicing loop which triangulates a polygon (given as a linked list)\nfunction earcutLinked( ear, triangles, dim, minX, minY, invSize, pass ) {\n\n\tif ( ! ear ) return;\n\n\t// interlink polygon nodes in z-order\n\tif ( ! pass && invSize ) indexCurve( ear, minX, minY, invSize );\n\n\tlet stop = ear,\n\t\tprev, next;\n\n\t// iterate through ears, slicing them one by one\n\twhile ( ear.prev !== ear.next ) {\n\n\t\tprev = ear.prev;\n\t\tnext = ear.next;\n\n\t\tif ( invSize ? isEarHashed( ear, minX, minY, invSize ) : isEar( ear ) ) {\n\n\t\t\t// cut off the triangle\n\t\t\ttriangles.push( prev.i / dim );\n\t\t\ttriangles.push( ear.i / dim );\n\t\t\ttriangles.push( next.i / dim );\n\n\t\t\tremoveNode( ear );\n\n\t\t\t// skipping the next vertex leads to less sliver triangles\n\t\t\tear = next.next;\n\t\t\tstop = next.next;\n\n\t\t\tcontinue;\n\n\t\t}\n\n\t\tear = next;\n\n\t\t// if we looped through the whole remaining polygon and can't find any more ears\n\t\tif ( ear === stop ) {\n\n\t\t\t// try filtering points and slicing again\n\t\t\tif ( ! pass ) {\n\n\t\t\t\tearcutLinked( filterPoints( ear ), triangles, dim, minX, minY, invSize, 1 );\n\n\t\t\t\t// if this didn't work, try curing all small self-intersections locally\n\n\t\t\t} else if ( pass === 1 ) {\n\n\t\t\t\tear = cureLocalIntersections( filterPoints( ear ), triangles, dim );\n\t\t\t\tearcutLinked( ear, triangles, dim, minX, minY, invSize, 2 );\n\n\t\t\t\t// as a last resort, try splitting the remaining polygon into two\n\n\t\t\t} else if ( pass === 2 ) {\n\n\t\t\t\tsplitEarcut( ear, triangles, dim, minX, minY, invSize );\n\n\t\t\t}\n\n\t\t\tbreak;\n\n\t\t}\n\n\t}\n\n}\n\n// check whether a polygon node forms a valid ear with adjacent nodes\nfunction isEar( ear ) {\n\n\tconst a = ear.prev,\n\t\tb = ear,\n\t\tc = ear.next;\n\n\tif ( area( a, b, c ) >= 0 ) return false; // reflex, can't be an ear\n\n\t// now make sure we don't have other points inside the potential ear\n\tlet p = ear.next.next;\n\n\twhile ( p !== ear.prev ) {\n\n\t\tif ( pointInTriangle( a.x, a.y, b.x, b.y, c.x, c.y, p.x, p.y ) &&\n\t\t\tarea( p.prev, p, p.next ) >= 0 ) return false;\n\t\tp = p.next;\n\n\t}\n\n\treturn true;\n\n}\n\nfunction isEarHashed( ear, minX, minY, invSize ) {\n\n\tconst a = ear.prev,\n\t\tb = ear,\n\t\tc = ear.next;\n\n\tif ( area( a, b, c ) >= 0 ) return false; // reflex, can't be an ear\n\n\t// triangle bbox; min & max are calculated like this for speed\n\tconst minTX = a.x < b.x ? ( a.x < c.x ? a.x : c.x ) : ( b.x < c.x ? b.x : c.x ),\n\t\tminTY = a.y < b.y ? ( a.y < c.y ? a.y : c.y ) : ( b.y < c.y ? b.y : c.y ),\n\t\tmaxTX = a.x > b.x ? ( a.x > c.x ? a.x : c.x ) : ( b.x > c.x ? b.x : c.x ),\n\t\tmaxTY = a.y > b.y ? ( a.y > c.y ? a.y : c.y ) : ( b.y > c.y ? b.y : c.y );\n\n\t// z-order range for the current triangle bbox;\n\tconst minZ = zOrder( minTX, minTY, minX, minY, invSize ),\n\t\tmaxZ = zOrder( maxTX, maxTY, minX, minY, invSize );\n\n\tlet p = ear.prevZ,\n\t\tn = ear.nextZ;\n\n\t// look for points inside the triangle in both directions\n\twhile ( p && p.z >= minZ && n && n.z <= maxZ ) {\n\n\t\tif ( p !== ear.prev && p !== ear.next &&\n\t\t\tpointInTriangle( a.x, a.y, b.x, b.y, c.x, c.y, p.x, p.y ) &&\n\t\t\tarea( p.prev, p, p.next ) >= 0 ) return false;\n\t\tp = p.prevZ;\n\n\t\tif ( n !== ear.prev && n !== ear.next &&\n\t\t\tpointInTriangle( a.x, a.y, b.x, b.y, c.x, c.y, n.x, n.y ) &&\n\t\t\tarea( n.prev, n, n.next ) >= 0 ) return false;\n\t\tn = n.nextZ;\n\n\t}\n\n\t// look for remaining points in decreasing z-order\n\twhile ( p && p.z >= minZ ) {\n\n\t\tif ( p !== ear.prev && p !== ear.next &&\n\t\t\tpointInTriangle( a.x, a.y, b.x, b.y, c.x, c.y, p.x, p.y ) &&\n\t\t\tarea( p.prev, p, p.next ) >= 0 ) return false;\n\t\tp = p.prevZ;\n\n\t}\n\n\t// look for remaining points in increasing z-order\n\twhile ( n && n.z <= maxZ ) {\n\n\t\tif ( n !== ear.prev && n !== ear.next &&\n\t\t\tpointInTriangle( a.x, a.y, b.x, b.y, c.x, c.y, n.x, n.y ) &&\n\t\t\tarea( n.prev, n, n.next ) >= 0 ) return false;\n\t\tn = n.nextZ;\n\n\t}\n\n\treturn true;\n\n}\n\n// go through all polygon nodes and cure small local self-intersections\nfunction cureLocalIntersections( start, triangles, dim ) {\n\n\tlet p = start;\n\tdo {\n\n\t\tconst a = p.prev,\n\t\t\tb = p.next.next;\n\n\t\tif ( ! equals( a, b ) && intersects( a, p, p.next, b ) && locallyInside( a, b ) && locallyInside( b, a ) ) {\n\n\t\t\ttriangles.push( a.i / dim );\n\t\t\ttriangles.push( p.i / dim );\n\t\t\ttriangles.push( b.i / dim );\n\n\t\t\t// remove two nodes involved\n\t\t\tremoveNode( p );\n\t\t\tremoveNode( p.next );\n\n\t\t\tp = start = b;\n\n\t\t}\n\n\t\tp = p.next;\n\n\t} while ( p !== start );\n\n\treturn filterPoints( p );\n\n}\n\n// try splitting polygon into two and triangulate them independently\nfunction splitEarcut( start, triangles, dim, minX, minY, invSize ) {\n\n\t// look for a valid diagonal that divides the polygon into two\n\tlet a = start;\n\tdo {\n\n\t\tlet b = a.next.next;\n\t\twhile ( b !== a.prev ) {\n\n\t\t\tif ( a.i !== b.i && isValidDiagonal( a, b ) ) {\n\n\t\t\t\t// split the polygon in two by the diagonal\n\t\t\t\tlet c = splitPolygon( a, b );\n\n\t\t\t\t// filter colinear points around the cuts\n\t\t\t\ta = filterPoints( a, a.next );\n\t\t\t\tc = filterPoints( c, c.next );\n\n\t\t\t\t// run earcut on each half\n\t\t\t\tearcutLinked( a, triangles, dim, minX, minY, invSize );\n\t\t\t\tearcutLinked( c, triangles, dim, minX, minY, invSize );\n\t\t\t\treturn;\n\n\t\t\t}\n\n\t\t\tb = b.next;\n\n\t\t}\n\n\t\ta = a.next;\n\n\t} while ( a !== start );\n\n}\n\n// link every hole into the outer loop, producing a single-ring polygon without holes\nfunction eliminateHoles( data, holeIndices, outerNode, dim ) {\n\n\tconst queue = [];\n\tlet i, len, start, end, list;\n\n\tfor ( i = 0, len = holeIndices.length; i < len; i ++ ) {\n\n\t\tstart = holeIndices[ i ] * dim;\n\t\tend = i < len - 1 ? holeIndices[ i + 1 ] * dim : data.length;\n\t\tlist = linkedList( data, start, end, dim, false );\n\t\tif ( list === list.next ) list.steiner = true;\n\t\tqueue.push( getLeftmost( list ) );\n\n\t}\n\n\tqueue.sort( compareX );\n\n\t// process holes from left to right\n\tfor ( i = 0; i < queue.length; i ++ ) {\n\n\t\teliminateHole( queue[ i ], outerNode );\n\t\touterNode = filterPoints( outerNode, outerNode.next );\n\n\t}\n\n\treturn outerNode;\n\n}\n\nfunction compareX( a, b ) {\n\n\treturn a.x - b.x;\n\n}\n\n// find a bridge between vertices that connects hole with an outer ring and link it\nfunction eliminateHole( hole, outerNode ) {\n\n\touterNode = findHoleBridge( hole, outerNode );\n\tif ( outerNode ) {\n\n\t\tconst b = splitPolygon( outerNode, hole );\n\n\t\t// filter collinear points around the cuts\n\t\tfilterPoints( outerNode, outerNode.next );\n\t\tfilterPoints( b, b.next );\n\n\t}\n\n}\n\n// David Eberly's algorithm for finding a bridge between hole and outer polygon\nfunction findHoleBridge( hole, outerNode ) {\n\n\tlet p = outerNode;\n\tconst hx = hole.x;\n\tconst hy = hole.y;\n\tlet qx = - Infinity, m;\n\n\t// find a segment intersected by a ray from the hole's leftmost point to the left;\n\t// segment's endpoint with lesser x will be potential connection point\n\tdo {\n\n\t\tif ( hy <= p.y && hy >= p.next.y && p.next.y !== p.y ) {\n\n\t\t\tconst x = p.x + ( hy - p.y ) * ( p.next.x - p.x ) / ( p.next.y - p.y );\n\t\t\tif ( x <= hx && x > qx ) {\n\n\t\t\t\tqx = x;\n\t\t\t\tif ( x === hx ) {\n\n\t\t\t\t\tif ( hy === p.y ) return p;\n\t\t\t\t\tif ( hy === p.next.y ) return p.next;\n\n\t\t\t\t}\n\n\t\t\t\tm = p.x < p.next.x ? p : p.next;\n\n\t\t\t}\n\n\t\t}\n\n\t\tp = p.next;\n\n\t} while ( p !== outerNode );\n\n\tif ( ! m ) return null;\n\n\tif ( hx === qx ) return m; // hole touches outer segment; pick leftmost endpoint\n\n\t// look for points inside the triangle of hole point, segment intersection and endpoint;\n\t// if there are no points found, we have a valid connection;\n\t// otherwise choose the point of the minimum angle with the ray as connection point\n\n\tconst stop = m,\n\t\tmx = m.x,\n\t\tmy = m.y;\n\tlet tanMin = Infinity, tan;\n\n\tp = m;\n\n\tdo {\n\n\t\tif ( hx >= p.x && p.x >= mx && hx !== p.x &&\n\t\t\t\tpointInTriangle( hy < my ? hx : qx, hy, mx, my, hy < my ? qx : hx, hy, p.x, p.y ) ) {\n\n\t\t\ttan = Math.abs( hy - p.y ) / ( hx - p.x ); // tangential\n\n\t\t\tif ( locallyInside( p, hole ) && ( tan < tanMin || ( tan === tanMin && ( p.x > m.x || ( p.x === m.x && sectorContainsSector( m, p ) ) ) ) ) ) {\n\n\t\t\t\tm = p;\n\t\t\t\ttanMin = tan;\n\n\t\t\t}\n\n\t\t}\n\n\t\tp = p.next;\n\n\t} while ( p !== stop );\n\n\treturn m;\n\n}\n\n// whether sector in vertex m contains sector in vertex p in the same coordinates\nfunction sectorContainsSector( m, p ) {\n\n\treturn area( m.prev, m, p.prev ) < 0 && area( p.next, m, m.next ) < 0;\n\n}\n\n// interlink polygon nodes in z-order\nfunction indexCurve( start, minX, minY, invSize ) {\n\n\tlet p = start;\n\tdo {\n\n\t\tif ( p.z === null ) p.z = zOrder( p.x, p.y, minX, minY, invSize );\n\t\tp.prevZ = p.prev;\n\t\tp.nextZ = p.next;\n\t\tp = p.next;\n\n\t} while ( p !== start );\n\n\tp.prevZ.nextZ = null;\n\tp.prevZ = null;\n\n\tsortLinked( p );\n\n}\n\n// Simon Tatham's linked list merge sort algorithm\n// http://www.chiark.greenend.org.uk/~sgtatham/algorithms/listsort.html\nfunction sortLinked( list ) {\n\n\tlet i, p, q, e, tail, numMerges, pSize, qSize,\n\t\tinSize = 1;\n\n\tdo {\n\n\t\tp = list;\n\t\tlist = null;\n\t\ttail = null;\n\t\tnumMerges = 0;\n\n\t\twhile ( p ) {\n\n\t\t\tnumMerges ++;\n\t\t\tq = p;\n\t\t\tpSize = 0;\n\t\t\tfor ( i = 0; i < inSize; i ++ ) {\n\n\t\t\t\tpSize ++;\n\t\t\t\tq = q.nextZ;\n\t\t\t\tif ( ! q ) break;\n\n\t\t\t}\n\n\t\t\tqSize = inSize;\n\n\t\t\twhile ( pSize > 0 || ( qSize > 0 && q ) ) {\n\n\t\t\t\tif ( pSize !== 0 && ( qSize === 0 || ! q || p.z <= q.z ) ) {\n\n\t\t\t\t\te = p;\n\t\t\t\t\tp = p.nextZ;\n\t\t\t\t\tpSize --;\n\n\t\t\t\t} else {\n\n\t\t\t\t\te = q;\n\t\t\t\t\tq = q.nextZ;\n\t\t\t\t\tqSize --;\n\n\t\t\t\t}\n\n\t\t\t\tif ( tail ) tail.nextZ = e;\n\t\t\t\telse list = e;\n\n\t\t\t\te.prevZ = tail;\n\t\t\t\ttail = e;\n\n\t\t\t}\n\n\t\t\tp = q;\n\n\t\t}\n\n\t\ttail.nextZ = null;\n\t\tinSize *= 2;\n\n\t} while ( numMerges > 1 );\n\n\treturn list;\n\n}\n\n// z-order of a point given coords and inverse of the longer side of data bbox\nfunction zOrder( x, y, minX, minY, invSize ) {\n\n\t// coords are transformed into non-negative 15-bit integer range\n\tx = 32767 * ( x - minX ) * invSize;\n\ty = 32767 * ( y - minY ) * invSize;\n\n\tx = ( x | ( x << 8 ) ) & 0x00FF00FF;\n\tx = ( x | ( x << 4 ) ) & 0x0F0F0F0F;\n\tx = ( x | ( x << 2 ) ) & 0x33333333;\n\tx = ( x | ( x << 1 ) ) & 0x55555555;\n\n\ty = ( y | ( y << 8 ) ) & 0x00FF00FF;\n\ty = ( y | ( y << 4 ) ) & 0x0F0F0F0F;\n\ty = ( y | ( y << 2 ) ) & 0x33333333;\n\ty = ( y | ( y << 1 ) ) & 0x55555555;\n\n\treturn x | ( y << 1 );\n\n}\n\n// find the leftmost node of a polygon ring\nfunction getLeftmost( start ) {\n\n\tlet p = start,\n\t\tleftmost = start;\n\tdo {\n\n\t\tif ( p.x < leftmost.x || ( p.x === leftmost.x && p.y < leftmost.y ) ) leftmost = p;\n\t\tp = p.next;\n\n\t} while ( p !== start );\n\n\treturn leftmost;\n\n}\n\n// check if a point lies within a convex triangle\nfunction pointInTriangle( ax, ay, bx, by, cx, cy, px, py ) {\n\n\treturn ( cx - px ) * ( ay - py ) - ( ax - px ) * ( cy - py ) >= 0 &&\n\t\t\t( ax - px ) * ( by - py ) - ( bx - px ) * ( ay - py ) >= 0 &&\n\t\t\t( bx - px ) * ( cy - py ) - ( cx - px ) * ( by - py ) >= 0;\n\n}\n\n// check if a diagonal between two polygon nodes is valid (lies in polygon interior)\nfunction isValidDiagonal( a, b ) {\n\n\treturn a.next.i !== b.i && a.prev.i !== b.i && ! intersectsPolygon( a, b ) && // doesn't intersect other edges\n\t\t( locallyInside( a, b ) && locallyInside( b, a ) && middleInside( a, b ) && // locally visible\n\t\t( area( a.prev, a, b.prev ) || area( a, b.prev, b ) ) || // does not create opposite-facing sectors\n\t\tequals( a, b ) && area( a.prev, a, a.next ) > 0 && area( b.prev, b, b.next ) > 0 ); // special zero-length case\n\n}\n\n// signed area of a triangle\nfunction area( p, q, r ) {\n\n\treturn ( q.y - p.y ) * ( r.x - q.x ) - ( q.x - p.x ) * ( r.y - q.y );\n\n}\n\n// check if two points are equal\nfunction equals( p1, p2 ) {\n\n\treturn p1.x === p2.x && p1.y === p2.y;\n\n}\n\n// check if two segments intersect\nfunction intersects( p1, q1, p2, q2 ) {\n\n\tconst o1 = sign( area( p1, q1, p2 ) );\n\tconst o2 = sign( area( p1, q1, q2 ) );\n\tconst o3 = sign( area( p2, q2, p1 ) );\n\tconst o4 = sign( area( p2, q2, q1 ) );\n\n\tif ( o1 !== o2 && o3 !== o4 ) return true; // general case\n\n\tif ( o1 === 0 && onSegment( p1, p2, q1 ) ) return true; // p1, q1 and p2 are collinear and p2 lies on p1q1\n\tif ( o2 === 0 && onSegment( p1, q2, q1 ) ) return true; // p1, q1 and q2 are collinear and q2 lies on p1q1\n\tif ( o3 === 0 && onSegment( p2, p1, q2 ) ) return true; // p2, q2 and p1 are collinear and p1 lies on p2q2\n\tif ( o4 === 0 && onSegment( p2, q1, q2 ) ) return true; // p2, q2 and q1 are collinear and q1 lies on p2q2\n\n\treturn false;\n\n}\n\n// for collinear points p, q, r, check if point q lies on segment pr\nfunction onSegment( p, q, r ) {\n\n\treturn q.x <= Math.max( p.x, r.x ) && q.x >= Math.min( p.x, r.x ) && q.y <= Math.max( p.y, r.y ) && q.y >= Math.min( p.y, r.y );\n\n}\n\nfunction sign( num ) {\n\n\treturn num > 0 ? 1 : num < 0 ? - 1 : 0;\n\n}\n\n// check if a polygon diagonal intersects any polygon segments\nfunction intersectsPolygon( a, b ) {\n\n\tlet p = a;\n\tdo {\n\n\t\tif ( p.i !== a.i && p.next.i !== a.i && p.i !== b.i && p.next.i !== b.i &&\n\t\t\t\tintersects( p, p.next, a, b ) ) return true;\n\t\tp = p.next;\n\n\t} while ( p !== a );\n\n\treturn false;\n\n}\n\n// check if a polygon diagonal is locally inside the polygon\nfunction locallyInside( a, b ) {\n\n\treturn area( a.prev, a, a.next ) < 0 ?\n\t\tarea( a, b, a.next ) >= 0 && area( a, a.prev, b ) >= 0 :\n\t\tarea( a, b, a.prev ) < 0 || area( a, a.next, b ) < 0;\n\n}\n\n// check if the middle point of a polygon diagonal is inside the polygon\nfunction middleInside( a, b ) {\n\n\tlet p = a,\n\t\tinside = false;\n\tconst px = ( a.x + b.x ) / 2,\n\t\tpy = ( a.y + b.y ) / 2;\n\tdo {\n\n\t\tif ( ( ( p.y > py ) !== ( p.next.y > py ) ) && p.next.y !== p.y &&\n\t\t\t\t( px < ( p.next.x - p.x ) * ( py - p.y ) / ( p.next.y - p.y ) + p.x ) )\n\t\t\tinside = ! inside;\n\t\tp = p.next;\n\n\t} while ( p !== a );\n\n\treturn inside;\n\n}\n\n// link two polygon vertices with a bridge; if the vertices belong to the same ring, it splits polygon into two;\n// if one belongs to the outer ring and another to a hole, it merges it into a single ring\nfunction splitPolygon( a, b ) {\n\n\tconst a2 = new Node( a.i, a.x, a.y ),\n\t\tb2 = new Node( b.i, b.x, b.y ),\n\t\tan = a.next,\n\t\tbp = b.prev;\n\n\ta.next = b;\n\tb.prev = a;\n\n\ta2.next = an;\n\tan.prev = a2;\n\n\tb2.next = a2;\n\ta2.prev = b2;\n\n\tbp.next = b2;\n\tb2.prev = bp;\n\n\treturn b2;\n\n}\n\n// create a node and optionally link it with previous one (in a circular doubly linked list)\nfunction insertNode( i, x, y, last ) {\n\n\tconst p = new Node( i, x, y );\n\n\tif ( ! last ) {\n\n\t\tp.prev = p;\n\t\tp.next = p;\n\n\t} else {\n\n\t\tp.next = last.next;\n\t\tp.prev = last;\n\t\tlast.next.prev = p;\n\t\tlast.next = p;\n\n\t}\n\n\treturn p;\n\n}\n\nfunction removeNode( p ) {\n\n\tp.next.prev = p.prev;\n\tp.prev.next = p.next;\n\n\tif ( p.prevZ ) p.prevZ.nextZ = p.nextZ;\n\tif ( p.nextZ ) p.nextZ.prevZ = p.prevZ;\n\n}\n\nfunction Node( i, x, y ) {\n\n\t// vertex index in coordinates array\n\tthis.i = i;\n\n\t// vertex coordinates\n\tthis.x = x;\n\tthis.y = y;\n\n\t// previous and next vertex nodes in a polygon ring\n\tthis.prev = null;\n\tthis.next = null;\n\n\t// z-order curve value\n\tthis.z = null;\n\n\t// previous and next nodes in z-order\n\tthis.prevZ = null;\n\tthis.nextZ = null;\n\n\t// indicates whether this is a steiner point\n\tthis.steiner = false;\n\n}\n\nfunction signedArea( data, start, end, dim ) {\n\n\tlet sum = 0;\n\tfor ( let i = start, j = end - dim; i < end; i += dim ) {\n\n\t\tsum += ( data[ j ] - data[ i ] ) * ( data[ i + 1 ] + data[ j + 1 ] );\n\t\tj = i;\n\n\t}\n\n\treturn sum;\n\n}\n\nclass ShapeUtils {\n\n\t// calculate area of the contour polygon\n\n\tstatic area( contour ) {\n\n\t\tconst n = contour.length;\n\t\tlet a = 0.0;\n\n\t\tfor ( let p = n - 1, q = 0; q < n; p = q ++ ) {\n\n\t\t\ta += contour[ p ].x * contour[ q ].y - contour[ q ].x * contour[ p ].y;\n\n\t\t}\n\n\t\treturn a * 0.5;\n\n\t}\n\n\tstatic isClockWise( pts ) {\n\n\t\treturn ShapeUtils.area( pts ) < 0;\n\n\t}\n\n\tstatic triangulateShape( contour, holes ) {\n\n\t\tconst vertices = []; // flat array of vertices like [ x0,y0, x1,y1, x2,y2, ... ]\n\t\tconst holeIndices = []; // array of hole indices\n\t\tconst faces = []; // final array of vertex indices like [ [ a,b,d ], [ b,c,d ] ]\n\n\t\tremoveDupEndPts( contour );\n\t\taddContour( vertices, contour );\n\n\t\t//\n\n\t\tlet holeIndex = contour.length;\n\n\t\tholes.forEach( removeDupEndPts );\n\n\t\tfor ( let i = 0; i < holes.length; i ++ ) {\n\n\t\t\tholeIndices.push( holeIndex );\n\t\t\tholeIndex += holes[ i ].length;\n\t\t\taddContour( vertices, holes[ i ] );\n\n\t\t}\n\n\t\t//\n\n\t\tconst triangles = Earcut.triangulate( vertices, holeIndices );\n\n\t\t//\n\n\t\tfor ( let i = 0; i < triangles.length; i += 3 ) {\n\n\t\t\tfaces.push( triangles.slice( i, i + 3 ) );\n\n\t\t}\n\n\t\treturn faces;\n\n\t}\n\n}\n\nfunction removeDupEndPts( points ) {\n\n\tconst l = points.length;\n\n\tif ( l > 2 && points[ l - 1 ].equals( points[ 0 ] ) ) {\n\n\t\tpoints.pop();\n\n\t}\n\n}\n\nfunction addContour( vertices, contour ) {\n\n\tfor ( let i = 0; i < contour.length; i ++ ) {\n\n\t\tvertices.push( contour[ i ].x );\n\t\tvertices.push( contour[ i ].y );\n\n\t}\n\n}\n\n/**\n * Creates extruded geometry from a path shape.\n *\n * parameters = {\n *\n * curveSegments: , // number of points on the curves\n * steps: , // number of points for z-side extrusions / used for subdividing segments of extrude spline too\n * depth: , // Depth to extrude the shape\n *\n * bevelEnabled: , // turn on bevel\n * bevelThickness: , // how deep into the original shape bevel goes\n * bevelSize: , // how far from shape outline (including bevelOffset) is bevel\n * bevelOffset: , // how far from shape outline does bevel start\n * bevelSegments: , // number of bevel layers\n *\n * extrudePath: // curve to extrude shape along\n *\n * UVGenerator: // object that provides UV generator functions\n *\n * }\n */\n\nclass ExtrudeGeometry extends BufferGeometry {\n\n\tconstructor( shapes = new Shape( [ new Vector2( 0.5, 0.5 ), new Vector2( - 0.5, 0.5 ), new Vector2( - 0.5, - 0.5 ), new Vector2( 0.5, - 0.5 ) ] ), options = {} ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'ExtrudeGeometry';\n\n\t\tthis.parameters = {\n\t\t\tshapes: shapes,\n\t\t\toptions: options\n\t\t};\n\n\t\tshapes = Array.isArray( shapes ) ? shapes : [ shapes ];\n\n\t\tconst scope = this;\n\n\t\tconst verticesArray = [];\n\t\tconst uvArray = [];\n\n\t\tfor ( let i = 0, l = shapes.length; i < l; i ++ ) {\n\n\t\t\tconst shape = shapes[ i ];\n\t\t\taddShape( shape );\n\n\t\t}\n\n\t\t// build geometry\n\n\t\tthis.setAttribute( 'position', new Float32BufferAttribute( verticesArray, 3 ) );\n\t\tthis.setAttribute( 'uv', new Float32BufferAttribute( uvArray, 2 ) );\n\n\t\tthis.computeVertexNormals();\n\n\t\t// functions\n\n\t\tfunction addShape( shape ) {\n\n\t\t\tconst placeholder = [];\n\n\t\t\t// options\n\n\t\t\tconst curveSegments = options.curveSegments !== undefined ? options.curveSegments : 12;\n\t\t\tconst steps = options.steps !== undefined ? options.steps : 1;\n\t\t\tlet depth = options.depth !== undefined ? options.depth : 1;\n\n\t\t\tlet bevelEnabled = options.bevelEnabled !== undefined ? options.bevelEnabled : true;\n\t\t\tlet bevelThickness = options.bevelThickness !== undefined ? options.bevelThickness : 0.2;\n\t\t\tlet bevelSize = options.bevelSize !== undefined ? options.bevelSize : bevelThickness - 0.1;\n\t\t\tlet bevelOffset = options.bevelOffset !== undefined ? options.bevelOffset : 0;\n\t\t\tlet bevelSegments = options.bevelSegments !== undefined ? options.bevelSegments : 3;\n\n\t\t\tconst extrudePath = options.extrudePath;\n\n\t\t\tconst uvgen = options.UVGenerator !== undefined ? options.UVGenerator : WorldUVGenerator;\n\n\t\t\t// deprecated options\n\n\t\t\tif ( options.amount !== undefined ) {\n\n\t\t\t\tconsole.warn( 'THREE.ExtrudeBufferGeometry: amount has been renamed to depth.' );\n\t\t\t\tdepth = options.amount;\n\n\t\t\t}\n\n\t\t\t//\n\n\t\t\tlet extrudePts, extrudeByPath = false;\n\t\t\tlet splineTube, binormal, normal, position2;\n\n\t\t\tif ( extrudePath ) {\n\n\t\t\t\textrudePts = extrudePath.getSpacedPoints( steps );\n\n\t\t\t\textrudeByPath = true;\n\t\t\t\tbevelEnabled = false; // bevels not supported for path extrusion\n\n\t\t\t\t// SETUP TNB variables\n\n\t\t\t\t// TODO1 - have a .isClosed in spline?\n\n\t\t\t\tsplineTube = extrudePath.computeFrenetFrames( steps, false );\n\n\t\t\t\t// console.log(splineTube, 'splineTube', splineTube.normals.length, 'steps', steps, 'extrudePts', extrudePts.length);\n\n\t\t\t\tbinormal = new Vector3();\n\t\t\t\tnormal = new Vector3();\n\t\t\t\tposition2 = new Vector3();\n\n\t\t\t}\n\n\t\t\t// Safeguards if bevels are not enabled\n\n\t\t\tif ( ! bevelEnabled ) {\n\n\t\t\t\tbevelSegments = 0;\n\t\t\t\tbevelThickness = 0;\n\t\t\t\tbevelSize = 0;\n\t\t\t\tbevelOffset = 0;\n\n\t\t\t}\n\n\t\t\t// Variables initialization\n\n\t\t\tconst shapePoints = shape.extractPoints( curveSegments );\n\n\t\t\tlet vertices = shapePoints.shape;\n\t\t\tconst holes = shapePoints.holes;\n\n\t\t\tconst reverse = ! ShapeUtils.isClockWise( vertices );\n\n\t\t\tif ( reverse ) {\n\n\t\t\t\tvertices = vertices.reverse();\n\n\t\t\t\t// Maybe we should also check if holes are in the opposite direction, just to be safe ...\n\n\t\t\t\tfor ( let h = 0, hl = holes.length; h < hl; h ++ ) {\n\n\t\t\t\t\tconst ahole = holes[ h ];\n\n\t\t\t\t\tif ( ShapeUtils.isClockWise( ahole ) ) {\n\n\t\t\t\t\t\tholes[ h ] = ahole.reverse();\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\n\t\t\tconst faces = ShapeUtils.triangulateShape( vertices, holes );\n\n\t\t\t/* Vertices */\n\n\t\t\tconst contour = vertices; // vertices has all points but contour has only points of circumference\n\n\t\t\tfor ( let h = 0, hl = holes.length; h < hl; h ++ ) {\n\n\t\t\t\tconst ahole = holes[ h ];\n\n\t\t\t\tvertices = vertices.concat( ahole );\n\n\t\t\t}\n\n\n\t\t\tfunction scalePt2( pt, vec, size ) {\n\n\t\t\t\tif ( ! vec ) console.error( 'THREE.ExtrudeGeometry: vec does not exist' );\n\n\t\t\t\treturn vec.clone().multiplyScalar( size ).add( pt );\n\n\t\t\t}\n\n\t\t\tconst vlen = vertices.length, flen = faces.length;\n\n\n\t\t\t// Find directions for point movement\n\n\n\t\t\tfunction getBevelVec( inPt, inPrev, inNext ) {\n\n\t\t\t\t// computes for inPt the corresponding point inPt' on a new contour\n\t\t\t\t// shifted by 1 unit (length of normalized vector) to the left\n\t\t\t\t// if we walk along contour clockwise, this new contour is outside the old one\n\t\t\t\t//\n\t\t\t\t// inPt' is the intersection of the two lines parallel to the two\n\t\t\t\t// adjacent edges of inPt at a distance of 1 unit on the left side.\n\n\t\t\t\tlet v_trans_x, v_trans_y, shrink_by; // resulting translation vector for inPt\n\n\t\t\t\t// good reading for geometry algorithms (here: line-line intersection)\n\t\t\t\t// http://geomalgorithms.com/a05-_intersect-1.html\n\n\t\t\t\tconst v_prev_x = inPt.x - inPrev.x,\n\t\t\t\t\tv_prev_y = inPt.y - inPrev.y;\n\t\t\t\tconst v_next_x = inNext.x - inPt.x,\n\t\t\t\t\tv_next_y = inNext.y - inPt.y;\n\n\t\t\t\tconst v_prev_lensq = ( v_prev_x * v_prev_x + v_prev_y * v_prev_y );\n\n\t\t\t\t// check for collinear edges\n\t\t\t\tconst collinear0 = ( v_prev_x * v_next_y - v_prev_y * v_next_x );\n\n\t\t\t\tif ( Math.abs( collinear0 ) > Number.EPSILON ) {\n\n\t\t\t\t\t// not collinear\n\n\t\t\t\t\t// length of vectors for normalizing\n\n\t\t\t\t\tconst v_prev_len = Math.sqrt( v_prev_lensq );\n\t\t\t\t\tconst v_next_len = Math.sqrt( v_next_x * v_next_x + v_next_y * v_next_y );\n\n\t\t\t\t\t// shift adjacent points by unit vectors to the left\n\n\t\t\t\t\tconst ptPrevShift_x = ( inPrev.x - v_prev_y / v_prev_len );\n\t\t\t\t\tconst ptPrevShift_y = ( inPrev.y + v_prev_x / v_prev_len );\n\n\t\t\t\t\tconst ptNextShift_x = ( inNext.x - v_next_y / v_next_len );\n\t\t\t\t\tconst ptNextShift_y = ( inNext.y + v_next_x / v_next_len );\n\n\t\t\t\t\t// scaling factor for v_prev to intersection point\n\n\t\t\t\t\tconst sf = ( ( ptNextShift_x - ptPrevShift_x ) * v_next_y -\n\t\t\t\t\t\t\t( ptNextShift_y - ptPrevShift_y ) * v_next_x ) /\n\t\t\t\t\t\t( v_prev_x * v_next_y - v_prev_y * v_next_x );\n\n\t\t\t\t\t// vector from inPt to intersection point\n\n\t\t\t\t\tv_trans_x = ( ptPrevShift_x + v_prev_x * sf - inPt.x );\n\t\t\t\t\tv_trans_y = ( ptPrevShift_y + v_prev_y * sf - inPt.y );\n\n\t\t\t\t\t// Don't normalize!, otherwise sharp corners become ugly\n\t\t\t\t\t// but prevent crazy spikes\n\t\t\t\t\tconst v_trans_lensq = ( v_trans_x * v_trans_x + v_trans_y * v_trans_y );\n\t\t\t\t\tif ( v_trans_lensq <= 2 ) {\n\n\t\t\t\t\t\treturn new Vector2( v_trans_x, v_trans_y );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tshrink_by = Math.sqrt( v_trans_lensq / 2 );\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// handle special case of collinear edges\n\n\t\t\t\t\tlet direction_eq = false; // assumes: opposite\n\n\t\t\t\t\tif ( v_prev_x > Number.EPSILON ) {\n\n\t\t\t\t\t\tif ( v_next_x > Number.EPSILON ) {\n\n\t\t\t\t\t\t\tdirection_eq = true;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tif ( v_prev_x < - Number.EPSILON ) {\n\n\t\t\t\t\t\t\tif ( v_next_x < - Number.EPSILON ) {\n\n\t\t\t\t\t\t\t\tdirection_eq = true;\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\tif ( Math.sign( v_prev_y ) === Math.sign( v_next_y ) ) {\n\n\t\t\t\t\t\t\t\tdirection_eq = true;\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( direction_eq ) {\n\n\t\t\t\t\t\t// console.log(\"Warning: lines are a straight sequence\");\n\t\t\t\t\t\tv_trans_x = - v_prev_y;\n\t\t\t\t\t\tv_trans_y = v_prev_x;\n\t\t\t\t\t\tshrink_by = Math.sqrt( v_prev_lensq );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\t// console.log(\"Warning: lines are a straight spike\");\n\t\t\t\t\t\tv_trans_x = v_prev_x;\n\t\t\t\t\t\tv_trans_y = v_prev_y;\n\t\t\t\t\t\tshrink_by = Math.sqrt( v_prev_lensq / 2 );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\treturn new Vector2( v_trans_x / shrink_by, v_trans_y / shrink_by );\n\n\t\t\t}\n\n\n\t\t\tconst contourMovements = [];\n\n\t\t\tfor ( let i = 0, il = contour.length, j = il - 1, k = i + 1; i < il; i ++, j ++, k ++ ) {\n\n\t\t\t\tif ( j === il ) j = 0;\n\t\t\t\tif ( k === il ) k = 0;\n\n\t\t\t\t// (j)---(i)---(k)\n\t\t\t\t// console.log('i,j,k', i, j , k)\n\n\t\t\t\tcontourMovements[ i ] = getBevelVec( contour[ i ], contour[ j ], contour[ k ] );\n\n\t\t\t}\n\n\t\t\tconst holesMovements = [];\n\t\t\tlet oneHoleMovements, verticesMovements = contourMovements.concat();\n\n\t\t\tfor ( let h = 0, hl = holes.length; h < hl; h ++ ) {\n\n\t\t\t\tconst ahole = holes[ h ];\n\n\t\t\t\toneHoleMovements = [];\n\n\t\t\t\tfor ( let i = 0, il = ahole.length, j = il - 1, k = i + 1; i < il; i ++, j ++, k ++ ) {\n\n\t\t\t\t\tif ( j === il ) j = 0;\n\t\t\t\t\tif ( k === il ) k = 0;\n\n\t\t\t\t\t// (j)---(i)---(k)\n\t\t\t\t\toneHoleMovements[ i ] = getBevelVec( ahole[ i ], ahole[ j ], ahole[ k ] );\n\n\t\t\t\t}\n\n\t\t\t\tholesMovements.push( oneHoleMovements );\n\t\t\t\tverticesMovements = verticesMovements.concat( oneHoleMovements );\n\n\t\t\t}\n\n\n\t\t\t// Loop bevelSegments, 1 for the front, 1 for the back\n\n\t\t\tfor ( let b = 0; b < bevelSegments; b ++ ) {\n\n\t\t\t\t//for ( b = bevelSegments; b > 0; b -- ) {\n\n\t\t\t\tconst t = b / bevelSegments;\n\t\t\t\tconst z = bevelThickness * Math.cos( t * Math.PI / 2 );\n\t\t\t\tconst bs = bevelSize * Math.sin( t * Math.PI / 2 ) + bevelOffset;\n\n\t\t\t\t// contract shape\n\n\t\t\t\tfor ( let i = 0, il = contour.length; i < il; i ++ ) {\n\n\t\t\t\t\tconst vert = scalePt2( contour[ i ], contourMovements[ i ], bs );\n\n\t\t\t\t\tv( vert.x, vert.y, - z );\n\n\t\t\t\t}\n\n\t\t\t\t// expand holes\n\n\t\t\t\tfor ( let h = 0, hl = holes.length; h < hl; h ++ ) {\n\n\t\t\t\t\tconst ahole = holes[ h ];\n\t\t\t\t\toneHoleMovements = holesMovements[ h ];\n\n\t\t\t\t\tfor ( let i = 0, il = ahole.length; i < il; i ++ ) {\n\n\t\t\t\t\t\tconst vert = scalePt2( ahole[ i ], oneHoleMovements[ i ], bs );\n\n\t\t\t\t\t\tv( vert.x, vert.y, - z );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tconst bs = bevelSize + bevelOffset;\n\n\t\t\t// Back facing vertices\n\n\t\t\tfor ( let i = 0; i < vlen; i ++ ) {\n\n\t\t\t\tconst vert = bevelEnabled ? scalePt2( vertices[ i ], verticesMovements[ i ], bs ) : vertices[ i ];\n\n\t\t\t\tif ( ! extrudeByPath ) {\n\n\t\t\t\t\tv( vert.x, vert.y, 0 );\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// v( vert.x, vert.y + extrudePts[ 0 ].y, extrudePts[ 0 ].x );\n\n\t\t\t\t\tnormal.copy( splineTube.normals[ 0 ] ).multiplyScalar( vert.x );\n\t\t\t\t\tbinormal.copy( splineTube.binormals[ 0 ] ).multiplyScalar( vert.y );\n\n\t\t\t\t\tposition2.copy( extrudePts[ 0 ] ).add( normal ).add( binormal );\n\n\t\t\t\t\tv( position2.x, position2.y, position2.z );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// Add stepped vertices...\n\t\t\t// Including front facing vertices\n\n\t\t\tfor ( let s = 1; s <= steps; s ++ ) {\n\n\t\t\t\tfor ( let i = 0; i < vlen; i ++ ) {\n\n\t\t\t\t\tconst vert = bevelEnabled ? scalePt2( vertices[ i ], verticesMovements[ i ], bs ) : vertices[ i ];\n\n\t\t\t\t\tif ( ! extrudeByPath ) {\n\n\t\t\t\t\t\tv( vert.x, vert.y, depth / steps * s );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\t// v( vert.x, vert.y + extrudePts[ s - 1 ].y, extrudePts[ s - 1 ].x );\n\n\t\t\t\t\t\tnormal.copy( splineTube.normals[ s ] ).multiplyScalar( vert.x );\n\t\t\t\t\t\tbinormal.copy( splineTube.binormals[ s ] ).multiplyScalar( vert.y );\n\n\t\t\t\t\t\tposition2.copy( extrudePts[ s ] ).add( normal ).add( binormal );\n\n\t\t\t\t\t\tv( position2.x, position2.y, position2.z );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\n\t\t\t// Add bevel segments planes\n\n\t\t\t//for ( b = 1; b <= bevelSegments; b ++ ) {\n\t\t\tfor ( let b = bevelSegments - 1; b >= 0; b -- ) {\n\n\t\t\t\tconst t = b / bevelSegments;\n\t\t\t\tconst z = bevelThickness * Math.cos( t * Math.PI / 2 );\n\t\t\t\tconst bs = bevelSize * Math.sin( t * Math.PI / 2 ) + bevelOffset;\n\n\t\t\t\t// contract shape\n\n\t\t\t\tfor ( let i = 0, il = contour.length; i < il; i ++ ) {\n\n\t\t\t\t\tconst vert = scalePt2( contour[ i ], contourMovements[ i ], bs );\n\t\t\t\t\tv( vert.x, vert.y, depth + z );\n\n\t\t\t\t}\n\n\t\t\t\t// expand holes\n\n\t\t\t\tfor ( let h = 0, hl = holes.length; h < hl; h ++ ) {\n\n\t\t\t\t\tconst ahole = holes[ h ];\n\t\t\t\t\toneHoleMovements = holesMovements[ h ];\n\n\t\t\t\t\tfor ( let i = 0, il = ahole.length; i < il; i ++ ) {\n\n\t\t\t\t\t\tconst vert = scalePt2( ahole[ i ], oneHoleMovements[ i ], bs );\n\n\t\t\t\t\t\tif ( ! extrudeByPath ) {\n\n\t\t\t\t\t\t\tv( vert.x, vert.y, depth + z );\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\tv( vert.x, vert.y + extrudePts[ steps - 1 ].y, extrudePts[ steps - 1 ].x + z );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t/* Faces */\n\n\t\t\t// Top and bottom faces\n\n\t\t\tbuildLidFaces();\n\n\t\t\t// Sides faces\n\n\t\t\tbuildSideFaces();\n\n\n\t\t\t///// Internal functions\n\n\t\t\tfunction buildLidFaces() {\n\n\t\t\t\tconst start = verticesArray.length / 3;\n\n\t\t\t\tif ( bevelEnabled ) {\n\n\t\t\t\t\tlet layer = 0; // steps + 1\n\t\t\t\t\tlet offset = vlen * layer;\n\n\t\t\t\t\t// Bottom faces\n\n\t\t\t\t\tfor ( let i = 0; i < flen; i ++ ) {\n\n\t\t\t\t\t\tconst face = faces[ i ];\n\t\t\t\t\t\tf3( face[ 2 ] + offset, face[ 1 ] + offset, face[ 0 ] + offset );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tlayer = steps + bevelSegments * 2;\n\t\t\t\t\toffset = vlen * layer;\n\n\t\t\t\t\t// Top faces\n\n\t\t\t\t\tfor ( let i = 0; i < flen; i ++ ) {\n\n\t\t\t\t\t\tconst face = faces[ i ];\n\t\t\t\t\t\tf3( face[ 0 ] + offset, face[ 1 ] + offset, face[ 2 ] + offset );\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// Bottom faces\n\n\t\t\t\t\tfor ( let i = 0; i < flen; i ++ ) {\n\n\t\t\t\t\t\tconst face = faces[ i ];\n\t\t\t\t\t\tf3( face[ 2 ], face[ 1 ], face[ 0 ] );\n\n\t\t\t\t\t}\n\n\t\t\t\t\t// Top faces\n\n\t\t\t\t\tfor ( let i = 0; i < flen; i ++ ) {\n\n\t\t\t\t\t\tconst face = faces[ i ];\n\t\t\t\t\t\tf3( face[ 0 ] + vlen * steps, face[ 1 ] + vlen * steps, face[ 2 ] + vlen * steps );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\tscope.addGroup( start, verticesArray.length / 3 - start, 0 );\n\n\t\t\t}\n\n\t\t\t// Create faces for the z-sides of the shape\n\n\t\t\tfunction buildSideFaces() {\n\n\t\t\t\tconst start = verticesArray.length / 3;\n\t\t\t\tlet layeroffset = 0;\n\t\t\t\tsidewalls( contour, layeroffset );\n\t\t\t\tlayeroffset += contour.length;\n\n\t\t\t\tfor ( let h = 0, hl = holes.length; h < hl; h ++ ) {\n\n\t\t\t\t\tconst ahole = holes[ h ];\n\t\t\t\t\tsidewalls( ahole, layeroffset );\n\n\t\t\t\t\t//, true\n\t\t\t\t\tlayeroffset += ahole.length;\n\n\t\t\t\t}\n\n\n\t\t\t\tscope.addGroup( start, verticesArray.length / 3 - start, 1 );\n\n\n\t\t\t}\n\n\t\t\tfunction sidewalls( contour, layeroffset ) {\n\n\t\t\t\tlet i = contour.length;\n\n\t\t\t\twhile ( -- i >= 0 ) {\n\n\t\t\t\t\tconst j = i;\n\t\t\t\t\tlet k = i - 1;\n\t\t\t\t\tif ( k < 0 ) k = contour.length - 1;\n\n\t\t\t\t\t//console.log('b', i,j, i-1, k,vertices.length);\n\n\t\t\t\t\tfor ( let s = 0, sl = ( steps + bevelSegments * 2 ); s < sl; s ++ ) {\n\n\t\t\t\t\t\tconst slen1 = vlen * s;\n\t\t\t\t\t\tconst slen2 = vlen * ( s + 1 );\n\n\t\t\t\t\t\tconst a = layeroffset + j + slen1,\n\t\t\t\t\t\t\tb = layeroffset + k + slen1,\n\t\t\t\t\t\t\tc = layeroffset + k + slen2,\n\t\t\t\t\t\t\td = layeroffset + j + slen2;\n\n\t\t\t\t\t\tf4( a, b, c, d );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tfunction v( x, y, z ) {\n\n\t\t\t\tplaceholder.push( x );\n\t\t\t\tplaceholder.push( y );\n\t\t\t\tplaceholder.push( z );\n\n\t\t\t}\n\n\n\t\t\tfunction f3( a, b, c ) {\n\n\t\t\t\taddVertex( a );\n\t\t\t\taddVertex( b );\n\t\t\t\taddVertex( c );\n\n\t\t\t\tconst nextIndex = verticesArray.length / 3;\n\t\t\t\tconst uvs = uvgen.generateTopUV( scope, verticesArray, nextIndex - 3, nextIndex - 2, nextIndex - 1 );\n\n\t\t\t\taddUV( uvs[ 0 ] );\n\t\t\t\taddUV( uvs[ 1 ] );\n\t\t\t\taddUV( uvs[ 2 ] );\n\n\t\t\t}\n\n\t\t\tfunction f4( a, b, c, d ) {\n\n\t\t\t\taddVertex( a );\n\t\t\t\taddVertex( b );\n\t\t\t\taddVertex( d );\n\n\t\t\t\taddVertex( b );\n\t\t\t\taddVertex( c );\n\t\t\t\taddVertex( d );\n\n\n\t\t\t\tconst nextIndex = verticesArray.length / 3;\n\t\t\t\tconst uvs = uvgen.generateSideWallUV( scope, verticesArray, nextIndex - 6, nextIndex - 3, nextIndex - 2, nextIndex - 1 );\n\n\t\t\t\taddUV( uvs[ 0 ] );\n\t\t\t\taddUV( uvs[ 1 ] );\n\t\t\t\taddUV( uvs[ 3 ] );\n\n\t\t\t\taddUV( uvs[ 1 ] );\n\t\t\t\taddUV( uvs[ 2 ] );\n\t\t\t\taddUV( uvs[ 3 ] );\n\n\t\t\t}\n\n\t\t\tfunction addVertex( index ) {\n\n\t\t\t\tverticesArray.push( placeholder[ index * 3 + 0 ] );\n\t\t\t\tverticesArray.push( placeholder[ index * 3 + 1 ] );\n\t\t\t\tverticesArray.push( placeholder[ index * 3 + 2 ] );\n\n\t\t\t}\n\n\n\t\t\tfunction addUV( vector2 ) {\n\n\t\t\t\tuvArray.push( vector2.x );\n\t\t\t\tuvArray.push( vector2.y );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\ttoJSON() {\n\n\t\tconst data = super.toJSON();\n\n\t\tconst shapes = this.parameters.shapes;\n\t\tconst options = this.parameters.options;\n\n\t\treturn toJSON$1( shapes, options, data );\n\n\t}\n\n\tstatic fromJSON( data, shapes ) {\n\n\t\tconst geometryShapes = [];\n\n\t\tfor ( let j = 0, jl = data.shapes.length; j < jl; j ++ ) {\n\n\t\t\tconst shape = shapes[ data.shapes[ j ] ];\n\n\t\t\tgeometryShapes.push( shape );\n\n\t\t}\n\n\t\tconst extrudePath = data.options.extrudePath;\n\n\t\tif ( extrudePath !== undefined ) {\n\n\t\t\tdata.options.extrudePath = new Curves[ extrudePath.type ]().fromJSON( extrudePath );\n\n\t\t}\n\n\t\treturn new ExtrudeGeometry( geometryShapes, data.options );\n\n\t}\n\n}\n\nconst WorldUVGenerator = {\n\n\tgenerateTopUV: function ( geometry, vertices, indexA, indexB, indexC ) {\n\n\t\tconst a_x = vertices[ indexA * 3 ];\n\t\tconst a_y = vertices[ indexA * 3 + 1 ];\n\t\tconst b_x = vertices[ indexB * 3 ];\n\t\tconst b_y = vertices[ indexB * 3 + 1 ];\n\t\tconst c_x = vertices[ indexC * 3 ];\n\t\tconst c_y = vertices[ indexC * 3 + 1 ];\n\n\t\treturn [\n\t\t\tnew Vector2( a_x, a_y ),\n\t\t\tnew Vector2( b_x, b_y ),\n\t\t\tnew Vector2( c_x, c_y )\n\t\t];\n\n\t},\n\n\tgenerateSideWallUV: function ( geometry, vertices, indexA, indexB, indexC, indexD ) {\n\n\t\tconst a_x = vertices[ indexA * 3 ];\n\t\tconst a_y = vertices[ indexA * 3 + 1 ];\n\t\tconst a_z = vertices[ indexA * 3 + 2 ];\n\t\tconst b_x = vertices[ indexB * 3 ];\n\t\tconst b_y = vertices[ indexB * 3 + 1 ];\n\t\tconst b_z = vertices[ indexB * 3 + 2 ];\n\t\tconst c_x = vertices[ indexC * 3 ];\n\t\tconst c_y = vertices[ indexC * 3 + 1 ];\n\t\tconst c_z = vertices[ indexC * 3 + 2 ];\n\t\tconst d_x = vertices[ indexD * 3 ];\n\t\tconst d_y = vertices[ indexD * 3 + 1 ];\n\t\tconst d_z = vertices[ indexD * 3 + 2 ];\n\n\t\tif ( Math.abs( a_y - b_y ) < Math.abs( a_x - b_x ) ) {\n\n\t\t\treturn [\n\t\t\t\tnew Vector2( a_x, 1 - a_z ),\n\t\t\t\tnew Vector2( b_x, 1 - b_z ),\n\t\t\t\tnew Vector2( c_x, 1 - c_z ),\n\t\t\t\tnew Vector2( d_x, 1 - d_z )\n\t\t\t];\n\n\t\t} else {\n\n\t\t\treturn [\n\t\t\t\tnew Vector2( a_y, 1 - a_z ),\n\t\t\t\tnew Vector2( b_y, 1 - b_z ),\n\t\t\t\tnew Vector2( c_y, 1 - c_z ),\n\t\t\t\tnew Vector2( d_y, 1 - d_z )\n\t\t\t];\n\n\t\t}\n\n\t}\n\n};\n\nfunction toJSON$1( shapes, options, data ) {\n\n\tdata.shapes = [];\n\n\tif ( Array.isArray( shapes ) ) {\n\n\t\tfor ( let i = 0, l = shapes.length; i < l; i ++ ) {\n\n\t\t\tconst shape = shapes[ i ];\n\n\t\t\tdata.shapes.push( shape.uuid );\n\n\t\t}\n\n\t} else {\n\n\t\tdata.shapes.push( shapes.uuid );\n\n\t}\n\n\tdata.options = Object.assign( {}, options );\n\n\tif ( options.extrudePath !== undefined ) data.options.extrudePath = options.extrudePath.toJSON();\n\n\treturn data;\n\n}\n\nclass IcosahedronGeometry extends PolyhedronGeometry {\n\n\tconstructor( radius = 1, detail = 0 ) {\n\n\t\tconst t = ( 1 + Math.sqrt( 5 ) ) / 2;\n\n\t\tconst vertices = [\n\t\t\t- 1, t, 0, \t1, t, 0, \t- 1, - t, 0, \t1, - t, 0,\n\t\t\t0, - 1, t, \t0, 1, t,\t0, - 1, - t, \t0, 1, - t,\n\t\t\tt, 0, - 1, \tt, 0, 1, \t- t, 0, - 1, \t- t, 0, 1\n\t\t];\n\n\t\tconst indices = [\n\t\t\t0, 11, 5, \t0, 5, 1, \t0, 1, 7, \t0, 7, 10, \t0, 10, 11,\n\t\t\t1, 5, 9, \t5, 11, 4,\t11, 10, 2,\t10, 7, 6,\t7, 1, 8,\n\t\t\t3, 9, 4, \t3, 4, 2,\t3, 2, 6,\t3, 6, 8,\t3, 8, 9,\n\t\t\t4, 9, 5, \t2, 4, 11,\t6, 2, 10,\t8, 6, 7,\t9, 8, 1\n\t\t];\n\n\t\tsuper( vertices, indices, radius, detail );\n\n\t\tthis.type = 'IcosahedronGeometry';\n\n\t\tthis.parameters = {\n\t\t\tradius: radius,\n\t\t\tdetail: detail\n\t\t};\n\n\t}\n\n\tstatic fromJSON( data ) {\n\n\t\treturn new IcosahedronGeometry( data.radius, data.detail );\n\n\t}\n\n}\n\nclass OctahedronGeometry extends PolyhedronGeometry {\n\n\tconstructor( radius = 1, detail = 0 ) {\n\n\t\tconst vertices = [\n\t\t\t1, 0, 0, \t- 1, 0, 0,\t0, 1, 0,\n\t\t\t0, - 1, 0, \t0, 0, 1,\t0, 0, - 1\n\t\t];\n\n\t\tconst indices = [\n\t\t\t0, 2, 4,\t0, 4, 3,\t0, 3, 5,\n\t\t\t0, 5, 2,\t1, 2, 5,\t1, 5, 3,\n\t\t\t1, 3, 4,\t1, 4, 2\n\t\t];\n\n\t\tsuper( vertices, indices, radius, detail );\n\n\t\tthis.type = 'OctahedronGeometry';\n\n\t\tthis.parameters = {\n\t\t\tradius: radius,\n\t\t\tdetail: detail\n\t\t};\n\n\t}\n\n\tstatic fromJSON( data ) {\n\n\t\treturn new OctahedronGeometry( data.radius, data.detail );\n\n\t}\n\n}\n\nclass RingGeometry extends BufferGeometry {\n\n\tconstructor( innerRadius = 0.5, outerRadius = 1, thetaSegments = 8, phiSegments = 1, thetaStart = 0, thetaLength = Math.PI * 2 ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'RingGeometry';\n\n\t\tthis.parameters = {\n\t\t\tinnerRadius: innerRadius,\n\t\t\touterRadius: outerRadius,\n\t\t\tthetaSegments: thetaSegments,\n\t\t\tphiSegments: phiSegments,\n\t\t\tthetaStart: thetaStart,\n\t\t\tthetaLength: thetaLength\n\t\t};\n\n\t\tthetaSegments = Math.max( 3, thetaSegments );\n\t\tphiSegments = Math.max( 1, phiSegments );\n\n\t\t// buffers\n\n\t\tconst indices = [];\n\t\tconst vertices = [];\n\t\tconst normals = [];\n\t\tconst uvs = [];\n\n\t\t// some helper variables\n\n\t\tlet radius = innerRadius;\n\t\tconst radiusStep = ( ( outerRadius - innerRadius ) / phiSegments );\n\t\tconst vertex = new Vector3();\n\t\tconst uv = new Vector2();\n\n\t\t// generate vertices, normals and uvs\n\n\t\tfor ( let j = 0; j <= phiSegments; j ++ ) {\n\n\t\t\tfor ( let i = 0; i <= thetaSegments; i ++ ) {\n\n\t\t\t\t// values are generate from the inside of the ring to the outside\n\n\t\t\t\tconst segment = thetaStart + i / thetaSegments * thetaLength;\n\n\t\t\t\t// vertex\n\n\t\t\t\tvertex.x = radius * Math.cos( segment );\n\t\t\t\tvertex.y = radius * Math.sin( segment );\n\n\t\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t\t\t// normal\n\n\t\t\t\tnormals.push( 0, 0, 1 );\n\n\t\t\t\t// uv\n\n\t\t\t\tuv.x = ( vertex.x / outerRadius + 1 ) / 2;\n\t\t\t\tuv.y = ( vertex.y / outerRadius + 1 ) / 2;\n\n\t\t\t\tuvs.push( uv.x, uv.y );\n\n\t\t\t}\n\n\t\t\t// increase the radius for next row of vertices\n\n\t\t\tradius += radiusStep;\n\n\t\t}\n\n\t\t// indices\n\n\t\tfor ( let j = 0; j < phiSegments; j ++ ) {\n\n\t\t\tconst thetaSegmentLevel = j * ( thetaSegments + 1 );\n\n\t\t\tfor ( let i = 0; i < thetaSegments; i ++ ) {\n\n\t\t\t\tconst segment = i + thetaSegmentLevel;\n\n\t\t\t\tconst a = segment;\n\t\t\t\tconst b = segment + thetaSegments + 1;\n\t\t\t\tconst c = segment + thetaSegments + 2;\n\t\t\t\tconst d = segment + 1;\n\n\t\t\t\t// faces\n\n\t\t\t\tindices.push( a, b, d );\n\t\t\t\tindices.push( b, c, d );\n\n\t\t\t}\n\n\t\t}\n\n\t\t// build geometry\n\n\t\tthis.setIndex( indices );\n\t\tthis.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\t\tthis.setAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) );\n\t\tthis.setAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) );\n\n\t}\n\n\tstatic fromJSON( data ) {\n\n\t\treturn new RingGeometry( data.innerRadius, data.outerRadius, data.thetaSegments, data.phiSegments, data.thetaStart, data.thetaLength );\n\n\t}\n\n}\n\nclass ShapeGeometry extends BufferGeometry {\n\n\tconstructor( shapes = new Shape( [ new Vector2( 0, 0.5 ), new Vector2( - 0.5, - 0.5 ), new Vector2( 0.5, - 0.5 ) ] ), curveSegments = 12 ) {\n\n\t\tsuper();\n\t\tthis.type = 'ShapeGeometry';\n\n\t\tthis.parameters = {\n\t\t\tshapes: shapes,\n\t\t\tcurveSegments: curveSegments\n\t\t};\n\n\t\t// buffers\n\n\t\tconst indices = [];\n\t\tconst vertices = [];\n\t\tconst normals = [];\n\t\tconst uvs = [];\n\n\t\t// helper variables\n\n\t\tlet groupStart = 0;\n\t\tlet groupCount = 0;\n\n\t\t// allow single and array values for \"shapes\" parameter\n\n\t\tif ( Array.isArray( shapes ) === false ) {\n\n\t\t\taddShape( shapes );\n\n\t\t} else {\n\n\t\t\tfor ( let i = 0; i < shapes.length; i ++ ) {\n\n\t\t\t\taddShape( shapes[ i ] );\n\n\t\t\t\tthis.addGroup( groupStart, groupCount, i ); // enables MultiMaterial support\n\n\t\t\t\tgroupStart += groupCount;\n\t\t\t\tgroupCount = 0;\n\n\t\t\t}\n\n\t\t}\n\n\t\t// build geometry\n\n\t\tthis.setIndex( indices );\n\t\tthis.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\t\tthis.setAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) );\n\t\tthis.setAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) );\n\n\n\t\t// helper functions\n\n\t\tfunction addShape( shape ) {\n\n\t\t\tconst indexOffset = vertices.length / 3;\n\t\t\tconst points = shape.extractPoints( curveSegments );\n\n\t\t\tlet shapeVertices = points.shape;\n\t\t\tconst shapeHoles = points.holes;\n\n\t\t\t// check direction of vertices\n\n\t\t\tif ( ShapeUtils.isClockWise( shapeVertices ) === false ) {\n\n\t\t\t\tshapeVertices = shapeVertices.reverse();\n\n\t\t\t}\n\n\t\t\tfor ( let i = 0, l = shapeHoles.length; i < l; i ++ ) {\n\n\t\t\t\tconst shapeHole = shapeHoles[ i ];\n\n\t\t\t\tif ( ShapeUtils.isClockWise( shapeHole ) === true ) {\n\n\t\t\t\t\tshapeHoles[ i ] = shapeHole.reverse();\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tconst faces = ShapeUtils.triangulateShape( shapeVertices, shapeHoles );\n\n\t\t\t// join vertices of inner and outer paths to a single array\n\n\t\t\tfor ( let i = 0, l = shapeHoles.length; i < l; i ++ ) {\n\n\t\t\t\tconst shapeHole = shapeHoles[ i ];\n\t\t\t\tshapeVertices = shapeVertices.concat( shapeHole );\n\n\t\t\t}\n\n\t\t\t// vertices, normals, uvs\n\n\t\t\tfor ( let i = 0, l = shapeVertices.length; i < l; i ++ ) {\n\n\t\t\t\tconst vertex = shapeVertices[ i ];\n\n\t\t\t\tvertices.push( vertex.x, vertex.y, 0 );\n\t\t\t\tnormals.push( 0, 0, 1 );\n\t\t\t\tuvs.push( vertex.x, vertex.y ); // world uvs\n\n\t\t\t}\n\n\t\t\t// incides\n\n\t\t\tfor ( let i = 0, l = faces.length; i < l; i ++ ) {\n\n\t\t\t\tconst face = faces[ i ];\n\n\t\t\t\tconst a = face[ 0 ] + indexOffset;\n\t\t\t\tconst b = face[ 1 ] + indexOffset;\n\t\t\t\tconst c = face[ 2 ] + indexOffset;\n\n\t\t\t\tindices.push( a, b, c );\n\t\t\t\tgroupCount += 3;\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\ttoJSON() {\n\n\t\tconst data = super.toJSON();\n\n\t\tconst shapes = this.parameters.shapes;\n\n\t\treturn toJSON( shapes, data );\n\n\t}\n\n\tstatic fromJSON( data, shapes ) {\n\n\t\tconst geometryShapes = [];\n\n\t\tfor ( let j = 0, jl = data.shapes.length; j < jl; j ++ ) {\n\n\t\t\tconst shape = shapes[ data.shapes[ j ] ];\n\n\t\t\tgeometryShapes.push( shape );\n\n\t\t}\n\n\t\treturn new ShapeGeometry( geometryShapes, data.curveSegments );\n\n\t}\n\n}\n\nfunction toJSON( shapes, data ) {\n\n\tdata.shapes = [];\n\n\tif ( Array.isArray( shapes ) ) {\n\n\t\tfor ( let i = 0, l = shapes.length; i < l; i ++ ) {\n\n\t\t\tconst shape = shapes[ i ];\n\n\t\t\tdata.shapes.push( shape.uuid );\n\n\t\t}\n\n\t} else {\n\n\t\tdata.shapes.push( shapes.uuid );\n\n\t}\n\n\treturn data;\n\n}\n\nclass SphereGeometry extends BufferGeometry {\n\n\tconstructor( radius = 1, widthSegments = 32, heightSegments = 16, phiStart = 0, phiLength = Math.PI * 2, thetaStart = 0, thetaLength = Math.PI ) {\n\n\t\tsuper();\n\t\tthis.type = 'SphereGeometry';\n\n\t\tthis.parameters = {\n\t\t\tradius: radius,\n\t\t\twidthSegments: widthSegments,\n\t\t\theightSegments: heightSegments,\n\t\t\tphiStart: phiStart,\n\t\t\tphiLength: phiLength,\n\t\t\tthetaStart: thetaStart,\n\t\t\tthetaLength: thetaLength\n\t\t};\n\n\t\twidthSegments = Math.max( 3, Math.floor( widthSegments ) );\n\t\theightSegments = Math.max( 2, Math.floor( heightSegments ) );\n\n\t\tconst thetaEnd = Math.min( thetaStart + thetaLength, Math.PI );\n\n\t\tlet index = 0;\n\t\tconst grid = [];\n\n\t\tconst vertex = new Vector3();\n\t\tconst normal = new Vector3();\n\n\t\t// buffers\n\n\t\tconst indices = [];\n\t\tconst vertices = [];\n\t\tconst normals = [];\n\t\tconst uvs = [];\n\n\t\t// generate vertices, normals and uvs\n\n\t\tfor ( let iy = 0; iy <= heightSegments; iy ++ ) {\n\n\t\t\tconst verticesRow = [];\n\n\t\t\tconst v = iy / heightSegments;\n\n\t\t\t// special case for the poles\n\n\t\t\tlet uOffset = 0;\n\n\t\t\tif ( iy == 0 && thetaStart == 0 ) {\n\n\t\t\t\tuOffset = 0.5 / widthSegments;\n\n\t\t\t} else if ( iy == heightSegments && thetaEnd == Math.PI ) {\n\n\t\t\t\tuOffset = - 0.5 / widthSegments;\n\n\t\t\t}\n\n\t\t\tfor ( let ix = 0; ix <= widthSegments; ix ++ ) {\n\n\t\t\t\tconst u = ix / widthSegments;\n\n\t\t\t\t// vertex\n\n\t\t\t\tvertex.x = - radius * Math.cos( phiStart + u * phiLength ) * Math.sin( thetaStart + v * thetaLength );\n\t\t\t\tvertex.y = radius * Math.cos( thetaStart + v * thetaLength );\n\t\t\t\tvertex.z = radius * Math.sin( phiStart + u * phiLength ) * Math.sin( thetaStart + v * thetaLength );\n\n\t\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t\t\t// normal\n\n\t\t\t\tnormal.copy( vertex ).normalize();\n\t\t\t\tnormals.push( normal.x, normal.y, normal.z );\n\n\t\t\t\t// uv\n\n\t\t\t\tuvs.push( u + uOffset, 1 - v );\n\n\t\t\t\tverticesRow.push( index ++ );\n\n\t\t\t}\n\n\t\t\tgrid.push( verticesRow );\n\n\t\t}\n\n\t\t// indices\n\n\t\tfor ( let iy = 0; iy < heightSegments; iy ++ ) {\n\n\t\t\tfor ( let ix = 0; ix < widthSegments; ix ++ ) {\n\n\t\t\t\tconst a = grid[ iy ][ ix + 1 ];\n\t\t\t\tconst b = grid[ iy ][ ix ];\n\t\t\t\tconst c = grid[ iy + 1 ][ ix ];\n\t\t\t\tconst d = grid[ iy + 1 ][ ix + 1 ];\n\n\t\t\t\tif ( iy !== 0 || thetaStart > 0 ) indices.push( a, b, d );\n\t\t\t\tif ( iy !== heightSegments - 1 || thetaEnd < Math.PI ) indices.push( b, c, d );\n\n\t\t\t}\n\n\t\t}\n\n\t\t// build geometry\n\n\t\tthis.setIndex( indices );\n\t\tthis.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\t\tthis.setAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) );\n\t\tthis.setAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) );\n\n\t}\n\n\tstatic fromJSON( data ) {\n\n\t\treturn new SphereGeometry( data.radius, data.widthSegments, data.heightSegments, data.phiStart, data.phiLength, data.thetaStart, data.thetaLength );\n\n\t}\n\n}\n\nclass TetrahedronGeometry extends PolyhedronGeometry {\n\n\tconstructor( radius = 1, detail = 0 ) {\n\n\t\tconst vertices = [\n\t\t\t1, 1, 1, \t- 1, - 1, 1, \t- 1, 1, - 1, \t1, - 1, - 1\n\t\t];\n\n\t\tconst indices = [\n\t\t\t2, 1, 0, \t0, 3, 2,\t1, 3, 0,\t2, 3, 1\n\t\t];\n\n\t\tsuper( vertices, indices, radius, detail );\n\n\t\tthis.type = 'TetrahedronGeometry';\n\n\t\tthis.parameters = {\n\t\t\tradius: radius,\n\t\t\tdetail: detail\n\t\t};\n\n\t}\n\n\tstatic fromJSON( data ) {\n\n\t\treturn new TetrahedronGeometry( data.radius, data.detail );\n\n\t}\n\n}\n\nclass TorusGeometry extends BufferGeometry {\n\n\tconstructor( radius = 1, tube = 0.4, radialSegments = 8, tubularSegments = 6, arc = Math.PI * 2 ) {\n\n\t\tsuper();\n\t\tthis.type = 'TorusGeometry';\n\n\t\tthis.parameters = {\n\t\t\tradius: radius,\n\t\t\ttube: tube,\n\t\t\tradialSegments: radialSegments,\n\t\t\ttubularSegments: tubularSegments,\n\t\t\tarc: arc\n\t\t};\n\n\t\tradialSegments = Math.floor( radialSegments );\n\t\ttubularSegments = Math.floor( tubularSegments );\n\n\t\t// buffers\n\n\t\tconst indices = [];\n\t\tconst vertices = [];\n\t\tconst normals = [];\n\t\tconst uvs = [];\n\n\t\t// helper variables\n\n\t\tconst center = new Vector3();\n\t\tconst vertex = new Vector3();\n\t\tconst normal = new Vector3();\n\n\t\t// generate vertices, normals and uvs\n\n\t\tfor ( let j = 0; j <= radialSegments; j ++ ) {\n\n\t\t\tfor ( let i = 0; i <= tubularSegments; i ++ ) {\n\n\t\t\t\tconst u = i / tubularSegments * arc;\n\t\t\t\tconst v = j / radialSegments * Math.PI * 2;\n\n\t\t\t\t// vertex\n\n\t\t\t\tvertex.x = ( radius + tube * Math.cos( v ) ) * Math.cos( u );\n\t\t\t\tvertex.y = ( radius + tube * Math.cos( v ) ) * Math.sin( u );\n\t\t\t\tvertex.z = tube * Math.sin( v );\n\n\t\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t\t\t// normal\n\n\t\t\t\tcenter.x = radius * Math.cos( u );\n\t\t\t\tcenter.y = radius * Math.sin( u );\n\t\t\t\tnormal.subVectors( vertex, center ).normalize();\n\n\t\t\t\tnormals.push( normal.x, normal.y, normal.z );\n\n\t\t\t\t// uv\n\n\t\t\t\tuvs.push( i / tubularSegments );\n\t\t\t\tuvs.push( j / radialSegments );\n\n\t\t\t}\n\n\t\t}\n\n\t\t// generate indices\n\n\t\tfor ( let j = 1; j <= radialSegments; j ++ ) {\n\n\t\t\tfor ( let i = 1; i <= tubularSegments; i ++ ) {\n\n\t\t\t\t// indices\n\n\t\t\t\tconst a = ( tubularSegments + 1 ) * j + i - 1;\n\t\t\t\tconst b = ( tubularSegments + 1 ) * ( j - 1 ) + i - 1;\n\t\t\t\tconst c = ( tubularSegments + 1 ) * ( j - 1 ) + i;\n\t\t\t\tconst d = ( tubularSegments + 1 ) * j + i;\n\n\t\t\t\t// faces\n\n\t\t\t\tindices.push( a, b, d );\n\t\t\t\tindices.push( b, c, d );\n\n\t\t\t}\n\n\t\t}\n\n\t\t// build geometry\n\n\t\tthis.setIndex( indices );\n\t\tthis.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\t\tthis.setAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) );\n\t\tthis.setAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) );\n\n\t}\n\n\tstatic fromJSON( data ) {\n\n\t\treturn new TorusGeometry( data.radius, data.tube, data.radialSegments, data.tubularSegments, data.arc );\n\n\t}\n\n}\n\nclass TorusKnotGeometry extends BufferGeometry {\n\n\tconstructor( radius = 1, tube = 0.4, tubularSegments = 64, radialSegments = 8, p = 2, q = 3 ) {\n\n\t\tsuper();\n\t\tthis.type = 'TorusKnotGeometry';\n\n\t\tthis.parameters = {\n\t\t\tradius: radius,\n\t\t\ttube: tube,\n\t\t\ttubularSegments: tubularSegments,\n\t\t\tradialSegments: radialSegments,\n\t\t\tp: p,\n\t\t\tq: q\n\t\t};\n\n\t\ttubularSegments = Math.floor( tubularSegments );\n\t\tradialSegments = Math.floor( radialSegments );\n\n\t\t// buffers\n\n\t\tconst indices = [];\n\t\tconst vertices = [];\n\t\tconst normals = [];\n\t\tconst uvs = [];\n\n\t\t// helper variables\n\n\t\tconst vertex = new Vector3();\n\t\tconst normal = new Vector3();\n\n\t\tconst P1 = new Vector3();\n\t\tconst P2 = new Vector3();\n\n\t\tconst B = new Vector3();\n\t\tconst T = new Vector3();\n\t\tconst N = new Vector3();\n\n\t\t// generate vertices, normals and uvs\n\n\t\tfor ( let i = 0; i <= tubularSegments; ++ i ) {\n\n\t\t\t// the radian \"u\" is used to calculate the position on the torus curve of the current tubular segment\n\n\t\t\tconst u = i / tubularSegments * p * Math.PI * 2;\n\n\t\t\t// now we calculate two points. P1 is our current position on the curve, P2 is a little farther ahead.\n\t\t\t// these points are used to create a special \"coordinate space\", which is necessary to calculate the correct vertex positions\n\n\t\t\tcalculatePositionOnCurve( u, p, q, radius, P1 );\n\t\t\tcalculatePositionOnCurve( u + 0.01, p, q, radius, P2 );\n\n\t\t\t// calculate orthonormal basis\n\n\t\t\tT.subVectors( P2, P1 );\n\t\t\tN.addVectors( P2, P1 );\n\t\t\tB.crossVectors( T, N );\n\t\t\tN.crossVectors( B, T );\n\n\t\t\t// normalize B, N. T can be ignored, we don't use it\n\n\t\t\tB.normalize();\n\t\t\tN.normalize();\n\n\t\t\tfor ( let j = 0; j <= radialSegments; ++ j ) {\n\n\t\t\t\t// now calculate the vertices. they are nothing more than an extrusion of the torus curve.\n\t\t\t\t// because we extrude a shape in the xy-plane, there is no need to calculate a z-value.\n\n\t\t\t\tconst v = j / radialSegments * Math.PI * 2;\n\t\t\t\tconst cx = - tube * Math.cos( v );\n\t\t\t\tconst cy = tube * Math.sin( v );\n\n\t\t\t\t// now calculate the final vertex position.\n\t\t\t\t// first we orient the extrusion with our basis vectors, then we add it to the current position on the curve\n\n\t\t\t\tvertex.x = P1.x + ( cx * N.x + cy * B.x );\n\t\t\t\tvertex.y = P1.y + ( cx * N.y + cy * B.y );\n\t\t\t\tvertex.z = P1.z + ( cx * N.z + cy * B.z );\n\n\t\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t\t\t// normal (P1 is always the center/origin of the extrusion, thus we can use it to calculate the normal)\n\n\t\t\t\tnormal.subVectors( vertex, P1 ).normalize();\n\n\t\t\t\tnormals.push( normal.x, normal.y, normal.z );\n\n\t\t\t\t// uv\n\n\t\t\t\tuvs.push( i / tubularSegments );\n\t\t\t\tuvs.push( j / radialSegments );\n\n\t\t\t}\n\n\t\t}\n\n\t\t// generate indices\n\n\t\tfor ( let j = 1; j <= tubularSegments; j ++ ) {\n\n\t\t\tfor ( let i = 1; i <= radialSegments; i ++ ) {\n\n\t\t\t\t// indices\n\n\t\t\t\tconst a = ( radialSegments + 1 ) * ( j - 1 ) + ( i - 1 );\n\t\t\t\tconst b = ( radialSegments + 1 ) * j + ( i - 1 );\n\t\t\t\tconst c = ( radialSegments + 1 ) * j + i;\n\t\t\t\tconst d = ( radialSegments + 1 ) * ( j - 1 ) + i;\n\n\t\t\t\t// faces\n\n\t\t\t\tindices.push( a, b, d );\n\t\t\t\tindices.push( b, c, d );\n\n\t\t\t}\n\n\t\t}\n\n\t\t// build geometry\n\n\t\tthis.setIndex( indices );\n\t\tthis.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\t\tthis.setAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) );\n\t\tthis.setAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) );\n\n\t\t// this function calculates the current position on the torus curve\n\n\t\tfunction calculatePositionOnCurve( u, p, q, radius, position ) {\n\n\t\t\tconst cu = Math.cos( u );\n\t\t\tconst su = Math.sin( u );\n\t\t\tconst quOverP = q / p * u;\n\t\t\tconst cs = Math.cos( quOverP );\n\n\t\t\tposition.x = radius * ( 2 + cs ) * 0.5 * cu;\n\t\t\tposition.y = radius * ( 2 + cs ) * su * 0.5;\n\t\t\tposition.z = radius * Math.sin( quOverP ) * 0.5;\n\n\t\t}\n\n\t}\n\n\tstatic fromJSON( data ) {\n\n\t\treturn new TorusKnotGeometry( data.radius, data.tube, data.tubularSegments, data.radialSegments, data.p, data.q );\n\n\t}\n\n}\n\nclass TubeGeometry extends BufferGeometry {\n\n\tconstructor( path = new QuadraticBezierCurve3( new Vector3( - 1, - 1, 0 ), new Vector3( - 1, 1, 0 ), new Vector3( 1, 1, 0 ) ), tubularSegments = 64, radius = 1, radialSegments = 8, closed = false ) {\n\n\t\tsuper();\n\t\tthis.type = 'TubeGeometry';\n\n\t\tthis.parameters = {\n\t\t\tpath: path,\n\t\t\ttubularSegments: tubularSegments,\n\t\t\tradius: radius,\n\t\t\tradialSegments: radialSegments,\n\t\t\tclosed: closed\n\t\t};\n\n\t\tconst frames = path.computeFrenetFrames( tubularSegments, closed );\n\n\t\t// expose internals\n\n\t\tthis.tangents = frames.tangents;\n\t\tthis.normals = frames.normals;\n\t\tthis.binormals = frames.binormals;\n\n\t\t// helper variables\n\n\t\tconst vertex = new Vector3();\n\t\tconst normal = new Vector3();\n\t\tconst uv = new Vector2();\n\t\tlet P = new Vector3();\n\n\t\t// buffer\n\n\t\tconst vertices = [];\n\t\tconst normals = [];\n\t\tconst uvs = [];\n\t\tconst indices = [];\n\n\t\t// create buffer data\n\n\t\tgenerateBufferData();\n\n\t\t// build geometry\n\n\t\tthis.setIndex( indices );\n\t\tthis.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\t\tthis.setAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) );\n\t\tthis.setAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) );\n\n\t\t// functions\n\n\t\tfunction generateBufferData() {\n\n\t\t\tfor ( let i = 0; i < tubularSegments; i ++ ) {\n\n\t\t\t\tgenerateSegment( i );\n\n\t\t\t}\n\n\t\t\t// if the geometry is not closed, generate the last row of vertices and normals\n\t\t\t// at the regular position on the given path\n\t\t\t//\n\t\t\t// if the geometry is closed, duplicate the first row of vertices and normals (uvs will differ)\n\n\t\t\tgenerateSegment( ( closed === false ) ? tubularSegments : 0 );\n\n\t\t\t// uvs are generated in a separate function.\n\t\t\t// this makes it easy compute correct values for closed geometries\n\n\t\t\tgenerateUVs();\n\n\t\t\t// finally create faces\n\n\t\t\tgenerateIndices();\n\n\t\t}\n\n\t\tfunction generateSegment( i ) {\n\n\t\t\t// we use getPointAt to sample evenly distributed points from the given path\n\n\t\t\tP = path.getPointAt( i / tubularSegments, P );\n\n\t\t\t// retrieve corresponding normal and binormal\n\n\t\t\tconst N = frames.normals[ i ];\n\t\t\tconst B = frames.binormals[ i ];\n\n\t\t\t// generate normals and vertices for the current segment\n\n\t\t\tfor ( let j = 0; j <= radialSegments; j ++ ) {\n\n\t\t\t\tconst v = j / radialSegments * Math.PI * 2;\n\n\t\t\t\tconst sin = Math.sin( v );\n\t\t\t\tconst cos = - Math.cos( v );\n\n\t\t\t\t// normal\n\n\t\t\t\tnormal.x = ( cos * N.x + sin * B.x );\n\t\t\t\tnormal.y = ( cos * N.y + sin * B.y );\n\t\t\t\tnormal.z = ( cos * N.z + sin * B.z );\n\t\t\t\tnormal.normalize();\n\n\t\t\t\tnormals.push( normal.x, normal.y, normal.z );\n\n\t\t\t\t// vertex\n\n\t\t\t\tvertex.x = P.x + radius * normal.x;\n\t\t\t\tvertex.y = P.y + radius * normal.y;\n\t\t\t\tvertex.z = P.z + radius * normal.z;\n\n\t\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction generateIndices() {\n\n\t\t\tfor ( let j = 1; j <= tubularSegments; j ++ ) {\n\n\t\t\t\tfor ( let i = 1; i <= radialSegments; i ++ ) {\n\n\t\t\t\t\tconst a = ( radialSegments + 1 ) * ( j - 1 ) + ( i - 1 );\n\t\t\t\t\tconst b = ( radialSegments + 1 ) * j + ( i - 1 );\n\t\t\t\t\tconst c = ( radialSegments + 1 ) * j + i;\n\t\t\t\t\tconst d = ( radialSegments + 1 ) * ( j - 1 ) + i;\n\n\t\t\t\t\t// faces\n\n\t\t\t\t\tindices.push( a, b, d );\n\t\t\t\t\tindices.push( b, c, d );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction generateUVs() {\n\n\t\t\tfor ( let i = 0; i <= tubularSegments; i ++ ) {\n\n\t\t\t\tfor ( let j = 0; j <= radialSegments; j ++ ) {\n\n\t\t\t\t\tuv.x = i / tubularSegments;\n\t\t\t\t\tuv.y = j / radialSegments;\n\n\t\t\t\t\tuvs.push( uv.x, uv.y );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\ttoJSON() {\n\n\t\tconst data = super.toJSON();\n\n\t\tdata.path = this.parameters.path.toJSON();\n\n\t\treturn data;\n\n\t}\n\n\tstatic fromJSON( data ) {\n\n\t\t// This only works for built-in curves (e.g. CatmullRomCurve3).\n\t\t// User defined curves or instances of CurvePath will not be deserialized.\n\t\treturn new TubeGeometry(\n\t\t\tnew Curves[ data.path.type ]().fromJSON( data.path ),\n\t\t\tdata.tubularSegments,\n\t\t\tdata.radius,\n\t\t\tdata.radialSegments,\n\t\t\tdata.closed\n\t\t);\n\n\t}\n\n}\n\nclass WireframeGeometry extends BufferGeometry {\n\n\tconstructor( geometry = null ) {\n\n\t\tsuper();\n\t\tthis.type = 'WireframeGeometry';\n\n\t\tthis.parameters = {\n\t\t\tgeometry: geometry\n\t\t};\n\n\t\tif ( geometry !== null ) {\n\n\t\t\t// buffer\n\n\t\t\tconst vertices = [];\n\t\t\tconst edges = new Set();\n\n\t\t\t// helper variables\n\n\t\t\tconst start = new Vector3();\n\t\t\tconst end = new Vector3();\n\n\t\t\tif ( geometry.index !== null ) {\n\n\t\t\t\t// indexed BufferGeometry\n\n\t\t\t\tconst position = geometry.attributes.position;\n\t\t\t\tconst indices = geometry.index;\n\t\t\t\tlet groups = geometry.groups;\n\n\t\t\t\tif ( groups.length === 0 ) {\n\n\t\t\t\t\tgroups = [ { start: 0, count: indices.count, materialIndex: 0 } ];\n\n\t\t\t\t}\n\n\t\t\t\t// create a data structure that contains all edges without duplicates\n\n\t\t\t\tfor ( let o = 0, ol = groups.length; o < ol; ++ o ) {\n\n\t\t\t\t\tconst group = groups[ o ];\n\n\t\t\t\t\tconst groupStart = group.start;\n\t\t\t\t\tconst groupCount = group.count;\n\n\t\t\t\t\tfor ( let i = groupStart, l = ( groupStart + groupCount ); i < l; i += 3 ) {\n\n\t\t\t\t\t\tfor ( let j = 0; j < 3; j ++ ) {\n\n\t\t\t\t\t\t\tconst index1 = indices.getX( i + j );\n\t\t\t\t\t\t\tconst index2 = indices.getX( i + ( j + 1 ) % 3 );\n\n\t\t\t\t\t\t\tstart.fromBufferAttribute( position, index1 );\n\t\t\t\t\t\t\tend.fromBufferAttribute( position, index2 );\n\n\t\t\t\t\t\t\tif ( isUniqueEdge( start, end, edges ) === true ) {\n\n\t\t\t\t\t\t\t\tvertices.push( start.x, start.y, start.z );\n\t\t\t\t\t\t\t\tvertices.push( end.x, end.y, end.z );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\t// non-indexed BufferGeometry\n\n\t\t\t\tconst position = geometry.attributes.position;\n\n\t\t\t\tfor ( let i = 0, l = ( position.count / 3 ); i < l; i ++ ) {\n\n\t\t\t\t\tfor ( let j = 0; j < 3; j ++ ) {\n\n\t\t\t\t\t\t// three edges per triangle, an edge is represented as (index1, index2)\n\t\t\t\t\t\t// e.g. the first triangle has the following edges: (0,1),(1,2),(2,0)\n\n\t\t\t\t\t\tconst index1 = 3 * i + j;\n\t\t\t\t\t\tconst index2 = 3 * i + ( ( j + 1 ) % 3 );\n\n\t\t\t\t\t\tstart.fromBufferAttribute( position, index1 );\n\t\t\t\t\t\tend.fromBufferAttribute( position, index2 );\n\n\t\t\t\t\t\tif ( isUniqueEdge( start, end, edges ) === true ) {\n\n\t\t\t\t\t\t\tvertices.push( start.x, start.y, start.z );\n\t\t\t\t\t\t\tvertices.push( end.x, end.y, end.z );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// build geometry\n\n\t\t\tthis.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\n\t\t}\n\n\t}\n\n}\n\nfunction isUniqueEdge( start, end, edges ) {\n\n\tconst hash1 = `${start.x},${start.y},${start.z}-${end.x},${end.y},${end.z}`;\n\tconst hash2 = `${end.x},${end.y},${end.z}-${start.x},${start.y},${start.z}`; // coincident edge\n\n\tif ( edges.has( hash1 ) === true || edges.has( hash2 ) === true ) {\n\n\t\treturn false;\n\n\t} else {\n\n\t\tedges.add( hash1 );\n\t\tedges.add( hash2 );\n\t\treturn true;\n\n\t}\n\n}\n\nvar Geometries = /*#__PURE__*/Object.freeze({\n\t__proto__: null,\n\tBoxGeometry: BoxGeometry,\n\tBoxBufferGeometry: BoxGeometry,\n\tCapsuleGeometry: CapsuleGeometry,\n\tCapsuleBufferGeometry: CapsuleGeometry,\n\tCircleGeometry: CircleGeometry,\n\tCircleBufferGeometry: CircleGeometry,\n\tConeGeometry: ConeGeometry,\n\tConeBufferGeometry: ConeGeometry,\n\tCylinderGeometry: CylinderGeometry,\n\tCylinderBufferGeometry: CylinderGeometry,\n\tDodecahedronGeometry: DodecahedronGeometry,\n\tDodecahedronBufferGeometry: DodecahedronGeometry,\n\tEdgesGeometry: EdgesGeometry,\n\tExtrudeGeometry: ExtrudeGeometry,\n\tExtrudeBufferGeometry: ExtrudeGeometry,\n\tIcosahedronGeometry: IcosahedronGeometry,\n\tIcosahedronBufferGeometry: IcosahedronGeometry,\n\tLatheGeometry: LatheGeometry,\n\tLatheBufferGeometry: LatheGeometry,\n\tOctahedronGeometry: OctahedronGeometry,\n\tOctahedronBufferGeometry: OctahedronGeometry,\n\tPlaneGeometry: PlaneGeometry,\n\tPlaneBufferGeometry: PlaneGeometry,\n\tPolyhedronGeometry: PolyhedronGeometry,\n\tPolyhedronBufferGeometry: PolyhedronGeometry,\n\tRingGeometry: RingGeometry,\n\tRingBufferGeometry: RingGeometry,\n\tShapeGeometry: ShapeGeometry,\n\tShapeBufferGeometry: ShapeGeometry,\n\tSphereGeometry: SphereGeometry,\n\tSphereBufferGeometry: SphereGeometry,\n\tTetrahedronGeometry: TetrahedronGeometry,\n\tTetrahedronBufferGeometry: TetrahedronGeometry,\n\tTorusGeometry: TorusGeometry,\n\tTorusBufferGeometry: TorusGeometry,\n\tTorusKnotGeometry: TorusKnotGeometry,\n\tTorusKnotBufferGeometry: TorusKnotGeometry,\n\tTubeGeometry: TubeGeometry,\n\tTubeBufferGeometry: TubeGeometry,\n\tWireframeGeometry: WireframeGeometry\n});\n\nclass ShadowMaterial extends Material {\n\n\tconstructor( parameters ) {\n\n\t\tsuper();\n\n\t\tthis.isShadowMaterial = true;\n\n\t\tthis.type = 'ShadowMaterial';\n\n\t\tthis.color = new Color( 0x000000 );\n\t\tthis.transparent = true;\n\n\t\tthis.fog = true;\n\n\t\tthis.setValues( parameters );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.color.copy( source.color );\n\n\t\tthis.fog = source.fog;\n\n\t\treturn this;\n\n\t}\n\n}\n\nclass RawShaderMaterial extends ShaderMaterial {\n\n\tconstructor( parameters ) {\n\n\t\tsuper( parameters );\n\n\t\tthis.isRawShaderMaterial = true;\n\n\t\tthis.type = 'RawShaderMaterial';\n\n\t}\n\n}\n\nclass MeshStandardMaterial extends Material {\n\n\tconstructor( parameters ) {\n\n\t\tsuper();\n\n\t\tthis.isMeshStandardMaterial = true;\n\n\t\tthis.defines = { 'STANDARD': '' };\n\n\t\tthis.type = 'MeshStandardMaterial';\n\n\t\tthis.color = new Color( 0xffffff ); // diffuse\n\t\tthis.roughness = 1.0;\n\t\tthis.metalness = 0.0;\n\n\t\tthis.map = null;\n\n\t\tthis.lightMap = null;\n\t\tthis.lightMapIntensity = 1.0;\n\n\t\tthis.aoMap = null;\n\t\tthis.aoMapIntensity = 1.0;\n\n\t\tthis.emissive = new Color( 0x000000 );\n\t\tthis.emissiveIntensity = 1.0;\n\t\tthis.emissiveMap = null;\n\n\t\tthis.bumpMap = null;\n\t\tthis.bumpScale = 1;\n\n\t\tthis.normalMap = null;\n\t\tthis.normalMapType = TangentSpaceNormalMap;\n\t\tthis.normalScale = new Vector2( 1, 1 );\n\n\t\tthis.displacementMap = null;\n\t\tthis.displacementScale = 1;\n\t\tthis.displacementBias = 0;\n\n\t\tthis.roughnessMap = null;\n\n\t\tthis.metalnessMap = null;\n\n\t\tthis.alphaMap = null;\n\n\t\tthis.envMap = null;\n\t\tthis.envMapIntensity = 1.0;\n\n\t\tthis.wireframe = false;\n\t\tthis.wireframeLinewidth = 1;\n\t\tthis.wireframeLinecap = 'round';\n\t\tthis.wireframeLinejoin = 'round';\n\n\t\tthis.flatShading = false;\n\n\t\tthis.fog = true;\n\n\t\tthis.setValues( parameters );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.defines = { 'STANDARD': '' };\n\n\t\tthis.color.copy( source.color );\n\t\tthis.roughness = source.roughness;\n\t\tthis.metalness = source.metalness;\n\n\t\tthis.map = source.map;\n\n\t\tthis.lightMap = source.lightMap;\n\t\tthis.lightMapIntensity = source.lightMapIntensity;\n\n\t\tthis.aoMap = source.aoMap;\n\t\tthis.aoMapIntensity = source.aoMapIntensity;\n\n\t\tthis.emissive.copy( source.emissive );\n\t\tthis.emissiveMap = source.emissiveMap;\n\t\tthis.emissiveIntensity = source.emissiveIntensity;\n\n\t\tthis.bumpMap = source.bumpMap;\n\t\tthis.bumpScale = source.bumpScale;\n\n\t\tthis.normalMap = source.normalMap;\n\t\tthis.normalMapType = source.normalMapType;\n\t\tthis.normalScale.copy( source.normalScale );\n\n\t\tthis.displacementMap = source.displacementMap;\n\t\tthis.displacementScale = source.displacementScale;\n\t\tthis.displacementBias = source.displacementBias;\n\n\t\tthis.roughnessMap = source.roughnessMap;\n\n\t\tthis.metalnessMap = source.metalnessMap;\n\n\t\tthis.alphaMap = source.alphaMap;\n\n\t\tthis.envMap = source.envMap;\n\t\tthis.envMapIntensity = source.envMapIntensity;\n\n\t\tthis.wireframe = source.wireframe;\n\t\tthis.wireframeLinewidth = source.wireframeLinewidth;\n\t\tthis.wireframeLinecap = source.wireframeLinecap;\n\t\tthis.wireframeLinejoin = source.wireframeLinejoin;\n\n\t\tthis.flatShading = source.flatShading;\n\n\t\tthis.fog = source.fog;\n\n\t\treturn this;\n\n\t}\n\n}\n\nclass MeshPhysicalMaterial extends MeshStandardMaterial {\n\n\tconstructor( parameters ) {\n\n\t\tsuper();\n\n\t\tthis.isMeshPhysicalMaterial = true;\n\n\t\tthis.defines = {\n\n\t\t\t'STANDARD': '',\n\t\t\t'PHYSICAL': ''\n\n\t\t};\n\n\t\tthis.type = 'MeshPhysicalMaterial';\n\n\t\tthis.clearcoatMap = null;\n\t\tthis.clearcoatRoughness = 0.0;\n\t\tthis.clearcoatRoughnessMap = null;\n\t\tthis.clearcoatNormalScale = new Vector2( 1, 1 );\n\t\tthis.clearcoatNormalMap = null;\n\n\t\tthis.ior = 1.5;\n\n\t\tObject.defineProperty( this, 'reflectivity', {\n\t\t\tget: function () {\n\n\t\t\t\treturn ( clamp( 2.5 * ( this.ior - 1 ) / ( this.ior + 1 ), 0, 1 ) );\n\n\t\t\t},\n\t\t\tset: function ( reflectivity ) {\n\n\t\t\t\tthis.ior = ( 1 + 0.4 * reflectivity ) / ( 1 - 0.4 * reflectivity );\n\n\t\t\t}\n\t\t} );\n\n\t\tthis.iridescenceMap = null;\n\t\tthis.iridescenceIOR = 1.3;\n\t\tthis.iridescenceThicknessRange = [ 100, 400 ];\n\t\tthis.iridescenceThicknessMap = null;\n\n\t\tthis.sheenColor = new Color( 0x000000 );\n\t\tthis.sheenColorMap = null;\n\t\tthis.sheenRoughness = 1.0;\n\t\tthis.sheenRoughnessMap = null;\n\n\t\tthis.transmissionMap = null;\n\n\t\tthis.thickness = 0;\n\t\tthis.thicknessMap = null;\n\t\tthis.attenuationDistance = 0.0;\n\t\tthis.attenuationColor = new Color( 1, 1, 1 );\n\n\t\tthis.specularIntensity = 1.0;\n\t\tthis.specularIntensityMap = null;\n\t\tthis.specularColor = new Color( 1, 1, 1 );\n\t\tthis.specularColorMap = null;\n\n\t\tthis._sheen = 0.0;\n\t\tthis._clearcoat = 0;\n\t\tthis._iridescence = 0;\n\t\tthis._transmission = 0;\n\n\t\tthis.setValues( parameters );\n\n\t}\n\n\tget sheen() {\n\n\t\treturn this._sheen;\n\n\t}\n\n\tset sheen( value ) {\n\n\t\tif ( this._sheen > 0 !== value > 0 ) {\n\n\t\t\tthis.version ++;\n\n\t\t}\n\n\t\tthis._sheen = value;\n\n\t}\n\n\tget clearcoat() {\n\n\t\treturn this._clearcoat;\n\n\t}\n\n\tset clearcoat( value ) {\n\n\t\tif ( this._clearcoat > 0 !== value > 0 ) {\n\n\t\t\tthis.version ++;\n\n\t\t}\n\n\t\tthis._clearcoat = value;\n\n\t}\n\n\tget iridescence() {\n\n\t\treturn this._iridescence;\n\n\t}\n\n\tset iridescence( value ) {\n\n\t\tif ( this._iridescence > 0 !== value > 0 ) {\n\n\t\t\tthis.version ++;\n\n\t\t}\n\n\t\tthis._iridescence = value;\n\n\t}\n\n\tget transmission() {\n\n\t\treturn this._transmission;\n\n\t}\n\n\tset transmission( value ) {\n\n\t\tif ( this._transmission > 0 !== value > 0 ) {\n\n\t\t\tthis.version ++;\n\n\t\t}\n\n\t\tthis._transmission = value;\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.defines = {\n\n\t\t\t'STANDARD': '',\n\t\t\t'PHYSICAL': ''\n\n\t\t};\n\n\t\tthis.clearcoat = source.clearcoat;\n\t\tthis.clearcoatMap = source.clearcoatMap;\n\t\tthis.clearcoatRoughness = source.clearcoatRoughness;\n\t\tthis.clearcoatRoughnessMap = source.clearcoatRoughnessMap;\n\t\tthis.clearcoatNormalMap = source.clearcoatNormalMap;\n\t\tthis.clearcoatNormalScale.copy( source.clearcoatNormalScale );\n\n\t\tthis.ior = source.ior;\n\n\t\tthis.iridescence = source.iridescence;\n\t\tthis.iridescenceMap = source.iridescenceMap;\n\t\tthis.iridescenceIOR = source.iridescenceIOR;\n\t\tthis.iridescenceThicknessRange = [ ...source.iridescenceThicknessRange ];\n\t\tthis.iridescenceThicknessMap = source.iridescenceThicknessMap;\n\n\t\tthis.sheen = source.sheen;\n\t\tthis.sheenColor.copy( source.sheenColor );\n\t\tthis.sheenColorMap = source.sheenColorMap;\n\t\tthis.sheenRoughness = source.sheenRoughness;\n\t\tthis.sheenRoughnessMap = source.sheenRoughnessMap;\n\n\t\tthis.transmission = source.transmission;\n\t\tthis.transmissionMap = source.transmissionMap;\n\n\t\tthis.thickness = source.thickness;\n\t\tthis.thicknessMap = source.thicknessMap;\n\t\tthis.attenuationDistance = source.attenuationDistance;\n\t\tthis.attenuationColor.copy( source.attenuationColor );\n\n\t\tthis.specularIntensity = source.specularIntensity;\n\t\tthis.specularIntensityMap = source.specularIntensityMap;\n\t\tthis.specularColor.copy( source.specularColor );\n\t\tthis.specularColorMap = source.specularColorMap;\n\n\t\treturn this;\n\n\t}\n\n}\n\nclass MeshPhongMaterial extends Material {\n\n\tconstructor( parameters ) {\n\n\t\tsuper();\n\n\t\tthis.isMeshPhongMaterial = true;\n\n\t\tthis.type = 'MeshPhongMaterial';\n\n\t\tthis.color = new Color( 0xffffff ); // diffuse\n\t\tthis.specular = new Color( 0x111111 );\n\t\tthis.shininess = 30;\n\n\t\tthis.map = null;\n\n\t\tthis.lightMap = null;\n\t\tthis.lightMapIntensity = 1.0;\n\n\t\tthis.aoMap = null;\n\t\tthis.aoMapIntensity = 1.0;\n\n\t\tthis.emissive = new Color( 0x000000 );\n\t\tthis.emissiveIntensity = 1.0;\n\t\tthis.emissiveMap = null;\n\n\t\tthis.bumpMap = null;\n\t\tthis.bumpScale = 1;\n\n\t\tthis.normalMap = null;\n\t\tthis.normalMapType = TangentSpaceNormalMap;\n\t\tthis.normalScale = new Vector2( 1, 1 );\n\n\t\tthis.displacementMap = null;\n\t\tthis.displacementScale = 1;\n\t\tthis.displacementBias = 0;\n\n\t\tthis.specularMap = null;\n\n\t\tthis.alphaMap = null;\n\n\t\tthis.envMap = null;\n\t\tthis.combine = MultiplyOperation;\n\t\tthis.reflectivity = 1;\n\t\tthis.refractionRatio = 0.98;\n\n\t\tthis.wireframe = false;\n\t\tthis.wireframeLinewidth = 1;\n\t\tthis.wireframeLinecap = 'round';\n\t\tthis.wireframeLinejoin = 'round';\n\n\t\tthis.flatShading = false;\n\n\t\tthis.fog = true;\n\n\t\tthis.setValues( parameters );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.color.copy( source.color );\n\t\tthis.specular.copy( source.specular );\n\t\tthis.shininess = source.shininess;\n\n\t\tthis.map = source.map;\n\n\t\tthis.lightMap = source.lightMap;\n\t\tthis.lightMapIntensity = source.lightMapIntensity;\n\n\t\tthis.aoMap = source.aoMap;\n\t\tthis.aoMapIntensity = source.aoMapIntensity;\n\n\t\tthis.emissive.copy( source.emissive );\n\t\tthis.emissiveMap = source.emissiveMap;\n\t\tthis.emissiveIntensity = source.emissiveIntensity;\n\n\t\tthis.bumpMap = source.bumpMap;\n\t\tthis.bumpScale = source.bumpScale;\n\n\t\tthis.normalMap = source.normalMap;\n\t\tthis.normalMapType = source.normalMapType;\n\t\tthis.normalScale.copy( source.normalScale );\n\n\t\tthis.displacementMap = source.displacementMap;\n\t\tthis.displacementScale = source.displacementScale;\n\t\tthis.displacementBias = source.displacementBias;\n\n\t\tthis.specularMap = source.specularMap;\n\n\t\tthis.alphaMap = source.alphaMap;\n\n\t\tthis.envMap = source.envMap;\n\t\tthis.combine = source.combine;\n\t\tthis.reflectivity = source.reflectivity;\n\t\tthis.refractionRatio = source.refractionRatio;\n\n\t\tthis.wireframe = source.wireframe;\n\t\tthis.wireframeLinewidth = source.wireframeLinewidth;\n\t\tthis.wireframeLinecap = source.wireframeLinecap;\n\t\tthis.wireframeLinejoin = source.wireframeLinejoin;\n\n\t\tthis.flatShading = source.flatShading;\n\n\t\tthis.fog = source.fog;\n\n\t\treturn this;\n\n\t}\n\n}\n\nclass MeshToonMaterial extends Material {\n\n\tconstructor( parameters ) {\n\n\t\tsuper();\n\n\t\tthis.isMeshToonMaterial = true;\n\n\t\tthis.defines = { 'TOON': '' };\n\n\t\tthis.type = 'MeshToonMaterial';\n\n\t\tthis.color = new Color( 0xffffff );\n\n\t\tthis.map = null;\n\t\tthis.gradientMap = null;\n\n\t\tthis.lightMap = null;\n\t\tthis.lightMapIntensity = 1.0;\n\n\t\tthis.aoMap = null;\n\t\tthis.aoMapIntensity = 1.0;\n\n\t\tthis.emissive = new Color( 0x000000 );\n\t\tthis.emissiveIntensity = 1.0;\n\t\tthis.emissiveMap = null;\n\n\t\tthis.bumpMap = null;\n\t\tthis.bumpScale = 1;\n\n\t\tthis.normalMap = null;\n\t\tthis.normalMapType = TangentSpaceNormalMap;\n\t\tthis.normalScale = new Vector2( 1, 1 );\n\n\t\tthis.displacementMap = null;\n\t\tthis.displacementScale = 1;\n\t\tthis.displacementBias = 0;\n\n\t\tthis.alphaMap = null;\n\n\t\tthis.wireframe = false;\n\t\tthis.wireframeLinewidth = 1;\n\t\tthis.wireframeLinecap = 'round';\n\t\tthis.wireframeLinejoin = 'round';\n\n\t\tthis.fog = true;\n\n\t\tthis.setValues( parameters );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.color.copy( source.color );\n\n\t\tthis.map = source.map;\n\t\tthis.gradientMap = source.gradientMap;\n\n\t\tthis.lightMap = source.lightMap;\n\t\tthis.lightMapIntensity = source.lightMapIntensity;\n\n\t\tthis.aoMap = source.aoMap;\n\t\tthis.aoMapIntensity = source.aoMapIntensity;\n\n\t\tthis.emissive.copy( source.emissive );\n\t\tthis.emissiveMap = source.emissiveMap;\n\t\tthis.emissiveIntensity = source.emissiveIntensity;\n\n\t\tthis.bumpMap = source.bumpMap;\n\t\tthis.bumpScale = source.bumpScale;\n\n\t\tthis.normalMap = source.normalMap;\n\t\tthis.normalMapType = source.normalMapType;\n\t\tthis.normalScale.copy( source.normalScale );\n\n\t\tthis.displacementMap = source.displacementMap;\n\t\tthis.displacementScale = source.displacementScale;\n\t\tthis.displacementBias = source.displacementBias;\n\n\t\tthis.alphaMap = source.alphaMap;\n\n\t\tthis.wireframe = source.wireframe;\n\t\tthis.wireframeLinewidth = source.wireframeLinewidth;\n\t\tthis.wireframeLinecap = source.wireframeLinecap;\n\t\tthis.wireframeLinejoin = source.wireframeLinejoin;\n\n\t\tthis.fog = source.fog;\n\n\t\treturn this;\n\n\t}\n\n}\n\nclass MeshNormalMaterial extends Material {\n\n\tconstructor( parameters ) {\n\n\t\tsuper();\n\n\t\tthis.isMeshNormalMaterial = true;\n\n\t\tthis.type = 'MeshNormalMaterial';\n\n\t\tthis.bumpMap = null;\n\t\tthis.bumpScale = 1;\n\n\t\tthis.normalMap = null;\n\t\tthis.normalMapType = TangentSpaceNormalMap;\n\t\tthis.normalScale = new Vector2( 1, 1 );\n\n\t\tthis.displacementMap = null;\n\t\tthis.displacementScale = 1;\n\t\tthis.displacementBias = 0;\n\n\t\tthis.wireframe = false;\n\t\tthis.wireframeLinewidth = 1;\n\n\t\tthis.flatShading = false;\n\n\t\tthis.setValues( parameters );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.bumpMap = source.bumpMap;\n\t\tthis.bumpScale = source.bumpScale;\n\n\t\tthis.normalMap = source.normalMap;\n\t\tthis.normalMapType = source.normalMapType;\n\t\tthis.normalScale.copy( source.normalScale );\n\n\t\tthis.displacementMap = source.displacementMap;\n\t\tthis.displacementScale = source.displacementScale;\n\t\tthis.displacementBias = source.displacementBias;\n\n\t\tthis.wireframe = source.wireframe;\n\t\tthis.wireframeLinewidth = source.wireframeLinewidth;\n\n\t\tthis.flatShading = source.flatShading;\n\n\t\treturn this;\n\n\t}\n\n}\n\nclass MeshLambertMaterial extends Material {\n\n\tconstructor( parameters ) {\n\n\t\tsuper();\n\n\t\tthis.isMeshLambertMaterial = true;\n\n\t\tthis.type = 'MeshLambertMaterial';\n\n\t\tthis.color = new Color( 0xffffff ); // diffuse\n\n\t\tthis.map = null;\n\n\t\tthis.lightMap = null;\n\t\tthis.lightMapIntensity = 1.0;\n\n\t\tthis.aoMap = null;\n\t\tthis.aoMapIntensity = 1.0;\n\n\t\tthis.emissive = new Color( 0x000000 );\n\t\tthis.emissiveIntensity = 1.0;\n\t\tthis.emissiveMap = null;\n\n\t\tthis.specularMap = null;\n\n\t\tthis.alphaMap = null;\n\n\t\tthis.envMap = null;\n\t\tthis.combine = MultiplyOperation;\n\t\tthis.reflectivity = 1;\n\t\tthis.refractionRatio = 0.98;\n\n\t\tthis.wireframe = false;\n\t\tthis.wireframeLinewidth = 1;\n\t\tthis.wireframeLinecap = 'round';\n\t\tthis.wireframeLinejoin = 'round';\n\n\t\tthis.fog = true;\n\n\t\tthis.setValues( parameters );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.color.copy( source.color );\n\n\t\tthis.map = source.map;\n\n\t\tthis.lightMap = source.lightMap;\n\t\tthis.lightMapIntensity = source.lightMapIntensity;\n\n\t\tthis.aoMap = source.aoMap;\n\t\tthis.aoMapIntensity = source.aoMapIntensity;\n\n\t\tthis.emissive.copy( source.emissive );\n\t\tthis.emissiveMap = source.emissiveMap;\n\t\tthis.emissiveIntensity = source.emissiveIntensity;\n\n\t\tthis.specularMap = source.specularMap;\n\n\t\tthis.alphaMap = source.alphaMap;\n\n\t\tthis.envMap = source.envMap;\n\t\tthis.combine = source.combine;\n\t\tthis.reflectivity = source.reflectivity;\n\t\tthis.refractionRatio = source.refractionRatio;\n\n\t\tthis.wireframe = source.wireframe;\n\t\tthis.wireframeLinewidth = source.wireframeLinewidth;\n\t\tthis.wireframeLinecap = source.wireframeLinecap;\n\t\tthis.wireframeLinejoin = source.wireframeLinejoin;\n\n\t\tthis.fog = source.fog;\n\n\t\treturn this;\n\n\t}\n\n}\n\nclass MeshMatcapMaterial extends Material {\n\n\tconstructor( parameters ) {\n\n\t\tsuper();\n\n\t\tthis.isMeshMatcapMaterial = true;\n\n\t\tthis.defines = { 'MATCAP': '' };\n\n\t\tthis.type = 'MeshMatcapMaterial';\n\n\t\tthis.color = new Color( 0xffffff ); // diffuse\n\n\t\tthis.matcap = null;\n\n\t\tthis.map = null;\n\n\t\tthis.bumpMap = null;\n\t\tthis.bumpScale = 1;\n\n\t\tthis.normalMap = null;\n\t\tthis.normalMapType = TangentSpaceNormalMap;\n\t\tthis.normalScale = new Vector2( 1, 1 );\n\n\t\tthis.displacementMap = null;\n\t\tthis.displacementScale = 1;\n\t\tthis.displacementBias = 0;\n\n\t\tthis.alphaMap = null;\n\n\t\tthis.flatShading = false;\n\n\t\tthis.fog = true;\n\n\t\tthis.setValues( parameters );\n\n\t}\n\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.defines = { 'MATCAP': '' };\n\n\t\tthis.color.copy( source.color );\n\n\t\tthis.matcap = source.matcap;\n\n\t\tthis.map = source.map;\n\n\t\tthis.bumpMap = source.bumpMap;\n\t\tthis.bumpScale = source.bumpScale;\n\n\t\tthis.normalMap = source.normalMap;\n\t\tthis.normalMapType = source.normalMapType;\n\t\tthis.normalScale.copy( source.normalScale );\n\n\t\tthis.displacementMap = source.displacementMap;\n\t\tthis.displacementScale = source.displacementScale;\n\t\tthis.displacementBias = source.displacementBias;\n\n\t\tthis.alphaMap = source.alphaMap;\n\n\t\tthis.flatShading = source.flatShading;\n\n\t\tthis.fog = source.fog;\n\n\t\treturn this;\n\n\t}\n\n}\n\nclass LineDashedMaterial extends LineBasicMaterial {\n\n\tconstructor( parameters ) {\n\n\t\tsuper();\n\n\t\tthis.isLineDashedMaterial = true;\n\n\t\tthis.type = 'LineDashedMaterial';\n\n\t\tthis.scale = 1;\n\t\tthis.dashSize = 3;\n\t\tthis.gapSize = 1;\n\n\t\tthis.setValues( parameters );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.scale = source.scale;\n\t\tthis.dashSize = source.dashSize;\n\t\tthis.gapSize = source.gapSize;\n\n\t\treturn this;\n\n\t}\n\n}\n\nconst materialLib = {\n\tShadowMaterial,\n\tSpriteMaterial,\n\tRawShaderMaterial,\n\tShaderMaterial,\n\tPointsMaterial,\n\tMeshPhysicalMaterial,\n\tMeshStandardMaterial,\n\tMeshPhongMaterial,\n\tMeshToonMaterial,\n\tMeshNormalMaterial,\n\tMeshLambertMaterial,\n\tMeshDepthMaterial,\n\tMeshDistanceMaterial,\n\tMeshBasicMaterial,\n\tMeshMatcapMaterial,\n\tLineDashedMaterial,\n\tLineBasicMaterial,\n\tMaterial\n};\n\nMaterial.fromType = function ( type ) {\n\n\treturn new materialLib[ type ]();\n\n};\n\nconst AnimationUtils = {\n\n\t// same as Array.prototype.slice, but also works on typed arrays\n\tarraySlice: function ( array, from, to ) {\n\n\t\tif ( AnimationUtils.isTypedArray( array ) ) {\n\n\t\t\t// in ios9 array.subarray(from, undefined) will return empty array\n\t\t\t// but array.subarray(from) or array.subarray(from, len) is correct\n\t\t\treturn new array.constructor( array.subarray( from, to !== undefined ? to : array.length ) );\n\n\t\t}\n\n\t\treturn array.slice( from, to );\n\n\t},\n\n\t// converts an array to a specific type\n\tconvertArray: function ( array, type, forceClone ) {\n\n\t\tif ( ! array || // let 'undefined' and 'null' pass\n\t\t\t! forceClone && array.constructor === type ) return array;\n\n\t\tif ( typeof type.BYTES_PER_ELEMENT === 'number' ) {\n\n\t\t\treturn new type( array ); // create typed array\n\n\t\t}\n\n\t\treturn Array.prototype.slice.call( array ); // create Array\n\n\t},\n\n\tisTypedArray: function ( object ) {\n\n\t\treturn ArrayBuffer.isView( object ) &&\n\t\t\t! ( object instanceof DataView );\n\n\t},\n\n\t// returns an array by which times and values can be sorted\n\tgetKeyframeOrder: function ( times ) {\n\n\t\tfunction compareTime( i, j ) {\n\n\t\t\treturn times[ i ] - times[ j ];\n\n\t\t}\n\n\t\tconst n = times.length;\n\t\tconst result = new Array( n );\n\t\tfor ( let i = 0; i !== n; ++ i ) result[ i ] = i;\n\n\t\tresult.sort( compareTime );\n\n\t\treturn result;\n\n\t},\n\n\t// uses the array previously returned by 'getKeyframeOrder' to sort data\n\tsortedArray: function ( values, stride, order ) {\n\n\t\tconst nValues = values.length;\n\t\tconst result = new values.constructor( nValues );\n\n\t\tfor ( let i = 0, dstOffset = 0; dstOffset !== nValues; ++ i ) {\n\n\t\t\tconst srcOffset = order[ i ] * stride;\n\n\t\t\tfor ( let j = 0; j !== stride; ++ j ) {\n\n\t\t\t\tresult[ dstOffset ++ ] = values[ srcOffset + j ];\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn result;\n\n\t},\n\n\t// function for parsing AOS keyframe formats\n\tflattenJSON: function ( jsonKeys, times, values, valuePropertyName ) {\n\n\t\tlet i = 1, key = jsonKeys[ 0 ];\n\n\t\twhile ( key !== undefined && key[ valuePropertyName ] === undefined ) {\n\n\t\t\tkey = jsonKeys[ i ++ ];\n\n\t\t}\n\n\t\tif ( key === undefined ) return; // no data\n\n\t\tlet value = key[ valuePropertyName ];\n\t\tif ( value === undefined ) return; // no data\n\n\t\tif ( Array.isArray( value ) ) {\n\n\t\t\tdo {\n\n\t\t\t\tvalue = key[ valuePropertyName ];\n\n\t\t\t\tif ( value !== undefined ) {\n\n\t\t\t\t\ttimes.push( key.time );\n\t\t\t\t\tvalues.push.apply( values, value ); // push all elements\n\n\t\t\t\t}\n\n\t\t\t\tkey = jsonKeys[ i ++ ];\n\n\t\t\t} while ( key !== undefined );\n\n\t\t} else if ( value.toArray !== undefined ) {\n\n\t\t\t// ...assume THREE.Math-ish\n\n\t\t\tdo {\n\n\t\t\t\tvalue = key[ valuePropertyName ];\n\n\t\t\t\tif ( value !== undefined ) {\n\n\t\t\t\t\ttimes.push( key.time );\n\t\t\t\t\tvalue.toArray( values, values.length );\n\n\t\t\t\t}\n\n\t\t\t\tkey = jsonKeys[ i ++ ];\n\n\t\t\t} while ( key !== undefined );\n\n\t\t} else {\n\n\t\t\t// otherwise push as-is\n\n\t\t\tdo {\n\n\t\t\t\tvalue = key[ valuePropertyName ];\n\n\t\t\t\tif ( value !== undefined ) {\n\n\t\t\t\t\ttimes.push( key.time );\n\t\t\t\t\tvalues.push( value );\n\n\t\t\t\t}\n\n\t\t\t\tkey = jsonKeys[ i ++ ];\n\n\t\t\t} while ( key !== undefined );\n\n\t\t}\n\n\t},\n\n\tsubclip: function ( sourceClip, name, startFrame, endFrame, fps = 30 ) {\n\n\t\tconst clip = sourceClip.clone();\n\n\t\tclip.name = name;\n\n\t\tconst tracks = [];\n\n\t\tfor ( let i = 0; i < clip.tracks.length; ++ i ) {\n\n\t\t\tconst track = clip.tracks[ i ];\n\t\t\tconst valueSize = track.getValueSize();\n\n\t\t\tconst times = [];\n\t\t\tconst values = [];\n\n\t\t\tfor ( let j = 0; j < track.times.length; ++ j ) {\n\n\t\t\t\tconst frame = track.times[ j ] * fps;\n\n\t\t\t\tif ( frame < startFrame || frame >= endFrame ) continue;\n\n\t\t\t\ttimes.push( track.times[ j ] );\n\n\t\t\t\tfor ( let k = 0; k < valueSize; ++ k ) {\n\n\t\t\t\t\tvalues.push( track.values[ j * valueSize + k ] );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( times.length === 0 ) continue;\n\n\t\t\ttrack.times = AnimationUtils.convertArray( times, track.times.constructor );\n\t\t\ttrack.values = AnimationUtils.convertArray( values, track.values.constructor );\n\n\t\t\ttracks.push( track );\n\n\t\t}\n\n\t\tclip.tracks = tracks;\n\n\t\t// find minimum .times value across all tracks in the trimmed clip\n\n\t\tlet minStartTime = Infinity;\n\n\t\tfor ( let i = 0; i < clip.tracks.length; ++ i ) {\n\n\t\t\tif ( minStartTime > clip.tracks[ i ].times[ 0 ] ) {\n\n\t\t\t\tminStartTime = clip.tracks[ i ].times[ 0 ];\n\n\t\t\t}\n\n\t\t}\n\n\t\t// shift all tracks such that clip begins at t=0\n\n\t\tfor ( let i = 0; i < clip.tracks.length; ++ i ) {\n\n\t\t\tclip.tracks[ i ].shift( - 1 * minStartTime );\n\n\t\t}\n\n\t\tclip.resetDuration();\n\n\t\treturn clip;\n\n\t},\n\n\tmakeClipAdditive: function ( targetClip, referenceFrame = 0, referenceClip = targetClip, fps = 30 ) {\n\n\t\tif ( fps <= 0 ) fps = 30;\n\n\t\tconst numTracks = referenceClip.tracks.length;\n\t\tconst referenceTime = referenceFrame / fps;\n\n\t\t// Make each track's values relative to the values at the reference frame\n\t\tfor ( let i = 0; i < numTracks; ++ i ) {\n\n\t\t\tconst referenceTrack = referenceClip.tracks[ i ];\n\t\t\tconst referenceTrackType = referenceTrack.ValueTypeName;\n\n\t\t\t// Skip this track if it's non-numeric\n\t\t\tif ( referenceTrackType === 'bool' || referenceTrackType === 'string' ) continue;\n\n\t\t\t// Find the track in the target clip whose name and type matches the reference track\n\t\t\tconst targetTrack = targetClip.tracks.find( function ( track ) {\n\n\t\t\t\treturn track.name === referenceTrack.name\n\t\t\t\t\t&& track.ValueTypeName === referenceTrackType;\n\n\t\t\t} );\n\n\t\t\tif ( targetTrack === undefined ) continue;\n\n\t\t\tlet referenceOffset = 0;\n\t\t\tconst referenceValueSize = referenceTrack.getValueSize();\n\n\t\t\tif ( referenceTrack.createInterpolant.isInterpolantFactoryMethodGLTFCubicSpline ) {\n\n\t\t\t\treferenceOffset = referenceValueSize / 3;\n\n\t\t\t}\n\n\t\t\tlet targetOffset = 0;\n\t\t\tconst targetValueSize = targetTrack.getValueSize();\n\n\t\t\tif ( targetTrack.createInterpolant.isInterpolantFactoryMethodGLTFCubicSpline ) {\n\n\t\t\t\ttargetOffset = targetValueSize / 3;\n\n\t\t\t}\n\n\t\t\tconst lastIndex = referenceTrack.times.length - 1;\n\t\t\tlet referenceValue;\n\n\t\t\t// Find the value to subtract out of the track\n\t\t\tif ( referenceTime <= referenceTrack.times[ 0 ] ) {\n\n\t\t\t\t// Reference frame is earlier than the first keyframe, so just use the first keyframe\n\t\t\t\tconst startIndex = referenceOffset;\n\t\t\t\tconst endIndex = referenceValueSize - referenceOffset;\n\t\t\t\treferenceValue = AnimationUtils.arraySlice( referenceTrack.values, startIndex, endIndex );\n\n\t\t\t} else if ( referenceTime >= referenceTrack.times[ lastIndex ] ) {\n\n\t\t\t\t// Reference frame is after the last keyframe, so just use the last keyframe\n\t\t\t\tconst startIndex = lastIndex * referenceValueSize + referenceOffset;\n\t\t\t\tconst endIndex = startIndex + referenceValueSize - referenceOffset;\n\t\t\t\treferenceValue = AnimationUtils.arraySlice( referenceTrack.values, startIndex, endIndex );\n\n\t\t\t} else {\n\n\t\t\t\t// Interpolate to the reference value\n\t\t\t\tconst interpolant = referenceTrack.createInterpolant();\n\t\t\t\tconst startIndex = referenceOffset;\n\t\t\t\tconst endIndex = referenceValueSize - referenceOffset;\n\t\t\t\tinterpolant.evaluate( referenceTime );\n\t\t\t\treferenceValue = AnimationUtils.arraySlice( interpolant.resultBuffer, startIndex, endIndex );\n\n\t\t\t}\n\n\t\t\t// Conjugate the quaternion\n\t\t\tif ( referenceTrackType === 'quaternion' ) {\n\n\t\t\t\tconst referenceQuat = new Quaternion().fromArray( referenceValue ).normalize().conjugate();\n\t\t\t\treferenceQuat.toArray( referenceValue );\n\n\t\t\t}\n\n\t\t\t// Subtract the reference value from all of the track values\n\n\t\t\tconst numTimes = targetTrack.times.length;\n\t\t\tfor ( let j = 0; j < numTimes; ++ j ) {\n\n\t\t\t\tconst valueStart = j * targetValueSize + targetOffset;\n\n\t\t\t\tif ( referenceTrackType === 'quaternion' ) {\n\n\t\t\t\t\t// Multiply the conjugate for quaternion track types\n\t\t\t\t\tQuaternion.multiplyQuaternionsFlat(\n\t\t\t\t\t\ttargetTrack.values,\n\t\t\t\t\t\tvalueStart,\n\t\t\t\t\t\treferenceValue,\n\t\t\t\t\t\t0,\n\t\t\t\t\t\ttargetTrack.values,\n\t\t\t\t\t\tvalueStart\n\t\t\t\t\t);\n\n\t\t\t\t} else {\n\n\t\t\t\t\tconst valueEnd = targetValueSize - targetOffset * 2;\n\n\t\t\t\t\t// Subtract each value for all other numeric track types\n\t\t\t\t\tfor ( let k = 0; k < valueEnd; ++ k ) {\n\n\t\t\t\t\t\ttargetTrack.values[ valueStart + k ] -= referenceValue[ k ];\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\ttargetClip.blendMode = AdditiveAnimationBlendMode;\n\n\t\treturn targetClip;\n\n\t}\n\n};\n\n/**\n * Abstract base class of interpolants over parametric samples.\n *\n * The parameter domain is one dimensional, typically the time or a path\n * along a curve defined by the data.\n *\n * The sample values can have any dimensionality and derived classes may\n * apply special interpretations to the data.\n *\n * This class provides the interval seek in a Template Method, deferring\n * the actual interpolation to derived classes.\n *\n * Time complexity is O(1) for linear access crossing at most two points\n * and O(log N) for random access, where N is the number of positions.\n *\n * References:\n *\n * \t\thttp://www.oodesign.com/template-method-pattern.html\n *\n */\n\nclass Interpolant {\n\n\tconstructor( parameterPositions, sampleValues, sampleSize, resultBuffer ) {\n\n\t\tthis.parameterPositions = parameterPositions;\n\t\tthis._cachedIndex = 0;\n\n\t\tthis.resultBuffer = resultBuffer !== undefined ?\n\t\t\tresultBuffer : new sampleValues.constructor( sampleSize );\n\t\tthis.sampleValues = sampleValues;\n\t\tthis.valueSize = sampleSize;\n\n\t\tthis.settings = null;\n\t\tthis.DefaultSettings_ = {};\n\n\t}\n\n\tevaluate( t ) {\n\n\t\tconst pp = this.parameterPositions;\n\t\tlet i1 = this._cachedIndex,\n\t\t\tt1 = pp[ i1 ],\n\t\t\tt0 = pp[ i1 - 1 ];\n\n\t\tvalidate_interval: {\n\n\t\t\tseek: {\n\n\t\t\t\tlet right;\n\n\t\t\t\tlinear_scan: {\n\n\t\t\t\t\t//- See http://jsperf.com/comparison-to-undefined/3\n\t\t\t\t\t//- slower code:\n\t\t\t\t\t//-\n\t\t\t\t\t//- \t\t\t\tif ( t >= t1 || t1 === undefined ) {\n\t\t\t\t\tforward_scan: if ( ! ( t < t1 ) ) {\n\n\t\t\t\t\t\tfor ( let giveUpAt = i1 + 2; ; ) {\n\n\t\t\t\t\t\t\tif ( t1 === undefined ) {\n\n\t\t\t\t\t\t\t\tif ( t < t0 ) break forward_scan;\n\n\t\t\t\t\t\t\t\t// after end\n\n\t\t\t\t\t\t\t\ti1 = pp.length;\n\t\t\t\t\t\t\t\tthis._cachedIndex = i1;\n\t\t\t\t\t\t\t\treturn this.copySampleValue_( i1 - 1 );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tif ( i1 === giveUpAt ) break; // this loop\n\n\t\t\t\t\t\t\tt0 = t1;\n\t\t\t\t\t\t\tt1 = pp[ ++ i1 ];\n\n\t\t\t\t\t\t\tif ( t < t1 ) {\n\n\t\t\t\t\t\t\t\t// we have arrived at the sought interval\n\t\t\t\t\t\t\t\tbreak seek;\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// prepare binary search on the right side of the index\n\t\t\t\t\t\tright = pp.length;\n\t\t\t\t\t\tbreak linear_scan;\n\n\t\t\t\t\t}\n\n\t\t\t\t\t//- slower code:\n\t\t\t\t\t//-\t\t\t\t\tif ( t < t0 || t0 === undefined ) {\n\t\t\t\t\tif ( ! ( t >= t0 ) ) {\n\n\t\t\t\t\t\t// looping?\n\n\t\t\t\t\t\tconst t1global = pp[ 1 ];\n\n\t\t\t\t\t\tif ( t < t1global ) {\n\n\t\t\t\t\t\t\ti1 = 2; // + 1, using the scan for the details\n\t\t\t\t\t\t\tt0 = t1global;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// linear reverse scan\n\n\t\t\t\t\t\tfor ( let giveUpAt = i1 - 2; ; ) {\n\n\t\t\t\t\t\t\tif ( t0 === undefined ) {\n\n\t\t\t\t\t\t\t\t// before start\n\n\t\t\t\t\t\t\t\tthis._cachedIndex = 0;\n\t\t\t\t\t\t\t\treturn this.copySampleValue_( 0 );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tif ( i1 === giveUpAt ) break; // this loop\n\n\t\t\t\t\t\t\tt1 = t0;\n\t\t\t\t\t\t\tt0 = pp[ -- i1 - 1 ];\n\n\t\t\t\t\t\t\tif ( t >= t0 ) {\n\n\t\t\t\t\t\t\t\t// we have arrived at the sought interval\n\t\t\t\t\t\t\t\tbreak seek;\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// prepare binary search on the left side of the index\n\t\t\t\t\t\tright = i1;\n\t\t\t\t\t\ti1 = 0;\n\t\t\t\t\t\tbreak linear_scan;\n\n\t\t\t\t\t}\n\n\t\t\t\t\t// the interval is valid\n\n\t\t\t\t\tbreak validate_interval;\n\n\t\t\t\t} // linear scan\n\n\t\t\t\t// binary search\n\n\t\t\t\twhile ( i1 < right ) {\n\n\t\t\t\t\tconst mid = ( i1 + right ) >>> 1;\n\n\t\t\t\t\tif ( t < pp[ mid ] ) {\n\n\t\t\t\t\t\tright = mid;\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\ti1 = mid + 1;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\tt1 = pp[ i1 ];\n\t\t\t\tt0 = pp[ i1 - 1 ];\n\n\t\t\t\t// check boundary cases, again\n\n\t\t\t\tif ( t0 === undefined ) {\n\n\t\t\t\t\tthis._cachedIndex = 0;\n\t\t\t\t\treturn this.copySampleValue_( 0 );\n\n\t\t\t\t}\n\n\t\t\t\tif ( t1 === undefined ) {\n\n\t\t\t\t\ti1 = pp.length;\n\t\t\t\t\tthis._cachedIndex = i1;\n\t\t\t\t\treturn this.copySampleValue_( i1 - 1 );\n\n\t\t\t\t}\n\n\t\t\t} // seek\n\n\t\t\tthis._cachedIndex = i1;\n\n\t\t\tthis.intervalChanged_( i1, t0, t1 );\n\n\t\t} // validate_interval\n\n\t\treturn this.interpolate_( i1, t0, t, t1 );\n\n\t}\n\n\tgetSettings_() {\n\n\t\treturn this.settings || this.DefaultSettings_;\n\n\t}\n\n\tcopySampleValue_( index ) {\n\n\t\t// copies a sample value to the result buffer\n\n\t\tconst result = this.resultBuffer,\n\t\t\tvalues = this.sampleValues,\n\t\t\tstride = this.valueSize,\n\t\t\toffset = index * stride;\n\n\t\tfor ( let i = 0; i !== stride; ++ i ) {\n\n\t\t\tresult[ i ] = values[ offset + i ];\n\n\t\t}\n\n\t\treturn result;\n\n\t}\n\n\t// Template methods for derived classes:\n\n\tinterpolate_( /* i1, t0, t, t1 */ ) {\n\n\t\tthrow new Error( 'call to abstract method' );\n\t\t// implementations shall return this.resultBuffer\n\n\t}\n\n\tintervalChanged_( /* i1, t0, t1 */ ) {\n\n\t\t// empty\n\n\t}\n\n}\n\n/**\n * Fast and simple cubic spline interpolant.\n *\n * It was derived from a Hermitian construction setting the first derivative\n * at each sample position to the linear slope between neighboring positions\n * over their parameter interval.\n */\n\nclass CubicInterpolant extends Interpolant {\n\n\tconstructor( parameterPositions, sampleValues, sampleSize, resultBuffer ) {\n\n\t\tsuper( parameterPositions, sampleValues, sampleSize, resultBuffer );\n\n\t\tthis._weightPrev = - 0;\n\t\tthis._offsetPrev = - 0;\n\t\tthis._weightNext = - 0;\n\t\tthis._offsetNext = - 0;\n\n\t\tthis.DefaultSettings_ = {\n\n\t\t\tendingStart: ZeroCurvatureEnding,\n\t\t\tendingEnd: ZeroCurvatureEnding\n\n\t\t};\n\n\t}\n\n\tintervalChanged_( i1, t0, t1 ) {\n\n\t\tconst pp = this.parameterPositions;\n\t\tlet iPrev = i1 - 2,\n\t\t\tiNext = i1 + 1,\n\n\t\t\ttPrev = pp[ iPrev ],\n\t\t\ttNext = pp[ iNext ];\n\n\t\tif ( tPrev === undefined ) {\n\n\t\t\tswitch ( this.getSettings_().endingStart ) {\n\n\t\t\t\tcase ZeroSlopeEnding:\n\n\t\t\t\t\t// f'(t0) = 0\n\t\t\t\t\tiPrev = i1;\n\t\t\t\t\ttPrev = 2 * t0 - t1;\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase WrapAroundEnding:\n\n\t\t\t\t\t// use the other end of the curve\n\t\t\t\t\tiPrev = pp.length - 2;\n\t\t\t\t\ttPrev = t0 + pp[ iPrev ] - pp[ iPrev + 1 ];\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tdefault: // ZeroCurvatureEnding\n\n\t\t\t\t\t// f''(t0) = 0 a.k.a. Natural Spline\n\t\t\t\t\tiPrev = i1;\n\t\t\t\t\ttPrev = t1;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( tNext === undefined ) {\n\n\t\t\tswitch ( this.getSettings_().endingEnd ) {\n\n\t\t\t\tcase ZeroSlopeEnding:\n\n\t\t\t\t\t// f'(tN) = 0\n\t\t\t\t\tiNext = i1;\n\t\t\t\t\ttNext = 2 * t1 - t0;\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase WrapAroundEnding:\n\n\t\t\t\t\t// use the other end of the curve\n\t\t\t\t\tiNext = 1;\n\t\t\t\t\ttNext = t1 + pp[ 1 ] - pp[ 0 ];\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tdefault: // ZeroCurvatureEnding\n\n\t\t\t\t\t// f''(tN) = 0, a.k.a. Natural Spline\n\t\t\t\t\tiNext = i1 - 1;\n\t\t\t\t\ttNext = t0;\n\n\t\t\t}\n\n\t\t}\n\n\t\tconst halfDt = ( t1 - t0 ) * 0.5,\n\t\t\tstride = this.valueSize;\n\n\t\tthis._weightPrev = halfDt / ( t0 - tPrev );\n\t\tthis._weightNext = halfDt / ( tNext - t1 );\n\t\tthis._offsetPrev = iPrev * stride;\n\t\tthis._offsetNext = iNext * stride;\n\n\t}\n\n\tinterpolate_( i1, t0, t, t1 ) {\n\n\t\tconst result = this.resultBuffer,\n\t\t\tvalues = this.sampleValues,\n\t\t\tstride = this.valueSize,\n\n\t\t\to1 = i1 * stride,\t\to0 = o1 - stride,\n\t\t\toP = this._offsetPrev, \toN = this._offsetNext,\n\t\t\twP = this._weightPrev,\twN = this._weightNext,\n\n\t\t\tp = ( t - t0 ) / ( t1 - t0 ),\n\t\t\tpp = p * p,\n\t\t\tppp = pp * p;\n\n\t\t// evaluate polynomials\n\n\t\tconst sP = - wP * ppp + 2 * wP * pp - wP * p;\n\t\tconst s0 = ( 1 + wP ) * ppp + ( - 1.5 - 2 * wP ) * pp + ( - 0.5 + wP ) * p + 1;\n\t\tconst s1 = ( - 1 - wN ) * ppp + ( 1.5 + wN ) * pp + 0.5 * p;\n\t\tconst sN = wN * ppp - wN * pp;\n\n\t\t// combine data linearly\n\n\t\tfor ( let i = 0; i !== stride; ++ i ) {\n\n\t\t\tresult[ i ] =\n\t\t\t\t\tsP * values[ oP + i ] +\n\t\t\t\t\ts0 * values[ o0 + i ] +\n\t\t\t\t\ts1 * values[ o1 + i ] +\n\t\t\t\t\tsN * values[ oN + i ];\n\n\t\t}\n\n\t\treturn result;\n\n\t}\n\n}\n\nclass LinearInterpolant extends Interpolant {\n\n\tconstructor( parameterPositions, sampleValues, sampleSize, resultBuffer ) {\n\n\t\tsuper( parameterPositions, sampleValues, sampleSize, resultBuffer );\n\n\t}\n\n\tinterpolate_( i1, t0, t, t1 ) {\n\n\t\tconst result = this.resultBuffer,\n\t\t\tvalues = this.sampleValues,\n\t\t\tstride = this.valueSize,\n\n\t\t\toffset1 = i1 * stride,\n\t\t\toffset0 = offset1 - stride,\n\n\t\t\tweight1 = ( t - t0 ) / ( t1 - t0 ),\n\t\t\tweight0 = 1 - weight1;\n\n\t\tfor ( let i = 0; i !== stride; ++ i ) {\n\n\t\t\tresult[ i ] =\n\t\t\t\t\tvalues[ offset0 + i ] * weight0 +\n\t\t\t\t\tvalues[ offset1 + i ] * weight1;\n\n\t\t}\n\n\t\treturn result;\n\n\t}\n\n}\n\n/**\n *\n * Interpolant that evaluates to the sample value at the position preceding\n * the parameter.\n */\n\nclass DiscreteInterpolant extends Interpolant {\n\n\tconstructor( parameterPositions, sampleValues, sampleSize, resultBuffer ) {\n\n\t\tsuper( parameterPositions, sampleValues, sampleSize, resultBuffer );\n\n\t}\n\n\tinterpolate_( i1 /*, t0, t, t1 */ ) {\n\n\t\treturn this.copySampleValue_( i1 - 1 );\n\n\t}\n\n}\n\nclass KeyframeTrack {\n\n\tconstructor( name, times, values, interpolation ) {\n\n\t\tif ( name === undefined ) throw new Error( 'THREE.KeyframeTrack: track name is undefined' );\n\t\tif ( times === undefined || times.length === 0 ) throw new Error( 'THREE.KeyframeTrack: no keyframes in track named ' + name );\n\n\t\tthis.name = name;\n\n\t\tthis.times = AnimationUtils.convertArray( times, this.TimeBufferType );\n\t\tthis.values = AnimationUtils.convertArray( values, this.ValueBufferType );\n\n\t\tthis.setInterpolation( interpolation || this.DefaultInterpolation );\n\n\t}\n\n\t// Serialization (in static context, because of constructor invocation\n\t// and automatic invocation of .toJSON):\n\n\tstatic toJSON( track ) {\n\n\t\tconst trackType = track.constructor;\n\n\t\tlet json;\n\n\t\t// derived classes can define a static toJSON method\n\t\tif ( trackType.toJSON !== this.toJSON ) {\n\n\t\t\tjson = trackType.toJSON( track );\n\n\t\t} else {\n\n\t\t\t// by default, we assume the data can be serialized as-is\n\t\t\tjson = {\n\n\t\t\t\t'name': track.name,\n\t\t\t\t'times': AnimationUtils.convertArray( track.times, Array ),\n\t\t\t\t'values': AnimationUtils.convertArray( track.values, Array )\n\n\t\t\t};\n\n\t\t\tconst interpolation = track.getInterpolation();\n\n\t\t\tif ( interpolation !== track.DefaultInterpolation ) {\n\n\t\t\t\tjson.interpolation = interpolation;\n\n\t\t\t}\n\n\t\t}\n\n\t\tjson.type = track.ValueTypeName; // mandatory\n\n\t\treturn json;\n\n\t}\n\n\tInterpolantFactoryMethodDiscrete( result ) {\n\n\t\treturn new DiscreteInterpolant( this.times, this.values, this.getValueSize(), result );\n\n\t}\n\n\tInterpolantFactoryMethodLinear( result ) {\n\n\t\treturn new LinearInterpolant( this.times, this.values, this.getValueSize(), result );\n\n\t}\n\n\tInterpolantFactoryMethodSmooth( result ) {\n\n\t\treturn new CubicInterpolant( this.times, this.values, this.getValueSize(), result );\n\n\t}\n\n\tsetInterpolation( interpolation ) {\n\n\t\tlet factoryMethod;\n\n\t\tswitch ( interpolation ) {\n\n\t\t\tcase InterpolateDiscrete:\n\n\t\t\t\tfactoryMethod = this.InterpolantFactoryMethodDiscrete;\n\n\t\t\t\tbreak;\n\n\t\t\tcase InterpolateLinear:\n\n\t\t\t\tfactoryMethod = this.InterpolantFactoryMethodLinear;\n\n\t\t\t\tbreak;\n\n\t\t\tcase InterpolateSmooth:\n\n\t\t\t\tfactoryMethod = this.InterpolantFactoryMethodSmooth;\n\n\t\t\t\tbreak;\n\n\t\t}\n\n\t\tif ( factoryMethod === undefined ) {\n\n\t\t\tconst message = 'unsupported interpolation for ' +\n\t\t\t\tthis.ValueTypeName + ' keyframe track named ' + this.name;\n\n\t\t\tif ( this.createInterpolant === undefined ) {\n\n\t\t\t\t// fall back to default, unless the default itself is messed up\n\t\t\t\tif ( interpolation !== this.DefaultInterpolation ) {\n\n\t\t\t\t\tthis.setInterpolation( this.DefaultInterpolation );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tthrow new Error( message ); // fatal, in this case\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tconsole.warn( 'THREE.KeyframeTrack:', message );\n\t\t\treturn this;\n\n\t\t}\n\n\t\tthis.createInterpolant = factoryMethod;\n\n\t\treturn this;\n\n\t}\n\n\tgetInterpolation() {\n\n\t\tswitch ( this.createInterpolant ) {\n\n\t\t\tcase this.InterpolantFactoryMethodDiscrete:\n\n\t\t\t\treturn InterpolateDiscrete;\n\n\t\t\tcase this.InterpolantFactoryMethodLinear:\n\n\t\t\t\treturn InterpolateLinear;\n\n\t\t\tcase this.InterpolantFactoryMethodSmooth:\n\n\t\t\t\treturn InterpolateSmooth;\n\n\t\t}\n\n\t}\n\n\tgetValueSize() {\n\n\t\treturn this.values.length / this.times.length;\n\n\t}\n\n\t// move all keyframes either forwards or backwards in time\n\tshift( timeOffset ) {\n\n\t\tif ( timeOffset !== 0.0 ) {\n\n\t\t\tconst times = this.times;\n\n\t\t\tfor ( let i = 0, n = times.length; i !== n; ++ i ) {\n\n\t\t\t\ttimes[ i ] += timeOffset;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\t// scale all keyframe times by a factor (useful for frame <-> seconds conversions)\n\tscale( timeScale ) {\n\n\t\tif ( timeScale !== 1.0 ) {\n\n\t\t\tconst times = this.times;\n\n\t\t\tfor ( let i = 0, n = times.length; i !== n; ++ i ) {\n\n\t\t\t\ttimes[ i ] *= timeScale;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\t// removes keyframes before and after animation without changing any values within the range [startTime, endTime].\n\t// IMPORTANT: We do not shift around keys to the start of the track time, because for interpolated keys this will change their values\n\ttrim( startTime, endTime ) {\n\n\t\tconst times = this.times,\n\t\t\tnKeys = times.length;\n\n\t\tlet from = 0,\n\t\t\tto = nKeys - 1;\n\n\t\twhile ( from !== nKeys && times[ from ] < startTime ) {\n\n\t\t\t++ from;\n\n\t\t}\n\n\t\twhile ( to !== - 1 && times[ to ] > endTime ) {\n\n\t\t\t-- to;\n\n\t\t}\n\n\t\t++ to; // inclusive -> exclusive bound\n\n\t\tif ( from !== 0 || to !== nKeys ) {\n\n\t\t\t// empty tracks are forbidden, so keep at least one keyframe\n\t\t\tif ( from >= to ) {\n\n\t\t\t\tto = Math.max( to, 1 );\n\t\t\t\tfrom = to - 1;\n\n\t\t\t}\n\n\t\t\tconst stride = this.getValueSize();\n\t\t\tthis.times = AnimationUtils.arraySlice( times, from, to );\n\t\t\tthis.values = AnimationUtils.arraySlice( this.values, from * stride, to * stride );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\t// ensure we do not get a GarbageInGarbageOut situation, make sure tracks are at least minimally viable\n\tvalidate() {\n\n\t\tlet valid = true;\n\n\t\tconst valueSize = this.getValueSize();\n\t\tif ( valueSize - Math.floor( valueSize ) !== 0 ) {\n\n\t\t\tconsole.error( 'THREE.KeyframeTrack: Invalid value size in track.', this );\n\t\t\tvalid = false;\n\n\t\t}\n\n\t\tconst times = this.times,\n\t\t\tvalues = this.values,\n\n\t\t\tnKeys = times.length;\n\n\t\tif ( nKeys === 0 ) {\n\n\t\t\tconsole.error( 'THREE.KeyframeTrack: Track is empty.', this );\n\t\t\tvalid = false;\n\n\t\t}\n\n\t\tlet prevTime = null;\n\n\t\tfor ( let i = 0; i !== nKeys; i ++ ) {\n\n\t\t\tconst currTime = times[ i ];\n\n\t\t\tif ( typeof currTime === 'number' && isNaN( currTime ) ) {\n\n\t\t\t\tconsole.error( 'THREE.KeyframeTrack: Time is not a valid number.', this, i, currTime );\n\t\t\t\tvalid = false;\n\t\t\t\tbreak;\n\n\t\t\t}\n\n\t\t\tif ( prevTime !== null && prevTime > currTime ) {\n\n\t\t\t\tconsole.error( 'THREE.KeyframeTrack: Out of order keys.', this, i, currTime, prevTime );\n\t\t\t\tvalid = false;\n\t\t\t\tbreak;\n\n\t\t\t}\n\n\t\t\tprevTime = currTime;\n\n\t\t}\n\n\t\tif ( values !== undefined ) {\n\n\t\t\tif ( AnimationUtils.isTypedArray( values ) ) {\n\n\t\t\t\tfor ( let i = 0, n = values.length; i !== n; ++ i ) {\n\n\t\t\t\t\tconst value = values[ i ];\n\n\t\t\t\t\tif ( isNaN( value ) ) {\n\n\t\t\t\t\t\tconsole.error( 'THREE.KeyframeTrack: Value is not a valid number.', this, i, value );\n\t\t\t\t\t\tvalid = false;\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn valid;\n\n\t}\n\n\t// removes equivalent sequential keys as common in morph target sequences\n\t// (0,0,0,0,1,1,1,0,0,0,0,0,0,0) --> (0,0,1,1,0,0)\n\toptimize() {\n\n\t\t// times or values may be shared with other tracks, so overwriting is unsafe\n\t\tconst times = AnimationUtils.arraySlice( this.times ),\n\t\t\tvalues = AnimationUtils.arraySlice( this.values ),\n\t\t\tstride = this.getValueSize(),\n\n\t\t\tsmoothInterpolation = this.getInterpolation() === InterpolateSmooth,\n\n\t\t\tlastIndex = times.length - 1;\n\n\t\tlet writeIndex = 1;\n\n\t\tfor ( let i = 1; i < lastIndex; ++ i ) {\n\n\t\t\tlet keep = false;\n\n\t\t\tconst time = times[ i ];\n\t\t\tconst timeNext = times[ i + 1 ];\n\n\t\t\t// remove adjacent keyframes scheduled at the same time\n\n\t\t\tif ( time !== timeNext && ( i !== 1 || time !== times[ 0 ] ) ) {\n\n\t\t\t\tif ( ! smoothInterpolation ) {\n\n\t\t\t\t\t// remove unnecessary keyframes same as their neighbors\n\n\t\t\t\t\tconst offset = i * stride,\n\t\t\t\t\t\toffsetP = offset - stride,\n\t\t\t\t\t\toffsetN = offset + stride;\n\n\t\t\t\t\tfor ( let j = 0; j !== stride; ++ j ) {\n\n\t\t\t\t\t\tconst value = values[ offset + j ];\n\n\t\t\t\t\t\tif ( value !== values[ offsetP + j ] ||\n\t\t\t\t\t\t\tvalue !== values[ offsetN + j ] ) {\n\n\t\t\t\t\t\t\tkeep = true;\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\tkeep = true;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// in-place compaction\n\n\t\t\tif ( keep ) {\n\n\t\t\t\tif ( i !== writeIndex ) {\n\n\t\t\t\t\ttimes[ writeIndex ] = times[ i ];\n\n\t\t\t\t\tconst readOffset = i * stride,\n\t\t\t\t\t\twriteOffset = writeIndex * stride;\n\n\t\t\t\t\tfor ( let j = 0; j !== stride; ++ j ) {\n\n\t\t\t\t\t\tvalues[ writeOffset + j ] = values[ readOffset + j ];\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\t++ writeIndex;\n\n\t\t\t}\n\n\t\t}\n\n\t\t// flush last keyframe (compaction looks ahead)\n\n\t\tif ( lastIndex > 0 ) {\n\n\t\t\ttimes[ writeIndex ] = times[ lastIndex ];\n\n\t\t\tfor ( let readOffset = lastIndex * stride, writeOffset = writeIndex * stride, j = 0; j !== stride; ++ j ) {\n\n\t\t\t\tvalues[ writeOffset + j ] = values[ readOffset + j ];\n\n\t\t\t}\n\n\t\t\t++ writeIndex;\n\n\t\t}\n\n\t\tif ( writeIndex !== times.length ) {\n\n\t\t\tthis.times = AnimationUtils.arraySlice( times, 0, writeIndex );\n\t\t\tthis.values = AnimationUtils.arraySlice( values, 0, writeIndex * stride );\n\n\t\t} else {\n\n\t\t\tthis.times = times;\n\t\t\tthis.values = values;\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tclone() {\n\n\t\tconst times = AnimationUtils.arraySlice( this.times, 0 );\n\t\tconst values = AnimationUtils.arraySlice( this.values, 0 );\n\n\t\tconst TypedKeyframeTrack = this.constructor;\n\t\tconst track = new TypedKeyframeTrack( this.name, times, values );\n\n\t\t// Interpolant argument to constructor is not saved, so copy the factory method directly.\n\t\ttrack.createInterpolant = this.createInterpolant;\n\n\t\treturn track;\n\n\t}\n\n}\n\nKeyframeTrack.prototype.TimeBufferType = Float32Array;\nKeyframeTrack.prototype.ValueBufferType = Float32Array;\nKeyframeTrack.prototype.DefaultInterpolation = InterpolateLinear;\n\n/**\n * A Track of Boolean keyframe values.\n */\nclass BooleanKeyframeTrack extends KeyframeTrack {}\n\nBooleanKeyframeTrack.prototype.ValueTypeName = 'bool';\nBooleanKeyframeTrack.prototype.ValueBufferType = Array;\nBooleanKeyframeTrack.prototype.DefaultInterpolation = InterpolateDiscrete;\nBooleanKeyframeTrack.prototype.InterpolantFactoryMethodLinear = undefined;\nBooleanKeyframeTrack.prototype.InterpolantFactoryMethodSmooth = undefined;\n\n/**\n * A Track of keyframe values that represent color.\n */\nclass ColorKeyframeTrack extends KeyframeTrack {}\n\nColorKeyframeTrack.prototype.ValueTypeName = 'color';\n\n/**\n * A Track of numeric keyframe values.\n */\nclass NumberKeyframeTrack extends KeyframeTrack {}\n\nNumberKeyframeTrack.prototype.ValueTypeName = 'number';\n\n/**\n * Spherical linear unit quaternion interpolant.\n */\n\nclass QuaternionLinearInterpolant extends Interpolant {\n\n\tconstructor( parameterPositions, sampleValues, sampleSize, resultBuffer ) {\n\n\t\tsuper( parameterPositions, sampleValues, sampleSize, resultBuffer );\n\n\t}\n\n\tinterpolate_( i1, t0, t, t1 ) {\n\n\t\tconst result = this.resultBuffer,\n\t\t\tvalues = this.sampleValues,\n\t\t\tstride = this.valueSize,\n\n\t\t\talpha = ( t - t0 ) / ( t1 - t0 );\n\n\t\tlet offset = i1 * stride;\n\n\t\tfor ( let end = offset + stride; offset !== end; offset += 4 ) {\n\n\t\t\tQuaternion.slerpFlat( result, 0, values, offset - stride, values, offset, alpha );\n\n\t\t}\n\n\t\treturn result;\n\n\t}\n\n}\n\n/**\n * A Track of quaternion keyframe values.\n */\nclass QuaternionKeyframeTrack extends KeyframeTrack {\n\n\tInterpolantFactoryMethodLinear( result ) {\n\n\t\treturn new QuaternionLinearInterpolant( this.times, this.values, this.getValueSize(), result );\n\n\t}\n\n}\n\nQuaternionKeyframeTrack.prototype.ValueTypeName = 'quaternion';\n// ValueBufferType is inherited\nQuaternionKeyframeTrack.prototype.DefaultInterpolation = InterpolateLinear;\nQuaternionKeyframeTrack.prototype.InterpolantFactoryMethodSmooth = undefined;\n\n/**\n * A Track that interpolates Strings\n */\nclass StringKeyframeTrack extends KeyframeTrack {}\n\nStringKeyframeTrack.prototype.ValueTypeName = 'string';\nStringKeyframeTrack.prototype.ValueBufferType = Array;\nStringKeyframeTrack.prototype.DefaultInterpolation = InterpolateDiscrete;\nStringKeyframeTrack.prototype.InterpolantFactoryMethodLinear = undefined;\nStringKeyframeTrack.prototype.InterpolantFactoryMethodSmooth = undefined;\n\n/**\n * A Track of vectored keyframe values.\n */\nclass VectorKeyframeTrack extends KeyframeTrack {}\n\nVectorKeyframeTrack.prototype.ValueTypeName = 'vector';\n\nclass AnimationClip {\n\n\tconstructor( name, duration = - 1, tracks, blendMode = NormalAnimationBlendMode ) {\n\n\t\tthis.name = name;\n\t\tthis.tracks = tracks;\n\t\tthis.duration = duration;\n\t\tthis.blendMode = blendMode;\n\n\t\tthis.uuid = generateUUID();\n\n\t\t// this means it should figure out its duration by scanning the tracks\n\t\tif ( this.duration < 0 ) {\n\n\t\t\tthis.resetDuration();\n\n\t\t}\n\n\t}\n\n\n\tstatic parse( json ) {\n\n\t\tconst tracks = [],\n\t\t\tjsonTracks = json.tracks,\n\t\t\tframeTime = 1.0 / ( json.fps || 1.0 );\n\n\t\tfor ( let i = 0, n = jsonTracks.length; i !== n; ++ i ) {\n\n\t\t\ttracks.push( parseKeyframeTrack( jsonTracks[ i ] ).scale( frameTime ) );\n\n\t\t}\n\n\t\tconst clip = new this( json.name, json.duration, tracks, json.blendMode );\n\t\tclip.uuid = json.uuid;\n\n\t\treturn clip;\n\n\t}\n\n\tstatic toJSON( clip ) {\n\n\t\tconst tracks = [],\n\t\t\tclipTracks = clip.tracks;\n\n\t\tconst json = {\n\n\t\t\t'name': clip.name,\n\t\t\t'duration': clip.duration,\n\t\t\t'tracks': tracks,\n\t\t\t'uuid': clip.uuid,\n\t\t\t'blendMode': clip.blendMode\n\n\t\t};\n\n\t\tfor ( let i = 0, n = clipTracks.length; i !== n; ++ i ) {\n\n\t\t\ttracks.push( KeyframeTrack.toJSON( clipTracks[ i ] ) );\n\n\t\t}\n\n\t\treturn json;\n\n\t}\n\n\tstatic CreateFromMorphTargetSequence( name, morphTargetSequence, fps, noLoop ) {\n\n\t\tconst numMorphTargets = morphTargetSequence.length;\n\t\tconst tracks = [];\n\n\t\tfor ( let i = 0; i < numMorphTargets; i ++ ) {\n\n\t\t\tlet times = [];\n\t\t\tlet values = [];\n\n\t\t\ttimes.push(\n\t\t\t\t( i + numMorphTargets - 1 ) % numMorphTargets,\n\t\t\t\ti,\n\t\t\t\t( i + 1 ) % numMorphTargets );\n\n\t\t\tvalues.push( 0, 1, 0 );\n\n\t\t\tconst order = AnimationUtils.getKeyframeOrder( times );\n\t\t\ttimes = AnimationUtils.sortedArray( times, 1, order );\n\t\t\tvalues = AnimationUtils.sortedArray( values, 1, order );\n\n\t\t\t// if there is a key at the first frame, duplicate it as the\n\t\t\t// last frame as well for perfect loop.\n\t\t\tif ( ! noLoop && times[ 0 ] === 0 ) {\n\n\t\t\t\ttimes.push( numMorphTargets );\n\t\t\t\tvalues.push( values[ 0 ] );\n\n\t\t\t}\n\n\t\t\ttracks.push(\n\t\t\t\tnew NumberKeyframeTrack(\n\t\t\t\t\t'.morphTargetInfluences[' + morphTargetSequence[ i ].name + ']',\n\t\t\t\t\ttimes, values\n\t\t\t\t).scale( 1.0 / fps ) );\n\n\t\t}\n\n\t\treturn new this( name, - 1, tracks );\n\n\t}\n\n\tstatic findByName( objectOrClipArray, name ) {\n\n\t\tlet clipArray = objectOrClipArray;\n\n\t\tif ( ! Array.isArray( objectOrClipArray ) ) {\n\n\t\t\tconst o = objectOrClipArray;\n\t\t\tclipArray = o.geometry && o.geometry.animations || o.animations;\n\n\t\t}\n\n\t\tfor ( let i = 0; i < clipArray.length; i ++ ) {\n\n\t\t\tif ( clipArray[ i ].name === name ) {\n\n\t\t\t\treturn clipArray[ i ];\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn null;\n\n\t}\n\n\tstatic CreateClipsFromMorphTargetSequences( morphTargets, fps, noLoop ) {\n\n\t\tconst animationToMorphTargets = {};\n\n\t\t// tested with https://regex101.com/ on trick sequences\n\t\t// such flamingo_flyA_003, flamingo_run1_003, crdeath0059\n\t\tconst pattern = /^([\\w-]*?)([\\d]+)$/;\n\n\t\t// sort morph target names into animation groups based\n\t\t// patterns like Walk_001, Walk_002, Run_001, Run_002\n\t\tfor ( let i = 0, il = morphTargets.length; i < il; i ++ ) {\n\n\t\t\tconst morphTarget = morphTargets[ i ];\n\t\t\tconst parts = morphTarget.name.match( pattern );\n\n\t\t\tif ( parts && parts.length > 1 ) {\n\n\t\t\t\tconst name = parts[ 1 ];\n\n\t\t\t\tlet animationMorphTargets = animationToMorphTargets[ name ];\n\n\t\t\t\tif ( ! animationMorphTargets ) {\n\n\t\t\t\t\tanimationToMorphTargets[ name ] = animationMorphTargets = [];\n\n\t\t\t\t}\n\n\t\t\t\tanimationMorphTargets.push( morphTarget );\n\n\t\t\t}\n\n\t\t}\n\n\t\tconst clips = [];\n\n\t\tfor ( const name in animationToMorphTargets ) {\n\n\t\t\tclips.push( this.CreateFromMorphTargetSequence( name, animationToMorphTargets[ name ], fps, noLoop ) );\n\n\t\t}\n\n\t\treturn clips;\n\n\t}\n\n\t// parse the animation.hierarchy format\n\tstatic parseAnimation( animation, bones ) {\n\n\t\tif ( ! animation ) {\n\n\t\t\tconsole.error( 'THREE.AnimationClip: No animation in JSONLoader data.' );\n\t\t\treturn null;\n\n\t\t}\n\n\t\tconst addNonemptyTrack = function ( trackType, trackName, animationKeys, propertyName, destTracks ) {\n\n\t\t\t// only return track if there are actually keys.\n\t\t\tif ( animationKeys.length !== 0 ) {\n\n\t\t\t\tconst times = [];\n\t\t\t\tconst values = [];\n\n\t\t\t\tAnimationUtils.flattenJSON( animationKeys, times, values, propertyName );\n\n\t\t\t\t// empty keys are filtered out, so check again\n\t\t\t\tif ( times.length !== 0 ) {\n\n\t\t\t\t\tdestTracks.push( new trackType( trackName, times, values ) );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t};\n\n\t\tconst tracks = [];\n\n\t\tconst clipName = animation.name || 'default';\n\t\tconst fps = animation.fps || 30;\n\t\tconst blendMode = animation.blendMode;\n\n\t\t// automatic length determination in AnimationClip.\n\t\tlet duration = animation.length || - 1;\n\n\t\tconst hierarchyTracks = animation.hierarchy || [];\n\n\t\tfor ( let h = 0; h < hierarchyTracks.length; h ++ ) {\n\n\t\t\tconst animationKeys = hierarchyTracks[ h ].keys;\n\n\t\t\t// skip empty tracks\n\t\t\tif ( ! animationKeys || animationKeys.length === 0 ) continue;\n\n\t\t\t// process morph targets\n\t\t\tif ( animationKeys[ 0 ].morphTargets ) {\n\n\t\t\t\t// figure out all morph targets used in this track\n\t\t\t\tconst morphTargetNames = {};\n\n\t\t\t\tlet k;\n\n\t\t\t\tfor ( k = 0; k < animationKeys.length; k ++ ) {\n\n\t\t\t\t\tif ( animationKeys[ k ].morphTargets ) {\n\n\t\t\t\t\t\tfor ( let m = 0; m < animationKeys[ k ].morphTargets.length; m ++ ) {\n\n\t\t\t\t\t\t\tmorphTargetNames[ animationKeys[ k ].morphTargets[ m ] ] = - 1;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\t// create a track for each morph target with all zero\n\t\t\t\t// morphTargetInfluences except for the keys in which\n\t\t\t\t// the morphTarget is named.\n\t\t\t\tfor ( const morphTargetName in morphTargetNames ) {\n\n\t\t\t\t\tconst times = [];\n\t\t\t\t\tconst values = [];\n\n\t\t\t\t\tfor ( let m = 0; m !== animationKeys[ k ].morphTargets.length; ++ m ) {\n\n\t\t\t\t\t\tconst animationKey = animationKeys[ k ];\n\n\t\t\t\t\t\ttimes.push( animationKey.time );\n\t\t\t\t\t\tvalues.push( ( animationKey.morphTarget === morphTargetName ) ? 1 : 0 );\n\n\t\t\t\t\t}\n\n\t\t\t\t\ttracks.push( new NumberKeyframeTrack( '.morphTargetInfluence[' + morphTargetName + ']', times, values ) );\n\n\t\t\t\t}\n\n\t\t\t\tduration = morphTargetNames.length * fps;\n\n\t\t\t} else {\n\n\t\t\t\t// ...assume skeletal animation\n\n\t\t\t\tconst boneName = '.bones[' + bones[ h ].name + ']';\n\n\t\t\t\taddNonemptyTrack(\n\t\t\t\t\tVectorKeyframeTrack, boneName + '.position',\n\t\t\t\t\tanimationKeys, 'pos', tracks );\n\n\t\t\t\taddNonemptyTrack(\n\t\t\t\t\tQuaternionKeyframeTrack, boneName + '.quaternion',\n\t\t\t\t\tanimationKeys, 'rot', tracks );\n\n\t\t\t\taddNonemptyTrack(\n\t\t\t\t\tVectorKeyframeTrack, boneName + '.scale',\n\t\t\t\t\tanimationKeys, 'scl', tracks );\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( tracks.length === 0 ) {\n\n\t\t\treturn null;\n\n\t\t}\n\n\t\tconst clip = new this( clipName, duration, tracks, blendMode );\n\n\t\treturn clip;\n\n\t}\n\n\tresetDuration() {\n\n\t\tconst tracks = this.tracks;\n\t\tlet duration = 0;\n\n\t\tfor ( let i = 0, n = tracks.length; i !== n; ++ i ) {\n\n\t\t\tconst track = this.tracks[ i ];\n\n\t\t\tduration = Math.max( duration, track.times[ track.times.length - 1 ] );\n\n\t\t}\n\n\t\tthis.duration = duration;\n\n\t\treturn this;\n\n\t}\n\n\ttrim() {\n\n\t\tfor ( let i = 0; i < this.tracks.length; i ++ ) {\n\n\t\t\tthis.tracks[ i ].trim( 0, this.duration );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tvalidate() {\n\n\t\tlet valid = true;\n\n\t\tfor ( let i = 0; i < this.tracks.length; i ++ ) {\n\n\t\t\tvalid = valid && this.tracks[ i ].validate();\n\n\t\t}\n\n\t\treturn valid;\n\n\t}\n\n\toptimize() {\n\n\t\tfor ( let i = 0; i < this.tracks.length; i ++ ) {\n\n\t\t\tthis.tracks[ i ].optimize();\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tclone() {\n\n\t\tconst tracks = [];\n\n\t\tfor ( let i = 0; i < this.tracks.length; i ++ ) {\n\n\t\t\ttracks.push( this.tracks[ i ].clone() );\n\n\t\t}\n\n\t\treturn new this.constructor( this.name, this.duration, tracks, this.blendMode );\n\n\t}\n\n\ttoJSON() {\n\n\t\treturn this.constructor.toJSON( this );\n\n\t}\n\n}\n\nfunction getTrackTypeForValueTypeName( typeName ) {\n\n\tswitch ( typeName.toLowerCase() ) {\n\n\t\tcase 'scalar':\n\t\tcase 'double':\n\t\tcase 'float':\n\t\tcase 'number':\n\t\tcase 'integer':\n\n\t\t\treturn NumberKeyframeTrack;\n\n\t\tcase 'vector':\n\t\tcase 'vector2':\n\t\tcase 'vector3':\n\t\tcase 'vector4':\n\n\t\t\treturn VectorKeyframeTrack;\n\n\t\tcase 'color':\n\n\t\t\treturn ColorKeyframeTrack;\n\n\t\tcase 'quaternion':\n\n\t\t\treturn QuaternionKeyframeTrack;\n\n\t\tcase 'bool':\n\t\tcase 'boolean':\n\n\t\t\treturn BooleanKeyframeTrack;\n\n\t\tcase 'string':\n\n\t\t\treturn StringKeyframeTrack;\n\n\t}\n\n\tthrow new Error( 'THREE.KeyframeTrack: Unsupported typeName: ' + typeName );\n\n}\n\nfunction parseKeyframeTrack( json ) {\n\n\tif ( json.type === undefined ) {\n\n\t\tthrow new Error( 'THREE.KeyframeTrack: track type undefined, can not parse' );\n\n\t}\n\n\tconst trackType = getTrackTypeForValueTypeName( json.type );\n\n\tif ( json.times === undefined ) {\n\n\t\tconst times = [], values = [];\n\n\t\tAnimationUtils.flattenJSON( json.keys, times, values, 'value' );\n\n\t\tjson.times = times;\n\t\tjson.values = values;\n\n\t}\n\n\t// derived classes can define a static parse method\n\tif ( trackType.parse !== undefined ) {\n\n\t\treturn trackType.parse( json );\n\n\t} else {\n\n\t\t// by default, we assume a constructor compatible with the base\n\t\treturn new trackType( json.name, json.times, json.values, json.interpolation );\n\n\t}\n\n}\n\nconst Cache = {\n\n\tenabled: false,\n\n\tfiles: {},\n\n\tadd: function ( key, file ) {\n\n\t\tif ( this.enabled === false ) return;\n\n\t\t// console.log( 'THREE.Cache', 'Adding key:', key );\n\n\t\tthis.files[ key ] = file;\n\n\t},\n\n\tget: function ( key ) {\n\n\t\tif ( this.enabled === false ) return;\n\n\t\t// console.log( 'THREE.Cache', 'Checking key:', key );\n\n\t\treturn this.files[ key ];\n\n\t},\n\n\tremove: function ( key ) {\n\n\t\tdelete this.files[ key ];\n\n\t},\n\n\tclear: function () {\n\n\t\tthis.files = {};\n\n\t}\n\n};\n\nclass LoadingManager {\n\n\tconstructor( onLoad, onProgress, onError ) {\n\n\t\tconst scope = this;\n\n\t\tlet isLoading = false;\n\t\tlet itemsLoaded = 0;\n\t\tlet itemsTotal = 0;\n\t\tlet urlModifier = undefined;\n\t\tconst handlers = [];\n\n\t\t// Refer to #5689 for the reason why we don't set .onStart\n\t\t// in the constructor\n\n\t\tthis.onStart = undefined;\n\t\tthis.onLoad = onLoad;\n\t\tthis.onProgress = onProgress;\n\t\tthis.onError = onError;\n\n\t\tthis.itemStart = function ( url ) {\n\n\t\t\titemsTotal ++;\n\n\t\t\tif ( isLoading === false ) {\n\n\t\t\t\tif ( scope.onStart !== undefined ) {\n\n\t\t\t\t\tscope.onStart( url, itemsLoaded, itemsTotal );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tisLoading = true;\n\n\t\t};\n\n\t\tthis.itemEnd = function ( url ) {\n\n\t\t\titemsLoaded ++;\n\n\t\t\tif ( scope.onProgress !== undefined ) {\n\n\t\t\t\tscope.onProgress( url, itemsLoaded, itemsTotal );\n\n\t\t\t}\n\n\t\t\tif ( itemsLoaded === itemsTotal ) {\n\n\t\t\t\tisLoading = false;\n\n\t\t\t\tif ( scope.onLoad !== undefined ) {\n\n\t\t\t\t\tscope.onLoad();\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t};\n\n\t\tthis.itemError = function ( url ) {\n\n\t\t\tif ( scope.onError !== undefined ) {\n\n\t\t\t\tscope.onError( url );\n\n\t\t\t}\n\n\t\t};\n\n\t\tthis.resolveURL = function ( url ) {\n\n\t\t\tif ( urlModifier ) {\n\n\t\t\t\treturn urlModifier( url );\n\n\t\t\t}\n\n\t\t\treturn url;\n\n\t\t};\n\n\t\tthis.setURLModifier = function ( transform ) {\n\n\t\t\turlModifier = transform;\n\n\t\t\treturn this;\n\n\t\t};\n\n\t\tthis.addHandler = function ( regex, loader ) {\n\n\t\t\thandlers.push( regex, loader );\n\n\t\t\treturn this;\n\n\t\t};\n\n\t\tthis.removeHandler = function ( regex ) {\n\n\t\t\tconst index = handlers.indexOf( regex );\n\n\t\t\tif ( index !== - 1 ) {\n\n\t\t\t\thandlers.splice( index, 2 );\n\n\t\t\t}\n\n\t\t\treturn this;\n\n\t\t};\n\n\t\tthis.getHandler = function ( file ) {\n\n\t\t\tfor ( let i = 0, l = handlers.length; i < l; i += 2 ) {\n\n\t\t\t\tconst regex = handlers[ i ];\n\t\t\t\tconst loader = handlers[ i + 1 ];\n\n\t\t\t\tif ( regex.global ) regex.lastIndex = 0; // see #17920\n\n\t\t\t\tif ( regex.test( file ) ) {\n\n\t\t\t\t\treturn loader;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn null;\n\n\t\t};\n\n\t}\n\n}\n\nconst DefaultLoadingManager = new LoadingManager();\n\nclass Loader {\n\n\tconstructor( manager ) {\n\n\t\tthis.manager = ( manager !== undefined ) ? manager : DefaultLoadingManager;\n\n\t\tthis.crossOrigin = 'anonymous';\n\t\tthis.withCredentials = false;\n\t\tthis.path = '';\n\t\tthis.resourcePath = '';\n\t\tthis.requestHeader = {};\n\n\t}\n\n\tload( /* url, onLoad, onProgress, onError */ ) {}\n\n\tloadAsync( url, onProgress ) {\n\n\t\tconst scope = this;\n\n\t\treturn new Promise( function ( resolve, reject ) {\n\n\t\t\tscope.load( url, resolve, onProgress, reject );\n\n\t\t} );\n\n\t}\n\n\tparse( /* data */ ) {}\n\n\tsetCrossOrigin( crossOrigin ) {\n\n\t\tthis.crossOrigin = crossOrigin;\n\t\treturn this;\n\n\t}\n\n\tsetWithCredentials( value ) {\n\n\t\tthis.withCredentials = value;\n\t\treturn this;\n\n\t}\n\n\tsetPath( path ) {\n\n\t\tthis.path = path;\n\t\treturn this;\n\n\t}\n\n\tsetResourcePath( resourcePath ) {\n\n\t\tthis.resourcePath = resourcePath;\n\t\treturn this;\n\n\t}\n\n\tsetRequestHeader( requestHeader ) {\n\n\t\tthis.requestHeader = requestHeader;\n\t\treturn this;\n\n\t}\n\n}\n\nconst loading = {};\n\nclass FileLoader extends Loader {\n\n\tconstructor( manager ) {\n\n\t\tsuper( manager );\n\n\t}\n\n\tload( url, onLoad, onProgress, onError ) {\n\n\t\tif ( url === undefined ) url = '';\n\n\t\tif ( this.path !== undefined ) url = this.path + url;\n\n\t\turl = this.manager.resolveURL( url );\n\n\t\tconst cached = Cache.get( url );\n\n\t\tif ( cached !== undefined ) {\n\n\t\t\tthis.manager.itemStart( url );\n\n\t\t\tsetTimeout( () => {\n\n\t\t\t\tif ( onLoad ) onLoad( cached );\n\n\t\t\t\tthis.manager.itemEnd( url );\n\n\t\t\t}, 0 );\n\n\t\t\treturn cached;\n\n\t\t}\n\n\t\t// Check if request is duplicate\n\n\t\tif ( loading[ url ] !== undefined ) {\n\n\t\t\tloading[ url ].push( {\n\n\t\t\t\tonLoad: onLoad,\n\t\t\t\tonProgress: onProgress,\n\t\t\t\tonError: onError\n\n\t\t\t} );\n\n\t\t\treturn;\n\n\t\t}\n\n\t\t// Initialise array for duplicate requests\n\t\tloading[ url ] = [];\n\n\t\tloading[ url ].push( {\n\t\t\tonLoad: onLoad,\n\t\t\tonProgress: onProgress,\n\t\t\tonError: onError,\n\t\t} );\n\n\t\t// create request\n\t\tconst req = new Request( url, {\n\t\t\theaders: new Headers( this.requestHeader ),\n\t\t\tcredentials: this.withCredentials ? 'include' : 'same-origin',\n\t\t\t// An abort controller could be added within a future PR\n\t\t} );\n\n\t\t// record states ( avoid data race )\n\t\tconst mimeType = this.mimeType;\n\t\tconst responseType = this.responseType;\n\n\t\t// start the fetch\n\t\tfetch( req )\n\t\t\t.then( response => {\n\n\t\t\t\tif ( response.status === 200 || response.status === 0 ) {\n\n\t\t\t\t\t// Some browsers return HTTP Status 0 when using non-http protocol\n\t\t\t\t\t// e.g. 'file://' or 'data://'. Handle as success.\n\n\t\t\t\t\tif ( response.status === 0 ) {\n\n\t\t\t\t\t\tconsole.warn( 'THREE.FileLoader: HTTP Status 0 received.' );\n\n\t\t\t\t\t}\n\n\t\t\t\t\t// Workaround: Checking if response.body === undefined for Alipay browser #23548\n\n\t\t\t\t\tif ( typeof ReadableStream === 'undefined' || response.body === undefined || response.body.getReader === undefined ) {\n\n\t\t\t\t\t\treturn response;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tconst callbacks = loading[ url ];\n\t\t\t\t\tconst reader = response.body.getReader();\n\t\t\t\t\tconst contentLength = response.headers.get( 'Content-Length' );\n\t\t\t\t\tconst total = contentLength ? parseInt( contentLength ) : 0;\n\t\t\t\t\tconst lengthComputable = total !== 0;\n\t\t\t\t\tlet loaded = 0;\n\n\t\t\t\t\t// periodically read data into the new stream tracking while download progress\n\t\t\t\t\tconst stream = new ReadableStream( {\n\t\t\t\t\t\tstart( controller ) {\n\n\t\t\t\t\t\t\treadData();\n\n\t\t\t\t\t\t\tfunction readData() {\n\n\t\t\t\t\t\t\t\treader.read().then( ( { done, value } ) => {\n\n\t\t\t\t\t\t\t\t\tif ( done ) {\n\n\t\t\t\t\t\t\t\t\t\tcontroller.close();\n\n\t\t\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\t\t\tloaded += value.byteLength;\n\n\t\t\t\t\t\t\t\t\t\tconst event = new ProgressEvent( 'progress', { lengthComputable, loaded, total } );\n\t\t\t\t\t\t\t\t\t\tfor ( let i = 0, il = callbacks.length; i < il; i ++ ) {\n\n\t\t\t\t\t\t\t\t\t\t\tconst callback = callbacks[ i ];\n\t\t\t\t\t\t\t\t\t\t\tif ( callback.onProgress ) callback.onProgress( event );\n\n\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\tcontroller.enqueue( value );\n\t\t\t\t\t\t\t\t\t\treadData();\n\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t} );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t} );\n\n\t\t\t\t\treturn new Response( stream );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tthrow Error( `fetch for \"${response.url}\" responded with ${response.status}: ${response.statusText}` );\n\n\t\t\t\t}\n\n\t\t\t} )\n\t\t\t.then( response => {\n\n\t\t\t\tswitch ( responseType ) {\n\n\t\t\t\t\tcase 'arraybuffer':\n\n\t\t\t\t\t\treturn response.arrayBuffer();\n\n\t\t\t\t\tcase 'blob':\n\n\t\t\t\t\t\treturn response.blob();\n\n\t\t\t\t\tcase 'document':\n\n\t\t\t\t\t\treturn response.text()\n\t\t\t\t\t\t\t.then( text => {\n\n\t\t\t\t\t\t\t\tconst parser = new DOMParser();\n\t\t\t\t\t\t\t\treturn parser.parseFromString( text, mimeType );\n\n\t\t\t\t\t\t\t} );\n\n\t\t\t\t\tcase 'json':\n\n\t\t\t\t\t\treturn response.json();\n\n\t\t\t\t\tdefault:\n\n\t\t\t\t\t\tif ( mimeType === undefined ) {\n\n\t\t\t\t\t\t\treturn response.text();\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t// sniff encoding\n\t\t\t\t\t\t\tconst re = /charset=\"?([^;\"\\s]*)\"?/i;\n\t\t\t\t\t\t\tconst exec = re.exec( mimeType );\n\t\t\t\t\t\t\tconst label = exec && exec[ 1 ] ? exec[ 1 ].toLowerCase() : undefined;\n\t\t\t\t\t\t\tconst decoder = new TextDecoder( label );\n\t\t\t\t\t\t\treturn response.arrayBuffer().then( ab => decoder.decode( ab ) );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t} )\n\t\t\t.then( data => {\n\n\t\t\t\t// Add to cache only on HTTP success, so that we do not cache\n\t\t\t\t// error response bodies as proper responses to requests.\n\t\t\t\tCache.add( url, data );\n\n\t\t\t\tconst callbacks = loading[ url ];\n\t\t\t\tdelete loading[ url ];\n\n\t\t\t\tfor ( let i = 0, il = callbacks.length; i < il; i ++ ) {\n\n\t\t\t\t\tconst callback = callbacks[ i ];\n\t\t\t\t\tif ( callback.onLoad ) callback.onLoad( data );\n\n\t\t\t\t}\n\n\t\t\t} )\n\t\t\t.catch( err => {\n\n\t\t\t\t// Abort errors and other errors are handled the same\n\n\t\t\t\tconst callbacks = loading[ url ];\n\n\t\t\t\tif ( callbacks === undefined ) {\n\n\t\t\t\t\t// When onLoad was called and url was deleted in `loading`\n\t\t\t\t\tthis.manager.itemError( url );\n\t\t\t\t\tthrow err;\n\n\t\t\t\t}\n\n\t\t\t\tdelete loading[ url ];\n\n\t\t\t\tfor ( let i = 0, il = callbacks.length; i < il; i ++ ) {\n\n\t\t\t\t\tconst callback = callbacks[ i ];\n\t\t\t\t\tif ( callback.onError ) callback.onError( err );\n\n\t\t\t\t}\n\n\t\t\t\tthis.manager.itemError( url );\n\n\t\t\t} )\n\t\t\t.finally( () => {\n\n\t\t\t\tthis.manager.itemEnd( url );\n\n\t\t\t} );\n\n\t\tthis.manager.itemStart( url );\n\n\t}\n\n\tsetResponseType( value ) {\n\n\t\tthis.responseType = value;\n\t\treturn this;\n\n\t}\n\n\tsetMimeType( value ) {\n\n\t\tthis.mimeType = value;\n\t\treturn this;\n\n\t}\n\n}\n\nclass AnimationLoader extends Loader {\n\n\tconstructor( manager ) {\n\n\t\tsuper( manager );\n\n\t}\n\n\tload( url, onLoad, onProgress, onError ) {\n\n\t\tconst scope = this;\n\n\t\tconst loader = new FileLoader( this.manager );\n\t\tloader.setPath( this.path );\n\t\tloader.setRequestHeader( this.requestHeader );\n\t\tloader.setWithCredentials( this.withCredentials );\n\t\tloader.load( url, function ( text ) {\n\n\t\t\ttry {\n\n\t\t\t\tonLoad( scope.parse( JSON.parse( text ) ) );\n\n\t\t\t} catch ( e ) {\n\n\t\t\t\tif ( onError ) {\n\n\t\t\t\t\tonError( e );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tconsole.error( e );\n\n\t\t\t\t}\n\n\t\t\t\tscope.manager.itemError( url );\n\n\t\t\t}\n\n\t\t}, onProgress, onError );\n\n\t}\n\n\tparse( json ) {\n\n\t\tconst animations = [];\n\n\t\tfor ( let i = 0; i < json.length; i ++ ) {\n\n\t\t\tconst clip = AnimationClip.parse( json[ i ] );\n\n\t\t\tanimations.push( clip );\n\n\t\t}\n\n\t\treturn animations;\n\n\t}\n\n}\n\n/**\n * Abstract Base class to block based textures loader (dds, pvr, ...)\n *\n * Sub classes have to implement the parse() method which will be used in load().\n */\n\nclass CompressedTextureLoader extends Loader {\n\n\tconstructor( manager ) {\n\n\t\tsuper( manager );\n\n\t}\n\n\tload( url, onLoad, onProgress, onError ) {\n\n\t\tconst scope = this;\n\n\t\tconst images = [];\n\n\t\tconst texture = new CompressedTexture();\n\n\t\tconst loader = new FileLoader( this.manager );\n\t\tloader.setPath( this.path );\n\t\tloader.setResponseType( 'arraybuffer' );\n\t\tloader.setRequestHeader( this.requestHeader );\n\t\tloader.setWithCredentials( scope.withCredentials );\n\n\t\tlet loaded = 0;\n\n\t\tfunction loadTexture( i ) {\n\n\t\t\tloader.load( url[ i ], function ( buffer ) {\n\n\t\t\t\tconst texDatas = scope.parse( buffer, true );\n\n\t\t\t\timages[ i ] = {\n\t\t\t\t\twidth: texDatas.width,\n\t\t\t\t\theight: texDatas.height,\n\t\t\t\t\tformat: texDatas.format,\n\t\t\t\t\tmipmaps: texDatas.mipmaps\n\t\t\t\t};\n\n\t\t\t\tloaded += 1;\n\n\t\t\t\tif ( loaded === 6 ) {\n\n\t\t\t\t\tif ( texDatas.mipmapCount === 1 ) texture.minFilter = LinearFilter;\n\n\t\t\t\t\ttexture.image = images;\n\t\t\t\t\ttexture.format = texDatas.format;\n\t\t\t\t\ttexture.needsUpdate = true;\n\n\t\t\t\t\tif ( onLoad ) onLoad( texture );\n\n\t\t\t\t}\n\n\t\t\t}, onProgress, onError );\n\n\t\t}\n\n\t\tif ( Array.isArray( url ) ) {\n\n\t\t\tfor ( let i = 0, il = url.length; i < il; ++ i ) {\n\n\t\t\t\tloadTexture( i );\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\t// compressed cubemap texture stored in a single DDS file\n\n\t\t\tloader.load( url, function ( buffer ) {\n\n\t\t\t\tconst texDatas = scope.parse( buffer, true );\n\n\t\t\t\tif ( texDatas.isCubemap ) {\n\n\t\t\t\t\tconst faces = texDatas.mipmaps.length / texDatas.mipmapCount;\n\n\t\t\t\t\tfor ( let f = 0; f < faces; f ++ ) {\n\n\t\t\t\t\t\timages[ f ] = { mipmaps: [] };\n\n\t\t\t\t\t\tfor ( let i = 0; i < texDatas.mipmapCount; i ++ ) {\n\n\t\t\t\t\t\t\timages[ f ].mipmaps.push( texDatas.mipmaps[ f * texDatas.mipmapCount + i ] );\n\t\t\t\t\t\t\timages[ f ].format = texDatas.format;\n\t\t\t\t\t\t\timages[ f ].width = texDatas.width;\n\t\t\t\t\t\t\timages[ f ].height = texDatas.height;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t\ttexture.image = images;\n\n\t\t\t\t} else {\n\n\t\t\t\t\ttexture.image.width = texDatas.width;\n\t\t\t\t\ttexture.image.height = texDatas.height;\n\t\t\t\t\ttexture.mipmaps = texDatas.mipmaps;\n\n\t\t\t\t}\n\n\t\t\t\tif ( texDatas.mipmapCount === 1 ) {\n\n\t\t\t\t\ttexture.minFilter = LinearFilter;\n\n\t\t\t\t}\n\n\t\t\t\ttexture.format = texDatas.format;\n\t\t\t\ttexture.needsUpdate = true;\n\n\t\t\t\tif ( onLoad ) onLoad( texture );\n\n\t\t\t}, onProgress, onError );\n\n\t\t}\n\n\t\treturn texture;\n\n\t}\n\n}\n\nclass ImageLoader extends Loader {\n\n\tconstructor( manager ) {\n\n\t\tsuper( manager );\n\n\t}\n\n\tload( url, onLoad, onProgress, onError ) {\n\n\t\tif ( this.path !== undefined ) url = this.path + url;\n\n\t\turl = this.manager.resolveURL( url );\n\n\t\tconst scope = this;\n\n\t\tconst cached = Cache.get( url );\n\n\t\tif ( cached !== undefined ) {\n\n\t\t\tscope.manager.itemStart( url );\n\n\t\t\tsetTimeout( function () {\n\n\t\t\t\tif ( onLoad ) onLoad( cached );\n\n\t\t\t\tscope.manager.itemEnd( url );\n\n\t\t\t}, 0 );\n\n\t\t\treturn cached;\n\n\t\t}\n\n\t\tconst image = createElementNS( 'img' );\n\n\t\tfunction onImageLoad() {\n\n\t\t\tremoveEventListeners();\n\n\t\t\tCache.add( url, this );\n\n\t\t\tif ( onLoad ) onLoad( this );\n\n\t\t\tscope.manager.itemEnd( url );\n\n\t\t}\n\n\t\tfunction onImageError( event ) {\n\n\t\t\tremoveEventListeners();\n\n\t\t\tif ( onError ) onError( event );\n\n\t\t\tscope.manager.itemError( url );\n\t\t\tscope.manager.itemEnd( url );\n\n\t\t}\n\n\t\tfunction removeEventListeners() {\n\n\t\t\timage.removeEventListener( 'load', onImageLoad, false );\n\t\t\timage.removeEventListener( 'error', onImageError, false );\n\n\t\t}\n\n\t\timage.addEventListener( 'load', onImageLoad, false );\n\t\timage.addEventListener( 'error', onImageError, false );\n\n\t\tif ( url.slice( 0, 5 ) !== 'data:' ) {\n\n\t\t\tif ( this.crossOrigin !== undefined ) image.crossOrigin = this.crossOrigin;\n\n\t\t}\n\n\t\tscope.manager.itemStart( url );\n\n\t\timage.src = url;\n\n\t\treturn image;\n\n\t}\n\n}\n\nclass CubeTextureLoader extends Loader {\n\n\tconstructor( manager ) {\n\n\t\tsuper( manager );\n\n\t}\n\n\tload( urls, onLoad, onProgress, onError ) {\n\n\t\tconst texture = new CubeTexture();\n\n\t\tconst loader = new ImageLoader( this.manager );\n\t\tloader.setCrossOrigin( this.crossOrigin );\n\t\tloader.setPath( this.path );\n\n\t\tlet loaded = 0;\n\n\t\tfunction loadTexture( i ) {\n\n\t\t\tloader.load( urls[ i ], function ( image ) {\n\n\t\t\t\ttexture.images[ i ] = image;\n\n\t\t\t\tloaded ++;\n\n\t\t\t\tif ( loaded === 6 ) {\n\n\t\t\t\t\ttexture.needsUpdate = true;\n\n\t\t\t\t\tif ( onLoad ) onLoad( texture );\n\n\t\t\t\t}\n\n\t\t\t}, undefined, onError );\n\n\t\t}\n\n\t\tfor ( let i = 0; i < urls.length; ++ i ) {\n\n\t\t\tloadTexture( i );\n\n\t\t}\n\n\t\treturn texture;\n\n\t}\n\n}\n\n/**\n * Abstract Base class to load generic binary textures formats (rgbe, hdr, ...)\n *\n * Sub classes have to implement the parse() method which will be used in load().\n */\n\nclass DataTextureLoader extends Loader {\n\n\tconstructor( manager ) {\n\n\t\tsuper( manager );\n\n\t}\n\n\tload( url, onLoad, onProgress, onError ) {\n\n\t\tconst scope = this;\n\n\t\tconst texture = new DataTexture();\n\n\t\tconst loader = new FileLoader( this.manager );\n\t\tloader.setResponseType( 'arraybuffer' );\n\t\tloader.setRequestHeader( this.requestHeader );\n\t\tloader.setPath( this.path );\n\t\tloader.setWithCredentials( scope.withCredentials );\n\t\tloader.load( url, function ( buffer ) {\n\n\t\t\tconst texData = scope.parse( buffer );\n\n\t\t\tif ( ! texData ) return;\n\n\t\t\tif ( texData.image !== undefined ) {\n\n\t\t\t\ttexture.image = texData.image;\n\n\t\t\t} else if ( texData.data !== undefined ) {\n\n\t\t\t\ttexture.image.width = texData.width;\n\t\t\t\ttexture.image.height = texData.height;\n\t\t\t\ttexture.image.data = texData.data;\n\n\t\t\t}\n\n\t\t\ttexture.wrapS = texData.wrapS !== undefined ? texData.wrapS : ClampToEdgeWrapping;\n\t\t\ttexture.wrapT = texData.wrapT !== undefined ? texData.wrapT : ClampToEdgeWrapping;\n\n\t\t\ttexture.magFilter = texData.magFilter !== undefined ? texData.magFilter : LinearFilter;\n\t\t\ttexture.minFilter = texData.minFilter !== undefined ? texData.minFilter : LinearFilter;\n\n\t\t\ttexture.anisotropy = texData.anisotropy !== undefined ? texData.anisotropy : 1;\n\n\t\t\tif ( texData.encoding !== undefined ) {\n\n\t\t\t\ttexture.encoding = texData.encoding;\n\n\t\t\t}\n\n\t\t\tif ( texData.flipY !== undefined ) {\n\n\t\t\t\ttexture.flipY = texData.flipY;\n\n\t\t\t}\n\n\t\t\tif ( texData.format !== undefined ) {\n\n\t\t\t\ttexture.format = texData.format;\n\n\t\t\t}\n\n\t\t\tif ( texData.type !== undefined ) {\n\n\t\t\t\ttexture.type = texData.type;\n\n\t\t\t}\n\n\t\t\tif ( texData.mipmaps !== undefined ) {\n\n\t\t\t\ttexture.mipmaps = texData.mipmaps;\n\t\t\t\ttexture.minFilter = LinearMipmapLinearFilter; // presumably...\n\n\t\t\t}\n\n\t\t\tif ( texData.mipmapCount === 1 ) {\n\n\t\t\t\ttexture.minFilter = LinearFilter;\n\n\t\t\t}\n\n\t\t\tif ( texData.generateMipmaps !== undefined ) {\n\n\t\t\t\ttexture.generateMipmaps = texData.generateMipmaps;\n\n\t\t\t}\n\n\t\t\ttexture.needsUpdate = true;\n\n\t\t\tif ( onLoad ) onLoad( texture, texData );\n\n\t\t}, onProgress, onError );\n\n\n\t\treturn texture;\n\n\t}\n\n}\n\nclass TextureLoader extends Loader {\n\n\tconstructor( manager ) {\n\n\t\tsuper( manager );\n\n\t}\n\n\tload( url, onLoad, onProgress, onError ) {\n\n\t\tconst texture = new Texture();\n\n\t\tconst loader = new ImageLoader( this.manager );\n\t\tloader.setCrossOrigin( this.crossOrigin );\n\t\tloader.setPath( this.path );\n\n\t\tloader.load( url, function ( image ) {\n\n\t\t\ttexture.image = image;\n\t\t\ttexture.needsUpdate = true;\n\n\t\t\tif ( onLoad !== undefined ) {\n\n\t\t\t\tonLoad( texture );\n\n\t\t\t}\n\n\t\t}, onProgress, onError );\n\n\t\treturn texture;\n\n\t}\n\n}\n\nclass Light extends Object3D {\n\n\tconstructor( color, intensity = 1 ) {\n\n\t\tsuper();\n\n\t\tthis.isLight = true;\n\n\t\tthis.type = 'Light';\n\n\t\tthis.color = new Color( color );\n\t\tthis.intensity = intensity;\n\n\t}\n\n\tdispose() {\n\n\t\t// Empty here in base class; some subclasses override.\n\n\t}\n\n\tcopy( source, recursive ) {\n\n\t\tsuper.copy( source, recursive );\n\n\t\tthis.color.copy( source.color );\n\t\tthis.intensity = source.intensity;\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON( meta ) {\n\n\t\tconst data = super.toJSON( meta );\n\n\t\tdata.object.color = this.color.getHex();\n\t\tdata.object.intensity = this.intensity;\n\n\t\tif ( this.groundColor !== undefined ) data.object.groundColor = this.groundColor.getHex();\n\n\t\tif ( this.distance !== undefined ) data.object.distance = this.distance;\n\t\tif ( this.angle !== undefined ) data.object.angle = this.angle;\n\t\tif ( this.decay !== undefined ) data.object.decay = this.decay;\n\t\tif ( this.penumbra !== undefined ) data.object.penumbra = this.penumbra;\n\n\t\tif ( this.shadow !== undefined ) data.object.shadow = this.shadow.toJSON();\n\n\t\treturn data;\n\n\t}\n\n}\n\nclass HemisphereLight extends Light {\n\n\tconstructor( skyColor, groundColor, intensity ) {\n\n\t\tsuper( skyColor, intensity );\n\n\t\tthis.isHemisphereLight = true;\n\n\t\tthis.type = 'HemisphereLight';\n\n\t\tthis.position.copy( Object3D.DefaultUp );\n\t\tthis.updateMatrix();\n\n\t\tthis.groundColor = new Color( groundColor );\n\n\t}\n\n\tcopy( source, recursive ) {\n\n\t\tsuper.copy( source, recursive );\n\n\t\tthis.groundColor.copy( source.groundColor );\n\n\t\treturn this;\n\n\t}\n\n}\n\nconst _projScreenMatrix$1 = /*@__PURE__*/ new Matrix4();\nconst _lightPositionWorld$1 = /*@__PURE__*/ new Vector3();\nconst _lookTarget$1 = /*@__PURE__*/ new Vector3();\n\nclass LightShadow {\n\n\tconstructor( camera ) {\n\n\t\tthis.camera = camera;\n\n\t\tthis.bias = 0;\n\t\tthis.normalBias = 0;\n\t\tthis.radius = 1;\n\t\tthis.blurSamples = 8;\n\n\t\tthis.mapSize = new Vector2( 512, 512 );\n\n\t\tthis.map = null;\n\t\tthis.mapPass = null;\n\t\tthis.matrix = new Matrix4();\n\n\t\tthis.autoUpdate = true;\n\t\tthis.needsUpdate = false;\n\n\t\tthis._frustum = new Frustum();\n\t\tthis._frameExtents = new Vector2( 1, 1 );\n\n\t\tthis._viewportCount = 1;\n\n\t\tthis._viewports = [\n\n\t\t\tnew Vector4( 0, 0, 1, 1 )\n\n\t\t];\n\n\t}\n\n\tgetViewportCount() {\n\n\t\treturn this._viewportCount;\n\n\t}\n\n\tgetFrustum() {\n\n\t\treturn this._frustum;\n\n\t}\n\n\tupdateMatrices( light ) {\n\n\t\tconst shadowCamera = this.camera;\n\t\tconst shadowMatrix = this.matrix;\n\n\t\t_lightPositionWorld$1.setFromMatrixPosition( light.matrixWorld );\n\t\tshadowCamera.position.copy( _lightPositionWorld$1 );\n\n\t\t_lookTarget$1.setFromMatrixPosition( light.target.matrixWorld );\n\t\tshadowCamera.lookAt( _lookTarget$1 );\n\t\tshadowCamera.updateMatrixWorld();\n\n\t\t_projScreenMatrix$1.multiplyMatrices( shadowCamera.projectionMatrix, shadowCamera.matrixWorldInverse );\n\t\tthis._frustum.setFromProjectionMatrix( _projScreenMatrix$1 );\n\n\t\tshadowMatrix.set(\n\t\t\t0.5, 0.0, 0.0, 0.5,\n\t\t\t0.0, 0.5, 0.0, 0.5,\n\t\t\t0.0, 0.0, 0.5, 0.5,\n\t\t\t0.0, 0.0, 0.0, 1.0\n\t\t);\n\n\t\tshadowMatrix.multiply( shadowCamera.projectionMatrix );\n\t\tshadowMatrix.multiply( shadowCamera.matrixWorldInverse );\n\n\t}\n\n\tgetViewport( viewportIndex ) {\n\n\t\treturn this._viewports[ viewportIndex ];\n\n\t}\n\n\tgetFrameExtents() {\n\n\t\treturn this._frameExtents;\n\n\t}\n\n\tdispose() {\n\n\t\tif ( this.map ) {\n\n\t\t\tthis.map.dispose();\n\n\t\t}\n\n\t\tif ( this.mapPass ) {\n\n\t\t\tthis.mapPass.dispose();\n\n\t\t}\n\n\t}\n\n\tcopy( source ) {\n\n\t\tthis.camera = source.camera.clone();\n\n\t\tthis.bias = source.bias;\n\t\tthis.radius = source.radius;\n\n\t\tthis.mapSize.copy( source.mapSize );\n\n\t\treturn this;\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n\ttoJSON() {\n\n\t\tconst object = {};\n\n\t\tif ( this.bias !== 0 ) object.bias = this.bias;\n\t\tif ( this.normalBias !== 0 ) object.normalBias = this.normalBias;\n\t\tif ( this.radius !== 1 ) object.radius = this.radius;\n\t\tif ( this.mapSize.x !== 512 || this.mapSize.y !== 512 ) object.mapSize = this.mapSize.toArray();\n\n\t\tobject.camera = this.camera.toJSON( false ).object;\n\t\tdelete object.camera.matrix;\n\n\t\treturn object;\n\n\t}\n\n}\n\nclass SpotLightShadow extends LightShadow {\n\n\tconstructor() {\n\n\t\tsuper( new PerspectiveCamera( 50, 1, 0.5, 500 ) );\n\n\t\tthis.isSpotLightShadow = true;\n\n\t\tthis.focus = 1;\n\n\t}\n\n\tupdateMatrices( light ) {\n\n\t\tconst camera = this.camera;\n\n\t\tconst fov = RAD2DEG * 2 * light.angle * this.focus;\n\t\tconst aspect = this.mapSize.width / this.mapSize.height;\n\t\tconst far = light.distance || camera.far;\n\n\t\tif ( fov !== camera.fov || aspect !== camera.aspect || far !== camera.far ) {\n\n\t\t\tcamera.fov = fov;\n\t\t\tcamera.aspect = aspect;\n\t\t\tcamera.far = far;\n\t\t\tcamera.updateProjectionMatrix();\n\n\t\t}\n\n\t\tsuper.updateMatrices( light );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.focus = source.focus;\n\n\t\treturn this;\n\n\t}\n\n}\n\nclass SpotLight extends Light {\n\n\tconstructor( color, intensity, distance = 0, angle = Math.PI / 3, penumbra = 0, decay = 1 ) {\n\n\t\tsuper( color, intensity );\n\n\t\tthis.isSpotLight = true;\n\n\t\tthis.type = 'SpotLight';\n\n\t\tthis.position.copy( Object3D.DefaultUp );\n\t\tthis.updateMatrix();\n\n\t\tthis.target = new Object3D();\n\n\t\tthis.distance = distance;\n\t\tthis.angle = angle;\n\t\tthis.penumbra = penumbra;\n\t\tthis.decay = decay; // for physically correct lights, should be 2.\n\n\t\tthis.shadow = new SpotLightShadow();\n\n\t}\n\n\tget power() {\n\n\t\t// compute the light's luminous power (in lumens) from its intensity (in candela)\n\t\t// by convention for a spotlight, luminous power (lm) = π * luminous intensity (cd)\n\t\treturn this.intensity * Math.PI;\n\n\t}\n\n\tset power( power ) {\n\n\t\t// set the light's intensity (in candela) from the desired luminous power (in lumens)\n\t\tthis.intensity = power / Math.PI;\n\n\t}\n\n\tdispose() {\n\n\t\tthis.shadow.dispose();\n\n\t}\n\n\tcopy( source, recursive ) {\n\n\t\tsuper.copy( source, recursive );\n\n\t\tthis.distance = source.distance;\n\t\tthis.angle = source.angle;\n\t\tthis.penumbra = source.penumbra;\n\t\tthis.decay = source.decay;\n\n\t\tthis.target = source.target.clone();\n\n\t\tthis.shadow = source.shadow.clone();\n\n\t\treturn this;\n\n\t}\n\n}\n\nconst _projScreenMatrix = /*@__PURE__*/ new Matrix4();\nconst _lightPositionWorld = /*@__PURE__*/ new Vector3();\nconst _lookTarget = /*@__PURE__*/ new Vector3();\n\nclass PointLightShadow extends LightShadow {\n\n\tconstructor() {\n\n\t\tsuper( new PerspectiveCamera( 90, 1, 0.5, 500 ) );\n\n\t\tthis.isPointLightShadow = true;\n\n\t\tthis._frameExtents = new Vector2( 4, 2 );\n\n\t\tthis._viewportCount = 6;\n\n\t\tthis._viewports = [\n\t\t\t// These viewports map a cube-map onto a 2D texture with the\n\t\t\t// following orientation:\n\t\t\t//\n\t\t\t// xzXZ\n\t\t\t// y Y\n\t\t\t//\n\t\t\t// X - Positive x direction\n\t\t\t// x - Negative x direction\n\t\t\t// Y - Positive y direction\n\t\t\t// y - Negative y direction\n\t\t\t// Z - Positive z direction\n\t\t\t// z - Negative z direction\n\n\t\t\t// positive X\n\t\t\tnew Vector4( 2, 1, 1, 1 ),\n\t\t\t// negative X\n\t\t\tnew Vector4( 0, 1, 1, 1 ),\n\t\t\t// positive Z\n\t\t\tnew Vector4( 3, 1, 1, 1 ),\n\t\t\t// negative Z\n\t\t\tnew Vector4( 1, 1, 1, 1 ),\n\t\t\t// positive Y\n\t\t\tnew Vector4( 3, 0, 1, 1 ),\n\t\t\t// negative Y\n\t\t\tnew Vector4( 1, 0, 1, 1 )\n\t\t];\n\n\t\tthis._cubeDirections = [\n\t\t\tnew Vector3( 1, 0, 0 ), new Vector3( - 1, 0, 0 ), new Vector3( 0, 0, 1 ),\n\t\t\tnew Vector3( 0, 0, - 1 ), new Vector3( 0, 1, 0 ), new Vector3( 0, - 1, 0 )\n\t\t];\n\n\t\tthis._cubeUps = [\n\t\t\tnew Vector3( 0, 1, 0 ), new Vector3( 0, 1, 0 ), new Vector3( 0, 1, 0 ),\n\t\t\tnew Vector3( 0, 1, 0 ), new Vector3( 0, 0, 1 ),\tnew Vector3( 0, 0, - 1 )\n\t\t];\n\n\t}\n\n\tupdateMatrices( light, viewportIndex = 0 ) {\n\n\t\tconst camera = this.camera;\n\t\tconst shadowMatrix = this.matrix;\n\n\t\tconst far = light.distance || camera.far;\n\n\t\tif ( far !== camera.far ) {\n\n\t\t\tcamera.far = far;\n\t\t\tcamera.updateProjectionMatrix();\n\n\t\t}\n\n\t\t_lightPositionWorld.setFromMatrixPosition( light.matrixWorld );\n\t\tcamera.position.copy( _lightPositionWorld );\n\n\t\t_lookTarget.copy( camera.position );\n\t\t_lookTarget.add( this._cubeDirections[ viewportIndex ] );\n\t\tcamera.up.copy( this._cubeUps[ viewportIndex ] );\n\t\tcamera.lookAt( _lookTarget );\n\t\tcamera.updateMatrixWorld();\n\n\t\tshadowMatrix.makeTranslation( - _lightPositionWorld.x, - _lightPositionWorld.y, - _lightPositionWorld.z );\n\n\t\t_projScreenMatrix.multiplyMatrices( camera.projectionMatrix, camera.matrixWorldInverse );\n\t\tthis._frustum.setFromProjectionMatrix( _projScreenMatrix );\n\n\t}\n\n}\n\nclass PointLight extends Light {\n\n\tconstructor( color, intensity, distance = 0, decay = 1 ) {\n\n\t\tsuper( color, intensity );\n\n\t\tthis.isPointLight = true;\n\n\t\tthis.type = 'PointLight';\n\n\t\tthis.distance = distance;\n\t\tthis.decay = decay; // for physically correct lights, should be 2.\n\n\t\tthis.shadow = new PointLightShadow();\n\n\t}\n\n\tget power() {\n\n\t\t// compute the light's luminous power (in lumens) from its intensity (in candela)\n\t\t// for an isotropic light source, luminous power (lm) = 4 π luminous intensity (cd)\n\t\treturn this.intensity * 4 * Math.PI;\n\n\t}\n\n\tset power( power ) {\n\n\t\t// set the light's intensity (in candela) from the desired luminous power (in lumens)\n\t\tthis.intensity = power / ( 4 * Math.PI );\n\n\t}\n\n\tdispose() {\n\n\t\tthis.shadow.dispose();\n\n\t}\n\n\tcopy( source, recursive ) {\n\n\t\tsuper.copy( source, recursive );\n\n\t\tthis.distance = source.distance;\n\t\tthis.decay = source.decay;\n\n\t\tthis.shadow = source.shadow.clone();\n\n\t\treturn this;\n\n\t}\n\n}\n\nclass DirectionalLightShadow extends LightShadow {\n\n\tconstructor() {\n\n\t\tsuper( new OrthographicCamera( - 5, 5, 5, - 5, 0.5, 500 ) );\n\n\t\tthis.isDirectionalLightShadow = true;\n\n\t}\n\n}\n\nclass DirectionalLight extends Light {\n\n\tconstructor( color, intensity ) {\n\n\t\tsuper( color, intensity );\n\n\t\tthis.isDirectionalLight = true;\n\n\t\tthis.type = 'DirectionalLight';\n\n\t\tthis.position.copy( Object3D.DefaultUp );\n\t\tthis.updateMatrix();\n\n\t\tthis.target = new Object3D();\n\n\t\tthis.shadow = new DirectionalLightShadow();\n\n\t}\n\n\tdispose() {\n\n\t\tthis.shadow.dispose();\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.target = source.target.clone();\n\t\tthis.shadow = source.shadow.clone();\n\n\t\treturn this;\n\n\t}\n\n}\n\nclass AmbientLight extends Light {\n\n\tconstructor( color, intensity ) {\n\n\t\tsuper( color, intensity );\n\n\t\tthis.isAmbientLight = true;\n\n\t\tthis.type = 'AmbientLight';\n\n\t}\n\n}\n\nclass RectAreaLight extends Light {\n\n\tconstructor( color, intensity, width = 10, height = 10 ) {\n\n\t\tsuper( color, intensity );\n\n\t\tthis.isRectAreaLight = true;\n\n\t\tthis.type = 'RectAreaLight';\n\n\t\tthis.width = width;\n\t\tthis.height = height;\n\n\t}\n\n\tget power() {\n\n\t\t// compute the light's luminous power (in lumens) from its intensity (in nits)\n\t\treturn this.intensity * this.width * this.height * Math.PI;\n\n\t}\n\n\tset power( power ) {\n\n\t\t// set the light's intensity (in nits) from the desired luminous power (in lumens)\n\t\tthis.intensity = power / ( this.width * this.height * Math.PI );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.width = source.width;\n\t\tthis.height = source.height;\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON( meta ) {\n\n\t\tconst data = super.toJSON( meta );\n\n\t\tdata.object.width = this.width;\n\t\tdata.object.height = this.height;\n\n\t\treturn data;\n\n\t}\n\n}\n\n/**\n * Primary reference:\n * https://graphics.stanford.edu/papers/envmap/envmap.pdf\n *\n * Secondary reference:\n * https://www.ppsloan.org/publications/StupidSH36.pdf\n */\n\n// 3-band SH defined by 9 coefficients\n\nclass SphericalHarmonics3 {\n\n\tconstructor() {\n\n\t\tthis.isSphericalHarmonics3 = true;\n\n\t\tthis.coefficients = [];\n\n\t\tfor ( let i = 0; i < 9; i ++ ) {\n\n\t\t\tthis.coefficients.push( new Vector3() );\n\n\t\t}\n\n\t}\n\n\tset( coefficients ) {\n\n\t\tfor ( let i = 0; i < 9; i ++ ) {\n\n\t\t\tthis.coefficients[ i ].copy( coefficients[ i ] );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tzero() {\n\n\t\tfor ( let i = 0; i < 9; i ++ ) {\n\n\t\t\tthis.coefficients[ i ].set( 0, 0, 0 );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\t// get the radiance in the direction of the normal\n\t// target is a Vector3\n\tgetAt( normal, target ) {\n\n\t\t// normal is assumed to be unit length\n\n\t\tconst x = normal.x, y = normal.y, z = normal.z;\n\n\t\tconst coeff = this.coefficients;\n\n\t\t// band 0\n\t\ttarget.copy( coeff[ 0 ] ).multiplyScalar( 0.282095 );\n\n\t\t// band 1\n\t\ttarget.addScaledVector( coeff[ 1 ], 0.488603 * y );\n\t\ttarget.addScaledVector( coeff[ 2 ], 0.488603 * z );\n\t\ttarget.addScaledVector( coeff[ 3 ], 0.488603 * x );\n\n\t\t// band 2\n\t\ttarget.addScaledVector( coeff[ 4 ], 1.092548 * ( x * y ) );\n\t\ttarget.addScaledVector( coeff[ 5 ], 1.092548 * ( y * z ) );\n\t\ttarget.addScaledVector( coeff[ 6 ], 0.315392 * ( 3.0 * z * z - 1.0 ) );\n\t\ttarget.addScaledVector( coeff[ 7 ], 1.092548 * ( x * z ) );\n\t\ttarget.addScaledVector( coeff[ 8 ], 0.546274 * ( x * x - y * y ) );\n\n\t\treturn target;\n\n\t}\n\n\t// get the irradiance (radiance convolved with cosine lobe) in the direction of the normal\n\t// target is a Vector3\n\t// https://graphics.stanford.edu/papers/envmap/envmap.pdf\n\tgetIrradianceAt( normal, target ) {\n\n\t\t// normal is assumed to be unit length\n\n\t\tconst x = normal.x, y = normal.y, z = normal.z;\n\n\t\tconst coeff = this.coefficients;\n\n\t\t// band 0\n\t\ttarget.copy( coeff[ 0 ] ).multiplyScalar( 0.886227 ); // π * 0.282095\n\n\t\t// band 1\n\t\ttarget.addScaledVector( coeff[ 1 ], 2.0 * 0.511664 * y ); // ( 2 * π / 3 ) * 0.488603\n\t\ttarget.addScaledVector( coeff[ 2 ], 2.0 * 0.511664 * z );\n\t\ttarget.addScaledVector( coeff[ 3 ], 2.0 * 0.511664 * x );\n\n\t\t// band 2\n\t\ttarget.addScaledVector( coeff[ 4 ], 2.0 * 0.429043 * x * y ); // ( π / 4 ) * 1.092548\n\t\ttarget.addScaledVector( coeff[ 5 ], 2.0 * 0.429043 * y * z );\n\t\ttarget.addScaledVector( coeff[ 6 ], 0.743125 * z * z - 0.247708 ); // ( π / 4 ) * 0.315392 * 3\n\t\ttarget.addScaledVector( coeff[ 7 ], 2.0 * 0.429043 * x * z );\n\t\ttarget.addScaledVector( coeff[ 8 ], 0.429043 * ( x * x - y * y ) ); // ( π / 4 ) * 0.546274\n\n\t\treturn target;\n\n\t}\n\n\tadd( sh ) {\n\n\t\tfor ( let i = 0; i < 9; i ++ ) {\n\n\t\t\tthis.coefficients[ i ].add( sh.coefficients[ i ] );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\taddScaledSH( sh, s ) {\n\n\t\tfor ( let i = 0; i < 9; i ++ ) {\n\n\t\t\tthis.coefficients[ i ].addScaledVector( sh.coefficients[ i ], s );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tscale( s ) {\n\n\t\tfor ( let i = 0; i < 9; i ++ ) {\n\n\t\t\tthis.coefficients[ i ].multiplyScalar( s );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tlerp( sh, alpha ) {\n\n\t\tfor ( let i = 0; i < 9; i ++ ) {\n\n\t\t\tthis.coefficients[ i ].lerp( sh.coefficients[ i ], alpha );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tequals( sh ) {\n\n\t\tfor ( let i = 0; i < 9; i ++ ) {\n\n\t\t\tif ( ! this.coefficients[ i ].equals( sh.coefficients[ i ] ) ) {\n\n\t\t\t\treturn false;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn true;\n\n\t}\n\n\tcopy( sh ) {\n\n\t\treturn this.set( sh.coefficients );\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n\tfromArray( array, offset = 0 ) {\n\n\t\tconst coefficients = this.coefficients;\n\n\t\tfor ( let i = 0; i < 9; i ++ ) {\n\n\t\t\tcoefficients[ i ].fromArray( array, offset + ( i * 3 ) );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\ttoArray( array = [], offset = 0 ) {\n\n\t\tconst coefficients = this.coefficients;\n\n\t\tfor ( let i = 0; i < 9; i ++ ) {\n\n\t\t\tcoefficients[ i ].toArray( array, offset + ( i * 3 ) );\n\n\t\t}\n\n\t\treturn array;\n\n\t}\n\n\t// evaluate the basis functions\n\t// shBasis is an Array[ 9 ]\n\tstatic getBasisAt( normal, shBasis ) {\n\n\t\t// normal is assumed to be unit length\n\n\t\tconst x = normal.x, y = normal.y, z = normal.z;\n\n\t\t// band 0\n\t\tshBasis[ 0 ] = 0.282095;\n\n\t\t// band 1\n\t\tshBasis[ 1 ] = 0.488603 * y;\n\t\tshBasis[ 2 ] = 0.488603 * z;\n\t\tshBasis[ 3 ] = 0.488603 * x;\n\n\t\t// band 2\n\t\tshBasis[ 4 ] = 1.092548 * x * y;\n\t\tshBasis[ 5 ] = 1.092548 * y * z;\n\t\tshBasis[ 6 ] = 0.315392 * ( 3 * z * z - 1 );\n\t\tshBasis[ 7 ] = 1.092548 * x * z;\n\t\tshBasis[ 8 ] = 0.546274 * ( x * x - y * y );\n\n\t}\n\n}\n\nclass LightProbe extends Light {\n\n\tconstructor( sh = new SphericalHarmonics3(), intensity = 1 ) {\n\n\t\tsuper( undefined, intensity );\n\n\t\tthis.isLightProbe = true;\n\n\t\tthis.sh = sh;\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.sh.copy( source.sh );\n\n\t\treturn this;\n\n\t}\n\n\tfromJSON( json ) {\n\n\t\tthis.intensity = json.intensity; // TODO: Move this bit to Light.fromJSON();\n\t\tthis.sh.fromArray( json.sh );\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON( meta ) {\n\n\t\tconst data = super.toJSON( meta );\n\n\t\tdata.object.sh = this.sh.toArray();\n\n\t\treturn data;\n\n\t}\n\n}\n\nclass MaterialLoader extends Loader {\n\n\tconstructor( manager ) {\n\n\t\tsuper( manager );\n\t\tthis.textures = {};\n\n\t}\n\n\tload( url, onLoad, onProgress, onError ) {\n\n\t\tconst scope = this;\n\n\t\tconst loader = new FileLoader( scope.manager );\n\t\tloader.setPath( scope.path );\n\t\tloader.setRequestHeader( scope.requestHeader );\n\t\tloader.setWithCredentials( scope.withCredentials );\n\t\tloader.load( url, function ( text ) {\n\n\t\t\ttry {\n\n\t\t\t\tonLoad( scope.parse( JSON.parse( text ) ) );\n\n\t\t\t} catch ( e ) {\n\n\t\t\t\tif ( onError ) {\n\n\t\t\t\t\tonError( e );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tconsole.error( e );\n\n\t\t\t\t}\n\n\t\t\t\tscope.manager.itemError( url );\n\n\t\t\t}\n\n\t\t}, onProgress, onError );\n\n\t}\n\n\tparse( json ) {\n\n\t\tconst textures = this.textures;\n\n\t\tfunction getTexture( name ) {\n\n\t\t\tif ( textures[ name ] === undefined ) {\n\n\t\t\t\tconsole.warn( 'THREE.MaterialLoader: Undefined texture', name );\n\n\t\t\t}\n\n\t\t\treturn textures[ name ];\n\n\t\t}\n\n\t\tconst material = Material.fromType( json.type );\n\n\t\tif ( json.uuid !== undefined ) material.uuid = json.uuid;\n\t\tif ( json.name !== undefined ) material.name = json.name;\n\t\tif ( json.color !== undefined && material.color !== undefined ) material.color.setHex( json.color );\n\t\tif ( json.roughness !== undefined ) material.roughness = json.roughness;\n\t\tif ( json.metalness !== undefined ) material.metalness = json.metalness;\n\t\tif ( json.sheen !== undefined ) material.sheen = json.sheen;\n\t\tif ( json.sheenColor !== undefined ) material.sheenColor = new Color().setHex( json.sheenColor );\n\t\tif ( json.sheenRoughness !== undefined ) material.sheenRoughness = json.sheenRoughness;\n\t\tif ( json.emissive !== undefined && material.emissive !== undefined ) material.emissive.setHex( json.emissive );\n\t\tif ( json.specular !== undefined && material.specular !== undefined ) material.specular.setHex( json.specular );\n\t\tif ( json.specularIntensity !== undefined ) material.specularIntensity = json.specularIntensity;\n\t\tif ( json.specularColor !== undefined && material.specularColor !== undefined ) material.specularColor.setHex( json.specularColor );\n\t\tif ( json.shininess !== undefined ) material.shininess = json.shininess;\n\t\tif ( json.clearcoat !== undefined ) material.clearcoat = json.clearcoat;\n\t\tif ( json.clearcoatRoughness !== undefined ) material.clearcoatRoughness = json.clearcoatRoughness;\n\t\tif ( json.iridescence !== undefined ) material.iridescence = json.iridescence;\n\t\tif ( json.iridescenceIOR !== undefined ) material.iridescenceIOR = json.iridescenceIOR;\n\t\tif ( json.iridescenceThicknessRange !== undefined ) material.iridescenceThicknessRange = json.iridescenceThicknessRange;\n\t\tif ( json.transmission !== undefined ) material.transmission = json.transmission;\n\t\tif ( json.thickness !== undefined ) material.thickness = json.thickness;\n\t\tif ( json.attenuationDistance !== undefined ) material.attenuationDistance = json.attenuationDistance;\n\t\tif ( json.attenuationColor !== undefined && material.attenuationColor !== undefined ) material.attenuationColor.setHex( json.attenuationColor );\n\t\tif ( json.fog !== undefined ) material.fog = json.fog;\n\t\tif ( json.flatShading !== undefined ) material.flatShading = json.flatShading;\n\t\tif ( json.blending !== undefined ) material.blending = json.blending;\n\t\tif ( json.combine !== undefined ) material.combine = json.combine;\n\t\tif ( json.side !== undefined ) material.side = json.side;\n\t\tif ( json.shadowSide !== undefined ) material.shadowSide = json.shadowSide;\n\t\tif ( json.opacity !== undefined ) material.opacity = json.opacity;\n\t\tif ( json.transparent !== undefined ) material.transparent = json.transparent;\n\t\tif ( json.alphaTest !== undefined ) material.alphaTest = json.alphaTest;\n\t\tif ( json.depthTest !== undefined ) material.depthTest = json.depthTest;\n\t\tif ( json.depthWrite !== undefined ) material.depthWrite = json.depthWrite;\n\t\tif ( json.colorWrite !== undefined ) material.colorWrite = json.colorWrite;\n\n\t\tif ( json.stencilWrite !== undefined ) material.stencilWrite = json.stencilWrite;\n\t\tif ( json.stencilWriteMask !== undefined ) material.stencilWriteMask = json.stencilWriteMask;\n\t\tif ( json.stencilFunc !== undefined ) material.stencilFunc = json.stencilFunc;\n\t\tif ( json.stencilRef !== undefined ) material.stencilRef = json.stencilRef;\n\t\tif ( json.stencilFuncMask !== undefined ) material.stencilFuncMask = json.stencilFuncMask;\n\t\tif ( json.stencilFail !== undefined ) material.stencilFail = json.stencilFail;\n\t\tif ( json.stencilZFail !== undefined ) material.stencilZFail = json.stencilZFail;\n\t\tif ( json.stencilZPass !== undefined ) material.stencilZPass = json.stencilZPass;\n\n\t\tif ( json.wireframe !== undefined ) material.wireframe = json.wireframe;\n\t\tif ( json.wireframeLinewidth !== undefined ) material.wireframeLinewidth = json.wireframeLinewidth;\n\t\tif ( json.wireframeLinecap !== undefined ) material.wireframeLinecap = json.wireframeLinecap;\n\t\tif ( json.wireframeLinejoin !== undefined ) material.wireframeLinejoin = json.wireframeLinejoin;\n\n\t\tif ( json.rotation !== undefined ) material.rotation = json.rotation;\n\n\t\tif ( json.linewidth !== 1 ) material.linewidth = json.linewidth;\n\t\tif ( json.dashSize !== undefined ) material.dashSize = json.dashSize;\n\t\tif ( json.gapSize !== undefined ) material.gapSize = json.gapSize;\n\t\tif ( json.scale !== undefined ) material.scale = json.scale;\n\n\t\tif ( json.polygonOffset !== undefined ) material.polygonOffset = json.polygonOffset;\n\t\tif ( json.polygonOffsetFactor !== undefined ) material.polygonOffsetFactor = json.polygonOffsetFactor;\n\t\tif ( json.polygonOffsetUnits !== undefined ) material.polygonOffsetUnits = json.polygonOffsetUnits;\n\n\t\tif ( json.dithering !== undefined ) material.dithering = json.dithering;\n\n\t\tif ( json.alphaToCoverage !== undefined ) material.alphaToCoverage = json.alphaToCoverage;\n\t\tif ( json.premultipliedAlpha !== undefined ) material.premultipliedAlpha = json.premultipliedAlpha;\n\n\t\tif ( json.visible !== undefined ) material.visible = json.visible;\n\n\t\tif ( json.toneMapped !== undefined ) material.toneMapped = json.toneMapped;\n\n\t\tif ( json.userData !== undefined ) material.userData = json.userData;\n\n\t\tif ( json.vertexColors !== undefined ) {\n\n\t\t\tif ( typeof json.vertexColors === 'number' ) {\n\n\t\t\t\tmaterial.vertexColors = ( json.vertexColors > 0 ) ? true : false;\n\n\t\t\t} else {\n\n\t\t\t\tmaterial.vertexColors = json.vertexColors;\n\n\t\t\t}\n\n\t\t}\n\n\t\t// Shader Material\n\n\t\tif ( json.uniforms !== undefined ) {\n\n\t\t\tfor ( const name in json.uniforms ) {\n\n\t\t\t\tconst uniform = json.uniforms[ name ];\n\n\t\t\t\tmaterial.uniforms[ name ] = {};\n\n\t\t\t\tswitch ( uniform.type ) {\n\n\t\t\t\t\tcase 't':\n\t\t\t\t\t\tmaterial.uniforms[ name ].value = getTexture( uniform.value );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'c':\n\t\t\t\t\t\tmaterial.uniforms[ name ].value = new Color().setHex( uniform.value );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'v2':\n\t\t\t\t\t\tmaterial.uniforms[ name ].value = new Vector2().fromArray( uniform.value );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'v3':\n\t\t\t\t\t\tmaterial.uniforms[ name ].value = new Vector3().fromArray( uniform.value );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'v4':\n\t\t\t\t\t\tmaterial.uniforms[ name ].value = new Vector4().fromArray( uniform.value );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'm3':\n\t\t\t\t\t\tmaterial.uniforms[ name ].value = new Matrix3().fromArray( uniform.value );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'm4':\n\t\t\t\t\t\tmaterial.uniforms[ name ].value = new Matrix4().fromArray( uniform.value );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tmaterial.uniforms[ name ].value = uniform.value;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( json.defines !== undefined ) material.defines = json.defines;\n\t\tif ( json.vertexShader !== undefined ) material.vertexShader = json.vertexShader;\n\t\tif ( json.fragmentShader !== undefined ) material.fragmentShader = json.fragmentShader;\n\n\t\tif ( json.extensions !== undefined ) {\n\n\t\t\tfor ( const key in json.extensions ) {\n\n\t\t\t\tmaterial.extensions[ key ] = json.extensions[ key ];\n\n\t\t\t}\n\n\t\t}\n\n\t\t// Deprecated\n\n\t\tif ( json.shading !== undefined ) material.flatShading = json.shading === 1; // THREE.FlatShading\n\n\t\t// for PointsMaterial\n\n\t\tif ( json.size !== undefined ) material.size = json.size;\n\t\tif ( json.sizeAttenuation !== undefined ) material.sizeAttenuation = json.sizeAttenuation;\n\n\t\t// maps\n\n\t\tif ( json.map !== undefined ) material.map = getTexture( json.map );\n\t\tif ( json.matcap !== undefined ) material.matcap = getTexture( json.matcap );\n\n\t\tif ( json.alphaMap !== undefined ) material.alphaMap = getTexture( json.alphaMap );\n\n\t\tif ( json.bumpMap !== undefined ) material.bumpMap = getTexture( json.bumpMap );\n\t\tif ( json.bumpScale !== undefined ) material.bumpScale = json.bumpScale;\n\n\t\tif ( json.normalMap !== undefined ) material.normalMap = getTexture( json.normalMap );\n\t\tif ( json.normalMapType !== undefined ) material.normalMapType = json.normalMapType;\n\t\tif ( json.normalScale !== undefined ) {\n\n\t\t\tlet normalScale = json.normalScale;\n\n\t\t\tif ( Array.isArray( normalScale ) === false ) {\n\n\t\t\t\t// Blender exporter used to export a scalar. See #7459\n\n\t\t\t\tnormalScale = [ normalScale, normalScale ];\n\n\t\t\t}\n\n\t\t\tmaterial.normalScale = new Vector2().fromArray( normalScale );\n\n\t\t}\n\n\t\tif ( json.displacementMap !== undefined ) material.displacementMap = getTexture( json.displacementMap );\n\t\tif ( json.displacementScale !== undefined ) material.displacementScale = json.displacementScale;\n\t\tif ( json.displacementBias !== undefined ) material.displacementBias = json.displacementBias;\n\n\t\tif ( json.roughnessMap !== undefined ) material.roughnessMap = getTexture( json.roughnessMap );\n\t\tif ( json.metalnessMap !== undefined ) material.metalnessMap = getTexture( json.metalnessMap );\n\n\t\tif ( json.emissiveMap !== undefined ) material.emissiveMap = getTexture( json.emissiveMap );\n\t\tif ( json.emissiveIntensity !== undefined ) material.emissiveIntensity = json.emissiveIntensity;\n\n\t\tif ( json.specularMap !== undefined ) material.specularMap = getTexture( json.specularMap );\n\t\tif ( json.specularIntensityMap !== undefined ) material.specularIntensityMap = getTexture( json.specularIntensityMap );\n\t\tif ( json.specularColorMap !== undefined ) material.specularColorMap = getTexture( json.specularColorMap );\n\n\t\tif ( json.envMap !== undefined ) material.envMap = getTexture( json.envMap );\n\t\tif ( json.envMapIntensity !== undefined ) material.envMapIntensity = json.envMapIntensity;\n\n\t\tif ( json.reflectivity !== undefined ) material.reflectivity = json.reflectivity;\n\t\tif ( json.refractionRatio !== undefined ) material.refractionRatio = json.refractionRatio;\n\n\t\tif ( json.lightMap !== undefined ) material.lightMap = getTexture( json.lightMap );\n\t\tif ( json.lightMapIntensity !== undefined ) material.lightMapIntensity = json.lightMapIntensity;\n\n\t\tif ( json.aoMap !== undefined ) material.aoMap = getTexture( json.aoMap );\n\t\tif ( json.aoMapIntensity !== undefined ) material.aoMapIntensity = json.aoMapIntensity;\n\n\t\tif ( json.gradientMap !== undefined ) material.gradientMap = getTexture( json.gradientMap );\n\n\t\tif ( json.clearcoatMap !== undefined ) material.clearcoatMap = getTexture( json.clearcoatMap );\n\t\tif ( json.clearcoatRoughnessMap !== undefined ) material.clearcoatRoughnessMap = getTexture( json.clearcoatRoughnessMap );\n\t\tif ( json.clearcoatNormalMap !== undefined ) material.clearcoatNormalMap = getTexture( json.clearcoatNormalMap );\n\t\tif ( json.clearcoatNormalScale !== undefined ) material.clearcoatNormalScale = new Vector2().fromArray( json.clearcoatNormalScale );\n\n\t\tif ( json.iridescenceMap !== undefined ) material.iridescenceMap = getTexture( json.iridescenceMap );\n\t\tif ( json.iridescenceThicknessMap !== undefined ) material.iridescenceThicknessMap = getTexture( json.iridescenceThicknessMap );\n\n\t\tif ( json.transmissionMap !== undefined ) material.transmissionMap = getTexture( json.transmissionMap );\n\t\tif ( json.thicknessMap !== undefined ) material.thicknessMap = getTexture( json.thicknessMap );\n\n\t\tif ( json.sheenColorMap !== undefined ) material.sheenColorMap = getTexture( json.sheenColorMap );\n\t\tif ( json.sheenRoughnessMap !== undefined ) material.sheenRoughnessMap = getTexture( json.sheenRoughnessMap );\n\n\t\treturn material;\n\n\t}\n\n\tsetTextures( value ) {\n\n\t\tthis.textures = value;\n\t\treturn this;\n\n\t}\n\n}\n\nclass LoaderUtils {\n\n\tstatic decodeText( array ) {\n\n\t\tif ( typeof TextDecoder !== 'undefined' ) {\n\n\t\t\treturn new TextDecoder().decode( array );\n\n\t\t}\n\n\t\t// Avoid the String.fromCharCode.apply(null, array) shortcut, which\n\t\t// throws a \"maximum call stack size exceeded\" error for large arrays.\n\n\t\tlet s = '';\n\n\t\tfor ( let i = 0, il = array.length; i < il; i ++ ) {\n\n\t\t\t// Implicitly assumes little-endian.\n\t\t\ts += String.fromCharCode( array[ i ] );\n\n\t\t}\n\n\t\ttry {\n\n\t\t\t// merges multi-byte utf-8 characters.\n\n\t\t\treturn decodeURIComponent( escape( s ) );\n\n\t\t} catch ( e ) { // see #16358\n\n\t\t\treturn s;\n\n\t\t}\n\n\t}\n\n\tstatic extractUrlBase( url ) {\n\n\t\tconst index = url.lastIndexOf( '/' );\n\n\t\tif ( index === - 1 ) return './';\n\n\t\treturn url.slice( 0, index + 1 );\n\n\t}\n\n\tstatic resolveURL( url, path ) {\n\n\t\t// Invalid URL\n\t\tif ( typeof url !== 'string' || url === '' ) return '';\n\n\t\t// Host Relative URL\n\t\tif ( /^https?:\\/\\//i.test( path ) && /^\\//.test( url ) ) {\n\n\t\t\tpath = path.replace( /(^https?:\\/\\/[^\\/]+).*/i, '$1' );\n\n\t\t}\n\n\t\t// Absolute URL http://,https://,//\n\t\tif ( /^(https?:)?\\/\\//i.test( url ) ) return url;\n\n\t\t// Data URI\n\t\tif ( /^data:.*,.*$/i.test( url ) ) return url;\n\n\t\t// Blob URL\n\t\tif ( /^blob:.*$/i.test( url ) ) return url;\n\n\t\t// Relative URL\n\t\treturn path + url;\n\n\t}\n\n}\n\nclass InstancedBufferGeometry extends BufferGeometry {\n\n\tconstructor() {\n\n\t\tsuper();\n\n\t\tthis.isInstancedBufferGeometry = true;\n\n\t\tthis.type = 'InstancedBufferGeometry';\n\t\tthis.instanceCount = Infinity;\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.instanceCount = source.instanceCount;\n\n\t\treturn this;\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n\ttoJSON() {\n\n\t\tconst data = super.toJSON( this );\n\n\t\tdata.instanceCount = this.instanceCount;\n\n\t\tdata.isInstancedBufferGeometry = true;\n\n\t\treturn data;\n\n\t}\n\n}\n\nclass BufferGeometryLoader extends Loader {\n\n\tconstructor( manager ) {\n\n\t\tsuper( manager );\n\n\t}\n\n\tload( url, onLoad, onProgress, onError ) {\n\n\t\tconst scope = this;\n\n\t\tconst loader = new FileLoader( scope.manager );\n\t\tloader.setPath( scope.path );\n\t\tloader.setRequestHeader( scope.requestHeader );\n\t\tloader.setWithCredentials( scope.withCredentials );\n\t\tloader.load( url, function ( text ) {\n\n\t\t\ttry {\n\n\t\t\t\tonLoad( scope.parse( JSON.parse( text ) ) );\n\n\t\t\t} catch ( e ) {\n\n\t\t\t\tif ( onError ) {\n\n\t\t\t\t\tonError( e );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tconsole.error( e );\n\n\t\t\t\t}\n\n\t\t\t\tscope.manager.itemError( url );\n\n\t\t\t}\n\n\t\t}, onProgress, onError );\n\n\t}\n\n\tparse( json ) {\n\n\t\tconst interleavedBufferMap = {};\n\t\tconst arrayBufferMap = {};\n\n\t\tfunction getInterleavedBuffer( json, uuid ) {\n\n\t\t\tif ( interleavedBufferMap[ uuid ] !== undefined ) return interleavedBufferMap[ uuid ];\n\n\t\t\tconst interleavedBuffers = json.interleavedBuffers;\n\t\t\tconst interleavedBuffer = interleavedBuffers[ uuid ];\n\n\t\t\tconst buffer = getArrayBuffer( json, interleavedBuffer.buffer );\n\n\t\t\tconst array = getTypedArray( interleavedBuffer.type, buffer );\n\t\t\tconst ib = new InterleavedBuffer( array, interleavedBuffer.stride );\n\t\t\tib.uuid = interleavedBuffer.uuid;\n\n\t\t\tinterleavedBufferMap[ uuid ] = ib;\n\n\t\t\treturn ib;\n\n\t\t}\n\n\t\tfunction getArrayBuffer( json, uuid ) {\n\n\t\t\tif ( arrayBufferMap[ uuid ] !== undefined ) return arrayBufferMap[ uuid ];\n\n\t\t\tconst arrayBuffers = json.arrayBuffers;\n\t\t\tconst arrayBuffer = arrayBuffers[ uuid ];\n\n\t\t\tconst ab = new Uint32Array( arrayBuffer ).buffer;\n\n\t\t\tarrayBufferMap[ uuid ] = ab;\n\n\t\t\treturn ab;\n\n\t\t}\n\n\t\tconst geometry = json.isInstancedBufferGeometry ? new InstancedBufferGeometry() : new BufferGeometry();\n\n\t\tconst index = json.data.index;\n\n\t\tif ( index !== undefined ) {\n\n\t\t\tconst typedArray = getTypedArray( index.type, index.array );\n\t\t\tgeometry.setIndex( new BufferAttribute( typedArray, 1 ) );\n\n\t\t}\n\n\t\tconst attributes = json.data.attributes;\n\n\t\tfor ( const key in attributes ) {\n\n\t\t\tconst attribute = attributes[ key ];\n\t\t\tlet bufferAttribute;\n\n\t\t\tif ( attribute.isInterleavedBufferAttribute ) {\n\n\t\t\t\tconst interleavedBuffer = getInterleavedBuffer( json.data, attribute.data );\n\t\t\t\tbufferAttribute = new InterleavedBufferAttribute( interleavedBuffer, attribute.itemSize, attribute.offset, attribute.normalized );\n\n\t\t\t} else {\n\n\t\t\t\tconst typedArray = getTypedArray( attribute.type, attribute.array );\n\t\t\t\tconst bufferAttributeConstr = attribute.isInstancedBufferAttribute ? InstancedBufferAttribute : BufferAttribute;\n\t\t\t\tbufferAttribute = new bufferAttributeConstr( typedArray, attribute.itemSize, attribute.normalized );\n\n\t\t\t}\n\n\t\t\tif ( attribute.name !== undefined ) bufferAttribute.name = attribute.name;\n\t\t\tif ( attribute.usage !== undefined ) bufferAttribute.setUsage( attribute.usage );\n\n\t\t\tif ( attribute.updateRange !== undefined ) {\n\n\t\t\t\tbufferAttribute.updateRange.offset = attribute.updateRange.offset;\n\t\t\t\tbufferAttribute.updateRange.count = attribute.updateRange.count;\n\n\t\t\t}\n\n\t\t\tgeometry.setAttribute( key, bufferAttribute );\n\n\t\t}\n\n\t\tconst morphAttributes = json.data.morphAttributes;\n\n\t\tif ( morphAttributes ) {\n\n\t\t\tfor ( const key in morphAttributes ) {\n\n\t\t\t\tconst attributeArray = morphAttributes[ key ];\n\n\t\t\t\tconst array = [];\n\n\t\t\t\tfor ( let i = 0, il = attributeArray.length; i < il; i ++ ) {\n\n\t\t\t\t\tconst attribute = attributeArray[ i ];\n\t\t\t\t\tlet bufferAttribute;\n\n\t\t\t\t\tif ( attribute.isInterleavedBufferAttribute ) {\n\n\t\t\t\t\t\tconst interleavedBuffer = getInterleavedBuffer( json.data, attribute.data );\n\t\t\t\t\t\tbufferAttribute = new InterleavedBufferAttribute( interleavedBuffer, attribute.itemSize, attribute.offset, attribute.normalized );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tconst typedArray = getTypedArray( attribute.type, attribute.array );\n\t\t\t\t\t\tbufferAttribute = new BufferAttribute( typedArray, attribute.itemSize, attribute.normalized );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( attribute.name !== undefined ) bufferAttribute.name = attribute.name;\n\t\t\t\t\tarray.push( bufferAttribute );\n\n\t\t\t\t}\n\n\t\t\t\tgeometry.morphAttributes[ key ] = array;\n\n\t\t\t}\n\n\t\t}\n\n\t\tconst morphTargetsRelative = json.data.morphTargetsRelative;\n\n\t\tif ( morphTargetsRelative ) {\n\n\t\t\tgeometry.morphTargetsRelative = true;\n\n\t\t}\n\n\t\tconst groups = json.data.groups || json.data.drawcalls || json.data.offsets;\n\n\t\tif ( groups !== undefined ) {\n\n\t\t\tfor ( let i = 0, n = groups.length; i !== n; ++ i ) {\n\n\t\t\t\tconst group = groups[ i ];\n\n\t\t\t\tgeometry.addGroup( group.start, group.count, group.materialIndex );\n\n\t\t\t}\n\n\t\t}\n\n\t\tconst boundingSphere = json.data.boundingSphere;\n\n\t\tif ( boundingSphere !== undefined ) {\n\n\t\t\tconst center = new Vector3();\n\n\t\t\tif ( boundingSphere.center !== undefined ) {\n\n\t\t\t\tcenter.fromArray( boundingSphere.center );\n\n\t\t\t}\n\n\t\t\tgeometry.boundingSphere = new Sphere( center, boundingSphere.radius );\n\n\t\t}\n\n\t\tif ( json.name ) geometry.name = json.name;\n\t\tif ( json.userData ) geometry.userData = json.userData;\n\n\t\treturn geometry;\n\n\t}\n\n}\n\nclass ObjectLoader extends Loader {\n\n\tconstructor( manager ) {\n\n\t\tsuper( manager );\n\n\t}\n\n\tload( url, onLoad, onProgress, onError ) {\n\n\t\tconst scope = this;\n\n\t\tconst path = ( this.path === '' ) ? LoaderUtils.extractUrlBase( url ) : this.path;\n\t\tthis.resourcePath = this.resourcePath || path;\n\n\t\tconst loader = new FileLoader( this.manager );\n\t\tloader.setPath( this.path );\n\t\tloader.setRequestHeader( this.requestHeader );\n\t\tloader.setWithCredentials( this.withCredentials );\n\t\tloader.load( url, function ( text ) {\n\n\t\t\tlet json = null;\n\n\t\t\ttry {\n\n\t\t\t\tjson = JSON.parse( text );\n\n\t\t\t} catch ( error ) {\n\n\t\t\t\tif ( onError !== undefined ) onError( error );\n\n\t\t\t\tconsole.error( 'THREE:ObjectLoader: Can\\'t parse ' + url + '.', error.message );\n\n\t\t\t\treturn;\n\n\t\t\t}\n\n\t\t\tconst metadata = json.metadata;\n\n\t\t\tif ( metadata === undefined || metadata.type === undefined || metadata.type.toLowerCase() === 'geometry' ) {\n\n\t\t\t\tconsole.error( 'THREE.ObjectLoader: Can\\'t load ' + url );\n\t\t\t\treturn;\n\n\t\t\t}\n\n\t\t\tscope.parse( json, onLoad );\n\n\t\t}, onProgress, onError );\n\n\t}\n\n\tasync loadAsync( url, onProgress ) {\n\n\t\tconst scope = this;\n\n\t\tconst path = ( this.path === '' ) ? LoaderUtils.extractUrlBase( url ) : this.path;\n\t\tthis.resourcePath = this.resourcePath || path;\n\n\t\tconst loader = new FileLoader( this.manager );\n\t\tloader.setPath( this.path );\n\t\tloader.setRequestHeader( this.requestHeader );\n\t\tloader.setWithCredentials( this.withCredentials );\n\n\t\tconst text = await loader.loadAsync( url, onProgress );\n\n\t\tconst json = JSON.parse( text );\n\n\t\tconst metadata = json.metadata;\n\n\t\tif ( metadata === undefined || metadata.type === undefined || metadata.type.toLowerCase() === 'geometry' ) {\n\n\t\t\tthrow new Error( 'THREE.ObjectLoader: Can\\'t load ' + url );\n\n\t\t}\n\n\t\treturn await scope.parseAsync( json );\n\n\t}\n\n\tparse( json, onLoad ) {\n\n\t\tconst animations = this.parseAnimations( json.animations );\n\t\tconst shapes = this.parseShapes( json.shapes );\n\t\tconst geometries = this.parseGeometries( json.geometries, shapes );\n\n\t\tconst images = this.parseImages( json.images, function () {\n\n\t\t\tif ( onLoad !== undefined ) onLoad( object );\n\n\t\t} );\n\n\t\tconst textures = this.parseTextures( json.textures, images );\n\t\tconst materials = this.parseMaterials( json.materials, textures );\n\n\t\tconst object = this.parseObject( json.object, geometries, materials, textures, animations );\n\t\tconst skeletons = this.parseSkeletons( json.skeletons, object );\n\n\t\tthis.bindSkeletons( object, skeletons );\n\n\t\t//\n\n\t\tif ( onLoad !== undefined ) {\n\n\t\t\tlet hasImages = false;\n\n\t\t\tfor ( const uuid in images ) {\n\n\t\t\t\tif ( images[ uuid ].data instanceof HTMLImageElement ) {\n\n\t\t\t\t\thasImages = true;\n\t\t\t\t\tbreak;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( hasImages === false ) onLoad( object );\n\n\t\t}\n\n\t\treturn object;\n\n\t}\n\n\tasync parseAsync( json ) {\n\n\t\tconst animations = this.parseAnimations( json.animations );\n\t\tconst shapes = this.parseShapes( json.shapes );\n\t\tconst geometries = this.parseGeometries( json.geometries, shapes );\n\n\t\tconst images = await this.parseImagesAsync( json.images );\n\n\t\tconst textures = this.parseTextures( json.textures, images );\n\t\tconst materials = this.parseMaterials( json.materials, textures );\n\n\t\tconst object = this.parseObject( json.object, geometries, materials, textures, animations );\n\t\tconst skeletons = this.parseSkeletons( json.skeletons, object );\n\n\t\tthis.bindSkeletons( object, skeletons );\n\n\t\treturn object;\n\n\t}\n\n\tparseShapes( json ) {\n\n\t\tconst shapes = {};\n\n\t\tif ( json !== undefined ) {\n\n\t\t\tfor ( let i = 0, l = json.length; i < l; i ++ ) {\n\n\t\t\t\tconst shape = new Shape().fromJSON( json[ i ] );\n\n\t\t\t\tshapes[ shape.uuid ] = shape;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn shapes;\n\n\t}\n\n\tparseSkeletons( json, object ) {\n\n\t\tconst skeletons = {};\n\t\tconst bones = {};\n\n\t\t// generate bone lookup table\n\n\t\tobject.traverse( function ( child ) {\n\n\t\t\tif ( child.isBone ) bones[ child.uuid ] = child;\n\n\t\t} );\n\n\t\t// create skeletons\n\n\t\tif ( json !== undefined ) {\n\n\t\t\tfor ( let i = 0, l = json.length; i < l; i ++ ) {\n\n\t\t\t\tconst skeleton = new Skeleton().fromJSON( json[ i ], bones );\n\n\t\t\t\tskeletons[ skeleton.uuid ] = skeleton;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn skeletons;\n\n\t}\n\n\tparseGeometries( json, shapes ) {\n\n\t\tconst geometries = {};\n\n\t\tif ( json !== undefined ) {\n\n\t\t\tconst bufferGeometryLoader = new BufferGeometryLoader();\n\n\t\t\tfor ( let i = 0, l = json.length; i < l; i ++ ) {\n\n\t\t\t\tlet geometry;\n\t\t\t\tconst data = json[ i ];\n\n\t\t\t\tswitch ( data.type ) {\n\n\t\t\t\t\tcase 'BufferGeometry':\n\t\t\t\t\tcase 'InstancedBufferGeometry':\n\n\t\t\t\t\t\tgeometry = bufferGeometryLoader.parse( data );\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'Geometry':\n\n\t\t\t\t\t\tconsole.error( 'THREE.ObjectLoader: The legacy Geometry type is no longer supported.' );\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tdefault:\n\n\t\t\t\t\t\tif ( data.type in Geometries ) {\n\n\t\t\t\t\t\t\tgeometry = Geometries[ data.type ].fromJSON( data, shapes );\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\tconsole.warn( `THREE.ObjectLoader: Unsupported geometry type \"${ data.type }\"` );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\tgeometry.uuid = data.uuid;\n\n\t\t\t\tif ( data.name !== undefined ) geometry.name = data.name;\n\t\t\t\tif ( geometry.isBufferGeometry === true && data.userData !== undefined ) geometry.userData = data.userData;\n\n\t\t\t\tgeometries[ data.uuid ] = geometry;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn geometries;\n\n\t}\n\n\tparseMaterials( json, textures ) {\n\n\t\tconst cache = {}; // MultiMaterial\n\t\tconst materials = {};\n\n\t\tif ( json !== undefined ) {\n\n\t\t\tconst loader = new MaterialLoader();\n\t\t\tloader.setTextures( textures );\n\n\t\t\tfor ( let i = 0, l = json.length; i < l; i ++ ) {\n\n\t\t\t\tconst data = json[ i ];\n\n\t\t\t\tif ( data.type === 'MultiMaterial' ) {\n\n\t\t\t\t\t// Deprecated\n\n\t\t\t\t\tconst array = [];\n\n\t\t\t\t\tfor ( let j = 0; j < data.materials.length; j ++ ) {\n\n\t\t\t\t\t\tconst material = data.materials[ j ];\n\n\t\t\t\t\t\tif ( cache[ material.uuid ] === undefined ) {\n\n\t\t\t\t\t\t\tcache[ material.uuid ] = loader.parse( material );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tarray.push( cache[ material.uuid ] );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tmaterials[ data.uuid ] = array;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tif ( cache[ data.uuid ] === undefined ) {\n\n\t\t\t\t\t\tcache[ data.uuid ] = loader.parse( data );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tmaterials[ data.uuid ] = cache[ data.uuid ];\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn materials;\n\n\t}\n\n\tparseAnimations( json ) {\n\n\t\tconst animations = {};\n\n\t\tif ( json !== undefined ) {\n\n\t\t\tfor ( let i = 0; i < json.length; i ++ ) {\n\n\t\t\t\tconst data = json[ i ];\n\n\t\t\t\tconst clip = AnimationClip.parse( data );\n\n\t\t\t\tanimations[ clip.uuid ] = clip;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn animations;\n\n\t}\n\n\tparseImages( json, onLoad ) {\n\n\t\tconst scope = this;\n\t\tconst images = {};\n\n\t\tlet loader;\n\n\t\tfunction loadImage( url ) {\n\n\t\t\tscope.manager.itemStart( url );\n\n\t\t\treturn loader.load( url, function () {\n\n\t\t\t\tscope.manager.itemEnd( url );\n\n\t\t\t}, undefined, function () {\n\n\t\t\t\tscope.manager.itemError( url );\n\t\t\t\tscope.manager.itemEnd( url );\n\n\t\t\t} );\n\n\t\t}\n\n\t\tfunction deserializeImage( image ) {\n\n\t\t\tif ( typeof image === 'string' ) {\n\n\t\t\t\tconst url = image;\n\n\t\t\t\tconst path = /^(\\/\\/)|([a-z]+:(\\/\\/)?)/i.test( url ) ? url : scope.resourcePath + url;\n\n\t\t\t\treturn loadImage( path );\n\n\t\t\t} else {\n\n\t\t\t\tif ( image.data ) {\n\n\t\t\t\t\treturn {\n\t\t\t\t\t\tdata: getTypedArray( image.type, image.data ),\n\t\t\t\t\t\twidth: image.width,\n\t\t\t\t\t\theight: image.height\n\t\t\t\t\t};\n\n\t\t\t\t} else {\n\n\t\t\t\t\treturn null;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( json !== undefined && json.length > 0 ) {\n\n\t\t\tconst manager = new LoadingManager( onLoad );\n\n\t\t\tloader = new ImageLoader( manager );\n\t\t\tloader.setCrossOrigin( this.crossOrigin );\n\n\t\t\tfor ( let i = 0, il = json.length; i < il; i ++ ) {\n\n\t\t\t\tconst image = json[ i ];\n\t\t\t\tconst url = image.url;\n\n\t\t\t\tif ( Array.isArray( url ) ) {\n\n\t\t\t\t\t// load array of images e.g CubeTexture\n\n\t\t\t\t\tconst imageArray = [];\n\n\t\t\t\t\tfor ( let j = 0, jl = url.length; j < jl; j ++ ) {\n\n\t\t\t\t\t\tconst currentUrl = url[ j ];\n\n\t\t\t\t\t\tconst deserializedImage = deserializeImage( currentUrl );\n\n\t\t\t\t\t\tif ( deserializedImage !== null ) {\n\n\t\t\t\t\t\t\tif ( deserializedImage instanceof HTMLImageElement ) {\n\n\t\t\t\t\t\t\t\timageArray.push( deserializedImage );\n\n\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\t// special case: handle array of data textures for cube textures\n\n\t\t\t\t\t\t\t\timageArray.push( new DataTexture( deserializedImage.data, deserializedImage.width, deserializedImage.height ) );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t\timages[ image.uuid ] = new Source( imageArray );\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// load single image\n\n\t\t\t\t\tconst deserializedImage = deserializeImage( image.url );\n\t\t\t\t\timages[ image.uuid ] = new Source( deserializedImage );\n\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn images;\n\n\t}\n\n\tasync parseImagesAsync( json ) {\n\n\t\tconst scope = this;\n\t\tconst images = {};\n\n\t\tlet loader;\n\n\t\tasync function deserializeImage( image ) {\n\n\t\t\tif ( typeof image === 'string' ) {\n\n\t\t\t\tconst url = image;\n\n\t\t\t\tconst path = /^(\\/\\/)|([a-z]+:(\\/\\/)?)/i.test( url ) ? url : scope.resourcePath + url;\n\n\t\t\t\treturn await loader.loadAsync( path );\n\n\t\t\t} else {\n\n\t\t\t\tif ( image.data ) {\n\n\t\t\t\t\treturn {\n\t\t\t\t\t\tdata: getTypedArray( image.type, image.data ),\n\t\t\t\t\t\twidth: image.width,\n\t\t\t\t\t\theight: image.height\n\t\t\t\t\t};\n\n\t\t\t\t} else {\n\n\t\t\t\t\treturn null;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( json !== undefined && json.length > 0 ) {\n\n\t\t\tloader = new ImageLoader( this.manager );\n\t\t\tloader.setCrossOrigin( this.crossOrigin );\n\n\t\t\tfor ( let i = 0, il = json.length; i < il; i ++ ) {\n\n\t\t\t\tconst image = json[ i ];\n\t\t\t\tconst url = image.url;\n\n\t\t\t\tif ( Array.isArray( url ) ) {\n\n\t\t\t\t\t// load array of images e.g CubeTexture\n\n\t\t\t\t\tconst imageArray = [];\n\n\t\t\t\t\tfor ( let j = 0, jl = url.length; j < jl; j ++ ) {\n\n\t\t\t\t\t\tconst currentUrl = url[ j ];\n\n\t\t\t\t\t\tconst deserializedImage = await deserializeImage( currentUrl );\n\n\t\t\t\t\t\tif ( deserializedImage !== null ) {\n\n\t\t\t\t\t\t\tif ( deserializedImage instanceof HTMLImageElement ) {\n\n\t\t\t\t\t\t\t\timageArray.push( deserializedImage );\n\n\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\t// special case: handle array of data textures for cube textures\n\n\t\t\t\t\t\t\t\timageArray.push( new DataTexture( deserializedImage.data, deserializedImage.width, deserializedImage.height ) );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t\timages[ image.uuid ] = new Source( imageArray );\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// load single image\n\n\t\t\t\t\tconst deserializedImage = await deserializeImage( image.url );\n\t\t\t\t\timages[ image.uuid ] = new Source( deserializedImage );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn images;\n\n\t}\n\n\tparseTextures( json, images ) {\n\n\t\tfunction parseConstant( value, type ) {\n\n\t\t\tif ( typeof value === 'number' ) return value;\n\n\t\t\tconsole.warn( 'THREE.ObjectLoader.parseTexture: Constant should be in numeric form.', value );\n\n\t\t\treturn type[ value ];\n\n\t\t}\n\n\t\tconst textures = {};\n\n\t\tif ( json !== undefined ) {\n\n\t\t\tfor ( let i = 0, l = json.length; i < l; i ++ ) {\n\n\t\t\t\tconst data = json[ i ];\n\n\t\t\t\tif ( data.image === undefined ) {\n\n\t\t\t\t\tconsole.warn( 'THREE.ObjectLoader: No \"image\" specified for', data.uuid );\n\n\t\t\t\t}\n\n\t\t\t\tif ( images[ data.image ] === undefined ) {\n\n\t\t\t\t\tconsole.warn( 'THREE.ObjectLoader: Undefined image', data.image );\n\n\t\t\t\t}\n\n\t\t\t\tconst source = images[ data.image ];\n\t\t\t\tconst image = source.data;\n\n\t\t\t\tlet texture;\n\n\t\t\t\tif ( Array.isArray( image ) ) {\n\n\t\t\t\t\ttexture = new CubeTexture();\n\n\t\t\t\t\tif ( image.length === 6 ) texture.needsUpdate = true;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tif ( image && image.data ) {\n\n\t\t\t\t\t\ttexture = new DataTexture();\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\ttexture = new Texture();\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( image ) texture.needsUpdate = true; // textures can have undefined image data\n\n\t\t\t\t}\n\n\t\t\t\ttexture.source = source;\n\n\t\t\t\ttexture.uuid = data.uuid;\n\n\t\t\t\tif ( data.name !== undefined ) texture.name = data.name;\n\n\t\t\t\tif ( data.mapping !== undefined ) texture.mapping = parseConstant( data.mapping, TEXTURE_MAPPING );\n\n\t\t\t\tif ( data.offset !== undefined ) texture.offset.fromArray( data.offset );\n\t\t\t\tif ( data.repeat !== undefined ) texture.repeat.fromArray( data.repeat );\n\t\t\t\tif ( data.center !== undefined ) texture.center.fromArray( data.center );\n\t\t\t\tif ( data.rotation !== undefined ) texture.rotation = data.rotation;\n\n\t\t\t\tif ( data.wrap !== undefined ) {\n\n\t\t\t\t\ttexture.wrapS = parseConstant( data.wrap[ 0 ], TEXTURE_WRAPPING );\n\t\t\t\t\ttexture.wrapT = parseConstant( data.wrap[ 1 ], TEXTURE_WRAPPING );\n\n\t\t\t\t}\n\n\t\t\t\tif ( data.format !== undefined ) texture.format = data.format;\n\t\t\t\tif ( data.type !== undefined ) texture.type = data.type;\n\t\t\t\tif ( data.encoding !== undefined ) texture.encoding = data.encoding;\n\n\t\t\t\tif ( data.minFilter !== undefined ) texture.minFilter = parseConstant( data.minFilter, TEXTURE_FILTER );\n\t\t\t\tif ( data.magFilter !== undefined ) texture.magFilter = parseConstant( data.magFilter, TEXTURE_FILTER );\n\t\t\t\tif ( data.anisotropy !== undefined ) texture.anisotropy = data.anisotropy;\n\n\t\t\t\tif ( data.flipY !== undefined ) texture.flipY = data.flipY;\n\n\t\t\t\tif ( data.premultiplyAlpha !== undefined ) texture.premultiplyAlpha = data.premultiplyAlpha;\n\t\t\t\tif ( data.unpackAlignment !== undefined ) texture.unpackAlignment = data.unpackAlignment;\n\n\t\t\t\tif ( data.userData !== undefined ) texture.userData = data.userData;\n\n\t\t\t\ttextures[ data.uuid ] = texture;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn textures;\n\n\t}\n\n\tparseObject( data, geometries, materials, textures, animations ) {\n\n\t\tlet object;\n\n\t\tfunction getGeometry( name ) {\n\n\t\t\tif ( geometries[ name ] === undefined ) {\n\n\t\t\t\tconsole.warn( 'THREE.ObjectLoader: Undefined geometry', name );\n\n\t\t\t}\n\n\t\t\treturn geometries[ name ];\n\n\t\t}\n\n\t\tfunction getMaterial( name ) {\n\n\t\t\tif ( name === undefined ) return undefined;\n\n\t\t\tif ( Array.isArray( name ) ) {\n\n\t\t\t\tconst array = [];\n\n\t\t\t\tfor ( let i = 0, l = name.length; i < l; i ++ ) {\n\n\t\t\t\t\tconst uuid = name[ i ];\n\n\t\t\t\t\tif ( materials[ uuid ] === undefined ) {\n\n\t\t\t\t\t\tconsole.warn( 'THREE.ObjectLoader: Undefined material', uuid );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tarray.push( materials[ uuid ] );\n\n\t\t\t\t}\n\n\t\t\t\treturn array;\n\n\t\t\t}\n\n\t\t\tif ( materials[ name ] === undefined ) {\n\n\t\t\t\tconsole.warn( 'THREE.ObjectLoader: Undefined material', name );\n\n\t\t\t}\n\n\t\t\treturn materials[ name ];\n\n\t\t}\n\n\t\tfunction getTexture( uuid ) {\n\n\t\t\tif ( textures[ uuid ] === undefined ) {\n\n\t\t\t\tconsole.warn( 'THREE.ObjectLoader: Undefined texture', uuid );\n\n\t\t\t}\n\n\t\t\treturn textures[ uuid ];\n\n\t\t}\n\n\t\tlet geometry, material;\n\n\t\tswitch ( data.type ) {\n\n\t\t\tcase 'Scene':\n\n\t\t\t\tobject = new Scene();\n\n\t\t\t\tif ( data.background !== undefined ) {\n\n\t\t\t\t\tif ( Number.isInteger( data.background ) ) {\n\n\t\t\t\t\t\tobject.background = new Color( data.background );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tobject.background = getTexture( data.background );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\tif ( data.environment !== undefined ) {\n\n\t\t\t\t\tobject.environment = getTexture( data.environment );\n\n\t\t\t\t}\n\n\t\t\t\tif ( data.fog !== undefined ) {\n\n\t\t\t\t\tif ( data.fog.type === 'Fog' ) {\n\n\t\t\t\t\t\tobject.fog = new Fog( data.fog.color, data.fog.near, data.fog.far );\n\n\t\t\t\t\t} else if ( data.fog.type === 'FogExp2' ) {\n\n\t\t\t\t\t\tobject.fog = new FogExp2( data.fog.color, data.fog.density );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'PerspectiveCamera':\n\n\t\t\t\tobject = new PerspectiveCamera( data.fov, data.aspect, data.near, data.far );\n\n\t\t\t\tif ( data.focus !== undefined ) object.focus = data.focus;\n\t\t\t\tif ( data.zoom !== undefined ) object.zoom = data.zoom;\n\t\t\t\tif ( data.filmGauge !== undefined ) object.filmGauge = data.filmGauge;\n\t\t\t\tif ( data.filmOffset !== undefined ) object.filmOffset = data.filmOffset;\n\t\t\t\tif ( data.view !== undefined ) object.view = Object.assign( {}, data.view );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'OrthographicCamera':\n\n\t\t\t\tobject = new OrthographicCamera( data.left, data.right, data.top, data.bottom, data.near, data.far );\n\n\t\t\t\tif ( data.zoom !== undefined ) object.zoom = data.zoom;\n\t\t\t\tif ( data.view !== undefined ) object.view = Object.assign( {}, data.view );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'AmbientLight':\n\n\t\t\t\tobject = new AmbientLight( data.color, data.intensity );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'DirectionalLight':\n\n\t\t\t\tobject = new DirectionalLight( data.color, data.intensity );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'PointLight':\n\n\t\t\t\tobject = new PointLight( data.color, data.intensity, data.distance, data.decay );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'RectAreaLight':\n\n\t\t\t\tobject = new RectAreaLight( data.color, data.intensity, data.width, data.height );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'SpotLight':\n\n\t\t\t\tobject = new SpotLight( data.color, data.intensity, data.distance, data.angle, data.penumbra, data.decay );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'HemisphereLight':\n\n\t\t\t\tobject = new HemisphereLight( data.color, data.groundColor, data.intensity );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'LightProbe':\n\n\t\t\t\tobject = new LightProbe().fromJSON( data );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'SkinnedMesh':\n\n\t\t\t\tgeometry = getGeometry( data.geometry );\n\t\t\t \tmaterial = getMaterial( data.material );\n\n\t\t\t\tobject = new SkinnedMesh( geometry, material );\n\n\t\t\t\tif ( data.bindMode !== undefined ) object.bindMode = data.bindMode;\n\t\t\t\tif ( data.bindMatrix !== undefined ) object.bindMatrix.fromArray( data.bindMatrix );\n\t\t\t\tif ( data.skeleton !== undefined ) object.skeleton = data.skeleton;\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'Mesh':\n\n\t\t\t\tgeometry = getGeometry( data.geometry );\n\t\t\t\tmaterial = getMaterial( data.material );\n\n\t\t\t\tobject = new Mesh( geometry, material );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'InstancedMesh':\n\n\t\t\t\tgeometry = getGeometry( data.geometry );\n\t\t\t\tmaterial = getMaterial( data.material );\n\t\t\t\tconst count = data.count;\n\t\t\t\tconst instanceMatrix = data.instanceMatrix;\n\t\t\t\tconst instanceColor = data.instanceColor;\n\n\t\t\t\tobject = new InstancedMesh( geometry, material, count );\n\t\t\t\tobject.instanceMatrix = new InstancedBufferAttribute( new Float32Array( instanceMatrix.array ), 16 );\n\t\t\t\tif ( instanceColor !== undefined ) object.instanceColor = new InstancedBufferAttribute( new Float32Array( instanceColor.array ), instanceColor.itemSize );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'LOD':\n\n\t\t\t\tobject = new LOD();\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'Line':\n\n\t\t\t\tobject = new Line( getGeometry( data.geometry ), getMaterial( data.material ) );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'LineLoop':\n\n\t\t\t\tobject = new LineLoop( getGeometry( data.geometry ), getMaterial( data.material ) );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'LineSegments':\n\n\t\t\t\tobject = new LineSegments( getGeometry( data.geometry ), getMaterial( data.material ) );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'PointCloud':\n\t\t\tcase 'Points':\n\n\t\t\t\tobject = new Points( getGeometry( data.geometry ), getMaterial( data.material ) );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'Sprite':\n\n\t\t\t\tobject = new Sprite( getMaterial( data.material ) );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'Group':\n\n\t\t\t\tobject = new Group();\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'Bone':\n\n\t\t\t\tobject = new Bone();\n\n\t\t\t\tbreak;\n\n\t\t\tdefault:\n\n\t\t\t\tobject = new Object3D();\n\n\t\t}\n\n\t\tobject.uuid = data.uuid;\n\n\t\tif ( data.name !== undefined ) object.name = data.name;\n\n\t\tif ( data.matrix !== undefined ) {\n\n\t\t\tobject.matrix.fromArray( data.matrix );\n\n\t\t\tif ( data.matrixAutoUpdate !== undefined ) object.matrixAutoUpdate = data.matrixAutoUpdate;\n\t\t\tif ( object.matrixAutoUpdate ) object.matrix.decompose( object.position, object.quaternion, object.scale );\n\n\t\t} else {\n\n\t\t\tif ( data.position !== undefined ) object.position.fromArray( data.position );\n\t\t\tif ( data.rotation !== undefined ) object.rotation.fromArray( data.rotation );\n\t\t\tif ( data.quaternion !== undefined ) object.quaternion.fromArray( data.quaternion );\n\t\t\tif ( data.scale !== undefined ) object.scale.fromArray( data.scale );\n\n\t\t}\n\n\t\tif ( data.castShadow !== undefined ) object.castShadow = data.castShadow;\n\t\tif ( data.receiveShadow !== undefined ) object.receiveShadow = data.receiveShadow;\n\n\t\tif ( data.shadow ) {\n\n\t\t\tif ( data.shadow.bias !== undefined ) object.shadow.bias = data.shadow.bias;\n\t\t\tif ( data.shadow.normalBias !== undefined ) object.shadow.normalBias = data.shadow.normalBias;\n\t\t\tif ( data.shadow.radius !== undefined ) object.shadow.radius = data.shadow.radius;\n\t\t\tif ( data.shadow.mapSize !== undefined ) object.shadow.mapSize.fromArray( data.shadow.mapSize );\n\t\t\tif ( data.shadow.camera !== undefined ) object.shadow.camera = this.parseObject( data.shadow.camera );\n\n\t\t}\n\n\t\tif ( data.visible !== undefined ) object.visible = data.visible;\n\t\tif ( data.frustumCulled !== undefined ) object.frustumCulled = data.frustumCulled;\n\t\tif ( data.renderOrder !== undefined ) object.renderOrder = data.renderOrder;\n\t\tif ( data.userData !== undefined ) object.userData = data.userData;\n\t\tif ( data.layers !== undefined ) object.layers.mask = data.layers;\n\n\t\tif ( data.children !== undefined ) {\n\n\t\t\tconst children = data.children;\n\n\t\t\tfor ( let i = 0; i < children.length; i ++ ) {\n\n\t\t\t\tobject.add( this.parseObject( children[ i ], geometries, materials, textures, animations ) );\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( data.animations !== undefined ) {\n\n\t\t\tconst objectAnimations = data.animations;\n\n\t\t\tfor ( let i = 0; i < objectAnimations.length; i ++ ) {\n\n\t\t\t\tconst uuid = objectAnimations[ i ];\n\n\t\t\t\tobject.animations.push( animations[ uuid ] );\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( data.type === 'LOD' ) {\n\n\t\t\tif ( data.autoUpdate !== undefined ) object.autoUpdate = data.autoUpdate;\n\n\t\t\tconst levels = data.levels;\n\n\t\t\tfor ( let l = 0; l < levels.length; l ++ ) {\n\n\t\t\t\tconst level = levels[ l ];\n\t\t\t\tconst child = object.getObjectByProperty( 'uuid', level.object );\n\n\t\t\t\tif ( child !== undefined ) {\n\n\t\t\t\t\tobject.addLevel( child, level.distance );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn object;\n\n\t}\n\n\tbindSkeletons( object, skeletons ) {\n\n\t\tif ( Object.keys( skeletons ).length === 0 ) return;\n\n\t\tobject.traverse( function ( child ) {\n\n\t\t\tif ( child.isSkinnedMesh === true && child.skeleton !== undefined ) {\n\n\t\t\t\tconst skeleton = skeletons[ child.skeleton ];\n\n\t\t\t\tif ( skeleton === undefined ) {\n\n\t\t\t\t\tconsole.warn( 'THREE.ObjectLoader: No skeleton found with UUID:', child.skeleton );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tchild.bind( skeleton, child.bindMatrix );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t} );\n\n\t}\n\n\t/* DEPRECATED */\n\n\tsetTexturePath( value ) {\n\n\t\tconsole.warn( 'THREE.ObjectLoader: .setTexturePath() has been renamed to .setResourcePath().' );\n\t\treturn this.setResourcePath( value );\n\n\t}\n\n}\n\nconst TEXTURE_MAPPING = {\n\tUVMapping: UVMapping,\n\tCubeReflectionMapping: CubeReflectionMapping,\n\tCubeRefractionMapping: CubeRefractionMapping,\n\tEquirectangularReflectionMapping: EquirectangularReflectionMapping,\n\tEquirectangularRefractionMapping: EquirectangularRefractionMapping,\n\tCubeUVReflectionMapping: CubeUVReflectionMapping\n};\n\nconst TEXTURE_WRAPPING = {\n\tRepeatWrapping: RepeatWrapping,\n\tClampToEdgeWrapping: ClampToEdgeWrapping,\n\tMirroredRepeatWrapping: MirroredRepeatWrapping\n};\n\nconst TEXTURE_FILTER = {\n\tNearestFilter: NearestFilter,\n\tNearestMipmapNearestFilter: NearestMipmapNearestFilter,\n\tNearestMipmapLinearFilter: NearestMipmapLinearFilter,\n\tLinearFilter: LinearFilter,\n\tLinearMipmapNearestFilter: LinearMipmapNearestFilter,\n\tLinearMipmapLinearFilter: LinearMipmapLinearFilter\n};\n\nclass ImageBitmapLoader extends Loader {\n\n\tconstructor( manager ) {\n\n\t\tsuper( manager );\n\n\t\tthis.isImageBitmapLoader = true;\n\n\t\tif ( typeof createImageBitmap === 'undefined' ) {\n\n\t\t\tconsole.warn( 'THREE.ImageBitmapLoader: createImageBitmap() not supported.' );\n\n\t\t}\n\n\t\tif ( typeof fetch === 'undefined' ) {\n\n\t\t\tconsole.warn( 'THREE.ImageBitmapLoader: fetch() not supported.' );\n\n\t\t}\n\n\t\tthis.options = { premultiplyAlpha: 'none' };\n\n\t}\n\n\tsetOptions( options ) {\n\n\t\tthis.options = options;\n\n\t\treturn this;\n\n\t}\n\n\tload( url, onLoad, onProgress, onError ) {\n\n\t\tif ( url === undefined ) url = '';\n\n\t\tif ( this.path !== undefined ) url = this.path + url;\n\n\t\turl = this.manager.resolveURL( url );\n\n\t\tconst scope = this;\n\n\t\tconst cached = Cache.get( url );\n\n\t\tif ( cached !== undefined ) {\n\n\t\t\tscope.manager.itemStart( url );\n\n\t\t\tsetTimeout( function () {\n\n\t\t\t\tif ( onLoad ) onLoad( cached );\n\n\t\t\t\tscope.manager.itemEnd( url );\n\n\t\t\t}, 0 );\n\n\t\t\treturn cached;\n\n\t\t}\n\n\t\tconst fetchOptions = {};\n\t\tfetchOptions.credentials = ( this.crossOrigin === 'anonymous' ) ? 'same-origin' : 'include';\n\t\tfetchOptions.headers = this.requestHeader;\n\n\t\tfetch( url, fetchOptions ).then( function ( res ) {\n\n\t\t\treturn res.blob();\n\n\t\t} ).then( function ( blob ) {\n\n\t\t\treturn createImageBitmap( blob, Object.assign( scope.options, { colorSpaceConversion: 'none' } ) );\n\n\t\t} ).then( function ( imageBitmap ) {\n\n\t\t\tCache.add( url, imageBitmap );\n\n\t\t\tif ( onLoad ) onLoad( imageBitmap );\n\n\t\t\tscope.manager.itemEnd( url );\n\n\t\t} ).catch( function ( e ) {\n\n\t\t\tif ( onError ) onError( e );\n\n\t\t\tscope.manager.itemError( url );\n\t\t\tscope.manager.itemEnd( url );\n\n\t\t} );\n\n\t\tscope.manager.itemStart( url );\n\n\t}\n\n}\n\nlet _context;\n\nconst AudioContext = {\n\n\tgetContext: function () {\n\n\t\tif ( _context === undefined ) {\n\n\t\t\t_context = new ( window.AudioContext || window.webkitAudioContext )();\n\n\t\t}\n\n\t\treturn _context;\n\n\t},\n\n\tsetContext: function ( value ) {\n\n\t\t_context = value;\n\n\t}\n\n};\n\nclass AudioLoader extends Loader {\n\n\tconstructor( manager ) {\n\n\t\tsuper( manager );\n\n\t}\n\n\tload( url, onLoad, onProgress, onError ) {\n\n\t\tconst scope = this;\n\n\t\tconst loader = new FileLoader( this.manager );\n\t\tloader.setResponseType( 'arraybuffer' );\n\t\tloader.setPath( this.path );\n\t\tloader.setRequestHeader( this.requestHeader );\n\t\tloader.setWithCredentials( this.withCredentials );\n\t\tloader.load( url, function ( buffer ) {\n\n\t\t\ttry {\n\n\t\t\t\t// Create a copy of the buffer. The `decodeAudioData` method\n\t\t\t\t// detaches the buffer when complete, preventing reuse.\n\t\t\t\tconst bufferCopy = buffer.slice( 0 );\n\n\t\t\t\tconst context = AudioContext.getContext();\n\t\t\t\tcontext.decodeAudioData( bufferCopy, function ( audioBuffer ) {\n\n\t\t\t\t\tonLoad( audioBuffer );\n\n\t\t\t\t} );\n\n\t\t\t} catch ( e ) {\n\n\t\t\t\tif ( onError ) {\n\n\t\t\t\t\tonError( e );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tconsole.error( e );\n\n\t\t\t\t}\n\n\t\t\t\tscope.manager.itemError( url );\n\n\t\t\t}\n\n\t\t}, onProgress, onError );\n\n\t}\n\n}\n\nclass HemisphereLightProbe extends LightProbe {\n\n\tconstructor( skyColor, groundColor, intensity = 1 ) {\n\n\t\tsuper( undefined, intensity );\n\n\t\tthis.isHemisphereLightProbe = true;\n\n\t\tconst color1 = new Color().set( skyColor );\n\t\tconst color2 = new Color().set( groundColor );\n\n\t\tconst sky = new Vector3( color1.r, color1.g, color1.b );\n\t\tconst ground = new Vector3( color2.r, color2.g, color2.b );\n\n\t\t// without extra factor of PI in the shader, should = 1 / Math.sqrt( Math.PI );\n\t\tconst c0 = Math.sqrt( Math.PI );\n\t\tconst c1 = c0 * Math.sqrt( 0.75 );\n\n\t\tthis.sh.coefficients[ 0 ].copy( sky ).add( ground ).multiplyScalar( c0 );\n\t\tthis.sh.coefficients[ 1 ].copy( sky ).sub( ground ).multiplyScalar( c1 );\n\n\t}\n\n}\n\nclass AmbientLightProbe extends LightProbe {\n\n\tconstructor( color, intensity = 1 ) {\n\n\t\tsuper( undefined, intensity );\n\n\t\tthis.isAmbientLightProbe = true;\n\n\t\tconst color1 = new Color().set( color );\n\n\t\t// without extra factor of PI in the shader, would be 2 / Math.sqrt( Math.PI );\n\t\tthis.sh.coefficients[ 0 ].set( color1.r, color1.g, color1.b ).multiplyScalar( 2 * Math.sqrt( Math.PI ) );\n\n\t}\n\n}\n\nconst _eyeRight = /*@__PURE__*/ new Matrix4();\nconst _eyeLeft = /*@__PURE__*/ new Matrix4();\nconst _projectionMatrix = /*@__PURE__*/ new Matrix4();\n\nclass StereoCamera {\n\n\tconstructor() {\n\n\t\tthis.type = 'StereoCamera';\n\n\t\tthis.aspect = 1;\n\n\t\tthis.eyeSep = 0.064;\n\n\t\tthis.cameraL = new PerspectiveCamera();\n\t\tthis.cameraL.layers.enable( 1 );\n\t\tthis.cameraL.matrixAutoUpdate = false;\n\n\t\tthis.cameraR = new PerspectiveCamera();\n\t\tthis.cameraR.layers.enable( 2 );\n\t\tthis.cameraR.matrixAutoUpdate = false;\n\n\t\tthis._cache = {\n\t\t\tfocus: null,\n\t\t\tfov: null,\n\t\t\taspect: null,\n\t\t\tnear: null,\n\t\t\tfar: null,\n\t\t\tzoom: null,\n\t\t\teyeSep: null\n\t\t};\n\n\t}\n\n\tupdate( camera ) {\n\n\t\tconst cache = this._cache;\n\n\t\tconst needsUpdate = cache.focus !== camera.focus || cache.fov !== camera.fov ||\n\t\t\tcache.aspect !== camera.aspect * this.aspect || cache.near !== camera.near ||\n\t\t\tcache.far !== camera.far || cache.zoom !== camera.zoom || cache.eyeSep !== this.eyeSep;\n\n\t\tif ( needsUpdate ) {\n\n\t\t\tcache.focus = camera.focus;\n\t\t\tcache.fov = camera.fov;\n\t\t\tcache.aspect = camera.aspect * this.aspect;\n\t\t\tcache.near = camera.near;\n\t\t\tcache.far = camera.far;\n\t\t\tcache.zoom = camera.zoom;\n\t\t\tcache.eyeSep = this.eyeSep;\n\n\t\t\t// Off-axis stereoscopic effect based on\n\t\t\t// http://paulbourke.net/stereographics/stereorender/\n\n\t\t\t_projectionMatrix.copy( camera.projectionMatrix );\n\t\t\tconst eyeSepHalf = cache.eyeSep / 2;\n\t\t\tconst eyeSepOnProjection = eyeSepHalf * cache.near / cache.focus;\n\t\t\tconst ymax = ( cache.near * Math.tan( DEG2RAD * cache.fov * 0.5 ) ) / cache.zoom;\n\t\t\tlet xmin, xmax;\n\n\t\t\t// translate xOffset\n\n\t\t\t_eyeLeft.elements[ 12 ] = - eyeSepHalf;\n\t\t\t_eyeRight.elements[ 12 ] = eyeSepHalf;\n\n\t\t\t// for left eye\n\n\t\t\txmin = - ymax * cache.aspect + eyeSepOnProjection;\n\t\t\txmax = ymax * cache.aspect + eyeSepOnProjection;\n\n\t\t\t_projectionMatrix.elements[ 0 ] = 2 * cache.near / ( xmax - xmin );\n\t\t\t_projectionMatrix.elements[ 8 ] = ( xmax + xmin ) / ( xmax - xmin );\n\n\t\t\tthis.cameraL.projectionMatrix.copy( _projectionMatrix );\n\n\t\t\t// for right eye\n\n\t\t\txmin = - ymax * cache.aspect - eyeSepOnProjection;\n\t\t\txmax = ymax * cache.aspect - eyeSepOnProjection;\n\n\t\t\t_projectionMatrix.elements[ 0 ] = 2 * cache.near / ( xmax - xmin );\n\t\t\t_projectionMatrix.elements[ 8 ] = ( xmax + xmin ) / ( xmax - xmin );\n\n\t\t\tthis.cameraR.projectionMatrix.copy( _projectionMatrix );\n\n\t\t}\n\n\t\tthis.cameraL.matrixWorld.copy( camera.matrixWorld ).multiply( _eyeLeft );\n\t\tthis.cameraR.matrixWorld.copy( camera.matrixWorld ).multiply( _eyeRight );\n\n\t}\n\n}\n\nclass Clock {\n\n\tconstructor( autoStart = true ) {\n\n\t\tthis.autoStart = autoStart;\n\n\t\tthis.startTime = 0;\n\t\tthis.oldTime = 0;\n\t\tthis.elapsedTime = 0;\n\n\t\tthis.running = false;\n\n\t}\n\n\tstart() {\n\n\t\tthis.startTime = now();\n\n\t\tthis.oldTime = this.startTime;\n\t\tthis.elapsedTime = 0;\n\t\tthis.running = true;\n\n\t}\n\n\tstop() {\n\n\t\tthis.getElapsedTime();\n\t\tthis.running = false;\n\t\tthis.autoStart = false;\n\n\t}\n\n\tgetElapsedTime() {\n\n\t\tthis.getDelta();\n\t\treturn this.elapsedTime;\n\n\t}\n\n\tgetDelta() {\n\n\t\tlet diff = 0;\n\n\t\tif ( this.autoStart && ! this.running ) {\n\n\t\t\tthis.start();\n\t\t\treturn 0;\n\n\t\t}\n\n\t\tif ( this.running ) {\n\n\t\t\tconst newTime = now();\n\n\t\t\tdiff = ( newTime - this.oldTime ) / 1000;\n\t\t\tthis.oldTime = newTime;\n\n\t\t\tthis.elapsedTime += diff;\n\n\t\t}\n\n\t\treturn diff;\n\n\t}\n\n}\n\nfunction now() {\n\n\treturn ( typeof performance === 'undefined' ? Date : performance ).now(); // see #10732\n\n}\n\nconst _position$1 = /*@__PURE__*/ new Vector3();\nconst _quaternion$1 = /*@__PURE__*/ new Quaternion();\nconst _scale$1 = /*@__PURE__*/ new Vector3();\nconst _orientation$1 = /*@__PURE__*/ new Vector3();\n\nclass AudioListener extends Object3D {\n\n\tconstructor() {\n\n\t\tsuper();\n\n\t\tthis.type = 'AudioListener';\n\n\t\tthis.context = AudioContext.getContext();\n\n\t\tthis.gain = this.context.createGain();\n\t\tthis.gain.connect( this.context.destination );\n\n\t\tthis.filter = null;\n\n\t\tthis.timeDelta = 0;\n\n\t\t// private\n\n\t\tthis._clock = new Clock();\n\n\t}\n\n\tgetInput() {\n\n\t\treturn this.gain;\n\n\t}\n\n\tremoveFilter() {\n\n\t\tif ( this.filter !== null ) {\n\n\t\t\tthis.gain.disconnect( this.filter );\n\t\t\tthis.filter.disconnect( this.context.destination );\n\t\t\tthis.gain.connect( this.context.destination );\n\t\t\tthis.filter = null;\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tgetFilter() {\n\n\t\treturn this.filter;\n\n\t}\n\n\tsetFilter( value ) {\n\n\t\tif ( this.filter !== null ) {\n\n\t\t\tthis.gain.disconnect( this.filter );\n\t\t\tthis.filter.disconnect( this.context.destination );\n\n\t\t} else {\n\n\t\t\tthis.gain.disconnect( this.context.destination );\n\n\t\t}\n\n\t\tthis.filter = value;\n\t\tthis.gain.connect( this.filter );\n\t\tthis.filter.connect( this.context.destination );\n\n\t\treturn this;\n\n\t}\n\n\tgetMasterVolume() {\n\n\t\treturn this.gain.gain.value;\n\n\t}\n\n\tsetMasterVolume( value ) {\n\n\t\tthis.gain.gain.setTargetAtTime( value, this.context.currentTime, 0.01 );\n\n\t\treturn this;\n\n\t}\n\n\tupdateMatrixWorld( force ) {\n\n\t\tsuper.updateMatrixWorld( force );\n\n\t\tconst listener = this.context.listener;\n\t\tconst up = this.up;\n\n\t\tthis.timeDelta = this._clock.getDelta();\n\n\t\tthis.matrixWorld.decompose( _position$1, _quaternion$1, _scale$1 );\n\n\t\t_orientation$1.set( 0, 0, - 1 ).applyQuaternion( _quaternion$1 );\n\n\t\tif ( listener.positionX ) {\n\n\t\t\t// code path for Chrome (see #14393)\n\n\t\t\tconst endTime = this.context.currentTime + this.timeDelta;\n\n\t\t\tlistener.positionX.linearRampToValueAtTime( _position$1.x, endTime );\n\t\t\tlistener.positionY.linearRampToValueAtTime( _position$1.y, endTime );\n\t\t\tlistener.positionZ.linearRampToValueAtTime( _position$1.z, endTime );\n\t\t\tlistener.forwardX.linearRampToValueAtTime( _orientation$1.x, endTime );\n\t\t\tlistener.forwardY.linearRampToValueAtTime( _orientation$1.y, endTime );\n\t\t\tlistener.forwardZ.linearRampToValueAtTime( _orientation$1.z, endTime );\n\t\t\tlistener.upX.linearRampToValueAtTime( up.x, endTime );\n\t\t\tlistener.upY.linearRampToValueAtTime( up.y, endTime );\n\t\t\tlistener.upZ.linearRampToValueAtTime( up.z, endTime );\n\n\t\t} else {\n\n\t\t\tlistener.setPosition( _position$1.x, _position$1.y, _position$1.z );\n\t\t\tlistener.setOrientation( _orientation$1.x, _orientation$1.y, _orientation$1.z, up.x, up.y, up.z );\n\n\t\t}\n\n\t}\n\n}\n\nclass Audio extends Object3D {\n\n\tconstructor( listener ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'Audio';\n\n\t\tthis.listener = listener;\n\t\tthis.context = listener.context;\n\n\t\tthis.gain = this.context.createGain();\n\t\tthis.gain.connect( listener.getInput() );\n\n\t\tthis.autoplay = false;\n\n\t\tthis.buffer = null;\n\t\tthis.detune = 0;\n\t\tthis.loop = false;\n\t\tthis.loopStart = 0;\n\t\tthis.loopEnd = 0;\n\t\tthis.offset = 0;\n\t\tthis.duration = undefined;\n\t\tthis.playbackRate = 1;\n\t\tthis.isPlaying = false;\n\t\tthis.hasPlaybackControl = true;\n\t\tthis.source = null;\n\t\tthis.sourceType = 'empty';\n\n\t\tthis._startedAt = 0;\n\t\tthis._progress = 0;\n\t\tthis._connected = false;\n\n\t\tthis.filters = [];\n\n\t}\n\n\tgetOutput() {\n\n\t\treturn this.gain;\n\n\t}\n\n\tsetNodeSource( audioNode ) {\n\n\t\tthis.hasPlaybackControl = false;\n\t\tthis.sourceType = 'audioNode';\n\t\tthis.source = audioNode;\n\t\tthis.connect();\n\n\t\treturn this;\n\n\t}\n\n\tsetMediaElementSource( mediaElement ) {\n\n\t\tthis.hasPlaybackControl = false;\n\t\tthis.sourceType = 'mediaNode';\n\t\tthis.source = this.context.createMediaElementSource( mediaElement );\n\t\tthis.connect();\n\n\t\treturn this;\n\n\t}\n\n\tsetMediaStreamSource( mediaStream ) {\n\n\t\tthis.hasPlaybackControl = false;\n\t\tthis.sourceType = 'mediaStreamNode';\n\t\tthis.source = this.context.createMediaStreamSource( mediaStream );\n\t\tthis.connect();\n\n\t\treturn this;\n\n\t}\n\n\tsetBuffer( audioBuffer ) {\n\n\t\tthis.buffer = audioBuffer;\n\t\tthis.sourceType = 'buffer';\n\n\t\tif ( this.autoplay ) this.play();\n\n\t\treturn this;\n\n\t}\n\n\tplay( delay = 0 ) {\n\n\t\tif ( this.isPlaying === true ) {\n\n\t\t\tconsole.warn( 'THREE.Audio: Audio is already playing.' );\n\t\t\treturn;\n\n\t\t}\n\n\t\tif ( this.hasPlaybackControl === false ) {\n\n\t\t\tconsole.warn( 'THREE.Audio: this Audio has no playback control.' );\n\t\t\treturn;\n\n\t\t}\n\n\t\tthis._startedAt = this.context.currentTime + delay;\n\n\t\tconst source = this.context.createBufferSource();\n\t\tsource.buffer = this.buffer;\n\t\tsource.loop = this.loop;\n\t\tsource.loopStart = this.loopStart;\n\t\tsource.loopEnd = this.loopEnd;\n\t\tsource.onended = this.onEnded.bind( this );\n\t\tsource.start( this._startedAt, this._progress + this.offset, this.duration );\n\n\t\tthis.isPlaying = true;\n\n\t\tthis.source = source;\n\n\t\tthis.setDetune( this.detune );\n\t\tthis.setPlaybackRate( this.playbackRate );\n\n\t\treturn this.connect();\n\n\t}\n\n\tpause() {\n\n\t\tif ( this.hasPlaybackControl === false ) {\n\n\t\t\tconsole.warn( 'THREE.Audio: this Audio has no playback control.' );\n\t\t\treturn;\n\n\t\t}\n\n\t\tif ( this.isPlaying === true ) {\n\n\t\t\t// update current progress\n\n\t\t\tthis._progress += Math.max( this.context.currentTime - this._startedAt, 0 ) * this.playbackRate;\n\n\t\t\tif ( this.loop === true ) {\n\n\t\t\t\t// ensure _progress does not exceed duration with looped audios\n\n\t\t\t\tthis._progress = this._progress % ( this.duration || this.buffer.duration );\n\n\t\t\t}\n\n\t\t\tthis.source.stop();\n\t\t\tthis.source.onended = null;\n\n\t\t\tthis.isPlaying = false;\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tstop() {\n\n\t\tif ( this.hasPlaybackControl === false ) {\n\n\t\t\tconsole.warn( 'THREE.Audio: this Audio has no playback control.' );\n\t\t\treturn;\n\n\t\t}\n\n\t\tthis._progress = 0;\n\n\t\tthis.source.stop();\n\t\tthis.source.onended = null;\n\t\tthis.isPlaying = false;\n\n\t\treturn this;\n\n\t}\n\n\tconnect() {\n\n\t\tif ( this.filters.length > 0 ) {\n\n\t\t\tthis.source.connect( this.filters[ 0 ] );\n\n\t\t\tfor ( let i = 1, l = this.filters.length; i < l; i ++ ) {\n\n\t\t\t\tthis.filters[ i - 1 ].connect( this.filters[ i ] );\n\n\t\t\t}\n\n\t\t\tthis.filters[ this.filters.length - 1 ].connect( this.getOutput() );\n\n\t\t} else {\n\n\t\t\tthis.source.connect( this.getOutput() );\n\n\t\t}\n\n\t\tthis._connected = true;\n\n\t\treturn this;\n\n\t}\n\n\tdisconnect() {\n\n\t\tif ( this.filters.length > 0 ) {\n\n\t\t\tthis.source.disconnect( this.filters[ 0 ] );\n\n\t\t\tfor ( let i = 1, l = this.filters.length; i < l; i ++ ) {\n\n\t\t\t\tthis.filters[ i - 1 ].disconnect( this.filters[ i ] );\n\n\t\t\t}\n\n\t\t\tthis.filters[ this.filters.length - 1 ].disconnect( this.getOutput() );\n\n\t\t} else {\n\n\t\t\tthis.source.disconnect( this.getOutput() );\n\n\t\t}\n\n\t\tthis._connected = false;\n\n\t\treturn this;\n\n\t}\n\n\tgetFilters() {\n\n\t\treturn this.filters;\n\n\t}\n\n\tsetFilters( value ) {\n\n\t\tif ( ! value ) value = [];\n\n\t\tif ( this._connected === true ) {\n\n\t\t\tthis.disconnect();\n\t\t\tthis.filters = value.slice();\n\t\t\tthis.connect();\n\n\t\t} else {\n\n\t\t\tthis.filters = value.slice();\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tsetDetune( value ) {\n\n\t\tthis.detune = value;\n\n\t\tif ( this.source.detune === undefined ) return; // only set detune when available\n\n\t\tif ( this.isPlaying === true ) {\n\n\t\t\tthis.source.detune.setTargetAtTime( this.detune, this.context.currentTime, 0.01 );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tgetDetune() {\n\n\t\treturn this.detune;\n\n\t}\n\n\tgetFilter() {\n\n\t\treturn this.getFilters()[ 0 ];\n\n\t}\n\n\tsetFilter( filter ) {\n\n\t\treturn this.setFilters( filter ? [ filter ] : [] );\n\n\t}\n\n\tsetPlaybackRate( value ) {\n\n\t\tif ( this.hasPlaybackControl === false ) {\n\n\t\t\tconsole.warn( 'THREE.Audio: this Audio has no playback control.' );\n\t\t\treturn;\n\n\t\t}\n\n\t\tthis.playbackRate = value;\n\n\t\tif ( this.isPlaying === true ) {\n\n\t\t\tthis.source.playbackRate.setTargetAtTime( this.playbackRate, this.context.currentTime, 0.01 );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tgetPlaybackRate() {\n\n\t\treturn this.playbackRate;\n\n\t}\n\n\tonEnded() {\n\n\t\tthis.isPlaying = false;\n\n\t}\n\n\tgetLoop() {\n\n\t\tif ( this.hasPlaybackControl === false ) {\n\n\t\t\tconsole.warn( 'THREE.Audio: this Audio has no playback control.' );\n\t\t\treturn false;\n\n\t\t}\n\n\t\treturn this.loop;\n\n\t}\n\n\tsetLoop( value ) {\n\n\t\tif ( this.hasPlaybackControl === false ) {\n\n\t\t\tconsole.warn( 'THREE.Audio: this Audio has no playback control.' );\n\t\t\treturn;\n\n\t\t}\n\n\t\tthis.loop = value;\n\n\t\tif ( this.isPlaying === true ) {\n\n\t\t\tthis.source.loop = this.loop;\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tsetLoopStart( value ) {\n\n\t\tthis.loopStart = value;\n\n\t\treturn this;\n\n\t}\n\n\tsetLoopEnd( value ) {\n\n\t\tthis.loopEnd = value;\n\n\t\treturn this;\n\n\t}\n\n\tgetVolume() {\n\n\t\treturn this.gain.gain.value;\n\n\t}\n\n\tsetVolume( value ) {\n\n\t\tthis.gain.gain.setTargetAtTime( value, this.context.currentTime, 0.01 );\n\n\t\treturn this;\n\n\t}\n\n}\n\nconst _position = /*@__PURE__*/ new Vector3();\nconst _quaternion = /*@__PURE__*/ new Quaternion();\nconst _scale = /*@__PURE__*/ new Vector3();\nconst _orientation = /*@__PURE__*/ new Vector3();\n\nclass PositionalAudio extends Audio {\n\n\tconstructor( listener ) {\n\n\t\tsuper( listener );\n\n\t\tthis.panner = this.context.createPanner();\n\t\tthis.panner.panningModel = 'HRTF';\n\t\tthis.panner.connect( this.gain );\n\n\t}\n\n\tdisconnect() {\n\n\t\tsuper.disconnect();\n\n\t\tthis.panner.disconnect( this.gain );\n\n\t}\n\n\tgetOutput() {\n\n\t\treturn this.panner;\n\n\t}\n\n\tgetRefDistance() {\n\n\t\treturn this.panner.refDistance;\n\n\t}\n\n\tsetRefDistance( value ) {\n\n\t\tthis.panner.refDistance = value;\n\n\t\treturn this;\n\n\t}\n\n\tgetRolloffFactor() {\n\n\t\treturn this.panner.rolloffFactor;\n\n\t}\n\n\tsetRolloffFactor( value ) {\n\n\t\tthis.panner.rolloffFactor = value;\n\n\t\treturn this;\n\n\t}\n\n\tgetDistanceModel() {\n\n\t\treturn this.panner.distanceModel;\n\n\t}\n\n\tsetDistanceModel( value ) {\n\n\t\tthis.panner.distanceModel = value;\n\n\t\treturn this;\n\n\t}\n\n\tgetMaxDistance() {\n\n\t\treturn this.panner.maxDistance;\n\n\t}\n\n\tsetMaxDistance( value ) {\n\n\t\tthis.panner.maxDistance = value;\n\n\t\treturn this;\n\n\t}\n\n\tsetDirectionalCone( coneInnerAngle, coneOuterAngle, coneOuterGain ) {\n\n\t\tthis.panner.coneInnerAngle = coneInnerAngle;\n\t\tthis.panner.coneOuterAngle = coneOuterAngle;\n\t\tthis.panner.coneOuterGain = coneOuterGain;\n\n\t\treturn this;\n\n\t}\n\n\tupdateMatrixWorld( force ) {\n\n\t\tsuper.updateMatrixWorld( force );\n\n\t\tif ( this.hasPlaybackControl === true && this.isPlaying === false ) return;\n\n\t\tthis.matrixWorld.decompose( _position, _quaternion, _scale );\n\n\t\t_orientation.set( 0, 0, 1 ).applyQuaternion( _quaternion );\n\n\t\tconst panner = this.panner;\n\n\t\tif ( panner.positionX ) {\n\n\t\t\t// code path for Chrome and Firefox (see #14393)\n\n\t\t\tconst endTime = this.context.currentTime + this.listener.timeDelta;\n\n\t\t\tpanner.positionX.linearRampToValueAtTime( _position.x, endTime );\n\t\t\tpanner.positionY.linearRampToValueAtTime( _position.y, endTime );\n\t\t\tpanner.positionZ.linearRampToValueAtTime( _position.z, endTime );\n\t\t\tpanner.orientationX.linearRampToValueAtTime( _orientation.x, endTime );\n\t\t\tpanner.orientationY.linearRampToValueAtTime( _orientation.y, endTime );\n\t\t\tpanner.orientationZ.linearRampToValueAtTime( _orientation.z, endTime );\n\n\t\t} else {\n\n\t\t\tpanner.setPosition( _position.x, _position.y, _position.z );\n\t\t\tpanner.setOrientation( _orientation.x, _orientation.y, _orientation.z );\n\n\t\t}\n\n\t}\n\n}\n\nclass AudioAnalyser {\n\n\tconstructor( audio, fftSize = 2048 ) {\n\n\t\tthis.analyser = audio.context.createAnalyser();\n\t\tthis.analyser.fftSize = fftSize;\n\n\t\tthis.data = new Uint8Array( this.analyser.frequencyBinCount );\n\n\t\taudio.getOutput().connect( this.analyser );\n\n\t}\n\n\n\tgetFrequencyData() {\n\n\t\tthis.analyser.getByteFrequencyData( this.data );\n\n\t\treturn this.data;\n\n\t}\n\n\tgetAverageFrequency() {\n\n\t\tlet value = 0;\n\t\tconst data = this.getFrequencyData();\n\n\t\tfor ( let i = 0; i < data.length; i ++ ) {\n\n\t\t\tvalue += data[ i ];\n\n\t\t}\n\n\t\treturn value / data.length;\n\n\t}\n\n}\n\nclass PropertyMixer {\n\n\tconstructor( binding, typeName, valueSize ) {\n\n\t\tthis.binding = binding;\n\t\tthis.valueSize = valueSize;\n\n\t\tlet mixFunction,\n\t\t\tmixFunctionAdditive,\n\t\t\tsetIdentity;\n\n\t\t// buffer layout: [ incoming | accu0 | accu1 | orig | addAccu | (optional work) ]\n\t\t//\n\t\t// interpolators can use .buffer as their .result\n\t\t// the data then goes to 'incoming'\n\t\t//\n\t\t// 'accu0' and 'accu1' are used frame-interleaved for\n\t\t// the cumulative result and are compared to detect\n\t\t// changes\n\t\t//\n\t\t// 'orig' stores the original state of the property\n\t\t//\n\t\t// 'add' is used for additive cumulative results\n\t\t//\n\t\t// 'work' is optional and is only present for quaternion types. It is used\n\t\t// to store intermediate quaternion multiplication results\n\n\t\tswitch ( typeName ) {\n\n\t\t\tcase 'quaternion':\n\t\t\t\tmixFunction = this._slerp;\n\t\t\t\tmixFunctionAdditive = this._slerpAdditive;\n\t\t\t\tsetIdentity = this._setAdditiveIdentityQuaternion;\n\n\t\t\t\tthis.buffer = new Float64Array( valueSize * 6 );\n\t\t\t\tthis._workIndex = 5;\n\t\t\t\tbreak;\n\n\t\t\tcase 'string':\n\t\t\tcase 'bool':\n\t\t\t\tmixFunction = this._select;\n\n\t\t\t\t// Use the regular mix function and for additive on these types,\n\t\t\t\t// additive is not relevant for non-numeric types\n\t\t\t\tmixFunctionAdditive = this._select;\n\n\t\t\t\tsetIdentity = this._setAdditiveIdentityOther;\n\n\t\t\t\tthis.buffer = new Array( valueSize * 5 );\n\t\t\t\tbreak;\n\n\t\t\tdefault:\n\t\t\t\tmixFunction = this._lerp;\n\t\t\t\tmixFunctionAdditive = this._lerpAdditive;\n\t\t\t\tsetIdentity = this._setAdditiveIdentityNumeric;\n\n\t\t\t\tthis.buffer = new Float64Array( valueSize * 5 );\n\n\t\t}\n\n\t\tthis._mixBufferRegion = mixFunction;\n\t\tthis._mixBufferRegionAdditive = mixFunctionAdditive;\n\t\tthis._setIdentity = setIdentity;\n\t\tthis._origIndex = 3;\n\t\tthis._addIndex = 4;\n\n\t\tthis.cumulativeWeight = 0;\n\t\tthis.cumulativeWeightAdditive = 0;\n\n\t\tthis.useCount = 0;\n\t\tthis.referenceCount = 0;\n\n\t}\n\n\t// accumulate data in the 'incoming' region into 'accu'\n\taccumulate( accuIndex, weight ) {\n\n\t\t// note: happily accumulating nothing when weight = 0, the caller knows\n\t\t// the weight and shouldn't have made the call in the first place\n\n\t\tconst buffer = this.buffer,\n\t\t\tstride = this.valueSize,\n\t\t\toffset = accuIndex * stride + stride;\n\n\t\tlet currentWeight = this.cumulativeWeight;\n\n\t\tif ( currentWeight === 0 ) {\n\n\t\t\t// accuN := incoming * weight\n\n\t\t\tfor ( let i = 0; i !== stride; ++ i ) {\n\n\t\t\t\tbuffer[ offset + i ] = buffer[ i ];\n\n\t\t\t}\n\n\t\t\tcurrentWeight = weight;\n\n\t\t} else {\n\n\t\t\t// accuN := accuN + incoming * weight\n\n\t\t\tcurrentWeight += weight;\n\t\t\tconst mix = weight / currentWeight;\n\t\t\tthis._mixBufferRegion( buffer, offset, 0, mix, stride );\n\n\t\t}\n\n\t\tthis.cumulativeWeight = currentWeight;\n\n\t}\n\n\t// accumulate data in the 'incoming' region into 'add'\n\taccumulateAdditive( weight ) {\n\n\t\tconst buffer = this.buffer,\n\t\t\tstride = this.valueSize,\n\t\t\toffset = stride * this._addIndex;\n\n\t\tif ( this.cumulativeWeightAdditive === 0 ) {\n\n\t\t\t// add = identity\n\n\t\t\tthis._setIdentity();\n\n\t\t}\n\n\t\t// add := add + incoming * weight\n\n\t\tthis._mixBufferRegionAdditive( buffer, offset, 0, weight, stride );\n\t\tthis.cumulativeWeightAdditive += weight;\n\n\t}\n\n\t// apply the state of 'accu' to the binding when accus differ\n\tapply( accuIndex ) {\n\n\t\tconst stride = this.valueSize,\n\t\t\tbuffer = this.buffer,\n\t\t\toffset = accuIndex * stride + stride,\n\n\t\t\tweight = this.cumulativeWeight,\n\t\t\tweightAdditive = this.cumulativeWeightAdditive,\n\n\t\t\tbinding = this.binding;\n\n\t\tthis.cumulativeWeight = 0;\n\t\tthis.cumulativeWeightAdditive = 0;\n\n\t\tif ( weight < 1 ) {\n\n\t\t\t// accuN := accuN + original * ( 1 - cumulativeWeight )\n\n\t\t\tconst originalValueOffset = stride * this._origIndex;\n\n\t\t\tthis._mixBufferRegion(\n\t\t\t\tbuffer, offset, originalValueOffset, 1 - weight, stride );\n\n\t\t}\n\n\t\tif ( weightAdditive > 0 ) {\n\n\t\t\t// accuN := accuN + additive accuN\n\n\t\t\tthis._mixBufferRegionAdditive( buffer, offset, this._addIndex * stride, 1, stride );\n\n\t\t}\n\n\t\tfor ( let i = stride, e = stride + stride; i !== e; ++ i ) {\n\n\t\t\tif ( buffer[ i ] !== buffer[ i + stride ] ) {\n\n\t\t\t\t// value has changed -> update scene graph\n\n\t\t\t\tbinding.setValue( buffer, offset );\n\t\t\t\tbreak;\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\t// remember the state of the bound property and copy it to both accus\n\tsaveOriginalState() {\n\n\t\tconst binding = this.binding;\n\n\t\tconst buffer = this.buffer,\n\t\t\tstride = this.valueSize,\n\n\t\t\toriginalValueOffset = stride * this._origIndex;\n\n\t\tbinding.getValue( buffer, originalValueOffset );\n\n\t\t// accu[0..1] := orig -- initially detect changes against the original\n\t\tfor ( let i = stride, e = originalValueOffset; i !== e; ++ i ) {\n\n\t\t\tbuffer[ i ] = buffer[ originalValueOffset + ( i % stride ) ];\n\n\t\t}\n\n\t\t// Add to identity for additive\n\t\tthis._setIdentity();\n\n\t\tthis.cumulativeWeight = 0;\n\t\tthis.cumulativeWeightAdditive = 0;\n\n\t}\n\n\t// apply the state previously taken via 'saveOriginalState' to the binding\n\trestoreOriginalState() {\n\n\t\tconst originalValueOffset = this.valueSize * 3;\n\t\tthis.binding.setValue( this.buffer, originalValueOffset );\n\n\t}\n\n\t_setAdditiveIdentityNumeric() {\n\n\t\tconst startIndex = this._addIndex * this.valueSize;\n\t\tconst endIndex = startIndex + this.valueSize;\n\n\t\tfor ( let i = startIndex; i < endIndex; i ++ ) {\n\n\t\t\tthis.buffer[ i ] = 0;\n\n\t\t}\n\n\t}\n\n\t_setAdditiveIdentityQuaternion() {\n\n\t\tthis._setAdditiveIdentityNumeric();\n\t\tthis.buffer[ this._addIndex * this.valueSize + 3 ] = 1;\n\n\t}\n\n\t_setAdditiveIdentityOther() {\n\n\t\tconst startIndex = this._origIndex * this.valueSize;\n\t\tconst targetIndex = this._addIndex * this.valueSize;\n\n\t\tfor ( let i = 0; i < this.valueSize; i ++ ) {\n\n\t\t\tthis.buffer[ targetIndex + i ] = this.buffer[ startIndex + i ];\n\n\t\t}\n\n\t}\n\n\n\t// mix functions\n\n\t_select( buffer, dstOffset, srcOffset, t, stride ) {\n\n\t\tif ( t >= 0.5 ) {\n\n\t\t\tfor ( let i = 0; i !== stride; ++ i ) {\n\n\t\t\t\tbuffer[ dstOffset + i ] = buffer[ srcOffset + i ];\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\t_slerp( buffer, dstOffset, srcOffset, t ) {\n\n\t\tQuaternion.slerpFlat( buffer, dstOffset, buffer, dstOffset, buffer, srcOffset, t );\n\n\t}\n\n\t_slerpAdditive( buffer, dstOffset, srcOffset, t, stride ) {\n\n\t\tconst workOffset = this._workIndex * stride;\n\n\t\t// Store result in intermediate buffer offset\n\t\tQuaternion.multiplyQuaternionsFlat( buffer, workOffset, buffer, dstOffset, buffer, srcOffset );\n\n\t\t// Slerp to the intermediate result\n\t\tQuaternion.slerpFlat( buffer, dstOffset, buffer, dstOffset, buffer, workOffset, t );\n\n\t}\n\n\t_lerp( buffer, dstOffset, srcOffset, t, stride ) {\n\n\t\tconst s = 1 - t;\n\n\t\tfor ( let i = 0; i !== stride; ++ i ) {\n\n\t\t\tconst j = dstOffset + i;\n\n\t\t\tbuffer[ j ] = buffer[ j ] * s + buffer[ srcOffset + i ] * t;\n\n\t\t}\n\n\t}\n\n\t_lerpAdditive( buffer, dstOffset, srcOffset, t, stride ) {\n\n\t\tfor ( let i = 0; i !== stride; ++ i ) {\n\n\t\t\tconst j = dstOffset + i;\n\n\t\t\tbuffer[ j ] = buffer[ j ] + buffer[ srcOffset + i ] * t;\n\n\t\t}\n\n\t}\n\n}\n\n// Characters [].:/ are reserved for track binding syntax.\nconst _RESERVED_CHARS_RE = '\\\\[\\\\]\\\\.:\\\\/';\nconst _reservedRe = new RegExp( '[' + _RESERVED_CHARS_RE + ']', 'g' );\n\n// Attempts to allow node names from any language. ES5's `\\w` regexp matches\n// only latin characters, and the unicode \\p{L} is not yet supported. So\n// instead, we exclude reserved characters and match everything else.\nconst _wordChar = '[^' + _RESERVED_CHARS_RE + ']';\nconst _wordCharOrDot = '[^' + _RESERVED_CHARS_RE.replace( '\\\\.', '' ) + ']';\n\n// Parent directories, delimited by '/' or ':'. Currently unused, but must\n// be matched to parse the rest of the track name.\nconst _directoryRe = /((?:WC+[\\/:])*)/.source.replace( 'WC', _wordChar );\n\n// Target node. May contain word characters (a-zA-Z0-9_) and '.' or '-'.\nconst _nodeRe = /(WCOD+)?/.source.replace( 'WCOD', _wordCharOrDot );\n\n// Object on target node, and accessor. May not contain reserved\n// characters. Accessor may contain any character except closing bracket.\nconst _objectRe = /(?:\\.(WC+)(?:\\[(.+)\\])?)?/.source.replace( 'WC', _wordChar );\n\n// Property and accessor. May not contain reserved characters. Accessor may\n// contain any non-bracket characters.\nconst _propertyRe = /\\.(WC+)(?:\\[(.+)\\])?/.source.replace( 'WC', _wordChar );\n\nconst _trackRe = new RegExp( ''\n\t+ '^'\n\t+ _directoryRe\n\t+ _nodeRe\n\t+ _objectRe\n\t+ _propertyRe\n\t+ '$'\n);\n\nconst _supportedObjectNames = [ 'material', 'materials', 'bones' ];\n\nclass Composite {\n\n\tconstructor( targetGroup, path, optionalParsedPath ) {\n\n\t\tconst parsedPath = optionalParsedPath || PropertyBinding.parseTrackName( path );\n\n\t\tthis._targetGroup = targetGroup;\n\t\tthis._bindings = targetGroup.subscribe_( path, parsedPath );\n\n\t}\n\n\tgetValue( array, offset ) {\n\n\t\tthis.bind(); // bind all binding\n\n\t\tconst firstValidIndex = this._targetGroup.nCachedObjects_,\n\t\t\tbinding = this._bindings[ firstValidIndex ];\n\n\t\t// and only call .getValue on the first\n\t\tif ( binding !== undefined ) binding.getValue( array, offset );\n\n\t}\n\n\tsetValue( array, offset ) {\n\n\t\tconst bindings = this._bindings;\n\n\t\tfor ( let i = this._targetGroup.nCachedObjects_, n = bindings.length; i !== n; ++ i ) {\n\n\t\t\tbindings[ i ].setValue( array, offset );\n\n\t\t}\n\n\t}\n\n\tbind() {\n\n\t\tconst bindings = this._bindings;\n\n\t\tfor ( let i = this._targetGroup.nCachedObjects_, n = bindings.length; i !== n; ++ i ) {\n\n\t\t\tbindings[ i ].bind();\n\n\t\t}\n\n\t}\n\n\tunbind() {\n\n\t\tconst bindings = this._bindings;\n\n\t\tfor ( let i = this._targetGroup.nCachedObjects_, n = bindings.length; i !== n; ++ i ) {\n\n\t\t\tbindings[ i ].unbind();\n\n\t\t}\n\n\t}\n\n}\n\n// Note: This class uses a State pattern on a per-method basis:\n// 'bind' sets 'this.getValue' / 'setValue' and shadows the\n// prototype version of these methods with one that represents\n// the bound state. When the property is not found, the methods\n// become no-ops.\nclass PropertyBinding {\n\n\tconstructor( rootNode, path, parsedPath ) {\n\n\t\tthis.path = path;\n\t\tthis.parsedPath = parsedPath || PropertyBinding.parseTrackName( path );\n\n\t\tthis.node = PropertyBinding.findNode( rootNode, this.parsedPath.nodeName ) || rootNode;\n\n\t\tthis.rootNode = rootNode;\n\n\t\t// initial state of these methods that calls 'bind'\n\t\tthis.getValue = this._getValue_unbound;\n\t\tthis.setValue = this._setValue_unbound;\n\n\t}\n\n\n\tstatic create( root, path, parsedPath ) {\n\n\t\tif ( ! ( root && root.isAnimationObjectGroup ) ) {\n\n\t\t\treturn new PropertyBinding( root, path, parsedPath );\n\n\t\t} else {\n\n\t\t\treturn new PropertyBinding.Composite( root, path, parsedPath );\n\n\t\t}\n\n\t}\n\n\t/**\n\t * Replaces spaces with underscores and removes unsupported characters from\n\t * node names, to ensure compatibility with parseTrackName().\n\t *\n\t * @param {string} name Node name to be sanitized.\n\t * @return {string}\n\t */\n\tstatic sanitizeNodeName( name ) {\n\n\t\treturn name.replace( /\\s/g, '_' ).replace( _reservedRe, '' );\n\n\t}\n\n\tstatic parseTrackName( trackName ) {\n\n\t\tconst matches = _trackRe.exec( trackName );\n\n\t\tif ( matches === null ) {\n\n\t\t\tthrow new Error( 'PropertyBinding: Cannot parse trackName: ' + trackName );\n\n\t\t}\n\n\t\tconst results = {\n\t\t\t// directoryName: matches[ 1 ], // (tschw) currently unused\n\t\t\tnodeName: matches[ 2 ],\n\t\t\tobjectName: matches[ 3 ],\n\t\t\tobjectIndex: matches[ 4 ],\n\t\t\tpropertyName: matches[ 5 ], // required\n\t\t\tpropertyIndex: matches[ 6 ]\n\t\t};\n\n\t\tconst lastDot = results.nodeName && results.nodeName.lastIndexOf( '.' );\n\n\t\tif ( lastDot !== undefined && lastDot !== - 1 ) {\n\n\t\t\tconst objectName = results.nodeName.substring( lastDot + 1 );\n\n\t\t\t// Object names must be checked against an allowlist. Otherwise, there\n\t\t\t// is no way to parse 'foo.bar.baz': 'baz' must be a property, but\n\t\t\t// 'bar' could be the objectName, or part of a nodeName (which can\n\t\t\t// include '.' characters).\n\t\t\tif ( _supportedObjectNames.indexOf( objectName ) !== - 1 ) {\n\n\t\t\t\tresults.nodeName = results.nodeName.substring( 0, lastDot );\n\t\t\t\tresults.objectName = objectName;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( results.propertyName === null || results.propertyName.length === 0 ) {\n\n\t\t\tthrow new Error( 'PropertyBinding: can not parse propertyName from trackName: ' + trackName );\n\n\t\t}\n\n\t\treturn results;\n\n\t}\n\n\tstatic findNode( root, nodeName ) {\n\n\t\tif ( nodeName === undefined || nodeName === '' || nodeName === '.' || nodeName === - 1 || nodeName === root.name || nodeName === root.uuid ) {\n\n\t\t\treturn root;\n\n\t\t}\n\n\t\t// search into skeleton bones.\n\t\tif ( root.skeleton ) {\n\n\t\t\tconst bone = root.skeleton.getBoneByName( nodeName );\n\n\t\t\tif ( bone !== undefined ) {\n\n\t\t\t\treturn bone;\n\n\t\t\t}\n\n\t\t}\n\n\t\t// search into node subtree.\n\t\tif ( root.children ) {\n\n\t\t\tconst searchNodeSubtree = function ( children ) {\n\n\t\t\t\tfor ( let i = 0; i < children.length; i ++ ) {\n\n\t\t\t\t\tconst childNode = children[ i ];\n\n\t\t\t\t\tif ( childNode.name === nodeName || childNode.uuid === nodeName ) {\n\n\t\t\t\t\t\treturn childNode;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tconst result = searchNodeSubtree( childNode.children );\n\n\t\t\t\t\tif ( result ) return result;\n\n\t\t\t\t}\n\n\t\t\t\treturn null;\n\n\t\t\t};\n\n\t\t\tconst subTreeNode = searchNodeSubtree( root.children );\n\n\t\t\tif ( subTreeNode ) {\n\n\t\t\t\treturn subTreeNode;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn null;\n\n\t}\n\n\t// these are used to \"bind\" a nonexistent property\n\t_getValue_unavailable() {}\n\t_setValue_unavailable() {}\n\n\t// Getters\n\n\t_getValue_direct( buffer, offset ) {\n\n\t\tbuffer[ offset ] = this.targetObject[ this.propertyName ];\n\n\t}\n\n\t_getValue_array( buffer, offset ) {\n\n\t\tconst source = this.resolvedProperty;\n\n\t\tfor ( let i = 0, n = source.length; i !== n; ++ i ) {\n\n\t\t\tbuffer[ offset ++ ] = source[ i ];\n\n\t\t}\n\n\t}\n\n\t_getValue_arrayElement( buffer, offset ) {\n\n\t\tbuffer[ offset ] = this.resolvedProperty[ this.propertyIndex ];\n\n\t}\n\n\t_getValue_toArray( buffer, offset ) {\n\n\t\tthis.resolvedProperty.toArray( buffer, offset );\n\n\t}\n\n\t// Direct\n\n\t_setValue_direct( buffer, offset ) {\n\n\t\tthis.targetObject[ this.propertyName ] = buffer[ offset ];\n\n\t}\n\n\t_setValue_direct_setNeedsUpdate( buffer, offset ) {\n\n\t\tthis.targetObject[ this.propertyName ] = buffer[ offset ];\n\t\tthis.targetObject.needsUpdate = true;\n\n\t}\n\n\t_setValue_direct_setMatrixWorldNeedsUpdate( buffer, offset ) {\n\n\t\tthis.targetObject[ this.propertyName ] = buffer[ offset ];\n\t\tthis.targetObject.matrixWorldNeedsUpdate = true;\n\n\t}\n\n\t// EntireArray\n\n\t_setValue_array( buffer, offset ) {\n\n\t\tconst dest = this.resolvedProperty;\n\n\t\tfor ( let i = 0, n = dest.length; i !== n; ++ i ) {\n\n\t\t\tdest[ i ] = buffer[ offset ++ ];\n\n\t\t}\n\n\t}\n\n\t_setValue_array_setNeedsUpdate( buffer, offset ) {\n\n\t\tconst dest = this.resolvedProperty;\n\n\t\tfor ( let i = 0, n = dest.length; i !== n; ++ i ) {\n\n\t\t\tdest[ i ] = buffer[ offset ++ ];\n\n\t\t}\n\n\t\tthis.targetObject.needsUpdate = true;\n\n\t}\n\n\t_setValue_array_setMatrixWorldNeedsUpdate( buffer, offset ) {\n\n\t\tconst dest = this.resolvedProperty;\n\n\t\tfor ( let i = 0, n = dest.length; i !== n; ++ i ) {\n\n\t\t\tdest[ i ] = buffer[ offset ++ ];\n\n\t\t}\n\n\t\tthis.targetObject.matrixWorldNeedsUpdate = true;\n\n\t}\n\n\t// ArrayElement\n\n\t_setValue_arrayElement( buffer, offset ) {\n\n\t\tthis.resolvedProperty[ this.propertyIndex ] = buffer[ offset ];\n\n\t}\n\n\t_setValue_arrayElement_setNeedsUpdate( buffer, offset ) {\n\n\t\tthis.resolvedProperty[ this.propertyIndex ] = buffer[ offset ];\n\t\tthis.targetObject.needsUpdate = true;\n\n\t}\n\n\t_setValue_arrayElement_setMatrixWorldNeedsUpdate( buffer, offset ) {\n\n\t\tthis.resolvedProperty[ this.propertyIndex ] = buffer[ offset ];\n\t\tthis.targetObject.matrixWorldNeedsUpdate = true;\n\n\t}\n\n\t// HasToFromArray\n\n\t_setValue_fromArray( buffer, offset ) {\n\n\t\tthis.resolvedProperty.fromArray( buffer, offset );\n\n\t}\n\n\t_setValue_fromArray_setNeedsUpdate( buffer, offset ) {\n\n\t\tthis.resolvedProperty.fromArray( buffer, offset );\n\t\tthis.targetObject.needsUpdate = true;\n\n\t}\n\n\t_setValue_fromArray_setMatrixWorldNeedsUpdate( buffer, offset ) {\n\n\t\tthis.resolvedProperty.fromArray( buffer, offset );\n\t\tthis.targetObject.matrixWorldNeedsUpdate = true;\n\n\t}\n\n\t_getValue_unbound( targetArray, offset ) {\n\n\t\tthis.bind();\n\t\tthis.getValue( targetArray, offset );\n\n\t}\n\n\t_setValue_unbound( sourceArray, offset ) {\n\n\t\tthis.bind();\n\t\tthis.setValue( sourceArray, offset );\n\n\t}\n\n\t// create getter / setter pair for a property in the scene graph\n\tbind() {\n\n\t\tlet targetObject = this.node;\n\t\tconst parsedPath = this.parsedPath;\n\n\t\tconst objectName = parsedPath.objectName;\n\t\tconst propertyName = parsedPath.propertyName;\n\t\tlet propertyIndex = parsedPath.propertyIndex;\n\n\t\tif ( ! targetObject ) {\n\n\t\t\ttargetObject = PropertyBinding.findNode( this.rootNode, parsedPath.nodeName ) || this.rootNode;\n\n\t\t\tthis.node = targetObject;\n\n\t\t}\n\n\t\t// set fail state so we can just 'return' on error\n\t\tthis.getValue = this._getValue_unavailable;\n\t\tthis.setValue = this._setValue_unavailable;\n\n\t\t// ensure there is a value node\n\t\tif ( ! targetObject ) {\n\n\t\t\tconsole.error( 'THREE.PropertyBinding: Trying to update node for track: ' + this.path + ' but it wasn\\'t found.' );\n\t\t\treturn;\n\n\t\t}\n\n\t\tif ( objectName ) {\n\n\t\t\tlet objectIndex = parsedPath.objectIndex;\n\n\t\t\t// special cases were we need to reach deeper into the hierarchy to get the face materials....\n\t\t\tswitch ( objectName ) {\n\n\t\t\t\tcase 'materials':\n\n\t\t\t\t\tif ( ! targetObject.material ) {\n\n\t\t\t\t\t\tconsole.error( 'THREE.PropertyBinding: Can not bind to material as node does not have a material.', this );\n\t\t\t\t\t\treturn;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( ! targetObject.material.materials ) {\n\n\t\t\t\t\t\tconsole.error( 'THREE.PropertyBinding: Can not bind to material.materials as node.material does not have a materials array.', this );\n\t\t\t\t\t\treturn;\n\n\t\t\t\t\t}\n\n\t\t\t\t\ttargetObject = targetObject.material.materials;\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'bones':\n\n\t\t\t\t\tif ( ! targetObject.skeleton ) {\n\n\t\t\t\t\t\tconsole.error( 'THREE.PropertyBinding: Can not bind to bones as node does not have a skeleton.', this );\n\t\t\t\t\t\treturn;\n\n\t\t\t\t\t}\n\n\t\t\t\t\t// potential future optimization: skip this if propertyIndex is already an integer\n\t\t\t\t\t// and convert the integer string to a true integer.\n\n\t\t\t\t\ttargetObject = targetObject.skeleton.bones;\n\n\t\t\t\t\t// support resolving morphTarget names into indices.\n\t\t\t\t\tfor ( let i = 0; i < targetObject.length; i ++ ) {\n\n\t\t\t\t\t\tif ( targetObject[ i ].name === objectIndex ) {\n\n\t\t\t\t\t\t\tobjectIndex = i;\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tdefault:\n\n\t\t\t\t\tif ( targetObject[ objectName ] === undefined ) {\n\n\t\t\t\t\t\tconsole.error( 'THREE.PropertyBinding: Can not bind to objectName of node undefined.', this );\n\t\t\t\t\t\treturn;\n\n\t\t\t\t\t}\n\n\t\t\t\t\ttargetObject = targetObject[ objectName ];\n\n\t\t\t}\n\n\n\t\t\tif ( objectIndex !== undefined ) {\n\n\t\t\t\tif ( targetObject[ objectIndex ] === undefined ) {\n\n\t\t\t\t\tconsole.error( 'THREE.PropertyBinding: Trying to bind to objectIndex of objectName, but is undefined.', this, targetObject );\n\t\t\t\t\treturn;\n\n\t\t\t\t}\n\n\t\t\t\ttargetObject = targetObject[ objectIndex ];\n\n\t\t\t}\n\n\t\t}\n\n\t\t// resolve property\n\t\tconst nodeProperty = targetObject[ propertyName ];\n\n\t\tif ( nodeProperty === undefined ) {\n\n\t\t\tconst nodeName = parsedPath.nodeName;\n\n\t\t\tconsole.error( 'THREE.PropertyBinding: Trying to update property for track: ' + nodeName +\n\t\t\t\t'.' + propertyName + ' but it wasn\\'t found.', targetObject );\n\t\t\treturn;\n\n\t\t}\n\n\t\t// determine versioning scheme\n\t\tlet versioning = this.Versioning.None;\n\n\t\tthis.targetObject = targetObject;\n\n\t\tif ( targetObject.needsUpdate !== undefined ) { // material\n\n\t\t\tversioning = this.Versioning.NeedsUpdate;\n\n\t\t} else if ( targetObject.matrixWorldNeedsUpdate !== undefined ) { // node transform\n\n\t\t\tversioning = this.Versioning.MatrixWorldNeedsUpdate;\n\n\t\t}\n\n\t\t// determine how the property gets bound\n\t\tlet bindingType = this.BindingType.Direct;\n\n\t\tif ( propertyIndex !== undefined ) {\n\n\t\t\t// access a sub element of the property array (only primitives are supported right now)\n\n\t\t\tif ( propertyName === 'morphTargetInfluences' ) {\n\n\t\t\t\t// potential optimization, skip this if propertyIndex is already an integer, and convert the integer string to a true integer.\n\n\t\t\t\t// support resolving morphTarget names into indices.\n\t\t\t\tif ( ! targetObject.geometry ) {\n\n\t\t\t\t\tconsole.error( 'THREE.PropertyBinding: Can not bind to morphTargetInfluences because node does not have a geometry.', this );\n\t\t\t\t\treturn;\n\n\t\t\t\t}\n\n\t\t\t\tif ( ! targetObject.geometry.morphAttributes ) {\n\n\t\t\t\t\tconsole.error( 'THREE.PropertyBinding: Can not bind to morphTargetInfluences because node does not have a geometry.morphAttributes.', this );\n\t\t\t\t\treturn;\n\n\t\t\t\t}\n\n\t\t\t\tif ( targetObject.morphTargetDictionary[ propertyIndex ] !== undefined ) {\n\n\t\t\t\t\tpropertyIndex = targetObject.morphTargetDictionary[ propertyIndex ];\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tbindingType = this.BindingType.ArrayElement;\n\n\t\t\tthis.resolvedProperty = nodeProperty;\n\t\t\tthis.propertyIndex = propertyIndex;\n\n\t\t} else if ( nodeProperty.fromArray !== undefined && nodeProperty.toArray !== undefined ) {\n\n\t\t\t// must use copy for Object3D.Euler/Quaternion\n\n\t\t\tbindingType = this.BindingType.HasFromToArray;\n\n\t\t\tthis.resolvedProperty = nodeProperty;\n\n\t\t} else if ( Array.isArray( nodeProperty ) ) {\n\n\t\t\tbindingType = this.BindingType.EntireArray;\n\n\t\t\tthis.resolvedProperty = nodeProperty;\n\n\t\t} else {\n\n\t\t\tthis.propertyName = propertyName;\n\n\t\t}\n\n\t\t// select getter / setter\n\t\tthis.getValue = this.GetterByBindingType[ bindingType ];\n\t\tthis.setValue = this.SetterByBindingTypeAndVersioning[ bindingType ][ versioning ];\n\n\t}\n\n\tunbind() {\n\n\t\tthis.node = null;\n\n\t\t// back to the prototype version of getValue / setValue\n\t\t// note: avoiding to mutate the shape of 'this' via 'delete'\n\t\tthis.getValue = this._getValue_unbound;\n\t\tthis.setValue = this._setValue_unbound;\n\n\t}\n\n}\n\nPropertyBinding.Composite = Composite;\n\nPropertyBinding.prototype.BindingType = {\n\tDirect: 0,\n\tEntireArray: 1,\n\tArrayElement: 2,\n\tHasFromToArray: 3\n};\n\nPropertyBinding.prototype.Versioning = {\n\tNone: 0,\n\tNeedsUpdate: 1,\n\tMatrixWorldNeedsUpdate: 2\n};\n\nPropertyBinding.prototype.GetterByBindingType = [\n\n\tPropertyBinding.prototype._getValue_direct,\n\tPropertyBinding.prototype._getValue_array,\n\tPropertyBinding.prototype._getValue_arrayElement,\n\tPropertyBinding.prototype._getValue_toArray,\n\n];\n\nPropertyBinding.prototype.SetterByBindingTypeAndVersioning = [\n\n\t[\n\t\t// Direct\n\t\tPropertyBinding.prototype._setValue_direct,\n\t\tPropertyBinding.prototype._setValue_direct_setNeedsUpdate,\n\t\tPropertyBinding.prototype._setValue_direct_setMatrixWorldNeedsUpdate,\n\n\t], [\n\n\t\t// EntireArray\n\n\t\tPropertyBinding.prototype._setValue_array,\n\t\tPropertyBinding.prototype._setValue_array_setNeedsUpdate,\n\t\tPropertyBinding.prototype._setValue_array_setMatrixWorldNeedsUpdate,\n\n\t], [\n\n\t\t// ArrayElement\n\t\tPropertyBinding.prototype._setValue_arrayElement,\n\t\tPropertyBinding.prototype._setValue_arrayElement_setNeedsUpdate,\n\t\tPropertyBinding.prototype._setValue_arrayElement_setMatrixWorldNeedsUpdate,\n\n\t], [\n\n\t\t// HasToFromArray\n\t\tPropertyBinding.prototype._setValue_fromArray,\n\t\tPropertyBinding.prototype._setValue_fromArray_setNeedsUpdate,\n\t\tPropertyBinding.prototype._setValue_fromArray_setMatrixWorldNeedsUpdate,\n\n\t]\n\n];\n\n/**\n *\n * A group of objects that receives a shared animation state.\n *\n * Usage:\n *\n * - Add objects you would otherwise pass as 'root' to the\n * constructor or the .clipAction method of AnimationMixer.\n *\n * - Instead pass this object as 'root'.\n *\n * - You can also add and remove objects later when the mixer\n * is running.\n *\n * Note:\n *\n * Objects of this class appear as one object to the mixer,\n * so cache control of the individual objects must be done\n * on the group.\n *\n * Limitation:\n *\n * - The animated properties must be compatible among the\n * all objects in the group.\n *\n * - A single property can either be controlled through a\n * target group or directly, but not both.\n */\n\nclass AnimationObjectGroup {\n\n\tconstructor() {\n\n\t\tthis.isAnimationObjectGroup = true;\n\n\t\tthis.uuid = generateUUID();\n\n\t\t// cached objects followed by the active ones\n\t\tthis._objects = Array.prototype.slice.call( arguments );\n\n\t\tthis.nCachedObjects_ = 0; // threshold\n\t\t// note: read by PropertyBinding.Composite\n\n\t\tconst indices = {};\n\t\tthis._indicesByUUID = indices; // for bookkeeping\n\n\t\tfor ( let i = 0, n = arguments.length; i !== n; ++ i ) {\n\n\t\t\tindices[ arguments[ i ].uuid ] = i;\n\n\t\t}\n\n\t\tthis._paths = []; // inside: string\n\t\tthis._parsedPaths = []; // inside: { we don't care, here }\n\t\tthis._bindings = []; // inside: Array< PropertyBinding >\n\t\tthis._bindingsIndicesByPath = {}; // inside: indices in these arrays\n\n\t\tconst scope = this;\n\n\t\tthis.stats = {\n\n\t\t\tobjects: {\n\t\t\t\tget total() {\n\n\t\t\t\t\treturn scope._objects.length;\n\n\t\t\t\t},\n\t\t\t\tget inUse() {\n\n\t\t\t\t\treturn this.total - scope.nCachedObjects_;\n\n\t\t\t\t}\n\t\t\t},\n\t\t\tget bindingsPerObject() {\n\n\t\t\t\treturn scope._bindings.length;\n\n\t\t\t}\n\n\t\t};\n\n\t}\n\n\tadd() {\n\n\t\tconst objects = this._objects,\n\t\t\tindicesByUUID = this._indicesByUUID,\n\t\t\tpaths = this._paths,\n\t\t\tparsedPaths = this._parsedPaths,\n\t\t\tbindings = this._bindings,\n\t\t\tnBindings = bindings.length;\n\n\t\tlet knownObject = undefined,\n\t\t\tnObjects = objects.length,\n\t\t\tnCachedObjects = this.nCachedObjects_;\n\n\t\tfor ( let i = 0, n = arguments.length; i !== n; ++ i ) {\n\n\t\t\tconst object = arguments[ i ],\n\t\t\t\tuuid = object.uuid;\n\t\t\tlet index = indicesByUUID[ uuid ];\n\n\t\t\tif ( index === undefined ) {\n\n\t\t\t\t// unknown object -> add it to the ACTIVE region\n\n\t\t\t\tindex = nObjects ++;\n\t\t\t\tindicesByUUID[ uuid ] = index;\n\t\t\t\tobjects.push( object );\n\n\t\t\t\t// accounting is done, now do the same for all bindings\n\n\t\t\t\tfor ( let j = 0, m = nBindings; j !== m; ++ j ) {\n\n\t\t\t\t\tbindings[ j ].push( new PropertyBinding( object, paths[ j ], parsedPaths[ j ] ) );\n\n\t\t\t\t}\n\n\t\t\t} else if ( index < nCachedObjects ) {\n\n\t\t\t\tknownObject = objects[ index ];\n\n\t\t\t\t// move existing object to the ACTIVE region\n\n\t\t\t\tconst firstActiveIndex = -- nCachedObjects,\n\t\t\t\t\tlastCachedObject = objects[ firstActiveIndex ];\n\n\t\t\t\tindicesByUUID[ lastCachedObject.uuid ] = index;\n\t\t\t\tobjects[ index ] = lastCachedObject;\n\n\t\t\t\tindicesByUUID[ uuid ] = firstActiveIndex;\n\t\t\t\tobjects[ firstActiveIndex ] = object;\n\n\t\t\t\t// accounting is done, now do the same for all bindings\n\n\t\t\t\tfor ( let j = 0, m = nBindings; j !== m; ++ j ) {\n\n\t\t\t\t\tconst bindingsForPath = bindings[ j ],\n\t\t\t\t\t\tlastCached = bindingsForPath[ firstActiveIndex ];\n\n\t\t\t\t\tlet binding = bindingsForPath[ index ];\n\n\t\t\t\t\tbindingsForPath[ index ] = lastCached;\n\n\t\t\t\t\tif ( binding === undefined ) {\n\n\t\t\t\t\t\t// since we do not bother to create new bindings\n\t\t\t\t\t\t// for objects that are cached, the binding may\n\t\t\t\t\t\t// or may not exist\n\n\t\t\t\t\t\tbinding = new PropertyBinding( object, paths[ j ], parsedPaths[ j ] );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tbindingsForPath[ firstActiveIndex ] = binding;\n\n\t\t\t\t}\n\n\t\t\t} else if ( objects[ index ] !== knownObject ) {\n\n\t\t\t\tconsole.error( 'THREE.AnimationObjectGroup: Different objects with the same UUID ' +\n\t\t\t\t\t'detected. Clean the caches or recreate your infrastructure when reloading scenes.' );\n\n\t\t\t} // else the object is already where we want it to be\n\n\t\t} // for arguments\n\n\t\tthis.nCachedObjects_ = nCachedObjects;\n\n\t}\n\n\tremove() {\n\n\t\tconst objects = this._objects,\n\t\t\tindicesByUUID = this._indicesByUUID,\n\t\t\tbindings = this._bindings,\n\t\t\tnBindings = bindings.length;\n\n\t\tlet nCachedObjects = this.nCachedObjects_;\n\n\t\tfor ( let i = 0, n = arguments.length; i !== n; ++ i ) {\n\n\t\t\tconst object = arguments[ i ],\n\t\t\t\tuuid = object.uuid,\n\t\t\t\tindex = indicesByUUID[ uuid ];\n\n\t\t\tif ( index !== undefined && index >= nCachedObjects ) {\n\n\t\t\t\t// move existing object into the CACHED region\n\n\t\t\t\tconst lastCachedIndex = nCachedObjects ++,\n\t\t\t\t\tfirstActiveObject = objects[ lastCachedIndex ];\n\n\t\t\t\tindicesByUUID[ firstActiveObject.uuid ] = index;\n\t\t\t\tobjects[ index ] = firstActiveObject;\n\n\t\t\t\tindicesByUUID[ uuid ] = lastCachedIndex;\n\t\t\t\tobjects[ lastCachedIndex ] = object;\n\n\t\t\t\t// accounting is done, now do the same for all bindings\n\n\t\t\t\tfor ( let j = 0, m = nBindings; j !== m; ++ j ) {\n\n\t\t\t\t\tconst bindingsForPath = bindings[ j ],\n\t\t\t\t\t\tfirstActive = bindingsForPath[ lastCachedIndex ],\n\t\t\t\t\t\tbinding = bindingsForPath[ index ];\n\n\t\t\t\t\tbindingsForPath[ index ] = firstActive;\n\t\t\t\t\tbindingsForPath[ lastCachedIndex ] = binding;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t} // for arguments\n\n\t\tthis.nCachedObjects_ = nCachedObjects;\n\n\t}\n\n\t// remove & forget\n\tuncache() {\n\n\t\tconst objects = this._objects,\n\t\t\tindicesByUUID = this._indicesByUUID,\n\t\t\tbindings = this._bindings,\n\t\t\tnBindings = bindings.length;\n\n\t\tlet nCachedObjects = this.nCachedObjects_,\n\t\t\tnObjects = objects.length;\n\n\t\tfor ( let i = 0, n = arguments.length; i !== n; ++ i ) {\n\n\t\t\tconst object = arguments[ i ],\n\t\t\t\tuuid = object.uuid,\n\t\t\t\tindex = indicesByUUID[ uuid ];\n\n\t\t\tif ( index !== undefined ) {\n\n\t\t\t\tdelete indicesByUUID[ uuid ];\n\n\t\t\t\tif ( index < nCachedObjects ) {\n\n\t\t\t\t\t// object is cached, shrink the CACHED region\n\n\t\t\t\t\tconst firstActiveIndex = -- nCachedObjects,\n\t\t\t\t\t\tlastCachedObject = objects[ firstActiveIndex ],\n\t\t\t\t\t\tlastIndex = -- nObjects,\n\t\t\t\t\t\tlastObject = objects[ lastIndex ];\n\n\t\t\t\t\t// last cached object takes this object's place\n\t\t\t\t\tindicesByUUID[ lastCachedObject.uuid ] = index;\n\t\t\t\t\tobjects[ index ] = lastCachedObject;\n\n\t\t\t\t\t// last object goes to the activated slot and pop\n\t\t\t\t\tindicesByUUID[ lastObject.uuid ] = firstActiveIndex;\n\t\t\t\t\tobjects[ firstActiveIndex ] = lastObject;\n\t\t\t\t\tobjects.pop();\n\n\t\t\t\t\t// accounting is done, now do the same for all bindings\n\n\t\t\t\t\tfor ( let j = 0, m = nBindings; j !== m; ++ j ) {\n\n\t\t\t\t\t\tconst bindingsForPath = bindings[ j ],\n\t\t\t\t\t\t\tlastCached = bindingsForPath[ firstActiveIndex ],\n\t\t\t\t\t\t\tlast = bindingsForPath[ lastIndex ];\n\n\t\t\t\t\t\tbindingsForPath[ index ] = lastCached;\n\t\t\t\t\t\tbindingsForPath[ firstActiveIndex ] = last;\n\t\t\t\t\t\tbindingsForPath.pop();\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// object is active, just swap with the last and pop\n\n\t\t\t\t\tconst lastIndex = -- nObjects,\n\t\t\t\t\t\tlastObject = objects[ lastIndex ];\n\n\t\t\t\t\tif ( lastIndex > 0 ) {\n\n\t\t\t\t\t\tindicesByUUID[ lastObject.uuid ] = index;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tobjects[ index ] = lastObject;\n\t\t\t\t\tobjects.pop();\n\n\t\t\t\t\t// accounting is done, now do the same for all bindings\n\n\t\t\t\t\tfor ( let j = 0, m = nBindings; j !== m; ++ j ) {\n\n\t\t\t\t\t\tconst bindingsForPath = bindings[ j ];\n\n\t\t\t\t\t\tbindingsForPath[ index ] = bindingsForPath[ lastIndex ];\n\t\t\t\t\t\tbindingsForPath.pop();\n\n\t\t\t\t\t}\n\n\t\t\t\t} // cached or active\n\n\t\t\t} // if object is known\n\n\t\t} // for arguments\n\n\t\tthis.nCachedObjects_ = nCachedObjects;\n\n\t}\n\n\t// Internal interface used by befriended PropertyBinding.Composite:\n\n\tsubscribe_( path, parsedPath ) {\n\n\t\t// returns an array of bindings for the given path that is changed\n\t\t// according to the contained objects in the group\n\n\t\tconst indicesByPath = this._bindingsIndicesByPath;\n\t\tlet index = indicesByPath[ path ];\n\t\tconst bindings = this._bindings;\n\n\t\tif ( index !== undefined ) return bindings[ index ];\n\n\t\tconst paths = this._paths,\n\t\t\tparsedPaths = this._parsedPaths,\n\t\t\tobjects = this._objects,\n\t\t\tnObjects = objects.length,\n\t\t\tnCachedObjects = this.nCachedObjects_,\n\t\t\tbindingsForPath = new Array( nObjects );\n\n\t\tindex = bindings.length;\n\n\t\tindicesByPath[ path ] = index;\n\n\t\tpaths.push( path );\n\t\tparsedPaths.push( parsedPath );\n\t\tbindings.push( bindingsForPath );\n\n\t\tfor ( let i = nCachedObjects, n = objects.length; i !== n; ++ i ) {\n\n\t\t\tconst object = objects[ i ];\n\t\t\tbindingsForPath[ i ] = new PropertyBinding( object, path, parsedPath );\n\n\t\t}\n\n\t\treturn bindingsForPath;\n\n\t}\n\n\tunsubscribe_( path ) {\n\n\t\t// tells the group to forget about a property path and no longer\n\t\t// update the array previously obtained with 'subscribe_'\n\n\t\tconst indicesByPath = this._bindingsIndicesByPath,\n\t\t\tindex = indicesByPath[ path ];\n\n\t\tif ( index !== undefined ) {\n\n\t\t\tconst paths = this._paths,\n\t\t\t\tparsedPaths = this._parsedPaths,\n\t\t\t\tbindings = this._bindings,\n\t\t\t\tlastBindingsIndex = bindings.length - 1,\n\t\t\t\tlastBindings = bindings[ lastBindingsIndex ],\n\t\t\t\tlastBindingsPath = path[ lastBindingsIndex ];\n\n\t\t\tindicesByPath[ lastBindingsPath ] = index;\n\n\t\t\tbindings[ index ] = lastBindings;\n\t\t\tbindings.pop();\n\n\t\t\tparsedPaths[ index ] = parsedPaths[ lastBindingsIndex ];\n\t\t\tparsedPaths.pop();\n\n\t\t\tpaths[ index ] = paths[ lastBindingsIndex ];\n\t\t\tpaths.pop();\n\n\t\t}\n\n\t}\n\n}\n\nclass AnimationAction {\n\n\tconstructor( mixer, clip, localRoot = null, blendMode = clip.blendMode ) {\n\n\t\tthis._mixer = mixer;\n\t\tthis._clip = clip;\n\t\tthis._localRoot = localRoot;\n\t\tthis.blendMode = blendMode;\n\n\t\tconst tracks = clip.tracks,\n\t\t\tnTracks = tracks.length,\n\t\t\tinterpolants = new Array( nTracks );\n\n\t\tconst interpolantSettings = {\n\t\t\tendingStart: ZeroCurvatureEnding,\n\t\t\tendingEnd: ZeroCurvatureEnding\n\t\t};\n\n\t\tfor ( let i = 0; i !== nTracks; ++ i ) {\n\n\t\t\tconst interpolant = tracks[ i ].createInterpolant( null );\n\t\t\tinterpolants[ i ] = interpolant;\n\t\t\tinterpolant.settings = interpolantSettings;\n\n\t\t}\n\n\t\tthis._interpolantSettings = interpolantSettings;\n\n\t\tthis._interpolants = interpolants; // bound by the mixer\n\n\t\t// inside: PropertyMixer (managed by the mixer)\n\t\tthis._propertyBindings = new Array( nTracks );\n\n\t\tthis._cacheIndex = null; // for the memory manager\n\t\tthis._byClipCacheIndex = null; // for the memory manager\n\n\t\tthis._timeScaleInterpolant = null;\n\t\tthis._weightInterpolant = null;\n\n\t\tthis.loop = LoopRepeat;\n\t\tthis._loopCount = - 1;\n\n\t\t// global mixer time when the action is to be started\n\t\t// it's set back to 'null' upon start of the action\n\t\tthis._startTime = null;\n\n\t\t// scaled local time of the action\n\t\t// gets clamped or wrapped to 0..clip.duration according to loop\n\t\tthis.time = 0;\n\n\t\tthis.timeScale = 1;\n\t\tthis._effectiveTimeScale = 1;\n\n\t\tthis.weight = 1;\n\t\tthis._effectiveWeight = 1;\n\n\t\tthis.repetitions = Infinity; // no. of repetitions when looping\n\n\t\tthis.paused = false; // true -> zero effective time scale\n\t\tthis.enabled = true; // false -> zero effective weight\n\n\t\tthis.clampWhenFinished = false;// keep feeding the last frame?\n\n\t\tthis.zeroSlopeAtStart = true;// for smooth interpolation w/o separate\n\t\tthis.zeroSlopeAtEnd = true;// clips for start, loop and end\n\n\t}\n\n\t// State & Scheduling\n\n\tplay() {\n\n\t\tthis._mixer._activateAction( this );\n\n\t\treturn this;\n\n\t}\n\n\tstop() {\n\n\t\tthis._mixer._deactivateAction( this );\n\n\t\treturn this.reset();\n\n\t}\n\n\treset() {\n\n\t\tthis.paused = false;\n\t\tthis.enabled = true;\n\n\t\tthis.time = 0; // restart clip\n\t\tthis._loopCount = - 1;// forget previous loops\n\t\tthis._startTime = null;// forget scheduling\n\n\t\treturn this.stopFading().stopWarping();\n\n\t}\n\n\tisRunning() {\n\n\t\treturn this.enabled && ! this.paused && this.timeScale !== 0 &&\n\t\t\tthis._startTime === null && this._mixer._isActiveAction( this );\n\n\t}\n\n\t// return true when play has been called\n\tisScheduled() {\n\n\t\treturn this._mixer._isActiveAction( this );\n\n\t}\n\n\tstartAt( time ) {\n\n\t\tthis._startTime = time;\n\n\t\treturn this;\n\n\t}\n\n\tsetLoop( mode, repetitions ) {\n\n\t\tthis.loop = mode;\n\t\tthis.repetitions = repetitions;\n\n\t\treturn this;\n\n\t}\n\n\t// Weight\n\n\t// set the weight stopping any scheduled fading\n\t// although .enabled = false yields an effective weight of zero, this\n\t// method does *not* change .enabled, because it would be confusing\n\tsetEffectiveWeight( weight ) {\n\n\t\tthis.weight = weight;\n\n\t\t// note: same logic as when updated at runtime\n\t\tthis._effectiveWeight = this.enabled ? weight : 0;\n\n\t\treturn this.stopFading();\n\n\t}\n\n\t// return the weight considering fading and .enabled\n\tgetEffectiveWeight() {\n\n\t\treturn this._effectiveWeight;\n\n\t}\n\n\tfadeIn( duration ) {\n\n\t\treturn this._scheduleFading( duration, 0, 1 );\n\n\t}\n\n\tfadeOut( duration ) {\n\n\t\treturn this._scheduleFading( duration, 1, 0 );\n\n\t}\n\n\tcrossFadeFrom( fadeOutAction, duration, warp ) {\n\n\t\tfadeOutAction.fadeOut( duration );\n\t\tthis.fadeIn( duration );\n\n\t\tif ( warp ) {\n\n\t\t\tconst fadeInDuration = this._clip.duration,\n\t\t\t\tfadeOutDuration = fadeOutAction._clip.duration,\n\n\t\t\t\tstartEndRatio = fadeOutDuration / fadeInDuration,\n\t\t\t\tendStartRatio = fadeInDuration / fadeOutDuration;\n\n\t\t\tfadeOutAction.warp( 1.0, startEndRatio, duration );\n\t\t\tthis.warp( endStartRatio, 1.0, duration );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tcrossFadeTo( fadeInAction, duration, warp ) {\n\n\t\treturn fadeInAction.crossFadeFrom( this, duration, warp );\n\n\t}\n\n\tstopFading() {\n\n\t\tconst weightInterpolant = this._weightInterpolant;\n\n\t\tif ( weightInterpolant !== null ) {\n\n\t\t\tthis._weightInterpolant = null;\n\t\t\tthis._mixer._takeBackControlInterpolant( weightInterpolant );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\t// Time Scale Control\n\n\t// set the time scale stopping any scheduled warping\n\t// although .paused = true yields an effective time scale of zero, this\n\t// method does *not* change .paused, because it would be confusing\n\tsetEffectiveTimeScale( timeScale ) {\n\n\t\tthis.timeScale = timeScale;\n\t\tthis._effectiveTimeScale = this.paused ? 0 : timeScale;\n\n\t\treturn this.stopWarping();\n\n\t}\n\n\t// return the time scale considering warping and .paused\n\tgetEffectiveTimeScale() {\n\n\t\treturn this._effectiveTimeScale;\n\n\t}\n\n\tsetDuration( duration ) {\n\n\t\tthis.timeScale = this._clip.duration / duration;\n\n\t\treturn this.stopWarping();\n\n\t}\n\n\tsyncWith( action ) {\n\n\t\tthis.time = action.time;\n\t\tthis.timeScale = action.timeScale;\n\n\t\treturn this.stopWarping();\n\n\t}\n\n\thalt( duration ) {\n\n\t\treturn this.warp( this._effectiveTimeScale, 0, duration );\n\n\t}\n\n\twarp( startTimeScale, endTimeScale, duration ) {\n\n\t\tconst mixer = this._mixer,\n\t\t\tnow = mixer.time,\n\t\t\ttimeScale = this.timeScale;\n\n\t\tlet interpolant = this._timeScaleInterpolant;\n\n\t\tif ( interpolant === null ) {\n\n\t\t\tinterpolant = mixer._lendControlInterpolant();\n\t\t\tthis._timeScaleInterpolant = interpolant;\n\n\t\t}\n\n\t\tconst times = interpolant.parameterPositions,\n\t\t\tvalues = interpolant.sampleValues;\n\n\t\ttimes[ 0 ] = now;\n\t\ttimes[ 1 ] = now + duration;\n\n\t\tvalues[ 0 ] = startTimeScale / timeScale;\n\t\tvalues[ 1 ] = endTimeScale / timeScale;\n\n\t\treturn this;\n\n\t}\n\n\tstopWarping() {\n\n\t\tconst timeScaleInterpolant = this._timeScaleInterpolant;\n\n\t\tif ( timeScaleInterpolant !== null ) {\n\n\t\t\tthis._timeScaleInterpolant = null;\n\t\t\tthis._mixer._takeBackControlInterpolant( timeScaleInterpolant );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\t// Object Accessors\n\n\tgetMixer() {\n\n\t\treturn this._mixer;\n\n\t}\n\n\tgetClip() {\n\n\t\treturn this._clip;\n\n\t}\n\n\tgetRoot() {\n\n\t\treturn this._localRoot || this._mixer._root;\n\n\t}\n\n\t// Interna\n\n\t_update( time, deltaTime, timeDirection, accuIndex ) {\n\n\t\t// called by the mixer\n\n\t\tif ( ! this.enabled ) {\n\n\t\t\t// call ._updateWeight() to update ._effectiveWeight\n\n\t\t\tthis._updateWeight( time );\n\t\t\treturn;\n\n\t\t}\n\n\t\tconst startTime = this._startTime;\n\n\t\tif ( startTime !== null ) {\n\n\t\t\t// check for scheduled start of action\n\n\t\t\tconst timeRunning = ( time - startTime ) * timeDirection;\n\t\t\tif ( timeRunning < 0 || timeDirection === 0 ) {\n\n\t\t\t\treturn; // yet to come / don't decide when delta = 0\n\n\t\t\t}\n\n\t\t\t// start\n\n\t\t\tthis._startTime = null; // unschedule\n\t\t\tdeltaTime = timeDirection * timeRunning;\n\n\t\t}\n\n\t\t// apply time scale and advance time\n\n\t\tdeltaTime *= this._updateTimeScale( time );\n\t\tconst clipTime = this._updateTime( deltaTime );\n\n\t\t// note: _updateTime may disable the action resulting in\n\t\t// an effective weight of 0\n\n\t\tconst weight = this._updateWeight( time );\n\n\t\tif ( weight > 0 ) {\n\n\t\t\tconst interpolants = this._interpolants;\n\t\t\tconst propertyMixers = this._propertyBindings;\n\n\t\t\tswitch ( this.blendMode ) {\n\n\t\t\t\tcase AdditiveAnimationBlendMode:\n\n\t\t\t\t\tfor ( let j = 0, m = interpolants.length; j !== m; ++ j ) {\n\n\t\t\t\t\t\tinterpolants[ j ].evaluate( clipTime );\n\t\t\t\t\t\tpropertyMixers[ j ].accumulateAdditive( weight );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase NormalAnimationBlendMode:\n\t\t\t\tdefault:\n\n\t\t\t\t\tfor ( let j = 0, m = interpolants.length; j !== m; ++ j ) {\n\n\t\t\t\t\t\tinterpolants[ j ].evaluate( clipTime );\n\t\t\t\t\t\tpropertyMixers[ j ].accumulate( accuIndex, weight );\n\n\t\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\t_updateWeight( time ) {\n\n\t\tlet weight = 0;\n\n\t\tif ( this.enabled ) {\n\n\t\t\tweight = this.weight;\n\t\t\tconst interpolant = this._weightInterpolant;\n\n\t\t\tif ( interpolant !== null ) {\n\n\t\t\t\tconst interpolantValue = interpolant.evaluate( time )[ 0 ];\n\n\t\t\t\tweight *= interpolantValue;\n\n\t\t\t\tif ( time > interpolant.parameterPositions[ 1 ] ) {\n\n\t\t\t\t\tthis.stopFading();\n\n\t\t\t\t\tif ( interpolantValue === 0 ) {\n\n\t\t\t\t\t\t// faded out, disable\n\t\t\t\t\t\tthis.enabled = false;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tthis._effectiveWeight = weight;\n\t\treturn weight;\n\n\t}\n\n\t_updateTimeScale( time ) {\n\n\t\tlet timeScale = 0;\n\n\t\tif ( ! this.paused ) {\n\n\t\t\ttimeScale = this.timeScale;\n\n\t\t\tconst interpolant = this._timeScaleInterpolant;\n\n\t\t\tif ( interpolant !== null ) {\n\n\t\t\t\tconst interpolantValue = interpolant.evaluate( time )[ 0 ];\n\n\t\t\t\ttimeScale *= interpolantValue;\n\n\t\t\t\tif ( time > interpolant.parameterPositions[ 1 ] ) {\n\n\t\t\t\t\tthis.stopWarping();\n\n\t\t\t\t\tif ( timeScale === 0 ) {\n\n\t\t\t\t\t\t// motion has halted, pause\n\t\t\t\t\t\tthis.paused = true;\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\t// warp done - apply final time scale\n\t\t\t\t\t\tthis.timeScale = timeScale;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tthis._effectiveTimeScale = timeScale;\n\t\treturn timeScale;\n\n\t}\n\n\t_updateTime( deltaTime ) {\n\n\t\tconst duration = this._clip.duration;\n\t\tconst loop = this.loop;\n\n\t\tlet time = this.time + deltaTime;\n\t\tlet loopCount = this._loopCount;\n\n\t\tconst pingPong = ( loop === LoopPingPong );\n\n\t\tif ( deltaTime === 0 ) {\n\n\t\t\tif ( loopCount === - 1 ) return time;\n\n\t\t\treturn ( pingPong && ( loopCount & 1 ) === 1 ) ? duration - time : time;\n\n\t\t}\n\n\t\tif ( loop === LoopOnce ) {\n\n\t\t\tif ( loopCount === - 1 ) {\n\n\t\t\t\t// just started\n\n\t\t\t\tthis._loopCount = 0;\n\t\t\t\tthis._setEndings( true, true, false );\n\n\t\t\t}\n\n\t\t\thandle_stop: {\n\n\t\t\t\tif ( time >= duration ) {\n\n\t\t\t\t\ttime = duration;\n\n\t\t\t\t} else if ( time < 0 ) {\n\n\t\t\t\t\ttime = 0;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tthis.time = time;\n\n\t\t\t\t\tbreak handle_stop;\n\n\t\t\t\t}\n\n\t\t\t\tif ( this.clampWhenFinished ) this.paused = true;\n\t\t\t\telse this.enabled = false;\n\n\t\t\t\tthis.time = time;\n\n\t\t\t\tthis._mixer.dispatchEvent( {\n\t\t\t\t\ttype: 'finished', action: this,\n\t\t\t\t\tdirection: deltaTime < 0 ? - 1 : 1\n\t\t\t\t} );\n\n\t\t\t}\n\n\t\t} else { // repetitive Repeat or PingPong\n\n\t\t\tif ( loopCount === - 1 ) {\n\n\t\t\t\t// just started\n\n\t\t\t\tif ( deltaTime >= 0 ) {\n\n\t\t\t\t\tloopCount = 0;\n\n\t\t\t\t\tthis._setEndings( true, this.repetitions === 0, pingPong );\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// when looping in reverse direction, the initial\n\t\t\t\t\t// transition through zero counts as a repetition,\n\t\t\t\t\t// so leave loopCount at -1\n\n\t\t\t\t\tthis._setEndings( this.repetitions === 0, true, pingPong );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( time >= duration || time < 0 ) {\n\n\t\t\t\t// wrap around\n\n\t\t\t\tconst loopDelta = Math.floor( time / duration ); // signed\n\t\t\t\ttime -= duration * loopDelta;\n\n\t\t\t\tloopCount += Math.abs( loopDelta );\n\n\t\t\t\tconst pending = this.repetitions - loopCount;\n\n\t\t\t\tif ( pending <= 0 ) {\n\n\t\t\t\t\t// have to stop (switch state, clamp time, fire event)\n\n\t\t\t\t\tif ( this.clampWhenFinished ) this.paused = true;\n\t\t\t\t\telse this.enabled = false;\n\n\t\t\t\t\ttime = deltaTime > 0 ? duration : 0;\n\n\t\t\t\t\tthis.time = time;\n\n\t\t\t\t\tthis._mixer.dispatchEvent( {\n\t\t\t\t\t\ttype: 'finished', action: this,\n\t\t\t\t\t\tdirection: deltaTime > 0 ? 1 : - 1\n\t\t\t\t\t} );\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// keep running\n\n\t\t\t\t\tif ( pending === 1 ) {\n\n\t\t\t\t\t\t// entering the last round\n\n\t\t\t\t\t\tconst atStart = deltaTime < 0;\n\t\t\t\t\t\tthis._setEndings( atStart, ! atStart, pingPong );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tthis._setEndings( false, false, pingPong );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tthis._loopCount = loopCount;\n\n\t\t\t\t\tthis.time = time;\n\n\t\t\t\t\tthis._mixer.dispatchEvent( {\n\t\t\t\t\t\ttype: 'loop', action: this, loopDelta: loopDelta\n\t\t\t\t\t} );\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\tthis.time = time;\n\n\t\t\t}\n\n\t\t\tif ( pingPong && ( loopCount & 1 ) === 1 ) {\n\n\t\t\t\t// invert time for the \"pong round\"\n\n\t\t\t\treturn duration - time;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn time;\n\n\t}\n\n\t_setEndings( atStart, atEnd, pingPong ) {\n\n\t\tconst settings = this._interpolantSettings;\n\n\t\tif ( pingPong ) {\n\n\t\t\tsettings.endingStart = ZeroSlopeEnding;\n\t\t\tsettings.endingEnd = ZeroSlopeEnding;\n\n\t\t} else {\n\n\t\t\t// assuming for LoopOnce atStart == atEnd == true\n\n\t\t\tif ( atStart ) {\n\n\t\t\t\tsettings.endingStart = this.zeroSlopeAtStart ? ZeroSlopeEnding : ZeroCurvatureEnding;\n\n\t\t\t} else {\n\n\t\t\t\tsettings.endingStart = WrapAroundEnding;\n\n\t\t\t}\n\n\t\t\tif ( atEnd ) {\n\n\t\t\t\tsettings.endingEnd = this.zeroSlopeAtEnd ? ZeroSlopeEnding : ZeroCurvatureEnding;\n\n\t\t\t} else {\n\n\t\t\t\tsettings.endingEnd \t = WrapAroundEnding;\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\t_scheduleFading( duration, weightNow, weightThen ) {\n\n\t\tconst mixer = this._mixer, now = mixer.time;\n\t\tlet interpolant = this._weightInterpolant;\n\n\t\tif ( interpolant === null ) {\n\n\t\t\tinterpolant = mixer._lendControlInterpolant();\n\t\t\tthis._weightInterpolant = interpolant;\n\n\t\t}\n\n\t\tconst times = interpolant.parameterPositions,\n\t\t\tvalues = interpolant.sampleValues;\n\n\t\ttimes[ 0 ] = now;\n\t\tvalues[ 0 ] = weightNow;\n\t\ttimes[ 1 ] = now + duration;\n\t\tvalues[ 1 ] = weightThen;\n\n\t\treturn this;\n\n\t}\n\n}\n\nconst _controlInterpolantsResultBuffer = /*@__PURE__*/ new Float32Array( 1 );\n\n\nclass AnimationMixer extends EventDispatcher {\n\n\tconstructor( root ) {\n\n\t\tsuper();\n\n\t\tthis._root = root;\n\t\tthis._initMemoryManager();\n\t\tthis._accuIndex = 0;\n\t\tthis.time = 0;\n\t\tthis.timeScale = 1.0;\n\n\t}\n\n\t_bindAction( action, prototypeAction ) {\n\n\t\tconst root = action._localRoot || this._root,\n\t\t\ttracks = action._clip.tracks,\n\t\t\tnTracks = tracks.length,\n\t\t\tbindings = action._propertyBindings,\n\t\t\tinterpolants = action._interpolants,\n\t\t\trootUuid = root.uuid,\n\t\t\tbindingsByRoot = this._bindingsByRootAndName;\n\n\t\tlet bindingsByName = bindingsByRoot[ rootUuid ];\n\n\t\tif ( bindingsByName === undefined ) {\n\n\t\t\tbindingsByName = {};\n\t\t\tbindingsByRoot[ rootUuid ] = bindingsByName;\n\n\t\t}\n\n\t\tfor ( let i = 0; i !== nTracks; ++ i ) {\n\n\t\t\tconst track = tracks[ i ],\n\t\t\t\ttrackName = track.name;\n\n\t\t\tlet binding = bindingsByName[ trackName ];\n\n\t\t\tif ( binding !== undefined ) {\n\n\t\t\t\t++ binding.referenceCount;\n\t\t\t\tbindings[ i ] = binding;\n\n\t\t\t} else {\n\n\t\t\t\tbinding = bindings[ i ];\n\n\t\t\t\tif ( binding !== undefined ) {\n\n\t\t\t\t\t// existing binding, make sure the cache knows\n\n\t\t\t\t\tif ( binding._cacheIndex === null ) {\n\n\t\t\t\t\t\t++ binding.referenceCount;\n\t\t\t\t\t\tthis._addInactiveBinding( binding, rootUuid, trackName );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tcontinue;\n\n\t\t\t\t}\n\n\t\t\t\tconst path = prototypeAction && prototypeAction.\n\t\t\t\t\t_propertyBindings[ i ].binding.parsedPath;\n\n\t\t\t\tbinding = new PropertyMixer(\n\t\t\t\t\tPropertyBinding.create( root, trackName, path ),\n\t\t\t\t\ttrack.ValueTypeName, track.getValueSize() );\n\n\t\t\t\t++ binding.referenceCount;\n\t\t\t\tthis._addInactiveBinding( binding, rootUuid, trackName );\n\n\t\t\t\tbindings[ i ] = binding;\n\n\t\t\t}\n\n\t\t\tinterpolants[ i ].resultBuffer = binding.buffer;\n\n\t\t}\n\n\t}\n\n\t_activateAction( action ) {\n\n\t\tif ( ! this._isActiveAction( action ) ) {\n\n\t\t\tif ( action._cacheIndex === null ) {\n\n\t\t\t\t// this action has been forgotten by the cache, but the user\n\t\t\t\t// appears to be still using it -> rebind\n\n\t\t\t\tconst rootUuid = ( action._localRoot || this._root ).uuid,\n\t\t\t\t\tclipUuid = action._clip.uuid,\n\t\t\t\t\tactionsForClip = this._actionsByClip[ clipUuid ];\n\n\t\t\t\tthis._bindAction( action,\n\t\t\t\t\tactionsForClip && actionsForClip.knownActions[ 0 ] );\n\n\t\t\t\tthis._addInactiveAction( action, clipUuid, rootUuid );\n\n\t\t\t}\n\n\t\t\tconst bindings = action._propertyBindings;\n\n\t\t\t// increment reference counts / sort out state\n\t\t\tfor ( let i = 0, n = bindings.length; i !== n; ++ i ) {\n\n\t\t\t\tconst binding = bindings[ i ];\n\n\t\t\t\tif ( binding.useCount ++ === 0 ) {\n\n\t\t\t\t\tthis._lendBinding( binding );\n\t\t\t\t\tbinding.saveOriginalState();\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tthis._lendAction( action );\n\n\t\t}\n\n\t}\n\n\t_deactivateAction( action ) {\n\n\t\tif ( this._isActiveAction( action ) ) {\n\n\t\t\tconst bindings = action._propertyBindings;\n\n\t\t\t// decrement reference counts / sort out state\n\t\t\tfor ( let i = 0, n = bindings.length; i !== n; ++ i ) {\n\n\t\t\t\tconst binding = bindings[ i ];\n\n\t\t\t\tif ( -- binding.useCount === 0 ) {\n\n\t\t\t\t\tbinding.restoreOriginalState();\n\t\t\t\t\tthis._takeBackBinding( binding );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tthis._takeBackAction( action );\n\n\t\t}\n\n\t}\n\n\t// Memory manager\n\n\t_initMemoryManager() {\n\n\t\tthis._actions = []; // 'nActiveActions' followed by inactive ones\n\t\tthis._nActiveActions = 0;\n\n\t\tthis._actionsByClip = {};\n\t\t// inside:\n\t\t// {\n\t\t// \tknownActions: Array< AnimationAction > - used as prototypes\n\t\t// \tactionByRoot: AnimationAction - lookup\n\t\t// }\n\n\n\t\tthis._bindings = []; // 'nActiveBindings' followed by inactive ones\n\t\tthis._nActiveBindings = 0;\n\n\t\tthis._bindingsByRootAndName = {}; // inside: Map< name, PropertyMixer >\n\n\n\t\tthis._controlInterpolants = []; // same game as above\n\t\tthis._nActiveControlInterpolants = 0;\n\n\t\tconst scope = this;\n\n\t\tthis.stats = {\n\n\t\t\tactions: {\n\t\t\t\tget total() {\n\n\t\t\t\t\treturn scope._actions.length;\n\n\t\t\t\t},\n\t\t\t\tget inUse() {\n\n\t\t\t\t\treturn scope._nActiveActions;\n\n\t\t\t\t}\n\t\t\t},\n\t\t\tbindings: {\n\t\t\t\tget total() {\n\n\t\t\t\t\treturn scope._bindings.length;\n\n\t\t\t\t},\n\t\t\t\tget inUse() {\n\n\t\t\t\t\treturn scope._nActiveBindings;\n\n\t\t\t\t}\n\t\t\t},\n\t\t\tcontrolInterpolants: {\n\t\t\t\tget total() {\n\n\t\t\t\t\treturn scope._controlInterpolants.length;\n\n\t\t\t\t},\n\t\t\t\tget inUse() {\n\n\t\t\t\t\treturn scope._nActiveControlInterpolants;\n\n\t\t\t\t}\n\t\t\t}\n\n\t\t};\n\n\t}\n\n\t// Memory management for AnimationAction objects\n\n\t_isActiveAction( action ) {\n\n\t\tconst index = action._cacheIndex;\n\t\treturn index !== null && index < this._nActiveActions;\n\n\t}\n\n\t_addInactiveAction( action, clipUuid, rootUuid ) {\n\n\t\tconst actions = this._actions,\n\t\t\tactionsByClip = this._actionsByClip;\n\n\t\tlet actionsForClip = actionsByClip[ clipUuid ];\n\n\t\tif ( actionsForClip === undefined ) {\n\n\t\t\tactionsForClip = {\n\n\t\t\t\tknownActions: [ action ],\n\t\t\t\tactionByRoot: {}\n\n\t\t\t};\n\n\t\t\taction._byClipCacheIndex = 0;\n\n\t\t\tactionsByClip[ clipUuid ] = actionsForClip;\n\n\t\t} else {\n\n\t\t\tconst knownActions = actionsForClip.knownActions;\n\n\t\t\taction._byClipCacheIndex = knownActions.length;\n\t\t\tknownActions.push( action );\n\n\t\t}\n\n\t\taction._cacheIndex = actions.length;\n\t\tactions.push( action );\n\n\t\tactionsForClip.actionByRoot[ rootUuid ] = action;\n\n\t}\n\n\t_removeInactiveAction( action ) {\n\n\t\tconst actions = this._actions,\n\t\t\tlastInactiveAction = actions[ actions.length - 1 ],\n\t\t\tcacheIndex = action._cacheIndex;\n\n\t\tlastInactiveAction._cacheIndex = cacheIndex;\n\t\tactions[ cacheIndex ] = lastInactiveAction;\n\t\tactions.pop();\n\n\t\taction._cacheIndex = null;\n\n\n\t\tconst clipUuid = action._clip.uuid,\n\t\t\tactionsByClip = this._actionsByClip,\n\t\t\tactionsForClip = actionsByClip[ clipUuid ],\n\t\t\tknownActionsForClip = actionsForClip.knownActions,\n\n\t\t\tlastKnownAction =\n\t\t\t\tknownActionsForClip[ knownActionsForClip.length - 1 ],\n\n\t\t\tbyClipCacheIndex = action._byClipCacheIndex;\n\n\t\tlastKnownAction._byClipCacheIndex = byClipCacheIndex;\n\t\tknownActionsForClip[ byClipCacheIndex ] = lastKnownAction;\n\t\tknownActionsForClip.pop();\n\n\t\taction._byClipCacheIndex = null;\n\n\n\t\tconst actionByRoot = actionsForClip.actionByRoot,\n\t\t\trootUuid = ( action._localRoot || this._root ).uuid;\n\n\t\tdelete actionByRoot[ rootUuid ];\n\n\t\tif ( knownActionsForClip.length === 0 ) {\n\n\t\t\tdelete actionsByClip[ clipUuid ];\n\n\t\t}\n\n\t\tthis._removeInactiveBindingsForAction( action );\n\n\t}\n\n\t_removeInactiveBindingsForAction( action ) {\n\n\t\tconst bindings = action._propertyBindings;\n\n\t\tfor ( let i = 0, n = bindings.length; i !== n; ++ i ) {\n\n\t\t\tconst binding = bindings[ i ];\n\n\t\t\tif ( -- binding.referenceCount === 0 ) {\n\n\t\t\t\tthis._removeInactiveBinding( binding );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\t_lendAction( action ) {\n\n\t\t// [ active actions | inactive actions ]\n\t\t// [ active actions >| inactive actions ]\n\t\t// s a\n\t\t// <-swap->\n\t\t// a s\n\n\t\tconst actions = this._actions,\n\t\t\tprevIndex = action._cacheIndex,\n\n\t\t\tlastActiveIndex = this._nActiveActions ++,\n\n\t\t\tfirstInactiveAction = actions[ lastActiveIndex ];\n\n\t\taction._cacheIndex = lastActiveIndex;\n\t\tactions[ lastActiveIndex ] = action;\n\n\t\tfirstInactiveAction._cacheIndex = prevIndex;\n\t\tactions[ prevIndex ] = firstInactiveAction;\n\n\t}\n\n\t_takeBackAction( action ) {\n\n\t\t// [ active actions | inactive actions ]\n\t\t// [ active actions |< inactive actions ]\n\t\t// a s\n\t\t// <-swap->\n\t\t// s a\n\n\t\tconst actions = this._actions,\n\t\t\tprevIndex = action._cacheIndex,\n\n\t\t\tfirstInactiveIndex = -- this._nActiveActions,\n\n\t\t\tlastActiveAction = actions[ firstInactiveIndex ];\n\n\t\taction._cacheIndex = firstInactiveIndex;\n\t\tactions[ firstInactiveIndex ] = action;\n\n\t\tlastActiveAction._cacheIndex = prevIndex;\n\t\tactions[ prevIndex ] = lastActiveAction;\n\n\t}\n\n\t// Memory management for PropertyMixer objects\n\n\t_addInactiveBinding( binding, rootUuid, trackName ) {\n\n\t\tconst bindingsByRoot = this._bindingsByRootAndName,\n\t\t\tbindings = this._bindings;\n\n\t\tlet bindingByName = bindingsByRoot[ rootUuid ];\n\n\t\tif ( bindingByName === undefined ) {\n\n\t\t\tbindingByName = {};\n\t\t\tbindingsByRoot[ rootUuid ] = bindingByName;\n\n\t\t}\n\n\t\tbindingByName[ trackName ] = binding;\n\n\t\tbinding._cacheIndex = bindings.length;\n\t\tbindings.push( binding );\n\n\t}\n\n\t_removeInactiveBinding( binding ) {\n\n\t\tconst bindings = this._bindings,\n\t\t\tpropBinding = binding.binding,\n\t\t\trootUuid = propBinding.rootNode.uuid,\n\t\t\ttrackName = propBinding.path,\n\t\t\tbindingsByRoot = this._bindingsByRootAndName,\n\t\t\tbindingByName = bindingsByRoot[ rootUuid ],\n\n\t\t\tlastInactiveBinding = bindings[ bindings.length - 1 ],\n\t\t\tcacheIndex = binding._cacheIndex;\n\n\t\tlastInactiveBinding._cacheIndex = cacheIndex;\n\t\tbindings[ cacheIndex ] = lastInactiveBinding;\n\t\tbindings.pop();\n\n\t\tdelete bindingByName[ trackName ];\n\n\t\tif ( Object.keys( bindingByName ).length === 0 ) {\n\n\t\t\tdelete bindingsByRoot[ rootUuid ];\n\n\t\t}\n\n\t}\n\n\t_lendBinding( binding ) {\n\n\t\tconst bindings = this._bindings,\n\t\t\tprevIndex = binding._cacheIndex,\n\n\t\t\tlastActiveIndex = this._nActiveBindings ++,\n\n\t\t\tfirstInactiveBinding = bindings[ lastActiveIndex ];\n\n\t\tbinding._cacheIndex = lastActiveIndex;\n\t\tbindings[ lastActiveIndex ] = binding;\n\n\t\tfirstInactiveBinding._cacheIndex = prevIndex;\n\t\tbindings[ prevIndex ] = firstInactiveBinding;\n\n\t}\n\n\t_takeBackBinding( binding ) {\n\n\t\tconst bindings = this._bindings,\n\t\t\tprevIndex = binding._cacheIndex,\n\n\t\t\tfirstInactiveIndex = -- this._nActiveBindings,\n\n\t\t\tlastActiveBinding = bindings[ firstInactiveIndex ];\n\n\t\tbinding._cacheIndex = firstInactiveIndex;\n\t\tbindings[ firstInactiveIndex ] = binding;\n\n\t\tlastActiveBinding._cacheIndex = prevIndex;\n\t\tbindings[ prevIndex ] = lastActiveBinding;\n\n\t}\n\n\n\t// Memory management of Interpolants for weight and time scale\n\n\t_lendControlInterpolant() {\n\n\t\tconst interpolants = this._controlInterpolants,\n\t\t\tlastActiveIndex = this._nActiveControlInterpolants ++;\n\n\t\tlet interpolant = interpolants[ lastActiveIndex ];\n\n\t\tif ( interpolant === undefined ) {\n\n\t\t\tinterpolant = new LinearInterpolant(\n\t\t\t\tnew Float32Array( 2 ), new Float32Array( 2 ),\n\t\t\t\t1, _controlInterpolantsResultBuffer );\n\n\t\t\tinterpolant.__cacheIndex = lastActiveIndex;\n\t\t\tinterpolants[ lastActiveIndex ] = interpolant;\n\n\t\t}\n\n\t\treturn interpolant;\n\n\t}\n\n\t_takeBackControlInterpolant( interpolant ) {\n\n\t\tconst interpolants = this._controlInterpolants,\n\t\t\tprevIndex = interpolant.__cacheIndex,\n\n\t\t\tfirstInactiveIndex = -- this._nActiveControlInterpolants,\n\n\t\t\tlastActiveInterpolant = interpolants[ firstInactiveIndex ];\n\n\t\tinterpolant.__cacheIndex = firstInactiveIndex;\n\t\tinterpolants[ firstInactiveIndex ] = interpolant;\n\n\t\tlastActiveInterpolant.__cacheIndex = prevIndex;\n\t\tinterpolants[ prevIndex ] = lastActiveInterpolant;\n\n\t}\n\n\t// return an action for a clip optionally using a custom root target\n\t// object (this method allocates a lot of dynamic memory in case a\n\t// previously unknown clip/root combination is specified)\n\tclipAction( clip, optionalRoot, blendMode ) {\n\n\t\tconst root = optionalRoot || this._root,\n\t\t\trootUuid = root.uuid;\n\n\t\tlet clipObject = typeof clip === 'string' ? AnimationClip.findByName( root, clip ) : clip;\n\n\t\tconst clipUuid = clipObject !== null ? clipObject.uuid : clip;\n\n\t\tconst actionsForClip = this._actionsByClip[ clipUuid ];\n\t\tlet prototypeAction = null;\n\n\t\tif ( blendMode === undefined ) {\n\n\t\t\tif ( clipObject !== null ) {\n\n\t\t\t\tblendMode = clipObject.blendMode;\n\n\t\t\t} else {\n\n\t\t\t\tblendMode = NormalAnimationBlendMode;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( actionsForClip !== undefined ) {\n\n\t\t\tconst existingAction = actionsForClip.actionByRoot[ rootUuid ];\n\n\t\t\tif ( existingAction !== undefined && existingAction.blendMode === blendMode ) {\n\n\t\t\t\treturn existingAction;\n\n\t\t\t}\n\n\t\t\t// we know the clip, so we don't have to parse all\n\t\t\t// the bindings again but can just copy\n\t\t\tprototypeAction = actionsForClip.knownActions[ 0 ];\n\n\t\t\t// also, take the clip from the prototype action\n\t\t\tif ( clipObject === null )\n\t\t\t\tclipObject = prototypeAction._clip;\n\n\t\t}\n\n\t\t// clip must be known when specified via string\n\t\tif ( clipObject === null ) return null;\n\n\t\t// allocate all resources required to run it\n\t\tconst newAction = new AnimationAction( this, clipObject, optionalRoot, blendMode );\n\n\t\tthis._bindAction( newAction, prototypeAction );\n\n\t\t// and make the action known to the memory manager\n\t\tthis._addInactiveAction( newAction, clipUuid, rootUuid );\n\n\t\treturn newAction;\n\n\t}\n\n\t// get an existing action\n\texistingAction( clip, optionalRoot ) {\n\n\t\tconst root = optionalRoot || this._root,\n\t\t\trootUuid = root.uuid,\n\n\t\t\tclipObject = typeof clip === 'string' ?\n\t\t\t\tAnimationClip.findByName( root, clip ) : clip,\n\n\t\t\tclipUuid = clipObject ? clipObject.uuid : clip,\n\n\t\t\tactionsForClip = this._actionsByClip[ clipUuid ];\n\n\t\tif ( actionsForClip !== undefined ) {\n\n\t\t\treturn actionsForClip.actionByRoot[ rootUuid ] || null;\n\n\t\t}\n\n\t\treturn null;\n\n\t}\n\n\t// deactivates all previously scheduled actions\n\tstopAllAction() {\n\n\t\tconst actions = this._actions,\n\t\t\tnActions = this._nActiveActions;\n\n\t\tfor ( let i = nActions - 1; i >= 0; -- i ) {\n\n\t\t\tactions[ i ].stop();\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\t// advance the time and update apply the animation\n\tupdate( deltaTime ) {\n\n\t\tdeltaTime *= this.timeScale;\n\n\t\tconst actions = this._actions,\n\t\t\tnActions = this._nActiveActions,\n\n\t\t\ttime = this.time += deltaTime,\n\t\t\ttimeDirection = Math.sign( deltaTime ),\n\n\t\t\taccuIndex = this._accuIndex ^= 1;\n\n\t\t// run active actions\n\n\t\tfor ( let i = 0; i !== nActions; ++ i ) {\n\n\t\t\tconst action = actions[ i ];\n\n\t\t\taction._update( time, deltaTime, timeDirection, accuIndex );\n\n\t\t}\n\n\t\t// update scene graph\n\n\t\tconst bindings = this._bindings,\n\t\t\tnBindings = this._nActiveBindings;\n\n\t\tfor ( let i = 0; i !== nBindings; ++ i ) {\n\n\t\t\tbindings[ i ].apply( accuIndex );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\t// Allows you to seek to a specific time in an animation.\n\tsetTime( timeInSeconds ) {\n\n\t\tthis.time = 0; // Zero out time attribute for AnimationMixer object;\n\t\tfor ( let i = 0; i < this._actions.length; i ++ ) {\n\n\t\t\tthis._actions[ i ].time = 0; // Zero out time attribute for all associated AnimationAction objects.\n\n\t\t}\n\n\t\treturn this.update( timeInSeconds ); // Update used to set exact time. Returns \"this\" AnimationMixer object.\n\n\t}\n\n\t// return this mixer's root target object\n\tgetRoot() {\n\n\t\treturn this._root;\n\n\t}\n\n\t// free all resources specific to a particular clip\n\tuncacheClip( clip ) {\n\n\t\tconst actions = this._actions,\n\t\t\tclipUuid = clip.uuid,\n\t\t\tactionsByClip = this._actionsByClip,\n\t\t\tactionsForClip = actionsByClip[ clipUuid ];\n\n\t\tif ( actionsForClip !== undefined ) {\n\n\t\t\t// note: just calling _removeInactiveAction would mess up the\n\t\t\t// iteration state and also require updating the state we can\n\t\t\t// just throw away\n\n\t\t\tconst actionsToRemove = actionsForClip.knownActions;\n\n\t\t\tfor ( let i = 0, n = actionsToRemove.length; i !== n; ++ i ) {\n\n\t\t\t\tconst action = actionsToRemove[ i ];\n\n\t\t\t\tthis._deactivateAction( action );\n\n\t\t\t\tconst cacheIndex = action._cacheIndex,\n\t\t\t\t\tlastInactiveAction = actions[ actions.length - 1 ];\n\n\t\t\t\taction._cacheIndex = null;\n\t\t\t\taction._byClipCacheIndex = null;\n\n\t\t\t\tlastInactiveAction._cacheIndex = cacheIndex;\n\t\t\t\tactions[ cacheIndex ] = lastInactiveAction;\n\t\t\t\tactions.pop();\n\n\t\t\t\tthis._removeInactiveBindingsForAction( action );\n\n\t\t\t}\n\n\t\t\tdelete actionsByClip[ clipUuid ];\n\n\t\t}\n\n\t}\n\n\t// free all resources specific to a particular root target object\n\tuncacheRoot( root ) {\n\n\t\tconst rootUuid = root.uuid,\n\t\t\tactionsByClip = this._actionsByClip;\n\n\t\tfor ( const clipUuid in actionsByClip ) {\n\n\t\t\tconst actionByRoot = actionsByClip[ clipUuid ].actionByRoot,\n\t\t\t\taction = actionByRoot[ rootUuid ];\n\n\t\t\tif ( action !== undefined ) {\n\n\t\t\t\tthis._deactivateAction( action );\n\t\t\t\tthis._removeInactiveAction( action );\n\n\t\t\t}\n\n\t\t}\n\n\t\tconst bindingsByRoot = this._bindingsByRootAndName,\n\t\t\tbindingByName = bindingsByRoot[ rootUuid ];\n\n\t\tif ( bindingByName !== undefined ) {\n\n\t\t\tfor ( const trackName in bindingByName ) {\n\n\t\t\t\tconst binding = bindingByName[ trackName ];\n\t\t\t\tbinding.restoreOriginalState();\n\t\t\t\tthis._removeInactiveBinding( binding );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\t// remove a targeted clip from the cache\n\tuncacheAction( clip, optionalRoot ) {\n\n\t\tconst action = this.existingAction( clip, optionalRoot );\n\n\t\tif ( action !== null ) {\n\n\t\t\tthis._deactivateAction( action );\n\t\t\tthis._removeInactiveAction( action );\n\n\t\t}\n\n\t}\n\n}\n\nclass Uniform {\n\n\tconstructor( value ) {\n\n\t\tif ( typeof value === 'string' ) {\n\n\t\t\tconsole.warn( 'THREE.Uniform: Type parameter is no longer needed.' );\n\t\t\tvalue = arguments[ 1 ];\n\n\t\t}\n\n\t\tthis.value = value;\n\n\t}\n\n\tclone() {\n\n\t\treturn new Uniform( this.value.clone === undefined ? this.value : this.value.clone() );\n\n\t}\n\n}\n\nclass InstancedInterleavedBuffer extends InterleavedBuffer {\n\n\tconstructor( array, stride, meshPerAttribute = 1 ) {\n\n\t\tsuper( array, stride );\n\n\t\tthis.isInstancedInterleavedBuffer = true;\n\n\t\tthis.meshPerAttribute = meshPerAttribute;\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.meshPerAttribute = source.meshPerAttribute;\n\n\t\treturn this;\n\n\t}\n\n\tclone( data ) {\n\n\t\tconst ib = super.clone( data );\n\n\t\tib.meshPerAttribute = this.meshPerAttribute;\n\n\t\treturn ib;\n\n\t}\n\n\ttoJSON( data ) {\n\n\t\tconst json = super.toJSON( data );\n\n\t\tjson.isInstancedInterleavedBuffer = true;\n\t\tjson.meshPerAttribute = this.meshPerAttribute;\n\n\t\treturn json;\n\n\t}\n\n}\n\nclass GLBufferAttribute {\n\n\tconstructor( buffer, type, itemSize, elementSize, count ) {\n\n\t\tthis.isGLBufferAttribute = true;\n\n\t\tthis.buffer = buffer;\n\t\tthis.type = type;\n\t\tthis.itemSize = itemSize;\n\t\tthis.elementSize = elementSize;\n\t\tthis.count = count;\n\n\t\tthis.version = 0;\n\n\t}\n\n\tset needsUpdate( value ) {\n\n\t\tif ( value === true ) this.version ++;\n\n\t}\n\n\tsetBuffer( buffer ) {\n\n\t\tthis.buffer = buffer;\n\n\t\treturn this;\n\n\t}\n\n\tsetType( type, elementSize ) {\n\n\t\tthis.type = type;\n\t\tthis.elementSize = elementSize;\n\n\t\treturn this;\n\n\t}\n\n\tsetItemSize( itemSize ) {\n\n\t\tthis.itemSize = itemSize;\n\n\t\treturn this;\n\n\t}\n\n\tsetCount( count ) {\n\n\t\tthis.count = count;\n\n\t\treturn this;\n\n\t}\n\n}\n\nclass Raycaster {\n\n\tconstructor( origin, direction, near = 0, far = Infinity ) {\n\n\t\tthis.ray = new Ray( origin, direction );\n\t\t// direction is assumed to be normalized (for accurate distance calculations)\n\n\t\tthis.near = near;\n\t\tthis.far = far;\n\t\tthis.camera = null;\n\t\tthis.layers = new Layers();\n\n\t\tthis.params = {\n\t\t\tMesh: {},\n\t\t\tLine: { threshold: 1 },\n\t\t\tLOD: {},\n\t\t\tPoints: { threshold: 1 },\n\t\t\tSprite: {}\n\t\t};\n\n\t}\n\n\tset( origin, direction ) {\n\n\t\t// direction is assumed to be normalized (for accurate distance calculations)\n\n\t\tthis.ray.set( origin, direction );\n\n\t}\n\n\tsetFromCamera( coords, camera ) {\n\n\t\tif ( camera.isPerspectiveCamera ) {\n\n\t\t\tthis.ray.origin.setFromMatrixPosition( camera.matrixWorld );\n\t\t\tthis.ray.direction.set( coords.x, coords.y, 0.5 ).unproject( camera ).sub( this.ray.origin ).normalize();\n\t\t\tthis.camera = camera;\n\n\t\t} else if ( camera.isOrthographicCamera ) {\n\n\t\t\tthis.ray.origin.set( coords.x, coords.y, ( camera.near + camera.far ) / ( camera.near - camera.far ) ).unproject( camera ); // set origin in plane of camera\n\t\t\tthis.ray.direction.set( 0, 0, - 1 ).transformDirection( camera.matrixWorld );\n\t\t\tthis.camera = camera;\n\n\t\t} else {\n\n\t\t\tconsole.error( 'THREE.Raycaster: Unsupported camera type: ' + camera.type );\n\n\t\t}\n\n\t}\n\n\tintersectObject( object, recursive = true, intersects = [] ) {\n\n\t\tintersectObject( object, this, intersects, recursive );\n\n\t\tintersects.sort( ascSort );\n\n\t\treturn intersects;\n\n\t}\n\n\tintersectObjects( objects, recursive = true, intersects = [] ) {\n\n\t\tfor ( let i = 0, l = objects.length; i < l; i ++ ) {\n\n\t\t\tintersectObject( objects[ i ], this, intersects, recursive );\n\n\t\t}\n\n\t\tintersects.sort( ascSort );\n\n\t\treturn intersects;\n\n\t}\n\n}\n\nfunction ascSort( a, b ) {\n\n\treturn a.distance - b.distance;\n\n}\n\nfunction intersectObject( object, raycaster, intersects, recursive ) {\n\n\tif ( object.layers.test( raycaster.layers ) ) {\n\n\t\tobject.raycast( raycaster, intersects );\n\n\t}\n\n\tif ( recursive === true ) {\n\n\t\tconst children = object.children;\n\n\t\tfor ( let i = 0, l = children.length; i < l; i ++ ) {\n\n\t\t\tintersectObject( children[ i ], raycaster, intersects, true );\n\n\t\t}\n\n\t}\n\n}\n\n/**\n * Ref: https://en.wikipedia.org/wiki/Spherical_coordinate_system\n *\n * The polar angle (phi) is measured from the positive y-axis. The positive y-axis is up.\n * The azimuthal angle (theta) is measured from the positive z-axis.\n */\n\nclass Spherical {\n\n\tconstructor( radius = 1, phi = 0, theta = 0 ) {\n\n\t\tthis.radius = radius;\n\t\tthis.phi = phi; // polar angle\n\t\tthis.theta = theta; // azimuthal angle\n\n\t\treturn this;\n\n\t}\n\n\tset( radius, phi, theta ) {\n\n\t\tthis.radius = radius;\n\t\tthis.phi = phi;\n\t\tthis.theta = theta;\n\n\t\treturn this;\n\n\t}\n\n\tcopy( other ) {\n\n\t\tthis.radius = other.radius;\n\t\tthis.phi = other.phi;\n\t\tthis.theta = other.theta;\n\n\t\treturn this;\n\n\t}\n\n\t// restrict phi to be between EPS and PI-EPS\n\tmakeSafe() {\n\n\t\tconst EPS = 0.000001;\n\t\tthis.phi = Math.max( EPS, Math.min( Math.PI - EPS, this.phi ) );\n\n\t\treturn this;\n\n\t}\n\n\tsetFromVector3( v ) {\n\n\t\treturn this.setFromCartesianCoords( v.x, v.y, v.z );\n\n\t}\n\n\tsetFromCartesianCoords( x, y, z ) {\n\n\t\tthis.radius = Math.sqrt( x * x + y * y + z * z );\n\n\t\tif ( this.radius === 0 ) {\n\n\t\t\tthis.theta = 0;\n\t\t\tthis.phi = 0;\n\n\t\t} else {\n\n\t\t\tthis.theta = Math.atan2( x, z );\n\t\t\tthis.phi = Math.acos( clamp( y / this.radius, - 1, 1 ) );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n}\n\n/**\n * Ref: https://en.wikipedia.org/wiki/Cylindrical_coordinate_system\n */\n\nclass Cylindrical {\n\n\tconstructor( radius = 1, theta = 0, y = 0 ) {\n\n\t\tthis.radius = radius; // distance from the origin to a point in the x-z plane\n\t\tthis.theta = theta; // counterclockwise angle in the x-z plane measured in radians from the positive z-axis\n\t\tthis.y = y; // height above the x-z plane\n\n\t\treturn this;\n\n\t}\n\n\tset( radius, theta, y ) {\n\n\t\tthis.radius = radius;\n\t\tthis.theta = theta;\n\t\tthis.y = y;\n\n\t\treturn this;\n\n\t}\n\n\tcopy( other ) {\n\n\t\tthis.radius = other.radius;\n\t\tthis.theta = other.theta;\n\t\tthis.y = other.y;\n\n\t\treturn this;\n\n\t}\n\n\tsetFromVector3( v ) {\n\n\t\treturn this.setFromCartesianCoords( v.x, v.y, v.z );\n\n\t}\n\n\tsetFromCartesianCoords( x, y, z ) {\n\n\t\tthis.radius = Math.sqrt( x * x + z * z );\n\t\tthis.theta = Math.atan2( x, z );\n\t\tthis.y = y;\n\n\t\treturn this;\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n}\n\nconst _vector$4 = /*@__PURE__*/ new Vector2();\n\nclass Box2 {\n\n\tconstructor( min = new Vector2( + Infinity, + Infinity ), max = new Vector2( - Infinity, - Infinity ) ) {\n\n\t\tthis.isBox2 = true;\n\n\t\tthis.min = min;\n\t\tthis.max = max;\n\n\t}\n\n\tset( min, max ) {\n\n\t\tthis.min.copy( min );\n\t\tthis.max.copy( max );\n\n\t\treturn this;\n\n\t}\n\n\tsetFromPoints( points ) {\n\n\t\tthis.makeEmpty();\n\n\t\tfor ( let i = 0, il = points.length; i < il; i ++ ) {\n\n\t\t\tthis.expandByPoint( points[ i ] );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tsetFromCenterAndSize( center, size ) {\n\n\t\tconst halfSize = _vector$4.copy( size ).multiplyScalar( 0.5 );\n\t\tthis.min.copy( center ).sub( halfSize );\n\t\tthis.max.copy( center ).add( halfSize );\n\n\t\treturn this;\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n\tcopy( box ) {\n\n\t\tthis.min.copy( box.min );\n\t\tthis.max.copy( box.max );\n\n\t\treturn this;\n\n\t}\n\n\tmakeEmpty() {\n\n\t\tthis.min.x = this.min.y = + Infinity;\n\t\tthis.max.x = this.max.y = - Infinity;\n\n\t\treturn this;\n\n\t}\n\n\tisEmpty() {\n\n\t\t// this is a more robust check for empty than ( volume <= 0 ) because volume can get positive with two negative axes\n\n\t\treturn ( this.max.x < this.min.x ) || ( this.max.y < this.min.y );\n\n\t}\n\n\tgetCenter( target ) {\n\n\t\treturn this.isEmpty() ? target.set( 0, 0 ) : target.addVectors( this.min, this.max ).multiplyScalar( 0.5 );\n\n\t}\n\n\tgetSize( target ) {\n\n\t\treturn this.isEmpty() ? target.set( 0, 0 ) : target.subVectors( this.max, this.min );\n\n\t}\n\n\texpandByPoint( point ) {\n\n\t\tthis.min.min( point );\n\t\tthis.max.max( point );\n\n\t\treturn this;\n\n\t}\n\n\texpandByVector( vector ) {\n\n\t\tthis.min.sub( vector );\n\t\tthis.max.add( vector );\n\n\t\treturn this;\n\n\t}\n\n\texpandByScalar( scalar ) {\n\n\t\tthis.min.addScalar( - scalar );\n\t\tthis.max.addScalar( scalar );\n\n\t\treturn this;\n\n\t}\n\n\tcontainsPoint( point ) {\n\n\t\treturn point.x < this.min.x || point.x > this.max.x ||\n\t\t\tpoint.y < this.min.y || point.y > this.max.y ? false : true;\n\n\t}\n\n\tcontainsBox( box ) {\n\n\t\treturn this.min.x <= box.min.x && box.max.x <= this.max.x &&\n\t\t\tthis.min.y <= box.min.y && box.max.y <= this.max.y;\n\n\t}\n\n\tgetParameter( point, target ) {\n\n\t\t// This can potentially have a divide by zero if the box\n\t\t// has a size dimension of 0.\n\n\t\treturn target.set(\n\t\t\t( point.x - this.min.x ) / ( this.max.x - this.min.x ),\n\t\t\t( point.y - this.min.y ) / ( this.max.y - this.min.y )\n\t\t);\n\n\t}\n\n\tintersectsBox( box ) {\n\n\t\t// using 4 splitting planes to rule out intersections\n\n\t\treturn box.max.x < this.min.x || box.min.x > this.max.x ||\n\t\t\tbox.max.y < this.min.y || box.min.y > this.max.y ? false : true;\n\n\t}\n\n\tclampPoint( point, target ) {\n\n\t\treturn target.copy( point ).clamp( this.min, this.max );\n\n\t}\n\n\tdistanceToPoint( point ) {\n\n\t\tconst clampedPoint = _vector$4.copy( point ).clamp( this.min, this.max );\n\t\treturn clampedPoint.sub( point ).length();\n\n\t}\n\n\tintersect( box ) {\n\n\t\tthis.min.max( box.min );\n\t\tthis.max.min( box.max );\n\n\t\treturn this;\n\n\t}\n\n\tunion( box ) {\n\n\t\tthis.min.min( box.min );\n\t\tthis.max.max( box.max );\n\n\t\treturn this;\n\n\t}\n\n\ttranslate( offset ) {\n\n\t\tthis.min.add( offset );\n\t\tthis.max.add( offset );\n\n\t\treturn this;\n\n\t}\n\n\tequals( box ) {\n\n\t\treturn box.min.equals( this.min ) && box.max.equals( this.max );\n\n\t}\n\n}\n\nconst _startP = /*@__PURE__*/ new Vector3();\nconst _startEnd = /*@__PURE__*/ new Vector3();\n\nclass Line3 {\n\n\tconstructor( start = new Vector3(), end = new Vector3() ) {\n\n\t\tthis.start = start;\n\t\tthis.end = end;\n\n\t}\n\n\tset( start, end ) {\n\n\t\tthis.start.copy( start );\n\t\tthis.end.copy( end );\n\n\t\treturn this;\n\n\t}\n\n\tcopy( line ) {\n\n\t\tthis.start.copy( line.start );\n\t\tthis.end.copy( line.end );\n\n\t\treturn this;\n\n\t}\n\n\tgetCenter( target ) {\n\n\t\treturn target.addVectors( this.start, this.end ).multiplyScalar( 0.5 );\n\n\t}\n\n\tdelta( target ) {\n\n\t\treturn target.subVectors( this.end, this.start );\n\n\t}\n\n\tdistanceSq() {\n\n\t\treturn this.start.distanceToSquared( this.end );\n\n\t}\n\n\tdistance() {\n\n\t\treturn this.start.distanceTo( this.end );\n\n\t}\n\n\tat( t, target ) {\n\n\t\treturn this.delta( target ).multiplyScalar( t ).add( this.start );\n\n\t}\n\n\tclosestPointToPointParameter( point, clampToLine ) {\n\n\t\t_startP.subVectors( point, this.start );\n\t\t_startEnd.subVectors( this.end, this.start );\n\n\t\tconst startEnd2 = _startEnd.dot( _startEnd );\n\t\tconst startEnd_startP = _startEnd.dot( _startP );\n\n\t\tlet t = startEnd_startP / startEnd2;\n\n\t\tif ( clampToLine ) {\n\n\t\t\tt = clamp( t, 0, 1 );\n\n\t\t}\n\n\t\treturn t;\n\n\t}\n\n\tclosestPointToPoint( point, clampToLine, target ) {\n\n\t\tconst t = this.closestPointToPointParameter( point, clampToLine );\n\n\t\treturn this.delta( target ).multiplyScalar( t ).add( this.start );\n\n\t}\n\n\tapplyMatrix4( matrix ) {\n\n\t\tthis.start.applyMatrix4( matrix );\n\t\tthis.end.applyMatrix4( matrix );\n\n\t\treturn this;\n\n\t}\n\n\tequals( line ) {\n\n\t\treturn line.start.equals( this.start ) && line.end.equals( this.end );\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n}\n\nconst _vector$3 = /*@__PURE__*/ new Vector3();\n\nclass SpotLightHelper extends Object3D {\n\n\tconstructor( light, color ) {\n\n\t\tsuper();\n\t\tthis.light = light;\n\t\tthis.light.updateMatrixWorld();\n\n\t\tthis.matrix = light.matrixWorld;\n\t\tthis.matrixAutoUpdate = false;\n\n\t\tthis.color = color;\n\n\t\tconst geometry = new BufferGeometry();\n\n\t\tconst positions = [\n\t\t\t0, 0, 0, \t0, 0, 1,\n\t\t\t0, 0, 0, \t1, 0, 1,\n\t\t\t0, 0, 0,\t- 1, 0, 1,\n\t\t\t0, 0, 0, \t0, 1, 1,\n\t\t\t0, 0, 0, \t0, - 1, 1\n\t\t];\n\n\t\tfor ( let i = 0, j = 1, l = 32; i < l; i ++, j ++ ) {\n\n\t\t\tconst p1 = ( i / l ) * Math.PI * 2;\n\t\t\tconst p2 = ( j / l ) * Math.PI * 2;\n\n\t\t\tpositions.push(\n\t\t\t\tMath.cos( p1 ), Math.sin( p1 ), 1,\n\t\t\t\tMath.cos( p2 ), Math.sin( p2 ), 1\n\t\t\t);\n\n\t\t}\n\n\t\tgeometry.setAttribute( 'position', new Float32BufferAttribute( positions, 3 ) );\n\n\t\tconst material = new LineBasicMaterial( { fog: false, toneMapped: false } );\n\n\t\tthis.cone = new LineSegments( geometry, material );\n\t\tthis.add( this.cone );\n\n\t\tthis.update();\n\n\t}\n\n\tdispose() {\n\n\t\tthis.cone.geometry.dispose();\n\t\tthis.cone.material.dispose();\n\n\t}\n\n\tupdate() {\n\n\t\tthis.light.updateMatrixWorld();\n\n\t\tconst coneLength = this.light.distance ? this.light.distance : 1000;\n\t\tconst coneWidth = coneLength * Math.tan( this.light.angle );\n\n\t\tthis.cone.scale.set( coneWidth, coneWidth, coneLength );\n\n\t\t_vector$3.setFromMatrixPosition( this.light.target.matrixWorld );\n\n\t\tthis.cone.lookAt( _vector$3 );\n\n\t\tif ( this.color !== undefined ) {\n\n\t\t\tthis.cone.material.color.set( this.color );\n\n\t\t} else {\n\n\t\t\tthis.cone.material.color.copy( this.light.color );\n\n\t\t}\n\n\t}\n\n}\n\nconst _vector$2 = /*@__PURE__*/ new Vector3();\nconst _boneMatrix = /*@__PURE__*/ new Matrix4();\nconst _matrixWorldInv = /*@__PURE__*/ new Matrix4();\n\n\nclass SkeletonHelper extends LineSegments {\n\n\tconstructor( object ) {\n\n\t\tconst bones = getBoneList( object );\n\n\t\tconst geometry = new BufferGeometry();\n\n\t\tconst vertices = [];\n\t\tconst colors = [];\n\n\t\tconst color1 = new Color( 0, 0, 1 );\n\t\tconst color2 = new Color( 0, 1, 0 );\n\n\t\tfor ( let i = 0; i < bones.length; i ++ ) {\n\n\t\t\tconst bone = bones[ i ];\n\n\t\t\tif ( bone.parent && bone.parent.isBone ) {\n\n\t\t\t\tvertices.push( 0, 0, 0 );\n\t\t\t\tvertices.push( 0, 0, 0 );\n\t\t\t\tcolors.push( color1.r, color1.g, color1.b );\n\t\t\t\tcolors.push( color2.r, color2.g, color2.b );\n\n\t\t\t}\n\n\t\t}\n\n\t\tgeometry.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\t\tgeometry.setAttribute( 'color', new Float32BufferAttribute( colors, 3 ) );\n\n\t\tconst material = new LineBasicMaterial( { vertexColors: true, depthTest: false, depthWrite: false, toneMapped: false, transparent: true } );\n\n\t\tsuper( geometry, material );\n\n\t\tthis.isSkeletonHelper = true;\n\n\t\tthis.type = 'SkeletonHelper';\n\n\t\tthis.root = object;\n\t\tthis.bones = bones;\n\n\t\tthis.matrix = object.matrixWorld;\n\t\tthis.matrixAutoUpdate = false;\n\n\t}\n\n\tupdateMatrixWorld( force ) {\n\n\t\tconst bones = this.bones;\n\n\t\tconst geometry = this.geometry;\n\t\tconst position = geometry.getAttribute( 'position' );\n\n\t\t_matrixWorldInv.copy( this.root.matrixWorld ).invert();\n\n\t\tfor ( let i = 0, j = 0; i < bones.length; i ++ ) {\n\n\t\t\tconst bone = bones[ i ];\n\n\t\t\tif ( bone.parent && bone.parent.isBone ) {\n\n\t\t\t\t_boneMatrix.multiplyMatrices( _matrixWorldInv, bone.matrixWorld );\n\t\t\t\t_vector$2.setFromMatrixPosition( _boneMatrix );\n\t\t\t\tposition.setXYZ( j, _vector$2.x, _vector$2.y, _vector$2.z );\n\n\t\t\t\t_boneMatrix.multiplyMatrices( _matrixWorldInv, bone.parent.matrixWorld );\n\t\t\t\t_vector$2.setFromMatrixPosition( _boneMatrix );\n\t\t\t\tposition.setXYZ( j + 1, _vector$2.x, _vector$2.y, _vector$2.z );\n\n\t\t\t\tj += 2;\n\n\t\t\t}\n\n\t\t}\n\n\t\tgeometry.getAttribute( 'position' ).needsUpdate = true;\n\n\t\tsuper.updateMatrixWorld( force );\n\n\t}\n\n}\n\n\nfunction getBoneList( object ) {\n\n\tconst boneList = [];\n\n\tif ( object.isBone === true ) {\n\n\t\tboneList.push( object );\n\n\t}\n\n\tfor ( let i = 0; i < object.children.length; i ++ ) {\n\n\t\tboneList.push.apply( boneList, getBoneList( object.children[ i ] ) );\n\n\t}\n\n\treturn boneList;\n\n}\n\nclass PointLightHelper extends Mesh {\n\n\tconstructor( light, sphereSize, color ) {\n\n\t\tconst geometry = new SphereGeometry( sphereSize, 4, 2 );\n\t\tconst material = new MeshBasicMaterial( { wireframe: true, fog: false, toneMapped: false } );\n\n\t\tsuper( geometry, material );\n\n\t\tthis.light = light;\n\t\tthis.light.updateMatrixWorld();\n\n\t\tthis.color = color;\n\n\t\tthis.type = 'PointLightHelper';\n\n\t\tthis.matrix = this.light.matrixWorld;\n\t\tthis.matrixAutoUpdate = false;\n\n\t\tthis.update();\n\n\n\t\t/*\n\t// TODO: delete this comment?\n\tconst distanceGeometry = new THREE.IcosahedronGeometry( 1, 2 );\n\tconst distanceMaterial = new THREE.MeshBasicMaterial( { color: hexColor, fog: false, wireframe: true, opacity: 0.1, transparent: true } );\n\n\tthis.lightSphere = new THREE.Mesh( bulbGeometry, bulbMaterial );\n\tthis.lightDistance = new THREE.Mesh( distanceGeometry, distanceMaterial );\n\n\tconst d = light.distance;\n\n\tif ( d === 0.0 ) {\n\n\t\tthis.lightDistance.visible = false;\n\n\t} else {\n\n\t\tthis.lightDistance.scale.set( d, d, d );\n\n\t}\n\n\tthis.add( this.lightDistance );\n\t*/\n\n\t}\n\n\tdispose() {\n\n\t\tthis.geometry.dispose();\n\t\tthis.material.dispose();\n\n\t}\n\n\tupdate() {\n\n\t\tif ( this.color !== undefined ) {\n\n\t\t\tthis.material.color.set( this.color );\n\n\t\t} else {\n\n\t\t\tthis.material.color.copy( this.light.color );\n\n\t\t}\n\n\t\t/*\n\t\tconst d = this.light.distance;\n\n\t\tif ( d === 0.0 ) {\n\n\t\t\tthis.lightDistance.visible = false;\n\n\t\t} else {\n\n\t\t\tthis.lightDistance.visible = true;\n\t\t\tthis.lightDistance.scale.set( d, d, d );\n\n\t\t}\n\t\t*/\n\n\t}\n\n}\n\nconst _vector$1 = /*@__PURE__*/ new Vector3();\nconst _color1 = /*@__PURE__*/ new Color();\nconst _color2 = /*@__PURE__*/ new Color();\n\nclass HemisphereLightHelper extends Object3D {\n\n\tconstructor( light, size, color ) {\n\n\t\tsuper();\n\t\tthis.light = light;\n\t\tthis.light.updateMatrixWorld();\n\n\t\tthis.matrix = light.matrixWorld;\n\t\tthis.matrixAutoUpdate = false;\n\n\t\tthis.color = color;\n\n\t\tconst geometry = new OctahedronGeometry( size );\n\t\tgeometry.rotateY( Math.PI * 0.5 );\n\n\t\tthis.material = new MeshBasicMaterial( { wireframe: true, fog: false, toneMapped: false } );\n\t\tif ( this.color === undefined ) this.material.vertexColors = true;\n\n\t\tconst position = geometry.getAttribute( 'position' );\n\t\tconst colors = new Float32Array( position.count * 3 );\n\n\t\tgeometry.setAttribute( 'color', new BufferAttribute( colors, 3 ) );\n\n\t\tthis.add( new Mesh( geometry, this.material ) );\n\n\t\tthis.update();\n\n\t}\n\n\tdispose() {\n\n\t\tthis.children[ 0 ].geometry.dispose();\n\t\tthis.children[ 0 ].material.dispose();\n\n\t}\n\n\tupdate() {\n\n\t\tconst mesh = this.children[ 0 ];\n\n\t\tif ( this.color !== undefined ) {\n\n\t\t\tthis.material.color.set( this.color );\n\n\t\t} else {\n\n\t\t\tconst colors = mesh.geometry.getAttribute( 'color' );\n\n\t\t\t_color1.copy( this.light.color );\n\t\t\t_color2.copy( this.light.groundColor );\n\n\t\t\tfor ( let i = 0, l = colors.count; i < l; i ++ ) {\n\n\t\t\t\tconst color = ( i < ( l / 2 ) ) ? _color1 : _color2;\n\n\t\t\t\tcolors.setXYZ( i, color.r, color.g, color.b );\n\n\t\t\t}\n\n\t\t\tcolors.needsUpdate = true;\n\n\t\t}\n\n\t\tmesh.lookAt( _vector$1.setFromMatrixPosition( this.light.matrixWorld ).negate() );\n\n\t}\n\n}\n\nclass GridHelper extends LineSegments {\n\n\tconstructor( size = 10, divisions = 10, color1 = 0x444444, color2 = 0x888888 ) {\n\n\t\tcolor1 = new Color( color1 );\n\t\tcolor2 = new Color( color2 );\n\n\t\tconst center = divisions / 2;\n\t\tconst step = size / divisions;\n\t\tconst halfSize = size / 2;\n\n\t\tconst vertices = [], colors = [];\n\n\t\tfor ( let i = 0, j = 0, k = - halfSize; i <= divisions; i ++, k += step ) {\n\n\t\t\tvertices.push( - halfSize, 0, k, halfSize, 0, k );\n\t\t\tvertices.push( k, 0, - halfSize, k, 0, halfSize );\n\n\t\t\tconst color = i === center ? color1 : color2;\n\n\t\t\tcolor.toArray( colors, j ); j += 3;\n\t\t\tcolor.toArray( colors, j ); j += 3;\n\t\t\tcolor.toArray( colors, j ); j += 3;\n\t\t\tcolor.toArray( colors, j ); j += 3;\n\n\t\t}\n\n\t\tconst geometry = new BufferGeometry();\n\t\tgeometry.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\t\tgeometry.setAttribute( 'color', new Float32BufferAttribute( colors, 3 ) );\n\n\t\tconst material = new LineBasicMaterial( { vertexColors: true, toneMapped: false } );\n\n\t\tsuper( geometry, material );\n\n\t\tthis.type = 'GridHelper';\n\n\t}\n\n}\n\nclass PolarGridHelper extends LineSegments {\n\n\tconstructor( radius = 10, radials = 16, circles = 8, divisions = 64, color1 = 0x444444, color2 = 0x888888 ) {\n\n\t\tcolor1 = new Color( color1 );\n\t\tcolor2 = new Color( color2 );\n\n\t\tconst vertices = [];\n\t\tconst colors = [];\n\n\t\t// create the radials\n\n\t\tfor ( let i = 0; i <= radials; i ++ ) {\n\n\t\t\tconst v = ( i / radials ) * ( Math.PI * 2 );\n\n\t\t\tconst x = Math.sin( v ) * radius;\n\t\t\tconst z = Math.cos( v ) * radius;\n\n\t\t\tvertices.push( 0, 0, 0 );\n\t\t\tvertices.push( x, 0, z );\n\n\t\t\tconst color = ( i & 1 ) ? color1 : color2;\n\n\t\t\tcolors.push( color.r, color.g, color.b );\n\t\t\tcolors.push( color.r, color.g, color.b );\n\n\t\t}\n\n\t\t// create the circles\n\n\t\tfor ( let i = 0; i <= circles; i ++ ) {\n\n\t\t\tconst color = ( i & 1 ) ? color1 : color2;\n\n\t\t\tconst r = radius - ( radius / circles * i );\n\n\t\t\tfor ( let j = 0; j < divisions; j ++ ) {\n\n\t\t\t\t// first vertex\n\n\t\t\t\tlet v = ( j / divisions ) * ( Math.PI * 2 );\n\n\t\t\t\tlet x = Math.sin( v ) * r;\n\t\t\t\tlet z = Math.cos( v ) * r;\n\n\t\t\t\tvertices.push( x, 0, z );\n\t\t\t\tcolors.push( color.r, color.g, color.b );\n\n\t\t\t\t// second vertex\n\n\t\t\t\tv = ( ( j + 1 ) / divisions ) * ( Math.PI * 2 );\n\n\t\t\t\tx = Math.sin( v ) * r;\n\t\t\t\tz = Math.cos( v ) * r;\n\n\t\t\t\tvertices.push( x, 0, z );\n\t\t\t\tcolors.push( color.r, color.g, color.b );\n\n\t\t\t}\n\n\t\t}\n\n\t\tconst geometry = new BufferGeometry();\n\t\tgeometry.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\t\tgeometry.setAttribute( 'color', new Float32BufferAttribute( colors, 3 ) );\n\n\t\tconst material = new LineBasicMaterial( { vertexColors: true, toneMapped: false } );\n\n\t\tsuper( geometry, material );\n\n\t\tthis.type = 'PolarGridHelper';\n\n\t}\n\n}\n\nconst _v1 = /*@__PURE__*/ new Vector3();\nconst _v2 = /*@__PURE__*/ new Vector3();\nconst _v3 = /*@__PURE__*/ new Vector3();\n\nclass DirectionalLightHelper extends Object3D {\n\n\tconstructor( light, size, color ) {\n\n\t\tsuper();\n\t\tthis.light = light;\n\t\tthis.light.updateMatrixWorld();\n\n\t\tthis.matrix = light.matrixWorld;\n\t\tthis.matrixAutoUpdate = false;\n\n\t\tthis.color = color;\n\n\t\tif ( size === undefined ) size = 1;\n\n\t\tlet geometry = new BufferGeometry();\n\t\tgeometry.setAttribute( 'position', new Float32BufferAttribute( [\n\t\t\t- size, size, 0,\n\t\t\tsize, size, 0,\n\t\t\tsize, - size, 0,\n\t\t\t- size, - size, 0,\n\t\t\t- size, size, 0\n\t\t], 3 ) );\n\n\t\tconst material = new LineBasicMaterial( { fog: false, toneMapped: false } );\n\n\t\tthis.lightPlane = new Line( geometry, material );\n\t\tthis.add( this.lightPlane );\n\n\t\tgeometry = new BufferGeometry();\n\t\tgeometry.setAttribute( 'position', new Float32BufferAttribute( [ 0, 0, 0, 0, 0, 1 ], 3 ) );\n\n\t\tthis.targetLine = new Line( geometry, material );\n\t\tthis.add( this.targetLine );\n\n\t\tthis.update();\n\n\t}\n\n\tdispose() {\n\n\t\tthis.lightPlane.geometry.dispose();\n\t\tthis.lightPlane.material.dispose();\n\t\tthis.targetLine.geometry.dispose();\n\t\tthis.targetLine.material.dispose();\n\n\t}\n\n\tupdate() {\n\n\t\t_v1.setFromMatrixPosition( this.light.matrixWorld );\n\t\t_v2.setFromMatrixPosition( this.light.target.matrixWorld );\n\t\t_v3.subVectors( _v2, _v1 );\n\n\t\tthis.lightPlane.lookAt( _v2 );\n\n\t\tif ( this.color !== undefined ) {\n\n\t\t\tthis.lightPlane.material.color.set( this.color );\n\t\t\tthis.targetLine.material.color.set( this.color );\n\n\t\t} else {\n\n\t\t\tthis.lightPlane.material.color.copy( this.light.color );\n\t\t\tthis.targetLine.material.color.copy( this.light.color );\n\n\t\t}\n\n\t\tthis.targetLine.lookAt( _v2 );\n\t\tthis.targetLine.scale.z = _v3.length();\n\n\t}\n\n}\n\nconst _vector = /*@__PURE__*/ new Vector3();\nconst _camera = /*@__PURE__*/ new Camera();\n\n/**\n *\t- shows frustum, line of sight and up of the camera\n *\t- suitable for fast updates\n * \t- based on frustum visualization in lightgl.js shadowmap example\n *\t\thttps://github.com/evanw/lightgl.js/blob/master/tests/shadowmap.html\n */\n\nclass CameraHelper extends LineSegments {\n\n\tconstructor( camera ) {\n\n\t\tconst geometry = new BufferGeometry();\n\t\tconst material = new LineBasicMaterial( { color: 0xffffff, vertexColors: true, toneMapped: false } );\n\n\t\tconst vertices = [];\n\t\tconst colors = [];\n\n\t\tconst pointMap = {};\n\n\t\t// colors\n\n\t\tconst colorFrustum = new Color( 0xffaa00 );\n\t\tconst colorCone = new Color( 0xff0000 );\n\t\tconst colorUp = new Color( 0x00aaff );\n\t\tconst colorTarget = new Color( 0xffffff );\n\t\tconst colorCross = new Color( 0x333333 );\n\n\t\t// near\n\n\t\taddLine( 'n1', 'n2', colorFrustum );\n\t\taddLine( 'n2', 'n4', colorFrustum );\n\t\taddLine( 'n4', 'n3', colorFrustum );\n\t\taddLine( 'n3', 'n1', colorFrustum );\n\n\t\t// far\n\n\t\taddLine( 'f1', 'f2', colorFrustum );\n\t\taddLine( 'f2', 'f4', colorFrustum );\n\t\taddLine( 'f4', 'f3', colorFrustum );\n\t\taddLine( 'f3', 'f1', colorFrustum );\n\n\t\t// sides\n\n\t\taddLine( 'n1', 'f1', colorFrustum );\n\t\taddLine( 'n2', 'f2', colorFrustum );\n\t\taddLine( 'n3', 'f3', colorFrustum );\n\t\taddLine( 'n4', 'f4', colorFrustum );\n\n\t\t// cone\n\n\t\taddLine( 'p', 'n1', colorCone );\n\t\taddLine( 'p', 'n2', colorCone );\n\t\taddLine( 'p', 'n3', colorCone );\n\t\taddLine( 'p', 'n4', colorCone );\n\n\t\t// up\n\n\t\taddLine( 'u1', 'u2', colorUp );\n\t\taddLine( 'u2', 'u3', colorUp );\n\t\taddLine( 'u3', 'u1', colorUp );\n\n\t\t// target\n\n\t\taddLine( 'c', 't', colorTarget );\n\t\taddLine( 'p', 'c', colorCross );\n\n\t\t// cross\n\n\t\taddLine( 'cn1', 'cn2', colorCross );\n\t\taddLine( 'cn3', 'cn4', colorCross );\n\n\t\taddLine( 'cf1', 'cf2', colorCross );\n\t\taddLine( 'cf3', 'cf4', colorCross );\n\n\t\tfunction addLine( a, b, color ) {\n\n\t\t\taddPoint( a, color );\n\t\t\taddPoint( b, color );\n\n\t\t}\n\n\t\tfunction addPoint( id, color ) {\n\n\t\t\tvertices.push( 0, 0, 0 );\n\t\t\tcolors.push( color.r, color.g, color.b );\n\n\t\t\tif ( pointMap[ id ] === undefined ) {\n\n\t\t\t\tpointMap[ id ] = [];\n\n\t\t\t}\n\n\t\t\tpointMap[ id ].push( ( vertices.length / 3 ) - 1 );\n\n\t\t}\n\n\t\tgeometry.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\t\tgeometry.setAttribute( 'color', new Float32BufferAttribute( colors, 3 ) );\n\n\t\tsuper( geometry, material );\n\n\t\tthis.type = 'CameraHelper';\n\n\t\tthis.camera = camera;\n\t\tif ( this.camera.updateProjectionMatrix ) this.camera.updateProjectionMatrix();\n\n\t\tthis.matrix = camera.matrixWorld;\n\t\tthis.matrixAutoUpdate = false;\n\n\t\tthis.pointMap = pointMap;\n\n\t\tthis.update();\n\n\t}\n\n\tupdate() {\n\n\t\tconst geometry = this.geometry;\n\t\tconst pointMap = this.pointMap;\n\n\t\tconst w = 1, h = 1;\n\n\t\t// we need just camera projection matrix inverse\n\t\t// world matrix must be identity\n\n\t\t_camera.projectionMatrixInverse.copy( this.camera.projectionMatrixInverse );\n\n\t\t// center / target\n\n\t\tsetPoint( 'c', pointMap, geometry, _camera, 0, 0, - 1 );\n\t\tsetPoint( 't', pointMap, geometry, _camera, 0, 0, 1 );\n\n\t\t// near\n\n\t\tsetPoint( 'n1', pointMap, geometry, _camera, - w, - h, - 1 );\n\t\tsetPoint( 'n2', pointMap, geometry, _camera, w, - h, - 1 );\n\t\tsetPoint( 'n3', pointMap, geometry, _camera, - w, h, - 1 );\n\t\tsetPoint( 'n4', pointMap, geometry, _camera, w, h, - 1 );\n\n\t\t// far\n\n\t\tsetPoint( 'f1', pointMap, geometry, _camera, - w, - h, 1 );\n\t\tsetPoint( 'f2', pointMap, geometry, _camera, w, - h, 1 );\n\t\tsetPoint( 'f3', pointMap, geometry, _camera, - w, h, 1 );\n\t\tsetPoint( 'f4', pointMap, geometry, _camera, w, h, 1 );\n\n\t\t// up\n\n\t\tsetPoint( 'u1', pointMap, geometry, _camera, w * 0.7, h * 1.1, - 1 );\n\t\tsetPoint( 'u2', pointMap, geometry, _camera, - w * 0.7, h * 1.1, - 1 );\n\t\tsetPoint( 'u3', pointMap, geometry, _camera, 0, h * 2, - 1 );\n\n\t\t// cross\n\n\t\tsetPoint( 'cf1', pointMap, geometry, _camera, - w, 0, 1 );\n\t\tsetPoint( 'cf2', pointMap, geometry, _camera, w, 0, 1 );\n\t\tsetPoint( 'cf3', pointMap, geometry, _camera, 0, - h, 1 );\n\t\tsetPoint( 'cf4', pointMap, geometry, _camera, 0, h, 1 );\n\n\t\tsetPoint( 'cn1', pointMap, geometry, _camera, - w, 0, - 1 );\n\t\tsetPoint( 'cn2', pointMap, geometry, _camera, w, 0, - 1 );\n\t\tsetPoint( 'cn3', pointMap, geometry, _camera, 0, - h, - 1 );\n\t\tsetPoint( 'cn4', pointMap, geometry, _camera, 0, h, - 1 );\n\n\t\tgeometry.getAttribute( 'position' ).needsUpdate = true;\n\n\t}\n\n\tdispose() {\n\n\t\tthis.geometry.dispose();\n\t\tthis.material.dispose();\n\n\t}\n\n}\n\n\nfunction setPoint( point, pointMap, geometry, camera, x, y, z ) {\n\n\t_vector.set( x, y, z ).unproject( camera );\n\n\tconst points = pointMap[ point ];\n\n\tif ( points !== undefined ) {\n\n\t\tconst position = geometry.getAttribute( 'position' );\n\n\t\tfor ( let i = 0, l = points.length; i < l; i ++ ) {\n\n\t\t\tposition.setXYZ( points[ i ], _vector.x, _vector.y, _vector.z );\n\n\t\t}\n\n\t}\n\n}\n\nconst _box = /*@__PURE__*/ new Box3();\n\nclass BoxHelper extends LineSegments {\n\n\tconstructor( object, color = 0xffff00 ) {\n\n\t\tconst indices = new Uint16Array( [ 0, 1, 1, 2, 2, 3, 3, 0, 4, 5, 5, 6, 6, 7, 7, 4, 0, 4, 1, 5, 2, 6, 3, 7 ] );\n\t\tconst positions = new Float32Array( 8 * 3 );\n\n\t\tconst geometry = new BufferGeometry();\n\t\tgeometry.setIndex( new BufferAttribute( indices, 1 ) );\n\t\tgeometry.setAttribute( 'position', new BufferAttribute( positions, 3 ) );\n\n\t\tsuper( geometry, new LineBasicMaterial( { color: color, toneMapped: false } ) );\n\n\t\tthis.object = object;\n\t\tthis.type = 'BoxHelper';\n\n\t\tthis.matrixAutoUpdate = false;\n\n\t\tthis.update();\n\n\t}\n\n\tupdate( object ) {\n\n\t\tif ( object !== undefined ) {\n\n\t\t\tconsole.warn( 'THREE.BoxHelper: .update() has no longer arguments.' );\n\n\t\t}\n\n\t\tif ( this.object !== undefined ) {\n\n\t\t\t_box.setFromObject( this.object );\n\n\t\t}\n\n\t\tif ( _box.isEmpty() ) return;\n\n\t\tconst min = _box.min;\n\t\tconst max = _box.max;\n\n\t\t/*\n\t\t\t5____4\n\t\t1/___0/|\n\t\t| 6__|_7\n\t\t2/___3/\n\n\t\t0: max.x, max.y, max.z\n\t\t1: min.x, max.y, max.z\n\t\t2: min.x, min.y, max.z\n\t\t3: max.x, min.y, max.z\n\t\t4: max.x, max.y, min.z\n\t\t5: min.x, max.y, min.z\n\t\t6: min.x, min.y, min.z\n\t\t7: max.x, min.y, min.z\n\t\t*/\n\n\t\tconst position = this.geometry.attributes.position;\n\t\tconst array = position.array;\n\n\t\tarray[ 0 ] = max.x; array[ 1 ] = max.y; array[ 2 ] = max.z;\n\t\tarray[ 3 ] = min.x; array[ 4 ] = max.y; array[ 5 ] = max.z;\n\t\tarray[ 6 ] = min.x; array[ 7 ] = min.y; array[ 8 ] = max.z;\n\t\tarray[ 9 ] = max.x; array[ 10 ] = min.y; array[ 11 ] = max.z;\n\t\tarray[ 12 ] = max.x; array[ 13 ] = max.y; array[ 14 ] = min.z;\n\t\tarray[ 15 ] = min.x; array[ 16 ] = max.y; array[ 17 ] = min.z;\n\t\tarray[ 18 ] = min.x; array[ 19 ] = min.y; array[ 20 ] = min.z;\n\t\tarray[ 21 ] = max.x; array[ 22 ] = min.y; array[ 23 ] = min.z;\n\n\t\tposition.needsUpdate = true;\n\n\t\tthis.geometry.computeBoundingSphere();\n\n\n\t}\n\n\tsetFromObject( object ) {\n\n\t\tthis.object = object;\n\t\tthis.update();\n\n\t\treturn this;\n\n\t}\n\n\tcopy( source, recursive ) {\n\n\t\tsuper.copy( source, recursive );\n\n\t\tthis.object = source.object;\n\n\t\treturn this;\n\n\t}\n\n}\n\nclass Box3Helper extends LineSegments {\n\n\tconstructor( box, color = 0xffff00 ) {\n\n\t\tconst indices = new Uint16Array( [ 0, 1, 1, 2, 2, 3, 3, 0, 4, 5, 5, 6, 6, 7, 7, 4, 0, 4, 1, 5, 2, 6, 3, 7 ] );\n\n\t\tconst positions = [ 1, 1, 1, - 1, 1, 1, - 1, - 1, 1, 1, - 1, 1, 1, 1, - 1, - 1, 1, - 1, - 1, - 1, - 1, 1, - 1, - 1 ];\n\n\t\tconst geometry = new BufferGeometry();\n\n\t\tgeometry.setIndex( new BufferAttribute( indices, 1 ) );\n\n\t\tgeometry.setAttribute( 'position', new Float32BufferAttribute( positions, 3 ) );\n\n\t\tsuper( geometry, new LineBasicMaterial( { color: color, toneMapped: false } ) );\n\n\t\tthis.box = box;\n\n\t\tthis.type = 'Box3Helper';\n\n\t\tthis.geometry.computeBoundingSphere();\n\n\t}\n\n\tupdateMatrixWorld( force ) {\n\n\t\tconst box = this.box;\n\n\t\tif ( box.isEmpty() ) return;\n\n\t\tbox.getCenter( this.position );\n\n\t\tbox.getSize( this.scale );\n\n\t\tthis.scale.multiplyScalar( 0.5 );\n\n\t\tsuper.updateMatrixWorld( force );\n\n\t}\n\n}\n\nclass PlaneHelper extends Line {\n\n\tconstructor( plane, size = 1, hex = 0xffff00 ) {\n\n\t\tconst color = hex;\n\n\t\tconst positions = [ 1, - 1, 1, - 1, 1, 1, - 1, - 1, 1, 1, 1, 1, - 1, 1, 1, - 1, - 1, 1, 1, - 1, 1, 1, 1, 1, 0, 0, 1, 0, 0, 0 ];\n\n\t\tconst geometry = new BufferGeometry();\n\t\tgeometry.setAttribute( 'position', new Float32BufferAttribute( positions, 3 ) );\n\t\tgeometry.computeBoundingSphere();\n\n\t\tsuper( geometry, new LineBasicMaterial( { color: color, toneMapped: false } ) );\n\n\t\tthis.type = 'PlaneHelper';\n\n\t\tthis.plane = plane;\n\n\t\tthis.size = size;\n\n\t\tconst positions2 = [ 1, 1, 1, - 1, 1, 1, - 1, - 1, 1, 1, 1, 1, - 1, - 1, 1, 1, - 1, 1 ];\n\n\t\tconst geometry2 = new BufferGeometry();\n\t\tgeometry2.setAttribute( 'position', new Float32BufferAttribute( positions2, 3 ) );\n\t\tgeometry2.computeBoundingSphere();\n\n\t\tthis.add( new Mesh( geometry2, new MeshBasicMaterial( { color: color, opacity: 0.2, transparent: true, depthWrite: false, toneMapped: false } ) ) );\n\n\t}\n\n\tupdateMatrixWorld( force ) {\n\n\t\tlet scale = - this.plane.constant;\n\n\t\tif ( Math.abs( scale ) < 1e-8 ) scale = 1e-8; // sign does not matter\n\n\t\tthis.scale.set( 0.5 * this.size, 0.5 * this.size, scale );\n\n\t\tthis.children[ 0 ].material.side = ( scale < 0 ) ? BackSide : FrontSide; // renderer flips side when determinant < 0; flipping not wanted here\n\n\t\tthis.lookAt( this.plane.normal );\n\n\t\tsuper.updateMatrixWorld( force );\n\n\t}\n\n}\n\nconst _axis = /*@__PURE__*/ new Vector3();\nlet _lineGeometry, _coneGeometry;\n\nclass ArrowHelper extends Object3D {\n\n\t// dir is assumed to be normalized\n\n\tconstructor( dir = new Vector3( 0, 0, 1 ), origin = new Vector3( 0, 0, 0 ), length = 1, color = 0xffff00, headLength = length * 0.2, headWidth = headLength * 0.2 ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'ArrowHelper';\n\n\t\tif ( _lineGeometry === undefined ) {\n\n\t\t\t_lineGeometry = new BufferGeometry();\n\t\t\t_lineGeometry.setAttribute( 'position', new Float32BufferAttribute( [ 0, 0, 0, 0, 1, 0 ], 3 ) );\n\n\t\t\t_coneGeometry = new CylinderGeometry( 0, 0.5, 1, 5, 1 );\n\t\t\t_coneGeometry.translate( 0, - 0.5, 0 );\n\n\t\t}\n\n\t\tthis.position.copy( origin );\n\n\t\tthis.line = new Line( _lineGeometry, new LineBasicMaterial( { color: color, toneMapped: false } ) );\n\t\tthis.line.matrixAutoUpdate = false;\n\t\tthis.add( this.line );\n\n\t\tthis.cone = new Mesh( _coneGeometry, new MeshBasicMaterial( { color: color, toneMapped: false } ) );\n\t\tthis.cone.matrixAutoUpdate = false;\n\t\tthis.add( this.cone );\n\n\t\tthis.setDirection( dir );\n\t\tthis.setLength( length, headLength, headWidth );\n\n\t}\n\n\tsetDirection( dir ) {\n\n\t\t// dir is assumed to be normalized\n\n\t\tif ( dir.y > 0.99999 ) {\n\n\t\t\tthis.quaternion.set( 0, 0, 0, 1 );\n\n\t\t} else if ( dir.y < - 0.99999 ) {\n\n\t\t\tthis.quaternion.set( 1, 0, 0, 0 );\n\n\t\t} else {\n\n\t\t\t_axis.set( dir.z, 0, - dir.x ).normalize();\n\n\t\t\tconst radians = Math.acos( dir.y );\n\n\t\t\tthis.quaternion.setFromAxisAngle( _axis, radians );\n\n\t\t}\n\n\t}\n\n\tsetLength( length, headLength = length * 0.2, headWidth = headLength * 0.2 ) {\n\n\t\tthis.line.scale.set( 1, Math.max( 0.0001, length - headLength ), 1 ); // see #17458\n\t\tthis.line.updateMatrix();\n\n\t\tthis.cone.scale.set( headWidth, headLength, headWidth );\n\t\tthis.cone.position.y = length;\n\t\tthis.cone.updateMatrix();\n\n\t}\n\n\tsetColor( color ) {\n\n\t\tthis.line.material.color.set( color );\n\t\tthis.cone.material.color.set( color );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source, false );\n\n\t\tthis.line.copy( source.line );\n\t\tthis.cone.copy( source.cone );\n\n\t\treturn this;\n\n\t}\n\n}\n\nclass AxesHelper extends LineSegments {\n\n\tconstructor( size = 1 ) {\n\n\t\tconst vertices = [\n\t\t\t0, 0, 0,\tsize, 0, 0,\n\t\t\t0, 0, 0,\t0, size, 0,\n\t\t\t0, 0, 0,\t0, 0, size\n\t\t];\n\n\t\tconst colors = [\n\t\t\t1, 0, 0,\t1, 0.6, 0,\n\t\t\t0, 1, 0,\t0.6, 1, 0,\n\t\t\t0, 0, 1,\t0, 0.6, 1\n\t\t];\n\n\t\tconst geometry = new BufferGeometry();\n\t\tgeometry.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\t\tgeometry.setAttribute( 'color', new Float32BufferAttribute( colors, 3 ) );\n\n\t\tconst material = new LineBasicMaterial( { vertexColors: true, toneMapped: false } );\n\n\t\tsuper( geometry, material );\n\n\t\tthis.type = 'AxesHelper';\n\n\t}\n\n\tsetColors( xAxisColor, yAxisColor, zAxisColor ) {\n\n\t\tconst color = new Color();\n\t\tconst array = this.geometry.attributes.color.array;\n\n\t\tcolor.set( xAxisColor );\n\t\tcolor.toArray( array, 0 );\n\t\tcolor.toArray( array, 3 );\n\n\t\tcolor.set( yAxisColor );\n\t\tcolor.toArray( array, 6 );\n\t\tcolor.toArray( array, 9 );\n\n\t\tcolor.set( zAxisColor );\n\t\tcolor.toArray( array, 12 );\n\t\tcolor.toArray( array, 15 );\n\n\t\tthis.geometry.attributes.color.needsUpdate = true;\n\n\t\treturn this;\n\n\t}\n\n\tdispose() {\n\n\t\tthis.geometry.dispose();\n\t\tthis.material.dispose();\n\n\t}\n\n}\n\nclass ShapePath {\n\n\tconstructor() {\n\n\t\tthis.type = 'ShapePath';\n\n\t\tthis.color = new Color();\n\n\t\tthis.subPaths = [];\n\t\tthis.currentPath = null;\n\n\t}\n\n\tmoveTo( x, y ) {\n\n\t\tthis.currentPath = new Path();\n\t\tthis.subPaths.push( this.currentPath );\n\t\tthis.currentPath.moveTo( x, y );\n\n\t\treturn this;\n\n\t}\n\n\tlineTo( x, y ) {\n\n\t\tthis.currentPath.lineTo( x, y );\n\n\t\treturn this;\n\n\t}\n\n\tquadraticCurveTo( aCPx, aCPy, aX, aY ) {\n\n\t\tthis.currentPath.quadraticCurveTo( aCPx, aCPy, aX, aY );\n\n\t\treturn this;\n\n\t}\n\n\tbezierCurveTo( aCP1x, aCP1y, aCP2x, aCP2y, aX, aY ) {\n\n\t\tthis.currentPath.bezierCurveTo( aCP1x, aCP1y, aCP2x, aCP2y, aX, aY );\n\n\t\treturn this;\n\n\t}\n\n\tsplineThru( pts ) {\n\n\t\tthis.currentPath.splineThru( pts );\n\n\t\treturn this;\n\n\t}\n\n\ttoShapes( isCCW, noHoles ) {\n\n\t\tfunction toShapesNoHoles( inSubpaths ) {\n\n\t\t\tconst shapes = [];\n\n\t\t\tfor ( let i = 0, l = inSubpaths.length; i < l; i ++ ) {\n\n\t\t\t\tconst tmpPath = inSubpaths[ i ];\n\n\t\t\t\tconst tmpShape = new Shape();\n\t\t\t\ttmpShape.curves = tmpPath.curves;\n\n\t\t\t\tshapes.push( tmpShape );\n\n\t\t\t}\n\n\t\t\treturn shapes;\n\n\t\t}\n\n\t\tfunction isPointInsidePolygon( inPt, inPolygon ) {\n\n\t\t\tconst polyLen = inPolygon.length;\n\n\t\t\t// inPt on polygon contour => immediate success or\n\t\t\t// toggling of inside/outside at every single! intersection point of an edge\n\t\t\t// with the horizontal line through inPt, left of inPt\n\t\t\t// not counting lowerY endpoints of edges and whole edges on that line\n\t\t\tlet inside = false;\n\t\t\tfor ( let p = polyLen - 1, q = 0; q < polyLen; p = q ++ ) {\n\n\t\t\t\tlet edgeLowPt = inPolygon[ p ];\n\t\t\t\tlet edgeHighPt = inPolygon[ q ];\n\n\t\t\t\tlet edgeDx = edgeHighPt.x - edgeLowPt.x;\n\t\t\t\tlet edgeDy = edgeHighPt.y - edgeLowPt.y;\n\n\t\t\t\tif ( Math.abs( edgeDy ) > Number.EPSILON ) {\n\n\t\t\t\t\t// not parallel\n\t\t\t\t\tif ( edgeDy < 0 ) {\n\n\t\t\t\t\t\tedgeLowPt = inPolygon[ q ]; edgeDx = - edgeDx;\n\t\t\t\t\t\tedgeHighPt = inPolygon[ p ]; edgeDy = - edgeDy;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( ( inPt.y < edgeLowPt.y ) || ( inPt.y > edgeHighPt.y ) ) \t\tcontinue;\n\n\t\t\t\t\tif ( inPt.y === edgeLowPt.y ) {\n\n\t\t\t\t\t\tif ( inPt.x === edgeLowPt.x )\t\treturn\ttrue;\t\t// inPt is on contour ?\n\t\t\t\t\t\t// continue;\t\t\t\t// no intersection or edgeLowPt => doesn't count !!!\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tconst perpEdge = edgeDy * ( inPt.x - edgeLowPt.x ) - edgeDx * ( inPt.y - edgeLowPt.y );\n\t\t\t\t\t\tif ( perpEdge === 0 )\t\t\t\treturn\ttrue;\t\t// inPt is on contour ?\n\t\t\t\t\t\tif ( perpEdge < 0 ) \t\t\t\tcontinue;\n\t\t\t\t\t\tinside = ! inside;\t\t// true intersection left of inPt\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// parallel or collinear\n\t\t\t\t\tif ( inPt.y !== edgeLowPt.y ) \t\tcontinue;\t\t\t// parallel\n\t\t\t\t\t// edge lies on the same horizontal line as inPt\n\t\t\t\t\tif ( ( ( edgeHighPt.x <= inPt.x ) && ( inPt.x <= edgeLowPt.x ) ) ||\n\t\t\t\t\t\t ( ( edgeLowPt.x <= inPt.x ) && ( inPt.x <= edgeHighPt.x ) ) )\t\treturn\ttrue;\t// inPt: Point on contour !\n\t\t\t\t\t// continue;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn\tinside;\n\n\t\t}\n\n\t\tconst isClockWise = ShapeUtils.isClockWise;\n\n\t\tconst subPaths = this.subPaths;\n\t\tif ( subPaths.length === 0 ) return [];\n\n\t\tif ( noHoles === true )\treturn\ttoShapesNoHoles( subPaths );\n\n\n\t\tlet solid, tmpPath, tmpShape;\n\t\tconst shapes = [];\n\n\t\tif ( subPaths.length === 1 ) {\n\n\t\t\ttmpPath = subPaths[ 0 ];\n\t\t\ttmpShape = new Shape();\n\t\t\ttmpShape.curves = tmpPath.curves;\n\t\t\tshapes.push( tmpShape );\n\t\t\treturn shapes;\n\n\t\t}\n\n\t\tlet holesFirst = ! isClockWise( subPaths[ 0 ].getPoints() );\n\t\tholesFirst = isCCW ? ! holesFirst : holesFirst;\n\n\t\t// console.log(\"Holes first\", holesFirst);\n\n\t\tconst betterShapeHoles = [];\n\t\tconst newShapes = [];\n\t\tlet newShapeHoles = [];\n\t\tlet mainIdx = 0;\n\t\tlet tmpPoints;\n\n\t\tnewShapes[ mainIdx ] = undefined;\n\t\tnewShapeHoles[ mainIdx ] = [];\n\n\t\tfor ( let i = 0, l = subPaths.length; i < l; i ++ ) {\n\n\t\t\ttmpPath = subPaths[ i ];\n\t\t\ttmpPoints = tmpPath.getPoints();\n\t\t\tsolid = isClockWise( tmpPoints );\n\t\t\tsolid = isCCW ? ! solid : solid;\n\n\t\t\tif ( solid ) {\n\n\t\t\t\tif ( ( ! holesFirst ) && ( newShapes[ mainIdx ] ) )\tmainIdx ++;\n\n\t\t\t\tnewShapes[ mainIdx ] = { s: new Shape(), p: tmpPoints };\n\t\t\t\tnewShapes[ mainIdx ].s.curves = tmpPath.curves;\n\n\t\t\t\tif ( holesFirst )\tmainIdx ++;\n\t\t\t\tnewShapeHoles[ mainIdx ] = [];\n\n\t\t\t\t//console.log('cw', i);\n\n\t\t\t} else {\n\n\t\t\t\tnewShapeHoles[ mainIdx ].push( { h: tmpPath, p: tmpPoints[ 0 ] } );\n\n\t\t\t\t//console.log('ccw', i);\n\n\t\t\t}\n\n\t\t}\n\n\t\t// only Holes? -> probably all Shapes with wrong orientation\n\t\tif ( ! newShapes[ 0 ] )\treturn\ttoShapesNoHoles( subPaths );\n\n\n\t\tif ( newShapes.length > 1 ) {\n\n\t\t\tlet ambiguous = false;\n\t\t\tlet toChange = 0;\n\n\t\t\tfor ( let sIdx = 0, sLen = newShapes.length; sIdx < sLen; sIdx ++ ) {\n\n\t\t\t\tbetterShapeHoles[ sIdx ] = [];\n\n\t\t\t}\n\n\t\t\tfor ( let sIdx = 0, sLen = newShapes.length; sIdx < sLen; sIdx ++ ) {\n\n\t\t\t\tconst sho = newShapeHoles[ sIdx ];\n\n\t\t\t\tfor ( let hIdx = 0; hIdx < sho.length; hIdx ++ ) {\n\n\t\t\t\t\tconst ho = sho[ hIdx ];\n\t\t\t\t\tlet hole_unassigned = true;\n\n\t\t\t\t\tfor ( let s2Idx = 0; s2Idx < newShapes.length; s2Idx ++ ) {\n\n\t\t\t\t\t\tif ( isPointInsidePolygon( ho.p, newShapes[ s2Idx ].p ) ) {\n\n\t\t\t\t\t\t\tif ( sIdx !== s2Idx )\ttoChange ++;\n\n\t\t\t\t\t\t\tif ( hole_unassigned ) {\n\n\t\t\t\t\t\t\t\thole_unassigned = false;\n\t\t\t\t\t\t\t\tbetterShapeHoles[ s2Idx ].push( ho );\n\n\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\tambiguous = true;\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( hole_unassigned ) {\n\n\t\t\t\t\t\tbetterShapeHoles[ sIdx ].push( ho );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( toChange > 0 && ambiguous === false ) {\n\n\t\t\t\tnewShapeHoles = betterShapeHoles;\n\n\t\t\t}\n\n\t\t}\n\n\t\tlet tmpHoles;\n\n\t\tfor ( let i = 0, il = newShapes.length; i < il; i ++ ) {\n\n\t\t\ttmpShape = newShapes[ i ].s;\n\t\t\tshapes.push( tmpShape );\n\t\t\ttmpHoles = newShapeHoles[ i ];\n\n\t\t\tfor ( let j = 0, jl = tmpHoles.length; j < jl; j ++ ) {\n\n\t\t\t\ttmpShape.holes.push( tmpHoles[ j ].h );\n\n\t\t\t}\n\n\t\t}\n\n\t\t//console.log(\"shape\", shapes);\n\n\t\treturn shapes;\n\n\t}\n\n}\n\n// Fast Half Float Conversions, http://www.fox-toolkit.org/ftp/fasthalffloatconversion.pdf\n\nclass DataUtils {\n\n\t// float32 to float16\n\n\tstatic toHalfFloat( val ) {\n\n\t\tif ( Math.abs( val ) > 65504 ) console.warn( 'THREE.DataUtils.toHalfFloat(): Value out of range.' );\n\n\t\tval = clamp( val, - 65504, 65504 );\n\n\t\t_floatView[ 0 ] = val;\n\t\tconst f = _uint32View[ 0 ];\n\t\tconst e = ( f >> 23 ) & 0x1ff;\n\t\treturn _baseTable[ e ] + ( ( f & 0x007fffff ) >> _shiftTable[ e ] );\n\n\t}\n\n\t// float16 to float32\n\n\tstatic fromHalfFloat( val ) {\n\n\t\tconst m = val >> 10;\n\t\t_uint32View[ 0 ] = _mantissaTable[ _offsetTable[ m ] + ( val & 0x3ff ) ] + _exponentTable[ m ];\n\t\treturn _floatView[ 0 ];\n\n\t}\n\n}\n\n// float32 to float16 helpers\n\nconst _buffer = new ArrayBuffer( 4 );\nconst _floatView = new Float32Array( _buffer );\nconst _uint32View = new Uint32Array( _buffer );\n\nconst _baseTable = new Uint32Array( 512 );\nconst _shiftTable = new Uint32Array( 512 );\n\nfor ( let i = 0; i < 256; ++ i ) {\n\n\tconst e = i - 127;\n\n\t// very small number (0, -0)\n\n\tif ( e < - 27 ) {\n\n\t\t_baseTable[ i ] = 0x0000;\n\t\t_baseTable[ i | 0x100 ] = 0x8000;\n\t\t_shiftTable[ i ] = 24;\n\t\t_shiftTable[ i | 0x100 ] = 24;\n\n\t\t// small number (denorm)\n\n\t} else if ( e < - 14 ) {\n\n\t\t_baseTable[ i ] = 0x0400 >> ( - e - 14 );\n\t\t_baseTable[ i | 0x100 ] = ( 0x0400 >> ( - e - 14 ) ) | 0x8000;\n\t\t_shiftTable[ i ] = - e - 1;\n\t\t_shiftTable[ i | 0x100 ] = - e - 1;\n\n\t\t// normal number\n\n\t} else if ( e <= 15 ) {\n\n\t\t_baseTable[ i ] = ( e + 15 ) << 10;\n\t\t_baseTable[ i | 0x100 ] = ( ( e + 15 ) << 10 ) | 0x8000;\n\t\t_shiftTable[ i ] = 13;\n\t\t_shiftTable[ i | 0x100 ] = 13;\n\n\t\t// large number (Infinity, -Infinity)\n\n\t} else if ( e < 128 ) {\n\n\t\t_baseTable[ i ] = 0x7c00;\n\t\t_baseTable[ i | 0x100 ] = 0xfc00;\n\t\t_shiftTable[ i ] = 24;\n\t\t_shiftTable[ i | 0x100 ] = 24;\n\n\t\t// stay (NaN, Infinity, -Infinity)\n\n\t} else {\n\n\t\t_baseTable[ i ] = 0x7c00;\n\t\t_baseTable[ i | 0x100 ] = 0xfc00;\n\t\t_shiftTable[ i ] = 13;\n\t\t_shiftTable[ i | 0x100 ] = 13;\n\n\t}\n\n}\n\n// float16 to float32 helpers\n\nconst _mantissaTable = new Uint32Array( 2048 );\nconst _exponentTable = new Uint32Array( 64 );\nconst _offsetTable = new Uint32Array( 64 );\n\nfor ( let i = 1; i < 1024; ++ i ) {\n\n\tlet m = i << 13; // zero pad mantissa bits\n\tlet e = 0; // zero exponent\n\n\t// normalized\n\twhile ( ( m & 0x00800000 ) === 0 ) {\n\n\t\tm <<= 1;\n\t\te -= 0x00800000; // decrement exponent\n\n\t}\n\n\tm &= ~ 0x00800000; // clear leading 1 bit\n\te += 0x38800000; // adjust bias\n\n\t_mantissaTable[ i ] = m | e;\n\n}\n\nfor ( let i = 1024; i < 2048; ++ i ) {\n\n\t_mantissaTable[ i ] = 0x38000000 + ( ( i - 1024 ) << 13 );\n\n}\n\nfor ( let i = 1; i < 31; ++ i ) {\n\n\t_exponentTable[ i ] = i << 23;\n\n}\n\n_exponentTable[ 31 ] = 0x47800000;\n_exponentTable[ 32 ] = 0x80000000;\nfor ( let i = 33; i < 63; ++ i ) {\n\n\t_exponentTable[ i ] = 0x80000000 + ( ( i - 32 ) << 23 );\n\n}\n\n_exponentTable[ 63 ] = 0xc7800000;\n\nfor ( let i = 1; i < 64; ++ i ) {\n\n\tif ( i !== 32 ) {\n\n\t\t_offsetTable[ i ] = 1024;\n\n\t}\n\n}\n\n// r133, c5bb5434555a3c3ddd784944a0a124f996fc721b\n\nclass ParametricGeometry extends BufferGeometry {\n\n\tconstructor() {\n\n\t\tconsole.error( 'THREE.ParametricGeometry has been moved to /examples/jsm/geometries/ParametricGeometry.js' );\n\t\tsuper();\n\n\t}\n\n}\n\n// r133, eb58ff153119090d3bbb24474ea0ffc40c70dc92\n\nclass TextGeometry extends BufferGeometry {\n\n\tconstructor() {\n\n\t\tconsole.error( 'THREE.TextGeometry has been moved to /examples/jsm/geometries/TextGeometry.js' );\n\t\tsuper();\n\n\t}\n\n}\n\n// r133, eb58ff153119090d3bbb24474ea0ffc40c70dc92\n\nfunction FontLoader() {\n\n\tconsole.error( 'THREE.FontLoader has been moved to /examples/jsm/loaders/FontLoader.js' );\n\n}\n\n// r133, eb58ff153119090d3bbb24474ea0ffc40c70dc92\n\nfunction Font() {\n\n\tconsole.error( 'THREE.Font has been moved to /examples/jsm/loaders/FontLoader.js' );\n\n}\n\n// r134, d65e0af06644fe5a84a6fc0e372f4318f95a04c0\n\nfunction ImmediateRenderObject() {\n\n\tconsole.error( 'THREE.ImmediateRenderObject has been removed.' );\n\n}\n\n// r138, 48b05d3500acc084df50be9b4c90781ad9b8cb17\n\nclass WebGLMultisampleRenderTarget extends WebGLRenderTarget {\n\n\tconstructor( width, height, options ) {\n\n\t\tconsole.error( 'THREE.WebGLMultisampleRenderTarget has been removed. Use a normal render target and set the \"samples\" property to greater 0 to enable multisampling.' );\n\t\tsuper( width, height, options );\n\t\tthis.samples = 4;\n\n\t}\n\n}\n\n// r138, f9cd9cab03b7b64244e304900a3a2eeaa3a588ce\n\nclass DataTexture2DArray extends DataArrayTexture {\n\n\tconstructor( data, width, height, depth ) {\n\n\t\tconsole.warn( 'THREE.DataTexture2DArray has been renamed to DataArrayTexture.' );\n\t\tsuper( data, width, height, depth );\n\n\t}\n\n}\n\n// r138, f9cd9cab03b7b64244e304900a3a2eeaa3a588ce\n\nclass DataTexture3D extends Data3DTexture {\n\n\tconstructor( data, width, height, depth ) {\n\n\t\tconsole.warn( 'THREE.DataTexture3D has been renamed to Data3DTexture.' );\n\t\tsuper( data, width, height, depth );\n\n\t}\n\n}\n\nif ( typeof __THREE_DEVTOOLS__ !== 'undefined' ) {\n\n\t__THREE_DEVTOOLS__.dispatchEvent( new CustomEvent( 'register', { detail: {\n\t\trevision: REVISION,\n\t} } ) );\n\n}\n\nif ( typeof window !== 'undefined' ) {\n\n\tif ( window.__THREE__ ) {\n\n\t\tconsole.warn( 'WARNING: Multiple instances of Three.js being imported.' );\n\n\t} else {\n\n\t\twindow.__THREE__ = REVISION;\n\n\t}\n\n}\n\nexport { ACESFilmicToneMapping, AddEquation, AddOperation, AdditiveAnimationBlendMode, AdditiveBlending, AlphaFormat, AlwaysDepth, AlwaysStencilFunc, AmbientLight, AmbientLightProbe, AnimationClip, AnimationLoader, AnimationMixer, AnimationObjectGroup, AnimationUtils, ArcCurve, ArrayCamera, ArrowHelper, Audio, AudioAnalyser, AudioContext, AudioListener, AudioLoader, AxesHelper, BackSide, BasicDepthPacking, BasicShadowMap, Bone, BooleanKeyframeTrack, Box2, Box3, Box3Helper, BoxGeometry as BoxBufferGeometry, BoxGeometry, BoxHelper, BufferAttribute, BufferGeometry, BufferGeometryLoader, ByteType, Cache, Camera, CameraHelper, CanvasTexture, CapsuleGeometry as CapsuleBufferGeometry, CapsuleGeometry, CatmullRomCurve3, CineonToneMapping, CircleGeometry as CircleBufferGeometry, CircleGeometry, ClampToEdgeWrapping, Clock, Color, ColorKeyframeTrack, ColorManagement, CompressedTexture, CompressedTextureLoader, ConeGeometry as ConeBufferGeometry, ConeGeometry, CubeCamera, CubeReflectionMapping, CubeRefractionMapping, CubeTexture, CubeTextureLoader, CubeUVReflectionMapping, CubicBezierCurve, CubicBezierCurve3, CubicInterpolant, CullFaceBack, CullFaceFront, CullFaceFrontBack, CullFaceNone, Curve, CurvePath, CustomBlending, CustomToneMapping, CylinderGeometry as CylinderBufferGeometry, CylinderGeometry, Cylindrical, Data3DTexture, DataArrayTexture, DataTexture, DataTexture2DArray, DataTexture3D, DataTextureLoader, DataUtils, DecrementStencilOp, DecrementWrapStencilOp, DefaultLoadingManager, DepthFormat, DepthStencilFormat, DepthTexture, DirectionalLight, DirectionalLightHelper, DiscreteInterpolant, DodecahedronGeometry as DodecahedronBufferGeometry, DodecahedronGeometry, DoubleSide, DstAlphaFactor, DstColorFactor, DynamicCopyUsage, DynamicDrawUsage, DynamicReadUsage, EdgesGeometry, EllipseCurve, EqualDepth, EqualStencilFunc, EquirectangularReflectionMapping, EquirectangularRefractionMapping, Euler, EventDispatcher, ExtrudeGeometry as ExtrudeBufferGeometry, ExtrudeGeometry, FileLoader, FlatShading, Float16BufferAttribute, Float32BufferAttribute, Float64BufferAttribute, FloatType, Fog, FogExp2, Font, FontLoader, FramebufferTexture, FrontSide, Frustum, GLBufferAttribute, GLSL1, GLSL3, GreaterDepth, GreaterEqualDepth, GreaterEqualStencilFunc, GreaterStencilFunc, GridHelper, Group, HalfFloatType, HemisphereLight, HemisphereLightHelper, HemisphereLightProbe, IcosahedronGeometry as IcosahedronBufferGeometry, IcosahedronGeometry, ImageBitmapLoader, ImageLoader, ImageUtils, ImmediateRenderObject, IncrementStencilOp, IncrementWrapStencilOp, InstancedBufferAttribute, InstancedBufferGeometry, InstancedInterleavedBuffer, InstancedMesh, Int16BufferAttribute, Int32BufferAttribute, Int8BufferAttribute, IntType, InterleavedBuffer, InterleavedBufferAttribute, Interpolant, InterpolateDiscrete, InterpolateLinear, InterpolateSmooth, InvertStencilOp, KeepStencilOp, KeyframeTrack, LOD, LatheGeometry as LatheBufferGeometry, LatheGeometry, Layers, LessDepth, LessEqualDepth, LessEqualStencilFunc, LessStencilFunc, Light, LightProbe, Line, Line3, LineBasicMaterial, LineCurve, LineCurve3, LineDashedMaterial, LineLoop, LineSegments, LinearEncoding, LinearFilter, LinearInterpolant, LinearMipMapLinearFilter, LinearMipMapNearestFilter, LinearMipmapLinearFilter, LinearMipmapNearestFilter, LinearSRGBColorSpace, LinearToneMapping, Loader, LoaderUtils, LoadingManager, LoopOnce, LoopPingPong, LoopRepeat, LuminanceAlphaFormat, LuminanceFormat, MOUSE, Material, MaterialLoader, MathUtils, Matrix3, Matrix4, MaxEquation, Mesh, MeshBasicMaterial, MeshDepthMaterial, MeshDistanceMaterial, MeshLambertMaterial, MeshMatcapMaterial, MeshNormalMaterial, MeshPhongMaterial, MeshPhysicalMaterial, MeshStandardMaterial, MeshToonMaterial, MinEquation, MirroredRepeatWrapping, MixOperation, MultiplyBlending, MultiplyOperation, NearestFilter, NearestMipMapLinearFilter, NearestMipMapNearestFilter, NearestMipmapLinearFilter, NearestMipmapNearestFilter, NeverDepth, NeverStencilFunc, NoBlending, NoColorSpace, NoToneMapping, NormalAnimationBlendMode, NormalBlending, NotEqualDepth, NotEqualStencilFunc, NumberKeyframeTrack, Object3D, ObjectLoader, ObjectSpaceNormalMap, OctahedronGeometry as OctahedronBufferGeometry, OctahedronGeometry, OneFactor, OneMinusDstAlphaFactor, OneMinusDstColorFactor, OneMinusSrcAlphaFactor, OneMinusSrcColorFactor, OrthographicCamera, PCFShadowMap, PCFSoftShadowMap, PMREMGenerator, ParametricGeometry, Path, PerspectiveCamera, Plane, PlaneGeometry as PlaneBufferGeometry, PlaneGeometry, PlaneHelper, PointLight, PointLightHelper, Points, PointsMaterial, PolarGridHelper, PolyhedronGeometry as PolyhedronBufferGeometry, PolyhedronGeometry, PositionalAudio, PropertyBinding, PropertyMixer, QuadraticBezierCurve, QuadraticBezierCurve3, Quaternion, QuaternionKeyframeTrack, QuaternionLinearInterpolant, REVISION, RGBADepthPacking, RGBAFormat, RGBAIntegerFormat, RGBA_ASTC_10x10_Format, RGBA_ASTC_10x5_Format, RGBA_ASTC_10x6_Format, RGBA_ASTC_10x8_Format, RGBA_ASTC_12x10_Format, RGBA_ASTC_12x12_Format, RGBA_ASTC_4x4_Format, RGBA_ASTC_5x4_Format, RGBA_ASTC_5x5_Format, RGBA_ASTC_6x5_Format, RGBA_ASTC_6x6_Format, RGBA_ASTC_8x5_Format, RGBA_ASTC_8x6_Format, RGBA_ASTC_8x8_Format, RGBA_BPTC_Format, RGBA_ETC2_EAC_Format, RGBA_PVRTC_2BPPV1_Format, RGBA_PVRTC_4BPPV1_Format, RGBA_S3TC_DXT1_Format, RGBA_S3TC_DXT3_Format, RGBA_S3TC_DXT5_Format, RGBFormat, RGB_ETC1_Format, RGB_ETC2_Format, RGB_PVRTC_2BPPV1_Format, RGB_PVRTC_4BPPV1_Format, RGB_S3TC_DXT1_Format, RGFormat, RGIntegerFormat, RawShaderMaterial, Ray, Raycaster, RectAreaLight, RedFormat, RedIntegerFormat, ReinhardToneMapping, RepeatWrapping, ReplaceStencilOp, ReverseSubtractEquation, RingGeometry as RingBufferGeometry, RingGeometry, SRGBColorSpace, Scene, ShaderChunk, ShaderLib, ShaderMaterial, ShadowMaterial, Shape, ShapeGeometry as ShapeBufferGeometry, ShapeGeometry, ShapePath, ShapeUtils, ShortType, Skeleton, SkeletonHelper, SkinnedMesh, SmoothShading, Source, Sphere, SphereGeometry as SphereBufferGeometry, SphereGeometry, Spherical, SphericalHarmonics3, SplineCurve, SpotLight, SpotLightHelper, Sprite, SpriteMaterial, SrcAlphaFactor, SrcAlphaSaturateFactor, SrcColorFactor, StaticCopyUsage, StaticDrawUsage, StaticReadUsage, StereoCamera, StreamCopyUsage, StreamDrawUsage, StreamReadUsage, StringKeyframeTrack, SubtractEquation, SubtractiveBlending, TOUCH, TangentSpaceNormalMap, TetrahedronGeometry as TetrahedronBufferGeometry, TetrahedronGeometry, TextGeometry, Texture, TextureLoader, TorusGeometry as TorusBufferGeometry, TorusGeometry, TorusKnotGeometry as TorusKnotBufferGeometry, TorusKnotGeometry, Triangle, TriangleFanDrawMode, TriangleStripDrawMode, TrianglesDrawMode, TubeGeometry as TubeBufferGeometry, TubeGeometry, UVMapping, Uint16BufferAttribute, Uint32BufferAttribute, Uint8BufferAttribute, Uint8ClampedBufferAttribute, Uniform, UniformsLib, UniformsUtils, UnsignedByteType, UnsignedInt248Type, UnsignedIntType, UnsignedShort4444Type, UnsignedShort5551Type, UnsignedShortType, VSMShadowMap, Vector2, Vector3, Vector4, VectorKeyframeTrack, VideoTexture, WebGL1Renderer, WebGL3DRenderTarget, WebGLArrayRenderTarget, WebGLCubeRenderTarget, WebGLMultipleRenderTargets, WebGLMultisampleRenderTarget, WebGLRenderTarget, WebGLRenderer, WebGLUtils, WireframeGeometry, WrapAroundEnding, ZeroCurvatureEnding, ZeroFactor, ZeroSlopeEnding, ZeroStencilOp, _SRGBAFormat, sRGBEncoding };\n","var __assign = (this && this.__assign) || function () {\r\n __assign = Object.assign || function(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\r\n t[p] = s[p];\r\n }\r\n return t;\r\n };\r\n return __assign.apply(this, arguments);\r\n};\r\nimport * as cookie from 'cookie';\r\nimport { hasDocumentCookie, parseCookies, readCookie } from './utils';\r\nvar Cookies = /** @class */ (function () {\r\n function Cookies(cookies, options) {\r\n var _this = this;\r\n this.changeListeners = [];\r\n this.HAS_DOCUMENT_COOKIE = false;\r\n this.cookies = parseCookies(cookies, options);\r\n new Promise(function () {\r\n _this.HAS_DOCUMENT_COOKIE = hasDocumentCookie();\r\n }).catch(function () { });\r\n }\r\n Cookies.prototype._updateBrowserValues = function (parseOptions) {\r\n if (!this.HAS_DOCUMENT_COOKIE) {\r\n return;\r\n }\r\n this.cookies = cookie.parse(document.cookie, parseOptions);\r\n };\r\n Cookies.prototype._emitChange = function (params) {\r\n for (var i = 0; i < this.changeListeners.length; ++i) {\r\n this.changeListeners[i](params);\r\n }\r\n };\r\n Cookies.prototype.get = function (name, options, parseOptions) {\r\n if (options === void 0) { options = {}; }\r\n this._updateBrowserValues(parseOptions);\r\n return readCookie(this.cookies[name], options);\r\n };\r\n Cookies.prototype.getAll = function (options, parseOptions) {\r\n if (options === void 0) { options = {}; }\r\n this._updateBrowserValues(parseOptions);\r\n var result = {};\r\n for (var name_1 in this.cookies) {\r\n result[name_1] = readCookie(this.cookies[name_1], options);\r\n }\r\n return result;\r\n };\r\n Cookies.prototype.set = function (name, value, options) {\r\n var _a;\r\n if (typeof value === 'object') {\r\n value = JSON.stringify(value);\r\n }\r\n this.cookies = __assign(__assign({}, this.cookies), (_a = {}, _a[name] = value, _a));\r\n if (this.HAS_DOCUMENT_COOKIE) {\r\n document.cookie = cookie.serialize(name, value, options);\r\n }\r\n this._emitChange({ name: name, value: value, options: options });\r\n };\r\n Cookies.prototype.remove = function (name, options) {\r\n var finalOptions = (options = __assign(__assign({}, options), { expires: new Date(1970, 1, 1, 0, 0, 1), maxAge: 0 }));\r\n this.cookies = __assign({}, this.cookies);\r\n delete this.cookies[name];\r\n if (this.HAS_DOCUMENT_COOKIE) {\r\n document.cookie = cookie.serialize(name, '', finalOptions);\r\n }\r\n this._emitChange({ name: name, value: undefined, options: options });\r\n };\r\n Cookies.prototype.addChangeListener = function (callback) {\r\n this.changeListeners.push(callback);\r\n };\r\n Cookies.prototype.removeChangeListener = function (callback) {\r\n var idx = this.changeListeners.indexOf(callback);\r\n if (idx >= 0) {\r\n this.changeListeners.splice(idx, 1);\r\n }\r\n };\r\n return Cookies;\r\n}());\r\nexport default Cookies;\r\n","import Cookies from 'universal-cookie';\r\nexport default Cookies;\r\n","import { Cookies } from \"react-cookie\"\nimport { CookieSetOptions } from \"universal-cookie\"\nimport { GetState, SetState, StateCreator, StoreApi } from \"zustand\"\n\nconst persistCookie =\n\t>(config: StateCreator) =>\n\t(set: SetState, get: GetState, api: StoreApi, mutations: []): T => {\n\t\tconst state = config(\n\t\t\t(payload) => {\n\t\t\t\tset(payload)\n\n\t\t\t\tif (typeof payload === \"object\") {\n\t\t\t\t\tObject.entries(payload).forEach(([key, value]) => {\n\t\t\t\t\t\tconst config: CookieSetOptions = {\n\t\t\t\t\t\t\texpires: new Date(new Date().getTime() + 1000 * 60 * 60 * 24 * 7),\n\t\t\t\t\t\t\tpath: \"/\",\n\t\t\t\t\t\t\tsecure: process.env.NODE_ENV === \"production\",\n\t\t\t\t\t\t\tdomain:\n\t\t\t\t\t\t\t\tprocess.env.NODE_ENV === \"production\" ? \".sonofun.live\" : \"\",\n\t\t\t\t\t\t\tsameSite: \"lax\",\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (value === undefined) {\n\t\t\t\t\t\t\tnew Cookies().remove(key, config)\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tnew Cookies().set(key, value, config)\n\t\t\t\t\t\t}\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t},\n\t\t\tget,\n\t\t\tapi,\n\t\t\tmutations\n\t\t)\n\n\t\treturn {\n\t\t\t...state,\n\t\t\t...new Cookies().getAll(),\n\t\t}\n\t}\n\nexport default persistCookie\n","import create from \"zustand\"\nimport persistCookie from \"../../utils/persistCookie\"\n\nexport interface AuthData extends Record {\n\ttoken: string\n\texpiresIn: number\n}\n\ninterface AuthStore extends Record {\n\ttoken?: string\n\texpiresIn?: number\n\n\tadminToken?: string\n\tadminExpiresIn?: number\n\n\tupdate: (data: AuthData, admin: boolean) => void\n\tremove: () => void\n}\n\nexport const useAuthStore = create(\n\tpersistCookie((set, get) => {\n\t\treturn {\n\t\t\ttoken: undefined,\n\t\t\texpiresIn: undefined,\n\n\t\t\tadminToken: undefined,\n\t\t\tadminExpiresIn: undefined,\n\n\t\t\tupdate(data: AuthData, admin: boolean) {\n\t\t\t\tif (admin) {\n\t\t\t\t\tset({\n\t\t\t\t\t\tadminToken: data.token,\n\t\t\t\t\t\tadminExpiresIn: data.expiresIn,\n\t\t\t\t\t})\n\t\t\t\t} else {\n\t\t\t\t\tset({\n\t\t\t\t\t\ttoken: data.token,\n\t\t\t\t\t\texpiresIn: data.expiresIn,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t},\n\n\t\t\tremove() {\n\t\t\t\tset({\n\t\t\t\t\ttoken: undefined,\n\t\t\t\t\texpiresIn: undefined,\n\t\t\t\t\tadminToken: undefined,\n\t\t\t\t\tadminExpiresIn: undefined,\n\t\t\t\t})\n\t\t\t},\n\t\t}\n\t})\n)\n\nexport const authFromStore = (admin: boolean) => {\n\tconst { token, expiresIn, adminToken, adminExpiresIn } =\n\t\tuseAuthStore.getState()\n\n\treturn {\n\t\ttoken: admin ? adminToken : token,\n\t\texpiresIn: admin ? adminExpiresIn : expiresIn,\n\t}\n}\n","import create from \"zustand\"\n\ninterface PreviewStore extends Record {\n\tpreview: [type: string, data: string] | undefined\n\tshowPreview: boolean\n\n\trequestPreview: (type: string, data: string) => void\n\tclosePreview: () => void\n}\n\nexport const usePreviewStore = create((set, get) => {\n\treturn {\n\t\tpreview: undefined,\n\t\tshowPreview: false,\n\n\t\trequestPreview: (type, data) => {\n\t\t\tset({ preview: [type, data], showPreview: true })\n\t\t},\n\t\tclosePreview: () => {\n\t\t\tset({ showPreview: false })\n\t\t},\n\t}\n})\n","import { forwardRef } from \"react\"\nimport useSWR from \"swr\"\nimport { fetchApiAuthorized } from \"../../network/fetch\"\nimport { useAuthStore } from \"../../state/stores/authStore\"\nimport { usePreviewStore } from \"../../state/stores/previewStore\"\nimport Button from \"../button/button\"\n\ninterface PreviewProps {\n\tpreview: [type: string, data: string]\n}\n\nconst Preview = forwardRef(({ preview }, ref) => {\n\tconst close = usePreviewStore((state) => state.closePreview)\n\n\tconst token = useAuthStore((state) => state.adminToken)\n\tconst expiresIn = useAuthStore((state) => state.adminExpiresIn)\n\tconst { data } = useSWR(\n\t\t[`/${preview[0]}s/${preview[1]}`, token, expiresIn],\n\t\tfetchApiAuthorized\n\t)\n\n\treturn (\n\t\t\n\t\t\t{data && (\n\t\t\t\t\n\t\t\t)}\n\n\t\t\t\n\t\t\n\t)\n})\n\nexport default Preview\n","export { urlAlphabet } from './url-alphabet/index.js'\nexport let random = bytes => crypto.getRandomValues(new Uint8Array(bytes))\nexport let customRandom = (alphabet, defaultSize, getRandom) => {\n let mask = (2 << (Math.log(alphabet.length - 1) / Math.LN2)) - 1\n let step = -~((1.6 * mask * defaultSize) / alphabet.length)\n return (size = defaultSize) => {\n let id = ''\n while (true) {\n let bytes = getRandom(step)\n let j = step\n while (j--) {\n id += alphabet[bytes[j] & mask] || ''\n if (id.length === size) return id\n }\n }\n }\n}\nexport let customAlphabet = (alphabet, size = 21) =>\n customRandom(alphabet, size, random)\nexport let nanoid = (size = 21) =>\n crypto.getRandomValues(new Uint8Array(size)).reduce((id, byte) => {\n byte &= 63\n if (byte < 36) {\n id += byte.toString(36)\n } else if (byte < 62) {\n id += (byte - 26).toString(36).toUpperCase()\n } else if (byte > 62) {\n id += '-'\n } else {\n id += '_'\n }\n return id\n }, '')\n","import { useReducer, useRef, useDebugValue, useEffect, useLayoutEffect } from 'react';\n\nfunction createStore(createState) {\n let state;\n const listeners = /* @__PURE__ */ new Set();\n const setState = (partial, replace) => {\n const nextState = typeof partial === \"function\" ? partial(state) : partial;\n if (nextState !== state) {\n const previousState = state;\n state = replace ? nextState : Object.assign({}, state, nextState);\n listeners.forEach((listener) => listener(state, previousState));\n }\n };\n const getState = () => state;\n const subscribeWithSelector = (listener, selector = getState, equalityFn = Object.is) => {\n console.warn(\"[DEPRECATED] Please use `subscribeWithSelector` middleware\");\n let currentSlice = selector(state);\n function listenerToAdd() {\n const nextSlice = selector(state);\n if (!equalityFn(currentSlice, nextSlice)) {\n const previousSlice = currentSlice;\n listener(currentSlice = nextSlice, previousSlice);\n }\n }\n listeners.add(listenerToAdd);\n return () => listeners.delete(listenerToAdd);\n };\n const subscribe = (listener, selector, equalityFn) => {\n if (selector || equalityFn) {\n return subscribeWithSelector(listener, selector, equalityFn);\n }\n listeners.add(listener);\n return () => listeners.delete(listener);\n };\n const destroy = () => listeners.clear();\n const api = { setState, getState, subscribe, destroy };\n state = createState(setState, getState, api);\n return api;\n}\n\nconst isSSR = typeof window === \"undefined\" || !window.navigator || /ServerSideRendering|^Deno\\//.test(window.navigator.userAgent);\nconst useIsomorphicLayoutEffect = isSSR ? useEffect : useLayoutEffect;\nfunction create(createState) {\n const api = typeof createState === \"function\" ? createStore(createState) : createState;\n const useStore = (selector = api.getState, equalityFn = Object.is) => {\n const [, forceUpdate] = useReducer((c) => c + 1, 0);\n const state = api.getState();\n const stateRef = useRef(state);\n const selectorRef = useRef(selector);\n const equalityFnRef = useRef(equalityFn);\n const erroredRef = useRef(false);\n const currentSliceRef = useRef();\n if (currentSliceRef.current === void 0) {\n currentSliceRef.current = selector(state);\n }\n let newStateSlice;\n let hasNewStateSlice = false;\n if (stateRef.current !== state || selectorRef.current !== selector || equalityFnRef.current !== equalityFn || erroredRef.current) {\n newStateSlice = selector(state);\n hasNewStateSlice = !equalityFn(currentSliceRef.current, newStateSlice);\n }\n useIsomorphicLayoutEffect(() => {\n if (hasNewStateSlice) {\n currentSliceRef.current = newStateSlice;\n }\n stateRef.current = state;\n selectorRef.current = selector;\n equalityFnRef.current = equalityFn;\n erroredRef.current = false;\n });\n const stateBeforeSubscriptionRef = useRef(state);\n useIsomorphicLayoutEffect(() => {\n const listener = () => {\n try {\n const nextState = api.getState();\n const nextStateSlice = selectorRef.current(nextState);\n if (!equalityFnRef.current(currentSliceRef.current, nextStateSlice)) {\n stateRef.current = nextState;\n currentSliceRef.current = nextStateSlice;\n forceUpdate();\n }\n } catch (error) {\n erroredRef.current = true;\n forceUpdate();\n }\n };\n const unsubscribe = api.subscribe(listener);\n if (api.getState() !== stateBeforeSubscriptionRef.current) {\n listener();\n }\n return unsubscribe;\n }, []);\n const sliceToReturn = hasNewStateSlice ? newStateSlice : currentSliceRef.current;\n useDebugValue(sliceToReturn);\n return sliceToReturn;\n };\n Object.assign(useStore, api);\n useStore[Symbol.iterator] = function() {\n console.warn(\"[useStore, api] = create() is deprecated and will be removed in v4\");\n const items = [useStore, api];\n return {\n next() {\n const done = items.length <= 0;\n return { value: items.shift(), done };\n }\n };\n };\n return useStore;\n}\n\nexport { create as default };\n","function shallowEqualArrays(arrA, arrB, equal = (a, b) => a === b) {\n if (arrA === arrB) return true;\n if (!arrA || !arrB) return false;\n const len = arrA.length;\n if (arrB.length !== len) return false;\n\n for (let i = 0; i < len; i++) if (!equal(arrA[i], arrB[i])) return false;\n\n return true;\n}\n\nconst globalCache = [];\n\nfunction query(fn, keys, preload = false, config = {}) {\n for (const entry of globalCache) {\n // Find a match\n if (shallowEqualArrays(keys, entry.keys, entry.equal)) {\n // If we're pre-loading and the element is present, just return\n if (preload) return undefined; // If an error occurred, throw\n\n if (Object.prototype.hasOwnProperty.call(entry, 'error')) throw entry.error; // If a response was successful, return\n\n if (Object.prototype.hasOwnProperty.call(entry, 'response')) return entry.response; // If the promise is still unresolved, throw\n\n if (!preload) throw entry.promise;\n }\n } // The request is new or has changed.\n\n\n const entry = {\n keys,\n equal: config.equal,\n promise: // Execute the promise\n fn(...keys) // When it resolves, store its value\n .then(response => entry.response = response) // Remove the entry if a lifespan was given\n .then(() => {\n if (config.lifespan && config.lifespan > 0) {\n setTimeout(() => {\n const index = globalCache.indexOf(entry);\n if (index !== -1) globalCache.splice(index, 1);\n }, config.lifespan);\n }\n }) // Store caught errors, they will be thrown in the render-phase to bubble into an error-bound\n .catch(error => entry.error = error)\n }; // Register the entry\n\n globalCache.push(entry); // And throw the promise, this yields control back to React\n\n if (!preload) throw entry.promise;\n return undefined;\n}\n\nconst suspend = (fn, keys, config) => query(fn, keys, false, config);\n\nconst preload = (fn, keys, config) => void query(fn, keys, true, config);\n\nconst peek = keys => {\n var _globalCache$find;\n\n return (_globalCache$find = globalCache.find(entry => shallowEqualArrays(keys, entry.keys, entry.equal))) == null ? void 0 : _globalCache$find.response;\n};\n\nconst clear = keys => {\n if (keys === undefined || keys.length === 0) globalCache.splice(0, globalCache.length);else {\n const entry = globalCache.find(entry => shallowEqualArrays(keys, entry.keys, entry.equal));\n\n if (entry) {\n const index = globalCache.indexOf(entry);\n if (index !== -1) globalCache.splice(index, 1);\n }\n }\n};\n\nexport { clear, peek, preload, suspend };\n","import * as THREE from 'three';\nimport * as React from 'react';\nimport { DefaultEventPriority, ContinuousEventPriority, DiscreteEventPriority, ConcurrentRoot } from 'react-reconciler/constants';\nimport create from 'zustand';\nimport Reconciler from 'react-reconciler';\nimport { unstable_scheduleCallback, unstable_IdlePriority } from 'scheduler';\nimport { suspend, preload, clear } from 'suspend-react';\n\nvar threeTypes = /*#__PURE__*/Object.freeze({\n __proto__: null\n});\n\nconst isOrthographicCamera = def => def && def.isOrthographicCamera; // React currently throws a warning when using useLayoutEffect on the server.\n// To get around it, we can conditionally useEffect on the server (no-op) and\n// useLayoutEffect on the client.\n\nconst isSSR = typeof window === 'undefined' || !window.navigator || /ServerSideRendering|^Deno\\//.test(window.navigator.userAgent);\nconst useIsomorphicLayoutEffect = isSSR ? React.useEffect : React.useLayoutEffect;\nfunction useMutableCallback(fn) {\n const ref = React.useRef(fn);\n useIsomorphicLayoutEffect(() => void (ref.current = fn), [fn]);\n return ref;\n}\nfunction Block({\n set\n}) {\n useIsomorphicLayoutEffect(() => {\n set(new Promise(() => null));\n return () => set(false);\n }, [set]);\n return null;\n}\nclass ErrorBoundary extends React.Component {\n constructor(...args) {\n super(...args);\n this.state = {\n error: false\n };\n }\n\n componentDidCatch(error) {\n this.props.set(error);\n }\n\n render() {\n return this.state.error ? null : this.props.children;\n }\n\n}\n\nErrorBoundary.getDerivedStateFromError = () => ({\n error: true\n});\n\nconst DEFAULT = '__default';\nconst isDiffSet = def => def && !!def.memoized && !!def.changes;\nfunction calculateDpr(dpr) {\n return Array.isArray(dpr) ? Math.min(Math.max(dpr[0], window.devicePixelRatio), dpr[1]) : dpr;\n}\n/**\n * Returns instance root state\n */\n\nconst getRootState = obj => {\n var _r3f;\n\n return (_r3f = obj.__r3f) == null ? void 0 : _r3f.root.getState();\n};\n// A collection of compare functions\nconst is = {\n obj: a => a === Object(a) && !is.arr(a) && typeof a !== 'function',\n fun: a => typeof a === 'function',\n str: a => typeof a === 'string',\n num: a => typeof a === 'number',\n boo: a => typeof a === 'boolean',\n und: a => a === void 0,\n arr: a => Array.isArray(a),\n\n equ(a, b, {\n arrays = 'shallow',\n objects = 'reference',\n strict = true\n } = {}) {\n // Wrong type or one of the two undefined, doesn't match\n if (typeof a !== typeof b || !!a !== !!b) return false; // Atomic, just compare a against b\n\n if (is.str(a) || is.num(a)) return a === b;\n const isObj = is.obj(a);\n if (isObj && objects === 'reference') return a === b;\n const isArr = is.arr(a);\n if (isArr && arrays === 'reference') return a === b; // Array or Object, shallow compare first to see if it's a match\n\n if ((isArr || isObj) && a === b) return true; // Last resort, go through keys\n\n let i;\n\n for (i in a) if (!(i in b)) return false;\n\n for (i in strict ? b : a) if (a[i] !== b[i]) return false;\n\n if (is.und(i)) {\n if (isArr && a.length === 0 && b.length === 0) return true;\n if (isObj && Object.keys(a).length === 0 && Object.keys(b).length === 0) return true;\n if (a !== b) return false;\n }\n\n return true;\n }\n\n}; // Collects nodes and materials from a THREE.Object3D\n\nfunction buildGraph(object) {\n const data = {\n nodes: {},\n materials: {}\n };\n\n if (object) {\n object.traverse(obj => {\n if (obj.name) data.nodes[obj.name] = obj;\n if (obj.material && !data.materials[obj.material.name]) data.materials[obj.material.name] = obj.material;\n });\n }\n\n return data;\n} // Disposes an object and all its properties\n\nfunction dispose(obj) {\n if (obj.dispose && obj.type !== 'Scene') obj.dispose();\n\n for (const p in obj) {\n p.dispose == null ? void 0 : p.dispose();\n delete obj[p];\n }\n} // Each object in the scene carries a small LocalState descriptor\n\nfunction prepare(object, state) {\n const instance = object;\n\n if (state != null && state.primitive || !instance.__r3f) {\n instance.__r3f = {\n type: '',\n root: null,\n previousAttach: null,\n memoizedProps: {},\n eventCount: 0,\n handlers: {},\n objects: [],\n parents: [],\n ...state\n };\n }\n\n return object;\n}\n\nfunction resolve(instance, key) {\n let target = instance;\n\n if (key.includes('-')) {\n const entries = key.split('-');\n const last = entries.pop();\n target = entries.reduce((acc, key) => acc[key], instance);\n return {\n target,\n key: last\n };\n } else return {\n target,\n key\n };\n} // Checks if a dash-cased string ends with an integer\n\n\nconst INDEX_REGEX = /-\\d+$/;\nfunction attach(parent, child, type) {\n if (is.str(type)) {\n // If attaching into an array (foo-0), create one\n if (INDEX_REGEX.test(type)) {\n const root = type.replace(INDEX_REGEX, '');\n const {\n target,\n key\n } = resolve(parent, root);\n if (!Array.isArray(target[key])) target[key] = [];\n }\n\n const {\n target,\n key\n } = resolve(parent, type);\n child.__r3f.previousAttach = target[key];\n target[key] = child;\n } else child.__r3f.previousAttach = type(parent, child);\n}\nfunction detach(parent, child, type) {\n var _child$__r3f, _child$__r3f2;\n\n if (is.str(type)) {\n const {\n target,\n key\n } = resolve(parent, type);\n const previous = child.__r3f.previousAttach; // When the previous value was undefined, it means the value was never set to begin with\n\n if (previous === undefined) delete target[key]; // Otherwise set the previous value\n else target[key] = previous;\n } else (_child$__r3f = child.__r3f) == null ? void 0 : _child$__r3f.previousAttach == null ? void 0 : _child$__r3f.previousAttach(parent, child);\n\n (_child$__r3f2 = child.__r3f) == null ? true : delete _child$__r3f2.previousAttach;\n} // This function prepares a set of changes to be applied to the instance\n\nfunction diffProps(instance, {\n children: cN,\n key: kN,\n ref: rN,\n ...props\n}, {\n children: cP,\n key: kP,\n ref: rP,\n ...previous\n} = {}, remove = false) {\n var _instance$__r3f;\n\n const localState = (_instance$__r3f = instance == null ? void 0 : instance.__r3f) != null ? _instance$__r3f : {};\n const entries = Object.entries(props);\n const changes = []; // Catch removed props, prepend them so they can be reset or removed\n\n if (remove) {\n const previousKeys = Object.keys(previous);\n\n for (let i = 0; i < previousKeys.length; i++) {\n if (!props.hasOwnProperty(previousKeys[i])) entries.unshift([previousKeys[i], DEFAULT + 'remove']);\n }\n }\n\n entries.forEach(([key, value]) => {\n var _instance$__r3f2;\n\n // Bail out on primitive object\n if ((_instance$__r3f2 = instance.__r3f) != null && _instance$__r3f2.primitive && key === 'object') return; // When props match bail out\n\n if (is.equ(value, previous[key])) return; // Collect handlers and bail out\n\n if (/^on(Pointer|Click|DoubleClick|ContextMenu|Wheel)/.test(key)) return changes.push([key, value, true, []]); // Split dashed props\n\n let entries = [];\n if (key.includes('-')) entries = key.split('-');\n changes.push([key, value, false, entries]);\n });\n const memoized = { ...props\n };\n if (localState.memoizedProps && localState.memoizedProps.args) memoized.args = localState.memoizedProps.args;\n if (localState.memoizedProps && localState.memoizedProps.attach) memoized.attach = localState.memoizedProps.attach;\n return {\n memoized,\n changes\n };\n} // This function applies a set of changes to the instance\n\nfunction applyProps$1(instance, data) {\n var _instance$__r3f3, _root$getState, _localState$parents;\n\n // Filter equals, events and reserved props\n const localState = (_instance$__r3f3 = instance.__r3f) != null ? _instance$__r3f3 : {};\n const root = localState.root;\n const rootState = (_root$getState = root == null ? void 0 : root.getState == null ? void 0 : root.getState()) != null ? _root$getState : {};\n const {\n memoized,\n changes\n } = isDiffSet(data) ? data : diffProps(instance, data);\n const prevHandlers = localState.eventCount; // Prepare memoized props\n\n if (instance.__r3f) instance.__r3f.memoizedProps = memoized;\n changes.forEach(([key, value, isEvent, keys]) => {\n let currentInstance = instance;\n let targetProp = currentInstance[key]; // Revolve dashed props\n\n if (keys.length) {\n targetProp = keys.reduce((acc, key) => acc[key], instance); // If the target is atomic, it forces us to switch the root\n\n if (!(targetProp && targetProp.set)) {\n const [name, ...reverseEntries] = keys.reverse();\n currentInstance = reverseEntries.reverse().reduce((acc, key) => acc[key], instance);\n key = name;\n }\n } // https://github.com/mrdoob/three.js/issues/21209\n // HMR/fast-refresh relies on the ability to cancel out props, but threejs\n // has no means to do this. Hence we curate a small collection of value-classes\n // with their respective constructor/set arguments\n // For removed props, try to set default values, if possible\n\n\n if (value === DEFAULT + 'remove') {\n if (targetProp && targetProp.constructor) {\n var _memoized$args;\n\n // use the prop constructor to find the default it should be\n value = new targetProp.constructor(...((_memoized$args = memoized.args) != null ? _memoized$args : []));\n } else if (currentInstance.constructor) {\n var _currentInstance$__r;\n\n // create a blank slate of the instance and copy the particular parameter.\n // @ts-ignore\n const defaultClassCall = new currentInstance.constructor(...((_currentInstance$__r = currentInstance.__r3f.memoizedProps.args) != null ? _currentInstance$__r : []));\n value = defaultClassCall[targetProp]; // destory the instance\n\n if (defaultClassCall.dispose) defaultClassCall.dispose(); // instance does not have constructor, just set it to 0\n } else {\n value = 0;\n }\n } // Deal with pointer events ...\n\n\n if (isEvent) {\n if (value) localState.handlers[key] = value;else delete localState.handlers[key];\n localState.eventCount = Object.keys(localState.handlers).length;\n } // Special treatment for objects with support for set/copy, and layers\n else if (targetProp && targetProp.set && (targetProp.copy || targetProp instanceof THREE.Layers)) {\n // If value is an array\n if (Array.isArray(value)) {\n if (targetProp.fromArray) targetProp.fromArray(value);else targetProp.set(...value);\n } // Test again target.copy(class) next ...\n else if (targetProp.copy && value && value.constructor && targetProp.constructor.name === value.constructor.name) {\n targetProp.copy(value);\n } // If nothing else fits, just set the single value, ignore undefined\n // https://github.com/pmndrs/react-three-fiber/issues/274\n else if (value !== undefined) {\n const isColor = targetProp instanceof THREE.Color; // Allow setting array scalars\n\n if (!isColor && targetProp.setScalar) targetProp.setScalar(value); // Layers have no copy function, we must therefore copy the mask property\n else if (targetProp instanceof THREE.Layers && value instanceof THREE.Layers) targetProp.mask = value.mask; // Otherwise just set ...\n else targetProp.set(value); // For versions of three which don't support THREE.ColorManagement,\n // Auto-convert sRGB colors\n // https://github.com/pmndrs/react-three-fiber/issues/344\n\n const supportsColorManagement = ('ColorManagement' in THREE);\n if (!supportsColorManagement && !rootState.linear && isColor) targetProp.convertSRGBToLinear();\n } // Else, just overwrite the value\n\n } else {\n currentInstance[key] = value; // Auto-convert sRGB textures, for now ...\n // https://github.com/pmndrs/react-three-fiber/issues/344\n\n if (!rootState.linear && currentInstance[key] instanceof THREE.Texture) {\n currentInstance[key].encoding = THREE.sRGBEncoding;\n }\n }\n\n invalidateInstance(instance);\n });\n\n if ((_localState$parents = localState.parents) != null && _localState$parents.length && rootState.internal && instance.raycast && prevHandlers !== localState.eventCount) {\n // Pre-emptively remove the instance from the interaction manager\n const index = rootState.internal.interaction.indexOf(instance);\n if (index > -1) rootState.internal.interaction.splice(index, 1); // Add the instance to the interaction manager only when it has handlers\n\n if (localState.eventCount) rootState.internal.interaction.push(instance);\n } // Call the update lifecycle when it is being updated, but only when it is part of the scene\n\n\n if (changes.length && instance.parent) updateInstance(instance);\n return instance;\n}\nfunction invalidateInstance(instance) {\n var _instance$__r3f4, _instance$__r3f4$root;\n\n const state = (_instance$__r3f4 = instance.__r3f) == null ? void 0 : (_instance$__r3f4$root = _instance$__r3f4.root) == null ? void 0 : _instance$__r3f4$root.getState == null ? void 0 : _instance$__r3f4$root.getState();\n if (state && state.internal.frames === 0) state.invalidate();\n}\nfunction updateInstance(instance) {\n instance.onUpdate == null ? void 0 : instance.onUpdate(instance);\n}\nfunction updateCamera(camera, size) {\n // https://github.com/pmndrs/react-three-fiber/issues/92\n // Do not mess with the camera if it belongs to the user\n if (!camera.manual) {\n if (isOrthographicCamera(camera)) {\n camera.left = size.width / -2;\n camera.right = size.width / 2;\n camera.top = size.height / 2;\n camera.bottom = size.height / -2;\n } else {\n camera.aspect = size.width / size.height;\n }\n\n camera.updateProjectionMatrix(); // https://github.com/pmndrs/react-three-fiber/issues/178\n // Update matrix world since the renderer is a frame late\n\n camera.updateMatrixWorld();\n }\n}\n/**\n * Safely sets a deeply-nested value on an object.\n */\n\nfunction setDeep(obj, value, keys) {\n const key = keys.pop();\n const target = keys.reduce((acc, key) => acc[key], obj);\n return target[key] = value;\n}\n\nfunction makeId(event) {\n return (event.eventObject || event.object).uuid + '/' + event.index + event.instanceId;\n} // https://github.com/facebook/react/tree/main/packages/react-reconciler#getcurrenteventpriority\n// Gives React a clue as to how import the current interaction is\n\n\nfunction getEventPriority() {\n var _window, _window$event;\n\n let name = (_window = window) == null ? void 0 : (_window$event = _window.event) == null ? void 0 : _window$event.type;\n\n switch (name) {\n case 'click':\n case 'contextmenu':\n case 'dblclick':\n case 'pointercancel':\n case 'pointerdown':\n case 'pointerup':\n return DiscreteEventPriority;\n\n case 'pointermove':\n case 'pointerout':\n case 'pointerover':\n case 'pointerenter':\n case 'pointerleave':\n case 'wheel':\n return ContinuousEventPriority;\n\n default:\n return DefaultEventPriority;\n }\n}\n/**\n * Release pointer captures.\n * This is called by releasePointerCapture in the API, and when an object is removed.\n */\n\nfunction releaseInternalPointerCapture(capturedMap, obj, captures, pointerId) {\n const captureData = captures.get(obj);\n\n if (captureData) {\n captures.delete(obj); // If this was the last capturing object for this pointer\n\n if (captures.size === 0) {\n capturedMap.delete(pointerId);\n captureData.target.releasePointerCapture(pointerId);\n }\n }\n}\n\nfunction removeInteractivity(store, object) {\n const {\n internal\n } = store.getState(); // Removes every trace of an object from the data store\n\n internal.interaction = internal.interaction.filter(o => o !== object);\n internal.initialHits = internal.initialHits.filter(o => o !== object);\n internal.hovered.forEach((value, key) => {\n if (value.eventObject === object || value.object === object) {\n // Clear out intersects, they are outdated by now\n internal.hovered.delete(key);\n }\n });\n internal.capturedMap.forEach((captures, pointerId) => {\n releaseInternalPointerCapture(internal.capturedMap, object, captures, pointerId);\n });\n}\nfunction createEvents(store) {\n const temp = new THREE.Vector3();\n /** Calculates delta */\n\n function calculateDistance(event) {\n const {\n internal\n } = store.getState();\n const dx = event.offsetX - internal.initialClick[0];\n const dy = event.offsetY - internal.initialClick[1];\n return Math.round(Math.sqrt(dx * dx + dy * dy));\n }\n /** Returns true if an instance has a valid pointer-event registered, this excludes scroll, clicks etc */\n\n\n function filterPointerEvents(objects) {\n return objects.filter(obj => ['Move', 'Over', 'Enter', 'Out', 'Leave'].some(name => {\n var _r3f;\n\n return (_r3f = obj.__r3f) == null ? void 0 : _r3f.handlers['onPointer' + name];\n }));\n }\n\n function intersect(event, filter) {\n const state = store.getState();\n const duplicates = new Set();\n const intersections = []; // Allow callers to eliminate event objects\n\n const eventsObjects = filter ? filter(state.internal.interaction) : state.internal.interaction; // Reset all raycaster cameras to undefined\n\n eventsObjects.forEach(obj => {\n const state = getRootState(obj);\n\n if (state) {\n state.raycaster.camera = undefined;\n }\n });\n\n if (!state.previousRoot) {\n // Make sure root-level pointer and ray are set up\n state.events.compute == null ? void 0 : state.events.compute(event, state);\n } // Collect events\n\n\n let hits = eventsObjects // Intersect objects\n .flatMap(obj => {\n const state = getRootState(obj); // Skip event handling when noEvents is set, or when the raycasters camera is null\n\n if (!state || !state.events.enabled || state.raycaster.camera === null) return []; // When the camera is undefined we have to call the event layers update function\n\n if (state.raycaster.camera === undefined) {\n var _state$previousRoot;\n\n state.events.compute == null ? void 0 : state.events.compute(event, state, (_state$previousRoot = state.previousRoot) == null ? void 0 : _state$previousRoot.getState()); // If the camera is still undefined we have to skip this layer entirely\n\n if (state.raycaster.camera === undefined) state.raycaster.camera = null;\n } // Intersect object by object\n\n\n return state.raycaster.camera ? state.raycaster.intersectObject(obj, true) : [];\n }) // Sort by event priority and distance\n .sort((a, b) => {\n const aState = getRootState(a.object);\n const bState = getRootState(b.object);\n if (!aState || !bState) return 0;\n return bState.events.priority - aState.events.priority || a.distance - b.distance;\n }) // Filter out duplicates\n .filter(item => {\n const id = makeId(item);\n if (duplicates.has(id)) return false;\n duplicates.add(id);\n return true;\n }); // https://github.com/mrdoob/three.js/issues/16031\n // Allow custom userland intersect sort order, this likely only makes sense on the root filter\n\n if (state.events.filter) hits = state.events.filter(hits, state); // Bubble up the events, find the event source (eventObject)\n\n for (const hit of hits) {\n let eventObject = hit.object; // Bubble event up\n\n while (eventObject) {\n var _r3f2;\n\n if ((_r3f2 = eventObject.__r3f) != null && _r3f2.eventCount) intersections.push({ ...hit,\n eventObject\n });\n eventObject = eventObject.parent;\n }\n } // If the interaction is captured, make all capturing targets part of the intersect.\n\n\n if ('pointerId' in event && state.internal.capturedMap.has(event.pointerId)) {\n for (let captureData of state.internal.capturedMap.get(event.pointerId).values()) {\n intersections.push(captureData.intersection);\n }\n }\n\n return intersections;\n }\n /** Handles intersections by forwarding them to handlers */\n\n\n function handleIntersects(intersections, event, delta, callback) {\n const {\n raycaster,\n pointer,\n camera,\n internal\n } = store.getState(); // If anything has been found, forward it to the event listeners\n\n if (intersections.length) {\n const unprojectedPoint = temp.set(pointer.x, pointer.y, 0).unproject(camera);\n const localState = {\n stopped: false\n };\n\n for (const hit of intersections) {\n const hasPointerCapture = id => {\n var _internal$capturedMap, _internal$capturedMap2;\n\n return (_internal$capturedMap = (_internal$capturedMap2 = internal.capturedMap.get(id)) == null ? void 0 : _internal$capturedMap2.has(hit.eventObject)) != null ? _internal$capturedMap : false;\n };\n\n const setPointerCapture = id => {\n const captureData = {\n intersection: hit,\n target: event.target\n };\n\n if (internal.capturedMap.has(id)) {\n // if the pointerId was previously captured, we add the hit to the\n // event capturedMap.\n internal.capturedMap.get(id).set(hit.eventObject, captureData);\n } else {\n // if the pointerId was not previously captured, we create a map\n // containing the hitObject, and the hit. hitObject is used for\n // faster access.\n internal.capturedMap.set(id, new Map([[hit.eventObject, captureData]]));\n } // Call the original event now\n event.target.setPointerCapture(id);\n };\n\n const releasePointerCapture = id => {\n const captures = internal.capturedMap.get(id);\n\n if (captures) {\n releaseInternalPointerCapture(internal.capturedMap, hit.eventObject, captures, id);\n }\n }; // Add native event props\n\n\n let extractEventProps = {}; // This iterates over the event's properties including the inherited ones. Native PointerEvents have most of their props as getters which are inherited, but polyfilled PointerEvents have them all as their own properties (i.e. not inherited). We can't use Object.keys() or Object.entries() as they only return \"own\" properties; nor Object.getPrototypeOf(event) as that *doesn't* return \"own\" properties, only inherited ones.\n\n for (let prop in event) {\n let property = event[prop]; // Only copy over atomics, leave functions alone as these should be\n // called as event.nativeEvent.fn()\n\n if (typeof property !== 'function') extractEventProps[prop] = property;\n }\n\n let raycastEvent = { ...hit,\n ...extractEventProps,\n pointer,\n intersections,\n stopped: localState.stopped,\n delta,\n unprojectedPoint,\n ray: raycaster.ray,\n camera: camera,\n // Hijack stopPropagation, which just sets a flag\n stopPropagation: () => {\n // https://github.com/pmndrs/react-three-fiber/issues/596\n // Events are not allowed to stop propagation if the pointer has been captured\n const capturesForPointer = 'pointerId' in event && internal.capturedMap.get(event.pointerId); // We only authorize stopPropagation...\n\n if ( // ...if this pointer hasn't been captured\n !capturesForPointer || // ... or if the hit object is capturing the pointer\n capturesForPointer.has(hit.eventObject)) {\n raycastEvent.stopped = localState.stopped = true; // Propagation is stopped, remove all other hover records\n // An event handler is only allowed to flush other handlers if it is hovered itself\n\n if (internal.hovered.size && Array.from(internal.hovered.values()).find(i => i.eventObject === hit.eventObject)) {\n // Objects cannot flush out higher up objects that have already caught the event\n const higher = intersections.slice(0, intersections.indexOf(hit));\n cancelPointer([...higher, hit]);\n }\n }\n },\n // there should be a distinction between target and currentTarget\n target: {\n hasPointerCapture,\n setPointerCapture,\n releasePointerCapture\n },\n currentTarget: {\n hasPointerCapture,\n setPointerCapture,\n releasePointerCapture\n },\n nativeEvent: event\n }; // Call subscribers\n\n callback(raycastEvent); // Event bubbling may be interrupted by stopPropagation\n\n if (localState.stopped === true) break;\n }\n }\n\n return intersections;\n }\n\n function cancelPointer(intersections) {\n const {\n internal\n } = store.getState();\n Array.from(internal.hovered.values()).forEach(hoveredObj => {\n // When no objects were hit or the the hovered object wasn't found underneath the cursor\n // we call onPointerOut and delete the object from the hovered-elements map\n if (!intersections.length || !intersections.find(hit => hit.object === hoveredObj.object && hit.index === hoveredObj.index && hit.instanceId === hoveredObj.instanceId)) {\n const eventObject = hoveredObj.eventObject;\n const instance = eventObject.__r3f;\n const handlers = instance == null ? void 0 : instance.handlers;\n internal.hovered.delete(makeId(hoveredObj));\n\n if (instance != null && instance.eventCount) {\n // Clear out intersects, they are outdated by now\n const data = { ...hoveredObj,\n intersections\n };\n handlers.onPointerOut == null ? void 0 : handlers.onPointerOut(data);\n handlers.onPointerLeave == null ? void 0 : handlers.onPointerLeave(data);\n }\n }\n });\n }\n\n const handlePointer = name => {\n // Deal with cancelation\n switch (name) {\n case 'onPointerLeave':\n case 'onPointerCancel':\n return () => cancelPointer([]);\n\n case 'onLostPointerCapture':\n return event => {\n const {\n internal\n } = store.getState();\n\n if ('pointerId' in event && !internal.capturedMap.has(event.pointerId)) {\n // If the object event interface had onLostPointerCapture, we'd call it here on every\n // object that's getting removed.\n internal.capturedMap.delete(event.pointerId);\n cancelPointer([]);\n }\n };\n } // Any other pointer goes here ...\n\n\n return event => {\n const {\n onPointerMissed,\n internal\n } = store.getState(); //prepareRay(event)\n\n internal.lastEvent.current = event; // Get fresh intersects\n\n const isPointerMove = name === 'onPointerMove';\n const isClickEvent = name === 'onClick' || name === 'onContextMenu' || name === 'onDoubleClick';\n const filter = isPointerMove ? filterPointerEvents : undefined; //const hits = patchIntersects(intersect(filter), event)\n\n const hits = intersect(event, filter);\n const delta = isClickEvent ? calculateDistance(event) : 0; // Save initial coordinates on pointer-down\n\n if (name === 'onPointerDown') {\n internal.initialClick = [event.offsetX, event.offsetY];\n internal.initialHits = hits.map(hit => hit.eventObject);\n } // If a click yields no results, pass it back to the user as a miss\n // Missed events have to come first in order to establish user-land side-effect clean up\n\n\n if (isClickEvent && !hits.length) {\n if (delta <= 2) {\n pointerMissed(event, internal.interaction);\n if (onPointerMissed) onPointerMissed(event);\n }\n } // Take care of unhover\n\n\n if (isPointerMove) cancelPointer(hits);\n handleIntersects(hits, event, delta, data => {\n const eventObject = data.eventObject;\n const instance = eventObject.__r3f;\n const handlers = instance == null ? void 0 : instance.handlers; // Check presence of handlers\n\n if (!(instance != null && instance.eventCount)) return;\n\n if (isPointerMove) {\n // Move event ...\n if (handlers.onPointerOver || handlers.onPointerEnter || handlers.onPointerOut || handlers.onPointerLeave) {\n // When enter or out is present take care of hover-state\n const id = makeId(data);\n const hoveredItem = internal.hovered.get(id);\n\n if (!hoveredItem) {\n // If the object wasn't previously hovered, book it and call its handler\n internal.hovered.set(id, data);\n handlers.onPointerOver == null ? void 0 : handlers.onPointerOver(data);\n handlers.onPointerEnter == null ? void 0 : handlers.onPointerEnter(data);\n } else if (hoveredItem.stopped) {\n // If the object was previously hovered and stopped, we shouldn't allow other items to proceed\n data.stopPropagation();\n }\n } // Call mouse move\n\n\n handlers.onPointerMove == null ? void 0 : handlers.onPointerMove(data);\n } else {\n // All other events ...\n const handler = handlers[name];\n\n if (handler) {\n // Forward all events back to their respective handlers with the exception of click events,\n // which must use the initial target\n if (!isClickEvent || internal.initialHits.includes(eventObject)) {\n // Missed events have to come first\n pointerMissed(event, internal.interaction.filter(object => !internal.initialHits.includes(object))); // Now call the handler\n\n handler(data);\n }\n } else {\n // Trigger onPointerMissed on all elements that have pointer over/out handlers, but not click and weren't hit\n if (isClickEvent && internal.initialHits.includes(eventObject)) {\n pointerMissed(event, internal.interaction.filter(object => !internal.initialHits.includes(object)));\n }\n }\n }\n });\n };\n };\n\n function pointerMissed(event, objects) {\n objects.forEach(object => {\n var _r3f3;\n\n return (_r3f3 = object.__r3f) == null ? void 0 : _r3f3.handlers.onPointerMissed == null ? void 0 : _r3f3.handlers.onPointerMissed(event);\n });\n }\n\n return {\n handlePointer\n };\n}\n\nlet catalogue = {};\n\nlet extend = objects => void (catalogue = { ...catalogue,\n ...objects\n});\n\nfunction createRenderer(roots, getEventPriority) {\n function createInstance(type, {\n args = [],\n attach,\n ...props\n }, root) {\n let name = `${type[0].toUpperCase()}${type.slice(1)}`;\n let instance; // Auto-attach geometries and materials\n\n if (attach === undefined) {\n if (name.endsWith('Geometry')) attach = 'geometry';else if (name.endsWith('Material')) attach = 'material';\n }\n\n if (type === 'primitive') {\n if (props.object === undefined) throw `Primitives without 'object' are invalid!`;\n const object = props.object;\n instance = prepare(object, { ...object.__r3f,\n type,\n root,\n attach,\n primitive: true\n });\n } else {\n const target = catalogue[name];\n\n if (!target) {\n throw `${name} is not part of the THREE namespace! Did you forget to extend? See: https://docs.pmnd.rs/react-three-fiber/api/objects#using-3rd-party-objects-declaratively`;\n } // Throw if an object or literal was passed for args\n\n\n if (!Array.isArray(args)) throw 'The args prop must be an array!'; // Instanciate new object, link it to the root\n // Append memoized props with args so it's not forgotten\n\n instance = prepare(new target(...args), {\n type,\n root,\n attach,\n // Save args in case we need to reconstruct later for HMR\n memoizedProps: {\n args\n }\n });\n } // It should NOT call onUpdate on object instanciation, because it hasn't been added to the\n // view yet. If the callback relies on references for instance, they won't be ready yet, this is\n // why it passes \"true\" here\n // There is no reason to apply props to injects\n\n\n if (name !== 'inject') applyProps$1(instance, props);\n return instance;\n }\n\n function appendChild(parentInstance, child) {\n let added = false;\n\n if (child) {\n var _child$__r3f, _parentInstance$__r3f;\n\n // The attach attribute implies that the object attaches itself on the parent.\n // That is handled at commit to avoid duplication during Suspense\n if (!((_child$__r3f = child.__r3f) != null && _child$__r3f.attach) && child.isObject3D && parentInstance.isObject3D) {\n // add in the usual parent-child way\n parentInstance.add(child);\n added = true;\n } // This is for anything that used attach, and for non-Object3Ds that don't get attached to props;\n // that is, anything that's a child in React but not a child in the scenegraph.\n\n\n if (!added) (_parentInstance$__r3f = parentInstance.__r3f) == null ? void 0 : _parentInstance$__r3f.objects.push(child);\n if (!child.__r3f) prepare(child, {});\n\n child.__r3f.parents.push(parentInstance);\n\n updateInstance(child);\n invalidateInstance(child);\n }\n }\n\n function insertBefore(parentInstance, child, beforeChild) {\n let added = false;\n\n if (child) {\n var _child$__r3f2, _parentInstance$__r3f2;\n\n if (!((_child$__r3f2 = child.__r3f) != null && _child$__r3f2.attach) && child.isObject3D && parentInstance.isObject3D) {\n child.parent = parentInstance;\n child.dispatchEvent({\n type: 'added'\n });\n const restSiblings = parentInstance.children.filter(sibling => sibling !== child);\n const index = restSiblings.indexOf(beforeChild);\n parentInstance.children = [...restSiblings.slice(0, index), child, ...restSiblings.slice(index)];\n added = true;\n }\n\n if (!added) (_parentInstance$__r3f2 = parentInstance.__r3f) == null ? void 0 : _parentInstance$__r3f2.objects.push(child);\n if (!child.__r3f) prepare(child, {});\n\n child.__r3f.parents.push(parentInstance);\n\n updateInstance(child);\n invalidateInstance(child);\n }\n }\n\n function removeRecursive(array, parent, dispose = false) {\n if (array) [...array].forEach(child => removeChild(parent, child, dispose));\n }\n\n function removeChild(parentInstance, child, dispose) {\n if (child) {\n var _parentInstance$__r3f3, _child$__r3f3, _child$__r3f5;\n\n // Clear the parent reference\n if (child.__r3f) child.__r3f.parents = child.__r3f.parents.filter(parent => parent !== parentInstance); // Remove child from the parents objects\n\n if ((_parentInstance$__r3f3 = parentInstance.__r3f) != null && _parentInstance$__r3f3.objects) parentInstance.__r3f.objects = parentInstance.__r3f.objects.filter(x => x !== child); // Remove attachment\n\n if ((_child$__r3f3 = child.__r3f) != null && _child$__r3f3.attach) {\n detach(parentInstance, child, child.__r3f.attach);\n } else if (child.isObject3D && parentInstance.isObject3D) {\n var _child$__r3f4;\n\n parentInstance.remove(child); // Remove interactivity\n\n if ((_child$__r3f4 = child.__r3f) != null && _child$__r3f4.root) {\n removeInteractivity(child.__r3f.root, child);\n }\n } // Allow objects to bail out of recursive dispose altogether by passing dispose={null}\n // Never dispose of primitives because their state may be kept outside of React!\n // In order for an object to be able to dispose it has to have\n // - a dispose method,\n // - it cannot be a \n // - it cannot be a THREE.Scene, because three has broken it's own api\n //\n // Since disposal is recursive, we can check the optional dispose arg, which will be undefined\n // when the reconciler calls it, but then carry our own check recursively\n\n\n const isPrimitive = (_child$__r3f5 = child.__r3f) == null ? void 0 : _child$__r3f5.primitive;\n const shouldDispose = dispose === undefined ? child.dispose !== null && !isPrimitive : dispose; // Remove nested child objects. Primitives should not have objects and children that are\n // attached to them declaratively ...\n\n if (!isPrimitive) {\n var _child$__r3f6;\n\n removeRecursive((_child$__r3f6 = child.__r3f) == null ? void 0 : _child$__r3f6.objects, child, shouldDispose);\n removeRecursive(child.children, child, shouldDispose);\n } // Remove references\n\n\n if (child.__r3f) {\n delete child.__r3f.root;\n delete child.__r3f.objects;\n delete child.__r3f.handlers;\n delete child.__r3f.memoizedProps;\n if (!isPrimitive) delete child.__r3f;\n } // Dispose item whenever the reconciler feels like it\n\n\n if (shouldDispose && child.dispose && child.type !== 'Scene') {\n unstable_scheduleCallback(unstable_IdlePriority, () => {\n try {\n child.dispose();\n } catch (e) {\n /* ... */\n }\n });\n }\n\n invalidateInstance(parentInstance);\n }\n }\n\n function switchInstance(instance, type, newProps, fiber) {\n var _instance$__r3f, _newInstance$__r3f;\n\n const parents = (_instance$__r3f = instance.__r3f) == null ? void 0 : _instance$__r3f.parents;\n if (!(parents != null && parents.length)) return;\n const newInstance = createInstance(type, newProps, instance.__r3f.root); // https://github.com/pmndrs/react-three-fiber/issues/1348\n // When args change the instance has to be re-constructed, which then\n // forces r3f to re-parent the children and non-scene objects\n // This can not include primitives, which should not have declarative children\n\n if (type !== 'primitive' && instance.children) {\n instance.children.forEach(child => appendChild(newInstance, child));\n instance.children = [];\n } // Copy over child attachments\n\n\n for (const child of instance.__r3f.objects) {\n appendChild(newInstance, child);\n detach(instance, child, child.__r3f.attach);\n attach(newInstance, child, child.__r3f.attach);\n }\n\n instance.__r3f.objects = [];\n\n for (const parent of parents) {\n removeChild(parent, instance);\n appendChild(parent, newInstance);\n } // Re-bind event handlers\n\n\n if (newInstance.raycast && newInstance.__r3f.eventCount) {\n const rootState = newInstance.__r3f.root.getState();\n\n rootState.internal.interaction.push(newInstance);\n } // Attach instance to parent\n\n\n if ((_newInstance$__r3f = newInstance.__r3f) != null && _newInstance$__r3f.attach) {\n for (const parent of parents) {\n attach(parent, newInstance, newInstance.__r3f.attach);\n }\n } // This evil hack switches the react-internal fiber node\n [fiber, fiber.alternate].forEach(fiber => {\n if (fiber !== null) {\n fiber.stateNode = newInstance;\n\n if (fiber.ref) {\n if (typeof fiber.ref === 'function') fiber.ref(newInstance);else fiber.ref.current = newInstance;\n }\n }\n });\n }\n\n const reconciler = Reconciler({\n createInstance,\n removeChild,\n appendChild,\n appendInitialChild: appendChild,\n insertBefore,\n supportsMicrotask: true,\n warnsIfNotActing: true,\n supportsMutation: true,\n isPrimaryRenderer: false,\n noTimeout: -1,\n appendChildToContainer: (container, child) => {\n const scene = container.getState().scene; // Link current root to the default scene\n\n scene.__r3f.root = container;\n appendChild(scene, child);\n },\n removeChildFromContainer: (container, child) => removeChild(container.getState().scene, child),\n insertInContainerBefore: (container, child, beforeChild) => insertBefore(container.getState().scene, child, beforeChild),\n getRootHostContext: () => null,\n getChildHostContext: parentHostContext => parentHostContext,\n\n finalizeInitialChildren(instance) {\n var _instance$__r3f2;\n\n const localState = (_instance$__r3f2 = instance == null ? void 0 : instance.__r3f) != null ? _instance$__r3f2 : {}; // https://github.com/facebook/react/issues/20271\n // Returning true will trigger commitMount\n\n return !!localState.handlers || !!localState.attach;\n },\n\n prepareUpdate(instance, type, oldProps, newProps) {\n // Create diff-sets\n if (instance.__r3f.primitive && newProps.object && newProps.object !== instance) {\n return [true];\n } else {\n // This is a data object, let's extract critical information about it\n const {\n args: argsNew = [],\n children: cN,\n ...restNew\n } = newProps;\n const {\n args: argsOld = [],\n children: cO,\n ...restOld\n } = oldProps; // Throw if an object or literal was passed for args\n\n if (!Array.isArray(argsNew)) throw 'The args prop must be an array!'; // If it has new props or arguments, then it needs to be re-instanciated\n\n if (argsNew.some((value, index) => value !== argsOld[index])) return [true]; // Create a diff-set, flag if there are any changes\n\n const diff = diffProps(instance, restNew, restOld, true);\n if (diff.changes.length) return [false, diff]; // Otherwise do not touch the instance\n\n return null;\n }\n },\n\n commitUpdate(instance, [reconstruct, diff], type, oldProps, newProps, fiber) {\n // Reconstruct when args or instance,\n shouldDeprioritizeSubtree: () => false,\n prepareForCommit: () => null,\n preparePortalMount: container => prepare(container.getState().scene),\n resetAfterCommit: () => {},\n shouldSetTextContent: () => false,\n clearContainer: () => false,\n detachDeletedInstance: () => {},\n\n hideInstance(instance) {\n if (instance.isObject3D) instance.visible = false;\n invalidateInstance(instance);\n },\n\n unhideInstance(instance, props) {\n if (instance.isObject3D && props.visible == null || props.visible) instance.visible = true;\n invalidateInstance(instance);\n },\n\n createTextInstance: () => {},\n hideTextInstance: () => {\n throw new Error('Text is not allowed in the R3F tree.');\n },\n unhideTextInstance: () => {},\n getCurrentEventPriority: () => getEventPriority ? getEventPriority() : DefaultEventPriority,\n // @ts-ignore\n now: typeof performance !== 'undefined' && is.fun(performance.now) ? performance.now : is.fun(Date.now) ? Date.now : undefined,\n // @ts-ignore\n scheduleTimeout: is.fun(setTimeout) ? setTimeout : undefined,\n // @ts-ignore\n cancelTimeout: is.fun(clearTimeout) ? clearTimeout : undefined,\n setTimeout: is.fun(setTimeout) ? setTimeout : undefined,\n clearTimeout: is.fun(clearTimeout) ? clearTimeout : undefined\n });\n return {\n reconciler,\n applyProps: applyProps$1\n };\n}\n\nconst privateKeys = ['set', 'get', 'setSize', 'setFrameloop', 'setDpr', 'events', 'invalidate', 'advance', 'size', 'viewport'];\nconst isRenderer = def => !!(def != null && def.render);\nconst context = /*#__PURE__*/React.createContext(null);\n\nconst createStore = (invalidate, advance) => {\n const rootState = create((set, get) => {\n const position = new THREE.Vector3();\n const defaultTarget = new THREE.Vector3();\n const tempTarget = new THREE.Vector3();\n\n function getCurrentViewport(camera = get().camera, target = defaultTarget, size = get().size) {\n const {\n width,\n height\n } = size;\n const aspect = width / height;\n if (target instanceof THREE.Vector3) tempTarget.copy(target);else tempTarget.set(...target);\n const distance = camera.getWorldPosition(position).distanceTo(tempTarget);\n\n if (isOrthographicCamera(camera)) {\n return {\n width: width / camera.zoom,\n height: height / camera.zoom,\n factor: 1,\n distance,\n aspect\n };\n } else {\n const fov = camera.fov * Math.PI / 180; // convert vertical fov to radians\n\n const h = 2 * Math.tan(fov / 2) * distance; // visible height\n\n const w = h * (width / height);\n return {\n width: w,\n height: h,\n factor: width / w,\n distance,\n aspect\n };\n }\n }\n\n let performanceTimeout = undefined;\n\n const setPerformanceCurrent = current => set(state => ({\n performance: { ...state.performance,\n current\n }\n }));\n\n const pointer = new THREE.Vector2();\n return {\n set,\n get,\n // Mock objects that have to be configured\n gl: null,\n camera: null,\n raycaster: null,\n events: {\n priority: 1,\n enabled: true,\n connected: false\n },\n xr: null,\n invalidate: (frames = 1) => invalidate(get(), frames),\n advance: (timestamp, runGlobalEffects) => advance(timestamp, runGlobalEffects, get()),\n legacy: false,\n linear: false,\n flat: false,\n scene: prepare(new THREE.Scene()),\n controls: null,\n clock: new THREE.Clock(),\n pointer,\n mouse: pointer,\n frameloop: 'always',\n onPointerMissed: undefined,\n performance: {\n current: 1,\n min: 0.5,\n max: 1,\n debounce: 200,\n regress: () => {\n const state = get(); // Clear timeout\n\n if (performanceTimeout) clearTimeout(performanceTimeout); // Set lower bound performance\n\n if (state.performance.current !== state.performance.min) setPerformanceCurrent(state.performance.min); // Go back to upper bound performance after a while unless something regresses meanwhile\n\n performanceTimeout = setTimeout(() => setPerformanceCurrent(get().performance.max), state.performance.debounce);\n }\n },\n size: {\n width: 0,\n height: 0,\n updateStyle: false\n },\n viewport: {\n initialDpr: 0,\n dpr: 0,\n width: 0,\n height: 0,\n aspect: 0,\n distance: 0,\n factor: 0,\n getCurrentViewport\n },\n setEvents: events => set(state => ({ ...state,\n events: { ...state.events,\n ...events\n }\n })),\n setSize: (width, height, updateStyle) => {\n const camera = get().camera;\n const size = {\n width,\n height,\n updateStyle\n };\n set(state => ({\n size,\n viewport: { ...state.viewport,\n ...getCurrentViewport(camera, defaultTarget, size)\n }\n }));\n },\n setDpr: dpr => set(state => {\n const resolved = calculateDpr(dpr);\n return {\n viewport: { ...state.viewport,\n dpr: resolved,\n initialDpr: state.viewport.initialDpr || resolved\n }\n };\n }),\n setFrameloop: (frameloop = 'always') => {\n const clock = get().clock; // if frameloop === \"never\" clock.elapsedTime is updated using advance(timestamp)\n\n clock.stop();\n clock.elapsedTime = 0;\n\n if (frameloop !== 'never') {\n clock.start();\n clock.elapsedTime = 0;\n }\n\n set(() => ({\n frameloop\n }));\n },\n previousRoot: undefined,\n internal: {\n active: false,\n priority: 0,\n frames: 0,\n lastEvent: /*#__PURE__*/React.createRef(),\n interaction: [],\n hovered: new Map(),\n subscribers: [],\n initialClick: [0, 0],\n initialHits: [],\n capturedMap: new Map(),\n subscribe: (ref, priority, store) => {\n const internal = get().internal; // If this subscription was given a priority, it takes rendering into its own hands\n // For that reason we switch off automatic rendering and increase the manual flag\n // As long as this flag is positive there can be no internal rendering at all\n // because there could be multiple render subscriptions\n\n internal.priority = internal.priority + (priority > 0 ? 1 : 0);\n internal.subscribers.push({\n ref,\n priority,\n store\n }); // Register subscriber and sort layers from lowest to highest, meaning,\n // highest priority renders last (on top of the other frames)\n\n internal.subscribers = internal.subscribers.sort((a, b) => a.priority - b.priority);\n return () => {\n const internal = get().internal;\n\n if (internal != null && internal.subscribers) {\n // Decrease manual flag if this subscription had a priority\n internal.priority = internal.priority - (priority > 0 ? 1 : 0); // Remove subscriber from list\n\n internal.subscribers = internal.subscribers.filter(s => s.ref !== ref);\n }\n };\n }\n }\n };\n });\n const state = rootState.getState(); // Resize camera and renderer on changes to size and pixelratio\n\n let oldSize = state.size;\n let oldDpr = state.viewport.dpr;\n rootState.subscribe(() => {\n const {\n camera,\n size,\n viewport,\n gl\n } = rootState.getState();\n\n if (size !== oldSize || viewport.dpr !== oldDpr) {\n updateCamera(camera, size); // Update renderer\n\n gl.setPixelRatio(viewport.dpr);\n gl.setSize(size.width, size.height, size.updateStyle);\n oldSize = size;\n oldDpr = viewport.dpr;\n }\n }); // Invalidate on any change\n\n rootState.subscribe(state => invalidate(state)); // Return root state\n\n return rootState;\n};\n\nfunction createSubs(callback, subs) {\n const index = subs.length;\n subs.push(callback);\n return () => void subs.splice(index, 1);\n}\n\nlet i;\nlet globalEffects = [];\nlet globalAfterEffects = [];\nlet globalTailEffects = [];\n/**\n * Adds a global render callback which is called each frame.\n * @see https://docs.pmnd.rs/react-three-fiber/api/additional-exports#addEffect\n */\n\nconst addEffect = callback => createSubs(callback, globalEffects);\n/**\n * Adds a global after-render callback which is called each frame.\n * @see https://docs.pmnd.rs/react-three-fiber/api/additional-exports#addAfterEffect\n */\n\nconst addAfterEffect = callback => createSubs(callback, globalAfterEffects);\n/**\n * Adds a global callback which is called when rendering stops.\n * @see https://docs.pmnd.rs/react-three-fiber/api/additional-exports#addTail\n */\n\nconst addTail = callback => createSubs(callback, globalTailEffects);\n\nfunction run(effects, timestamp) {\n for (i = 0; i < effects.length; i++) effects[i](timestamp);\n}\n\nlet subscribers;\nlet subscription;\n\nfunction render$1(timestamp, state, frame) {\n // Run local effects\n let delta = state.clock.getDelta(); // In frameloop='never' mode, clock times are updated using the provided timestamp\n\n if (state.frameloop === 'never' && typeof timestamp === 'number') {\n delta = timestamp - state.clock.elapsedTime;\n state.clock.oldTime = state.clock.elapsedTime;\n state.clock.elapsedTime = timestamp;\n } // Call subscribers (useFrame)\n\n\n subscribers = state.internal.subscribers;\n\n for (i = 0; i < subscribers.length; i++) {\n subscription = subscribers[i];\n subscription.ref.current(subscription.store.getState(), delta, frame);\n } // Render content\n\n\n if (!state.internal.priority && state.gl.render) state.gl.render(state.scene, state.camera); // Decrease frame count\n\n state.internal.frames = Math.max(0, state.internal.frames - 1);\n return state.frameloop === 'always' ? 1 : state.internal.frames;\n}\n\nfunction createLoop(roots) {\n let running = false;\n let repeat;\n let frame;\n let state;\n\n function loop(timestamp) {\n frame = requestAnimationFrame(loop);\n running = true;\n repeat = 0; // Run effects\n\n if (globalEffects.length) run(globalEffects, timestamp); // Render all roots\n\n roots.forEach(root => {\n var _state$gl$xr;\n\n state = root.store.getState(); // If the frameloop is invalidated, do not run another frame\n\n if (state.internal.active && (state.frameloop === 'always' || state.internal.frames > 0) && !((_state$gl$xr = state.gl.xr) != null && _state$gl$xr.isPresenting)) {\n repeat += render$1(timestamp, state);\n }\n }); // Run after-effects\n\n if (globalAfterEffects.length) run(globalAfterEffects, timestamp); // Stop the loop if nothing invalidates it\n\n if (repeat === 0) {\n // Tail call effects, they are called when rendering stops\n if (globalTailEffects.length) run(globalTailEffects, timestamp); // Flag end of operation\n\n running = false;\n return cancelAnimationFrame(frame);\n }\n }\n\n function invalidate(state, frames = 1) {\n var _state$gl$xr2;\n\n if (!state) return roots.forEach(root => invalidate(root.store.getState()), frames);\n if ((_state$gl$xr2 = state.gl.xr) != null && _state$gl$xr2.isPresenting || !state.internal.active || state.frameloop === 'never') return; // Increase frames, do not go higher than 60\n\n state.internal.frames = Math.min(60, state.internal.frames + frames); // If the render-loop isn't active, start it\n\n if (!running) {\n running = true;\n requestAnimationFrame(loop);\n }\n }\n\n function advance(timestamp, runGlobalEffects = true, state, frame) {\n if (runGlobalEffects) run(globalEffects, timestamp);\n if (!state) roots.forEach(root => render$1(timestamp, root.store.getState()));else render$1(timestamp, state, frame);\n if (runGlobalEffects) run(globalAfterEffects, timestamp);\n }\n\n return {\n loop,\n\n /**\n * Invalidates the view, requesting a frame to be rendered. Will globally invalidate unless passed a root's state.\n * @see https://docs.pmnd.rs/react-three-fiber/api/additional-exports#invalidate\n */\n invalidate,\n\n /**\n * Advances the frameloop and runs render effects, useful for when manually rendering via `frameloop=\"never\"`.\n * @see https://docs.pmnd.rs/react-three-fiber/api/additional-exports#advance\n */\n advance\n };\n}\n\nfunction useStore() {\n const store = React.useContext(context);\n if (!store) throw `R3F hooks can only be used within the Canvas component!`;\n return store;\n}\n/**\n * Accesses R3F's internal state, containing renderer, canvas, scene, etc.\n * @see https://docs.pmnd.rs/react-three-fiber/api/hooks#usethree\n */\n\nfunction useThree(selector = state => state, equalityFn) {\n return useStore()(selector, equalityFn);\n}\n/**\n * Executes a callback before render in a shared frame loop.\n * Can order effects with render priority or manually render with a positive priority.\n * @see https://docs.pmnd.rs/react-three-fiber/api/hooks#useframe\n */\n\nfunction useFrame(callback, renderPriority = 0) {\n const store = useStore();\n const subscribe = store.getState().internal.subscribe; // Memoize ref\n\n const ref = useMutableCallback(callback); // Subscribe on mount, unsubscribe on unmount\n\n useIsomorphicLayoutEffect(() => subscribe(ref, renderPriority, store), [renderPriority, subscribe, store]);\n return null;\n}\n/**\n * Returns a node graph of an object with named nodes & materials.\n * @see https://docs.pmnd.rs/react-three-fiber/api/hooks#usegraph\n */\n\nfunction useGraph(object) {\n return React.useMemo(() => buildGraph(object), [object]);\n}\n\nfunction loadingFn(extensions, onProgress) {\n return function (Proto, ...input) {\n // Construct new loader and run extensions\n const loader = new Proto();\n if (extensions) extensions(loader); // Go through the urls and load them\n\n return Promise.all(input.map(input => new Promise((res, reject) => loader.load(input, data => {\n if (data.scene) Object.assign(data, buildGraph(data.scene));\n res(data);\n }, onProgress, error => reject(`Could not load ${input}: ${error.message}`)))));\n };\n}\n\n/**\n * Synchronously loads and caches assets with a three loader.\n *\n * Note: this hook's caller must be wrapped with `React.Suspense`\n * @see https://docs.pmnd.rs/react-three-fiber/api/hooks#useloader\n */\nfunction useLoader(Proto, input, extensions, onProgress) {\n // Use suspense to load async assets\n const keys = Array.isArray(input) ? input : [input];\n const results = suspend(loadingFn(extensions, onProgress), [Proto, ...keys], {\n equal: is.equ\n }); // Return the object/s\n\n return Array.isArray(input) ? results : results[0];\n}\n/**\n * Preloads an asset into cache as a side-effect.\n */\n\nuseLoader.preload = function (Proto, input, extensions) {\n const keys = Array.isArray(input) ? input : [input];\n return preload(loadingFn(extensions), [Proto, ...keys]);\n};\n/**\n * Removes a loaded asset from cache.\n */\n\n\nuseLoader.clear = function (Proto, input) {\n const keys = Array.isArray(input) ? input : [input];\n return clear([Proto, ...keys]);\n};\n\nconst roots = new Map();\nconst {\n invalidate,\n advance\n} = createLoop(roots);\nconst {\n reconciler,\n applyProps\n} = createRenderer(roots, getEventPriority);\nconst shallowLoose = {\n objects: 'shallow',\n strict: false\n};\n\nconst createRendererInstance = (gl, canvas) => {\n const customRenderer = typeof gl === 'function' ? gl(canvas) : gl;\n if (isRenderer(customRenderer)) return customRenderer;else return new THREE.WebGLRenderer({\n powerPreference: 'high-performance',\n canvas: canvas,\n antialias: true,\n alpha: true,\n ...gl\n });\n};\n\nfunction createRoot(canvas) {\n // Check against mistaken use of createRoot\n let prevRoot = roots.get(canvas);\n let prevFiber = prevRoot == null ? void 0 : prevRoot.fiber;\n let prevStore = prevRoot == null ? void 0 : prevRoot.store;\n if (prevRoot) console.warn('R3F.createRoot should only be called once!'); // Report when an error was detected in a previous render\n // https://github.com/pmndrs/react-three-fiber/pull/2261\n\n const logRecoverableError = typeof reportError === 'function' ? // In modern browsers, reportError will dispatch an error event,\n // emulating an uncaught JavaScript error.\n reportError : // In older browsers and test environments, fallback to console.error.\n console.error; // Create store\n\n const store = prevStore || createStore(invalidate, advance); // Create renderer\n\n const fiber = prevFiber || reconciler.createContainer(store, ConcurrentRoot, null, false, null, '', logRecoverableError, null); // Map it\n\n if (!prevRoot) roots.set(canvas, {\n fiber,\n store\n }); // Locals\n\n let onCreated;\n let configured = false;\n return {\n configure(props = {}) {\n var _canvas$parentElement, _canvas$parentElement2, _canvas$parentElement3, _canvas$parentElement4;\n\n let {\n gl: glConfig,\n size,\n events,\n onCreated: onCreatedCallback,\n shadows = false,\n linear = false,\n flat = false,\n legacy = false,\n orthographic = false,\n frameloop = 'always',\n dpr = [1, 2],\n performance,\n raycaster: raycastOptions,\n camera: cameraOptions,\n onPointerMissed\n } = props;\n let state = store.getState(); // Set up renderer (one time only!)\n\n let gl = state.gl;\n if (!state.gl) state.set({\n gl: gl = createRendererInstance(glConfig, canvas)\n }); // Set up raycaster (one time only!)\n\n let raycaster = state.raycaster;\n if (!raycaster) state.set({\n raycaster: raycaster = new THREE.Raycaster()\n }); // Set raycaster options\n\n const {\n params,\n ...options\n } = raycastOptions || {};\n if (!is.equ(options, raycaster, shallowLoose)) applyProps(raycaster, { ...options\n });\n if (!is.equ(params, raycaster.params, shallowLoose)) applyProps(raycaster, {\n params: { ...raycaster.params,\n ...params\n }\n }); // Create default camera (one time only!)\n\n if (!state.camera) {\n const isCamera = cameraOptions instanceof THREE.Camera;\n const camera = isCamera ? cameraOptions : orthographic ? new THREE.OrthographicCamera(0, 0, 0, 0, 0.1, 1000) : new THREE.PerspectiveCamera(75, 0, 0.1, 1000);\n\n if (!isCamera) {\n camera.position.z = 5;\n if (cameraOptions) applyProps(camera, cameraOptions); // Always look at center by default\n\n if (!(cameraOptions != null && cameraOptions.rotation)) camera.lookAt(0, 0, 0);\n }\n\n state.set({\n camera\n });\n } // Set up XR (one time only!)\n\n\n if (!state.xr) {\n // Handle frame behavior in WebXR\n const handleXRFrame = (timestamp, frame) => {\n const state = store.getState();\n if (state.frameloop === 'never') return;\n advance(timestamp, true, state, frame);\n }; // Toggle render switching on session\n\n\n const handleSessionChange = () => {\n const gl = store.getState().gl;\n gl.xr.enabled = gl.xr.isPresenting; // @ts-ignore\n // WebXRManager's signature is incorrect.\n // See: https://github.com/pmndrs/react-three-fiber/pull/2017#discussion_r790134505\n\n gl.xr.setAnimationLoop(gl.xr.isPresenting ? handleXRFrame : null);\n }; // WebXR session manager\n\n\n const xr = {\n connect() {\n const gl = store.getState().gl;\n gl.xr.addEventListener('sessionstart', handleSessionChange);\n gl.xr.addEventListener('sessionend', handleSessionChange);\n },\n\n disconnect() {\n const gl = store.getState().gl;\n gl.xr.removeEventListener('sessionstart', handleSessionChange);\n gl.xr.removeEventListener('sessionend', handleSessionChange);\n }\n\n }; // Subscribe to WebXR session events\n\n if (gl.xr) xr.connect();\n state.set({\n xr\n });\n } // Set shadowmap\n\n\n if (gl.shadowMap) {\n const isBoolean = is.boo(shadows);\n\n if (isBoolean && gl.shadowMap.enabled !== shadows || !is.equ(shadows, gl.shadowMap, shallowLoose)) {\n const old = gl.shadowMap.enabled;\n gl.shadowMap.enabled = !!shadows;\n if (!isBoolean) Object.assign(gl.shadowMap, shadows);else gl.shadowMap.type = THREE.PCFSoftShadowMap;\n if (old !== gl.shadowMap.enabled) gl.shadowMap.needsUpdate = true;\n }\n } // Safely set color management if available.\n // Avoid accessing THREE.ColorManagement to play nice with older versions\n\n\n if ('ColorManagement' in THREE) {\n setDeep(THREE, legacy, ['ColorManagement', 'legacyMode']);\n }\n\n const outputEncoding = linear ? THREE.LinearEncoding : THREE.sRGBEncoding;\n const toneMapping = flat ? THREE.NoToneMapping : THREE.ACESFilmicToneMapping;\n if (gl.outputEncoding !== outputEncoding) gl.outputEncoding = outputEncoding;\n if (gl.toneMapping !== toneMapping) gl.toneMapping = toneMapping; // Update color management state\n\n if (state.legacy !== legacy) state.set(() => ({\n legacy\n }));\n if (state.linear !== linear) state.set(() => ({\n linear\n }));\n if (state.flat !== flat) state.set(() => ({\n flat\n })); // Set gl props\n\n if (glConfig && !is.fun(glConfig) && !isRenderer(glConfig) && !is.equ(glConfig, gl, shallowLoose)) applyProps(gl, glConfig); // Store events internally\n\n if (events && !state.events.handlers) state.set({\n events: events(store)\n }); // Check pixelratio\n\n if (dpr && state.viewport.dpr !== calculateDpr(dpr)) state.setDpr(dpr); // Check size, allow it to take on container bounds initially\n\n size = size || {\n width: (_canvas$parentElement = (_canvas$parentElement2 = canvas.parentElement) == null ? void 0 : _canvas$parentElement2.clientWidth) != null ? _canvas$parentElement : 0,\n height: (_canvas$parentElement3 = (_canvas$parentElement4 = canvas.parentElement) == null ? void 0 : _canvas$parentElement4.clientHeight) != null ? _canvas$parentElement3 : 0\n };\n if (!is.equ(size, state.size, shallowLoose)) state.setSize(size.width, size.height, size.updateStyle); // Check frameloop\n\n if (state.frameloop !== frameloop) state.setFrameloop(frameloop); // Check pointer missed\n\n if (!state.onPointerMissed) state.set({\n onPointerMissed\n }); // Check performance\n\n if (performance && !is.equ(performance, state.performance, shallowLoose)) state.set(state => ({\n performance: { ...state.performance,\n ...performance\n }\n })); // Set locals\n\n onCreated = onCreatedCallback;\n configured = true;\n return this;\n },\n\n render(children) {\n // The root has to be configured before it can be rendered\n if (!configured) this.configure();\n reconciler.updateContainer( /*#__PURE__*/React.createElement(Provider, {\n store: store,\n children: children,\n onCreated: onCreated,\n rootElement: canvas\n }), fiber, null, () => undefined);\n return store;\n },\n\n unmount() {\n unmountComponentAtNode(canvas);\n }\n\n };\n}\n\nfunction render(children, canvas, config) {\n console.warn('R3F.render is no longer supported in React 18. Use createRoot instead!');\n const root = createRoot(canvas);\n root.configure(config);\n return root.render(children);\n}\n\nfunction Provider({\n store,\n children,\n onCreated,\n rootElement\n}) {\n useIsomorphicLayoutEffect(() => {\n const state = store.getState(); // Flag the canvas active, rendering will now begin\n\n state.set(state => ({\n internal: { ...state.internal,\n active: true\n }\n })); // Notifiy that init is completed, the scene graph exists, but nothing has yet rendered\n\n if (onCreated) onCreated(state); // Connect events to the targets parent, this is done to ensure events are registered on\n // a shared target, and not on the canvas itself\n\n if (!store.getState().events.connected) state.events.connect == null ? void 0 : state.events.connect(rootElement); // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n return /*#__PURE__*/React.createElement(context.Provider, {\n value: store\n }, children);\n}\n\nfunction unmountComponentAtNode(canvas, callback) {\n const root = roots.get(canvas);\n const fiber = root == null ? void 0 : root.fiber;\n\n if (fiber) {\n const state = root == null ? void 0 : root.store.getState();\n if (state) state.internal.active = false;\n reconciler.updateContainer(null, fiber, null, () => {\n if (state) {\n setTimeout(() => {\n try {\n var _state$gl, _state$gl$renderLists, _state$gl2, _state$gl3;\n\n state.events.disconnect == null ? void 0 : state.events.disconnect();\n (_state$gl = state.gl) == null ? void 0 : (_state$gl$renderLists = _state$gl.renderLists) == null ? void 0 : _state$gl$renderLists.dispose == null ? void 0 : _state$gl$renderLists.dispose();\n (_state$gl2 = state.gl) == null ? void 0 : _state$gl2.forceContextLoss == null ? void 0 : _state$gl2.forceContextLoss();\n if ((_state$gl3 = state.gl) != null && _state$gl3.xr) state.xr.disconnect();\n dispose(state);\n roots.delete(canvas);\n if (callback) callback(canvas);\n } catch (e) {\n /* ... */\n }\n }, 500);\n }\n });\n }\n}\n\nfunction createPortal(children, container, state) {\n return /*#__PURE__*/React.createElement(Portal, {\n key: container.uuid,\n children: children,\n container: container,\n state: state\n });\n}\n\nfunction Portal({\n state = {},\n children,\n container\n}) {\n /** This has to be a component because it would not be able to call useThree/useStore otherwise since\n * if this is our environment, then we are not in r3f's renderer but in react-dom, it would trigger\n * the \"R3F hooks can only be used within the Canvas component!\" warning:\n * \n * {createPortal(...)} */\n const {\n events,\n size,\n ...rest\n } = state;\n const previousRoot = useStore();\n const [raycaster] = React.useState(() => new THREE.Raycaster());\n const [pointer] = React.useState(() => new THREE.Vector2());\n const inject = React.useCallback((rootState, injectState) => {\n const intersect = { ...rootState\n }; // all prev state props\n // Only the fields of \"rootState\" that do not differ from injectState\n // Some props should be off-limits\n // Otherwise filter out the props that are different and let the inject layer take precedence\n\n Object.keys(rootState).forEach(key => {\n if ( // Some props should be off-limits\n privateKeys.includes(key) || // Otherwise filter out the props that are different and let the inject layer take precedence\n rootState[key] !== injectState[key]) {\n delete intersect[key];\n }\n });\n let viewport = undefined;\n\n if (injectState && size) {\n const camera = injectState.camera; // Calculate the override viewport, if present\n\n viewport = rootState.viewport.getCurrentViewport(camera, new THREE.Vector3(), size); // Update the portal camera, if it differs from the previous layer\n\n if (camera !== rootState.camera) updateCamera(camera, size);\n }\n\n return { // The intersect consists of the previous root state\n ...intersect,\n // Portals have their own scene, which forms the root, a raycaster and a pointer\n scene: container,\n raycaster,\n pointer,\n mouse: pointer,\n // Their previous root is the layer before it\n previousRoot,\n // Events, size and viewport can be overridden by the inject layer\n events: { ...rootState.events,\n ...(injectState == null ? void 0 : injectState.events),\n ...events\n },\n size: { ...rootState.size,\n ...size\n },\n viewport: { ...rootState.viewport,\n ...viewport\n },\n ...rest\n };\n }, [state]);\n const [usePortalStore] = React.useState(() => {\n // Create a mirrored store, based on the previous root with a few overrides ...\n const previousState = previousRoot.getState();\n const store = create((set, get) => ({ ...previousState,\n scene: container,\n raycaster,\n pointer,\n mouse: pointer,\n previousRoot,\n events: { ...previousState.events,\n ...events\n },\n size: { ...previousState.size,\n ...size\n },\n ...rest,\n // Set and get refer to this root-state\n set,\n get,\n // Layers are allowed to override events\n setEvents: events => set(state => ({ ...state,\n events: { ...state.events,\n ...events\n }\n }))\n }));\n return store;\n });\n React.useEffect(() => {\n // Subscribe to previous root-state and copy changes over to the mirrored portal-state\n const unsub = previousRoot.subscribe(prev => usePortalStore.setState(state => inject(prev, state)));\n return () => {\n unsub();\n usePortalStore.destroy();\n };\n }, []);\n React.useEffect(() => {\n usePortalStore.setState(injectState => inject(previousRoot.getState(), injectState));\n }, [inject]);\n return /*#__PURE__*/React.createElement(React.Fragment, null, reconciler.createPortal( /*#__PURE__*/React.createElement(context.Provider, {\n value: usePortalStore\n }, children), usePortalStore, null));\n}\n\nreconciler.injectIntoDevTools({\n bundleType: process.env.NODE_ENV === 'production' ? 0 : 1,\n rendererPackageName: '@react-three/fiber',\n version: React.version\n});\nconst act = React.unstable_act;\n\nexport { Block as B, ErrorBoundary as E, createRoot as a, useIsomorphicLayoutEffect as b, createEvents as c, unmountComponentAtNode as d, extend as e, context as f, createPortal as g, reconciler as h, applyProps as i, dispose as j, invalidate as k, advance as l, addEffect as m, addAfterEffect as n, addTail as o, getRootState as p, act as q, render as r, roots as s, threeTypes as t, useMutableCallback as u, useStore as v, useThree as w, useFrame as x, useGraph as y, useLoader as z };\n","import { useState, useRef, useEffect, useMemo } from 'react';\nimport createDebounce from 'debounce';\n\nfunction useMeasure(_temp) {\n let {\n debounce,\n scroll,\n polyfill,\n offsetSize\n } = _temp === void 0 ? {\n debounce: 0,\n scroll: false,\n offsetSize: false\n } : _temp;\n const ResizeObserver = polyfill || (typeof window === 'undefined' ? class ResizeObserver {} : window.ResizeObserver);\n\n if (!ResizeObserver) {\n throw new Error('This browser does not support ResizeObserver out of the box. See: https://github.com/react-spring/react-use-measure/#resize-observer-polyfills');\n }\n\n const [bounds, set] = useState({\n left: 0,\n top: 0,\n width: 0,\n height: 0,\n bottom: 0,\n right: 0,\n x: 0,\n y: 0\n }); // keep all state in a ref\n\n const state = useRef({\n element: null,\n scrollContainers: null,\n resizeObserver: null,\n lastBounds: bounds\n }); // set actual debounce values early, so effects know if they should react accordingly\n\n const scrollDebounce = debounce ? typeof debounce === 'number' ? debounce : debounce.scroll : null;\n const resizeDebounce = debounce ? typeof debounce === 'number' ? debounce : debounce.resize : null; // make sure to update state only as long as the component is truly mounted\n\n const mounted = useRef(false);\n useEffect(() => {\n mounted.current = true;\n return () => void (mounted.current = false);\n }); // memoize handlers, so event-listeners know when they should update\n\n const [forceRefresh, resizeChange, scrollChange] = useMemo(() => {\n const callback = () => {\n if (!state.current.element) return;\n const {\n left,\n top,\n width,\n height,\n bottom,\n right,\n x,\n y\n } = state.current.element.getBoundingClientRect();\n const size = {\n left,\n top,\n width,\n height,\n bottom,\n right,\n x,\n y\n };\n\n if (state.current.element instanceof HTMLElement && offsetSize) {\n size.height = state.current.element.offsetHeight;\n size.width = state.current.element.offsetWidth;\n }\n\n Object.freeze(size);\n if (mounted.current && !areBoundsEqual(state.current.lastBounds, size)) set(state.current.lastBounds = size);\n };\n\n return [callback, resizeDebounce ? createDebounce(callback, resizeDebounce) : callback, scrollDebounce ? createDebounce(callback, scrollDebounce) : callback];\n }, [set, offsetSize, scrollDebounce, resizeDebounce]); // cleanup current scroll-listeners / observers\n\n function removeListeners() {\n if (state.current.scrollContainers) {\n state.current.scrollContainers.forEach(element => element.removeEventListener('scroll', scrollChange, true));\n state.current.scrollContainers = null;\n }\n\n if (state.current.resizeObserver) {\n state.current.resizeObserver.disconnect();\n state.current.resizeObserver = null;\n }\n } // add scroll-listeners / observers\n\n\n function addListeners() {\n if (!state.current.element) return;\n state.current.resizeObserver = new ResizeObserver(scrollChange);\n state.current.resizeObserver.observe(state.current.element);\n\n if (scroll && state.current.scrollContainers) {\n state.current.scrollContainers.forEach(scrollContainer => scrollContainer.addEventListener('scroll', scrollChange, {\n capture: true,\n passive: true\n }));\n }\n } // the ref we expose to the user\n\n\n const ref = node => {\n if (!node || node === state.current.element) return;\n removeListeners();\n state.current.element = node;\n state.current.scrollContainers = findScrollContainers(node);\n addListeners();\n }; // add general event listeners\n\n\n useOnWindowScroll(scrollChange, Boolean(scroll));\n useOnWindowResize(resizeChange); // respond to changes that are relevant for the listeners\n\n useEffect(() => {\n removeListeners();\n addListeners();\n }, [scroll, scrollChange, resizeChange]); // remove all listeners when the components unmounts\n\n useEffect(() => removeListeners, []);\n return [ref, bounds, forceRefresh];\n} // Adds native resize listener to window\n\n\nfunction useOnWindowResize(onWindowResize) {\n useEffect(() => {\n const cb = onWindowResize;\n window.addEventListener('resize', cb);\n return () => void window.removeEventListener('resize', cb);\n }, [onWindowResize]);\n}\n\nfunction useOnWindowScroll(onScroll, enabled) {\n useEffect(() => {\n if (enabled) {\n const cb = onScroll;\n window.addEventListener('scroll', cb, {\n capture: true,\n passive: true\n });\n return () => void window.removeEventListener('scroll', cb, true);\n }\n }, [onScroll, enabled]);\n} // Returns a list of scroll offsets\n\n\nfunction findScrollContainers(element) {\n const result = [];\n if (!element || element === document.body) return result;\n const {\n overflow,\n overflowX,\n overflowY\n } = window.getComputedStyle(element);\n if ([overflow, overflowX, overflowY].some(prop => prop === 'auto' || prop === 'scroll')) result.push(element);\n return [...result, ...findScrollContainers(element.parentElement)];\n} // Checks if element boundaries are equal\n\n\nconst keys = ['x', 'y', 'top', 'bottom', 'left', 'right', 'width', 'height'];\n\nconst areBoundsEqual = (a, b) => keys.every(key => a[key] === b[key]);\n\nexport { useMeasure as default };\n","import { c as createEvents, e as extend, u as useMutableCallback, a as createRoot, E as ErrorBoundary, B as Block, b as useIsomorphicLayoutEffect, d as unmountComponentAtNode } from './index-f1b43982.esm.js';\nexport { t as ReactThreeFiber, s as _roots, q as act, n as addAfterEffect, m as addEffect, o as addTail, l as advance, i as applyProps, f as context, g as createPortal, a as createRoot, j as dispose, e as extend, p as getRootState, k as invalidate, h as reconciler, r as render, d as unmountComponentAtNode, x as useFrame, y as useGraph, z as useLoader, v as useStore, w as useThree } from './index-f1b43982.esm.js';\nimport _extends from '@babel/runtime/helpers/esm/extends';\nimport * as React from 'react';\nimport * as THREE from 'three';\nimport useMeasure from 'react-use-measure';\nimport 'react-reconciler/constants';\nimport 'zustand';\nimport 'react-reconciler';\nimport 'scheduler';\nimport 'suspend-react';\n\nconst DOM_EVENTS = {\n onClick: ['click', false],\n onContextMenu: ['contextmenu', false],\n onDoubleClick: ['dblclick', false],\n onWheel: ['wheel', true],\n onPointerDown: ['pointerdown', true],\n onPointerUp: ['pointerup', true],\n onPointerLeave: ['pointerleave', true],\n onPointerMove: ['pointermove', true],\n onPointerCancel: ['pointercancel', true],\n onLostPointerCapture: ['lostpointercapture', true]\n};\n/** Default R3F event manager for web */\n\nfunction createPointerEvents(store) {\n const {\n handlePointer\n } = createEvents(store);\n return {\n priority: 1,\n enabled: true,\n\n compute(event, state, previous) {\n // https://github.com/pmndrs/react-three-fiber/pull/782\n // Events trigger outside of canvas when moved, use offsetX/Y by default and allow overrides\n state.pointer.set(event.offsetX / state.size.width * 2 - 1, -(event.offsetY / state.size.height) * 2 + 1);\n state.raycaster.setFromCamera(state.pointer, state.camera);\n },\n\n connected: undefined,\n handlers: Object.keys(DOM_EVENTS).reduce((acc, key) => ({ ...acc,\n [key]: handlePointer(key)\n }), {}),\n connect: target => {\n var _events$handlers;\n\n const {\n set,\n events\n } = store.getState();\n events.disconnect == null ? void 0 : events.disconnect();\n set(state => ({\n events: { ...state.events,\n connected: target\n }\n }));\n Object.entries((_events$handlers = events.handlers) != null ? _events$handlers : []).forEach(([name, event]) => {\n const [eventName, passive] = DOM_EVENTS[name];\n target.addEventListener(eventName, event, {\n passive\n });\n });\n },\n disconnect: () => {\n const {\n set,\n events\n } = store.getState();\n\n if (events.connected) {\n var _events$handlers2;\n\n Object.entries((_events$handlers2 = events.handlers) != null ? _events$handlers2 : []).forEach(([name, event]) => {\n if (events && events.connected instanceof HTMLElement) {\n const [eventName] = DOM_EVENTS[name];\n events.connected.removeEventListener(eventName, event);\n }\n });\n set(state => ({\n events: { ...state.events,\n connected: undefined\n }\n }));\n }\n }\n };\n}\n\n/**\n * A DOM canvas which accepts threejs elements as children.\n * @see https://docs.pmnd.rs/react-three-fiber/api/canvas\n */\nconst Canvas = /*#__PURE__*/React.forwardRef(function Canvas({\n children,\n fallback,\n resize,\n style,\n gl,\n events = createPointerEvents,\n shadows,\n linear,\n flat,\n legacy,\n orthographic,\n frameloop,\n dpr,\n performance,\n raycaster,\n camera,\n onPointerMissed,\n onCreated,\n ...props\n}, forwardedRef) {\n // Create a known catalogue of Threejs-native elements\n // This will include the entire THREE namespace by default, users can extend\n // their own elements by using the createRoot API instead\n React.useMemo(() => extend(THREE), []);\n const [containerRef, {\n width,\n height\n }] = useMeasure({\n scroll: true,\n debounce: {\n scroll: 50,\n resize: 0\n },\n ...resize\n });\n const canvasRef = React.useRef(null);\n const divRef = React.useRef(null);\n const [canvas, setCanvas] = React.useState(null);\n React.useImperativeHandle(forwardedRef, () => canvasRef.current);\n const handlePointerMissed = useMutableCallback(onPointerMissed);\n const [block, setBlock] = React.useState(false);\n const [error, setError] = React.useState(false); // Suspend this component if block is a promise (2nd run)\n\n if (block) throw block; // Throw exception outwards if anything within canvas throws\n\n if (error) throw error;\n const root = React.useRef(null);\n\n if (width > 0 && height > 0 && canvas) {\n if (!root.current) root.current = createRoot(canvas);\n root.current.configure({\n gl,\n events,\n shadows,\n linear,\n flat,\n legacy,\n orthographic,\n frameloop,\n dpr,\n performance,\n raycaster,\n camera,\n size: {\n width,\n height\n },\n // Pass mutable reference to onPointerMissed so it's free to update\n onPointerMissed: (...args) => handlePointerMissed.current == null ? void 0 : handlePointerMissed.current(...args),\n onCreated: state => {\n state.events.connect == null ? void 0 : state.events.connect(divRef.current);\n onCreated == null ? void 0 : onCreated(state);\n }\n });\n root.current.render( /*#__PURE__*/React.createElement(ErrorBoundary, {\n set: setError\n }, /*#__PURE__*/React.createElement(React.Suspense, {\n fallback: /*#__PURE__*/React.createElement(Block, {\n set: setBlock\n })\n }, children)));\n }\n\n useIsomorphicLayoutEffect(() => {\n setCanvas(canvasRef.current);\n }, []);\n React.useEffect(() => {\n if (canvas) return () => unmountComponentAtNode(canvas);\n }, [canvas]);\n return /*#__PURE__*/React.createElement(\"div\", _extends({\n ref: divRef,\n style: {\n position: 'relative',\n width: '100%',\n height: '100%',\n overflow: 'hidden',\n ...style\n }\n }, props), /*#__PURE__*/React.createElement(\"div\", {\n ref: containerRef,\n style: {\n width: '100%',\n height: '100%'\n }\n }, /*#__PURE__*/React.createElement(\"canvas\", {\n ref: canvasRef,\n style: {\n display: 'block'\n }\n }, fallback)));\n});\n\nexport { Canvas, createPointerEvents as events };\n","var __defProp = Object.defineProperty;\nvar __getOwnPropSymbols = Object.getOwnPropertySymbols;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __propIsEnum = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues = (a, b) => {\n for (var prop in b || (b = {}))\n if (__hasOwnProp.call(b, prop))\n __defNormalProp(a, prop, b[prop]);\n if (__getOwnPropSymbols)\n for (var prop of __getOwnPropSymbols(b)) {\n if (__propIsEnum.call(b, prop))\n __defNormalProp(a, prop, b[prop]);\n }\n return a;\n};\nvar __objRest = (source, exclude) => {\n var target = {};\n for (var prop in source)\n if (__hasOwnProp.call(source, prop) && exclude.indexOf(prop) < 0)\n target[prop] = source[prop];\n if (source != null && __getOwnPropSymbols)\n for (var prop of __getOwnPropSymbols(source)) {\n if (exclude.indexOf(prop) < 0 && __propIsEnum.call(source, prop))\n target[prop] = source[prop];\n }\n return target;\n};\n\n// src/index.tsx\nimport React, { useRef, useEffect } from \"react\";\n\n// src/third-party/qrcodegen/index.ts\n/**\n * @license QR Code generator library (TypeScript)\n * Copyright (c) Project Nayuki.\n * SPDX-License-Identifier: MIT\n */\nvar qrcodegen;\n((qrcodegen2) => {\n const _QrCode = class {\n constructor(version, errorCorrectionLevel, dataCodewords, msk) {\n this.version = version;\n this.errorCorrectionLevel = errorCorrectionLevel;\n this.modules = [];\n this.isFunction = [];\n if (version < _QrCode.MIN_VERSION || version > _QrCode.MAX_VERSION)\n throw new RangeError(\"Version value out of range\");\n if (msk < -1 || msk > 7)\n throw new RangeError(\"Mask value out of range\");\n this.size = version * 4 + 17;\n let row = [];\n for (let i = 0; i < this.size; i++)\n row.push(false);\n for (let i = 0; i < this.size; i++) {\n this.modules.push(row.slice());\n this.isFunction.push(row.slice());\n }\n this.drawFunctionPatterns();\n const allCodewords = this.addEccAndInterleave(dataCodewords);\n this.drawCodewords(allCodewords);\n if (msk == -1) {\n let minPenalty = 1e9;\n for (let i = 0; i < 8; i++) {\n this.applyMask(i);\n this.drawFormatBits(i);\n const penalty = this.getPenaltyScore();\n if (penalty < minPenalty) {\n msk = i;\n minPenalty = penalty;\n }\n this.applyMask(i);\n }\n }\n assert(0 <= msk && msk <= 7);\n this.mask = msk;\n this.applyMask(msk);\n this.drawFormatBits(msk);\n this.isFunction = [];\n }\n static encodeText(text, ecl) {\n const segs = qrcodegen2.QrSegment.makeSegments(text);\n return _QrCode.encodeSegments(segs, ecl);\n }\n static encodeBinary(data, ecl) {\n const seg = qrcodegen2.QrSegment.makeBytes(data);\n return _QrCode.encodeSegments([seg], ecl);\n }\n static encodeSegments(segs, ecl, minVersion = 1, maxVersion = 40, mask = -1, boostEcl = true) {\n if (!(_QrCode.MIN_VERSION <= minVersion && minVersion <= maxVersion && maxVersion <= _QrCode.MAX_VERSION) || mask < -1 || mask > 7)\n throw new RangeError(\"Invalid value\");\n let version;\n let dataUsedBits;\n for (version = minVersion; ; version++) {\n const dataCapacityBits2 = _QrCode.getNumDataCodewords(version, ecl) * 8;\n const usedBits = QrSegment.getTotalBits(segs, version);\n if (usedBits <= dataCapacityBits2) {\n dataUsedBits = usedBits;\n break;\n }\n if (version >= maxVersion)\n throw new RangeError(\"Data too long\");\n }\n for (const newEcl of [_QrCode.Ecc.MEDIUM, _QrCode.Ecc.QUARTILE, _QrCode.Ecc.HIGH]) {\n if (boostEcl && dataUsedBits <= _QrCode.getNumDataCodewords(version, newEcl) * 8)\n ecl = newEcl;\n }\n let bb = [];\n for (const seg of segs) {\n appendBits(seg.mode.modeBits, 4, bb);\n appendBits(seg.numChars, seg.mode.numCharCountBits(version), bb);\n for (const b of seg.getData())\n bb.push(b);\n }\n assert(bb.length == dataUsedBits);\n const dataCapacityBits = _QrCode.getNumDataCodewords(version, ecl) * 8;\n assert(bb.length <= dataCapacityBits);\n appendBits(0, Math.min(4, dataCapacityBits - bb.length), bb);\n appendBits(0, (8 - bb.length % 8) % 8, bb);\n assert(bb.length % 8 == 0);\n for (let padByte = 236; bb.length < dataCapacityBits; padByte ^= 236 ^ 17)\n appendBits(padByte, 8, bb);\n let dataCodewords = [];\n while (dataCodewords.length * 8 < bb.length)\n dataCodewords.push(0);\n bb.forEach((b, i) => dataCodewords[i >>> 3] |= b << 7 - (i & 7));\n return new _QrCode(version, ecl, dataCodewords, mask);\n }\n getModule(x, y) {\n return 0 <= x && x < this.size && 0 <= y && y < this.size && this.modules[y][x];\n }\n getModules() {\n return this.modules;\n }\n drawFunctionPatterns() {\n for (let i = 0; i < this.size; i++) {\n this.setFunctionModule(6, i, i % 2 == 0);\n this.setFunctionModule(i, 6, i % 2 == 0);\n }\n this.drawFinderPattern(3, 3);\n this.drawFinderPattern(this.size - 4, 3);\n this.drawFinderPattern(3, this.size - 4);\n const alignPatPos = this.getAlignmentPatternPositions();\n const numAlign = alignPatPos.length;\n for (let i = 0; i < numAlign; i++) {\n for (let j = 0; j < numAlign; j++) {\n if (!(i == 0 && j == 0 || i == 0 && j == numAlign - 1 || i == numAlign - 1 && j == 0))\n this.drawAlignmentPattern(alignPatPos[i], alignPatPos[j]);\n }\n }\n this.drawFormatBits(0);\n this.drawVersion();\n }\n drawFormatBits(mask) {\n const data = this.errorCorrectionLevel.formatBits << 3 | mask;\n let rem = data;\n for (let i = 0; i < 10; i++)\n rem = rem << 1 ^ (rem >>> 9) * 1335;\n const bits = (data << 10 | rem) ^ 21522;\n assert(bits >>> 15 == 0);\n for (let i = 0; i <= 5; i++)\n this.setFunctionModule(8, i, getBit(bits, i));\n this.setFunctionModule(8, 7, getBit(bits, 6));\n this.setFunctionModule(8, 8, getBit(bits, 7));\n this.setFunctionModule(7, 8, getBit(bits, 8));\n for (let i = 9; i < 15; i++)\n this.setFunctionModule(14 - i, 8, getBit(bits, i));\n for (let i = 0; i < 8; i++)\n this.setFunctionModule(this.size - 1 - i, 8, getBit(bits, i));\n for (let i = 8; i < 15; i++)\n this.setFunctionModule(8, this.size - 15 + i, getBit(bits, i));\n this.setFunctionModule(8, this.size - 8, true);\n }\n drawVersion() {\n if (this.version < 7)\n return;\n let rem = this.version;\n for (let i = 0; i < 12; i++)\n rem = rem << 1 ^ (rem >>> 11) * 7973;\n const bits = this.version << 12 | rem;\n assert(bits >>> 18 == 0);\n for (let i = 0; i < 18; i++) {\n const color = getBit(bits, i);\n const a = this.size - 11 + i % 3;\n const b = Math.floor(i / 3);\n this.setFunctionModule(a, b, color);\n this.setFunctionModule(b, a, color);\n }\n }\n drawFinderPattern(x, y) {\n for (let dy = -4; dy <= 4; dy++) {\n for (let dx = -4; dx <= 4; dx++) {\n const dist = Math.max(Math.abs(dx), Math.abs(dy));\n const xx = x + dx;\n const yy = y + dy;\n if (0 <= xx && xx < this.size && 0 <= yy && yy < this.size)\n this.setFunctionModule(xx, yy, dist != 2 && dist != 4);\n }\n }\n }\n drawAlignmentPattern(x, y) {\n for (let dy = -2; dy <= 2; dy++) {\n for (let dx = -2; dx <= 2; dx++)\n this.setFunctionModule(x + dx, y + dy, Math.max(Math.abs(dx), Math.abs(dy)) != 1);\n }\n }\n setFunctionModule(x, y, isDark) {\n this.modules[y][x] = isDark;\n this.isFunction[y][x] = true;\n }\n addEccAndInterleave(data) {\n const ver = this.version;\n const ecl = this.errorCorrectionLevel;\n if (data.length != _QrCode.getNumDataCodewords(ver, ecl))\n throw new RangeError(\"Invalid argument\");\n const numBlocks = _QrCode.NUM_ERROR_CORRECTION_BLOCKS[ecl.ordinal][ver];\n const blockEccLen = _QrCode.ECC_CODEWORDS_PER_BLOCK[ecl.ordinal][ver];\n const rawCodewords = Math.floor(_QrCode.getNumRawDataModules(ver) / 8);\n const numShortBlocks = numBlocks - rawCodewords % numBlocks;\n const shortBlockLen = Math.floor(rawCodewords / numBlocks);\n let blocks = [];\n const rsDiv = _QrCode.reedSolomonComputeDivisor(blockEccLen);\n for (let i = 0, k = 0; i < numBlocks; i++) {\n let dat = data.slice(k, k + shortBlockLen - blockEccLen + (i < numShortBlocks ? 0 : 1));\n k += dat.length;\n const ecc = _QrCode.reedSolomonComputeRemainder(dat, rsDiv);\n if (i < numShortBlocks)\n dat.push(0);\n blocks.push(dat.concat(ecc));\n }\n let result = [];\n for (let i = 0; i < blocks[0].length; i++) {\n blocks.forEach((block, j) => {\n if (i != shortBlockLen - blockEccLen || j >= numShortBlocks)\n result.push(block[i]);\n });\n }\n assert(result.length == rawCodewords);\n return result;\n }\n drawCodewords(data) {\n if (data.length != Math.floor(_QrCode.getNumRawDataModules(this.version) / 8))\n throw new RangeError(\"Invalid argument\");\n let i = 0;\n for (let right = this.size - 1; right >= 1; right -= 2) {\n if (right == 6)\n right = 5;\n for (let vert = 0; vert < this.size; vert++) {\n for (let j = 0; j < 2; j++) {\n const x = right - j;\n const upward = (right + 1 & 2) == 0;\n const y = upward ? this.size - 1 - vert : vert;\n if (!this.isFunction[y][x] && i < data.length * 8) {\n this.modules[y][x] = getBit(data[i >>> 3], 7 - (i & 7));\n i++;\n }\n }\n }\n }\n assert(i == data.length * 8);\n }\n applyMask(mask) {\n if (mask < 0 || mask > 7)\n throw new RangeError(\"Mask value out of range\");\n for (let y = 0; y < this.size; y++) {\n for (let x = 0; x < this.size; x++) {\n let invert;\n switch (mask) {\n case 0:\n invert = (x + y) % 2 == 0;\n break;\n case 1:\n invert = y % 2 == 0;\n break;\n case 2:\n invert = x % 3 == 0;\n break;\n case 3:\n invert = (x + y) % 3 == 0;\n break;\n case 4:\n invert = (Math.floor(x / 3) + Math.floor(y / 2)) % 2 == 0;\n break;\n case 5:\n invert = x * y % 2 + x * y % 3 == 0;\n break;\n case 6:\n invert = (x * y % 2 + x * y % 3) % 2 == 0;\n break;\n case 7:\n invert = ((x + y) % 2 + x * y % 3) % 2 == 0;\n break;\n default:\n throw new Error(\"Unreachable\");\n }\n if (!this.isFunction[y][x] && invert)\n this.modules[y][x] = !this.modules[y][x];\n }\n }\n }\n getPenaltyScore() {\n let result = 0;\n for (let y = 0; y < this.size; y++) {\n let runColor = false;\n let runX = 0;\n let runHistory = [0, 0, 0, 0, 0, 0, 0];\n for (let x = 0; x < this.size; x++) {\n if (this.modules[y][x] == runColor) {\n runX++;\n if (runX == 5)\n result += _QrCode.PENALTY_N1;\n else if (runX > 5)\n result++;\n } else {\n this.finderPenaltyAddHistory(runX, runHistory);\n if (!runColor)\n result += this.finderPenaltyCountPatterns(runHistory) * _QrCode.PENALTY_N3;\n runColor = this.modules[y][x];\n runX = 1;\n }\n }\n result += this.finderPenaltyTerminateAndCount(runColor, runX, runHistory) * _QrCode.PENALTY_N3;\n }\n for (let x = 0; x < this.size; x++) {\n let runColor = false;\n let runY = 0;\n let runHistory = [0, 0, 0, 0, 0, 0, 0];\n for (let y = 0; y < this.size; y++) {\n if (this.modules[y][x] == runColor) {\n runY++;\n if (runY == 5)\n result += _QrCode.PENALTY_N1;\n else if (runY > 5)\n result++;\n } else {\n this.finderPenaltyAddHistory(runY, runHistory);\n if (!runColor)\n result += this.finderPenaltyCountPatterns(runHistory) * _QrCode.PENALTY_N3;\n runColor = this.modules[y][x];\n runY = 1;\n }\n }\n result += this.finderPenaltyTerminateAndCount(runColor, runY, runHistory) * _QrCode.PENALTY_N3;\n }\n for (let y = 0; y < this.size - 1; y++) {\n for (let x = 0; x < this.size - 1; x++) {\n const color = this.modules[y][x];\n if (color == this.modules[y][x + 1] && color == this.modules[y + 1][x] && color == this.modules[y + 1][x + 1])\n result += _QrCode.PENALTY_N2;\n }\n }\n let dark = 0;\n for (const row of this.modules)\n dark = row.reduce((sum, color) => sum + (color ? 1 : 0), dark);\n const total = this.size * this.size;\n const k = Math.ceil(Math.abs(dark * 20 - total * 10) / total) - 1;\n assert(0 <= k && k <= 9);\n result += k * _QrCode.PENALTY_N4;\n assert(0 <= result && result <= 2568888);\n return result;\n }\n getAlignmentPatternPositions() {\n if (this.version == 1)\n return [];\n else {\n const numAlign = Math.floor(this.version / 7) + 2;\n const step = this.version == 32 ? 26 : Math.ceil((this.version * 4 + 4) / (numAlign * 2 - 2)) * 2;\n let result = [6];\n for (let pos = this.size - 7; result.length < numAlign; pos -= step)\n result.splice(1, 0, pos);\n return result;\n }\n }\n static getNumRawDataModules(ver) {\n if (ver < _QrCode.MIN_VERSION || ver > _QrCode.MAX_VERSION)\n throw new RangeError(\"Version number out of range\");\n let result = (16 * ver + 128) * ver + 64;\n if (ver >= 2) {\n const numAlign = Math.floor(ver / 7) + 2;\n result -= (25 * numAlign - 10) * numAlign - 55;\n if (ver >= 7)\n result -= 36;\n }\n assert(208 <= result && result <= 29648);\n return result;\n }\n static getNumDataCodewords(ver, ecl) {\n return Math.floor(_QrCode.getNumRawDataModules(ver) / 8) - _QrCode.ECC_CODEWORDS_PER_BLOCK[ecl.ordinal][ver] * _QrCode.NUM_ERROR_CORRECTION_BLOCKS[ecl.ordinal][ver];\n }\n static reedSolomonComputeDivisor(degree) {\n if (degree < 1 || degree > 255)\n throw new RangeError(\"Degree out of range\");\n let result = [];\n for (let i = 0; i < degree - 1; i++)\n result.push(0);\n result.push(1);\n let root = 1;\n for (let i = 0; i < degree; i++) {\n for (let j = 0; j < result.length; j++) {\n result[j] = _QrCode.reedSolomonMultiply(result[j], root);\n if (j + 1 < result.length)\n result[j] ^= result[j + 1];\n }\n root = _QrCode.reedSolomonMultiply(root, 2);\n }\n return result;\n }\n static reedSolomonComputeRemainder(data, divisor) {\n let result = divisor.map((_) => 0);\n for (const b of data) {\n const factor = b ^ result.shift();\n result.push(0);\n divisor.forEach((coef, i) => result[i] ^= _QrCode.reedSolomonMultiply(coef, factor));\n }\n return result;\n }\n static reedSolomonMultiply(x, y) {\n if (x >>> 8 != 0 || y >>> 8 != 0)\n throw new RangeError(\"Byte out of range\");\n let z = 0;\n for (let i = 7; i >= 0; i--) {\n z = z << 1 ^ (z >>> 7) * 285;\n z ^= (y >>> i & 1) * x;\n }\n assert(z >>> 8 == 0);\n return z;\n }\n finderPenaltyCountPatterns(runHistory) {\n const n = runHistory[1];\n assert(n <= this.size * 3);\n const core = n > 0 && runHistory[2] == n && runHistory[3] == n * 3 && runHistory[4] == n && runHistory[5] == n;\n return (core && runHistory[0] >= n * 4 && runHistory[6] >= n ? 1 : 0) + (core && runHistory[6] >= n * 4 && runHistory[0] >= n ? 1 : 0);\n }\n finderPenaltyTerminateAndCount(currentRunColor, currentRunLength, runHistory) {\n if (currentRunColor) {\n this.finderPenaltyAddHistory(currentRunLength, runHistory);\n currentRunLength = 0;\n }\n currentRunLength += this.size;\n this.finderPenaltyAddHistory(currentRunLength, runHistory);\n return this.finderPenaltyCountPatterns(runHistory);\n }\n finderPenaltyAddHistory(currentRunLength, runHistory) {\n if (runHistory[0] == 0)\n currentRunLength += this.size;\n runHistory.pop();\n runHistory.unshift(currentRunLength);\n }\n };\n let QrCode = _QrCode;\n QrCode.MIN_VERSION = 1;\n QrCode.MAX_VERSION = 40;\n QrCode.PENALTY_N1 = 3;\n QrCode.PENALTY_N2 = 3;\n QrCode.PENALTY_N3 = 40;\n QrCode.PENALTY_N4 = 10;\n QrCode.ECC_CODEWORDS_PER_BLOCK = [\n [-1, 7, 10, 15, 20, 26, 18, 20, 24, 30, 18, 20, 24, 26, 30, 22, 24, 28, 30, 28, 28, 28, 28, 30, 30, 26, 28, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30],\n [-1, 10, 16, 26, 18, 24, 16, 18, 22, 22, 26, 30, 22, 22, 24, 24, 28, 28, 26, 26, 26, 26, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28],\n [-1, 13, 22, 18, 26, 18, 24, 18, 22, 20, 24, 28, 26, 24, 20, 30, 24, 28, 28, 26, 30, 28, 30, 30, 30, 30, 28, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30],\n [-1, 17, 28, 22, 16, 22, 28, 26, 26, 24, 28, 24, 28, 22, 24, 24, 30, 28, 28, 26, 28, 30, 24, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30]\n ];\n QrCode.NUM_ERROR_CORRECTION_BLOCKS = [\n [-1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 4, 4, 4, 4, 4, 6, 6, 6, 6, 7, 8, 8, 9, 9, 10, 12, 12, 12, 13, 14, 15, 16, 17, 18, 19, 19, 20, 21, 22, 24, 25],\n [-1, 1, 1, 1, 2, 2, 4, 4, 4, 5, 5, 5, 8, 9, 9, 10, 10, 11, 13, 14, 16, 17, 17, 18, 20, 21, 23, 25, 26, 28, 29, 31, 33, 35, 37, 38, 40, 43, 45, 47, 49],\n [-1, 1, 1, 2, 2, 4, 4, 6, 6, 8, 8, 8, 10, 12, 16, 12, 17, 16, 18, 21, 20, 23, 23, 25, 27, 29, 34, 34, 35, 38, 40, 43, 45, 48, 51, 53, 56, 59, 62, 65, 68],\n [-1, 1, 1, 2, 4, 4, 4, 5, 6, 8, 8, 11, 11, 16, 16, 18, 16, 19, 21, 25, 25, 25, 34, 30, 32, 35, 37, 40, 42, 45, 48, 51, 54, 57, 60, 63, 66, 70, 74, 77, 81]\n ];\n qrcodegen2.QrCode = QrCode;\n function appendBits(val, len, bb) {\n if (len < 0 || len > 31 || val >>> len != 0)\n throw new RangeError(\"Value out of range\");\n for (let i = len - 1; i >= 0; i--)\n bb.push(val >>> i & 1);\n }\n function getBit(x, i) {\n return (x >>> i & 1) != 0;\n }\n function assert(cond) {\n if (!cond)\n throw new Error(\"Assertion error\");\n }\n const _QrSegment = class {\n constructor(mode, numChars, bitData) {\n this.mode = mode;\n this.numChars = numChars;\n this.bitData = bitData;\n if (numChars < 0)\n throw new RangeError(\"Invalid argument\");\n this.bitData = bitData.slice();\n }\n static makeBytes(data) {\n let bb = [];\n for (const b of data)\n appendBits(b, 8, bb);\n return new _QrSegment(_QrSegment.Mode.BYTE, data.length, bb);\n }\n static makeNumeric(digits) {\n if (!_QrSegment.isNumeric(digits))\n throw new RangeError(\"String contains non-numeric characters\");\n let bb = [];\n for (let i = 0; i < digits.length; ) {\n const n = Math.min(digits.length - i, 3);\n appendBits(parseInt(digits.substr(i, n), 10), n * 3 + 1, bb);\n i += n;\n }\n return new _QrSegment(_QrSegment.Mode.NUMERIC, digits.length, bb);\n }\n static makeAlphanumeric(text) {\n if (!_QrSegment.isAlphanumeric(text))\n throw new RangeError(\"String contains unencodable characters in alphanumeric mode\");\n let bb = [];\n let i;\n for (i = 0; i + 2 <= text.length; i += 2) {\n let temp = _QrSegment.ALPHANUMERIC_CHARSET.indexOf(text.charAt(i)) * 45;\n temp += _QrSegment.ALPHANUMERIC_CHARSET.indexOf(text.charAt(i + 1));\n appendBits(temp, 11, bb);\n }\n if (i < text.length)\n appendBits(_QrSegment.ALPHANUMERIC_CHARSET.indexOf(text.charAt(i)), 6, bb);\n return new _QrSegment(_QrSegment.Mode.ALPHANUMERIC, text.length, bb);\n }\n static makeSegments(text) {\n if (text == \"\")\n return [];\n else if (_QrSegment.isNumeric(text))\n return [_QrSegment.makeNumeric(text)];\n else if (_QrSegment.isAlphanumeric(text))\n return [_QrSegment.makeAlphanumeric(text)];\n else\n return [_QrSegment.makeBytes(_QrSegment.toUtf8ByteArray(text))];\n }\n static makeEci(assignVal) {\n let bb = [];\n if (assignVal < 0)\n throw new RangeError(\"ECI assignment value out of range\");\n else if (assignVal < 1 << 7)\n appendBits(assignVal, 8, bb);\n else if (assignVal < 1 << 14) {\n appendBits(2, 2, bb);\n appendBits(assignVal, 14, bb);\n } else if (assignVal < 1e6) {\n appendBits(6, 3, bb);\n appendBits(assignVal, 21, bb);\n } else\n throw new RangeError(\"ECI assignment value out of range\");\n return new _QrSegment(_QrSegment.Mode.ECI, 0, bb);\n }\n static isNumeric(text) {\n return _QrSegment.NUMERIC_REGEX.test(text);\n }\n static isAlphanumeric(text) {\n return _QrSegment.ALPHANUMERIC_REGEX.test(text);\n }\n getData() {\n return this.bitData.slice();\n }\n static getTotalBits(segs, version) {\n let result = 0;\n for (const seg of segs) {\n const ccbits = seg.mode.numCharCountBits(version);\n if (seg.numChars >= 1 << ccbits)\n return Infinity;\n result += 4 + ccbits + seg.bitData.length;\n }\n return result;\n }\n static toUtf8ByteArray(str) {\n str = encodeURI(str);\n let result = [];\n for (let i = 0; i < str.length; i++) {\n if (str.charAt(i) != \"%\")\n result.push(str.charCodeAt(i));\n else {\n result.push(parseInt(str.substr(i + 1, 2), 16));\n i += 2;\n }\n }\n return result;\n }\n };\n let QrSegment = _QrSegment;\n QrSegment.NUMERIC_REGEX = /^[0-9]*$/;\n QrSegment.ALPHANUMERIC_REGEX = /^[A-Z0-9 $%*+.\\/:-]*$/;\n QrSegment.ALPHANUMERIC_CHARSET = \"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ $%*+-./:\";\n qrcodegen2.QrSegment = QrSegment;\n})(qrcodegen || (qrcodegen = {}));\n((qrcodegen2) => {\n let QrCode;\n ((QrCode2) => {\n const _Ecc = class {\n constructor(ordinal, formatBits) {\n this.ordinal = ordinal;\n this.formatBits = formatBits;\n }\n };\n let Ecc = _Ecc;\n Ecc.LOW = new _Ecc(0, 1);\n Ecc.MEDIUM = new _Ecc(1, 0);\n Ecc.QUARTILE = new _Ecc(2, 3);\n Ecc.HIGH = new _Ecc(3, 2);\n QrCode2.Ecc = Ecc;\n })(QrCode = qrcodegen2.QrCode || (qrcodegen2.QrCode = {}));\n})(qrcodegen || (qrcodegen = {}));\n((qrcodegen2) => {\n let QrSegment;\n ((QrSegment2) => {\n const _Mode = class {\n constructor(modeBits, numBitsCharCount) {\n this.modeBits = modeBits;\n this.numBitsCharCount = numBitsCharCount;\n }\n numCharCountBits(ver) {\n return this.numBitsCharCount[Math.floor((ver + 7) / 17)];\n }\n };\n let Mode = _Mode;\n Mode.NUMERIC = new _Mode(1, [10, 12, 14]);\n Mode.ALPHANUMERIC = new _Mode(2, [9, 11, 13]);\n Mode.BYTE = new _Mode(4, [8, 16, 16]);\n Mode.KANJI = new _Mode(8, [8, 10, 12]);\n Mode.ECI = new _Mode(7, [0, 0, 0]);\n QrSegment2.Mode = Mode;\n })(QrSegment = qrcodegen2.QrSegment || (qrcodegen2.QrSegment = {}));\n})(qrcodegen || (qrcodegen = {}));\nvar qrcodegen_default = qrcodegen;\n\n// src/index.tsx\n/**\n * @license qrcode.react\n * Copyright (c) Paul O'Shannessy\n * SPDX-License-Identifier: ISC\n */\nvar ERROR_LEVEL_MAP = {\n L: qrcodegen_default.QrCode.Ecc.LOW,\n M: qrcodegen_default.QrCode.Ecc.MEDIUM,\n Q: qrcodegen_default.QrCode.Ecc.QUARTILE,\n H: qrcodegen_default.QrCode.Ecc.HIGH\n};\nvar DEFAULT_PROPS = {\n size: 128,\n level: \"L\",\n bgColor: \"#FFFFFF\",\n fgColor: \"#000000\",\n includeMargin: false\n};\nvar MARGIN_SIZE = 4;\nvar DEFAULT_IMG_SCALE = 0.1;\nfunction generatePath(modules, margin = 0) {\n const ops = [];\n modules.forEach(function(row, y) {\n let start = null;\n row.forEach(function(cell, x) {\n if (!cell && start !== null) {\n ops.push(`M${start + margin} ${y + margin}h${x - start}v1H${start + margin}z`);\n start = null;\n return;\n }\n if (x === row.length - 1) {\n if (!cell) {\n return;\n }\n if (start === null) {\n ops.push(`M${x + margin},${y + margin} h1v1H${x + margin}z`);\n } else {\n ops.push(`M${start + margin},${y + margin} h${x + 1 - start}v1H${start + margin}z`);\n }\n return;\n }\n if (cell && start === null) {\n start = x;\n }\n });\n });\n return ops.join(\"\");\n}\nfunction excavateModules(modules, excavation) {\n return modules.slice().map((row, y) => {\n if (y < excavation.y || y >= excavation.y + excavation.h) {\n return row;\n }\n return row.map((cell, x) => {\n if (x < excavation.x || x >= excavation.x + excavation.w) {\n return cell;\n }\n return false;\n });\n });\n}\nfunction getImageSettings(props, cells) {\n const { imageSettings, size, includeMargin } = props;\n if (imageSettings == null) {\n return null;\n }\n const margin = includeMargin ? MARGIN_SIZE : 0;\n const numCells = cells.length + margin * 2;\n const defaultSize = Math.floor(size * DEFAULT_IMG_SCALE);\n const scale = numCells / size;\n const w = (imageSettings.width || defaultSize) * scale;\n const h = (imageSettings.height || defaultSize) * scale;\n const x = imageSettings.x == null ? cells.length / 2 - w / 2 : imageSettings.x * scale;\n const y = imageSettings.y == null ? cells.length / 2 - h / 2 : imageSettings.y * scale;\n let excavation = null;\n if (imageSettings.excavate) {\n let floorX = Math.floor(x);\n let floorY = Math.floor(y);\n let ceilW = Math.ceil(w + x - floorX);\n let ceilH = Math.ceil(h + y - floorY);\n excavation = { x: floorX, y: floorY, w: ceilW, h: ceilH };\n }\n return { x, y, h, w, excavation };\n}\nvar SUPPORTS_PATH2D = function() {\n try {\n new Path2D().addPath(new Path2D());\n } catch (e) {\n return false;\n }\n return true;\n}();\nfunction QRCodeCanvas(props) {\n const _canvas = useRef(null);\n const _image = useRef(null);\n function update() {\n const { value: value2, size: size2, level: level2, bgColor: bgColor2, fgColor: fgColor2, includeMargin: includeMargin2 } = props;\n if (_canvas.current != null) {\n const canvas = _canvas.current;\n const ctx = canvas.getContext(\"2d\");\n if (!ctx) {\n return;\n }\n let cells = qrcodegen_default.QrCode.encodeText(value2, ERROR_LEVEL_MAP[level2]).getModules();\n const margin = includeMargin2 ? MARGIN_SIZE : 0;\n const numCells = cells.length + margin * 2;\n const calculatedImageSettings = getImageSettings(props, cells);\n const image = _image.current;\n const haveImageToRender = calculatedImageSettings != null && image !== null && image.complete && image.naturalHeight !== 0 && image.naturalWidth !== 0;\n if (haveImageToRender) {\n if (calculatedImageSettings.excavation != null) {\n cells = excavateModules(cells, calculatedImageSettings.excavation);\n }\n }\n const pixelRatio = window.devicePixelRatio || 1;\n canvas.height = canvas.width = size2 * pixelRatio;\n const scale = size2 / numCells * pixelRatio;\n ctx.scale(scale, scale);\n ctx.fillStyle = bgColor2;\n ctx.fillRect(0, 0, numCells, numCells);\n ctx.fillStyle = fgColor2;\n if (SUPPORTS_PATH2D) {\n ctx.fill(new Path2D(generatePath(cells, margin)));\n } else {\n cells.forEach(function(row, rdx) {\n row.forEach(function(cell, cdx) {\n if (cell) {\n ctx.fillRect(cdx + margin, rdx + margin, 1, 1);\n }\n });\n });\n }\n if (haveImageToRender) {\n ctx.drawImage(image, calculatedImageSettings.x + margin, calculatedImageSettings.y + margin, calculatedImageSettings.w, calculatedImageSettings.h);\n }\n }\n }\n useEffect(() => {\n update();\n });\n const _a = props, {\n value,\n size,\n level,\n bgColor,\n fgColor,\n style,\n includeMargin,\n imageSettings\n } = _a, otherProps = __objRest(_a, [\n \"value\",\n \"size\",\n \"level\",\n \"bgColor\",\n \"fgColor\",\n \"style\",\n \"includeMargin\",\n \"imageSettings\"\n ]);\n const canvasStyle = __spreadValues({ height: size, width: size }, style);\n let img = null;\n let imgSrc = imageSettings == null ? void 0 : imageSettings.src;\n if (imgSrc != null) {\n img = /* @__PURE__ */ React.createElement(\"img\", {\n src: imgSrc,\n key: imgSrc,\n style: { display: \"none\" },\n onLoad: () => {\n update();\n },\n ref: _image\n });\n }\n return /* @__PURE__ */ React.createElement(React.Fragment, null, /* @__PURE__ */ React.createElement(\"canvas\", __spreadValues({\n style: canvasStyle,\n height: size,\n width: size,\n ref: _canvas\n }, otherProps)), img);\n}\nQRCodeCanvas.defaultProps = DEFAULT_PROPS;\nfunction QRCodeSVG(props) {\n const _a = props, {\n value,\n size,\n level,\n bgColor,\n fgColor,\n includeMargin,\n imageSettings\n } = _a, otherProps = __objRest(_a, [\n \"value\",\n \"size\",\n \"level\",\n \"bgColor\",\n \"fgColor\",\n \"includeMargin\",\n \"imageSettings\"\n ]);\n let cells = qrcodegen_default.QrCode.encodeText(value, ERROR_LEVEL_MAP[level]).getModules();\n const margin = includeMargin ? MARGIN_SIZE : 0;\n const numCells = cells.length + margin * 2;\n const calculatedImageSettings = getImageSettings(props, cells);\n let image = null;\n if (imageSettings != null && calculatedImageSettings != null) {\n if (calculatedImageSettings.excavation != null) {\n cells = excavateModules(cells, calculatedImageSettings.excavation);\n }\n image = /* @__PURE__ */ React.createElement(\"image\", {\n xlinkHref: imageSettings.src,\n height: calculatedImageSettings.h,\n width: calculatedImageSettings.w,\n x: calculatedImageSettings.x + margin,\n y: calculatedImageSettings.y + margin,\n preserveAspectRatio: \"none\"\n });\n }\n const fgPath = generatePath(cells, margin);\n return /* @__PURE__ */ React.createElement(\"svg\", __spreadValues({\n shapeRendering: \"crispEdges\",\n height: size,\n width: size,\n viewBox: `0 0 ${numCells} ${numCells}`\n }, otherProps), /* @__PURE__ */ React.createElement(\"path\", {\n fill: bgColor,\n d: `M0,0 h${numCells}v${numCells}H0z`\n }), /* @__PURE__ */ React.createElement(\"path\", {\n fill: fgColor,\n d: fgPath\n }), image);\n}\nQRCodeSVG.defaultProps = DEFAULT_PROPS;\nvar QRCode = (props) => {\n const _a = props, { renderAs } = _a, otherProps = __objRest(_a, [\"renderAs\"]);\n if (renderAs === \"svg\") {\n return /* @__PURE__ */ React.createElement(QRCodeSVG, __spreadValues({}, otherProps));\n }\n return /* @__PURE__ */ React.createElement(QRCodeCanvas, __spreadValues({}, otherProps));\n};\nQRCode.defaultProps = __spreadValues({ renderAs: \"canvas\" }, DEFAULT_PROPS);\nexport {\n QRCodeCanvas,\n QRCodeSVG,\n QRCode as default\n};\n","import create from \"zustand\"\n\ninterface PatientStore extends Record {\n\tpercentage: number\n\tmode: string\n}\n\nexport const usePatientStore = create((set, get) => {\n\treturn {\n\t\tpercentage: 0,\n\t\tmode: \"loading\",\n\t}\n})\n","import { usePatientStore } from \"../../state/stores/patientStore\"\n\nexport default class ProgressBar {\n\tupdate: (value: number, total: number, mode: string) => void\n\n\tconstructor() {\n\t\tthis.update = function (value, total, mode) {\n\t\t\tlet _mode = \"loading\"\n\t\t\tif (mode === \"parse\") {\n\t\t\t\tif (value === total) {\n\t\t\t\t\t_mode = \"done\"\n\t\t\t\t} else {\n\t\t\t\t\t_mode = \"parsing\"\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tusePatientStore.setState({ percentage: value / total, mode: _mode })\n\t\t}\n\t}\n}\n","import create from \"zustand\"\n\ninterface SensorStore extends Record {\n\tdata: number[] | undefined\n\tconnected: boolean\n\n\tonSensor: (data: number[]) => void\n\tconnect: (connected: boolean) => void\n}\n\nexport const useSensorStore = create((set, get) => {\n\treturn {\n\t\tdata: undefined,\n\t\tconnected: false,\n\n\t\tonSensor: (data) => {\n\t\t\tif (data !== undefined) {\n\t\t\t\tset({\n\t\t\t\t\tdata: data as number[],\n\t\t\t\t})\n\t\t\t}\n\t\t},\n\n\t\tconnect: (connected) => {\n\t\t\tif (connected !== undefined) {\n\t\t\t\tset({ connected: connected })\n\t\t\t}\n\t\t},\n\n\t\treset: () => {\n\t\t\tset({ data: undefined, connected: false })\n\t\t},\n\t}\n})\n","export const map_numbers = (\n\tnum: number,\n\tin_min: number,\n\tin_max: number,\n\tout_min: number,\n\tout_max: number\n): number => {\n\treturn ((num - in_min) * (out_max - out_min)) / (in_max - in_min) + out_min\n}\n\nexport const remapNumbers = map_numbers\n\nexport const lerp = (v0: number, v1: number, t: number): number => {\n\treturn v0 * (1 - t) + v1 * t\n}\n\nexport const degrees_to_radians = (degrees: number): number => {\n\tvar pi = Math.PI\n\treturn degrees * (pi / 180)\n}\n\nexport const radians_to_degrees = (radians: number): number => {\n\tvar pi = Math.PI\n\treturn radians * (180 / pi)\n}\n\nexport const round2 = (v: number): number => {\n\tv = Math.round(v * 100) / 100\n\treturn v\n}\n","import { useFrame, useThree } from \"@react-three/fiber\"\n// @ts-ignore\nimport { stackHelperFactory, VolumeLoader } from \"ami.js\"\nimport { MutableRefObject, Ref, useEffect, useRef } from \"react\"\nimport ProgressBar from \"src/components/progressBar/progressBar\"\nimport { useSensorStore } from \"src/state/stores/sensorStore\"\nimport { degrees_to_radians, remapNumbers } from \"src/utils/math\"\nimport * as THREE from \"three\"\nimport { Clock, Vector3 } from \"three\"\n\nconst AmiContext = ({\n\tcontainer,\n\tvolumeUrl,\n\tmirroredLeftRight,\n\tmirroredFrontBack,\n\tzoom,\n\tclock,\n\texternalData,\n}: {\n\tcontainer: Ref\n\tvolumeUrl: string\n\tmirroredLeftRight: boolean\n\tmirroredFrontBack: boolean\n\tzoom: MutableRefObject\n\tclock?: MutableRefObject\n\texternalData?: MutableRefObject\n}) => {\n\tconst _data = useRef([0, 0, 0])\n\n\tuseEffect(() =>\n\t\tuseSensorStore.subscribe((state) => {\n\t\t\tif (state.data) {\n\t\t\t\t_data.current = [\n\t\t\t\t\tstate.data[0],\n\t\t\t\t\tremapNumbers(state.data[1], -90, 90, -30, 30),\n\t\t\t\t\tstate.data[2],\n\t\t\t\t]\n\t\t\t}\n\t\t})\n\t)\n\n\tconst { camera, scene } = useThree()\n\n\tconst stackHelper = useRef(undefined)\n\n\tuseFrame(({ camera }) => {\n\t\tif (stackHelper.current && camera && _data.current) {\n\t\t\tconst worldBBox = stackHelper.current.stack.worldBoundingBox()\n\n\t\t\tconst length = (worldBBox[5] - worldBBox[4]) / 6\n\t\t\tconst distance = length * 0.05\n\t\t\tconst normalDistance = (worldBBox[5] - worldBBox[4]) * 0.05\n\n\t\t\tlet time = 0\n\t\t\tif (clock?.current) {\n\t\t\t\ttime = Math.floor(clock.current.getElapsedTime() * 6) % 5\n\t\t\t}\n\n\t\t\tconst data = externalData ? externalData : _data\n\n\t\t\tconst remappedPosition =\n\t\t\t\tclock?.current !== undefined\n\t\t\t\t\t? remapNumbers(\n\t\t\t\t\t\t\tdata.current[0],\n\t\t\t\t\t\t\tmirroredFrontBack ? 1 : 0,\n\t\t\t\t\t\t\tmirroredFrontBack ? 0 : 1,\n\t\t\t\t\t\t\tworldBBox[4] + distance,\n\t\t\t\t\t\t\tlength - distance\n\t\t\t\t\t )\n\t\t\t\t\t: remapNumbers(\n\t\t\t\t\t\t\tdata.current[0],\n\t\t\t\t\t\t\tmirroredFrontBack ? 1 : 0,\n\t\t\t\t\t\t\tmirroredFrontBack ? 0 : 1,\n\t\t\t\t\t\t\tworldBBox[4] + normalDistance,\n\t\t\t\t\t\t\tworldBBox[5] - normalDistance\n\t\t\t\t\t )\n\n\t\t\tconst planeDir = new Vector3(0, 0, mirroredLeftRight ? 1 : -1)\n\t\t\tplaneDir.applyAxisAngle(\n\t\t\t\tnew Vector3(0, 1, 0),\n\t\t\t\tdegrees_to_radians(data.current[2])\n\t\t\t)\n\t\t\tplaneDir.applyAxisAngle(\n\t\t\t\tnew Vector3(1, 0, 0),\n\t\t\t\tdegrees_to_radians(data.current[1])\n\t\t\t)\n\n\t\t\tstackHelper.current.slice.planePosition.z =\n\t\t\t\tremappedPosition + time * length\n\t\t\tstackHelper.current.slice.planeDirection = planeDir\n\n\t\t\tconst zoomMultiplier = (3 - zoom.current) * 100\n\n\t\t\tcamera.position.x =\n\t\t\t\tstackHelper.current.slice.planePosition.x + planeDir.x * zoomMultiplier\n\t\t\tcamera.position.y =\n\t\t\t\tstackHelper.current.slice.planePosition.y + planeDir.y * zoomMultiplier\n\t\t\tcamera.position.z =\n\t\t\t\tstackHelper.current.slice.planePosition.z + planeDir.z * zoomMultiplier\n\n\t\t\tcamera.lookAt(stackHelper.current.slice.planePosition)\n\t\t\tcamera.updateProjectionMatrix()\n\t\t}\n\t})\n\n\tuseEffect(() => {\n\t\t// @ts-ignore\n\t\tconst loader = new VolumeLoader(container, ProgressBar)\n\n\t\tif (volumeUrl) {\n\t\t\tloader.load(volumeUrl).then(() => {\n\t\t\t\tconst series = loader.data[0].mergeSeries(loader.data)[0]\n\t\t\t\tconst stack = series.stack[0]\n\n\t\t\t\tconst StackHelper = stackHelperFactory(THREE)\n\n\t\t\t\tif (stackHelper.current === undefined) {\n\t\t\t\t\tstackHelper.current = new StackHelper(stack)\n\t\t\t\t\tstackHelper.current.bbox._visible = false\n\t\t\t\t\tstackHelper.current.border._visible = false\n\n\t\t\t\t\tconst centerLPS = stackHelper.current.stack.worldCenter()\n\t\t\t\t\tstackHelper.current.slice.aabbSpace = \"LPS\"\n\t\t\t\t\tstackHelper.current.slice.planePosition.x = centerLPS.x\n\t\t\t\t\tstackHelper.current.slice.planePosition.y = centerLPS.y\n\t\t\t\t\tstackHelper.current.slice.planePosition.z = centerLPS.z\n\t\t\t\t\tstackHelper.current.slice.thickness = 0\n\t\t\t\t\tstackHelper.current.slice.spacing = 1\n\t\t\t\t\tstackHelper.current.slice.interpolation = 1\n\t\t\t\t\tscene.add(stackHelper.current)\n\n\t\t\t\t\tstackHelper.current.slice.planeDirection = new Vector3(0, 0, 1)\n\t\t\t\t} else {\n\t\t\t\t\tstackHelper.current._stack = stack\n\t\t\t\t}\n\n\t\t\t\tif (camera) {\n\t\t\t\t\tconst centerLPS = stackHelper.current.stack.worldCenter()\n\n\t\t\t\t\tcamera.lookAt(centerLPS.x, centerLPS.y, centerLPS.z)\n\t\t\t\t\tcamera.updateProjectionMatrix()\n\t\t\t\t}\n\t\t\t})\n\t\t}\n\t}, [camera, scene, container, volumeUrl])\n\n\treturn null\n}\n\nexport default AmiContext\n","import { useFrame } from \"@react-three/fiber\"\nimport { useState } from \"react\"\nimport { Clock } from \"three\"\n\nconst FrameLimiter = ({ fps }: { fps: number }) => {\n\tconst [clock] = useState(new Clock())\n\n\tuseFrame((state) => {\n\t\tconst timeUntilNextFrame = 1000 / fps - clock.getDelta()\n\n\t\tsetTimeout(() => {\n\t\t\tstate.invalidate()\n\t\t}, Math.max(0, timeUntilNextFrame))\n\t})\n\n\treturn null\n}\n\nexport default FrameLimiter\n","import { usePatientStore } from \"../../../state/stores/patientStore\"\n\nconst Loading = () => {\n\tconst percentage = usePatientStore((state) => state.percentage)\n\tconst mode = usePatientStore((state) => state.mode)\n\n\treturn (\n\t\t
\n\t\t\t
\n\t\t\t\t

\n\t\t\t\t\tDaten werden {mode === \"loading\" ? \"heruntergeladen\" : \"verarbeitet\"}\n\t\t\t\t\t: \n\t\t\t\t

\n\t\t\t\t

\n\t\t\t\t\t{Math.round(percentage * 100)}%\n\t\t\t\t

\n\t\t\t
\n\t\t
\n\t)\n}\n\nexport default Loading\n","import { Canvas } from \"@react-three/fiber\"\nimport {\n\tCSSProperties,\n\tMutableRefObject,\n\tRef,\n\tSuspense,\n\tuseEffect,\n\tuseState,\n} from \"react\"\nimport AmiContext from \"src/components/ami/context\"\nimport FrameLimiter from \"src/components/frameLimiter/frameLimiter\"\nimport Loading from \"src/components/patient/user/loading\"\nimport { usePatientStore } from \"src/state/stores/patientStore\"\nimport { Clock, Vector3 } from \"three\"\n\nconst AmiView = ({\n\tcontainer,\n\tvolumeUrl,\n\tzoom,\n\tclock,\n\texternalData,\n\tstyle,\n\tmirrorLeftRight,\n\tmirrorFrontBack,\n}: {\n\tcontainer: Ref\n\tvolumeUrl: string\n\tzoom: MutableRefObject\n\tclock?: MutableRefObject\n\texternalData?: MutableRefObject\n\tstyle?: CSSProperties\n\tmirrorLeftRight: boolean\n\tmirrorFrontBack: boolean\n}) => {\n\tconst [isLoading, setIsLoading] = useState(true)\n\n\tuseEffect(() =>\n\t\tusePatientStore.subscribe((state) => {\n\t\t\tif (state.mode === \"done\") setIsLoading(false)\n\t\t})\n\t)\n\n\treturn (\n\t\t<>\n\t\t\t state.gl.setClearColor(\"black\")}\n\t\t\t>\n\t\t\t\t\n\t\t\t\t\t\n\n\t\t\t\t\t\n\t\t\t\t\t{/* */}\n\t\t\t\t\n\t\t\t
\n\t\t\t{isLoading && }\n\t\t\n\t)\n}\n\nexport default AmiView\n","var _rect;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nfunction SvgCheckBox(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 30,\n height: 30,\n viewBox: \"0 0 30 30\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _rect || (_rect = /*#__PURE__*/React.createElement(\"rect\", {\n x: 4,\n y: 4,\n width: 22,\n height: 22,\n rx: 4,\n stroke: \"#0071FF\",\n strokeWidth: 2\n })));\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgCheckBox);\nexport default __webpack_public_path__ + \"static/media/checkBox.4fbc56440042581171ab21bf267215e2.svg\";\nexport { ForwardRef as ReactComponent };","var _path;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nfunction SvgCheckBoxSelected(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 30,\n height: 30,\n viewBox: \"0 0 30 30\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M27 8.47209L15.4638 20.8628C14.7402 21.64 13.5354 21.7162 12.7196 21.0364L6.71963 16.0364C5.87108 15.3293 5.75643 14.0682 6.46356 13.2196C7.17069 12.3711 8.43182 12.2564 9.28037 12.9636L13.8261 16.7517L25.3933 4.3277C24.5019 3.50359 23.3097 3 22 3H8C5.23858 3 3 5.23858 3 8V22C3 24.7614 5.23858 27 8 27H22C24.7614 27 27 24.7614 27 22V8.47209Z\",\n fill: \"#0071FF\"\n })));\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgCheckBoxSelected);\nexport default __webpack_public_path__ + \"static/media/checkBoxSelected.fd4a37314894da4916a4ea4952c9aa44.svg\";\nexport { ForwardRef as ReactComponent };","import { CSSProperties } from \"react\"\nimport UnChecked from \"../../assets/images/checkBox.svg\"\nimport Checked from \"../../assets/images/checkBoxSelected.svg\"\n\ninterface CheckBoxProps {\n\ttitle: string\n\tchecked: boolean\n\tonCheck: (checked: boolean) => void\n\tstyle?: CSSProperties\n}\n\nconst CheckBox = ({\n\ttitle,\n\tchecked,\n\tonCheck,\n\tstyle = undefined,\n}: CheckBoxProps) => {\n\treturn (\n\t\t onCheck(!checked)}\n\t\t>\n\t\t\t

{title}

\n\t\t\t\n\t\t\n\t)\n}\n\nexport default CheckBox\n","import QRCode from \"qrcode.react\"\nimport { useEffect, useState } from \"react\"\nimport CheckBox from \"src/components/checkBox/checkBox\"\nimport Select from \"src/components/input/select\"\nimport { HasAuth } from \"src/components/privateRoute/privateRoute\"\nimport { FRONT_BASE_URL } from \"src/constants/constants\"\nimport { fetchApiAuthorized } from \"src/network/fetch\"\nimport useSWR from \"swr\"\n\nconst OptionsSidebar = ({\n\tauth,\n\tcode,\n\tonChangePatient,\n}: HasAuth & {\n\tcode: string\n\tonChangePatient: (\n\t\tvolumeUrl: string,\n\t\tmirroredLeftRight: boolean,\n\t\tmirroredFrontBack: boolean\n\t) => void\n}) => {\n\tconst { data: patients } = useSWR(\n\t\t[\"/patients\", auth.token, auth.expiresIn],\n\t\tfetchApiAuthorized\n\t)\n\n\tconst [menuVisible, setMenuVisible] = useState(true)\n\tconst [patient, setPatient] = useState(undefined)\n\n\tconst [mirroredHorizontal, setMirroredHorizontal] = useState(false)\n\tconst [mirroredBackFront, setMirroredBackFront] = useState(false)\n\n\tuseEffect(() => {\n\t\tconst _patient =\n\t\t\tpatients && patient\n\t\t\t\t? patients.find((p: { id: string }) => p.id === patient)\n\t\t\t\t: undefined\n\t\tif (_patient) {\n\t\t\tonChangePatient(_patient.volumeUrl, mirroredHorizontal, mirroredBackFront)\n\t\t}\n\t\t// eslint-disable-next-line react-hooks/exhaustive-deps\n\t}, [patient, mirroredHorizontal, mirroredBackFront])\n\n\treturn (\n\t\t\n\t\t\t setMenuVisible((v) => !v)}\n\t\t\t>\n\t\t\t\t

Optionen

\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\n\n\t\t\t
\n\t\t\t\t setPatient(newPatient)}\n\t\t\t\t>\n\t\t\t\t\t\n\t\t\t\t\t{patients &&\n\t\t\t\t\t\tpatients.map((v: Record) => {\n\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t})}\n\t\t\t\t\n\n\t\t\t\t
\n\t\t\t\t\t

Smartphone verbinden:

\n\t\t\t\t\t\n\t\t\t\t\t

{code}

\n\t\t\t\t
\n\n\t\t\t\t
\n\t\t\t\t\t

Spiegeln:

\n\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t
\n\t\t\t\n\t\t\n\t)\n}\n\nexport default OptionsSidebar\n","import Button, { ButtonTheme } from \"src/components/button/button\"\n\ninterface SegmentedControlOption {\n\ttitle: string\n\tvalue: any\n}\n\ninterface SegmentedControlProps {\n\toptions: SegmentedControlOption[]\n\tdisabled?: boolean\n\tvalue: any\n\tonChange: (value: any) => void\n}\n\nconst SegmentedControl = ({\n\toptions,\n\tdisabled = false,\n\tvalue,\n\tonChange,\n}: SegmentedControlProps) => {\n\treturn (\n\t\t
\n\t\t\t{options &&\n\t\t\t\toptions.map((option) => (\n\t\t\t\t\t onChange(option.value)}\n\t\t\t\t\t>\n\t\t\t\t\t\t{option.title as string}\n\t\t\t\t\t\n\t\t\t\t))}\n\t\t
\n\t)\n}\n\nexport default SegmentedControl\n","import { AuthData, useAuthStore } from \"../state/stores/authStore\"\nimport { GlobalHistory } from \"../utils/history\"\nimport { fetchApi } from \"./fetch\"\n\nexport const register = async (\n\temail: string,\n\tpassword: string,\n\tname: string\n) => {\n\tconst result = await fetchApi(\n\t\t\"/users/register\",\n\t\t{ email, password, name },\n\t\t\"POST\"\n\t)\n\tif (result) {\n\t\treturn true\n\t}\n}\n\nexport const loginWithCode = async (code: string) => {\n\tconst result = await fetchApi(\"/users/authenticate\", { code }, \"POST\")\n\tif (result && (result as AuthData)) {\n\t\tuseAuthStore.getState().update(result, false)\n\n\t\treturn result\n\t}\n\n\treturn false\n}\n\nexport const login = async (email: string, password: string) => {\n\tconst result = await fetchApi(\n\t\t\"/users/authenticate\",\n\t\t{ email, password },\n\t\t\"POST\"\n\t)\n\tif (result && (result as AuthData)) {\n\t\tuseAuthStore.getState().update(result, true)\n\n\t\treturn true\n\t}\n\n\treturn false\n}\n\nexport const logout = () => {\n\tuseAuthStore.getState().remove()\n\n\tGlobalHistory.push(\"/\")\n}\n\n// FIXME:\n// export const activate = async (code: string, password: string) => {\n// \tconst result = await fetchApi(\n// \t\t\"/users/activate\",\n// \t\t{ activationCode: code, password },\n// \t\t\"PUT\"\n// \t)\n// \tif (result && (result as AuthData)) {\n// \t\tuseAuthStore.getState().update(result)\n\n// \t\treturn true\n// \t}\n// }\n","const PACKET_TYPES = Object.create(null); // no Map = no polyfill\nPACKET_TYPES[\"open\"] = \"0\";\nPACKET_TYPES[\"close\"] = \"1\";\nPACKET_TYPES[\"ping\"] = \"2\";\nPACKET_TYPES[\"pong\"] = \"3\";\nPACKET_TYPES[\"message\"] = \"4\";\nPACKET_TYPES[\"upgrade\"] = \"5\";\nPACKET_TYPES[\"noop\"] = \"6\";\nconst PACKET_TYPES_REVERSE = Object.create(null);\nObject.keys(PACKET_TYPES).forEach(key => {\n PACKET_TYPES_REVERSE[PACKET_TYPES[key]] = key;\n});\nconst ERROR_PACKET = { type: \"error\", data: \"parser error\" };\nexport { PACKET_TYPES, PACKET_TYPES_REVERSE, ERROR_PACKET };\n","const chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';\n// Use a lookup table to find the index.\nconst lookup = typeof Uint8Array === 'undefined' ? [] : new Uint8Array(256);\nfor (let i = 0; i < chars.length; i++) {\n lookup[chars.charCodeAt(i)] = i;\n}\nexport const encode = (arraybuffer) => {\n let bytes = new Uint8Array(arraybuffer), i, len = bytes.length, base64 = '';\n for (i = 0; i < len; i += 3) {\n base64 += chars[bytes[i] >> 2];\n base64 += chars[((bytes[i] & 3) << 4) | (bytes[i + 1] >> 4)];\n base64 += chars[((bytes[i + 1] & 15) << 2) | (bytes[i + 2] >> 6)];\n base64 += chars[bytes[i + 2] & 63];\n }\n if (len % 3 === 2) {\n base64 = base64.substring(0, base64.length - 1) + '=';\n }\n else if (len % 3 === 1) {\n base64 = base64.substring(0, base64.length - 2) + '==';\n }\n return base64;\n};\nexport const decode = (base64) => {\n let bufferLength = base64.length * 0.75, len = base64.length, i, p = 0, encoded1, encoded2, encoded3, encoded4;\n if (base64[base64.length - 1] === '=') {\n bufferLength--;\n if (base64[base64.length - 2] === '=') {\n bufferLength--;\n }\n }\n const arraybuffer = new ArrayBuffer(bufferLength), bytes = new Uint8Array(arraybuffer);\n for (i = 0; i < len; i += 4) {\n encoded1 = lookup[base64.charCodeAt(i)];\n encoded2 = lookup[base64.charCodeAt(i + 1)];\n encoded3 = lookup[base64.charCodeAt(i + 2)];\n encoded4 = lookup[base64.charCodeAt(i + 3)];\n bytes[p++] = (encoded1 << 2) | (encoded2 >> 4);\n bytes[p++] = ((encoded2 & 15) << 4) | (encoded3 >> 2);\n bytes[p++] = ((encoded3 & 3) << 6) | (encoded4 & 63);\n }\n return arraybuffer;\n};\n","import { PACKET_TYPES } from \"./commons.js\";\nconst withNativeBlob = typeof Blob === \"function\" ||\n (typeof Blob !== \"undefined\" &&\n Object.prototype.toString.call(Blob) === \"[object BlobConstructor]\");\nconst withNativeArrayBuffer = typeof ArrayBuffer === \"function\";\n// ArrayBuffer.isView method is not defined in IE10\nconst isView = obj => {\n return typeof ArrayBuffer.isView === \"function\"\n ? ArrayBuffer.isView(obj)\n : obj && obj.buffer instanceof ArrayBuffer;\n};\nconst encodePacket = ({ type, data }, supportsBinary, callback) => {\n if (withNativeBlob && data instanceof Blob) {\n if (supportsBinary) {\n return callback(data);\n }\n else {\n return encodeBlobAsBase64(data, callback);\n }\n }\n else if (withNativeArrayBuffer &&\n (data instanceof ArrayBuffer || isView(data))) {\n if (supportsBinary) {\n return callback(data);\n }\n else {\n return encodeBlobAsBase64(new Blob([data]), callback);\n }\n }\n // plain string\n return callback(PACKET_TYPES[type] + (data || \"\"));\n};\nconst encodeBlobAsBase64 = (data, callback) => {\n const fileReader = new FileReader();\n fileReader.onload = function () {\n const content = fileReader.result.split(\",\")[1];\n callback(\"b\" + content);\n };\n return fileReader.readAsDataURL(data);\n};\nexport default encodePacket;\n","import { ERROR_PACKET, PACKET_TYPES_REVERSE } from \"./commons.js\";\nimport { decode } from \"./contrib/base64-arraybuffer.js\";\nconst withNativeArrayBuffer = typeof ArrayBuffer === \"function\";\nconst decodePacket = (encodedPacket, binaryType) => {\n if (typeof encodedPacket !== \"string\") {\n return {\n type: \"message\",\n data: mapBinary(encodedPacket, binaryType)\n };\n }\n const type = encodedPacket.charAt(0);\n if (type === \"b\") {\n return {\n type: \"message\",\n data: decodeBase64Packet(encodedPacket.substring(1), binaryType)\n };\n }\n const packetType = PACKET_TYPES_REVERSE[type];\n if (!packetType) {\n return ERROR_PACKET;\n }\n return encodedPacket.length > 1\n ? {\n type: PACKET_TYPES_REVERSE[type],\n data: encodedPacket.substring(1)\n }\n : {\n type: PACKET_TYPES_REVERSE[type]\n };\n};\nconst decodeBase64Packet = (data, binaryType) => {\n if (withNativeArrayBuffer) {\n const decoded = decode(data);\n return mapBinary(decoded, binaryType);\n }\n else {\n return { base64: true, data }; // fallback for old browsers\n }\n};\nconst mapBinary = (data, binaryType) => {\n switch (binaryType) {\n case \"blob\":\n return data instanceof ArrayBuffer ? new Blob([data]) : data;\n case \"arraybuffer\":\n default:\n return data; // assuming the data is already an ArrayBuffer\n }\n};\nexport default decodePacket;\n","import encodePacket from \"./encodePacket.js\";\nimport decodePacket from \"./decodePacket.js\";\nconst SEPARATOR = String.fromCharCode(30); // see https://en.wikipedia.org/wiki/Delimiter#ASCII_delimited_text\nconst encodePayload = (packets, callback) => {\n // some packets may be added to the array while encoding, so the initial length must be saved\n const length = packets.length;\n const encodedPackets = new Array(length);\n let count = 0;\n packets.forEach((packet, i) => {\n // force base64 encoding for binary packets\n encodePacket(packet, false, encodedPacket => {\n encodedPackets[i] = encodedPacket;\n if (++count === length) {\n callback(encodedPackets.join(SEPARATOR));\n }\n });\n });\n};\nconst decodePayload = (encodedPayload, binaryType) => {\n const encodedPackets = encodedPayload.split(SEPARATOR);\n const packets = [];\n for (let i = 0; i < encodedPackets.length; i++) {\n const decodedPacket = decodePacket(encodedPackets[i], binaryType);\n packets.push(decodedPacket);\n if (decodedPacket.type === \"error\") {\n break;\n }\n }\n return packets;\n};\nexport const protocol = 4;\nexport { encodePacket, encodePayload, decodePacket, decodePayload };\n","/**\n * Initialize a new `Emitter`.\n *\n * @api public\n */\n\nexport function Emitter(obj) {\n if (obj) return mixin(obj);\n}\n\n/**\n * Mixin the emitter properties.\n *\n * @param {Object} obj\n * @return {Object}\n * @api private\n */\n\nfunction mixin(obj) {\n for (var key in Emitter.prototype) {\n obj[key] = Emitter.prototype[key];\n }\n return obj;\n}\n\n/**\n * Listen on the given `event` with `fn`.\n *\n * @param {String} event\n * @param {Function} fn\n * @return {Emitter}\n * @api public\n */\n\nEmitter.prototype.on =\nEmitter.prototype.addEventListener = function(event, fn){\n this._callbacks = this._callbacks || {};\n (this._callbacks['$' + event] = this._callbacks['$' + event] || [])\n .push(fn);\n return this;\n};\n\n/**\n * Adds an `event` listener that will be invoked a single\n * time then automatically removed.\n *\n * @param {String} event\n * @param {Function} fn\n * @return {Emitter}\n * @api public\n */\n\nEmitter.prototype.once = function(event, fn){\n function on() {\n this.off(event, on);\n fn.apply(this, arguments);\n }\n\n on.fn = fn;\n this.on(event, on);\n return this;\n};\n\n/**\n * Remove the given callback for `event` or all\n * registered callbacks.\n *\n * @param {String} event\n * @param {Function} fn\n * @return {Emitter}\n * @api public\n */\n\nEmitter.prototype.off =\nEmitter.prototype.removeListener =\nEmitter.prototype.removeAllListeners =\nEmitter.prototype.removeEventListener = function(event, fn){\n this._callbacks = this._callbacks || {};\n\n // all\n if (0 == arguments.length) {\n this._callbacks = {};\n return this;\n }\n\n // specific event\n var callbacks = this._callbacks['$' + event];\n if (!callbacks) return this;\n\n // remove all handlers\n if (1 == arguments.length) {\n delete this._callbacks['$' + event];\n return this;\n }\n\n // remove specific handler\n var cb;\n for (var i = 0; i < callbacks.length; i++) {\n cb = callbacks[i];\n if (cb === fn || cb.fn === fn) {\n callbacks.splice(i, 1);\n break;\n }\n }\n\n // Remove event specific arrays for event types that no\n // one is subscribed for to avoid memory leak.\n if (callbacks.length === 0) {\n delete this._callbacks['$' + event];\n }\n\n return this;\n};\n\n/**\n * Emit `event` with the given args.\n *\n * @param {String} event\n * @param {Mixed} ...\n * @return {Emitter}\n */\n\nEmitter.prototype.emit = function(event){\n this._callbacks = this._callbacks || {};\n\n var args = new Array(arguments.length - 1)\n , callbacks = this._callbacks['$' + event];\n\n for (var i = 1; i < arguments.length; i++) {\n args[i - 1] = arguments[i];\n }\n\n if (callbacks) {\n callbacks = callbacks.slice(0);\n for (var i = 0, len = callbacks.length; i < len; ++i) {\n callbacks[i].apply(this, args);\n }\n }\n\n return this;\n};\n\n// alias used for reserved events (protected method)\nEmitter.prototype.emitReserved = Emitter.prototype.emit;\n\n/**\n * Return array of callbacks for `event`.\n *\n * @param {String} event\n * @return {Array}\n * @api public\n */\n\nEmitter.prototype.listeners = function(event){\n this._callbacks = this._callbacks || {};\n return this._callbacks['$' + event] || [];\n};\n\n/**\n * Check if this emitter has `event` handlers.\n *\n * @param {String} event\n * @return {Boolean}\n * @api public\n */\n\nEmitter.prototype.hasListeners = function(event){\n return !! this.listeners(event).length;\n};\n","export default (() => {\n if (typeof self !== \"undefined\") {\n return self;\n }\n else if (typeof window !== \"undefined\") {\n return window;\n }\n else {\n return Function(\"return this\")();\n }\n})();\n","import globalThis from \"./globalThis.js\";\nexport function pick(obj, ...attr) {\n return attr.reduce((acc, k) => {\n if (obj.hasOwnProperty(k)) {\n acc[k] = obj[k];\n }\n return acc;\n }, {});\n}\n// Keep a reference to the real timeout functions so they can be used when overridden\nconst NATIVE_SET_TIMEOUT = setTimeout;\nconst NATIVE_CLEAR_TIMEOUT = clearTimeout;\nexport function installTimerFunctions(obj, opts) {\n if (opts.useNativeTimers) {\n obj.setTimeoutFn = NATIVE_SET_TIMEOUT.bind(globalThis);\n obj.clearTimeoutFn = NATIVE_CLEAR_TIMEOUT.bind(globalThis);\n }\n else {\n obj.setTimeoutFn = setTimeout.bind(globalThis);\n obj.clearTimeoutFn = clearTimeout.bind(globalThis);\n }\n}\n// base64 encoded buffers are about 33% bigger (https://en.wikipedia.org/wiki/Base64)\nconst BASE64_OVERHEAD = 1.33;\n// we could also have used `new Blob([obj]).size`, but it isn't supported in IE9\nexport function byteLength(obj) {\n if (typeof obj === \"string\") {\n return utf8Length(obj);\n }\n // arraybuffer or blob\n return Math.ceil((obj.byteLength || obj.size) * BASE64_OVERHEAD);\n}\nfunction utf8Length(str) {\n let c = 0, length = 0;\n for (let i = 0, l = str.length; i < l; i++) {\n c = str.charCodeAt(i);\n if (c < 0x80) {\n length += 1;\n }\n else if (c < 0x800) {\n length += 2;\n }\n else if (c < 0xd800 || c >= 0xe000) {\n length += 3;\n }\n else {\n i++;\n length += 4;\n }\n }\n return length;\n}\n","// imported from https://github.com/unshiftio/yeast\n'use strict';\nconst alphabet = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz-_'.split(''), length = 64, map = {};\nlet seed = 0, i = 0, prev;\n/**\n * Return a string representing the specified number.\n *\n * @param {Number} num The number to convert.\n * @returns {String} The string representation of the number.\n * @api public\n */\nexport function encode(num) {\n let encoded = '';\n do {\n encoded = alphabet[num % length] + encoded;\n num = Math.floor(num / length);\n } while (num > 0);\n return encoded;\n}\n/**\n * Return the integer value specified by the given string.\n *\n * @param {String} str The string to convert.\n * @returns {Number} The integer value represented by the string.\n * @api public\n */\nexport function decode(str) {\n let decoded = 0;\n for (i = 0; i < str.length; i++) {\n decoded = decoded * length + map[str.charAt(i)];\n }\n return decoded;\n}\n/**\n * Yeast: A tiny growing id generator.\n *\n * @returns {String} A unique id.\n * @api public\n */\nexport function yeast() {\n const now = encode(+new Date());\n if (now !== prev)\n return seed = 0, prev = now;\n return now + '.' + encode(seed++);\n}\n//\n// Map each character to its index.\n//\nfor (; i < length; i++)\n map[alphabet[i]] = i;\n","import { decodePacket } from \"engine.io-parser\";\nimport { Emitter } from \"@socket.io/component-emitter\";\nimport { installTimerFunctions } from \"./util.js\";\nclass TransportError extends Error {\n constructor(reason, description, context) {\n super(reason);\n this.description = description;\n this.context = context;\n this.type = \"TransportError\";\n }\n}\nexport class Transport extends Emitter {\n /**\n * Transport abstract constructor.\n *\n * @param {Object} options.\n * @api private\n */\n constructor(opts) {\n super();\n this.writable = false;\n installTimerFunctions(this, opts);\n this.opts = opts;\n this.query = opts.query;\n this.readyState = \"\";\n this.socket = opts.socket;\n }\n /**\n * Emits an error.\n *\n * @param {String} reason\n * @param description\n * @param context - the error context\n * @return {Transport} for chaining\n * @api protected\n */\n onError(reason, description, context) {\n super.emitReserved(\"error\", new TransportError(reason, description, context));\n return this;\n }\n /**\n * Opens the transport.\n *\n * @api public\n */\n open() {\n if (\"closed\" === this.readyState || \"\" === this.readyState) {\n this.readyState = \"opening\";\n this.doOpen();\n }\n return this;\n }\n /**\n * Closes the transport.\n *\n * @api public\n */\n close() {\n if (\"opening\" === this.readyState || \"open\" === this.readyState) {\n this.doClose();\n this.onClose();\n }\n return this;\n }\n /**\n * Sends multiple packets.\n *\n * @param {Array} packets\n * @api public\n */\n send(packets) {\n if (\"open\" === this.readyState) {\n this.write(packets);\n }\n else {\n // this might happen if the transport was silently closed in the beforeunload event handler\n }\n }\n /**\n * Called upon open\n *\n * @api protected\n */\n onOpen() {\n this.readyState = \"open\";\n this.writable = true;\n super.emitReserved(\"open\");\n }\n /**\n * Called with data.\n *\n * @param {String} data\n * @api protected\n */\n onData(data) {\n const packet = decodePacket(data, this.socket.binaryType);\n this.onPacket(packet);\n }\n /**\n * Called with a decoded packet.\n *\n * @api protected\n */\n onPacket(packet) {\n super.emitReserved(\"packet\", packet);\n }\n /**\n * Called upon close.\n *\n * @api protected\n */\n onClose(details) {\n this.readyState = \"closed\";\n super.emitReserved(\"close\", details);\n }\n}\n","// imported from https://github.com/galkn/querystring\n/**\n * Compiles a querystring\n * Returns string representation of the object\n *\n * @param {Object}\n * @api private\n */\nexport function encode(obj) {\n let str = '';\n for (let i in obj) {\n if (obj.hasOwnProperty(i)) {\n if (str.length)\n str += '&';\n str += encodeURIComponent(i) + '=' + encodeURIComponent(obj[i]);\n }\n }\n return str;\n}\n/**\n * Parses a simple querystring into an object\n *\n * @param {String} qs\n * @api private\n */\nexport function decode(qs) {\n let qry = {};\n let pairs = qs.split('&');\n for (let i = 0, l = pairs.length; i < l; i++) {\n let pair = pairs[i].split('=');\n qry[decodeURIComponent(pair[0])] = decodeURIComponent(pair[1]);\n }\n return qry;\n}\n","// imported from https://github.com/component/has-cors\nlet value = false;\ntry {\n value = typeof XMLHttpRequest !== 'undefined' &&\n 'withCredentials' in new XMLHttpRequest();\n}\ncatch (err) {\n // if XMLHttp support is disabled in IE then it will throw\n // when trying to create\n}\nexport const hasCORS = value;\n","// browser shim for xmlhttprequest module\nimport { hasCORS } from \"../contrib/has-cors.js\";\nimport globalThis from \"../globalThis.js\";\nexport default function (opts) {\n const xdomain = opts.xdomain;\n // XMLHttpRequest can be disabled on IE\n try {\n if (\"undefined\" !== typeof XMLHttpRequest && (!xdomain || hasCORS)) {\n return new XMLHttpRequest();\n }\n }\n catch (e) { }\n if (!xdomain) {\n try {\n return new globalThis[[\"Active\"].concat(\"Object\").join(\"X\")](\"Microsoft.XMLHTTP\");\n }\n catch (e) { }\n }\n}\n","import { Transport } from \"../transport.js\";\nimport { yeast } from \"../contrib/yeast.js\";\nimport { encode } from \"../contrib/parseqs.js\";\nimport { encodePayload, decodePayload } from \"engine.io-parser\";\nimport XMLHttpRequest from \"./xmlhttprequest.js\";\nimport { Emitter } from \"@socket.io/component-emitter\";\nimport { installTimerFunctions, pick } from \"../util.js\";\nimport globalThis from \"../globalThis.js\";\nfunction empty() { }\nconst hasXHR2 = (function () {\n const xhr = new XMLHttpRequest({\n xdomain: false\n });\n return null != xhr.responseType;\n})();\nexport class Polling extends Transport {\n /**\n * XHR Polling constructor.\n *\n * @param {Object} opts\n * @api public\n */\n constructor(opts) {\n super(opts);\n this.polling = false;\n if (typeof location !== \"undefined\") {\n const isSSL = \"https:\" === location.protocol;\n let port = location.port;\n // some user agents have empty `location.port`\n if (!port) {\n port = isSSL ? \"443\" : \"80\";\n }\n this.xd =\n (typeof location !== \"undefined\" &&\n opts.hostname !== location.hostname) ||\n port !== opts.port;\n this.xs = opts.secure !== isSSL;\n }\n /**\n * XHR supports binary\n */\n const forceBase64 = opts && opts.forceBase64;\n this.supportsBinary = hasXHR2 && !forceBase64;\n }\n /**\n * Transport name.\n */\n get name() {\n return \"polling\";\n }\n /**\n * Opens the socket (triggers polling). We write a PING message to determine\n * when the transport is open.\n *\n * @api private\n */\n doOpen() {\n this.poll();\n }\n /**\n * Pauses polling.\n *\n * @param {Function} callback upon buffers are flushed and transport is paused\n * @api private\n */\n pause(onPause) {\n this.readyState = \"pausing\";\n const pause = () => {\n this.readyState = \"paused\";\n onPause();\n };\n if (this.polling || !this.writable) {\n let total = 0;\n if (this.polling) {\n total++;\n this.once(\"pollComplete\", function () {\n --total || pause();\n });\n }\n if (!this.writable) {\n total++;\n this.once(\"drain\", function () {\n --total || pause();\n });\n }\n }\n else {\n pause();\n }\n }\n /**\n * Starts polling cycle.\n *\n * @api public\n */\n poll() {\n this.polling = true;\n this.doPoll();\n this.emitReserved(\"poll\");\n }\n /**\n * Overloads onData to detect payloads.\n *\n * @api private\n */\n onData(data) {\n const callback = packet => {\n // if its the first message we consider the transport open\n if (\"opening\" === this.readyState && packet.type === \"open\") {\n this.onOpen();\n }\n // if its a close packet, we close the ongoing requests\n if (\"close\" === packet.type) {\n this.onClose({ description: \"transport closed by the server\" });\n return false;\n }\n // otherwise bypass onData and handle the message\n this.onPacket(packet);\n };\n // decode payload\n decodePayload(data, this.socket.binaryType).forEach(callback);\n // if an event did not trigger closing\n if (\"closed\" !== this.readyState) {\n // if we got data we're not polling\n this.polling = false;\n this.emitReserved(\"pollComplete\");\n if (\"open\" === this.readyState) {\n this.poll();\n }\n else {\n }\n }\n }\n /**\n * For polling, send a close packet.\n *\n * @api private\n */\n doClose() {\n const close = () => {\n this.write([{ type: \"close\" }]);\n };\n if (\"open\" === this.readyState) {\n close();\n }\n else {\n // in case we're trying to close while\n // handshaking is in progress (GH-164)\n this.once(\"open\", close);\n }\n }\n /**\n * Writes a packets payload.\n *\n * @param {Array} data packets\n * @param {Function} drain callback\n * @api private\n */\n write(packets) {\n this.writable = false;\n encodePayload(packets, data => {\n this.doWrite(data, () => {\n this.writable = true;\n this.emitReserved(\"drain\");\n });\n });\n }\n /**\n * Generates uri for connection.\n *\n * @api private\n */\n uri() {\n let query = this.query || {};\n const schema = this.opts.secure ? \"https\" : \"http\";\n let port = \"\";\n // cache busting is forced\n if (false !== this.opts.timestampRequests) {\n query[this.opts.timestampParam] = yeast();\n }\n if (!this.supportsBinary && !query.sid) {\n query.b64 = 1;\n }\n // avoid port if default for schema\n if (this.opts.port &&\n ((\"https\" === schema && Number(this.opts.port) !== 443) ||\n (\"http\" === schema && Number(this.opts.port) !== 80))) {\n port = \":\" + this.opts.port;\n }\n const encodedQuery = encode(query);\n const ipv6 = this.opts.hostname.indexOf(\":\") !== -1;\n return (schema +\n \"://\" +\n (ipv6 ? \"[\" + this.opts.hostname + \"]\" : this.opts.hostname) +\n port +\n this.opts.path +\n (encodedQuery.length ? \"?\" + encodedQuery : \"\"));\n }\n /**\n * Creates a request.\n *\n * @param {String} method\n * @api private\n */\n request(opts = {}) {\n Object.assign(opts, { xd: this.xd, xs: this.xs }, this.opts);\n return new Request(this.uri(), opts);\n }\n /**\n * Sends data.\n *\n * @param {String} data to send.\n * @param {Function} called upon flush.\n * @api private\n */\n doWrite(data, fn) {\n const req = this.request({\n method: \"POST\",\n data: data\n });\n req.on(\"success\", fn);\n req.on(\"error\", (xhrStatus, context) => {\n this.onError(\"xhr post error\", xhrStatus, context);\n });\n }\n /**\n * Starts a poll cycle.\n *\n * @api private\n */\n doPoll() {\n const req = this.request();\n req.on(\"data\", this.onData.bind(this));\n req.on(\"error\", (xhrStatus, context) => {\n this.onError(\"xhr poll error\", xhrStatus, context);\n });\n this.pollXhr = req;\n }\n}\nexport class Request extends Emitter {\n /**\n * Request constructor\n *\n * @param {Object} options\n * @api public\n */\n constructor(uri, opts) {\n super();\n installTimerFunctions(this, opts);\n this.opts = opts;\n this.method = opts.method || \"GET\";\n this.uri = uri;\n this.async = false !== opts.async;\n this.data = undefined !== opts.data ? opts.data : null;\n this.create();\n }\n /**\n * Creates the XHR object and sends the request.\n *\n * @api private\n */\n create() {\n const opts = pick(this.opts, \"agent\", \"pfx\", \"key\", \"passphrase\", \"cert\", \"ca\", \"ciphers\", \"rejectUnauthorized\", \"autoUnref\");\n opts.xdomain = !!this.opts.xd;\n opts.xscheme = !!this.opts.xs;\n const xhr = (this.xhr = new XMLHttpRequest(opts));\n try {\n xhr.open(this.method, this.uri, this.async);\n try {\n if (this.opts.extraHeaders) {\n xhr.setDisableHeaderCheck && xhr.setDisableHeaderCheck(true);\n for (let i in this.opts.extraHeaders) {\n if (this.opts.extraHeaders.hasOwnProperty(i)) {\n xhr.setRequestHeader(i, this.opts.extraHeaders[i]);\n }\n }\n }\n }\n catch (e) { }\n if (\"POST\" === this.method) {\n try {\n xhr.setRequestHeader(\"Content-type\", \"text/plain;charset=UTF-8\");\n }\n catch (e) { }\n }\n try {\n xhr.setRequestHeader(\"Accept\", \"*/*\");\n }\n catch (e) { }\n // ie6 check\n if (\"withCredentials\" in xhr) {\n xhr.withCredentials = this.opts.withCredentials;\n }\n if (this.opts.requestTimeout) {\n xhr.timeout = this.opts.requestTimeout;\n }\n xhr.onreadystatechange = () => {\n if (4 !== xhr.readyState)\n return;\n if (200 === xhr.status || 1223 === xhr.status) {\n this.onLoad();\n }\n else {\n // make sure the `error` event handler that's user-set\n // does not throw in the same tick and gets caught here\n this.setTimeoutFn(() => {\n this.onError(typeof xhr.status === \"number\" ? xhr.status : 0);\n }, 0);\n }\n };\n xhr.send(this.data);\n }\n catch (e) {\n // Need to defer since .create() is called directly from the constructor\n // and thus the 'error' event can only be only bound *after* this exception\n // occurs. Therefore, also, we cannot throw here at all.\n this.setTimeoutFn(() => {\n this.onError(e);\n }, 0);\n return;\n }\n if (typeof document !== \"undefined\") {\n this.index = Request.requestsCount++;\n Request.requests[this.index] = this;\n }\n }\n /**\n * Called upon error.\n *\n * @api private\n */\n onError(err) {\n this.emitReserved(\"error\", err, this.xhr);\n this.cleanup(true);\n }\n /**\n * Cleans up house.\n *\n * @api private\n */\n cleanup(fromError) {\n if (\"undefined\" === typeof this.xhr || null === this.xhr) {\n return;\n }\n this.xhr.onreadystatechange = empty;\n if (fromError) {\n try {\n this.xhr.abort();\n }\n catch (e) { }\n }\n if (typeof document !== \"undefined\") {\n delete Request.requests[this.index];\n }\n this.xhr = null;\n }\n /**\n * Called upon load.\n *\n * @api private\n */\n onLoad() {\n const data = this.xhr.responseText;\n if (data !== null) {\n this.emitReserved(\"data\", data);\n this.emitReserved(\"success\");\n this.cleanup();\n }\n }\n /**\n * Aborts the request.\n *\n * @api public\n */\n abort() {\n this.cleanup();\n }\n}\nRequest.requestsCount = 0;\nRequest.requests = {};\n/**\n * Aborts pending requests when unloading the window. This is needed to prevent\n * memory leaks (e.g. when using IE) and to ensure that no spurious error is\n * emitted.\n */\nif (typeof document !== \"undefined\") {\n // @ts-ignore\n if (typeof attachEvent === \"function\") {\n // @ts-ignore\n attachEvent(\"onunload\", unloadHandler);\n }\n else if (typeof addEventListener === \"function\") {\n const terminationEvent = \"onpagehide\" in globalThis ? \"pagehide\" : \"unload\";\n addEventListener(terminationEvent, unloadHandler, false);\n }\n}\nfunction unloadHandler() {\n for (let i in Request.requests) {\n if (Request.requests.hasOwnProperty(i)) {\n Request.requests[i].abort();\n }\n }\n}\n","import globalThis from \"../globalThis.js\";\nexport const nextTick = (() => {\n const isPromiseAvailable = typeof Promise === \"function\" && typeof Promise.resolve === \"function\";\n if (isPromiseAvailable) {\n return cb => Promise.resolve().then(cb);\n }\n else {\n return (cb, setTimeoutFn) => setTimeoutFn(cb, 0);\n }\n})();\nexport const WebSocket = globalThis.WebSocket || globalThis.MozWebSocket;\nexport const usingBrowserWebSocket = true;\nexport const defaultBinaryType = \"arraybuffer\";\n","import { Transport } from \"../transport.js\";\nimport { encode } from \"../contrib/parseqs.js\";\nimport { yeast } from \"../contrib/yeast.js\";\nimport { pick } from \"../util.js\";\nimport { defaultBinaryType, nextTick, usingBrowserWebSocket, WebSocket } from \"./websocket-constructor.js\";\nimport { encodePacket } from \"engine.io-parser\";\n// detect ReactNative environment\nconst isReactNative = typeof navigator !== \"undefined\" &&\n typeof navigator.product === \"string\" &&\n navigator.product.toLowerCase() === \"reactnative\";\nexport class WS extends Transport {\n /**\n * WebSocket transport constructor.\n *\n * @api {Object} connection options\n * @api public\n */\n constructor(opts) {\n super(opts);\n this.supportsBinary = !opts.forceBase64;\n }\n /**\n * Transport name.\n *\n * @api public\n */\n get name() {\n return \"websocket\";\n }\n /**\n * Opens socket.\n *\n * @api private\n */\n doOpen() {\n if (!this.check()) {\n // let probe timeout\n return;\n }\n const uri = this.uri();\n const protocols = this.opts.protocols;\n // React Native only supports the 'headers' option, and will print a warning if anything else is passed\n const opts = isReactNative\n ? {}\n : pick(this.opts, \"agent\", \"perMessageDeflate\", \"pfx\", \"key\", \"passphrase\", \"cert\", \"ca\", \"ciphers\", \"rejectUnauthorized\", \"localAddress\", \"protocolVersion\", \"origin\", \"maxPayload\", \"family\", \"checkServerIdentity\");\n if (this.opts.extraHeaders) {\n opts.headers = this.opts.extraHeaders;\n }\n try {\n this.ws =\n usingBrowserWebSocket && !isReactNative\n ? protocols\n ? new WebSocket(uri, protocols)\n : new WebSocket(uri)\n : new WebSocket(uri, protocols, opts);\n }\n catch (err) {\n return this.emitReserved(\"error\", err);\n }\n this.ws.binaryType = this.socket.binaryType || defaultBinaryType;\n this.addEventListeners();\n }\n /**\n * Adds event listeners to the socket\n *\n * @api private\n */\n addEventListeners() {\n this.ws.onopen = () => {\n if (this.opts.autoUnref) {\n this.ws._socket.unref();\n }\n this.onOpen();\n };\n this.ws.onclose = closeEvent => this.onClose({\n description: \"websocket connection closed\",\n context: closeEvent\n });\n this.ws.onmessage = ev => this.onData(ev.data);\n this.ws.onerror = e => this.onError(\"websocket error\", e);\n }\n /**\n * Writes data to socket.\n *\n * @param {Array} array of packets.\n * @api private\n */\n write(packets) {\n this.writable = false;\n // encodePacket efficient as it uses WS framing\n // no need for encodePayload\n for (let i = 0; i < packets.length; i++) {\n const packet = packets[i];\n const lastPacket = i === packets.length - 1;\n encodePacket(packet, this.supportsBinary, data => {\n // always create a new object (GH-437)\n const opts = {};\n if (!usingBrowserWebSocket) {\n if (packet.options) {\n opts.compress = packet.options.compress;\n }\n if (this.opts.perMessageDeflate) {\n const len = \n // @ts-ignore\n \"string\" === typeof data ? Buffer.byteLength(data) : data.length;\n if (len < this.opts.perMessageDeflate.threshold) {\n opts.compress = false;\n }\n }\n }\n // Sometimes the websocket has already been closed but the browser didn't\n // have a chance of informing us about it yet, in that case send will\n // throw an error\n try {\n if (usingBrowserWebSocket) {\n // TypeError is thrown when passing the second argument on Safari\n this.ws.send(data);\n }\n else {\n this.ws.send(data, opts);\n }\n }\n catch (e) {\n }\n if (lastPacket) {\n // fake drain\n // defer to next tick to allow Socket to clear writeBuffer\n nextTick(() => {\n this.writable = true;\n this.emitReserved(\"drain\");\n }, this.setTimeoutFn);\n }\n });\n }\n }\n /**\n * Closes socket.\n *\n * @api private\n */\n doClose() {\n if (typeof this.ws !== \"undefined\") {\n this.ws.close();\n this.ws = null;\n }\n }\n /**\n * Generates uri for connection.\n *\n * @api private\n */\n uri() {\n let query = this.query || {};\n const schema = this.opts.secure ? \"wss\" : \"ws\";\n let port = \"\";\n // avoid port if default for schema\n if (this.opts.port &&\n ((\"wss\" === schema && Number(this.opts.port) !== 443) ||\n (\"ws\" === schema && Number(this.opts.port) !== 80))) {\n port = \":\" + this.opts.port;\n }\n // append timestamp to URI\n if (this.opts.timestampRequests) {\n query[this.opts.timestampParam] = yeast();\n }\n // communicate binary support capabilities\n if (!this.supportsBinary) {\n query.b64 = 1;\n }\n const encodedQuery = encode(query);\n const ipv6 = this.opts.hostname.indexOf(\":\") !== -1;\n return (schema +\n \"://\" +\n (ipv6 ? \"[\" + this.opts.hostname + \"]\" : this.opts.hostname) +\n port +\n this.opts.path +\n (encodedQuery.length ? \"?\" + encodedQuery : \"\"));\n }\n /**\n * Feature detection for WebSocket.\n *\n * @return {Boolean} whether this transport is available.\n * @api public\n */\n check() {\n return (!!WebSocket &&\n !(\"__initialize\" in WebSocket && this.name === WS.prototype.name));\n }\n}\n","import { Polling } from \"./polling.js\";\nimport { WS } from \"./websocket.js\";\nexport const transports = {\n websocket: WS,\n polling: Polling\n};\n","// imported from https://github.com/galkn/parseuri\n/**\n * Parses an URI\n *\n * @author Steven Levithan (MIT license)\n * @api private\n */\nconst re = /^(?:(?![^:@]+:[^:@\\/]*@)(http|https|ws|wss):\\/\\/)?((?:(([^:@]*)(?::([^:@]*))?)?@)?((?:[a-f0-9]{0,4}:){2,7}[a-f0-9]{0,4}|[^:\\/?#]*)(?::(\\d*))?)(((\\/(?:[^?#](?![^?#\\/]*\\.[^?#\\/.]+(?:[?#]|$)))*\\/?)?([^?#\\/]*))(?:\\?([^#]*))?(?:#(.*))?)/;\nconst parts = [\n 'source', 'protocol', 'authority', 'userInfo', 'user', 'password', 'host', 'port', 'relative', 'path', 'directory', 'file', 'query', 'anchor'\n];\nexport function parse(str) {\n const src = str, b = str.indexOf('['), e = str.indexOf(']');\n if (b != -1 && e != -1) {\n str = str.substring(0, b) + str.substring(b, e).replace(/:/g, ';') + str.substring(e, str.length);\n }\n let m = re.exec(str || ''), uri = {}, i = 14;\n while (i--) {\n uri[parts[i]] = m[i] || '';\n }\n if (b != -1 && e != -1) {\n uri.source = src;\n uri.host = uri.host.substring(1, uri.host.length - 1).replace(/;/g, ':');\n uri.authority = uri.authority.replace('[', '').replace(']', '').replace(/;/g, ':');\n uri.ipv6uri = true;\n }\n uri.pathNames = pathNames(uri, uri['path']);\n uri.queryKey = queryKey(uri, uri['query']);\n return uri;\n}\nfunction pathNames(obj, path) {\n const regx = /\\/{2,9}/g, names = path.replace(regx, \"/\").split(\"/\");\n if (path.substr(0, 1) == '/' || path.length === 0) {\n names.splice(0, 1);\n }\n if (path.substr(path.length - 1, 1) == '/') {\n names.splice(names.length - 1, 1);\n }\n return names;\n}\nfunction queryKey(uri, query) {\n const data = {};\n query.replace(/(?:^|&)([^&=]*)=?([^&]*)/g, function ($0, $1, $2) {\n if ($1) {\n data[$1] = $2;\n }\n });\n return data;\n}\n","import { transports } from \"./transports/index.js\";\nimport { installTimerFunctions, byteLength } from \"./util.js\";\nimport { decode } from \"./contrib/parseqs.js\";\nimport { parse } from \"./contrib/parseuri.js\";\nimport { Emitter } from \"@socket.io/component-emitter\";\nimport { protocol } from \"engine.io-parser\";\nexport class Socket extends Emitter {\n /**\n * Socket constructor.\n *\n * @param {String|Object} uri or options\n * @param {Object} opts - options\n * @api public\n */\n constructor(uri, opts = {}) {\n super();\n if (uri && \"object\" === typeof uri) {\n opts = uri;\n uri = null;\n }\n if (uri) {\n uri = parse(uri);\n opts.hostname = uri.host;\n opts.secure = uri.protocol === \"https\" || uri.protocol === \"wss\";\n opts.port = uri.port;\n if (uri.query)\n opts.query = uri.query;\n }\n else if (opts.host) {\n opts.hostname = parse(opts.host).host;\n }\n installTimerFunctions(this, opts);\n this.secure =\n null != opts.secure\n ? opts.secure\n : typeof location !== \"undefined\" && \"https:\" === location.protocol;\n if (opts.hostname && !opts.port) {\n // if no port is specified manually, use the protocol default\n opts.port = this.secure ? \"443\" : \"80\";\n }\n this.hostname =\n opts.hostname ||\n (typeof location !== \"undefined\" ? location.hostname : \"localhost\");\n this.port =\n opts.port ||\n (typeof location !== \"undefined\" && location.port\n ? location.port\n : this.secure\n ? \"443\"\n : \"80\");\n this.transports = opts.transports || [\"polling\", \"websocket\"];\n this.readyState = \"\";\n this.writeBuffer = [];\n this.prevBufferLen = 0;\n this.opts = Object.assign({\n path: \"/engine.io\",\n agent: false,\n withCredentials: false,\n upgrade: true,\n timestampParam: \"t\",\n rememberUpgrade: false,\n rejectUnauthorized: true,\n perMessageDeflate: {\n threshold: 1024\n },\n transportOptions: {},\n closeOnBeforeunload: true\n }, opts);\n this.opts.path = this.opts.path.replace(/\\/$/, \"\") + \"/\";\n if (typeof this.opts.query === \"string\") {\n this.opts.query = decode(this.opts.query);\n }\n // set on handshake\n this.id = null;\n this.upgrades = null;\n this.pingInterval = null;\n this.pingTimeout = null;\n // set on heartbeat\n this.pingTimeoutTimer = null;\n if (typeof addEventListener === \"function\") {\n if (this.opts.closeOnBeforeunload) {\n // Firefox closes the connection when the \"beforeunload\" event is emitted but not Chrome. This event listener\n // ensures every browser behaves the same (no \"disconnect\" event at the Socket.IO level when the page is\n // closed/reloaded)\n addEventListener(\"beforeunload\", () => {\n if (this.transport) {\n // silently close the transport\n this.transport.removeAllListeners();\n this.transport.close();\n }\n }, false);\n }\n if (this.hostname !== \"localhost\") {\n this.offlineEventListener = () => {\n this.onClose(\"transport close\", {\n description: \"network connection lost\"\n });\n };\n addEventListener(\"offline\", this.offlineEventListener, false);\n }\n }\n this.open();\n }\n /**\n * Creates transport of the given type.\n *\n * @param {String} transport name\n * @return {Transport}\n * @api private\n */\n createTransport(name) {\n const query = Object.assign({}, this.opts.query);\n // append engine.io protocol identifier\n query.EIO = protocol;\n // transport name\n query.transport = name;\n // session id if we already have one\n if (this.id)\n query.sid = this.id;\n const opts = Object.assign({}, this.opts.transportOptions[name], this.opts, {\n query,\n socket: this,\n hostname: this.hostname,\n secure: this.secure,\n port: this.port\n });\n return new transports[name](opts);\n }\n /**\n * Initializes transport to use and starts probe.\n *\n * @api private\n */\n open() {\n let transport;\n if (this.opts.rememberUpgrade &&\n Socket.priorWebsocketSuccess &&\n this.transports.indexOf(\"websocket\") !== -1) {\n transport = \"websocket\";\n }\n else if (0 === this.transports.length) {\n // Emit error on next tick so it can be listened to\n this.setTimeoutFn(() => {\n this.emitReserved(\"error\", \"No transports available\");\n }, 0);\n return;\n }\n else {\n transport = this.transports[0];\n }\n this.readyState = \"opening\";\n // Retry with the next transport if the transport is disabled (jsonp: false)\n try {\n transport = this.createTransport(transport);\n }\n catch (e) {\n this.transports.shift();\n this.open();\n return;\n }\n transport.open();\n this.setTransport(transport);\n }\n /**\n * Sets the current transport. Disables the existing one (if any).\n *\n * @api private\n */\n setTransport(transport) {\n if (this.transport) {\n this.transport.removeAllListeners();\n }\n // set up transport\n this.transport = transport;\n // set up transport listeners\n transport\n .on(\"drain\", this.onDrain.bind(this))\n .on(\"packet\", this.onPacket.bind(this))\n .on(\"error\", this.onError.bind(this))\n .on(\"close\", reason => this.onClose(\"transport close\", reason));\n }\n /**\n * Probes a transport.\n *\n * @param {String} transport name\n * @api private\n */\n probe(name) {\n let transport = this.createTransport(name);\n let failed = false;\n Socket.priorWebsocketSuccess = false;\n const onTransportOpen = () => {\n if (failed)\n return;\n transport.send([{ type: \"ping\", data: \"probe\" }]);\n transport.once(\"packet\", msg => {\n if (failed)\n return;\n if (\"pong\" === msg.type && \"probe\" === msg.data) {\n this.upgrading = true;\n this.emitReserved(\"upgrading\", transport);\n if (!transport)\n return;\n Socket.priorWebsocketSuccess = \"websocket\" === transport.name;\n this.transport.pause(() => {\n if (failed)\n return;\n if (\"closed\" === this.readyState)\n return;\n cleanup();\n this.setTransport(transport);\n transport.send([{ type: \"upgrade\" }]);\n this.emitReserved(\"upgrade\", transport);\n transport = null;\n this.upgrading = false;\n this.flush();\n });\n }\n else {\n const err = new Error(\"probe error\");\n // @ts-ignore\n err.transport = transport.name;\n this.emitReserved(\"upgradeError\", err);\n }\n });\n };\n function freezeTransport() {\n if (failed)\n return;\n // Any callback called by transport should be ignored since now\n failed = true;\n cleanup();\n transport.close();\n transport = null;\n }\n // Handle any error that happens while probing\n const onerror = err => {\n const error = new Error(\"probe error: \" + err);\n // @ts-ignore\n error.transport = transport.name;\n freezeTransport();\n this.emitReserved(\"upgradeError\", error);\n };\n function onTransportClose() {\n onerror(\"transport closed\");\n }\n // When the socket is closed while we're probing\n function onclose() {\n onerror(\"socket closed\");\n }\n // When the socket is upgraded while we're probing\n function onupgrade(to) {\n if (transport && to.name !== transport.name) {\n freezeTransport();\n }\n }\n // Remove all listeners on the transport and on self\n const cleanup = () => {\n transport.removeListener(\"open\", onTransportOpen);\n transport.removeListener(\"error\", onerror);\n transport.removeListener(\"close\", onTransportClose);\n this.off(\"close\", onclose);\n this.off(\"upgrading\", onupgrade);\n };\n transport.once(\"open\", onTransportOpen);\n transport.once(\"error\", onerror);\n transport.once(\"close\", onTransportClose);\n this.once(\"close\", onclose);\n this.once(\"upgrading\", onupgrade);\n transport.open();\n }\n /**\n * Called when connection is deemed open.\n *\n * @api private\n */\n onOpen() {\n this.readyState = \"open\";\n Socket.priorWebsocketSuccess = \"websocket\" === this.transport.name;\n this.emitReserved(\"open\");\n this.flush();\n // we check for `readyState` in case an `open`\n // listener already closed the socket\n if (\"open\" === this.readyState &&\n this.opts.upgrade &&\n this.transport.pause) {\n let i = 0;\n const l = this.upgrades.length;\n for (; i < l; i++) {\n this.probe(this.upgrades[i]);\n }\n }\n }\n /**\n * Handles a packet.\n *\n * @api private\n */\n onPacket(packet) {\n if (\"opening\" === this.readyState ||\n \"open\" === this.readyState ||\n \"closing\" === this.readyState) {\n this.emitReserved(\"packet\", packet);\n // Socket is live - any packet counts\n this.emitReserved(\"heartbeat\");\n switch (packet.type) {\n case \"open\":\n this.onHandshake(JSON.parse(packet.data));\n break;\n case \"ping\":\n this.resetPingTimeout();\n this.sendPacket(\"pong\");\n this.emitReserved(\"ping\");\n this.emitReserved(\"pong\");\n break;\n case \"error\":\n const err = new Error(\"server error\");\n // @ts-ignore\n err.code = packet.data;\n this.onError(err);\n break;\n case \"message\":\n this.emitReserved(\"data\", packet.data);\n this.emitReserved(\"message\", packet.data);\n break;\n }\n }\n else {\n }\n }\n /**\n * Called upon handshake completion.\n *\n * @param {Object} data - handshake obj\n * @api private\n */\n onHandshake(data) {\n this.emitReserved(\"handshake\", data);\n this.id = data.sid;\n this.transport.query.sid = data.sid;\n this.upgrades = this.filterUpgrades(data.upgrades);\n this.pingInterval = data.pingInterval;\n this.pingTimeout = data.pingTimeout;\n this.maxPayload = data.maxPayload;\n this.onOpen();\n // In case open handler closes socket\n if (\"closed\" === this.readyState)\n return;\n this.resetPingTimeout();\n }\n /**\n * Sets and resets ping timeout timer based on server pings.\n *\n * @api private\n */\n resetPingTimeout() {\n this.clearTimeoutFn(this.pingTimeoutTimer);\n this.pingTimeoutTimer = this.setTimeoutFn(() => {\n this.onClose(\"ping timeout\");\n }, this.pingInterval + this.pingTimeout);\n if (this.opts.autoUnref) {\n this.pingTimeoutTimer.unref();\n }\n }\n /**\n * Called on `drain` event\n *\n * @api private\n */\n onDrain() {\n this.writeBuffer.splice(0, this.prevBufferLen);\n // setting prevBufferLen = 0 is very important\n // for example, when upgrading, upgrade packet is sent over,\n // and a nonzero prevBufferLen could cause problems on `drain`\n this.prevBufferLen = 0;\n if (0 === this.writeBuffer.length) {\n this.emitReserved(\"drain\");\n }\n else {\n this.flush();\n }\n }\n /**\n * Flush write buffers.\n *\n * @api private\n */\n flush() {\n if (\"closed\" !== this.readyState &&\n this.transport.writable &&\n !this.upgrading &&\n this.writeBuffer.length) {\n const packets = this.getWritablePackets();\n this.transport.send(packets);\n // keep track of current length of writeBuffer\n // splice writeBuffer and callbackBuffer on `drain`\n this.prevBufferLen = packets.length;\n this.emitReserved(\"flush\");\n }\n }\n /**\n * Ensure the encoded size of the writeBuffer is below the maxPayload value sent by the server (only for HTTP\n * long-polling)\n *\n * @private\n */\n getWritablePackets() {\n const shouldCheckPayloadSize = this.maxPayload &&\n this.transport.name === \"polling\" &&\n this.writeBuffer.length > 1;\n if (!shouldCheckPayloadSize) {\n return this.writeBuffer;\n }\n let payloadSize = 1; // first packet type\n for (let i = 0; i < this.writeBuffer.length; i++) {\n const data = this.writeBuffer[i].data;\n if (data) {\n payloadSize += byteLength(data);\n }\n if (i > 0 && payloadSize > this.maxPayload) {\n return this.writeBuffer.slice(0, i);\n }\n payloadSize += 2; // separator + packet type\n }\n return this.writeBuffer;\n }\n /**\n * Sends a message.\n *\n * @param {String} message.\n * @param {Function} callback function.\n * @param {Object} options.\n * @return {Socket} for chaining.\n * @api public\n */\n write(msg, options, fn) {\n this.sendPacket(\"message\", msg, options, fn);\n return this;\n }\n send(msg, options, fn) {\n this.sendPacket(\"message\", msg, options, fn);\n return this;\n }\n /**\n * Sends a packet.\n *\n * @param {String} packet type.\n * @param {String} data.\n * @param {Object} options.\n * @param {Function} callback function.\n * @api private\n */\n sendPacket(type, data, options, fn) {\n if (\"function\" === typeof data) {\n fn = data;\n data = undefined;\n }\n if (\"function\" === typeof options) {\n fn = options;\n options = null;\n }\n if (\"closing\" === this.readyState || \"closed\" === this.readyState) {\n return;\n }\n options = options || {};\n options.compress = false !== options.compress;\n const packet = {\n type: type,\n data: data,\n options: options\n };\n this.emitReserved(\"packetCreate\", packet);\n this.writeBuffer.push(packet);\n if (fn)\n this.once(\"flush\", fn);\n this.flush();\n }\n /**\n * Closes the connection.\n *\n * @api public\n */\n close() {\n const close = () => {\n this.onClose(\"forced close\");\n this.transport.close();\n };\n const cleanupAndClose = () => {\n this.off(\"upgrade\", cleanupAndClose);\n this.off(\"upgradeError\", cleanupAndClose);\n close();\n };\n const waitForUpgrade = () => {\n // wait for upgrade to finish since we can't send packets while pausing a transport\n this.once(\"upgrade\", cleanupAndClose);\n this.once(\"upgradeError\", cleanupAndClose);\n };\n if (\"opening\" === this.readyState || \"open\" === this.readyState) {\n this.readyState = \"closing\";\n if (this.writeBuffer.length) {\n this.once(\"drain\", () => {\n if (this.upgrading) {\n waitForUpgrade();\n }\n else {\n close();\n }\n });\n }\n else if (this.upgrading) {\n waitForUpgrade();\n }\n else {\n close();\n }\n }\n return this;\n }\n /**\n * Called upon transport error\n *\n * @api private\n */\n onError(err) {\n Socket.priorWebsocketSuccess = false;\n this.emitReserved(\"error\", err);\n this.onClose(\"transport error\", err);\n }\n /**\n * Called upon transport close.\n *\n * @api private\n */\n onClose(reason, description) {\n if (\"opening\" === this.readyState ||\n \"open\" === this.readyState ||\n \"closing\" === this.readyState) {\n // clear timers\n this.clearTimeoutFn(this.pingTimeoutTimer);\n // stop event from firing again for transport\n this.transport.removeAllListeners(\"close\");\n // ensure transport won't stay open\n this.transport.close();\n // ignore further transport communication\n this.transport.removeAllListeners();\n if (typeof removeEventListener === \"function\") {\n removeEventListener(\"offline\", this.offlineEventListener, false);\n }\n // set ready state\n this.readyState = \"closed\";\n // clear session id\n this.id = null;\n // emit close event\n this.emitReserved(\"close\", reason, description);\n // clean buffers after, so users can still\n // grab the buffers on `close` event\n this.writeBuffer = [];\n this.prevBufferLen = 0;\n }\n }\n /**\n * Filters upgrades, returning only those matching client transports.\n *\n * @param {Array} server upgrades\n * @api private\n *\n */\n filterUpgrades(upgrades) {\n const filteredUpgrades = [];\n let i = 0;\n const j = upgrades.length;\n for (; i < j; i++) {\n if (~this.transports.indexOf(upgrades[i]))\n filteredUpgrades.push(upgrades[i]);\n }\n return filteredUpgrades;\n }\n}\nSocket.protocol = protocol;\n","import { Socket } from \"./socket.js\";\nexport { Socket };\nexport const protocol = Socket.protocol;\nexport { Transport } from \"./transport.js\";\nexport { transports } from \"./transports/index.js\";\nexport { installTimerFunctions } from \"./util.js\";\nexport { parse } from \"./contrib/parseuri.js\";\n","const withNativeArrayBuffer = typeof ArrayBuffer === \"function\";\nconst isView = (obj) => {\n return typeof ArrayBuffer.isView === \"function\"\n ? ArrayBuffer.isView(obj)\n : obj.buffer instanceof ArrayBuffer;\n};\nconst toString = Object.prototype.toString;\nconst withNativeBlob = typeof Blob === \"function\" ||\n (typeof Blob !== \"undefined\" &&\n toString.call(Blob) === \"[object BlobConstructor]\");\nconst withNativeFile = typeof File === \"function\" ||\n (typeof File !== \"undefined\" &&\n toString.call(File) === \"[object FileConstructor]\");\n/**\n * Returns true if obj is a Buffer, an ArrayBuffer, a Blob or a File.\n *\n * @private\n */\nexport function isBinary(obj) {\n return ((withNativeArrayBuffer && (obj instanceof ArrayBuffer || isView(obj))) ||\n (withNativeBlob && obj instanceof Blob) ||\n (withNativeFile && obj instanceof File));\n}\nexport function hasBinary(obj, toJSON) {\n if (!obj || typeof obj !== \"object\") {\n return false;\n }\n if (Array.isArray(obj)) {\n for (let i = 0, l = obj.length; i < l; i++) {\n if (hasBinary(obj[i])) {\n return true;\n }\n }\n return false;\n }\n if (isBinary(obj)) {\n return true;\n }\n if (obj.toJSON &&\n typeof obj.toJSON === \"function\" &&\n arguments.length === 1) {\n return hasBinary(obj.toJSON(), true);\n }\n for (const key in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, key) && hasBinary(obj[key])) {\n return true;\n }\n }\n return false;\n}\n","import { isBinary } from \"./is-binary.js\";\n/**\n * Replaces every Buffer | ArrayBuffer | Blob | File in packet with a numbered placeholder.\n *\n * @param {Object} packet - socket.io event packet\n * @return {Object} with deconstructed packet and list of buffers\n * @public\n */\nexport function deconstructPacket(packet) {\n const buffers = [];\n const packetData = packet.data;\n const pack = packet;\n pack.data = _deconstructPacket(packetData, buffers);\n pack.attachments = buffers.length; // number of binary 'attachments'\n return { packet: pack, buffers: buffers };\n}\nfunction _deconstructPacket(data, buffers) {\n if (!data)\n return data;\n if (isBinary(data)) {\n const placeholder = { _placeholder: true, num: buffers.length };\n buffers.push(data);\n return placeholder;\n }\n else if (Array.isArray(data)) {\n const newData = new Array(data.length);\n for (let i = 0; i < data.length; i++) {\n newData[i] = _deconstructPacket(data[i], buffers);\n }\n return newData;\n }\n else if (typeof data === \"object\" && !(data instanceof Date)) {\n const newData = {};\n for (const key in data) {\n if (Object.prototype.hasOwnProperty.call(data, key)) {\n newData[key] = _deconstructPacket(data[key], buffers);\n }\n }\n return newData;\n }\n return data;\n}\n/**\n * Reconstructs a binary packet from its placeholder packet and buffers\n *\n * @param {Object} packet - event packet with placeholders\n * @param {Array} buffers - binary buffers to put in placeholder positions\n * @return {Object} reconstructed packet\n * @public\n */\nexport function reconstructPacket(packet, buffers) {\n packet.data = _reconstructPacket(packet.data, buffers);\n packet.attachments = undefined; // no longer useful\n return packet;\n}\nfunction _reconstructPacket(data, buffers) {\n if (!data)\n return data;\n if (data && data._placeholder) {\n return buffers[data.num]; // appropriate buffer (should be natural order anyway)\n }\n else if (Array.isArray(data)) {\n for (let i = 0; i < data.length; i++) {\n data[i] = _reconstructPacket(data[i], buffers);\n }\n }\n else if (typeof data === \"object\") {\n for (const key in data) {\n if (Object.prototype.hasOwnProperty.call(data, key)) {\n data[key] = _reconstructPacket(data[key], buffers);\n }\n }\n }\n return data;\n}\n","import { Emitter } from \"@socket.io/component-emitter\";\nimport { deconstructPacket, reconstructPacket } from \"./binary.js\";\nimport { isBinary, hasBinary } from \"./is-binary.js\";\n/**\n * Protocol version.\n *\n * @public\n */\nexport const protocol = 5;\nexport var PacketType;\n(function (PacketType) {\n PacketType[PacketType[\"CONNECT\"] = 0] = \"CONNECT\";\n PacketType[PacketType[\"DISCONNECT\"] = 1] = \"DISCONNECT\";\n PacketType[PacketType[\"EVENT\"] = 2] = \"EVENT\";\n PacketType[PacketType[\"ACK\"] = 3] = \"ACK\";\n PacketType[PacketType[\"CONNECT_ERROR\"] = 4] = \"CONNECT_ERROR\";\n PacketType[PacketType[\"BINARY_EVENT\"] = 5] = \"BINARY_EVENT\";\n PacketType[PacketType[\"BINARY_ACK\"] = 6] = \"BINARY_ACK\";\n})(PacketType || (PacketType = {}));\n/**\n * A socket.io Encoder instance\n */\nexport class Encoder {\n /**\n * Encoder constructor\n *\n * @param {function} replacer - custom replacer to pass down to JSON.parse\n */\n constructor(replacer) {\n this.replacer = replacer;\n }\n /**\n * Encode a packet as a single string if non-binary, or as a\n * buffer sequence, depending on packet type.\n *\n * @param {Object} obj - packet object\n */\n encode(obj) {\n if (obj.type === PacketType.EVENT || obj.type === PacketType.ACK) {\n if (hasBinary(obj)) {\n obj.type =\n obj.type === PacketType.EVENT\n ? PacketType.BINARY_EVENT\n : PacketType.BINARY_ACK;\n return this.encodeAsBinary(obj);\n }\n }\n return [this.encodeAsString(obj)];\n }\n /**\n * Encode packet as string.\n */\n encodeAsString(obj) {\n // first is type\n let str = \"\" + obj.type;\n // attachments if we have them\n if (obj.type === PacketType.BINARY_EVENT ||\n obj.type === PacketType.BINARY_ACK) {\n str += obj.attachments + \"-\";\n }\n // if we have a namespace other than `/`\n // we append it followed by a comma `,`\n if (obj.nsp && \"/\" !== obj.nsp) {\n str += obj.nsp + \",\";\n }\n // immediately followed by the id\n if (null != obj.id) {\n str += obj.id;\n }\n // json data\n if (null != obj.data) {\n str += JSON.stringify(obj.data, this.replacer);\n }\n return str;\n }\n /**\n * Encode packet as 'buffer sequence' by removing blobs, and\n * deconstructing packet into object with placeholders and\n * a list of buffers.\n */\n encodeAsBinary(obj) {\n const deconstruction = deconstructPacket(obj);\n const pack = this.encodeAsString(deconstruction.packet);\n const buffers = deconstruction.buffers;\n buffers.unshift(pack); // add packet info to beginning of data list\n return buffers; // write all the buffers\n }\n}\n/**\n * A socket.io Decoder instance\n *\n * @return {Object} decoder\n */\nexport class Decoder extends Emitter {\n /**\n * Decoder constructor\n *\n * @param {function} reviver - custom reviver to pass down to JSON.stringify\n */\n constructor(reviver) {\n super();\n this.reviver = reviver;\n }\n /**\n * Decodes an encoded packet string into packet JSON.\n *\n * @param {String} obj - encoded packet\n */\n add(obj) {\n let packet;\n if (typeof obj === \"string\") {\n packet = this.decodeString(obj);\n if (packet.type === PacketType.BINARY_EVENT ||\n packet.type === PacketType.BINARY_ACK) {\n // binary packet's json\n this.reconstructor = new BinaryReconstructor(packet);\n // no attachments, labeled binary but no binary data to follow\n if (packet.attachments === 0) {\n super.emitReserved(\"decoded\", packet);\n }\n }\n else {\n // non-binary full packet\n super.emitReserved(\"decoded\", packet);\n }\n }\n else if (isBinary(obj) || obj.base64) {\n // raw binary data\n if (!this.reconstructor) {\n throw new Error(\"got binary data when not reconstructing a packet\");\n }\n else {\n packet = this.reconstructor.takeBinaryData(obj);\n if (packet) {\n // received final buffer\n this.reconstructor = null;\n super.emitReserved(\"decoded\", packet);\n }\n }\n }\n else {\n throw new Error(\"Unknown type: \" + obj);\n }\n }\n /**\n * Decode a packet String (JSON data)\n *\n * @param {String} str\n * @return {Object} packet\n */\n decodeString(str) {\n let i = 0;\n // look up type\n const p = {\n type: Number(str.charAt(0)),\n };\n if (PacketType[p.type] === undefined) {\n throw new Error(\"unknown packet type \" + p.type);\n }\n // look up attachments if type binary\n if (p.type === PacketType.BINARY_EVENT ||\n p.type === PacketType.BINARY_ACK) {\n const start = i + 1;\n while (str.charAt(++i) !== \"-\" && i != str.length) { }\n const buf = str.substring(start, i);\n if (buf != Number(buf) || str.charAt(i) !== \"-\") {\n throw new Error(\"Illegal attachments\");\n }\n p.attachments = Number(buf);\n }\n // look up namespace (if any)\n if (\"/\" === str.charAt(i + 1)) {\n const start = i + 1;\n while (++i) {\n const c = str.charAt(i);\n if (\",\" === c)\n break;\n if (i === str.length)\n break;\n }\n p.nsp = str.substring(start, i);\n }\n else {\n p.nsp = \"/\";\n }\n // look up id\n const next = str.charAt(i + 1);\n if (\"\" !== next && Number(next) == next) {\n const start = i + 1;\n while (++i) {\n const c = str.charAt(i);\n if (null == c || Number(c) != c) {\n --i;\n break;\n }\n if (i === str.length)\n break;\n }\n p.id = Number(str.substring(start, i + 1));\n }\n // look up json data\n if (str.charAt(++i)) {\n const payload = this.tryParse(str.substr(i));\n if (Decoder.isPayloadValid(p.type, payload)) {\n p.data = payload;\n }\n else {\n throw new Error(\"invalid payload\");\n }\n }\n return p;\n }\n tryParse(str) {\n try {\n return JSON.parse(str, this.reviver);\n }\n catch (e) {\n return false;\n }\n }\n static isPayloadValid(type, payload) {\n switch (type) {\n case PacketType.CONNECT:\n return typeof payload === \"object\";\n case PacketType.DISCONNECT:\n return payload === undefined;\n case PacketType.CONNECT_ERROR:\n return typeof payload === \"string\" || typeof payload === \"object\";\n case PacketType.EVENT:\n case PacketType.BINARY_EVENT:\n return Array.isArray(payload) && payload.length > 0;\n case PacketType.ACK:\n case PacketType.BINARY_ACK:\n return Array.isArray(payload);\n }\n }\n /**\n * Deallocates a parser's resources\n */\n destroy() {\n if (this.reconstructor) {\n this.reconstructor.finishedReconstruction();\n }\n }\n}\n/**\n * A manager of a binary event's 'buffer sequence'. Should\n * be constructed whenever a packet of type BINARY_EVENT is\n * decoded.\n *\n * @param {Object} packet\n * @return {BinaryReconstructor} initialized reconstructor\n */\nclass BinaryReconstructor {\n constructor(packet) {\n this.packet = packet;\n this.buffers = [];\n this.reconPack = packet;\n }\n /**\n * Method to be called when binary data received from connection\n * after a BINARY_EVENT packet.\n *\n * @param {Buffer | ArrayBuffer} binData - the raw binary data received\n * @return {null | Object} returns null if more binary data is expected or\n * a reconstructed packet object if all buffers have been received.\n */\n takeBinaryData(binData) {\n this.buffers.push(binData);\n if (this.buffers.length === this.reconPack.attachments) {\n // done with buffer list\n const packet = reconstructPacket(this.reconPack, this.buffers);\n this.finishedReconstruction();\n return packet;\n }\n return null;\n }\n /**\n * Cleans up binary packet reconstruction variables.\n */\n finishedReconstruction() {\n this.reconPack = null;\n this.buffers = [];\n }\n}\n","export function on(obj, ev, fn) {\n obj.on(ev, fn);\n return function subDestroy() {\n obj.off(ev, fn);\n };\n}\n","import { PacketType } from \"socket.io-parser\";\nimport { on } from \"./on.js\";\nimport { Emitter, } from \"@socket.io/component-emitter\";\n/**\n * Internal events.\n * These events can't be emitted by the user.\n */\nconst RESERVED_EVENTS = Object.freeze({\n connect: 1,\n connect_error: 1,\n disconnect: 1,\n disconnecting: 1,\n // EventEmitter reserved events: https://nodejs.org/api/events.html#events_event_newlistener\n newListener: 1,\n removeListener: 1,\n});\nexport class Socket extends Emitter {\n /**\n * `Socket` constructor.\n *\n * @public\n */\n constructor(io, nsp, opts) {\n super();\n this.connected = false;\n this.receiveBuffer = [];\n this.sendBuffer = [];\n this.ids = 0;\n this.acks = {};\n this.flags = {};\n this.io = io;\n this.nsp = nsp;\n if (opts && opts.auth) {\n this.auth = opts.auth;\n }\n if (this.io._autoConnect)\n this.open();\n }\n /**\n * Whether the socket is currently disconnected\n */\n get disconnected() {\n return !this.connected;\n }\n /**\n * Subscribe to open, close and packet events\n *\n * @private\n */\n subEvents() {\n if (this.subs)\n return;\n const io = this.io;\n this.subs = [\n on(io, \"open\", this.onopen.bind(this)),\n on(io, \"packet\", this.onpacket.bind(this)),\n on(io, \"error\", this.onerror.bind(this)),\n on(io, \"close\", this.onclose.bind(this)),\n ];\n }\n /**\n * Whether the Socket will try to reconnect when its Manager connects or reconnects\n */\n get active() {\n return !!this.subs;\n }\n /**\n * \"Opens\" the socket.\n *\n * @public\n */\n connect() {\n if (this.connected)\n return this;\n this.subEvents();\n if (!this.io[\"_reconnecting\"])\n this.io.open(); // ensure open\n if (\"open\" === this.io._readyState)\n this.onopen();\n return this;\n }\n /**\n * Alias for connect()\n */\n open() {\n return this.connect();\n }\n /**\n * Sends a `message` event.\n *\n * @return self\n * @public\n */\n send(...args) {\n args.unshift(\"message\");\n this.emit.apply(this, args);\n return this;\n }\n /**\n * Override `emit`.\n * If the event is in `events`, it's emitted normally.\n *\n * @return self\n * @public\n */\n emit(ev, ...args) {\n if (RESERVED_EVENTS.hasOwnProperty(ev)) {\n throw new Error('\"' + ev + '\" is a reserved event name');\n }\n args.unshift(ev);\n const packet = {\n type: PacketType.EVENT,\n data: args,\n };\n packet.options = {};\n packet.options.compress = this.flags.compress !== false;\n // event ack callback\n if (\"function\" === typeof args[args.length - 1]) {\n const id = this.ids++;\n const ack = args.pop();\n this._registerAckCallback(id, ack);\n packet.id = id;\n }\n const isTransportWritable = this.io.engine &&\n this.io.engine.transport &&\n this.io.engine.transport.writable;\n const discardPacket = this.flags.volatile && (!isTransportWritable || !this.connected);\n if (discardPacket) {\n }\n else if (this.connected) {\n this.notifyOutgoingListeners(packet);\n this.packet(packet);\n }\n else {\n this.sendBuffer.push(packet);\n }\n this.flags = {};\n return this;\n }\n /**\n * @private\n */\n _registerAckCallback(id, ack) {\n const timeout = this.flags.timeout;\n if (timeout === undefined) {\n this.acks[id] = ack;\n return;\n }\n // @ts-ignore\n const timer = this.io.setTimeoutFn(() => {\n delete this.acks[id];\n for (let i = 0; i < this.sendBuffer.length; i++) {\n if (this.sendBuffer[i].id === id) {\n this.sendBuffer.splice(i, 1);\n }\n }\n ack.call(this, new Error(\"operation has timed out\"));\n }, timeout);\n this.acks[id] = (...args) => {\n // @ts-ignore\n this.io.clearTimeoutFn(timer);\n ack.apply(this, [null, ...args]);\n };\n }\n /**\n * Sends a packet.\n *\n * @param packet\n * @private\n */\n packet(packet) {\n packet.nsp = this.nsp;\n this.io._packet(packet);\n }\n /**\n * Called upon engine `open`.\n *\n * @private\n */\n onopen() {\n if (typeof this.auth == \"function\") {\n this.auth((data) => {\n this.packet({ type: PacketType.CONNECT, data });\n });\n }\n else {\n this.packet({ type: PacketType.CONNECT, data: this.auth });\n }\n }\n /**\n * Called upon engine or manager `error`.\n *\n * @param err\n * @private\n */\n onerror(err) {\n if (!this.connected) {\n this.emitReserved(\"connect_error\", err);\n }\n }\n /**\n * Called upon engine `close`.\n *\n * @param reason\n * @param description\n * @private\n */\n onclose(reason, description) {\n this.connected = false;\n delete this.id;\n this.emitReserved(\"disconnect\", reason, description);\n }\n /**\n * Called with socket packet.\n *\n * @param packet\n * @private\n */\n onpacket(packet) {\n const sameNamespace = packet.nsp === this.nsp;\n if (!sameNamespace)\n return;\n switch (packet.type) {\n case PacketType.CONNECT:\n if (packet.data && packet.data.sid) {\n const id = packet.data.sid;\n this.onconnect(id);\n }\n else {\n this.emitReserved(\"connect_error\", new Error(\"It seems you are trying to reach a Socket.IO server in v2.x with a v3.x client, but they are not compatible (more information here: https://socket.io/docs/v3/migrating-from-2-x-to-3-0/)\"));\n }\n break;\n case PacketType.EVENT:\n case PacketType.BINARY_EVENT:\n this.onevent(packet);\n break;\n case PacketType.ACK:\n case PacketType.BINARY_ACK:\n this.onack(packet);\n break;\n case PacketType.DISCONNECT:\n this.ondisconnect();\n break;\n case PacketType.CONNECT_ERROR:\n this.destroy();\n const err = new Error(packet.data.message);\n // @ts-ignore\n err.data = packet.data.data;\n this.emitReserved(\"connect_error\", err);\n break;\n }\n }\n /**\n * Called upon a server event.\n *\n * @param packet\n * @private\n */\n onevent(packet) {\n const args = packet.data || [];\n if (null != packet.id) {\n args.push(this.ack(packet.id));\n }\n if (this.connected) {\n this.emitEvent(args);\n }\n else {\n this.receiveBuffer.push(Object.freeze(args));\n }\n }\n emitEvent(args) {\n if (this._anyListeners && this._anyListeners.length) {\n const listeners = this._anyListeners.slice();\n for (const listener of listeners) {\n listener.apply(this, args);\n }\n }\n super.emit.apply(this, args);\n }\n /**\n * Produces an ack callback to emit with an event.\n *\n * @private\n */\n ack(id) {\n const self = this;\n let sent = false;\n return function (...args) {\n // prevent double callbacks\n if (sent)\n return;\n sent = true;\n self.packet({\n type: PacketType.ACK,\n id: id,\n data: args,\n });\n };\n }\n /**\n * Called upon a server acknowlegement.\n *\n * @param packet\n * @private\n */\n onack(packet) {\n const ack = this.acks[packet.id];\n if (\"function\" === typeof ack) {\n ack.apply(this, packet.data);\n delete this.acks[packet.id];\n }\n else {\n }\n }\n /**\n * Called upon server connect.\n *\n * @private\n */\n onconnect(id) {\n this.id = id;\n this.connected = true;\n this.emitBuffered();\n this.emitReserved(\"connect\");\n }\n /**\n * Emit buffered events (received and emitted).\n *\n * @private\n */\n emitBuffered() {\n this.receiveBuffer.forEach((args) => this.emitEvent(args));\n this.receiveBuffer = [];\n this.sendBuffer.forEach((packet) => {\n this.notifyOutgoingListeners(packet);\n this.packet(packet);\n });\n this.sendBuffer = [];\n }\n /**\n * Called upon server disconnect.\n *\n * @private\n */\n ondisconnect() {\n this.destroy();\n this.onclose(\"io server disconnect\");\n }\n /**\n * Called upon forced client/server side disconnections,\n * this method ensures the manager stops tracking us and\n * that reconnections don't get triggered for this.\n *\n * @private\n */\n destroy() {\n if (this.subs) {\n // clean subscriptions to avoid reconnections\n this.subs.forEach((subDestroy) => subDestroy());\n this.subs = undefined;\n }\n this.io[\"_destroy\"](this);\n }\n /**\n * Disconnects the socket manually.\n *\n * @return self\n * @public\n */\n disconnect() {\n if (this.connected) {\n this.packet({ type: PacketType.DISCONNECT });\n }\n // remove socket from pool\n this.destroy();\n if (this.connected) {\n // fire events\n this.onclose(\"io client disconnect\");\n }\n return this;\n }\n /**\n * Alias for disconnect()\n *\n * @return self\n * @public\n */\n close() {\n return this.disconnect();\n }\n /**\n * Sets the compress flag.\n *\n * @param compress - if `true`, compresses the sending data\n * @return self\n * @public\n */\n compress(compress) {\n this.flags.compress = compress;\n return this;\n }\n /**\n * Sets a modifier for a subsequent event emission that the event message will be dropped when this socket is not\n * ready to send messages.\n *\n * @returns self\n * @public\n */\n get volatile() {\n this.flags.volatile = true;\n return this;\n }\n /**\n * Sets a modifier for a subsequent event emission that the callback will be called with an error when the\n * given number of milliseconds have elapsed without an acknowledgement from the server:\n *\n * ```\n * socket.timeout(5000).emit(\"my-event\", (err) => {\n * if (err) {\n * // the server did not acknowledge the event in the given delay\n * }\n * });\n * ```\n *\n * @returns self\n * @public\n */\n timeout(timeout) {\n this.flags.timeout = timeout;\n return this;\n }\n /**\n * Adds a listener that will be fired when any event is emitted. The event name is passed as the first argument to the\n * callback.\n *\n * @param listener\n * @public\n */\n onAny(listener) {\n this._anyListeners = this._anyListeners || [];\n this._anyListeners.push(listener);\n return this;\n }\n /**\n * Adds a listener that will be fired when any event is emitted. The event name is passed as the first argument to the\n * callback. The listener is added to the beginning of the listeners array.\n *\n * @param listener\n * @public\n */\n prependAny(listener) {\n this._anyListeners = this._anyListeners || [];\n this._anyListeners.unshift(listener);\n return this;\n }\n /**\n * Removes the listener that will be fired when any event is emitted.\n *\n * @param listener\n * @public\n */\n offAny(listener) {\n if (!this._anyListeners) {\n return this;\n }\n if (listener) {\n const listeners = this._anyListeners;\n for (let i = 0; i < listeners.length; i++) {\n if (listener === listeners[i]) {\n listeners.splice(i, 1);\n return this;\n }\n }\n }\n else {\n this._anyListeners = [];\n }\n return this;\n }\n /**\n * Returns an array of listeners that are listening for any event that is specified. This array can be manipulated,\n * e.g. to remove listeners.\n *\n * @public\n */\n listenersAny() {\n return this._anyListeners || [];\n }\n /**\n * Adds a listener that will be fired when any event is emitted. The event name is passed as the first argument to the\n * callback.\n *\n * @param listener\n *\n *
\n     *\n     * socket.onAnyOutgoing((event, ...args) => {\n     *   console.log(event);\n     * });\n     *\n     * 
\n *\n * @public\n */\n onAnyOutgoing(listener) {\n this._anyOutgoingListeners = this._anyOutgoingListeners || [];\n this._anyOutgoingListeners.push(listener);\n return this;\n }\n /**\n * Adds a listener that will be fired when any event is emitted. The event name is passed as the first argument to the\n * callback. The listener is added to the beginning of the listeners array.\n *\n * @param listener\n *\n *
\n     *\n     * socket.prependAnyOutgoing((event, ...args) => {\n     *   console.log(event);\n     * });\n     *\n     * 
\n *\n * @public\n */\n prependAnyOutgoing(listener) {\n this._anyOutgoingListeners = this._anyOutgoingListeners || [];\n this._anyOutgoingListeners.unshift(listener);\n return this;\n }\n /**\n * Removes the listener that will be fired when any event is emitted.\n *\n * @param listener\n *\n *
\n     *\n     * const handler = (event, ...args) => {\n     *   console.log(event);\n     * }\n     *\n     * socket.onAnyOutgoing(handler);\n     *\n     * // then later\n     * socket.offAnyOutgoing(handler);\n     *\n     * 
\n *\n * @public\n */\n offAnyOutgoing(listener) {\n if (!this._anyOutgoingListeners) {\n return this;\n }\n if (listener) {\n const listeners = this._anyOutgoingListeners;\n for (let i = 0; i < listeners.length; i++) {\n if (listener === listeners[i]) {\n listeners.splice(i, 1);\n return this;\n }\n }\n }\n else {\n this._anyOutgoingListeners = [];\n }\n return this;\n }\n /**\n * Returns an array of listeners that are listening for any event that is specified. This array can be manipulated,\n * e.g. to remove listeners.\n *\n * @public\n */\n listenersAnyOutgoing() {\n return this._anyOutgoingListeners || [];\n }\n /**\n * Notify the listeners for each packet sent\n *\n * @param packet\n *\n * @private\n */\n notifyOutgoingListeners(packet) {\n if (this._anyOutgoingListeners && this._anyOutgoingListeners.length) {\n const listeners = this._anyOutgoingListeners.slice();\n for (const listener of listeners) {\n listener.apply(this, packet.data);\n }\n }\n }\n}\n","/**\n * Initialize backoff timer with `opts`.\n *\n * - `min` initial timeout in milliseconds [100]\n * - `max` max timeout [10000]\n * - `jitter` [0]\n * - `factor` [2]\n *\n * @param {Object} opts\n * @api public\n */\nexport function Backoff(opts) {\n opts = opts || {};\n this.ms = opts.min || 100;\n this.max = opts.max || 10000;\n this.factor = opts.factor || 2;\n this.jitter = opts.jitter > 0 && opts.jitter <= 1 ? opts.jitter : 0;\n this.attempts = 0;\n}\n/**\n * Return the backoff duration.\n *\n * @return {Number}\n * @api public\n */\nBackoff.prototype.duration = function () {\n var ms = this.ms * Math.pow(this.factor, this.attempts++);\n if (this.jitter) {\n var rand = Math.random();\n var deviation = Math.floor(rand * this.jitter * ms);\n ms = (Math.floor(rand * 10) & 1) == 0 ? ms - deviation : ms + deviation;\n }\n return Math.min(ms, this.max) | 0;\n};\n/**\n * Reset the number of attempts.\n *\n * @api public\n */\nBackoff.prototype.reset = function () {\n this.attempts = 0;\n};\n/**\n * Set the minimum duration\n *\n * @api public\n */\nBackoff.prototype.setMin = function (min) {\n this.ms = min;\n};\n/**\n * Set the maximum duration\n *\n * @api public\n */\nBackoff.prototype.setMax = function (max) {\n this.max = max;\n};\n/**\n * Set the jitter\n *\n * @api public\n */\nBackoff.prototype.setJitter = function (jitter) {\n this.jitter = jitter;\n};\n","import { Socket as Engine, installTimerFunctions, } from \"engine.io-client\";\nimport { Socket } from \"./socket.js\";\nimport * as parser from \"socket.io-parser\";\nimport { on } from \"./on.js\";\nimport { Backoff } from \"./contrib/backo2.js\";\nimport { Emitter, } from \"@socket.io/component-emitter\";\nexport class Manager extends Emitter {\n constructor(uri, opts) {\n var _a;\n super();\n this.nsps = {};\n this.subs = [];\n if (uri && \"object\" === typeof uri) {\n opts = uri;\n uri = undefined;\n }\n opts = opts || {};\n opts.path = opts.path || \"/socket.io\";\n this.opts = opts;\n installTimerFunctions(this, opts);\n this.reconnection(opts.reconnection !== false);\n this.reconnectionAttempts(opts.reconnectionAttempts || Infinity);\n this.reconnectionDelay(opts.reconnectionDelay || 1000);\n this.reconnectionDelayMax(opts.reconnectionDelayMax || 5000);\n this.randomizationFactor((_a = opts.randomizationFactor) !== null && _a !== void 0 ? _a : 0.5);\n this.backoff = new Backoff({\n min: this.reconnectionDelay(),\n max: this.reconnectionDelayMax(),\n jitter: this.randomizationFactor(),\n });\n this.timeout(null == opts.timeout ? 20000 : opts.timeout);\n this._readyState = \"closed\";\n this.uri = uri;\n const _parser = opts.parser || parser;\n this.encoder = new _parser.Encoder();\n this.decoder = new _parser.Decoder();\n this._autoConnect = opts.autoConnect !== false;\n if (this._autoConnect)\n this.open();\n }\n reconnection(v) {\n if (!arguments.length)\n return this._reconnection;\n this._reconnection = !!v;\n return this;\n }\n reconnectionAttempts(v) {\n if (v === undefined)\n return this._reconnectionAttempts;\n this._reconnectionAttempts = v;\n return this;\n }\n reconnectionDelay(v) {\n var _a;\n if (v === undefined)\n return this._reconnectionDelay;\n this._reconnectionDelay = v;\n (_a = this.backoff) === null || _a === void 0 ? void 0 : _a.setMin(v);\n return this;\n }\n randomizationFactor(v) {\n var _a;\n if (v === undefined)\n return this._randomizationFactor;\n this._randomizationFactor = v;\n (_a = this.backoff) === null || _a === void 0 ? void 0 : _a.setJitter(v);\n return this;\n }\n reconnectionDelayMax(v) {\n var _a;\n if (v === undefined)\n return this._reconnectionDelayMax;\n this._reconnectionDelayMax = v;\n (_a = this.backoff) === null || _a === void 0 ? void 0 : _a.setMax(v);\n return this;\n }\n timeout(v) {\n if (!arguments.length)\n return this._timeout;\n this._timeout = v;\n return this;\n }\n /**\n * Starts trying to reconnect if reconnection is enabled and we have not\n * started reconnecting yet\n *\n * @private\n */\n maybeReconnectOnOpen() {\n // Only try to reconnect if it's the first time we're connecting\n if (!this._reconnecting &&\n this._reconnection &&\n this.backoff.attempts === 0) {\n // keeps reconnection from firing twice for the same reconnection loop\n this.reconnect();\n }\n }\n /**\n * Sets the current transport `socket`.\n *\n * @param {Function} fn - optional, callback\n * @return self\n * @public\n */\n open(fn) {\n if (~this._readyState.indexOf(\"open\"))\n return this;\n this.engine = new Engine(this.uri, this.opts);\n const socket = this.engine;\n const self = this;\n this._readyState = \"opening\";\n this.skipReconnect = false;\n // emit `open`\n const openSubDestroy = on(socket, \"open\", function () {\n self.onopen();\n fn && fn();\n });\n // emit `error`\n const errorSub = on(socket, \"error\", (err) => {\n self.cleanup();\n self._readyState = \"closed\";\n this.emitReserved(\"error\", err);\n if (fn) {\n fn(err);\n }\n else {\n // Only do this if there is no fn to handle the error\n self.maybeReconnectOnOpen();\n }\n });\n if (false !== this._timeout) {\n const timeout = this._timeout;\n if (timeout === 0) {\n openSubDestroy(); // prevents a race condition with the 'open' event\n }\n // set timer\n const timer = this.setTimeoutFn(() => {\n openSubDestroy();\n socket.close();\n // @ts-ignore\n socket.emit(\"error\", new Error(\"timeout\"));\n }, timeout);\n if (this.opts.autoUnref) {\n timer.unref();\n }\n this.subs.push(function subDestroy() {\n clearTimeout(timer);\n });\n }\n this.subs.push(openSubDestroy);\n this.subs.push(errorSub);\n return this;\n }\n /**\n * Alias for open()\n *\n * @return self\n * @public\n */\n connect(fn) {\n return this.open(fn);\n }\n /**\n * Called upon transport open.\n *\n * @private\n */\n onopen() {\n // clear old subs\n this.cleanup();\n // mark as open\n this._readyState = \"open\";\n this.emitReserved(\"open\");\n // add new subs\n const socket = this.engine;\n this.subs.push(on(socket, \"ping\", this.onping.bind(this)), on(socket, \"data\", this.ondata.bind(this)), on(socket, \"error\", this.onerror.bind(this)), on(socket, \"close\", this.onclose.bind(this)), on(this.decoder, \"decoded\", this.ondecoded.bind(this)));\n }\n /**\n * Called upon a ping.\n *\n * @private\n */\n onping() {\n this.emitReserved(\"ping\");\n }\n /**\n * Called with data.\n *\n * @private\n */\n ondata(data) {\n this.decoder.add(data);\n }\n /**\n * Called when parser fully decodes a packet.\n *\n * @private\n */\n ondecoded(packet) {\n this.emitReserved(\"packet\", packet);\n }\n /**\n * Called upon socket error.\n *\n * @private\n */\n onerror(err) {\n this.emitReserved(\"error\", err);\n }\n /**\n * Creates a new socket for the given `nsp`.\n *\n * @return {Socket}\n * @public\n */\n socket(nsp, opts) {\n let socket = this.nsps[nsp];\n if (!socket) {\n socket = new Socket(this, nsp, opts);\n this.nsps[nsp] = socket;\n }\n return socket;\n }\n /**\n * Called upon a socket close.\n *\n * @param socket\n * @private\n */\n _destroy(socket) {\n const nsps = Object.keys(this.nsps);\n for (const nsp of nsps) {\n const socket = this.nsps[nsp];\n if (socket.active) {\n return;\n }\n }\n this._close();\n }\n /**\n * Writes a packet.\n *\n * @param packet\n * @private\n */\n _packet(packet) {\n const encodedPackets = this.encoder.encode(packet);\n for (let i = 0; i < encodedPackets.length; i++) {\n this.engine.write(encodedPackets[i], packet.options);\n }\n }\n /**\n * Clean up transport subscriptions and packet buffer.\n *\n * @private\n */\n cleanup() {\n this.subs.forEach((subDestroy) => subDestroy());\n this.subs.length = 0;\n this.decoder.destroy();\n }\n /**\n * Close the current socket.\n *\n * @private\n */\n _close() {\n this.skipReconnect = true;\n this._reconnecting = false;\n this.onclose(\"forced close\");\n if (this.engine)\n this.engine.close();\n }\n /**\n * Alias for close()\n *\n * @private\n */\n disconnect() {\n return this._close();\n }\n /**\n * Called upon engine close.\n *\n * @private\n */\n onclose(reason, description) {\n this.cleanup();\n this.backoff.reset();\n this._readyState = \"closed\";\n this.emitReserved(\"close\", reason, description);\n if (this._reconnection && !this.skipReconnect) {\n this.reconnect();\n }\n }\n /**\n * Attempt a reconnection.\n *\n * @private\n */\n reconnect() {\n if (this._reconnecting || this.skipReconnect)\n return this;\n const self = this;\n if (this.backoff.attempts >= this._reconnectionAttempts) {\n this.backoff.reset();\n this.emitReserved(\"reconnect_failed\");\n this._reconnecting = false;\n }\n else {\n const delay = this.backoff.duration();\n this._reconnecting = true;\n const timer = this.setTimeoutFn(() => {\n if (self.skipReconnect)\n return;\n this.emitReserved(\"reconnect_attempt\", self.backoff.attempts);\n // check again for the case socket closed in above events\n if (self.skipReconnect)\n return;\n self.open((err) => {\n if (err) {\n self._reconnecting = false;\n self.reconnect();\n this.emitReserved(\"reconnect_error\", err);\n }\n else {\n self.onreconnect();\n }\n });\n }, delay);\n if (this.opts.autoUnref) {\n timer.unref();\n }\n this.subs.push(function subDestroy() {\n clearTimeout(timer);\n });\n }\n }\n /**\n * Called upon successful reconnect.\n *\n * @private\n */\n onreconnect() {\n const attempt = this.backoff.attempts;\n this._reconnecting = false;\n this.backoff.reset();\n this.emitReserved(\"reconnect\", attempt);\n }\n}\n","import { url } from \"./url.js\";\nimport { Manager } from \"./manager.js\";\nimport { Socket } from \"./socket.js\";\n/**\n * Managers cache.\n */\nconst cache = {};\nfunction lookup(uri, opts) {\n if (typeof uri === \"object\") {\n opts = uri;\n uri = undefined;\n }\n opts = opts || {};\n const parsed = url(uri, opts.path || \"/socket.io\");\n const source = parsed.source;\n const id = parsed.id;\n const path = parsed.path;\n const sameNamespace = cache[id] && path in cache[id][\"nsps\"];\n const newConnection = opts.forceNew ||\n opts[\"force new connection\"] ||\n false === opts.multiplex ||\n sameNamespace;\n let io;\n if (newConnection) {\n io = new Manager(source, opts);\n }\n else {\n if (!cache[id]) {\n cache[id] = new Manager(source, opts);\n }\n io = cache[id];\n }\n if (parsed.query && !opts.query) {\n opts.query = parsed.queryKey;\n }\n return io.socket(parsed.path, opts);\n}\n// so that \"lookup\" can be used both as a function (e.g. `io(...)`) and as a\n// namespace (e.g. `io.connect(...)`), for backward compatibility\nObject.assign(lookup, {\n Manager,\n Socket,\n io: lookup,\n connect: lookup,\n});\n/**\n * Protocol version.\n *\n * @public\n */\nexport { protocol } from \"socket.io-parser\";\n/**\n * Expose constructors for standalone build.\n *\n * @public\n */\nexport { Manager, Socket, lookup as io, lookup as connect, lookup as default, };\n","import { parse } from \"engine.io-client\";\n/**\n * URL parser.\n *\n * @param uri - url\n * @param path - the request path of the connection\n * @param loc - An object meant to mimic window.location.\n * Defaults to window.location.\n * @public\n */\nexport function url(uri, path = \"\", loc) {\n let obj = uri;\n // default to window.location\n loc = loc || (typeof location !== \"undefined\" && location);\n if (null == uri)\n uri = loc.protocol + \"//\" + loc.host;\n // relative path support\n if (typeof uri === \"string\") {\n if (\"/\" === uri.charAt(0)) {\n if (\"/\" === uri.charAt(1)) {\n uri = loc.protocol + uri;\n }\n else {\n uri = loc.host + uri;\n }\n }\n if (!/^(https?|wss?):\\/\\//.test(uri)) {\n if (\"undefined\" !== typeof loc) {\n uri = loc.protocol + \"//\" + uri;\n }\n else {\n uri = \"https://\" + uri;\n }\n }\n // parse\n obj = parse(uri);\n }\n // make sure we treat `localhost:80` and `localhost` equally\n if (!obj.port) {\n if (/^(http|ws)$/.test(obj.protocol)) {\n obj.port = \"80\";\n }\n else if (/^(http|ws)s$/.test(obj.protocol)) {\n obj.port = \"443\";\n }\n }\n obj.path = obj.path || \"/\";\n const ipv6 = obj.host.indexOf(\":\") !== -1;\n const host = ipv6 ? \"[\" + obj.host + \"]\" : obj.host;\n // define unique id\n obj.id = obj.protocol + \"://\" + host + \":\" + obj.port + path;\n // define href\n obj.href =\n obj.protocol +\n \"://\" +\n host +\n (loc && loc.port === obj.port ? \"\" : \":\" + obj.port);\n return obj;\n}\n","import create from \"zustand\"\n\nexport interface ChatMessage extends Record {\n\tid: string\n\tname: string\n\ttimestamp: Date\n\tmessage?: string\n\temote?: string\n\tisMod: boolean\n\tisPrivate?: boolean\n}\n\ninterface ChatStore extends Record {\n\tmessages: ChatMessage[]\n\tonMessage: (message: ChatMessage | ChatMessage[]) => void\n\tclear: () => void\n}\n\nexport const useChatStore = create((set, get) => {\n\treturn {\n\t\tmessages: [],\n\n\t\tonMessage: (message) => {\n\t\t\tconst { messages } = get()\n\n\t\t\tif (Array.isArray(message)) {\n\t\t\t\tset({ messages: [...messages, ...message] })\n\t\t\t} else {\n\t\t\t\tset({ messages: [...messages, message] })\n\t\t\t}\n\t\t},\n\n\t\tclear: () => {\n\t\t\tset({ messages: [] })\n\t\t},\n\t}\n})\n","import io, { Socket } from \"socket.io-client\"\nimport create from \"zustand\"\nimport { BASE_URL } from \"../../constants/constants\"\nimport { GlobalHistory } from \"../../utils/history\"\nimport { ChatMessage, useChatStore } from \"./chatStore\"\nimport { useCommunicationStore } from \"./communicationStore\"\nimport { useErrorStore } from \"./errorStore\"\nimport { useLaserStore } from \"./laserStore\"\nimport { useMediaStore } from \"./mediaStore\"\nimport { useModeratorStore } from \"./moderatorStore\"\nimport { useQuizStore } from \"./quizStore\"\nimport { useSceneStore } from \"./sceneStore\"\nimport { useSensorStore } from \"./sensorStore\"\n\nexport enum IRole {\n\tAdmin = \"admin\",\n\tModerator = \"moderator\",\n\tParticipant = \"participant\",\n\tSupport = \"support\",\n\tSmartphone = \"smartphone\",\n}\n\ninterface SocketEmitter extends Record {\n\tscene: (index: number) => void\n\tchat: (isPrivate: boolean, message?: string, emote?: string) => void\n\tquiz: {\n\t\tonVotes: (votes: number[]) => void\n\t\tshowResults: () => void\n\t}\n\tmedia: {\n\t\tonPlayPause: (isPlaying: boolean) => void\n\t\tsetTime: (time: number) => void\n\t}\n\tlaser: (positions: number[] | undefined) => void\n\tsensor: {\n\t\tonData: (data: number[]) => void\n\t}\n\n\tquit: () => void\n}\n\ninterface SocketStore extends Record {\n\tcommunicationToken: string | undefined\n\n\tsocket: Socket | undefined\n\n\tjoin: (token: string, role: IRole, practinar: string) => void\n\tleave: (redirect?: string) => void\n\temit: SocketEmitter\n}\n\nexport const useSocketStore = create((set, get) => {\n\treturn {\n\t\tcommunicationToken: undefined,\n\t\tsocket: undefined,\n\n\t\tjoin: (token, role, practinar) => {\n\t\t\tconst socket = io(BASE_URL, {\n\t\t\t\ttransports: [\"websocket\"],\n\t\t\t\tquery: { token, role, practinar },\n\t\t\t})\n\t\t\tconsole.log(\"connecting to socket…\")\n\n\t\t\tsocket.on(\"apiError\", ({ message }: Record) => {\n\t\t\t\tconsole.log(\"apiError:\", message)\n\t\t\t\tuseErrorStore.getState().update(new Error(message))\n\t\t\t})\n\n\t\t\tsocket.on(\"scene\", ({ index }: Record) => {\n\t\t\t\tuseSceneStore.setState({ index })\n\n\t\t\t\tuseMediaStore.getState().reset()\n\t\t\t\tuseQuizStore.getState().reset()\n\t\t\t})\n\n\t\t\tsocket.on(\"chat\", (message: ChatMessage | ChatMessage[]) => {\n\t\t\t\tuseChatStore.getState().onMessage(message)\n\t\t\t})\n\n\t\t\tsocket.on(\"quiz\", (data: Record) => {\n\t\t\t\tuseQuizStore.getState().onQuiz(data)\n\t\t\t})\n\n\t\t\tsocket.on(\"media\", (data: Record) => {\n\t\t\t\tuseMediaStore.getState().onMedia(data)\n\t\t\t})\n\n\t\t\tsocket.on(\"laser\", (data: Record) => {\n\t\t\t\tuseLaserStore.getState().onLaser(data)\n\t\t\t})\n\n\t\t\tsocket.on(\"userUpdate\", (data: Record[]) => {\n\t\t\t\tuseModeratorStore.getState().onUsers(data)\n\t\t\t})\n\n\t\t\tsocket.on(\"sensor\", ({ data }: { data: number[] }) => {\n\t\t\t\tuseSensorStore.getState().onSensor(data)\n\t\t\t})\n\n\t\t\tsocket.on(\"connection\", (connected: boolean) => {\n\t\t\t\tuseSensorStore.getState().connect(connected)\n\t\t\t})\n\n\t\t\tsocket.on(\"communication\", ({ data }: Record) => {\n\t\t\t\tuseCommunicationStore\n\t\t\t\t\t.getState()\n\t\t\t\t\t.join(practinar, data.token, role === IRole.Admin)\n\t\t\t})\n\n\t\t\tsocket.on(\"leave\", (data: Record) => {\n\t\t\t\tconsole.log(\"User should leave\", data)\n\t\t\t\tuseSocketStore.getState().leave(data?.redirect)\n\t\t\t})\n\n\t\t\tset({ socket })\n\t\t},\n\n\t\tleave: (redirect) => {\n\t\t\tconst { socket } = get()\n\n\t\t\tif (socket) {\n\t\t\t\tsocket.disconnect()\n\t\t\t}\n\n\t\t\tuseCommunicationStore.getState().leave()\n\n\t\t\tif (redirect) {\n\t\t\t\tGlobalHistory.push(redirect)\n\t\t\t}\n\t\t},\n\n\t\temit: {\n\t\t\tscene: (index) => {\n\t\t\t\tconst { socket } = get()\n\n\t\t\t\tif (socket) {\n\t\t\t\t\tsocket.emit(\"scene\", { index })\n\t\t\t\t}\n\t\t\t},\n\n\t\t\tchat: (isPrivate, message, emote) => {\n\t\t\t\tconst { socket } = get()\n\n\t\t\t\tif (socket) {\n\t\t\t\t\tsocket.emit(\"chat\", { message, emote, isPrivate })\n\t\t\t\t}\n\t\t\t},\n\n\t\t\tquiz: {\n\t\t\t\tonVotes: (votes) => {\n\t\t\t\t\tconst { socket } = get()\n\n\t\t\t\t\tif (socket) {\n\t\t\t\t\t\tsocket.emit(\"quiz\", { votes })\n\t\t\t\t\t}\n\t\t\t\t},\n\n\t\t\t\tshowResults: () => {\n\t\t\t\t\tconst { socket } = get()\n\n\t\t\t\t\tif (socket) {\n\t\t\t\t\t\tsocket.emit(\"quiz\", { showResults: true })\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t},\n\n\t\t\tmedia: {\n\t\t\t\tonPlayPause: (isPlaying) => {\n\t\t\t\t\tconst { socket } = get()\n\n\t\t\t\t\tif (socket) {\n\t\t\t\t\t\tsocket.emit(\"media\", { isPlaying })\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\tsetTime: (time) => {\n\t\t\t\t\tconst { socket } = get()\n\n\t\t\t\t\tif (socket) {\n\t\t\t\t\t\tsocket.emit(\"media\", { time })\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t},\n\n\t\t\tsensor: {\n\t\t\t\tonData: (data) => {\n\t\t\t\t\tconst { socket } = get()\n\n\t\t\t\t\tif (socket) {\n\t\t\t\t\t\tsocket.emit(\"sensor\", { data })\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t},\n\n\t\t\tlaser: (positions) => {\n\t\t\t\tconst { socket } = get()\n\n\t\t\t\tif (socket) {\n\t\t\t\t\tsocket.emit(\"laser\", { positions })\n\t\t\t\t}\n\t\t\t},\n\n\t\t\tquit: () => {\n\t\t\t\tconst { socket } = get()\n\n\t\t\t\tif (socket) {\n\t\t\t\t\tsocket.emit(\"quit\")\n\t\t\t\t}\n\t\t\t},\n\t\t},\n\t}\n})\n","import create from \"zustand\"\n\ninterface LaserStore extends Record {\n\tpositions: number[] | undefined\n\n\tonLaser: (data: Record) => void\n}\n\nexport const useLaserStore = create((set, get) => {\n\treturn {\n\t\tpositions: undefined,\n\n\t\tonLaser: (data) => {\n\t\t\tset({\n\t\t\t\tpositions: data.positions as number[],\n\t\t\t})\n\t\t},\n\n\t\treset: () => {\n\t\t\tset({ positions: undefined })\n\t\t},\n\t}\n})\n","import create from \"zustand\"\n\ninterface MediaStore extends Record {\n\tisPlaying: boolean\n\ttime: number\n\n\tonMedia: (data: Record) => void\n\treset: () => void\n}\n\nexport const useMediaStore = create((set, get) => {\n\treturn {\n\t\tisPlaying: false,\n\t\ttime: 0,\n\n\t\tonMedia: (data) => {\n\t\t\tif (data.isPlaying !== undefined) {\n\t\t\t\tset({\n\t\t\t\t\tisPlaying: data.isPlaying as boolean,\n\t\t\t\t})\n\t\t\t}\n\n\t\t\tif (data.time !== undefined) {\n\t\t\t\tset({\n\t\t\t\t\ttime: data.time as number,\n\t\t\t\t})\n\t\t\t}\n\t\t},\n\n\t\treset: () => {\n\t\t\tset({ isPlaying: false, time: 0 })\n\t\t},\n\t}\n})\n","import create from \"zustand\"\n\ninterface ModeratorStore extends Record {\n\tusers: Record[]\n\n\tonUsers: (data: Record[]) => void\n}\n\nexport const useModeratorStore = create((set, get) => {\n\treturn {\n\t\tusers: [],\n\n\t\tonUsers: (data) => {\n\t\t\tset({ users: data })\n\t\t},\n\t}\n})\n","import create from \"zustand\"\n\ninterface QuizStore extends Record {\n\tvotes: number[]\n\tshowResults: boolean\n\tvoters: number\n\tparticipants: number\n\n\tonQuiz: (data: Record) => void\n\treset: () => void\n}\n\nexport const useQuizStore = create((set, get) => {\n\treturn {\n\t\tvotes: [],\n\t\tshowResults: false,\n\t\tvoters: 0,\n\t\tparticipants: 0,\n\n\t\tonQuiz: (data) => {\n\t\t\tset({\n\t\t\t\tvotes: data.votes as number[],\n\t\t\t\tshowResults: data.showResults as boolean,\n\t\t\t\tvoters: data.voters as number,\n\t\t\t\tparticipants: data.participants as number,\n\t\t\t})\n\t\t},\n\n\t\treset: () => {\n\t\t\tset({\n\t\t\t\tvotes: [],\n\t\t\t\tshowResults: false,\n\t\t\t\tvoters: 0,\n\t\t\t\tparticipants: 0,\n\t\t\t})\n\t\t},\n\t}\n})\n","import create from \"zustand\"\n\ninterface SceneStore extends Record {\n\tindex: number\n}\n\nexport const useSceneStore = create((set, get) => {\n\treturn {\n\t\tindex: 0,\n\t}\n})\n","import { nanoid } from \"nanoid\"\nimport { useEffect, useRef, useState } from \"react\"\nimport AmiView from \"src/components/ami/amiView\"\nimport OptionsSidebar from \"src/components/optionsSidebar/optionsSidebar\"\nimport SegmentedControl from \"src/components/segmentedControl/segmentedControl\"\nimport { HasAuth } from \"../../components/privateRoute/privateRoute\"\nimport { loginWithCode } from \"../../network/auth\"\nimport { IRole, useSocketStore } from \"../../state/stores/socketStore\"\n\nconst Volume = ({ auth }: HasAuth) => {\n\tconst threeDContainer = useRef(null)\n\tconst [code] = useState(`$scan-only-${nanoid(8)}`)\n\tconst [token, setToken] = useState(undefined)\n\tconst [volumeUrl, setVolumeUrl] = useState(undefined)\n\tconst [mirrorLeftRight, setMirrorLeftRight] = useState(false)\n\tconst [mirrorFrontBack, setMirrorFrontBack] = useState(false)\n\n\tconst join = useSocketStore((state) => state.join)\n\n\tuseEffect(() => {\n\t\tconst getToken = async () => {\n\t\t\tconst result = await loginWithCode(code)\n\t\t\tif (result) {\n\t\t\t\tsetToken(result.token)\n\t\t\t}\n\t\t}\n\n\t\tgetToken()\n\t}, [code])\n\n\tuseEffect(() => {\n\t\tif (token !== undefined) {\n\t\t\tjoin(token, IRole.Participant, \"scan-only\")\n\t\t}\n\t}, [join, token])\n\n\tconst zoom = useRef(1)\n\tconst [_zoom, setZoom] = useState(1)\n\n\treturn (\n\t\t\n\t\t\t {\n\t\t\t\t\tsetVolumeUrl(volumeUrl)\n\t\t\t\t\tsetMirrorLeftRight(mirroredLeftRight)\n\t\t\t\t\tsetMirrorFrontBack(mirroredFrontBack)\n\t\t\t\t}}\n\t\t\t/>\n\n\t\t\t
\n\t\t\t\t

Zoom:

\n\n\t\t\t\t {\n\t\t\t\t\t\tzoom.current = value\n\t\t\t\t\t\tsetZoom(value)\n\t\t\t\t\t}}\n\t\t\t\t/>\n\t\t\t
\n\n\t\t\t{volumeUrl && (\n\t\t\t\t\n\t\t\t)}\n\t\t\n\t)\n}\n\nexport default Volume\n","import { Navigate, useLocation } from \"react-router-dom\"\nimport {\n\tAuthData,\n\tauthFromStore,\n\tuseAuthStore,\n} from \"../../state/stores/authStore\"\n\nexport interface HasAuth {\n\tauth: AuthData\n}\n\ninterface PrivateRouteProps {\n\tcomponent: any\n\tisAdmin?: boolean\n}\n\nexport const PrivateRoute = ({\n\tcomponent: RouteComponent,\n\tisAdmin = false,\n}: PrivateRouteProps) => {\n\tlet location = useLocation()\n\n\tconst token = useAuthStore((state) =>\n\t\tisAdmin ? state.adminToken : state.token\n\t)\n\tconst expires = useAuthStore((state) =>\n\t\tisAdmin ? state.adminExpiresIn : state.expiresIn\n\t)\n\n\tconst to = isAdmin ? \"/moderator/login\" : \"/join\"\n\tif (token && expires && expires > new Date().getTime() / 1000) {\n\t\treturn (\n\t\t\t// @ts-ignore\n\t\t\t\n\t\t)\n\t} else {\n\t\treturn \n\t}\n}\n\nexport const AdminRoute = ({\n\tcomponent: RouteComponent,\n\t...params\n}: PrivateRouteProps) => {\n\treturn \n}\n","import { useTranslation } from \"react-i18next\"\n\nconst NotFound = () => {\n\tconst { t } = useTranslation()\n\n\treturn (\n\t\t
\n\t\t\t

{t(\"404\")}

\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\n\t\t\t\t

SonoFun Live!

\n\t\t\t\n\t\t
\n\t)\n}\n\nexport default NotFound\n","var _path, _path2, _path3, _path4;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nfunction SvgResetRotation(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 36,\n height: 34,\n viewBox: \"0 0 36 34\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M10 1C8.89543 1 8 1.89543 8 3V4.26756C8.29417 4.09739 8.63571 4 9 4H27C27.3643 4 27.7058 4.09739 28 4.26756V3C28 1.89543 27.1046 1 26 1H10ZM29 6V3C29 1.34315 27.6569 0 26 0H10C8.34315 0 7 1.34315 7 3V6V10.9582C7.00063 10.9871 7.00063 11.016 7 11.0449V15.6698C7.31715 15.7626 7.65052 15.8526 8 15.939V6C8 5.44772 8.44772 5 9 5H27C27.5523 5 28 5.44772 28 6V15.939C28.3498 15.8525 28.6832 15.7625 29 15.6698V11.0449C28.9994 11.016 28.9994 10.9871 29 10.9582V6ZM8 20.0438C7.65685 19.97 7.32348 19.8927 7 19.8122V25V31C7 32.6569 8.34315 34 10 34H26C27.6569 34 29 32.6569 29 31V25V19.8122C28.6763 19.8927 28.343 19.97 28 20.0438V25C28 25.5523 27.5523 26 27 26H9C8.44772 26 8 25.5523 8 25V20.0438ZM28 26.7324V31C28 32.1046 27.1046 33 26 33H10C8.89543 33 8 32.1046 8 31V26.7324C8.29417 26.9026 8.63571 27 9 27H27C27.3643 27 27.7058 26.9026 28 26.7324ZM20 30C20 31.1046 19.1046 32 18 32C16.8954 32 16 31.1046 16 30C16 28.8954 16.8954 28 18 28C19.1046 28 20 28.8954 20 30ZM18 31C18.5523 31 19 30.5523 19 30C19 29.4477 18.5523 29 18 29C17.4477 29 17 29.4477 17 30C17 30.5523 17.4477 31 18 31Z\",\n fill: \"#0071FF\"\n })), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M31 11C32.3333 11.3333 35 12.4 35 14C35 15.7764 30.2664 18.3418 21.5 18.8931\",\n stroke: \"#0071FF\",\n strokeWidth: 2,\n strokeLinecap: \"round\"\n })), _path3 || (_path3 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M5 11C3.66667 11.3333 1 12.4 1 14C1 16 7 19 18 19\",\n stroke: \"#0071FF\",\n strokeWidth: 2,\n strokeLinecap: \"round\"\n })), _path4 || (_path4 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M14 15L18 19L14 23\",\n stroke: \"#0071FF\",\n strokeWidth: 2,\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n })));\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgResetRotation);\nexport default __webpack_public_path__ + \"static/media/resetRotation.4da677ed46bfe71237b1bda0b0961c49.svg\";\nexport { ForwardRef as ReactComponent };","var __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __rest = (this && this.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport React, { forwardRef, useState, useEffect } from 'react';\nvar warned = false;\nvar Div100vh = forwardRef(function (_a, ref) {\n var style = _a.style, other = __rest(_a, [\"style\"]);\n var height = use100vh();\n // TODO: warn only in development\n if (!warned && (style === null || style === void 0 ? void 0 : style.height)) {\n warned = true;\n console.warn(' overrides the height property of the style prop');\n }\n var styleWithRealHeight = __assign(__assign({}, style), { height: height ? height + \"px\" : '100vh' });\n return React.createElement(\"div\", __assign({ ref: ref, style: styleWithRealHeight }, other));\n});\nDiv100vh.displayName = 'Div100vh';\nexport default Div100vh;\nexport function use100vh() {\n var _a = useState(measureHeight), height = _a[0], setHeight = _a[1];\n var wasRenderedOnClientAtLeastOnce = useWasRenderedOnClientAtLeastOnce();\n useEffect(function () {\n if (!wasRenderedOnClientAtLeastOnce)\n return;\n function setMeasuredHeight() {\n var measuredHeight = measureHeight();\n setHeight(measuredHeight);\n }\n window.addEventListener('resize', setMeasuredHeight);\n return function () { return window.removeEventListener('resize', setMeasuredHeight); };\n }, [wasRenderedOnClientAtLeastOnce]);\n return wasRenderedOnClientAtLeastOnce ? height : null;\n}\nexport function measureHeight() {\n if (!isClient())\n return null;\n return window.innerHeight;\n}\n// Once we ended up on the client, the first render must look the same as on\n// the server so hydration happens without problems. _Then_ we immediately\n// schedule a subsequent update and return the height measured on the client.\n// It's not needed for CSR-only apps, but is critical for SSR.\nfunction useWasRenderedOnClientAtLeastOnce() {\n var _a = useState(false), wasRenderedOnClientAtLeastOnce = _a[0], setWasRenderedOnClientAtLeastOnce = _a[1];\n useEffect(function () {\n if (isClient()) {\n setWasRenderedOnClientAtLeastOnce(true);\n }\n }, []);\n return wasRenderedOnClientAtLeastOnce;\n}\nfunction isClient() {\n return typeof window !== 'undefined' && typeof document !== 'undefined';\n}\n","var _path, _path2, _path3, _path4;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nfunction SvgFullscreen(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 27,\n height: 27,\n viewBox: \"0 0 27 27\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M16 2H25V11\",\n stroke: \"#0071FF\",\n strokeWidth: 3,\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n })), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M25 2L16 11\",\n stroke: \"#0071FF\",\n strokeWidth: 3,\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n })), _path3 || (_path3 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M11 25H2V16\",\n stroke: \"#0071FF\",\n strokeWidth: 3,\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n })), _path4 || (_path4 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M2 25L11 16\",\n stroke: \"#0071FF\",\n strokeWidth: 3,\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n })));\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgFullscreen);\nexport default __webpack_public_path__ + \"static/media/fullscreen.d8b45bbe1dd0b4df591337f04ff0d5e7.svg\";\nexport { ForwardRef as ReactComponent };","var _path, _path2, _path3, _path4;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nfunction SvgFullscreenClose(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 27,\n height: 27,\n viewBox: \"0 0 27 27\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M24 12H15V3\",\n stroke: \"#0071FF\",\n strokeWidth: 3,\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n })), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M15 12L24 3\",\n stroke: \"#0071FF\",\n strokeWidth: 3,\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n })), _path3 || (_path3 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M3 15H12V24\",\n stroke: \"#0071FF\",\n strokeWidth: 3,\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n })), _path4 || (_path4 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M12 15L3 24\",\n stroke: \"#0071FF\",\n strokeWidth: 3,\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n })));\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgFullscreenClose);\nexport default __webpack_public_path__ + \"static/media/fullscreenClose.3f786adbaf0a1e68ce631d5dc036ed7b.svg\";\nexport { ForwardRef as ReactComponent };","import create from \"zustand\"\n\ninterface FullscreenStore extends Record {\n\tcontainer: HTMLDivElement | undefined\n\tsetContainer: (container: HTMLDivElement) => void\n\tisFullscreen: boolean\n\tsetIsFullscreen: (isFullscreen: boolean) => void\n\ttoggle: () => void\n}\n\ndeclare global {\n\tinterface Document {\n\t\tmozCancelFullScreen?: () => Promise\n\t\tmsExitFullscreen?: () => Promise\n\t\twebkitExitFullscreen?: () => Promise\n\t\tmozFullScreenElement?: Element\n\t\tmsFullscreenElement?: Element\n\t\twebkitFullscreenElement?: Element\n\t}\n\n\tinterface HTMLElement {\n\t\tmsRequestFullscreen?: () => Promise\n\t\tmozRequestFullscreen?: () => Promise\n\t\twebkitRequestFullscreen?: () => Promise\n\t}\n}\n\nexport const useFullscreen = create((set, get) => {\n\treturn {\n\t\tcontainer: undefined,\n\t\tsetContainer: (container) => {\n\t\t\tset({ container })\n\t\t},\n\n\t\tisFullscreen: false,\n\t\tsetIsFullscreen: (isFullscreen) => {\n\t\t\tset({ isFullscreen })\n\t\t},\n\n\t\ttoggle: () => {\n\t\t\tconst { container, isFullscreen } = get()\n\n\t\t\tif (container) {\n\t\t\t\tif (isFullscreen) {\n\t\t\t\t\tif (document.exitFullscreen) {\n\t\t\t\t\t\tdocument.exitFullscreen()\n\t\t\t\t\t} else if (document.webkitExitFullscreen) {\n\t\t\t\t\t\tdocument.webkitExitFullscreen()\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tif (container.requestFullscreen) {\n\t\t\t\t\t\tcontainer.requestFullscreen()\n\t\t\t\t\t} else if (container.webkitRequestFullscreen) {\n\t\t\t\t\t\tcontainer.webkitRequestFullscreen()\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t}\n})\n","import Button, { ButtonTheme } from \"src/components/button/button\"\nimport FullscreenOpen from \"../../assets/images/fullscreen.svg\"\nimport FullscreenClose from \"../../assets/images/fullscreenClose.svg\"\nimport { useFullscreen } from \"../../state/stores/fullscreenStore\"\n\nconst FullscreenButton = ({ className }: { className: string }) => {\n\tconst toggle = useFullscreen((state) => state.toggle)\n\tconst isFullscreen = useFullscreen((state) => state.isFullscreen)\n\n\treturn (\n\t\t\n\t\t\t\n\t\t\n\t)\n}\n\nexport default FullscreenButton\n","import { useTranslation } from \"react-i18next\"\nimport Button, { ButtonTheme } from \"src/components/button/button\"\nimport DE from \"../../assets/images/de.png\"\nimport EN from \"../../assets/images/en.png\"\n\nconst LanguageButton = ({ className }: { className?: string }) => {\n\tconst { i18n } = useTranslation()\n\tconst { language } = i18n\n\n\tconst changeLanguage = () => {\n\t\tconst newLanguage = language === \"de\" ? \"en\" : \"de\"\n\t\tlocalStorage.setItem(\"language\", newLanguage)\n\t\ti18n.changeLanguage(newLanguage)\n\t}\n\n\treturn (\n\t\t\n\t\t\t\n\t\t\n\t)\n}\n\nexport default LanguageButton\n","var _rect, _defs;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nfunction SvgSonoFun(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 35,\n height: 34,\n viewBox: \"0 0 35 34\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n xmlnsXlink: \"http://www.w3.org/1999/xlink\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _rect || (_rect = /*#__PURE__*/React.createElement(\"rect\", {\n width: 35,\n height: 34,\n fill: \"url(#pattern0)\"\n })), _defs || (_defs = /*#__PURE__*/React.createElement(\"defs\", null, /*#__PURE__*/React.createElement(\"pattern\", {\n id: \"pattern0\",\n patternContentUnits: \"objectBoundingBox\",\n width: 1,\n height: 1\n }, /*#__PURE__*/React.createElement(\"use\", {\n xlinkHref: \"#image0\",\n transform: \"translate(0 -0.00960978) scale(0.00990099 0.0101922)\"\n })), /*#__PURE__*/React.createElement(\"image\", {\n id: \"image0\",\n width: 101,\n height: 100,\n xlinkHref: \"data:image/png;base64,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\"\n }))));\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgSonoFun);\nexport default __webpack_public_path__ + \"static/media/sonoFun.773eb8e21c2f5c8f27639abd1af12cce.svg\";\nexport { ForwardRef as ReactComponent };","import { useMemo } from \"react\"\nimport useSWR from \"swr\"\nimport Fun from \"../../assets/images/sonoFun.svg\"\nimport { fetchApi } from \"../../network/fetch\"\n\nexport enum LogoVisibility {\n\tTakeda = 0,\n\tMSD = 1,\n\tNoLogo = 2,\n}\n\nconst AdditionalLogo = ({\n\tlogoVisibility,\n\tcolorCode,\n}: {\n\tlogoVisibility: LogoVisibility\n\tcolorCode: string\n}) => {\n\tswitch (logoVisibility) {\n\t\tcase LogoVisibility.Takeda:\n\t\t\treturn (\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t)\n\t\tcase LogoVisibility.MSD:\n\t\t\treturn (\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t)\n\t\tdefault:\n\t\t\treturn <>\n\t}\n}\n\nconst Logos = ({ color = \"grey\" }: { color?: \"grey\" | \"white\" }) => {\n\tconst colorCode = useMemo(\n\t\t() => (color === \"white\" ? \"white\" : \"#87919B\"),\n\t\t[color]\n\t)\n\n\tconst { data } = useSWR(\"/config/\", fetchApi)\n\n\treturn (\n\t\t
\n\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t\t{data !== undefined && data.logoVisibility !== undefined && (\n\t\t\t\t\n\t\t\t)}\n\t\t
\n\t)\n}\n\nexport default Logos\n","import { PropsWithChildren } from \"react\"\nimport FullscreenButton from \"../button/fullscreenButton\"\nimport LanguageButton from \"../button/languageButton\"\nimport Logos from \"../logos/logos\"\n\ninterface HeaderProps {\n\tisMobile?: boolean\n\tlogos?: boolean\n\tshowFullscreen?: boolean\n}\n\nconst Header = ({\n\tisMobile = false,\n\tlogos = true,\n\tshowFullscreen = true,\n\tchildren,\n}: PropsWithChildren) => {\n\tconst title = \"SonoFun Live!\"\n\n\treturn isMobile ? (\n\t\t
\n\t\t\t
\n\t\t\t\tSonoFun Live!\n\t\t\t
\n\t\t\t{children}\n\t\t
\n\t) : (\n\t\t
\n\t\t\t

{title}

\n\t\t\t
\n\t\t\t\t{showFullscreen && }\n\t\t\t\t\n\t\t\t\t{logos && }\n\t\t\t
\n\t\t
\n\t)\n}\n\nexport default Header\n","import { forwardRef } from \"react\"\nimport { use100vh } from \"react-div-100vh\"\nimport Header from \"../header/header\"\n\ninterface BodyProps {\n\tchildren: React.ReactNode\n\tshowHeader?: boolean\n\tpadding?: string\n\tisMobile?: boolean\n\theaderChildren?: React.ReactNode\n\tisFullscreen?: boolean\n\tshowFullscreen?: boolean\n}\n\nconst Body = forwardRef(\n\t(\n\t\t{\n\t\t\tchildren,\n\t\t\tshowHeader = true,\n\t\t\tpadding = \"p-2\",\n\t\t\tisMobile = false,\n\t\t\theaderChildren,\n\t\t\tisFullscreen = false,\n\t\t\tshowFullscreen = true,\n\t\t},\n\t\tref\n\t) => {\n\t\tconst height = use100vh()\n\n\t\treturn isMobile ? (\n\t\t\t//TODO:\n\t\t\t// -webkit-touch-callout: none;\n\t\t\t// -webkit-user-select: none;\n\t\t\t// -webkit-tap-highlight-color: rgba(0, 0, 0, 0);\n\t\t\t\n\t\t\t\t{showHeader &&
{headerChildren}
}\n\t\t\t\t{children}\n\t\t\t\n\t\t) : (\n\t\t\t\n\t\t\t\t{showHeader &&
}\n\t\t\t\t{children}\n\t\t\t\n\t\t)\n\t}\n)\n\nexport default Body\n","import { useCallback, useEffect, useRef, useState } from \"react\"\nimport Draggable from \"react-draggable\"\nimport { useTranslation } from \"react-i18next\"\nimport { useParams } from \"react-router-dom\"\nimport Button, { ButtonTheme } from \"src/components/button/button\"\nimport useSWR from \"swr\"\nimport ResetRotation from \"../../assets/images/resetRotation.svg\"\nimport Body from \"../../components/body/body\"\nimport { HasAuth } from \"../../components/privateRoute/privateRoute\"\nimport { fetchApiAuthorized } from \"../../network/fetch\"\nimport { IRole, useSocketStore } from \"../../state/stores/socketStore\"\nimport { map_numbers } from \"../../utils/math\"\n\nconst MobileSono = ({ auth }: HasAuth) => {\n\tconst { t } = useTranslation()\n\tconst { code } = useParams() as Record\n\n\tconst { data: practinar } = useSWR(\n\t\t[`/webinars/code/${code}`, auth.token, auth.expiresIn],\n\t\tfetchApiAuthorized\n\t)\n\n\tconst { data: user } = useSWR(\n\t\t[\"/users/current\", auth.token, auth.expiresIn],\n\t\tfetchApiAuthorized\n\t)\n\n\t// stores\n\tconst connected = useSocketStore((state) => state.socket?.connected)\n\tconst join = useSocketStore((state) => state.join)\n\tconst send = useSocketStore((state) => state.emit.sensor.onData)\n\n\t// state\n\tconst [hasPermission, setHasPermission] = useState(\n\t\tprocess.env.NODE_ENV === \"development\" ? true : false\n\t)\n\tconst [didDrag, setDidDrag] = useState(false)\n\n\t// refs\n\tconst slider = useRef(null)\n\tconst controller = useRef(null)\n\n\t// data\n\tconst data = useRef({ z: 0, b: 0, g: 0 })\n\tconst offset = useRef({ b: 90, g: 0 })\n\tconst lastData = useRef({ z: 0, b: 0, g: 0 })\n\tconst lastUpdate = useRef()\n\n\tuseEffect(() => {\n\t\tif (auth.token && practinar && practinar.id) {\n\t\t\tjoin(auth.token, IRole.Smartphone, practinar.id)\n\t\t}\n\t}, [auth.token, practinar, join])\n\n\tconst update = useCallback(() => {\n\t\tconst _update = () => {\n\t\t\tconst newData = {\n\t\t\t\tz: data.current.z,\n\t\t\t\tb: data.current.b - offset.current.b,\n\t\t\t\tg: data.current.g - offset.current.g,\n\t\t\t}\n\n\t\t\tlet newDataShouldBeSend = false\n\t\t\tif (lastData.current) {\n\t\t\t\tnewDataShouldBeSend =\n\t\t\t\t\tMath.abs(lastData.current.z - newData.z) > 0.01 ||\n\t\t\t\t\tMath.abs(lastData.current.b - newData.b) > 0.5 ||\n\t\t\t\t\tMath.abs(lastData.current.g - newData.g) > 0.5\n\t\t\t}\n\n\t\t\tif (lastData.current === undefined || newDataShouldBeSend) {\n\t\t\t\tlastData.current = newData\n\n\t\t\t\tsend([\n\t\t\t\t\tnewData.z,\n\t\t\t\t\tMath.round(map_numbers(newData.b, -90, 90, -50, 50)),\n\t\t\t\t\tMath.round(map_numbers(newData.g, -90, 90, -30, 30)),\n\t\t\t\t])\n\t\t\t}\n\t\t}\n\n\t\tconst now = new Date().getTime()\n\t\tif (!lastUpdate.current) {\n\t\t\tlastUpdate.current = now\n\t\t\t_update()\n\t\t} else if (Math.abs(now - lastUpdate.current) > 50) {\n\t\t\tlastUpdate.current = now\n\t\t\t_update()\n\t\t}\n\t}, [send])\n\n\tconst onDrag = useCallback(\n\t\t(_: any, _data: { y: number }) => {\n\t\t\tconst { y } = _data\n\n\t\t\tif (!controller.current) return\n\n\t\t\tconst percentage =\n\t\t\t\tMath.round((y / (controller.current.offsetHeight - 70)) * 100) / 100\n\n\t\t\tif (data.current.z !== percentage) {\n\t\t\t\tdata.current.z = percentage\n\n\t\t\t\tupdate()\n\t\t\t}\n\n\t\t\tsetDidDrag(true)\n\t\t},\n\t\t[update]\n\t)\n\n\tconst requestPermission = useCallback(() => {\n\t\t// @ts-ignore\n\t\tDeviceOrientationEvent.requestPermission().then(\n\t\t\t(permissionState: PermissionState) => {\n\t\t\t\tif (permissionState === \"granted\") {\n\t\t\t\t\tsetHasPermission(true)\n\t\t\t\t}\n\t\t\t}\n\t\t)\n\t}, [])\n\n\tuseEffect(() => {\n\t\tconst onRotation = (e: DeviceOrientationEvent) => {\n\t\t\tconst { beta, gamma } = e\n\n\t\t\tif (beta && gamma) {\n\t\t\t\tdata.current.b = beta\n\t\t\t\tdata.current.g = gamma\n\t\t\t}\n\n\t\t\tupdate()\n\t\t}\n\n\t\tif (hasPermission) {\n\t\t\twindow.addEventListener(\"deviceorientation\", onRotation)\n\t\t}\n\n\t\treturn () => window.removeEventListener(\"deviceorientation\", onRotation)\n\t}, [hasPermission, update])\n\n\tuseEffect(() => {\n\t\t// @ts-ignore\n\t\tif (\n\t\t\tDeviceOrientationEvent !== undefined &&\n\t\t\t// @ts-ignore\n\t\t\ttypeof DeviceOrientationEvent.requestPermission === \"function\"\n\t\t) {\n\t\t\trequestPermission()\n\t\t} else {\n\t\t\tsetHasPermission(true)\n\t\t}\n\t}, [requestPermission])\n\n\treturn (\n\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t{/* // FIXME: Translte */}\n\t\t\t\t\t\t\t{connected ? \"Verbunden\" : \"Verbinden…\"}\n\t\t\t\t\t\t
\n\t\t\t\t\t\t{connected && (\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t{t(\"as\")} {user ? user.name : \"…\"}\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t)}\n\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t
\n\t\t\t}\n\t\t\tisFullscreen\n\t\t\tisMobile\n\t\t>\n\t\t\t {\n\t\t\t\t\toffset.current = { b: data.current.b, g: data.current.g }\n\t\t\t\t}}\n\t\t\t>\n\t\t\t\t\"Reset\n\t\t\t\n\n\t\t\t
\n\t\t\t\t
\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\n\t\t\t{!hasPermission && (\n\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t

{t(\"gyroscope_permission\")}

\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t
\n\t\t\t)}\n\t\t\n\t)\n}\n\nexport default MobileSono\n","var _g, _path, _defs;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nfunction SvgWaitingNo(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 48,\n height: 48,\n viewBox: \"0 0 48 48\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _g || (_g = /*#__PURE__*/React.createElement(\"g\", {\n filter: \"url(#filter0_d)\"\n }, /*#__PURE__*/React.createElement(\"circle\", {\n cx: 24,\n cy: 22,\n r: 20,\n fill: \"#F42C04\"\n }))), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M18.2716 13.4432C17.4906 12.6622 16.2243 12.6622 15.4432 13.4432C14.6622 14.2243 14.6622 15.4906 15.4432 16.2716L21.171 21.9994L15.4433 27.7271C14.6622 28.5082 14.6622 29.7745 15.4433 30.5555C16.2243 31.3366 17.4907 31.3366 18.2717 30.5555L23.9994 24.8278L29.7271 30.5555C30.5082 31.3366 31.7745 31.3366 32.5555 30.5555C33.3366 29.7745 33.3366 28.5082 32.5555 27.7271L26.8278 21.9994L32.5556 16.2716C33.3367 15.4906 33.3367 14.2243 32.5556 13.4432C31.7746 12.6622 30.5082 12.6622 29.7272 13.4432L23.9994 19.171L18.2716 13.4432Z\",\n fill: \"white\"\n })), _defs || (_defs = /*#__PURE__*/React.createElement(\"defs\", null, /*#__PURE__*/React.createElement(\"filter\", {\n id: \"filter0_d\",\n x: 0,\n y: 0,\n width: 48,\n height: 48,\n filterUnits: \"userSpaceOnUse\",\n colorInterpolationFilters: \"sRGB\"\n }, /*#__PURE__*/React.createElement(\"feFlood\", {\n floodOpacity: 0,\n result: \"BackgroundImageFix\"\n }), /*#__PURE__*/React.createElement(\"feColorMatrix\", {\n in: \"SourceAlpha\",\n type: \"matrix\",\n values: \"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0\"\n }), /*#__PURE__*/React.createElement(\"feOffset\", {\n dy: 2\n }), /*#__PURE__*/React.createElement(\"feGaussianBlur\", {\n stdDeviation: 2\n }), /*#__PURE__*/React.createElement(\"feColorMatrix\", {\n type: \"matrix\",\n values: \"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.2 0\"\n }), /*#__PURE__*/React.createElement(\"feBlend\", {\n mode: \"normal\",\n in2: \"BackgroundImageFix\",\n result: \"effect1_dropShadow\"\n }), /*#__PURE__*/React.createElement(\"feBlend\", {\n mode: \"normal\",\n in: \"SourceGraphic\",\n in2: \"effect1_dropShadow\",\n result: \"shape\"\n })))));\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgWaitingNo);\nexport default __webpack_public_path__ + \"static/media/waitingNo.d91ffc72ede4a9212ce555b85f87895e.svg\";\nexport { ForwardRef as ReactComponent };","var _g, _path, _defs;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nfunction SvgWaitingYes(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 48,\n height: 48,\n viewBox: \"0 0 48 48\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _g || (_g = /*#__PURE__*/React.createElement(\"g\", {\n filter: \"url(#filter0_d)\"\n }, /*#__PURE__*/React.createElement(\"circle\", {\n cx: 24,\n cy: 22,\n r: 20,\n fill: \"#0071FF\"\n }))), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M32.7551 16.102C33.4627 16.8095 33.4627 17.9567 32.7551 18.6643L23.2429 28.1765C22.5803 28.8391 21.5217 28.8871 20.8019 28.2872L15.3663 23.7576C14.5976 23.117 14.4937 21.9745 15.1343 21.2058C15.7749 20.4371 16.9174 20.3332 17.6862 20.9738L21.8506 24.4442L30.1928 16.102C30.9003 15.3944 32.0475 15.3944 32.7551 16.102Z\",\n fill: \"white\"\n })), _defs || (_defs = /*#__PURE__*/React.createElement(\"defs\", null, /*#__PURE__*/React.createElement(\"filter\", {\n id: \"filter0_d\",\n x: 0,\n y: 0,\n width: 48,\n height: 48,\n filterUnits: \"userSpaceOnUse\",\n colorInterpolationFilters: \"sRGB\"\n }, /*#__PURE__*/React.createElement(\"feFlood\", {\n floodOpacity: 0,\n result: \"BackgroundImageFix\"\n }), /*#__PURE__*/React.createElement(\"feColorMatrix\", {\n in: \"SourceAlpha\",\n type: \"matrix\",\n values: \"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0\"\n }), /*#__PURE__*/React.createElement(\"feOffset\", {\n dy: 2\n }), /*#__PURE__*/React.createElement(\"feGaussianBlur\", {\n stdDeviation: 2\n }), /*#__PURE__*/React.createElement(\"feColorMatrix\", {\n type: \"matrix\",\n values: \"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.2 0\"\n }), /*#__PURE__*/React.createElement(\"feBlend\", {\n mode: \"normal\",\n in2: \"BackgroundImageFix\",\n result: \"effect1_dropShadow\"\n }), /*#__PURE__*/React.createElement(\"feBlend\", {\n mode: \"normal\",\n in: \"SourceGraphic\",\n in2: \"effect1_dropShadow\",\n result: \"shape\"\n })))));\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgWaitingYes);\nexport default __webpack_public_path__ + \"static/media/waitingYes.e63e454adefc3341b04238d25e682d9f.svg\";\nexport { ForwardRef as ReactComponent };","import { useEffect, useState } from \"react\"\nimport { isChrome, isFirefox, isSafari, isTablet } from \"react-device-detect\"\nimport { useTranslation } from \"react-i18next\"\nimport waitingNo from \"../../../assets/images/waitingNo.svg\"\nimport waitingYes from \"../../../assets/images/waitingYes.svg\"\n\ninterface CheckProps {\n\tonCheck: (capable: boolean) => void\n\tshowHeader?: boolean\n}\n\nconst Check = ({ onCheck, showHeader = true }: CheckProps) => {\n\tconst { t } = useTranslation()\n\n\tconst browserOk = isChrome || isSafari || isFirefox\n\n\tconst [animate, setAnimate] = useState(false)\n\tconst [clickCount, setClickCount] = useState(0)\n\n\t// const gpu = useDetectGPU()\n\t// const gpuGoodEnough = gpu && (gpu.tier >= 2 || gpu.type === \"FALLBACK\")\n\n\t// useEffect(() => {\n\t// \tsetAnimate(true)\n\n\t// \tif (onCheck) {\n\t// \t\tsetTimeout(() => {\n\t// \t\t\tif (clickCount > 4 || (isTablet && gpu && gpuGoodEnough)) {\n\t// \t\t\t\tonCheck(false)\n\t// \t\t\t} else {\n\t// \t\t\t\tonCheck(\n\t// \t\t\t\t\t!browserOk || window.screen.width < 1200 || !gpu || !gpuGoodEnough\n\t// \t\t\t\t)\n\t// \t\t\t}\n\t// \t\t}, 1200)\n\t// \t}\n\t// }, [onCheck, browserOk, gpu, clickCount, gpuGoodEnough])\n\n\tuseEffect(() => {\n\t\tsetAnimate(true)\n\n\t\tif (onCheck) {\n\t\t\tsetTimeout(() => {\n\t\t\t\tif (clickCount > 4 || isTablet) {\n\t\t\t\t\tonCheck(false)\n\t\t\t\t} else {\n\t\t\t\t\tonCheck(!browserOk || window.screen.width < 1200)\n\t\t\t\t}\n\t\t\t}, 1200)\n\t\t}\n\t}, [onCheck, browserOk, clickCount])\n\n\treturn (\n\t\t<>\n\t\t\t{showHeader && (\n\t\t\t\t
\n\t\t\t\t\t setClickCount((count) => count + 1)}\n\t\t\t\t\t>\n\t\t\t\t\t\t{t(\"tutorial_check_1\")}\n\t\t\t\t\t\n\t\t\t\t\t

{t(\"tutorial_check_2\")}

\n\t\t\t\t
\n\t\t\t)}\n\t\t\t
\n\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t
{t(\"tutorial_check_6\")}: 
\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t{browserOk ? t(\"usable\") : t(\"not_usable\")}\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t{!browserOk && (\n\t\t\t\t\t\t
{t(\"tutorial_check_3\")}
\n\t\t\t\t\t)}\n\t\t\t\t
\n\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t
{t(\"tutorial_check_7\")}: 
\n\t\t\t\t\t\t\t 1200 ? \"text-s-blue\" : \"text-s-red\"\n\t\t\t\t\t\t\t\t}`}\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{window.screen.width > 1200\n\t\t\t\t\t\t\t\t\t? t(\"big_enough\")\n\t\t\t\t\t\t\t\t\t: t(\"not_big_enough\")}\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t{window.screen.width < 1200 && (\n\t\t\t\t\t\t
{t(\"tutorial_check_4\")}
\n\t\t\t\t\t)}\n\t\t\t\t
\n\t\t\t\t{/* \n\t\t\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t
{t(\"tutorial_check_8\")}: 
\n\t\t\t\t\t\t\t{gpu ? (\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t{gpuGoodEnough ? t(\"fast_enough\") : t(\"too_slow\")}\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t\t
Loading…
\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t
\n\t\t\t\t\t\t{gpu && (\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t)}\n\t\t\t\t\t
\n\t\t\t\t\t{gpuGoodEnough === false && (\n\t\t\t\t\t\t
{t(\"tutorial_check_9\")}
\n\t\t\t\t\t)}\n\t\t\t\t\t{gpu && Number(gpu.tier) === 2 && (\n\t\t\t\t\t\t
{t(\"tutorial_check_10\")}
\n\t\t\t\t\t)}\n\t\t\t\t */}\n\t\t\t\t{/* {!browserOk || window.screen.width < 1200 || !gpuGoodEnough ? ( */}\n\t\t\t\t{!browserOk || window.screen.width < 1200 ? (\n\t\t\t\t\t\n\t\t\t\t\t\t{t(\"tutorial_check_5\")}\n\t\t\t\t\t\n\t\t\t\t) : null}\n\t\t\t\n\t\t\n\t)\n}\n\nexport default Check\n","import { useTranslation } from \"react-i18next\"\nimport Body from \"../components/body/body\"\nimport Check from \"./practinar/tutorial/check\"\n\nconst HardwareTest = () => {\n\tconst { t } = useTranslation()\n\treturn (\n\t\t\n\t\t\t
\n\t\t\t\t
\n\t\t\t\t\t

{t(\"hardware_test\")}

\n\t\t\t\t\t
{t(\"hardware_test_text\")}
\n\t\t\t\t
\n\t\t\t\t {}} />\n\t\t\t
\n\t\t\n\t)\n}\n\nexport default HardwareTest\n","import { DetailedHTMLProps, InputHTMLAttributes } from \"react\"\n\nconst Input = ({\n\tclassName,\n\t...props\n}: Omit<\n\tDetailedHTMLProps, HTMLInputElement>,\n\t\"style\"\n>) => {\n\treturn (\n\t\t\n\t)\n}\n\nexport default Input\n","import { useCallback, useEffect, useRef, useState } from \"react\"\n\nconst useHandleChange = (\n\tinitial: T,\n\tonChange: ((value: T) => void) | undefined = undefined\n) => {\n\tconst [value, setValue] = useState(initial)\n\tconst lastValue = useRef(initial)\n\n\tconst handleChange = useCallback((event: T | any) => {\n\t\tif (event && event.target) {\n\t\t\tsetValue(event.target.value)\n\t\t} else {\n\t\t\tsetValue(event)\n\t\t}\n\t}, [])\n\n\tuseEffect(() => {\n\t\tsetValue(initial)\n\t}, [initial])\n\n\tuseEffect(() => {\n\t\tif (onChange && lastValue.current !== value) {\n\t\t\tonChange(value)\n\n\t\t\tlastValue.current = value\n\t\t}\n\t}, [value, onChange])\n\n\treturn [value, handleChange]\n}\n\nexport default useHandleChange\n","import { FormEvent, useEffect, useState } from \"react\"\nimport { isMobileOnly } from \"react-device-detect\"\nimport { useTranslation } from \"react-i18next\"\nimport { Navigate, useNavigate, useParams } from \"react-router-dom\"\nimport Button, { ButtonTheme } from \"src/components/button/button\"\nimport Input from \"src/components/input/input\"\nimport useSWR from \"swr\"\nimport Body from \"../../components/body/body\"\nimport LanguageButton from \"../../components/button/languageButton\"\nimport Logos from \"../../components/logos/logos\"\nimport useHandleChange from \"../../hooks/useHandleChange\"\nimport { loginWithCode } from \"../../network/auth\"\nimport { fetchApi, fetchApiAuthorized } from \"../../network/fetch\"\nimport { useErrorStore } from \"../../state/stores/errorStore\"\n\nconst Join = () => {\n\tconst { t } = useTranslation()\n\tconst navigate = useNavigate()\n\tconst { code } = useParams() as Record\n\n\tconst [inviteCode, setInviteCode] = useHandleChange(\"\")\n\tconst [name, setName] = useHandleChange(\"\")\n\tconst [isAdditional, setIsAdditional] = useState(false)\n\n\tconst { data } = useSWR(\"/config/\", fetchApi)\n\n\tconst _login = async (e: FormEvent) => {\n\t\te.preventDefault()\n\n\t\tconst result = await loginWithCode(inviteCode)\n\t\tif (result !== undefined) {\n\t\t\tconst practinar = await fetchApiAuthorized(\n\t\t\t\t`/webinars/code/${inviteCode}`,\n\t\t\t\tresult.token,\n\t\t\t\tresult.expiresIn\n\t\t\t)\n\n\t\t\tif (practinar) {\n\t\t\t\tconsole.log(practinar)\n\t\t\t\tif (practinar && practinar.running) {\n\t\t\t\t\tif (isAdditional) {\n\t\t\t\t\t\tconst changeName = await fetchApiAuthorized(\n\t\t\t\t\t\t\t`/webinars/changeName`,\n\t\t\t\t\t\t\tresult.token,\n\t\t\t\t\t\t\tresult.expiresIn,\n\t\t\t\t\t\t\t{ name },\n\t\t\t\t\t\t\t\"POST\"\n\t\t\t\t\t\t)\n\n\t\t\t\t\t\tif (changeName) {\n\t\t\t\t\t\t\tnavigate(`/practinar/${inviteCode}`)\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\tif (practinar.isSuccessor) {\n\t\t\t\t\t\t\tsetIsAdditional(true)\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tnavigate(`/practinar/${inviteCode}`)\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\t// FIXME: translte\n\t\t\t\t\tuseErrorStore\n\t\t\t\t\t\t.getState()\n\t\t\t\t\t\t.show(undefined, \"Practinar has not started yet\")\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tuseErrorStore.getState().show(undefined, \"Practinar not found\")\n\t\t\t}\n\t\t}\n\t}\n\n\tuseEffect(() => {\n\t\tif (code) {\n\t\t\tsetInviteCode(code)\n\t\t}\n\t}, [code, setInviteCode])\n\n\treturn isMobileOnly ? (\n\t\t\n\t) : (\n\t\t\n\t\t\t
\n\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t

SonoFun.live

\n\n\t\t\t\t\t\t

{t(\"webinars_upcoming\")}

\n\n\t\t\t\t\t\t{data !== undefined && (\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t)}\n\n\t\t\t\t\t\t navigate(\"/hardwaretest\")}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{t(\"hardware_test\")}\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\n\t\t\t\t\t\n\t\t\t\t
\n\n\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t\tModerator login\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\n\t\t\t\t\t
\n\t\t\t\t\t\t

{t(\"start_welcome\")}

\n\t\t\t\t\t\t

\n\t\t\t\t\t\t\t{isAdditional\n\t\t\t\t\t\t\t\t? t(\"enter_your_name\")\n\t\t\t\t\t\t\t\t: t(\"enter_your_code_description\")}\n\t\t\t\t\t\t

\n\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t{isAdditional ? (\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t{t(\"take_part\")}\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t
\n\t\t\t
\n\t\t\n\t)\n}\n\nexport default Join\n","import { FormEvent, FunctionComponent, useEffect, useState } from \"react\"\nimport { useTranslation } from \"react-i18next\"\nimport { useNavigate, useParams } from \"react-router-dom\"\nimport Input from \"src/components/input/input\"\nimport Body from \"../../../components/body/body\"\nimport Button from \"../../../components/button/button\"\nimport useHandleChange from \"../../../hooks/useHandleChange\"\nimport { fetchApi } from \"../../../network/fetch\"\nimport { useErrorStore } from \"../../../state/stores/errorStore\"\n\nconst Activate: FunctionComponent = () => {\n\tconst [password, setPassword] = useHandleChange(\"\")\n\tconst [password2, setPassword2] = useHandleChange(\"\")\n\tconst { t } = useTranslation()\n\tconst { code } = useParams() as Record\n\tconst [activationCode, setCode] = useState(undefined)\n\tconst navigate = useNavigate()\n\n\tconst register = async (e: FormEvent) => {\n\t\tif (activationCode) {\n\t\t\te.preventDefault()\n\n\t\t\tconst success = await fetchApi(\n\t\t\t\t\"/users/moderators/register/setpassword\",\n\t\t\t\t{ activationCode, password },\n\t\t\t\t\"PUT\"\n\t\t\t)\n\t\t\tif (success) {\n\t\t\t\tnavigate(\"/moderator/\")\n\t\t\t}\n\t\t} else {\n\t\t\tuseErrorStore\n\t\t\t\t.getState()\n\t\t\t\t.update(new Error(\"No code, did you click on the link in the email?\"))\n\t\t}\n\t}\n\n\tuseEffect(() => {\n\t\tif (code) {\n\t\t\tsetCode(code)\n\t\t} else {\n\t\t\tuseErrorStore\n\t\t\t\t.getState()\n\t\t\t\t.update(new Error(\"No code, did you click on the link in the email?\"))\n\t\t}\n\t}, [code])\n\n\tconst disabled = () => {\n\t\tif (\n\t\t\tpassword.length === 0 ||\n\t\t\tpassword2.length === 0 ||\n\t\t\tpassword !== password2\n\t\t) {\n\t\t\treturn true\n\t\t}\n\t}\n\n\treturn (\n\t\t\n\t\t\t
\n\t\t\t\t

SonoFun Live! Moderator Registrierung

\n\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t
\n\t\t\t
\n\t\t\n\t)\n}\n\nexport default Activate\n","/**\n * NOTE: If you refactor this to split up the modules into separate files,\n * you'll need to update the rollup config for react-router-dom-v5-compat.\n */\nimport * as React from \"react\";\nimport type { BrowserHistory, HashHistory, History } from \"history\";\nimport { createBrowserHistory, createHashHistory } from \"history\";\nimport {\n MemoryRouter,\n Navigate,\n Outlet,\n Route,\n Router,\n Routes,\n createRoutesFromChildren,\n generatePath,\n matchRoutes,\n matchPath,\n createPath,\n parsePath,\n resolvePath,\n renderMatches,\n useHref,\n useInRouterContext,\n useLocation,\n useMatch,\n useNavigate,\n useNavigationType,\n useOutlet,\n useParams,\n useResolvedPath,\n useRoutes,\n useOutletContext,\n} from \"react-router\";\nimport type { To } from \"react-router\";\n\nfunction warning(cond: boolean, message: string): void {\n if (!cond) {\n // eslint-disable-next-line no-console\n if (typeof console !== \"undefined\") console.warn(message);\n\n try {\n // Welcome to debugging React Router!\n //\n // This error is thrown as a convenience so you can more easily\n // find the source for a warning that appears in the console by\n // enabling \"pause on exceptions\" in your JavaScript debugger.\n throw new Error(message);\n // eslint-disable-next-line no-empty\n } catch (e) {}\n }\n}\n\n////////////////////////////////////////////////////////////////////////////////\n// RE-EXPORTS\n////////////////////////////////////////////////////////////////////////////////\n\n// Note: Keep in sync with react-router exports!\nexport {\n MemoryRouter,\n Navigate,\n Outlet,\n Route,\n Router,\n Routes,\n createRoutesFromChildren,\n generatePath,\n matchRoutes,\n matchPath,\n createPath,\n parsePath,\n renderMatches,\n resolvePath,\n useHref,\n useInRouterContext,\n useLocation,\n useMatch,\n useNavigate,\n useNavigationType,\n useOutlet,\n useParams,\n useResolvedPath,\n useRoutes,\n useOutletContext,\n};\n\nexport { NavigationType } from \"react-router\";\nexport type {\n Hash,\n Location,\n Path,\n To,\n MemoryRouterProps,\n NavigateFunction,\n NavigateOptions,\n NavigateProps,\n Navigator,\n OutletProps,\n Params,\n PathMatch,\n RouteMatch,\n RouteObject,\n RouteProps,\n PathRouteProps,\n LayoutRouteProps,\n IndexRouteProps,\n RouterProps,\n Pathname,\n Search,\n RoutesProps,\n} from \"react-router\";\n\n///////////////////////////////////////////////////////////////////////////////\n// DANGER! PLEASE READ ME!\n// We provide these exports as an escape hatch in the event that you need any\n// routing data that we don't provide an explicit API for. With that said, we\n// want to cover your use case if we can, so if you feel the need to use these\n// we want to hear from you. Let us know what you're building and we'll do our\n// best to make sure we can support you!\n//\n// We consider these exports an implementation detail and do not guarantee\n// against any breaking changes, regardless of the semver release. Use with\n// extreme caution and only if you understand the consequences. Godspeed.\n///////////////////////////////////////////////////////////////////////////////\n\n/** @internal */\nexport {\n UNSAFE_NavigationContext,\n UNSAFE_LocationContext,\n UNSAFE_RouteContext,\n} from \"react-router\";\n\n////////////////////////////////////////////////////////////////////////////////\n// COMPONENTS\n////////////////////////////////////////////////////////////////////////////////\n\nexport interface BrowserRouterProps {\n basename?: string;\n children?: React.ReactNode;\n window?: Window;\n}\n\n/**\n * A `` for use in web browsers. Provides the cleanest URLs.\n */\nexport function BrowserRouter({\n basename,\n children,\n window,\n}: BrowserRouterProps) {\n let historyRef = React.useRef();\n if (historyRef.current == null) {\n historyRef.current = createBrowserHistory({ window });\n }\n\n let history = historyRef.current;\n let [state, setState] = React.useState({\n action: history.action,\n location: history.location,\n });\n\n React.useLayoutEffect(() => history.listen(setState), [history]);\n\n return (\n \n );\n}\n\nexport interface HashRouterProps {\n basename?: string;\n children?: React.ReactNode;\n window?: Window;\n}\n\n/**\n * A `` for use in web browsers. Stores the location in the hash\n * portion of the URL so it is not sent to the server.\n */\nexport function HashRouter({ basename, children, window }: HashRouterProps) {\n let historyRef = React.useRef();\n if (historyRef.current == null) {\n historyRef.current = createHashHistory({ window });\n }\n\n let history = historyRef.current;\n let [state, setState] = React.useState({\n action: history.action,\n location: history.location,\n });\n\n React.useLayoutEffect(() => history.listen(setState), [history]);\n\n return (\n \n );\n}\n\nexport interface HistoryRouterProps {\n basename?: string;\n children?: React.ReactNode;\n history: History;\n}\n\n/**\n * A `` that accepts a pre-instantiated history object. It's important\n * to note that using your own history object is highly discouraged and may add\n * two versions of the history library to your bundles unless you use the same\n * version of the history library that React Router uses internally.\n */\nfunction HistoryRouter({ basename, children, history }: HistoryRouterProps) {\n const [state, setState] = React.useState({\n action: history.action,\n location: history.location,\n });\n\n React.useLayoutEffect(() => history.listen(setState), [history]);\n\n return (\n \n );\n}\n\nif (__DEV__) {\n HistoryRouter.displayName = \"unstable_HistoryRouter\";\n}\n\nexport { HistoryRouter as unstable_HistoryRouter };\n\nfunction isModifiedEvent(event: React.MouseEvent) {\n return !!(event.metaKey || event.altKey || event.ctrlKey || event.shiftKey);\n}\n\nexport interface LinkProps\n extends Omit, \"href\"> {\n reloadDocument?: boolean;\n replace?: boolean;\n state?: any;\n to: To;\n}\n\n/**\n * The public API for rendering a history-aware .\n */\nexport const Link = React.forwardRef(\n function LinkWithRef(\n { onClick, reloadDocument, replace = false, state, target, to, ...rest },\n ref\n ) {\n let href = useHref(to);\n let internalOnClick = useLinkClickHandler(to, { replace, state, target });\n function handleClick(\n event: React.MouseEvent\n ) {\n if (onClick) onClick(event);\n if (!event.defaultPrevented && !reloadDocument) {\n internalOnClick(event);\n }\n }\n\n return (\n // eslint-disable-next-line jsx-a11y/anchor-has-content\n \n );\n }\n);\n\nif (__DEV__) {\n Link.displayName = \"Link\";\n}\n\nexport interface NavLinkProps\n extends Omit {\n children?:\n | React.ReactNode\n | ((props: { isActive: boolean }) => React.ReactNode);\n caseSensitive?: boolean;\n className?: string | ((props: { isActive: boolean }) => string | undefined);\n end?: boolean;\n style?:\n | React.CSSProperties\n | ((props: { isActive: boolean }) => React.CSSProperties);\n}\n\n/**\n * A wrapper that knows if it's \"active\" or not.\n */\nexport const NavLink = React.forwardRef(\n function NavLinkWithRef(\n {\n \"aria-current\": ariaCurrentProp = \"page\",\n caseSensitive = false,\n className: classNameProp = \"\",\n end = false,\n style: styleProp,\n to,\n children,\n ...rest\n },\n ref\n ) {\n let location = useLocation();\n let path = useResolvedPath(to);\n\n let locationPathname = location.pathname;\n let toPathname = path.pathname;\n if (!caseSensitive) {\n locationPathname = locationPathname.toLowerCase();\n toPathname = toPathname.toLowerCase();\n }\n\n let isActive =\n locationPathname === toPathname ||\n (!end &&\n locationPathname.startsWith(toPathname) &&\n locationPathname.charAt(toPathname.length) === \"/\");\n\n let ariaCurrent = isActive ? ariaCurrentProp : undefined;\n\n let className: string | undefined;\n if (typeof classNameProp === \"function\") {\n className = classNameProp({ isActive });\n } else {\n // If the className prop is not a function, we use a default `active`\n // class for s that are active. In v5 `active` was the default\n // value for `activeClassName`, but we are removing that API and can still\n // use the old default behavior for a cleaner upgrade path and keep the\n // simple styling rules working as they currently do.\n className = [classNameProp, isActive ? \"active\" : null]\n .filter(Boolean)\n .join(\" \");\n }\n\n let style =\n typeof styleProp === \"function\" ? styleProp({ isActive }) : styleProp;\n\n return (\n \n {typeof children === \"function\" ? children({ isActive }) : children}\n \n );\n }\n);\n\nif (__DEV__) {\n NavLink.displayName = \"NavLink\";\n}\n\n////////////////////////////////////////////////////////////////////////////////\n// HOOKS\n////////////////////////////////////////////////////////////////////////////////\n\n/**\n * Handles the click behavior for router `` components. This is useful if\n * you need to create custom `` components with the same click behavior we\n * use in our exported ``.\n */\nexport function useLinkClickHandler(\n to: To,\n {\n target,\n replace: replaceProp,\n state,\n }: {\n target?: React.HTMLAttributeAnchorTarget;\n replace?: boolean;\n state?: any;\n } = {}\n): (event: React.MouseEvent) => void {\n let navigate = useNavigate();\n let location = useLocation();\n let path = useResolvedPath(to);\n\n return React.useCallback(\n (event: React.MouseEvent) => {\n if (\n event.button === 0 && // Ignore everything but left clicks\n (!target || target === \"_self\") && // Let browser handle \"target=_blank\" etc.\n !isModifiedEvent(event) // Ignore clicks with modifier keys\n ) {\n event.preventDefault();\n\n // If the URL hasn't changed, a regular will do a replace instead of\n // a push, so do the same here.\n let replace =\n !!replaceProp || createPath(location) === createPath(path);\n\n navigate(to, { replace, state });\n }\n },\n [location, navigate, path, replaceProp, state, target, to]\n );\n}\n\n/**\n * A convenient wrapper for reading and writing search parameters via the\n * URLSearchParams interface.\n */\nexport function useSearchParams(defaultInit?: URLSearchParamsInit) {\n warning(\n typeof URLSearchParams !== \"undefined\",\n `You cannot use the \\`useSearchParams\\` hook in a browser that does not ` +\n `support the URLSearchParams API. If you need to support Internet ` +\n `Explorer 11, we recommend you load a polyfill such as ` +\n `https://github.com/ungap/url-search-params\\n\\n` +\n `If you're unsure how to load polyfills, we recommend you check out ` +\n `https://polyfill.io/v3/ which provides some recommendations about how ` +\n `to load polyfills only for users that need them, instead of for every ` +\n `user.`\n );\n\n let defaultSearchParamsRef = React.useRef(createSearchParams(defaultInit));\n\n let location = useLocation();\n let searchParams = React.useMemo(() => {\n let searchParams = createSearchParams(location.search);\n\n for (let key of defaultSearchParamsRef.current.keys()) {\n if (!searchParams.has(key)) {\n defaultSearchParamsRef.current.getAll(key).forEach((value) => {\n searchParams.append(key, value);\n });\n }\n }\n\n return searchParams;\n }, [location.search]);\n\n let navigate = useNavigate();\n let setSearchParams = React.useCallback(\n (\n nextInit: URLSearchParamsInit,\n navigateOptions?: { replace?: boolean; state?: any }\n ) => {\n navigate(\"?\" + createSearchParams(nextInit), navigateOptions);\n },\n [navigate]\n );\n\n return [searchParams, setSearchParams] as const;\n}\n\nexport type ParamKeyValuePair = [string, string];\n\nexport type URLSearchParamsInit =\n | string\n | ParamKeyValuePair[]\n | Record\n | URLSearchParams;\n\n/**\n * Creates a URLSearchParams object using the given initializer.\n *\n * This is identical to `new URLSearchParams(init)` except it also\n * supports arrays as values in the object form of the initializer\n * instead of just strings. This is convenient when you need multiple\n * values for a given key, but don't want to use an array initializer.\n *\n * For example, instead of:\n *\n * let searchParams = new URLSearchParams([\n * ['sort', 'name'],\n * ['sort', 'price']\n * ]);\n *\n * you can do:\n *\n * let searchParams = createSearchParams({\n * sort: ['name', 'price']\n * });\n */\nexport function createSearchParams(\n init: URLSearchParamsInit = \"\"\n): URLSearchParams {\n return new URLSearchParams(\n typeof init === \"string\" ||\n Array.isArray(init) ||\n init instanceof URLSearchParams\n ? init\n : Object.keys(init).reduce((memo, key) => {\n let value = init[key];\n return memo.concat(\n Array.isArray(value) ? value.map((v) => [key, v]) : [[key, value]]\n );\n }, [] as ParamKeyValuePair[])\n );\n}\n","export const sidebarIcons = (icon: string) => {\n\tswitch (icon) {\n\t\tcase \"next\":\n\t\t\treturn (\n\t\t\t\t\n\t\t\t)\n\t\tcase \"done\":\n\t\t\treturn (\n\t\t\t\t\n\t\t\t)\n\t\tcase \"case\":\n\t\t\treturn (\n\t\t\t\t\n\t\t\t)\n\t\tcase \"quiz\":\n\t\t\treturn (\n\t\t\t\t\n\t\t\t)\n\t\tcase \"patient\":\n\t\t\treturn (\n\t\t\t\t\n\t\t\t)\n\n\t\tcase \"media\":\n\t\t\treturn (\n\t\t\t\t\n\t\t\t)\n\t\tcase \"user\":\n\t\t\treturn (\n\t\t\t\t\n\t\t\t)\n\t\tcase \"config\":\n\t\t\treturn (\n\t\t\t\t\n\t\t\t)\n\n\t\tdefault:\n\t\t\treturn (\n\t\t\t\t\n\t\t\t)\n\t}\n}\n","import { forwardRef } from \"react\"\nimport { Link } from \"react-router-dom\"\nimport { sidebarIcons } from \"./sidebarIcons\"\n\ninterface NavigationPointProps {\n\tactive: boolean\n\ttitle: string\n\tpathname: string\n\ticon: string\n\tonMouseOver: () => void\n}\n\nconst NavigationPoint = forwardRef(\n\t({ active, title, pathname, icon, onMouseOver }, ref) => {\n\t\treturn (\n\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\t{sidebarIcons(icon)}\n\t\t\t\t\t\n\t\t\t\t\t{title}\n\t\t\t\t
\n\t\t\t\n\t\t)\n\t}\n)\n\nexport default NavigationPoint\n","import { useCallback, useEffect, useRef, useState } from \"react\"\nimport { useTranslation } from \"react-i18next\"\nimport { useLocation } from \"react-router-dom\"\nimport useSWR from \"swr\"\nimport { logout } from \"../../network/auth\"\nimport { fetchApiAuthorized } from \"../../network/fetch\"\nimport { useAuthStore } from \"../../state/stores/authStore\"\nimport Button, { ButtonTheme } from \"../button/button\"\nimport LanguageButton from \"../button/languageButton\"\nimport Logos from \"../logos/logos\"\nimport NavigationPoint from \"./navigationPoint\"\n\nconst Sidebar = () => {\n\tconst { pathname } = useLocation()\n\n\tconst indexForPathname = useCallback((): number | undefined => {\n\t\tlet index\n\t\tswitch (pathname) {\n\t\t\tcase \"/moderator/webinar/running\":\n\t\t\t\tindex = 0\n\t\t\t\tbreak\n\t\t\tcase \"/moderator/webinar/upcoming\":\n\t\t\t\tindex = 1\n\t\t\t\tbreak\n\t\t\tcase \"/moderator/webinar/completed\":\n\t\t\t\tindex = 2\n\t\t\t\tbreak\n\t\t\tcase \"/moderator/case\":\n\t\t\t\tindex = 3\n\t\t\t\tbreak\n\t\t\tcase \"/moderator/quiz\":\n\t\t\t\tindex = 4\n\t\t\t\tbreak\n\t\t\tcase \"/moderator/patient\":\n\t\t\t\tindex = 5\n\t\t\t\tbreak\n\t\t\tcase \"/moderator/media\":\n\t\t\t\tindex = 6\n\t\t\t\tbreak\n\t\t\tcase \"/moderator/user\":\n\t\t\t\tindex = 7\n\t\t\t\tbreak\n\t\t\tcase \"/moderator/config\":\n\t\t\t\tindex = 8\n\t\t\t\tbreak\n\n\t\t\tdefault:\n\t\t\t\tbreak\n\t\t}\n\n\t\treturn index\n\t}, [pathname])\n\n\tconst { t } = useTranslation()\n\tconst [offset, setOffset] = useState(undefined)\n\tconst [activeIndex, setActiveIndex] = useState(indexForPathname())\n\tconst navigationPoints = useRef(new Array(7))\n\n\tconst token = useAuthStore((state) => state.adminToken)\n\tconst expiresIn = useAuthStore((state) => state.adminExpiresIn)\n\n\tconst { data: moderator } = useSWR(\n\t\t[\"/users/current\", token, expiresIn],\n\t\tfetchApiAuthorized\n\t)\n\n\tuseEffect(() => {\n\t\tconst index = indexForPathname()\n\t\tif (index === undefined) return\n\n\t\tconst ref = navigationPoints.current[index]\n\n\t\tsetActiveIndex(index)\n\n\t\tif (ref) {\n\t\t\tsetOffset(ref.offsetTop - ref.getBoundingClientRect().height / 2)\n\t\t}\n\t}, [pathname, indexForPathname])\n\n\tconst navigationChange = useCallback((index: number | undefined) => {\n\t\tsetActiveIndex(index)\n\n\t\tif (index === undefined) return\n\n\t\tconst ref = navigationPoints.current[index]\n\t\tif (ref) {\n\t\t\tsetOffset(ref.offsetTop - ref.getBoundingClientRect().height / 2)\n\t\t}\n\t}, [])\n\n\tconst onHover = useCallback(\n\t\t(index: number | undefined) => {\n\t\t\tnavigationChange(index)\n\t\t},\n\t\t[navigationChange]\n\t)\n\n\tconst onOut = useCallback(() => {\n\t\tnavigationChange(indexForPathname())\n\t}, [indexForPathname, navigationChange])\n\n\treturn (\n\t\t
\n\t\t\t
\n\t\t\t\t

SonoFun Live!

\n\t\t\t\t\n\t\t\t
\n\n\t\t\t{offset !== undefined && (\n\t\t\t\t\n\t\t\t)}\n\n\t\t\t
\n\t\t\t\t
\n\t\t\t\t\t
{t(\"webinars\")}
\n\n\t\t\t\t\t r && (navigationPoints.current[0] = r)}\n\t\t\t\t\t\ttitle={t(\"running\") as string}\n\t\t\t\t\t\tonMouseOver={() => onHover(0)}\n\t\t\t\t\t/>\n\n\t\t\t\t\t r && (navigationPoints.current[1] = r)}\n\t\t\t\t\t\ttitle={t(\"upcoming\") as string}\n\t\t\t\t\t\tonMouseOver={() => onHover(1)}\n\t\t\t\t\t/>\n\n\t\t\t\t\t r && (navigationPoints.current[2] = r)}\n\t\t\t\t\t\ttitle={t(\"completed\") as string}\n\t\t\t\t\t\tonMouseOver={() => onHover(2)}\n\t\t\t\t\t/>\n\t\t\t\t
\n\n\t\t\t\t
\n\t\t\t\t\t
{t(\"content\")}
\n\n\t\t\t\t\t r && (navigationPoints.current[3] = r)}\n\t\t\t\t\t\ttitle={t(\"cases\") as string}\n\t\t\t\t\t\tonMouseOver={() => onHover(3)}\n\t\t\t\t\t/>\n\n\t\t\t\t\t r && (navigationPoints.current[4] = r)}\n\t\t\t\t\t\ttitle={t(\"quiz\") as string}\n\t\t\t\t\t\tonMouseOver={() => onHover(4)}\n\t\t\t\t\t/>\n\n\t\t\t\t\t r && (navigationPoints.current[5] = r)}\n\t\t\t\t\t\ttitle={t(\"patients\") as string}\n\t\t\t\t\t\tonMouseOver={() => onHover(5)}\n\t\t\t\t\t/>\n\n\t\t\t\t\t r && (navigationPoints.current[6] = r)}\n\t\t\t\t\t\ttitle={t(\"media\") as string}\n\t\t\t\t\t\tonMouseOver={() => onHover(6)}\n\t\t\t\t\t/>\n\t\t\t\t
\n\n\t\t\t\t
\n\t\t\t\t\t
{t(\"management\")}
\n\n\t\t\t\t\t r && (navigationPoints.current[7] = r)}\n\t\t\t\t\t\ttitle={t(\"user\") as string}\n\t\t\t\t\t\tonMouseOver={() => onHover(7)}\n\t\t\t\t\t/>\n\n\t\t\t\t\t r && (navigationPoints.current[8] = r)}\n\t\t\t\t\t\ttitle={t(\"config\") as string}\n\t\t\t\t\t\tonMouseOver={() => onHover(8)}\n\t\t\t\t\t/>\n\t\t\t\t
\n\t\t\t
\n\n\t\t\t
\n\n\t\t\t
\n\t\t\t\t
\n\t\t\t\t\t

{t(\"logged_in_as\")}

\n\t\t\t\t\t

\n\t\t\t\t\t\t{moderator && `${moderator.title} ${moderator.name}`}\n\t\t\t\t\t

\n\t\t\t\t
\n\t\t\t\t\n\t\t\t\t\t{t(\"log_out\")}\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t)\n}\n\nexport default Sidebar\n","import { PropsWithChildren } from \"react\"\nimport Sidebar from \"../sidebar/sidebar\"\n\nconst DashboardBody = ({ children }: PropsWithChildren<{}>) => {\n\treturn (\n\t\t
\n\t\t\t\n\t\t\t
{children}
\n\t\t
\n\t)\n}\n\nexport default DashboardBody\n","import { ReactNode } from \"react\"\nimport Button, { ButtonTheme } from \"src/components/button/button\"\n\ninterface DashboardHeaderProps {\n\ttitle: string\n\ttitleAddition?: string | React.ReactElement\n\ttitleOnClick?: () => void\n\tbuttonOnClick?: () => void\n\tbuttonTitle?: string\n\tbuttonDisabled?: boolean\n\tcancelButtonOnClick?: () => void\n\tcancelButtonTitle?: string\n\tadditional?: ReactNode\n\tloading?: boolean\n}\n\nconst DashboardHeader = ({\n\ttitle,\n\ttitleAddition,\n\ttitleOnClick,\n\tbuttonOnClick,\n\tbuttonTitle,\n\tbuttonDisabled = false,\n\tcancelButtonOnClick,\n\tcancelButtonTitle,\n\tadditional,\n\tloading = false,\n}: DashboardHeaderProps) => {\n\tlet content\n\tif (buttonOnClick && cancelButtonOnClick) {\n\t\tcontent = (\n\t\t\t
\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t{buttonTitle}\n\t\t\t\t\n\t\t\t
\n\t\t)\n\t} else if (buttonOnClick) {\n\t\tcontent = (\n\t\t\t\n\t\t)\n\t}\n\n\treturn (\n\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t\t{title}\n\t\t\t\t\n\t\t\t\t{titleAddition && (\n\t\t\t\t\t

 {titleAddition}

\n\t\t\t\t)}\n\t\t\t
\n\t\t\t{additional}\n\t\t\t{content}\n\t\t
\n\t)\n}\n\nexport default DashboardHeader\n","var _path;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nfunction SvgAdd(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 30,\n height: 30,\n viewBox: \"0 0 30 30\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M15.0043 3C16.1089 3 17.0043 3.89543 17.0043 5V11.1333C17.0728 12.1758 17.9401 13.0002 18.9999 13.0002H20.4612V13.0043H25.0084C26.113 13.0043 27.0084 13.8997 27.0084 15.0043C27.0084 16.1089 26.113 17.0043 25.0084 17.0043H18.8706C17.8703 17.0681 17.07 17.8673 17.0043 18.8671V25.0084C17.0043 26.113 16.1089 27.0084 15.0043 27.0084C13.8997 27.0084 13.0043 26.113 13.0043 25.0084V20.4607H12.9999V19.0002C12.9999 17.939 12.1735 17.0709 11.1292 17.0043H5C3.89543 17.0043 3 16.1089 3 15.0043C3 13.8997 3.89543 13.0043 5 13.0043H9.54753V13.0002H10.9999C12.1045 13.0002 12.9999 12.1047 12.9999 11.0002V9.54705H13.0043V5C13.0043 3.89543 13.8997 3 15.0043 3Z\",\n fill: \"#0071FF\"\n })));\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgAdd);\nexport default __webpack_public_path__ + \"static/media/add.fe0556991ab950866913ad2137d06ba3.svg\";\nexport { ForwardRef as ReactComponent };","var _path;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nfunction SvgMove(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 30,\n height: 30,\n viewBox: \"0 0 30 30\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M19.2068 7.7586C18.8925 8.21268 18.2695 8.32595 17.8154 8.01158L15.8462 6.64825V14.1539H23.3518L21.9885 12.1846C21.6741 11.7305 21.7874 11.1076 22.2415 10.7932C22.6956 10.4789 23.3185 10.5921 23.6329 11.0462L25.9761 14.4308C26.2132 14.7733 26.2132 15.2268 25.9761 15.5692L23.6329 18.9539C23.3185 19.4079 22.6956 19.5212 22.2415 19.2068C21.7874 18.8925 21.6741 18.2695 21.9885 17.8154L23.3518 15.8462H15.8462V23.3518L17.8154 21.9885C18.2695 21.6741 18.8925 21.7874 19.2068 22.2415C19.5212 22.6956 19.4079 23.3185 18.9539 23.6329L15.5692 25.9761C15.2268 26.2132 14.7733 26.2132 14.4308 25.9761L11.0462 23.6329C10.5921 23.3185 10.4789 22.6956 10.7932 22.2415C11.1076 21.7874 11.7305 21.6741 12.1846 21.9885L14.1539 23.3518V15.8462H6.64825L8.01158 17.8154C8.32595 18.2695 8.21268 18.8925 7.7586 19.2068C7.30451 19.5212 6.68156 19.4079 6.36719 18.9539L4.024 15.5692C3.78692 15.2268 3.78692 14.7733 4.024 14.4308L6.36719 11.0462C6.68156 10.5921 7.30451 10.4789 7.7586 10.7932C8.21268 11.1076 8.32595 11.7305 8.01158 12.1846L6.64825 14.1539H14.1539V6.64825L12.1846 8.01158C11.7305 8.32594 11.1076 8.21268 10.7932 7.7586C10.4789 7.30451 10.5921 6.68156 11.0462 6.36719L14.4308 4.024C14.7733 3.78692 15.2268 3.78692 15.5692 4.024L18.9539 6.36719C19.4079 6.68156 19.5212 7.30451 19.2068 7.7586Z\",\n fill: \"#2A2F35\"\n })));\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgMove);\nexport default __webpack_public_path__ + \"static/media/move.bb36421e533a340f52f5c5451a27dd44.svg\";\nexport { ForwardRef as ReactComponent };","var _path;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nfunction SvgPreview(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 30,\n height: 30,\n viewBox: \"0 0 30 30\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M3.45321 14.2834C3.17059 14.7073 3.21333 15.2638 3.52991 15.663C5.64236 18.3268 8.55524 22 15 22C21.7708 22 24.7992 17.9458 26.8002 15.2671C26.922 15.1041 26.9403 14.8859 26.8393 14.7092C25.3856 12.1672 21.7362 8 15 8C8.62814 8 5.15633 11.7286 3.45321 14.2834ZM20 15C20 17.7614 17.7614 20 15 20C12.2386 20 10 17.7614 10 15C10 12.2386 12.2386 10 15 10C17.7614 10 20 12.2386 20 15ZM15 18C16.6569 18 18 16.6569 18 15C18 13.3431 16.6569 12 15 12C13.3431 12 12 13.3431 12 15C12 16.6569 13.3431 18 15 18Z\",\n fill: \"#2A2F35\"\n })));\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgPreview);\nexport default __webpack_public_path__ + \"static/media/preview.d743a4508f06fadd2e1013d6222ae988.svg\";\nexport { ForwardRef as ReactComponent };","var _path, _path2, _path3, _path4, _path5;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nfunction SvgTrash(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 30,\n height: 30,\n viewBox: \"0 0 30 30\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M7 9H23\",\n stroke: \"#F42C04\",\n strokeWidth: 2,\n strokeLinecap: \"round\"\n })), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M13 13V21\",\n stroke: \"#F42C04\",\n strokeWidth: 2,\n strokeLinecap: \"round\"\n })), _path3 || (_path3 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M17 13V21\",\n stroke: \"#F42C04\",\n strokeWidth: 2,\n strokeLinecap: \"round\"\n })), _path4 || (_path4 = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M9.75153 11L9.75429 23.0037C9.75442 23.556 10.1463 24.0036 10.6297 24.0034L19.3788 24.0008C19.8621 24.0006 20.2538 23.5528 20.2537 23.0005L20.2509 11H22.0012L22.004 23C22.0044 24.6569 20.8292 26.0004 19.3792 26.0008L10.6301 26.0034C9.18013 26.0039 8.00437 24.6611 8.00398 23.0042L8.00122 11H9.75153ZM14.4941 6L19.3746 5.99854C19.4026 5.99853 19.4305 5.99902 19.4582 6H14.4941Z\",\n fill: \"#F42C04\"\n })), _path5 || (_path5 = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M13 3C11.3431 3 10 4.34315 10 6V8H12V6C12 5.44772 12.4477 5 13 5H17C17.5523 5 18 5.44772 18 6V8H20V6C20 4.34315 18.6569 3 17 3H13Z\",\n fill: \"#F42C04\"\n })));\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgTrash);\nexport default __webpack_public_path__ + \"static/media/trash.0eff20f5f6855977f158a8c312864c08.svg\";\nexport { ForwardRef as ReactComponent };","import AddImage from \"src/assets/images/add.svg\"\nimport MoveImage from \"src/assets/images/move.svg\"\nimport PreviewImage from \"src/assets/images/preview.svg\"\nimport TrashImage from \"src/assets/images/trash.svg\"\n\nexport enum IconImage {\n\tMove = \"Move\",\n\tTrash = \"Trash\",\n\tPreview = \"Preview\",\n\tAdd = \"Add\",\n}\n\nconst Icon = ({\n\ticonImage,\n\tclassName,\n\tonClick,\n\tsrc,\n}: {\n\ticonImage?: IconImage\n\tclassName?: string\n\tonClick?: () => void\n\tsrc?: string\n}) => {\n\tconst _src = () => {\n\t\tif (src) {\n\t\t\treturn src\n\t\t}\n\n\t\tswitch (iconImage) {\n\t\t\tcase IconImage.Move:\n\t\t\t\treturn MoveImage\n\t\t\tcase IconImage.Trash:\n\t\t\t\treturn TrashImage\n\t\t\tcase IconImage.Preview:\n\t\t\t\treturn PreviewImage\n\t\t\tcase IconImage.Add:\n\t\t\t\treturn AddImage\n\n\t\t\tdefault:\n\t\t\t\tbreak\n\t\t}\n\t}\n\n\treturn (\n\t\t\n\t)\n}\n\nexport const MoveIcon = () => {\n\treturn (\n\t\t\n\t)\n}\n\nexport default Icon\n","var _path;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nfunction SvgImage(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 30,\n height: 30,\n viewBox: \"0 0 30 30\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M5 8C5 6.34315 6.34315 5 8 5H22C23.6569 5 25 6.34315 25 8V22C25 23.6569 23.6569 25 22 25H8C6.34315 25 5 23.6569 5 22V8ZM9.84415 11.8423L7.3555 20.7304C7.17695 21.368 7.65628 22 8.31846 22H15H22.1683C22.9595 22 23.4373 21.1248 23.0095 20.4592L20.127 15.9754C19.7967 15.4616 19.087 15.3613 18.6274 15.7636L16.4315 17.6849C15.9522 18.1043 15.2082 17.9747 14.8989 17.418L11.6813 11.6263C11.2474 10.8453 10.0851 10.9819 9.84415 11.8423ZM18 12C19.1046 12 20 11.1046 20 10C20 8.89543 19.1046 8 18 8C16.8954 8 16 8.89543 16 10C16 11.1046 16.8954 12 18 12Z\",\n fill: \"#0071FF\"\n })));\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgImage);\nexport default __webpack_public_path__ + \"static/media/image.e5ddcba401f6adbdb2b3a751d8fda6a3.svg\";\nexport { ForwardRef as ReactComponent };","var _path;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nfunction SvgVideo(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 30,\n height: 30,\n viewBox: \"0 0 30 30\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M15 26C21.0751 26 26 21.0751 26 15C26 8.92487 21.0751 4 15 4C8.92487 4 4 8.92487 4 15C4 21.0751 8.92487 26 15 26ZM13.53 10.9562C12.864 10.54 12 11.0188 12 11.8042V18.1958C12 18.9812 12.864 19.46 13.53 19.0438L18.6432 15.848C19.2699 15.4563 19.2699 14.5437 18.6432 14.152L13.53 10.9562Z\",\n fill: \"#0071FF\"\n })));\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgVideo);\nexport default __webpack_public_path__ + \"static/media/video.5adb6332aeb812c89e9741fc503d79e3.svg\";\nexport { ForwardRef as ReactComponent };","import { PropsWithChildren, ReactElement } from \"react\"\nimport { useTranslation } from \"react-i18next\"\nimport { useNavigate } from \"react-router-dom\"\n\nimport Button, { ButtonTheme } from \"src/components/button/button\"\nimport Icon, { IconImage } from \"src/components/iconImage/iconImage\"\nimport ImageIcon from \"../../assets/images/image.svg\"\nimport VideoIcon from \"../../assets/images/video.svg\"\n\ninterface ListProps {\n\ttitle: string\n\tcomponents?: (value: Record) => ReactElement | boolean\n\tdata: Record[]\n\tonEdit: (value: Record) => void\n\tisMedia?: boolean\n\tonDelete: (value: Record) => void\n\tshowDelete?: (value: Record) => boolean\n\tloading: boolean\n\tonDublicate?: (value: Record) => void\n}\n\nexport const ListContainer = ({\n\tchildren,\n\tclassName,\n}: PropsWithChildren<{ className?: string }>) => {\n\treturn (\n\t\t
\n\t\t\t{children}\n\t\t
\n\t)\n}\n\nexport const ListRow = ({\n\tchildren,\n\tshowDivider,\n\tclassName,\n\tonClick,\n}: PropsWithChildren<{\n\tshowDivider: boolean\n\tclassName?: string\n\tonClick?: () => void\n}>) => {\n\treturn (\n\t\t\n\t\t\t{children}\n\t\t\n\t)\n}\n\nconst List = ({\n\ttitle = \"title\",\n\tcomponents,\n\tdata,\n\tonEdit,\n\tisMedia = false,\n\tonDelete,\n\tshowDelete,\n\tloading,\n\tonDublicate,\n}: ListProps) => {\n\tconst { t } = useTranslation()\n\tconst navigate = useNavigate()\n\treturn (\n\t\t\n\t\t\t{loading\n\t\t\t\t? \"Loading…\"\n\t\t\t\t: data.map((v, i) => {\n\t\t\t\t\t\tlet showDeleteButton = onDelete !== undefined\n\t\t\t\t\t\tif (showDelete) {\n\t\t\t\t\t\t\tshowDeleteButton = showDelete(v)\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t{isMedia ? (\n\t\t\t\t\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t\t\t\t\t window.open(v.url as string, \"_blank\")}\n\t\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t) : null}\n\t\t\t\t\t\t\t\t\t

{v[title] as string}

\n\t\t\t\t\t\t\t\t\t{components && components(v)}\n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t{onDublicate && (\n\t\t\t\t\t\t\t\t\t\t onDublicate(v)}\n\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\tDuplizieren\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t{showDeleteButton && (\n\t\t\t\t\t\t\t\t\t\t onDelete(v)}\n\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t)\n\t\t\t\t })}\n\t\t
\n\t)\n}\n\nexport default List\n","import { useTranslation } from \"react-i18next\"\nimport { useNavigate } from \"react-router-dom\"\nimport useSWR from \"swr\"\nimport DashboardBody from \"../../../components/dashboardBody/dashboardBody\"\nimport DashboardHeader from \"../../../components/dashboardHeader/dashboardHeader\"\nimport ListView from \"../../../components/list/list\"\nimport { HasAuth } from \"../../../components/privateRoute/privateRoute\"\nimport { fetchApiAuthorized } from \"../../../network/fetch\"\nimport { useErrorStore } from \"../../../state/stores/errorStore\"\n\nconst Cases = ({ auth }: HasAuth) => {\n\tconst navigate = useNavigate()\n\tconst { t } = useTranslation()\n\tconst { data: cases, mutate } = useSWR(\n\t\t[\"/cases\", auth.token, auth.expiresIn],\n\t\tfetchApiAuthorized\n\t)\n\n\tconst deletionConfirmation = useErrorStore(\n\t\t(state) => state.deleteConfirmation\n\t)\n\n\treturn (\n\t\t\n\t\t\t navigate(\"/moderator/case/create\")}\n\t\t\t\tbuttonTitle={t(\"create_case\") as string}\n\t\t\t\ttitle={t(\"cases\") as string}\n\t\t\t/>\n\n\t\t\t {\n\t\t\t\t\tdeletionConfirmation(async () => {\n\t\t\t\t\t\tawait fetchApiAuthorized(\n\t\t\t\t\t\t\t`/cases/${v.id}`,\n\t\t\t\t\t\t\tauth.token,\n\t\t\t\t\t\t\tauth.expiresIn,\n\t\t\t\t\t\t\tundefined,\n\t\t\t\t\t\t\t\"DELETE\"\n\t\t\t\t\t\t)\n\n\t\t\t\t\t\tmutate()\n\t\t\t\t\t})\n\t\t\t\t}}\n\t\t\t\tonDublicate={(v) => navigate(`/moderator/case/create?copy=${v.id}`)}\n\t\t\t\tonEdit={(v) => navigate(`/moderator/case/${v.id}`)}\n\t\t\t/>\n\t\t\n\t)\n}\n\nexport default Cases\n","import _objectSpread from '@babel/runtime/helpers/esm/objectSpread2';\n\n/**\n * Adapted from React: https://github.com/facebook/react/blob/master/packages/shared/formatProdErrorMessage.js\n *\n * Do not require this module directly! Use normal throw error calls. These messages will be replaced with error codes\n * during build.\n * @param {number} code\n */\nfunction formatProdErrorMessage(code) {\n return \"Minified Redux error #\" + code + \"; visit https://redux.js.org/Errors?code=\" + code + \" for the full message or \" + 'use the non-minified dev environment for full errors. ';\n}\n\n// Inlined version of the `symbol-observable` polyfill\nvar $$observable = (function () {\n return typeof Symbol === 'function' && Symbol.observable || '@@observable';\n})();\n\n/**\n * These are private action types reserved by Redux.\n * For any unknown actions, you must return the current state.\n * If the current state is undefined, you must return the initial state.\n * Do not reference these action types directly in your code.\n */\nvar randomString = function randomString() {\n return Math.random().toString(36).substring(7).split('').join('.');\n};\n\nvar ActionTypes = {\n INIT: \"@@redux/INIT\" + randomString(),\n REPLACE: \"@@redux/REPLACE\" + randomString(),\n PROBE_UNKNOWN_ACTION: function PROBE_UNKNOWN_ACTION() {\n return \"@@redux/PROBE_UNKNOWN_ACTION\" + randomString();\n }\n};\n\n/**\n * @param {any} obj The object to inspect.\n * @returns {boolean} True if the argument appears to be a plain object.\n */\nfunction isPlainObject(obj) {\n if (typeof obj !== 'object' || obj === null) return false;\n var proto = obj;\n\n while (Object.getPrototypeOf(proto) !== null) {\n proto = Object.getPrototypeOf(proto);\n }\n\n return Object.getPrototypeOf(obj) === proto;\n}\n\n// Inlined / shortened version of `kindOf` from https://github.com/jonschlinkert/kind-of\nfunction miniKindOf(val) {\n if (val === void 0) return 'undefined';\n if (val === null) return 'null';\n var type = typeof val;\n\n switch (type) {\n case 'boolean':\n case 'string':\n case 'number':\n case 'symbol':\n case 'function':\n {\n return type;\n }\n }\n\n if (Array.isArray(val)) return 'array';\n if (isDate(val)) return 'date';\n if (isError(val)) return 'error';\n var constructorName = ctorName(val);\n\n switch (constructorName) {\n case 'Symbol':\n case 'Promise':\n case 'WeakMap':\n case 'WeakSet':\n case 'Map':\n case 'Set':\n return constructorName;\n } // other\n\n\n return type.slice(8, -1).toLowerCase().replace(/\\s/g, '');\n}\n\nfunction ctorName(val) {\n return typeof val.constructor === 'function' ? val.constructor.name : null;\n}\n\nfunction isError(val) {\n return val instanceof Error || typeof val.message === 'string' && val.constructor && typeof val.constructor.stackTraceLimit === 'number';\n}\n\nfunction isDate(val) {\n if (val instanceof Date) return true;\n return typeof val.toDateString === 'function' && typeof val.getDate === 'function' && typeof val.setDate === 'function';\n}\n\nfunction kindOf(val) {\n var typeOfVal = typeof val;\n\n if (process.env.NODE_ENV !== 'production') {\n typeOfVal = miniKindOf(val);\n }\n\n return typeOfVal;\n}\n\n/**\n * @deprecated\n *\n * **We recommend using the `configureStore` method\n * of the `@reduxjs/toolkit` package**, which replaces `createStore`.\n *\n * Redux Toolkit is our recommended approach for writing Redux logic today,\n * including store setup, reducers, data fetching, and more.\n *\n * **For more details, please read this Redux docs page:**\n * **https://redux.js.org/introduction/why-rtk-is-redux-today**\n *\n * `configureStore` from Redux Toolkit is an improved version of `createStore` that\n * simplifies setup and helps avoid common bugs.\n *\n * You should not be using the `redux` core package by itself today, except for learning purposes.\n * The `createStore` method from the core `redux` package will not be removed, but we encourage\n * all users to migrate to using Redux Toolkit for all Redux code.\n *\n * If you want to use `createStore` without this visual deprecation warning, use\n * the `legacy_createStore` import instead:\n *\n * `import { legacy_createStore as createStore} from 'redux'`\n *\n */\n\nfunction createStore(reducer, preloadedState, enhancer) {\n var _ref2;\n\n if (typeof preloadedState === 'function' && typeof enhancer === 'function' || typeof enhancer === 'function' && typeof arguments[3] === 'function') {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(0) : 'It looks like you are passing several store enhancers to ' + 'createStore(). This is not supported. Instead, compose them ' + 'together to a single function. See https://redux.js.org/tutorials/fundamentals/part-4-store#creating-a-store-with-enhancers for an example.');\n }\n\n if (typeof preloadedState === 'function' && typeof enhancer === 'undefined') {\n enhancer = preloadedState;\n preloadedState = undefined;\n }\n\n if (typeof enhancer !== 'undefined') {\n if (typeof enhancer !== 'function') {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(1) : \"Expected the enhancer to be a function. Instead, received: '\" + kindOf(enhancer) + \"'\");\n }\n\n return enhancer(createStore)(reducer, preloadedState);\n }\n\n if (typeof reducer !== 'function') {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(2) : \"Expected the root reducer to be a function. Instead, received: '\" + kindOf(reducer) + \"'\");\n }\n\n var currentReducer = reducer;\n var currentState = preloadedState;\n var currentListeners = [];\n var nextListeners = currentListeners;\n var isDispatching = false;\n /**\n * This makes a shallow copy of currentListeners so we can use\n * nextListeners as a temporary list while dispatching.\n *\n * This prevents any bugs around consumers calling\n * subscribe/unsubscribe in the middle of a dispatch.\n */\n\n function ensureCanMutateNextListeners() {\n if (nextListeners === currentListeners) {\n nextListeners = currentListeners.slice();\n }\n }\n /**\n * Reads the state tree managed by the store.\n *\n * @returns {any} The current state tree of your application.\n */\n\n\n function getState() {\n if (isDispatching) {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(3) : 'You may not call store.getState() while the reducer is executing. ' + 'The reducer has already received the state as an argument. ' + 'Pass it down from the top reducer instead of reading it from the store.');\n }\n\n return currentState;\n }\n /**\n * Adds a change listener. It will be called any time an action is dispatched,\n * and some part of the state tree may potentially have changed. You may then\n * call `getState()` to read the current state tree inside the callback.\n *\n * You may call `dispatch()` from a change listener, with the following\n * caveats:\n *\n * 1. The subscriptions are snapshotted just before every `dispatch()` call.\n * If you subscribe or unsubscribe while the listeners are being invoked, this\n * will not have any effect on the `dispatch()` that is currently in progress.\n * However, the next `dispatch()` call, whether nested or not, will use a more\n * recent snapshot of the subscription list.\n *\n * 2. The listener should not expect to see all state changes, as the state\n * might have been updated multiple times during a nested `dispatch()` before\n * the listener is called. It is, however, guaranteed that all subscribers\n * registered before the `dispatch()` started will be called with the latest\n * state by the time it exits.\n *\n * @param {Function} listener A callback to be invoked on every dispatch.\n * @returns {Function} A function to remove this change listener.\n */\n\n\n function subscribe(listener) {\n if (typeof listener !== 'function') {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(4) : \"Expected the listener to be a function. Instead, received: '\" + kindOf(listener) + \"'\");\n }\n\n if (isDispatching) {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(5) : 'You may not call store.subscribe() while the reducer is executing. ' + 'If you would like to be notified after the store has been updated, subscribe from a ' + 'component and invoke store.getState() in the callback to access the latest state. ' + 'See https://redux.js.org/api/store#subscribelistener for more details.');\n }\n\n var isSubscribed = true;\n ensureCanMutateNextListeners();\n nextListeners.push(listener);\n return function unsubscribe() {\n if (!isSubscribed) {\n return;\n }\n\n if (isDispatching) {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(6) : 'You may not unsubscribe from a store listener while the reducer is executing. ' + 'See https://redux.js.org/api/store#subscribelistener for more details.');\n }\n\n isSubscribed = false;\n ensureCanMutateNextListeners();\n var index = nextListeners.indexOf(listener);\n nextListeners.splice(index, 1);\n currentListeners = null;\n };\n }\n /**\n * Dispatches an action. It is the only way to trigger a state change.\n *\n * The `reducer` function, used to create the store, will be called with the\n * current state tree and the given `action`. Its return value will\n * be considered the **next** state of the tree, and the change listeners\n * will be notified.\n *\n * The base implementation only supports plain object actions. If you want to\n * dispatch a Promise, an Observable, a thunk, or something else, you need to\n * wrap your store creating function into the corresponding middleware. For\n * example, see the documentation for the `redux-thunk` package. Even the\n * middleware will eventually dispatch plain object actions using this method.\n *\n * @param {Object} action A plain object representing “what changed”. It is\n * a good idea to keep actions serializable so you can record and replay user\n * sessions, or use the time travelling `redux-devtools`. An action must have\n * a `type` property which may not be `undefined`. It is a good idea to use\n * string constants for action types.\n *\n * @returns {Object} For convenience, the same action object you dispatched.\n *\n * Note that, if you use a custom middleware, it may wrap `dispatch()` to\n * return something else (for example, a Promise you can await).\n */\n\n\n function dispatch(action) {\n if (!isPlainObject(action)) {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(7) : \"Actions must be plain objects. Instead, the actual type was: '\" + kindOf(action) + \"'. You may need to add middleware to your store setup to handle dispatching other values, such as 'redux-thunk' to handle dispatching functions. See https://redux.js.org/tutorials/fundamentals/part-4-store#middleware and https://redux.js.org/tutorials/fundamentals/part-6-async-logic#using-the-redux-thunk-middleware for examples.\");\n }\n\n if (typeof action.type === 'undefined') {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(8) : 'Actions may not have an undefined \"type\" property. You may have misspelled an action type string constant.');\n }\n\n if (isDispatching) {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(9) : 'Reducers may not dispatch actions.');\n }\n\n try {\n isDispatching = true;\n currentState = currentReducer(currentState, action);\n } finally {\n isDispatching = false;\n }\n\n var listeners = currentListeners = nextListeners;\n\n for (var i = 0; i < listeners.length; i++) {\n var listener = listeners[i];\n listener();\n }\n\n return action;\n }\n /**\n * Replaces the reducer currently used by the store to calculate the state.\n *\n * You might need this if your app implements code splitting and you want to\n * load some of the reducers dynamically. You might also need this if you\n * implement a hot reloading mechanism for Redux.\n *\n * @param {Function} nextReducer The reducer for the store to use instead.\n * @returns {void}\n */\n\n\n function replaceReducer(nextReducer) {\n if (typeof nextReducer !== 'function') {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(10) : \"Expected the nextReducer to be a function. Instead, received: '\" + kindOf(nextReducer));\n }\n\n currentReducer = nextReducer; // This action has a similiar effect to ActionTypes.INIT.\n // Any reducers that existed in both the new and old rootReducer\n // will receive the previous state. This effectively populates\n // the new state tree with any relevant data from the old one.\n\n dispatch({\n type: ActionTypes.REPLACE\n });\n }\n /**\n * Interoperability point for observable/reactive libraries.\n * @returns {observable} A minimal observable of state changes.\n * For more information, see the observable proposal:\n * https://github.com/tc39/proposal-observable\n */\n\n\n function observable() {\n var _ref;\n\n var outerSubscribe = subscribe;\n return _ref = {\n /**\n * The minimal observable subscription method.\n * @param {Object} observer Any object that can be used as an observer.\n * The observer object should have a `next` method.\n * @returns {subscription} An object with an `unsubscribe` method that can\n * be used to unsubscribe the observable from the store, and prevent further\n * emission of values from the observable.\n */\n subscribe: function subscribe(observer) {\n if (typeof observer !== 'object' || observer === null) {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(11) : \"Expected the observer to be an object. Instead, received: '\" + kindOf(observer) + \"'\");\n }\n\n function observeState() {\n if (observer.next) {\n observer.next(getState());\n }\n }\n\n observeState();\n var unsubscribe = outerSubscribe(observeState);\n return {\n unsubscribe: unsubscribe\n };\n }\n }, _ref[$$observable] = function () {\n return this;\n }, _ref;\n } // When a store is created, an \"INIT\" action is dispatched so that every\n // reducer returns their initial state. This effectively populates\n // the initial state tree.\n\n\n dispatch({\n type: ActionTypes.INIT\n });\n return _ref2 = {\n dispatch: dispatch,\n subscribe: subscribe,\n getState: getState,\n replaceReducer: replaceReducer\n }, _ref2[$$observable] = observable, _ref2;\n}\n/**\n * Creates a Redux store that holds the state tree.\n *\n * **We recommend using `configureStore` from the\n * `@reduxjs/toolkit` package**, which replaces `createStore`:\n * **https://redux.js.org/introduction/why-rtk-is-redux-today**\n *\n * The only way to change the data in the store is to call `dispatch()` on it.\n *\n * There should only be a single store in your app. To specify how different\n * parts of the state tree respond to actions, you may combine several reducers\n * into a single reducer function by using `combineReducers`.\n *\n * @param {Function} reducer A function that returns the next state tree, given\n * the current state tree and the action to handle.\n *\n * @param {any} [preloadedState] The initial state. You may optionally specify it\n * to hydrate the state from the server in universal apps, or to restore a\n * previously serialized user session.\n * If you use `combineReducers` to produce the root reducer function, this must be\n * an object with the same shape as `combineReducers` keys.\n *\n * @param {Function} [enhancer] The store enhancer. You may optionally specify it\n * to enhance the store with third-party capabilities such as middleware,\n * time travel, persistence, etc. The only store enhancer that ships with Redux\n * is `applyMiddleware()`.\n *\n * @returns {Store} A Redux store that lets you read the state, dispatch actions\n * and subscribe to changes.\n */\n\nvar legacy_createStore = createStore;\n\n/**\n * Prints a warning in the console if it exists.\n *\n * @param {String} message The warning message.\n * @returns {void}\n */\nfunction warning(message) {\n /* eslint-disable no-console */\n if (typeof console !== 'undefined' && typeof console.error === 'function') {\n console.error(message);\n }\n /* eslint-enable no-console */\n\n\n try {\n // This error was thrown as a convenience so that if you enable\n // \"break on all exceptions\" in your console,\n // it would pause the execution at this line.\n throw new Error(message);\n } catch (e) {} // eslint-disable-line no-empty\n\n}\n\nfunction getUnexpectedStateShapeWarningMessage(inputState, reducers, action, unexpectedKeyCache) {\n var reducerKeys = Object.keys(reducers);\n var argumentName = action && action.type === ActionTypes.INIT ? 'preloadedState argument passed to createStore' : 'previous state received by the reducer';\n\n if (reducerKeys.length === 0) {\n return 'Store does not have a valid reducer. Make sure the argument passed ' + 'to combineReducers is an object whose values are reducers.';\n }\n\n if (!isPlainObject(inputState)) {\n return \"The \" + argumentName + \" has unexpected type of \\\"\" + kindOf(inputState) + \"\\\". Expected argument to be an object with the following \" + (\"keys: \\\"\" + reducerKeys.join('\", \"') + \"\\\"\");\n }\n\n var unexpectedKeys = Object.keys(inputState).filter(function (key) {\n return !reducers.hasOwnProperty(key) && !unexpectedKeyCache[key];\n });\n unexpectedKeys.forEach(function (key) {\n unexpectedKeyCache[key] = true;\n });\n if (action && action.type === ActionTypes.REPLACE) return;\n\n if (unexpectedKeys.length > 0) {\n return \"Unexpected \" + (unexpectedKeys.length > 1 ? 'keys' : 'key') + \" \" + (\"\\\"\" + unexpectedKeys.join('\", \"') + \"\\\" found in \" + argumentName + \". \") + \"Expected to find one of the known reducer keys instead: \" + (\"\\\"\" + reducerKeys.join('\", \"') + \"\\\". Unexpected keys will be ignored.\");\n }\n}\n\nfunction assertReducerShape(reducers) {\n Object.keys(reducers).forEach(function (key) {\n var reducer = reducers[key];\n var initialState = reducer(undefined, {\n type: ActionTypes.INIT\n });\n\n if (typeof initialState === 'undefined') {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(12) : \"The slice reducer for key \\\"\" + key + \"\\\" returned undefined during initialization. \" + \"If the state passed to the reducer is undefined, you must \" + \"explicitly return the initial state. The initial state may \" + \"not be undefined. If you don't want to set a value for this reducer, \" + \"you can use null instead of undefined.\");\n }\n\n if (typeof reducer(undefined, {\n type: ActionTypes.PROBE_UNKNOWN_ACTION()\n }) === 'undefined') {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(13) : \"The slice reducer for key \\\"\" + key + \"\\\" returned undefined when probed with a random type. \" + (\"Don't try to handle '\" + ActionTypes.INIT + \"' or other actions in \\\"redux/*\\\" \") + \"namespace. They are considered private. Instead, you must return the \" + \"current state for any unknown actions, unless it is undefined, \" + \"in which case you must return the initial state, regardless of the \" + \"action type. The initial state may not be undefined, but can be null.\");\n }\n });\n}\n/**\n * Turns an object whose values are different reducer functions, into a single\n * reducer function. It will call every child reducer, and gather their results\n * into a single state object, whose keys correspond to the keys of the passed\n * reducer functions.\n *\n * @param {Object} reducers An object whose values correspond to different\n * reducer functions that need to be combined into one. One handy way to obtain\n * it is to use ES6 `import * as reducers` syntax. The reducers may never return\n * undefined for any action. Instead, they should return their initial state\n * if the state passed to them was undefined, and the current state for any\n * unrecognized action.\n *\n * @returns {Function} A reducer function that invokes every reducer inside the\n * passed object, and builds a state object with the same shape.\n */\n\n\nfunction combineReducers(reducers) {\n var reducerKeys = Object.keys(reducers);\n var finalReducers = {};\n\n for (var i = 0; i < reducerKeys.length; i++) {\n var key = reducerKeys[i];\n\n if (process.env.NODE_ENV !== 'production') {\n if (typeof reducers[key] === 'undefined') {\n warning(\"No reducer provided for key \\\"\" + key + \"\\\"\");\n }\n }\n\n if (typeof reducers[key] === 'function') {\n finalReducers[key] = reducers[key];\n }\n }\n\n var finalReducerKeys = Object.keys(finalReducers); // This is used to make sure we don't warn about the same\n // keys multiple times.\n\n var unexpectedKeyCache;\n\n if (process.env.NODE_ENV !== 'production') {\n unexpectedKeyCache = {};\n }\n\n var shapeAssertionError;\n\n try {\n assertReducerShape(finalReducers);\n } catch (e) {\n shapeAssertionError = e;\n }\n\n return function combination(state, action) {\n if (state === void 0) {\n state = {};\n }\n\n if (shapeAssertionError) {\n throw shapeAssertionError;\n }\n\n if (process.env.NODE_ENV !== 'production') {\n var warningMessage = getUnexpectedStateShapeWarningMessage(state, finalReducers, action, unexpectedKeyCache);\n\n if (warningMessage) {\n warning(warningMessage);\n }\n }\n\n var hasChanged = false;\n var nextState = {};\n\n for (var _i = 0; _i < finalReducerKeys.length; _i++) {\n var _key = finalReducerKeys[_i];\n var reducer = finalReducers[_key];\n var previousStateForKey = state[_key];\n var nextStateForKey = reducer(previousStateForKey, action);\n\n if (typeof nextStateForKey === 'undefined') {\n var actionType = action && action.type;\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(14) : \"When called with an action of type \" + (actionType ? \"\\\"\" + String(actionType) + \"\\\"\" : '(unknown type)') + \", the slice reducer for key \\\"\" + _key + \"\\\" returned undefined. \" + \"To ignore an action, you must explicitly return the previous state. \" + \"If you want this reducer to hold no value, you can return null instead of undefined.\");\n }\n\n nextState[_key] = nextStateForKey;\n hasChanged = hasChanged || nextStateForKey !== previousStateForKey;\n }\n\n hasChanged = hasChanged || finalReducerKeys.length !== Object.keys(state).length;\n return hasChanged ? nextState : state;\n };\n}\n\nfunction bindActionCreator(actionCreator, dispatch) {\n return function () {\n return dispatch(actionCreator.apply(this, arguments));\n };\n}\n/**\n * Turns an object whose values are action creators, into an object with the\n * same keys, but with every function wrapped into a `dispatch` call so they\n * may be invoked directly. This is just a convenience method, as you can call\n * `store.dispatch(MyActionCreators.doSomething())` yourself just fine.\n *\n * For convenience, you can also pass an action creator as the first argument,\n * and get a dispatch wrapped function in return.\n *\n * @param {Function|Object} actionCreators An object whose values are action\n * creator functions. One handy way to obtain it is to use ES6 `import * as`\n * syntax. You may also pass a single function.\n *\n * @param {Function} dispatch The `dispatch` function available on your Redux\n * store.\n *\n * @returns {Function|Object} The object mimicking the original object, but with\n * every action creator wrapped into the `dispatch` call. If you passed a\n * function as `actionCreators`, the return value will also be a single\n * function.\n */\n\n\nfunction bindActionCreators(actionCreators, dispatch) {\n if (typeof actionCreators === 'function') {\n return bindActionCreator(actionCreators, dispatch);\n }\n\n if (typeof actionCreators !== 'object' || actionCreators === null) {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(16) : \"bindActionCreators expected an object or a function, but instead received: '\" + kindOf(actionCreators) + \"'. \" + \"Did you write \\\"import ActionCreators from\\\" instead of \\\"import * as ActionCreators from\\\"?\");\n }\n\n var boundActionCreators = {};\n\n for (var key in actionCreators) {\n var actionCreator = actionCreators[key];\n\n if (typeof actionCreator === 'function') {\n boundActionCreators[key] = bindActionCreator(actionCreator, dispatch);\n }\n }\n\n return boundActionCreators;\n}\n\n/**\n * Composes single-argument functions from right to left. The rightmost\n * function can take multiple arguments as it provides the signature for\n * the resulting composite function.\n *\n * @param {...Function} funcs The functions to compose.\n * @returns {Function} A function obtained by composing the argument functions\n * from right to left. For example, compose(f, g, h) is identical to doing\n * (...args) => f(g(h(...args))).\n */\nfunction compose() {\n for (var _len = arguments.length, funcs = new Array(_len), _key = 0; _key < _len; _key++) {\n funcs[_key] = arguments[_key];\n }\n\n if (funcs.length === 0) {\n return function (arg) {\n return arg;\n };\n }\n\n if (funcs.length === 1) {\n return funcs[0];\n }\n\n return funcs.reduce(function (a, b) {\n return function () {\n return a(b.apply(void 0, arguments));\n };\n });\n}\n\n/**\n * Creates a store enhancer that applies middleware to the dispatch method\n * of the Redux store. This is handy for a variety of tasks, such as expressing\n * asynchronous actions in a concise manner, or logging every action payload.\n *\n * See `redux-thunk` package as an example of the Redux middleware.\n *\n * Because middleware is potentially asynchronous, this should be the first\n * store enhancer in the composition chain.\n *\n * Note that each middleware will be given the `dispatch` and `getState` functions\n * as named arguments.\n *\n * @param {...Function} middlewares The middleware chain to be applied.\n * @returns {Function} A store enhancer applying the middleware.\n */\n\nfunction applyMiddleware() {\n for (var _len = arguments.length, middlewares = new Array(_len), _key = 0; _key < _len; _key++) {\n middlewares[_key] = arguments[_key];\n }\n\n return function (createStore) {\n return function () {\n var store = createStore.apply(void 0, arguments);\n\n var _dispatch = function dispatch() {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(15) : 'Dispatching while constructing your middleware is not allowed. ' + 'Other middleware would not be applied to this dispatch.');\n };\n\n var middlewareAPI = {\n getState: store.getState,\n dispatch: function dispatch() {\n return _dispatch.apply(void 0, arguments);\n }\n };\n var chain = middlewares.map(function (middleware) {\n return middleware(middlewareAPI);\n });\n _dispatch = compose.apply(void 0, chain)(store.dispatch);\n return _objectSpread(_objectSpread({}, store), {}, {\n dispatch: _dispatch\n });\n };\n };\n}\n\n/*\n * This is a dummy function to check if the function name has been altered by minification.\n * If the function has been minified and NODE_ENV !== 'production', warn the user.\n */\n\nfunction isCrushed() {}\n\nif (process.env.NODE_ENV !== 'production' && typeof isCrushed.name === 'string' && isCrushed.name !== 'isCrushed') {\n warning('You are currently using minified code outside of NODE_ENV === \"production\". ' + 'This means that you are running a slower development build of Redux. ' + 'You can use loose-envify (https://github.com/zertosh/loose-envify) for browserify ' + 'or setting mode to production in webpack (https://webpack.js.org/concepts/mode/) ' + 'to ensure you have the correct code for your production build.');\n}\n\nexport { ActionTypes as __DO_NOT_USE__ActionTypes, applyMiddleware, bindActionCreators, combineReducers, compose, createStore, legacy_createStore };\n","/**\n * Use invariant() to assert state which your program assumes to be true.\n *\n * Provide sprintf-style format (only %s is supported) and arguments\n * to provide information about what broke and what you were\n * expecting.\n *\n * The invariant message will be stripped in production, but the invariant\n * will remain to ensure logic does not differ in production.\n */\n\nexport function invariant(condition: any, format: string, ...args: any[]) {\n\tif (isProduction()) {\n\t\tif (format === undefined) {\n\t\t\tthrow new Error('invariant requires an error message argument')\n\t\t}\n\t}\n\n\tif (!condition) {\n\t\tlet error\n\t\tif (format === undefined) {\n\t\t\terror = new Error(\n\t\t\t\t'Minified exception occurred; use the non-minified dev environment ' +\n\t\t\t\t\t'for the full error message and additional helpful warnings.',\n\t\t\t)\n\t\t} else {\n\t\t\tlet argIndex = 0\n\t\t\terror = new Error(\n\t\t\t\tformat.replace(/%s/g, function () {\n\t\t\t\t\treturn args[argIndex++]\n\t\t\t\t}),\n\t\t\t)\n\t\t\terror.name = 'Invariant Violation'\n\t\t}\n\n\t\t;(error as any).framesToPop = 1 // we don't care about invariant's own frame\n\t\tthrow error\n\t}\n}\n\nfunction isProduction() {\n\treturn (\n\t\ttypeof process !== 'undefined' && process.env['NODE_ENV'] === 'production'\n\t)\n}\n","// cheap lodash replacements\n\n/**\n * drop-in replacement for _.get\n * @param obj\n * @param path\n * @param defaultValue\n */\nexport function get(obj: any, path: string, defaultValue: T): T {\n\treturn path\n\t\t.split('.')\n\t\t.reduce((a, c) => (a && a[c] ? a[c] : defaultValue || null), obj) as T\n}\n\n/**\n * drop-in replacement for _.without\n */\nexport function without(items: T[], item: T): T[] {\n\treturn items.filter((i) => i !== item)\n}\n\n/**\n * drop-in replacement for _.isString\n * @param input\n */\nexport function isString(input: any): boolean {\n\treturn typeof input === 'string'\n}\n\n/**\n * drop-in replacement for _.isString\n * @param input\n */\nexport function isObject(input: any): boolean {\n\treturn typeof input === 'object'\n}\n\n/**\n * replacement for _.xor\n * @param itemsA\n * @param itemsB\n */\nexport function xor(itemsA: T[], itemsB: T[]): T[] {\n\tconst map = new Map()\n\tconst insertItem = (item: T) => {\n\t\tmap.set(item, map.has(item) ? (map.get(item) as number) + 1 : 1)\n\t}\n\titemsA.forEach(insertItem)\n\titemsB.forEach(insertItem)\n\n\tconst result: T[] = []\n\tmap.forEach((count, key) => {\n\t\tif (count === 1) {\n\t\t\tresult.push(key)\n\t\t}\n\t})\n\treturn result\n}\n\n/**\n * replacement for _.intersection\n * @param itemsA\n * @param itemsB\n */\nexport function intersection(itemsA: T[], itemsB: T[]): T[] {\n\treturn itemsA.filter((t) => itemsB.indexOf(t) > -1)\n}\n","export const INIT_COORDS = 'dnd-core/INIT_COORDS'\nexport const BEGIN_DRAG = 'dnd-core/BEGIN_DRAG'\nexport const PUBLISH_DRAG_SOURCE = 'dnd-core/PUBLISH_DRAG_SOURCE'\nexport const HOVER = 'dnd-core/HOVER'\nexport const DROP = 'dnd-core/DROP'\nexport const END_DRAG = 'dnd-core/END_DRAG'\n","import type { AnyAction } from 'redux'\n\nimport type { XYCoord } from '../../../interfaces.js'\nimport { INIT_COORDS } from '../types.js'\n\nexport function setClientOffset(\n\tclientOffset: XYCoord | null | undefined,\n\tsourceClientOffset?: XYCoord | null | undefined,\n): AnyAction {\n\treturn {\n\t\ttype: INIT_COORDS,\n\t\tpayload: {\n\t\t\tsourceClientOffset: sourceClientOffset || null,\n\t\t\tclientOffset: clientOffset || null,\n\t\t},\n\t}\n}\n","import { invariant } from '@react-dnd/invariant'\n\nimport type {\n\tAction,\n\tBeginDragOptions,\n\tBeginDragPayload,\n\tDragDropManager,\n\tDragDropMonitor,\n\tHandlerRegistry,\n\tIdentifier,\n\tXYCoord,\n} from '../../interfaces.js'\nimport { isObject } from '../../utils/js_utils.js'\nimport { setClientOffset } from './local/setClientOffset.js'\nimport { BEGIN_DRAG, INIT_COORDS } from './types.js'\n\nconst ResetCoordinatesAction = {\n\ttype: INIT_COORDS,\n\tpayload: {\n\t\tclientOffset: null,\n\t\tsourceClientOffset: null,\n\t},\n}\n\nexport function createBeginDrag(manager: DragDropManager) {\n\treturn function beginDrag(\n\t\tsourceIds: Identifier[] = [],\n\t\toptions: BeginDragOptions = {\n\t\t\tpublishSource: true,\n\t\t},\n\t): Action | undefined {\n\t\tconst {\n\t\t\tpublishSource = true,\n\t\t\tclientOffset,\n\t\t\tgetSourceClientOffset,\n\t\t}: BeginDragOptions = options\n\t\tconst monitor = manager.getMonitor()\n\t\tconst registry = manager.getRegistry()\n\n\t\t// Initialize the coordinates using the client offset\n\t\tmanager.dispatch(setClientOffset(clientOffset))\n\n\t\tverifyInvariants(sourceIds, monitor, registry)\n\n\t\t// Get the draggable source\n\t\tconst sourceId = getDraggableSource(sourceIds, monitor)\n\t\tif (sourceId == null) {\n\t\t\tmanager.dispatch(ResetCoordinatesAction)\n\t\t\treturn\n\t\t}\n\n\t\t// Get the source client offset\n\t\tlet sourceClientOffset: XYCoord | null = null\n\t\tif (clientOffset) {\n\t\t\tif (!getSourceClientOffset) {\n\t\t\t\tthrow new Error('getSourceClientOffset must be defined')\n\t\t\t}\n\t\t\tverifyGetSourceClientOffsetIsFunction(getSourceClientOffset)\n\t\t\tsourceClientOffset = getSourceClientOffset(sourceId)\n\t\t}\n\n\t\t// Initialize the full coordinates\n\t\tmanager.dispatch(setClientOffset(clientOffset, sourceClientOffset))\n\n\t\tconst source = registry.getSource(sourceId)\n\t\tconst item = source.beginDrag(monitor, sourceId)\n\t\t// If source.beginDrag returns null, this is an indicator to cancel the drag\n\t\tif (item == null) {\n\t\t\treturn undefined\n\t\t}\n\t\tverifyItemIsObject(item)\n\t\tregistry.pinSource(sourceId)\n\n\t\tconst itemType = registry.getSourceType(sourceId)\n\t\treturn {\n\t\t\ttype: BEGIN_DRAG,\n\t\t\tpayload: {\n\t\t\t\titemType,\n\t\t\t\titem,\n\t\t\t\tsourceId,\n\t\t\t\tclientOffset: clientOffset || null,\n\t\t\t\tsourceClientOffset: sourceClientOffset || null,\n\t\t\t\tisSourcePublic: !!publishSource,\n\t\t\t},\n\t\t}\n\t}\n}\n\nfunction verifyInvariants(\n\tsourceIds: Identifier[],\n\tmonitor: DragDropMonitor,\n\tregistry: HandlerRegistry,\n) {\n\tinvariant(!monitor.isDragging(), 'Cannot call beginDrag while dragging.')\n\tsourceIds.forEach(function (sourceId) {\n\t\tinvariant(\n\t\t\tregistry.getSource(sourceId),\n\t\t\t'Expected sourceIds to be registered.',\n\t\t)\n\t})\n}\n\nfunction verifyGetSourceClientOffsetIsFunction(getSourceClientOffset: any) {\n\tinvariant(\n\t\ttypeof getSourceClientOffset === 'function',\n\t\t'When clientOffset is provided, getSourceClientOffset must be a function.',\n\t)\n}\n\nfunction verifyItemIsObject(item: any) {\n\tinvariant(isObject(item), 'Item must be an object.')\n}\n\nfunction getDraggableSource(sourceIds: Identifier[], monitor: DragDropMonitor) {\n\tlet sourceId = null\n\tfor (let i = sourceIds.length - 1; i >= 0; i--) {\n\t\tif (monitor.canDragSource(sourceIds[i])) {\n\t\t\tsourceId = sourceIds[i]\n\t\t\tbreak\n\t\t}\n\t}\n\treturn sourceId\n}\n","import { invariant } from '@react-dnd/invariant'\n\nimport type {\n\tAction,\n\tDragDropManager,\n\tDragDropMonitor,\n\tDropPayload,\n\tHandlerRegistry,\n\tIdentifier,\n} from '../../interfaces.js'\nimport { isObject } from '../../utils/js_utils.js'\nimport { DROP } from './types.js'\n\nexport function createDrop(manager: DragDropManager) {\n\treturn function drop(options = {}): void {\n\t\tconst monitor = manager.getMonitor()\n\t\tconst registry = manager.getRegistry()\n\t\tverifyInvariants(monitor)\n\t\tconst targetIds = getDroppableTargets(monitor)\n\n\t\t// Multiple actions are dispatched here, which is why this doesn't return an action\n\t\ttargetIds.forEach((targetId, index) => {\n\t\t\tconst dropResult = determineDropResult(targetId, index, registry, monitor)\n\t\t\tconst action: Action = {\n\t\t\t\ttype: DROP,\n\t\t\t\tpayload: {\n\t\t\t\t\tdropResult: {\n\t\t\t\t\t\t...options,\n\t\t\t\t\t\t...dropResult,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t}\n\t\t\tmanager.dispatch(action)\n\t\t})\n\t}\n}\n\nfunction verifyInvariants(monitor: DragDropMonitor) {\n\tinvariant(monitor.isDragging(), 'Cannot call drop while not dragging.')\n\tinvariant(\n\t\t!monitor.didDrop(),\n\t\t'Cannot call drop twice during one drag operation.',\n\t)\n}\n\nfunction determineDropResult(\n\ttargetId: Identifier,\n\tindex: number,\n\tregistry: HandlerRegistry,\n\tmonitor: DragDropMonitor,\n) {\n\tconst target = registry.getTarget(targetId)\n\tlet dropResult = target ? target.drop(monitor, targetId) : undefined\n\tverifyDropResultType(dropResult)\n\tif (typeof dropResult === 'undefined') {\n\t\tdropResult = index === 0 ? {} : monitor.getDropResult()\n\t}\n\treturn dropResult\n}\n\nfunction verifyDropResultType(dropResult: any) {\n\tinvariant(\n\t\ttypeof dropResult === 'undefined' || isObject(dropResult),\n\t\t'Drop result must either be an object or undefined.',\n\t)\n}\n\nfunction getDroppableTargets(monitor: DragDropMonitor) {\n\tconst targetIds = monitor\n\t\t.getTargetIds()\n\t\t.filter(monitor.canDropOnTarget, monitor)\n\ttargetIds.reverse()\n\treturn targetIds\n}\n","import { invariant } from '@react-dnd/invariant'\n\nimport type {\n\tDragDropManager,\n\tDragDropMonitor,\n\tSentinelAction,\n} from '../../interfaces.js'\nimport { END_DRAG } from './types.js'\n\nexport function createEndDrag(manager: DragDropManager) {\n\treturn function endDrag(): SentinelAction {\n\t\tconst monitor = manager.getMonitor()\n\t\tconst registry = manager.getRegistry()\n\t\tverifyIsDragging(monitor)\n\n\t\tconst sourceId = monitor.getSourceId()\n\t\tif (sourceId != null) {\n\t\t\tconst source = registry.getSource(sourceId, true)\n\t\t\tsource.endDrag(monitor, sourceId)\n\t\t\tregistry.unpinSource()\n\t\t}\n\t\treturn { type: END_DRAG }\n\t}\n}\n\nfunction verifyIsDragging(monitor: DragDropMonitor) {\n\tinvariant(monitor.isDragging(), 'Cannot call endDrag while not dragging.')\n}\n","import type { Identifier } from '../interfaces.js'\n\nexport function matchesType(\n\ttargetType: Identifier | Identifier[] | null,\n\tdraggedItemType: Identifier | null,\n): boolean {\n\tif (draggedItemType === null) {\n\t\treturn targetType === null\n\t}\n\treturn Array.isArray(targetType)\n\t\t? (targetType as Identifier[]).some((t) => t === draggedItemType)\n\t\t: targetType === draggedItemType\n}\n","import { invariant } from '@react-dnd/invariant'\n\nimport type {\n\tAction,\n\tDragDropManager,\n\tDragDropMonitor,\n\tHandlerRegistry,\n\tHoverOptions,\n\tHoverPayload,\n\tIdentifier,\n} from '../../interfaces.js'\nimport { matchesType } from '../../utils/matchesType.js'\nimport { HOVER } from './types.js'\n\nexport function createHover(manager: DragDropManager) {\n\treturn function hover(\n\t\ttargetIdsArg: string[],\n\t\t{ clientOffset }: HoverOptions = {},\n\t): Action {\n\t\tverifyTargetIdsIsArray(targetIdsArg)\n\t\tconst targetIds = targetIdsArg.slice(0)\n\t\tconst monitor = manager.getMonitor()\n\t\tconst registry = manager.getRegistry()\n\t\tconst draggedItemType = monitor.getItemType()\n\t\tremoveNonMatchingTargetIds(targetIds, registry, draggedItemType)\n\t\tcheckInvariants(targetIds, monitor, registry)\n\t\thoverAllTargets(targetIds, monitor, registry)\n\n\t\treturn {\n\t\t\ttype: HOVER,\n\t\t\tpayload: {\n\t\t\t\ttargetIds,\n\t\t\t\tclientOffset: clientOffset || null,\n\t\t\t},\n\t\t}\n\t}\n}\n\nfunction verifyTargetIdsIsArray(targetIdsArg: string[]) {\n\tinvariant(Array.isArray(targetIdsArg), 'Expected targetIds to be an array.')\n}\n\nfunction checkInvariants(\n\ttargetIds: string[],\n\tmonitor: DragDropMonitor,\n\tregistry: HandlerRegistry,\n) {\n\tinvariant(monitor.isDragging(), 'Cannot call hover while not dragging.')\n\tinvariant(!monitor.didDrop(), 'Cannot call hover after drop.')\n\tfor (let i = 0; i < targetIds.length; i++) {\n\t\tconst targetId = targetIds[i] as string\n\t\tinvariant(\n\t\t\ttargetIds.lastIndexOf(targetId) === i,\n\t\t\t'Expected targetIds to be unique in the passed array.',\n\t\t)\n\n\t\tconst target = registry.getTarget(targetId)\n\t\tinvariant(target, 'Expected targetIds to be registered.')\n\t}\n}\n\nfunction removeNonMatchingTargetIds(\n\ttargetIds: string[],\n\tregistry: HandlerRegistry,\n\tdraggedItemType: Identifier | null,\n) {\n\t// Remove those targetIds that don't match the targetType. This\n\t// fixes shallow isOver which would only be non-shallow because of\n\t// non-matching targets.\n\tfor (let i = targetIds.length - 1; i >= 0; i--) {\n\t\tconst targetId = targetIds[i] as string\n\t\tconst targetType = registry.getTargetType(targetId)\n\t\tif (!matchesType(targetType, draggedItemType)) {\n\t\t\ttargetIds.splice(i, 1)\n\t\t}\n\t}\n}\n\nfunction hoverAllTargets(\n\ttargetIds: string[],\n\tmonitor: DragDropMonitor,\n\tregistry: HandlerRegistry,\n) {\n\t// Finally call hover on all matching targets.\n\ttargetIds.forEach(function (targetId) {\n\t\tconst target = registry.getTarget(targetId)\n\t\ttarget.hover(monitor, targetId)\n\t})\n}\n","import type { DragDropManager, SentinelAction } from '../../interfaces.js'\nimport { PUBLISH_DRAG_SOURCE } from './types.js'\n\nexport function createPublishDragSource(manager: DragDropManager) {\n\treturn function publishDragSource(): SentinelAction | undefined {\n\t\tconst monitor = manager.getMonitor()\n\t\tif (monitor.isDragging()) {\n\t\t\treturn { type: PUBLISH_DRAG_SOURCE }\n\t\t}\n\t\treturn\n\t}\n}\n","import type { Action, Store } from 'redux'\n\nimport { createDragDropActions } from '../actions/dragDrop/index.js'\nimport type {\n\tActionCreator,\n\tBackend,\n\tDragDropActions,\n\tDragDropManager,\n\tDragDropMonitor,\n\tHandlerRegistry,\n} from '../interfaces.js'\nimport type { State } from '../reducers/index.js'\nimport type { DragDropMonitorImpl } from './DragDropMonitorImpl.js'\n\nexport class DragDropManagerImpl implements DragDropManager {\n\tprivate store: Store\n\tprivate monitor: DragDropMonitor\n\tprivate backend: Backend | undefined\n\tprivate isSetUp = false\n\n\tpublic constructor(store: Store, monitor: DragDropMonitor) {\n\t\tthis.store = store\n\t\tthis.monitor = monitor\n\t\tstore.subscribe(this.handleRefCountChange)\n\t}\n\n\tpublic receiveBackend(backend: Backend): void {\n\t\tthis.backend = backend\n\t}\n\n\tpublic getMonitor(): DragDropMonitor {\n\t\treturn this.monitor\n\t}\n\n\tpublic getBackend(): Backend {\n\t\treturn this.backend as Backend\n\t}\n\n\tpublic getRegistry(): HandlerRegistry {\n\t\treturn (this.monitor as DragDropMonitorImpl).registry\n\t}\n\n\tpublic getActions(): DragDropActions {\n\t\t/* eslint-disable-next-line @typescript-eslint/no-this-alias */\n\t\tconst manager = this\n\t\tconst { dispatch } = this.store\n\n\t\tfunction bindActionCreator(actionCreator: ActionCreator) {\n\t\t\treturn (...args: any[]) => {\n\t\t\t\tconst action = actionCreator.apply(manager, args as any)\n\t\t\t\tif (typeof action !== 'undefined') {\n\t\t\t\t\tdispatch(action)\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tconst actions = createDragDropActions(this)\n\n\t\treturn Object.keys(actions).reduce(\n\t\t\t(boundActions: DragDropActions, key: string) => {\n\t\t\t\tconst action: ActionCreator = (actions as any)[\n\t\t\t\t\tkey\n\t\t\t\t] as ActionCreator\n\t\t\t\t;(boundActions as any)[key] = bindActionCreator(action)\n\t\t\t\treturn boundActions\n\t\t\t},\n\t\t\t{} as DragDropActions,\n\t\t)\n\t}\n\n\tpublic dispatch(action: Action): void {\n\t\tthis.store.dispatch(action)\n\t}\n\n\tprivate handleRefCountChange = (): void => {\n\t\tconst shouldSetUp = this.store.getState().refCount > 0\n\t\tif (this.backend) {\n\t\t\tif (shouldSetUp && !this.isSetUp) {\n\t\t\t\tthis.backend.setup()\n\t\t\t\tthis.isSetUp = true\n\t\t\t} else if (!shouldSetUp && this.isSetUp) {\n\t\t\t\tthis.backend.teardown()\n\t\t\t\tthis.isSetUp = false\n\t\t\t}\n\t\t}\n\t}\n}\n","import type { DragDropActions, DragDropManager } from '../../interfaces.js'\nimport { createBeginDrag } from './beginDrag.js'\nimport { createDrop } from './drop.js'\nimport { createEndDrag } from './endDrag.js'\nimport { createHover } from './hover.js'\nimport { createPublishDragSource } from './publishDragSource.js'\n\nexport * from './types.js'\n\nexport function createDragDropActions(\n\tmanager: DragDropManager,\n): DragDropActions {\n\treturn {\n\t\tbeginDrag: createBeginDrag(manager),\n\t\tpublishDragSource: createPublishDragSource(manager),\n\t\thover: createHover(manager),\n\t\tdrop: createDrop(manager),\n\t\tendDrag: createEndDrag(manager),\n\t}\n}\n","import type { XYCoord } from '../interfaces.js'\nimport type { State } from '../reducers/dragOffset.js'\n\n/**\n * Coordinate addition\n * @param a The first coordinate\n * @param b The second coordinate\n */\nexport function add(a: XYCoord, b: XYCoord): XYCoord {\n\treturn {\n\t\tx: a.x + b.x,\n\t\ty: a.y + b.y,\n\t}\n}\n\n/**\n * Coordinate subtraction\n * @param a The first coordinate\n * @param b The second coordinate\n */\nexport function subtract(a: XYCoord, b: XYCoord): XYCoord {\n\treturn {\n\t\tx: a.x - b.x,\n\t\ty: a.y - b.y,\n\t}\n}\n\n/**\n * Returns the cartesian distance of the drag source component's position, based on its position\n * at the time when the current drag operation has started, and the movement difference.\n *\n * Returns null if no item is being dragged.\n *\n * @param state The offset state to compute from\n */\nexport function getSourceClientOffset(state: State): XYCoord | null {\n\tconst { clientOffset, initialClientOffset, initialSourceClientOffset } = state\n\tif (!clientOffset || !initialClientOffset || !initialSourceClientOffset) {\n\t\treturn null\n\t}\n\treturn subtract(\n\t\tadd(clientOffset, initialSourceClientOffset),\n\t\tinitialClientOffset,\n\t)\n}\n\n/**\n * Determines the x,y offset between the client offset and the initial client offset\n *\n * @param state The offset state to compute from\n */\nexport function getDifferenceFromInitialOffset(state: State): XYCoord | null {\n\tconst { clientOffset, initialClientOffset } = state\n\tif (!clientOffset || !initialClientOffset) {\n\t\treturn null\n\t}\n\treturn subtract(clientOffset, initialClientOffset)\n}\n","import { intersection } from './js_utils.js'\n\nexport const NONE: string[] = []\nexport const ALL: string[] = []\n// Add these flags for debug\n;(NONE as any).__IS_NONE__ = true\n;(ALL as any).__IS_ALL__ = true\n\n/**\n * Determines if the given handler IDs are dirty or not.\n *\n * @param dirtyIds The set of dirty handler ids\n * @param handlerIds The set of handler ids to check\n */\nexport function areDirty(\n\tdirtyIds: string[],\n\thandlerIds: string[] | undefined,\n): boolean {\n\tif (dirtyIds === NONE) {\n\t\treturn false\n\t}\n\n\tif (dirtyIds === ALL || typeof handlerIds === 'undefined') {\n\t\treturn true\n\t}\n\n\tconst commonIds = intersection(handlerIds, dirtyIds)\n\treturn commonIds.length > 0\n}\n","import { invariant } from '@react-dnd/invariant'\nimport type { Store } from 'redux'\n\nimport type {\n\tDragDropMonitor,\n\tHandlerRegistry,\n\tIdentifier,\n\tListener,\n\tUnsubscribe,\n\tXYCoord,\n} from '../interfaces.js'\nimport type { State } from '../reducers/index.js'\nimport {\n\tgetDifferenceFromInitialOffset,\n\tgetSourceClientOffset,\n} from '../utils/coords.js'\nimport { areDirty } from '../utils/dirtiness.js'\nimport { matchesType } from '../utils/matchesType.js'\n\nexport class DragDropMonitorImpl implements DragDropMonitor {\n\tprivate store: Store\n\tpublic readonly registry: HandlerRegistry\n\n\tpublic constructor(store: Store, registry: HandlerRegistry) {\n\t\tthis.store = store\n\t\tthis.registry = registry\n\t}\n\n\tpublic subscribeToStateChange(\n\t\tlistener: Listener,\n\t\toptions: { handlerIds?: string[] } = {},\n\t): Unsubscribe {\n\t\tconst { handlerIds } = options\n\t\tinvariant(typeof listener === 'function', 'listener must be a function.')\n\t\tinvariant(\n\t\t\ttypeof handlerIds === 'undefined' || Array.isArray(handlerIds),\n\t\t\t'handlerIds, when specified, must be an array of strings.',\n\t\t)\n\n\t\tlet prevStateId = this.store.getState().stateId\n\t\tconst handleChange = () => {\n\t\t\tconst state = this.store.getState()\n\t\t\tconst currentStateId = state.stateId\n\t\t\ttry {\n\t\t\t\tconst canSkipListener =\n\t\t\t\t\tcurrentStateId === prevStateId ||\n\t\t\t\t\t(currentStateId === prevStateId + 1 &&\n\t\t\t\t\t\t!areDirty(state.dirtyHandlerIds, handlerIds))\n\n\t\t\t\tif (!canSkipListener) {\n\t\t\t\t\tlistener()\n\t\t\t\t}\n\t\t\t} finally {\n\t\t\t\tprevStateId = currentStateId\n\t\t\t}\n\t\t}\n\n\t\treturn this.store.subscribe(handleChange)\n\t}\n\n\tpublic subscribeToOffsetChange(listener: Listener): Unsubscribe {\n\t\tinvariant(typeof listener === 'function', 'listener must be a function.')\n\n\t\tlet previousState = this.store.getState().dragOffset\n\t\tconst handleChange = () => {\n\t\t\tconst nextState = this.store.getState().dragOffset\n\t\t\tif (nextState === previousState) {\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\tpreviousState = nextState\n\t\t\tlistener()\n\t\t}\n\n\t\treturn this.store.subscribe(handleChange)\n\t}\n\n\tpublic canDragSource(sourceId: string | undefined): boolean {\n\t\tif (!sourceId) {\n\t\t\treturn false\n\t\t}\n\t\tconst source = this.registry.getSource(sourceId)\n\t\tinvariant(source, `Expected to find a valid source. sourceId=${sourceId}`)\n\n\t\tif (this.isDragging()) {\n\t\t\treturn false\n\t\t}\n\n\t\treturn source.canDrag(this, sourceId)\n\t}\n\n\tpublic canDropOnTarget(targetId: string | undefined): boolean {\n\t\t// undefined on initial render\n\t\tif (!targetId) {\n\t\t\treturn false\n\t\t}\n\t\tconst target = this.registry.getTarget(targetId)\n\t\tinvariant(target, `Expected to find a valid target. targetId=${targetId}`)\n\n\t\tif (!this.isDragging() || this.didDrop()) {\n\t\t\treturn false\n\t\t}\n\n\t\tconst targetType = this.registry.getTargetType(targetId)\n\t\tconst draggedItemType = this.getItemType()\n\t\treturn (\n\t\t\tmatchesType(targetType, draggedItemType) && target.canDrop(this, targetId)\n\t\t)\n\t}\n\n\tpublic isDragging(): boolean {\n\t\treturn Boolean(this.getItemType())\n\t}\n\n\tpublic isDraggingSource(sourceId: string | undefined): boolean {\n\t\t// undefined on initial render\n\t\tif (!sourceId) {\n\t\t\treturn false\n\t\t}\n\t\tconst source = this.registry.getSource(sourceId, true)\n\t\tinvariant(source, `Expected to find a valid source. sourceId=${sourceId}`)\n\n\t\tif (!this.isDragging() || !this.isSourcePublic()) {\n\t\t\treturn false\n\t\t}\n\n\t\tconst sourceType = this.registry.getSourceType(sourceId)\n\t\tconst draggedItemType = this.getItemType()\n\t\tif (sourceType !== draggedItemType) {\n\t\t\treturn false\n\t\t}\n\n\t\treturn source.isDragging(this, sourceId)\n\t}\n\n\tpublic isOverTarget(\n\t\ttargetId: string | undefined,\n\t\toptions = { shallow: false },\n\t): boolean {\n\t\t// undefined on initial render\n\t\tif (!targetId) {\n\t\t\treturn false\n\t\t}\n\n\t\tconst { shallow } = options\n\t\tif (!this.isDragging()) {\n\t\t\treturn false\n\t\t}\n\n\t\tconst targetType = this.registry.getTargetType(targetId)\n\t\tconst draggedItemType = this.getItemType()\n\t\tif (draggedItemType && !matchesType(targetType, draggedItemType)) {\n\t\t\treturn false\n\t\t}\n\n\t\tconst targetIds = this.getTargetIds()\n\t\tif (!targetIds.length) {\n\t\t\treturn false\n\t\t}\n\n\t\tconst index = targetIds.indexOf(targetId)\n\t\tif (shallow) {\n\t\t\treturn index === targetIds.length - 1\n\t\t} else {\n\t\t\treturn index > -1\n\t\t}\n\t}\n\n\tpublic getItemType(): Identifier {\n\t\treturn this.store.getState().dragOperation.itemType as Identifier\n\t}\n\n\tpublic getItem(): any {\n\t\treturn this.store.getState().dragOperation.item\n\t}\n\n\tpublic getSourceId(): string | null {\n\t\treturn this.store.getState().dragOperation.sourceId\n\t}\n\n\tpublic getTargetIds(): string[] {\n\t\treturn this.store.getState().dragOperation.targetIds\n\t}\n\n\tpublic getDropResult(): any {\n\t\treturn this.store.getState().dragOperation.dropResult\n\t}\n\n\tpublic didDrop(): boolean {\n\t\treturn this.store.getState().dragOperation.didDrop\n\t}\n\n\tpublic isSourcePublic(): boolean {\n\t\treturn Boolean(this.store.getState().dragOperation.isSourcePublic)\n\t}\n\n\tpublic getInitialClientOffset(): XYCoord | null {\n\t\treturn this.store.getState().dragOffset.initialClientOffset\n\t}\n\n\tpublic getInitialSourceClientOffset(): XYCoord | null {\n\t\treturn this.store.getState().dragOffset.initialSourceClientOffset\n\t}\n\n\tpublic getClientOffset(): XYCoord | null {\n\t\treturn this.store.getState().dragOffset.clientOffset\n\t}\n\n\tpublic getSourceClientOffset(): XYCoord | null {\n\t\treturn getSourceClientOffset(this.store.getState().dragOffset)\n\t}\n\n\tpublic getDifferenceFromInitialOffset(): XYCoord | null {\n\t\treturn getDifferenceFromInitialOffset(this.store.getState().dragOffset)\n\t}\n}\n","// Safari 6 and 6.1 for desktop, iPad, and iPhone are the only browsers that\n// have WebKitMutationObserver but not un-prefixed MutationObserver.\n// Must use `global` or `self` instead of `window` to work in both frames and web\n// workers. `global` is a provision of Browserify, Mr, Mrs, or Mop.\n\n/* globals self */\nconst scope = typeof global !== 'undefined' ? global : self\nconst BrowserMutationObserver =\n\t(scope as any).MutationObserver || (scope as any).WebKitMutationObserver\n\nexport function makeRequestCallFromTimer(callback: () => void) {\n\treturn function requestCall() {\n\t\t// We dispatch a timeout with a specified delay of 0 for engines that\n\t\t// can reliably accommodate that request. This will usually be snapped\n\t\t// to a 4 milisecond delay, but once we're flushing, there's no delay\n\t\t// between events.\n\t\tconst timeoutHandle = setTimeout(handleTimer, 0)\n\t\t// However, since this timer gets frequently dropped in Firefox\n\t\t// workers, we enlist an interval handle that will try to fire\n\t\t// an event 20 times per second until it succeeds.\n\t\tconst intervalHandle = setInterval(handleTimer, 50)\n\n\t\tfunction handleTimer() {\n\t\t\t// Whichever timer succeeds will cancel both timers and\n\t\t\t// execute the callback.\n\t\t\tclearTimeout(timeoutHandle)\n\t\t\tclearInterval(intervalHandle)\n\t\t\tcallback()\n\t\t}\n\t}\n}\n\n// To request a high priority event, we induce a mutation observer by toggling\n// the text of a text node between \"1\" and \"-1\".\nexport function makeRequestCallFromMutationObserver(callback: () => void) {\n\tlet toggle = 1\n\tconst observer = new BrowserMutationObserver(callback)\n\tconst node = document.createTextNode('')\n\tobserver.observe(node, { characterData: true })\n\treturn function requestCall() {\n\t\ttoggle = -toggle\n\t\t;(node as any).data = toggle\n\t}\n}\n\nexport const makeRequestCall =\n\ttypeof BrowserMutationObserver === 'function'\n\t\t? // MutationObservers are desirable because they have high priority and work\n\t\t // reliably everywhere they are implemented.\n\t\t // They are implemented in all modern browsers.\n\t\t //\n\t\t // - Android 4-4.3\n\t\t // - Chrome 26-34\n\t\t // - Firefox 14-29\n\t\t // - Internet Explorer 11\n\t\t // - iPad Safari 6-7.1\n\t\t // - iPhone Safari 7-7.1\n\t\t // - Safari 6-7\n\t\t makeRequestCallFromMutationObserver\n\t\t: // MessageChannels are desirable because they give direct access to the HTML\n\t\t // task queue, are implemented in Internet Explorer 10, Safari 5.0-1, and Opera\n\t\t // 11-12, and in web workers in many engines.\n\t\t // Although message channels yield to any queued rendering and IO tasks, they\n\t\t // would be better than imposing the 4ms delay of timers.\n\t\t // However, they do not work reliably in Internet Explorer or Safari.\n\n\t\t // Internet Explorer 10 is the only browser that has setImmediate but does\n\t\t // not have MutationObservers.\n\t\t // Although setImmediate yields to the browser's renderer, it would be\n\t\t // preferrable to falling back to setTimeout since it does not have\n\t\t // the minimum 4ms penalty.\n\t\t // Unfortunately there appears to be a bug in Internet Explorer 10 Mobile (and\n\t\t // Desktop to a lesser extent) that renders both setImmediate and\n\t\t // MessageChannel useless for the purposes of ASAP.\n\t\t // https://github.com/kriskowal/q/issues/396\n\n\t\t // Timers are implemented universally.\n\t\t // We fall back to timers in workers in most engines, and in foreground\n\t\t // contexts in the following browsers.\n\t\t // However, note that even this simple case requires nuances to operate in a\n\t\t // broad spectrum of browsers.\n\t\t //\n\t\t // - Firefox 3-13\n\t\t // - Internet Explorer 6-9\n\t\t // - iPad Safari 4.3\n\t\t // - Lynx 2.8.7\n\t\t makeRequestCallFromTimer\n","/* eslint-disable no-restricted-globals, @typescript-eslint/ban-ts-comment, @typescript-eslint/no-unused-vars, @typescript-eslint/no-non-null-assertion */\nimport { makeRequestCall, makeRequestCallFromTimer } from './makeRequestCall.js'\nimport type { Task } from './types.js'\n\nexport class AsapQueue {\n\tprivate queue: Task[] = []\n\t// We queue errors to ensure they are thrown in right order (FIFO).\n\t// Array-as-queue is good enough here, since we are just dealing with exceptions.\n\tprivate pendingErrors: any[] = []\n\t// Once a flush has been requested, no further calls to `requestFlush` are\n\t// necessary until the next `flush` completes.\n\t// @ts-ignore\n\tprivate flushing = false\n\t// `requestFlush` is an implementation-specific method that attempts to kick\n\t// off a `flush` event as quickly as possible. `flush` will attempt to exhaust\n\t// the event queue before yielding to the browser's own event loop.\n\tprivate requestFlush: () => void\n\n\tprivate requestErrorThrow: () => void\n\t// The position of the next task to execute in the task queue. This is\n\t// preserved between calls to `flush` so that it can be resumed if\n\t// a task throws an exception.\n\tprivate index = 0\n\t// If a task schedules additional tasks recursively, the task queue can grow\n\t// unbounded. To prevent memory exhaustion, the task queue will periodically\n\t// truncate already-completed tasks.\n\tprivate capacity = 1024\n\n\tpublic constructor() {\n\t\t// `requestFlush` requests that the high priority event queue be flushed as\n\t\t// soon as possible.\n\t\t// This is useful to prevent an error thrown in a task from stalling the event\n\t\t// queue if the exception handled by Node.js’s\n\t\t// `process.on(\"uncaughtException\")` or by a domain.\n\n\t\t// `requestFlush` is implemented using a strategy based on data collected from\n\t\t// every available SauceLabs Selenium web driver worker at time of writing.\n\t\t// https://docs.google.com/spreadsheets/d/1mG-5UYGup5qxGdEMWkhP6BWCz053NUb2E1QoUTU16uA/edit#gid=783724593\n\t\tthis.requestFlush = makeRequestCall(this.flush)\n\t\tthis.requestErrorThrow = makeRequestCallFromTimer(() => {\n\t\t\t// Throw first error\n\t\t\tif (this.pendingErrors.length) {\n\t\t\t\tthrow this.pendingErrors.shift()\n\t\t\t}\n\t\t})\n\t}\n\n\t// Use the fastest means possible to execute a task in its own turn, with\n\t// priority over other events including IO, animation, reflow, and redraw\n\t// events in browsers.\n\t//\n\t// An exception thrown by a task will permanently interrupt the processing of\n\t// subsequent tasks. The higher level `asap` function ensures that if an\n\t// exception is thrown by a task, that the task queue will continue flushing as\n\t// soon as possible, but if you use `rawAsap` directly, you are responsible to\n\t// either ensure that no exceptions are thrown from your task, or to manually\n\t// call `rawAsap.requestFlush` if an exception is thrown.\n\tpublic enqueueTask(task: Task): void {\n\t\tconst { queue: q, requestFlush } = this\n\t\tif (!q.length) {\n\t\t\trequestFlush()\n\t\t\tthis.flushing = true\n\t\t}\n\t\t// Equivalent to push, but avoids a function call.\n\t\tq[q.length] = task\n\t}\n\n\t// The flush function processes all tasks that have been scheduled with\n\t// `rawAsap` unless and until one of those tasks throws an exception.\n\t// If a task throws an exception, `flush` ensures that its state will remain\n\t// consistent and will resume where it left off when called again.\n\t// However, `flush` does not make any arrangements to be called again if an\n\t// exception is thrown.\n\tprivate flush = () => {\n\t\tconst { queue: q } = this\n\t\twhile (this.index < q.length) {\n\t\t\tconst currentIndex = this.index\n\t\t\t// Advance the index before calling the task. This ensures that we will\n\t\t\t// begin flushing on the next task the task throws an error.\n\t\t\tthis.index++\n\t\t\tq[currentIndex]!.call()\n\t\t\t// Prevent leaking memory for long chains of recursive calls to `asap`.\n\t\t\t// If we call `asap` within tasks scheduled by `asap`, the queue will\n\t\t\t// grow, but to avoid an O(n) walk for every task we execute, we don't\n\t\t\t// shift tasks off the queue after they have been executed.\n\t\t\t// Instead, we periodically shift 1024 tasks off the queue.\n\t\t\tif (this.index > this.capacity) {\n\t\t\t\t// Manually shift all values starting at the index back to the\n\t\t\t\t// beginning of the queue.\n\t\t\t\tfor (\n\t\t\t\t\tlet scan = 0, newLength = q.length - this.index;\n\t\t\t\t\tscan < newLength;\n\t\t\t\t\tscan++\n\t\t\t\t) {\n\t\t\t\t\tq[scan] = q[scan + this.index]!\n\t\t\t\t}\n\t\t\t\tq.length -= this.index\n\t\t\t\tthis.index = 0\n\t\t\t}\n\t\t}\n\t\tq.length = 0\n\t\tthis.index = 0\n\t\tthis.flushing = false\n\t}\n\n\t// In a web browser, exceptions are not fatal. However, to avoid\n\t// slowing down the queue of pending tasks, we rethrow the error in a\n\t// lower priority turn.\n\tpublic registerPendingError = (err: any) => {\n\t\tthis.pendingErrors.push(err)\n\t\tthis.requestErrorThrow()\n\t}\n}\n\n// The message channel technique was discovered by Malte Ubl and was the\n// original foundation for this library.\n// http://www.nonblocking.io/2011/06/windownexttick.html\n\n// Safari 6.0.5 (at least) intermittently fails to create message ports on a\n// page's first load. Thankfully, this version of Safari supports\n// MutationObservers, so we don't need to fall back in that case.\n\n// function makeRequestCallFromMessageChannel(callback) {\n// var channel = new MessageChannel();\n// channel.port1.onmessage = callback;\n// return function requestCall() {\n// channel.port2.postMessage(0);\n// };\n// }\n\n// For reasons explained above, we are also unable to use `setImmediate`\n// under any circumstances.\n// Even if we were, there is another bug in Internet Explorer 10.\n// It is not sufficient to assign `setImmediate` to `requestFlush` because\n// `setImmediate` must be called *by name* and therefore must be wrapped in a\n// closure.\n// Never forget.\n\n// function makeRequestCallFromSetImmediate(callback) {\n// return function requestCall() {\n// setImmediate(callback);\n// };\n// }\n\n// Safari 6.0 has a problem where timers will get lost while the user is\n// scrolling. This problem does not impact ASAP because Safari 6.0 supports\n// mutation observers, so that implementation is used instead.\n// However, if we ever elect to use timers in Safari, the prevalent work-around\n// is to add a scroll event listener that calls for a flush.\n\n// `setTimeout` does not call the passed callback if the delay is less than\n// approximately 7 in web workers in Firefox 8 through 18, and sometimes not\n// even then.\n\n// This is for `asap.js` only.\n// Its name will be periodically randomized to break any code that depends on\n// // its existence.\n// rawAsap.makeRequestCallFromTimer = makeRequestCallFromTimer\n\n// ASAP was originally a nextTick shim included in Q. This was factored out\n// into this ASAP package. It was later adapted to RSVP which made further\n// amendments. These decisions, particularly to marginalize MessageChannel and\n// to capture the MutationObserver implementation in a closure, were integrated\n// back into ASAP proper.\n// https://github.com/tildeio/rsvp.js/blob/cddf7232546a9cf858524b75cde6f9edf72620a7/lib/rsvp/asap.js\n","// We wrap tasks with recyclable task objects. A task object implements\n\nimport type { Task, TaskFn } from 'types'\n\n// `call`, just like a function.\nexport class RawTask implements Task {\n\tpublic task: TaskFn | null = null\n\n\tpublic constructor(\n\t\tprivate onError: (err: any) => void,\n\t\tprivate release: (t: RawTask) => void,\n\t) {}\n\n\tpublic call() {\n\t\ttry {\n\t\t\tthis.task && this.task()\n\t\t} catch (error) {\n\t\t\tthis.onError(error)\n\t\t} finally {\n\t\t\tthis.task = null\n\t\t\tthis.release(this)\n\t\t}\n\t}\n}\n","import { RawTask } from './RawTask.js'\nimport type { Task } from './types.js'\n\nexport class TaskFactory {\n\tprivate freeTasks: RawTask[] = []\n\n\tpublic constructor(private onError: (err: any) => void) {}\n\n\tpublic create(task: () => void): Task {\n\t\tconst tasks = this.freeTasks\n\t\tconst t = tasks.length\n\t\t\t? (tasks.pop() as RawTask)\n\t\t\t: new RawTask(this.onError, (t) => (tasks[tasks.length] = t))\n\t\tt.task = task\n\t\treturn t\n\t}\n}\n","import { AsapQueue } from './AsapQueue.js'\nimport { TaskFactory } from './TaskFactory.js'\nimport type { TaskFn } from './types.js'\n\nconst asapQueue = new AsapQueue()\nconst taskFactory = new TaskFactory(asapQueue.registerPendingError)\n\n/**\n * Calls a task as soon as possible after returning, in its own event, with priority\n * over other events like animation, reflow, and repaint. An error thrown from an\n * event will not interrupt, nor even substantially slow down the processing of\n * other events, but will be rather postponed to a lower priority event.\n * @param {{call}} task A callable object, typically a function that takes no\n * arguments.\n */\nexport function asap(task: TaskFn) {\n\tasapQueue.enqueueTask(taskFactory.create(task))\n}\n","import type { Action, SourceIdPayload, TargetIdPayload } from '../interfaces.js'\n\nexport const ADD_SOURCE = 'dnd-core/ADD_SOURCE'\nexport const ADD_TARGET = 'dnd-core/ADD_TARGET'\nexport const REMOVE_SOURCE = 'dnd-core/REMOVE_SOURCE'\nexport const REMOVE_TARGET = 'dnd-core/REMOVE_TARGET'\n\nexport function addSource(sourceId: string): Action {\n\treturn {\n\t\ttype: ADD_SOURCE,\n\t\tpayload: {\n\t\t\tsourceId,\n\t\t},\n\t}\n}\n\nexport function addTarget(targetId: string): Action {\n\treturn {\n\t\ttype: ADD_TARGET,\n\t\tpayload: {\n\t\t\ttargetId,\n\t\t},\n\t}\n}\n\nexport function removeSource(sourceId: string): Action {\n\treturn {\n\t\ttype: REMOVE_SOURCE,\n\t\tpayload: {\n\t\t\tsourceId,\n\t\t},\n\t}\n}\n\nexport function removeTarget(targetId: string): Action {\n\treturn {\n\t\ttype: REMOVE_TARGET,\n\t\tpayload: {\n\t\t\ttargetId,\n\t\t},\n\t}\n}\n","export type Identifier = string | symbol\nexport type SourceType = Identifier\nexport type TargetType = Identifier | Identifier[]\nexport type Unsubscribe = () => void\nexport type Listener = () => void\n\nexport interface XYCoord {\n\tx: number\n\ty: number\n}\n\nexport enum HandlerRole {\n\tSOURCE = 'SOURCE',\n\tTARGET = 'TARGET',\n}\n\nexport interface Backend {\n\tsetup(): void\n\tteardown(): void\n\tconnectDragSource(sourceId: any, node?: any, options?: any): Unsubscribe\n\tconnectDragPreview(sourceId: any, node?: any, options?: any): Unsubscribe\n\tconnectDropTarget(targetId: any, node?: any, options?: any): Unsubscribe\n\tprofile(): Record\n}\n\nexport interface DragDropMonitor {\n\tsubscribeToStateChange(\n\t\tlistener: Listener,\n\t\toptions?: {\n\t\t\thandlerIds?: Identifier[]\n\t\t},\n\t): Unsubscribe\n\tsubscribeToOffsetChange(listener: Listener): Unsubscribe\n\tcanDragSource(sourceId: Identifier | undefined): boolean\n\tcanDropOnTarget(targetId: Identifier | undefined): boolean\n\n\t/**\n\t * Returns true if a drag operation is in progress, and either the owner initiated the drag, or its isDragging()\n\t * is defined and returns true.\n\t */\n\tisDragging(): boolean\n\tisDraggingSource(sourceId: Identifier | undefined): boolean\n\tisOverTarget(\n\t\ttargetId: Identifier | undefined,\n\t\toptions?: {\n\t\t\tshallow?: boolean\n\t\t},\n\t): boolean\n\n\t/**\n\t * Returns a string or a symbol identifying the type of the current dragged item. Returns null if no item is being dragged.\n\t */\n\tgetItemType(): Identifier | null\n\n\t/**\n\t * Returns a plain object representing the currently dragged item. Every drag source must specify it by returning an object\n\t * from its beginDrag() method. Returns null if no item is being dragged.\n\t */\n\tgetItem(): any\n\tgetSourceId(): Identifier | null\n\tgetTargetIds(): Identifier[]\n\t/**\n\t * Returns a plain object representing the last recorded drop result. The drop targets may optionally specify it by returning an\n\t * object from their drop() methods. When a chain of drop() is dispatched for the nested targets, bottom up, any parent that\n\t * explicitly returns its own result from drop() overrides the child drop result previously set by the child. Returns null if\n\t * called outside endDrag().\n\t */\n\tgetDropResult(): any\n\t/**\n\t * Returns true if some drop target has handled the drop event, false otherwise. Even if a target did not return a drop result,\n\t * didDrop() returns true. Use it inside endDrag() to test whether any drop target has handled the drop. Returns false if called\n\t * outside endDrag().\n\t */\n\tdidDrop(): boolean\n\tisSourcePublic(): boolean | null\n\t/**\n\t * Returns the { x, y } client offset of the pointer at the time when the current drag operation has started.\n\t * Returns null if no item is being dragged.\n\t */\n\tgetInitialClientOffset(): XYCoord | null\n\t/**\n\t * Returns the { x, y } client offset of the drag source component's root DOM node at the time when the current drag\n\t * operation has started. Returns null if no item is being dragged.\n\t */\n\tgetInitialSourceClientOffset(): XYCoord | null\n\n\t/**\n\t * Returns the last recorded { x, y } client offset of the pointer while a drag operation is in progress.\n\t * Returns null if no item is being dragged.\n\t */\n\tgetClientOffset(): XYCoord | null\n\n\t/**\n\t * Returns the projected { x, y } client offset of the drag source component's root DOM node, based on its position at the time\n\t * when the current drag operation has started, and the movement difference. Returns null if no item is being dragged.\n\t */\n\tgetSourceClientOffset(): XYCoord | null\n\n\t/**\n\t * Returns the { x, y } difference between the last recorded client offset of the pointer and the client offset when the current\n\t * drag operation has started. Returns null if no item is being dragged.\n\t */\n\tgetDifferenceFromInitialOffset(): XYCoord | null\n}\n\nexport interface HandlerRegistry {\n\taddSource(type: SourceType, source: DragSource): Identifier\n\taddTarget(type: TargetType, target: DropTarget): Identifier\n\tcontainsHandler(handler: DragSource | DropTarget): boolean\n\tgetSource(sourceId: Identifier, includePinned?: boolean): DragSource\n\tgetSourceType(sourceId: Identifier): SourceType\n\tgetTargetType(targetId: Identifier): TargetType\n\tgetTarget(targetId: Identifier): DropTarget\n\tisSourceId(handlerId: Identifier): boolean\n\tisTargetId(handlerId: Identifier): boolean\n\tremoveSource(sourceId: Identifier): void\n\tremoveTarget(targetId: Identifier): void\n\tpinSource(sourceId: Identifier): void\n\tunpinSource(): void\n}\n\nexport interface Action {\n\ttype: Identifier\n\tpayload: Payload\n}\nexport interface SentinelAction {\n\ttype: Identifier\n}\n\nexport type ActionCreator = (args: any[]) => Action\n\nexport interface BeginDragOptions {\n\tpublishSource?: boolean\n\tclientOffset?: XYCoord\n\tgetSourceClientOffset?: (sourceId: Identifier | undefined) => XYCoord\n}\n\nexport interface InitCoordsPayload {\n\tclientOffset: XYCoord | null\n\tsourceClientOffset: XYCoord | null\n}\n\nexport interface BeginDragPayload {\n\titemType: Identifier\n\titem: any\n\tsourceId: Identifier\n\tclientOffset: XYCoord | null\n\tsourceClientOffset: XYCoord | null\n\tisSourcePublic: boolean\n}\n\nexport interface HoverPayload {\n\ttargetIds: Identifier[]\n\tclientOffset: XYCoord | null\n}\n\nexport interface HoverOptions {\n\tclientOffset?: XYCoord\n}\n\nexport interface DropPayload {\n\tdropResult: any\n}\n\nexport interface TargetIdPayload {\n\ttargetId: Identifier\n}\n\nexport interface SourceIdPayload {\n\tsourceId: Identifier\n}\n\nexport interface DragDropActions {\n\tbeginDrag(\n\t\tsourceIds?: Identifier[],\n\t\toptions?: any,\n\t): Action | undefined\n\tpublishDragSource(): SentinelAction | undefined\n\thover(targetIds: Identifier[], options?: any): Action\n\tdrop(options?: any): void\n\tendDrag(): SentinelAction\n}\n\nexport interface DragDropManager {\n\tgetMonitor(): DragDropMonitor\n\tgetBackend(): Backend\n\tgetRegistry(): HandlerRegistry\n\tgetActions(): DragDropActions\n\tdispatch(action: any): void\n}\n\nexport type BackendFactory = (\n\tmanager: DragDropManager,\n\tglobalContext?: any,\n\tconfiguration?: any,\n) => Backend\n\nexport interface DragSource {\n\tbeginDrag(monitor: DragDropMonitor, targetId: Identifier): void\n\tendDrag(monitor: DragDropMonitor, targetId: Identifier): void\n\tcanDrag(monitor: DragDropMonitor, targetId: Identifier): boolean\n\tisDragging(monitor: DragDropMonitor, targetId: Identifier): boolean\n}\n\nexport interface DropTarget {\n\tcanDrop(monitor: DragDropMonitor, targetId: Identifier): boolean\n\thover(monitor: DragDropMonitor, targetId: Identifier): void\n\tdrop(monitor: DragDropMonitor, targetId: Identifier): any\n}\n","import { invariant } from '@react-dnd/invariant'\n\nimport type { DragSource, DropTarget, Identifier } from './interfaces.js'\n\nexport function validateSourceContract(source: DragSource): void {\n\tinvariant(\n\t\ttypeof source.canDrag === 'function',\n\t\t'Expected canDrag to be a function.',\n\t)\n\tinvariant(\n\t\ttypeof source.beginDrag === 'function',\n\t\t'Expected beginDrag to be a function.',\n\t)\n\tinvariant(\n\t\ttypeof source.endDrag === 'function',\n\t\t'Expected endDrag to be a function.',\n\t)\n}\n\nexport function validateTargetContract(target: DropTarget): void {\n\tinvariant(\n\t\ttypeof target.canDrop === 'function',\n\t\t'Expected canDrop to be a function.',\n\t)\n\tinvariant(\n\t\ttypeof target.hover === 'function',\n\t\t'Expected hover to be a function.',\n\t)\n\tinvariant(\n\t\ttypeof target.drop === 'function',\n\t\t'Expected beginDrag to be a function.',\n\t)\n}\n\nexport function validateType(\n\ttype: Identifier | Identifier[],\n\tallowArray?: boolean,\n): void {\n\tif (allowArray && Array.isArray(type)) {\n\t\ttype.forEach((t) => validateType(t, false))\n\t\treturn\n\t}\n\n\tinvariant(\n\t\ttypeof type === 'string' || typeof type === 'symbol',\n\t\tallowArray\n\t\t\t? 'Type can only be a string, a symbol, or an array of either.'\n\t\t\t: 'Type can only be a string or a symbol.',\n\t)\n}\n","let nextUniqueId = 0\n\nexport function getNextUniqueId(): number {\n\treturn nextUniqueId++\n}\n","import { asap } from '@react-dnd/asap'\nimport { invariant } from '@react-dnd/invariant'\nimport type { Store } from 'redux'\n\nimport {\n\taddSource,\n\taddTarget,\n\tremoveSource,\n\tremoveTarget,\n} from '../actions/registry.js'\nimport {\n\tvalidateSourceContract,\n\tvalidateTargetContract,\n\tvalidateType,\n} from '../contracts.js'\nimport type {\n\tDragSource,\n\tDropTarget,\n\tHandlerRegistry,\n\tIdentifier,\n\tSourceType,\n\tTargetType,\n} from '../interfaces.js'\nimport { HandlerRole } from '../interfaces.js'\nimport type { State } from '../reducers/index.js'\nimport { getNextUniqueId } from '../utils/getNextUniqueId.js'\n\nfunction getNextHandlerId(role: HandlerRole): string {\n\tconst id = getNextUniqueId().toString()\n\tswitch (role) {\n\t\tcase HandlerRole.SOURCE:\n\t\t\treturn `S${id}`\n\t\tcase HandlerRole.TARGET:\n\t\t\treturn `T${id}`\n\t\tdefault:\n\t\t\tthrow new Error(`Unknown Handler Role: ${role}`)\n\t}\n}\n\nfunction parseRoleFromHandlerId(handlerId: string) {\n\tswitch (handlerId[0]) {\n\t\tcase 'S':\n\t\t\treturn HandlerRole.SOURCE\n\t\tcase 'T':\n\t\t\treturn HandlerRole.TARGET\n\t\tdefault:\n\t\t\tthrow new Error(`Cannot parse handler ID: ${handlerId}`)\n\t}\n}\n\nfunction mapContainsValue(map: Map, searchValue: T) {\n\tconst entries = map.entries()\n\tlet isDone = false\n\tdo {\n\t\tconst {\n\t\t\tdone,\n\t\t\tvalue: [, value],\n\t\t} = entries.next()\n\t\tif (value === searchValue) {\n\t\t\treturn true\n\t\t}\n\t\tisDone = !!done\n\t} while (!isDone)\n\treturn false\n}\n\nexport class HandlerRegistryImpl implements HandlerRegistry {\n\tprivate types: Map = new Map()\n\tprivate dragSources: Map = new Map()\n\tprivate dropTargets: Map = new Map()\n\tprivate pinnedSourceId: string | null = null\n\tprivate pinnedSource: any = null\n\tprivate store: Store\n\n\tpublic constructor(store: Store) {\n\t\tthis.store = store\n\t}\n\n\tpublic addSource(type: SourceType, source: DragSource): string {\n\t\tvalidateType(type)\n\t\tvalidateSourceContract(source)\n\n\t\tconst sourceId = this.addHandler(HandlerRole.SOURCE, type, source)\n\t\tthis.store.dispatch(addSource(sourceId))\n\t\treturn sourceId\n\t}\n\n\tpublic addTarget(type: TargetType, target: DropTarget): string {\n\t\tvalidateType(type, true)\n\t\tvalidateTargetContract(target)\n\n\t\tconst targetId = this.addHandler(HandlerRole.TARGET, type, target)\n\t\tthis.store.dispatch(addTarget(targetId))\n\t\treturn targetId\n\t}\n\n\tpublic containsHandler(handler: DragSource | DropTarget): boolean {\n\t\treturn (\n\t\t\tmapContainsValue(this.dragSources, handler) ||\n\t\t\tmapContainsValue(this.dropTargets, handler)\n\t\t)\n\t}\n\n\tpublic getSource(sourceId: string, includePinned = false): DragSource {\n\t\tinvariant(this.isSourceId(sourceId), 'Expected a valid source ID.')\n\t\tconst isPinned = includePinned && sourceId === this.pinnedSourceId\n\t\tconst source = isPinned ? this.pinnedSource : this.dragSources.get(sourceId)\n\t\treturn source\n\t}\n\n\tpublic getTarget(targetId: string): DropTarget {\n\t\tinvariant(this.isTargetId(targetId), 'Expected a valid target ID.')\n\t\treturn this.dropTargets.get(targetId) as DropTarget\n\t}\n\n\tpublic getSourceType(sourceId: string): Identifier {\n\t\tinvariant(this.isSourceId(sourceId), 'Expected a valid source ID.')\n\t\treturn this.types.get(sourceId) as Identifier\n\t}\n\n\tpublic getTargetType(targetId: string): Identifier | Identifier[] {\n\t\tinvariant(this.isTargetId(targetId), 'Expected a valid target ID.')\n\t\treturn this.types.get(targetId) as Identifier | Identifier[]\n\t}\n\n\tpublic isSourceId(handlerId: string): boolean {\n\t\tconst role = parseRoleFromHandlerId(handlerId)\n\t\treturn role === HandlerRole.SOURCE\n\t}\n\n\tpublic isTargetId(handlerId: string): boolean {\n\t\tconst role = parseRoleFromHandlerId(handlerId)\n\t\treturn role === HandlerRole.TARGET\n\t}\n\n\tpublic removeSource(sourceId: string): void {\n\t\tinvariant(this.getSource(sourceId), 'Expected an existing source.')\n\t\tthis.store.dispatch(removeSource(sourceId))\n\t\tasap(() => {\n\t\t\tthis.dragSources.delete(sourceId)\n\t\t\tthis.types.delete(sourceId)\n\t\t})\n\t}\n\n\tpublic removeTarget(targetId: string): void {\n\t\tinvariant(this.getTarget(targetId), 'Expected an existing target.')\n\t\tthis.store.dispatch(removeTarget(targetId))\n\t\tthis.dropTargets.delete(targetId)\n\t\tthis.types.delete(targetId)\n\t}\n\n\tpublic pinSource(sourceId: string): void {\n\t\tconst source = this.getSource(sourceId)\n\t\tinvariant(source, 'Expected an existing source.')\n\n\t\tthis.pinnedSourceId = sourceId\n\t\tthis.pinnedSource = source\n\t}\n\n\tpublic unpinSource(): void {\n\t\tinvariant(this.pinnedSource, 'No source is pinned at the time.')\n\n\t\tthis.pinnedSourceId = null\n\t\tthis.pinnedSource = null\n\t}\n\n\tprivate addHandler(\n\t\trole: HandlerRole,\n\t\ttype: SourceType | TargetType,\n\t\thandler: DragSource | DropTarget,\n\t): string {\n\t\tconst id = getNextHandlerId(role)\n\t\tthis.types.set(id, type)\n\t\tif (role === HandlerRole.SOURCE) {\n\t\t\tthis.dragSources.set(id, handler as DragSource)\n\t\t} else if (role === HandlerRole.TARGET) {\n\t\t\tthis.dropTargets.set(id, handler as DropTarget)\n\t\t}\n\t\treturn id\n\t}\n}\n","import type { XYCoord } from '../interfaces.js'\n\nexport type EqualityCheck = (a: T, b: T) => boolean\nexport const strictEquality = (a: T, b: T): boolean => a === b\n\n/**\n * Determine if two cartesian coordinate offsets are equal\n * @param offsetA\n * @param offsetB\n */\nexport function areCoordsEqual(\n\toffsetA: XYCoord | null | undefined,\n\toffsetB: XYCoord | null | undefined,\n): boolean {\n\tif (!offsetA && !offsetB) {\n\t\treturn true\n\t} else if (!offsetA || !offsetB) {\n\t\treturn false\n\t} else {\n\t\treturn offsetA.x === offsetB.x && offsetA.y === offsetB.y\n\t}\n}\n\n/**\n * Determines if two arrays of items are equal\n * @param a The first array of items\n * @param b The second array of items\n */\nexport function areArraysEqual(\n\ta: T[],\n\tb: T[],\n\tisEqual: EqualityCheck = strictEquality,\n): boolean {\n\tif (a.length !== b.length) {\n\t\treturn false\n\t}\n\tfor (let i = 0; i < a.length; ++i) {\n\t\tif (!isEqual(a[i] as T, b[i] as T)) {\n\t\t\treturn false\n\t\t}\n\t}\n\treturn true\n}\n","import {\n\tBEGIN_DRAG,\n\tDROP,\n\tEND_DRAG,\n\tHOVER,\n\tPUBLISH_DRAG_SOURCE,\n} from '../actions/dragDrop/index.js'\nimport {\n\tADD_SOURCE,\n\tADD_TARGET,\n\tREMOVE_SOURCE,\n\tREMOVE_TARGET,\n} from '../actions/registry.js'\nimport type { Action } from '../interfaces.js'\nimport { ALL, NONE } from '../utils/dirtiness.js'\nimport { areArraysEqual } from '../utils/equality.js'\nimport { xor } from '../utils/js_utils.js'\n\nexport type State = string[]\n\nexport interface DirtyHandlerIdPayload {\n\ttargetIds: string[]\n\tprevTargetIds: string[]\n}\n\nexport function reduce(\n\t// eslint-disable-next-line @typescript-eslint/no-unused-vars\n\t_state: State = NONE,\n\taction: Action,\n): State {\n\tswitch (action.type) {\n\t\tcase HOVER:\n\t\t\tbreak\n\t\tcase ADD_SOURCE:\n\t\tcase ADD_TARGET:\n\t\tcase REMOVE_TARGET:\n\t\tcase REMOVE_SOURCE:\n\t\t\treturn NONE\n\t\tcase BEGIN_DRAG:\n\t\tcase PUBLISH_DRAG_SOURCE:\n\t\tcase END_DRAG:\n\t\tcase DROP:\n\t\tdefault:\n\t\t\treturn ALL\n\t}\n\n\tconst { targetIds = [], prevTargetIds = [] } = action.payload\n\tconst result = xor(targetIds, prevTargetIds)\n\tconst didChange =\n\t\tresult.length > 0 || !areArraysEqual(targetIds, prevTargetIds)\n\n\tif (!didChange) {\n\t\treturn NONE\n\t}\n\n\t// Check the target ids at the innermost position. If they are valid, add them\n\t// to the result\n\tconst prevInnermostTargetId = prevTargetIds[prevTargetIds.length - 1]\n\tconst innermostTargetId = targetIds[targetIds.length - 1]\n\tif (prevInnermostTargetId !== innermostTargetId) {\n\t\tif (prevInnermostTargetId) {\n\t\t\tresult.push(prevInnermostTargetId)\n\t\t}\n\t\tif (innermostTargetId) {\n\t\t\tresult.push(innermostTargetId)\n\t\t}\n\t}\n\n\treturn result\n}\n","import {\n\tBEGIN_DRAG,\n\tDROP,\n\tEND_DRAG,\n\tHOVER,\n\tINIT_COORDS,\n} from '../actions/dragDrop/index.js'\nimport type { Action, XYCoord } from '../interfaces.js'\nimport { areCoordsEqual } from '../utils/equality.js'\n\nexport interface State {\n\tinitialSourceClientOffset: XYCoord | null\n\tinitialClientOffset: XYCoord | null\n\tclientOffset: XYCoord | null\n}\n\nconst initialState: State = {\n\tinitialSourceClientOffset: null,\n\tinitialClientOffset: null,\n\tclientOffset: null,\n}\n\nexport function reduce(\n\tstate: State = initialState,\n\taction: Action<{\n\t\tsourceClientOffset: XYCoord\n\t\tclientOffset: XYCoord\n\t}>,\n): State {\n\tconst { payload } = action\n\tswitch (action.type) {\n\t\tcase INIT_COORDS:\n\t\tcase BEGIN_DRAG:\n\t\t\treturn {\n\t\t\t\tinitialSourceClientOffset: payload.sourceClientOffset,\n\t\t\t\tinitialClientOffset: payload.clientOffset,\n\t\t\t\tclientOffset: payload.clientOffset,\n\t\t\t}\n\t\tcase HOVER:\n\t\t\tif (areCoordsEqual(state.clientOffset, payload.clientOffset)) {\n\t\t\t\treturn state\n\t\t\t}\n\t\t\treturn {\n\t\t\t\t...state,\n\t\t\t\tclientOffset: payload.clientOffset,\n\t\t\t}\n\t\tcase END_DRAG:\n\t\tcase DROP:\n\t\t\treturn initialState\n\t\tdefault:\n\t\t\treturn state\n\t}\n}\n","import {\n\tBEGIN_DRAG,\n\tDROP,\n\tEND_DRAG,\n\tHOVER,\n\tPUBLISH_DRAG_SOURCE,\n} from '../actions/dragDrop/index.js'\nimport { REMOVE_TARGET } from '../actions/registry.js'\nimport type { Action, Identifier } from '../interfaces.js'\nimport { without } from '../utils/js_utils.js'\n\nexport interface State {\n\titemType: Identifier | Identifier[] | null\n\titem: any\n\tsourceId: string | null\n\ttargetIds: string[]\n\tdropResult: any\n\tdidDrop: boolean\n\tisSourcePublic: boolean | null\n}\n\nconst initialState: State = {\n\titemType: null,\n\titem: null,\n\tsourceId: null,\n\ttargetIds: [],\n\tdropResult: null,\n\tdidDrop: false,\n\tisSourcePublic: null,\n}\n\nexport function reduce(\n\tstate: State = initialState,\n\taction: Action<{\n\t\titemType: Identifier | Identifier[]\n\t\titem: any\n\t\tsourceId: string\n\t\ttargetId: string\n\t\ttargetIds: string[]\n\t\tisSourcePublic: boolean\n\t\tdropResult: any\n\t}>,\n): State {\n\tconst { payload } = action\n\tswitch (action.type) {\n\t\tcase BEGIN_DRAG:\n\t\t\treturn {\n\t\t\t\t...state,\n\t\t\t\titemType: payload.itemType,\n\t\t\t\titem: payload.item,\n\t\t\t\tsourceId: payload.sourceId,\n\t\t\t\tisSourcePublic: payload.isSourcePublic,\n\t\t\t\tdropResult: null,\n\t\t\t\tdidDrop: false,\n\t\t\t}\n\t\tcase PUBLISH_DRAG_SOURCE:\n\t\t\treturn {\n\t\t\t\t...state,\n\t\t\t\tisSourcePublic: true,\n\t\t\t}\n\t\tcase HOVER:\n\t\t\treturn {\n\t\t\t\t...state,\n\t\t\t\ttargetIds: payload.targetIds,\n\t\t\t}\n\t\tcase REMOVE_TARGET:\n\t\t\tif (state.targetIds.indexOf(payload.targetId) === -1) {\n\t\t\t\treturn state\n\t\t\t}\n\t\t\treturn {\n\t\t\t\t...state,\n\t\t\t\ttargetIds: without(state.targetIds, payload.targetId),\n\t\t\t}\n\t\tcase DROP:\n\t\t\treturn {\n\t\t\t\t...state,\n\t\t\t\tdropResult: payload.dropResult,\n\t\t\t\tdidDrop: true,\n\t\t\t\ttargetIds: [],\n\t\t\t}\n\t\tcase END_DRAG:\n\t\t\treturn {\n\t\t\t\t...state,\n\t\t\t\titemType: null,\n\t\t\t\titem: null,\n\t\t\t\tsourceId: null,\n\t\t\t\tdropResult: null,\n\t\t\t\tdidDrop: false,\n\t\t\t\tisSourcePublic: null,\n\t\t\t\ttargetIds: [],\n\t\t\t}\n\t\tdefault:\n\t\t\treturn state\n\t}\n}\n","import {\n\tADD_SOURCE,\n\tADD_TARGET,\n\tREMOVE_SOURCE,\n\tREMOVE_TARGET,\n} from '../actions/registry.js'\nimport type { Action } from '../interfaces.js'\n\nexport type State = number\n\nexport function reduce(state: State = 0, action: Action): State {\n\tswitch (action.type) {\n\t\tcase ADD_SOURCE:\n\t\tcase ADD_TARGET:\n\t\t\treturn state + 1\n\t\tcase REMOVE_SOURCE:\n\t\tcase REMOVE_TARGET:\n\t\t\treturn state - 1\n\t\tdefault:\n\t\t\treturn state\n\t}\n}\n","export type State = number\n\nexport function reduce(state: State = 0): State {\n\treturn state + 1\n}\n","import type { Action } from '../interfaces.js'\nimport { get } from '../utils/js_utils.js'\nimport type { State as DirtyHandlerIdsState } from './dirtyHandlerIds.js'\nimport { reduce as dirtyHandlerIds } from './dirtyHandlerIds.js'\nimport type { State as DragOffsetState } from './dragOffset.js'\nimport { reduce as dragOffset } from './dragOffset.js'\nimport type { State as DragOperationState } from './dragOperation.js'\nimport { reduce as dragOperation } from './dragOperation.js'\nimport type { State as RefCountState } from './refCount.js'\nimport { reduce as refCount } from './refCount.js'\nimport type { State as StateIdState } from './stateId.js'\nimport { reduce as stateId } from './stateId.js'\n\nexport interface State {\n\tdirtyHandlerIds: DirtyHandlerIdsState\n\tdragOffset: DragOffsetState\n\trefCount: RefCountState\n\tdragOperation: DragOperationState\n\tstateId: StateIdState\n}\n\nexport function reduce(state: State = {} as State, action: Action): State {\n\treturn {\n\t\tdirtyHandlerIds: dirtyHandlerIds(state.dirtyHandlerIds, {\n\t\t\ttype: action.type,\n\t\t\tpayload: {\n\t\t\t\t...action.payload,\n\t\t\t\tprevTargetIds: get(state, 'dragOperation.targetIds', []),\n\t\t\t},\n\t\t}),\n\t\tdragOffset: dragOffset(state.dragOffset, action),\n\t\trefCount: refCount(state.refCount, action),\n\t\tdragOperation: dragOperation(state.dragOperation, action),\n\t\tstateId: stateId(state.stateId),\n\t}\n}\n","import type { Store } from 'redux'\nimport { createStore } from 'redux'\n\nimport { DragDropManagerImpl } from './classes/DragDropManagerImpl.js'\nimport { DragDropMonitorImpl } from './classes/DragDropMonitorImpl.js'\nimport { HandlerRegistryImpl } from './classes/HandlerRegistryImpl.js'\nimport type { BackendFactory, DragDropManager } from './interfaces.js'\nimport type { State } from './reducers/index.js'\nimport { reduce } from './reducers/index.js'\n\nexport function createDragDropManager(\n\tbackendFactory: BackendFactory,\n\tglobalContext: unknown = undefined,\n\tbackendOptions: unknown = {},\n\tdebugMode = false,\n): DragDropManager {\n\tconst store = makeStoreInstance(debugMode)\n\tconst monitor = new DragDropMonitorImpl(store, new HandlerRegistryImpl(store))\n\tconst manager = new DragDropManagerImpl(store, monitor)\n\tconst backend = backendFactory(manager, globalContext, backendOptions)\n\tmanager.receiveBackend(backend)\n\treturn manager\n}\n\nfunction makeStoreInstance(debugMode: boolean): Store {\n\t// TODO: if we ever make a react-native version of this,\n\t// we'll need to consider how to pull off dev-tooling\n\tconst reduxDevTools =\n\t\ttypeof window !== 'undefined' &&\n\t\t(window as any).__REDUX_DEVTOOLS_EXTENSION__\n\treturn createStore(\n\t\treduce,\n\t\tdebugMode &&\n\t\t\treduxDevTools &&\n\t\t\treduxDevTools({\n\t\t\t\tname: 'dnd-core',\n\t\t\t\tinstanceId: 'dnd-core',\n\t\t\t}),\n\t)\n}\n","import type { DragDropManager } from 'dnd-core'\nimport { createContext } from 'react'\n\n/**\n * The React context type\n */\nexport interface DndContextType {\n\tdragDropManager: DragDropManager | undefined\n}\n\n/**\n * Create the React Context\n */\nexport const DndContext = createContext({\n\tdragDropManager: undefined,\n})\n","import type { BackendFactory, DragDropManager } from 'dnd-core'\nimport { createDragDropManager } from 'dnd-core'\nimport type { FC, ReactNode } from 'react'\nimport { memo, useEffect } from 'react'\n\nimport { DndContext } from './DndContext.js'\n\nexport type DndProviderProps =\n\t| {\n\t\t\tchildren?: ReactNode\n\t\t\tmanager: DragDropManager\n\t }\n\t| {\n\t\t\tbackend: BackendFactory\n\t\t\tchildren?: ReactNode\n\t\t\tcontext?: BackendContext\n\t\t\toptions?: BackendOptions\n\t\t\tdebugMode?: boolean\n\t }\n\nlet refCount = 0\nconst INSTANCE_SYM = Symbol.for('__REACT_DND_CONTEXT_INSTANCE__')\n\n/**\n * A React component that provides the React-DnD context\n */\nexport const DndProvider: FC> = memo(\n\tfunction DndProvider({ children, ...props }) {\n\t\tconst [manager, isGlobalInstance] = getDndContextValue(props) // memoized from props\n\t\t/**\n\t\t * If the global context was used to store the DND context\n\t\t * then where theres no more references to it we should\n\t\t * clean it up to avoid memory leaks\n\t\t */\n\t\tuseEffect(() => {\n\t\t\tif (isGlobalInstance) {\n\t\t\t\tconst context = getGlobalContext()\n\t\t\t\t++refCount\n\n\t\t\t\treturn () => {\n\t\t\t\t\tif (--refCount === 0) {\n\t\t\t\t\t\tcontext[INSTANCE_SYM] = null\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn\n\t\t}, [])\n\n\t\treturn {children}\n\t},\n)\n\nfunction getDndContextValue(props: DndProviderProps) {\n\tif ('manager' in props) {\n\t\tconst manager = { dragDropManager: props.manager }\n\t\treturn [manager, false]\n\t}\n\n\tconst manager = createSingletonDndContext(\n\t\tprops.backend,\n\t\tprops.context,\n\t\tprops.options,\n\t\tprops.debugMode,\n\t)\n\tconst isGlobalInstance = !props.context\n\n\treturn [manager, isGlobalInstance]\n}\n\nfunction createSingletonDndContext(\n\tbackend: BackendFactory,\n\tcontext: BackendContext = getGlobalContext(),\n\toptions: BackendOptions,\n\tdebugMode?: boolean,\n) {\n\tconst ctx = context as any\n\tif (!ctx[INSTANCE_SYM]) {\n\t\tctx[INSTANCE_SYM] = {\n\t\t\tdragDropManager: createDragDropManager(\n\t\t\t\tbackend,\n\t\t\t\tcontext,\n\t\t\t\toptions,\n\t\t\t\tdebugMode,\n\t\t\t),\n\t\t}\n\t}\n\treturn ctx[INSTANCE_SYM]\n}\n\ndeclare const global: any\nfunction getGlobalContext() {\n\treturn typeof global !== 'undefined' ? global : (window as any)\n}\n","// cheap lodash replacements\n\nexport function memoize(fn: () => T): () => T {\n\tlet result: T | null = null\n\tconst memoized = () => {\n\t\tif (result == null) {\n\t\t\tresult = fn()\n\t\t}\n\t\treturn result\n\t}\n\treturn memoized\n}\n\n/**\n * drop-in replacement for _.without\n */\nexport function without(items: T[], item: T) {\n\treturn items.filter((i) => i !== item)\n}\n\nexport function union(itemsA: T[], itemsB: T[]) {\n\tconst set = new Set()\n\tconst insertItem = (item: T) => set.add(item)\n\titemsA.forEach(insertItem)\n\titemsB.forEach(insertItem)\n\n\tconst result: T[] = []\n\tset.forEach((key) => result.push(key))\n\treturn result\n}\n","import { union, without } from './utils/js_utils.js'\n\ntype NodePredicate = (node: Node | null | undefined) => boolean\n\nexport class EnterLeaveCounter {\n\tprivate entered: any[] = []\n\tprivate isNodeInDocument: NodePredicate\n\n\tpublic constructor(isNodeInDocument: NodePredicate) {\n\t\tthis.isNodeInDocument = isNodeInDocument\n\t}\n\n\tpublic enter(enteringNode: EventTarget | null): boolean {\n\t\tconst previousLength = this.entered.length\n\n\t\tconst isNodeEntered = (node: Node): boolean =>\n\t\t\tthis.isNodeInDocument(node) &&\n\t\t\t(!node.contains || node.contains(enteringNode as Node))\n\n\t\tthis.entered = union(this.entered.filter(isNodeEntered), [enteringNode])\n\n\t\treturn previousLength === 0 && this.entered.length > 0\n\t}\n\n\tpublic leave(leavingNode: EventTarget | null): boolean {\n\t\tconst previousLength = this.entered.length\n\n\t\tthis.entered = without(\n\t\t\tthis.entered.filter(this.isNodeInDocument),\n\t\t\tleavingNode,\n\t\t)\n\n\t\treturn previousLength > 0 && this.entered.length === 0\n\t}\n\n\tpublic reset(): void {\n\t\tthis.entered = []\n\t}\n}\n","import type { DragDropMonitor } from 'dnd-core'\n\nimport type { NativeItemConfig } from './nativeTypesConfig.js'\n\nexport class NativeDragSource {\n\tpublic item: any\n\tprivate config: NativeItemConfig\n\n\tpublic constructor(config: NativeItemConfig) {\n\t\tthis.config = config\n\t\tthis.item = {}\n\t\tthis.initializeExposedProperties()\n\t}\n\n\tprivate initializeExposedProperties() {\n\t\tObject.keys(this.config.exposeProperties).forEach((property) => {\n\t\t\tObject.defineProperty(this.item, property, {\n\t\t\t\tconfigurable: true, // This is needed to allow redefining it later\n\t\t\t\tenumerable: true,\n\t\t\t\tget() {\n\t\t\t\t\t// eslint-disable-next-line no-console\n\t\t\t\t\tconsole.warn(\n\t\t\t\t\t\t`Browser doesn't allow reading \"${property}\" until the drop event.`,\n\t\t\t\t\t)\n\t\t\t\t\treturn null\n\t\t\t\t},\n\t\t\t})\n\t\t})\n\t}\n\n\tpublic loadDataTransfer(dataTransfer: DataTransfer | null | undefined): void {\n\t\tif (dataTransfer) {\n\t\t\tconst newProperties: PropertyDescriptorMap = {}\n\t\t\tObject.keys(this.config.exposeProperties).forEach((property) => {\n\t\t\t\tconst propertyFn = this.config.exposeProperties[property]\n\t\t\t\tif (propertyFn != null) {\n\t\t\t\t\tnewProperties[property] = {\n\t\t\t\t\t\tvalue: propertyFn(dataTransfer, this.config.matchesTypes),\n\t\t\t\t\t\tconfigurable: true,\n\t\t\t\t\t\tenumerable: true,\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t})\n\t\t\tObject.defineProperties(this.item, newProperties)\n\t\t}\n\t}\n\n\tpublic canDrag(): boolean {\n\t\treturn true\n\t}\n\n\tpublic beginDrag(): any {\n\t\treturn this.item\n\t}\n\n\tpublic isDragging(monitor: DragDropMonitor, handle: string): boolean {\n\t\treturn handle === monitor.getSourceId()\n\t}\n\n\tpublic endDrag(): void {\n\t\t// empty\n\t}\n}\n","export const FILE = '__NATIVE_FILE__'\nexport const URL = '__NATIVE_URL__'\nexport const TEXT = '__NATIVE_TEXT__'\nexport const HTML = '__NATIVE_HTML__'\n","export function getDataFromDataTransfer(\n\tdataTransfer: DataTransfer,\n\ttypesToTry: string[],\n\tdefaultValue: string,\n): string {\n\tconst result = typesToTry.reduce(\n\t\t(resultSoFar, typeToTry) => resultSoFar || dataTransfer.getData(typeToTry),\n\t\t'',\n\t)\n\n\treturn result != null ? result : defaultValue\n}\n","import * as NativeTypes from '../NativeTypes.js'\nimport { getDataFromDataTransfer } from './getDataFromDataTransfer.js'\n\nexport interface NativeItemConfigExposePropreties {\n\t[property: string]: (\n\t\tdataTransfer: DataTransfer,\n\t\tmatchesTypes: string[],\n\t) => any\n}\n\nexport interface NativeItemConfig {\n\texposeProperties: NativeItemConfigExposePropreties\n\tmatchesTypes: string[]\n}\n\nexport const nativeTypesConfig: {\n\t[key: string]: NativeItemConfig\n} = {\n\t[NativeTypes.FILE]: {\n\t\texposeProperties: {\n\t\t\tfiles: (dataTransfer: DataTransfer): File[] =>\n\t\t\t\tArray.prototype.slice.call(dataTransfer.files),\n\t\t\titems: (dataTransfer: DataTransfer): DataTransferItemList =>\n\t\t\t\tdataTransfer.items,\n\t\t\tdataTransfer: (dataTransfer: DataTransfer): DataTransfer => dataTransfer,\n\t\t},\n\t\tmatchesTypes: ['Files'],\n\t},\n\t[NativeTypes.HTML]: {\n\t\texposeProperties: {\n\t\t\thtml: (dataTransfer: DataTransfer, matchesTypes: string[]): string =>\n\t\t\t\tgetDataFromDataTransfer(dataTransfer, matchesTypes, ''),\n\t\t\tdataTransfer: (dataTransfer: DataTransfer): DataTransfer => dataTransfer,\n\t\t},\n\t\tmatchesTypes: ['Html', 'text/html'],\n\t},\n\t[NativeTypes.URL]: {\n\t\texposeProperties: {\n\t\t\turls: (dataTransfer: DataTransfer, matchesTypes: string[]): string[] =>\n\t\t\t\tgetDataFromDataTransfer(dataTransfer, matchesTypes, '').split('\\n'),\n\t\t\tdataTransfer: (dataTransfer: DataTransfer): DataTransfer => dataTransfer,\n\t\t},\n\t\tmatchesTypes: ['Url', 'text/uri-list'],\n\t},\n\t[NativeTypes.TEXT]: {\n\t\texposeProperties: {\n\t\t\ttext: (dataTransfer: DataTransfer, matchesTypes: string[]): string =>\n\t\t\t\tgetDataFromDataTransfer(dataTransfer, matchesTypes, ''),\n\t\t\tdataTransfer: (dataTransfer: DataTransfer): DataTransfer => dataTransfer,\n\t\t},\n\t\tmatchesTypes: ['Text', 'text/plain'],\n\t},\n}\n","import { NativeDragSource } from './NativeDragSource.js'\nimport { nativeTypesConfig } from './nativeTypesConfig.js'\n\nexport function createNativeDragSource(\n\ttype: string,\n\tdataTransfer?: DataTransfer,\n): NativeDragSource {\n\tconst config = nativeTypesConfig[type]\n\tif (!config) {\n\t\tthrow new Error(`native type ${type} has no configuration`)\n\t}\n\tconst result = new NativeDragSource(config)\n\tresult.loadDataTransfer(dataTransfer)\n\treturn result\n}\n\nexport function matchNativeItemType(\n\tdataTransfer: DataTransfer | null,\n): string | null {\n\tif (!dataTransfer) {\n\t\treturn null\n\t}\n\n\tconst dataTransferTypes = Array.prototype.slice.call(dataTransfer.types || [])\n\treturn (\n\t\tObject.keys(nativeTypesConfig).filter((nativeItemType) => {\n\t\t\tconst typeConfig = nativeTypesConfig[nativeItemType]\n\t\t\tif (!typeConfig?.matchesTypes) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t\treturn typeConfig.matchesTypes.some(\n\t\t\t\t(t) => dataTransferTypes.indexOf(t) > -1,\n\t\t\t)\n\t\t})[0] || null\n\t)\n}\n","import { memoize } from './utils/js_utils.js'\n\ndeclare global {\n\tinterface Window extends HTMLElement {\n\t\tsafari: any\n\t}\n}\n\nexport type Predicate = () => boolean\nexport const isFirefox: Predicate = memoize(() =>\n\t/firefox/i.test(navigator.userAgent),\n)\nexport const isSafari: Predicate = memoize(() => Boolean(window.safari))\n","export class MonotonicInterpolant {\n\tprivate xs: any\n\tprivate ys: any\n\tprivate c1s: any\n\tprivate c2s: any\n\tprivate c3s: any\n\n\tpublic constructor(xs: number[], ys: number[]) {\n\t\tconst { length } = xs\n\n\t\t// Rearrange xs and ys so that xs is sorted\n\t\tconst indexes = []\n\t\tfor (let i = 0; i < length; i++) {\n\t\t\tindexes.push(i)\n\t\t}\n\t\tindexes.sort((a, b) => ((xs[a] as number) < (xs[b] as number) ? -1 : 1))\n\n\t\t// Get consecutive differences and slopes\n\t\tconst dys = []\n\t\tconst dxs = []\n\t\tconst ms = []\n\t\tlet dx\n\t\tlet dy\n\t\tfor (let i = 0; i < length - 1; i++) {\n\t\t\tdx = (xs[i + 1] as number) - (xs[i] as number)\n\t\t\tdy = (ys[i + 1] as number) - (ys[i] as number)\n\t\t\tdxs.push(dx)\n\t\t\tdys.push(dy)\n\t\t\tms.push(dy / dx)\n\t\t}\n\n\t\t// Get degree-1 coefficients\n\t\tconst c1s = [ms[0]]\n\t\tfor (let i = 0; i < dxs.length - 1; i++) {\n\t\t\tconst m2 = ms[i] as number\n\t\t\tconst mNext = ms[i + 1] as number\n\t\t\tif (m2 * mNext <= 0) {\n\t\t\t\tc1s.push(0)\n\t\t\t} else {\n\t\t\t\tdx = dxs[i] as number\n\t\t\t\tconst dxNext = dxs[i + 1] as number\n\t\t\t\tconst common = dx + dxNext\n\t\t\t\tc1s.push(\n\t\t\t\t\t(3 * common) / ((common + dxNext) / m2 + (common + dx) / mNext),\n\t\t\t\t)\n\t\t\t}\n\t\t}\n\t\tc1s.push(ms[ms.length - 1])\n\n\t\t// Get degree-2 and degree-3 coefficients\n\t\tconst c2s = []\n\t\tconst c3s = []\n\t\tlet m\n\t\tfor (let i = 0; i < c1s.length - 1; i++) {\n\t\t\tm = ms[i] as number\n\t\t\tconst c1 = c1s[i] as number\n\t\t\tconst invDx = 1 / (dxs[i] as number)\n\t\t\tconst common = c1 + (c1s[i + 1] as number) - m - m\n\t\t\tc2s.push((m - c1 - common) * invDx)\n\t\t\tc3s.push(common * invDx * invDx)\n\t\t}\n\n\t\tthis.xs = xs\n\t\tthis.ys = ys\n\t\tthis.c1s = c1s\n\t\tthis.c2s = c2s\n\t\tthis.c3s = c3s\n\t}\n\n\tpublic interpolate(x: number): number {\n\t\tconst { xs, ys, c1s, c2s, c3s } = this\n\n\t\t// The rightmost point in the dataset should give an exact result\n\t\tlet i = xs.length - 1\n\t\tif (x === xs[i]) {\n\t\t\treturn ys[i]\n\t\t}\n\n\t\t// Search for the interval x is in, returning the corresponding y if x is one of the original xs\n\t\tlet low = 0\n\t\tlet high = c3s.length - 1\n\t\tlet mid\n\t\twhile (low <= high) {\n\t\t\tmid = Math.floor(0.5 * (low + high))\n\t\t\tconst xHere = xs[mid]\n\t\t\tif (xHere < x) {\n\t\t\t\tlow = mid + 1\n\t\t\t} else if (xHere > x) {\n\t\t\t\thigh = mid - 1\n\t\t\t} else {\n\t\t\t\treturn ys[mid]\n\t\t\t}\n\t\t}\n\t\ti = Math.max(0, high)\n\n\t\t// Interpolate\n\t\tconst diff = x - xs[i]\n\t\tconst diffSq = diff * diff\n\t\treturn ys[i] + c1s[i] * diff + c2s[i] * diffSq + c3s[i] * diff * diffSq\n\t}\n}\n","import type { XYCoord } from 'dnd-core'\n\nimport { isFirefox, isSafari } from './BrowserDetector.js'\nimport { MonotonicInterpolant } from './MonotonicInterpolant.js'\n\nconst ELEMENT_NODE = 1\n\nexport function getNodeClientOffset(node: Node): XYCoord | null {\n\tconst el = node.nodeType === ELEMENT_NODE ? node : node.parentElement\n\n\tif (!el) {\n\t\treturn null\n\t}\n\n\tconst { top, left } = (el as HTMLElement).getBoundingClientRect()\n\treturn { x: left, y: top }\n}\n\nexport function getEventClientOffset(e: MouseEvent): XYCoord {\n\treturn {\n\t\tx: e.clientX,\n\t\ty: e.clientY,\n\t}\n}\n\nfunction isImageNode(node: any) {\n\treturn (\n\t\tnode.nodeName === 'IMG' &&\n\t\t(isFirefox() || !document.documentElement?.contains(node))\n\t)\n}\n\nfunction getDragPreviewSize(\n\tisImage: boolean,\n\tdragPreview: any,\n\tsourceWidth: number,\n\tsourceHeight: number,\n) {\n\tlet dragPreviewWidth = isImage ? dragPreview.width : sourceWidth\n\tlet dragPreviewHeight = isImage ? dragPreview.height : sourceHeight\n\n\t// Work around @2x coordinate discrepancies in browsers\n\tif (isSafari() && isImage) {\n\t\tdragPreviewHeight /= window.devicePixelRatio\n\t\tdragPreviewWidth /= window.devicePixelRatio\n\t}\n\treturn { dragPreviewWidth, dragPreviewHeight }\n}\n\nexport function getDragPreviewOffset(\n\tsourceNode: HTMLElement,\n\tdragPreview: HTMLElement,\n\tclientOffset: XYCoord,\n\tanchorPoint: { anchorX: number; anchorY: number },\n\toffsetPoint: { offsetX: number; offsetY: number },\n): XYCoord {\n\t// The browsers will use the image intrinsic size under different conditions.\n\t// Firefox only cares if it's an image, but WebKit also wants it to be detached.\n\tconst isImage = isImageNode(dragPreview)\n\tconst dragPreviewNode = isImage ? sourceNode : dragPreview\n\tconst dragPreviewNodeOffsetFromClient = getNodeClientOffset(\n\t\tdragPreviewNode,\n\t) as XYCoord\n\tconst offsetFromDragPreview = {\n\t\tx: clientOffset.x - dragPreviewNodeOffsetFromClient.x,\n\t\ty: clientOffset.y - dragPreviewNodeOffsetFromClient.y,\n\t}\n\tconst { offsetWidth: sourceWidth, offsetHeight: sourceHeight } = sourceNode\n\tconst { anchorX, anchorY } = anchorPoint\n\tconst { dragPreviewWidth, dragPreviewHeight } = getDragPreviewSize(\n\t\tisImage,\n\t\tdragPreview,\n\t\tsourceWidth,\n\t\tsourceHeight,\n\t)\n\n\tconst calculateYOffset = () => {\n\t\tconst interpolantY = new MonotonicInterpolant(\n\t\t\t[0, 0.5, 1],\n\t\t\t[\n\t\t\t\t// Dock to the top\n\t\t\t\toffsetFromDragPreview.y,\n\t\t\t\t// Align at the center\n\t\t\t\t(offsetFromDragPreview.y / sourceHeight) * dragPreviewHeight,\n\t\t\t\t// Dock to the bottom\n\t\t\t\toffsetFromDragPreview.y + dragPreviewHeight - sourceHeight,\n\t\t\t],\n\t\t)\n\t\tlet y = interpolantY.interpolate(anchorY)\n\t\t// Work around Safari 8 positioning bug\n\t\tif (isSafari() && isImage) {\n\t\t\t// We'll have to wait for @3x to see if this is entirely correct\n\t\t\ty += (window.devicePixelRatio - 1) * dragPreviewHeight\n\t\t}\n\t\treturn y\n\t}\n\n\tconst calculateXOffset = () => {\n\t\t// Interpolate coordinates depending on anchor point\n\t\t// If you know a simpler way to do this, let me know\n\t\tconst interpolantX = new MonotonicInterpolant(\n\t\t\t[0, 0.5, 1],\n\t\t\t[\n\t\t\t\t// Dock to the left\n\t\t\t\toffsetFromDragPreview.x,\n\t\t\t\t// Align at the center\n\t\t\t\t(offsetFromDragPreview.x / sourceWidth) * dragPreviewWidth,\n\t\t\t\t// Dock to the right\n\t\t\t\toffsetFromDragPreview.x + dragPreviewWidth - sourceWidth,\n\t\t\t],\n\t\t)\n\t\treturn interpolantX.interpolate(anchorX)\n\t}\n\n\t// Force offsets if specified in the options.\n\tconst { offsetX, offsetY } = offsetPoint\n\tconst isManualOffsetX = offsetX === 0 || offsetX\n\tconst isManualOffsetY = offsetY === 0 || offsetY\n\treturn {\n\t\tx: isManualOffsetX ? offsetX : calculateXOffset(),\n\t\ty: isManualOffsetY ? offsetY : calculateYOffset(),\n\t}\n}\n","import type { HTML5BackendContext, HTML5BackendOptions } from './types.js'\n\nexport class OptionsReader {\n\tpublic ownerDocument: Document | null = null\n\tprivate globalContext: HTML5BackendContext\n\tprivate optionsArgs: HTML5BackendOptions | undefined\n\n\tpublic constructor(\n\t\tglobalContext: HTML5BackendContext,\n\t\toptions?: HTML5BackendOptions,\n\t) {\n\t\tthis.globalContext = globalContext\n\t\tthis.optionsArgs = options\n\t}\n\n\tpublic get window(): Window | undefined {\n\t\tif (this.globalContext) {\n\t\t\treturn this.globalContext\n\t\t} else if (typeof window !== 'undefined') {\n\t\t\treturn window\n\t\t}\n\t\treturn undefined\n\t}\n\n\tpublic get document(): Document | undefined {\n\t\tif (this.globalContext?.document) {\n\t\t\treturn this.globalContext.document\n\t\t} else if (this.window) {\n\t\t\treturn this.window.document\n\t\t} else {\n\t\t\treturn undefined\n\t\t}\n\t}\n\n\tpublic get rootElement(): Node | undefined {\n\t\treturn this.optionsArgs?.rootElement || this.window\n\t}\n}\n","import type {\n\tBackend,\n\tDragDropActions,\n\tDragDropManager,\n\tDragDropMonitor,\n\tHandlerRegistry,\n\tIdentifier,\n\tUnsubscribe,\n\tXYCoord,\n} from 'dnd-core'\n\nimport { EnterLeaveCounter } from './EnterLeaveCounter.js'\nimport {\n\tcreateNativeDragSource,\n\tmatchNativeItemType,\n} from './NativeDragSources/index.js'\nimport type { NativeDragSource } from './NativeDragSources/NativeDragSource.js'\nimport * as NativeTypes from './NativeTypes.js'\nimport {\n\tgetDragPreviewOffset,\n\tgetEventClientOffset,\n\tgetNodeClientOffset,\n} from './OffsetUtils.js'\nimport { OptionsReader } from './OptionsReader.js'\nimport type { HTML5BackendContext, HTML5BackendOptions } from './types.js'\n\ntype RootNode = Node & { __isReactDndBackendSetUp: boolean | undefined }\n\nexport class HTML5BackendImpl implements Backend {\n\tprivate options: OptionsReader\n\n\t// React-Dnd Components\n\tprivate actions: DragDropActions\n\tprivate monitor: DragDropMonitor\n\tprivate registry: HandlerRegistry\n\n\t// Internal State\n\tprivate enterLeaveCounter: EnterLeaveCounter\n\n\tprivate sourcePreviewNodes: Map = new Map()\n\tprivate sourcePreviewNodeOptions: Map = new Map()\n\tprivate sourceNodes: Map = new Map()\n\tprivate sourceNodeOptions: Map = new Map()\n\n\tprivate dragStartSourceIds: string[] | null = null\n\tprivate dropTargetIds: string[] = []\n\tprivate dragEnterTargetIds: string[] = []\n\tprivate currentNativeSource: NativeDragSource | null = null\n\tprivate currentNativeHandle: Identifier | null = null\n\tprivate currentDragSourceNode: Element | null = null\n\tprivate altKeyPressed = false\n\tprivate mouseMoveTimeoutTimer: number | null = null\n\tprivate asyncEndDragFrameId: number | null = null\n\tprivate dragOverTargetIds: string[] | null = null\n\n\tprivate lastClientOffset: XYCoord | null = null\n\tprivate hoverRafId: number | null = null\n\n\tpublic constructor(\n\t\tmanager: DragDropManager,\n\t\tglobalContext?: HTML5BackendContext,\n\t\toptions?: HTML5BackendOptions,\n\t) {\n\t\tthis.options = new OptionsReader(globalContext, options)\n\t\tthis.actions = manager.getActions()\n\t\tthis.monitor = manager.getMonitor()\n\t\tthis.registry = manager.getRegistry()\n\t\tthis.enterLeaveCounter = new EnterLeaveCounter(this.isNodeInDocument)\n\t}\n\n\t/**\n\t * Generate profiling statistics for the HTML5Backend.\n\t */\n\tpublic profile(): Record {\n\t\treturn {\n\t\t\tsourcePreviewNodes: this.sourcePreviewNodes.size,\n\t\t\tsourcePreviewNodeOptions: this.sourcePreviewNodeOptions.size,\n\t\t\tsourceNodeOptions: this.sourceNodeOptions.size,\n\t\t\tsourceNodes: this.sourceNodes.size,\n\t\t\tdragStartSourceIds: this.dragStartSourceIds?.length || 0,\n\t\t\tdropTargetIds: this.dropTargetIds.length,\n\t\t\tdragEnterTargetIds: this.dragEnterTargetIds.length,\n\t\t\tdragOverTargetIds: this.dragOverTargetIds?.length || 0,\n\t\t}\n\t}\n\n\t// public for test\n\tpublic get window(): Window | undefined {\n\t\treturn this.options.window\n\t}\n\tpublic get document(): Document | undefined {\n\t\treturn this.options.document\n\t}\n\t/**\n\t * Get the root element to use for event subscriptions\n\t */\n\tprivate get rootElement(): Node | undefined {\n\t\treturn this.options.rootElement as Node\n\t}\n\n\tpublic setup(): void {\n\t\tconst root = this.rootElement as RootNode | undefined\n\t\tif (root === undefined) {\n\t\t\treturn\n\t\t}\n\n\t\tif (root.__isReactDndBackendSetUp) {\n\t\t\tthrow new Error('Cannot have two HTML5 backends at the same time.')\n\t\t}\n\t\troot.__isReactDndBackendSetUp = true\n\t\tthis.addEventListeners(root)\n\t}\n\n\tpublic teardown(): void {\n\t\tconst root = this.rootElement as RootNode\n\t\tif (root === undefined) {\n\t\t\treturn\n\t\t}\n\n\t\troot.__isReactDndBackendSetUp = false\n\t\tthis.removeEventListeners(this.rootElement as Element)\n\t\tthis.clearCurrentDragSourceNode()\n\t\tif (this.asyncEndDragFrameId) {\n\t\t\tthis.window?.cancelAnimationFrame(this.asyncEndDragFrameId)\n\t\t}\n\t}\n\n\tpublic connectDragPreview(\n\t\tsourceId: string,\n\t\tnode: Element,\n\t\toptions: any,\n\t): Unsubscribe {\n\t\tthis.sourcePreviewNodeOptions.set(sourceId, options)\n\t\tthis.sourcePreviewNodes.set(sourceId, node)\n\n\t\treturn (): void => {\n\t\t\tthis.sourcePreviewNodes.delete(sourceId)\n\t\t\tthis.sourcePreviewNodeOptions.delete(sourceId)\n\t\t}\n\t}\n\n\tpublic connectDragSource(\n\t\tsourceId: string,\n\t\tnode: Element,\n\t\toptions: any,\n\t): Unsubscribe {\n\t\tthis.sourceNodes.set(sourceId, node)\n\t\tthis.sourceNodeOptions.set(sourceId, options)\n\n\t\tconst handleDragStart = (e: any) => this.handleDragStart(e, sourceId)\n\t\tconst handleSelectStart = (e: any) => this.handleSelectStart(e)\n\n\t\tnode.setAttribute('draggable', 'true')\n\t\tnode.addEventListener('dragstart', handleDragStart)\n\t\tnode.addEventListener('selectstart', handleSelectStart)\n\n\t\treturn (): void => {\n\t\t\tthis.sourceNodes.delete(sourceId)\n\t\t\tthis.sourceNodeOptions.delete(sourceId)\n\n\t\t\tnode.removeEventListener('dragstart', handleDragStart)\n\t\t\tnode.removeEventListener('selectstart', handleSelectStart)\n\t\t\tnode.setAttribute('draggable', 'false')\n\t\t}\n\t}\n\n\tpublic connectDropTarget(targetId: string, node: HTMLElement): Unsubscribe {\n\t\tconst handleDragEnter = (e: DragEvent) => this.handleDragEnter(e, targetId)\n\t\tconst handleDragOver = (e: DragEvent) => this.handleDragOver(e, targetId)\n\t\tconst handleDrop = (e: DragEvent) => this.handleDrop(e, targetId)\n\n\t\tnode.addEventListener('dragenter', handleDragEnter)\n\t\tnode.addEventListener('dragover', handleDragOver)\n\t\tnode.addEventListener('drop', handleDrop)\n\n\t\treturn (): void => {\n\t\t\tnode.removeEventListener('dragenter', handleDragEnter)\n\t\t\tnode.removeEventListener('dragover', handleDragOver)\n\t\t\tnode.removeEventListener('drop', handleDrop)\n\t\t}\n\t}\n\n\tprivate addEventListeners(target: Node) {\n\t\t// SSR Fix (https://github.com/react-dnd/react-dnd/pull/813\n\t\tif (!target.addEventListener) {\n\t\t\treturn\n\t\t}\n\t\ttarget.addEventListener(\n\t\t\t'dragstart',\n\t\t\tthis.handleTopDragStart as EventListener,\n\t\t)\n\t\ttarget.addEventListener('dragstart', this.handleTopDragStartCapture, true)\n\t\ttarget.addEventListener('dragend', this.handleTopDragEndCapture, true)\n\t\ttarget.addEventListener(\n\t\t\t'dragenter',\n\t\t\tthis.handleTopDragEnter as EventListener,\n\t\t)\n\t\ttarget.addEventListener(\n\t\t\t'dragenter',\n\t\t\tthis.handleTopDragEnterCapture as EventListener,\n\t\t\ttrue,\n\t\t)\n\t\ttarget.addEventListener(\n\t\t\t'dragleave',\n\t\t\tthis.handleTopDragLeaveCapture as EventListener,\n\t\t\ttrue,\n\t\t)\n\t\ttarget.addEventListener('dragover', this.handleTopDragOver as EventListener)\n\t\ttarget.addEventListener(\n\t\t\t'dragover',\n\t\t\tthis.handleTopDragOverCapture as EventListener,\n\t\t\ttrue,\n\t\t)\n\t\ttarget.addEventListener('drop', this.handleTopDrop as EventListener)\n\t\ttarget.addEventListener(\n\t\t\t'drop',\n\t\t\tthis.handleTopDropCapture as EventListener,\n\t\t\ttrue,\n\t\t)\n\t}\n\n\tprivate removeEventListeners(target: Node) {\n\t\t// SSR Fix (https://github.com/react-dnd/react-dnd/pull/813\n\t\tif (!target.removeEventListener) {\n\t\t\treturn\n\t\t}\n\t\ttarget.removeEventListener('dragstart', this.handleTopDragStart as any)\n\t\ttarget.removeEventListener(\n\t\t\t'dragstart',\n\t\t\tthis.handleTopDragStartCapture,\n\t\t\ttrue,\n\t\t)\n\t\ttarget.removeEventListener('dragend', this.handleTopDragEndCapture, true)\n\t\ttarget.removeEventListener(\n\t\t\t'dragenter',\n\t\t\tthis.handleTopDragEnter as EventListener,\n\t\t)\n\t\ttarget.removeEventListener(\n\t\t\t'dragenter',\n\t\t\tthis.handleTopDragEnterCapture as EventListener,\n\t\t\ttrue,\n\t\t)\n\t\ttarget.removeEventListener(\n\t\t\t'dragleave',\n\t\t\tthis.handleTopDragLeaveCapture as EventListener,\n\t\t\ttrue,\n\t\t)\n\t\ttarget.removeEventListener(\n\t\t\t'dragover',\n\t\t\tthis.handleTopDragOver as EventListener,\n\t\t)\n\t\ttarget.removeEventListener(\n\t\t\t'dragover',\n\t\t\tthis.handleTopDragOverCapture as EventListener,\n\t\t\ttrue,\n\t\t)\n\t\ttarget.removeEventListener('drop', this.handleTopDrop as EventListener)\n\t\ttarget.removeEventListener(\n\t\t\t'drop',\n\t\t\tthis.handleTopDropCapture as EventListener,\n\t\t\ttrue,\n\t\t)\n\t}\n\n\tprivate getCurrentSourceNodeOptions() {\n\t\tconst sourceId = this.monitor.getSourceId() as string\n\t\tconst sourceNodeOptions = this.sourceNodeOptions.get(sourceId)\n\n\t\treturn {\n\t\t\tdropEffect: this.altKeyPressed ? 'copy' : 'move',\n\t\t\t...(sourceNodeOptions || {}),\n\t\t}\n\t}\n\n\tprivate getCurrentDropEffect() {\n\t\tif (this.isDraggingNativeItem()) {\n\t\t\t// It makes more sense to default to 'copy' for native resources\n\t\t\treturn 'copy'\n\t\t}\n\n\t\treturn this.getCurrentSourceNodeOptions().dropEffect\n\t}\n\n\tprivate getCurrentSourcePreviewNodeOptions() {\n\t\tconst sourceId = this.monitor.getSourceId() as string\n\t\tconst sourcePreviewNodeOptions = this.sourcePreviewNodeOptions.get(sourceId)\n\n\t\treturn {\n\t\t\tanchorX: 0.5,\n\t\t\tanchorY: 0.5,\n\t\t\tcaptureDraggingState: false,\n\t\t\t...(sourcePreviewNodeOptions || {}),\n\t\t}\n\t}\n\n\tprivate getSourceClientOffset = (sourceId: string): XYCoord | null => {\n\t\tconst source = this.sourceNodes.get(sourceId)\n\t\treturn (source && getNodeClientOffset(source as HTMLElement)) || null\n\t}\n\n\tprivate isDraggingNativeItem() {\n\t\tconst itemType = this.monitor.getItemType()\n\t\treturn Object.keys(NativeTypes).some(\n\t\t\t(key: string) => (NativeTypes as any)[key] === itemType,\n\t\t)\n\t}\n\n\tprivate beginDragNativeItem(type: string, dataTransfer?: DataTransfer) {\n\t\tthis.clearCurrentDragSourceNode()\n\n\t\tthis.currentNativeSource = createNativeDragSource(type, dataTransfer)\n\t\tthis.currentNativeHandle = this.registry.addSource(\n\t\t\ttype,\n\t\t\tthis.currentNativeSource,\n\t\t)\n\t\tthis.actions.beginDrag([this.currentNativeHandle])\n\t}\n\n\tprivate endDragNativeItem = (): void => {\n\t\tif (!this.isDraggingNativeItem()) {\n\t\t\treturn\n\t\t}\n\n\t\tthis.actions.endDrag()\n\t\tif (this.currentNativeHandle) {\n\t\t\tthis.registry.removeSource(this.currentNativeHandle)\n\t\t}\n\t\tthis.currentNativeHandle = null\n\t\tthis.currentNativeSource = null\n\t}\n\n\tprivate isNodeInDocument = (node: Node | null | undefined): boolean => {\n\t\t// Check the node either in the main document or in the current context\n\t\treturn Boolean(\n\t\t\tnode &&\n\t\t\t\tthis.document &&\n\t\t\t\tthis.document.body &&\n\t\t\t\tthis.document.body.contains(node),\n\t\t)\n\t}\n\n\tprivate endDragIfSourceWasRemovedFromDOM = (): void => {\n\t\tconst node = this.currentDragSourceNode\n\t\tif (node == null || this.isNodeInDocument(node)) {\n\t\t\treturn\n\t\t}\n\n\t\tif (this.clearCurrentDragSourceNode() && this.monitor.isDragging()) {\n\t\t\tthis.actions.endDrag()\n\t\t}\n\t\tthis.cancelHover()\n\t}\n\n\tprivate setCurrentDragSourceNode(node: Element | null) {\n\t\tthis.clearCurrentDragSourceNode()\n\t\tthis.currentDragSourceNode = node\n\n\t\t// A timeout of > 0 is necessary to resolve Firefox issue referenced\n\t\t// See:\n\t\t// * https://github.com/react-dnd/react-dnd/pull/928\n\t\t// * https://github.com/react-dnd/react-dnd/issues/869\n\t\tconst MOUSE_MOVE_TIMEOUT = 1000\n\n\t\t// Receiving a mouse event in the middle of a dragging operation\n\t\t// means it has ended and the drag source node disappeared from DOM,\n\t\t// so the browser didn't dispatch the dragend event.\n\t\t//\n\t\t// We need to wait before we start listening for mousemove events.\n\t\t// This is needed because the drag preview needs to be drawn or else it fires an 'mousemove' event\n\t\t// immediately in some browsers.\n\t\t//\n\t\t// See:\n\t\t// * https://github.com/react-dnd/react-dnd/pull/928\n\t\t// * https://github.com/react-dnd/react-dnd/issues/869\n\t\t//\n\t\tthis.mouseMoveTimeoutTimer = setTimeout(() => {\n\t\t\treturn this.rootElement?.addEventListener(\n\t\t\t\t'mousemove',\n\t\t\t\tthis.endDragIfSourceWasRemovedFromDOM,\n\t\t\t\ttrue,\n\t\t\t)\n\t\t}, MOUSE_MOVE_TIMEOUT) as any as number\n\t}\n\n\tprivate clearCurrentDragSourceNode() {\n\t\tif (this.currentDragSourceNode) {\n\t\t\tthis.currentDragSourceNode = null\n\n\t\t\tif (this.rootElement) {\n\t\t\t\tthis.window?.clearTimeout(this.mouseMoveTimeoutTimer || undefined)\n\t\t\t\tthis.rootElement.removeEventListener(\n\t\t\t\t\t'mousemove',\n\t\t\t\t\tthis.endDragIfSourceWasRemovedFromDOM,\n\t\t\t\t\ttrue,\n\t\t\t\t)\n\t\t\t}\n\n\t\t\tthis.mouseMoveTimeoutTimer = null\n\t\t\treturn true\n\t\t}\n\n\t\treturn false\n\t}\n\n\tprivate scheduleHover = (dragOverTargetIds: string[] | null) => {\n\t\tif (\n\t\t\tthis.hoverRafId === null &&\n\t\t\ttypeof requestAnimationFrame !== 'undefined'\n\t\t) {\n\t\t\tthis.hoverRafId = requestAnimationFrame(() => {\n\t\t\t\tif (this.monitor.isDragging()) {\n\t\t\t\t\tthis.actions.hover(dragOverTargetIds || [], {\n\t\t\t\t\t\tclientOffset: this.lastClientOffset,\n\t\t\t\t\t})\n\t\t\t\t}\n\n\t\t\t\tthis.hoverRafId = null\n\t\t\t})\n\t\t}\n\t}\n\n\tprivate cancelHover = () => {\n\t\tif (\n\t\t\tthis.hoverRafId !== null &&\n\t\t\ttypeof cancelAnimationFrame !== 'undefined'\n\t\t) {\n\t\t\tcancelAnimationFrame(this.hoverRafId)\n\t\t\tthis.hoverRafId = null\n\t\t}\n\t}\n\n\tpublic handleTopDragStartCapture = (): void => {\n\t\tthis.clearCurrentDragSourceNode()\n\t\tthis.dragStartSourceIds = []\n\t}\n\n\tpublic handleDragStart(e: DragEvent, sourceId: string): void {\n\t\tif (e.defaultPrevented) {\n\t\t\treturn\n\t\t}\n\n\t\tif (!this.dragStartSourceIds) {\n\t\t\tthis.dragStartSourceIds = []\n\t\t}\n\t\tthis.dragStartSourceIds.unshift(sourceId)\n\t}\n\n\tpublic handleTopDragStart = (e: DragEvent): void => {\n\t\tif (e.defaultPrevented) {\n\t\t\treturn\n\t\t}\n\n\t\tconst { dragStartSourceIds } = this\n\t\tthis.dragStartSourceIds = null\n\n\t\tconst clientOffset = getEventClientOffset(e)\n\n\t\t// Avoid crashing if we missed a drop event or our previous drag died\n\t\tif (this.monitor.isDragging()) {\n\t\t\tthis.actions.endDrag()\n\t\t\tthis.cancelHover()\n\t\t}\n\n\t\t// Don't publish the source just yet (see why below)\n\t\tthis.actions.beginDrag(dragStartSourceIds || [], {\n\t\t\tpublishSource: false,\n\t\t\tgetSourceClientOffset: this.getSourceClientOffset,\n\t\t\tclientOffset,\n\t\t})\n\n\t\tconst { dataTransfer } = e\n\t\tconst nativeType = matchNativeItemType(dataTransfer)\n\n\t\tif (this.monitor.isDragging()) {\n\t\t\tif (dataTransfer && typeof dataTransfer.setDragImage === 'function') {\n\t\t\t\t// Use custom drag image if user specifies it.\n\t\t\t\t// If child drag source refuses drag but parent agrees,\n\t\t\t\t// use parent's node as drag image. Neither works in IE though.\n\t\t\t\tconst sourceId: string = this.monitor.getSourceId() as string\n\t\t\t\tconst sourceNode = this.sourceNodes.get(sourceId)\n\t\t\t\tconst dragPreview = this.sourcePreviewNodes.get(sourceId) || sourceNode\n\n\t\t\t\tif (dragPreview) {\n\t\t\t\t\tconst { anchorX, anchorY, offsetX, offsetY } =\n\t\t\t\t\t\tthis.getCurrentSourcePreviewNodeOptions()\n\t\t\t\t\tconst anchorPoint = { anchorX, anchorY }\n\t\t\t\t\tconst offsetPoint = { offsetX, offsetY }\n\t\t\t\t\tconst dragPreviewOffset = getDragPreviewOffset(\n\t\t\t\t\t\tsourceNode as HTMLElement,\n\t\t\t\t\t\tdragPreview as HTMLElement,\n\t\t\t\t\t\tclientOffset,\n\t\t\t\t\t\tanchorPoint,\n\t\t\t\t\t\toffsetPoint,\n\t\t\t\t\t)\n\n\t\t\t\t\tdataTransfer.setDragImage(\n\t\t\t\t\t\tdragPreview,\n\t\t\t\t\t\tdragPreviewOffset.x,\n\t\t\t\t\t\tdragPreviewOffset.y,\n\t\t\t\t\t)\n\t\t\t\t}\n\t\t\t}\n\n\t\t\ttry {\n\t\t\t\t// Firefox won't drag without setting data\n\t\t\t\tdataTransfer?.setData('application/json', {} as any)\n\t\t\t} catch (err) {\n\t\t\t\t// IE doesn't support MIME types in setData\n\t\t\t}\n\n\t\t\t// Store drag source node so we can check whether\n\t\t\t// it is removed from DOM and trigger endDrag manually.\n\t\t\tthis.setCurrentDragSourceNode(e.target as Element)\n\n\t\t\t// Now we are ready to publish the drag source.. or are we not?\n\t\t\tconst { captureDraggingState } = this.getCurrentSourcePreviewNodeOptions()\n\t\t\tif (!captureDraggingState) {\n\t\t\t\t// Usually we want to publish it in the next tick so that browser\n\t\t\t\t// is able to screenshot the current (not yet dragging) state.\n\t\t\t\t//\n\t\t\t\t// It also neatly avoids a situation where render() returns null\n\t\t\t\t// in the same tick for the source element, and browser freaks out.\n\t\t\t\tsetTimeout(() => this.actions.publishDragSource(), 0)\n\t\t\t} else {\n\t\t\t\t// In some cases the user may want to override this behavior, e.g.\n\t\t\t\t// to work around IE not supporting custom drag previews.\n\t\t\t\t//\n\t\t\t\t// When using a custom drag layer, the only way to prevent\n\t\t\t\t// the default drag preview from drawing in IE is to screenshot\n\t\t\t\t// the dragging state in which the node itself has zero opacity\n\t\t\t\t// and height. In this case, though, returning null from render()\n\t\t\t\t// will abruptly end the dragging, which is not obvious.\n\t\t\t\t//\n\t\t\t\t// This is the reason such behavior is strictly opt-in.\n\t\t\t\tthis.actions.publishDragSource()\n\t\t\t}\n\t\t} else if (nativeType) {\n\t\t\t// A native item (such as URL) dragged from inside the document\n\t\t\tthis.beginDragNativeItem(nativeType)\n\t\t} else if (\n\t\t\tdataTransfer &&\n\t\t\t!dataTransfer.types &&\n\t\t\t((e.target && !(e.target as Element).hasAttribute) ||\n\t\t\t\t!(e.target as Element).hasAttribute('draggable'))\n\t\t) {\n\t\t\t// Looks like a Safari bug: dataTransfer.types is null, but there was no draggable.\n\t\t\t// Just let it drag. It's a native type (URL or text) and will be picked up in\n\t\t\t// dragenter handler.\n\t\t\treturn\n\t\t} else {\n\t\t\t// If by this time no drag source reacted, tell browser not to drag.\n\t\t\te.preventDefault()\n\t\t}\n\t}\n\n\tpublic handleTopDragEndCapture = (): void => {\n\t\tif (this.clearCurrentDragSourceNode() && this.monitor.isDragging()) {\n\t\t\t// Firefox can dispatch this event in an infinite loop\n\t\t\t// if dragend handler does something like showing an alert.\n\t\t\t// Only proceed if we have not handled it already.\n\t\t\tthis.actions.endDrag()\n\t\t}\n\t\tthis.cancelHover()\n\t}\n\n\tpublic handleTopDragEnterCapture = (e: DragEvent): void => {\n\t\tthis.dragEnterTargetIds = []\n\n\t\tif (this.isDraggingNativeItem()) {\n\t\t\tthis.currentNativeSource?.loadDataTransfer(e.dataTransfer)\n\t\t}\n\n\t\tconst isFirstEnter = this.enterLeaveCounter.enter(e.target)\n\t\tif (!isFirstEnter || this.monitor.isDragging()) {\n\t\t\treturn\n\t\t}\n\n\t\tconst { dataTransfer } = e\n\t\tconst nativeType = matchNativeItemType(dataTransfer)\n\n\t\tif (nativeType) {\n\t\t\t// A native item (such as file or URL) dragged from outside the document\n\t\t\tthis.beginDragNativeItem(nativeType, dataTransfer as DataTransfer)\n\t\t}\n\t}\n\n\tpublic handleDragEnter(_e: DragEvent, targetId: string): void {\n\t\tthis.dragEnterTargetIds.unshift(targetId)\n\t}\n\n\tpublic handleTopDragEnter = (e: DragEvent): void => {\n\t\tconst { dragEnterTargetIds } = this\n\t\tthis.dragEnterTargetIds = []\n\n\t\tif (!this.monitor.isDragging()) {\n\t\t\t// This is probably a native item type we don't understand.\n\t\t\treturn\n\t\t}\n\n\t\tthis.altKeyPressed = e.altKey\n\n\t\t// If the target changes position as the result of `dragenter`, `dragover` might still\n\t\t// get dispatched despite target being no longer there. The easy solution is to check\n\t\t// whether there actually is a target before firing `hover`.\n\t\tif (dragEnterTargetIds.length > 0) {\n\t\t\tthis.actions.hover(dragEnterTargetIds, {\n\t\t\t\tclientOffset: getEventClientOffset(e),\n\t\t\t})\n\t\t}\n\n\t\tconst canDrop = dragEnterTargetIds.some((targetId) =>\n\t\t\tthis.monitor.canDropOnTarget(targetId),\n\t\t)\n\n\t\tif (canDrop) {\n\t\t\t// IE requires this to fire dragover events\n\t\t\te.preventDefault()\n\t\t\tif (e.dataTransfer) {\n\t\t\t\te.dataTransfer.dropEffect = this.getCurrentDropEffect()\n\t\t\t}\n\t\t}\n\t}\n\n\tpublic handleTopDragOverCapture = (e: DragEvent): void => {\n\t\tthis.dragOverTargetIds = []\n\n\t\tif (this.isDraggingNativeItem()) {\n\t\t\tthis.currentNativeSource?.loadDataTransfer(e.dataTransfer)\n\t\t}\n\t}\n\n\tpublic handleDragOver(_e: DragEvent, targetId: string): void {\n\t\tif (this.dragOverTargetIds === null) {\n\t\t\tthis.dragOverTargetIds = []\n\t\t}\n\t\tthis.dragOverTargetIds.unshift(targetId)\n\t}\n\n\tpublic handleTopDragOver = (e: DragEvent): void => {\n\t\tconst { dragOverTargetIds } = this\n\t\tthis.dragOverTargetIds = []\n\n\t\tif (!this.monitor.isDragging()) {\n\t\t\t// This is probably a native item type we don't understand.\n\t\t\t// Prevent default \"drop and blow away the whole document\" action.\n\t\t\te.preventDefault()\n\t\t\tif (e.dataTransfer) {\n\t\t\t\te.dataTransfer.dropEffect = 'none'\n\t\t\t}\n\t\t\treturn\n\t\t}\n\n\t\tthis.altKeyPressed = e.altKey\n\t\tthis.lastClientOffset = getEventClientOffset(e)\n\n\t\tthis.scheduleHover(dragOverTargetIds)\n\n\t\tconst canDrop = (dragOverTargetIds || []).some((targetId) =>\n\t\t\tthis.monitor.canDropOnTarget(targetId),\n\t\t)\n\n\t\tif (canDrop) {\n\t\t\t// Show user-specified drop effect.\n\t\t\te.preventDefault()\n\t\t\tif (e.dataTransfer) {\n\t\t\t\te.dataTransfer.dropEffect = this.getCurrentDropEffect()\n\t\t\t}\n\t\t} else if (this.isDraggingNativeItem()) {\n\t\t\t// Don't show a nice cursor but still prevent default\n\t\t\t// \"drop and blow away the whole document\" action.\n\t\t\te.preventDefault()\n\t\t} else {\n\t\t\te.preventDefault()\n\t\t\tif (e.dataTransfer) {\n\t\t\t\te.dataTransfer.dropEffect = 'none'\n\t\t\t}\n\t\t}\n\t}\n\n\tpublic handleTopDragLeaveCapture = (e: DragEvent): void => {\n\t\tif (this.isDraggingNativeItem()) {\n\t\t\te.preventDefault()\n\t\t}\n\n\t\tconst isLastLeave = this.enterLeaveCounter.leave(e.target)\n\t\tif (!isLastLeave) {\n\t\t\treturn\n\t\t}\n\n\t\tif (this.isDraggingNativeItem()) {\n\t\t\tsetTimeout(() => this.endDragNativeItem(), 0)\n\t\t}\n\t\tthis.cancelHover()\n\t}\n\n\tpublic handleTopDropCapture = (e: DragEvent): void => {\n\t\tthis.dropTargetIds = []\n\n\t\tif (this.isDraggingNativeItem()) {\n\t\t\te.preventDefault()\n\t\t\tthis.currentNativeSource?.loadDataTransfer(e.dataTransfer)\n\t\t} else if (matchNativeItemType(e.dataTransfer)) {\n\t\t\t// Dragging some elements, like
and may still behave like a native drag event,\n\t\t\t// even if the current drag event matches a user-defined type.\n\t\t\t// Stop the default behavior when we're not expecting a native item to be dropped.\n\n\t\t\te.preventDefault()\n\t\t}\n\n\t\tthis.enterLeaveCounter.reset()\n\t}\n\n\tpublic handleDrop(_e: DragEvent, targetId: string): void {\n\t\tthis.dropTargetIds.unshift(targetId)\n\t}\n\n\tpublic handleTopDrop = (e: DragEvent): void => {\n\t\tconst { dropTargetIds } = this\n\t\tthis.dropTargetIds = []\n\n\t\tthis.actions.hover(dropTargetIds, {\n\t\t\tclientOffset: getEventClientOffset(e),\n\t\t})\n\t\tthis.actions.drop({ dropEffect: this.getCurrentDropEffect() })\n\n\t\tif (this.isDraggingNativeItem()) {\n\t\t\tthis.endDragNativeItem()\n\t\t} else if (this.monitor.isDragging()) {\n\t\t\tthis.actions.endDrag()\n\t\t}\n\t\tthis.cancelHover()\n\t}\n\n\tpublic handleSelectStart = (e: DragEvent): void => {\n\t\tconst target = e.target as HTMLElement & { dragDrop: () => void }\n\n\t\t// Only IE requires us to explicitly say\n\t\t// we want drag drop operation to start\n\t\tif (typeof target.dragDrop !== 'function') {\n\t\t\treturn\n\t\t}\n\n\t\t// Inputs and textareas should be selectable\n\t\tif (\n\t\t\ttarget.tagName === 'INPUT' ||\n\t\t\ttarget.tagName === 'SELECT' ||\n\t\t\ttarget.tagName === 'TEXTAREA' ||\n\t\t\ttarget.isContentEditable\n\t\t) {\n\t\t\treturn\n\t\t}\n\n\t\t// For other targets, ask IE\n\t\t// to enable drag and drop\n\t\te.preventDefault()\n\t\ttarget.dragDrop()\n\t}\n}\n","import type { BackendFactory, DragDropManager } from 'dnd-core'\n\nimport { HTML5BackendImpl } from './HTML5BackendImpl.js'\nimport type { HTML5BackendContext, HTML5BackendOptions } from './types.js'\nexport { getEmptyImage } from './getEmptyImage.js'\nexport * as NativeTypes from './NativeTypes.js'\nexport type { HTML5BackendContext, HTML5BackendOptions } from './types.js'\n\nexport const HTML5Backend: BackendFactory = function createBackend(\n\tmanager: DragDropManager,\n\tcontext?: HTML5BackendContext,\n\toptions?: HTML5BackendOptions,\n): HTML5BackendImpl {\n\treturn new HTML5BackendImpl(manager, context, options)\n}\n","import { useEffect, useState } from 'react';\nimport { isBrowser, off, on } from './misc/util';\nvar patchHistoryMethod = function (method) {\n var history = window.history;\n var original = history[method];\n history[method] = function (state) {\n var result = original.apply(this, arguments);\n var event = new Event(method.toLowerCase());\n event.state = state;\n window.dispatchEvent(event);\n return result;\n };\n};\nif (isBrowser) {\n patchHistoryMethod('pushState');\n patchHistoryMethod('replaceState');\n}\nvar useLocationServer = function () { return ({\n trigger: 'load',\n length: 1,\n}); };\nvar buildState = function (trigger) {\n var _a = window.history, state = _a.state, length = _a.length;\n var _b = window.location, hash = _b.hash, host = _b.host, hostname = _b.hostname, href = _b.href, origin = _b.origin, pathname = _b.pathname, port = _b.port, protocol = _b.protocol, search = _b.search;\n return {\n trigger: trigger,\n state: state,\n length: length,\n hash: hash,\n host: host,\n hostname: hostname,\n href: href,\n origin: origin,\n pathname: pathname,\n port: port,\n protocol: protocol,\n search: search,\n };\n};\nvar useLocationBrowser = function () {\n var _a = useState(buildState('load')), state = _a[0], setState = _a[1];\n useEffect(function () {\n var onPopstate = function () { return setState(buildState('popstate')); };\n var onPushstate = function () { return setState(buildState('pushstate')); };\n var onReplacestate = function () { return setState(buildState('replacestate')); };\n on(window, 'popstate', onPopstate);\n on(window, 'pushstate', onPushstate);\n on(window, 'replacestate', onReplacestate);\n return function () {\n off(window, 'popstate', onPopstate);\n off(window, 'pushstate', onPushstate);\n off(window, 'replacestate', onReplacestate);\n };\n }, []);\n return state;\n};\nvar hasEventConstructor = typeof Event === 'function';\nexport default isBrowser && hasEventConstructor ? useLocationBrowser : useLocationServer;\n","var _path;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nfunction SvgSidebarCase(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 20,\n height: 20,\n viewBox: \"0 0 20 20\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M0 3C0 1.34315 1.34315 0 3 0H17C18.6569 0 20 1.34315 20 3V17C20 18.6569 18.6569 20 17 20H3C1.34315 20 0 18.6569 0 17V3ZM3 5C3 3.89543 3.89543 3 5 3H7C8.10457 3 9 3.89543 9 5V7C9 8.10457 8.10457 9 7 9H5C3.89543 9 3 8.10457 3 7V5ZM13 3C11.8954 3 11 3.89543 11 5V7C11 8.10457 11.8954 9 13 9H15C16.1046 9 17 8.10457 17 7V5C17 3.89543 16.1046 3 15 3H13ZM11 13C11 11.8954 11.8954 11 13 11H15C16.1046 11 17 11.8954 17 13V15C17 16.1046 16.1046 17 15 17H13C11.8954 17 11 16.1046 11 15V13ZM5 11C3.89543 11 3 11.8954 3 13V15C3 16.1046 3.89543 17 5 17H7C8.10457 17 9 16.1046 9 15V13C9 11.8954 8.10457 11 7 11H5Z\",\n fill: \"#2A2F35\"\n })));\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgSidebarCase);\nexport default __webpack_public_path__ + \"static/media/sidebarCase.c3ec757ae60c90e1521f4c35bc934943.svg\";\nexport { ForwardRef as ReactComponent };","var _path;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nfunction SvgSidebarMedia(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 20,\n height: 20,\n viewBox: \"0 0 20 20\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M0 3C0 1.34315 1.34315 0 3 0H17C18.6569 0 20 1.34315 20 3V17C20 18.6569 18.6569 20 17 20H3C1.34315 20 0 18.6569 0 17V3ZM4.84415 6.84231L2.3555 15.7304C2.17695 16.368 2.65628 17 3.31846 17H10H17.1683C17.9595 17 18.4373 16.1248 18.0095 15.4592L15.127 10.9754C14.7967 10.4616 14.087 10.3613 13.6274 10.7636L11.4315 12.6849C10.9522 13.1043 10.2082 12.9747 9.89887 12.418L6.68127 6.6263C6.24737 5.84527 5.08506 5.98194 4.84415 6.84231ZM13 7C14.1046 7 15 6.10457 15 5C15 3.89543 14.1046 3 13 3C11.8954 3 11 3.89543 11 5C11 6.10457 11.8954 7 13 7Z\",\n fill: \"#2A2F35\"\n })));\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgSidebarMedia);\nexport default __webpack_public_path__ + \"static/media/sidebarMedia.b57177bded198850ea589e6ec915df43.svg\";\nexport { ForwardRef as ReactComponent };","var _path;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nfunction SvgSidebarPatient(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 20,\n height: 20,\n viewBox: \"0 0 20 20\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M3 0C1.34315 0 0 1.34315 0 3V17C0 18.6569 1.34315 20 3 20H17C18.6569 20 20 18.6569 20 17V3C20 1.34315 18.6569 0 17 0H3ZM10.0003 2C7.16998 2 5.79267 3.83265 5.46696 4.67949C5.36783 4.93723 5.07854 5.0658 4.8208 4.96667C4.56306 4.86754 4.43449 4.57825 4.53362 4.32051C4.97714 3.16735 6.67676 1 10.0003 1C13.3238 1 15.0234 3.16735 15.467 4.32051C15.5661 4.57825 15.4375 4.86754 15.1798 4.96667C14.922 5.0658 14.6327 4.93723 14.5336 4.67949C14.2079 3.83265 12.8306 2 10.0003 2ZM7.41138 4.78461C7.51682 4.63231 8.25269 4 10.0003 4C11.7479 4 12.4838 4.63231 12.5892 4.78461C12.7464 5.01165 13.0579 5.06828 13.2849 4.9111C13.5119 4.75391 13.5686 4.44244 13.4114 4.21539C13.0553 3.70102 11.945 3 10.0003 3C8.05558 3 6.9453 3.70102 6.58919 4.21539C6.43201 4.44244 6.48864 4.75391 6.71568 4.9111C6.94273 5.06828 7.2542 5.01165 7.41138 4.78461ZM8.46302 17.4412L9.28737 18.2775C9.67902 18.6748 10.3201 18.6748 10.7117 18.2775L11.5361 17.4412C12.0894 16.8799 12.3995 16.1234 12.3995 15.3352V11.5496C12.3995 10.6814 13.1952 10.031 14.0461 10.2036C14.7924 10.3551 15.5194 9.8704 15.6667 9.12329L15.7928 8.4837C15.9221 7.82747 15.7085 7.15545 15.1443 6.79623C13.9346 6.02599 11.7985 5 9.99954 5C8.22101 5 6.22282 6.00282 4.98166 6.76988C4.36351 7.15191 4.08863 7.88667 4.22918 8.59962L4.33242 9.12329C4.47971 9.87041 5.20673 10.3551 5.95301 10.2036C6.80393 10.031 7.59954 10.6814 7.59954 11.5496V15.3352C7.59954 16.1234 7.90972 16.8799 8.46302 17.4412Z\",\n fill: \"#2A2F35\"\n })));\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgSidebarPatient);\nexport default __webpack_public_path__ + \"static/media/sidebarPatient.493006025b53f3b4649f9cc23344f0a4.svg\";\nexport { ForwardRef as ReactComponent };","var _path;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nfunction SvgSidebarPresentation(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 20,\n height: 20,\n viewBox: \"0 0 20 20\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M3 0C1.34315 0 0 1.34315 0 3V17C0 18.6569 1.34315 20 3 20H17C18.6569 20 20 18.6569 20 17V3C20 1.34315 18.6569 0 17 0H3ZM14 6C14 8.20914 12.2091 10 10 10C7.79086 10 6 8.20914 6 6C6 3.79086 7.79086 2 10 2C12.2091 2 14 3.79086 14 6ZM5.68978 12.0931L3.96139 12.6116C2.79724 12.9608 2 14.0323 2 15.2478C2 16.7678 3.23222 18 4.75225 18H15.2478C16.7678 18 18 16.7678 18 15.2478C18 14.0323 17.2028 12.9608 16.0386 12.6116L14.3102 12.0931C11.4986 11.2496 8.50136 11.2496 5.68978 12.0931Z\",\n fill: \"#2A2F35\"\n })));\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgSidebarPresentation);\nexport default __webpack_public_path__ + \"static/media/sidebarPresentation.ffd7a1c323b5c74cc4584220ad449091.svg\";\nexport { ForwardRef as ReactComponent };","var _path;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nfunction SvgSidebarQuiz(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 20,\n height: 20,\n viewBox: \"0 0 20 20\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M2 0C0.895431 0 0 0.895431 0 2V18C0 19.1046 0.895431 20 2 20H18C19.1046 20 20 19.1046 20 18V2C20 0.895431 19.1046 0 18 0H2ZM8.71971 12.574C8.68454 13.4447 9.40982 14.0792 10.1934 13.992C10.9771 13.9048 11.4938 13.1097 11.6954 12.2671C11.8805 11.4932 12.3066 10.8499 13.0275 10.2635C14.3456 9.20399 15.1503 7.90547 14.9765 5.99207C14.7176 3.14233 12.4553 1.71626 9.48275 2.04698C7.29373 2.29052 5.52127 3.50134 5.03365 5.66875C4.82406 6.60036 5.62786 7.32826 6.49101 7.23223C7.18958 7.15451 7.68575 6.49263 8.15192 5.87077C8.2376 5.75648 8.32226 5.64354 8.40697 5.53583C8.73247 5.122 9.20686 4.87397 9.71925 4.81696C10.7301 4.7045 11.6128 5.34649 11.7156 6.47824C11.8125 7.54486 11.1655 8.33237 10.3022 9.06991C9.16385 10.038 8.7746 11.2151 8.71971 12.574ZM11.9614 16.55C11.9614 17.5165 11.1779 18.3 10.2114 18.3C9.24493 18.3 8.46143 17.5165 8.46143 16.55C8.46143 15.5836 9.24493 14.8 10.2114 14.8C11.1779 14.8 11.9614 15.5836 11.9614 16.55Z\",\n fill: \"#2A2F35\"\n })));\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgSidebarQuiz);\nexport default __webpack_public_path__ + \"static/media/sidebarQuiz.40715ee4e23b1fe126387a9f9c44e5fa.svg\";\nexport { ForwardRef as ReactComponent };","import { PropsWithChildren, useState } from \"react\"\nimport { useTranslation } from \"react-i18next\"\nimport AddIcon from \"../../assets/images/add.svg\"\nimport CaseIcon from \"../../assets/images/sidebarCase.svg\"\nimport MediaIcon from \"../../assets/images/sidebarMedia.svg\"\nimport SonoIcon from \"../../assets/images/sidebarPatient.svg\"\nimport PresentationIcon from \"../../assets/images/sidebarPresentation.svg\"\nimport QuizIcon from \"../../assets/images/sidebarQuiz.svg\"\n\ninterface AddScheduleProps {\n\tonAdd: (data: Record) => void\n\tcanAddCase?: boolean\n}\n\nexport const SchedulePart = ({\n\tchildren,\n\tonClick,\n}: PropsWithChildren<{ onClick: () => void }>) => {\n\treturn (\n\t\t
\n\t\t\t{children}\n\t\t
\n\t)\n}\n\nconst AddSchedule = ({ onAdd, canAddCase = true }: AddScheduleProps) => {\n\tconst [optionsVisible, setOptionsVisible] = useState(false)\n\tconst { t } = useTranslation()\n\n\treturn (\n\t\t setOptionsVisible(true)}\n\t\t\tonMouseLeave={() => setOptionsVisible(false)}\n\t\t>\n\t\t\t\"Add\"\n\t\t\t

{t(\"schedule_add\")}

\n\n\t\t\t\n\t\t\t\t
\n\t\t\t\t\t{canAddCase && (\n\t\t\t\t\t\t onAdd({ type: \"case\" })}>\n\t\t\t\t\t\t\t\"Case\"\n\t\t\t\t\t\t\t{t(\"case\")}\n\t\t\t\t\t\t\n\t\t\t\t\t)}\n\t\t\t\t\t onAdd({ type: \"presentation\" })}>\n\t\t\t\t\t\t\n\t\t\t\t\t\t{t(\"presentation\")}\n\t\t\t\t\t\n\t\t\t\t\t onAdd({ type: \"patient\" })}>\n\t\t\t\t\t\t\"Patient\"\n\t\t\t\t\t\t{t(\"patient\")}\n\t\t\t\t\t\n\t\t\t\t\t onAdd({ type: \"quiz\" })}>\n\t\t\t\t\t\t\"Quiz\"\n\t\t\t\t\t\t{t(\"quiz\")}\n\t\t\t\t\t\n\t\t\t\t\t onAdd({ type: \"media\" })}>\n\t\t\t\t\t\t\"Media\"\n\t\t\t\t\t\t{t(\"media\")}\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\n\t\t\n\t)\n}\n\nexport default AddSchedule\n","import { forwardRef, PropsWithChildren } from \"react\"\n\nconst DndContainer = forwardRef<\n\tHTMLDivElement,\n\tPropsWithChildren<{ opacity?: number; className?: string }>\n>(({ children, className, opacity = 1 }, ref) => {\n\treturn (\n\t\t\n\t\t\t{children}\n\t\t\n\t)\n})\n\nexport default DndContainer\n","import { PropsWithChildren } from \"react\"\n\nconst Number = ({\n\tchildren,\n\tclassName,\n}: PropsWithChildren<{ className?: string }>) => {\n\treturn (\n\t\t\n\t\t\t{children}\n\t\t

\n\t)\n}\n\nexport default Number\n","import { useEffect, useLayoutEffect } from 'react'\n\n// suppress the useLayoutEffect warning on server side.\nexport const useIsomorphicLayoutEffect =\n\ttypeof window !== 'undefined' ? useLayoutEffect : useEffect\n","import type { HandlerManager, MonitorEventEmitter } from '../types/index.js'\nimport { useCollector } from './useCollector.js'\nimport { useIsomorphicLayoutEffect } from './useIsomorphicLayoutEffect.js'\n\nexport function useMonitorOutput(\n\tmonitor: Monitor & MonitorEventEmitter,\n\tcollect: (monitor: Monitor) => Collected,\n\tonCollect?: () => void,\n): Collected {\n\tconst [collected, updateCollected] = useCollector(monitor, collect, onCollect)\n\n\tuseIsomorphicLayoutEffect(\n\t\tfunction subscribeToMonitorStateChange() {\n\t\t\tconst handlerId = monitor.getHandlerId()\n\t\t\tif (handlerId == null) {\n\t\t\t\treturn\n\t\t\t}\n\t\t\treturn monitor.subscribeToStateChange(updateCollected, {\n\t\t\t\thandlerIds: [handlerId],\n\t\t\t})\n\t\t},\n\t\t[monitor, updateCollected],\n\t)\n\n\treturn collected\n}\n","import equal from 'fast-deep-equal'\nimport { useCallback, useState } from 'react'\n\nimport { useIsomorphicLayoutEffect } from './useIsomorphicLayoutEffect.js'\n\n/**\n *\n * @param monitor The monitor to collect state from\n * @param collect The collecting function\n * @param onUpdate A method to invoke when updates occur\n */\nexport function useCollector(\n\tmonitor: T,\n\tcollect: (monitor: T) => S,\n\tonUpdate?: () => void,\n): [S, () => void] {\n\tconst [collected, setCollected] = useState(() => collect(monitor))\n\n\tconst updateCollected = useCallback(() => {\n\t\tconst nextValue = collect(monitor)\n\t\t// This needs to be a deep-equality check because some monitor-collected values\n\t\t// include XYCoord objects that may be equivalent, but do not have instance equality.\n\t\tif (!equal(collected, nextValue)) {\n\t\t\tsetCollected(nextValue)\n\t\t\tif (onUpdate) {\n\t\t\t\tonUpdate()\n\t\t\t}\n\t\t}\n\t}, [collected, monitor, onUpdate])\n\n\t// update the collected properties after react renders.\n\t// Note that the \"Dustbin Stress Test\" fails if this is not\n\t// done when the component updates\n\tuseIsomorphicLayoutEffect(updateCollected)\n\n\treturn [collected, updateCollected]\n}\n","import type { Connector } from '../internals/index.js'\nimport type { HandlerManager, MonitorEventEmitter } from '../types/index.js'\nimport { useMonitorOutput } from './useMonitorOutput.js'\n\nexport function useCollectedProps(\n\tcollector: ((monitor: Monitor) => Collected) | undefined,\n\tmonitor: Monitor & MonitorEventEmitter,\n\tconnector: Connector,\n) {\n\treturn useMonitorOutput(monitor, collector || (() => ({} as Collected)), () =>\n\t\tconnector.reconnect(),\n\t)\n}\n","import { useMemo } from 'react'\n\nimport type { FactoryOrInstance } from './types.js'\n\nexport function useOptionalFactory(\n\targ: FactoryOrInstance,\n\tdeps?: unknown[],\n): T {\n\tconst memoDeps = [...(deps || [])]\n\tif (deps == null && typeof arg !== 'function') {\n\t\tmemoDeps.push(arg)\n\t}\n\treturn useMemo(() => {\n\t\treturn typeof arg === 'function' ? (arg as () => T)() : (arg as T)\n\t}, memoDeps)\n}\n","import { useMemo } from 'react'\n\nimport type { TargetConnector } from '../../internals/index.js'\n\nexport function useConnectDropTarget(connector: TargetConnector) {\n\treturn useMemo(() => connector.hooks.dropTarget(), [connector])\n}\n","export function shallowEqual(\n\tobjA: T,\n\tobjB: T,\n\tcompare?: (a: T, b: T, key?: string) => boolean | void,\n\tcompareContext?: any,\n) {\n\tlet compareResult = compare\n\t\t? compare.call(compareContext, objA, objB)\n\t\t: void 0\n\tif (compareResult !== void 0) {\n\t\treturn !!compareResult\n\t}\n\n\tif (objA === objB) {\n\t\treturn true\n\t}\n\n\tif (typeof objA !== 'object' || !objA || typeof objB !== 'object' || !objB) {\n\t\treturn false\n\t}\n\n\tconst keysA = Object.keys(objA)\n\tconst keysB = Object.keys(objB)\n\n\tif (keysA.length !== keysB.length) {\n\t\treturn false\n\t}\n\n\tconst bHasOwnProperty = Object.prototype.hasOwnProperty.bind(objB)\n\n\t// Test for A's keys different from B.\n\tfor (let idx = 0; idx < keysA.length; idx++) {\n\t\tconst key = keysA[idx] as string\n\n\t\tif (!bHasOwnProperty(key)) {\n\t\t\treturn false\n\t\t}\n\n\t\tconst valueA = (objA as any)[key]\n\t\tconst valueB = (objB as any)[key]\n\n\t\tcompareResult = compare\n\t\t\t? compare.call(compareContext, valueA, valueB, key)\n\t\t\t: void 0\n\n\t\tif (\n\t\t\tcompareResult === false ||\n\t\t\t(compareResult === void 0 && valueA !== valueB)\n\t\t) {\n\t\t\treturn false\n\t\t}\n\t}\n\n\treturn true\n}\n","export interface Ref {\n\tcurrent: T\n}\n\nexport function isRef(obj: unknown): boolean {\n\treturn (\n\t\t// eslint-disable-next-line no-prototype-builtins\n\t\tobj !== null &&\n\t\ttypeof obj === 'object' &&\n\t\tObject.prototype.hasOwnProperty.call(obj, 'current')\n\t)\n}\n","import { invariant } from '@react-dnd/invariant'\nimport type { ReactElement } from 'react'\nimport { cloneElement, isValidElement } from 'react'\n\nfunction throwIfCompositeComponentElement(element: ReactElement) {\n\t// Custom components can no longer be wrapped directly in React DnD 2.0\n\t// so that we don't need to depend on findDOMNode() from react-dom.\n\tif (typeof element.type === 'string') {\n\t\treturn\n\t}\n\n\tconst displayName =\n\t\t(element.type as any).displayName || element.type.name || 'the component'\n\n\tthrow new Error(\n\t\t'Only native element nodes can now be passed to React DnD connectors.' +\n\t\t\t`You can either wrap ${displayName} into a
, or turn it into a ` +\n\t\t\t'drag source or a drop target itself.',\n\t)\n}\n\nfunction wrapHookToRecognizeElement(hook: (node: any, options: any) => void) {\n\treturn (elementOrNode = null, options = null) => {\n\t\t// When passed a node, call the hook straight away.\n\t\tif (!isValidElement(elementOrNode)) {\n\t\t\tconst node = elementOrNode\n\t\t\thook(node, options)\n\t\t\t// return the node so it can be chained (e.g. when within callback refs\n\t\t\t//
connectDragSource(connectDropTarget(node))}/>\n\t\t\treturn node\n\t\t}\n\n\t\t// If passed a ReactElement, clone it and attach this function as a ref.\n\t\t// This helps us achieve a neat API where user doesn't even know that refs\n\t\t// are being used under the hood.\n\t\tconst element: ReactElement | null = elementOrNode\n\t\tthrowIfCompositeComponentElement(element as any)\n\n\t\t// When no options are passed, use the hook directly\n\t\tconst ref = options ? (node: Element) => hook(node, options) : hook\n\t\treturn cloneWithRef(element, ref)\n\t}\n}\n\nexport function wrapConnectorHooks(hooks: any) {\n\tconst wrappedHooks: any = {}\n\n\tObject.keys(hooks).forEach((key) => {\n\t\tconst hook = hooks[key]\n\n\t\t// ref objects should be passed straight through without wrapping\n\t\tif (key.endsWith('Ref')) {\n\t\t\twrappedHooks[key] = hooks[key]\n\t\t} else {\n\t\t\tconst wrappedHook = wrapHookToRecognizeElement(hook)\n\t\t\twrappedHooks[key] = () => wrappedHook\n\t\t}\n\t})\n\n\treturn wrappedHooks\n}\n\nfunction setRef(ref: any, node: any) {\n\tif (typeof ref === 'function') {\n\t\tref(node)\n\t} else {\n\t\tref.current = node\n\t}\n}\n\nfunction cloneWithRef(element: any, newRef: any): ReactElement {\n\tconst previousRef = element.ref\n\tinvariant(\n\t\ttypeof previousRef !== 'string',\n\t\t'Cannot connect React DnD to an element with an existing string ref. ' +\n\t\t\t'Please convert it to use a callback ref instead, or wrap it into a or
. ' +\n\t\t\t'Read more: https://reactjs.org/docs/refs-and-the-dom.html#callback-refs',\n\t)\n\n\tif (!previousRef) {\n\t\t// When there is no ref on the element, use the new ref directly\n\t\treturn cloneElement(element, {\n\t\t\tref: newRef,\n\t\t})\n\t} else {\n\t\treturn cloneElement(element, {\n\t\t\tref: (node: any) => {\n\t\t\t\tsetRef(previousRef, node)\n\t\t\t\tsetRef(newRef, node)\n\t\t\t},\n\t\t})\n\t}\n}\n","import { shallowEqual } from '@react-dnd/shallowequal'\nimport type { Backend, Identifier, Unsubscribe } from 'dnd-core'\nimport type { RefObject } from 'react'\n\nimport type { DropTargetOptions } from '../types/index.js'\nimport { isRef } from './isRef.js'\nimport type { Connector } from './SourceConnector.js'\nimport { wrapConnectorHooks } from './wrapConnectorHooks.js'\n\nexport class TargetConnector implements Connector {\n\tpublic hooks = wrapConnectorHooks({\n\t\tdropTarget: (node: any, options: DropTargetOptions) => {\n\t\t\tthis.clearDropTarget()\n\t\t\tthis.dropTargetOptions = options\n\t\t\tif (isRef(node)) {\n\t\t\t\tthis.dropTargetRef = node\n\t\t\t} else {\n\t\t\t\tthis.dropTargetNode = node\n\t\t\t}\n\t\t\tthis.reconnect()\n\t\t},\n\t})\n\n\tprivate handlerId: Identifier | null = null\n\t// The drop target may either be attached via ref or connect function\n\tprivate dropTargetRef: RefObject | null = null\n\tprivate dropTargetNode: any\n\tprivate dropTargetOptionsInternal: DropTargetOptions | null = null\n\tprivate unsubscribeDropTarget: Unsubscribe | undefined\n\n\tprivate lastConnectedHandlerId: Identifier | null = null\n\tprivate lastConnectedDropTarget: any = null\n\tprivate lastConnectedDropTargetOptions: DropTargetOptions | null = null\n\tprivate readonly backend: Backend\n\n\tpublic constructor(backend: Backend) {\n\t\tthis.backend = backend\n\t}\n\n\tpublic get connectTarget(): any {\n\t\treturn this.dropTarget\n\t}\n\n\tpublic reconnect(): void {\n\t\t// if nothing has changed then don't resubscribe\n\t\tconst didChange =\n\t\t\tthis.didHandlerIdChange() ||\n\t\t\tthis.didDropTargetChange() ||\n\t\t\tthis.didOptionsChange()\n\n\t\tif (didChange) {\n\t\t\tthis.disconnectDropTarget()\n\t\t}\n\n\t\tconst dropTarget = this.dropTarget\n\t\tif (!this.handlerId) {\n\t\t\treturn\n\t\t}\n\t\tif (!dropTarget) {\n\t\t\tthis.lastConnectedDropTarget = dropTarget\n\t\t\treturn\n\t\t}\n\n\t\tif (didChange) {\n\t\t\tthis.lastConnectedHandlerId = this.handlerId\n\t\t\tthis.lastConnectedDropTarget = dropTarget\n\t\t\tthis.lastConnectedDropTargetOptions = this.dropTargetOptions\n\n\t\t\tthis.unsubscribeDropTarget = this.backend.connectDropTarget(\n\t\t\t\tthis.handlerId,\n\t\t\t\tdropTarget,\n\t\t\t\tthis.dropTargetOptions,\n\t\t\t)\n\t\t}\n\t}\n\n\tpublic receiveHandlerId(newHandlerId: Identifier | null): void {\n\t\tif (newHandlerId === this.handlerId) {\n\t\t\treturn\n\t\t}\n\n\t\tthis.handlerId = newHandlerId\n\t\tthis.reconnect()\n\t}\n\n\tpublic get dropTargetOptions(): DropTargetOptions {\n\t\treturn this.dropTargetOptionsInternal\n\t}\n\tpublic set dropTargetOptions(options: DropTargetOptions) {\n\t\tthis.dropTargetOptionsInternal = options\n\t}\n\n\tprivate didHandlerIdChange(): boolean {\n\t\treturn this.lastConnectedHandlerId !== this.handlerId\n\t}\n\n\tprivate didDropTargetChange(): boolean {\n\t\treturn this.lastConnectedDropTarget !== this.dropTarget\n\t}\n\n\tprivate didOptionsChange(): boolean {\n\t\treturn !shallowEqual(\n\t\t\tthis.lastConnectedDropTargetOptions,\n\t\t\tthis.dropTargetOptions,\n\t\t)\n\t}\n\n\tpublic disconnectDropTarget() {\n\t\tif (this.unsubscribeDropTarget) {\n\t\t\tthis.unsubscribeDropTarget()\n\t\t\tthis.unsubscribeDropTarget = undefined\n\t\t}\n\t}\n\n\tprivate get dropTarget() {\n\t\treturn (\n\t\t\tthis.dropTargetNode || (this.dropTargetRef && this.dropTargetRef.current)\n\t\t)\n\t}\n\n\tprivate clearDropTarget() {\n\t\tthis.dropTargetRef = null\n\t\tthis.dropTargetNode = null\n\t}\n}\n","import { invariant } from '@react-dnd/invariant'\nimport type { DragDropManager } from 'dnd-core'\nimport { useContext } from 'react'\n\nimport { DndContext } from '../core/index.js'\n\n/**\n * A hook to retrieve the DragDropManager from Context\n */\nexport function useDragDropManager(): DragDropManager {\n\tconst { dragDropManager } = useContext(DndContext)\n\tinvariant(dragDropManager != null, 'Expected drag drop context')\n\treturn dragDropManager as DragDropManager\n}\n","import { invariant } from '@react-dnd/invariant'\nimport type {\n\tDragDropManager,\n\tDragDropMonitor,\n\tIdentifier,\n\tListener,\n\tUnsubscribe,\n\tXYCoord,\n} from 'dnd-core'\n\nimport type { DropTargetMonitor } from '../types/index.js'\n\nlet isCallingCanDrop = false\n\nexport class DropTargetMonitorImpl implements DropTargetMonitor {\n\tprivate internalMonitor: DragDropMonitor\n\tprivate targetId: Identifier | null = null\n\n\tpublic constructor(manager: DragDropManager) {\n\t\tthis.internalMonitor = manager.getMonitor()\n\t}\n\n\tpublic receiveHandlerId(targetId: Identifier | null): void {\n\t\tthis.targetId = targetId\n\t}\n\n\tpublic getHandlerId(): Identifier | null {\n\t\treturn this.targetId\n\t}\n\n\tpublic subscribeToStateChange(\n\t\tlistener: Listener,\n\t\toptions?: { handlerIds?: Identifier[] },\n\t): Unsubscribe {\n\t\treturn this.internalMonitor.subscribeToStateChange(listener, options)\n\t}\n\n\tpublic canDrop(): boolean {\n\t\t// Cut out early if the target id has not been set. This should prevent errors\n\t\t// where the user has an older version of dnd-core like in\n\t\t// https://github.com/react-dnd/react-dnd/issues/1310\n\t\tif (!this.targetId) {\n\t\t\treturn false\n\t\t}\n\t\tinvariant(\n\t\t\t!isCallingCanDrop,\n\t\t\t'You may not call monitor.canDrop() inside your canDrop() implementation. ' +\n\t\t\t\t'Read more: http://react-dnd.github.io/react-dnd/docs/api/drop-target-monitor',\n\t\t)\n\n\t\ttry {\n\t\t\tisCallingCanDrop = true\n\t\t\treturn this.internalMonitor.canDropOnTarget(this.targetId)\n\t\t} finally {\n\t\t\tisCallingCanDrop = false\n\t\t}\n\t}\n\n\tpublic isOver(options?: { shallow?: boolean }): boolean {\n\t\tif (!this.targetId) {\n\t\t\treturn false\n\t\t}\n\t\treturn this.internalMonitor.isOverTarget(this.targetId, options)\n\t}\n\n\tpublic getItemType(): Identifier | null {\n\t\treturn this.internalMonitor.getItemType()\n\t}\n\n\tpublic getItem(): any {\n\t\treturn this.internalMonitor.getItem()\n\t}\n\n\tpublic getDropResult(): any {\n\t\treturn this.internalMonitor.getDropResult()\n\t}\n\n\tpublic didDrop(): boolean {\n\t\treturn this.internalMonitor.didDrop()\n\t}\n\n\tpublic getInitialClientOffset(): XYCoord | null {\n\t\treturn this.internalMonitor.getInitialClientOffset()\n\t}\n\n\tpublic getInitialSourceClientOffset(): XYCoord | null {\n\t\treturn this.internalMonitor.getInitialSourceClientOffset()\n\t}\n\n\tpublic getSourceClientOffset(): XYCoord | null {\n\t\treturn this.internalMonitor.getSourceClientOffset()\n\t}\n\n\tpublic getClientOffset(): XYCoord | null {\n\t\treturn this.internalMonitor.getClientOffset()\n\t}\n\n\tpublic getDifferenceFromInitialOffset(): XYCoord | null {\n\t\treturn this.internalMonitor.getDifferenceFromInitialOffset()\n\t}\n}\n","import type { DropTarget } from 'dnd-core'\n\nimport type { DropTargetMonitor } from '../../types/index.js'\nimport type { DropTargetHookSpec } from '../types.js'\n\nexport class DropTargetImpl implements DropTarget {\n\tpublic constructor(\n\t\tpublic spec: DropTargetHookSpec,\n\t\tprivate monitor: DropTargetMonitor,\n\t) {}\n\n\tpublic canDrop() {\n\t\tconst spec = this.spec\n\t\tconst monitor = this.monitor\n\t\treturn spec.canDrop ? spec.canDrop(monitor.getItem(), monitor) : true\n\t}\n\n\tpublic hover() {\n\t\tconst spec = this.spec\n\t\tconst monitor = this.monitor\n\t\tif (spec.hover) {\n\t\t\tspec.hover(monitor.getItem(), monitor)\n\t\t}\n\t}\n\n\tpublic drop() {\n\t\tconst spec = this.spec\n\t\tconst monitor = this.monitor\n\t\tif (spec.drop) {\n\t\t\treturn spec.drop(monitor.getItem(), monitor)\n\t\t}\n\t\treturn\n\t}\n}\n","import type { TargetConnector } from '../../internals/index.js'\nimport { registerTarget } from '../../internals/index.js'\nimport type { DropTargetMonitor } from '../../types/index.js'\nimport type { DropTargetHookSpec } from '../types.js'\nimport { useDragDropManager } from '../useDragDropManager.js'\nimport { useIsomorphicLayoutEffect } from '../useIsomorphicLayoutEffect.js'\nimport { useAccept } from './useAccept.js'\nimport { useDropTarget } from './useDropTarget.js'\n\nexport function useRegisteredDropTarget(\n\tspec: DropTargetHookSpec,\n\tmonitor: DropTargetMonitor,\n\tconnector: TargetConnector,\n): void {\n\tconst manager = useDragDropManager()\n\tconst dropTarget = useDropTarget(spec, monitor)\n\tconst accept = useAccept(spec)\n\n\tuseIsomorphicLayoutEffect(\n\t\tfunction registerDropTarget() {\n\t\t\tconst [handlerId, unregister] = registerTarget(\n\t\t\t\taccept,\n\t\t\t\tdropTarget,\n\t\t\t\tmanager,\n\t\t\t)\n\t\t\tmonitor.receiveHandlerId(handlerId)\n\t\t\tconnector.receiveHandlerId(handlerId)\n\t\t\treturn unregister\n\t\t},\n\t\t[\n\t\t\tmanager,\n\t\t\tmonitor,\n\t\t\tdropTarget,\n\t\t\tconnector,\n\t\t\taccept.map((a) => a.toString()).join('|'),\n\t\t],\n\t)\n}\n","import { useEffect, useMemo } from 'react'\n\nimport type { DropTargetMonitor } from '../../types/index.js'\nimport type { DropTargetHookSpec } from '../types.js'\nimport { DropTargetImpl } from './DropTargetImpl.js'\n\nexport function useDropTarget(\n\tspec: DropTargetHookSpec,\n\tmonitor: DropTargetMonitor,\n) {\n\tconst dropTarget = useMemo(() => new DropTargetImpl(spec, monitor), [monitor])\n\tuseEffect(() => {\n\t\tdropTarget.spec = spec\n\t}, [spec])\n\treturn dropTarget\n}\n","import { invariant } from '@react-dnd/invariant'\nimport type { Identifier } from 'dnd-core'\nimport { useMemo } from 'react'\n\nimport type { DropTargetHookSpec } from '../types.js'\n\n/**\n * Internal utility hook to get an array-version of spec.accept.\n * The main utility here is that we aren't creating a new array on every render if a non-array spec.accept is passed in.\n * @param spec\n */\nexport function useAccept(\n\tspec: DropTargetHookSpec,\n): Identifier[] {\n\tconst { accept } = spec\n\treturn useMemo(() => {\n\t\tinvariant(spec.accept != null, 'accept must be defined')\n\t\treturn Array.isArray(accept) ? accept : [accept]\n\t}, [accept])\n}\n","import type {\n\tDragDropManager,\n\tDragSource,\n\tDropTarget,\n\tIdentifier,\n\tSourceType,\n\tTargetType,\n\tUnsubscribe,\n} from 'dnd-core'\n\nexport function registerTarget(\n\ttype: TargetType,\n\ttarget: DropTarget,\n\tmanager: DragDropManager,\n): [Identifier, Unsubscribe] {\n\tconst registry = manager.getRegistry()\n\tconst targetId = registry.addTarget(type, target)\n\n\treturn [targetId, () => registry.removeTarget(targetId)]\n}\n\nexport function registerSource(\n\ttype: SourceType,\n\tsource: DragSource,\n\tmanager: DragDropManager,\n): [Identifier, Unsubscribe] {\n\tconst registry = manager.getRegistry()\n\tconst sourceId = registry.addSource(type, source)\n\n\treturn [sourceId, () => registry.removeSource(sourceId)]\n}\n","import type { ConnectDropTarget } from '../../types/index.js'\nimport type { DropTargetHookSpec, FactoryOrInstance } from '../types.js'\nimport { useCollectedProps } from '../useCollectedProps.js'\nimport { useOptionalFactory } from '../useOptionalFactory.js'\nimport { useConnectDropTarget } from './connectors.js'\nimport { useDropTargetConnector } from './useDropTargetConnector.js'\nimport { useDropTargetMonitor } from './useDropTargetMonitor.js'\nimport { useRegisteredDropTarget } from './useRegisteredDropTarget.js'\n\n/**\n * useDropTarget Hook\n * @param spec The drop target specification (object or function, function preferred)\n * @param deps The memoization deps array to use when evaluating spec changes\n */\nexport function useDrop<\n\tDragObject = unknown,\n\tDropResult = unknown,\n\tCollectedProps = unknown,\n>(\n\tspecArg: FactoryOrInstance<\n\t\tDropTargetHookSpec\n\t>,\n\tdeps?: unknown[],\n): [CollectedProps, ConnectDropTarget] {\n\tconst spec = useOptionalFactory(specArg, deps)\n\tconst monitor = useDropTargetMonitor()\n\tconst connector = useDropTargetConnector(spec.options)\n\tuseRegisteredDropTarget(spec, monitor, connector)\n\n\treturn [\n\t\tuseCollectedProps(spec.collect, monitor, connector),\n\t\tuseConnectDropTarget(connector),\n\t]\n}\n","import { useMemo } from 'react'\n\nimport { DropTargetMonitorImpl } from '../../internals/index.js'\nimport type { DropTargetMonitor } from '../../types/index.js'\nimport { useDragDropManager } from '../useDragDropManager.js'\n\nexport function useDropTargetMonitor(): DropTargetMonitor {\n\tconst manager = useDragDropManager()\n\treturn useMemo(() => new DropTargetMonitorImpl(manager), [manager])\n}\n","import { useMemo } from 'react'\n\nimport { TargetConnector } from '../../internals/index.js'\nimport type { DropTargetOptions } from '../../types/index.js'\nimport { useDragDropManager } from '../useDragDropManager.js'\nimport { useIsomorphicLayoutEffect } from '../useIsomorphicLayoutEffect.js'\n\nexport function useDropTargetConnector(\n\toptions: DropTargetOptions,\n): TargetConnector {\n\tconst manager = useDragDropManager()\n\tconst connector = useMemo(\n\t\t() => new TargetConnector(manager.getBackend()),\n\t\t[manager],\n\t)\n\tuseIsomorphicLayoutEffect(() => {\n\t\tconnector.dropTargetOptions = options || null\n\t\tconnector.reconnect()\n\t\treturn () => connector.disconnectDropTarget()\n\t}, [options])\n\treturn connector\n}\n","import { useMemo } from 'react'\n\nimport type { SourceConnector } from '../../internals/index.js'\n\nexport function useConnectDragSource(connector: SourceConnector) {\n\treturn useMemo(() => connector.hooks.dragSource(), [connector])\n}\n\nexport function useConnectDragPreview(connector: SourceConnector) {\n\treturn useMemo(() => connector.hooks.dragPreview(), [connector])\n}\n","import { shallowEqual } from '@react-dnd/shallowequal'\nimport type { Backend, Identifier, Unsubscribe } from 'dnd-core'\nimport type { ReactElement, Ref, RefObject } from 'react'\n\nimport type { DragPreviewOptions, DragSourceOptions } from '../types/index.js'\nimport { isRef } from './isRef.js'\nimport { wrapConnectorHooks } from './wrapConnectorHooks.js'\n\nexport interface Connector {\n\thooks: any\n\tconnectTarget: any\n\treceiveHandlerId(handlerId: Identifier | null): void\n\treconnect(): void\n}\n\nexport class SourceConnector implements Connector {\n\tpublic hooks = wrapConnectorHooks({\n\t\tdragSource: (\n\t\t\tnode: Element | ReactElement | Ref,\n\t\t\toptions?: DragSourceOptions,\n\t\t) => {\n\t\t\tthis.clearDragSource()\n\t\t\tthis.dragSourceOptions = options || null\n\t\t\tif (isRef(node)) {\n\t\t\t\tthis.dragSourceRef = node as RefObject\n\t\t\t} else {\n\t\t\t\tthis.dragSourceNode = node\n\t\t\t}\n\t\t\tthis.reconnectDragSource()\n\t\t},\n\t\tdragPreview: (node: any, options?: DragPreviewOptions) => {\n\t\t\tthis.clearDragPreview()\n\t\t\tthis.dragPreviewOptions = options || null\n\t\t\tif (isRef(node)) {\n\t\t\t\tthis.dragPreviewRef = node\n\t\t\t} else {\n\t\t\t\tthis.dragPreviewNode = node\n\t\t\t}\n\t\t\tthis.reconnectDragPreview()\n\t\t},\n\t})\n\tprivate handlerId: Identifier | null = null\n\n\t// The drop target may either be attached via ref or connect function\n\tprivate dragSourceRef: RefObject | null = null\n\tprivate dragSourceNode: any\n\tprivate dragSourceOptionsInternal: DragSourceOptions | null = null\n\tprivate dragSourceUnsubscribe: Unsubscribe | undefined\n\n\t// The drag preview may either be attached via ref or connect function\n\tprivate dragPreviewRef: RefObject | null = null\n\tprivate dragPreviewNode: any\n\tprivate dragPreviewOptionsInternal: DragPreviewOptions | null = null\n\tprivate dragPreviewUnsubscribe: Unsubscribe | undefined\n\n\tprivate lastConnectedHandlerId: Identifier | null = null\n\tprivate lastConnectedDragSource: any = null\n\tprivate lastConnectedDragSourceOptions: any = null\n\tprivate lastConnectedDragPreview: any = null\n\tprivate lastConnectedDragPreviewOptions: any = null\n\n\tprivate readonly backend: Backend\n\n\tpublic constructor(backend: Backend) {\n\t\tthis.backend = backend\n\t}\n\n\tpublic receiveHandlerId(newHandlerId: Identifier | null): void {\n\t\tif (this.handlerId === newHandlerId) {\n\t\t\treturn\n\t\t}\n\n\t\tthis.handlerId = newHandlerId\n\t\tthis.reconnect()\n\t}\n\n\tpublic get connectTarget(): any {\n\t\treturn this.dragSource\n\t}\n\n\tpublic get dragSourceOptions(): DragSourceOptions | null {\n\t\treturn this.dragSourceOptionsInternal\n\t}\n\tpublic set dragSourceOptions(options: DragSourceOptions | null) {\n\t\tthis.dragSourceOptionsInternal = options\n\t}\n\n\tpublic get dragPreviewOptions(): DragPreviewOptions | null {\n\t\treturn this.dragPreviewOptionsInternal\n\t}\n\n\tpublic set dragPreviewOptions(options: DragPreviewOptions | null) {\n\t\tthis.dragPreviewOptionsInternal = options\n\t}\n\n\tpublic reconnect(): void {\n\t\tconst didChange = this.reconnectDragSource()\n\t\tthis.reconnectDragPreview(didChange)\n\t}\n\n\tprivate reconnectDragSource(): boolean {\n\t\tconst dragSource = this.dragSource\n\t\t// if nothing has changed then don't resubscribe\n\t\tconst didChange =\n\t\t\tthis.didHandlerIdChange() ||\n\t\t\tthis.didConnectedDragSourceChange() ||\n\t\t\tthis.didDragSourceOptionsChange()\n\n\t\tif (didChange) {\n\t\t\tthis.disconnectDragSource()\n\t\t}\n\n\t\tif (!this.handlerId) {\n\t\t\treturn didChange\n\t\t}\n\t\tif (!dragSource) {\n\t\t\tthis.lastConnectedDragSource = dragSource\n\t\t\treturn didChange\n\t\t}\n\n\t\tif (didChange) {\n\t\t\tthis.lastConnectedHandlerId = this.handlerId\n\t\t\tthis.lastConnectedDragSource = dragSource\n\t\t\tthis.lastConnectedDragSourceOptions = this.dragSourceOptions\n\t\t\tthis.dragSourceUnsubscribe = this.backend.connectDragSource(\n\t\t\t\tthis.handlerId,\n\t\t\t\tdragSource,\n\t\t\t\tthis.dragSourceOptions,\n\t\t\t)\n\t\t}\n\t\treturn didChange\n\t}\n\n\tprivate reconnectDragPreview(forceDidChange = false): void {\n\t\tconst dragPreview = this.dragPreview\n\t\t// if nothing has changed then don't resubscribe\n\t\tconst didChange =\n\t\t\tforceDidChange ||\n\t\t\tthis.didHandlerIdChange() ||\n\t\t\tthis.didConnectedDragPreviewChange() ||\n\t\t\tthis.didDragPreviewOptionsChange()\n\n\t\tif (didChange) {\n\t\t\tthis.disconnectDragPreview()\n\t\t}\n\n\t\tif (!this.handlerId) {\n\t\t\treturn\n\t\t}\n\t\tif (!dragPreview) {\n\t\t\tthis.lastConnectedDragPreview = dragPreview\n\t\t\treturn\n\t\t}\n\n\t\tif (didChange) {\n\t\t\tthis.lastConnectedHandlerId = this.handlerId\n\t\t\tthis.lastConnectedDragPreview = dragPreview\n\t\t\tthis.lastConnectedDragPreviewOptions = this.dragPreviewOptions\n\t\t\tthis.dragPreviewUnsubscribe = this.backend.connectDragPreview(\n\t\t\t\tthis.handlerId,\n\t\t\t\tdragPreview,\n\t\t\t\tthis.dragPreviewOptions,\n\t\t\t)\n\t\t}\n\t}\n\n\tprivate didHandlerIdChange(): boolean {\n\t\treturn this.lastConnectedHandlerId !== this.handlerId\n\t}\n\n\tprivate didConnectedDragSourceChange(): boolean {\n\t\treturn this.lastConnectedDragSource !== this.dragSource\n\t}\n\n\tprivate didConnectedDragPreviewChange(): boolean {\n\t\treturn this.lastConnectedDragPreview !== this.dragPreview\n\t}\n\n\tprivate didDragSourceOptionsChange(): boolean {\n\t\treturn !shallowEqual(\n\t\t\tthis.lastConnectedDragSourceOptions,\n\t\t\tthis.dragSourceOptions,\n\t\t)\n\t}\n\n\tprivate didDragPreviewOptionsChange(): boolean {\n\t\treturn !shallowEqual(\n\t\t\tthis.lastConnectedDragPreviewOptions,\n\t\t\tthis.dragPreviewOptions,\n\t\t)\n\t}\n\n\tpublic disconnectDragSource() {\n\t\tif (this.dragSourceUnsubscribe) {\n\t\t\tthis.dragSourceUnsubscribe()\n\t\t\tthis.dragSourceUnsubscribe = undefined\n\t\t}\n\t}\n\n\tpublic disconnectDragPreview() {\n\t\tif (this.dragPreviewUnsubscribe) {\n\t\t\tthis.dragPreviewUnsubscribe()\n\t\t\tthis.dragPreviewUnsubscribe = undefined\n\t\t\tthis.dragPreviewNode = null\n\t\t\tthis.dragPreviewRef = null\n\t\t}\n\t}\n\n\tprivate get dragSource() {\n\t\treturn (\n\t\t\tthis.dragSourceNode || (this.dragSourceRef && this.dragSourceRef.current)\n\t\t)\n\t}\n\n\tprivate get dragPreview() {\n\t\treturn (\n\t\t\tthis.dragPreviewNode ||\n\t\t\t(this.dragPreviewRef && this.dragPreviewRef.current)\n\t\t)\n\t}\n\n\tprivate clearDragSource() {\n\t\tthis.dragSourceNode = null\n\t\tthis.dragSourceRef = null\n\t}\n\n\tprivate clearDragPreview() {\n\t\tthis.dragPreviewNode = null\n\t\tthis.dragPreviewRef = null\n\t}\n}\n","import { invariant } from '@react-dnd/invariant'\nimport type {\n\tDragDropManager,\n\tDragDropMonitor,\n\tIdentifier,\n\tListener,\n\tUnsubscribe,\n\tXYCoord,\n} from 'dnd-core'\n\nimport type { DragSourceMonitor } from '../types/index.js'\n\nlet isCallingCanDrag = false\nlet isCallingIsDragging = false\n\nexport class DragSourceMonitorImpl implements DragSourceMonitor {\n\tprivate internalMonitor: DragDropMonitor\n\tprivate sourceId: Identifier | null = null\n\n\tpublic constructor(manager: DragDropManager) {\n\t\tthis.internalMonitor = manager.getMonitor()\n\t}\n\n\tpublic receiveHandlerId(sourceId: Identifier | null): void {\n\t\tthis.sourceId = sourceId\n\t}\n\n\tpublic getHandlerId(): Identifier | null {\n\t\treturn this.sourceId\n\t}\n\n\tpublic canDrag(): boolean {\n\t\tinvariant(\n\t\t\t!isCallingCanDrag,\n\t\t\t'You may not call monitor.canDrag() inside your canDrag() implementation. ' +\n\t\t\t\t'Read more: http://react-dnd.github.io/react-dnd/docs/api/drag-source-monitor',\n\t\t)\n\n\t\ttry {\n\t\t\tisCallingCanDrag = true\n\t\t\treturn this.internalMonitor.canDragSource(this.sourceId as Identifier)\n\t\t} finally {\n\t\t\tisCallingCanDrag = false\n\t\t}\n\t}\n\n\tpublic isDragging(): boolean {\n\t\tif (!this.sourceId) {\n\t\t\treturn false\n\t\t}\n\t\tinvariant(\n\t\t\t!isCallingIsDragging,\n\t\t\t'You may not call monitor.isDragging() inside your isDragging() implementation. ' +\n\t\t\t\t'Read more: http://react-dnd.github.io/react-dnd/docs/api/drag-source-monitor',\n\t\t)\n\n\t\ttry {\n\t\t\tisCallingIsDragging = true\n\t\t\treturn this.internalMonitor.isDraggingSource(this.sourceId)\n\t\t} finally {\n\t\t\tisCallingIsDragging = false\n\t\t}\n\t}\n\n\tpublic subscribeToStateChange(\n\t\tlistener: Listener,\n\t\toptions?: { handlerIds?: Identifier[] },\n\t): Unsubscribe {\n\t\treturn this.internalMonitor.subscribeToStateChange(listener, options)\n\t}\n\n\tpublic isDraggingSource(sourceId: Identifier): boolean {\n\t\treturn this.internalMonitor.isDraggingSource(sourceId)\n\t}\n\n\tpublic isOverTarget(\n\t\ttargetId: Identifier,\n\t\toptions?: { shallow: boolean },\n\t): boolean {\n\t\treturn this.internalMonitor.isOverTarget(targetId, options)\n\t}\n\n\tpublic getTargetIds(): Identifier[] {\n\t\treturn this.internalMonitor.getTargetIds()\n\t}\n\n\tpublic isSourcePublic(): boolean | null {\n\t\treturn this.internalMonitor.isSourcePublic()\n\t}\n\n\tpublic getSourceId(): Identifier | null {\n\t\treturn this.internalMonitor.getSourceId()\n\t}\n\n\tpublic subscribeToOffsetChange(listener: Listener): Unsubscribe {\n\t\treturn this.internalMonitor.subscribeToOffsetChange(listener)\n\t}\n\n\tpublic canDragSource(sourceId: Identifier): boolean {\n\t\treturn this.internalMonitor.canDragSource(sourceId)\n\t}\n\n\tpublic canDropOnTarget(targetId: Identifier): boolean {\n\t\treturn this.internalMonitor.canDropOnTarget(targetId)\n\t}\n\n\tpublic getItemType(): Identifier | null {\n\t\treturn this.internalMonitor.getItemType()\n\t}\n\n\tpublic getItem(): any {\n\t\treturn this.internalMonitor.getItem()\n\t}\n\n\tpublic getDropResult(): any {\n\t\treturn this.internalMonitor.getDropResult()\n\t}\n\n\tpublic didDrop(): boolean {\n\t\treturn this.internalMonitor.didDrop()\n\t}\n\n\tpublic getInitialClientOffset(): XYCoord | null {\n\t\treturn this.internalMonitor.getInitialClientOffset()\n\t}\n\n\tpublic getInitialSourceClientOffset(): XYCoord | null {\n\t\treturn this.internalMonitor.getInitialSourceClientOffset()\n\t}\n\n\tpublic getSourceClientOffset(): XYCoord | null {\n\t\treturn this.internalMonitor.getSourceClientOffset()\n\t}\n\n\tpublic getClientOffset(): XYCoord | null {\n\t\treturn this.internalMonitor.getClientOffset()\n\t}\n\n\tpublic getDifferenceFromInitialOffset(): XYCoord | null {\n\t\treturn this.internalMonitor.getDifferenceFromInitialOffset()\n\t}\n}\n","import type { DragDropMonitor, DragSource, Identifier } from 'dnd-core'\n\nimport type { Connector } from '../../internals/index.js'\nimport type { DragSourceMonitor } from '../../types/index.js'\nimport type { DragObjectFactory, DragSourceHookSpec } from '../types.js'\n\nexport class DragSourceImpl implements DragSource {\n\tpublic constructor(\n\t\tpublic spec: DragSourceHookSpec,\n\t\tprivate monitor: DragSourceMonitor,\n\t\tprivate connector: Connector,\n\t) {}\n\n\tpublic beginDrag() {\n\t\tconst spec = this.spec\n\t\tconst monitor = this.monitor\n\n\t\tlet result: O | null = null\n\t\tif (typeof spec.item === 'object') {\n\t\t\tresult = spec.item as O\n\t\t} else if (typeof spec.item === 'function') {\n\t\t\tresult = (spec.item as DragObjectFactory)(monitor)\n\t\t} else {\n\t\t\tresult = {} as O\n\t\t}\n\t\treturn result ?? null\n\t}\n\n\tpublic canDrag() {\n\t\tconst spec = this.spec\n\t\tconst monitor = this.monitor\n\t\tif (typeof spec.canDrag === 'boolean') {\n\t\t\treturn spec.canDrag\n\t\t} else if (typeof spec.canDrag === 'function') {\n\t\t\treturn spec.canDrag(monitor)\n\t\t} else {\n\t\t\treturn true\n\t\t}\n\t}\n\n\tpublic isDragging(globalMonitor: DragDropMonitor, target: Identifier) {\n\t\tconst spec = this.spec\n\t\tconst monitor = this.monitor\n\t\tconst { isDragging } = spec\n\t\treturn isDragging\n\t\t\t? isDragging(monitor)\n\t\t\t: target === globalMonitor.getSourceId()\n\t}\n\n\tpublic endDrag() {\n\t\tconst spec = this.spec\n\t\tconst monitor = this.monitor\n\t\tconst connector = this.connector\n\t\tconst { end } = spec\n\t\tif (end) {\n\t\t\tend(monitor.getItem(), monitor)\n\t\t}\n\t\tconnector.reconnect()\n\t}\n}\n","import type { SourceConnector } from '../../internals/index.js'\nimport { registerSource } from '../../internals/index.js'\nimport type { DragSourceMonitor } from '../../types/index.js'\nimport type { DragSourceHookSpec } from '../types.js'\nimport { useDragDropManager } from '../useDragDropManager.js'\nimport { useIsomorphicLayoutEffect } from '../useIsomorphicLayoutEffect.js'\nimport { useDragSource } from './useDragSource.js'\nimport { useDragType } from './useDragType.js'\n\nexport function useRegisteredDragSource(\n\tspec: DragSourceHookSpec,\n\tmonitor: DragSourceMonitor,\n\tconnector: SourceConnector,\n): void {\n\tconst manager = useDragDropManager()\n\tconst handler = useDragSource(spec, monitor, connector)\n\tconst itemType = useDragType(spec)\n\n\tuseIsomorphicLayoutEffect(\n\t\tfunction registerDragSource() {\n\t\t\tif (itemType != null) {\n\t\t\t\tconst [handlerId, unregister] = registerSource(\n\t\t\t\t\titemType,\n\t\t\t\t\thandler,\n\t\t\t\t\tmanager,\n\t\t\t\t)\n\t\t\t\tmonitor.receiveHandlerId(handlerId)\n\t\t\t\tconnector.receiveHandlerId(handlerId)\n\t\t\t\treturn unregister\n\t\t\t}\n\t\t\treturn\n\t\t},\n\t\t[manager, monitor, connector, handler, itemType],\n\t)\n}\n","import { useEffect, useMemo } from 'react'\n\nimport type { Connector } from '../../internals/index.js'\nimport type { DragSourceMonitor } from '../../types/index.js'\nimport type { DragSourceHookSpec } from '../types.js'\nimport { DragSourceImpl } from './DragSourceImpl.js'\n\nexport function useDragSource(\n\tspec: DragSourceHookSpec,\n\tmonitor: DragSourceMonitor,\n\tconnector: Connector,\n) {\n\tconst handler = useMemo(\n\t\t() => new DragSourceImpl(spec, monitor, connector),\n\t\t[monitor, connector],\n\t)\n\tuseEffect(() => {\n\t\thandler.spec = spec\n\t}, [spec])\n\treturn handler\n}\n","import { invariant } from '@react-dnd/invariant'\nimport type { Identifier } from 'dnd-core'\nimport { useMemo } from 'react'\n\nimport type { DragSourceHookSpec } from '../types.js'\n\nexport function useDragType(\n\tspec: DragSourceHookSpec,\n): Identifier {\n\treturn useMemo(() => {\n\t\tconst result: Identifier = spec.type\n\t\tinvariant(result != null, 'spec.type must be defined')\n\t\treturn result\n\t}, [spec])\n}\n","import { invariant } from '@react-dnd/invariant'\n\nimport type {\n\tConnectDragPreview,\n\tConnectDragSource,\n} from '../../types/index.js'\nimport type { DragSourceHookSpec, FactoryOrInstance } from '../types.js'\nimport { useCollectedProps } from '../useCollectedProps.js'\nimport { useOptionalFactory } from '../useOptionalFactory.js'\nimport { useConnectDragPreview, useConnectDragSource } from './connectors.js'\nimport { useDragSourceConnector } from './useDragSourceConnector.js'\nimport { useDragSourceMonitor } from './useDragSourceMonitor.js'\nimport { useRegisteredDragSource } from './useRegisteredDragSource.js'\n\n/**\n * useDragSource hook\n * @param sourceSpec The drag source specification (object or function, function preferred)\n * @param deps The memoization deps array to use when evaluating spec changes\n */\nexport function useDrag<\n\tDragObject = unknown,\n\tDropResult = unknown,\n\tCollectedProps = unknown,\n>(\n\tspecArg: FactoryOrInstance<\n\t\tDragSourceHookSpec\n\t>,\n\tdeps?: unknown[],\n): [CollectedProps, ConnectDragSource, ConnectDragPreview] {\n\tconst spec = useOptionalFactory(specArg, deps)\n\tinvariant(\n\t\t!(spec as any).begin,\n\t\t`useDrag::spec.begin was deprecated in v14. Replace spec.begin() with spec.item(). (see more here - https://react-dnd.github.io/react-dnd/docs/api/use-drag)`,\n\t)\n\n\tconst monitor = useDragSourceMonitor()\n\tconst connector = useDragSourceConnector(spec.options, spec.previewOptions)\n\tuseRegisteredDragSource(spec, monitor, connector)\n\n\treturn [\n\t\tuseCollectedProps(spec.collect, monitor, connector),\n\t\tuseConnectDragSource(connector),\n\t\tuseConnectDragPreview(connector),\n\t]\n}\n","import { useMemo } from 'react'\n\nimport { DragSourceMonitorImpl } from '../../internals/index.js'\nimport type { DragSourceMonitor } from '../../types/index.js'\nimport { useDragDropManager } from '../useDragDropManager.js'\n\nexport function useDragSourceMonitor(): DragSourceMonitor {\n\tconst manager = useDragDropManager()\n\treturn useMemo>(\n\t\t() => new DragSourceMonitorImpl(manager),\n\t\t[manager],\n\t)\n}\n","import { useMemo } from 'react'\n\nimport { SourceConnector } from '../../internals/index.js'\nimport type {\n\tDragPreviewOptions,\n\tDragSourceOptions,\n} from '../../types/index.js'\nimport { useDragDropManager } from '../useDragDropManager.js'\nimport { useIsomorphicLayoutEffect } from '../useIsomorphicLayoutEffect.js'\n\nexport function useDragSourceConnector(\n\tdragSourceOptions: DragSourceOptions | undefined,\n\tdragPreviewOptions: DragPreviewOptions | undefined,\n): SourceConnector {\n\tconst manager = useDragDropManager()\n\tconst connector = useMemo(\n\t\t() => new SourceConnector(manager.getBackend()),\n\t\t[manager],\n\t)\n\tuseIsomorphicLayoutEffect(() => {\n\t\tconnector.dragSourceOptions = dragSourceOptions || null\n\t\tconnector.reconnect()\n\t\treturn () => connector.disconnectDragSource()\n\t}, [connector, dragSourceOptions])\n\tuseIsomorphicLayoutEffect(() => {\n\t\tconnector.dragPreviewOptions = dragPreviewOptions || null\n\t\tconnector.reconnect()\n\t\treturn () => connector.disconnectDragPreview()\n\t}, [connector, dragPreviewOptions])\n\treturn connector\n}\n","import { XYCoord } from \"dnd-core\"\nimport { MutableRefObject } from \"react\"\nimport { DropTargetMonitor, useDrag, useDrop } from \"react-dnd\"\n\ninterface DragItem {\n\tindex: number\n\tid: string\n\ttype: string\n}\n\nconst useDnd = (\n\tref: MutableRefObject,\n\tid: string | number,\n\tindex: number,\n\tmove: (dragIndex: number, hoverIndex: number) => void,\n\tdraggable = true\n) => {\n\tconst [, drop] = useDrop({\n\t\taccept: \"CARD\",\n\t\thover(item: DragItem, monitor: DropTargetMonitor) {\n\t\t\tif (!ref.current) {\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\tconst dragIndex = item.index\n\t\t\tconst hoverIndex = index\n\t\t\t// Don't replace items with themselves\n\t\t\tif (dragIndex === hoverIndex) {\n\t\t\t\treturn\n\t\t\t}\n\t\t\t// Determine rectangle on screen\n\t\t\tconst hoverBoundingRect = ref.current?.getBoundingClientRect()\n\t\t\t// Get vertical middle\n\t\t\tconst hoverMiddleY =\n\t\t\t\t(hoverBoundingRect.bottom - hoverBoundingRect.top) / 2\n\t\t\t// Determine mouse position\n\t\t\tconst clientOffset = monitor.getClientOffset()\n\t\t\t// Get pixels to the top\n\t\t\tconst hoverClientY = (clientOffset as XYCoord).y - hoverBoundingRect.top\n\t\t\t// Only perform the move when the mouse has crossed half of the items height\n\t\t\t// When dragging downwards, only move when the cursor is below 50%\n\t\t\t// When dragging upwards, only move when the cursor is above 50%\n\t\t\t// Dragging downwards\n\t\t\tif (dragIndex < hoverIndex && hoverClientY < hoverMiddleY) {\n\t\t\t\treturn\n\t\t\t}\n\t\t\t// Dragging upwards\n\t\t\tif (dragIndex > hoverIndex && hoverClientY > hoverMiddleY) {\n\t\t\t\treturn\n\t\t\t}\n\t\t\t// Time to actually perform the action\n\t\t\tmove(dragIndex, hoverIndex)\n\t\t\t// Note: we're mutating the monitor item here!\n\t\t\t// Generally it's better to avoid mutations,\n\t\t\t// but it's good here for the sake of performance\n\t\t\t// to avoid expensive index searches.\n\n\t\t\titem.index = hoverIndex\n\t\t},\n\t})\n\n\tconst [{ isDragging }, drag] = useDrag({\n\t\ttype: \"CARD\",\n\t\titem: () => {\n\t\t\treturn { id, index }\n\t\t},\n\t\tcanDrag: (monitor) => {\n\t\t\tconst boundingClientRect = ref.current?.getBoundingClientRect()\n\t\t\tconst mouseRect = monitor.getInitialClientOffset()\n\t\t\tconst refMinX = boundingClientRect.x + boundingClientRect.width - 70\n\t\t\tconst refMaxX = boundingClientRect.x + boundingClientRect.width\n\t\t\tconst mouseX = (mouseRect as XYCoord).x\n\n\t\t\treturn mouseX >= refMinX && mouseX <= refMaxX && draggable\n\t\t},\n\t\tcollect: (monitor) => ({\n\t\t\tisDragging: monitor.isDragging(),\n\t\t}),\n\t})\n\n\tconst opacity = isDragging ? 0 : 1\n\tdrag(drop(ref))\n\n\treturn opacity\n}\n\nexport default useDnd\n","import { ReactNode, useRef } from \"react\"\nimport DndContainer from \"src/components/dndContainer/dndContainer\"\nimport Icon, { IconImage, MoveIcon } from \"src/components/iconImage/iconImage\"\nimport Number from \"src/components/number/number\"\nimport useDnd from \"../../hooks/useDnd\"\nimport { usePreviewStore } from \"../../state/stores/previewStore\"\n\ninterface ScheduleItemProps {\n\tid: string\n\ttype: string\n\tdata: string\n\ttext: string\n\tindex: number\n\tindexOffset?: number\n\tmove: (dragIndex: any, hoverIndex: any) => void\n\tmovable: boolean\n\tcontent: ReactNode\n\tdeletable: boolean\n\tonDelete: () => void\n\tredBorder?: boolean\n}\n\nconst ScheduleItem = ({\n\tid,\n\ttext,\n\tdata,\n\tindex,\n\tindexOffset = 2,\n\tmove,\n\tmovable = true,\n\tcontent = undefined,\n\tdeletable = true,\n\tonDelete,\n\tredBorder = false,\n\ttype,\n}: ScheduleItemProps) => {\n\tconst ref = useRef(null!)\n\tconst opacity = useDnd(ref, id, index, move, movable)\n\n\tconst requestPreview = usePreviewStore((state) => state.requestPreview)\n\n\treturn (\n\t\t\n\t\t\t
\n\t\t\t\t{index + indexOffset}\n\t\t\t\t{content ? content : text}\n\t\t\t
\n\t\t\t
\n\t\t\t\t{[\"patient\", \"media\"].includes(type) && (\n\t\t\t\t\t {\n\t\t\t\t\t\t\trequestPreview(type, data)\n\t\t\t\t\t\t}}\n\t\t\t\t\t/>\n\t\t\t\t)}\n\t\t\t\t{deletable && }\n\t\t\t\t{movable && }\n\t\t\t
\n\t\t\n\t)\n}\n\nexport default ScheduleItem\n","import Select from \"src/components/input/select\"\n\ninterface ScheduleItemViewProps {\n\theader: string\n\tdata: Record[]\n\tvalue?: string\n\tonChange: (value: string) => void\n\ttitle: string\n}\n\nexport interface ScheduleItemSubviewProps {\n\tvalue?: string\n\tonChange: (value: string) => void\n}\n\nconst ScheduleItemView = ({\n\theader,\n\tdata,\n\tvalue = undefined,\n\tonChange,\n\ttitle = \"title\",\n}: ScheduleItemViewProps) => {\n\treturn (\n\t\t<>\n\t\t\t

{header}

\n\n\t\t\t\n\t\t\t\t\n\t\t\t\t{data &&\n\t\t\t\t\tdata.map((v: Record) => {\n\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t)\n\t\t\t\t\t})}\n\t\t\t\n\t\t\n\t)\n}\n\nexport default ScheduleItemView\n","import useSWR from \"swr\"\nimport useHandleChange from \"../../hooks/useHandleChange\"\nimport { fetchApiAuthorized } from \"../../network/fetch\"\nimport { useAuthStore } from \"../../state/stores/authStore\"\nimport ScheduleItemView, { ScheduleItemSubviewProps } from \"./scheduleItemView\"\n\nconst ScheduleItemMediaView = ({\n\tvalue,\n\tonChange,\n}: ScheduleItemSubviewProps) => {\n\tconst [_value, setValue] = useHandleChange(value ?? \"default\", onChange)\n\n\tconst token = useAuthStore((state) => state.adminToken)\n\tconst expiresIn = useAuthStore((state) => state.adminExpiresIn)\n\tconst { data: media } = useSWR(\n\t\t[\"/medias\", token, expiresIn],\n\t\tfetchApiAuthorized\n\t)\n\n\treturn (\n\t\t\n\t)\n}\n\nexport default ScheduleItemMediaView\n","import useSWR from \"swr\"\nimport useHandleChange from \"../../hooks/useHandleChange\"\nimport { fetchApiAuthorized } from \"../../network/fetch\"\nimport { useAuthStore } from \"../../state/stores/authStore\"\nimport ScheduleItemView, { ScheduleItemSubviewProps } from \"./scheduleItemView\"\n\nconst ScheduleItemPatientView = ({\n\tvalue,\n\tonChange,\n}: ScheduleItemSubviewProps) => {\n\tconst [_value, setValue] = useHandleChange(value ?? \"default\", onChange)\n\n\tconst token = useAuthStore((state) => state.adminToken)\n\tconst expiresIn = useAuthStore((state) => state.adminExpiresIn)\n\tconst { data: patients } = useSWR(\n\t\t[\"/patients\", token, expiresIn],\n\t\tfetchApiAuthorized\n\t)\n\n\treturn (\n\t\t\n\t)\n}\n\nexport default ScheduleItemPatientView\n","import useSWR from \"swr\"\nimport useHandleChange from \"../../hooks/useHandleChange\"\nimport { fetchApiAuthorized } from \"../../network/fetch\"\nimport { useAuthStore } from \"../../state/stores/authStore\"\nimport ScheduleItemView, { ScheduleItemSubviewProps } from \"./scheduleItemView\"\n\nexport const ScheduleItemQuizView = ({\n\tvalue,\n\tonChange,\n}: ScheduleItemSubviewProps) => {\n\tconst [_value, setValue] = useHandleChange(value ?? \"default\", onChange)\n\n\tconst token = useAuthStore((state) => state.adminToken)\n\tconst expiresIn = useAuthStore((state) => state.adminExpiresIn)\n\tconst { data: quizzes } = useSWR(\n\t\t[\"/quizzes\", token, expiresIn],\n\t\tfetchApiAuthorized\n\t)\n\n\treturn (\n\t\t\n\t)\n}\n\nexport default ScheduleItemQuizView\n","export const formatName = (name: string) => {\n\treturn name.charAt(0).toUpperCase() + name.slice(1)\n}\n","import update from \"immutability-helper\"\nimport { parse } from \"qs\"\nimport { useCallback, useEffect, useState } from \"react\"\nimport { DndProvider } from \"react-dnd\"\nimport { HTML5Backend } from \"react-dnd-html5-backend\"\nimport { useTranslation } from \"react-i18next\"\nimport { useNavigate, useParams } from \"react-router-dom\"\nimport { useLocation } from \"react-use\"\nimport Input from \"src/components/input/input\"\nimport useSWR from \"swr\"\nimport AddSchedule from \"../../../../components/addSchedule/addSchedule\"\nimport DashboardHeader from \"../../../../components/dashboardHeader/dashboardHeader\"\nimport { HasAuth } from \"../../../../components/privateRoute/privateRoute\"\nimport ScheduleItem from \"../../../../components/scheduleItem/scheduleItem\"\nimport ScheduleItemMediaView from \"../../../../components/scheduleItemView/mediaView\"\nimport ScheduleItemPatientView from \"../../../../components/scheduleItemView/patientView\"\nimport ScheduleItemQuizView from \"../../../../components/scheduleItemView/quizView\"\nimport useHandleChange from \"../../../../hooks/useHandleChange\"\nimport { fetchApiAuthorized } from \"../../../../network/fetch\"\nimport { useErrorStore } from \"../../../../state/stores/errorStore\"\nimport { formatName } from \"../../../../utils/formatName\"\n\nconst CreateCase = ({ auth }: HasAuth) => {\n\tconst navigate = useNavigate()\n\tconst { t } = useTranslation()\n\tconst { id } = useParams() as Record\n\tconst { search } = useLocation()\n\n\tconst [name, setName] = useHandleChange(\"\")\n\tconst [schedule, setSchedule] = useState[]>([\n\t\t{ id: 1, type: \"patient\", data: undefined },\n\t\t{ id: 2, type: \"quiz\", data: undefined },\n\t])\n\n\tconsole.log(id)\n\n\tconst duplicate = useCallback(\n\t\tasync (id: string) => {\n\t\t\tconst dubCase = await fetchApiAuthorized(\n\t\t\t\t`/cases/${id}`,\n\t\t\t\tauth.token,\n\t\t\t\tauth.expiresIn,\n\t\t\t\tundefined,\n\t\t\t\t\"GET\"\n\t\t\t)\n\n\t\t\tif (dubCase) {\n\t\t\t\tsetName(dubCase.name ?? \"\")\n\t\t\t\tsetSchedule(\n\t\t\t\t\tdubCase.schedule.map((v: Record, i: number) => {\n\t\t\t\t\t\tif (v.data) {\n\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\tid: i,\n\t\t\t\t\t\t\t\ttype: v.type,\n\t\t\t\t\t\t\t\tdata: (v.data as Record).id,\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\treturn { id: i, type: v.type }\n\t\t\t\t\t\t}\n\t\t\t\t\t})\n\t\t\t\t)\n\t\t\t}\n\t\t},\n\t\t[auth.expiresIn, auth.token, setName]\n\t)\n\n\tuseEffect(() => {\n\t\tif (search) {\n\t\t\tconst query = parse(search.replace(\"?\", \"\"))\n\t\t\tif (query.copy) {\n\t\t\t\tduplicate(query.copy as string)\n\t\t\t}\n\t\t}\n\t}, [search, duplicate])\n\n\tconst { data: currentCase } = useSWR(\n\t\tid ? [`/cases/${id}`, auth.token, auth.expiresIn] : null,\n\t\tfetchApiAuthorized\n\t)\n\n\tconst [nameBorder, setNameBorder] = useState(undefined)\n\tconst [missingData, setMissingData] = useState([])\n\n\tuseEffect(() => {\n\t\tif (currentCase) {\n\t\t\tif (id) {\n\t\t\t\tsetName(currentCase.name ?? \"\")\n\t\t\t}\n\t\t\tsetSchedule(\n\t\t\t\tcurrentCase.schedule.map((v: Record, i: number) => {\n\t\t\t\t\tif (v.data) {\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\tid: i,\n\t\t\t\t\t\t\ttype: v.type,\n\t\t\t\t\t\t\tdata: (v.data as Record).id,\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\treturn { id: i, type: v.type }\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t)\n\t\t}\n\t}, [currentCase, id, setName, search])\n\n\tconst movePart = useCallback(\n\t\t(dragIndex: number, hoverIndex: number) => {\n\t\t\tconst dragCard = schedule[dragIndex]\n\t\t\tsetSchedule(\n\t\t\t\tupdate(schedule, {\n\t\t\t\t\t$splice: [\n\t\t\t\t\t\t[dragIndex, 1],\n\t\t\t\t\t\t[hoverIndex, 0, dragCard],\n\t\t\t\t\t],\n\t\t\t\t})\n\t\t\t)\n\t\t},\n\t\t[schedule]\n\t)\n\n\tconst upload = async () => {\n\t\tconst endpoint = id ? `/cases/${id}` : \"/cases/create\"\n\n\t\tconst success = await fetchApiAuthorized(\n\t\t\tendpoint,\n\t\t\tauth.token,\n\t\t\tauth.expiresIn,\n\t\t\t{ name, schedule },\n\t\t\tid ? \"PUT\" : \"POST\"\n\t\t)\n\t\tif (success) {\n\t\t\tnavigate(\"/moderator/case\")\n\t\t}\n\t}\n\n\tconst check = () => {\n\t\tif (\n\t\t\tschedule.length === 0 ||\n\t\t\tschedule.filter((v) => {\n\t\t\t\tif ([\"patient\", \"quiz\", \"media\"].includes(v.type as string)) {\n\t\t\t\t\treturn v.data === undefined\n\t\t\t\t} else {\n\t\t\t\t\treturn false\n\t\t\t\t}\n\t\t\t}).length > 0\n\t\t) {\n\t\t\tif (schedule.length === 0) {\n\t\t\t\tuseErrorStore.getState().update(new Error(\"fehlender Input\"))\n\t\t\t}\n\n\t\t\tsetNameBorder(\"border-s-red\")\n\n\t\t\tconst missingData = schedule\n\t\t\t\t.filter((v) => {\n\t\t\t\t\tif ([\"patient\", \"quiz\", \"media\"].includes(v.type as string)) {\n\t\t\t\t\t\treturn v.data === undefined\n\t\t\t\t\t} else {\n\t\t\t\t\t\treturn false\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t\t.map((v) => v.id as string)\n\n\t\t\tsetMissingData(missingData)\n\t\t} else {\n\t\t\tupload()\n\t\t\tsetNameBorder(undefined)\n\t\t\tsetMissingData([])\n\t\t}\n\t}\n\n\treturn (\n\t\t<>\n\t\t\t navigate(\"/moderator/case\")}\n\t\t\t\tcancelButtonTitle=\"Abrechen\"\n\t\t\t\ttitle=\"Fall erstellen\"\n\t\t\t/>\n\t\t\t
\n\t\t\t\t
\n\t\t\t\t\t

{t(\"name\")}

\n\t\t\t\t\t\n\t\t\t\t
\n\n\t\t\t\t

{t(\"parts\")}

\n\t\t\t\t\n\t\t\t\t\t{schedule.map((v, i) => {\n\t\t\t\t\t\tlet content\n\t\t\t\t\t\tswitch (v.type) {\n\t\t\t\t\t\t\tcase \"patient\":\n\t\t\t\t\t\t\t\tcontent = (\n\t\t\t\t\t\t\t\t\t {\n\t\t\t\t\t\t\t\t\t\t\tsetSchedule((schedule) => {\n\t\t\t\t\t\t\t\t\t\t\t\tschedule[i].data = v\n\t\t\t\t\t\t\t\t\t\t\t\treturn [...schedule]\n\t\t\t\t\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t\tcase \"quiz\":\n\t\t\t\t\t\t\t\tcontent = (\n\t\t\t\t\t\t\t\t\t {\n\t\t\t\t\t\t\t\t\t\t\tsetSchedule((schedule) => {\n\t\t\t\t\t\t\t\t\t\t\t\tschedule[i].data = v\n\t\t\t\t\t\t\t\t\t\t\t\treturn [...schedule]\n\t\t\t\t\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t\tcase \"media\":\n\t\t\t\t\t\t\t\tcontent = (\n\t\t\t\t\t\t\t\t\t {\n\t\t\t\t\t\t\t\t\t\t\tsetSchedule((schedule) => {\n\t\t\t\t\t\t\t\t\t\t\t\tschedule[i].data = v\n\t\t\t\t\t\t\t\t\t\t\t\treturn [...schedule]\n\t\t\t\t\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\tbreak\n\n\t\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t {\n\t\t\t\t\t\t\t\t\tsetSchedule((v) => v.filter((_, idx) => idx !== i))\n\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t)\n\t\t\t\t\t})}\n\t\t\t\t\n\t\t\t\t) =>\n\t\t\t\t\t\tsetSchedule((v) => [...v, { id: v.length + 1, type }])\n\t\t\t\t\t}\n\t\t\t\t/>\n\t\t\t
\n\t\t\n\t)\n}\n\nexport default CreateCase\n","// Icon\nimport * as React from 'react';\nexport default function Icon(props) {\n return /*#__PURE__*/React.createElement(\"i\", {\n className: \"rmel-iconfont rmel-icon-\" + props.type\n });\n}","import * as React from 'react';\nexport default function NavigationBar(props) {\n return /*#__PURE__*/React.createElement(\"div\", {\n className: \"rc-md-navigation \" + (props.visible ? 'visible' : 'in-visible')\n }, /*#__PURE__*/React.createElement(\"div\", {\n className: \"navigation-nav left\"\n }, /*#__PURE__*/React.createElement(\"div\", {\n className: \"button-wrap\"\n }, props.left)), /*#__PURE__*/React.createElement(\"div\", {\n className: \"navigation-nav right\"\n }, /*#__PURE__*/React.createElement(\"div\", {\n className: \"button-wrap\"\n }, props.right)));\n}","import * as React from 'react';\nexport default function ToolBar(props) {\n return /*#__PURE__*/React.createElement(\"div\", {\n className: \"tool-bar\",\n style: props.style\n }, props.children);\n}","import _inheritsLoose from \"@babel/runtime/helpers/inheritsLoose\";\nimport { EventEmitter } from 'eventemitter3';\n\nvar Emitter = /*#__PURE__*/function (_EventEmitter) {\n _inheritsLoose(Emitter, _EventEmitter);\n\n function Emitter() {\n var _this;\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _EventEmitter.call.apply(_EventEmitter, [this].concat(args)) || this;\n _this.EVENT_CHANGE = 'a1';\n _this.EVENT_FULL_SCREEN = 'a2';\n _this.EVENT_VIEW_CHANGE = 'a3';\n _this.EVENT_KEY_DOWN = 'a4';\n _this.EVENT_FOCUS = 'a5';\n _this.EVENT_BLUR = 'a6';\n _this.EVENT_SCROLL = 'a7';\n _this.EVENT_LANG_CHANGE = 'b1';\n return _this;\n }\n\n return Emitter;\n}(EventEmitter);\n\nvar globalEmitter = new Emitter();\nexport { globalEmitter };\nexport default Emitter;","export default {\n clearTip: 'Are you sure you want to clear all contents?',\n btnHeader: 'Header',\n btnClear: 'Clear',\n btnBold: 'Bold',\n btnItalic: 'Italic',\n btnUnderline: 'Underline',\n btnStrikethrough: 'Strikethrough',\n btnUnordered: 'Unordered list',\n btnOrdered: 'Ordered list',\n btnQuote: 'Quote',\n btnLineBreak: 'Line break',\n btnInlineCode: 'Inline code',\n btnCode: 'Code',\n btnTable: 'Table',\n btnImage: 'Image',\n btnLink: 'Link',\n btnUndo: 'Undo',\n btnRedo: 'Redo',\n btnFullScreen: 'Full screen',\n btnExitFullScreen: 'Exit full screen',\n btnModeEditor: 'Only display editor',\n btnModePreview: 'Only display preview',\n btnModeAll: 'Display both editor and preview',\n selectTabMap: 'Actually input when typing a Tab key',\n tab: 'Tab',\n spaces: 'Spaces'\n};","export default {\n clearTip: '您确定要清空所有内容吗?',\n btnHeader: '标题',\n btnClear: '清空',\n btnBold: '加粗',\n btnItalic: '斜体',\n btnUnderline: '下划线',\n btnStrikethrough: '删除线',\n btnUnordered: '无序列表',\n btnOrdered: '有序列表',\n btnQuote: '引用',\n btnLineBreak: '换行',\n btnInlineCode: '行内代码',\n btnCode: '代码块',\n btnTable: '表格',\n btnImage: '图片',\n btnLink: '链接',\n btnUndo: '撤销',\n btnRedo: '重做',\n btnFullScreen: '全屏',\n btnExitFullScreen: '退出全屏',\n btnModeEditor: '仅显示编辑器',\n btnModePreview: '仅显示预览',\n btnModeAll: '显示编辑器与预览',\n selectTabMap: '按下 Tab 键时实际的输入',\n tab: '制表符',\n spaces: '空格'\n};","import { globalEmitter } from '../share/emitter';\nimport enUS from './lang/en-US';\nimport zhCN from './lang/zh-CN';\n\nvar I18n = /*#__PURE__*/function () {\n function I18n() {\n this.langs = {\n enUS: enUS,\n zhCN: zhCN\n };\n this.current = 'enUS';\n this.setUp();\n }\n\n var _proto = I18n.prototype;\n\n _proto.setUp = function setUp() {\n if (typeof window === 'undefined') {\n // 不在浏览器环境中,取消检测\n return;\n }\n\n var locale = 'enUS'; // 检测语言\n\n if (navigator.language) {\n var it = navigator.language.split('-');\n locale = it[0];\n\n if (it.length !== 1) {\n locale += it[it.length - 1].toUpperCase();\n }\n } // IE10及更低版本使用browserLanguage\n // @ts-ignore\n\n\n if (navigator.browserLanguage) {\n // @ts-ignore\n var _it = navigator.browserLanguage.split('-');\n\n locale = _it[0];\n\n if (_it[1]) {\n locale += _it[1].toUpperCase();\n }\n }\n\n if (this.current !== locale && this.isAvailable(locale)) {\n this.current = locale;\n globalEmitter.emit(globalEmitter.EVENT_LANG_CHANGE, this, locale, this.langs[locale]);\n }\n };\n\n _proto.isAvailable = function isAvailable(langName) {\n return typeof this.langs[langName] !== 'undefined';\n };\n\n _proto.add = function add(langName, lang) {\n this.langs[langName] = lang;\n };\n\n _proto.setCurrent = function setCurrent(langName) {\n if (!this.isAvailable(langName)) {\n throw new Error(\"Language \" + langName + \" is not exists\");\n }\n\n if (this.current !== langName) {\n this.current = langName;\n globalEmitter.emit(globalEmitter.EVENT_LANG_CHANGE, this, langName, this.langs[langName]);\n }\n };\n\n _proto.get = function get(key, placeholders) {\n var str = this.langs[this.current][key] || '';\n\n if (placeholders) {\n Object.keys(placeholders).forEach(function (k) {\n str = str.replace(new RegExp(\"\\\\{\" + k + \"\\\\}\", 'g'), placeholders[k]);\n });\n }\n\n return str;\n };\n\n _proto.getCurrent = function getCurrent() {\n return this.current;\n };\n\n return I18n;\n}();\n\nvar i18n = new I18n();\nexport default i18n;","import _createClass from \"@babel/runtime/helpers/createClass\";\nimport _inheritsLoose from \"@babel/runtime/helpers/inheritsLoose\";\nimport * as React from 'react';\nexport var PluginComponent = /*#__PURE__*/function (_React$Component) {\n _inheritsLoose(PluginComponent, _React$Component);\n\n function PluginComponent() {\n return _React$Component.apply(this, arguments) || this;\n }\n\n var _proto = PluginComponent.prototype;\n\n _proto.getConfig = function getConfig(key, defaultValue) {\n return typeof this.props.config[key] !== 'undefined' && this.props.config[key] !== null ? this.props.config[key] : defaultValue;\n };\n\n _createClass(PluginComponent, [{\n key: \"editor\",\n get: function get() {\n return this.props.editor;\n }\n }, {\n key: \"editorConfig\",\n get: function get() {\n return this.props.editorConfig;\n }\n }]);\n\n return PluginComponent;\n}(React.Component);\nPluginComponent.pluginName = '';\nPluginComponent.align = 'left';\nPluginComponent.defaultConfig = {};","import _inheritsLoose from \"@babel/runtime/helpers/inheritsLoose\";\nimport * as React from 'react';\nimport { PluginComponent } from '../Plugin';\n\nvar Divider = /*#__PURE__*/function (_PluginComponent) {\n _inheritsLoose(Divider, _PluginComponent);\n\n function Divider() {\n return _PluginComponent.apply(this, arguments) || this;\n }\n\n var _proto = Divider.prototype;\n\n _proto.render = function render() {\n return /*#__PURE__*/React.createElement(\"span\", {\n className: \"rc-md-divider\"\n });\n };\n\n return Divider;\n}(PluginComponent);\n\nDivider.pluginName = 'divider';\nexport { Divider as default };","export var initialSelection = {\n start: 0,\n end: 0,\n text: ''\n};","function _createForOfIteratorHelperLoose(o, allowArrayLike) { var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"]; if (it) return (it = it.call(o)).next.bind(it); if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; return function () { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nexport function deepClone(obj) {\n if (!obj || typeof obj !== 'object') {\n return obj;\n }\n\n var objArray = Array.isArray(obj) ? [] : {};\n\n if (obj && typeof obj === 'object') {\n for (var key in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\n // 如果obj的属性是对象,递归操作\n if (obj[key] && typeof obj[key] === 'object') {\n objArray[key] = deepClone(obj[key]);\n } else {\n objArray[key] = obj[key];\n }\n }\n }\n }\n\n return objArray;\n}\nexport function isEmpty(obj) {\n // 判断字符是否为空的方法\n return typeof obj === 'undefined' || obj === null || obj === '';\n}\nexport function isPromise(obj) {\n return obj && (obj instanceof Promise || (typeof obj === 'object' || typeof obj === 'function') && typeof obj.then === 'function');\n}\nexport function repeat(str, num) {\n var result = '';\n var n = num;\n\n while (n--) {\n result += str;\n }\n\n return result;\n}\nexport function isKeyMatch(event, cond) {\n var withKey = cond.withKey,\n keyCode = cond.keyCode,\n key = cond.key,\n aliasCommand = cond.aliasCommand;\n var e = {\n ctrlKey: event.ctrlKey,\n metaKey: event.metaKey,\n altKey: event.altKey,\n shiftKey: event.shiftKey,\n keyCode: event.keyCode,\n key: event.key\n };\n\n if (aliasCommand) {\n e.ctrlKey = e.ctrlKey || e.metaKey;\n }\n\n if (withKey && withKey.length > 0) {\n for (var _iterator = _createForOfIteratorHelperLoose(withKey), _step; !(_step = _iterator()).done;) {\n var it = _step.value;\n\n if (typeof e[it] !== 'undefined' && !e[it]) {\n return false;\n }\n }\n } else {\n if (e.metaKey || e.ctrlKey || e.shiftKey || e.altKey) {\n return false;\n }\n }\n\n if (e.key) {\n return e.key === key;\n } else {\n return e.keyCode === keyCode;\n }\n}\nexport function getLineAndCol(text, pos) {\n var lines = text.split('\\n');\n var beforeLines = text.substr(0, pos).split('\\n');\n var line = beforeLines.length;\n var col = beforeLines[beforeLines.length - 1].length;\n var curLine = lines[beforeLines.length - 1];\n var prevLine = beforeLines.length > 1 ? beforeLines[beforeLines.length - 2] : null;\n var nextLine = lines.length > beforeLines.length ? lines[beforeLines.length] : null;\n return {\n line: line,\n col: col,\n beforeText: text.substr(0, pos),\n afterText: text.substr(pos),\n curLine: curLine,\n prevLine: prevLine,\n nextLine: nextLine\n };\n}","import { repeat } from './tool';\n// 最简单的Decorator,即在现有文字的基础上加上前缀、后缀即可\nvar SIMPLE_DECORATOR = {\n bold: ['**', '**'],\n italic: ['*', '*'],\n underline: ['++', '++'],\n strikethrough: ['~~', '~~'],\n quote: ['\\n> ', '\\n'],\n inlinecode: ['`', '`'],\n code: ['\\n```\\n', '\\n```\\n']\n}; // 插入H1-H6\n\nfor (var i = 1; i <= 6; i++) {\n SIMPLE_DECORATOR[\"h\" + i] = [\"\\n\" + repeat('#', i) + \" \", '\\n'];\n}\n\nfunction decorateTableText(option) {\n var _option$row = option.row,\n row = _option$row === void 0 ? 2 : _option$row,\n _option$col = option.col,\n col = _option$col === void 0 ? 2 : _option$col;\n var rowHeader = ['|'];\n var rowData = ['|'];\n var rowDivision = ['|'];\n var colStr = '';\n\n for (var _i = 1; _i <= col; _i++) {\n rowHeader.push(' Head |');\n rowDivision.push(' --- |');\n rowData.push(' Data |');\n }\n\n for (var j = 1; j <= row; j++) {\n colStr += '\\n' + rowData.join('');\n }\n\n return rowHeader.join('') + \"\\n\" + rowDivision.join('') + colStr;\n}\n\nfunction decorateList(type, target) {\n var text = target;\n\n if (text.substr(0, 1) !== '\\n') {\n text = '\\n' + text;\n }\n\n if (type === 'unordered') {\n return text.length > 1 ? text.replace(/\\n/g, '\\n* ').trim() : '* ';\n } else {\n var count = 1;\n\n if (text.length > 1) {\n return text.replace(/\\n/g, function () {\n return \"\\n\" + count++ + \". \";\n }).trim();\n } else {\n return '1. ';\n }\n }\n}\n\nfunction createTextDecorated(text, newBlock) {\n return {\n text: text,\n newBlock: newBlock,\n selection: {\n start: text.length,\n end: text.length\n }\n };\n}\n/**\n * 获取装饰后的Markdown文本\n * @param target 原文字\n * @param type 装饰类型\n * @param option 附加参数\n * @returns {Decorated}\n */\n\n\nfunction getDecorated(target, type, option) {\n if (typeof SIMPLE_DECORATOR[type] !== 'undefined') {\n return {\n text: \"\" + SIMPLE_DECORATOR[type][0] + target + SIMPLE_DECORATOR[type][1],\n selection: {\n start: SIMPLE_DECORATOR[type][0].length,\n end: SIMPLE_DECORATOR[type][0].length + target.length\n }\n };\n }\n\n switch (type) {\n case 'tab':\n var inputValue = option.tabMapValue === 1 ? '\\t' : ' '.repeat(option.tabMapValue);\n var newSelectedText = inputValue + target.replace(/\\n/g, \"\\n\" + inputValue);\n var lineBreakCount = target.includes('\\n') ? target.match(/\\n/g).length : 0;\n return {\n text: newSelectedText,\n selection: {\n start: option.tabMapValue,\n end: option.tabMapValue * (lineBreakCount + 1) + target.length\n }\n };\n\n case 'unordered':\n return createTextDecorated(decorateList('unordered', target), true);\n\n case 'order':\n return createTextDecorated(decorateList('order', target), true);\n\n case 'hr':\n return createTextDecorated('---', true);\n\n case 'table':\n return {\n text: decorateTableText(option),\n newBlock: true\n };\n\n case 'image':\n return {\n text: \"![\" + (target || option.target) + \"](\" + (option.imageUrl || '') + \")\",\n selection: {\n start: 2,\n end: target.length + 2\n }\n };\n\n case 'link':\n return {\n text: \"[\" + target + \"](\" + (option.linkUrl || '') + \")\",\n selection: {\n start: 1,\n end: target.length + 1\n }\n };\n }\n\n return {\n text: target,\n selection: {\n start: 0,\n end: target.length\n }\n };\n}\n\nexport default getDecorated;","// Unique ID creation requires a high quality random # generator. In the browser we therefore\n// require the crypto API and do not support built-in fallback to lower quality random number\n// generators (like Math.random()).\nvar getRandomValues;\nvar rnds8 = new Uint8Array(16);\nexport default function rng() {\n // lazy load so that environments that need to polyfill have a chance to do so\n if (!getRandomValues) {\n // getRandomValues needs to be invoked in a context where \"this\" is a Crypto implementation. Also,\n // find the complete implementation of crypto (msCrypto) on IE11.\n getRandomValues = typeof crypto !== 'undefined' && crypto.getRandomValues && crypto.getRandomValues.bind(crypto) || typeof msCrypto !== 'undefined' && typeof msCrypto.getRandomValues === 'function' && msCrypto.getRandomValues.bind(msCrypto);\n\n if (!getRandomValues) {\n throw new Error('crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported');\n }\n }\n\n return getRandomValues(rnds8);\n}","import _extends from \"@babel/runtime/helpers/extends\";\n\nfunction mergeObject(obj1, obj2) {\n var result = {};\n Object.keys(obj1).forEach(function (k) {\n if (typeof obj2[k] === 'undefined') {\n result[k] = obj1[k];\n return;\n }\n\n if (typeof obj2[k] === 'object') {\n if (Array.isArray(obj2[k])) {\n result[k] = [].concat(obj2[k]);\n } else {\n result[k] = mergeObject(obj1[k], obj2[k]);\n }\n\n return;\n }\n\n result[k] = obj2[k];\n });\n return result;\n}\n\nexport default function (defaultConfig) {\n var res = _extends({}, defaultConfig);\n\n for (var _len = arguments.length, configs = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n configs[_key - 1] = arguments[_key];\n }\n\n configs.forEach(function (conf) {\n // only object\n if (typeof conf !== 'object') {\n return;\n }\n\n res = mergeObject(res, conf);\n });\n return res;\n}","export default /^(?:[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}|00000000-0000-0000-0000-000000000000)$/i;","import validate from './validate.js';\n/**\n * Convert array of 16 byte values to UUID string format of the form:\n * XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX\n */\n\nvar byteToHex = [];\n\nfor (var i = 0; i < 256; ++i) {\n byteToHex.push((i + 0x100).toString(16).substr(1));\n}\n\nfunction stringify(arr) {\n var offset = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n // Note: Be careful editing this code! It's been tuned for performance\n // and works in ways you may not expect. See https://github.com/uuidjs/uuid/pull/434\n var uuid = (byteToHex[arr[offset + 0]] + byteToHex[arr[offset + 1]] + byteToHex[arr[offset + 2]] + byteToHex[arr[offset + 3]] + '-' + byteToHex[arr[offset + 4]] + byteToHex[arr[offset + 5]] + '-' + byteToHex[arr[offset + 6]] + byteToHex[arr[offset + 7]] + '-' + byteToHex[arr[offset + 8]] + byteToHex[arr[offset + 9]] + '-' + byteToHex[arr[offset + 10]] + byteToHex[arr[offset + 11]] + byteToHex[arr[offset + 12]] + byteToHex[arr[offset + 13]] + byteToHex[arr[offset + 14]] + byteToHex[arr[offset + 15]]).toLowerCase(); // Consistency check for valid UUID. If this throws, it's likely due to one\n // of the following:\n // - One or more input array values don't map to a hex octet (leading to\n // \"undefined\" in the uuid)\n // - Invalid input values for the RFC `version` or `variant` fields\n\n if (!validate(uuid)) {\n throw TypeError('Stringified UUID is invalid');\n }\n\n return uuid;\n}\n\nexport default stringify;","import REGEX from './regex.js';\n\nfunction validate(uuid) {\n return typeof uuid === 'string' && REGEX.test(uuid);\n}\n\nexport default validate;","import rng from './rng.js';\nimport stringify from './stringify.js';\n\nfunction v4(options, buf, offset) {\n options = options || {};\n var rnds = options.random || (options.rng || rng)(); // Per 4.4, set bits for version and `clock_seq_hi_and_reserved`\n\n rnds[6] = rnds[6] & 0x0f | 0x40;\n rnds[8] = rnds[8] & 0x3f | 0x80; // Copy bytes to buffer, if provided\n\n if (buf) {\n offset = offset || 0;\n\n for (var i = 0; i < 16; ++i) {\n buf[offset + i] = rnds[i];\n }\n\n return buf;\n }\n\n return stringify(rnds);\n}\n\nexport default v4;","import { v4 as uuid } from 'uuid';\nimport getDecorated from './decorate';\nimport { isPromise } from './tool';\n\nfunction getUploadPlaceholder(file, onImageUpload) {\n var placeholder = getDecorated('', 'image', {\n target: \"Uploading_\" + uuid(),\n imageUrl: ''\n }).text;\n var uploaded = new Promise(function (resolve) {\n var isCallback = true;\n\n var handleUploaded = function handleUploaded(url) {\n if (isCallback) {\n console.warn('Deprecated: onImageUpload should return a Promise, callback will be removed in future');\n }\n\n resolve(getDecorated('', 'image', {\n target: file.name,\n imageUrl: url\n }).text);\n }; // 兼容回调和Promise\n\n\n var upload = onImageUpload(file, handleUploaded);\n\n if (isPromise(upload)) {\n isCallback = false;\n upload.then(handleUploaded);\n }\n });\n return {\n placeholder: placeholder,\n uploaded: uploaded\n };\n}\n\nexport default getUploadPlaceholder;","var defaultConfig = {\n theme: 'default',\n view: {\n menu: true,\n md: true,\n html: true\n },\n canView: {\n menu: true,\n md: true,\n html: true,\n both: true,\n fullScreen: true,\n hideMenu: true\n },\n htmlClass: '',\n markdownClass: '',\n syncScrollMode: ['rightFollowLeft', 'leftFollowRight'],\n imageUrl: '',\n imageAccept: '',\n linkUrl: '',\n table: {\n maxRow: 4,\n maxCol: 6\n },\n allowPasteImage: true,\n onImageUpload: undefined,\n onCustomImageUpload: undefined,\n shortcuts: true\n};\nexport default defaultConfig;","import _inheritsLoose from \"@babel/runtime/helpers/inheritsLoose\";\nimport * as React from 'react';\nexport var Preview = /*#__PURE__*/function (_React$Component) {\n _inheritsLoose(Preview, _React$Component);\n\n function Preview(props) {\n var _this;\n\n _this = _React$Component.call(this, props) || this;\n _this.el = /*#__PURE__*/React.createRef();\n return _this;\n }\n\n var _proto = Preview.prototype;\n\n _proto.getElement = function getElement() {\n return this.el.current;\n };\n\n _proto.getHeight = function getHeight() {\n return this.el.current ? this.el.current.offsetHeight : 0;\n };\n\n return Preview;\n}(React.Component);\nexport var HtmlRender = /*#__PURE__*/function (_Preview) {\n _inheritsLoose(HtmlRender, _Preview);\n\n function HtmlRender() {\n return _Preview.apply(this, arguments) || this;\n }\n\n var _proto2 = HtmlRender.prototype;\n\n _proto2.getHtml = function getHtml() {\n if (typeof this.props.html === 'string') {\n return this.props.html;\n }\n\n if (this.el.current) {\n return this.el.current.innerHTML;\n }\n\n return '';\n };\n\n _proto2.render = function render() {\n return typeof this.props.html === 'string' ? /*#__PURE__*/React.createElement('div', {\n ref: this.el,\n dangerouslySetInnerHTML: {\n __html: this.props.html\n },\n className: this.props.className || 'custom-html-style'\n }) : /*#__PURE__*/React.createElement('div', {\n ref: this.el,\n className: this.props.className || 'custom-html-style'\n }, this.props.html);\n };\n\n return HtmlRender;\n}(Preview);\nexport default HtmlRender;","import _extends from \"@babel/runtime/helpers/extends\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/assertThisInitialized\";\nimport _inheritsLoose from \"@babel/runtime/helpers/inheritsLoose\";\n\nfunction _createForOfIteratorHelperLoose(o, allowArrayLike) { var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"]; if (it) return (it = it.call(o)).next.bind(it); if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; return function () { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nimport * as React from 'react';\nimport Icon from '../components/Icon';\nimport NavigationBar from '../components/NavigationBar';\nimport ToolBar from '../components/ToolBar';\nimport i18n from '../i18n';\nimport DividerPlugin from '../plugins/divider';\nimport Emitter, { globalEmitter } from '../share/emitter';\nimport { initialSelection } from '../share/var';\nimport getDecorated from '../utils/decorate';\nimport mergeConfig from '../utils/mergeConfig';\nimport { getLineAndCol, isKeyMatch, isPromise } from '../utils/tool';\nimport getUploadPlaceholder from '../utils/uploadPlaceholder';\nimport defaultConfig from './defaultConfig';\nimport { HtmlRender } from './preview';\n\nvar Editor = /*#__PURE__*/function (_React$Component) {\n _inheritsLoose(Editor, _React$Component);\n\n /**\n * Register plugin\n * @param {any} comp Plugin component\n * @param {any} config Other configs\n */\n Editor.use = function use(comp, config) {\n if (config === void 0) {\n config = {};\n }\n\n // Check for duplicate plugins\n for (var i = 0; i < Editor.plugins.length; i++) {\n if (Editor.plugins[i].comp === comp) {\n Editor.plugins.splice(i, 1, {\n comp: comp,\n config: config\n });\n return;\n }\n }\n\n Editor.plugins.push({\n comp: comp,\n config: config\n });\n }\n /**\n * Unregister plugin\n * @param {any} comp Plugin component\n */\n ;\n\n Editor.unuse = function unuse(comp) {\n for (var i = 0; i < Editor.plugins.length; i++) {\n if (Editor.plugins[i].comp === comp) {\n Editor.plugins.splice(i, 1);\n return;\n }\n }\n }\n /**\n * Unregister all plugins\n * @param {any} comp Plugin component\n */\n ;\n\n Editor.unuseAll = function unuseAll() {\n Editor.plugins = [];\n }\n /**\n * Locales\n */\n ;\n\n function Editor(props) {\n var _this;\n\n _this = _React$Component.call(this, props) || this;\n _this.nodeMdText = /*#__PURE__*/React.createRef();\n _this.nodeMdPreview = /*#__PURE__*/React.createRef();\n _this.nodeMdPreviewWrapper = /*#__PURE__*/React.createRef();\n _this.hasContentChanged = true;\n _this.composing = false;\n _this.scrollScale = 1;\n _this.isSyncingScroll = false;\n _this.shouldSyncScroll = 'md';\n _this.keyboardListeners = [];\n _this.emitter = new Emitter();\n _this.config = mergeConfig(defaultConfig, _this.props.config, _this.props);\n _this.state = {\n text: (_this.props.value || _this.props.defaultValue || '').replace(/↵/g, '\\n'),\n html: '',\n view: _this.config.view || defaultConfig.view,\n fullScreen: false,\n plugins: _this.getPlugins()\n };\n\n if (_this.config.canView && !_this.config.canView.menu) {\n _this.state.view.menu = false;\n }\n\n _this.nodeMdText = /*#__PURE__*/React.createRef();\n _this.nodeMdPreviewWrapper = /*#__PURE__*/React.createRef();\n _this.handleChange = _this.handleChange.bind(_assertThisInitialized(_this));\n _this.handlePaste = _this.handlePaste.bind(_assertThisInitialized(_this));\n _this.handleDrop = _this.handleDrop.bind(_assertThisInitialized(_this));\n _this.handleToggleMenu = _this.handleToggleMenu.bind(_assertThisInitialized(_this));\n _this.handleKeyDown = _this.handleKeyDown.bind(_assertThisInitialized(_this));\n _this.handleEditorKeyDown = _this.handleEditorKeyDown.bind(_assertThisInitialized(_this));\n _this.handleLocaleUpdate = _this.handleLocaleUpdate.bind(_assertThisInitialized(_this));\n _this.handleFocus = _this.handleFocus.bind(_assertThisInitialized(_this));\n _this.handleBlur = _this.handleBlur.bind(_assertThisInitialized(_this));\n _this.handleInputScroll = _this.handleSyncScroll.bind(_assertThisInitialized(_this), 'md');\n _this.handlePreviewScroll = _this.handleSyncScroll.bind(_assertThisInitialized(_this), 'html');\n return _this;\n }\n\n var _proto = Editor.prototype;\n\n _proto.componentDidMount = function componentDidMount() {\n var text = this.state.text;\n this.renderHTML(text);\n globalEmitter.on(globalEmitter.EVENT_LANG_CHANGE, this.handleLocaleUpdate); // init i18n\n\n i18n.setUp();\n };\n\n _proto.componentWillUnmount = function componentWillUnmount() {\n globalEmitter.off(globalEmitter.EVENT_LANG_CHANGE, this.handleLocaleUpdate);\n };\n\n _proto.componentDidUpdate = function componentDidUpdate(prevProps) {\n if (typeof this.props.value !== 'undefined' && this.props.value !== this.state.text) {\n var value = this.props.value;\n\n if (typeof value !== 'string') {\n value = String(value).toString();\n }\n\n value = value.replace(/↵/g, '\\n');\n\n if (this.state.text !== value) {\n this.setState({\n text: value\n });\n this.renderHTML(value);\n }\n }\n\n if (prevProps.plugins !== this.props.plugins) {\n this.setState({\n plugins: this.getPlugins()\n });\n }\n };\n\n _proto.getPlugins = function getPlugins() {\n var _this2 = this;\n\n var plugins = [];\n\n if (this.props.plugins) {\n // If plugins option is configured, use only specified plugins\n var addToPlugins = function addToPlugins(name) {\n if (name === DividerPlugin.pluginName) {\n plugins.push({\n comp: DividerPlugin,\n config: {}\n });\n return;\n }\n\n for (var _iterator = _createForOfIteratorHelperLoose(Editor.plugins), _step; !(_step = _iterator()).done;) {\n var it = _step.value;\n\n if (it.comp.pluginName === name) {\n plugins.push(it);\n return;\n }\n }\n };\n\n for (var _iterator2 = _createForOfIteratorHelperLoose(this.props.plugins), _step2; !(_step2 = _iterator2()).done;) {\n var name = _step2.value;\n\n // Special handling of fonts to ensure backward compatibility\n if (name === 'fonts') {\n addToPlugins('font-bold');\n addToPlugins('font-italic');\n addToPlugins('font-underline');\n addToPlugins('font-strikethrough');\n addToPlugins('list-unordered');\n addToPlugins('list-ordered');\n addToPlugins('block-quote');\n addToPlugins('block-wrap');\n addToPlugins('block-code-inline');\n addToPlugins('block-code-block');\n } else {\n addToPlugins(name);\n }\n }\n } else {\n // Use all registered plugins\n plugins = [].concat(Editor.plugins);\n }\n\n var result = {};\n plugins.forEach(function (it) {\n if (typeof result[it.comp.align] === 'undefined') {\n result[it.comp.align] = [];\n }\n\n result[it.comp.align].push( /*#__PURE__*/React.createElement(it.comp, {\n editor: _this2,\n editorConfig: _this2.config,\n config: _extends({}, it.comp.defaultConfig || {}, it.config || {}),\n key: it.comp.pluginName\n }));\n });\n return result;\n } // sync left and right section's scroll\n ;\n\n _proto.handleSyncScroll = function handleSyncScroll(type, e) {\n var _this3 = this;\n\n // prevent loop\n if (type !== this.shouldSyncScroll) {\n return;\n } // trigger events\n\n\n if (this.props.onScroll) {\n this.props.onScroll(e, type);\n }\n\n this.emitter.emit(this.emitter.EVENT_SCROLL, e, type); // should sync scroll?\n\n var _this$config$syncScro = this.config.syncScrollMode,\n syncScrollMode = _this$config$syncScro === void 0 ? [] : _this$config$syncScro;\n\n if (!syncScrollMode.includes(type === 'md' ? 'rightFollowLeft' : 'leftFollowRight')) {\n return;\n }\n\n if (this.hasContentChanged && this.nodeMdText.current && this.nodeMdPreviewWrapper.current) {\n // 计算出左右的比例\n this.scrollScale = this.nodeMdText.current.scrollHeight / this.nodeMdPreviewWrapper.current.scrollHeight;\n this.hasContentChanged = false;\n }\n\n if (!this.isSyncingScroll) {\n this.isSyncingScroll = true;\n requestAnimationFrame(function () {\n if (_this3.nodeMdText.current && _this3.nodeMdPreviewWrapper.current) {\n if (type === 'md') {\n // left to right\n _this3.nodeMdPreviewWrapper.current.scrollTop = _this3.nodeMdText.current.scrollTop / _this3.scrollScale;\n } else {\n // right to left\n _this3.nodeMdText.current.scrollTop = _this3.nodeMdPreviewWrapper.current.scrollTop * _this3.scrollScale;\n }\n }\n\n _this3.isSyncingScroll = false;\n });\n }\n };\n\n _proto.renderHTML = function renderHTML(markdownText) {\n var _this4 = this;\n\n if (!this.props.renderHTML) {\n console.error('renderHTML props is required!');\n return Promise.resolve();\n }\n\n var res = this.props.renderHTML(markdownText);\n\n if (isPromise(res)) {\n // @ts-ignore\n return res.then(function (r) {\n return _this4.setHtml(r);\n });\n }\n\n if (typeof res === 'function') {\n return this.setHtml(res());\n }\n\n return this.setHtml(res);\n };\n\n _proto.setHtml = function setHtml(html) {\n var _this5 = this;\n\n return new Promise(function (resolve) {\n _this5.setState({\n html: html\n }, resolve);\n });\n };\n\n _proto.handleToggleMenu = function handleToggleMenu() {\n this.setView({\n menu: !this.state.view.menu\n });\n };\n\n _proto.handleFocus = function handleFocus(e) {\n var onFocus = this.props.onFocus;\n\n if (onFocus) {\n onFocus(e);\n }\n\n this.emitter.emit(this.emitter.EVENT_FOCUS, e);\n };\n\n _proto.handleBlur = function handleBlur(e) {\n var onBlur = this.props.onBlur;\n\n if (onBlur) {\n onBlur(e);\n }\n\n this.emitter.emit(this.emitter.EVENT_BLUR, e);\n }\n /**\n * Text area change event\n * @param {React.ChangeEvent} e\n */\n ;\n\n _proto.handleChange = function handleChange(e) {\n e.persist();\n var value = e.target.value; // 触发内部事件\n\n this.setText(value, e);\n }\n /**\n * Listen paste event to support paste images\n */\n ;\n\n _proto.handlePaste = function handlePaste(e) {\n if (!this.config.allowPasteImage || !this.config.onImageUpload) {\n return;\n }\n\n var event = e.nativeEvent; // @ts-ignore\n\n var items = (event.clipboardData || window.clipboardData).items;\n\n if (items) {\n e.preventDefault();\n this.uploadWithDataTransfer(items);\n }\n } // Drag images to upload\n ;\n\n _proto.handleDrop = function handleDrop(e) {\n if (!this.config.onImageUpload) {\n return;\n }\n\n var event = e.nativeEvent;\n\n if (!event.dataTransfer) {\n return;\n }\n\n var items = event.dataTransfer.items;\n\n if (items) {\n e.preventDefault();\n this.uploadWithDataTransfer(items);\n }\n };\n\n _proto.handleEditorKeyDown = function handleEditorKeyDown(e) {\n var _this6 = this;\n\n var keyCode = e.keyCode,\n key = e.key,\n currentTarget = e.currentTarget;\n\n if ((keyCode === 13 || key === 'Enter') && this.composing === false) {\n var _text = e.currentTarget.value;\n var curPos = currentTarget.selectionStart;\n var lineInfo = getLineAndCol(_text, curPos);\n\n var emptyCurrentLine = function emptyCurrentLine() {\n var newValue = currentTarget.value.substr(0, curPos - lineInfo.curLine.length) + currentTarget.value.substr(curPos);\n\n _this6.setText(newValue, undefined, {\n start: curPos - lineInfo.curLine.length,\n end: curPos - lineInfo.curLine.length\n });\n\n e.preventDefault();\n };\n\n var addSymbol = function addSymbol(symbol) {\n _this6.insertText(\"\\n\" + symbol, false, {\n start: symbol.length + 1,\n end: symbol.length + 1\n });\n\n e.preventDefault();\n }; // Enter key, check previous line\n\n\n var isSymbol = lineInfo.curLine.match(/^(\\s?)([-*]) /);\n\n if (isSymbol) {\n if (/^(\\s?)([-*]) $/.test(lineInfo.curLine)) {\n emptyCurrentLine();\n return;\n }\n\n addSymbol(isSymbol[0]);\n return;\n }\n\n var isOrderList = lineInfo.curLine.match(/^(\\s?)(\\d+)\\. /);\n\n if (isOrderList) {\n if (/^(\\s?)(\\d+)\\. $/.test(lineInfo.curLine)) {\n emptyCurrentLine();\n return;\n }\n\n var toInsert = \"\" + isOrderList[1] + (parseInt(isOrderList[2], 10) + 1) + \". \";\n addSymbol(toInsert);\n }\n }\n } // Handle language change\n ;\n\n _proto.handleLocaleUpdate = function handleLocaleUpdate() {\n this.forceUpdate();\n }\n /**\n * Get elements\n */\n ;\n\n _proto.getMdElement = function getMdElement() {\n return this.nodeMdText.current;\n };\n\n _proto.getHtmlElement = function getHtmlElement() {\n return this.nodeMdPreviewWrapper.current;\n }\n /**\n * Clear selected\n */\n ;\n\n _proto.clearSelection = function clearSelection() {\n if (this.nodeMdText.current) {\n this.nodeMdText.current.setSelectionRange(0, 0, 'none');\n }\n }\n /**\n * Get selected\n * @return {Selection}\n */\n ;\n\n _proto.getSelection = function getSelection() {\n var source = this.nodeMdText.current;\n\n if (!source) {\n return _extends({}, initialSelection);\n }\n\n var start = source.selectionStart;\n var end = source.selectionEnd;\n var text = (source.value || '').slice(start, end);\n return {\n start: start,\n end: end,\n text: text\n };\n }\n /**\n * Set selected\n * @param {Selection} to\n */\n ;\n\n _proto.setSelection = function setSelection(to) {\n if (this.nodeMdText.current) {\n this.nodeMdText.current.setSelectionRange(to.start, to.end, 'forward');\n this.nodeMdText.current.focus();\n }\n }\n /**\n * Insert markdown text\n * @param type\n * @param option\n */\n ;\n\n _proto.insertMarkdown = function insertMarkdown(type, option) {\n if (option === void 0) {\n option = {};\n }\n\n var curSelection = this.getSelection();\n var decorateOption = option ? _extends({}, option) : {};\n\n if (type === 'image') {\n decorateOption = _extends({}, decorateOption, {\n target: option.target || curSelection.text || '',\n imageUrl: option.imageUrl || this.config.imageUrl\n });\n }\n\n if (type === 'link') {\n decorateOption = _extends({}, decorateOption, {\n linkUrl: this.config.linkUrl\n });\n }\n\n if (type === 'tab' && curSelection.start !== curSelection.end) {\n var curLineStart = this.getMdValue().slice(0, curSelection.start).lastIndexOf('\\n') + 1;\n this.setSelection({\n start: curLineStart,\n end: curSelection.end\n });\n }\n\n var decorate = getDecorated(curSelection.text, type, decorateOption);\n var text = decorate.text;\n var selection = decorate.selection;\n\n if (decorate.newBlock) {\n var startLineInfo = getLineAndCol(this.getMdValue(), curSelection.start);\n var col = startLineInfo.col,\n curLine = startLineInfo.curLine;\n\n if (col > 0 && curLine.length > 0) {\n text = \"\\n\" + text;\n\n if (selection) {\n selection.start++;\n selection.end++;\n }\n }\n\n var afterText = startLineInfo.afterText;\n\n if (curSelection.start !== curSelection.end) {\n afterText = getLineAndCol(this.getMdValue(), curSelection.end).afterText;\n }\n\n if (afterText.trim() !== '' && afterText.substr(0, 2) !== '\\n\\n') {\n if (afterText.substr(0, 1) !== '\\n') {\n text += '\\n';\n }\n\n text += '\\n';\n }\n }\n\n this.insertText(text, true, selection);\n }\n /**\n * Insert a placeholder, and replace it when the Promise resolved\n * @param placeholder\n * @param wait\n */\n ;\n\n _proto.insertPlaceholder = function insertPlaceholder(placeholder, wait) {\n var _this7 = this;\n\n this.insertText(placeholder, true);\n wait.then(function (str) {\n var text = _this7.getMdValue().replace(placeholder, str);\n\n _this7.setText(text);\n });\n }\n /**\n * Insert text\n * @param {string} value The text will be insert\n * @param {boolean} replaceSelected Replace selected text\n * @param {Selection} newSelection New selection\n */\n ;\n\n _proto.insertText = function insertText(value, replaceSelected, newSelection) {\n if (value === void 0) {\n value = '';\n }\n\n if (replaceSelected === void 0) {\n replaceSelected = false;\n }\n\n var text = this.state.text;\n var selection = this.getSelection();\n var beforeContent = text.slice(0, selection.start);\n var afterContent = text.slice(replaceSelected ? selection.end : selection.start, text.length);\n this.setText(beforeContent + value + afterContent, undefined, newSelection ? {\n start: newSelection.start + beforeContent.length,\n end: newSelection.end + beforeContent.length\n } : {\n start: selection.start,\n end: selection.start\n });\n }\n /**\n * Set text, and trigger onChange event\n * @param {string} value\n * @param {any} event\n */\n ;\n\n _proto.setText = function setText(value, event, newSelection) {\n var _this8 = this;\n\n if (value === void 0) {\n value = '';\n }\n\n var _this$config$onChange = this.config.onChangeTrigger,\n onChangeTrigger = _this$config$onChange === void 0 ? 'both' : _this$config$onChange;\n var text = value.replace(/↵/g, '\\n');\n\n if (this.state.text === value) {\n return;\n }\n\n this.setState({\n text: text\n });\n\n if (this.props.onChange && (onChangeTrigger === 'both' || onChangeTrigger === 'beforeRender')) {\n this.props.onChange({\n text: text,\n html: this.getHtmlValue()\n }, event);\n }\n\n this.emitter.emit(this.emitter.EVENT_CHANGE, value, event, typeof event === 'undefined');\n\n if (newSelection) {\n setTimeout(function () {\n return _this8.setSelection(newSelection);\n });\n }\n\n if (!this.hasContentChanged) {\n this.hasContentChanged = true;\n }\n\n var rendering = this.renderHTML(text);\n\n if (onChangeTrigger === 'both' || onChangeTrigger === 'afterRender') {\n rendering.then(function () {\n if (_this8.props.onChange) {\n _this8.props.onChange({\n text: _this8.state.text,\n html: _this8.getHtmlValue()\n }, event);\n }\n });\n }\n }\n /**\n * Get text value\n * @return {string}\n */\n ;\n\n _proto.getMdValue = function getMdValue() {\n return this.state.text;\n }\n /**\n * Get rendered html\n * @returns {string}\n */\n ;\n\n _proto.getHtmlValue = function getHtmlValue() {\n if (typeof this.state.html === 'string') {\n return this.state.html;\n }\n\n if (this.nodeMdPreview.current) {\n return this.nodeMdPreview.current.getHtml();\n }\n\n return '';\n }\n /**\n * Listen keyboard events\n */\n ;\n\n /**\n * Listen keyboard events\n * @param {KeyboardEventListener} data\n */\n _proto.onKeyboard = function onKeyboard(data) {\n var _this9 = this;\n\n if (Array.isArray(data)) {\n data.forEach(function (it) {\n return _this9.onKeyboard(it);\n });\n return;\n }\n\n if (!this.keyboardListeners.includes(data)) {\n this.keyboardListeners.push(data);\n }\n }\n /**\n * Unlisten keyboard events\n * @param {KeyboardEventListener} data\n */\n ;\n\n _proto.offKeyboard = function offKeyboard(data) {\n var _this10 = this;\n\n if (Array.isArray(data)) {\n data.forEach(function (it) {\n return _this10.offKeyboard(it);\n });\n return;\n }\n\n var index = this.keyboardListeners.indexOf(data);\n\n if (index >= 0) {\n this.keyboardListeners.splice(index, 1);\n }\n };\n\n _proto.handleKeyDown = function handleKeyDown(e) {\n // 遍历监听数组,找找有没有被监听\n for (var _iterator3 = _createForOfIteratorHelperLoose(this.keyboardListeners), _step3; !(_step3 = _iterator3()).done;) {\n var it = _step3.value;\n\n if (isKeyMatch(e, it)) {\n e.preventDefault();\n it.callback(e);\n return;\n }\n } // 如果没有,触发默认事件\n\n\n this.emitter.emit(this.emitter.EVENT_KEY_DOWN, e);\n };\n\n _proto.getEventType = function getEventType(event) {\n switch (event) {\n case 'change':\n return this.emitter.EVENT_CHANGE;\n\n case 'fullscreen':\n return this.emitter.EVENT_FULL_SCREEN;\n\n case 'viewchange':\n return this.emitter.EVENT_VIEW_CHANGE;\n\n case 'keydown':\n return this.emitter.EVENT_KEY_DOWN;\n\n case 'blur':\n return this.emitter.EVENT_BLUR;\n\n case 'focus':\n return this.emitter.EVENT_FOCUS;\n\n case 'scroll':\n return this.emitter.EVENT_SCROLL;\n }\n }\n /**\n * Listen events\n * @param {EditorEvent} event Event type\n * @param {any} cb Callback\n */\n ;\n\n _proto.on = function on(event, cb) {\n var eventType = this.getEventType(event);\n\n if (eventType) {\n this.emitter.on(eventType, cb);\n }\n }\n /**\n * Unlisten events\n * @param {EditorEvent} event Event type\n * @param {any} cb Callback\n */\n ;\n\n _proto.off = function off(event, cb) {\n var eventType = this.getEventType(event);\n\n if (eventType) {\n this.emitter.off(eventType, cb);\n }\n }\n /**\n * Set view property\n * Can show or hide: editor, preview, menu\n * @param {object} to\n */\n ;\n\n _proto.setView = function setView(to) {\n var _this11 = this;\n\n var newView = _extends({}, this.state.view, to);\n\n this.setState({\n view: newView\n }, function () {\n _this11.emitter.emit(_this11.emitter.EVENT_VIEW_CHANGE, newView);\n });\n }\n /**\n * Get view property\n * @return {object}\n */\n ;\n\n _proto.getView = function getView() {\n return _extends({}, this.state.view);\n }\n /**\n * Enter or exit full screen\n * @param {boolean} enable\n */\n ;\n\n _proto.fullScreen = function fullScreen(enable) {\n var _this12 = this;\n\n if (this.state.fullScreen !== enable) {\n this.setState({\n fullScreen: enable\n }, function () {\n _this12.emitter.emit(_this12.emitter.EVENT_FULL_SCREEN, enable);\n });\n }\n }\n /**\n * Is full screen\n * @return {boolean}\n */\n ;\n\n _proto.isFullScreen = function isFullScreen() {\n return this.state.fullScreen;\n };\n\n _proto.uploadWithDataTransfer = function uploadWithDataTransfer(items) {\n var _this13 = this;\n\n var onImageUpload = this.config.onImageUpload;\n\n if (!onImageUpload) {\n return;\n }\n\n var queue = [];\n Array.prototype.forEach.call(items, function (it) {\n if (it.kind === 'file' && it.type.includes('image')) {\n var file = it.getAsFile();\n\n if (file) {\n var placeholder = getUploadPlaceholder(file, onImageUpload);\n queue.push(Promise.resolve(placeholder.placeholder));\n placeholder.uploaded.then(function (str) {\n var text = _this13.getMdValue().replace(placeholder.placeholder, str);\n\n var offset = str.length - placeholder.placeholder.length; // 计算出替换后的光标位置\n\n var selection = _this13.getSelection();\n\n _this13.setText(text, undefined, {\n start: selection.start + offset,\n end: selection.start + offset\n });\n });\n }\n } else if (it.kind === 'string' && it.type === 'text/plain') {\n queue.push(new Promise(function (resolve) {\n return it.getAsString(resolve);\n }));\n }\n });\n Promise.all(queue).then(function (res) {\n var text = res.join('');\n\n var selection = _this13.getSelection();\n\n _this13.insertText(text, true, {\n start: selection.start === selection.end ? text.length : 0,\n end: text.length\n });\n });\n };\n\n _proto.render = function render() {\n var _this14 = this;\n\n var _this$state = this.state,\n view = _this$state.view,\n fullScreen = _this$state.fullScreen,\n text = _this$state.text,\n html = _this$state.html;\n var _this$props = this.props,\n id = _this$props.id,\n _this$props$className = _this$props.className,\n className = _this$props$className === void 0 ? \"\" : _this$props$className,\n style = _this$props.style,\n _this$props$name = _this$props.name,\n name = _this$props$name === void 0 ? \"textarea\" : _this$props$name,\n autoFocus = _this$props.autoFocus,\n placeholder = _this$props.placeholder,\n readOnly = _this$props.readOnly;\n var showHideMenu = this.config.canView && this.config.canView.hideMenu && !this.config.canView.menu;\n\n var getPluginAt = function getPluginAt(at) {\n return _this14.state.plugins[at] || [];\n };\n\n var isShowMenu = !!view.menu;\n var editorId = id ? id + \"_md\" : undefined;\n var previewerId = id ? id + \"_html\" : undefined;\n return /*#__PURE__*/React.createElement(\"div\", {\n id: id,\n className: \"rc-md-editor \" + (fullScreen ? 'full' : '') + \" \" + className,\n style: style,\n onKeyDown: this.handleKeyDown,\n onDrop: this.handleDrop\n }, /*#__PURE__*/React.createElement(NavigationBar, {\n visible: isShowMenu,\n left: getPluginAt('left'),\n right: getPluginAt('right')\n }), /*#__PURE__*/React.createElement(\"div\", {\n className: \"editor-container\"\n }, showHideMenu && /*#__PURE__*/React.createElement(ToolBar, null, /*#__PURE__*/React.createElement(\"span\", {\n className: \"button button-type-menu\",\n title: isShowMenu ? 'hidden menu' : 'show menu',\n onClick: this.handleToggleMenu\n }, /*#__PURE__*/React.createElement(Icon, {\n type: \"expand-\" + (isShowMenu ? 'less' : 'more')\n }))), /*#__PURE__*/React.createElement(\"section\", {\n className: \"section sec-md \" + (view.md ? 'visible' : 'in-visible')\n }, /*#__PURE__*/React.createElement(\"textarea\", {\n id: editorId,\n ref: this.nodeMdText,\n name: name,\n autoFocus: autoFocus,\n placeholder: placeholder,\n readOnly: readOnly,\n value: text,\n className: \"section-container input \" + (this.config.markdownClass || ''),\n wrap: \"hard\",\n onChange: this.handleChange,\n onScroll: this.handleInputScroll,\n onMouseOver: function onMouseOver() {\n return _this14.shouldSyncScroll = 'md';\n },\n onKeyDown: this.handleEditorKeyDown,\n onCompositionStart: function onCompositionStart() {\n return _this14.composing = true;\n },\n onCompositionEnd: function onCompositionEnd() {\n return _this14.composing = false;\n },\n onPaste: this.handlePaste,\n onFocus: this.handleFocus,\n onBlur: this.handleBlur\n })), /*#__PURE__*/React.createElement(\"section\", {\n className: \"section sec-html \" + (view.html ? 'visible' : 'in-visible')\n }, /*#__PURE__*/React.createElement(\"div\", {\n id: previewerId,\n className: \"section-container html-wrap\",\n ref: this.nodeMdPreviewWrapper,\n onMouseOver: function onMouseOver() {\n return _this14.shouldSyncScroll = 'html';\n },\n onScroll: this.handlePreviewScroll\n }, /*#__PURE__*/React.createElement(HtmlRender, {\n html: html,\n className: this.config.htmlClass,\n ref: this.nodeMdPreview\n })))));\n };\n\n return Editor;\n}(React.Component);\n\nEditor.plugins = [];\nEditor.addLocale = i18n.add.bind(i18n);\nEditor.useLocale = i18n.setCurrent.bind(i18n);\nEditor.getLocale = i18n.getCurrent.bind(i18n);\nexport default Editor;","import _assertThisInitialized from \"@babel/runtime/helpers/assertThisInitialized\";\nimport _inheritsLoose from \"@babel/runtime/helpers/inheritsLoose\";\nimport * as React from 'react';\nimport { PluginComponent } from './Plugin';\n\nvar AutoResize = /*#__PURE__*/function (_PluginComponent) {\n _inheritsLoose(AutoResize, _PluginComponent);\n\n function AutoResize(props) {\n var _this;\n\n _this = _PluginComponent.call(this, props) || this;\n _this.timer = null;\n _this.useTimer = _this.getConfig('useTimer') || typeof requestAnimationFrame === 'undefined';\n _this.handleChange = _this.handleChange.bind(_assertThisInitialized(_this));\n _this.doResize = _this.doResize.bind(_assertThisInitialized(_this));\n return _this;\n }\n\n var _proto = AutoResize.prototype;\n\n _proto.doResize = function doResize() {\n var _this2 = this;\n\n var resizeElement = function resizeElement(e) {\n e.style.height = 'auto';\n var height = Math.min(Math.max(_this2.getConfig('min'), e.scrollHeight), _this2.getConfig('max'));\n e.style.height = height + \"px\";\n return height;\n };\n\n this.timer = null; // 如果渲染了编辑器,就以编辑器为准\n\n var view = this.editor.getView();\n var el = this.editor.getMdElement();\n var previewer = this.editor.getHtmlElement();\n\n if (el && view.md) {\n var height = resizeElement(el);\n\n if (previewer) {\n previewer.style.height = height + \"px\";\n }\n\n return;\n } // 否则,以预览区域为准\n\n\n if (previewer && view.html) {\n resizeElement(previewer);\n }\n };\n\n _proto.handleChange = function handleChange() {\n if (this.timer !== null) {\n return;\n }\n\n if (this.useTimer) {\n this.timer = window.setTimeout(this.doResize);\n return;\n }\n\n this.timer = requestAnimationFrame(this.doResize);\n };\n\n _proto.componentDidMount = function componentDidMount() {\n this.editor.on('change', this.handleChange);\n this.editor.on('viewchange', this.handleChange);\n this.handleChange();\n };\n\n _proto.componentWillUnmount = function componentWillUnmount() {\n this.editor.off('change', this.handleChange);\n this.editor.off('viewchange', this.handleChange);\n\n if (this.timer !== null && this.useTimer) {\n window.clearTimeout(this.timer);\n this.timer = null;\n }\n };\n\n _proto.render = function render() {\n return /*#__PURE__*/React.createElement(\"span\", null);\n };\n\n return AutoResize;\n}(PluginComponent);\n\nAutoResize.pluginName = 'auto-resize';\nAutoResize.align = 'left';\nAutoResize.defaultConfig = {\n min: 200,\n max: Infinity,\n useTimer: false\n};\nexport { AutoResize as default };","import _inheritsLoose from \"@babel/runtime/helpers/inheritsLoose\";\nimport * as React from 'react';\nimport Icon from '../../components/Icon';\nimport i18n from '../../i18n';\nimport { PluginComponent } from '../Plugin';\n\nvar BlockCodeBlock = /*#__PURE__*/function (_PluginComponent) {\n _inheritsLoose(BlockCodeBlock, _PluginComponent);\n\n function BlockCodeBlock() {\n return _PluginComponent.apply(this, arguments) || this;\n }\n\n var _proto = BlockCodeBlock.prototype;\n\n _proto.render = function render() {\n var _this = this;\n\n return /*#__PURE__*/React.createElement(\"span\", {\n className: \"button button-type-code-block\",\n title: i18n.get('btnCode'),\n onClick: function onClick() {\n return _this.editor.insertMarkdown('code');\n }\n }, /*#__PURE__*/React.createElement(Icon, {\n type: \"code-block\"\n }));\n };\n\n return BlockCodeBlock;\n}(PluginComponent);\n\nBlockCodeBlock.pluginName = 'block-code-block';\nexport { BlockCodeBlock as default };","import _inheritsLoose from \"@babel/runtime/helpers/inheritsLoose\";\nimport * as React from 'react';\nimport Icon from '../../components/Icon';\nimport i18n from '../../i18n';\nimport { PluginComponent } from '../Plugin';\n\nvar BlockCodeInline = /*#__PURE__*/function (_PluginComponent) {\n _inheritsLoose(BlockCodeInline, _PluginComponent);\n\n function BlockCodeInline() {\n return _PluginComponent.apply(this, arguments) || this;\n }\n\n var _proto = BlockCodeInline.prototype;\n\n _proto.render = function render() {\n var _this = this;\n\n return /*#__PURE__*/React.createElement(\"span\", {\n className: \"button button-type-code-inline\",\n title: i18n.get('btnInlineCode'),\n onClick: function onClick() {\n return _this.editor.insertMarkdown('inlinecode');\n }\n }, /*#__PURE__*/React.createElement(Icon, {\n type: \"code\"\n }));\n };\n\n return BlockCodeInline;\n}(PluginComponent);\n\nBlockCodeInline.pluginName = 'block-code-inline';\nexport { BlockCodeInline as default };","import _inheritsLoose from \"@babel/runtime/helpers/inheritsLoose\";\nimport * as React from 'react';\nimport Icon from '../../components/Icon';\nimport i18n from '../../i18n';\nimport { PluginComponent } from '../Plugin';\n\nvar BlockQuote = /*#__PURE__*/function (_PluginComponent) {\n _inheritsLoose(BlockQuote, _PluginComponent);\n\n function BlockQuote() {\n return _PluginComponent.apply(this, arguments) || this;\n }\n\n var _proto = BlockQuote.prototype;\n\n _proto.render = function render() {\n var _this = this;\n\n return /*#__PURE__*/React.createElement(\"span\", {\n className: \"button button-type-quote\",\n title: i18n.get('btnQuote'),\n onClick: function onClick() {\n return _this.editor.insertMarkdown('quote');\n }\n }, /*#__PURE__*/React.createElement(Icon, {\n type: \"quote\"\n }));\n };\n\n return BlockQuote;\n}(PluginComponent);\n\nBlockQuote.pluginName = 'block-quote';\nexport { BlockQuote as default };","import _inheritsLoose from \"@babel/runtime/helpers/inheritsLoose\";\nimport * as React from 'react';\nimport Icon from '../../components/Icon';\nimport i18n from '../../i18n';\nimport { PluginComponent } from '../Plugin';\n\nvar BlockWrap = /*#__PURE__*/function (_PluginComponent) {\n _inheritsLoose(BlockWrap, _PluginComponent);\n\n function BlockWrap() {\n return _PluginComponent.apply(this, arguments) || this;\n }\n\n var _proto = BlockWrap.prototype;\n\n _proto.render = function render() {\n var _this = this;\n\n return /*#__PURE__*/React.createElement(\"span\", {\n className: \"button button-type-wrap\",\n title: i18n.get('btnLineBreak'),\n onClick: function onClick() {\n return _this.editor.insertMarkdown('hr');\n }\n }, /*#__PURE__*/React.createElement(Icon, {\n type: \"wrap\"\n }));\n };\n\n return BlockWrap;\n}(PluginComponent);\n\nBlockWrap.pluginName = 'block-wrap';\nexport { BlockWrap as default };","import _assertThisInitialized from \"@babel/runtime/helpers/assertThisInitialized\";\nimport _inheritsLoose from \"@babel/runtime/helpers/inheritsLoose\";\nimport * as React from 'react';\nimport Icon from '../components/Icon';\nimport i18n from '../i18n';\nimport { PluginComponent } from './Plugin';\n\nvar Clear = /*#__PURE__*/function (_PluginComponent) {\n _inheritsLoose(Clear, _PluginComponent);\n\n function Clear(props) {\n var _this;\n\n _this = _PluginComponent.call(this, props) || this;\n _this.handleClick = _this.handleClick.bind(_assertThisInitialized(_this));\n return _this;\n }\n\n var _proto = Clear.prototype;\n\n _proto.handleClick = function handleClick() {\n if (this.editor.getMdValue() === '') {\n return;\n }\n\n if (window.confirm && typeof window.confirm === 'function') {\n var result = window.confirm(i18n.get('clearTip'));\n\n if (result) {\n this.editor.setText('');\n }\n }\n };\n\n _proto.render = function render() {\n return /*#__PURE__*/React.createElement(\"span\", {\n className: \"button button-type-clear\",\n title: i18n.get('btnClear'),\n onClick: this.handleClick\n }, /*#__PURE__*/React.createElement(Icon, {\n type: \"delete\"\n }));\n };\n\n return Clear;\n}(PluginComponent);\n\nClear.pluginName = 'clear';\nexport { Clear as default };","import _inheritsLoose from \"@babel/runtime/helpers/inheritsLoose\";\nimport * as React from 'react';\nimport Icon from '../../components/Icon';\nimport i18n from '../../i18n';\nimport { PluginComponent } from '../Plugin';\n\nvar FontBold = /*#__PURE__*/function (_PluginComponent) {\n _inheritsLoose(FontBold, _PluginComponent);\n\n function FontBold(props) {\n var _this;\n\n _this = _PluginComponent.call(this, props) || this;\n _this.handleKeyboard = {\n key: 'b',\n keyCode: 66,\n aliasCommand: true,\n withKey: ['ctrlKey'],\n callback: function callback() {\n return _this.editor.insertMarkdown('bold');\n }\n };\n return _this;\n }\n\n var _proto = FontBold.prototype;\n\n _proto.componentDidMount = function componentDidMount() {\n if (this.editorConfig.shortcuts) {\n this.editor.onKeyboard(this.handleKeyboard);\n }\n };\n\n _proto.componentWillUnmount = function componentWillUnmount() {\n this.editor.offKeyboard(this.handleKeyboard);\n };\n\n _proto.render = function render() {\n var _this2 = this;\n\n return /*#__PURE__*/React.createElement(\"span\", {\n className: \"button button-type-bold\",\n title: i18n.get('btnBold'),\n onClick: function onClick() {\n return _this2.editor.insertMarkdown('bold');\n }\n }, /*#__PURE__*/React.createElement(Icon, {\n type: \"bold\"\n }));\n };\n\n return FontBold;\n}(PluginComponent);\n\nFontBold.pluginName = 'font-bold';\nexport { FontBold as default };","import _inheritsLoose from \"@babel/runtime/helpers/inheritsLoose\";\nimport * as React from 'react';\nimport Icon from '../../components/Icon';\nimport i18n from '../../i18n';\nimport { PluginComponent } from '../Plugin';\n\nvar FontItalic = /*#__PURE__*/function (_PluginComponent) {\n _inheritsLoose(FontItalic, _PluginComponent);\n\n function FontItalic(props) {\n var _this;\n\n _this = _PluginComponent.call(this, props) || this;\n _this.handleKeyboard = {\n key: 'i',\n keyCode: 73,\n aliasCommand: true,\n withKey: ['ctrlKey'],\n callback: function callback() {\n return _this.editor.insertMarkdown('italic');\n }\n };\n return _this;\n }\n\n var _proto = FontItalic.prototype;\n\n _proto.componentDidMount = function componentDidMount() {\n if (this.editorConfig.shortcuts) {\n this.editor.onKeyboard(this.handleKeyboard);\n }\n };\n\n _proto.componentWillUnmount = function componentWillUnmount() {\n this.editor.offKeyboard(this.handleKeyboard);\n };\n\n _proto.render = function render() {\n var _this2 = this;\n\n return /*#__PURE__*/React.createElement(\"span\", {\n className: \"button button-type-italic\",\n title: i18n.get('btnItalic'),\n onClick: function onClick() {\n return _this2.editor.insertMarkdown('italic');\n }\n }, /*#__PURE__*/React.createElement(Icon, {\n type: \"italic\"\n }));\n };\n\n return FontItalic;\n}(PluginComponent);\n\nFontItalic.pluginName = 'font-italic';\nexport { FontItalic as default };","import _inheritsLoose from \"@babel/runtime/helpers/inheritsLoose\";\nimport * as React from 'react';\nimport Icon from '../../components/Icon';\nimport i18n from '../../i18n';\nimport { PluginComponent } from '../Plugin';\n\nvar FontStrikethrough = /*#__PURE__*/function (_PluginComponent) {\n _inheritsLoose(FontStrikethrough, _PluginComponent);\n\n function FontStrikethrough(props) {\n var _this;\n\n _this = _PluginComponent.call(this, props) || this;\n _this.handleKeyboard = {\n key: 'd',\n keyCode: 68,\n aliasCommand: true,\n withKey: ['ctrlKey'],\n callback: function callback() {\n return _this.editor.insertMarkdown('strikethrough');\n }\n };\n return _this;\n }\n\n var _proto = FontStrikethrough.prototype;\n\n _proto.componentDidMount = function componentDidMount() {\n if (this.editorConfig.shortcuts) {\n this.editor.onKeyboard(this.handleKeyboard);\n }\n };\n\n _proto.componentWillUnmount = function componentWillUnmount() {\n this.editor.offKeyboard(this.handleKeyboard);\n };\n\n _proto.render = function render() {\n var _this2 = this;\n\n return /*#__PURE__*/React.createElement(\"span\", {\n className: \"button button-type-strikethrough\",\n title: i18n.get('btnStrikethrough'),\n onClick: function onClick() {\n return _this2.editor.insertMarkdown('strikethrough');\n }\n }, /*#__PURE__*/React.createElement(Icon, {\n type: \"strikethrough\"\n }));\n };\n\n return FontStrikethrough;\n}(PluginComponent);\n\nFontStrikethrough.pluginName = 'font-strikethrough';\nexport { FontStrikethrough as default };","import _inheritsLoose from \"@babel/runtime/helpers/inheritsLoose\";\nimport * as React from 'react';\nimport Icon from '../../components/Icon';\nimport i18n from '../../i18n';\nimport { PluginComponent } from '../Plugin';\n\nvar FontUnderline = /*#__PURE__*/function (_PluginComponent) {\n _inheritsLoose(FontUnderline, _PluginComponent);\n\n function FontUnderline(props) {\n var _this;\n\n _this = _PluginComponent.call(this, props) || this;\n _this.handleKeyboard = {\n key: 'u',\n keyCode: 85,\n withKey: ['ctrlKey'],\n callback: function callback() {\n return _this.editor.insertMarkdown('underline');\n }\n };\n return _this;\n }\n\n var _proto = FontUnderline.prototype;\n\n _proto.componentDidMount = function componentDidMount() {\n if (this.editorConfig.shortcuts) {\n this.editor.onKeyboard(this.handleKeyboard);\n }\n };\n\n _proto.componentWillUnmount = function componentWillUnmount() {\n this.editor.offKeyboard(this.handleKeyboard);\n };\n\n _proto.render = function render() {\n var _this2 = this;\n\n return /*#__PURE__*/React.createElement(\"span\", {\n className: \"button button-type-underline\",\n title: i18n.get('btnUnderline'),\n onClick: function onClick() {\n return _this2.editor.insertMarkdown('underline');\n }\n }, /*#__PURE__*/React.createElement(Icon, {\n type: \"underline\"\n }));\n };\n\n return FontUnderline;\n}(PluginComponent);\n\nFontUnderline.pluginName = 'font-underline';\nexport { FontUnderline as default };","import _assertThisInitialized from \"@babel/runtime/helpers/assertThisInitialized\";\nimport _inheritsLoose from \"@babel/runtime/helpers/inheritsLoose\";\nimport * as React from 'react';\nimport Icon from '../components/Icon';\nimport i18n from '../i18n';\nimport { PluginComponent } from './Plugin';\n\nvar FullScreen = /*#__PURE__*/function (_PluginComponent) {\n _inheritsLoose(FullScreen, _PluginComponent);\n\n function FullScreen(props) {\n var _this;\n\n _this = _PluginComponent.call(this, props) || this;\n _this.handleClick = _this.handleClick.bind(_assertThisInitialized(_this));\n _this.handleChange = _this.handleChange.bind(_assertThisInitialized(_this));\n _this.state = {\n enable: _this.editor.isFullScreen()\n };\n return _this;\n }\n\n var _proto = FullScreen.prototype;\n\n _proto.handleClick = function handleClick() {\n this.editor.fullScreen(!this.state.enable);\n };\n\n _proto.handleChange = function handleChange(enable) {\n this.setState({\n enable: enable\n });\n };\n\n _proto.componentDidMount = function componentDidMount() {\n this.editor.on('fullscreen', this.handleChange);\n };\n\n _proto.componentWillUnmount = function componentWillUnmount() {\n this.editor.off('fullscreen', this.handleChange);\n };\n\n _proto.render = function render() {\n if (this.editorConfig.canView && this.editorConfig.canView.fullScreen) {\n var enable = this.state.enable;\n return /*#__PURE__*/React.createElement(\"span\", {\n className: \"button button-type-fullscreen\",\n title: i18n.get(enable ? 'btnExitFullScreen' : 'btnFullScreen'),\n onClick: this.handleClick\n }, /*#__PURE__*/React.createElement(Icon, {\n type: enable ? 'fullscreen-exit' : 'fullscreen'\n }));\n }\n\n return null;\n };\n\n return FullScreen;\n}(PluginComponent);\n\nFullScreen.pluginName = 'full-screen';\nFullScreen.align = 'right';\nexport { FullScreen as default };","import _assertThisInitialized from \"@babel/runtime/helpers/assertThisInitialized\";\nimport _inheritsLoose from \"@babel/runtime/helpers/inheritsLoose\";\nimport * as React from 'react';\n\nvar DropList = /*#__PURE__*/function (_React$Component) {\n _inheritsLoose(DropList, _React$Component);\n\n function DropList(props) {\n var _this;\n\n _this = _React$Component.call(this, props) || this;\n _this.handleClose = _this.handleClose.bind(_assertThisInitialized(_this));\n return _this;\n }\n\n var _proto = DropList.prototype;\n\n _proto.handleClose = function handleClose(e) {\n e.stopPropagation();\n var onClose = this.props.onClose;\n\n if (typeof onClose === 'function') {\n onClose();\n }\n };\n\n _proto.render = function render() {\n return /*#__PURE__*/React.createElement(\"div\", {\n className: \"drop-wrap \" + (this.props.show ? 'show' : 'hidden'),\n onClick: this.handleClose\n }, this.props.children);\n };\n\n return DropList;\n}(React.Component);\n\nexport default DropList;","import _inheritsLoose from \"@babel/runtime/helpers/inheritsLoose\";\n// HeaderList\nimport * as React from 'react';\n\nvar HeaderList = /*#__PURE__*/function (_React$Component) {\n _inheritsLoose(HeaderList, _React$Component);\n\n function HeaderList() {\n return _React$Component.apply(this, arguments) || this;\n }\n\n var _proto = HeaderList.prototype;\n\n _proto.handleHeader = function handleHeader(header) {\n var onSelectHeader = this.props.onSelectHeader;\n\n if (typeof onSelectHeader === 'function') {\n onSelectHeader(header);\n }\n };\n\n _proto.render = function render() {\n return /*#__PURE__*/React.createElement(\"ul\", {\n className: \"header-list\"\n }, /*#__PURE__*/React.createElement(\"li\", {\n className: \"list-item\"\n }, /*#__PURE__*/React.createElement(\"h1\", {\n onClick: this.handleHeader.bind(this, 'h1')\n }, \"H1\")), /*#__PURE__*/React.createElement(\"li\", {\n className: \"list-item\"\n }, /*#__PURE__*/React.createElement(\"h2\", {\n onClick: this.handleHeader.bind(this, 'h2')\n }, \"H2\")), /*#__PURE__*/React.createElement(\"li\", {\n className: \"list-item\"\n }, /*#__PURE__*/React.createElement(\"h3\", {\n onClick: this.handleHeader.bind(this, 'h3')\n }, \"H3\")), /*#__PURE__*/React.createElement(\"li\", {\n className: \"list-item\"\n }, /*#__PURE__*/React.createElement(\"h4\", {\n onClick: this.handleHeader.bind(this, 'h4')\n }, \"H4\")), /*#__PURE__*/React.createElement(\"li\", {\n className: \"list-item\"\n }, /*#__PURE__*/React.createElement(\"h5\", {\n onClick: this.handleHeader.bind(this, 'h5')\n }, \"H5\")), /*#__PURE__*/React.createElement(\"li\", {\n className: \"list-item\"\n }, /*#__PURE__*/React.createElement(\"h6\", {\n onClick: this.handleHeader.bind(this, 'h6')\n }, \"H6\")));\n };\n\n return HeaderList;\n}(React.Component);\n\nexport default HeaderList;","import _assertThisInitialized from \"@babel/runtime/helpers/assertThisInitialized\";\nimport _inheritsLoose from \"@babel/runtime/helpers/inheritsLoose\";\nimport * as React from 'react';\nimport DropList from '../../components/DropList';\nimport Icon from '../../components/Icon';\nimport i18n from '../../i18n';\nimport { PluginComponent } from '../Plugin';\nimport HeaderList from './HeaderList';\n\nvar Header = /*#__PURE__*/function (_PluginComponent) {\n _inheritsLoose(Header, _PluginComponent);\n\n function Header(props) {\n var _this;\n\n _this = _PluginComponent.call(this, props) || this;\n _this.show = _this.show.bind(_assertThisInitialized(_this));\n _this.hide = _this.hide.bind(_assertThisInitialized(_this));\n _this.state = {\n show: false\n };\n return _this;\n }\n\n var _proto = Header.prototype;\n\n _proto.show = function show() {\n this.setState({\n show: true\n });\n };\n\n _proto.hide = function hide() {\n this.setState({\n show: false\n });\n };\n\n _proto.render = function render() {\n var _this2 = this;\n\n return /*#__PURE__*/React.createElement(\"span\", {\n className: \"button button-type-header\",\n title: i18n.get('btnHeader'),\n onMouseEnter: this.show,\n onMouseLeave: this.hide\n }, /*#__PURE__*/React.createElement(Icon, {\n type: \"font-size\"\n }), /*#__PURE__*/React.createElement(DropList, {\n show: this.state.show,\n onClose: this.hide\n }, /*#__PURE__*/React.createElement(HeaderList, {\n onSelectHeader: function onSelectHeader(header) {\n return _this2.editor.insertMarkdown(header);\n }\n })));\n };\n\n return Header;\n}(PluginComponent);\n\nHeader.pluginName = 'header';\nexport { Header as default };","import _inheritsLoose from \"@babel/runtime/helpers/inheritsLoose\";\n// TableList\nimport * as React from 'react';\n\nvar InputFile = /*#__PURE__*/function (_React$Component) {\n _inheritsLoose(InputFile, _React$Component);\n\n function InputFile(props) {\n var _this;\n\n _this = _React$Component.call(this, props) || this;\n _this.timerId = undefined;\n _this.locked = false;\n _this.input = /*#__PURE__*/React.createRef();\n return _this;\n }\n\n var _proto = InputFile.prototype;\n\n _proto.click = function click() {\n var _this2 = this;\n\n if (this.locked || !this.input.current) {\n return;\n }\n\n this.locked = true;\n this.input.current.value = '';\n this.input.current.click();\n\n if (this.timerId) {\n window.clearTimeout(this.timerId);\n }\n\n this.timerId = window.setTimeout(function () {\n _this2.locked = false;\n window.clearTimeout(_this2.timerId);\n _this2.timerId = undefined;\n }, 200);\n };\n\n _proto.componentWillUnmount = function componentWillUnmount() {\n if (this.timerId) {\n window.clearTimeout(this.timerId);\n }\n };\n\n _proto.render = function render() {\n return /*#__PURE__*/React.createElement(\"input\", {\n type: \"file\",\n ref: this.input,\n accept: this.props.accept,\n style: {\n position: 'absolute',\n zIndex: -1,\n left: 0,\n top: 0,\n width: 0,\n height: 0,\n opacity: 0\n },\n onChange: this.props.onChange\n });\n };\n\n return InputFile;\n}(React.Component);\n\nexport default InputFile;","import _assertThisInitialized from \"@babel/runtime/helpers/assertThisInitialized\";\nimport _inheritsLoose from \"@babel/runtime/helpers/inheritsLoose\";\nimport * as React from 'react';\nimport Icon from '../../components/Icon';\nimport i18n from '../../i18n';\nimport { PluginComponent } from '../Plugin';\nimport { isPromise } from '../../utils/tool';\nimport getUploadPlaceholder from '../../utils/uploadPlaceholder';\nimport InputFile from './inputFile';\n\nvar Image = /*#__PURE__*/function (_PluginComponent) {\n _inheritsLoose(Image, _PluginComponent);\n\n function Image(props) {\n var _this;\n\n _this = _PluginComponent.call(this, props) || this;\n _this.inputFile = /*#__PURE__*/React.createRef();\n _this.onImageChanged = _this.onImageChanged.bind(_assertThisInitialized(_this));\n _this.handleCustomImageUpload = _this.handleCustomImageUpload.bind(_assertThisInitialized(_this));\n _this.handleImageUpload = _this.handleImageUpload.bind(_assertThisInitialized(_this));\n _this.state = {\n show: false\n };\n return _this;\n }\n\n var _proto = Image.prototype;\n\n _proto.handleImageUpload = function handleImageUpload() {\n var onImageUpload = this.editorConfig.onImageUpload;\n\n if (typeof onImageUpload === 'function') {\n if (this.inputFile.current) {\n this.inputFile.current.click();\n }\n } else {\n this.editor.insertMarkdown('image');\n }\n };\n\n _proto.onImageChanged = function onImageChanged(file) {\n var onImageUpload = this.editorConfig.onImageUpload;\n\n if (onImageUpload) {\n var placeholder = getUploadPlaceholder(file, onImageUpload);\n this.editor.insertPlaceholder(placeholder.placeholder, placeholder.uploaded);\n }\n };\n\n _proto.handleCustomImageUpload = function handleCustomImageUpload(e) {\n var _this2 = this;\n\n var onCustomImageUpload = this.editorConfig.onCustomImageUpload;\n\n if (onCustomImageUpload) {\n var res = onCustomImageUpload.call(this, e);\n\n if (isPromise(res)) {\n res.then(function (result) {\n if (result && result.url) {\n _this2.editor.insertMarkdown('image', {\n target: result.text,\n imageUrl: result.url\n });\n }\n });\n }\n }\n };\n\n _proto.render = function render() {\n var _this3 = this;\n\n var isCustom = !!this.editorConfig.onCustomImageUpload;\n return isCustom ? /*#__PURE__*/React.createElement(\"span\", {\n className: \"button button-type-image\",\n title: i18n.get('btnImage'),\n onClick: this.handleCustomImageUpload\n }, /*#__PURE__*/React.createElement(Icon, {\n type: \"image\"\n })) : /*#__PURE__*/React.createElement(\"span\", {\n className: \"button button-type-image\",\n title: i18n.get('btnImage'),\n onClick: this.handleImageUpload,\n style: {\n position: 'relative'\n }\n }, /*#__PURE__*/React.createElement(Icon, {\n type: \"image\"\n }), /*#__PURE__*/React.createElement(InputFile, {\n accept: this.editorConfig.imageAccept || '',\n ref: this.inputFile,\n onChange: function onChange(e) {\n e.persist();\n\n if (e.target.files && e.target.files.length > 0) {\n _this3.onImageChanged(e.target.files[0]);\n }\n }\n }));\n };\n\n return Image;\n}(PluginComponent);\n\nImage.pluginName = 'image';\nexport { Image as default };","import _inheritsLoose from \"@babel/runtime/helpers/inheritsLoose\";\nimport * as React from 'react';\nimport Icon from '../components/Icon';\nimport i18n from '../i18n';\nimport { PluginComponent } from './Plugin';\n\nvar Link = /*#__PURE__*/function (_PluginComponent) {\n _inheritsLoose(Link, _PluginComponent);\n\n function Link(props) {\n var _this;\n\n _this = _PluginComponent.call(this, props) || this;\n _this.handleKeyboard = {\n key: 'k',\n keyCode: 75,\n aliasCommand: true,\n withKey: ['ctrlKey'],\n callback: function callback() {\n return _this.editor.insertMarkdown('link');\n }\n };\n return _this;\n }\n\n var _proto = Link.prototype;\n\n _proto.componentDidMount = function componentDidMount() {\n if (this.editorConfig.shortcuts) {\n this.editor.onKeyboard(this.handleKeyboard);\n }\n };\n\n _proto.componentWillUnmount = function componentWillUnmount() {\n this.editor.offKeyboard(this.handleKeyboard);\n };\n\n _proto.render = function render() {\n var _this2 = this;\n\n return /*#__PURE__*/React.createElement(\"span\", {\n className: \"button button-type-link\",\n title: i18n.get('btnLink'),\n onClick: function onClick() {\n return _this2.editor.insertMarkdown('link');\n }\n }, /*#__PURE__*/React.createElement(Icon, {\n type: \"link\"\n }));\n };\n\n return Link;\n}(PluginComponent);\n\nLink.pluginName = 'link';\nexport { Link as default };","import _inheritsLoose from \"@babel/runtime/helpers/inheritsLoose\";\nimport * as React from 'react';\nimport Icon from '../../components/Icon';\nimport i18n from '../../i18n';\nimport { PluginComponent } from '../Plugin';\n\nvar ListOrdered = /*#__PURE__*/function (_PluginComponent) {\n _inheritsLoose(ListOrdered, _PluginComponent);\n\n function ListOrdered(props) {\n var _this;\n\n _this = _PluginComponent.call(this, props) || this;\n _this.handleKeyboard = {\n key: '7',\n keyCode: 55,\n withKey: ['ctrlKey', 'shiftKey'],\n aliasCommand: true,\n callback: function callback() {\n return _this.editor.insertMarkdown('order');\n }\n };\n return _this;\n }\n\n var _proto = ListOrdered.prototype;\n\n _proto.componentDidMount = function componentDidMount() {\n if (this.editorConfig.shortcuts) {\n this.editor.onKeyboard(this.handleKeyboard);\n }\n };\n\n _proto.componentWillUnmount = function componentWillUnmount() {\n this.editor.offKeyboard(this.handleKeyboard);\n };\n\n _proto.render = function render() {\n var _this2 = this;\n\n return /*#__PURE__*/React.createElement(\"span\", {\n className: \"button button-type-ordered\",\n title: i18n.get('btnOrdered'),\n onClick: function onClick() {\n return _this2.editor.insertMarkdown('order');\n }\n }, /*#__PURE__*/React.createElement(Icon, {\n type: \"list-ordered\"\n }));\n };\n\n return ListOrdered;\n}(PluginComponent);\n\nListOrdered.pluginName = 'list-ordered';\nexport { ListOrdered as default };","import _inheritsLoose from \"@babel/runtime/helpers/inheritsLoose\";\nimport * as React from 'react';\nimport Icon from '../../components/Icon';\nimport i18n from '../../i18n';\nimport { PluginComponent } from '../Plugin';\n\nvar ListUnordered = /*#__PURE__*/function (_PluginComponent) {\n _inheritsLoose(ListUnordered, _PluginComponent);\n\n function ListUnordered(props) {\n var _this;\n\n _this = _PluginComponent.call(this, props) || this;\n _this.handleKeyboard = {\n key: '8',\n keyCode: 56,\n withKey: ['ctrlKey', 'shiftKey'],\n aliasCommand: true,\n callback: function callback() {\n return _this.editor.insertMarkdown('unordered');\n }\n };\n return _this;\n }\n\n var _proto = ListUnordered.prototype;\n\n _proto.componentDidMount = function componentDidMount() {\n if (this.editorConfig.shortcuts) {\n this.editor.onKeyboard(this.handleKeyboard);\n }\n };\n\n _proto.componentWillUnmount = function componentWillUnmount() {\n this.editor.offKeyboard(this.handleKeyboard);\n };\n\n _proto.render = function render() {\n var _this2 = this;\n\n return /*#__PURE__*/React.createElement(\"span\", {\n className: \"button button-type-unordered\",\n title: i18n.get('btnUnordered'),\n onClick: function onClick() {\n return _this2.editor.insertMarkdown('unordered');\n }\n }, /*#__PURE__*/React.createElement(Icon, {\n type: \"list-unordered\"\n }));\n };\n\n return ListUnordered;\n}(PluginComponent);\n\nListUnordered.pluginName = 'list-unordered';\nexport { ListUnordered as default };","/**\n * logger: undo redo\n */\nvar MAX_LOG_SIZE = 100;\n\nvar Logger = /*#__PURE__*/function () {\n function Logger() {\n this.record = [];\n this.recycle = [];\n this.initValue = '';\n }\n\n var _proto = Logger.prototype;\n\n _proto.push = function push(val) {\n var result = this.record.push(val); // 如果超过了最长限制,把之前的清理掉,避免造成内存浪费\n\n while (this.record.length > MAX_LOG_SIZE) {\n this.record.shift();\n }\n\n return result;\n };\n\n _proto.get = function get() {\n return this.record;\n };\n\n _proto.getLast = function getLast() {\n var length = this.record.length;\n return this.record[length - 1];\n };\n\n _proto.undo = function undo(skipText) {\n var current = this.record.pop();\n\n if (typeof current === 'undefined') {\n return this.initValue;\n } // 如果最上面的和现在的不一样,那就不需要再pop一次\n\n\n if (current !== skipText) {\n this.recycle.push(current);\n return current;\n } // 否则的话,最顶上的一个是当前状态,所以要pop两次才能得到之前的结果\n\n\n var last = this.record.pop();\n\n if (typeof last === 'undefined') {\n // 已经没有更老的记录了,把初始值给出去吧\n this.recycle.push(current);\n return this.initValue;\n } // last 才是真正的上一步\n\n\n this.recycle.push(current);\n return last;\n };\n\n _proto.redo = function redo() {\n var history = this.recycle.pop();\n\n if (typeof history !== 'undefined') {\n this.push(history);\n return history;\n }\n\n return undefined;\n };\n\n _proto.cleanRedo = function cleanRedo() {\n this.recycle = [];\n };\n\n _proto.getUndoCount = function getUndoCount() {\n return this.undo.length;\n };\n\n _proto.getRedoCount = function getRedoCount() {\n return this.recycle.length;\n };\n\n return Logger;\n}();\n\nexport default Logger;","import _createClass from \"@babel/runtime/helpers/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/assertThisInitialized\";\nimport _inheritsLoose from \"@babel/runtime/helpers/inheritsLoose\";\nimport * as React from 'react';\nimport Icon from '../components/Icon';\nimport i18n from '../i18n';\nimport { PluginComponent } from './Plugin';\nvar NEXT_ACTION;\n\n(function (NEXT_ACTION) {\n NEXT_ACTION[NEXT_ACTION[\"SHOW_ALL\"] = 0] = \"SHOW_ALL\";\n NEXT_ACTION[NEXT_ACTION[\"SHOW_MD\"] = 1] = \"SHOW_MD\";\n NEXT_ACTION[NEXT_ACTION[\"SHOW_HTML\"] = 2] = \"SHOW_HTML\";\n})(NEXT_ACTION || (NEXT_ACTION = {}));\n\nvar ModeToggle = /*#__PURE__*/function (_PluginComponent) {\n _inheritsLoose(ModeToggle, _PluginComponent);\n\n function ModeToggle(props) {\n var _this;\n\n _this = _PluginComponent.call(this, props) || this;\n _this.handleClick = _this.handleClick.bind(_assertThisInitialized(_this));\n _this.handleChange = _this.handleChange.bind(_assertThisInitialized(_this));\n _this.state = {\n view: _this.editor.getView()\n };\n return _this;\n }\n\n var _proto = ModeToggle.prototype;\n\n _proto.handleClick = function handleClick() {\n switch (this.next) {\n case NEXT_ACTION.SHOW_ALL:\n this.editor.setView({\n html: true,\n md: true\n });\n break;\n\n case NEXT_ACTION.SHOW_HTML:\n this.editor.setView({\n html: true,\n md: false\n });\n break;\n\n case NEXT_ACTION.SHOW_MD:\n this.editor.setView({\n html: false,\n md: true\n });\n break;\n }\n };\n\n _proto.handleChange = function handleChange(view) {\n this.setState({\n view: view\n });\n };\n\n _proto.componentDidMount = function componentDidMount() {\n this.editor.on('viewchange', this.handleChange);\n };\n\n _proto.componentWillUnmount = function componentWillUnmount() {\n this.editor.off('viewchange', this.handleChange);\n };\n\n _proto.getDisplayInfo = function getDisplayInfo() {\n var next = this.next;\n\n switch (next) {\n case NEXT_ACTION.SHOW_ALL:\n return {\n icon: 'view-split',\n title: 'All'\n };\n\n case NEXT_ACTION.SHOW_HTML:\n return {\n icon: 'visibility',\n title: 'Preview'\n };\n\n default:\n return {\n icon: 'keyboard',\n title: 'Editor'\n };\n }\n };\n\n _proto.render = function render() {\n if (this.isDisplay) {\n var display = this.getDisplayInfo();\n return /*#__PURE__*/React.createElement(\"span\", {\n className: \"button button-type-mode\",\n title: i18n.get(\"btnMode\" + display.title),\n onClick: this.handleClick\n }, /*#__PURE__*/React.createElement(Icon, {\n type: display.icon\n }));\n }\n\n return null;\n };\n\n _createClass(ModeToggle, [{\n key: \"isDisplay\",\n get: function get() {\n var canView = this.editorConfig.canView;\n\n if (canView) {\n // 至少有两种情况可以显示的时候,才会显示切换按钮\n return [canView.html, canView.md, canView.both].filter(function (it) {\n return it;\n }).length >= 2;\n }\n\n return false;\n }\n /**\n * 显示标准:\n * 两个都显示的时候,点击显示MD,隐藏HTML\n * 只显示HTML的时候,点击全部显示\n * 只显示MD的时候,点击显示HTML,隐藏MD\n * 如果当前标准因canView不可用,则顺延至下一个\n * 如果都不可用,则返回当前状态\n */\n\n }, {\n key: \"next\",\n get: function get() {\n var canView = this.editorConfig.canView;\n var view = this.state.view;\n var actions = [NEXT_ACTION.SHOW_ALL, NEXT_ACTION.SHOW_MD, NEXT_ACTION.SHOW_HTML];\n\n if (canView) {\n if (!canView.both) {\n actions.splice(actions.indexOf(NEXT_ACTION.SHOW_ALL), 1);\n }\n\n if (!canView.md) {\n actions.splice(actions.indexOf(NEXT_ACTION.SHOW_MD), 1);\n }\n\n if (!canView.html) {\n actions.splice(actions.indexOf(NEXT_ACTION.SHOW_HTML), 1);\n }\n }\n\n var current = NEXT_ACTION.SHOW_MD;\n\n if (view.html) {\n current = NEXT_ACTION.SHOW_HTML;\n }\n\n if (view.html && view.md) {\n current = NEXT_ACTION.SHOW_ALL;\n }\n\n if (actions.length === 0) return current;\n if (actions.length === 1) return actions[0];\n var index = actions.indexOf(current);\n return index < actions.length - 1 ? actions[index + 1] : actions[0];\n }\n }]);\n\n return ModeToggle;\n}(PluginComponent);\n\nModeToggle.pluginName = 'mode-toggle';\nModeToggle.align = 'right';\nexport default ModeToggle;","import _assertThisInitialized from \"@babel/runtime/helpers/assertThisInitialized\";\nimport _inheritsLoose from \"@babel/runtime/helpers/inheritsLoose\";\nimport * as React from 'react';\nimport Icon from '../../components/Icon';\nimport i18n from '../../i18n';\nimport { PluginComponent } from '../Plugin';\nimport LoggerPlugin from './logger';\nvar LOGGER_INTERVAL = 600;\n\nvar Logger = /*#__PURE__*/function (_PluginComponent) {\n _inheritsLoose(Logger, _PluginComponent);\n\n function Logger(props) {\n var _this;\n\n _this = _PluginComponent.call(this, props) || this;\n _this.handleKeyboards = [];\n _this.lastPop = null;\n _this.handleChange = _this.handleChange.bind(_assertThisInitialized(_this));\n _this.handleRedo = _this.handleRedo.bind(_assertThisInitialized(_this));\n _this.handleUndo = _this.handleUndo.bind(_assertThisInitialized(_this)); // Mac的Redo比较特殊,是Command+Shift+Z,优先处理\n\n _this.handleKeyboards = [{\n key: 'y',\n keyCode: 89,\n withKey: ['ctrlKey'],\n callback: _this.handleRedo\n }, {\n key: 'z',\n keyCode: 90,\n withKey: ['metaKey', 'shiftKey'],\n callback: _this.handleRedo\n }, {\n key: 'z',\n keyCode: 90,\n aliasCommand: true,\n withKey: ['ctrlKey'],\n callback: _this.handleUndo\n }];\n _this.logger = new LoggerPlugin();\n return _this;\n }\n\n var _proto = Logger.prototype;\n\n _proto.handleUndo = function handleUndo() {\n var last = this.logger.undo(this.editor.getMdValue());\n\n if (typeof last !== 'undefined') {\n this.pause();\n this.lastPop = last;\n this.editor.setText(last);\n this.forceUpdate();\n }\n };\n\n _proto.handleRedo = function handleRedo() {\n var last = this.logger.redo();\n\n if (typeof last !== 'undefined') {\n this.lastPop = last;\n this.editor.setText(last);\n this.forceUpdate();\n }\n };\n\n _proto.handleChange = function handleChange(value, e, isChange) {\n var _this2 = this;\n\n if (this.logger.getLast() === value || this.lastPop !== null && this.lastPop === value) {\n return;\n }\n\n this.logger.cleanRedo();\n\n if (isChange) {\n this.logger.push(value);\n this.lastPop = null;\n this.forceUpdate();\n return;\n }\n\n if (this.timerId) {\n window.clearTimeout(this.timerId);\n this.timerId = 0;\n }\n\n this.timerId = window.setTimeout(function () {\n if (_this2.logger.getLast() !== value) {\n _this2.logger.push(value);\n\n _this2.lastPop = null;\n\n _this2.forceUpdate();\n }\n\n window.clearTimeout(_this2.timerId);\n _this2.timerId = 0;\n }, LOGGER_INTERVAL);\n };\n\n _proto.componentDidMount = function componentDidMount() {\n var _this3 = this;\n\n // 监听变化事件\n this.editor.on('change', this.handleChange); // 监听键盘事件\n\n this.handleKeyboards.forEach(function (it) {\n return _this3.editor.onKeyboard(it);\n }); // 初始化时,把已有值填充进logger\n\n this.logger.initValue = this.editor.getMdValue();\n this.forceUpdate();\n };\n\n _proto.componentWillUnmount = function componentWillUnmount() {\n var _this4 = this;\n\n if (this.timerId) {\n window.clearTimeout(this.timerId);\n }\n\n this.editor.off('change', this.handleChange);\n this.handleKeyboards.forEach(function (it) {\n return _this4.editor.offKeyboard(it);\n });\n };\n\n _proto.pause = function pause() {\n if (this.timerId) {\n window.clearTimeout(this.timerId);\n this.timerId = undefined;\n }\n };\n\n _proto.render = function render() {\n var hasUndo = this.logger.getUndoCount() > 1 || this.logger.initValue !== this.editor.getMdValue();\n var hasRedo = this.logger.getRedoCount() > 0;\n return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(\"span\", {\n className: \"button button-type-undo \" + (hasUndo ? '' : 'disabled'),\n title: i18n.get('btnUndo'),\n onClick: this.handleUndo\n }, /*#__PURE__*/React.createElement(Icon, {\n type: \"undo\"\n })), /*#__PURE__*/React.createElement(\"span\", {\n className: \"button button-type-redo \" + (hasRedo ? '' : 'disabled'),\n title: i18n.get('btnRedo'),\n onClick: this.handleRedo\n }, /*#__PURE__*/React.createElement(Icon, {\n type: \"redo\"\n })));\n };\n\n return Logger;\n}(PluginComponent);\n\nLogger.pluginName = 'logger';\nexport { Logger as default };","import _inheritsLoose from \"@babel/runtime/helpers/inheritsLoose\";\nimport * as React from 'react';\n\nvar TableList = /*#__PURE__*/function (_React$Component) {\n _inheritsLoose(TableList, _React$Component);\n\n function TableList(props) {\n var _this;\n\n _this = _React$Component.call(this, props) || this;\n _this.config = {\n padding: 3,\n width: 20,\n height: 20\n };\n var _props$maxRow = props.maxRow,\n maxRow = _props$maxRow === void 0 ? 5 : _props$maxRow,\n _props$maxCol = props.maxCol,\n maxCol = _props$maxCol === void 0 ? 6 : _props$maxCol;\n _this.state = {\n maxRow: maxRow,\n maxCol: maxCol,\n list: _this.formatTableModel(maxRow, maxCol)\n };\n return _this;\n }\n\n var _proto = TableList.prototype;\n\n _proto.formatTableModel = function formatTableModel(maxRow, maxCol) {\n if (maxRow === void 0) {\n maxRow = 0;\n }\n\n if (maxCol === void 0) {\n maxCol = 0;\n }\n\n var result = new Array(maxRow).fill(undefined);\n return result.map(function (_) {\n return new Array(maxCol).fill(0);\n });\n };\n\n _proto.calcWrapStyle = function calcWrapStyle() {\n var _this$state = this.state,\n maxRow = _this$state.maxRow,\n maxCol = _this$state.maxCol;\n var _this$config = this.config,\n width = _this$config.width,\n height = _this$config.height,\n padding = _this$config.padding;\n var wrapWidth = (width + padding) * maxCol - padding;\n var wrapHeight = (height + padding) * maxRow - padding;\n return {\n width: wrapWidth + \"px\",\n height: wrapHeight + \"px\"\n };\n };\n\n _proto.calcItemStyle = function calcItemStyle(row, col) {\n if (row === void 0) {\n row = 0;\n }\n\n if (col === void 0) {\n col = 0;\n }\n\n var _this$config2 = this.config,\n width = _this$config2.width,\n height = _this$config2.height,\n padding = _this$config2.padding;\n var top = (height + padding) * row;\n var left = (width + padding) * col;\n return {\n top: top + \"px\",\n left: left + \"px\"\n };\n };\n\n _proto.getList = function getList(i, j) {\n var list = this.state.list;\n return list.map(function (v, row) {\n return v.map(function (_, col) {\n return row <= i && col <= j ? 1 : 0;\n });\n });\n };\n\n _proto.handleHover = function handleHover(i, j) {\n this.setState({\n list: this.getList(i, j)\n });\n };\n\n _proto.handleSetTable = function handleSetTable(i, j) {\n var onSetTable = this.props.onSetTable;\n\n if (typeof onSetTable === 'function') {\n onSetTable({\n row: i + 1,\n col: j + 1\n });\n }\n };\n\n _proto.componentDidUpdate = function componentDidUpdate(prevProps) {\n if (this.props.visibility === false && prevProps.visibility !== this.props.visibility) {\n this.setState({\n list: this.getList(-1, -1)\n });\n }\n };\n\n _proto.render = function render() {\n var _this2 = this;\n\n return /*#__PURE__*/React.createElement(\"ul\", {\n className: \"table-list wrap\",\n style: this.calcWrapStyle()\n }, this.state.list.map(function (row, i) {\n return row.map(function (col, j) {\n return /*#__PURE__*/React.createElement(\"li\", {\n className: \"list-item \" + (col === 1 ? 'active' : ''),\n key: i + \"-\" + j,\n style: _this2.calcItemStyle(i, j),\n onMouseOver: _this2.handleHover.bind(_this2, i, j),\n onClick: _this2.handleSetTable.bind(_this2, i, j)\n });\n });\n }));\n };\n\n return TableList;\n}(React.Component);\n\nexport default TableList;","import _assertThisInitialized from \"@babel/runtime/helpers/assertThisInitialized\";\nimport _inheritsLoose from \"@babel/runtime/helpers/inheritsLoose\";\nimport * as React from 'react';\nimport DropList from '../../components/DropList';\nimport Icon from '../../components/Icon';\nimport i18n from '../../i18n';\nimport { PluginComponent } from '../Plugin';\nimport TableList from './table';\n\nvar Table = /*#__PURE__*/function (_PluginComponent) {\n _inheritsLoose(Table, _PluginComponent);\n\n function Table(props) {\n var _this;\n\n _this = _PluginComponent.call(this, props) || this;\n _this.show = _this.show.bind(_assertThisInitialized(_this));\n _this.hide = _this.hide.bind(_assertThisInitialized(_this));\n _this.state = {\n show: false\n };\n return _this;\n }\n\n var _proto = Table.prototype;\n\n _proto.show = function show() {\n this.setState({\n show: true\n });\n };\n\n _proto.hide = function hide() {\n this.setState({\n show: false\n });\n };\n\n _proto.render = function render() {\n var _this2 = this;\n\n var config = this.editorConfig.table || this.props.config;\n return /*#__PURE__*/React.createElement(\"span\", {\n className: \"button button-type-table\",\n title: i18n.get('btnTable'),\n onMouseEnter: this.show,\n onMouseLeave: this.hide\n }, /*#__PURE__*/React.createElement(Icon, {\n type: \"grid\"\n }), /*#__PURE__*/React.createElement(DropList, {\n show: this.state.show,\n onClose: this.hide\n }, /*#__PURE__*/React.createElement(TableList, {\n visibility: this.state.show,\n maxRow: config.maxRow,\n maxCol: config.maxCol,\n onSetTable: function onSetTable(option) {\n return _this2.editor.insertMarkdown('table', option);\n }\n })));\n };\n\n return Table;\n}(PluginComponent);\n\nTable.pluginName = 'table';\nTable.defaultConfig = {\n maxRow: 6,\n maxCol: 6\n};\nexport { Table as default };","import _inheritsLoose from \"@babel/runtime/helpers/inheritsLoose\";\nimport classNames from 'classnames';\nimport * as React from 'react';\nimport i18n from '../../i18n';\n\nvar TabMapList = /*#__PURE__*/function (_React$Component) {\n _inheritsLoose(TabMapList, _React$Component);\n\n function TabMapList() {\n return _React$Component.apply(this, arguments) || this;\n }\n\n var _proto = TabMapList.prototype;\n\n _proto.handleSelectMapValue = function handleSelectMapValue(mapValue) {\n var onSelectMapValue = this.props.onSelectMapValue;\n\n if (typeof onSelectMapValue === 'function') {\n onSelectMapValue(mapValue);\n }\n };\n\n _proto.render = function render() {\n var _this = this;\n\n var value = this.props.value;\n return /*#__PURE__*/React.createElement(\"ul\", {\n className: \"tab-map-list\"\n }, [1, 2, 4, 8].map(function (it) {\n return /*#__PURE__*/React.createElement(\"li\", {\n key: it,\n className: classNames('list-item', {\n active: value === it\n })\n }, /*#__PURE__*/React.createElement(\"div\", {\n onClick: _this.handleSelectMapValue.bind(_this, it)\n }, it === 1 ? i18n.get('tab') : it + \" \" + i18n.get('spaces')));\n }));\n };\n\n return TabMapList;\n}(React.Component);\n\nexport default TabMapList;","import _assertThisInitialized from \"@babel/runtime/helpers/assertThisInitialized\";\nimport _inheritsLoose from \"@babel/runtime/helpers/inheritsLoose\";\n\n/**\n * Since the Markdown Editor will lose input focus when user tpye a Tab key,\n * this is a built-in plugin to enable user to input Tab character.\n * see src/demo/index.tsx.\n */\nimport * as React from 'react';\nimport { PluginComponent } from '../Plugin';\nimport DropList from '../../components/DropList';\nimport i18n from '../../i18n';\nimport TabMapList from './TabMapList';\nimport Icon from '../../components/Icon';\n/**\n * @field tabMapValue: Number of spaces will be inputted. Especially, note that 1 means a '\\t' instead of ' '.\n * @field show: Whether to show TabMapList.\n */\n\nvar TabInsert = /*#__PURE__*/function (_PluginComponent) {\n _inheritsLoose(TabInsert, _PluginComponent);\n\n function TabInsert(props) {\n var _this;\n\n _this = _PluginComponent.call(this, props) || this;\n _this.show = _this.show.bind(_assertThisInitialized(_this));\n _this.hide = _this.hide.bind(_assertThisInitialized(_this));\n _this.handleChangeMapValue = _this.handleChangeMapValue.bind(_assertThisInitialized(_this));\n _this.state = {\n tabMapValue: _this.getConfig('tabMapValue'),\n show: false\n };\n _this.handleKeyboard = {\n key: 'Tab',\n keyCode: 9,\n aliasCommand: true,\n withKey: [],\n callback: function callback() {\n return _this.editor.insertMarkdown('tab', {\n tabMapValue: _this.state.tabMapValue\n });\n }\n };\n return _this;\n }\n\n var _proto = TabInsert.prototype;\n\n _proto.show = function show() {\n this.setState({\n show: true\n });\n };\n\n _proto.hide = function hide() {\n this.setState({\n show: false\n });\n };\n\n _proto.handleChangeMapValue = function handleChangeMapValue(mapValue) {\n this.setState({\n tabMapValue: mapValue\n });\n };\n\n _proto.componentDidMount = function componentDidMount() {\n if (this.editorConfig.shortcuts) {\n this.editor.onKeyboard(this.handleKeyboard);\n }\n };\n\n _proto.componentWillUnmount = function componentWillUnmount() {\n this.editor.offKeyboard(this.handleKeyboard);\n };\n\n _proto.render = function render() {\n return /*#__PURE__*/React.createElement(\"span\", {\n className: \"button button-type-header\",\n title: i18n.get('selectTabMap'),\n onClick: this.show,\n onMouseLeave: this.hide\n }, /*#__PURE__*/React.createElement(Icon, {\n type: \"tab\"\n }), /*#__PURE__*/React.createElement(DropList, {\n show: this.state.show,\n onClose: this.hide\n }, /*#__PURE__*/React.createElement(TabMapList, {\n value: this.state.tabMapValue,\n onSelectMapValue: this.handleChangeMapValue\n })));\n };\n\n return TabInsert;\n}(PluginComponent);\n\nTabInsert.pluginName = 'tab-insert';\nTabInsert.defaultConfig = {\n tabMapValue: 1\n};\nexport { TabInsert as default };","import Editor from './editor';\nimport AutoResize from './plugins/autoResize';\nimport BlockCodeBlock from './plugins/block/code-block';\nimport BlockCodeInline from './plugins/block/code-inline';\nimport BlockQuote from './plugins/block/quote';\nimport BlockWrap from './plugins/block/wrap';\nimport Clear from './plugins/clear';\nimport FontBold from './plugins/font/bold';\nimport FontItalic from './plugins/font/italic';\nimport FontStrikethrough from './plugins/font/strikethrough';\nimport FontUnderline from './plugins/font/underline';\nimport FullScreen from './plugins/fullScreen';\nimport Header from './plugins/header';\nimport Image from './plugins/Image';\nimport Link from './plugins/link';\nimport ListOrdered from './plugins/list/ordered';\nimport ListUnordered from './plugins/list/unordered';\nimport Logger from './plugins/logger';\nimport ModeToggle from './plugins/modeToggle';\nimport Table from './plugins/table';\nimport TabInsert from './plugins/tabInsert';\nimport { PluginComponent } from './plugins/Plugin';\nimport DropList from './components/DropList/index'; // 注册默认插件\n\nEditor.use(Header);\nEditor.use(FontBold);\nEditor.use(FontItalic);\nEditor.use(FontUnderline);\nEditor.use(FontStrikethrough);\nEditor.use(ListUnordered);\nEditor.use(ListOrdered);\nEditor.use(BlockQuote);\nEditor.use(BlockWrap);\nEditor.use(BlockCodeInline);\nEditor.use(BlockCodeBlock);\nEditor.use(Table);\nEditor.use(Image);\nEditor.use(Link);\nEditor.use(Clear);\nEditor.use(Logger);\nEditor.use(ModeToggle);\nEditor.use(FullScreen); // 导出声明\n// 导出工具组件\n\nexport { DropList };\nexport { PluginComponent };\n// 导出实用工具\nexport { default as getDecorated } from './utils/decorate'; // 导出内置插件\n\nexport var Plugins = {\n Header: Header,\n FontBold: FontBold,\n FontItalic: FontItalic,\n FontUnderline: FontUnderline,\n FontStrikethrough: FontStrikethrough,\n ListUnordered: ListUnordered,\n ListOrdered: ListOrdered,\n BlockQuote: BlockQuote,\n BlockWrap: BlockWrap,\n BlockCodeInline: BlockCodeInline,\n BlockCodeBlock: BlockCodeBlock,\n Table: Table,\n Image: Image,\n Link: Link,\n Clear: Clear,\n Logger: Logger,\n ModeToggle: ModeToggle,\n FullScreen: FullScreen,\n AutoResize: AutoResize,\n TabInsert: TabInsert\n}; // 导出编辑器\n\nexport default Editor;","import { Property } from \"csstype\"\nimport { ChangeEvent, useEffect, useState } from \"react\"\nimport { useTranslation } from \"react-i18next\"\nimport Button, { ButtonTheme } from \"src/components/button/button\"\nimport Input from \"src/components/input/input\"\n\ninterface MediaUploadProps {\n\ttitle: string\n\tonChange: (file: File) => void\n\taccept: string\n\texistingData: any\n\tmarginBottom?: Property.MarginBottom\n\tborderColor?: Property.BorderColor\n\tonDelete?: () => void\n}\n\nenum DataType {\n\timage = 0,\n\tvideo = 1,\n\tstring = 2,\n}\n\nconst MediaUpload = ({\n\ttitle,\n\tonChange,\n\taccept,\n\texistingData,\n\tmarginBottom,\n\tborderColor,\n\tonDelete,\n}: MediaUploadProps) => {\n\tconst [file, setFile] = useState(undefined)\n\tconst [source, setSource] = useState(undefined)\n\tconst [dataType, setDataType] = useState(undefined)\n\tconst { t } = useTranslation()\n\n\tuseEffect(() => {\n\t\tlet source\n\t\tlet dataType\n\t\tif (file) {\n\t\t\tif (file[\"type\"].split(\"/\")[0] === \"image\") {\n\t\t\t\tdataType = 0\n\t\t\t\tsource = URL.createObjectURL(file)\n\t\t\t} else if (file[\"type\"].split(\"/\")[0] === \"video\") {\n\t\t\t\tdataType = 1\n\t\t\t\tsource = URL.createObjectURL(file)\n\t\t\t} else if (file.name) {\n\t\t\t\tdataType = 2\n\t\t\t\tsource = file.name\n\t\t\t}\n\t\t\t// TODO: else case\n\t\t} else if (existingData) {\n\t\t\tsource = existingData.url\n\t\t\tif (existingData.type === \"video\") {\n\t\t\t\tdataType = 1\n\t\t\t} else if (existingData.type === \"image\") {\n\t\t\t\tdataType = 0\n\t\t\t} else if (existingData.type === \"string\") {\n\t\t\t\tdataType = 2\n\t\t\t\tsource = existingData.data\n\t\t\t} else {\n\t\t\t\tdataType = 0\n\t\t\t\tsource = existingData\n\t\t\t}\n\t\t}\n\n\t\tsetSource(source)\n\t\tsetDataType(dataType)\n\t}, [file, existingData])\n\n\tlet preview\n\tlet changeText\n\tif (source) {\n\t\tswitch (dataType) {\n\t\t\tcase 0:\n\t\t\t\tpreview = (\n\t\t\t\t\t\n\t\t\t\t)\n\t\t\t\tchangeText = \"Bild\"\n\t\t\t\tbreak\n\t\t\tcase 1:\n\t\t\t\tpreview = (\n\t\t\t\t\t\n\t\t\t\t)\n\t\t\t\tchangeText = \"Video\"\n\t\t\t\tbreak\n\t\t\tcase 2:\n\t\t\t\tpreview =

{source}

\n\t\t\t\tchangeText = \"Volumen\"\n\t\t\t\tbreak\n\t\t\tdefault:\n\t\t\t\tbreak\n\t\t}\n\t}\n\n\treturn (\n\t\t<>\n\t\t\t{preview}\n\n\t\t\t\n\t\t\t\t

{title}

\n\t\t\t\t\n\t\t\t\t\t) => {\n\t\t\t\t\t\t\tconst { files } = e.target\n\t\t\t\t\t\t\tif (files && files.length > 0) {\n\t\t\t\t\t\t\t\tconst file = files[0]\n\n\t\t\t\t\t\t\t\tsetFile(file)\n\t\t\t\t\t\t\t\tonChange(file)\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}}\n\t\t\t\t\t/>\n\t\t\t\t\t{changeText && (\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t

Um das {changeText} zu ändern

\n\t\t\t\t\t\t
\n\t\t\t\t\t)}\n\t\t\t\t
\n\t\t\t\t{onDelete && existingData && (\n\t\t\t\t\t\n\t\t\t\t\t\t{t(\"delete\")}\n\t\t\t\t\t\n\t\t\t\t)}\n\t\t\t
\n\t\t\n\t)\n}\n\nexport default MediaUpload\n","import MarkdownIt from \"markdown-it\"\nimport MdEditor from \"react-markdown-editor-lite\"\n\nconst Editor = ({\n\tmarkdown,\n\tonChange,\n\tonImageUpload,\n}: {\n\tmarkdown: string\n\tonChange: (markdown: string, html: string) => void\n\tonImageUpload?: (file: File) => Promise\n}) => {\n\tconst mdParser = new MarkdownIt()\n\n\treturn (\n\t\t mdParser.render(t)}\n\t\t\tvalue={markdown}\n\t\t\tonChange={({ text, html }) => {\n\t\t\t\tonChange(text, html)\n\t\t\t}}\n\t\t\tonImageUpload={onImageUpload}\n\t\t/>\n\t)\n}\n\nexport default Editor\n","import { useEffect, useState } from \"react\"\nimport { useTranslation } from \"react-i18next\"\nimport \"react-markdown-editor-lite/lib/index.css\"\nimport Button, { ButtonTheme } from \"src/components/button/button\"\nimport Editor from \"src/components/editor/editor\"\nimport useSWR, { mutate } from \"swr\"\nimport DashboardBody from \"../../../components/dashboardBody/dashboardBody\"\nimport DashboardHeader from \"../../../components/dashboardHeader/dashboardHeader\"\nimport { LogoVisibility } from \"../../../components/logos/logos\"\nimport { HasAuth } from \"../../../components/privateRoute/privateRoute\"\nimport SegmentedControl from \"../../../components/segmentedControl/segmentedControl\"\nimport { fetchApiAuthorized } from \"../../../network/fetch\"\nimport { useErrorStore } from \"../../../state/stores/errorStore\"\n\nconst Config = ({ auth }: HasAuth) => {\n\tconst { t } = useTranslation()\n\n\tconst restartServerConfirmation = useErrorStore(\n\t\t(state) => state.restartServerConfirmation\n\t)\n\n\tconst [md, setMarkdown] = useState(\"\")\n\tconst [html, setHtml] = useState(\"\")\n\tconst [previousMd, setPreviousMarkdown] = useState(\"\")\n\n\tconst [logoVisibility, setLogoVisibility] = useState(LogoVisibility.Takeda)\n\tconst [previousLogoVisibility, setPreviousLogoVisibility] = useState(\n\t\tLogoVisibility.Takeda\n\t)\n\n\tconst { data } = useSWR(\n\t\t[\"/config/admin\", auth.token, auth.expiresIn],\n\t\tfetchApiAuthorized\n\t)\n\n\tuseEffect(() => {\n\t\tif (data) {\n\t\t\tsetMarkdown(data.md)\n\t\t\tsetPreviousMarkdown(data.md)\n\n\t\t\tsetHtml(data.html)\n\t\t\tsetLogoVisibility(data.logoVisibility)\n\t\t\tsetPreviousLogoVisibility(data.logoVisibility)\n\t\t}\n\t}, [data])\n\n\treturn (\n\t\t\n\t\t\t {\n\t\t\t\t\tconst success = await fetchApiAuthorized(\n\t\t\t\t\t\t\"/config/\",\n\t\t\t\t\t\tauth.token,\n\t\t\t\t\t\tauth.expiresIn,\n\t\t\t\t\t\t{ md, html, logoVisibility },\n\t\t\t\t\t\t\"PUT\"\n\t\t\t\t\t)\n\n\t\t\t\t\tif (success) {\n\t\t\t\t\t\tsetPreviousMarkdown(md)\n\t\t\t\t\t\tsetPreviousLogoVisibility(logoVisibility)\n\n\t\t\t\t\t\tmutate(\"/config/\")\n\t\t\t\t\t}\n\t\t\t\t}}\n\t\t\t\tbuttonTitle={t(\"save\")}\n\t\t\t\ttitle={t(\"config\") as string}\n\t\t\t/>\n\n\t\t\t
\n\t\t\t\t {\n\t\t\t\t\t\tsetMarkdown(markdown)\n\t\t\t\t\t\tsetHtml(html)\n\t\t\t\t\t}}\n\t\t\t\t/>\n\n\t\t\t\t
\n\t\t\t\t\t

{t(\"restart_server\")}:

\n\n\t\t\t\t\t\n\t\t\t\t\t\t\trestartServerConfirmation(async () => {\n\t\t\t\t\t\t\t\tawait fetchApiAuthorized(\n\t\t\t\t\t\t\t\t\t`/config/restart`,\n\t\t\t\t\t\t\t\t\tauth.token,\n\t\t\t\t\t\t\t\t\tauth.expiresIn,\n\t\t\t\t\t\t\t\t\tundefined,\n\t\t\t\t\t\t\t\t\t\"POST\"\n\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t})\n\t\t\t\t\t\t}\n\t\t\t\t\t>\n\t\t\t\t\t\t{t(\"restart\")}\n\t\t\t\t\t\n\t\t\t\t
\n\n\t\t\t\t
\n\t\t\t\t\t

Logo:

\n\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t
\n\t\t
\n\t)\n}\n\nexport default Config\n","import { FormEvent } from \"react\"\nimport { useTranslation } from \"react-i18next\"\nimport { useLocation, useNavigate } from \"react-router-dom\"\nimport Button from \"src/components/button/button\"\nimport Input from \"src/components/input/input\"\nimport Body from \"../../../components/body/body\"\nimport useHandleChange from \"../../../hooks/useHandleChange\"\nimport { login } from \"../../../network/auth\"\n\nconst Login = () => {\n\tconst { t } = useTranslation()\n\tconst navigate = useNavigate()\n\tconst location = useLocation()\n\n\tconst [email, setEmail] = useHandleChange(\"\")\n\tconst [password, setPassword] = useHandleChange(\"\")\n\n\tconst from = (location.state as any)?.from?.pathname || \"/\"\n\n\tconst _login = async (e: FormEvent) => {\n\t\te.preventDefault()\n\n\t\tconst success = await login(email, password)\n\t\tif (success) {\n\t\t\tnavigate(from)\n\t\t}\n\t}\n\n\treturn (\n\t\t\n\t\t\t
\n\t\t\t\t
\n\t\t\t\t\t

Moderator Login

\n\t\t\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t{t(\"log_in\")}\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t
\n\t\t\t
\n\t\t\n\t)\n}\n\nexport default Login\n","// This file is part of meshoptimizer library and is distributed under the terms of MIT License.\n// Copyright (C) 2016-2020, by Arseny Kapoulkine (arseny.kapoulkine@gmail.com)\nlet generated;\n\nconst MeshoptDecoder = () => {\n if (generated) return generated; // Built with clang version 11.0.0 (https://github.com/llvm/llvm-project.git 0160ad802e899c2922bc9b29564080c22eb0908c)\n // Built from meshoptimizer 0.14\n\n const wasm_base = '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';\n const wasm_simd = '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'; // Uses bulk-memory and simd extensions\n\n const detector = new Uint8Array([0, 97, 115, 109, 1, 0, 0, 0, 1, 4, 1, 96, 0, 0, 3, 3, 2, 0, 0, 5, 3, 1, 0, 1, 12, 1, 0, 10, 22, 2, 12, 0, 65, 0, 65, 0, 65, 0, 252, 10, 0, 0, 11, 7, 0, 65, 0, 253, 15, 26, 11]); // Used to unpack wasm\n\n const wasmpack = new Uint8Array([32, 0, 65, 253, 3, 1, 2, 34, 4, 106, 6, 5, 11, 8, 7, 20, 13, 33, 12, 16, 128, 9, 116, 64, 19, 113, 127, 15, 10, 21, 22, 14, 255, 66, 24, 54, 136, 107, 18, 23, 192, 26, 114, 118, 132, 17, 77, 101, 130, 144, 27, 87, 131, 44, 45, 74, 156, 154, 70, 167]);\n\n if (typeof WebAssembly !== 'object') {\n // This module requires WebAssembly to function\n return {\n supported: false\n };\n }\n\n let wasm = wasm_base;\n\n if (WebAssembly.validate(detector)) {\n wasm = wasm_simd;\n }\n\n let instance;\n const promise = WebAssembly.instantiate(unpack(wasm), {}).then(result => {\n instance = result.instance;\n\n instance.exports.__wasm_call_ctors();\n });\n\n function unpack(data) {\n const result = new Uint8Array(data.length);\n\n for (let i = 0; i < data.length; ++i) {\n const ch = data.charCodeAt(i);\n result[i] = ch > 96 ? ch - 71 : ch > 64 ? ch - 65 : ch > 47 ? ch + 4 : ch > 46 ? 63 : 62;\n }\n\n let write = 0;\n\n for (let i = 0; i < data.length; ++i) {\n result[write++] = result[i] < 60 ? wasmpack[result[i]] : (result[i] - 60) * 64 + result[++i];\n }\n\n return result.buffer.slice(0, write);\n }\n\n function decode(fun, target, count, size, source, filter) {\n const sbrk = instance.exports.sbrk;\n const count4 = count + 3 & ~3; // pad for SIMD filter\n\n const tp = sbrk(count4 * size);\n const sp = sbrk(source.length);\n const heap = new Uint8Array(instance.exports.memory.buffer);\n heap.set(source, sp);\n const res = fun(tp, count, size, sp, source.length);\n\n if (res === 0 && filter) {\n filter(tp, count4, size);\n }\n\n target.set(heap.subarray(tp, tp + count * size));\n sbrk(tp - sbrk(0));\n\n if (res !== 0) {\n throw new Error(`Malformed buffer data: ${res}`);\n }\n }\n\n const filters = {\n // legacy index-based enums for glTF\n 0: '',\n 1: 'meshopt_decodeFilterOct',\n 2: 'meshopt_decodeFilterQuat',\n 3: 'meshopt_decodeFilterExp',\n // string-based enums for glTF\n NONE: '',\n OCTAHEDRAL: 'meshopt_decodeFilterOct',\n QUATERNION: 'meshopt_decodeFilterQuat',\n EXPONENTIAL: 'meshopt_decodeFilterExp'\n };\n const decoders = {\n // legacy index-based enums for glTF\n 0: 'meshopt_decodeVertexBuffer',\n 1: 'meshopt_decodeIndexBuffer',\n 2: 'meshopt_decodeIndexSequence',\n // string-based enums for glTF\n ATTRIBUTES: 'meshopt_decodeVertexBuffer',\n TRIANGLES: 'meshopt_decodeIndexBuffer',\n INDICES: 'meshopt_decodeIndexSequence'\n };\n generated = {\n ready: promise,\n supported: true,\n\n decodeVertexBuffer(target, count, size, source, filter) {\n decode(instance.exports.meshopt_decodeVertexBuffer, target, count, size, source, instance.exports[filters[filter]]);\n },\n\n decodeIndexBuffer(target, count, size, source) {\n decode(instance.exports.meshopt_decodeIndexBuffer, target, count, size, source);\n },\n\n decodeIndexSequence(target, count, size, source) {\n decode(instance.exports.meshopt_decodeIndexSequence, target, count, size, source);\n },\n\n decodeGltfBuffer(target, count, size, source, mode, filter) {\n decode(instance.exports[decoders[mode]], target, count, size, source, instance.exports[filters[filter]]);\n }\n\n };\n return generated;\n};\n\nexport { MeshoptDecoder };\n","import { useEffect, useState } from \"react\"\nimport { useTranslation } from \"react-i18next\"\nimport { useNavigate, useParams } from \"react-router-dom\"\nimport Input from \"src/components/input/input\"\nimport useSWR from \"swr\"\nimport DashboardHeader from \"../../../../components/dashboardHeader/dashboardHeader\"\nimport { HasAuth } from \"../../../../components/privateRoute/privateRoute\"\nimport MediaUpload from \"../../../../components/upload/upload\"\nimport useHandleChange from \"../../../../hooks/useHandleChange\"\nimport { fetchApiAuthorized } from \"../../../../network/fetch\"\n\nconst CreateMedia = ({ auth }: HasAuth) => {\n\tconst { id } = useParams() as Record\n\tconst { t } = useTranslation()\n\tconst navigate = useNavigate()\n\n\tconst [name, setName] = useHandleChange(\"\")\n\tconst [file, setFile] = useState(undefined)\n\n\tconst { data: currentMedia } = useSWR(\n\t\tid ? [`/medias/${id}`, auth.token, auth.expiresIn] : null,\n\t\tfetchApiAuthorized\n\t)\n\n\tuseEffect(() => {\n\t\tif (currentMedia) {\n\t\t\tsetName(currentMedia.name)\n\t\t\tsetFile(currentMedia.key)\n\t\t}\n\t}, [currentMedia, setName])\n\n\tconst create = async () => {\n\t\tlet formData = new FormData()\n\t\tif (file) {\n\t\t\tformData.append(\"file\", file)\n\t\t}\n\t\tformData.append(\"json\", JSON.stringify({ name }))\n\n\t\tconst endpoint = id ? `/medias/${id}` : \"/medias/create\"\n\n\t\tconst success = await fetchApiAuthorized(\n\t\t\tendpoint,\n\t\t\tauth.token,\n\t\t\tauth.expiresIn,\n\t\t\tformData,\n\t\t\tid ? \"PUT\" : \"POST\"\n\t\t)\n\t\tif (success) {\n\t\t\tnavigate(\"/moderator/media\")\n\t\t}\n\t}\n\n\treturn (\n\t\t<>\n\t\t\t {\n\t\t\t\t\tnavigate(\"/moderator/media\")\n\t\t\t\t}}\n\t\t\t\tcancelButtonTitle={t(\"cancel\") as string}\n\t\t\t\ttitle={id ? (t(\"edit_media\") as string) : (t(\"create_media\") as string)}\n\t\t\t/>\n\n\t\t\t
\n\t\t\t\t {\n\t\t\t\t\t\tconst fileNameParts = file.name.match(/(.+?)(?:\\.[^\\\\.]*$|$)/)\n\t\t\t\t\t\tif (fileNameParts && fileNameParts.length > 1) {\n\t\t\t\t\t\t\tsetName({ target: { value: fileNameParts[1] } })\n\t\t\t\t\t\t}\n\t\t\t\t\t\tsetFile(file)\n\t\t\t\t\t}}\n\t\t\t\t/>\n\n\t\t\t\t
\n\t\t\t\t\t

{t(\"name\")}

\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t
\n\t\t\n\t)\n}\n\nexport default CreateMedia\n","import { useEffect, useState } from \"react\"\nimport { useTranslation } from \"react-i18next\"\nimport { ListContainer, ListRow } from \"src/components/list/list\"\n\ninterface MediaListProps {\n\tdata: Record | Record[]>\n\tloading: boolean\n\tsetCase: (byCase: string) => void\n}\n\nconst GroupedMediaList = ({ loading, data, setCase }: MediaListProps) => {\n\tconst [keys, setKeys] = useState([])\n\tconst { t } = useTranslation()\n\tconst [hasUnused, setHasUnused] = useState(false)\n\n\tuseEffect(() => {\n\t\tif (data) {\n\t\t\tlet _keys = Object.keys(data.used)\n\t\t\tif (\n\t\t\t\tdata.unused &&\n\t\t\t\t(data.unused as Record[]).length > 0\n\t\t\t) {\n\t\t\t\tsetHasUnused(true)\n\t\t\t\t_keys.push(t(\"unused_media\") as string)\n\t\t\t}\n\t\t\tsetKeys(_keys)\n\t\t}\n\t}, [data, t])\n\n\treturn (\n\t\t<>\n\t\t\t\n\t\t\t\t{loading\n\t\t\t\t\t? \"Loading…\"\n\t\t\t\t\t: keys.map((v, i) => {\n\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t setCase(v)}\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t{v}\n\t\t\t\t\t\t\t\t\t

\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t)\n\t\t\t\t\t })}\n\t\t\t
\n\t\t\n\t)\n}\n\nexport default GroupedMediaList\n","interface ListSwitchProps {\n\tshowAll: boolean\n\tsetShowAll: (showAll: boolean) => void\n}\nconst ListSwitch = ({ showAll, setShowAll }: ListSwitchProps) => {\n\treturn (\n\t\t
\n\t\t\t setShowAll(true)}\n\t\t\t>\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\n\n\t\t\t setShowAll(false)}\n\t\t\t>\n\t\t\t\t\n\t\t\t\n\n\t\t\t\n\t\t
\n\t)\n}\n\nexport default ListSwitch\n","import { useEffect, useState } from \"react\"\nimport { useTranslation } from \"react-i18next\"\nimport { useNavigate } from \"react-router-dom\"\nimport useSWR from \"swr\"\nimport DashboardBody from \"../../../components/dashboardBody/dashboardBody\"\nimport DashboardHeader from \"../../../components/dashboardHeader/dashboardHeader\"\nimport GroupedMediaList from \"../../../components/list/groupedMediaList\"\nimport ListView from \"../../../components/list/list\"\nimport ListSwitch from \"../../../components/list/listSwitch\"\nimport { HasAuth } from \"../../../components/privateRoute/privateRoute\"\nimport { fetchApiAuthorized } from \"../../../network/fetch\"\nimport { useErrorStore } from \"../../../state/stores/errorStore\"\n\nconst Medias = ({ auth }: HasAuth) => {\n\tconst { t } = useTranslation()\n\tconst navigate = useNavigate()\n\n\tconst [showAll, setShowAll] = useState(false)\n\tconst [byCase, setByCase] = useState(\"\")\n\n\tconst { data: medias, mutate } = useSWR(\n\t\t[`/medias${showAll ? \"\" : \"/grouped\"}`, auth.token, auth.expiresIn],\n\t\tfetchApiAuthorized\n\t)\n\n\tconst deletionConfirmation = useErrorStore(\n\t\t(state) => state.deleteConfirmation\n\t)\n\n\tuseEffect(() => {\n\t\tif (showAll) {\n\t\t\tsetByCase(\"\")\n\t\t}\n\t}, [showAll])\n\n\treturn (\n\t\t\n\t\t\t 0 ? (\n\t\t\t\t\t\t\"\"\n\t\t\t\t\t) : (\n\t\t\t\t\t\t\n\t\t\t\t\t)\n\t\t\t\t}\n\t\t\t\tbuttonOnClick={() => navigate(\"/moderator/media/create\")}\n\t\t\t\tbuttonTitle={t(\"create_media\") as string}\n\t\t\t\ttitle={t(\"media\") as string}\n\t\t\t\ttitleAddition={\n\t\t\t\t\tbyCase.length > 0 ? (\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t  {byCase}\n\t\t\t\t\t\t
\n\t\t\t\t\t) : undefined\n\t\t\t\t}\n\t\t\t\ttitleOnClick={byCase.length > 0 ? () => setByCase(\"\") : undefined}\n\t\t\t/>\n\n\t\t\t{showAll ? (\n\t\t\t\t {\n\t\t\t\t\t\tdeletionConfirmation(async () => {\n\t\t\t\t\t\t\tawait fetchApiAuthorized(\n\t\t\t\t\t\t\t\t`/medias/${v.id}`,\n\t\t\t\t\t\t\t\tauth.token,\n\t\t\t\t\t\t\t\tauth.expiresIn,\n\t\t\t\t\t\t\t\tundefined,\n\t\t\t\t\t\t\t\t\"DELETE\"\n\t\t\t\t\t\t\t)\n\n\t\t\t\t\t\t\tmutate()\n\t\t\t\t\t\t})\n\t\t\t\t\t}}\n\t\t\t\t\tonEdit={(v: Record) =>\n\t\t\t\t\t\tnavigate(`/moderator/media/${v.id}`)\n\t\t\t\t\t}\n\t\t\t\t/>\n\t\t\t) : byCase ? (\n\t\t\t\t {\n\t\t\t\t\t\tdeletionConfirmation(async () => {\n\t\t\t\t\t\t\tawait fetchApiAuthorized(\n\t\t\t\t\t\t\t\t`/medias/${v.id}`,\n\t\t\t\t\t\t\t\tauth.token,\n\t\t\t\t\t\t\t\tauth.expiresIn,\n\t\t\t\t\t\t\t\tundefined,\n\t\t\t\t\t\t\t\t\"DELETE\"\n\t\t\t\t\t\t\t)\n\n\t\t\t\t\t\t\tmutate()\n\t\t\t\t\t\t})\n\t\t\t\t\t}}\n\t\t\t\t\tonEdit={(v: Record) =>\n\t\t\t\t\t\tnavigate(`/moderator/media/${v.id}`)\n\t\t\t\t\t}\n\t\t\t\t/>\n\t\t\t) : (\n\t\t\t\t\n\t\t\t)}\n\t\t
\n\t)\n}\n\nexport default Medias\n","import { Loader, FileLoader, BufferGeometry, BufferAttribute } from 'three';\n\nconst _taskCache = new WeakMap();\n\nclass DRACOLoader extends Loader {\n constructor(manager) {\n super(manager);\n this.decoderPath = '';\n this.decoderConfig = {};\n this.decoderBinary = null;\n this.decoderPending = null;\n this.workerLimit = 4;\n this.workerPool = [];\n this.workerNextTaskID = 1;\n this.workerSourceURL = '';\n this.defaultAttributeIDs = {\n position: 'POSITION',\n normal: 'NORMAL',\n color: 'COLOR',\n uv: 'TEX_COORD'\n };\n this.defaultAttributeTypes = {\n position: 'Float32Array',\n normal: 'Float32Array',\n color: 'Float32Array',\n uv: 'Float32Array'\n };\n }\n\n setDecoderPath(path) {\n this.decoderPath = path;\n return this;\n }\n\n setDecoderConfig(config) {\n this.decoderConfig = config;\n return this;\n }\n\n setWorkerLimit(workerLimit) {\n this.workerLimit = workerLimit;\n return this;\n }\n\n load(url, onLoad, onProgress, onError) {\n const loader = new FileLoader(this.manager);\n loader.setPath(this.path);\n loader.setResponseType('arraybuffer');\n loader.setRequestHeader(this.requestHeader);\n loader.setWithCredentials(this.withCredentials);\n loader.load(url, buffer => {\n const taskConfig = {\n attributeIDs: this.defaultAttributeIDs,\n attributeTypes: this.defaultAttributeTypes,\n useUniqueIDs: false\n };\n this.decodeGeometry(buffer, taskConfig).then(onLoad).catch(onError);\n }, onProgress, onError);\n }\n /** @deprecated Kept for backward-compatibility with previous DRACOLoader versions. */\n\n\n decodeDracoFile(buffer, callback, attributeIDs, attributeTypes) {\n const taskConfig = {\n attributeIDs: attributeIDs || this.defaultAttributeIDs,\n attributeTypes: attributeTypes || this.defaultAttributeTypes,\n useUniqueIDs: !!attributeIDs\n };\n this.decodeGeometry(buffer, taskConfig).then(callback);\n }\n\n decodeGeometry(buffer, taskConfig) {\n // TODO: For backward-compatibility, support 'attributeTypes' objects containing\n // references (rather than names) to typed array constructors. These must be\n // serialized before sending them to the worker.\n for (const attribute in taskConfig.attributeTypes) {\n const type = taskConfig.attributeTypes[attribute];\n\n if (type.BYTES_PER_ELEMENT !== undefined) {\n taskConfig.attributeTypes[attribute] = type.name;\n }\n } //\n\n\n const taskKey = JSON.stringify(taskConfig); // Check for an existing task using this buffer. A transferred buffer cannot be transferred\n // again from this thread.\n\n if (_taskCache.has(buffer)) {\n const cachedTask = _taskCache.get(buffer);\n\n if (cachedTask.key === taskKey) {\n return cachedTask.promise;\n } else if (buffer.byteLength === 0) {\n // Technically, it would be possible to wait for the previous task to complete,\n // transfer the buffer back, and decode again with the second configuration. That\n // is complex, and I don't know of any reason to decode a Draco buffer twice in\n // different ways, so this is left unimplemented.\n throw new Error('THREE.DRACOLoader: Unable to re-decode a buffer with different ' + 'settings. Buffer has already been transferred.');\n }\n } //\n\n\n let worker;\n const taskID = this.workerNextTaskID++;\n const taskCost = buffer.byteLength; // Obtain a worker and assign a task, and construct a geometry instance\n // when the task completes.\n\n const geometryPending = this._getWorker(taskID, taskCost).then(_worker => {\n worker = _worker;\n return new Promise((resolve, reject) => {\n worker._callbacks[taskID] = {\n resolve,\n reject\n };\n worker.postMessage({\n type: 'decode',\n id: taskID,\n taskConfig,\n buffer\n }, [buffer]); // this.debug();\n });\n }).then(message => this._createGeometry(message.geometry)); // Remove task from the task list.\n // Note: replaced '.finally()' with '.catch().then()' block - iOS 11 support (#19416)\n\n\n geometryPending.catch(() => true).then(() => {\n if (worker && taskID) {\n this._releaseTask(worker, taskID); // this.debug();\n\n }\n }); // Cache the task result.\n\n _taskCache.set(buffer, {\n key: taskKey,\n promise: geometryPending\n });\n\n return geometryPending;\n }\n\n _createGeometry(geometryData) {\n const geometry = new BufferGeometry();\n\n if (geometryData.index) {\n geometry.setIndex(new BufferAttribute(geometryData.index.array, 1));\n }\n\n for (let i = 0; i < geometryData.attributes.length; i++) {\n const attribute = geometryData.attributes[i];\n const name = attribute.name;\n const array = attribute.array;\n const itemSize = attribute.itemSize;\n geometry.setAttribute(name, new BufferAttribute(array, itemSize));\n }\n\n return geometry;\n }\n\n _loadLibrary(url, responseType) {\n const loader = new FileLoader(this.manager);\n loader.setPath(this.decoderPath);\n loader.setResponseType(responseType);\n loader.setWithCredentials(this.withCredentials);\n return new Promise((resolve, reject) => {\n loader.load(url, resolve, undefined, reject);\n });\n }\n\n preload() {\n this._initDecoder();\n\n return this;\n }\n\n _initDecoder() {\n if (this.decoderPending) return this.decoderPending;\n const useJS = typeof WebAssembly !== 'object' || this.decoderConfig.type === 'js';\n const librariesPending = [];\n\n if (useJS) {\n librariesPending.push(this._loadLibrary('draco_decoder.js', 'text'));\n } else {\n librariesPending.push(this._loadLibrary('draco_wasm_wrapper.js', 'text'));\n librariesPending.push(this._loadLibrary('draco_decoder.wasm', 'arraybuffer'));\n }\n\n this.decoderPending = Promise.all(librariesPending).then(libraries => {\n const jsContent = libraries[0];\n\n if (!useJS) {\n this.decoderConfig.wasmBinary = libraries[1];\n }\n\n const fn = DRACOWorker.toString();\n const body = ['/* draco decoder */', jsContent, '', '/* worker */', fn.substring(fn.indexOf('{') + 1, fn.lastIndexOf('}'))].join('\\n');\n this.workerSourceURL = URL.createObjectURL(new Blob([body]));\n });\n return this.decoderPending;\n }\n\n _getWorker(taskID, taskCost) {\n return this._initDecoder().then(() => {\n if (this.workerPool.length < this.workerLimit) {\n const worker = new Worker(this.workerSourceURL);\n worker._callbacks = {};\n worker._taskCosts = {};\n worker._taskLoad = 0;\n worker.postMessage({\n type: 'init',\n decoderConfig: this.decoderConfig\n });\n\n worker.onmessage = function (e) {\n const message = e.data;\n\n switch (message.type) {\n case 'decode':\n worker._callbacks[message.id].resolve(message);\n\n break;\n\n case 'error':\n worker._callbacks[message.id].reject(message);\n\n break;\n\n default:\n console.error('THREE.DRACOLoader: Unexpected message, \"' + message.type + '\"');\n }\n };\n\n this.workerPool.push(worker);\n } else {\n this.workerPool.sort(function (a, b) {\n return a._taskLoad > b._taskLoad ? -1 : 1;\n });\n }\n\n const worker = this.workerPool[this.workerPool.length - 1];\n worker._taskCosts[taskID] = taskCost;\n worker._taskLoad += taskCost;\n return worker;\n });\n }\n\n _releaseTask(worker, taskID) {\n worker._taskLoad -= worker._taskCosts[taskID];\n delete worker._callbacks[taskID];\n delete worker._taskCosts[taskID];\n }\n\n debug() {\n console.log('Task load: ', this.workerPool.map(worker => worker._taskLoad));\n }\n\n dispose() {\n for (let i = 0; i < this.workerPool.length; ++i) {\n this.workerPool[i].terminate();\n }\n\n this.workerPool.length = 0;\n return this;\n }\n\n}\n/* WEB WORKER */\n\n\nfunction DRACOWorker() {\n let decoderConfig;\n let decoderPending;\n\n onmessage = function (e) {\n const message = e.data;\n\n switch (message.type) {\n case 'init':\n decoderConfig = message.decoderConfig;\n decoderPending = new Promise(function (resolve\n /*, reject*/\n ) {\n decoderConfig.onModuleLoaded = function (draco) {\n // Module is Promise-like. Wrap before resolving to avoid loop.\n resolve({\n draco: draco\n });\n };\n\n DracoDecoderModule(decoderConfig); // eslint-disable-line no-undef\n });\n break;\n\n case 'decode':\n const buffer = message.buffer;\n const taskConfig = message.taskConfig;\n decoderPending.then(module => {\n const draco = module.draco;\n const decoder = new draco.Decoder();\n const decoderBuffer = new draco.DecoderBuffer();\n decoderBuffer.Init(new Int8Array(buffer), buffer.byteLength);\n\n try {\n const geometry = decodeGeometry(draco, decoder, decoderBuffer, taskConfig);\n const buffers = geometry.attributes.map(attr => attr.array.buffer);\n if (geometry.index) buffers.push(geometry.index.array.buffer);\n self.postMessage({\n type: 'decode',\n id: message.id,\n geometry\n }, buffers);\n } catch (error) {\n console.error(error);\n self.postMessage({\n type: 'error',\n id: message.id,\n error: error.message\n });\n } finally {\n draco.destroy(decoderBuffer);\n draco.destroy(decoder);\n }\n });\n break;\n }\n };\n\n function decodeGeometry(draco, decoder, decoderBuffer, taskConfig) {\n const attributeIDs = taskConfig.attributeIDs;\n const attributeTypes = taskConfig.attributeTypes;\n let dracoGeometry;\n let decodingStatus;\n const geometryType = decoder.GetEncodedGeometryType(decoderBuffer);\n\n if (geometryType === draco.TRIANGULAR_MESH) {\n dracoGeometry = new draco.Mesh();\n decodingStatus = decoder.DecodeBufferToMesh(decoderBuffer, dracoGeometry);\n } else if (geometryType === draco.POINT_CLOUD) {\n dracoGeometry = new draco.PointCloud();\n decodingStatus = decoder.DecodeBufferToPointCloud(decoderBuffer, dracoGeometry);\n } else {\n throw new Error('THREE.DRACOLoader: Unexpected geometry type.');\n }\n\n if (!decodingStatus.ok() || dracoGeometry.ptr === 0) {\n throw new Error('THREE.DRACOLoader: Decoding failed: ' + decodingStatus.error_msg());\n }\n\n const geometry = {\n index: null,\n attributes: []\n }; // Gather all vertex attributes.\n\n for (const attributeName in attributeIDs) {\n const attributeType = self[attributeTypes[attributeName]];\n let attribute;\n let attributeID; // A Draco file may be created with default vertex attributes, whose attribute IDs\n // are mapped 1:1 from their semantic name (POSITION, NORMAL, ...). Alternatively,\n // a Draco file may contain a custom set of attributes, identified by known unique\n // IDs. glTF files always do the latter, and `.drc` files typically do the former.\n\n if (taskConfig.useUniqueIDs) {\n attributeID = attributeIDs[attributeName];\n attribute = decoder.GetAttributeByUniqueId(dracoGeometry, attributeID);\n } else {\n attributeID = decoder.GetAttributeId(dracoGeometry, draco[attributeIDs[attributeName]]);\n if (attributeID === -1) continue;\n attribute = decoder.GetAttribute(dracoGeometry, attributeID);\n }\n\n geometry.attributes.push(decodeAttribute(draco, decoder, dracoGeometry, attributeName, attributeType, attribute));\n } // Add index.\n\n\n if (geometryType === draco.TRIANGULAR_MESH) {\n geometry.index = decodeIndex(draco, decoder, dracoGeometry);\n }\n\n draco.destroy(dracoGeometry);\n return geometry;\n }\n\n function decodeIndex(draco, decoder, dracoGeometry) {\n const numFaces = dracoGeometry.num_faces();\n const numIndices = numFaces * 3;\n const byteLength = numIndices * 4;\n\n const ptr = draco._malloc(byteLength);\n\n decoder.GetTrianglesUInt32Array(dracoGeometry, byteLength, ptr);\n const index = new Uint32Array(draco.HEAPF32.buffer, ptr, numIndices).slice();\n\n draco._free(ptr);\n\n return {\n array: index,\n itemSize: 1\n };\n }\n\n function decodeAttribute(draco, decoder, dracoGeometry, attributeName, attributeType, attribute) {\n const numComponents = attribute.num_components();\n const numPoints = dracoGeometry.num_points();\n const numValues = numPoints * numComponents;\n const byteLength = numValues * attributeType.BYTES_PER_ELEMENT;\n const dataType = getDracoDataType(draco, attributeType);\n\n const ptr = draco._malloc(byteLength);\n\n decoder.GetAttributeDataArrayForAllPoints(dracoGeometry, attribute, dataType, byteLength, ptr);\n const array = new attributeType(draco.HEAPF32.buffer, ptr, numValues).slice();\n\n draco._free(ptr);\n\n return {\n name: attributeName,\n array: array,\n itemSize: numComponents\n };\n }\n\n function getDracoDataType(draco, attributeType) {\n switch (attributeType) {\n case Float32Array:\n return draco.DT_FLOAT32;\n\n case Int8Array:\n return draco.DT_INT8;\n\n case Int16Array:\n return draco.DT_INT16;\n\n case Int32Array:\n return draco.DT_INT32;\n\n case Uint8Array:\n return draco.DT_UINT8;\n\n case Uint16Array:\n return draco.DT_UINT16;\n\n case Uint32Array:\n return draco.DT_UINT32;\n }\n }\n}\n\nexport { DRACOLoader };\n","import { Loader, LoaderUtils, FileLoader, Color, SpotLight, PointLight, DirectionalLight, MeshBasicMaterial, MeshPhysicalMaterial, Vector2, sRGBEncoding, TangentSpaceNormalMap, Quaternion, ImageBitmapLoader, TextureLoader, InterleavedBuffer, InterleavedBufferAttribute, BufferAttribute, LinearFilter, LinearMipmapLinearFilter, RepeatWrapping, PointsMaterial, Material, LineBasicMaterial, MeshStandardMaterial, DoubleSide, PropertyBinding, BufferGeometry, SkinnedMesh, Mesh, LineSegments, Line, LineLoop, Points, Group, PerspectiveCamera, MathUtils, OrthographicCamera, InterpolateLinear, AnimationClip, Bone, Object3D, Matrix4, Skeleton, TriangleFanDrawMode, NearestFilter, NearestMipmapNearestFilter, LinearMipmapNearestFilter, NearestMipmapLinearFilter, ClampToEdgeWrapping, MirroredRepeatWrapping, InterpolateDiscrete, FrontSide, Texture, TriangleStripDrawMode, VectorKeyframeTrack, QuaternionKeyframeTrack, NumberKeyframeTrack, Box3, Vector3, Sphere, Interpolant } from 'three';\n\nclass GLTFLoader extends Loader {\n constructor(manager) {\n super(manager);\n this.dracoLoader = null;\n this.ktx2Loader = null;\n this.meshoptDecoder = null;\n this.pluginCallbacks = [];\n this.register(function (parser) {\n return new GLTFMaterialsClearcoatExtension(parser);\n });\n this.register(function (parser) {\n return new GLTFTextureBasisUExtension(parser);\n });\n this.register(function (parser) {\n return new GLTFTextureWebPExtension(parser);\n });\n this.register(function (parser) {\n return new GLTFMaterialsSheenExtension(parser);\n });\n this.register(function (parser) {\n return new GLTFMaterialsTransmissionExtension(parser);\n });\n this.register(function (parser) {\n return new GLTFMaterialsVolumeExtension(parser);\n });\n this.register(function (parser) {\n return new GLTFMaterialsIorExtension(parser);\n });\n this.register(function (parser) {\n return new GLTFMaterialsSpecularExtension(parser);\n });\n this.register(function (parser) {\n return new GLTFLightsExtension(parser);\n });\n this.register(function (parser) {\n return new GLTFMeshoptCompression(parser);\n });\n }\n\n load(url, onLoad, onProgress, onError) {\n const scope = this;\n let resourcePath;\n\n if (this.resourcePath !== '') {\n resourcePath = this.resourcePath;\n } else if (this.path !== '') {\n resourcePath = this.path;\n } else {\n resourcePath = LoaderUtils.extractUrlBase(url);\n } // Tells the LoadingManager to track an extra item, which resolves after\n // the model is fully loaded. This means the count of items loaded will\n // be incorrect, but ensures manager.onLoad() does not fire early.\n\n\n this.manager.itemStart(url);\n\n const _onError = function (e) {\n if (onError) {\n onError(e);\n } else {\n console.error(e);\n }\n\n scope.manager.itemError(url);\n scope.manager.itemEnd(url);\n };\n\n const loader = new FileLoader(this.manager);\n loader.setPath(this.path);\n loader.setResponseType('arraybuffer');\n loader.setRequestHeader(this.requestHeader);\n loader.setWithCredentials(this.withCredentials);\n loader.load(url, function (data) {\n try {\n scope.parse(data, resourcePath, function (gltf) {\n onLoad(gltf);\n scope.manager.itemEnd(url);\n }, _onError);\n } catch (e) {\n _onError(e);\n }\n }, onProgress, _onError);\n }\n\n setDRACOLoader(dracoLoader) {\n this.dracoLoader = dracoLoader;\n return this;\n }\n\n setDDSLoader() {\n throw new Error('THREE.GLTFLoader: \"MSFT_texture_dds\" no longer supported. Please update to \"KHR_texture_basisu\".');\n }\n\n setKTX2Loader(ktx2Loader) {\n this.ktx2Loader = ktx2Loader;\n return this;\n }\n\n setMeshoptDecoder(meshoptDecoder) {\n this.meshoptDecoder = meshoptDecoder;\n return this;\n }\n\n register(callback) {\n if (this.pluginCallbacks.indexOf(callback) === -1) {\n this.pluginCallbacks.push(callback);\n }\n\n return this;\n }\n\n unregister(callback) {\n if (this.pluginCallbacks.indexOf(callback) !== -1) {\n this.pluginCallbacks.splice(this.pluginCallbacks.indexOf(callback), 1);\n }\n\n return this;\n }\n\n parse(data, path, onLoad, onError) {\n let content;\n const extensions = {};\n const plugins = {};\n\n if (typeof data === 'string') {\n content = data;\n } else {\n const magic = LoaderUtils.decodeText(new Uint8Array(data, 0, 4));\n\n if (magic === BINARY_EXTENSION_HEADER_MAGIC) {\n try {\n extensions[EXTENSIONS.KHR_BINARY_GLTF] = new GLTFBinaryExtension(data);\n } catch (error) {\n if (onError) onError(error);\n return;\n }\n\n content = extensions[EXTENSIONS.KHR_BINARY_GLTF].content;\n } else {\n content = LoaderUtils.decodeText(new Uint8Array(data));\n }\n }\n\n const json = JSON.parse(content);\n\n if (json.asset === undefined || json.asset.version[0] < 2) {\n if (onError) onError(new Error('THREE.GLTFLoader: Unsupported asset. glTF versions >=2.0 are supported.'));\n return;\n }\n\n const parser = new GLTFParser(json, {\n path: path || this.resourcePath || '',\n crossOrigin: this.crossOrigin,\n requestHeader: this.requestHeader,\n manager: this.manager,\n ktx2Loader: this.ktx2Loader,\n meshoptDecoder: this.meshoptDecoder\n });\n parser.fileLoader.setRequestHeader(this.requestHeader);\n\n for (let i = 0; i < this.pluginCallbacks.length; i++) {\n const plugin = this.pluginCallbacks[i](parser);\n plugins[plugin.name] = plugin; // Workaround to avoid determining as unknown extension\n // in addUnknownExtensionsToUserData().\n // Remove this workaround if we move all the existing\n // extension handlers to plugin system\n\n extensions[plugin.name] = true;\n }\n\n if (json.extensionsUsed) {\n for (let i = 0; i < json.extensionsUsed.length; ++i) {\n const extensionName = json.extensionsUsed[i];\n const extensionsRequired = json.extensionsRequired || [];\n\n switch (extensionName) {\n case EXTENSIONS.KHR_MATERIALS_UNLIT:\n extensions[extensionName] = new GLTFMaterialsUnlitExtension();\n break;\n\n case EXTENSIONS.KHR_MATERIALS_PBR_SPECULAR_GLOSSINESS:\n extensions[extensionName] = new GLTFMaterialsPbrSpecularGlossinessExtension();\n break;\n\n case EXTENSIONS.KHR_DRACO_MESH_COMPRESSION:\n extensions[extensionName] = new GLTFDracoMeshCompressionExtension(json, this.dracoLoader);\n break;\n\n case EXTENSIONS.KHR_TEXTURE_TRANSFORM:\n extensions[extensionName] = new GLTFTextureTransformExtension();\n break;\n\n case EXTENSIONS.KHR_MESH_QUANTIZATION:\n extensions[extensionName] = new GLTFMeshQuantizationExtension();\n break;\n\n default:\n if (extensionsRequired.indexOf(extensionName) >= 0 && plugins[extensionName] === undefined) {\n console.warn('THREE.GLTFLoader: Unknown extension \"' + extensionName + '\".');\n }\n\n }\n }\n }\n\n parser.setExtensions(extensions);\n parser.setPlugins(plugins);\n parser.parse(onLoad, onError);\n }\n\n parseAsync(data, path) {\n const scope = this;\n return new Promise(function (resolve, reject) {\n scope.parse(data, path, resolve, reject);\n });\n }\n\n}\n/* GLTFREGISTRY */\n\n\nfunction GLTFRegistry() {\n let objects = {};\n return {\n get: function (key) {\n return objects[key];\n },\n add: function (key, object) {\n objects[key] = object;\n },\n remove: function (key) {\n delete objects[key];\n },\n removeAll: function () {\n objects = {};\n }\n };\n}\n/*********************************/\n\n/********** EXTENSIONS ***********/\n\n/*********************************/\n\n\nconst EXTENSIONS = {\n KHR_BINARY_GLTF: 'KHR_binary_glTF',\n KHR_DRACO_MESH_COMPRESSION: 'KHR_draco_mesh_compression',\n KHR_LIGHTS_PUNCTUAL: 'KHR_lights_punctual',\n KHR_MATERIALS_CLEARCOAT: 'KHR_materials_clearcoat',\n KHR_MATERIALS_IOR: 'KHR_materials_ior',\n KHR_MATERIALS_PBR_SPECULAR_GLOSSINESS: 'KHR_materials_pbrSpecularGlossiness',\n KHR_MATERIALS_SHEEN: 'KHR_materials_sheen',\n KHR_MATERIALS_SPECULAR: 'KHR_materials_specular',\n KHR_MATERIALS_TRANSMISSION: 'KHR_materials_transmission',\n KHR_MATERIALS_UNLIT: 'KHR_materials_unlit',\n KHR_MATERIALS_VOLUME: 'KHR_materials_volume',\n KHR_TEXTURE_BASISU: 'KHR_texture_basisu',\n KHR_TEXTURE_TRANSFORM: 'KHR_texture_transform',\n KHR_MESH_QUANTIZATION: 'KHR_mesh_quantization',\n EXT_TEXTURE_WEBP: 'EXT_texture_webp',\n EXT_MESHOPT_COMPRESSION: 'EXT_meshopt_compression'\n};\n/**\n * Punctual Lights Extension\n *\n * Specification: https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Khronos/KHR_lights_punctual\n */\n\nclass GLTFLightsExtension {\n constructor(parser) {\n this.parser = parser;\n this.name = EXTENSIONS.KHR_LIGHTS_PUNCTUAL; // Object3D instance caches\n\n this.cache = {\n refs: {},\n uses: {}\n };\n }\n\n _markDefs() {\n const parser = this.parser;\n const nodeDefs = this.parser.json.nodes || [];\n\n for (let nodeIndex = 0, nodeLength = nodeDefs.length; nodeIndex < nodeLength; nodeIndex++) {\n const nodeDef = nodeDefs[nodeIndex];\n\n if (nodeDef.extensions && nodeDef.extensions[this.name] && nodeDef.extensions[this.name].light !== undefined) {\n parser._addNodeRef(this.cache, nodeDef.extensions[this.name].light);\n }\n }\n }\n\n _loadLight(lightIndex) {\n const parser = this.parser;\n const cacheKey = 'light:' + lightIndex;\n let dependency = parser.cache.get(cacheKey);\n if (dependency) return dependency;\n const json = parser.json;\n const extensions = json.extensions && json.extensions[this.name] || {};\n const lightDefs = extensions.lights || [];\n const lightDef = lightDefs[lightIndex];\n let lightNode;\n const color = new Color(0xffffff);\n if (lightDef.color !== undefined) color.fromArray(lightDef.color);\n const range = lightDef.range !== undefined ? lightDef.range : 0;\n\n switch (lightDef.type) {\n case 'directional':\n lightNode = new DirectionalLight(color);\n lightNode.target.position.set(0, 0, -1);\n lightNode.add(lightNode.target);\n break;\n\n case 'point':\n lightNode = new PointLight(color);\n lightNode.distance = range;\n break;\n\n case 'spot':\n lightNode = new SpotLight(color);\n lightNode.distance = range; // Handle spotlight properties.\n\n lightDef.spot = lightDef.spot || {};\n lightDef.spot.innerConeAngle = lightDef.spot.innerConeAngle !== undefined ? lightDef.spot.innerConeAngle : 0;\n lightDef.spot.outerConeAngle = lightDef.spot.outerConeAngle !== undefined ? lightDef.spot.outerConeAngle : Math.PI / 4.0;\n lightNode.angle = lightDef.spot.outerConeAngle;\n lightNode.penumbra = 1.0 - lightDef.spot.innerConeAngle / lightDef.spot.outerConeAngle;\n lightNode.target.position.set(0, 0, -1);\n lightNode.add(lightNode.target);\n break;\n\n default:\n throw new Error('THREE.GLTFLoader: Unexpected light type: ' + lightDef.type);\n } // Some lights (e.g. spot) default to a position other than the origin. Reset the position\n // here, because node-level parsing will only override position if explicitly specified.\n\n\n lightNode.position.set(0, 0, 0);\n lightNode.decay = 2;\n if (lightDef.intensity !== undefined) lightNode.intensity = lightDef.intensity;\n lightNode.name = parser.createUniqueName(lightDef.name || 'light_' + lightIndex);\n dependency = Promise.resolve(lightNode);\n parser.cache.add(cacheKey, dependency);\n return dependency;\n }\n\n createNodeAttachment(nodeIndex) {\n const self = this;\n const parser = this.parser;\n const json = parser.json;\n const nodeDef = json.nodes[nodeIndex];\n const lightDef = nodeDef.extensions && nodeDef.extensions[this.name] || {};\n const lightIndex = lightDef.light;\n if (lightIndex === undefined) return null;\n return this._loadLight(lightIndex).then(function (light) {\n return parser._getNodeRef(self.cache, lightIndex, light);\n });\n }\n\n}\n/**\n * Unlit Materials Extension\n *\n * Specification: https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Khronos/KHR_materials_unlit\n */\n\n\nclass GLTFMaterialsUnlitExtension {\n constructor() {\n this.name = EXTENSIONS.KHR_MATERIALS_UNLIT;\n }\n\n getMaterialType() {\n return MeshBasicMaterial;\n }\n\n extendParams(materialParams, materialDef, parser) {\n const pending = [];\n materialParams.color = new Color(1.0, 1.0, 1.0);\n materialParams.opacity = 1.0;\n const metallicRoughness = materialDef.pbrMetallicRoughness;\n\n if (metallicRoughness) {\n if (Array.isArray(metallicRoughness.baseColorFactor)) {\n const array = metallicRoughness.baseColorFactor;\n materialParams.color.fromArray(array);\n materialParams.opacity = array[3];\n }\n\n if (metallicRoughness.baseColorTexture !== undefined) {\n pending.push(parser.assignTexture(materialParams, 'map', metallicRoughness.baseColorTexture));\n }\n }\n\n return Promise.all(pending);\n }\n\n}\n/**\n * Clearcoat Materials Extension\n *\n * Specification: https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Khronos/KHR_materials_clearcoat\n */\n\n\nclass GLTFMaterialsClearcoatExtension {\n constructor(parser) {\n this.parser = parser;\n this.name = EXTENSIONS.KHR_MATERIALS_CLEARCOAT;\n }\n\n getMaterialType(materialIndex) {\n const parser = this.parser;\n const materialDef = parser.json.materials[materialIndex];\n if (!materialDef.extensions || !materialDef.extensions[this.name]) return null;\n return MeshPhysicalMaterial;\n }\n\n extendMaterialParams(materialIndex, materialParams) {\n const parser = this.parser;\n const materialDef = parser.json.materials[materialIndex];\n\n if (!materialDef.extensions || !materialDef.extensions[this.name]) {\n return Promise.resolve();\n }\n\n const pending = [];\n const extension = materialDef.extensions[this.name];\n\n if (extension.clearcoatFactor !== undefined) {\n materialParams.clearcoat = extension.clearcoatFactor;\n }\n\n if (extension.clearcoatTexture !== undefined) {\n pending.push(parser.assignTexture(materialParams, 'clearcoatMap', extension.clearcoatTexture));\n }\n\n if (extension.clearcoatRoughnessFactor !== undefined) {\n materialParams.clearcoatRoughness = extension.clearcoatRoughnessFactor;\n }\n\n if (extension.clearcoatRoughnessTexture !== undefined) {\n pending.push(parser.assignTexture(materialParams, 'clearcoatRoughnessMap', extension.clearcoatRoughnessTexture));\n }\n\n if (extension.clearcoatNormalTexture !== undefined) {\n pending.push(parser.assignTexture(materialParams, 'clearcoatNormalMap', extension.clearcoatNormalTexture));\n\n if (extension.clearcoatNormalTexture.scale !== undefined) {\n const scale = extension.clearcoatNormalTexture.scale;\n materialParams.clearcoatNormalScale = new Vector2(scale, scale);\n }\n }\n\n return Promise.all(pending);\n }\n\n}\n/**\n * Sheen Materials Extension\n *\n * Specification: https://github.com/KhronosGroup/glTF/tree/main/extensions/2.0/Khronos/KHR_materials_sheen\n */\n\n\nclass GLTFMaterialsSheenExtension {\n constructor(parser) {\n this.parser = parser;\n this.name = EXTENSIONS.KHR_MATERIALS_SHEEN;\n }\n\n getMaterialType(materialIndex) {\n const parser = this.parser;\n const materialDef = parser.json.materials[materialIndex];\n if (!materialDef.extensions || !materialDef.extensions[this.name]) return null;\n return MeshPhysicalMaterial;\n }\n\n extendMaterialParams(materialIndex, materialParams) {\n const parser = this.parser;\n const materialDef = parser.json.materials[materialIndex];\n\n if (!materialDef.extensions || !materialDef.extensions[this.name]) {\n return Promise.resolve();\n }\n\n const pending = [];\n materialParams.sheenColor = new Color(0, 0, 0);\n materialParams.sheenRoughness = 0;\n materialParams.sheen = 1;\n const extension = materialDef.extensions[this.name];\n\n if (extension.sheenColorFactor !== undefined) {\n materialParams.sheenColor.fromArray(extension.sheenColorFactor);\n }\n\n if (extension.sheenRoughnessFactor !== undefined) {\n materialParams.sheenRoughness = extension.sheenRoughnessFactor;\n }\n\n if (extension.sheenColorTexture !== undefined) {\n pending.push(parser.assignTexture(materialParams, 'sheenColorMap', extension.sheenColorTexture));\n }\n\n if (extension.sheenRoughnessTexture !== undefined) {\n pending.push(parser.assignTexture(materialParams, 'sheenRoughnessMap', extension.sheenRoughnessTexture));\n }\n\n return Promise.all(pending);\n }\n\n}\n/**\n * Transmission Materials Extension\n *\n * Specification: https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Khronos/KHR_materials_transmission\n * Draft: https://github.com/KhronosGroup/glTF/pull/1698\n */\n\n\nclass GLTFMaterialsTransmissionExtension {\n constructor(parser) {\n this.parser = parser;\n this.name = EXTENSIONS.KHR_MATERIALS_TRANSMISSION;\n }\n\n getMaterialType(materialIndex) {\n const parser = this.parser;\n const materialDef = parser.json.materials[materialIndex];\n if (!materialDef.extensions || !materialDef.extensions[this.name]) return null;\n return MeshPhysicalMaterial;\n }\n\n extendMaterialParams(materialIndex, materialParams) {\n const parser = this.parser;\n const materialDef = parser.json.materials[materialIndex];\n\n if (!materialDef.extensions || !materialDef.extensions[this.name]) {\n return Promise.resolve();\n }\n\n const pending = [];\n const extension = materialDef.extensions[this.name];\n\n if (extension.transmissionFactor !== undefined) {\n materialParams.transmission = extension.transmissionFactor;\n }\n\n if (extension.transmissionTexture !== undefined) {\n pending.push(parser.assignTexture(materialParams, 'transmissionMap', extension.transmissionTexture));\n }\n\n return Promise.all(pending);\n }\n\n}\n/**\n * Materials Volume Extension\n *\n * Specification: https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Khronos/KHR_materials_volume\n */\n\n\nclass GLTFMaterialsVolumeExtension {\n constructor(parser) {\n this.parser = parser;\n this.name = EXTENSIONS.KHR_MATERIALS_VOLUME;\n }\n\n getMaterialType(materialIndex) {\n const parser = this.parser;\n const materialDef = parser.json.materials[materialIndex];\n if (!materialDef.extensions || !materialDef.extensions[this.name]) return null;\n return MeshPhysicalMaterial;\n }\n\n extendMaterialParams(materialIndex, materialParams) {\n const parser = this.parser;\n const materialDef = parser.json.materials[materialIndex];\n\n if (!materialDef.extensions || !materialDef.extensions[this.name]) {\n return Promise.resolve();\n }\n\n const pending = [];\n const extension = materialDef.extensions[this.name];\n materialParams.thickness = extension.thicknessFactor !== undefined ? extension.thicknessFactor : 0;\n\n if (extension.thicknessTexture !== undefined) {\n pending.push(parser.assignTexture(materialParams, 'thicknessMap', extension.thicknessTexture));\n }\n\n materialParams.attenuationDistance = extension.attenuationDistance || 0;\n const colorArray = extension.attenuationColor || [1, 1, 1];\n materialParams.attenuationColor = new Color(colorArray[0], colorArray[1], colorArray[2]);\n return Promise.all(pending);\n }\n\n}\n/**\n * Materials ior Extension\n *\n * Specification: https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Khronos/KHR_materials_ior\n */\n\n\nclass GLTFMaterialsIorExtension {\n constructor(parser) {\n this.parser = parser;\n this.name = EXTENSIONS.KHR_MATERIALS_IOR;\n }\n\n getMaterialType(materialIndex) {\n const parser = this.parser;\n const materialDef = parser.json.materials[materialIndex];\n if (!materialDef.extensions || !materialDef.extensions[this.name]) return null;\n return MeshPhysicalMaterial;\n }\n\n extendMaterialParams(materialIndex, materialParams) {\n const parser = this.parser;\n const materialDef = parser.json.materials[materialIndex];\n\n if (!materialDef.extensions || !materialDef.extensions[this.name]) {\n return Promise.resolve();\n }\n\n const extension = materialDef.extensions[this.name];\n materialParams.ior = extension.ior !== undefined ? extension.ior : 1.5;\n return Promise.resolve();\n }\n\n}\n/**\n * Materials specular Extension\n *\n * Specification: https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Khronos/KHR_materials_specular\n */\n\n\nclass GLTFMaterialsSpecularExtension {\n constructor(parser) {\n this.parser = parser;\n this.name = EXTENSIONS.KHR_MATERIALS_SPECULAR;\n }\n\n getMaterialType(materialIndex) {\n const parser = this.parser;\n const materialDef = parser.json.materials[materialIndex];\n if (!materialDef.extensions || !materialDef.extensions[this.name]) return null;\n return MeshPhysicalMaterial;\n }\n\n extendMaterialParams(materialIndex, materialParams) {\n const parser = this.parser;\n const materialDef = parser.json.materials[materialIndex];\n\n if (!materialDef.extensions || !materialDef.extensions[this.name]) {\n return Promise.resolve();\n }\n\n const pending = [];\n const extension = materialDef.extensions[this.name];\n materialParams.specularIntensity = extension.specularFactor !== undefined ? extension.specularFactor : 1.0;\n\n if (extension.specularTexture !== undefined) {\n pending.push(parser.assignTexture(materialParams, 'specularIntensityMap', extension.specularTexture));\n }\n\n const colorArray = extension.specularColorFactor || [1, 1, 1];\n materialParams.specularColor = new Color(colorArray[0], colorArray[1], colorArray[2]);\n\n if (extension.specularColorTexture !== undefined) {\n pending.push(parser.assignTexture(materialParams, 'specularColorMap', extension.specularColorTexture).then(function (texture) {\n texture.encoding = sRGBEncoding;\n }));\n }\n\n return Promise.all(pending);\n }\n\n}\n/**\n * BasisU Texture Extension\n *\n * Specification: https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Khronos/KHR_texture_basisu\n */\n\n\nclass GLTFTextureBasisUExtension {\n constructor(parser) {\n this.parser = parser;\n this.name = EXTENSIONS.KHR_TEXTURE_BASISU;\n }\n\n loadTexture(textureIndex) {\n const parser = this.parser;\n const json = parser.json;\n const textureDef = json.textures[textureIndex];\n\n if (!textureDef.extensions || !textureDef.extensions[this.name]) {\n return null;\n }\n\n const extension = textureDef.extensions[this.name];\n const source = json.images[extension.source];\n const loader = parser.options.ktx2Loader;\n\n if (!loader) {\n if (json.extensionsRequired && json.extensionsRequired.indexOf(this.name) >= 0) {\n throw new Error('THREE.GLTFLoader: setKTX2Loader must be called before loading KTX2 textures');\n } else {\n // Assumes that the extension is optional and that a fallback texture is present\n return null;\n }\n }\n\n return parser.loadTextureImage(textureIndex, source, loader);\n }\n\n}\n/**\n * WebP Texture Extension\n *\n * Specification: https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Vendor/EXT_texture_webp\n */\n\n\nclass GLTFTextureWebPExtension {\n constructor(parser) {\n this.parser = parser;\n this.name = EXTENSIONS.EXT_TEXTURE_WEBP;\n this.isSupported = null;\n }\n\n loadTexture(textureIndex) {\n const name = this.name;\n const parser = this.parser;\n const json = parser.json;\n const textureDef = json.textures[textureIndex];\n\n if (!textureDef.extensions || !textureDef.extensions[name]) {\n return null;\n }\n\n const extension = textureDef.extensions[name];\n const source = json.images[extension.source];\n let loader = parser.textureLoader;\n\n if (source.uri) {\n const handler = parser.options.manager.getHandler(source.uri);\n if (handler !== null) loader = handler;\n }\n\n return this.detectSupport().then(function (isSupported) {\n if (isSupported) return parser.loadTextureImage(textureIndex, source, loader);\n\n if (json.extensionsRequired && json.extensionsRequired.indexOf(name) >= 0) {\n throw new Error('THREE.GLTFLoader: WebP required by asset but unsupported.');\n } // Fall back to PNG or JPEG.\n\n\n return parser.loadTexture(textureIndex);\n });\n }\n\n detectSupport() {\n if (!this.isSupported) {\n this.isSupported = new Promise(function (resolve) {\n const image = new Image(); // Lossy test image. Support for lossy images doesn't guarantee support for all\n // WebP images, unfortunately.\n\n image.src = 'data:image/webp;base64,UklGRiIAAABXRUJQVlA4IBYAAAAwAQCdASoBAAEADsD+JaQAA3AAAAAA';\n\n image.onload = image.onerror = function () {\n resolve(image.height === 1);\n };\n });\n }\n\n return this.isSupported;\n }\n\n}\n/**\n * meshopt BufferView Compression Extension\n *\n * Specification: https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Vendor/EXT_meshopt_compression\n */\n\n\nclass GLTFMeshoptCompression {\n constructor(parser) {\n this.name = EXTENSIONS.EXT_MESHOPT_COMPRESSION;\n this.parser = parser;\n }\n\n loadBufferView(index) {\n const json = this.parser.json;\n const bufferView = json.bufferViews[index];\n\n if (bufferView.extensions && bufferView.extensions[this.name]) {\n const extensionDef = bufferView.extensions[this.name];\n const buffer = this.parser.getDependency('buffer', extensionDef.buffer);\n const decoder = this.parser.options.meshoptDecoder;\n\n if (!decoder || !decoder.supported) {\n if (json.extensionsRequired && json.extensionsRequired.indexOf(this.name) >= 0) {\n throw new Error('THREE.GLTFLoader: setMeshoptDecoder must be called before loading compressed files');\n } else {\n // Assumes that the extension is optional and that fallback buffer data is present\n return null;\n }\n }\n\n return Promise.all([buffer, decoder.ready]).then(function (res) {\n const byteOffset = extensionDef.byteOffset || 0;\n const byteLength = extensionDef.byteLength || 0;\n const count = extensionDef.count;\n const stride = extensionDef.byteStride;\n const result = new ArrayBuffer(count * stride);\n const source = new Uint8Array(res[0], byteOffset, byteLength);\n decoder.decodeGltfBuffer(new Uint8Array(result), count, stride, source, extensionDef.mode, extensionDef.filter);\n return result;\n });\n } else {\n return null;\n }\n }\n\n}\n/* BINARY EXTENSION */\n\n\nconst BINARY_EXTENSION_HEADER_MAGIC = 'glTF';\nconst BINARY_EXTENSION_HEADER_LENGTH = 12;\nconst BINARY_EXTENSION_CHUNK_TYPES = {\n JSON: 0x4e4f534a,\n BIN: 0x004e4942\n};\n\nclass GLTFBinaryExtension {\n constructor(data) {\n this.name = EXTENSIONS.KHR_BINARY_GLTF;\n this.content = null;\n this.body = null;\n const headerView = new DataView(data, 0, BINARY_EXTENSION_HEADER_LENGTH);\n this.header = {\n magic: LoaderUtils.decodeText(new Uint8Array(data.slice(0, 4))),\n version: headerView.getUint32(4, true),\n length: headerView.getUint32(8, true)\n };\n\n if (this.header.magic !== BINARY_EXTENSION_HEADER_MAGIC) {\n throw new Error('THREE.GLTFLoader: Unsupported glTF-Binary header.');\n } else if (this.header.version < 2.0) {\n throw new Error('THREE.GLTFLoader: Legacy binary file detected.');\n }\n\n const chunkContentsLength = this.header.length - BINARY_EXTENSION_HEADER_LENGTH;\n const chunkView = new DataView(data, BINARY_EXTENSION_HEADER_LENGTH);\n let chunkIndex = 0;\n\n while (chunkIndex < chunkContentsLength) {\n const chunkLength = chunkView.getUint32(chunkIndex, true);\n chunkIndex += 4;\n const chunkType = chunkView.getUint32(chunkIndex, true);\n chunkIndex += 4;\n\n if (chunkType === BINARY_EXTENSION_CHUNK_TYPES.JSON) {\n const contentArray = new Uint8Array(data, BINARY_EXTENSION_HEADER_LENGTH + chunkIndex, chunkLength);\n this.content = LoaderUtils.decodeText(contentArray);\n } else if (chunkType === BINARY_EXTENSION_CHUNK_TYPES.BIN) {\n const byteOffset = BINARY_EXTENSION_HEADER_LENGTH + chunkIndex;\n this.body = data.slice(byteOffset, byteOffset + chunkLength);\n } // Clients must ignore chunks with unknown types.\n\n\n chunkIndex += chunkLength;\n }\n\n if (this.content === null) {\n throw new Error('THREE.GLTFLoader: JSON content not found.');\n }\n }\n\n}\n/**\n * DRACO Mesh Compression Extension\n *\n * Specification: https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Khronos/KHR_draco_mesh_compression\n */\n\n\nclass GLTFDracoMeshCompressionExtension {\n constructor(json, dracoLoader) {\n if (!dracoLoader) {\n throw new Error('THREE.GLTFLoader: No DRACOLoader instance provided.');\n }\n\n this.name = EXTENSIONS.KHR_DRACO_MESH_COMPRESSION;\n this.json = json;\n this.dracoLoader = dracoLoader;\n this.dracoLoader.preload();\n }\n\n decodePrimitive(primitive, parser) {\n const json = this.json;\n const dracoLoader = this.dracoLoader;\n const bufferViewIndex = primitive.extensions[this.name].bufferView;\n const gltfAttributeMap = primitive.extensions[this.name].attributes;\n const threeAttributeMap = {};\n const attributeNormalizedMap = {};\n const attributeTypeMap = {};\n\n for (const attributeName in gltfAttributeMap) {\n const threeAttributeName = ATTRIBUTES[attributeName] || attributeName.toLowerCase();\n threeAttributeMap[threeAttributeName] = gltfAttributeMap[attributeName];\n }\n\n for (const attributeName in primitive.attributes) {\n const threeAttributeName = ATTRIBUTES[attributeName] || attributeName.toLowerCase();\n\n if (gltfAttributeMap[attributeName] !== undefined) {\n const accessorDef = json.accessors[primitive.attributes[attributeName]];\n const componentType = WEBGL_COMPONENT_TYPES[accessorDef.componentType];\n attributeTypeMap[threeAttributeName] = componentType;\n attributeNormalizedMap[threeAttributeName] = accessorDef.normalized === true;\n }\n }\n\n return parser.getDependency('bufferView', bufferViewIndex).then(function (bufferView) {\n return new Promise(function (resolve) {\n dracoLoader.decodeDracoFile(bufferView, function (geometry) {\n for (const attributeName in geometry.attributes) {\n const attribute = geometry.attributes[attributeName];\n const normalized = attributeNormalizedMap[attributeName];\n if (normalized !== undefined) attribute.normalized = normalized;\n }\n\n resolve(geometry);\n }, threeAttributeMap, attributeTypeMap);\n });\n });\n }\n\n}\n/**\n * Texture Transform Extension\n *\n * Specification: https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Khronos/KHR_texture_transform\n */\n\n\nclass GLTFTextureTransformExtension {\n constructor() {\n this.name = EXTENSIONS.KHR_TEXTURE_TRANSFORM;\n }\n\n extendTexture(texture, transform) {\n if (transform.texCoord !== undefined) {\n console.warn('THREE.GLTFLoader: Custom UV sets in \"' + this.name + '\" extension not yet supported.');\n }\n\n if (transform.offset === undefined && transform.rotation === undefined && transform.scale === undefined) {\n // See https://github.com/mrdoob/three.js/issues/21819.\n return texture;\n }\n\n texture = texture.clone();\n\n if (transform.offset !== undefined) {\n texture.offset.fromArray(transform.offset);\n }\n\n if (transform.rotation !== undefined) {\n texture.rotation = transform.rotation;\n }\n\n if (transform.scale !== undefined) {\n texture.repeat.fromArray(transform.scale);\n }\n\n texture.needsUpdate = true;\n return texture;\n }\n\n}\n/**\n * Specular-Glossiness Extension\n *\n * Specification: https://github.com/KhronosGroup/glTF/tree/main/extensions/2.0/Archived/KHR_materials_pbrSpecularGlossiness\n */\n\n/**\n * A sub class of StandardMaterial with some of the functionality\n * changed via the `onBeforeCompile` callback\n * @pailhead\n */\n\n\nclass GLTFMeshStandardSGMaterial extends MeshStandardMaterial {\n constructor(params) {\n super();\n this.isGLTFSpecularGlossinessMaterial = true; //various chunks that need replacing\n\n const specularMapParsFragmentChunk = ['#ifdef USE_SPECULARMAP', '\tuniform sampler2D specularMap;', '#endif'].join('\\n');\n const glossinessMapParsFragmentChunk = ['#ifdef USE_GLOSSINESSMAP', '\tuniform sampler2D glossinessMap;', '#endif'].join('\\n');\n const specularMapFragmentChunk = ['vec3 specularFactor = specular;', '#ifdef USE_SPECULARMAP', '\tvec4 texelSpecular = texture2D( specularMap, vUv );', '\t// reads channel RGB, compatible with a glTF Specular-Glossiness (RGBA) texture', '\tspecularFactor *= texelSpecular.rgb;', '#endif'].join('\\n');\n const glossinessMapFragmentChunk = ['float glossinessFactor = glossiness;', '#ifdef USE_GLOSSINESSMAP', '\tvec4 texelGlossiness = texture2D( glossinessMap, vUv );', '\t// reads channel A, compatible with a glTF Specular-Glossiness (RGBA) texture', '\tglossinessFactor *= texelGlossiness.a;', '#endif'].join('\\n');\n const lightPhysicalFragmentChunk = ['PhysicalMaterial material;', 'material.diffuseColor = diffuseColor.rgb * ( 1. - max( specularFactor.r, max( specularFactor.g, specularFactor.b ) ) );', 'vec3 dxy = max( abs( dFdx( geometryNormal ) ), abs( dFdy( geometryNormal ) ) );', 'float geometryRoughness = max( max( dxy.x, dxy.y ), dxy.z );', 'material.roughness = max( 1.0 - glossinessFactor, 0.0525 ); // 0.0525 corresponds to the base mip of a 256 cubemap.', 'material.roughness += geometryRoughness;', 'material.roughness = min( material.roughness, 1.0 );', 'material.specularColor = specularFactor;'].join('\\n');\n const uniforms = {\n specular: {\n value: new Color().setHex(0xffffff)\n },\n glossiness: {\n value: 1\n },\n specularMap: {\n value: null\n },\n glossinessMap: {\n value: null\n }\n };\n this._extraUniforms = uniforms;\n\n this.onBeforeCompile = function (shader) {\n for (const uniformName in uniforms) {\n shader.uniforms[uniformName] = uniforms[uniformName];\n }\n\n shader.fragmentShader = shader.fragmentShader.replace('uniform float roughness;', 'uniform vec3 specular;').replace('uniform float metalness;', 'uniform float glossiness;').replace('#include ', specularMapParsFragmentChunk).replace('#include ', glossinessMapParsFragmentChunk).replace('#include ', specularMapFragmentChunk).replace('#include ', glossinessMapFragmentChunk).replace('#include ', lightPhysicalFragmentChunk);\n };\n\n Object.defineProperties(this, {\n specular: {\n get: function () {\n return uniforms.specular.value;\n },\n set: function (v) {\n uniforms.specular.value = v;\n }\n },\n specularMap: {\n get: function () {\n return uniforms.specularMap.value;\n },\n set: function (v) {\n uniforms.specularMap.value = v;\n\n if (v) {\n this.defines.USE_SPECULARMAP = ''; // USE_UV is set by the renderer for specular maps\n } else {\n delete this.defines.USE_SPECULARMAP;\n }\n }\n },\n glossiness: {\n get: function () {\n return uniforms.glossiness.value;\n },\n set: function (v) {\n uniforms.glossiness.value = v;\n }\n },\n glossinessMap: {\n get: function () {\n return uniforms.glossinessMap.value;\n },\n set: function (v) {\n uniforms.glossinessMap.value = v;\n\n if (v) {\n this.defines.USE_GLOSSINESSMAP = '';\n this.defines.USE_UV = '';\n } else {\n delete this.defines.USE_GLOSSINESSMAP;\n delete this.defines.USE_UV;\n }\n }\n }\n });\n delete this.metalness;\n delete this.roughness;\n delete this.metalnessMap;\n delete this.roughnessMap;\n this.setValues(params);\n }\n\n copy(source) {\n super.copy(source);\n this.specularMap = source.specularMap;\n this.specular.copy(source.specular);\n this.glossinessMap = source.glossinessMap;\n this.glossiness = source.glossiness;\n delete this.metalness;\n delete this.roughness;\n delete this.metalnessMap;\n delete this.roughnessMap;\n return this;\n }\n\n}\n\nclass GLTFMaterialsPbrSpecularGlossinessExtension {\n constructor() {\n this.name = EXTENSIONS.KHR_MATERIALS_PBR_SPECULAR_GLOSSINESS;\n this.specularGlossinessParams = ['color', 'map', 'lightMap', 'lightMapIntensity', 'aoMap', 'aoMapIntensity', 'emissive', 'emissiveIntensity', 'emissiveMap', 'bumpMap', 'bumpScale', 'normalMap', 'normalMapType', 'displacementMap', 'displacementScale', 'displacementBias', 'specularMap', 'specular', 'glossinessMap', 'glossiness', 'alphaMap', 'envMap', 'envMapIntensity', 'refractionRatio'];\n }\n\n getMaterialType() {\n return GLTFMeshStandardSGMaterial;\n }\n\n extendParams(materialParams, materialDef, parser) {\n const pbrSpecularGlossiness = materialDef.extensions[this.name];\n materialParams.color = new Color(1.0, 1.0, 1.0);\n materialParams.opacity = 1.0;\n const pending = [];\n\n if (Array.isArray(pbrSpecularGlossiness.diffuseFactor)) {\n const array = pbrSpecularGlossiness.diffuseFactor;\n materialParams.color.fromArray(array);\n materialParams.opacity = array[3];\n }\n\n if (pbrSpecularGlossiness.diffuseTexture !== undefined) {\n pending.push(parser.assignTexture(materialParams, 'map', pbrSpecularGlossiness.diffuseTexture));\n }\n\n materialParams.emissive = new Color(0.0, 0.0, 0.0);\n materialParams.glossiness = pbrSpecularGlossiness.glossinessFactor !== undefined ? pbrSpecularGlossiness.glossinessFactor : 1.0;\n materialParams.specular = new Color(1.0, 1.0, 1.0);\n\n if (Array.isArray(pbrSpecularGlossiness.specularFactor)) {\n materialParams.specular.fromArray(pbrSpecularGlossiness.specularFactor);\n }\n\n if (pbrSpecularGlossiness.specularGlossinessTexture !== undefined) {\n const specGlossMapDef = pbrSpecularGlossiness.specularGlossinessTexture;\n pending.push(parser.assignTexture(materialParams, 'glossinessMap', specGlossMapDef));\n pending.push(parser.assignTexture(materialParams, 'specularMap', specGlossMapDef));\n }\n\n return Promise.all(pending);\n }\n\n createMaterial(materialParams) {\n const material = new GLTFMeshStandardSGMaterial(materialParams);\n material.fog = true;\n material.color = materialParams.color;\n material.map = materialParams.map === undefined ? null : materialParams.map;\n material.lightMap = null;\n material.lightMapIntensity = 1.0;\n material.aoMap = materialParams.aoMap === undefined ? null : materialParams.aoMap;\n material.aoMapIntensity = 1.0;\n material.emissive = materialParams.emissive;\n material.emissiveIntensity = 1.0;\n material.emissiveMap = materialParams.emissiveMap === undefined ? null : materialParams.emissiveMap;\n material.bumpMap = materialParams.bumpMap === undefined ? null : materialParams.bumpMap;\n material.bumpScale = 1;\n material.normalMap = materialParams.normalMap === undefined ? null : materialParams.normalMap;\n material.normalMapType = TangentSpaceNormalMap;\n if (materialParams.normalScale) material.normalScale = materialParams.normalScale;\n material.displacementMap = null;\n material.displacementScale = 1;\n material.displacementBias = 0;\n material.specularMap = materialParams.specularMap === undefined ? null : materialParams.specularMap;\n material.specular = materialParams.specular;\n material.glossinessMap = materialParams.glossinessMap === undefined ? null : materialParams.glossinessMap;\n material.glossiness = materialParams.glossiness;\n material.alphaMap = null;\n material.envMap = materialParams.envMap === undefined ? null : materialParams.envMap;\n material.envMapIntensity = 1.0;\n material.refractionRatio = 0.98;\n return material;\n }\n\n}\n/**\n * Mesh Quantization Extension\n *\n * Specification: https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Khronos/KHR_mesh_quantization\n */\n\n\nclass GLTFMeshQuantizationExtension {\n constructor() {\n this.name = EXTENSIONS.KHR_MESH_QUANTIZATION;\n }\n\n}\n/*********************************/\n\n/********** INTERPOLATION ********/\n\n/*********************************/\n// Spline Interpolation\n// Specification: https://github.com/KhronosGroup/glTF/blob/master/specification/2.0/README.md#appendix-c-spline-interpolation\n\n\nclass GLTFCubicSplineInterpolant extends Interpolant {\n constructor(parameterPositions, sampleValues, sampleSize, resultBuffer) {\n super(parameterPositions, sampleValues, sampleSize, resultBuffer);\n }\n\n copySampleValue_(index) {\n // Copies a sample value to the result buffer. See description of glTF\n // CUBICSPLINE values layout in interpolate_() function below.\n const result = this.resultBuffer,\n values = this.sampleValues,\n valueSize = this.valueSize,\n offset = index * valueSize * 3 + valueSize;\n\n for (let i = 0; i !== valueSize; i++) {\n result[i] = values[offset + i];\n }\n\n return result;\n }\n\n}\n\nGLTFCubicSplineInterpolant.prototype.beforeStart_ = GLTFCubicSplineInterpolant.prototype.copySampleValue_;\nGLTFCubicSplineInterpolant.prototype.afterEnd_ = GLTFCubicSplineInterpolant.prototype.copySampleValue_;\n\nGLTFCubicSplineInterpolant.prototype.interpolate_ = function (i1, t0, t, t1) {\n const result = this.resultBuffer;\n const values = this.sampleValues;\n const stride = this.valueSize;\n const stride2 = stride * 2;\n const stride3 = stride * 3;\n const td = t1 - t0;\n const p = (t - t0) / td;\n const pp = p * p;\n const ppp = pp * p;\n const offset1 = i1 * stride3;\n const offset0 = offset1 - stride3;\n const s2 = -2 * ppp + 3 * pp;\n const s3 = ppp - pp;\n const s0 = 1 - s2;\n const s1 = s3 - pp + p; // Layout of keyframe output values for CUBICSPLINE animations:\n // [ inTangent_1, splineVertex_1, outTangent_1, inTangent_2, splineVertex_2, ... ]\n\n for (let i = 0; i !== stride; i++) {\n const p0 = values[offset0 + i + stride]; // splineVertex_k\n\n const m0 = values[offset0 + i + stride2] * td; // outTangent_k * (t_k+1 - t_k)\n\n const p1 = values[offset1 + i + stride]; // splineVertex_k+1\n\n const m1 = values[offset1 + i] * td; // inTangent_k+1 * (t_k+1 - t_k)\n\n result[i] = s0 * p0 + s1 * m0 + s2 * p1 + s3 * m1;\n }\n\n return result;\n};\n\nconst _q = new Quaternion();\n\nclass GLTFCubicSplineQuaternionInterpolant extends GLTFCubicSplineInterpolant {\n interpolate_(i1, t0, t, t1) {\n const result = super.interpolate_(i1, t0, t, t1);\n\n _q.fromArray(result).normalize().toArray(result);\n\n return result;\n }\n\n}\n/*********************************/\n\n/********** INTERNALS ************/\n\n/*********************************/\n\n/* CONSTANTS */\n\n\nconst WEBGL_CONSTANTS = {\n FLOAT: 5126,\n //FLOAT_MAT2: 35674,\n FLOAT_MAT3: 35675,\n FLOAT_MAT4: 35676,\n FLOAT_VEC2: 35664,\n FLOAT_VEC3: 35665,\n FLOAT_VEC4: 35666,\n LINEAR: 9729,\n REPEAT: 10497,\n SAMPLER_2D: 35678,\n POINTS: 0,\n LINES: 1,\n LINE_LOOP: 2,\n LINE_STRIP: 3,\n TRIANGLES: 4,\n TRIANGLE_STRIP: 5,\n TRIANGLE_FAN: 6,\n UNSIGNED_BYTE: 5121,\n UNSIGNED_SHORT: 5123\n};\nconst WEBGL_COMPONENT_TYPES = {\n 5120: Int8Array,\n 5121: Uint8Array,\n 5122: Int16Array,\n 5123: Uint16Array,\n 5125: Uint32Array,\n 5126: Float32Array\n};\nconst WEBGL_FILTERS = {\n 9728: NearestFilter,\n 9729: LinearFilter,\n 9984: NearestMipmapNearestFilter,\n 9985: LinearMipmapNearestFilter,\n 9986: NearestMipmapLinearFilter,\n 9987: LinearMipmapLinearFilter\n};\nconst WEBGL_WRAPPINGS = {\n 33071: ClampToEdgeWrapping,\n 33648: MirroredRepeatWrapping,\n 10497: RepeatWrapping\n};\nconst WEBGL_TYPE_SIZES = {\n SCALAR: 1,\n VEC2: 2,\n VEC3: 3,\n VEC4: 4,\n MAT2: 4,\n MAT3: 9,\n MAT4: 16\n};\nconst ATTRIBUTES = {\n POSITION: 'position',\n NORMAL: 'normal',\n TANGENT: 'tangent',\n TEXCOORD_0: 'uv',\n TEXCOORD_1: 'uv2',\n COLOR_0: 'color',\n WEIGHTS_0: 'skinWeight',\n JOINTS_0: 'skinIndex'\n};\nconst PATH_PROPERTIES = {\n scale: 'scale',\n translation: 'position',\n rotation: 'quaternion',\n weights: 'morphTargetInfluences'\n};\nconst INTERPOLATION = {\n CUBICSPLINE: undefined,\n // We use a custom interpolant (GLTFCubicSplineInterpolation) for CUBICSPLINE tracks. Each\n // keyframe track will be initialized with a default interpolation type, then modified.\n LINEAR: InterpolateLinear,\n STEP: InterpolateDiscrete\n};\nconst ALPHA_MODES = {\n OPAQUE: 'OPAQUE',\n MASK: 'MASK',\n BLEND: 'BLEND'\n};\n/**\n * Specification: https://github.com/KhronosGroup/glTF/blob/master/specification/2.0/README.md#default-material\n */\n\nfunction createDefaultMaterial(cache) {\n if (cache['DefaultMaterial'] === undefined) {\n cache['DefaultMaterial'] = new MeshStandardMaterial({\n color: 0xffffff,\n emissive: 0x000000,\n metalness: 1,\n roughness: 1,\n transparent: false,\n depthTest: true,\n side: FrontSide\n });\n }\n\n return cache['DefaultMaterial'];\n}\n\nfunction addUnknownExtensionsToUserData(knownExtensions, object, objectDef) {\n // Add unknown glTF extensions to an object's userData.\n for (const name in objectDef.extensions) {\n if (knownExtensions[name] === undefined) {\n object.userData.gltfExtensions = object.userData.gltfExtensions || {};\n object.userData.gltfExtensions[name] = objectDef.extensions[name];\n }\n }\n}\n/**\n * @param {Object3D|Material|BufferGeometry} object\n * @param {GLTF.definition} gltfDef\n */\n\n\nfunction assignExtrasToUserData(object, gltfDef) {\n if (gltfDef.extras !== undefined) {\n if (typeof gltfDef.extras === 'object') {\n Object.assign(object.userData, gltfDef.extras);\n } else {\n console.warn('THREE.GLTFLoader: Ignoring primitive type .extras, ' + gltfDef.extras);\n }\n }\n}\n/**\n * Specification: https://github.com/KhronosGroup/glTF/blob/master/specification/2.0/README.md#morph-targets\n *\n * @param {BufferGeometry} geometry\n * @param {Array} targets\n * @param {GLTFParser} parser\n * @return {Promise}\n */\n\n\nfunction addMorphTargets(geometry, targets, parser) {\n let hasMorphPosition = false;\n let hasMorphNormal = false;\n\n for (let i = 0, il = targets.length; i < il; i++) {\n const target = targets[i];\n if (target.POSITION !== undefined) hasMorphPosition = true;\n if (target.NORMAL !== undefined) hasMorphNormal = true;\n if (hasMorphPosition && hasMorphNormal) break;\n }\n\n if (!hasMorphPosition && !hasMorphNormal) return Promise.resolve(geometry);\n const pendingPositionAccessors = [];\n const pendingNormalAccessors = [];\n\n for (let i = 0, il = targets.length; i < il; i++) {\n const target = targets[i];\n\n if (hasMorphPosition) {\n const pendingAccessor = target.POSITION !== undefined ? parser.getDependency('accessor', target.POSITION) : geometry.attributes.position;\n pendingPositionAccessors.push(pendingAccessor);\n }\n\n if (hasMorphNormal) {\n const pendingAccessor = target.NORMAL !== undefined ? parser.getDependency('accessor', target.NORMAL) : geometry.attributes.normal;\n pendingNormalAccessors.push(pendingAccessor);\n }\n }\n\n return Promise.all([Promise.all(pendingPositionAccessors), Promise.all(pendingNormalAccessors)]).then(function (accessors) {\n const morphPositions = accessors[0];\n const morphNormals = accessors[1];\n if (hasMorphPosition) geometry.morphAttributes.position = morphPositions;\n if (hasMorphNormal) geometry.morphAttributes.normal = morphNormals;\n geometry.morphTargetsRelative = true;\n return geometry;\n });\n}\n/**\n * @param {Mesh} mesh\n * @param {GLTF.Mesh} meshDef\n */\n\n\nfunction updateMorphTargets(mesh, meshDef) {\n mesh.updateMorphTargets();\n\n if (meshDef.weights !== undefined) {\n for (let i = 0, il = meshDef.weights.length; i < il; i++) {\n mesh.morphTargetInfluences[i] = meshDef.weights[i];\n }\n } // .extras has user-defined data, so check that .extras.targetNames is an array.\n\n\n if (meshDef.extras && Array.isArray(meshDef.extras.targetNames)) {\n const targetNames = meshDef.extras.targetNames;\n\n if (mesh.morphTargetInfluences.length === targetNames.length) {\n mesh.morphTargetDictionary = {};\n\n for (let i = 0, il = targetNames.length; i < il; i++) {\n mesh.morphTargetDictionary[targetNames[i]] = i;\n }\n } else {\n console.warn('THREE.GLTFLoader: Invalid extras.targetNames length. Ignoring names.');\n }\n }\n}\n\nfunction createPrimitiveKey(primitiveDef) {\n const dracoExtension = primitiveDef.extensions && primitiveDef.extensions[EXTENSIONS.KHR_DRACO_MESH_COMPRESSION];\n let geometryKey;\n\n if (dracoExtension) {\n geometryKey = 'draco:' + dracoExtension.bufferView + ':' + dracoExtension.indices + ':' + createAttributesKey(dracoExtension.attributes);\n } else {\n geometryKey = primitiveDef.indices + ':' + createAttributesKey(primitiveDef.attributes) + ':' + primitiveDef.mode;\n }\n\n return geometryKey;\n}\n\nfunction createAttributesKey(attributes) {\n let attributesKey = '';\n const keys = Object.keys(attributes).sort();\n\n for (let i = 0, il = keys.length; i < il; i++) {\n attributesKey += keys[i] + ':' + attributes[keys[i]] + ';';\n }\n\n return attributesKey;\n}\n\nfunction getNormalizedComponentScale(constructor) {\n // Reference:\n // https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Khronos/KHR_mesh_quantization#encoding-quantized-data\n switch (constructor) {\n case Int8Array:\n return 1 / 127;\n\n case Uint8Array:\n return 1 / 255;\n\n case Int16Array:\n return 1 / 32767;\n\n case Uint16Array:\n return 1 / 65535;\n\n default:\n throw new Error('THREE.GLTFLoader: Unsupported normalized accessor component type.');\n }\n}\n/* GLTF PARSER */\n\n\nclass GLTFParser {\n constructor(json = {}, options = {}) {\n this.json = json;\n this.extensions = {};\n this.plugins = {};\n this.options = options; // loader object cache\n\n this.cache = new GLTFRegistry(); // associations between Three.js objects and glTF elements\n\n this.associations = new Map(); // BufferGeometry caching\n\n this.primitiveCache = {}; // Object3D instance caches\n\n this.meshCache = {\n refs: {},\n uses: {}\n };\n this.cameraCache = {\n refs: {},\n uses: {}\n };\n this.lightCache = {\n refs: {},\n uses: {}\n };\n this.textureCache = {}; // Track node names, to ensure no duplicates\n\n this.nodeNamesUsed = {}; // Use an ImageBitmapLoader if imageBitmaps are supported. Moves much of the\n // expensive work of uploading a texture to the GPU off the main thread.\n\n if (typeof createImageBitmap !== 'undefined' && /Firefox|^((?!chrome|android).)*safari/i.test(navigator.userAgent) === false) {\n this.textureLoader = new ImageBitmapLoader(this.options.manager);\n } else {\n this.textureLoader = new TextureLoader(this.options.manager);\n }\n\n this.textureLoader.setCrossOrigin(this.options.crossOrigin);\n this.textureLoader.setRequestHeader(this.options.requestHeader);\n this.fileLoader = new FileLoader(this.options.manager);\n this.fileLoader.setResponseType('arraybuffer');\n\n if (this.options.crossOrigin === 'use-credentials') {\n this.fileLoader.setWithCredentials(true);\n }\n }\n\n setExtensions(extensions) {\n this.extensions = extensions;\n }\n\n setPlugins(plugins) {\n this.plugins = plugins;\n }\n\n parse(onLoad, onError) {\n const parser = this;\n const json = this.json;\n const extensions = this.extensions; // Clear the loader cache\n\n this.cache.removeAll(); // Mark the special nodes/meshes in json for efficient parse\n\n this._invokeAll(function (ext) {\n return ext._markDefs && ext._markDefs();\n });\n\n Promise.all(this._invokeAll(function (ext) {\n return ext.beforeRoot && ext.beforeRoot();\n })).then(function () {\n return Promise.all([parser.getDependencies('scene'), parser.getDependencies('animation'), parser.getDependencies('camera')]);\n }).then(function (dependencies) {\n const result = {\n scene: dependencies[0][json.scene || 0],\n scenes: dependencies[0],\n animations: dependencies[1],\n cameras: dependencies[2],\n asset: json.asset,\n parser: parser,\n userData: {}\n };\n addUnknownExtensionsToUserData(extensions, result, json);\n assignExtrasToUserData(result, json);\n Promise.all(parser._invokeAll(function (ext) {\n return ext.afterRoot && ext.afterRoot(result);\n })).then(function () {\n onLoad(result);\n });\n }).catch(onError);\n }\n /**\n * Marks the special nodes/meshes in json for efficient parse.\n */\n\n\n _markDefs() {\n const nodeDefs = this.json.nodes || [];\n const skinDefs = this.json.skins || [];\n const meshDefs = this.json.meshes || []; // Nothing in the node definition indicates whether it is a Bone or an\n // Object3D. Use the skins' joint references to mark bones.\n\n for (let skinIndex = 0, skinLength = skinDefs.length; skinIndex < skinLength; skinIndex++) {\n const joints = skinDefs[skinIndex].joints;\n\n for (let i = 0, il = joints.length; i < il; i++) {\n nodeDefs[joints[i]].isBone = true;\n }\n } // Iterate over all nodes, marking references to shared resources,\n // as well as skeleton joints.\n\n\n for (let nodeIndex = 0, nodeLength = nodeDefs.length; nodeIndex < nodeLength; nodeIndex++) {\n const nodeDef = nodeDefs[nodeIndex];\n\n if (nodeDef.mesh !== undefined) {\n this._addNodeRef(this.meshCache, nodeDef.mesh); // Nothing in the mesh definition indicates whether it is\n // a SkinnedMesh or Mesh. Use the node's mesh reference\n // to mark SkinnedMesh if node has skin.\n\n\n if (nodeDef.skin !== undefined) {\n meshDefs[nodeDef.mesh].isSkinnedMesh = true;\n }\n }\n\n if (nodeDef.camera !== undefined) {\n this._addNodeRef(this.cameraCache, nodeDef.camera);\n }\n }\n }\n /**\n * Counts references to shared node / Object3D resources. These resources\n * can be reused, or \"instantiated\", at multiple nodes in the scene\n * hierarchy. Mesh, Camera, and Light instances are instantiated and must\n * be marked. Non-scenegraph resources (like Materials, Geometries, and\n * Textures) can be reused directly and are not marked here.\n *\n * Example: CesiumMilkTruck sample model reuses \"Wheel\" meshes.\n */\n\n\n _addNodeRef(cache, index) {\n if (index === undefined) return;\n\n if (cache.refs[index] === undefined) {\n cache.refs[index] = cache.uses[index] = 0;\n }\n\n cache.refs[index]++;\n }\n /** Returns a reference to a shared resource, cloning it if necessary. */\n\n\n _getNodeRef(cache, index, object) {\n if (cache.refs[index] <= 1) return object;\n const ref = object.clone(); // Propagates mappings to the cloned object, prevents mappings on the\n // original object from being lost.\n\n const updateMappings = (original, clone) => {\n const mappings = this.associations.get(original);\n\n if (mappings != null) {\n this.associations.set(clone, mappings);\n }\n\n for (const [i, child] of original.children.entries()) {\n updateMappings(child, clone.children[i]);\n }\n };\n\n updateMappings(object, ref);\n ref.name += '_instance_' + cache.uses[index]++;\n return ref;\n }\n\n _invokeOne(func) {\n const extensions = Object.values(this.plugins);\n extensions.push(this);\n\n for (let i = 0; i < extensions.length; i++) {\n const result = func(extensions[i]);\n if (result) return result;\n }\n\n return null;\n }\n\n _invokeAll(func) {\n const extensions = Object.values(this.plugins);\n extensions.unshift(this);\n const pending = [];\n\n for (let i = 0; i < extensions.length; i++) {\n const result = func(extensions[i]);\n if (result) pending.push(result);\n }\n\n return pending;\n }\n /**\n * Requests the specified dependency asynchronously, with caching.\n * @param {string} type\n * @param {number} index\n * @return {Promise}\n */\n\n\n getDependency(type, index) {\n const cacheKey = type + ':' + index;\n let dependency = this.cache.get(cacheKey);\n\n if (!dependency) {\n switch (type) {\n case 'scene':\n dependency = this.loadScene(index);\n break;\n\n case 'node':\n dependency = this.loadNode(index);\n break;\n\n case 'mesh':\n dependency = this._invokeOne(function (ext) {\n return ext.loadMesh && ext.loadMesh(index);\n });\n break;\n\n case 'accessor':\n dependency = this.loadAccessor(index);\n break;\n\n case 'bufferView':\n dependency = this._invokeOne(function (ext) {\n return ext.loadBufferView && ext.loadBufferView(index);\n });\n break;\n\n case 'buffer':\n dependency = this.loadBuffer(index);\n break;\n\n case 'material':\n dependency = this._invokeOne(function (ext) {\n return ext.loadMaterial && ext.loadMaterial(index);\n });\n break;\n\n case 'texture':\n dependency = this._invokeOne(function (ext) {\n return ext.loadTexture && ext.loadTexture(index);\n });\n break;\n\n case 'skin':\n dependency = this.loadSkin(index);\n break;\n\n case 'animation':\n dependency = this.loadAnimation(index);\n break;\n\n case 'camera':\n dependency = this.loadCamera(index);\n break;\n\n default:\n throw new Error('Unknown type: ' + type);\n }\n\n this.cache.add(cacheKey, dependency);\n }\n\n return dependency;\n }\n /**\n * Requests all dependencies of the specified type asynchronously, with caching.\n * @param {string} type\n * @return {Promise>}\n */\n\n\n getDependencies(type) {\n let dependencies = this.cache.get(type);\n\n if (!dependencies) {\n const parser = this;\n const defs = this.json[type + (type === 'mesh' ? 'es' : 's')] || [];\n dependencies = Promise.all(defs.map(function (def, index) {\n return parser.getDependency(type, index);\n }));\n this.cache.add(type, dependencies);\n }\n\n return dependencies;\n }\n /**\n * Specification: https://github.com/KhronosGroup/glTF/blob/master/specification/2.0/README.md#buffers-and-buffer-views\n * @param {number} bufferIndex\n * @return {Promise}\n */\n\n\n loadBuffer(bufferIndex) {\n const bufferDef = this.json.buffers[bufferIndex];\n const loader = this.fileLoader;\n\n if (bufferDef.type && bufferDef.type !== 'arraybuffer') {\n throw new Error('THREE.GLTFLoader: ' + bufferDef.type + ' buffer type is not supported.');\n } // If present, GLB container is required to be the first buffer.\n\n\n if (bufferDef.uri === undefined && bufferIndex === 0) {\n return Promise.resolve(this.extensions[EXTENSIONS.KHR_BINARY_GLTF].body);\n }\n\n const options = this.options;\n return new Promise(function (resolve, reject) {\n loader.load(LoaderUtils.resolveURL(bufferDef.uri, options.path), resolve, undefined, function () {\n reject(new Error('THREE.GLTFLoader: Failed to load buffer \"' + bufferDef.uri + '\".'));\n });\n });\n }\n /**\n * Specification: https://github.com/KhronosGroup/glTF/blob/master/specification/2.0/README.md#buffers-and-buffer-views\n * @param {number} bufferViewIndex\n * @return {Promise}\n */\n\n\n loadBufferView(bufferViewIndex) {\n const bufferViewDef = this.json.bufferViews[bufferViewIndex];\n return this.getDependency('buffer', bufferViewDef.buffer).then(function (buffer) {\n const byteLength = bufferViewDef.byteLength || 0;\n const byteOffset = bufferViewDef.byteOffset || 0;\n return buffer.slice(byteOffset, byteOffset + byteLength);\n });\n }\n /**\n * Specification: https://github.com/KhronosGroup/glTF/blob/master/specification/2.0/README.md#accessors\n * @param {number} accessorIndex\n * @return {Promise}\n */\n\n\n loadAccessor(accessorIndex) {\n const parser = this;\n const json = this.json;\n const accessorDef = this.json.accessors[accessorIndex];\n\n if (accessorDef.bufferView === undefined && accessorDef.sparse === undefined) {\n // Ignore empty accessors, which may be used to declare runtime\n // information about attributes coming from another source (e.g. Draco\n // compression extension).\n return Promise.resolve(null);\n }\n\n const pendingBufferViews = [];\n\n if (accessorDef.bufferView !== undefined) {\n pendingBufferViews.push(this.getDependency('bufferView', accessorDef.bufferView));\n } else {\n pendingBufferViews.push(null);\n }\n\n if (accessorDef.sparse !== undefined) {\n pendingBufferViews.push(this.getDependency('bufferView', accessorDef.sparse.indices.bufferView));\n pendingBufferViews.push(this.getDependency('bufferView', accessorDef.sparse.values.bufferView));\n }\n\n return Promise.all(pendingBufferViews).then(function (bufferViews) {\n const bufferView = bufferViews[0];\n const itemSize = WEBGL_TYPE_SIZES[accessorDef.type];\n const TypedArray = WEBGL_COMPONENT_TYPES[accessorDef.componentType]; // For VEC3: itemSize is 3, elementBytes is 4, itemBytes is 12.\n\n const elementBytes = TypedArray.BYTES_PER_ELEMENT;\n const itemBytes = elementBytes * itemSize;\n const byteOffset = accessorDef.byteOffset || 0;\n const byteStride = accessorDef.bufferView !== undefined ? json.bufferViews[accessorDef.bufferView].byteStride : undefined;\n const normalized = accessorDef.normalized === true;\n let array, bufferAttribute; // The buffer is not interleaved if the stride is the item size in bytes.\n\n if (byteStride && byteStride !== itemBytes) {\n // Each \"slice\" of the buffer, as defined by 'count' elements of 'byteStride' bytes, gets its own InterleavedBuffer\n // This makes sure that IBA.count reflects accessor.count properly\n const ibSlice = Math.floor(byteOffset / byteStride);\n const ibCacheKey = 'InterleavedBuffer:' + accessorDef.bufferView + ':' + accessorDef.componentType + ':' + ibSlice + ':' + accessorDef.count;\n let ib = parser.cache.get(ibCacheKey);\n\n if (!ib) {\n array = new TypedArray(bufferView, ibSlice * byteStride, accessorDef.count * byteStride / elementBytes); // Integer parameters to IB/IBA are in array elements, not bytes.\n\n ib = new InterleavedBuffer(array, byteStride / elementBytes);\n parser.cache.add(ibCacheKey, ib);\n }\n\n bufferAttribute = new InterleavedBufferAttribute(ib, itemSize, byteOffset % byteStride / elementBytes, normalized);\n } else {\n if (bufferView === null) {\n array = new TypedArray(accessorDef.count * itemSize);\n } else {\n array = new TypedArray(bufferView, byteOffset, accessorDef.count * itemSize);\n }\n\n bufferAttribute = new BufferAttribute(array, itemSize, normalized);\n } // https://github.com/KhronosGroup/glTF/blob/master/specification/2.0/README.md#sparse-accessors\n\n\n if (accessorDef.sparse !== undefined) {\n const itemSizeIndices = WEBGL_TYPE_SIZES.SCALAR;\n const TypedArrayIndices = WEBGL_COMPONENT_TYPES[accessorDef.sparse.indices.componentType];\n const byteOffsetIndices = accessorDef.sparse.indices.byteOffset || 0;\n const byteOffsetValues = accessorDef.sparse.values.byteOffset || 0;\n const sparseIndices = new TypedArrayIndices(bufferViews[1], byteOffsetIndices, accessorDef.sparse.count * itemSizeIndices);\n const sparseValues = new TypedArray(bufferViews[2], byteOffsetValues, accessorDef.sparse.count * itemSize);\n\n if (bufferView !== null) {\n // Avoid modifying the original ArrayBuffer, if the bufferView wasn't initialized with zeroes.\n bufferAttribute = new BufferAttribute(bufferAttribute.array.slice(), bufferAttribute.itemSize, bufferAttribute.normalized);\n }\n\n for (let i = 0, il = sparseIndices.length; i < il; i++) {\n const index = sparseIndices[i];\n bufferAttribute.setX(index, sparseValues[i * itemSize]);\n if (itemSize >= 2) bufferAttribute.setY(index, sparseValues[i * itemSize + 1]);\n if (itemSize >= 3) bufferAttribute.setZ(index, sparseValues[i * itemSize + 2]);\n if (itemSize >= 4) bufferAttribute.setW(index, sparseValues[i * itemSize + 3]);\n if (itemSize >= 5) throw new Error('THREE.GLTFLoader: Unsupported itemSize in sparse BufferAttribute.');\n }\n }\n\n return bufferAttribute;\n });\n }\n /**\n * Specification: https://github.com/KhronosGroup/glTF/tree/master/specification/2.0#textures\n * @param {number} textureIndex\n * @return {Promise}\n */\n\n\n loadTexture(textureIndex) {\n const json = this.json;\n const options = this.options;\n const textureDef = json.textures[textureIndex];\n const source = json.images[textureDef.source];\n let loader = this.textureLoader;\n\n if (source.uri) {\n const handler = options.manager.getHandler(source.uri);\n if (handler !== null) loader = handler;\n }\n\n return this.loadTextureImage(textureIndex, source, loader);\n }\n\n loadTextureImage(textureIndex, source, loader) {\n const parser = this;\n const json = this.json;\n const options = this.options;\n const textureDef = json.textures[textureIndex];\n const cacheKey = (source.uri || source.bufferView) + ':' + textureDef.sampler;\n\n if (this.textureCache[cacheKey]) {\n // See https://github.com/mrdoob/three.js/issues/21559.\n return this.textureCache[cacheKey];\n }\n\n const URL = self.URL || self.webkitURL;\n let sourceURI = source.uri || '';\n let isObjectURL = false;\n\n if (source.bufferView !== undefined) {\n // Load binary image data from bufferView, if provided.\n sourceURI = parser.getDependency('bufferView', source.bufferView).then(function (bufferView) {\n isObjectURL = true;\n const blob = new Blob([bufferView], {\n type: source.mimeType\n });\n sourceURI = URL.createObjectURL(blob);\n return sourceURI;\n });\n } else if (source.uri === undefined) {\n throw new Error('THREE.GLTFLoader: Image ' + textureIndex + ' is missing URI and bufferView');\n }\n\n const promise = Promise.resolve(sourceURI).then(function (sourceURI) {\n return new Promise(function (resolve, reject) {\n let onLoad = resolve;\n\n if (loader.isImageBitmapLoader === true) {\n onLoad = function (imageBitmap) {\n const texture = new Texture(imageBitmap);\n texture.needsUpdate = true;\n resolve(texture);\n };\n }\n\n loader.load(LoaderUtils.resolveURL(sourceURI, options.path), onLoad, undefined, reject);\n });\n }).then(function (texture) {\n // Clean up resources and configure Texture.\n if (isObjectURL === true) {\n URL.revokeObjectURL(sourceURI);\n }\n\n texture.flipY = false;\n if (textureDef.name) texture.name = textureDef.name;\n const samplers = json.samplers || {};\n const sampler = samplers[textureDef.sampler] || {};\n texture.magFilter = WEBGL_FILTERS[sampler.magFilter] || LinearFilter;\n texture.minFilter = WEBGL_FILTERS[sampler.minFilter] || LinearMipmapLinearFilter;\n texture.wrapS = WEBGL_WRAPPINGS[sampler.wrapS] || RepeatWrapping;\n texture.wrapT = WEBGL_WRAPPINGS[sampler.wrapT] || RepeatWrapping;\n parser.associations.set(texture, {\n textures: textureIndex\n });\n return texture;\n }).catch(function () {\n console.error(\"THREE.GLTFLoader: Couldn't load texture\", sourceURI);\n return null;\n });\n this.textureCache[cacheKey] = promise;\n return promise;\n }\n /**\n * Asynchronously assigns a texture to the given material parameters.\n * @param {Object} materialParams\n * @param {string} mapName\n * @param {Object} mapDef\n * @return {Promise}\n */\n\n\n assignTexture(materialParams, mapName, mapDef) {\n const parser = this;\n return this.getDependency('texture', mapDef.index).then(function (texture) {\n // Materials sample aoMap from UV set 1 and other maps from UV set 0 - this can't be configured\n // However, we will copy UV set 0 to UV set 1 on demand for aoMap\n if (mapDef.texCoord !== undefined && mapDef.texCoord != 0 && !(mapName === 'aoMap' && mapDef.texCoord == 1)) {\n console.warn('THREE.GLTFLoader: Custom UV set ' + mapDef.texCoord + ' for texture ' + mapName + ' not yet supported.');\n }\n\n if (parser.extensions[EXTENSIONS.KHR_TEXTURE_TRANSFORM]) {\n const transform = mapDef.extensions !== undefined ? mapDef.extensions[EXTENSIONS.KHR_TEXTURE_TRANSFORM] : undefined;\n\n if (transform) {\n const gltfReference = parser.associations.get(texture);\n texture = parser.extensions[EXTENSIONS.KHR_TEXTURE_TRANSFORM].extendTexture(texture, transform);\n parser.associations.set(texture, gltfReference);\n }\n }\n\n materialParams[mapName] = texture;\n return texture;\n });\n }\n /**\n * Assigns final material to a Mesh, Line, or Points instance. The instance\n * already has a material (generated from the glTF material options alone)\n * but reuse of the same glTF material may require multiple threejs materials\n * to accommodate different primitive types, defines, etc. New materials will\n * be created if necessary, and reused from a cache.\n * @param {Object3D} mesh Mesh, Line, or Points instance.\n */\n\n\n assignFinalMaterial(mesh) {\n const geometry = mesh.geometry;\n let material = mesh.material;\n const useDerivativeTangents = geometry.attributes.tangent === undefined;\n const useVertexColors = geometry.attributes.color !== undefined;\n const useFlatShading = geometry.attributes.normal === undefined;\n\n if (mesh.isPoints) {\n const cacheKey = 'PointsMaterial:' + material.uuid;\n let pointsMaterial = this.cache.get(cacheKey);\n\n if (!pointsMaterial) {\n pointsMaterial = new PointsMaterial();\n Material.prototype.copy.call(pointsMaterial, material);\n pointsMaterial.color.copy(material.color);\n pointsMaterial.map = material.map;\n pointsMaterial.sizeAttenuation = false; // glTF spec says points should be 1px\n\n this.cache.add(cacheKey, pointsMaterial);\n }\n\n material = pointsMaterial;\n } else if (mesh.isLine) {\n const cacheKey = 'LineBasicMaterial:' + material.uuid;\n let lineMaterial = this.cache.get(cacheKey);\n\n if (!lineMaterial) {\n lineMaterial = new LineBasicMaterial();\n Material.prototype.copy.call(lineMaterial, material);\n lineMaterial.color.copy(material.color);\n this.cache.add(cacheKey, lineMaterial);\n }\n\n material = lineMaterial;\n } // Clone the material if it will be modified\n\n\n if (useDerivativeTangents || useVertexColors || useFlatShading) {\n let cacheKey = 'ClonedMaterial:' + material.uuid + ':';\n if (material.isGLTFSpecularGlossinessMaterial) cacheKey += 'specular-glossiness:';\n if (useDerivativeTangents) cacheKey += 'derivative-tangents:';\n if (useVertexColors) cacheKey += 'vertex-colors:';\n if (useFlatShading) cacheKey += 'flat-shading:';\n let cachedMaterial = this.cache.get(cacheKey);\n\n if (!cachedMaterial) {\n cachedMaterial = material.clone();\n if (useVertexColors) cachedMaterial.vertexColors = true;\n if (useFlatShading) cachedMaterial.flatShading = true;\n\n if (useDerivativeTangents) {\n // https://github.com/mrdoob/three.js/issues/11438#issuecomment-507003995\n if (cachedMaterial.normalScale) cachedMaterial.normalScale.y *= -1;\n if (cachedMaterial.clearcoatNormalScale) cachedMaterial.clearcoatNormalScale.y *= -1;\n }\n\n this.cache.add(cacheKey, cachedMaterial);\n this.associations.set(cachedMaterial, this.associations.get(material));\n }\n\n material = cachedMaterial;\n } // workarounds for mesh and geometry\n\n\n if (material.aoMap && geometry.attributes.uv2 === undefined && geometry.attributes.uv !== undefined) {\n geometry.setAttribute('uv2', geometry.attributes.uv);\n }\n\n mesh.material = material;\n }\n\n getMaterialType() {\n return MeshStandardMaterial;\n }\n /**\n * Specification: https://github.com/KhronosGroup/glTF/blob/master/specification/2.0/README.md#materials\n * @param {number} materialIndex\n * @return {Promise}\n */\n\n\n loadMaterial(materialIndex) {\n const parser = this;\n const json = this.json;\n const extensions = this.extensions;\n const materialDef = json.materials[materialIndex];\n let materialType;\n const materialParams = {};\n const materialExtensions = materialDef.extensions || {};\n const pending = [];\n\n if (materialExtensions[EXTENSIONS.KHR_MATERIALS_PBR_SPECULAR_GLOSSINESS]) {\n const sgExtension = extensions[EXTENSIONS.KHR_MATERIALS_PBR_SPECULAR_GLOSSINESS];\n materialType = sgExtension.getMaterialType();\n pending.push(sgExtension.extendParams(materialParams, materialDef, parser));\n } else if (materialExtensions[EXTENSIONS.KHR_MATERIALS_UNLIT]) {\n const kmuExtension = extensions[EXTENSIONS.KHR_MATERIALS_UNLIT];\n materialType = kmuExtension.getMaterialType();\n pending.push(kmuExtension.extendParams(materialParams, materialDef, parser));\n } else {\n // Specification:\n // https://github.com/KhronosGroup/glTF/tree/master/specification/2.0#metallic-roughness-material\n const metallicRoughness = materialDef.pbrMetallicRoughness || {};\n materialParams.color = new Color(1.0, 1.0, 1.0);\n materialParams.opacity = 1.0;\n\n if (Array.isArray(metallicRoughness.baseColorFactor)) {\n const array = metallicRoughness.baseColorFactor;\n materialParams.color.fromArray(array);\n materialParams.opacity = array[3];\n }\n\n if (metallicRoughness.baseColorTexture !== undefined) {\n pending.push(parser.assignTexture(materialParams, 'map', metallicRoughness.baseColorTexture));\n }\n\n materialParams.metalness = metallicRoughness.metallicFactor !== undefined ? metallicRoughness.metallicFactor : 1.0;\n materialParams.roughness = metallicRoughness.roughnessFactor !== undefined ? metallicRoughness.roughnessFactor : 1.0;\n\n if (metallicRoughness.metallicRoughnessTexture !== undefined) {\n pending.push(parser.assignTexture(materialParams, 'metalnessMap', metallicRoughness.metallicRoughnessTexture));\n pending.push(parser.assignTexture(materialParams, 'roughnessMap', metallicRoughness.metallicRoughnessTexture));\n }\n\n materialType = this._invokeOne(function (ext) {\n return ext.getMaterialType && ext.getMaterialType(materialIndex);\n });\n pending.push(Promise.all(this._invokeAll(function (ext) {\n return ext.extendMaterialParams && ext.extendMaterialParams(materialIndex, materialParams);\n })));\n }\n\n if (materialDef.doubleSided === true) {\n materialParams.side = DoubleSide;\n }\n\n const alphaMode = materialDef.alphaMode || ALPHA_MODES.OPAQUE;\n\n if (alphaMode === ALPHA_MODES.BLEND) {\n materialParams.transparent = true; // See: https://github.com/mrdoob/three.js/issues/17706\n\n materialParams.depthWrite = false;\n } else {\n materialParams.transparent = false;\n\n if (alphaMode === ALPHA_MODES.MASK) {\n materialParams.alphaTest = materialDef.alphaCutoff !== undefined ? materialDef.alphaCutoff : 0.5;\n }\n }\n\n if (materialDef.normalTexture !== undefined && materialType !== MeshBasicMaterial) {\n pending.push(parser.assignTexture(materialParams, 'normalMap', materialDef.normalTexture));\n materialParams.normalScale = new Vector2(1, 1);\n\n if (materialDef.normalTexture.scale !== undefined) {\n const scale = materialDef.normalTexture.scale;\n materialParams.normalScale.set(scale, scale);\n }\n }\n\n if (materialDef.occlusionTexture !== undefined && materialType !== MeshBasicMaterial) {\n pending.push(parser.assignTexture(materialParams, 'aoMap', materialDef.occlusionTexture));\n\n if (materialDef.occlusionTexture.strength !== undefined) {\n materialParams.aoMapIntensity = materialDef.occlusionTexture.strength;\n }\n }\n\n if (materialDef.emissiveFactor !== undefined && materialType !== MeshBasicMaterial) {\n materialParams.emissive = new Color().fromArray(materialDef.emissiveFactor);\n }\n\n if (materialDef.emissiveTexture !== undefined && materialType !== MeshBasicMaterial) {\n pending.push(parser.assignTexture(materialParams, 'emissiveMap', materialDef.emissiveTexture));\n }\n\n return Promise.all(pending).then(function () {\n let material;\n\n if (materialType === GLTFMeshStandardSGMaterial) {\n material = extensions[EXTENSIONS.KHR_MATERIALS_PBR_SPECULAR_GLOSSINESS].createMaterial(materialParams);\n } else {\n material = new materialType(materialParams);\n }\n\n if (materialDef.name) material.name = materialDef.name; // baseColorTexture, emissiveTexture, and specularGlossinessTexture use sRGB encoding.\n\n if (material.map) material.map.encoding = sRGBEncoding;\n if (material.emissiveMap) material.emissiveMap.encoding = sRGBEncoding;\n assignExtrasToUserData(material, materialDef);\n parser.associations.set(material, {\n materials: materialIndex\n });\n if (materialDef.extensions) addUnknownExtensionsToUserData(extensions, material, materialDef);\n return material;\n });\n }\n /** When Object3D instances are targeted by animation, they need unique names. */\n\n\n createUniqueName(originalName) {\n const sanitizedName = PropertyBinding.sanitizeNodeName(originalName || '');\n let name = sanitizedName;\n\n for (let i = 1; this.nodeNamesUsed[name]; ++i) {\n name = sanitizedName + '_' + i;\n }\n\n this.nodeNamesUsed[name] = true;\n return name;\n }\n /**\n * Specification: https://github.com/KhronosGroup/glTF/blob/master/specification/2.0/README.md#geometry\n *\n * Creates BufferGeometries from primitives.\n *\n * @param {Array} primitives\n * @return {Promise>}\n */\n\n\n loadGeometries(primitives) {\n const parser = this;\n const extensions = this.extensions;\n const cache = this.primitiveCache;\n\n function createDracoPrimitive(primitive) {\n return extensions[EXTENSIONS.KHR_DRACO_MESH_COMPRESSION].decodePrimitive(primitive, parser).then(function (geometry) {\n return addPrimitiveAttributes(geometry, primitive, parser);\n });\n }\n\n const pending = [];\n\n for (let i = 0, il = primitives.length; i < il; i++) {\n const primitive = primitives[i];\n const cacheKey = createPrimitiveKey(primitive); // See if we've already created this geometry\n\n const cached = cache[cacheKey];\n\n if (cached) {\n // Use the cached geometry if it exists\n pending.push(cached.promise);\n } else {\n let geometryPromise;\n\n if (primitive.extensions && primitive.extensions[EXTENSIONS.KHR_DRACO_MESH_COMPRESSION]) {\n // Use DRACO geometry if available\n geometryPromise = createDracoPrimitive(primitive);\n } else {\n // Otherwise create a new geometry\n geometryPromise = addPrimitiveAttributes(new BufferGeometry(), primitive, parser);\n } // Cache this geometry\n\n\n cache[cacheKey] = {\n primitive: primitive,\n promise: geometryPromise\n };\n pending.push(geometryPromise);\n }\n }\n\n return Promise.all(pending);\n }\n /**\n * Specification: https://github.com/KhronosGroup/glTF/blob/master/specification/2.0/README.md#meshes\n * @param {number} meshIndex\n * @return {Promise}\n */\n\n\n loadMesh(meshIndex) {\n const parser = this;\n const json = this.json;\n const extensions = this.extensions;\n const meshDef = json.meshes[meshIndex];\n const primitives = meshDef.primitives;\n const pending = [];\n\n for (let i = 0, il = primitives.length; i < il; i++) {\n const material = primitives[i].material === undefined ? createDefaultMaterial(this.cache) : this.getDependency('material', primitives[i].material);\n pending.push(material);\n }\n\n pending.push(parser.loadGeometries(primitives));\n return Promise.all(pending).then(function (results) {\n const materials = results.slice(0, results.length - 1);\n const geometries = results[results.length - 1];\n const meshes = [];\n\n for (let i = 0, il = geometries.length; i < il; i++) {\n const geometry = geometries[i];\n const primitive = primitives[i]; // 1. create Mesh\n\n let mesh;\n const material = materials[i];\n\n if (primitive.mode === WEBGL_CONSTANTS.TRIANGLES || primitive.mode === WEBGL_CONSTANTS.TRIANGLE_STRIP || primitive.mode === WEBGL_CONSTANTS.TRIANGLE_FAN || primitive.mode === undefined) {\n // .isSkinnedMesh isn't in glTF spec. See ._markDefs()\n mesh = meshDef.isSkinnedMesh === true ? new SkinnedMesh(geometry, material) : new Mesh(geometry, material);\n\n if (mesh.isSkinnedMesh === true && !mesh.geometry.attributes.skinWeight.normalized) {\n // we normalize floating point skin weight array to fix malformed assets (see #15319)\n // it's important to skip this for non-float32 data since normalizeSkinWeights assumes non-normalized inputs\n mesh.normalizeSkinWeights();\n }\n\n if (primitive.mode === WEBGL_CONSTANTS.TRIANGLE_STRIP) {\n mesh.geometry = toTrianglesDrawMode(mesh.geometry, TriangleStripDrawMode);\n } else if (primitive.mode === WEBGL_CONSTANTS.TRIANGLE_FAN) {\n mesh.geometry = toTrianglesDrawMode(mesh.geometry, TriangleFanDrawMode);\n }\n } else if (primitive.mode === WEBGL_CONSTANTS.LINES) {\n mesh = new LineSegments(geometry, material);\n } else if (primitive.mode === WEBGL_CONSTANTS.LINE_STRIP) {\n mesh = new Line(geometry, material);\n } else if (primitive.mode === WEBGL_CONSTANTS.LINE_LOOP) {\n mesh = new LineLoop(geometry, material);\n } else if (primitive.mode === WEBGL_CONSTANTS.POINTS) {\n mesh = new Points(geometry, material);\n } else {\n throw new Error('THREE.GLTFLoader: Primitive mode unsupported: ' + primitive.mode);\n }\n\n if (Object.keys(mesh.geometry.morphAttributes).length > 0) {\n updateMorphTargets(mesh, meshDef);\n }\n\n mesh.name = parser.createUniqueName(meshDef.name || 'mesh_' + meshIndex);\n assignExtrasToUserData(mesh, meshDef);\n if (primitive.extensions) addUnknownExtensionsToUserData(extensions, mesh, primitive);\n parser.assignFinalMaterial(mesh);\n meshes.push(mesh);\n }\n\n for (let i = 0, il = meshes.length; i < il; i++) {\n parser.associations.set(meshes[i], {\n meshes: meshIndex,\n primitives: i\n });\n }\n\n if (meshes.length === 1) {\n return meshes[0];\n }\n\n const group = new Group();\n parser.associations.set(group, {\n meshes: meshIndex\n });\n\n for (let i = 0, il = meshes.length; i < il; i++) {\n group.add(meshes[i]);\n }\n\n return group;\n });\n }\n /**\n * Specification: https://github.com/KhronosGroup/glTF/tree/master/specification/2.0#cameras\n * @param {number} cameraIndex\n * @return {Promise}\n */\n\n\n loadCamera(cameraIndex) {\n let camera;\n const cameraDef = this.json.cameras[cameraIndex];\n const params = cameraDef[cameraDef.type];\n\n if (!params) {\n console.warn('THREE.GLTFLoader: Missing camera parameters.');\n return;\n }\n\n if (cameraDef.type === 'perspective') {\n camera = new PerspectiveCamera(MathUtils.radToDeg(params.yfov), params.aspectRatio || 1, params.znear || 1, params.zfar || 2e6);\n } else if (cameraDef.type === 'orthographic') {\n camera = new OrthographicCamera(-params.xmag, params.xmag, params.ymag, -params.ymag, params.znear, params.zfar);\n }\n\n if (cameraDef.name) camera.name = this.createUniqueName(cameraDef.name);\n assignExtrasToUserData(camera, cameraDef);\n return Promise.resolve(camera);\n }\n /**\n * Specification: https://github.com/KhronosGroup/glTF/tree/master/specification/2.0#skins\n * @param {number} skinIndex\n * @return {Promise}\n */\n\n\n loadSkin(skinIndex) {\n const skinDef = this.json.skins[skinIndex];\n const skinEntry = {\n joints: skinDef.joints\n };\n\n if (skinDef.inverseBindMatrices === undefined) {\n return Promise.resolve(skinEntry);\n }\n\n return this.getDependency('accessor', skinDef.inverseBindMatrices).then(function (accessor) {\n skinEntry.inverseBindMatrices = accessor;\n return skinEntry;\n });\n }\n /**\n * Specification: https://github.com/KhronosGroup/glTF/tree/master/specification/2.0#animations\n * @param {number} animationIndex\n * @return {Promise}\n */\n\n\n loadAnimation(animationIndex) {\n const json = this.json;\n const animationDef = json.animations[animationIndex];\n const pendingNodes = [];\n const pendingInputAccessors = [];\n const pendingOutputAccessors = [];\n const pendingSamplers = [];\n const pendingTargets = [];\n\n for (let i = 0, il = animationDef.channels.length; i < il; i++) {\n const channel = animationDef.channels[i];\n const sampler = animationDef.samplers[channel.sampler];\n const target = channel.target;\n const name = target.node !== undefined ? target.node : target.id; // NOTE: target.id is deprecated.\n\n const input = animationDef.parameters !== undefined ? animationDef.parameters[sampler.input] : sampler.input;\n const output = animationDef.parameters !== undefined ? animationDef.parameters[sampler.output] : sampler.output;\n pendingNodes.push(this.getDependency('node', name));\n pendingInputAccessors.push(this.getDependency('accessor', input));\n pendingOutputAccessors.push(this.getDependency('accessor', output));\n pendingSamplers.push(sampler);\n pendingTargets.push(target);\n }\n\n return Promise.all([Promise.all(pendingNodes), Promise.all(pendingInputAccessors), Promise.all(pendingOutputAccessors), Promise.all(pendingSamplers), Promise.all(pendingTargets)]).then(function (dependencies) {\n const nodes = dependencies[0];\n const inputAccessors = dependencies[1];\n const outputAccessors = dependencies[2];\n const samplers = dependencies[3];\n const targets = dependencies[4];\n const tracks = [];\n\n for (let i = 0, il = nodes.length; i < il; i++) {\n const node = nodes[i];\n const inputAccessor = inputAccessors[i];\n const outputAccessor = outputAccessors[i];\n const sampler = samplers[i];\n const target = targets[i];\n if (node === undefined) continue;\n node.updateMatrix();\n node.matrixAutoUpdate = true;\n let TypedKeyframeTrack;\n\n switch (PATH_PROPERTIES[target.path]) {\n case PATH_PROPERTIES.weights:\n TypedKeyframeTrack = NumberKeyframeTrack;\n break;\n\n case PATH_PROPERTIES.rotation:\n TypedKeyframeTrack = QuaternionKeyframeTrack;\n break;\n\n case PATH_PROPERTIES.position:\n case PATH_PROPERTIES.scale:\n default:\n TypedKeyframeTrack = VectorKeyframeTrack;\n break;\n }\n\n const targetName = node.name ? node.name : node.uuid;\n const interpolation = sampler.interpolation !== undefined ? INTERPOLATION[sampler.interpolation] : InterpolateLinear;\n const targetNames = [];\n\n if (PATH_PROPERTIES[target.path] === PATH_PROPERTIES.weights) {\n node.traverse(function (object) {\n if (object.morphTargetInfluences) {\n targetNames.push(object.name ? object.name : object.uuid);\n }\n });\n } else {\n targetNames.push(targetName);\n }\n\n let outputArray = outputAccessor.array;\n\n if (outputAccessor.normalized) {\n const scale = getNormalizedComponentScale(outputArray.constructor);\n const scaled = new Float32Array(outputArray.length);\n\n for (let j = 0, jl = outputArray.length; j < jl; j++) {\n scaled[j] = outputArray[j] * scale;\n }\n\n outputArray = scaled;\n }\n\n for (let j = 0, jl = targetNames.length; j < jl; j++) {\n const track = new TypedKeyframeTrack(targetNames[j] + '.' + PATH_PROPERTIES[target.path], inputAccessor.array, outputArray, interpolation); // Override interpolation with custom factory method.\n\n if (sampler.interpolation === 'CUBICSPLINE') {\n track.createInterpolant = function InterpolantFactoryMethodGLTFCubicSpline(result) {\n // A CUBICSPLINE keyframe in glTF has three output values for each input value,\n // representing inTangent, splineVertex, and outTangent. As a result, track.getValueSize()\n // must be divided by three to get the interpolant's sampleSize argument.\n const interpolantType = this instanceof QuaternionKeyframeTrack ? GLTFCubicSplineQuaternionInterpolant : GLTFCubicSplineInterpolant;\n return new interpolantType(this.times, this.values, this.getValueSize() / 3, result);\n }; // Mark as CUBICSPLINE. `track.getInterpolation()` doesn't support custom interpolants.\n\n\n track.createInterpolant.isInterpolantFactoryMethodGLTFCubicSpline = true;\n }\n\n tracks.push(track);\n }\n }\n\n const name = animationDef.name ? animationDef.name : 'animation_' + animationIndex;\n return new AnimationClip(name, undefined, tracks);\n });\n }\n\n createNodeMesh(nodeIndex) {\n const json = this.json;\n const parser = this;\n const nodeDef = json.nodes[nodeIndex];\n if (nodeDef.mesh === undefined) return null;\n return parser.getDependency('mesh', nodeDef.mesh).then(function (mesh) {\n const node = parser._getNodeRef(parser.meshCache, nodeDef.mesh, mesh); // if weights are provided on the node, override weights on the mesh.\n\n\n if (nodeDef.weights !== undefined) {\n node.traverse(function (o) {\n if (!o.isMesh) return;\n\n for (let i = 0, il = nodeDef.weights.length; i < il; i++) {\n o.morphTargetInfluences[i] = nodeDef.weights[i];\n }\n });\n }\n\n return node;\n });\n }\n /**\n * Specification: https://github.com/KhronosGroup/glTF/tree/master/specification/2.0#nodes-and-hierarchy\n * @param {number} nodeIndex\n * @return {Promise}\n */\n\n\n loadNode(nodeIndex) {\n const json = this.json;\n const extensions = this.extensions;\n const parser = this;\n const nodeDef = json.nodes[nodeIndex]; // reserve node's name before its dependencies, so the root has the intended name.\n\n const nodeName = nodeDef.name ? parser.createUniqueName(nodeDef.name) : '';\n return function () {\n const pending = [];\n\n const meshPromise = parser._invokeOne(function (ext) {\n return ext.createNodeMesh && ext.createNodeMesh(nodeIndex);\n });\n\n if (meshPromise) {\n pending.push(meshPromise);\n }\n\n if (nodeDef.camera !== undefined) {\n pending.push(parser.getDependency('camera', nodeDef.camera).then(function (camera) {\n return parser._getNodeRef(parser.cameraCache, nodeDef.camera, camera);\n }));\n }\n\n parser._invokeAll(function (ext) {\n return ext.createNodeAttachment && ext.createNodeAttachment(nodeIndex);\n }).forEach(function (promise) {\n pending.push(promise);\n });\n\n return Promise.all(pending);\n }().then(function (objects) {\n let node; // .isBone isn't in glTF spec. See ._markDefs\n\n if (nodeDef.isBone === true) {\n node = new Bone();\n } else if (objects.length > 1) {\n node = new Group();\n } else if (objects.length === 1) {\n node = objects[0];\n } else {\n node = new Object3D();\n }\n\n if (node !== objects[0]) {\n for (let i = 0, il = objects.length; i < il; i++) {\n node.add(objects[i]);\n }\n }\n\n if (nodeDef.name) {\n node.userData.name = nodeDef.name;\n node.name = nodeName;\n }\n\n assignExtrasToUserData(node, nodeDef);\n if (nodeDef.extensions) addUnknownExtensionsToUserData(extensions, node, nodeDef);\n\n if (nodeDef.matrix !== undefined) {\n const matrix = new Matrix4();\n matrix.fromArray(nodeDef.matrix);\n node.applyMatrix4(matrix);\n } else {\n if (nodeDef.translation !== undefined) {\n node.position.fromArray(nodeDef.translation);\n }\n\n if (nodeDef.rotation !== undefined) {\n node.quaternion.fromArray(nodeDef.rotation);\n }\n\n if (nodeDef.scale !== undefined) {\n node.scale.fromArray(nodeDef.scale);\n }\n }\n\n if (!parser.associations.has(node)) {\n parser.associations.set(node, {});\n }\n\n parser.associations.get(node).nodes = nodeIndex;\n return node;\n });\n }\n /**\n * Specification: https://github.com/KhronosGroup/glTF/tree/master/specification/2.0#scenes\n * @param {number} sceneIndex\n * @return {Promise}\n */\n\n\n loadScene(sceneIndex) {\n const json = this.json;\n const extensions = this.extensions;\n const sceneDef = this.json.scenes[sceneIndex];\n const parser = this; // Loader returns Group, not Scene.\n // See: https://github.com/mrdoob/three.js/issues/18342#issuecomment-578981172\n\n const scene = new Group();\n if (sceneDef.name) scene.name = parser.createUniqueName(sceneDef.name);\n assignExtrasToUserData(scene, sceneDef);\n if (sceneDef.extensions) addUnknownExtensionsToUserData(extensions, scene, sceneDef);\n const nodeIds = sceneDef.nodes || [];\n const pending = [];\n\n for (let i = 0, il = nodeIds.length; i < il; i++) {\n pending.push(buildNodeHierarchy(nodeIds[i], scene, json, parser));\n }\n\n return Promise.all(pending).then(function () {\n // Removes dangling associations, associations that reference a node that\n // didn't make it into the scene.\n const reduceAssociations = node => {\n const reducedAssociations = new Map();\n\n for (const [key, value] of parser.associations) {\n if (key instanceof Material || key instanceof Texture) {\n reducedAssociations.set(key, value);\n }\n }\n\n node.traverse(node => {\n const mappings = parser.associations.get(node);\n\n if (mappings != null) {\n reducedAssociations.set(node, mappings);\n }\n });\n return reducedAssociations;\n };\n\n parser.associations = reduceAssociations(scene);\n return scene;\n });\n }\n\n}\n\nfunction buildNodeHierarchy(nodeId, parentObject, json, parser) {\n const nodeDef = json.nodes[nodeId];\n return parser.getDependency('node', nodeId).then(function (node) {\n if (nodeDef.skin === undefined) return node; // build skeleton here as well\n\n let skinEntry;\n return parser.getDependency('skin', nodeDef.skin).then(function (skin) {\n skinEntry = skin;\n const pendingJoints = [];\n\n for (let i = 0, il = skinEntry.joints.length; i < il; i++) {\n pendingJoints.push(parser.getDependency('node', skinEntry.joints[i]));\n }\n\n return Promise.all(pendingJoints);\n }).then(function (jointNodes) {\n node.traverse(function (mesh) {\n if (!mesh.isMesh) return;\n const bones = [];\n const boneInverses = [];\n\n for (let j = 0, jl = jointNodes.length; j < jl; j++) {\n const jointNode = jointNodes[j];\n\n if (jointNode) {\n bones.push(jointNode);\n const mat = new Matrix4();\n\n if (skinEntry.inverseBindMatrices !== undefined) {\n mat.fromArray(skinEntry.inverseBindMatrices.array, j * 16);\n }\n\n boneInverses.push(mat);\n } else {\n console.warn('THREE.GLTFLoader: Joint \"%s\" could not be found.', skinEntry.joints[j]);\n }\n }\n\n mesh.bind(new Skeleton(bones, boneInverses), mesh.matrixWorld);\n });\n return node;\n });\n }).then(function (node) {\n // build node hierachy\n parentObject.add(node);\n const pending = [];\n\n if (nodeDef.children) {\n const children = nodeDef.children;\n\n for (let i = 0, il = children.length; i < il; i++) {\n const child = children[i];\n pending.push(buildNodeHierarchy(child, node, json, parser));\n }\n }\n\n return Promise.all(pending);\n });\n}\n/**\n * @param {BufferGeometry} geometry\n * @param {GLTF.Primitive} primitiveDef\n * @param {GLTFParser} parser\n */\n\n\nfunction computeBounds(geometry, primitiveDef, parser) {\n const attributes = primitiveDef.attributes;\n const box = new Box3();\n\n if (attributes.POSITION !== undefined) {\n const accessor = parser.json.accessors[attributes.POSITION];\n const min = accessor.min;\n const max = accessor.max; // glTF requires 'min' and 'max', but VRM (which extends glTF) currently ignores that requirement.\n\n if (min !== undefined && max !== undefined) {\n box.set(new Vector3(min[0], min[1], min[2]), new Vector3(max[0], max[1], max[2]));\n\n if (accessor.normalized) {\n const boxScale = getNormalizedComponentScale(WEBGL_COMPONENT_TYPES[accessor.componentType]);\n box.min.multiplyScalar(boxScale);\n box.max.multiplyScalar(boxScale);\n }\n } else {\n console.warn('THREE.GLTFLoader: Missing min/max properties for accessor POSITION.');\n return;\n }\n } else {\n return;\n }\n\n const targets = primitiveDef.targets;\n\n if (targets !== undefined) {\n const maxDisplacement = new Vector3();\n const vector = new Vector3();\n\n for (let i = 0, il = targets.length; i < il; i++) {\n const target = targets[i];\n\n if (target.POSITION !== undefined) {\n const accessor = parser.json.accessors[target.POSITION];\n const min = accessor.min;\n const max = accessor.max; // glTF requires 'min' and 'max', but VRM (which extends glTF) currently ignores that requirement.\n\n if (min !== undefined && max !== undefined) {\n // we need to get max of absolute components because target weight is [-1,1]\n vector.setX(Math.max(Math.abs(min[0]), Math.abs(max[0])));\n vector.setY(Math.max(Math.abs(min[1]), Math.abs(max[1])));\n vector.setZ(Math.max(Math.abs(min[2]), Math.abs(max[2])));\n\n if (accessor.normalized) {\n const boxScale = getNormalizedComponentScale(WEBGL_COMPONENT_TYPES[accessor.componentType]);\n vector.multiplyScalar(boxScale);\n } // Note: this assumes that the sum of all weights is at most 1. This isn't quite correct - it's more conservative\n // to assume that each target can have a max weight of 1. However, for some use cases - notably, when morph targets\n // are used to implement key-frame animations and as such only two are active at a time - this results in very large\n // boxes. So for now we make a box that's sometimes a touch too small but is hopefully mostly of reasonable size.\n\n\n maxDisplacement.max(vector);\n } else {\n console.warn('THREE.GLTFLoader: Missing min/max properties for accessor POSITION.');\n }\n }\n } // As per comment above this box isn't conservative, but has a reasonable size for a very large number of morph targets.\n\n\n box.expandByVector(maxDisplacement);\n }\n\n geometry.boundingBox = box;\n const sphere = new Sphere();\n box.getCenter(sphere.center);\n sphere.radius = box.min.distanceTo(box.max) / 2;\n geometry.boundingSphere = sphere;\n}\n/**\n * @param {BufferGeometry} geometry\n * @param {GLTF.Primitive} primitiveDef\n * @param {GLTFParser} parser\n * @return {Promise}\n */\n\n\nfunction addPrimitiveAttributes(geometry, primitiveDef, parser) {\n const attributes = primitiveDef.attributes;\n const pending = [];\n\n function assignAttributeAccessor(accessorIndex, attributeName) {\n return parser.getDependency('accessor', accessorIndex).then(function (accessor) {\n geometry.setAttribute(attributeName, accessor);\n });\n }\n\n for (const gltfAttributeName in attributes) {\n const threeAttributeName = ATTRIBUTES[gltfAttributeName] || gltfAttributeName.toLowerCase(); // Skip attributes already provided by e.g. Draco extension.\n\n if (threeAttributeName in geometry.attributes) continue;\n pending.push(assignAttributeAccessor(attributes[gltfAttributeName], threeAttributeName));\n }\n\n if (primitiveDef.indices !== undefined && !geometry.index) {\n const accessor = parser.getDependency('accessor', primitiveDef.indices).then(function (accessor) {\n geometry.setIndex(accessor);\n });\n pending.push(accessor);\n }\n\n assignExtrasToUserData(geometry, primitiveDef);\n computeBounds(geometry, primitiveDef, parser);\n return Promise.all(pending).then(function () {\n return primitiveDef.targets !== undefined ? addMorphTargets(geometry, primitiveDef.targets, parser) : geometry;\n });\n}\n/**\n * @param {BufferGeometry} geometry\n * @param {Number} drawMode\n * @return {BufferGeometry}\n */\n\n\nfunction toTrianglesDrawMode(geometry, drawMode) {\n let index = geometry.getIndex(); // generate index if not present\n\n if (index === null) {\n const indices = [];\n const position = geometry.getAttribute('position');\n\n if (position !== undefined) {\n for (let i = 0; i < position.count; i++) {\n indices.push(i);\n }\n\n geometry.setIndex(indices);\n index = geometry.getIndex();\n } else {\n console.error('THREE.GLTFLoader.toTrianglesDrawMode(): Undefined position attribute. Processing not possible.');\n return geometry;\n }\n } //\n\n\n const numberOfTriangles = index.count - 2;\n const newIndices = [];\n\n if (drawMode === TriangleFanDrawMode) {\n // gl.TRIANGLE_FAN\n for (let i = 1; i <= numberOfTriangles; i++) {\n newIndices.push(index.getX(0));\n newIndices.push(index.getX(i));\n newIndices.push(index.getX(i + 1));\n }\n } else {\n // gl.TRIANGLE_STRIP\n for (let i = 0; i < numberOfTriangles; i++) {\n if (i % 2 === 0) {\n newIndices.push(index.getX(i));\n newIndices.push(index.getX(i + 1));\n newIndices.push(index.getX(i + 2));\n } else {\n newIndices.push(index.getX(i + 2));\n newIndices.push(index.getX(i + 1));\n newIndices.push(index.getX(i));\n }\n }\n }\n\n if (newIndices.length / 3 !== numberOfTriangles) {\n console.error('THREE.GLTFLoader.toTrianglesDrawMode(): Unable to generate correct amount of triangles.');\n } // build final geometry\n\n\n const newGeometry = geometry.clone();\n newGeometry.setIndex(newIndices);\n return newGeometry;\n}\n\nexport { GLTFLoader };\n","import { GLTFLoader, DRACOLoader, MeshoptDecoder } from 'three-stdlib';\nimport { useLoader } from '@react-three/fiber';\n\n// @ts-ignore\nlet dracoLoader = null;\n\nfunction extensions(useDraco, useMeshopt, extendLoader) {\n return loader => {\n if (extendLoader) {\n extendLoader(loader);\n }\n\n if (useDraco) {\n if (!dracoLoader) {\n dracoLoader = new DRACOLoader();\n }\n\n dracoLoader.setDecoderPath(typeof useDraco === 'string' ? useDraco : 'https://www.gstatic.com/draco/versioned/decoders/1.4.3/');\n loader.setDRACOLoader(dracoLoader);\n }\n\n if (useMeshopt) {\n loader.setMeshoptDecoder(typeof MeshoptDecoder === 'function' ? MeshoptDecoder() : MeshoptDecoder);\n }\n };\n}\n\nfunction useGLTF(path, useDraco = true, useMeshOpt = true, extendLoader) {\n const gltf = useLoader(GLTFLoader, path, extensions(useDraco, useMeshOpt, extendLoader));\n return gltf;\n}\n\nuseGLTF.preload = (path, useDraco = true, useMeshOpt = true, extendLoader) => useLoader.preload(GLTFLoader, path, extensions(useDraco, useMeshOpt, extendLoader));\n\nuseGLTF.clear = input => useLoader.clear(GLTFLoader, input);\n\nexport { useGLTF };\n","/*\nAuto-generated by: https://github.com/pmndrs/gltfjsx\n*/\n\nimport { useGLTF } from \"@react-three/drei\"\nimport { forwardRef } from \"react\"\nimport * as THREE from \"three\"\nimport { Mesh } from \"three\"\nimport { GLTF } from \"three/examples/jsm/loaders/GLTFLoader\"\n\ntype GLTFResult = GLTF & {\n\tnodes: {\n\t\tMale001: THREE.Mesh\n\t\tCylinder: THREE.Mesh\n\t}\n\tmaterials: {\n\t\t[\"default\"]: THREE.MeshStandardMaterial\n\t\tMaterial: THREE.MeshStandardMaterial\n\t}\n}\n\nconst BodyModel = forwardRef((props, ref) => {\n\tconst { nodes, materials } = useGLTF(\n\t\t\"/models/body.glb\"\n\t) as unknown as GLTFResult\n\n\treturn (\n\t\t\n\t\t\t\n\t\t\t\n\t\t\n\t)\n})\n\nexport default BodyModel\n\nuseGLTF.preload(\"/models/body.glb\")\n","import {\n\tDataTextureLoader,\n\tDataUtils,\n\tFloatType,\n\tHalfFloatType,\n\tLinearEncoding,\n\tLinearFilter\n} from 'three';\n\n// https://github.com/mrdoob/three.js/issues/5552\n// http://en.wikipedia.org/wiki/RGBE_image_format\n\nclass RGBELoader extends DataTextureLoader {\n\n\tconstructor( manager ) {\n\n\t\tsuper( manager );\n\n\t\tthis.type = HalfFloatType;\n\n\t}\n\n\t// adapted from http://www.graphics.cornell.edu/~bjw/rgbe.html\n\n\tparse( buffer ) {\n\n\t\tconst\n\t\t\t/* return codes for rgbe routines */\n\t\t\t//RGBE_RETURN_SUCCESS = 0,\n\t\t\tRGBE_RETURN_FAILURE = - 1,\n\n\t\t\t/* default error routine. change this to change error handling */\n\t\t\trgbe_read_error = 1,\n\t\t\trgbe_write_error = 2,\n\t\t\trgbe_format_error = 3,\n\t\t\trgbe_memory_error = 4,\n\t\t\trgbe_error = function ( rgbe_error_code, msg ) {\n\n\t\t\t\tswitch ( rgbe_error_code ) {\n\n\t\t\t\t\tcase rgbe_read_error: console.error( 'THREE.RGBELoader Read Error: ' + ( msg || '' ) );\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase rgbe_write_error: console.error( 'THREE.RGBELoader Write Error: ' + ( msg || '' ) );\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase rgbe_format_error: console.error( 'THREE.RGBELoader Bad File Format: ' + ( msg || '' ) );\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\tcase rgbe_memory_error: console.error( 'THREE.RGBELoader: Error: ' + ( msg || '' ) );\n\n\t\t\t\t}\n\n\t\t\t\treturn RGBE_RETURN_FAILURE;\n\n\t\t\t},\n\n\t\t\t/* offsets to red, green, and blue components in a data (float) pixel */\n\t\t\t//RGBE_DATA_RED = 0,\n\t\t\t//RGBE_DATA_GREEN = 1,\n\t\t\t//RGBE_DATA_BLUE = 2,\n\n\t\t\t/* number of floats per pixel, use 4 since stored in rgba image format */\n\t\t\t//RGBE_DATA_SIZE = 4,\n\n\t\t\t/* flags indicating which fields in an rgbe_header_info are valid */\n\t\t\tRGBE_VALID_PROGRAMTYPE = 1,\n\t\t\tRGBE_VALID_FORMAT = 2,\n\t\t\tRGBE_VALID_DIMENSIONS = 4,\n\n\t\t\tNEWLINE = '\\n',\n\n\t\t\tfgets = function ( buffer, lineLimit, consume ) {\n\n\t\t\t\tconst chunkSize = 128;\n\n\t\t\t\tlineLimit = ! lineLimit ? 1024 : lineLimit;\n\t\t\t\tlet p = buffer.pos,\n\t\t\t\t\ti = - 1, len = 0, s = '',\n\t\t\t\t\tchunk = String.fromCharCode.apply( null, new Uint16Array( buffer.subarray( p, p + chunkSize ) ) );\n\n\t\t\t\twhile ( ( 0 > ( i = chunk.indexOf( NEWLINE ) ) ) && ( len < lineLimit ) && ( p < buffer.byteLength ) ) {\n\n\t\t\t\t\ts += chunk; len += chunk.length;\n\t\t\t\t\tp += chunkSize;\n\t\t\t\t\tchunk += String.fromCharCode.apply( null, new Uint16Array( buffer.subarray( p, p + chunkSize ) ) );\n\n\t\t\t\t}\n\n\t\t\t\tif ( - 1 < i ) {\n\n\t\t\t\t\t/*for (i=l-1; i>=0; i--) {\n\t\t\t\t\t\tbyteCode = m.charCodeAt(i);\n\t\t\t\t\t\tif (byteCode > 0x7f && byteCode <= 0x7ff) byteLen++;\n\t\t\t\t\t\telse if (byteCode > 0x7ff && byteCode <= 0xffff) byteLen += 2;\n\t\t\t\t\t\tif (byteCode >= 0xDC00 && byteCode <= 0xDFFF) i--; //trail surrogate\n\t\t\t\t\t}*/\n\t\t\t\t\tif ( false !== consume ) buffer.pos += len + i + 1;\n\t\t\t\t\treturn s + chunk.slice( 0, i );\n\n\t\t\t\t}\n\n\t\t\t\treturn false;\n\n\t\t\t},\n\n\t\t\t/* minimal header reading. modify if you want to parse more information */\n\t\t\tRGBE_ReadHeader = function ( buffer ) {\n\n\n\t\t\t\t// regexes to parse header info fields\n\t\t\t\tconst magic_token_re = /^#\\?(\\S+)/,\n\t\t\t\t\tgamma_re = /^\\s*GAMMA\\s*=\\s*(\\d+(\\.\\d+)?)\\s*$/,\n\t\t\t\t\texposure_re = /^\\s*EXPOSURE\\s*=\\s*(\\d+(\\.\\d+)?)\\s*$/,\n\t\t\t\t\tformat_re = /^\\s*FORMAT=(\\S+)\\s*$/,\n\t\t\t\t\tdimensions_re = /^\\s*\\-Y\\s+(\\d+)\\s+\\+X\\s+(\\d+)\\s*$/,\n\n\t\t\t\t\t// RGBE format header struct\n\t\t\t\t\theader = {\n\n\t\t\t\t\t\tvalid: 0, /* indicate which fields are valid */\n\n\t\t\t\t\t\tstring: '', /* the actual header string */\n\n\t\t\t\t\t\tcomments: '', /* comments found in header */\n\n\t\t\t\t\t\tprogramtype: 'RGBE', /* listed at beginning of file to identify it after \"#?\". defaults to \"RGBE\" */\n\n\t\t\t\t\t\tformat: '', /* RGBE format, default 32-bit_rle_rgbe */\n\n\t\t\t\t\t\tgamma: 1.0, /* image has already been gamma corrected with given gamma. defaults to 1.0 (no correction) */\n\n\t\t\t\t\t\texposure: 1.0, /* a value of 1.0 in an image corresponds to watts/steradian/m^2. defaults to 1.0 */\n\n\t\t\t\t\t\twidth: 0, height: 0 /* image dimensions, width/height */\n\n\t\t\t\t\t};\n\n\t\t\t\tlet line, match;\n\n\t\t\t\tif ( buffer.pos >= buffer.byteLength || ! ( line = fgets( buffer ) ) ) {\n\n\t\t\t\t\treturn rgbe_error( rgbe_read_error, 'no header found' );\n\n\t\t\t\t}\n\n\t\t\t\t/* if you want to require the magic token then uncomment the next line */\n\t\t\t\tif ( ! ( match = line.match( magic_token_re ) ) ) {\n\n\t\t\t\t\treturn rgbe_error( rgbe_format_error, 'bad initial token' );\n\n\t\t\t\t}\n\n\t\t\t\theader.valid |= RGBE_VALID_PROGRAMTYPE;\n\t\t\t\theader.programtype = match[ 1 ];\n\t\t\t\theader.string += line + '\\n';\n\n\t\t\t\twhile ( true ) {\n\n\t\t\t\t\tline = fgets( buffer );\n\t\t\t\t\tif ( false === line ) break;\n\t\t\t\t\theader.string += line + '\\n';\n\n\t\t\t\t\tif ( '#' === line.charAt( 0 ) ) {\n\n\t\t\t\t\t\theader.comments += line + '\\n';\n\t\t\t\t\t\tcontinue; // comment line\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( match = line.match( gamma_re ) ) {\n\n\t\t\t\t\t\theader.gamma = parseFloat( match[ 1 ] );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( match = line.match( exposure_re ) ) {\n\n\t\t\t\t\t\theader.exposure = parseFloat( match[ 1 ] );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( match = line.match( format_re ) ) {\n\n\t\t\t\t\t\theader.valid |= RGBE_VALID_FORMAT;\n\t\t\t\t\t\theader.format = match[ 1 ];//'32-bit_rle_rgbe';\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( match = line.match( dimensions_re ) ) {\n\n\t\t\t\t\t\theader.valid |= RGBE_VALID_DIMENSIONS;\n\t\t\t\t\t\theader.height = parseInt( match[ 1 ], 10 );\n\t\t\t\t\t\theader.width = parseInt( match[ 2 ], 10 );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( ( header.valid & RGBE_VALID_FORMAT ) && ( header.valid & RGBE_VALID_DIMENSIONS ) ) break;\n\n\t\t\t\t}\n\n\t\t\t\tif ( ! ( header.valid & RGBE_VALID_FORMAT ) ) {\n\n\t\t\t\t\treturn rgbe_error( rgbe_format_error, 'missing format specifier' );\n\n\t\t\t\t}\n\n\t\t\t\tif ( ! ( header.valid & RGBE_VALID_DIMENSIONS ) ) {\n\n\t\t\t\t\treturn rgbe_error( rgbe_format_error, 'missing image size specifier' );\n\n\t\t\t\t}\n\n\t\t\t\treturn header;\n\n\t\t\t},\n\n\t\t\tRGBE_ReadPixels_RLE = function ( buffer, w, h ) {\n\n\t\t\t\tconst scanline_width = w;\n\n\t\t\t\tif (\n\t\t\t\t\t// run length encoding is not allowed so read flat\n\t\t\t\t\t( ( scanline_width < 8 ) || ( scanline_width > 0x7fff ) ) ||\n\t\t\t\t\t// this file is not run length encoded\n\t\t\t\t\t( ( 2 !== buffer[ 0 ] ) || ( 2 !== buffer[ 1 ] ) || ( buffer[ 2 ] & 0x80 ) )\n\t\t\t\t) {\n\n\t\t\t\t\t// return the flat buffer\n\t\t\t\t\treturn new Uint8Array( buffer );\n\n\t\t\t\t}\n\n\t\t\t\tif ( scanline_width !== ( ( buffer[ 2 ] << 8 ) | buffer[ 3 ] ) ) {\n\n\t\t\t\t\treturn rgbe_error( rgbe_format_error, 'wrong scanline width' );\n\n\t\t\t\t}\n\n\t\t\t\tconst data_rgba = new Uint8Array( 4 * w * h );\n\n\t\t\t\tif ( ! data_rgba.length ) {\n\n\t\t\t\t\treturn rgbe_error( rgbe_memory_error, 'unable to allocate buffer space' );\n\n\t\t\t\t}\n\n\t\t\t\tlet offset = 0, pos = 0;\n\n\t\t\t\tconst ptr_end = 4 * scanline_width;\n\t\t\t\tconst rgbeStart = new Uint8Array( 4 );\n\t\t\t\tconst scanline_buffer = new Uint8Array( ptr_end );\n\t\t\t\tlet num_scanlines = h;\n\n\t\t\t\t// read in each successive scanline\n\t\t\t\twhile ( ( num_scanlines > 0 ) && ( pos < buffer.byteLength ) ) {\n\n\t\t\t\t\tif ( pos + 4 > buffer.byteLength ) {\n\n\t\t\t\t\t\treturn rgbe_error( rgbe_read_error );\n\n\t\t\t\t\t}\n\n\t\t\t\t\trgbeStart[ 0 ] = buffer[ pos ++ ];\n\t\t\t\t\trgbeStart[ 1 ] = buffer[ pos ++ ];\n\t\t\t\t\trgbeStart[ 2 ] = buffer[ pos ++ ];\n\t\t\t\t\trgbeStart[ 3 ] = buffer[ pos ++ ];\n\n\t\t\t\t\tif ( ( 2 != rgbeStart[ 0 ] ) || ( 2 != rgbeStart[ 1 ] ) || ( ( ( rgbeStart[ 2 ] << 8 ) | rgbeStart[ 3 ] ) != scanline_width ) ) {\n\n\t\t\t\t\t\treturn rgbe_error( rgbe_format_error, 'bad rgbe scanline format' );\n\n\t\t\t\t\t}\n\n\t\t\t\t\t// read each of the four channels for the scanline into the buffer\n\t\t\t\t\t// first red, then green, then blue, then exponent\n\t\t\t\t\tlet ptr = 0, count;\n\n\t\t\t\t\twhile ( ( ptr < ptr_end ) && ( pos < buffer.byteLength ) ) {\n\n\t\t\t\t\t\tcount = buffer[ pos ++ ];\n\t\t\t\t\t\tconst isEncodedRun = count > 128;\n\t\t\t\t\t\tif ( isEncodedRun ) count -= 128;\n\n\t\t\t\t\t\tif ( ( 0 === count ) || ( ptr + count > ptr_end ) ) {\n\n\t\t\t\t\t\t\treturn rgbe_error( rgbe_format_error, 'bad scanline data' );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif ( isEncodedRun ) {\n\n\t\t\t\t\t\t\t// a (encoded) run of the same value\n\t\t\t\t\t\t\tconst byteValue = buffer[ pos ++ ];\n\t\t\t\t\t\t\tfor ( let i = 0; i < count; i ++ ) {\n\n\t\t\t\t\t\t\t\tscanline_buffer[ ptr ++ ] = byteValue;\n\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t//ptr += count;\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t// a literal-run\n\t\t\t\t\t\t\tscanline_buffer.set( buffer.subarray( pos, pos + count ), ptr );\n\t\t\t\t\t\t\tptr += count; pos += count;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\n\t\t\t\t\t// now convert data from buffer into rgba\n\t\t\t\t\t// first red, then green, then blue, then exponent (alpha)\n\t\t\t\t\tconst l = scanline_width; //scanline_buffer.byteLength;\n\t\t\t\t\tfor ( let i = 0; i < l; i ++ ) {\n\n\t\t\t\t\t\tlet off = 0;\n\t\t\t\t\t\tdata_rgba[ offset ] = scanline_buffer[ i + off ];\n\t\t\t\t\t\toff += scanline_width; //1;\n\t\t\t\t\t\tdata_rgba[ offset + 1 ] = scanline_buffer[ i + off ];\n\t\t\t\t\t\toff += scanline_width; //1;\n\t\t\t\t\t\tdata_rgba[ offset + 2 ] = scanline_buffer[ i + off ];\n\t\t\t\t\t\toff += scanline_width; //1;\n\t\t\t\t\t\tdata_rgba[ offset + 3 ] = scanline_buffer[ i + off ];\n\t\t\t\t\t\toffset += 4;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tnum_scanlines --;\n\n\t\t\t\t}\n\n\t\t\t\treturn data_rgba;\n\n\t\t\t};\n\n\t\tconst RGBEByteToRGBFloat = function ( sourceArray, sourceOffset, destArray, destOffset ) {\n\n\t\t\tconst e = sourceArray[ sourceOffset + 3 ];\n\t\t\tconst scale = Math.pow( 2.0, e - 128.0 ) / 255.0;\n\n\t\t\tdestArray[ destOffset + 0 ] = sourceArray[ sourceOffset + 0 ] * scale;\n\t\t\tdestArray[ destOffset + 1 ] = sourceArray[ sourceOffset + 1 ] * scale;\n\t\t\tdestArray[ destOffset + 2 ] = sourceArray[ sourceOffset + 2 ] * scale;\n\t\t\tdestArray[ destOffset + 3 ] = 1;\n\n\t\t};\n\n\t\tconst RGBEByteToRGBHalf = function ( sourceArray, sourceOffset, destArray, destOffset ) {\n\n\t\t\tconst e = sourceArray[ sourceOffset + 3 ];\n\t\t\tconst scale = Math.pow( 2.0, e - 128.0 ) / 255.0;\n\n\t\t\t// clamping to 65504, the maximum representable value in float16\n\t\t\tdestArray[ destOffset + 0 ] = DataUtils.toHalfFloat( Math.min( sourceArray[ sourceOffset + 0 ] * scale, 65504 ) );\n\t\t\tdestArray[ destOffset + 1 ] = DataUtils.toHalfFloat( Math.min( sourceArray[ sourceOffset + 1 ] * scale, 65504 ) );\n\t\t\tdestArray[ destOffset + 2 ] = DataUtils.toHalfFloat( Math.min( sourceArray[ sourceOffset + 2 ] * scale, 65504 ) );\n\t\t\tdestArray[ destOffset + 3 ] = DataUtils.toHalfFloat( 1 );\n\n\t\t};\n\n\t\tconst byteArray = new Uint8Array( buffer );\n\t\tbyteArray.pos = 0;\n\t\tconst rgbe_header_info = RGBE_ReadHeader( byteArray );\n\n\t\tif ( RGBE_RETURN_FAILURE !== rgbe_header_info ) {\n\n\t\t\tconst w = rgbe_header_info.width,\n\t\t\t\th = rgbe_header_info.height,\n\t\t\t\timage_rgba_data = RGBE_ReadPixels_RLE( byteArray.subarray( byteArray.pos ), w, h );\n\n\t\t\tif ( RGBE_RETURN_FAILURE !== image_rgba_data ) {\n\n\t\t\t\tlet data, type;\n\t\t\t\tlet numElements;\n\n\t\t\t\tswitch ( this.type ) {\n\n\t\t\t\t\tcase FloatType:\n\n\t\t\t\t\t\tnumElements = image_rgba_data.length / 4;\n\t\t\t\t\t\tconst floatArray = new Float32Array( numElements * 4 );\n\n\t\t\t\t\t\tfor ( let j = 0; j < numElements; j ++ ) {\n\n\t\t\t\t\t\t\tRGBEByteToRGBFloat( image_rgba_data, j * 4, floatArray, j * 4 );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tdata = floatArray;\n\t\t\t\t\t\ttype = FloatType;\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase HalfFloatType:\n\n\t\t\t\t\t\tnumElements = image_rgba_data.length / 4;\n\t\t\t\t\t\tconst halfArray = new Uint16Array( numElements * 4 );\n\n\t\t\t\t\t\tfor ( let j = 0; j < numElements; j ++ ) {\n\n\t\t\t\t\t\t\tRGBEByteToRGBHalf( image_rgba_data, j * 4, halfArray, j * 4 );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tdata = halfArray;\n\t\t\t\t\t\ttype = HalfFloatType;\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tdefault:\n\n\t\t\t\t\t\tconsole.error( 'THREE.RGBELoader: unsupported type: ', this.type );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t}\n\n\t\t\t\treturn {\n\t\t\t\t\twidth: w, height: h,\n\t\t\t\t\tdata: data,\n\t\t\t\t\theader: rgbe_header_info.string,\n\t\t\t\t\tgamma: rgbe_header_info.gamma,\n\t\t\t\t\texposure: rgbe_header_info.exposure,\n\t\t\t\t\ttype: type\n\t\t\t\t};\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn null;\n\n\t}\n\n\tsetDataType( value ) {\n\n\t\tthis.type = value;\n\t\treturn this;\n\n\t}\n\n\tload( url, onLoad, onProgress, onError ) {\n\n\t\tfunction onLoadCallback( texture, texData ) {\n\n\t\t\tswitch ( texture.type ) {\n\n\t\t\t\tcase FloatType:\n\t\t\t\tcase HalfFloatType:\n\n\t\t\t\t\ttexture.encoding = LinearEncoding;\n\t\t\t\t\ttexture.minFilter = LinearFilter;\n\t\t\t\t\ttexture.magFilter = LinearFilter;\n\t\t\t\t\ttexture.generateMipmaps = false;\n\t\t\t\t\ttexture.flipY = true;\n\t\t\t\n\t\t\t\t\tbreak;\n\n\t\t\t}\n\n\t\t\tif ( onLoad ) onLoad( texture, texData );\n\n\t\t}\n\n\t\treturn super.load( url, onLoadCallback, onProgress, onError );\n\n\t}\n\n}\n\nexport { RGBELoader };\n","import { useLoader, useThree } from \"@react-three/fiber\"\nimport { PMREMGenerator } from \"three\"\nimport { RGBELoader } from \"three/examples/jsm/loaders/RGBELoader\"\n\nconst useEquirectangularHDR = (url: string) => {\n\tconst { gl, scene } = useThree()\n\tconst pmremGenerator = new PMREMGenerator(gl)\n\tpmremGenerator.compileEquirectangularShader()\n\n\t// @ts-ignore\n\tconst hdrEquirect = useLoader(RGBELoader, url)\n\n\tconst hdrCubeRenderTarget = pmremGenerator.fromEquirectangular(hdrEquirect)\n\thdrEquirect.dispose()\n\tpmremGenerator.dispose()\n\n\tscene.environment = hdrCubeRenderTarget.texture\n\t// scene.background = hdrCubeRenderTarget.texture\n\n\treturn hdrCubeRenderTarget.texture\n}\n\nexport default useEquirectangularHDR\n","import useEquirectangularHDR from \"../../hooks/useEquirectangularHDR\"\n\nconst Environment = () => {\n\tuseEquirectangularHDR(\"/images/environment.hdr\")\n\n\treturn <>\n}\n\nexport default Environment\n","import _extends from '@babel/runtime/helpers/esm/extends';\nimport * as React from 'react';\nimport * as ReactDOM from 'react-dom/client';\nimport { Vector3, OrthographicCamera, PerspectiveCamera } from 'three';\nimport { useThree, useFrame } from '@react-three/fiber';\n\nconst v1 = new Vector3();\nconst v2 = new Vector3();\nconst v3 = new Vector3();\n\nfunction defaultCalculatePosition(el, camera, size) {\n const objectPos = v1.setFromMatrixPosition(el.matrixWorld);\n objectPos.project(camera);\n const widthHalf = size.width / 2;\n const heightHalf = size.height / 2;\n return [objectPos.x * widthHalf + widthHalf, -(objectPos.y * heightHalf) + heightHalf];\n}\n\nfunction isObjectBehindCamera(el, camera) {\n const objectPos = v1.setFromMatrixPosition(el.matrixWorld);\n const cameraPos = v2.setFromMatrixPosition(camera.matrixWorld);\n const deltaCamObj = objectPos.sub(cameraPos);\n const camDir = camera.getWorldDirection(v3);\n return deltaCamObj.angleTo(camDir) > Math.PI / 2;\n}\n\nfunction isObjectVisible(el, camera, raycaster, occlude) {\n const elPos = v1.setFromMatrixPosition(el.matrixWorld);\n const screenPos = elPos.clone();\n screenPos.project(camera);\n raycaster.setFromCamera(screenPos, camera);\n const intersects = raycaster.intersectObjects(occlude, true);\n\n if (intersects.length) {\n const intersectionDistance = intersects[0].distance;\n const pointDistance = elPos.distanceTo(raycaster.ray.origin);\n return pointDistance < intersectionDistance;\n }\n\n return true;\n}\n\nfunction objectScale(el, camera) {\n if (camera instanceof OrthographicCamera) {\n return camera.zoom;\n } else if (camera instanceof PerspectiveCamera) {\n const objectPos = v1.setFromMatrixPosition(el.matrixWorld);\n const cameraPos = v2.setFromMatrixPosition(camera.matrixWorld);\n const vFOV = camera.fov * Math.PI / 180;\n const dist = objectPos.distanceTo(cameraPos);\n const scaleFOV = 2 * Math.tan(vFOV / 2) * dist;\n return 1 / scaleFOV;\n } else {\n return 1;\n }\n}\n\nfunction objectZIndex(el, camera, zIndexRange) {\n if (camera instanceof PerspectiveCamera || camera instanceof OrthographicCamera) {\n const objectPos = v1.setFromMatrixPosition(el.matrixWorld);\n const cameraPos = v2.setFromMatrixPosition(camera.matrixWorld);\n const dist = objectPos.distanceTo(cameraPos);\n const A = (zIndexRange[1] - zIndexRange[0]) / (camera.far - camera.near);\n const B = zIndexRange[1] - A * camera.far;\n return Math.round(A * dist + B);\n }\n\n return undefined;\n}\n\nconst epsilon = value => Math.abs(value) < 1e-10 ? 0 : value;\n\nfunction getCSSMatrix(matrix, multipliers, prepend = '') {\n let matrix3d = 'matrix3d(';\n\n for (let i = 0; i !== 16; i++) {\n matrix3d += epsilon(multipliers[i] * matrix.elements[i]) + (i !== 15 ? ',' : ')');\n }\n\n return prepend + matrix3d;\n}\n\nconst getCameraCSSMatrix = (multipliers => {\n return matrix => getCSSMatrix(matrix, multipliers);\n})([1, -1, 1, 1, 1, -1, 1, 1, 1, -1, 1, 1, 1, -1, 1, 1]);\n\nconst getObjectCSSMatrix = (scaleMultipliers => {\n return (matrix, factor) => getCSSMatrix(matrix, scaleMultipliers(factor), 'translate(-50%,-50%)');\n})(f => [1 / f, 1 / f, 1 / f, 1, -1 / f, -1 / f, -1 / f, -1, 1 / f, 1 / f, 1 / f, 1, 1, 1, 1, 1]);\n\nconst Html = /*#__PURE__*/React.forwardRef(({\n children,\n eps = 0.001,\n style,\n className,\n prepend,\n center,\n fullscreen,\n portal,\n distanceFactor,\n sprite = false,\n transform = false,\n occlude,\n onOcclude,\n zIndexRange = [16777271, 0],\n calculatePosition = defaultCalculatePosition,\n as = 'div',\n wrapperClass,\n pointerEvents = 'auto',\n ...props\n}, ref) => {\n var _portal$current;\n\n const gl = useThree(({\n gl\n }) => gl);\n const camera = useThree(({\n camera\n }) => camera);\n const scene = useThree(({\n scene\n }) => scene);\n const size = useThree(({\n size\n }) => size);\n const raycaster = useThree(({\n raycaster\n }) => raycaster);\n const [el] = React.useState(() => document.createElement(as));\n const root = React.useMemo(() => ReactDOM.createRoot(el), [el]);\n const group = React.useRef(null);\n const oldZoom = React.useRef(0);\n const oldPosition = React.useRef([0, 0]);\n const transformOuterRef = React.useRef(null);\n const transformInnerRef = React.useRef(null);\n const target = (_portal$current = portal == null ? void 0 : portal.current) !== null && _portal$current !== void 0 ? _portal$current : gl.domElement.parentNode;\n React.useEffect(() => {\n if (group.current) {\n scene.updateMatrixWorld();\n\n if (transform) {\n el.style.cssText = `position:absolute;top:0;left:0;pointer-events:none;overflow:hidden;`;\n } else {\n const vec = calculatePosition(group.current, camera, size);\n el.style.cssText = `position:absolute;top:0;left:0;transform:translate3d(${vec[0]}px,${vec[1]}px,0);transform-origin:0 0;`;\n }\n\n if (target) {\n if (prepend) target.prepend(el);else target.appendChild(el);\n }\n\n return () => {\n if (target) target.removeChild(el);\n root.unmount();\n };\n }\n }, [target, transform]);\n React.useLayoutEffect(() => {\n if (wrapperClass) el.className = wrapperClass;\n }, [wrapperClass]);\n const styles = React.useMemo(() => {\n if (transform) {\n return {\n position: 'absolute',\n top: 0,\n left: 0,\n width: size.width,\n height: size.height,\n transformStyle: 'preserve-3d',\n pointerEvents: 'none'\n };\n } else {\n return {\n position: 'absolute',\n transform: center ? 'translate3d(-50%,-50%,0)' : 'none',\n ...(fullscreen && {\n top: -size.height / 2,\n left: -size.width / 2,\n width: size.width,\n height: size.height\n }),\n ...style\n };\n }\n }, [style, center, fullscreen, size, transform]);\n const transformInnerStyles = React.useMemo(() => ({\n position: 'absolute',\n pointerEvents\n }), [pointerEvents]);\n React.useLayoutEffect(() => {\n if (transform) {\n root.render( /*#__PURE__*/React.createElement(\"div\", {\n ref: transformOuterRef,\n style: styles\n }, /*#__PURE__*/React.createElement(\"div\", {\n ref: transformInnerRef,\n style: transformInnerStyles\n }, /*#__PURE__*/React.createElement(\"div\", {\n ref: ref,\n className: className,\n style: style,\n children: children\n }))));\n } else {\n root.render( /*#__PURE__*/React.createElement(\"div\", {\n ref: ref,\n style: styles,\n className: className,\n children: children\n }));\n }\n });\n const visible = React.useRef(true);\n useFrame(() => {\n if (group.current) {\n camera.updateMatrixWorld();\n group.current.updateWorldMatrix(true, false);\n const vec = transform ? oldPosition.current : calculatePosition(group.current, camera, size);\n\n if (transform || Math.abs(oldZoom.current - camera.zoom) > eps || Math.abs(oldPosition.current[0] - vec[0]) > eps || Math.abs(oldPosition.current[1] - vec[1]) > eps) {\n const isBehindCamera = isObjectBehindCamera(group.current, camera);\n let raytraceTarget = false;\n\n if (typeof occlude === 'boolean') {\n if (occlude === true) {\n raytraceTarget = [scene];\n }\n } else if (Array.isArray(occlude)) {\n raytraceTarget = occlude.map(item => item.current);\n }\n\n const previouslyVisible = visible.current;\n\n if (raytraceTarget) {\n const isvisible = isObjectVisible(group.current, camera, raycaster, raytraceTarget);\n visible.current = isvisible && !isBehindCamera;\n } else {\n visible.current = !isBehindCamera;\n }\n\n if (previouslyVisible !== visible.current) {\n if (onOcclude) onOcclude(!visible.current);else el.style.display = visible.current ? 'block' : 'none';\n }\n\n el.style.zIndex = `${objectZIndex(group.current, camera, zIndexRange)}`;\n\n if (transform) {\n const [widthHalf, heightHalf] = [size.width / 2, size.height / 2];\n const fov = camera.projectionMatrix.elements[5] * heightHalf;\n const {\n isOrthographicCamera,\n top,\n left,\n bottom,\n right\n } = camera;\n const cameraMatrix = getCameraCSSMatrix(camera.matrixWorldInverse);\n const cameraTransform = isOrthographicCamera ? `scale(${fov})translate(${epsilon(-(right + left) / 2)}px,${epsilon((top + bottom) / 2)}px)` : `translateZ(${fov}px)`;\n let matrix = group.current.matrixWorld;\n\n if (sprite) {\n matrix = camera.matrixWorldInverse.clone().transpose().copyPosition(matrix).scale(group.current.scale);\n matrix.elements[3] = matrix.elements[7] = matrix.elements[11] = 0;\n matrix.elements[15] = 1;\n }\n\n el.style.width = size.width + 'px';\n el.style.height = size.height + 'px';\n el.style.perspective = isOrthographicCamera ? '' : `${fov}px`;\n\n if (transformOuterRef.current && transformInnerRef.current) {\n transformOuterRef.current.style.transform = `${cameraTransform}${cameraMatrix}translate(${widthHalf}px,${heightHalf}px)`;\n transformInnerRef.current.style.transform = getObjectCSSMatrix(matrix, 1 / ((distanceFactor || 10) / 400));\n }\n } else {\n const scale = distanceFactor === undefined ? 1 : objectScale(group.current, camera) * distanceFactor;\n el.style.transform = `translate3d(${vec[0]}px,${vec[1]}px,0) scale(${scale})`;\n }\n\n oldPosition.current = vec;\n oldZoom.current = camera.zoom;\n }\n }\n });\n return /*#__PURE__*/React.createElement(\"group\", _extends({}, props, {\n ref: group\n }));\n});\n\nexport { Html };\n","import { Vector3 } from \"three\"\n\nexport interface JsonVector {\n\tx: number\n\ty: number\n\tz: number\n}\n\nexport const vectorToJson = (vector: Vector3): JsonVector => {\n\treturn { x: vector.x, y: vector.y, z: vector.z }\n}\n\nexport const jsonToVector = (json: JsonVector): Vector3 => {\n\treturn new Vector3(json.x, json.y, json.z)\n}\n\nexport type VectorTuple = [x: number, y: number, z: number]\n\nexport const tupleToVector = (tuple: VectorTuple): Vector3 => {\n\treturn new Vector3(tuple[0], tuple[1], tuple[2])\n}\n\nexport const vectorToTuple = (vector: Vector3): VectorTuple => {\n\treturn [vector.x, vector.y, vector.z]\n}\n\nexport const tupleToJsonVector = (tuple: VectorTuple): JsonVector => {\n\treturn vectorToJson(tupleToVector(tuple))\n}\n\nexport const jsonVectorToTuple = (json: JsonVector): VectorTuple => {\n\treturn vectorToTuple(jsonToVector(json))\n}\n","import { Html } from \"@react-three/drei\"\nimport { forwardRef, useState } from \"react\"\nimport { Mesh } from \"three\"\nimport { vectorToTuple, VectorTuple } from \"../../utils/vector\"\n\ninterface AnchorPointProps {\n\tisStart?: boolean\n\tonChange: (position: VectorTuple) => void\n\tonPointerUp: () => void\n}\n\nconst AnchorPoint = forwardRef(\n\t({ isStart = false, onChange, onPointerUp }, ref) => {\n\t\tconst [hovered, setHover] = useState(false)\n\t\tconst [active, setActive] = useState(false)\n\n\t\treturn (\n\t\t\t r.clearDepth()}\n\t\t\t\tonPointerDown={() => setActive(true)}\n\t\t\t\tonPointerMove={(e) => {\n\t\t\t\t\tif (active) {\n\t\t\t\t\t\tonChange(vectorToTuple(e.point))\n\t\t\t\t\t}\n\t\t\t\t}}\n\t\t\t\tonPointerOut={() => setHover(false)}\n\t\t\t\tonPointerOver={() => setHover(true)}\n\t\t\t\tonPointerUp={() => {\n\t\t\t\t\tsetActive(false)\n\t\t\t\t\tonPointerUp()\n\t\t\t\t}}\n\t\t\t>\n\t\t\t\t\n\t\t\t\t\n\n\t\t\t\t\n\t\t\t\t\t

{isStart ? \"Start\" : \"End\"}

\n\t\t\t\t\n\t\t\t
\n\t\t)\n\t}\n)\n\nexport default AnchorPoint\n","import { useFrame } from \"@react-three/fiber\"\nimport { RefObject, useEffect, useRef } from \"react\"\nimport {\n\tBufferGeometry,\n\tCatmullRomCurve3,\n\tIntersection,\n\tMesh,\n\tObject3D,\n\tRaycaster,\n\tVector3,\n\tWebGLRenderer,\n} from \"three\"\nimport { degrees_to_radians } from \"../../utils/math\"\nimport { VectorTuple } from \"../../utils/vector\"\nimport AnchorPoint from \"../selectPosition/anchorPoint\"\n\ninterface SelectPathProps {\n\tstart: VectorTuple\n\tend: VectorTuple\n\tbody: RefObject\n\tshowAnchors?: boolean\n\tonChange?: (start: VectorTuple, end: VectorTuple) => void\n}\n\nconst SelectPath = ({\n\tstart = [0, 0, 0],\n\tend = [0, 0, 0],\n\tbody,\n\tshowAnchors = false,\n\tonChange,\n}: SelectPathProps) => {\n\tconst width = 0.03\n\tconst ref = useRef(null)\n\n\tconst _start = useRef(start)\n\tconst _end = useRef(start)\n\n\tconst startAnchor = useRef(null)\n\tconst endAnchor = useRef(null)\n\n\tuseEffect(() => {\n\t\t_start.current = [start[0], 0.1, start[2]]\n\t}, [start])\n\n\tuseEffect(() => {\n\t\t_end.current = [end[0], 0.1, end[2]]\n\t}, [end])\n\n\tuseFrame(() => {\n\t\tif (body && body.current && start && end && ref && ref.current) {\n\t\t\tconst zeroVector = new Vector3(\n\t\t\t\t_end.current[0] - _start.current[0],\n\t\t\t\t_end.current[1] - _start.current[1],\n\t\t\t\t_end.current[2] - _start.current[2]\n\t\t\t)\n\t\t\t\t.normalize()\n\t\t\t\t.applyAxisAngle(new Vector3(0, 1, 0), degrees_to_radians(90))\n\n\t\t\tconst cornerPointsRaw = [\n\t\t\t\tnew Vector3(\n\t\t\t\t\t_start.current[0] - zeroVector.x * width,\n\t\t\t\t\t_start.current[1],\n\t\t\t\t\t_start.current[2] - zeroVector.z * width\n\t\t\t\t),\n\t\t\t\tnew Vector3(\n\t\t\t\t\t_start.current[0] + zeroVector.x * width,\n\t\t\t\t\t_start.current[1],\n\t\t\t\t\t_start.current[2] + zeroVector.z * width\n\t\t\t\t),\n\t\t\t\tnew Vector3(\n\t\t\t\t\t_end.current[0] + zeroVector.x * width,\n\t\t\t\t\t_end.current[1],\n\t\t\t\t\t_end.current[2] + zeroVector.z * width\n\t\t\t\t),\n\t\t\t\tnew Vector3(\n\t\t\t\t\t_end.current[0] - zeroVector.x * width,\n\t\t\t\t\t_end.current[1],\n\t\t\t\t\t_end.current[2] - zeroVector.z * width\n\t\t\t\t),\n\t\t\t]\n\n\t\t\tconst endPoints = cornerPointsRaw.map((v) => new Vector3(v.x, 1, v.z))\n\n\t\t\tconst raycasted = endPoints\n\t\t\t\t.map((point) => {\n\t\t\t\t\tconst raycaster = new Raycaster()\n\t\t\t\t\traycaster.set(point, new Vector3(0, -1, 0))\n\n\t\t\t\t\tif (!body.current) return undefined\n\n\t\t\t\t\tconst intersections = raycaster\n\t\t\t\t\t\t.intersectObject(body.current)\n\t\t\t\t\t\t.sort((a: Intersection, b: Intersection) => a.distance - b.distance)\n\n\t\t\t\t\treturn intersections.map((v) => v.point)[0]\n\t\t\t\t})\n\t\t\t\t.flat()\n\t\t\t\t.filter((element) => element !== undefined) as Vector3[]\n\n\t\t\tif (raycasted.length === 4) {\n\t\t\t\tconst curve = new CatmullRomCurve3(raycasted, true)\n\t\t\t\tconst cornerPoints = curve.getPoints(4)\n\n\t\t\t\tref.current.setFromPoints(cornerPoints)\n\t\t\t}\n\t\t}\n\n\t\tif (startAnchor.current && _start.current) {\n\t\t\tstartAnchor.current.position.x = _start.current[0]\n\t\t\tstartAnchor.current.position.y = _start.current[1]\n\t\t\tstartAnchor.current.position.z = _start.current[2]\n\t\t}\n\n\t\tif (endAnchor.current && _end.current) {\n\t\t\tendAnchor.current.position.x = _end.current[0]\n\t\t\tendAnchor.current.position.y = _end.current[1]\n\t\t\tendAnchor.current.position.z = _end.current[2]\n\t\t}\n\t})\n\n\treturn (\n\t\t<>\n\t\t\t r.clearDepth()}\n\t\t\t>\n\t\t\t\t\n\t\t\t\t\n\t\t\t\n\n\t\t\t{showAnchors && (\n\t\t\t\t<>\n\t\t\t\t\t (_start.current = [point[0], 0.1, point[2]])}\n\t\t\t\t\t\tonPointerUp={() => {\n\t\t\t\t\t\t\tif (onChange) {\n\t\t\t\t\t\t\t\tonChange(_start.current, _end.current)\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}}\n\t\t\t\t\t/>\n\n\t\t\t\t\t (_end.current = [point[0], 0.1, point[2]])}\n\t\t\t\t\t\tonPointerUp={() => {\n\t\t\t\t\t\t\tif (onChange) {\n\t\t\t\t\t\t\t\tonChange(_start.current, _end.current)\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}}\n\t\t\t\t\t/>\n\t\t\t\t\n\t\t\t)}\n\t\t\n\t)\n}\n\nexport default SelectPath\n","import { Canvas } from \"@react-three/fiber\"\nimport { Suspense, useRef } from \"react\"\nimport { Mesh, NoToneMapping, sRGBEncoding } from \"three\"\nimport BodyModel from \"../../assets/models/body\"\nimport { VectorTuple } from \"../../utils/vector\"\nimport Environment from \"../environment/environment\"\nimport SelectPath from \"../models/selectPath\"\n\ninterface SelectPositionProps {\n\tstart: VectorTuple\n\tend: VectorTuple\n\tonChange: (start: VectorTuple, end: VectorTuple) => void\n\twidth?: number\n}\n\nconst SelectPosition = ({\n\tstart,\n\tend,\n\tonChange,\n\twidth = undefined,\n}: SelectPositionProps) => {\n\tconst body = useRef(null)\n\n\treturn (\n\t\t\n\t\t\t {\n\t\t\t\t\tgl.toneMapping = NoToneMapping\n\t\t\t\t\tgl.outputEncoding = sRGBEncoding\n\t\t\t\t}}\n\t\t\t>\n\t\t\t\t\n\t\t\t\t\t\n\n\t\t\t\t\t\n\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t\n\t)\n}\n\nexport default SelectPosition\n","import MarkdownIt from \"markdown-it\"\nimport { parse } from \"qs\"\nimport { useCallback, useEffect, useState } from \"react\"\nimport { useTranslation } from \"react-i18next\"\nimport \"react-markdown-editor-lite/lib/index.css\"\nimport { useNavigate, useParams } from \"react-router-dom\"\nimport { useLocation } from \"react-use\"\nimport Editor from \"src/components/editor/editor\"\nimport Input from \"src/components/input/input\"\nimport useSWR from \"swr\"\nimport DashboardHeader from \"../../../../components/dashboardHeader/dashboardHeader\"\nimport { HasAuth } from \"../../../../components/privateRoute/privateRoute\"\nimport SegmentedControl from \"../../../../components/segmentedControl/segmentedControl\"\nimport PatientSelectPosition from \"../../../../components/selectPosition/selectPosition\"\nimport MediaUpload from \"../../../../components/upload/upload\"\nimport useHandleChange from \"../../../../hooks/useHandleChange\"\nimport { fetchApiAuthorized } from \"../../../../network/fetch\"\nimport {\n\tJsonVector,\n\ttupleToJsonVector,\n\tVectorTuple,\n} from \"../../../../utils/vector\"\n\nconst CreatePatient = ({ auth }: HasAuth) => {\n\tconst { t } = useTranslation()\n\tconst navigate = useNavigate()\n\tconst mdParser = new MarkdownIt()\n\tconst { search } = useLocation()\n\tconst { id } = useParams() as Record\n\n\tconst [name, setName] = useHandleChange(\"\")\n\tconst [volume, setVolume] = useState(undefined)\n\tconst [preview, setPreview] = useState(undefined)\n\tconst [positions, setPositions] = useState([\n\t\t{ x: 0, y: 0.1, z: -0.1 },\n\t\t{ x: 0, y: 0.1, z: -0.3 },\n\t])\n\tconst [descriptionRaw, setMarkdown] = useState(\"\")\n\tconst [descriptionHtml, setHtml] = useState(\"\")\n\tconst [mirrorSides, setMirrorSides] = useState(false)\n\tconst [mirrorEnds, setMirrorEnds] = useState(false)\n\n\tconst duplicate = useCallback(\n\t\tasync (id: string) => {\n\t\t\tconst patient = await fetchApiAuthorized(\n\t\t\t\t`/patients/${id}`,\n\t\t\t\tauth.token,\n\t\t\t\tauth.expiresIn,\n\t\t\t\tundefined,\n\t\t\t\t\"GET\"\n\t\t\t)\n\n\t\t\tif (patient) {\n\t\t\t\tsetName(patient.name)\n\t\t\t\tsetMarkdown(patient.descriptionRaw)\n\t\t\t\tsetHtml(patient.descriptionHtml)\n\t\t\t\tif (\n\t\t\t\t\tpatient.sonoPositions &&\n\t\t\t\t\tArray.isArray(patient.sonoPositions) &&\n\t\t\t\t\t(patient.sonoPositions as JsonVector[]).length > 0\n\t\t\t\t) {\n\t\t\t\t\tsetPositions(patient.sonoPositions)\n\t\t\t\t}\n\n\t\t\t\tsetPreview(patient.previewUrl)\n\t\t\t\tsetVolume(patient.volumeKey)\n\t\t\t\tsetMirrorSides(patient.mirrored)\n\t\t\t\tsetMirrorEnds(patient.mirroredEnds)\n\t\t\t}\n\t\t},\n\t\t[auth.expiresIn, auth.token, setName]\n\t)\n\n\tuseEffect(() => {\n\t\tif (search) {\n\t\t\tconst query = parse(search.replace(\"?\", \"\"))\n\t\t\tif (query.copy) {\n\t\t\t\tduplicate(query.copy as string)\n\t\t\t}\n\t\t}\n\t}, [search, duplicate])\n\n\tconst { data: currentPatient } = useSWR(\n\t\tid ? [`/patients/${id}`, auth.token, auth.expiresIn] : null,\n\t\tfetchApiAuthorized\n\t)\n\n\tuseEffect(() => {\n\t\tif (currentPatient) {\n\t\t\tsetName(currentPatient.name)\n\t\t\tsetMarkdown(currentPatient.descriptionRaw)\n\t\t\tsetHtml(currentPatient.descriptionHtml)\n\t\t\tif (\n\t\t\t\tcurrentPatient.sonoPositions &&\n\t\t\t\tArray.isArray(currentPatient.sonoPositions) &&\n\t\t\t\t(currentPatient.sonoPositions as JsonVector[]).length > 0\n\t\t\t) {\n\t\t\t\tsetPositions(currentPatient.sonoPositions)\n\t\t\t}\n\n\t\t\tsetPreview(currentPatient.previewUrl)\n\t\t\tsetVolume(currentPatient.volumeKey)\n\t\t\tsetMirrorSides(currentPatient.mirrored)\n\t\t\tsetMirrorEnds(currentPatient.mirroredEnds)\n\t\t}\n\t}, [currentPatient, setName])\n\n\tconst create = async () => {\n\t\tlet formData = new FormData()\n\t\tif (volume) {\n\t\t\tformData.append(\"volume\", volume)\n\t\t}\n\t\tif (preview) {\n\t\t\tformData.append(\"preview\", preview)\n\t\t}\n\t\tformData.append(\n\t\t\t\"json\",\n\t\t\tJSON.stringify({\n\t\t\t\tname,\n\t\t\t\tdescriptionRaw,\n\t\t\t\tdescriptionHtml,\n\t\t\t\tpositions,\n\t\t\t\tmirrored: mirrorSides,\n\t\t\t\tmirroredEnds: mirrorEnds,\n\t\t\t})\n\t\t)\n\n\t\tconst endpoint = id ? `/patients/${id}` : \"/patients/create\"\n\n\t\tconst success = await fetchApiAuthorized(\n\t\t\tendpoint,\n\t\t\tauth.token,\n\t\t\tauth.expiresIn,\n\t\t\tformData,\n\t\t\tid ? \"PUT\" : \"POST\"\n\t\t)\n\t\tif (success) {\n\t\t\tnavigate(\"/moderator/patient\")\n\t\t}\n\t}\n\n\tconst [titleBorder, setTitleBorder] = useState(undefined)\n\tconst [fileBorder, setFileBorder] = useState(undefined)\n\n\tconst check = () => {\n\t\tsetTitleBorder(name.length === 0 ? \"border-s-red\" : undefined)\n\t\tif (!id) {\n\t\t\tsetFileBorder(volume === undefined ? \"border-s-red\" : undefined)\n\t\t}\n\n\t\tif ((id && name.length > 0) || (name.length > 0 && volume !== undefined)) {\n\t\t\tcreate()\n\t\t}\n\t}\n\n\treturn (\n\t\t<>\n\t\t\t navigate(\"/moderator/patient\")}\n\t\t\t\tcancelButtonTitle={t(\"cancel\") as string}\n\t\t\t\ttitle={\n\t\t\t\t\tid ? (t(\"edit_patient\") as string) : (t(\"create_patient\") as string)\n\t\t\t\t}\n\t\t\t/>\n\n\t\t\t
\n\t\t\t\t
\n\t\t\t\t\t

{t(\"title\")}

\n\t\t\t\t\t\n\t\t\t\t
\n\n\t\t\t\t

{t(\"anamnesis\")}

\n\n\t\t\t\t {\n\t\t\t\t\t\tsetMarkdown(markdown)\n\t\t\t\t\t\tsetHtml(html)\n\t\t\t\t\t}}\n\t\t\t\t\tonImageUpload={(f: File) => {\n\t\t\t\t\t\treturn new Promise((resolve) => {\n\t\t\t\t\t\t\tconst reader = new FileReader()\n\t\t\t\t\t\t\treader.onload = (data) => {\n\t\t\t\t\t\t\t\tif (data && data.target) {\n\t\t\t\t\t\t\t\t\tresolve(data.target.result)\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\treader.readAsDataURL(f)\n\t\t\t\t\t\t})\n\t\t\t\t\t}}\n\t\t\t\t/>\n\n\t\t\t\t setVolume(file)}\n\t\t\t\t/>\n\n\t\t\t\t setPreview(file)}\n\t\t\t\t/>\n\n\t\t\t\t
\n\t\t\t\t\t

{t(\"mirror\")}

\n\t\t\t\t\t
\n\t\t\t\t\t\t

{t(\"left_right\")}

\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t

{t(\"front_back\")}

\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t
\n\n\t\t\t\t\n\t\t\t\t\t\tsetPositions([tupleToJsonVector(start), tupleToJsonVector(end)])\n\t\t\t\t\t}\n\t\t\t\t/>\n\t\t\t
\n\t\t\n\t)\n}\n\nexport default CreatePatient\n","import { useTranslation } from \"react-i18next\"\nimport { useNavigate } from \"react-router-dom\"\nimport useSWR from \"swr\"\nimport DashboardBody from \"../../../components/dashboardBody/dashboardBody\"\nimport DashboardHeader from \"../../../components/dashboardHeader/dashboardHeader\"\nimport ListView from \"../../../components/list/list\"\nimport { HasAuth } from \"../../../components/privateRoute/privateRoute\"\nimport { fetchApiAuthorized } from \"../../../network/fetch\"\nimport { useErrorStore } from \"../../../state/stores/errorStore\"\n\nconst Patients = ({ auth }: HasAuth) => {\n\tconst navigate = useNavigate()\n\tconst { t } = useTranslation()\n\tconst { data: patients, mutate } = useSWR(\n\t\t[\"/patients\", auth.token, auth.expiresIn],\n\t\tfetchApiAuthorized\n\t)\n\tconst deletionConfirmation = useErrorStore(\n\t\t(state) => state.deleteConfirmation\n\t)\n\n\treturn (\n\t\t\n\t\t\t navigate(\"/moderator/patient/create\")}\n\t\t\t\tbuttonTitle=\"Datensatz hinzufügen\"\n\t\t\t\ttitle={t(\"patients\") as string}\n\t\t\t/>\n\t\t\t {\n\t\t\t\t\tdeletionConfirmation(async () => {\n\t\t\t\t\t\tawait fetchApiAuthorized(\n\t\t\t\t\t\t\t`/patients/${v.id}`,\n\t\t\t\t\t\t\tauth.token,\n\t\t\t\t\t\t\tauth.expiresIn,\n\t\t\t\t\t\t\tundefined,\n\t\t\t\t\t\t\t\"DELETE\"\n\t\t\t\t\t\t)\n\n\t\t\t\t\t\tmutate()\n\t\t\t\t\t})\n\t\t\t\t}}\n\t\t\t\tonDublicate={(v) => navigate(`/moderator/patient/create?copy=${v.id}`)}\n\t\t\t\tonEdit={(v) => navigate(`/moderator/patient/${v.id}`)}\n\t\t\t/>\n\t\t\n\t)\n}\n\nexport default Patients\n","import { useTranslation } from \"react-i18next\"\nimport Icon, { IconImage } from \"src/components/iconImage/iconImage\"\n\ninterface AddItemProps {\n\tonClick: () => void\n}\n\nconst AddItem = ({ onClick }: AddItemProps) => {\n\tconst { t } = useTranslation()\n\n\treturn (\n\t\t\n\t\t\t\n\t\t\t{t(\"add_question\")}\n\t\t\n\t)\n}\n\nexport default AddItem\n","import { useRef } from \"react\"\nimport { useTranslation } from \"react-i18next\"\nimport DndContainer from \"src/components/dndContainer/dndContainer\"\nimport Icon, { IconImage, MoveIcon } from \"src/components/iconImage/iconImage\"\nimport Input from \"src/components/input/input\"\nimport useDnd from \"../../hooks/useDnd\"\nimport useHandleChange from \"../../hooks/useHandleChange\"\nimport CheckBox from \"../checkBox/checkBox\"\n\ninterface AnswerProps {\n\tid: string | number\n\tindex: number\n\tmoveCard: (dragIndex: number, hoverIndex: number) => void\n\tisSolution: boolean\n\tonDelete: () => void\n\tsetSolution: (isSolution: boolean) => void\n\tonChangeAnswer: (value: string) => void\n\tinitialValue: string\n\tshowIcons?: boolean\n}\n\nconst Answer = ({\n\tid,\n\tindex,\n\tmoveCard,\n\tisSolution = false,\n\tsetSolution,\n\tinitialValue,\n\tonChangeAnswer,\n\tonDelete,\n\tshowIcons = true,\n}: AnswerProps) => {\n\tconst { t } = useTranslation()\n\tconst ref = useRef(null!)\n\tconst opacity = useDnd(ref, id, index, moveCard)\n\tconst [answer, setAnswer] = useHandleChange(initialValue, onChangeAnswer)\n\n\treturn (\n\t\t\n\t\t\t\n\t\t\t setSolution(isSolution)}\n\t\t\t/>\n\t\t\t{showIcons && (\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t)}\n\t\t
\n\t)\n}\n\nexport default Answer\n","import update from \"immutability-helper\"\nimport { useCallback, useEffect, useState } from \"react\"\nimport { DndProvider } from \"react-dnd\"\nimport { HTML5Backend } from \"react-dnd-html5-backend\"\nimport { useTranslation } from \"react-i18next\"\nimport { useNavigate, useParams } from \"react-router-dom\"\nimport Input from \"src/components/input/input\"\nimport useSWR, { useSWRConfig } from \"swr\"\nimport AddItem from \"../../../../components/addItem/addItem\"\nimport QuestionAnswer from \"../../../../components/answer/answer\"\nimport DashboardHeader from \"../../../../components/dashboardHeader/dashboardHeader\"\nimport { HasAuth } from \"../../../../components/privateRoute/privateRoute\"\nimport SegmentedControl from \"../../../../components/segmentedControl/segmentedControl\"\nimport MediaUpload from \"../../../../components/upload/upload\"\nimport useHandleChange from \"../../../../hooks/useHandleChange\"\nimport { fetchApiAuthorized } from \"../../../../network/fetch\"\nimport { useErrorStore } from \"../../../../state/stores/errorStore\"\n\nconst CreateQuiz = ({ auth }: HasAuth) => {\n\tconst { t } = useTranslation()\n\tconst { id } = useParams() as Record\n\tconst navigate = useNavigate()\n\tconst { mutate } = useSWRConfig()\n\n\tconst { data: currentQuiz, mutate: mutateLocally } = useSWR(\n\t\tid ? [`/quizzes/${id}`, auth.token, auth.expiresIn] : null,\n\t\tfetchApiAuthorized\n\t)\n\n\tconst [question, setQuestion] = useHandleChange(\"\")\n\tconst [answers, setAnswers] = useState[]>([])\n\tconst [solution, setSolution] = useState([])\n\tconst [image, setImage] = useState(undefined)\n\tconst [multiplePossible, setMultiplePossible] = useState(false)\n\n\tuseEffect(() => {\n\t\tif (currentQuiz) {\n\t\t\tsetQuestion(currentQuiz.question as string)\n\n\t\t\tsetAnswers(\n\t\t\t\tcurrentQuiz.answers.map((v: any, i: any) => {\n\t\t\t\t\treturn { id: i, text: v }\n\t\t\t\t})\n\t\t\t)\n\t\t\tsetSolution(currentQuiz.solution)\n\t\t\tsetImage(currentQuiz.imageUrl)\n\t\t\tsetMultiplePossible(currentQuiz.multiplePossible)\n\t\t}\n\t}, [currentQuiz, setQuestion, setAnswers])\n\n\tconst create = async () => {\n\t\tconst _answers = answers.map((v: any) => v.text).filter((v) => v !== \"\")\n\t\tlet formData = new FormData()\n\t\t//TODO: check if correct\n\t\tformData.append(\"file\", image as Blob)\n\t\tformData.append(\n\t\t\t\"json\",\n\t\t\tJSON.stringify({\n\t\t\t\tquestion,\n\t\t\t\tanswers: _answers,\n\t\t\t\tsolution,\n\t\t\t\tmultiplePossible,\n\t\t\t})\n\t\t)\n\n\t\tconst endpoint = id ? `/quizzes/${id}` : \"/quizzes/create\"\n\n\t\tconst success = await fetchApiAuthorized(\n\t\t\tendpoint,\n\t\t\tauth.token,\n\t\t\tauth.expiresIn,\n\t\t\tformData,\n\t\t\tid ? \"PUT\" : \"POST\"\n\t\t)\n\n\t\tif (success) {\n\t\t\tmutate(\"/quizzes\")\n\t\t\t// trigger([\"/quizzes\", auth.token, auth.expiresIn], true)\n\n\t\t\tnavigate(\"/moderator/quiz\")\n\t\t}\n\t}\n\n\tconst movePart = useCallback(\n\t\t(dragIndex: number, hoverIndex: number) => {\n\t\t\tconst dragCard = answers[dragIndex]\n\t\t\tsetAnswers(\n\t\t\t\tupdate(answers, {\n\t\t\t\t\t$splice: [\n\t\t\t\t\t\t[dragIndex, 1],\n\t\t\t\t\t\t[hoverIndex, 0, dragCard],\n\t\t\t\t\t],\n\t\t\t\t})\n\t\t\t)\n\t\t},\n\t\t[answers]\n\t)\n\n\tuseEffect(() => {\n\t\tif (solution.length === 1) {\n\t\t\tsetMultiplePossible(false)\n\t\t} else if (solution.length > 1) {\n\t\t\tsetMultiplePossible(true)\n\t\t}\n\t}, [solution])\n\n\tconst deletionConfirmation = useErrorStore(\n\t\t(state) => state.deleteConfirmation\n\t)\n\n\treturn (\n\t\t<>\n\t\t\t v.text.length === 0).length > 0\n\t\t\t\t}\n\t\t\t\tbuttonOnClick={create}\n\t\t\t\tbuttonTitle={t(\"save\") as string}\n\t\t\t\tcancelButtonOnClick={() => {\n\t\t\t\t\tnavigate(\"/moderator/quiz\")\n\t\t\t\t}}\n\t\t\t\tcancelButtonTitle={t(\"cancel\") as string}\n\t\t\t\ttitle={\n\t\t\t\t\tid ? (t(\"edit_question\") as string) : (t(\"create_question\") as string)\n\t\t\t\t}\n\t\t\t/>\n\n\t\t\t
\n\t\t\t\t
\n\t\t\t\t\t

{t(\"question\")}

\n\t\t\t\t\t\n\t\t\t\t
\n\n\t\t\t\t setImage(file)}\n\t\t\t\t\tonDelete={() =>\n\t\t\t\t\t\tdeletionConfirmation(async () => {\n\t\t\t\t\t\t\tawait fetchApiAuthorized(\n\t\t\t\t\t\t\t\t`/quizzes/${id}/image`,\n\t\t\t\t\t\t\t\tauth.token,\n\t\t\t\t\t\t\t\tauth.expiresIn,\n\t\t\t\t\t\t\t\tundefined,\n\t\t\t\t\t\t\t\t\"DELETE\"\n\t\t\t\t\t\t\t)\n\n\t\t\t\t\t\t\tmutateLocally()\n\t\t\t\t\t\t})\n\t\t\t\t\t}\n\t\t\t\t/>\n\n\t\t\t\t
\n\t\t\t\t\t

{t(\"answers\")}

\n\n\t\t\t\t\t 0}\n\t\t\t\t\t\toptions={[\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\ttitle:\n\t\t\t\t\t\t\t\t\tsolution.length === 0\n\t\t\t\t\t\t\t\t\t\t? \"Mehrere Antworten möglich\"\n\t\t\t\t\t\t\t\t\t\t: \"Mehrere richtige Antworten\",\n\t\t\t\t\t\t\t\tvalue: true,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\ttitle:\n\t\t\t\t\t\t\t\t\tsolution.length === 0\n\t\t\t\t\t\t\t\t\t\t? \"Eine Antwort möglich\"\n\t\t\t\t\t\t\t\t\t\t: \"Eine richtige Antwort\",\n\t\t\t\t\t\t\t\tvalue: false,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t]}\n\t\t\t\t\t\tvalue={multiplePossible}\n\t\t\t\t\t\tonChange={setMultiplePossible}\n\t\t\t\t\t/>\n\t\t\t\t
\n\n\t\t\t\t<>\n\t\t\t\t\t\n\t\t\t\t\t\t{answers.map((v: Record, i) => {\n\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\tsetSolution(\n\t\t\t\t\t\t\t\t\t\t\tsolution.includes(i)\n\t\t\t\t\t\t\t\t\t\t\t\t? solution.filter((v) => v !== i)\n\t\t\t\t\t\t\t\t\t\t\t\t: [...solution, i]\n\t\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tonChangeAnswer={(v: string) => {\n\t\t\t\t\t\t\t\t\t\tsetAnswers((answer) => {\n\t\t\t\t\t\t\t\t\t\t\tanswers[i].text = v\n\t\t\t\t\t\t\t\t\t\t\treturn [...answers]\n\t\t\t\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\tonDelete={() => {\n\t\t\t\t\t\t\t\t\t\tsetAnswers((v) => v.filter((_, idx) => idx !== i))\n\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t})}\n\t\t\t\t\t\n\t\t\t\t\t {\n\t\t\t\t\t\t\tsetAnswers((v) => [...v, { text: \"\", id: v.length }])\n\t\t\t\t\t\t}}\n\t\t\t\t\t/>\n\t\t\t\t\n\t\t\t
\n\t\t\n\t)\n}\n\nexport default CreateQuiz\n","import { useTranslation } from \"react-i18next\"\nimport { useNavigate } from \"react-router-dom\"\nimport useSWR from \"swr\"\nimport DashboardBody from \"../../../components/dashboardBody/dashboardBody\"\nimport DashboardHeader from \"../../../components/dashboardHeader/dashboardHeader\"\nimport ListView from \"../../../components/list/list\"\nimport { HasAuth } from \"../../../components/privateRoute/privateRoute\"\nimport { fetchApiAuthorized } from \"../../../network/fetch\"\nimport { useErrorStore } from \"../../../state/stores/errorStore\"\n\nconst Quizzes = ({ auth }: HasAuth) => {\n\tconst navigate = useNavigate()\n\tconst { t } = useTranslation()\n\tconst { data: quizzes, mutate } = useSWR(\n\t\t[\"/quizzes\", auth.token, auth.expiresIn],\n\t\tfetchApiAuthorized\n\t)\n\n\tconst deletionConfirmation = useErrorStore(\n\t\t(state) => state.deleteConfirmation\n\t)\n\n\treturn (\n\t\t\n\t\t\t navigate(\"/moderator/quiz/create\")}\n\t\t\t\tbuttonTitle={t(\"add_question\") as string}\n\t\t\t\ttitle={t(\"questions\") as string}\n\t\t\t/>\n\n\t\t\t {\n\t\t\t\t\tdeletionConfirmation(async () => {\n\t\t\t\t\t\tawait fetchApiAuthorized(\n\t\t\t\t\t\t\t`/quizzes/${v.id}`,\n\t\t\t\t\t\t\tauth.token,\n\t\t\t\t\t\t\tauth.expiresIn,\n\t\t\t\t\t\t\tundefined,\n\t\t\t\t\t\t\t\"DELETE\"\n\t\t\t\t\t\t)\n\n\t\t\t\t\t\tmutate()\n\t\t\t\t\t})\n\t\t\t\t}}\n\t\t\t\tonEdit={(v) => navigate(`/moderator/quiz/${v.id}`)}\n\t\t\t/>\n\t\t\n\t)\n}\n\nexport default Quizzes\n","import { useEffect } from \"react\"\nimport { useTranslation } from \"react-i18next\"\nimport { useNavigate, useParams } from \"react-router-dom\"\nimport Input from \"src/components/input/input\"\nimport Select from \"src/components/input/select\"\nimport useSWR from \"swr\"\nimport DashboardHeader from \"../../../../components/dashboardHeader/dashboardHeader\"\nimport { HasAuth } from \"../../../../components/privateRoute/privateRoute\"\nimport useHandleChange from \"../../../../hooks/useHandleChange\"\nimport { fetchApiAuthorized } from \"../../../../network/fetch\"\n\nconst CreateUser = ({ auth }: HasAuth) => {\n\tconst { t } = useTranslation()\n\tconst { id } = useParams() as Record\n\tconst navigate = useNavigate()\n\n\tconst [title, setTitle] = useHandleChange(\"\")\n\tconst [name, setName] = useHandleChange(\"\")\n\tconst [email, setEmail] = useHandleChange(\"\")\n\tconst [role, setRole] = useHandleChange(undefined)\n\tconst { data: currentUser } = useSWR(\n\t\tid ? [`/users/user/${id}`, auth.token, auth.expiresIn] : null,\n\t\tfetchApiAuthorized\n\t)\n\n\tuseEffect(() => {\n\t\tif (currentUser) {\n\t\t\tsetTitle(currentUser.title)\n\t\t\tsetName(currentUser.name)\n\t\t\tsetEmail(currentUser.email)\n\t\t\tsetRole(currentUser.role)\n\t\t}\n\t}, [currentUser, setTitle, setName, setEmail, setRole])\n\n\tconst save = async () => {\n\t\tconst endpoint = id\n\t\t\t? `/users/moderators/${id}`\n\t\t\t: \"/users/moderators/register\"\n\n\t\tconst success = await fetchApiAuthorized(\n\t\t\tendpoint,\n\t\t\tauth.token,\n\t\t\tauth.expiresIn,\n\t\t\t{ title, email, name, role },\n\t\t\tid ? \"PUT\" : \"POST\"\n\t\t)\n\t\tif (success) {\n\t\t\tnavigate(\"/moderator/user\")\n\t\t}\n\t}\n\n\tconst disabled =\n\t\tname.length === 0 || role === undefined || !email.includes(\"@\")\n\n\treturn (\n\t\t<>\n\t\t\t navigate(\"/moderator/user\")}\n\t\t\t\tcancelButtonTitle={t(\"cancel\") as string}\n\t\t\t\ttitle={id ? (t(\"edit_user\") as string) : (t(\"create_user\") as string)}\n\t\t\t/>\n\n\t\t\t
\n\t\t\t\t
\n\t\t\t\t\t

{t(\"title\")}

\n\t\t\t\t\t\n\t\t\t\t
\n\n\t\t\t\t
\n\t\t\t\t\t

{t(\"name\")}

\n\t\t\t\t\t\n\t\t\t\t
\n\n\t\t\t\t
\n\t\t\t\t\t

{t(\"email\")}

\n\t\t\t\t\t\n\t\t\t\t
\n\n\t\t\t\t{/* // TODO: dont use option, make it like other */}\n\t\t\t\t
\n\t\t\t\t\t

{t(\"role\")}

\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t
\n\t\t\n\t)\n}\n\nexport default CreateUser\n","import { useTranslation } from \"react-i18next\"\nimport { useNavigate } from \"react-router-dom\"\nimport useSWR from \"swr\"\nimport DashboardBody from \"../../../components/dashboardBody/dashboardBody\"\nimport DashboardHeader from \"../../../components/dashboardHeader/dashboardHeader\"\nimport ListView from \"../../../components/list/list\"\nimport { HasAuth } from \"../../../components/privateRoute/privateRoute\"\nimport { fetchApiAuthorized } from \"../../../network/fetch\"\n\nconst Users = ({ auth }: HasAuth) => {\n\tconst { t } = useTranslation()\n\tconst navigate = useNavigate()\n\tconst { data: moderators } = useSWR(\n\t\t[\"/users/moderators\", auth.token, auth.expiresIn],\n\t\tfetchApiAuthorized\n\t)\n\tconst { data: moderator } = useSWR(\n\t\t[\"/users/current\", auth.token, auth.expiresIn],\n\t\tfetchApiAuthorized\n\t)\n\n\tconst onCreate = () => {\n\t\tnavigate(\"/moderator/user/create\")\n\t}\n\n\treturn (\n\t\t\n\t\t\t\n\n\t\t\t) =>\n\t\t\t\t\t!value.activated &&

{t(\"not_activated\")}

\n\t\t\t\t}\n\t\t\t\tdata={moderators}\n\t\t\t\tloading={moderators === undefined || moderator === undefined}\n\t\t\t\tshowDelete={(v: any) => {\n\t\t\t\t\tif (moderator && moderator.role === \"admin\") {\n\t\t\t\t\t\treturn v.id !== moderator.id\n\t\t\t\t\t} else {\n\t\t\t\t\t\treturn false\n\t\t\t\t\t}\n\t\t\t\t}}\n\t\t\t\ttitle=\"name\"\n\t\t\t\tonDelete={(v) =>\n\t\t\t\t\tfetchApiAuthorized(\n\t\t\t\t\t\t`users/${v.id}`,\n\t\t\t\t\t\tauth.token,\n\t\t\t\t\t\tauth.expiresIn,\n\t\t\t\t\t\t{},\n\t\t\t\t\t\t\"DELETE\"\n\t\t\t\t\t)\n\t\t\t\t}\n\t\t\t\tonEdit={(v) => navigate(`/moderator/user/${v._id}`)}\n\t\t\t/>\n\t\t
\n\t)\n}\n\nexport default Users\n","import useSWR from \"swr\"\nimport useHandleChange from \"../../hooks/useHandleChange\"\nimport { fetchApiAuthorized } from \"../../network/fetch\"\nimport { useAuthStore } from \"../../state/stores/authStore\"\nimport ScheduleItemView, { ScheduleItemSubviewProps } from \"./scheduleItemView\"\n\nconst ScheduleItemCaseView = ({\n\tvalue,\n\tonChange,\n}: ScheduleItemSubviewProps) => {\n\tconst [_value, setValue] = useHandleChange(value ?? \"default\", onChange)\n\n\tconst token = useAuthStore((state) => state.adminToken)\n\tconst expiresIn = useAuthStore((state) => state.adminExpiresIn)\n\tconst { data: cases } = useSWR(\n\t\t[\"/cases\", token, expiresIn],\n\t\tfetchApiAuthorized\n\t)\n\n\treturn (\n\t\t\n\t)\n}\n\nexport default ScheduleItemCaseView\n","import update from \"immutability-helper\"\nimport moment from \"moment\"\nimport { nanoid } from \"nanoid\"\nimport { parse } from \"qs\"\nimport { ChangeEvent, useCallback, useEffect, useState } from \"react\"\nimport Datetime from \"react-datetime\"\nimport { isBrowser, isFirefox, isIE, isSafari } from \"react-device-detect\"\nimport { DndProvider } from \"react-dnd\"\nimport { HTML5Backend } from \"react-dnd-html5-backend\"\nimport { useTranslation } from \"react-i18next\"\nimport { useNavigate, useParams } from \"react-router-dom\"\nimport { useLocation } from \"react-use\"\nimport Button, { ButtonTheme } from \"src/components/button/button\"\nimport DndContainer from \"src/components/dndContainer/dndContainer\"\nimport Input from \"src/components/input/input\"\nimport Number from \"src/components/number/number\"\nimport useSWR from \"swr\"\nimport AddSchedule from \"../../../../components/addSchedule/addSchedule\"\nimport DashboardHeader from \"../../../../components/dashboardHeader/dashboardHeader\"\nimport { HasAuth } from \"../../../../components/privateRoute/privateRoute\"\nimport ScheduleItem from \"../../../../components/scheduleItem/scheduleItem\"\nimport ScheduleItemCaseView from \"../../../../components/scheduleItemView/caseView\"\nimport ScheduleItemMediaView from \"../../../../components/scheduleItemView/mediaView\"\nimport ScheduleItemPatientView from \"../../../../components/scheduleItemView/patientView\"\nimport ScheduleItemQuizView from \"../../../../components/scheduleItemView/quizView\"\nimport SegmentedControl from \"../../../../components/segmentedControl/segmentedControl\"\nimport useHandleChange from \"../../../../hooks/useHandleChange\"\nimport { fetchApiAuthorized } from \"../../../../network/fetch\"\nimport { useErrorStore } from \"../../../../state/stores/errorStore\"\nimport { formatName } from \"../../../../utils/formatName\"\nimport { formatUrl } from \"../../../../utils/formatUrl\"\n\nconst CreateWebinar = ({ auth }: HasAuth) => {\n\tconst navigate = useNavigate()\n\tconst { t } = useTranslation()\n\tconst { id } = useParams() as Record\n\tconst { search } = useLocation()\n\tconst [date, setDate] = useHandleChange(\"\")\n\tconst [title, setTitle] = useHandleChange(\"\")\n\n\tconst [participants, setParticipants] = useState<\n\t\tRecord[] | undefined\n\t>(undefined)\n\tconst [schedule, setSchedule] = useState[]>([\n\t\t{ id: 1, type: \"patient\" },\n\t\t{ id: 2, type: \"quiz\" },\n\t])\n\tconst [csvFile, setCsvFile] = useState(undefined)\n\tconst [dateBorder, setDateBorder] = useState(undefined)\n\tconst [missingData, setMissingData] = useState([])\n\tconst [isEnglish, setIsEnglish] = useState(false)\n\n\tconst duplicate = useCallback(\n\t\tasync (id: string) => {\n\t\t\tconst webinar = await fetchApiAuthorized(\n\t\t\t\t`/webinars/${id}`,\n\t\t\t\tauth.token,\n\t\t\t\tauth.expiresIn,\n\t\t\t\tundefined,\n\t\t\t\t\"GET\"\n\t\t\t)\n\t\t\tif (webinar) {\n\t\t\t\tsetDate(moment(webinar.date).format(\"YYYY-MM-DD[T]HH:mm\"))\n\t\t\t\tsetTitle(webinar.title ?? \"\")\n\t\t\t\tsetCsvFile(webinar.csvFile)\n\t\t\t\tsetIsEnglish(webinar.isEnglish)\n\t\t\t\tsetSchedule(\n\t\t\t\t\twebinar.editSchedule\n\t\t\t\t\t\t.filter(\n\t\t\t\t\t\t\t(v: Record, i: number) =>\n\t\t\t\t\t\t\t\tv.type !== \"sendoff\" && i !== 0\n\t\t\t\t\t\t)\n\t\t\t\t\t\t.map((v: Record, i: number) => {\n\t\t\t\t\t\t\tif (v.data) {\n\t\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\t\tid: i,\n\t\t\t\t\t\t\t\t\ttype: v.type,\n\t\t\t\t\t\t\t\t\tdata: (v.data as Record).id,\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\treturn { id: i, type: v.type }\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t})\n\t\t\t\t)\n\t\t\t}\n\t\t},\n\t\t[auth, setDate, setTitle]\n\t)\n\n\tuseEffect(() => {\n\t\tif (search) {\n\t\t\tconst query = parse(search.replace(\"?\", \"\"))\n\t\t\tif (query.copy) {\n\t\t\t\tduplicate(query.copy as string)\n\t\t\t}\n\t\t}\n\t}, [search, duplicate])\n\n\tconst { data: currentWebinar } = useSWR(\n\t\tid ? [`/webinars/${id}`, auth.token, auth.expiresIn] : null,\n\t\tfetchApiAuthorized\n\t)\n\n\tuseEffect(() => {\n\t\tif (currentWebinar) {\n\t\t\tif (id) {\n\t\t\t\tsetDate(moment(currentWebinar.date).format(\"YYYY-MM-DD[T]HH:mm\"))\n\t\t\t\tsetTitle(currentWebinar.title ?? \"\")\n\t\t\t\tsetParticipants(currentWebinar.participants)\n\t\t\t\tsetCsvFile(currentWebinar.csvFile)\n\t\t\t\tsetIsEnglish(currentWebinar.isEnglish)\n\t\t\t}\n\t\t\tsetSchedule(\n\t\t\t\tcurrentWebinar.editSchedule\n\t\t\t\t\t.filter(\n\t\t\t\t\t\t(v: Record, i: number) =>\n\t\t\t\t\t\t\tv.type !== \"sendoff\" && i !== 0\n\t\t\t\t\t)\n\t\t\t\t\t.map((v: Record, i: number) => {\n\t\t\t\t\t\tif (v.data) {\n\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\tid: i,\n\t\t\t\t\t\t\t\ttype: v.type,\n\t\t\t\t\t\t\t\tdata: (v.data as Record).id,\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\treturn { id: i, type: v.type }\n\t\t\t\t\t\t}\n\t\t\t\t\t})\n\t\t\t)\n\t\t}\n\t}, [currentWebinar, id, search, setDate, setTitle])\n\n\tconst movePart = useCallback(\n\t\t(dragIndex: number, hoverIndex: number) => {\n\t\t\tconst dragCard = schedule[dragIndex]\n\t\t\tsetSchedule(\n\t\t\t\tupdate(schedule, {\n\t\t\t\t\t$splice: [\n\t\t\t\t\t\t[dragIndex, 1],\n\t\t\t\t\t\t[hoverIndex, 0, dragCard],\n\t\t\t\t\t],\n\t\t\t\t})\n\t\t\t)\n\t\t},\n\t\t[schedule]\n\t)\n\n\tconst showOldPicker = (isSafari && isBrowser) || isFirefox || isIE\n\n\tconst upload = async () => {\n\t\tconst _date = new Date(date).toISOString()\n\n\t\tlet formData = new FormData()\n\t\tif (moment().isAfter(moment(date)) && !id) {\n\t\t\tuseErrorStore.getState().update(new Error(t(\"date_is_past\") as string))\n\t\t} else {\n\t\t\tconst _schedule = [\n\t\t\t\t{ type: \"presentation\" },\n\t\t\t\t...schedule,\n\t\t\t\t{ type: \"sendoff\" },\n\t\t\t]\n\t\t\tif (csvFile) {\n\t\t\t\tformData.append(\"file\", csvFile)\n\t\t\t}\n\n\t\t\tformData.append(\n\t\t\t\t\"json\",\n\t\t\t\tJSON.stringify({\n\t\t\t\t\tdate: _date,\n\t\t\t\t\tschedule: _schedule,\n\t\t\t\t\ttitle,\n\t\t\t\t\tisEnglish,\n\t\t\t\t})\n\t\t\t)\n\n\t\t\tconst endpoint = id ? `/webinars/${id}` : \"/webinars/create\"\n\n\t\t\tconst success = await fetchApiAuthorized(\n\t\t\t\tendpoint,\n\t\t\t\tauth.token,\n\t\t\t\tauth.expiresIn,\n\t\t\t\tformData,\n\t\t\t\tid ? \"PUT\" : \"POST\"\n\t\t\t)\n\n\t\t\tif (success) {\n\t\t\t\tnavigate(\"/moderator/webinar\")\n\t\t\t}\n\t\t}\n\t}\n\n\tconst check = () => {\n\t\tif (\n\t\t\tdate.length === 0 ||\n\t\t\tschedule.length === 0 ||\n\t\t\tschedule.filter((v) => {\n\t\t\t\tif ([\"patient\", \"quiz\", \"media\", \"case\"].includes(v.type as string)) {\n\t\t\t\t\treturn v.data === undefined\n\t\t\t\t} else {\n\t\t\t\t\treturn false\n\t\t\t\t}\n\t\t\t}).length > 0\n\t\t) {\n\t\t\tif (schedule.length === 0) {\n\t\t\t\tuseErrorStore.getState().update(new Error(\"Keine Module ausgewählt\"))\n\t\t\t}\n\n\t\t\tsetDateBorder(\"border-s-red\")\n\n\t\t\tconst _missingData = schedule\n\t\t\t\t.filter((v) => {\n\t\t\t\t\tif ([\"patient\", \"quiz\", \"media\", \"case\"].includes(v.type as string)) {\n\t\t\t\t\t\treturn v.data === undefined\n\t\t\t\t\t} else {\n\t\t\t\t\t\treturn false\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t\t.map((v) => v.id)\n\t\t\tsetMissingData(_missingData as number[])\n\t\t} else {\n\t\t\tupload()\n\t\t\tsetDateBorder(undefined)\n\t\t\tsetMissingData([])\n\t\t}\n\t}\n\n\treturn (\n\t\t<>\n\t\t\t navigate(\"/moderator/webinar/upcoming\")}\n\t\t\t\tcancelButtonTitle=\"Abrechen\"\n\t\t\t\ttitle=\"Practinar erstellen\"\n\t\t\t/>\n\t\t\t
\n\t\t\t\t
\n\t\t\t\t\t

{t(\"date_time\")}

\n\t\t\t\t\t{showOldPicker ? (\n\t\t\t\t\t\t setDate({ target: { value: e } })}\n\t\t\t\t\t\t/>\n\t\t\t\t\t) : (\n\t\t\t\t\t\t\n\t\t\t\t\t)}\n\t\t\t\t
\n\n\t\t\t\t
\n\t\t\t\t\t

{t(\"title\")}

\n\t\t\t\t\t\n\t\t\t\t
\n\n\t\t\t\t
\n\t\t\t\t\t

Webinarsprache

\n\n\t\t\t\t\t\n\t\t\t\t
\n\n\t\t\t\t

\n\t\t\t\t\t{t(\"program\")}\n\t\t\t\t

\n\n\t\t\t\t<>\n\t\t\t\t\t\n\t\t\t\t\t\t1\n\t\t\t\t\t\t

Presentation

\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\t{schedule\n\t\t\t\t\t\t\t.filter((v) => v.type !== \"sendoff\")\n\t\t\t\t\t\t\t.map((v, i) => {\n\t\t\t\t\t\t\t\tlet content\n\t\t\t\t\t\t\t\tswitch (v.type) {\n\t\t\t\t\t\t\t\t\tcase \"patient\":\n\t\t\t\t\t\t\t\t\t\tcontent = (\n\t\t\t\t\t\t\t\t\t\t\t {\n\t\t\t\t\t\t\t\t\t\t\t\t\tsetSchedule((schedule) => {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tschedule[i].data = v\n\t\t\t\t\t\t\t\t\t\t\t\t\t\treturn [...schedule]\n\t\t\t\t\t\t\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t\t\t\tcase \"quiz\":\n\t\t\t\t\t\t\t\t\t\tcontent = (\n\t\t\t\t\t\t\t\t\t\t\t {\n\t\t\t\t\t\t\t\t\t\t\t\t\tsetSchedule((schedule) => {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tschedule[i].data = v\n\t\t\t\t\t\t\t\t\t\t\t\t\t\treturn [...schedule]\n\t\t\t\t\t\t\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t\t\t\tcase \"media\":\n\t\t\t\t\t\t\t\t\t\tcontent = (\n\t\t\t\t\t\t\t\t\t\t\t {\n\t\t\t\t\t\t\t\t\t\t\t\t\tsetSchedule((schedule) => {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tschedule[i].data = v\n\t\t\t\t\t\t\t\t\t\t\t\t\t\treturn [...schedule]\n\t\t\t\t\t\t\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t\t\t\tcase \"case\":\n\t\t\t\t\t\t\t\t\t\tcontent = (\n\t\t\t\t\t\t\t\t\t\t\t {\n\t\t\t\t\t\t\t\t\t\t\t\t\tsetSchedule((schedule) => {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tschedule[i].data = v\n\t\t\t\t\t\t\t\t\t\t\t\t\t\treturn [...schedule]\n\t\t\t\t\t\t\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t\t\tbreak\n\n\t\t\t\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t\t {\n\t\t\t\t\t\t\t\t\t\t\tsetSchedule((v) => v.filter((_, idx) => idx !== i))\n\t\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t})}\n\t\t\t\t\t\n\t\t\t\t\t {\n\t\t\t\t\t\t\tsetSchedule([...schedule, { id: nanoid(), type: data.type }])\n\t\t\t\t\t\t}}\n\t\t\t\t\t/>\n\t\t\t\t\t\n\t\t\t\t\t\t{schedule.length + 2}\n\t\t\t\t\t\t

Sendoff

\n\t\t\t\t\t
\n\t\t\t\t\n\n\t\t\t\t

\n\t\t\t\t\t{t(\"participants\")} ({t(\"can_be_added_later\")})\n\t\t\t\t

\n\n\t\t\t\t{participants && participants.length > 0 && (\n\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t

Titel

\n\t\t\t\t\t\t\t

Name

\n\t\t\t\t\t\t\t

Email

\n\t\t\t\t\t\t\t

Code

\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t
\n\n\t\t\t\t\t\t
\n\t\t\t\t\t\t{participants.map((v, i) => {\n\t\t\t\t\t\t\tconst isInternal = (v.email as string).includes(\"@sonofun.live\")\n\t\t\t\t\t\t\tconst color = isInternal ? \"text-s-blue\" : \"text-s-black\"\n\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t

{v.title as string}

\n\t\t\t\t\t\t\t\t\t

{v.name as string}

\n\t\t\t\t\t\t\t\t\t

{v.email as string}

\n\t\t\t\t\t\t\t\t\t

{v.code as string}

\n\t\t\t\t\t\t\t\t\t{!isInternal && (\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\tfetchApiAuthorized(\n\t\t\t\t\t\t\t\t\t\t\t\t\t`/webinars/${id}/email`,\n\t\t\t\t\t\t\t\t\t\t\t\t\tauth.token,\n\t\t\t\t\t\t\t\t\t\t\t\t\tauth.expiresIn,\n\t\t\t\t\t\t\t\t\t\t\t\t\tv,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"POST\"\n\t\t\t\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t{t(\"resend_invite\")}\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t})}\n\t\t\t\t\t\n\t\t\t\t)}\n\n\t\t\t\t
\n\t\t\t\t\t) => {\n\t\t\t\t\t\t\tconst { files } = e.target\n\n\t\t\t\t\t\t\tif (files && files.length > 0) {\n\t\t\t\t\t\t\t\tconst file = files[0]\n\n\t\t\t\t\t\t\t\tsetCsvFile(file)\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}}\n\t\t\t\t\t/>\n\n\t\t\t\t\t\n\t\t\t\t\t\t{currentWebinar && participants\n\t\t\t\t\t\t\t? t(\"download_data\")\n\t\t\t\t\t\t\t: t(\"download_form\")}\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t
\n\t\t\n\t)\n}\n\nexport default CreateWebinar\n","var _path;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nfunction SvgSendArrow(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 24,\n height: 20,\n viewBox: \"0 0 24 20\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M2.9039 7.25974C3.16958 7.92396 3.76981 8.39569 4.47801 8.49686L13.6141 9.80201C13.843 9.83472 13.843 10.1653 13.6141 10.198L4.47801 11.5031C3.76981 11.6043 3.16958 12.076 2.9039 12.7403L0.866578 17.8336C0.540054 18.6499 1.35013 19.4599 2.16644 19.1334L22.6788 10.9285C23.517 10.5932 23.517 9.40678 22.6788 9.07152L2.16645 0.866578C1.35013 0.540053 0.540053 1.35013 0.866578 2.16644L2.9039 7.25974Z\",\n fill: \"white\"\n })));\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgSendArrow);\nexport default __webpack_public_path__ + \"static/media/sendArrow.f2f78fc46b1ff47583e97e4c8cb0263e.svg\";\nexport { ForwardRef as ReactComponent };","export const processString = (options: any[]) => {\n\tlet key = 0\n\n\tfunction processInputWithRegex(\n\t\toption: any,\n\t\tinput: string | string[]\n\t): string | string[] {\n\t\tif (!option.fn || typeof option.fn !== \"function\") return input\n\n\t\tif (!option.regex || !(option.regex instanceof RegExp)) return input\n\n\t\tif (typeof input === \"string\") {\n\t\t\tlet regex = option.regex\n\t\t\tlet result = null\n\t\t\tlet output = []\n\n\t\t\twhile ((result = regex.exec(input)) !== null) {\n\t\t\t\tlet index = result.index\n\t\t\t\tlet match = result[0]\n\n\t\t\t\toutput.push(input.substring(0, index))\n\t\t\t\toutput.push(option.fn(++key, result))\n\n\t\t\t\tinput = input.substring(index + match.length, input.length + 1)\n\t\t\t\tregex.lastIndex = 0\n\t\t\t}\n\n\t\t\toutput.push(input)\n\t\t\treturn output\n\t\t} else if (Array.isArray(input)) {\n\t\t\t// @ts-ignore\n\t\t\treturn input.map((chunk) => processInputWithRegex(option, chunk))\n\t\t} else return input\n\t}\n\n\treturn (input: string | string[]) => {\n\t\tif (!options || !Array.isArray(options) || !options.length) return input\n\n\t\toptions.forEach((option) => (input = processInputWithRegex(option, input)))\n\n\t\treturn input\n\t}\n}\n","import { CSSProperties } from \"react\"\nimport { processString } from \"./processString\"\n\nconst Linkify = ({\n\tcontent,\n\tstyle,\n}: {\n\tcontent: string\n\tstyle?: CSSProperties\n}) => {\n\tlet config = [\n\t\t{\n\t\t\tregex: /(http|https):\\/\\/(\\S+)\\.([a-z]{2,}?)(.*?)( |,|$|\\.)/gim,\n\t\t\tfn: (key: string, result: string[]) => (\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t{result[2]}.{result[3]}\n\t\t\t\t\t\t{result[4]}\n\t\t\t\t\t\n\t\t\t\t\t{result[5]}\n\t\t\t\t\n\t\t\t),\n\t\t},\n\t\t{\n\t\t\tregex: /(\\S+)\\.([a-z]{2,}?)(.*?)( |,|$|\\.)/gim,\n\t\t\tfn: (key: string, result: string[]) => (\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t{result[1]}.{result[2]}\n\t\t\t\t\t\t{result[3]}\n\t\t\t\t\t\n\t\t\t\t\t{result[4]}\n\t\t\t\t\n\t\t\t),\n\t\t},\n\t]\n\n\tlet processed = processString(config)(content)\n\n\treturn
{processed}
\n}\n\nexport default Linkify\n","var _path, _path2, _path3, _path4;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nfunction SvgClap(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 43,\n height: 45,\n viewBox: \"0 0 43 45\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M22.7444 13.6256L28.7164 20.5717C29.0949 19.2178 28.5118 18.3519 29.7936 17.2764C30.4204 16.7505 31.4671 17.3708 31.9067 17.8948C32.6682 18.8023 31.3355 20.064 32.0734 20.9435C32.0734 20.9435 33.1568 22.2345 34.4285 23.7502C34.9152 24.3302 35.0604 25.6433 35.063 26.4063C35.0656 27.1694 35.3075 28.8637 35.547 30.7831C35.7109 32.0805 35.9109 32.9649 33.0294 35.3828C31.7196 36.4818 30.8869 37.1805 28.0624 37.0634C26.1278 36.9809 24.3936 36.491 21.4811 33.0201C19.0082 30.073 14.4157 24.5999 14.4157 24.5999C14.4157 24.5999 13.6307 23.6644 14.5663 22.8793C15.3615 22.2121 16.1465 23.1476 16.1465 23.1476L19.2867 26.8899C19.2867 26.8899 19.6979 27.342 19.8195 27.2399C19.9412 27.1379 19.5674 26.6544 19.5674 26.6544L13.6796 19.6376C13.6796 19.6376 12.502 18.2343 13.7651 17.1745C15.0281 16.1147 16.2056 17.518 16.2056 17.518L21.3084 23.5992C21.3084 23.5992 21.7196 24.0513 21.8412 23.9493C21.9628 23.8472 21.589 23.3637 21.589 23.3637L15.7013 16.3469C15.7013 16.3469 14.5237 14.9436 15.7867 13.8838C17.0497 12.824 18.2273 14.2273 18.2273 14.2273L24.1151 21.2441C24.1151 21.2441 24.5263 21.6962 24.6479 21.5941C24.7696 21.4921 24.3958 21.0086 24.3958 21.0086L20.0781 15.863C20.0781 15.863 18.9005 14.4596 20.1635 13.3998C21.5669 12.2223 22.7444 13.6256 22.7444 13.6256Z\",\n fill: \"#0071FF\"\n })), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M25.3237 37.0122C24.7259 37.1314 24.0096 37.1769 23.0986 37.1392C22.1109 37.097 21.1561 36.9496 20.0759 36.3607C19.0018 35.7752 17.8189 34.7617 16.3534 33.0151L9.28791 24.5948L9.28635 24.5929L9.28351 24.5895L9.27472 24.5784C9.26755 24.5693 9.25784 24.5566 9.24623 24.5405C9.22305 24.5085 9.19203 24.463 9.15845 24.406C9.09183 24.2931 9.01211 24.1304 8.96571 23.9361C8.91907 23.7409 8.90512 23.5093 8.97652 23.2653C9.04839 23.0196 9.20226 22.7771 9.4665 22.5554C9.70208 22.3577 9.94831 22.2708 10.187 22.2629C10.4215 22.2552 10.6324 22.324 10.8031 22.4109C10.8584 22.4391 10.9103 22.4695 10.9585 22.5008L8.55191 19.6327L8.55118 19.6318L8.55002 19.6304L8.54647 19.6261L8.53471 19.6114C8.5249 19.599 8.51129 19.5813 8.4948 19.5589C8.46185 19.514 8.41711 19.4498 8.36798 19.3695C8.27031 19.2099 8.15213 18.9821 8.07656 18.7145C8.0009 18.4466 7.96585 18.1312 8.04444 17.8032C8.12379 17.4719 8.31517 17.1443 8.66528 16.8505C9.0154 16.5567 9.3713 16.4251 9.7113 16.4045C10.048 16.3841 10.3525 16.4734 10.6032 16.5944C10.7396 16.6603 10.8623 16.7365 10.9683 16.8124L10.5736 16.342L10.5729 16.3411L10.5717 16.3397L10.5681 16.3354L10.5564 16.3207C10.5466 16.3083 10.533 16.2906 10.5165 16.2682C10.4835 16.2234 10.4388 16.1591 10.3897 16.0788C10.292 15.9192 10.1738 15.6914 10.0982 15.4238C10.0226 15.156 9.98753 14.8406 10.0661 14.5125C10.1455 14.1812 10.3368 13.8536 10.687 13.5598C11.0371 13.266 11.393 13.1345 11.733 13.1138C12.0697 13.0934 12.3742 13.1827 12.6249 13.3037C12.8753 13.4246 13.0791 13.5806 13.2193 13.7044C13.2898 13.7668 13.3454 13.822 13.3838 13.8622C13.403 13.8824 13.418 13.8988 13.4286 13.9106L13.441 13.9248L13.4446 13.929L13.4458 13.9304L13.4466 13.9313L14.6263 15.3372C14.57 15.2197 14.5162 15.0857 14.475 14.9399C14.3994 14.672 14.3643 14.3566 14.4429 14.0285C14.5222 13.6973 14.7136 13.3696 15.0637 13.0758C15.4449 12.756 15.8227 12.6022 16.1797 12.5627C16.535 12.5235 16.8536 12.5991 17.1161 12.7129C17.3776 12.8262 17.5877 12.9792 17.7315 13.1021C17.8038 13.164 17.8604 13.2192 17.8995 13.2596C17.9045 13.2647 17.9092 13.2696 17.9136 13.2743C17.8515 13.2376 17.7859 13.2021 17.7169 13.1688C17.4319 13.0312 17.0729 12.9234 16.6679 12.9479C16.2552 12.973 15.8356 13.1334 15.4373 13.4675C15.0391 13.8017 14.8083 14.187 14.712 14.5892C14.6175 14.9837 14.6613 15.356 14.7473 15.6605C14.8116 15.8883 14.9024 16.0885 14.989 16.2485C14.8792 16.2356 14.7647 16.2314 14.6463 16.2386C14.2335 16.2637 13.8139 16.424 13.4157 16.7582C13.0174 17.0923 12.7866 17.4777 12.6903 17.8799C12.5958 18.2744 12.6396 18.6467 12.7256 18.9512C12.8115 19.2551 12.9443 19.51 13.0517 19.6855C13.1062 19.7745 13.1561 19.8462 13.1935 19.8972C13.2123 19.9227 13.2281 19.9433 13.24 19.9583L13.2625 19.9862C13.2625 19.9862 13.24 19.9583 13.2632 19.987L15.0385 22.1027C14.7562 22.1308 14.4758 22.2458 14.2169 22.4631C13.9101 22.7205 13.7178 23.0146 13.6264 23.3268C13.5362 23.6351 13.5551 23.9242 13.6115 24.1603C13.6674 24.3941 13.7622 24.5866 13.8396 24.7177C13.8789 24.7843 13.9155 24.8382 13.9436 24.877C13.9578 24.8965 13.9699 24.9125 13.9794 24.9246L13.9916 24.9399L13.996 24.9453L13.9979 24.9475L13.9986 24.9485C13.9986 24.9485 13.9916 24.9399 13.9994 24.9494L21.0647 33.3695C22.5432 35.1315 23.7558 36.1777 24.8783 36.7896C25.0289 36.8717 25.1773 36.9457 25.3237 37.0122Z\",\n fill: \"#0071FF\",\n fillOpacity: 0.5\n })), _path3 || (_path3 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M33.7354 17.4163H35.9998M33.2825 16.0576L34.6411 14.699M31.9238 15.6047V13.3403\",\n stroke: \"#0071FF\",\n strokeWidth: 1.5,\n strokeLinecap: \"round\"\n })), _path4 || (_path4 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M23.3191 11.5288L24.6778 10.1702M21.5076 11.5288V9.2644M19.6961 11.5288L18.3374 10.1702\",\n stroke: \"#0071FF\",\n strokeWidth: 1.5,\n strokeLinecap: \"round\"\n })));\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgClap);\nexport default __webpack_public_path__ + \"static/media/clap.e6fdef2569aeb21a39eec00a7f90c729.svg\";\nexport { ForwardRef as ReactComponent };","var _g, _defs;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nfunction SvgClapSmall(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 30,\n height: 30,\n viewBox: \"0 0 30 30\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _g || (_g = /*#__PURE__*/React.createElement(\"g\", {\n clipPath: \"url(#clip0)\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M15.7444 6.59207L21.7164 13.5032C22.0949 12.1561 21.5118 11.2946 22.7936 10.2245C23.4204 9.70116 24.4671 10.3184 24.9067 10.8397C25.6682 11.7426 24.3355 12.998 25.0734 13.873C25.0734 13.873 26.1568 15.1576 27.4285 16.6656C27.9152 17.2427 28.0604 18.5491 28.063 19.3083C28.0656 20.0676 28.3075 21.7533 28.547 23.663C28.7109 24.9538 28.9109 25.8338 26.0294 28.2395C24.7196 29.333 23.8869 30.0281 21.0624 29.9116C19.1278 29.8295 17.3936 29.3422 14.4811 25.8887C12.0082 22.9565 7.41574 17.511 7.41574 17.511C7.41574 17.511 6.6307 16.5802 7.56627 15.7991C8.36151 15.1352 9.14655 16.066 9.14655 16.066L12.2867 19.7895C12.2867 19.7895 12.6979 20.2393 12.8195 20.1377C12.9412 20.0362 12.5674 19.5551 12.5674 19.5551L6.67959 12.5737C6.67959 12.5737 5.50203 11.1775 6.76505 10.123C8.02807 9.06856 9.20563 10.4648 9.20563 10.4648L14.3084 16.5154C14.3084 16.5154 14.7196 16.9652 14.8412 16.8636C14.9628 16.7621 14.589 16.281 14.589 16.281L8.70126 9.29967C8.70126 9.29967 7.52371 7.90339 8.78673 6.84894C10.0497 5.79448 11.2273 7.19076 11.2273 7.19076L17.1151 14.1721C17.1151 14.1721 17.5263 14.6219 17.6479 14.5204C17.7696 14.4189 17.3958 13.9378 17.3958 13.9378L13.0781 8.81814C13.0781 8.81814 11.9005 7.42186 13.1635 6.36741C14.5669 5.19579 15.7444 6.59207 15.7444 6.59207Z\",\n fill: \"#0071FF\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M18.3237 29.8608C17.7259 29.9793 17.0096 30.0246 16.0986 29.9871C15.1109 29.9451 14.1561 29.7985 13.0759 29.2125C12.0018 28.63 10.8189 27.6216 9.35339 25.8838L2.28791 17.506L2.28635 17.5041L2.28351 17.5007L2.27472 17.4897C2.26755 17.4806 2.25784 17.4679 2.24623 17.452C2.22305 17.4201 2.19203 17.3748 2.15845 17.3182C2.09183 17.2058 2.01211 17.0439 1.96571 16.8506C1.91907 16.6564 1.90512 16.4259 1.97652 16.1832C2.04839 15.9388 2.20226 15.6974 2.4665 15.4768C2.70208 15.2802 2.94831 15.1937 3.18699 15.1859C3.42145 15.1782 3.63239 15.2467 3.80312 15.3331C3.85836 15.3611 3.9103 15.3914 3.95852 15.4225L1.55191 12.5689L1.55118 12.568L1.55002 12.5666L1.54647 12.5623L1.53471 12.5477C1.5249 12.5353 1.51129 12.5178 1.4948 12.4954C1.46185 12.4509 1.41711 12.3869 1.36798 12.307C1.27031 12.1483 1.15213 11.9216 1.07656 11.6553C1.0009 11.3888 0.965851 11.075 1.04444 10.7486C1.12379 10.419 1.31517 10.093 1.66528 9.80074C2.0154 9.50844 2.3713 9.37752 2.7113 9.357C3.04802 9.33668 3.35255 9.42551 3.60321 9.54593C3.73964 9.61146 3.86226 9.68736 3.96829 9.76281L3.57358 9.29479L3.57285 9.29393L3.5717 9.29254L3.56815 9.28824L3.55638 9.27361C3.54657 9.26125 3.53297 9.24369 3.51647 9.22137C3.48352 9.17677 3.43879 9.11282 3.38965 9.03294C3.29199 8.87418 3.17381 8.64748 3.09823 8.38127C3.02257 8.11474 2.98753 7.80093 3.06611 7.47453C3.14546 7.14495 3.33684 6.81895 3.68696 6.52665C4.03707 6.23435 4.39298 6.10344 4.73298 6.08292C5.0697 6.0626 5.37422 6.15143 5.62489 6.27185C5.87527 6.39212 6.07913 6.54729 6.21931 6.67055C6.28984 6.73257 6.34537 6.78751 6.38379 6.82754C6.40303 6.84758 6.41804 6.86396 6.42858 6.87571L6.441 6.88978L6.44465 6.89401L6.44582 6.89538L6.44655 6.89625L7.62629 8.29512C7.57003 8.17812 7.5162 8.0448 7.47502 7.89974C7.39936 7.63322 7.36431 7.31941 7.4429 6.993C7.52225 6.66342 7.71363 6.33743 8.06374 6.04513C8.44494 5.72688 8.82275 5.57388 9.17972 5.53461C9.535 5.49552 9.85361 5.57078 10.1161 5.68398C10.3776 5.79678 10.5877 5.94898 10.7315 6.07129C10.8038 6.1328 10.8604 6.18772 10.8995 6.22792C10.9045 6.23304 10.9092 6.23792 10.9136 6.24256C10.8515 6.20608 10.7859 6.17073 10.7169 6.13759C10.4319 6.00068 10.0729 5.89343 9.66794 5.91787C9.25515 5.94278 8.83556 6.10236 8.43734 6.43482C8.03912 6.76728 7.80831 7.1507 7.71197 7.55084C7.61747 7.94335 7.66128 8.31375 7.74731 8.61679C7.81163 8.84338 7.90236 9.0426 7.98903 9.20175C7.87917 9.18892 7.76468 9.1848 7.64627 9.19195C7.23348 9.21686 6.81389 9.37644 6.41567 9.7089C6.01745 10.0414 5.78664 10.4248 5.6903 10.8249C5.5958 11.2174 5.63961 11.5878 5.72563 11.8909C5.81145 12.1932 5.94428 12.4468 6.05175 12.6215C6.10621 12.71 6.15608 12.7814 6.19353 12.8321C6.21231 12.8575 6.22812 12.8779 6.24001 12.8929L6.26255 12.9206C6.26255 12.9206 6.24001 12.8929 6.26322 12.9214L8.03853 15.0265C7.75619 15.0544 7.47578 15.1689 7.21689 15.385C6.91015 15.6411 6.71776 15.9337 6.62641 16.2444C6.53621 16.5511 6.55512 16.8388 6.61152 17.0737C6.66737 17.3063 6.76225 17.4978 6.83956 17.6282C6.87888 17.6945 6.9155 17.7481 6.94363 17.7868C6.95776 17.8062 6.9699 17.822 6.97937 17.8341L6.99157 17.8493L6.99604 17.8547L6.99785 17.8569L6.99865 17.8578C6.99865 17.8578 6.99157 17.8493 6.99942 17.8588L14.0647 26.2364C15.5432 27.9895 16.7558 29.0304 17.8783 29.6393C18.0289 29.721 18.1773 29.7945 18.3237 29.8608Z\",\n fill: \"#0071FF\",\n fillOpacity: 0.5\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M26.7354 10.3637H28.9998M26.2825 9.01194L27.6411 7.66014M24.9238 8.56134V6.30835\",\n stroke: \"#0071FF\",\n strokeWidth: 1.5,\n strokeLinecap: \"round\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M16.3191 4.50585L17.6778 3.15405M14.5076 4.50585L14.5076 2.25286M12.6961 4.50585L11.3374 3.15405\",\n stroke: \"#0071FF\",\n strokeWidth: 1.5,\n strokeLinecap: \"round\"\n }))), _defs || (_defs = /*#__PURE__*/React.createElement(\"defs\", null, /*#__PURE__*/React.createElement(\"clipPath\", {\n id: \"clip0\"\n }, /*#__PURE__*/React.createElement(\"rect\", {\n width: 30,\n height: 30,\n fill: \"white\"\n })))));\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgClapSmall);\nexport default __webpack_public_path__ + \"static/media/clapSmall.5e375d116d95a5db8aba886bdba7e6cd.svg\";\nexport { ForwardRef as ReactComponent };","var _path;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nfunction SvgNo(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 43,\n height: 45,\n viewBox: \"0 0 43 45\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M16.4142 15.5858C15.6332 14.8047 14.3668 14.8047 13.5858 15.5858C12.8047 16.3668 12.8047 17.6332 13.5858 18.4142L18.1716 23L13.5858 27.5858C12.8047 28.3668 12.8047 29.6332 13.5858 30.4142C14.3668 31.1953 15.6332 31.1953 16.4142 30.4142L21 25.8284L25.5858 30.4142C26.3668 31.1953 27.6332 31.1953 28.4142 30.4142C29.1953 29.6332 29.1953 28.3668 28.4142 27.5858L23.8284 23L28.4142 18.4142C29.1953 17.6332 29.1953 16.3668 28.4142 15.5858C27.6332 14.8047 26.3668 14.8047 25.5858 15.5858L21 20.1716L16.4142 15.5858Z\",\n fill: \"#F42C04\"\n })));\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgNo);\nexport default __webpack_public_path__ + \"static/media/no.e36d7311e1f6294e6cc7d1ca2735a096.svg\";\nexport { ForwardRef as ReactComponent };","var _path;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nfunction SvgNoSmall(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 30,\n height: 30,\n viewBox: \"0 0 30 30\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M10.4142 7.58579C9.63316 6.80474 8.36684 6.80474 7.58579 7.58579C6.80474 8.36684 6.80474 9.63316 7.58579 10.4142L12.1716 15L7.58579 19.5858C6.80474 20.3668 6.80474 21.6332 7.58579 22.4142C8.36683 23.1953 9.63317 23.1953 10.4142 22.4142L15 17.8284L19.5858 22.4142C20.3668 23.1953 21.6332 23.1953 22.4142 22.4142C23.1953 21.6332 23.1953 20.3668 22.4142 19.5858L17.8284 15L22.4142 10.4142C23.1953 9.63316 23.1953 8.36684 22.4142 7.58579C21.6332 6.80474 20.3668 6.80474 19.5858 7.58579L15 12.1716L10.4142 7.58579Z\",\n fill: \"#F42C04\"\n })));\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgNoSmall);\nexport default __webpack_public_path__ + \"static/media/noSmall.82714d4ce0c2ce19d37863d639290d07.svg\";\nexport { ForwardRef as ReactComponent };","var _path;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nfunction SvgQuestion(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 43,\n height: 45,\n viewBox: \"0 0 43 45\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M18.4893 24.969C18.3905 26.0691 19.3467 26.9363 20.4506 26.8978L20.7573 26.8871C21.8611 26.8485 22.6604 25.8983 22.9636 24.8362C23.2885 23.6977 24.0007 22.7946 25.2035 22.013C27.2832 20.6782 28.6104 18.9604 28.5172 16.2916C28.3784 12.3167 25.0949 10.1118 20.5863 10.2693C17.1306 10.3899 14.2624 12.0082 13.4583 15.2064C13.1847 16.2947 14.1567 17.2024 15.2782 17.1633L15.941 17.1401C17.0163 17.1026 17.7864 16.1261 18.4287 15.2629C18.9576 14.552 19.8011 14.1627 20.6984 14.1313C22.2316 14.0778 23.5051 15.0567 23.5603 16.6353C23.6122 18.123 22.5678 19.1487 21.2019 20.0833C19.3404 21.3507 18.6655 23.0086 18.4893 24.969ZM20.9429 34.1577C22.3966 34.107 23.6147 32.8478 23.5734 31.3369C23.51 29.8496 22.207 28.6785 20.7534 28.7292C19.2543 28.7816 18.0588 30.04 18.1221 31.5273C18.1635 33.0381 19.4438 34.2101 20.9429 34.1577Z\",\n fill: \"#854CC7\"\n })));\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgQuestion);\nexport default __webpack_public_path__ + \"static/media/question.13ee08ccf70f652b3700528b7e8514f3.svg\";\nexport { ForwardRef as ReactComponent };","var _path;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nfunction SvgQuestionSmall(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 30,\n height: 30,\n viewBox: \"0 0 30 30\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M12.4893 18.4348C12.3905 19.535 13.3467 20.4021 14.4506 20.3636L14.7573 20.3529C15.8611 20.3143 16.6604 19.3641 16.9636 18.302C17.2885 17.1635 18.0007 16.2605 19.2035 15.4788C21.2832 14.1441 22.6104 12.4262 22.5172 9.75742C22.3784 5.78257 19.0949 3.57764 14.5863 3.73508C11.1306 3.85576 8.26244 5.474 7.45832 8.67221C7.18469 9.76052 8.15675 10.6682 9.27825 10.6291L9.94097 10.6059C11.0163 10.5684 11.7864 9.59188 12.4287 8.72867C12.9576 8.01785 13.8011 7.62849 14.6984 7.59716C16.2316 7.54362 17.5051 8.52249 17.5603 10.1011C17.6122 11.5888 16.5678 12.6145 15.2019 13.5491C13.3404 14.8165 12.6655 16.4744 12.4893 18.4348ZM14.9429 27.6236C16.3966 27.5728 17.6147 26.3136 17.5734 24.8028C17.51 23.3154 16.207 22.1443 14.7534 22.195C13.2543 22.2474 12.0588 23.5058 12.1221 24.9931C12.1635 26.504 13.4438 27.6759 14.9429 27.6236Z\",\n fill: \"#854CC7\"\n })));\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgQuestionSmall);\nexport default __webpack_public_path__ + \"static/media/questionSmall.7f7f4a6dff7e415521b60ab219856c30.svg\";\nexport { ForwardRef as ReactComponent };","var _path;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nfunction SvgRaiseHand(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 43,\n height: 45,\n viewBox: \"0 0 43 45\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M14.1088 14.2622C13.2218 14.2622 13 15.2954 13 15.812V28.2111C13 34.0231 17.0657 34.798 19.653 34.798C26.1889 34.798 25.0239 29.9426 28.8932 25.8862C29.9943 24.7319 32.5893 21.6241 29.6324 21.6241C28.4497 21.6241 27.9076 22.5282 27.4148 23.5614C27.1684 23.9489 26.5277 25.1113 25.9363 25.1113C25.345 25.1113 25.1971 24.5947 25.1971 24.3364V12.7123C25.1971 12.3248 24.9754 11.5499 24.0883 11.5499C23.2012 11.5499 22.9795 12.3248 22.9795 12.7123V20.6822C22.9795 20.9884 22.7312 21.2366 22.425 21.2366C22.1189 21.2366 21.8706 20.9884 21.8706 20.6822V11.1624C21.8706 10.7749 21.6489 10 20.7618 10C19.8747 10 19.653 10.7749 19.653 11.1624V20.6822C19.653 20.9884 19.4048 21.2366 19.0986 21.2366C18.7924 21.2366 18.5441 20.9884 18.5441 20.6822V12.7123C18.5441 12.1957 18.3224 11.1624 17.4353 11.1624C16.5483 11.1624 16.3265 12.1957 16.3265 12.7123V21.8446C16.3265 22.1508 16.0783 22.399 15.7721 22.399C15.4659 22.399 15.2177 22.1508 15.2177 21.8446V15.812C15.2177 15.2954 14.9959 14.2622 14.1088 14.2622Z\",\n fill: \"#0071FF\"\n })));\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgRaiseHand);\nexport default __webpack_public_path__ + \"static/media/raiseHand.f7904e4fdc21acdf0259c340e565c38c.svg\";\nexport { ForwardRef as ReactComponent };","var _path;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nfunction SvgRaiseHandSmall(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 30,\n height: 30,\n viewBox: \"0 0 30 30\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M7.10883 7.26216C6.22177 7.26216 6 8.29541 6 8.81204V21.2111C6 27.0231 10.0657 27.798 12.653 27.798C19.1889 27.798 18.0239 22.9426 21.8932 18.8862C22.9943 17.7319 25.5893 14.6241 22.6324 14.6241C21.4497 14.6241 20.9076 15.5282 20.4148 16.5614C20.1684 16.9489 19.5277 18.1113 18.9363 18.1113C18.345 18.1113 18.1971 17.5947 18.1971 17.3364V5.71229C18.1971 5.32482 17.9754 4.54988 17.0883 4.54988C16.2012 4.54988 15.9795 5.32482 15.9795 5.71229V13.6822C15.9795 13.9884 15.7312 14.2366 15.425 14.2366C15.1189 14.2366 14.8706 13.9884 14.8706 13.6822V4.16241C14.8706 3.77494 14.6489 3 13.7618 3C12.8747 3 12.653 3.77494 12.653 4.16241V13.6822C12.653 13.9884 12.4048 14.2366 12.0986 14.2366C11.7924 14.2366 11.5441 13.9884 11.5441 13.6822V5.71229C11.5441 5.19566 11.3224 4.16241 10.4353 4.16241C9.54825 4.16241 9.32649 5.19566 9.32649 5.71229V14.8446C9.32649 15.1508 9.07827 15.399 8.77207 15.399C8.46588 15.399 8.21766 15.1508 8.21766 14.8446V8.81204C8.21766 8.29541 7.99589 7.26216 7.10883 7.26216Z\",\n fill: \"#0071FF\"\n })));\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgRaiseHandSmall);\nexport default __webpack_public_path__ + \"static/media/raiseHandSmall.6d92023fd1dc8538e87258e5fd8d6c97.svg\";\nexport { ForwardRef as ReactComponent };","var _path, _path2;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nfunction SvgSlower(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 43,\n height: 45,\n viewBox: \"0 0 43 45\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M19 17L13 23L19 29\",\n stroke: \"#0071FF\",\n strokeWidth: 4,\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n })), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M29 17L23 23L29 29\",\n stroke: \"#0071FF\",\n strokeWidth: 4,\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n })));\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgSlower);\nexport default __webpack_public_path__ + \"static/media/slower.ed365072fb187cc4818a7ade07b4b3ef.svg\";\nexport { ForwardRef as ReactComponent };","var _path, _path2;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nfunction SvgSlowerSmall(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 30,\n height: 30,\n viewBox: \"0 0 30 30\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M13 9L7 15L13 21\",\n stroke: \"#0071FF\",\n strokeWidth: 4,\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n })), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M23 9L17 15L23 21\",\n stroke: \"#0071FF\",\n strokeWidth: 4,\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n })));\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgSlowerSmall);\nexport default __webpack_public_path__ + \"static/media/slowerSmall.f13c7a889a740c901a6d2fba4a671cae.svg\";\nexport { ForwardRef as ReactComponent };","var _path;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nfunction SvgYes(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 43,\n height: 45,\n viewBox: \"0 0 43 45\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M13 22.5L19 27.5L29.5 17\",\n stroke: \"#4FC4AF\",\n strokeWidth: 4,\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n })));\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgYes);\nexport default __webpack_public_path__ + \"static/media/yes.2514725bd501688e8c24c055b3e06e6e.svg\";\nexport { ForwardRef as ReactComponent };","var _path;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nfunction SvgYesSmall(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 30,\n height: 30,\n viewBox: \"0 0 30 30\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M7 15.5L13 20.5L23.5 10\",\n stroke: \"#4FC4AF\",\n strokeWidth: 4,\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n })));\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgYesSmall);\nexport default __webpack_public_path__ + \"static/media/yesSmall.1ec81406722b7a41e19e3ac1259c296b.svg\";\nexport { ForwardRef as ReactComponent };","import Clap from \"../assets/images/clap.svg\"\nimport ClapSmall from \"../assets/images/clapSmall.svg\"\nimport No from \"../assets/images/no.svg\"\nimport NoSmall from \"../assets/images/noSmall.svg\"\nimport Question from \"../assets/images/question.svg\"\nimport QuestionSmall from \"../assets/images/questionSmall.svg\"\nimport RaiseHand from \"../assets/images/raiseHand.svg\"\nimport RaiseHandSmall from \"../assets/images/raiseHandSmall.svg\"\nimport Slower from \"../assets/images/slower.svg\"\nimport SlowerSmall from \"../assets/images/slowerSmall.svg\"\nimport Yes from \"../assets/images/yes.svg\"\nimport YesSmall from \"../assets/images/yesSmall.svg\"\n\n// TODO: enum\nexport const iconForEmote = (emote?: string, small = false) => {\n\tswitch (emote) {\n\t\tcase \"yes\":\n\t\t\tif (small) {\n\t\t\t\treturn YesSmall\n\t\t\t} else {\n\t\t\t\treturn Yes\n\t\t\t}\n\t\tcase \"no\":\n\t\t\tif (small) {\n\t\t\t\treturn NoSmall\n\t\t\t} else {\n\t\t\t\treturn No\n\t\t\t}\n\t\tcase \"slower\":\n\t\t\tif (small) {\n\t\t\t\treturn SlowerSmall\n\t\t\t} else {\n\t\t\t\treturn Slower\n\t\t\t}\n\t\tcase \"question\":\n\t\t\tif (small) {\n\t\t\t\treturn QuestionSmall\n\t\t\t} else {\n\t\t\t\treturn Question\n\t\t\t}\n\t\tcase \"clap\":\n\t\t\tif (small) {\n\t\t\t\treturn ClapSmall\n\t\t\t} else {\n\t\t\t\treturn Clap\n\t\t\t}\n\t\tdefault:\n\t\t\tif (small) {\n\t\t\t\treturn RaiseHandSmall\n\t\t\t} else {\n\t\t\t\treturn RaiseHand\n\t\t\t}\n\t}\n}\n","import {\n\tButtonHTMLAttributes,\n\tDetailedHTMLProps,\n\tPropsWithChildren,\n\tuseEffect,\n\tuseState,\n} from \"react\"\nimport Button, { ButtonTheme } from \"src/components/button/button\"\nimport { iconForEmote } from \"../../utils/iconForEmote\"\n\ninterface EmotesProps {\n\tonEmote: (type: string) => void\n\tdisableInput: boolean\n}\n\nexport const CustomButton = ({\n\tchildren,\n\t...props\n}: PropsWithChildren<\n\tDetailedHTMLProps, HTMLButtonElement>\n>) => {\n\treturn (\n\t\t\n\t\t\t{children}\n\t\t\n\t)\n}\n\nconst Emotes = ({ onEmote, disableInput }: EmotesProps) => {\n\tconst [onHitDetection, setOnHitDetection] = useState(false)\n\tconst [onButton, setOnButton] = useState(false)\n\n\tconst visible = onHitDetection || onButton\n\n\tuseEffect(() => {\n\t\tconst keyEvent = (event: KeyboardEvent) => {\n\t\t\tif (disableInput) {\n\t\t\t\tif (event.keyCode === 32 || event.keyCode === 13) {\n\t\t\t\t\tevent.preventDefault()\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tdocument.addEventListener(\"keydown\", keyEvent)\n\t\tdocument.addEventListener(\"keyup\", keyEvent)\n\n\t\treturn () => {\n\t\t\tdocument.removeEventListener(\"keydown\", keyEvent)\n\t\t\tdocument.removeEventListener(\"keyup\", keyEvent)\n\t\t}\n\t}, [disableInput])\n\n\treturn (\n\t\t// original height & width 45:34\n\t\t
\n\t\t\t setOnButton(!onButton)}\n\t\t\t\tonMouseEnter={() => setOnButton(true)}\n\t\t\t\tonMouseLeave={() => setOnButton(false)}\n\t\t\t>\n\t\t\t\t{visible ? \"…\" : \"Raise}\n\t\t\t\n\n\t\t\t onEmote && onEmote(\"yes\")}\n\t\t\t\tonMouseEnter={() => setOnButton(true)}\n\t\t\t\tonMouseLeave={() => setOnButton(false)}\n\t\t\t>\n\t\t\t\t\"Yes\"\n\t\t\t\n\n\t\t\t onEmote && onEmote(\"no\")}\n\t\t\t\tonMouseEnter={() => setOnButton(true)}\n\t\t\t\tonMouseLeave={() => setOnButton(false)}\n\t\t\t>\n\t\t\t\t\"No\"\n\t\t\t\n\n\t\t\t onEmote && onEmote(\"raise_hand\")}\n\t\t\t\tonMouseEnter={() => setOnButton(true)}\n\t\t\t\tonMouseLeave={() => setOnButton(false)}\n\t\t\t>\n\t\t\t\t\"Raise\n\t\t\t\n\n\t\t\t onEmote && onEmote(\"slower\")}\n\t\t\t\tonMouseEnter={() => setOnButton(true)}\n\t\t\t\tonMouseLeave={() => setOnButton(false)}\n\t\t\t>\n\t\t\t\t\"Slower\"\n\t\t\t\n\n\t\t\t onEmote && onEmote(\"question\")}\n\t\t\t\tonMouseEnter={() => setOnButton(true)}\n\t\t\t\tonMouseLeave={() => setOnButton(false)}\n\t\t\t>\n\t\t\t\t\"Question\"\n\t\t\t\n\n\t\t\t onEmote && onEmote(\"clap\")}\n\t\t\t\tonMouseEnter={() => setOnButton(true)}\n\t\t\t\tonMouseLeave={() => setOnButton(false)}\n\t\t\t>\n\t\t\t\t\"Clap\"\n\t\t\t\n\n\t\t\t{visible && (\n\t\t\t\t setOnHitDetection(true)}\n\t\t\t\t\tonMouseLeave={() => setOnHitDetection(false)}\n\t\t\t\t/>\n\t\t\t)}\n\t\t
\n\t)\n}\n\nexport default Emotes\n","import { KeyboardEvent, useCallback, useEffect, useRef, useState } from \"react\"\nimport Button, { ButtonTheme } from \"src/components/button/button\"\nimport Input from \"src/components/input/input\"\nimport SendArrow from \"../../assets/images/sendArrow.svg\"\nimport Linkify from \"../../components/linkify/linkify\"\nimport useHandleChange from \"../../hooks/useHandleChange\"\nimport { useChatStore } from \"../../state/stores/chatStore\"\nimport { useSocketStore } from \"../../state/stores/socketStore\"\nimport { iconForEmote } from \"../../utils/iconForEmote\"\nimport ChatEmotes from \"./emotes\"\n\ninterface ChatProps {\n\tmoderatorData?: Record\n\tisModerator?: boolean\n}\n\n// TODO: refactor\nconst Chat = ({ moderatorData, isModerator = false }: ChatProps) => {\n\tconst messages = useChatStore((state) => state.messages)\n\tconst sendMessage = useSocketStore((state) => state.emit.chat)\n\n\tconst [newMessage, setNewMessage] = useHandleChange(\"\")\n\tconst [hasFocus, setHasFocus] = useState(false)\n\tconst messagesRef = useRef(null)\n\n\tconst send = (isPrivate: boolean = false) => {\n\t\tsendMessage(isPrivate, newMessage, undefined)\n\t\tsetNewMessage(\"\")\n\n\t\tscrollToBottom()\n\t}\n\n\tconst onEmote = (emote: string) => {\n\t\tsendMessage(false, undefined, emote)\n\n\t\tscrollToBottom()\n\t}\n\n\tconst scrollToBottom = useCallback(() => {\n\t\tif (messagesRef.current) {\n\t\t\tmessagesRef.current.scrollTop = 1000000000\n\t\t}\n\t}, [])\n\n\tuseEffect(() => {\n\t\tscrollToBottom()\n\t}, [messages, scrollToBottom])\n\n\tlet sendButton = ButtonTheme.Blue\n\tif (moderatorData && moderatorData.role === \"support\") {\n\t\tsendButton = ButtonTheme.Lila\n\t}\n\n\treturn (\n\t\t
\n\t\t\t
\n\t\t\t\t

Chat

\n\t\t\t
\n\n\t\t\t{/* Messages */}\n\t\t\t\n\t\t\t\t{messages.map((v, i) => {\n\t\t\t\t\tlet backgroundColor: string\n\t\t\t\t\tif (v.isPrivate) {\n\t\t\t\t\t\tbackgroundColor = \"bg-s-red\"\n\t\t\t\t\t} else if (v.isMod) {\n\t\t\t\t\t\tbackgroundColor = \"bg-s-blue\"\n\t\t\t\t\t} else if (v.isSupport) {\n\t\t\t\t\t\tbackgroundColor = \"bg-s-lila\"\n\t\t\t\t\t} else {\n\t\t\t\t\t\tbackgroundColor = \"bg-white\"\n\t\t\t\t\t}\n\n\t\t\t\t\tif (v.emote) {\n\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t

\n\t\t\t\t\t\t\t\t\t{v.name}\n\t\t\t\t\t\t\t\t\t{\": \"}\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t

\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t)\n\t\t\t\t\t} else {\n\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t
{v.name}:
\n\t\t\t\t\t\t\t\t

{v.message && }

\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t)\n\t\t\t\t\t}\n\t\t\t\t})}\n\t\t\t\t\n\t\t\t
\n\n\t\t\t{/* chatInput */}\n\t\t\t
\n\t\t\t\t\n\t\t\t\t setHasFocus(false)}\n\t\t\t\t\tonChange={setNewMessage}\n\t\t\t\t\tonFocus={() => setHasFocus(true)}\n\t\t\t\t\tonKeyPress={({ key }: KeyboardEvent) => {\n\t\t\t\t\t\tif (key === \"Enter\") {\n\t\t\t\t\t\t\tsend()\n\t\t\t\t\t\t}\n\t\t\t\t\t}}\n\t\t\t\t/>\n\t\t\t\t{isModerator && (\n\t\t\t\t\t send(true)}\n\t\t\t\t\t>\n\t\t\t\t\t\t\"Send\"\n\t\t\t\t\t\n\t\t\t\t)}\n\t\t\t\t send(false)}\n\t\t\t\t>\n\t\t\t\t\t\"Send\"\n\t\t\t\t\n\t\t\t
\n\t\t\n\t)\n}\n\nexport default Chat\n","import React from \"react\";\nfunction useStatefulRef(initialVal = null) {\n let [cur, setCur] = React.useState(initialVal);\n const { current: ref } = React.useRef({\n current: cur\n });\n Object.defineProperty(ref, \"current\", {\n get: () => cur,\n set: (value) => {\n if (!Object.is(cur, value)) {\n cur = value;\n setCur(value);\n }\n }\n });\n return ref;\n}\nexport { useStatefulRef as default };\n","import useStatefulRef from \"@bedrock-layout/use-stateful-ref\";\nimport React, { useRef } from \"react\";\nfunction useForwardedRef(forwardedRef, config = { isStateful: true }) {\n const statefulRef = useStatefulRef(null);\n const ref = useRef(null);\n const innerRef = config.isStateful ? statefulRef : ref;\n React.useEffect(() => {\n if (!forwardedRef)\n return;\n if (typeof forwardedRef === \"function\") {\n forwardedRef(innerRef.current);\n } else {\n forwardedRef.current = innerRef.current;\n }\n });\n return innerRef;\n}\nexport { useForwardedRef as default };\n","import useForwardedRef from \"@bedrock-layout/use-forwarded-ref\"\nimport {\n\tCSSProperties,\n\tforwardRef,\n\tuseLayoutEffect,\n\tuseRef,\n\tuseState,\n} from \"react\"\nimport { findDOMNode } from \"react-dom\"\n\ninterface ResponsiveImageProps {\n\turl: string\n\tstyle?: CSSProperties\n\tpadding?: number\n\tonMouseEnter?: () => void\n\tonMouseLeave?: () => void\n}\n\nconst ResponsiveImage = forwardRef(\n\t({ url, style, padding = 0, onMouseEnter, onMouseLeave }, ref) => {\n\t\tconst container = useForwardedRef(ref)\n\n\t\tconst [width, setWidth] = useState(undefined)\n\t\tconst [height, setHeight] = useState(undefined)\n\t\tconst [aspectRatio, setAspectRatio] = useState(\n\t\t\tundefined\n\t\t)\n\n\t\tconst containerParent = useRef(undefined)\n\t\tconst image = useRef(null)\n\n\t\tconst onLoad = () => {\n\t\t\tif (image.current) {\n\t\t\t\tsetAspectRatio(image.current.naturalHeight / image.current.naturalWidth)\n\t\t\t}\n\t\t}\n\n\t\tif (container && container.current) {\n\t\t\tconst node = findDOMNode(container.current)\n\t\t\tif (node && node.parentElement) {\n\t\t\t\tcontainerParent.current = node.parentElement\n\t\t\t}\n\t\t}\n\n\t\tif (containerParent.current && !width) {\n\t\t\tsetWidth(containerParent.current.offsetWidth - padding)\n\t\t\tsetHeight(containerParent.current.offsetHeight - padding)\n\t\t}\n\n\t\tuseLayoutEffect(() => {\n\t\t\tconst updateSize = () => {\n\t\t\t\tif (containerParent.current) {\n\t\t\t\t\tsetWidth(containerParent.current.offsetWidth - padding)\n\t\t\t\t\tsetHeight(containerParent.current.offsetHeight - padding)\n\t\t\t\t}\n\t\t\t}\n\n\t\t\twindow.addEventListener(\"resize\", updateSize)\n\n\t\t\tupdateSize()\n\n\t\t\treturn () => {\n\t\t\t\twindow.removeEventListener(\"resize\", updateSize)\n\t\t\t}\n\t\t}, [padding])\n\n\t\tconst isPortrait = (aspectRatio ?? 0) > 1\n\n\t\tlet _width = \"100%\"\n\t\tif (\n\t\t\twidth &&\n\t\t\taspectRatio &&\n\t\t\theight &&\n\t\t\t(isPortrait || width * aspectRatio > height)\n\t\t) {\n\t\t\t_width = Math.min((1 / aspectRatio) * height, width) + \"px\"\n\t\t}\n\n\t\tlet _height = \"100%\"\n\t\tif (\n\t\t\twidth &&\n\t\t\taspectRatio &&\n\t\t\theight &&\n\t\t\t(!isPortrait || height * aspectRatio > width)\n\t\t) {\n\t\t\t_height = Math.min(aspectRatio * width, height) + \"px\"\n\t\t}\n\n\t\treturn (\n\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t)\n\t}\n)\n\nexport default ResponsiveImage\n","var _path;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nfunction SvgPause(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 30,\n height: 30,\n viewBox: \"0 0 30 30\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M26 15C26 21.0751 21.0751 26 15 26C8.92487 26 4 21.0751 4 15C4 8.92487 8.92487 4 15 4C21.0751 4 26 8.92487 26 15ZM11 12C11 11.4477 11.4477 11 12 11H13C13.5523 11 14 11.4477 14 12V18C14 18.5523 13.5523 19 13 19H12C11.4477 19 11 18.5523 11 18V12ZM17 11C16.4477 11 16 11.4477 16 12V18C16 18.5523 16.4477 19 17 19H18C18.5523 19 19 18.5523 19 18V12C19 11.4477 18.5523 11 18 11H17Z\",\n fill: \"#0071FF\"\n })));\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgPause);\nexport default __webpack_public_path__ + \"static/media/pause.d7dd46c8894c3260892e8d93f03179c4.svg\";\nexport { ForwardRef as ReactComponent };","var _path;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nfunction SvgPlay(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 30,\n height: 30,\n viewBox: \"0 0 30 30\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M15 26C21.0751 26 26 21.0751 26 15C26 8.92487 21.0751 4 15 4C8.92487 4 4 8.92487 4 15C4 21.0751 8.92487 26 15 26ZM13.53 10.9562C12.864 10.54 12 11.0188 12 11.8042V18.1958C12 18.9812 12.864 19.46 13.53 19.0438L18.6432 15.848C19.2699 15.4563 19.2699 14.5437 18.6432 14.152L13.53 10.9562Z\",\n fill: \"#0071FF\"\n })));\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgPlay);\nexport default __webpack_public_path__ + \"static/media/play.5adb6332aeb812c89e9741fc503d79e3.svg\";\nexport { ForwardRef as ReactComponent };","import { useEffect, useLayoutEffect, useRef, useState } from \"react\"\nimport { useLaserStore } from \"../../../state/stores/laserStore\"\nimport { useMediaStore } from \"../../../state/stores/mediaStore\"\nimport { useSocketStore } from \"../../../state/stores/socketStore\"\nimport ResponsiveImage from \"../../responsiveImage/responsiveImage\"\nimport CustomVideo from \"../../videoPlayer/videoPlayer\"\n\nexport enum MediaType {\n\tvideo = \"video\",\n\timage = \"image\",\n}\n\ninterface MediaProps {\n\ttype: MediaType\n\tname: string\n\turl: string\n}\n\nconst Media = ({ type, name, url }: MediaProps) => {\n\tconst laser = useLaserStore((state) => state.positions)\n\tconst emit = useSocketStore((state) => state.emit.media)\n\tconst onLaser = useSocketStore((state) => state.emit.laser)\n\tconst playPause = useMediaStore((state) => state.isPlaying)\n\tconst time = useMediaStore((state) => state.time)\n\n\tconst laserContainer = useRef(null)\n\tconst headline = useRef(null)\n\tconst videoRef = useRef(null)\n\tconst imageRef = useRef(null)\n\tconst [trackMouse, setTrackMouse] = useState(false)\n\n\tconst lastUpdate = useRef(0)\n\tconst tracking = useRef(false)\n\n\tconst [containerWidth, setContainerWidth] = useState(\n\t\tundefined\n\t)\n\tconst [containerHeight, setContainerHeight] = useState(\n\t\tundefined\n\t)\n\n\tuseEffect(() => {\n\t\tconst onMove = (event: MouseEvent) => {\n\t\t\tconst { clientX, clientY } = event\n\t\t\tconst ref = videoRef && videoRef.current ? videoRef : imageRef\n\t\t\tconst isVideo = videoRef !== undefined && videoRef.current !== null\n\n\t\t\tif (!ref.current) return\n\n\t\t\tconst rect = isVideo\n\t\t\t\t? ref.current.children[0].getBoundingClientRect()\n\t\t\t\t: ref.current.getBoundingClientRect()\n\t\t\tconst percentageX = (clientX - rect.left) / rect.width\n\t\t\tconst percentageY = (clientY - rect.top) / rect.height\n\n\t\t\tconst now = new Date().getTime()\n\t\t\tif (now - lastUpdate.current > 25) {\n\t\t\t\tonLaser([percentageX, percentageY])\n\t\t\t\tlastUpdate.current = now\n\t\t\t}\n\t\t}\n\n\t\tif (trackMouse && (videoRef.current || imageRef.current)) {\n\t\t\tdocument.addEventListener(\"mousemove\", onMove)\n\t\t\ttracking.current = true\n\t\t}\n\n\t\treturn () => {\n\t\t\tdocument.removeEventListener(\"mousemove\", onMove)\n\n\t\t\tif (tracking.current) {\n\t\t\t\tonLaser(undefined)\n\t\t\t\ttracking.current = false\n\t\t\t}\n\t\t}\n\t}, [trackMouse, onLaser])\n\n\tuseLayoutEffect(() => {\n\t\tconst onResize = () => {\n\t\t\tif (laserContainer.current && headline.current) {\n\t\t\t\tsetContainerWidth(laserContainer.current.offsetWidth)\n\t\t\t\tsetContainerHeight(\n\t\t\t\t\tlaserContainer.current.offsetHeight - headline.current.offsetHeight\n\t\t\t\t)\n\t\t\t}\n\t\t}\n\n\t\twindow.addEventListener(\"resize\", onResize)\n\t\tonResize()\n\n\t\treturn () => window.removeEventListener(\"resize\", onResize)\n\t}, [laserContainer, headline])\n\n\tuseEffect(() => {\n\t\tif (videoRef.current) {\n\t\t\tconst video = videoRef.current.children[0] as HTMLVideoElement\n\t\t\tif (!video) return\n\n\t\t\tif (playPause) {\n\t\t\t\tvideo.play()\n\t\t\t} else {\n\t\t\t\tvideo.pause()\n\t\t\t}\n\t\t}\n\t}, [playPause])\n\n\tuseEffect(() => {\n\t\tif (videoRef.current) {\n\t\t\tconst video = videoRef.current.children[0] as HTMLVideoElement\n\t\t\tif (!video) return\n\n\t\t\tvideo.currentTime = time\n\t\t}\n\t}, [time])\n\n\tconst ref = videoRef && videoRef.current ? videoRef : imageRef\n\n\tlet _position = undefined\n\tif (laser !== undefined && ref.current) {\n\t\t_position = {\n\t\t\tleft:\n\t\t\t\tref.current.offsetWidth * laser[0] + ref.current.offsetLeft - 10 + \"px\",\n\t\t\ttop:\n\t\t\t\tref.current.offsetHeight * laser[1] + ref.current.offsetTop - 10 + \"px\",\n\t\t}\n\t}\n\n\treturn (\n\t\t\n\t\t\t

\n\t\t\t\t{name}\n\t\t\t

\n\n\t\t\t{type === \"video\" ? (\n\t\t\t\t setTrackMouse(true)}\n\t\t\t\t\tonMouseLeave={() => setTrackMouse(false)}\n\t\t\t\t\tonPlayStateChange={(isPlaying) => emit.onPlayPause(isPlaying)}\n\t\t\t\t\tonTimeUpdate={(time) => emit.setTime(time)}\n\t\t\t\t/>\n\t\t\t) : (\n\t\t\t\t setTrackMouse(true)}\n\t\t\t\t\tonMouseLeave={() => setTrackMouse(false)}\n\t\t\t\t/>\n\t\t\t)}\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t\n\t)\n}\n\nexport default Media\n","import {\n\tforwardRef,\n\tMouseEventHandler,\n\tSyntheticEvent,\n\tuseCallback,\n\tuseEffect,\n\tuseLayoutEffect,\n\tuseRef,\n\tuseState,\n} from \"react\"\nimport Pause from \"../../assets/images/pause.svg\"\nimport Play from \"../../assets/images/play.svg\"\nimport { map_numbers } from \"../../utils/math\"\nimport Button from \"../button/button\"\n\ninterface VideoPlayerProps {\n\turl: string\n\tonPlayStateChange: (isPlaying: boolean) => void\n\tonTimeUpdate: (time: number) => void\n\tonMouseEnter: () => void\n\tonMouseLeave: () => void\n\tcontainerWidth?: number\n\tcontainerHeight?: number\n\n\tplayPause?: boolean\n\ttime?: number\n}\n\nconst VideoPlayer = forwardRef(\n\t(\n\t\t{\n\t\t\turl,\n\t\t\tonPlayStateChange,\n\t\t\tonTimeUpdate,\n\t\t\tonMouseEnter,\n\t\t\tonMouseLeave,\n\t\t\tcontainerWidth,\n\t\t\tcontainerHeight,\n\t\t\tplayPause,\n\t\t\ttime,\n\t\t},\n\t\tref\n\t) => {\n\t\tconst [isPlaying, setIsplaying] = useState(false)\n\t\tconst [currentTime, setCurrentTime] = useState(0)\n\t\tconst [duration, setDuration] = useState(-1)\n\t\tconst [scrubbing, setScrubbing] = useState(false)\n\t\tconst [aspectRatio, setAspectRatio] = useState(\n\t\t\tundefined\n\t\t)\n\t\tconst [width, setWidth] = useState(undefined)\n\t\tconst [height, setHeight] = useState(undefined)\n\n\t\tconst video = useRef(null)\n\t\tconst scrubber = useRef(null)\n\n\t\tconst _playPause = () => {\n\t\t\tif (video && video.current) {\n\t\t\t\tif (isPlaying) {\n\t\t\t\t\tvideo.current.pause()\n\t\t\t\t} else {\n\t\t\t\t\tvideo.current.play()\n\t\t\t\t}\n\n\t\t\t\tonPlayStateChange(!isPlaying)\n\t\t\t\tsetIsplaying(!isPlaying)\n\t\t\t}\n\t\t}\n\n\t\tuseEffect(() => {\n\t\t\tif (playPause !== undefined) {\n\t\t\t\tsetIsplaying(playPause)\n\t\t\t}\n\t\t}, [playPause])\n\n\t\tconst afterLoad = () => {\n\t\t\tif (video.current) {\n\t\t\t\tsetDuration(video.current.duration)\n\t\t\t}\n\t\t}\n\n\t\tconst updateTime = () => {\n\t\t\tif (video.current) {\n\t\t\t\tsetCurrentTime(video.current.currentTime)\n\t\t\t}\n\t\t}\n\n\t\tuseEffect(() => {\n\t\t\tif (video.current && time !== undefined) {\n\t\t\t\tvideo.current.currentTime = time\n\t\t\t}\n\t\t}, [time])\n\n\t\tuseEffect(() => {\n\t\t\twindow.onmouseup = () => {\n\t\t\t\tsetScrubbing(false)\n\t\t\t}\n\t\t}, [])\n\n\t\t// TODO: react slider\n\t\tconst scrubInner: MouseEventHandler<\"div\"> &\n\t\t\tMouseEventHandler = useCallback(\n\t\t\t(event) => {\n\t\t\t\tif (event && scrubber.current) {\n\t\t\t\t\tconst rect = scrubber.current.getBoundingClientRect()\n\t\t\t\t\tconst x = event.clientX - rect.left\n\t\t\t\t\tconst percentage = x / scrubber.current.offsetWidth\n\n\t\t\t\t\tlet newTime = percentage * duration\n\t\t\t\t\tif (newTime < 0) {\n\t\t\t\t\t\tnewTime = 0\n\t\t\t\t\t} else if (newTime > duration) {\n\t\t\t\t\t\tnewTime = duration\n\t\t\t\t\t}\n\n\t\t\t\t\tif (video.current) {\n\t\t\t\t\t\tvideo.current.currentTime = newTime\n\t\t\t\t\t}\n\n\t\t\t\t\tsetCurrentTime(newTime)\n\t\t\t\t}\n\t\t\t},\n\t\t\t[duration, video]\n\t\t)\n\n\t\tuseEffect(() => {\n\t\t\tconst scrub = (event: SyntheticEvent) => {\n\t\t\t\tif (!scrubbing) {\n\t\t\t\t\treturn\n\t\t\t\t}\n\n\t\t\t\t// @ts-ignore\n\t\t\t\tscrubInner(event)\n\t\t\t}\n\n\t\t\t// @ts-ignore\n\t\t\twindow.onmousemove = scrub\n\t\t}, [scrubbing, duration, scrubInner])\n\n\t\tlet playPercentage = 0\n\t\tif (scrubber.current) {\n\t\t\tplayPercentage = map_numbers(\n\t\t\t\t(currentTime / duration) * 100,\n\t\t\t\t0,\n\t\t\t\t100,\n\t\t\t\t0,\n\t\t\t\tscrubber.current.offsetWidth - 10\n\t\t\t)\n\t\t}\n\n\t\tuseLayoutEffect(() => {\n\t\t\tconst onResize = () => {\n\t\t\t\tif (aspectRatio && containerWidth && containerHeight) {\n\t\t\t\t\tlet height = aspectRatio * containerWidth\n\t\t\t\t\theight = Math.min(height, containerHeight)\n\t\t\t\t\tsetHeight(height)\n\n\t\t\t\t\tif (height >= containerHeight) {\n\t\t\t\t\t\tsetWidth(height / aspectRatio)\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\twindow.addEventListener(\"resize\", onResize)\n\t\t\tonResize()\n\n\t\t\treturn () => window.removeEventListener(\"resize\", onResize)\n\t\t}, [aspectRatio, containerWidth, containerHeight])\n\n\t\treturn (\n\t\t\t\n\t\t\t\t {\n\t\t\t\t\t\tif (video.current && containerWidth) {\n\t\t\t\t\t\t\tsetAspectRatio(\n\t\t\t\t\t\t\t\tvideo.current.videoHeight / video.current.videoWidth\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t}\n\t\t\t\t\t}}\n\t\t\t\t\tonMouseEnter={onMouseEnter}\n\t\t\t\t\tonMouseLeave={onMouseLeave}\n\t\t\t\t\tonTimeUpdate={updateTime}\n\t\t\t\t/>\n\n\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t

\n\t\t\t\t\t\t\t\t\t{new Date(currentTime * 1000).toISOString().substr(14, 5)}/\n\t\t\t\t\t\t\t\t\t{new Date(duration * 1000).toISOString().substr(14, 5)}\n\t\t\t\t\t\t\t\t

\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t setScrubbing(true)}\n\t\t\t\t\t\t\t\t\tonMouseUp={() => onTimeUpdate(currentTime)}\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t
\n\t\t\t\n\t\t)\n\t}\n)\n\nexport default VideoPlayer\n","var _path, _path2;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nfunction SvgCamera(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 34,\n height: 34,\n viewBox: \"0 0 34 34\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M3 12C3 9.79086 4.79086 8 7 8H20C22.2091 8 24 9.79086 24 12V22C24 24.2091 22.2091 26 20 26H7C4.79086 26 3 24.2091 3 22V12Z\",\n fill: \"#0071FF\"\n })), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M25 14L31 10.0718V23.9282L25 20V14Z\",\n fill: \"#0071FF\"\n })));\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgCamera);\nexport default __webpack_public_path__ + \"static/media/camera.16cca9907328ec711de634f7620139f5.svg\";\nexport { ForwardRef as ReactComponent };","var _path, _path2, _path3, _path4;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nfunction SvgCameraOff(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 34,\n height: 34,\n viewBox: \"0 0 34 34\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M25 14L31 10.0718V23.9282L25 20V14Z\",\n fill: \"#0071FF\"\n })), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M25.7071 5.29289C26.0976 5.68342 26.0976 6.31658 25.7071 6.70711L3.70711 28.7071C3.31658 29.0976 2.68342 29.0976 2.29289 28.7071C1.90237 28.3166 1.90237 27.6834 2.29289 27.2929L24.2929 5.29289C24.6834 4.90237 25.3166 4.90237 25.7071 5.29289Z\",\n fill: \"#0071FF\"\n })), _path3 || (_path3 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M20.1681 8.00347C20.1124 8.00116 20.0563 8 20 8H7C4.79086 8 3 9.79086 3 12V22C3 22.8933 3.29281 23.7181 3.78768 24.3839L20.1681 8.00347Z\",\n fill: \"#0071FF\"\n })), _path4 || (_path4 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M7.82843 26H20C22.2091 26 24 24.2091 24 22V12C24 11.3672 23.8531 10.7688 23.5915 10.2369L7.82843 26Z\",\n fill: \"#0071FF\"\n })));\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgCameraOff);\nexport default __webpack_public_path__ + \"static/media/cameraOff.f23c9aaf5337ebc91680b1883e2d4797.svg\";\nexport { ForwardRef as ReactComponent };","var _path, _path2;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nfunction SvgMicrophone(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 34,\n height: 34,\n viewBox: \"0 0 34 34\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M13 8C13 5.79086 14.7909 4 17 4C19.2091 4 21 5.79086 21 8V17C21 19.2091 19.2091 21 17 21C14.7909 21 13 19.2091 13 17V8Z\",\n fill: \"#0071FF\"\n })), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M12 17C12 16.4477 11.5523 16 11 16C10.4477 16 10 16.4477 10 17C10 18.8565 10.7375 20.637 12.0503 21.9497C13.125 23.0245 14.5132 23.7137 16 23.9282L16 28.2222C16 28.6518 16.4477 29 17 29C17.5523 29 18 28.6518 18 28.2222L18 23.9282C19.4868 23.7137 20.875 23.0245 21.9497 21.9497C23.2625 20.637 24 18.8565 24 17C24 16.4477 23.5523 16 23 16C22.4477 16 22 16.4477 22 17C22 18.3261 21.4732 19.5979 20.5355 20.5355C19.5979 21.4732 18.3261 22 17 22C15.6739 22 14.4021 21.4732 13.4645 20.5355C12.5268 19.5979 12 18.3261 12 17Z\",\n fill: \"#0071FF\"\n })));\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgMicrophone);\nexport default __webpack_public_path__ + \"static/media/microphone.97ef7f976354c80ec10201efb63f9125.svg\";\nexport { ForwardRef as ReactComponent };","var _path, _path2, _path3, _path4;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nfunction SvgMicrophoneOff(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 34,\n height: 34,\n viewBox: \"0 0 34 34\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M24.0072 5.58586C24.3977 5.97639 24.3977 6.60955 24.0072 7.00008L10.0072 21.0001C9.61663 21.3906 8.98347 21.3906 8.59294 21.0001C8.20242 20.6096 8.20242 19.9764 8.59294 19.5859L22.5929 5.58586C22.9835 5.19534 23.6166 5.19534 24.0072 5.58586Z\",\n fill: \"#0071FF\"\n })), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M17.0071 4C14.7979 4 13.0071 5.79086 13.0071 8V13.7575L20.5749 6.18966C19.9143 4.89025 18.5646 4 17.0071 4Z\",\n fill: \"#0071FF\"\n })), _path3 || (_path3 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M21.0071 11.4144L13.4987 18.9228C14.1786 20.1608 15.4949 21 17.0071 21C19.2162 21 21.0071 19.2091 21.0071 17V11.4144Z\",\n fill: \"#0071FF\"\n })), _path4 || (_path4 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M24.007 17C24.007 16.4477 23.5593 16 23.007 16C22.4548 16 22.007 16.4477 22.007 17C22.007 17.9889 21.7138 18.9556 21.1644 19.7779C20.615 20.6001 19.8341 21.241 18.9205 21.6194C18.3103 21.8721 17.6593 22.0002 17.0052 22C16.6798 21.9999 16.3538 21.968 16.0316 21.9039C15.0617 21.711 14.1708 21.2348 13.4715 20.5355C13.081 20.145 12.4478 20.145 12.0573 20.5355C11.6668 20.9261 11.6668 21.5592 12.0573 21.9497C13.0363 22.9287 14.2835 23.5954 15.6414 23.8655C15.7629 23.8897 15.8849 23.9106 16.0071 23.9282L16.0071 28.2222C16.0071 28.6518 16.4548 29 17.0071 29C17.5594 29 18.0071 28.6518 18.0071 28.2222V23.9282C18.5807 23.8454 19.1447 23.6913 19.6858 23.4672C20.9649 22.9373 22.0582 22.0401 22.8273 20.889C23.5965 19.7378 24.007 18.3845 24.007 17Z\",\n fill: \"#0071FF\"\n })));\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgMicrophoneOff);\nexport default __webpack_public_path__ + \"static/media/microphoneOff.8e4d4bdc51eda2b3224254b3433e5d44.svg\";\nexport { ForwardRef as ReactComponent };","var _path;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nfunction SvgSettings(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 34,\n height: 34,\n viewBox: \"0 0 34 34\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M15.5617 3C15.0522 3 14.6241 3.38314 14.5678 3.88957L14.1758 7.41739C14.1278 7.84952 13.827 8.20903 13.4254 8.37566C13.0236 8.54239 12.5607 8.49897 12.221 8.22721L9.44916 6.00972C9.05127 5.69141 8.47767 5.72318 8.11736 6.08348L6.08331 8.11753C5.72301 8.47784 5.69124 9.05144 6.00955 9.44934L8.22718 12.2214C8.49889 12.561 8.5423 13.0238 8.37561 13.4256C8.20901 13.8271 7.84957 14.1278 7.41751 14.1758L3.88957 14.5678C3.38314 14.6241 3 15.0522 3 15.5617V18.4383C3 18.9478 3.38314 19.3759 3.88957 19.4322L7.4175 19.8242C7.84956 19.8722 8.20901 20.1729 8.37562 20.5745C8.54231 20.9762 8.4989 21.439 8.22718 21.7787L6.00971 24.5505C5.6914 24.9484 5.72317 25.522 6.08348 25.8823L8.11753 27.9164C8.47783 28.2767 9.05144 28.3084 9.44933 27.9901L12.221 25.7728C12.5607 25.501 13.0236 25.4576 13.4254 25.6243C13.827 25.791 14.1278 26.1505 14.1758 26.5826L14.5678 30.1104C14.6241 30.6169 15.0522 31 15.5617 31H18.4383C18.9478 31 19.3759 30.6169 19.4322 30.1104L19.8242 26.5825C19.8722 26.1504 20.1729 25.791 20.5745 25.6244C20.9762 25.4577 21.439 25.5011 21.7787 25.7728L24.5505 27.9903C24.9484 28.3086 25.522 28.2768 25.8823 27.9165L27.9164 25.8825C28.2767 25.5222 28.3084 24.9486 27.9901 24.5507L25.7728 21.779C25.501 21.4393 25.4576 20.9764 25.6243 20.5746C25.791 20.173 26.1505 19.8722 26.5826 19.8242L30.1104 19.4322C30.6169 19.3759 31 18.9478 31 18.4383V15.5617C31 15.0522 30.6169 14.6241 30.1104 14.5678L26.5826 14.1758C26.1505 14.1278 25.791 13.827 25.6243 13.4254C25.4576 13.0236 25.501 12.5607 25.7728 12.221L27.9903 9.44916C28.3086 9.05127 28.2768 8.47767 27.9165 8.11736L25.8825 6.08331C25.5222 5.72301 24.9486 5.69124 24.5507 6.00955L21.7786 8.22718C21.439 8.49889 20.9762 8.54231 20.5744 8.37561C20.1729 8.20901 19.8722 7.84957 19.8242 7.41751L19.4322 3.88957C19.3759 3.38314 18.9478 3 18.4383 3H15.5617ZM17 21.6667C19.5773 21.6667 21.6667 19.5773 21.6667 17C21.6667 14.4227 19.5773 12.3333 17 12.3333C14.4227 12.3333 12.3333 14.4227 12.3333 17C12.3333 19.5773 14.4227 21.6667 17 21.6667Z\",\n fill: \"#0071FF\"\n })));\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgSettings);\nexport default __webpack_public_path__ + \"static/media/settings.fa5555a12153322878fcc9d1b48dced1.svg\";\nexport { ForwardRef as ReactComponent };","import { DailyParticipant, DailyTrackState } from \"@daily-co/daily-js\"\nimport { useEffect, useMemo, useRef, useState } from \"react\"\n\nfunction getTrackUnavailableMessage(\n\tkind: string,\n\ttrackState?: DailyTrackState\n) {\n\tif (!trackState) return\n\tswitch (trackState.state) {\n\t\tcase \"blocked\":\n\t\t\tif (trackState.blocked?.byPermissions) {\n\t\t\t\treturn `${kind} permission denied`\n\t\t\t} else if (trackState.blocked?.byDeviceMissing) {\n\t\t\t\treturn `${kind} device missing`\n\t\t\t}\n\t\t\tbreak\n\t\tcase \"off\":\n\t\t\tif (trackState.off?.byUser) {\n\t\t\t\treturn `${kind} muted`\n\t\t\t} else if (trackState.off?.byBandwidth) {\n\t\t\t\treturn `${kind} muted to save bandwidth`\n\t\t\t}\n\t\t\tbreak\n\t\tcase \"sendable\":\n\t\t\treturn `${kind} not subscribed`\n\t\tcase \"loading\":\n\t\t\treturn `${kind} loading...`\n\t\tcase \"interrupted\":\n\t\t\treturn `${kind} interrupted`\n\t\tcase \"playable\":\n\t\t\treturn null\n\t}\n}\n\nexport enum PresenceState {\n\tNormal,\n\tConnecting,\n\tBlocked,\n}\n\nconst presenceStateForTrackState = (\n\tisMegaphoneSpeaker: boolean,\n\taudioTrackState?: DailyTrackState,\n\tvideoTrackState?: DailyTrackState\n): PresenceState => {\n\tif (!audioTrackState || !videoTrackState) return PresenceState.Connecting\n\n\tif (\n\t\taudioTrackState.state === \"interrupted\" ||\n\t\tvideoTrackState.state === \"interrupted\" ||\n\t\taudioTrackState.state === \"blocked\" ||\n\t\tvideoTrackState.state === \"blocked\"\n\t) {\n\t\treturn PresenceState.Blocked\n\t}\n\n\tif (\n\t\taudioTrackState.state === \"loading\" ||\n\t\tvideoTrackState.state === \"loading\"\n\t) {\n\t\treturn PresenceState.Connecting\n\t}\n\n\treturn PresenceState.Normal\n}\n\ninterface AvatarTileProps {\n\tparticipant: DailyParticipant\n\tisOwner: boolean\n\tshowVideo?: boolean\n\tenableAudio?: boolean\n\n\tonAudioMute?: (mute: boolean) => void\n\tonVideoMute?: (mute: boolean) => void\n}\n\nconst AvatarTile = ({\n\tparticipant,\n\tisOwner,\n\tshowVideo = true,\n\tenableAudio = true,\n\tonAudioMute = undefined,\n\tonVideoMute = undefined,\n}: AvatarTileProps) => {\n\tconst videoEl = useRef(null)\n\tconst audioEl = useRef(null)\n\n\tconst [videoTrackState, setVideoTrackState] = useState<\n\t\tDailyTrackState | undefined\n\t>(undefined)\n\tconst [audioTrackState, setAudioTrackState] = useState<\n\t\tDailyTrackState | undefined\n\t>(undefined)\n\n\tuseEffect(() => {\n\t\tif (participant) {\n\t\t\tsetVideoTrackState(participant.tracks.video)\n\t\t\tsetAudioTrackState(participant.tracks.audio)\n\t\t}\n\t}, [participant])\n\n\tconst videoTrack = useMemo(() => {\n\t\t// TODO: Support Low Quality\n\n\t\treturn videoTrackState && videoTrackState.state === \"playable\"\n\t\t\t? videoTrackState.track\n\t\t\t: null\n\t}, [videoTrackState])\n\n\tconst audioTrack = useMemo(() => {\n\t\treturn !isOwner && audioTrackState && audioTrackState.state === \"playable\"\n\t\t\t? audioTrackState.track\n\t\t\t: null\n\t}, [audioTrackState, isOwner])\n\n\tuseEffect(() => {\n\t\tif (!onAudioMute) return\n\n\t\tif (audioTrackState?.off) {\n\t\t\tonAudioMute(true)\n\t\t} else {\n\t\t\tonAudioMute(false)\n\t\t}\n\t}, [audioTrackState, onAudioMute])\n\n\tuseEffect(() => {\n\t\tif (!onVideoMute) return\n\n\t\tif (videoTrackState?.off) {\n\t\t\tonVideoMute(true)\n\t\t} else {\n\t\t\tonVideoMute(false)\n\t\t}\n\t}, [videoTrackState, onVideoMute])\n\n\t/**\n\t * When video track changes, update video srcObject\n\t */\n\tuseEffect(() => {\n\t\t// console.log(\"Reload Video Track for: \" + id)\n\t\tvideoTrack &&\n\t\t\tvideoEl.current &&\n\t\t\t(videoEl.current.srcObject = new MediaStream([videoTrack]))\n\t}, [videoTrack])\n\n\t/**\n\t * When audio track changes, update audio srcObject\n\t */\n\n\tuseEffect(() => {\n\t\t//console.log(\"Reload Audio Track for: \" + id)\n\t\taudioTrack &&\n\t\t\taudioEl.current &&\n\t\t\t(audioEl.current.srcObject = new MediaStream([audioTrack]))\n\t}, [audioTrack])\n\n\tuseEffect(() => {\n\t\tif (audioEl && audioEl.current) {\n\t\t\taudioEl.current.volume = enableAudio ? 1 : 0\n\t\t}\n\t}, [enableAudio, audioTrack])\n\n\treturn (\n\t\t
\n\t\t\t{videoTrack && showVideo && (\n\t\t\t\t\n\t\t\t)}\n\t\t\t{audioTrack &&
\n\t)\n}\n\nexport default AvatarTile\n","import { useEffect, useState } from \"react\"\nimport Button, { ButtonTheme } from \"src/components/button/button\"\nimport useSWR from \"swr\"\nimport CameraOn from \"../../assets/images/camera.svg\"\nimport CameraOff from \"../../assets/images/cameraOff.svg\"\nimport LoadingBlue from \"../../assets/images/loadingBlue.gif\"\nimport MicrophoneOn from \"../../assets/images/microphone.svg\"\nimport MicrophoneOff from \"../../assets/images/microphoneOff.svg\"\nimport Settings from \"../../assets/images/settings.svg\"\nimport { fetchApiAuthorized } from \"../../network/fetch\"\nimport { AuthData } from \"../../state/stores/authStore\"\nimport {\n\tshowSettingsValue,\n\tuseCameraSettingsStore,\n} from \"../../state/stores/cameraSettingsStore\"\nimport { useCommunicationStore } from \"../../state/stores/communicationStore\"\nimport { useSceneStore } from \"../../state/stores/sceneStore\"\n\ninterface ControlsProps {\n\tisModerator: boolean\n\tauth: AuthData\n}\n\nconst Controls = ({ isModerator, auth }: ControlsProps) => {\n\tconst [isAudioMute, setIsAudioMute] = useState(undefined)\n\tconst [isVideoMute, setIsCameraMute] = useState(\n\t\tundefined\n\t)\n\n\tconst muteAudio = useCommunicationStore((state) => state.ioActions.muteAudio)\n\tconst muteVideo = useCommunicationStore((state) => state.ioActions.muteVideo)\n\n\tconst { data } = useSWR(\n\t\t[\"/users/current\", auth.token, auth.expiresIn],\n\t\tfetchApiAuthorized\n\t)\n\n\tuseEffect(() => {\n\t\tconst role = data && data.role\n\n\t\tuseCommunicationStore.subscribe((state) => {\n\t\t\tif (!data) return\n\n\t\t\tconst localParticipant =\n\t\t\t\tstate.participants[\n\t\t\t\t\trole === \"admin\" || role === \"moderator\" ? role : data.email\n\t\t\t\t]\n\n\t\t\tif (localParticipant) {\n\t\t\t\tsetIsAudioMute(!localParticipant.audio)\n\t\t\t\tsetIsCameraMute(!localParticipant.video)\n\t\t\t}\n\t\t})\n\t}, [data])\n\n\tconst index = useSceneStore((state) => state.index)\n\tuseEffect(() => {\n\t\tif (!isModerator) {\n\t\t\tmuteAudio(true)\n\t\t}\n\t}, [index, isModerator, muteAudio])\n\n\treturn (\n\t\t
\n\t\t\t{isAudioMute === undefined ? (\n\t\t\t\t\"Loading\"\n\t\t\t) : (\n\t\t\t\t<>\n\t\t\t\t\t{isModerator && (\n\t\t\t\t\t\t muteVideo(!isVideoMute)}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t)}\n\t\t\t\t\t muteAudio(!isAudioMute)}\n\t\t\t\t\t>\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\tuseCameraSettingsStore.setState({\n\t\t\t\t\t\t\t\tshowSettings: isModerator\n\t\t\t\t\t\t\t\t\t? showSettingsValue.moderator\n\t\t\t\t\t\t\t\t\t: showSettingsValue.user,\n\t\t\t\t\t\t\t})\n\t\t\t\t\t\t}\n\t\t\t\t\t>\n\t\t\t\t\t\t\"Settings\"\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t)}\n\t\t
\n\t)\n}\n\nexport default Controls\n","import useSWR from \"swr\"\nimport LoadingBlue from \"../../assets/images/loadingBlue.gif\"\nimport { fetchApiAuthorized } from \"../../network/fetch\"\nimport { AuthData } from \"../../state/stores/authStore\"\nimport { useCommunicationStore } from \"../../state/stores/communicationStore\"\nimport Controls from \"../controls/controls\"\nimport MediaStream from \"../video/mediaStream\"\n\ninterface MiniCamProps {\n\tisModerator: boolean\n\tauth: AuthData\n}\n\nconst MiniCam = ({ isModerator = false, auth }: MiniCamProps) => {\n\tconst participants = useCommunicationStore((state) => state.participants)\n\tconst connected = useCommunicationStore((state) => state.connected)\n\n\tconst { data } = useSWR(\n\t\t[\"/users/current\", auth.token, auth.expiresIn],\n\t\tfetchApiAuthorized\n\t)\n\tconst role = data && data.role\n\n\tconst adminVideo = participants[\"admin\"]\n\tconst moderatorVideo = participants[\"moderator\"]\n\n\treturn (\n\t\t\n\t\t\t
\n\t\t\t\t{adminVideo !== undefined && (\n\t\t\t\t\t\n\t\t\t\t)}\n\n\t\t\t\t{moderatorVideo !== undefined && (\n\t\t\t\t\t\n\t\t\t\t)}\n\n\t\t\t\t{!connected && \"Loading\"}\n\t\t\t
\n\n\t\t\t{isModerator && (\n\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\n\t\t\t)}\n\t\t\n\t)\n}\n\nexport default MiniCam\n","var _path, _path2;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nfunction SvgSpeakerOff(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 34,\n height: 34,\n viewBox: \"0 0 34 34\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M23.1857 8.57183C22.8545 8.35384 22.5081 8.16878 22.149 8.02001C21.5719 7.78089 21 8.25504 21 8.87976V9.0062C21 9.44491 21.2916 9.823 21.6808 10.0254C21.6921 10.0312 21.7033 10.0371 21.7145 10.043L23.1857 8.57183ZM25.823 11.5914L24.3306 13.0837C24.7476 14.0715 25 15.2484 25 16.5879C25 19.9106 23.4473 22.2323 21.6808 23.1505C21.2916 23.3529 21 23.731 21 24.1697V24.2961C21 24.9208 21.5719 25.395 22.149 25.1559C24.9636 23.9898 27 20.5946 27 16.5879C27 14.7393 26.5665 13.0208 25.823 11.5914ZM21 16.4144L22.7073 14.707C22.896 15.2877 23 15.9226 23 16.5879C23 17.6551 22.7326 18.6441 22.2769 19.456C21.8775 20.1677 21 19.7779 21 18.9619V16.4144ZM19 12.7575V8.002C19 7.1111 17.9229 6.66493 17.2929 7.2949L13.2929 11.2949C13.1054 11.4824 12.851 11.5878 12.5858 11.5878H10C8.34315 11.5878 7 12.9309 7 14.5878V18.5878C7 20.2446 8.34315 21.5878 10 21.5878H10.1697L19 12.7575ZM14.4133 23.0011L19 18.4144V25.1736C19 26.0645 17.9229 26.5106 17.2929 25.8807L14.4133 23.0011Z\",\n fill: \"#0071FF\"\n })), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M27.2071 7.29289C27.5976 7.68342 27.5976 8.31658 27.2071 8.70711L9.20711 26.7071C8.81658 27.0976 8.18342 27.0976 7.79289 26.7071C7.40237 26.3166 7.40237 25.6834 7.79289 25.2929L25.7929 7.29289C26.1834 6.90237 26.8166 6.90237 27.2071 7.29289Z\",\n fill: \"#0071FF\"\n })));\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgSpeakerOff);\nexport default __webpack_public_path__ + \"static/media/speakerOff.251eb304d9d5fa223c779f110f33211f.svg\";\nexport { ForwardRef as ReactComponent };","var _path;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nfunction SvgSpeakerOn(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 34,\n height: 34,\n viewBox: \"0 0 34 34\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M7 14.5878V18.5878C7 20.2446 8.34315 21.5878 10 21.5878H12.5858C12.851 21.5878 13.1054 21.6931 13.2929 21.8807L17.2929 25.8807C17.9229 26.5106 19 26.0645 19 25.1736V8.002C19 7.1111 17.9229 6.66493 17.2929 7.2949L13.2929 11.2949C13.1054 11.4824 12.851 11.5878 12.5858 11.5878H10C8.34315 11.5878 7 12.9309 7 14.5878ZM22.149 25.1559C21.5719 25.395 21 24.9208 21 24.2961V24.1697C21 23.731 21.2916 23.3529 21.6808 23.1505C23.4473 22.2323 25 19.9106 25 16.5879C25 13.2653 23.4473 10.9436 21.6808 10.0254C21.2916 9.823 21 9.44491 21 9.0062V8.87976C21 8.25504 21.5719 7.78089 22.149 8.02001C24.9636 9.18612 27 12.5813 27 16.5879C27 20.5946 24.9636 23.9898 22.149 25.1559ZM22.2769 19.456C21.8775 20.1677 21 19.7779 21 18.9619V14.214C21 13.3979 21.8775 13.0082 22.2769 13.7198C22.7326 14.5318 23 15.5208 23 16.5879C23 17.6551 22.7326 18.6441 22.2769 19.456Z\",\n fill: \"#0071FF\"\n })));\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgSpeakerOn);\nexport default __webpack_public_path__ + \"static/media/speakerOn.0945eb0e2b5e0244de6e09304ed1d24a.svg\";\nexport { ForwardRef as ReactComponent };","import { PropsWithChildren, useEffect, useState } from \"react\"\n\ninterface ExpireProps {\n\tdelay: number\n}\n\nconst Expire = ({ delay = 2000, children }: PropsWithChildren) => {\n\tconst [visible, setVisible] = useState(false)\n\n\tuseEffect(() => {\n\t\tconst timer = setTimeout(() => {\n\t\t\tsetVisible(false)\n\t\t}, delay)\n\n\t\tsetVisible(true)\n\n\t\treturn () => clearTimeout(timer)\n\t}, [children, delay])\n\n\treturn (\n\t\t\n\t\t\t{children}\n\t\t\n\t)\n}\n\nexport default Expire\n","import moment from \"moment\"\nimport { useState } from \"react\"\nimport LoadingBlue from \"../../assets/images/loadingBlue.gif\"\nimport MicrophoneOn from \"../../assets/images/microphone.svg\"\nimport MicrophoneOff from \"../../assets/images/microphoneOff.svg\"\nimport SpeakerOff from \"../../assets/images/speakerOff.svg\"\nimport SpeakerOn from \"../../assets/images/speakerOn.svg\"\nimport { useChatStore } from \"../../state/stores/chatStore\"\nimport { useCommunicationStore } from \"../../state/stores/communicationStore\"\nimport { iconForEmote } from \"../../utils/iconForEmote\"\nimport Expire from \"../expire/expire\"\nimport MediaStream from \"../video/mediaStream\"\n\ninterface ParticipantsProps {\n\tdata: Record\n\tmutable: boolean\n}\n\nconst Participant = ({ data, mutable }: ParticipantsProps) => {\n\tconst messages = useChatStore((state) => state.messages)\n\n\tconst emotes = messages.filter((v) => v.emote !== undefined)\n\tconst myEmotes = emotes\n\t\t.filter((v) => v.id === data.id)\n\t\t.map((v) => {\n\t\t\tconst time = moment(v.timestamp as Date)\n\t\t\tv.deltaTime = moment.duration(moment().diff(time)).asSeconds()\n\t\t\treturn v\n\t\t})\n\t\t.filter((v) => (v.deltaTime as number) < 5)\n\n\tconst participants = useCommunicationStore((state) => state.participants)\n\tconst activeSpeakerId = useCommunicationStore(\n\t\t(state) => state.activeSpeakerId\n\t)\n\tconst participant = participants[data.email as string]\n\n\tconst [mute, setMute] = useState(false)\n\tconst [isSpeakerOff, setIsSpeakerOff] = useState(false)\n\n\treturn (\n\t\t\n\t\t\t

{data.name as string}

\n\n\t\t\t
\n\t\t\t\t{myEmotes.length > 0 && (\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t)}\n\n\t\t\t\t{participant && (\n\t\t\t\t\t {\n\t\t\t\t\t\t\tsetMute(disabled)\n\t\t\t\t\t\t}}\n\t\t\t\t\t/>\n\t\t\t\t)}\n\n\t\t\t\t{participant && mutable && (\n\t\t\t\t\t setIsSpeakerOff((previous) => !previous)}\n\t\t\t\t\t/>\n\t\t\t\t)}\n\t\t\t\t{participant && (\n\t\t\t\t\t\"\"\n\t\t\t\t)}\n\n\t\t\t\t{participant === undefined && (\n\t\t\t\t\t\"Loading\"\n\t\t\t\t)}\n\t\t\t
\n\t\t\n\t)\n}\n\nexport default Participant\n","import { useModeratorStore } from \"../../state/stores/moderatorStore\"\nimport Participant from \"../participant/participant\"\n\ninterface ParticipantsProps {\n\tcanMuteParticipants?: boolean\n\tselfUserId?: string\n}\n\nconst Participants = ({\n\tcanMuteParticipants = false,\n\tselfUserId = undefined,\n}: ParticipantsProps) => {\n\tconst users = useModeratorStore((state) => state.users)\n\n\tconst singleUsers = [...new Set(users.map((user) => user.email))]\n\t\t.map((email) => users.filter((user) => user.email === email)[0])\n\t\t.filter((user) => user._id !== selfUserId)\n\n\treturn (\n\t\t \"1fr \")\n\t\t\t\t\t.join(\"\"),\n\t\t\t}}\n\t\t>\n\t\t\t{singleUsers.map((v, i) => (\n\t\t\t\t\n\t\t\t))}\n\t\t\n\t)\n}\n\nexport default Participants\n","interface PatientProps {\n\tdata: Record\n}\n\nconst Patient = ({ data }: PatientProps) => {\n\treturn (\n\t\t
\n\t\t\t
\n\t\t\t\t
\n\t\t\t\t\t

\n\t\t\t\t\t\t<>Name: {data && data.name}\n\t\t\t\t\t

\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t{/* // TODO: no percentage pls */}\n\t\t\t\t\n\t\t\t
\n\t\t
\n\t)\n}\n\nexport default Patient\n","import { map_numbers } from \"./math\"\n\nexport const quizColors = [\n\t\"#60ACEE\",\n\t\"#E2702F\",\n\t\"#4FC4AF\",\n\t\"#D668A5\",\n\t\"#9E4476\",\n\t\"#274060\",\n\t\"#F1C40F\",\n\t\"#854CC7\",\n]\n\nexport const quizLetters = [\"A\", \"B\", \"C\", \"D\", \"E\", \"F\", \"G\", \"H\"]\n\nexport const mapVotes = (answers: string[], votes: number[]): number[] => {\n\tconst min = Math.min(...votes)\n\tconst max = Math.max(...votes)\n\n\tlet mappedVotes = answers.map((_, i) => {\n\t\tconst width = map_numbers(votes[i], min, max, min, 98)\n\t\tif (isNaN(width)) {\n\t\t\treturn 0\n\t\t} else {\n\t\t\treturn width\n\t\t}\n\t})\n\n\tif (mappedVotes.length === 0) {\n\t\tmappedVotes = new Array(answers.length).fill(0)\n\t}\n\n\treturn mappedVotes\n}\n","import { useEffect, useRef, useState } from \"react\"\nimport { useTranslation } from \"react-i18next\"\nimport Button, { ButtonTheme } from \"src/components/button/button\"\nimport { useQuizStore } from \"../../../state/stores/quizStore\"\nimport { useSocketStore } from \"../../../state/stores/socketStore\"\nimport { mapVotes, quizColors, quizLetters } from \"../../../utils/formatQuiz\"\n\n// TODO: always show correct answer\n\ninterface QuizProps {\n\tdata: Record\n}\n\nconst Quiz = ({ data }: QuizProps) => {\n\tconst { t } = useTranslation()\n\n\tconst onShowResults = useSocketStore((state) => state.emit.quiz.showResults)\n\tconst showResultsAfterTime = useQuizStore((state) => state.showResults)\n\n\tconst votes = useQuizStore((state) => state.votes)\n\tconst showResults = useQuizStore((state) => state.showResults)\n\tconst voters = useQuizStore((state) => state.voters)\n\tconst numberOfParticipants = useQuizStore((state) => state.participants)\n\n\tconst [time, setTime] = useState(5)\n\tconst timerRef = useRef()\n\tconst showResultsTimerRef = useRef()\n\tconst _time = useRef(5)\n\n\tuseEffect(() => {\n\t\tconst countdown = () => {\n\t\t\t_time.current -= 1\n\t\t\tsetTime(_time.current)\n\t\t}\n\n\t\tif (showResultsAfterTime && timerRef.current === undefined) {\n\t\t\t_time.current = 5\n\t\t\ttimerRef.current = setInterval(countdown, 1000)\n\t\t\tsetTime(5)\n\t\t}\n\t}, [showResultsAfterTime])\n\n\tuseEffect(() => {\n\t\treturn () => {\n\t\t\t_time.current = 10\n\t\t}\n\t}, [])\n\n\tuseEffect(() => {\n\t\tconst _showResultsTimerRef = showResultsTimerRef.current\n\n\t\treturn () => {\n\t\t\tif (showResults) {\n\t\t\t\tif (timerRef.current) {\n\t\t\t\t\tclearInterval(timerRef.current)\n\t\t\t\t\ttimerRef.current = undefined\n\t\t\t\t}\n\n\t\t\t\tif (_showResultsTimerRef) {\n\t\t\t\t\tclearTimeout(_showResultsTimerRef)\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}, [showResults])\n\n\tuseEffect(() => {\n\t\tconst _showResultsTimerRef = showResultsTimerRef.current\n\n\t\treturn () => {\n\t\t\tif (showResultsAfterTime) {\n\t\t\t\tif (timerRef.current) {\n\t\t\t\t\tclearInterval(timerRef.current)\n\t\t\t\t\ttimerRef.current = undefined\n\t\t\t\t}\n\n\t\t\t\tif (_showResultsTimerRef) {\n\t\t\t\t\tclearTimeout(_showResultsTimerRef)\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}, [showResultsAfterTime, showResults])\n\n\treturn (\n\t\t
\n\t\t\t
\n\t\t\t\t<>\n\t\t\t\t\t
\n\t\t\t\t\t\t

{data.question as string}

\n\t\t\t\t\t\t

\n\t\t\t\t\t\t\t{voters} / {numberOfParticipants} haben abgestimmt\n\t\t\t\t\t\t

\n\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t{showResults\n\t\t\t\t\t\t\t\t? time > 0\n\t\t\t\t\t\t\t\t\t? `sichtbar in: ${time}`\n\t\t\t\t\t\t\t\t\t: \"Ergebnisse sichtbar\"\n\t\t\t\t\t\t\t\t: t(\"show_results\")}\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t{data.imageUrl && (\n\t\t\t\t\t\t\n\t\t\t\t\t)}\n\t\t\t\t\n\t\t\t
\n\n\t\t\t
\n\t\t\t\t{mapVotes(data.answers as string[], votes).map((v, i) => (\n\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t

{quizLetters[i]}

\n\t\t\t\t\t\t\t

{(data.answers as string[])[i]}

\n\t\t\t\t\t\t\t{(data.solution as number[]).includes(i) && (\n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t{t(\"correct_answer\")}\n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t{votes[i] !== 0 &&

{votes[i]}

}\n\t\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t))}\n\t\t\t\n\t\t\t
\n\t\t
\n\t)\n}\n\nexport default Quiz\n","import { useTranslation } from \"react-i18next\"\nimport { useSocketStore } from \"../../../state/stores/socketStore\"\nimport Button from \"../../button/button\"\n\nconst Sendoff = () => {\n\tconst { t } = useTranslation()\n\tconst quit = useSocketStore((state) => state.emit.quit)\n\n\treturn (\n\t\t
\n\t\t\t

{t(\"quit_practinar\")}

\n\t\t\t\n\t\t
\n\t)\n}\n\nexport default Sendoff\n","import { useCallback, useEffect, useState } from \"react\"\nimport { useTranslation } from \"react-i18next\"\nimport { useParams } from \"react-router-dom\"\nimport Button, { ButtonTheme } from \"src/components/button/button\"\nimport Number from \"src/components/number/number\"\nimport useSWR from \"swr\"\nimport Body from \"../../../../components/body/body\"\nimport Chat from \"../../../../components/chat/chat\"\nimport Media, { MediaType } from \"../../../../components/media/moderator/media\"\nimport MiniCam from \"../../../../components/miniCam/miniCam\"\nimport Participants from \"../../../../components/participants/participants\"\nimport Patient from \"../../../../components/patient/moderator/patient\"\nimport { HasAuth } from \"../../../../components/privateRoute/privateRoute\"\nimport Quiz from \"../../../../components/quiz/moderator/quiz\"\nimport Sendoff from \"../../../../components/sendoff/moderator/sendoff\"\nimport { fetchApiAuthorized } from \"../../../../network/fetch\"\nimport { useChatStore } from \"../../../../state/stores/chatStore\"\nimport { useSceneStore } from \"../../../../state/stores/sceneStore\"\nimport { useSettingsStore } from \"../../../../state/stores/settingsStore\"\nimport { IRole, useSocketStore } from \"../../../../state/stores/socketStore\"\n\nconst Live = ({ auth }: HasAuth) => {\n\tconst { t } = useTranslation()\n\tconst { id } = useParams() as Record\n\n\tconst join = useSocketStore((state) => state.join)\n\tconst onScene = useSocketStore((state) => state.emit.scene)\n\tconst leave = useSocketStore((state) => state.leave)\n\tconst updateDevices = useSettingsStore((state) => state.updateIO)\n\tconst clear = useChatStore((state) => state.clear)\n\n\tconst [showPermissionOverlay, setShowPermissionOverlay] = useState(false)\n\tconst [hasPermissions, setHasPermissions] = useState(false)\n\n\tconst { data: practinar } = useSWR(\n\t\t[`/webinars/${id}`, auth.token, auth.expiresIn],\n\t\tfetchApiAuthorized\n\t)\n\tconst scheduleIndex = useSceneStore((state) => state.index)\n\n\tconst { data: moderator } = useSWR(\n\t\t[\"/users/current\", auth.token, auth.expiresIn],\n\t\tfetchApiAuthorized\n\t)\n\n\tlet status = \"presentation\"\n\tif (scheduleIndex && practinar && practinar.schedule[scheduleIndex]) {\n\t\tstatus = practinar.schedule[scheduleIndex].type as string\n\t}\n\n\tuseEffect(() => {\n\t\treturn () => clear()\n\t}, [clear])\n\n\tuseEffect(() => {\n\t\tconst onunload = () => {\n\t\t\tleave()\n\t\t\tclear()\n\t\t}\n\n\t\twindow.addEventListener(\"unload\", onunload)\n\n\t\treturn () => window.removeEventListener(\"unload\", onunload)\n\t}, [leave, clear])\n\n\tuseEffect(() => {\n\t\tif (auth.token && id) {\n\t\t\tjoin(auth.token, IRole.Admin, id)\n\t\t}\n\t}, [auth.token, id, join])\n\n\tconst _setStatus = (isNext: boolean) => {\n\t\tif (!practinar || !practinar.schedule) return\n\n\t\tlet index: number | undefined = undefined\n\t\tif (isNext && scheduleIndex < practinar.schedule.length - 1) {\n\t\t\tindex = scheduleIndex + 1\n\t\t} else if (!isNext && scheduleIndex > 0) {\n\t\t\tindex = scheduleIndex - 1\n\t\t}\n\n\t\tif (index !== undefined) {\n\t\t\tonScene(index)\n\t\t}\n\t}\n\n\tconst renderCurrentScheduleItem = () => {\n\t\tif (!practinar || !practinar.schedule) return\n\n\t\tconst currentItem = practinar.schedule[scheduleIndex] as Record<\n\t\t\tstring,\n\t\t\tunknown\n\t\t>\n\t\tif (currentItem === undefined) return
\n\n\t\tconst data = currentItem.data as Record\n\n\t\tlet content\n\t\tswitch (currentItem.type) {\n\t\t\tcase \"media\":\n\t\t\t\tcontent = (\n\t\t\t\t\t\n\t\t\t\t)\n\t\t\t\tbreak\n\t\t\tcase \"quiz\":\n\t\t\t\tcontent = \n\t\t\t\tbreak\n\t\t\tcase \"patient\":\n\t\t\t\tcontent = \n\t\t\t\tbreak\n\t\t\tcase \"sendoff\":\n\t\t\t\tcontent = \n\t\t\t\tbreak\n\n\t\t\tdefault:\n\t\t\t\tbreak\n\t\t}\n\n\t\treturn (\n\t\t\t
\n\t\t\t\t{content}\n\t\t\t
\n\t\t)\n\t}\n\n\t// TODO: cameraPermission and this same code refacotr hook\n\tconst checkPermission = useCallback(async () => {\n\t\tlet hasPermissions = false\n\t\tconst devices = await navigator.mediaDevices.enumerateDevices()\n\t\tdevices.forEach((device) => {\n\t\t\tif (device.label && device.label.length > 0) {\n\t\t\t\thasPermissions = true\n\t\t\t}\n\t\t})\n\n\t\tsetHasPermissions(hasPermissions)\n\t\tsetShowPermissionOverlay(!hasPermissions)\n\n\t\tif (hasPermissions) {\n\t\t\tupdateDevices(devices)\n\t\t}\n\t}, [updateDevices])\n\n\tconst askForPermission = useCallback(async () => {\n\t\tawait navigator.mediaDevices.getUserMedia({ audio: true, video: true })\n\n\t\tcheckPermission()\n\t}, [checkPermission])\n\n\tuseEffect(() => {\n\t\tcheckPermission()\n\n\t\taskForPermission()\n\t}, [checkPermission, askForPermission])\n\n\tuseEffect(() => {\n\t\tconst onDeviceChange = async () => {\n\t\t\tconst devices = await navigator.mediaDevices.enumerateDevices()\n\t\t\tupdateDevices(devices)\n\t\t}\n\n\t\tnavigator.mediaDevices.addEventListener(\"devicechange\", onDeviceChange)\n\n\t\treturn () =>\n\t\t\tnavigator.mediaDevices.removeEventListener(\"devicechange\", onDeviceChange)\n\t}, [updateDevices])\n\n\treturn practinar === undefined ? (\n\t\t
Loading…
\n\t) : showPermissionOverlay ? (\n\t\t
\n\t\t\t
\n\t\t\t\t

{t(\"camera_permission_1\")}

\n\t\t\t\t

{t(\"camera_permission_2\")}

\n\t\t\t\t

\n\t\t\t\t\t{t(\"camera_permission_3\")}{\" \"}\n\t\t\t\t\t\n\t\t\t\t\t\t{t(\"camera_permission_4\")}\n\t\t\t\t\t\n\t\t\t\t

\n\t\t\t
\n\t\t
\n\t) : (\n\t\t\n\t\t\t
\n\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t{scheduleIndex + 1}\n\t\t\t\t\t\t\t\t

{t(status)}

\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t
\n\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t{scheduleIndex > 0 && practinar.schedule[scheduleIndex - 1] && (\n\t\t\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t\t\t _setStatus(false)}\n\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t◄ {t(practinar.schedule[scheduleIndex - 1].type as string)}\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t{scheduleIndex < practinar.schedule.length - 2 && (\n\t\t\t\t\t\t\t\t\t\t onScene(0)}\n\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t◄◄\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\twindow.open(\n\t\t\t\t\t\t\t\t\t\t`/moderator/webinar/schedule/${id}?index=${scheduleIndex}`,\n\t\t\t\t\t\t\t\t\t\t\"_blank\"\n\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\tProgramm\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t{scheduleIndex < practinar.schedule.length - 2 && (\n\t\t\t\t\t\t\t\t onScene(practinar.schedule.length - 2)}\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t►►\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t)}\n\n\t\t\t\t\t\t\t{scheduleIndex < practinar.schedule.length - 1 ? (\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t\t

Practinar im Bedienfeld beenden

\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t
\n\t\t\t\t\t
\n\n\t\t\t\t\t{status !== \"presentation\" && renderCurrentScheduleItem()}\n\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t
\n\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\n\t\t\n\t)\n}\n\nexport default Live\n","var _path, _g, _g2, _g3, _defs;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nfunction SvgLogoBw(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 916,\n height: 301,\n viewBox: \"0 0 916 301\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M85.7812 160.48H104.83C104.254 139.514 85.7173 124.301 59.1264 124.301C32.8551 124.301 12.7202 139.322 12.7202 161.886C12.7202 180.104 25.7599 190.778 46.7898 196.467L62.2585 200.686C76.2571 204.393 87.0597 208.996 87.0597 220.629C87.0597 233.413 74.8509 241.851 58.0398 241.851C42.8267 241.851 30.1705 235.075 29.0199 220.821H9.20455C10.483 244.536 28.8281 259.173 58.1676 259.173C88.9134 259.173 106.619 243.001 106.619 220.821C106.619 197.234 85.5895 188.094 68.9702 184.003L56.1861 180.679C45.9588 178.058 32.3438 173.264 32.4077 160.736C32.4077 149.614 42.571 141.368 58.679 141.368C73.7003 141.368 84.375 148.399 85.7812 160.48ZM170.044 258.982C197.722 258.982 215.811 238.719 215.811 208.357C215.811 177.803 197.722 157.54 170.044 157.54C142.367 157.54 124.277 177.803 124.277 208.357C124.277 238.719 142.367 258.982 170.044 258.982ZM170.108 242.938C152.019 242.938 143.581 227.149 143.581 208.293C143.581 189.5 152.019 173.52 170.108 173.52C188.07 173.52 196.507 189.5 196.507 208.293C196.507 227.149 188.07 242.938 170.108 242.938ZM256.257 198.705C256.257 183.044 265.845 174.095 279.141 174.095C292.116 174.095 299.979 182.597 299.979 196.851V257H319.091V194.55C319.091 170.26 305.732 157.54 285.661 157.54C270.895 157.54 261.243 164.379 256.705 174.798H255.49V158.818H237.145V257H256.257V198.705ZM386.08 258.982C413.757 258.982 431.847 238.719 431.847 208.357C431.847 177.803 413.757 157.54 386.08 157.54C358.402 157.54 340.312 177.803 340.312 208.357C340.312 238.719 358.402 258.982 386.08 258.982ZM386.143 242.938C368.054 242.938 359.616 227.149 359.616 208.293C359.616 189.5 368.054 173.52 386.143 173.52C404.105 173.52 412.543 189.5 412.543 208.293C412.543 227.149 404.105 242.938 386.143 242.938ZM454.714 257H474.466V199.919H530.076V182.98H474.466V143.094H535.893V126.091H454.714V257ZM614.691 216.283C614.755 232.966 602.354 240.892 591.616 240.892C579.79 240.892 571.609 232.327 571.609 218.967V158.818H552.496V221.268C552.496 245.622 565.856 258.278 584.712 258.278C599.478 258.278 609.513 250.48 614.052 239.997H615.075V257H633.867V158.818H614.691V216.283ZM678.659 198.705C678.659 183.044 688.248 174.095 701.543 174.095C714.519 174.095 722.381 182.597 722.381 196.851V257H741.493V194.55C741.493 170.26 728.134 157.54 708.063 157.54C693.297 157.54 683.645 164.379 679.107 174.798H677.892V158.818H659.547V257H678.659V198.705ZM791.223 126.091H770.194L771.855 219.351H789.561L791.223 126.091ZM780.676 258.214C787.644 258.214 793.461 252.526 793.461 245.43C793.461 238.463 787.644 232.71 780.676 232.71C773.645 232.71 767.892 238.463 767.892 245.43C767.892 252.526 773.645 258.214 780.676 258.214Z\",\n fill: \"#CFCFCF\"\n })), _g || (_g = /*#__PURE__*/React.createElement(\"g\", {\n filter: \"url(#filter0_d)\"\n }, /*#__PURE__*/React.createElement(\"rect\", {\n x: 644.986,\n y: 13.8731,\n width: 270.55,\n height: 118,\n rx: 12,\n transform: \"rotate(20.9094 644.986 13.8731)\",\n stroke: \"#E4E4E4\",\n strokeWidth: 6\n }))), _g2 || (_g2 = /*#__PURE__*/React.createElement(\"g\", {\n filter: \"url(#filter1_d)\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M647.546 111.799L685.761 126.399L688.438 119.393L658.121 107.81L680.362 49.5961L672.464 46.5788L647.546 111.799ZM696.971 130.682L704.487 133.553L723.175 84.638L715.659 81.7667L696.971 130.682ZM722.595 75.0741C725.525 76.1935 728.822 74.8252 729.892 72.0228C730.963 69.2203 729.419 66.0028 726.489 64.8834C723.559 63.7641 720.263 65.1323 719.192 67.9348C718.121 70.7372 719.666 73.9548 722.595 75.0741ZM776.939 105.178L768.786 102.064L740.391 135.884L739.882 135.69L741.271 91.5517L733.119 88.4371L732.519 144.263L740.162 147.183L776.939 105.178ZM786.538 166.069C796.474 169.865 805.633 167.671 810.749 161.159L804.267 156.347C800.409 160.712 795.009 161.568 789.118 159.318C780.297 155.947 776.392 147.923 780.044 137.312L815.553 150.878L816.769 147.693C823.729 129.478 815.286 119.099 805.095 115.206C791.847 110.144 779.067 117.232 773.324 132.263C767.582 147.294 772.399 160.667 786.538 166.069ZM782.526 130.816C785.944 123.399 793.917 118.672 802.516 121.957C810.668 125.072 813.555 133.181 810.392 141.461L782.526 130.816Z\",\n fill: \"#E4E4E4\"\n }))), _g3 || (_g3 = /*#__PURE__*/React.createElement(\"g\", {\n filter: \"url(#filter2_d)\"\n }, /*#__PURE__*/React.createElement(\"ellipse\", {\n cx: 861.953,\n cy: 121.387,\n rx: 8.5,\n ry: 8,\n transform: \"rotate(20.9094 861.953 121.387)\",\n fill: \"#E4E4E4\"\n }))), _defs || (_defs = /*#__PURE__*/React.createElement(\"defs\", null, /*#__PURE__*/React.createElement(\"filter\", {\n id: \"filter0_d\",\n x: 579,\n y: 0,\n width: 342.592,\n height: 254.532,\n filterUnits: \"userSpaceOnUse\",\n colorInterpolationFilters: \"sRGB\"\n }, /*#__PURE__*/React.createElement(\"feFlood\", {\n floodOpacity: 0,\n result: \"BackgroundImageFix\"\n }), /*#__PURE__*/React.createElement(\"feColorMatrix\", {\n in: \"SourceAlpha\",\n type: \"matrix\",\n values: \"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0\"\n }), /*#__PURE__*/React.createElement(\"feOffset\", {\n dy: 10\n }), /*#__PURE__*/React.createElement(\"feGaussianBlur\", {\n stdDeviation: 10\n }), /*#__PURE__*/React.createElement(\"feColorMatrix\", {\n type: \"matrix\",\n values: \"0 0 0 0 0.154167 0 0 0 0 0.154167 0 0 0 0 0.154167 0 0 0 0.5 0\"\n }), /*#__PURE__*/React.createElement(\"feBlend\", {\n mode: \"normal\",\n in2: \"BackgroundImageFix\",\n result: \"effect1_dropShadow\"\n }), /*#__PURE__*/React.createElement(\"feBlend\", {\n mode: \"normal\",\n in: \"SourceGraphic\",\n in2: \"effect1_dropShadow\",\n result: \"shape\"\n })), /*#__PURE__*/React.createElement(\"filter\", {\n id: \"filter1_d\",\n x: 640.546,\n y: 43.5786,\n width: 185.769,\n height: 135.351,\n filterUnits: \"userSpaceOnUse\",\n colorInterpolationFilters: \"sRGB\"\n }, /*#__PURE__*/React.createElement(\"feFlood\", {\n floodOpacity: 0,\n result: \"BackgroundImageFix\"\n }), /*#__PURE__*/React.createElement(\"feColorMatrix\", {\n in: \"SourceAlpha\",\n type: \"matrix\",\n values: \"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0\"\n }), /*#__PURE__*/React.createElement(\"feOffset\", {\n dy: 4\n }), /*#__PURE__*/React.createElement(\"feGaussianBlur\", {\n stdDeviation: 3.5\n }), /*#__PURE__*/React.createElement(\"feColorMatrix\", {\n type: \"matrix\",\n values: \"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.25 0\"\n }), /*#__PURE__*/React.createElement(\"feBlend\", {\n mode: \"normal\",\n in2: \"BackgroundImageFix\",\n result: \"effect1_dropShadow\"\n }), /*#__PURE__*/React.createElement(\"feBlend\", {\n mode: \"normal\",\n in: \"SourceGraphic\",\n in2: \"effect1_dropShadow\",\n result: \"shape\"\n })), /*#__PURE__*/React.createElement(\"filter\", {\n id: \"filter2_d\",\n x: 843.158,\n y: 106.88,\n width: 37.5907,\n height: 37.0135,\n filterUnits: \"userSpaceOnUse\",\n colorInterpolationFilters: \"sRGB\"\n }, /*#__PURE__*/React.createElement(\"feFlood\", {\n floodOpacity: 0,\n result: \"BackgroundImageFix\"\n }), /*#__PURE__*/React.createElement(\"feColorMatrix\", {\n in: \"SourceAlpha\",\n type: \"matrix\",\n values: \"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0\"\n }), /*#__PURE__*/React.createElement(\"feOffset\", {\n dy: 4\n }), /*#__PURE__*/React.createElement(\"feGaussianBlur\", {\n stdDeviation: 4\n }), /*#__PURE__*/React.createElement(\"feColorMatrix\", {\n type: \"matrix\",\n values: \"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.25 0\"\n }), /*#__PURE__*/React.createElement(\"feBlend\", {\n mode: \"normal\",\n in2: \"BackgroundImageFix\",\n result: \"effect1_dropShadow\"\n }), /*#__PURE__*/React.createElement(\"feBlend\", {\n mode: \"normal\",\n in: \"SourceGraphic\",\n in2: \"effect1_dropShadow\",\n result: \"shape\"\n })))));\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgLogoBw);\nexport default __webpack_public_path__ + \"static/media/logoBw.e9676e3ef8793f4d0c751e258b97427e.svg\";\nexport { ForwardRef as ReactComponent };","import moment from \"moment\"\nimport { useCallback, useEffect, useRef } from \"react\"\nimport { useTranslation } from \"react-i18next\"\nimport { useParams } from \"react-router-dom\"\nimport onBeforeGetContent, { useReactToPrint } from \"react-to-print\"\nimport Number from \"src/components/number/number\"\nimport useSWR from \"swr\"\nimport logo from \"../../../../assets/images/logoBw.svg\"\nimport DashboardHeader from \"../../../../components/dashboardHeader/dashboardHeader\"\nimport { HasAuth } from \"../../../../components/privateRoute/privateRoute\"\nimport { useQuery } from \"../../../../hooks/useQuery\"\nimport { fetchApiAuthorized } from \"../../../../network/fetch\"\nimport { formatName } from \"../../../../utils/formatName\"\nimport { quizLetters } from \"../../../../utils/formatQuiz\"\n\nconst Schedule = ({ auth }: HasAuth) => {\n\tconst { id } = useParams() as Record\n\tconst { t } = useTranslation()\n\tconst query = useQuery()\n\n\tconst printable = !window.location.href.includes(\"?\")\n\n\tconst printRef = useRef(null)\n\tconst handlePrint = useReactToPrint({\n\t\t//@ts-ignore\n\t\tcontent: () => printRef.current,\n\t})\n\n\tconst { data: currentWebinar } = useSWR(\n\t\tid ? [`/webinars/${id}`, auth.token, auth.expiresIn] : null,\n\t\tfetchApiAuthorized\n\t)\n\n\tconst content = (type: string, data: Record) => {\n\t\tswitch (type) {\n\t\t\tcase \"waiting\":\n\t\t\t\treturn null\n\t\t\tcase \"presentation\":\n\t\t\t\treturn null\n\t\t\tcase \"patient\":\n\t\t\t\treturn (\n\t\t\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t

\n\t\t\t\t\t\t\t\t<>Name: {data.name}\n\t\t\t\t\t\t\t

\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\"Vorschau\"\n\t\t\t\t\t
\n\t\t\t\t)\n\t\t\tcase \"quiz\":\n\t\t\t\treturn (\n\t\t\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t

\n\t\t\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t\t\tFrage: {data.question} (\n\t\t\t\t\t\t\t\t\t{data.multiplePossible\n\t\t\t\t\t\t\t\t\t\t? \"Mehrere Antworten sind möglich\"\n\t\t\t\t\t\t\t\t\t\t: \"Eine Antwort ist richtig\"}\n\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t

\n\t\t\t\t\t\t\t{(data.answers as string[]).map((v, i) => (\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t{quizLetters[i]}: {v}\n\t\t\t\t\t\t\t\t

\n\t\t\t\t\t\t\t))}\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\"Vorschau\"\n\t\t\t\t\t
\n\t\t\t\t)\n\t\t\tcase \"media\":\n\t\t\t\treturn (\n\t\t\t\t\t
\n\t\t\t\t\t\t

\n\t\t\t\t\t\t\t<>Name: {data.name}\n\t\t\t\t\t\t

\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t)\n\t\t\tcase \"sendoff\":\n\t\t\t\treturn null\n\n\t\t\tdefault:\n\t\t\t\treturn null\n\t\t}\n\t}\n\n\tconst close = useCallback(() => {\n\t\twindow.close()\n\t}, [])\n\n\tuseEffect(() => {\n\t\tconst update = () => {\n\t\t\tconst index = query.get(\"index\")\n\t\t\tif (!index || !printRef || !printRef.current) return\n\n\t\t\tconst element = document.getElementById(index)\n\t\t\tif (!element) return\n\n\t\t\twindow.scrollTo(0, element.offsetTop + 80)\n\t\t}\n\n\t\tif (!currentWebinar) return\n\n\t\tsetTimeout(() => {\n\t\t\twindow.requestAnimationFrame(update)\n\t\t}, 100)\n\t}, [query, printRef, currentWebinar])\n\n\treturn (\n\t\t<>\n\t\t\t\n\t\t\t
\n\t\t\t\t{currentWebinar && (\n\t\t\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t{currentWebinar.title &&

{currentWebinar.title}

}\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t

\n\t\t\t\t\t\t\t\t\t{moment(currentWebinar.date).format(\"DD. MMMM YYYY, HH:mm\")}\n\t\t\t\t\t\t\t\t

\n\t\t\t\t\t\t\t\t

\n\t\t\t\t\t\t\t\t\t{currentWebinar.participants.length} Teilnehmer\n\t\t\t\t\t\t\t\t

\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t
\n\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\"SonoFun\n\t\t\t\t\t\t
\n\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t{currentWebinar.schedule.map(\n\t\t\t\t\t\t\t\t(v: Record, i: number) => (\n\t\t\t\t\t\t\t\t\t i % 2)\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t.includes(v)\n\t\t\t\t\t\t\t\t\t\t\t\t? \"bg-slate-50\"\n\t\t\t\t\t\t\t\t\t\t\t\t: \"\"\n\t\t\t\t\t\t\t\t\t\t} ${\n\t\t\t\t\t\t\t\t\t\t\tv.type === \"quiz\" ? \"justify-start\" : \"justify-between\"\n\t\t\t\t\t\t\t\t\t\t}`}\n\t\t\t\t\t\t\t\t\t\tkey={i}\n\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\t{i + 1}\n\t\t\t\t\t\t\t\t\t\t\t

{formatName(v.type as string)}

\n\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\t{content(\n\t\t\t\t\t\t\t\t\t\t\t\tv.type as string,\n\t\t\t\t\t\t\t\t\t\t\t\tv.data as Record\n\t\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t)}\n\t\t\t\n\t\t\n\t)\n}\n\nexport default Schedule\n","import { useLocation } from \"react-router-dom\"\n\nexport const useQuery = () => {\n\treturn new URLSearchParams(useLocation().search)\n}\n","import moment from \"moment\"\nimport \"moment/locale/de\"\nimport { Fragment } from \"react\"\nimport { useTranslation } from \"react-i18next\"\nimport { useNavigate } from \"react-router-dom\"\nimport { useLocation } from \"react-use\"\nimport Button, { ButtonTheme } from \"src/components/button/button\"\nimport { ListContainer, ListRow } from \"src/components/list/list\"\nimport useSWR from \"swr\"\nimport TrashIcon from \"../../../assets/images/trash.svg\"\nimport DashboardBody from \"../../../components/dashboardBody/dashboardBody\"\nimport DashboardHeader from \"../../../components/dashboardHeader/dashboardHeader\"\nimport { HasAuth } from \"../../../components/privateRoute/privateRoute\"\nimport { fetchApiAuthorized } from \"../../../network/fetch\"\nimport { useErrorStore } from \"../../../state/stores/errorStore\"\n\nconst Webinars = ({ auth }: HasAuth) => {\n\tconst { pathname } = useLocation()\n\tconst isUpcoming = pathname && pathname.includes(\"upcoming\")\n\n\tconst { data: webinars, mutate } = useSWR(\n\t\t[\n\t\t\tisUpcoming ? \"/webinars/upcoming\" : \"/webinars/completed\",\n\t\t\tauth.token,\n\t\t\tauth.expiresIn,\n\t\t],\n\t\tfetchApiAuthorized\n\t)\n\tconst uniqueYears = webinars\n\t\t? Array.from(\n\t\t\t\tnew Set(\n\t\t\t\t\twebinars.map(\n\t\t\t\t\t\t(webinar: Record) =>\n\t\t\t\t\t\t\t(webinar.date as string).split(\".\")[0]\n\t\t\t\t\t)\n\t\t\t\t)\n\t\t )\n\t\t: []\n\tconst yearIndices = webinars\n\t\t? uniqueYears.map((year) =>\n\t\t\t\t(webinars as Record[]).findIndex(\n\t\t\t\t\t(v) => v.date.split(\".\")[0] === year\n\t\t\t\t)\n\t\t )\n\t\t: []\n\n\tconst navigate = useNavigate()\n\tconst { t } = useTranslation()\n\n\tmoment().locale(\"de\")\n\n\tconst deletionConfirmation = useErrorStore(\n\t\t(state) => state.deleteConfirmation\n\t)\n\n\treturn (\n\t\t\n\t\t\t\n\t\t\t\t\tisUpcoming ? navigate(\"/moderator/webinar/create\") : undefined\n\t\t\t\t}\n\t\t\t\tbuttonTitle=\"Practinar Erstellen\"\n\t\t\t\ttitle={\n\t\t\t\t\tisUpcoming\n\t\t\t\t\t\t? (t(\"webinars_upcoming\") as string)\n\t\t\t\t\t\t: (t(\"webinars_completed\") as string)\n\t\t\t\t}\n\t\t\t/>\n\n\t\t\t\n\t\t\t\t{webinars === undefined\n\t\t\t\t\t? \"Loading…\"\n\t\t\t\t\t: webinars.map((c: Record, y: number) => (\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t{yearIndices.includes(y) && (\n\t\t\t\t\t\t\t\t\t

\n\t\t\t\t\t\t\t\t\t\t{new Date(\n\t\t\t\t\t\t\t\t\t\t\tparseInt((c.date as string).split(\".\")[0]),\n\t\t\t\t\t\t\t\t\t\t\t1\n\t\t\t\t\t\t\t\t\t\t).toLocaleString(\"de\", { year: \"numeric\" })}\n\t\t\t\t\t\t\t\t\t

\n\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t

\n\t\t\t\t\t\t\t\t\t\t{new Date(\n\t\t\t\t\t\t\t\t\t\t\t2020,\n\t\t\t\t\t\t\t\t\t\t\tparseInt((c.date as string).split(\".\")[1]) - 1\n\t\t\t\t\t\t\t\t\t\t).toLocaleString(\"de\", { month: \"long\" })}\n\t\t\t\t\t\t\t\t\t

\n\t\t\t\t\t\t\t\t\t{(c.data as Record[]).map(\n\t\t\t\t\t\t\t\t\t\t(v: Record, i: number) => (\n\t\t\t\t\t\t\t\t\t\t\t[]).length - 1\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t

\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{moment(v.date as string).format(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"DoMoYYYY, HH:mm\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\th\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t

\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t{v.title && (\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t

{v.title as string}

\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\t\t\t{isUpcoming && (\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tnavigate(`/moderator/webinar/live/${v.id}`)\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{t(\"start_webinar\")}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tnavigate(`/moderator/webinar/create?copy=${v.id}`)\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tDuplizieren\n\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\twindow.open(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t`/moderator/webinar/schedule/${v.id}`,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"_blank\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tProgramm\n\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tdeletionConfirmation(async () => {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tawait fetchApiAuthorized(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t`/webinars/${v.id}`,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tauth.token,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tauth.expiresIn,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tundefined,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"DELETE\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t)\n\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tmutate()\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tnavigate(`/moderator/webinar/${v.id}`)\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t{t(\"edit\")}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t
\n\t\t\t\t\t ))}\n\t\t\t
\n\t\t
\n\t)\n}\n\nexport default Webinars\n","import moment from \"moment\"\nimport { useTranslation } from \"react-i18next\"\nimport { useNavigate } from \"react-router-dom\"\nimport Button, { ButtonTheme } from \"src/components/button/button\"\nimport { ListContainer, ListRow } from \"src/components/list/list\"\nimport useSWR from \"swr\"\nimport DashboardBody from \"../../../components/dashboardBody/dashboardBody\"\nimport DashboardHeader from \"../../../components/dashboardHeader/dashboardHeader\"\nimport { HasAuth } from \"../../../components/privateRoute/privateRoute\"\nimport { fetchApiAuthorized } from \"../../../network/fetch\"\nimport { useErrorStore } from \"../../../state/stores/errorStore\"\n\nconst WebinarsRunning = ({ auth }: HasAuth) => {\n\tconst { data: webinars, mutate } = useSWR(\n\t\t[\"/webinars/running\", auth.token, auth.expiresIn],\n\t\tfetchApiAuthorized\n\t)\n\n\tconst navigate = useNavigate()\n\tconst { t } = useTranslation()\n\n\tconst deletionConfirmation = useErrorStore(\n\t\t(state) => state.deleteConfirmation\n\t)\n\n\treturn (\n\t\t\n\t\t\t\n\n\t\t\t\n\t\t\t\t{webinars === undefined\n\t\t\t\t\t? \"Loading…\"\n\t\t\t\t\t: webinars.map((v: Record, i: number) => (\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t\t\t\t

{moment(v.date as string).format(\"DoMoYYYY, HH:mm\")}

\n\t\t\t\t\t\t\t\t\t\t{v.title && (\n\t\t\t\t\t\t\t\t\t\t\t

{v.title as string}

\n\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t{moment(v.date as string).isSame(moment(), \"d\") && (\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\tnavigate(`/moderator/webinar/live/${v.id}`)\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t{t(\"start_webinar\")}\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t)}\n\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\twindow.open(\n\t\t\t\t\t\t\t\t\t\t\t\t`/moderator/webinar/schedule/${v.id}`,\n\t\t\t\t\t\t\t\t\t\t\t\t\"_blank\"\n\t\t\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\tProgramm\n\t\t\t\t\t\t\t\t\t\n\n\t\t\t\t\t\t\t\t\t {\n\t\t\t\t\t\t\t\t\t\t\tdeletionConfirmation(async () => {\n\t\t\t\t\t\t\t\t\t\t\t\tawait fetchApiAuthorized(\n\t\t\t\t\t\t\t\t\t\t\t\t\t`/webinars/quit/${v.id}`,\n\t\t\t\t\t\t\t\t\t\t\t\t\tauth.token,\n\t\t\t\t\t\t\t\t\t\t\t\t\tauth.expiresIn,\n\t\t\t\t\t\t\t\t\t\t\t\t\tundefined,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"POST\"\n\t\t\t\t\t\t\t\t\t\t\t\t)\n\n\t\t\t\t\t\t\t\t\t\t\t\tmutate()\n\t\t\t\t\t\t\t\t\t\t\t}, `In dem Webinar sind User ${v.onlineUsers} eingeloggt`)\n\t\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t{t(\"quit\")}\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\n\t\t\t\t\t ))}\n\t\t\t
\n\t\t
\n\t)\n}\n\nexport default WebinarsRunning\n","import { CSSProperties, PropsWithChildren, RefObject } from \"react\"\n\ninterface LaserProps {\n\tchildRef: RefObject\n\tpositions: number[] | undefined\n\tstyle?: CSSProperties\n}\n\nconst Laser = ({\n\tchildRef,\n\tchildren,\n\tpositions,\n\tstyle,\n}: PropsWithChildren) => {\n\tlet _position = undefined\n\tif (positions !== undefined && childRef.current) {\n\t\t_position = {\n\t\t\tleft:\n\t\t\t\tchildRef.current.offsetWidth * positions[0] +\n\t\t\t\tchildRef.current.offsetLeft -\n\t\t\t\t10 +\n\t\t\t\t\"px\",\n\t\t\ttop:\n\t\t\t\tchildRef.current.offsetHeight * positions[1] +\n\t\t\t\tchildRef.current.offsetTop -\n\t\t\t\t10 +\n\t\t\t\t\"px\",\n\t\t}\n\t}\n\n\treturn (\n\t\t\n\t\t\t{children}\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t\n\t)\n}\n\nexport default Laser\n","import useForwardedRef from \"@bedrock-layout/use-forwarded-ref\"\nimport {\n\tCSSProperties,\n\tforwardRef,\n\tuseLayoutEffect,\n\tuseRef,\n\tuseState,\n} from \"react\"\nimport { findDOMNode } from \"react-dom\"\n\ninterface ResponsiveVideoProps {\n\turl: string\n\tstyle?: CSSProperties\n\tpadding?: number\n\tonMouseEnter?: () => void\n\tonMouseLeave?: () => void\n}\n\nconst ResponsiveVideo = forwardRef(\n\t({ url, style, padding = 0, onMouseEnter, onMouseLeave }, ref) => {\n\t\tconst container = useForwardedRef(ref)\n\n\t\tconst [width, setWidth] = useState(undefined)\n\t\tconst [height, setHeight] = useState(undefined)\n\t\tconst [aspectRatio, setAspectRatio] = useState(\n\t\t\tundefined\n\t\t)\n\n\t\tconst containerParent = useRef()\n\t\tconst video = useRef(null)\n\n\t\tconst onLoad = () => {\n\t\t\tif (video.current) {\n\t\t\t\tsetAspectRatio(video.current.videoHeight / video.current.videoWidth)\n\t\t\t}\n\t\t}\n\n\t\tif (container && container.current) {\n\t\t\tconst node = findDOMNode(container.current)\n\t\t\tif (node && node.parentElement) {\n\t\t\t\tcontainerParent.current = node.parentElement\n\t\t\t}\n\t\t}\n\n\t\tif (containerParent.current && !width) {\n\t\t\tsetWidth(containerParent.current.offsetWidth - padding)\n\t\t\tsetHeight(containerParent.current.offsetHeight - padding)\n\t\t}\n\n\t\tuseLayoutEffect(() => {\n\t\t\tconst updateSize = () => {\n\t\t\t\tif (containerParent.current) {\n\t\t\t\t\tsetWidth(containerParent.current.offsetWidth - padding)\n\t\t\t\t\tsetHeight(containerParent.current.offsetHeight - padding)\n\t\t\t\t}\n\t\t\t}\n\n\t\t\twindow.addEventListener(\"resize\", updateSize)\n\n\t\t\tupdateSize()\n\n\t\t\treturn () => {\n\t\t\t\twindow.removeEventListener(\"resize\", updateSize)\n\t\t\t}\n\t\t}, [padding])\n\n\t\tconst isPortrait = (aspectRatio ?? 0) > 1\n\n\t\tlet _width = \"100%\"\n\t\tif (\n\t\t\twidth &&\n\t\t\taspectRatio &&\n\t\t\theight &&\n\t\t\t(isPortrait || width * aspectRatio > height)\n\t\t) {\n\t\t\t_width = Math.min((1 / aspectRatio) * height, width) + \"px\"\n\t\t}\n\n\t\tlet _height = \"100%\"\n\t\tif (\n\t\t\twidth &&\n\t\t\taspectRatio &&\n\t\t\theight &&\n\t\t\t(!isPortrait || height * aspectRatio > width)\n\t\t) {\n\t\t\t_height = Math.min(aspectRatio * width, height) + \"px\"\n\t\t}\n\n\t\treturn (\n\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t)\n\t}\n)\n\nexport default ResponsiveVideo\n","import { useEffect, useRef } from \"react\"\nimport LoadingBlue from \"../../../assets/images/loadingBlue.gif\"\nimport { useLaserStore } from \"../../../state/stores/laserStore\"\nimport { useMediaStore } from \"../../../state/stores/mediaStore\"\nimport Laser from \"../../laser/laser\"\nimport ResponsiveImage from \"../../responsiveImage/responsiveImage\"\nimport ResponsiveVideo from \"../../responsiveImage/responsiveVideo\"\nimport { MediaType } from \"../moderator/media\"\n\ninterface UserMediaProps {\n\ttype: MediaType\n\turl: string\n}\n\nconst UserMedia = ({ type, url }: UserMediaProps) => {\n\tconst playPause = useMediaStore((state) => state.isPlaying)\n\tconst time = useMediaStore((state) => state.time)\n\tconst laser = useLaserStore((state) => state.positions)\n\n\tconst measureContainer = useRef(undefined)\n\tconst video = useRef(undefined)\n\n\tuseEffect(() => {\n\t\tif (video && video.current) {\n\t\t\tif (playPause) {\n\t\t\t\tvideo.current.play()\n\t\t\t} else {\n\t\t\t\tvideo.current.pause()\n\t\t\t}\n\t\t}\n\t}, [playPause])\n\n\tuseEffect(() => {\n\t\tif (video.current) {\n\t\t\tvideo.current.currentTime = time\n\t\t}\n\t}, [time])\n\n\treturn (\n\t\t\n\t\t\t\n\n\t\t\t{type === \"video\" ? (\n\t\t\t\t {\n\t\t\t\t\t\tif (r?.childNodes[0]) {\n\t\t\t\t\t\t\tmeasureContainer.current = r\n\t\t\t\t\t\t\tvideo.current = r?.childNodes[0] as HTMLVideoElement\n\t\t\t\t\t\t}\n\t\t\t\t\t}}\n\t\t\t\t\tstyle={{ zIndex: 1 }}\n\t\t\t\t\turl={url}\n\t\t\t\t/>\n\t\t\t) : (\n\t\t\t\t {\n\t\t\t\t\t\tif (r) {\n\t\t\t\t\t\t\tmeasureContainer.current = r\n\t\t\t\t\t\t}\n\t\t\t\t\t}}\n\t\t\t\t\tstyle={{ zIndex: 1 }}\n\t\t\t\t\turl={url}\n\t\t\t\t/>\n\t\t\t)}\n\t\t\n\t)\n}\n\nexport default UserMedia\n","import * as React from 'react';\n\ntype PossibleRef = React.Ref | undefined;\n\n/**\n * Set a given ref to a given value\n * This utility takes care of different types of refs: callback refs and RefObject(s)\n */\nfunction setRef(ref: PossibleRef, value: T) {\n if (typeof ref === 'function') {\n ref(value);\n } else if (ref !== null && ref !== undefined) {\n (ref as React.MutableRefObject).current = value;\n }\n}\n\n/**\n * A utility to compose multiple refs together\n * Accepts callback refs and RefObject(s)\n */\nfunction composeRefs(...refs: PossibleRef[]) {\n return (node: T) => refs.forEach((ref) => setRef(ref, node));\n}\n\n/**\n * A custom hook that composes multiple refs\n * Accepts callback refs and RefObject(s)\n */\nfunction useComposedRefs(...refs: PossibleRef[]) {\n // eslint-disable-next-line react-hooks/exhaustive-deps\n return React.useCallback(composeRefs(...refs), refs);\n}\n\nexport { composeRefs, useComposedRefs };\n","import * as React from 'react';\nimport { composeRefs } from '@radix-ui/react-compose-refs';\n\n/* -------------------------------------------------------------------------------------------------\n * Slot\n * -----------------------------------------------------------------------------------------------*/\n\ninterface SlotProps extends React.HTMLAttributes {\n children?: React.ReactNode;\n}\n\nconst Slot = React.forwardRef((props, forwardedRef) => {\n const { children, ...slotProps } = props;\n\n if (React.Children.toArray(children).some(isSlottable)) {\n return (\n <>\n {React.Children.map(children, (child) => {\n return isSlottable(child) ? (\n \n {child.props.children}\n \n ) : (\n child\n );\n })}\n \n );\n }\n\n return (\n \n {children}\n \n );\n});\n\nSlot.displayName = 'Slot';\n\n/* -------------------------------------------------------------------------------------------------\n * SlotClone\n * -----------------------------------------------------------------------------------------------*/\n\ninterface SlotCloneProps {\n children: React.ReactNode;\n}\n\nconst SlotClone = React.forwardRef((props, forwardedRef) => {\n const { children, ...slotProps } = props;\n\n if (React.isValidElement(children)) {\n return React.cloneElement(children, {\n ...mergeProps(slotProps, children.props),\n ref: composeRefs(forwardedRef, (children as any).ref),\n });\n }\n\n return React.Children.count(children) > 1 ? React.Children.only(null) : null;\n});\n\nSlotClone.displayName = 'SlotClone';\n\n/* -------------------------------------------------------------------------------------------------\n * Slottable\n * -----------------------------------------------------------------------------------------------*/\n\nconst Slottable = ({ children }: { children: React.ReactNode }) => {\n return <>{children};\n};\n\n/* ---------------------------------------------------------------------------------------------- */\n\ntype AnyProps = Record;\n\nfunction isSlottable(child: React.ReactNode): child is React.ReactElement {\n return React.isValidElement(child) && child.type === Slottable;\n}\n\nfunction mergeProps(slotProps: AnyProps, childProps: AnyProps) {\n // all child props should override\n const overrideProps = { ...childProps };\n\n for (const propName in childProps) {\n const slotPropValue = slotProps[propName];\n const childPropValue = childProps[propName];\n\n const isHandler = /^on[A-Z]/.test(propName);\n // if it's a handler, modify the override by composing the base handler\n if (isHandler) {\n overrideProps[propName] = (...args: unknown[]) => {\n childPropValue?.(...args);\n slotPropValue?.(...args);\n };\n }\n // if it's `style`, we merge them\n else if (propName === 'style') {\n overrideProps[propName] = { ...slotPropValue, ...childPropValue };\n } else if (propName === 'className') {\n overrideProps[propName] = [slotPropValue, childPropValue].filter(Boolean).join(' ');\n }\n }\n\n return { ...slotProps, ...overrideProps };\n}\n\nconst Root = Slot;\n\nexport {\n Slot,\n Slottable,\n //\n Root,\n};\nexport type { SlotProps };\n","import * as React from 'react';\nimport { Slot } from '@radix-ui/react-slot';\n\nconst NODES = [\n 'a',\n 'button',\n 'div',\n 'h2',\n 'h3',\n 'img',\n 'li',\n 'nav',\n 'ol',\n 'p',\n 'span',\n 'svg',\n 'ul',\n] as const;\n\n// Temporary while we await merge of this fix:\n// https://github.com/DefinitelyTyped/DefinitelyTyped/pull/55396\n// prettier-ignore\ntype PropsWithoutRef

= P extends any ? ('ref' extends keyof P ? Pick> : P) : P;\ntype ComponentPropsWithoutRef = PropsWithoutRef<\n React.ComponentProps\n>;\n\ntype Primitives = { [E in typeof NODES[number]]: PrimitiveForwardRefComponent };\ntype PrimitivePropsWithRef = React.ComponentPropsWithRef & {\n asChild?: boolean;\n};\n\ninterface PrimitiveForwardRefComponent\n extends React.ForwardRefExoticComponent> {}\n\n/* -------------------------------------------------------------------------------------------------\n * Primitive\n * -----------------------------------------------------------------------------------------------*/\n\nconst Primitive = NODES.reduce(\n (primitive, node) => ({\n ...primitive,\n [node]: React.forwardRef((props: PrimitivePropsWithRef, forwardedRef: any) => {\n const { asChild, ...primitiveProps } = props;\n const Comp: any = asChild ? Slot : node;\n\n React.useEffect(() => {\n (window as any)[Symbol.for('radix-ui')] = true;\n }, []);\n\n // DEPRECATED\n if (process.env.NODE_ENV === 'development' && (props as any).as) {\n console.warn(AS_ERROR);\n }\n\n return ;\n }),\n }),\n {} as Primitives\n);\n\n/* -----------------------------------------------------------------------------------------------*/\n\nconst AS_ERROR = `Warning: The \\`as\\` prop has been removed in favour of \\`asChild\\`. For details, see https://radix-ui.com/docs/primitives/overview/styling#changing-the-rendered-element`;\n\nconst Root = Primitive;\n\nexport {\n Primitive,\n //\n Root,\n};\nexport type { ComponentPropsWithoutRef, PrimitivePropsWithRef };\n","import * as React from 'react';\n\n/**\n * On the server, React emits a warning when calling `useLayoutEffect`.\n * This is because neither `useLayoutEffect` nor `useEffect` run on the server.\n * We use this safe version which suppresses the warning by replacing it with a noop on the server.\n *\n * See: https://reactjs.org/docs/hooks-reference.html#uselayouteffect\n */\nconst useLayoutEffect = Boolean(globalThis?.document) ? React.useLayoutEffect : () => {};\n\nexport { useLayoutEffect };\n","import * as React from 'react';\nimport ReactDOM from 'react-dom';\nimport { useLayoutEffect } from '@radix-ui/react-use-layout-effect';\nimport { Primitive } from '@radix-ui/react-primitive';\n\nimport type * as Radix from '@radix-ui/react-primitive';\n\nconst MAX_Z_INDEX = 2147483647;\n\n/* -------------------------------------------------------------------------------------------------\n * Portal\n * -----------------------------------------------------------------------------------------------*/\n\nconst PORTAL_NAME = 'Portal';\n\ntype PortalElement = React.ElementRef;\ntype PrimitiveDivProps = Radix.ComponentPropsWithoutRef;\ninterface PortalProps extends PrimitiveDivProps {\n containerRef?: React.RefObject;\n}\n\nconst Portal = React.forwardRef((props, forwardedRef) => {\n const { containerRef, style, ...portalProps } = props;\n const hostElement = containerRef?.current ?? globalThis?.document?.body;\n const [, forceUpdate] = React.useState({});\n\n /**\n * containerRef.current won't be set on first render, so we force a re-render.\n * Because we do this in `useLayoutEffect`, we still avoid a flash.\n */\n useLayoutEffect(() => {\n forceUpdate({});\n }, []);\n\n if (hostElement) {\n return ReactDOM.createPortal(\n ,\n hostElement\n );\n }\n\n // bail out of ssr\n return null;\n});\n\nPortal.displayName = PORTAL_NAME;\n\n/* -------------------------------------------------------------------------------------------------\n * UnstablePortal\n * -----------------------------------------------------------------------------------------------*/\n\nconst UNSTABLE_PORTAL_NAME = 'Portal';\n\ntype UnstablePortalElement = React.ElementRef;\ninterface UnstablePortalProps extends PrimitiveDivProps {\n container?: HTMLElement | null;\n}\n\nconst UnstablePortal = React.forwardRef(\n (props, forwardedRef) => {\n const { container = globalThis?.document?.body, ...portalProps } = props;\n return container\n ? ReactDOM.createPortal(, container)\n : null;\n }\n);\n\nUnstablePortal.displayName = UNSTABLE_PORTAL_NAME;\n\n/* -----------------------------------------------------------------------------------------------*/\n\nconst Root = Portal;\n\nexport {\n Portal,\n UnstablePortal,\n //\n Root,\n};\nexport type { PortalProps, UnstablePortalProps };\n","var has = Object.prototype.hasOwnProperty;\n\nexport function dequal(foo, bar) {\n\tvar ctor, len;\n\tif (foo === bar) return true;\n\n\tif (foo && bar && (ctor=foo.constructor) === bar.constructor) {\n\t\tif (ctor === Date) return foo.getTime() === bar.getTime();\n\t\tif (ctor === RegExp) return foo.toString() === bar.toString();\n\n\t\tif (ctor === Array) {\n\t\t\tif ((len=foo.length) === bar.length) {\n\t\t\t\twhile (len-- && dequal(foo[len], bar[len]));\n\t\t\t}\n\t\t\treturn len === -1;\n\t\t}\n\n\t\tif (!ctor || typeof foo === 'object') {\n\t\t\tlen = 0;\n\t\t\tfor (ctor in foo) {\n\t\t\t\tif (has.call(foo, ctor) && ++len && !has.call(bar, ctor)) return false;\n\t\t\t\tif (!(ctor in bar) || !dequal(foo[ctor], bar[ctor])) return false;\n\t\t\t}\n\t\t\treturn Object.keys(bar).length === len;\n\t\t}\n\t}\n\n\treturn foo !== foo && bar !== bar;\n}\n","function shallow(objA, objB) {\n if (Object.is(objA, objB)) {\n return true;\n }\n if (typeof objA !== \"object\" || objA === null || typeof objB !== \"object\" || objB === null) {\n return false;\n }\n const keysA = Object.keys(objA);\n if (keysA.length !== Object.keys(objB).length) {\n return false;\n }\n for (let i = 0; i < keysA.length; i++) {\n if (!Object.prototype.hasOwnProperty.call(objB, keysA[i]) || !Object.is(objA[keysA[i]], objB[keysA[i]])) {\n return false;\n }\n }\n return true;\n}\n\nexport { shallow as default };\n","var Rule = function Rule(name, fn, args, modifiers) {\n this.name = name;\n this.fn = fn;\n this.args = args;\n this.modifiers = modifiers;\n};\n\nRule.prototype._test = function _test (value) {\n var fn = this.fn;\n\n try {\n testAux(this.modifiers.slice(), fn)(value);\n } catch (ex) {\n fn = function () { return false; };\n }\n\n try {\n return testAux(this.modifiers.slice(), fn)(value);\n } catch (ex$1) {\n return false;\n }\n};\n\nRule.prototype._check = function _check (value) {\n try {\n testAux(this.modifiers.slice(), this.fn)(value);\n } catch (ex) {\n if (testAux(this.modifiers.slice(), function (it) { return it; })(false)) {\n return;\n }\n }\n\n if (!testAux(this.modifiers.slice(), this.fn)(value)) {\n throw null;\n }\n};\n\nRule.prototype._testAsync = function _testAsync (value) {\n var this$1 = this;\n\n return new Promise(function (resolve, reject) {\n testAsyncAux(\n this$1.modifiers.slice(),\n this$1.fn\n )(value)\n .then(function (valid) {\n if (valid) {\n resolve(value);\n } else {\n reject(null);\n }\n })\n .catch(function (ex) { return reject(ex); });\n });\n};\n\nfunction pickFn(fn, variant) {\n if ( variant === void 0 ) variant = 'simple';\n\n return typeof fn === 'object' ? fn[variant] : fn;\n}\n\nfunction testAux(modifiers, fn) {\n if (modifiers.length) {\n var modifier = modifiers.shift();\n var nextFn = testAux(modifiers, fn);\n return modifier.perform(nextFn);\n } else {\n return pickFn(fn);\n }\n}\n\nfunction testAsyncAux(modifiers, fn) {\n if (modifiers.length) {\n var modifier = modifiers.shift();\n var nextFn = testAsyncAux(modifiers, fn);\n return modifier.performAsync(nextFn);\n } else {\n return function (value) { return Promise.resolve(pickFn(fn, 'async')(value)); };\n }\n}\n\nvar Modifier = function Modifier(name, perform, performAsync) {\n this.name = name;\n this.perform = perform;\n this.performAsync = performAsync;\n};\n\nvar ValidationError = /*@__PURE__*/(function (Error) {\n function ValidationError(rule, value, cause, target) {\n var remaining = [], len = arguments.length - 4;\n while ( len-- > 0 ) remaining[ len ] = arguments[ len + 4 ];\n\n Error.call(this, remaining);\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, ValidationError);\n }\n this.rule = rule;\n this.value = value;\n this.cause = cause;\n this.target = target;\n }\n\n if ( Error ) ValidationError.__proto__ = Error;\n ValidationError.prototype = Object.create( Error && Error.prototype );\n ValidationError.prototype.constructor = ValidationError;\n\n return ValidationError;\n}(Error));\n\nvar Context = function Context(chain, nextRuleModifiers) {\n if ( chain === void 0 ) chain = [];\n if ( nextRuleModifiers === void 0 ) nextRuleModifiers = [];\n\n this.chain = chain;\n this.nextRuleModifiers = nextRuleModifiers;\n};\n\nContext.prototype._applyRule = function _applyRule (ruleFn, name) {\n var this$1 = this;\n\n return function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n this$1.chain.push(\n new Rule(name, ruleFn.apply(this$1, args), args, this$1.nextRuleModifiers)\n );\n this$1.nextRuleModifiers = [];\n return this$1;\n };\n};\n\nContext.prototype._applyModifier = function _applyModifier (modifier, name) {\n this.nextRuleModifiers.push(\n new Modifier(name, modifier.simple, modifier.async)\n );\n return this;\n};\n\nContext.prototype._clone = function _clone () {\n return new Context(this.chain.slice(), this.nextRuleModifiers.slice());\n};\n\nContext.prototype.test = function test (value) {\n return this.chain.every(function (rule) { return rule._test(value); });\n};\n\nContext.prototype.testAll = function testAll (value) {\n var err = [];\n this.chain.forEach(function (rule) {\n try {\n rule._check(value);\n } catch (ex) {\n err.push(new ValidationError(rule, value, ex));\n }\n });\n return err;\n};\n\nContext.prototype.check = function check (value) {\n this.chain.forEach(function (rule) {\n try {\n rule._check(value);\n } catch (ex) {\n throw new ValidationError(rule, value, ex);\n }\n });\n};\n\nContext.prototype.testAsync = function testAsync (value) {\n var this$1 = this;\n\n return new Promise(function (resolve, reject) {\n executeAsyncRules(value, this$1.chain.slice(), resolve, reject);\n });\n};\n\nfunction executeAsyncRules(value, rules, resolve, reject) {\n if (rules.length) {\n var rule = rules.shift();\n rule._testAsync(value).then(\n function () {\n executeAsyncRules(value, rules, resolve, reject);\n },\n function (cause) {\n reject(new ValidationError(rule, value, cause));\n }\n );\n } else {\n resolve(value);\n }\n}\n\nfunction v8n() {\n return typeof Proxy !== undefined\n ? proxyContext(new Context())\n : proxylessContext(new Context());\n}\n\n// Custom rules\nvar customRules = {};\n\nv8n.extend = function(newRules) {\n Object.assign(customRules, newRules);\n};\n\nv8n.clearCustomRules = function() {\n customRules = {};\n};\n\nfunction proxyContext(context) {\n return new Proxy(context, {\n get: function get(obj, prop) {\n if (prop in obj) {\n return obj[prop];\n }\n\n var newContext = proxyContext(context._clone());\n\n if (prop in availableModifiers) {\n return newContext._applyModifier(availableModifiers[prop], prop);\n }\n if (prop in customRules) {\n return newContext._applyRule(customRules[prop], prop);\n }\n if (prop in availableRules) {\n return newContext._applyRule(availableRules[prop], prop);\n }\n },\n });\n}\n\nfunction proxylessContext(context) {\n var addRuleSet = function (ruleSet, targetContext) {\n Object.keys(ruleSet).forEach(function (prop) {\n targetContext[prop] = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n var newContext = proxylessContext(targetContext._clone());\n var contextWithRuleApplied = newContext._applyRule(\n ruleSet[prop],\n prop\n ).apply(void 0, args);\n return contextWithRuleApplied;\n };\n });\n return targetContext;\n };\n\n var contextWithAvailableRules = addRuleSet(availableRules, context);\n var contextWithAllRules = addRuleSet(\n customRules,\n contextWithAvailableRules\n );\n\n Object.keys(availableModifiers).forEach(function (prop) {\n Object.defineProperty(contextWithAllRules, prop, {\n get: function () {\n var newContext = proxylessContext(contextWithAllRules._clone());\n return newContext._applyModifier(availableModifiers[prop], prop);\n }\n });\n });\n\n return contextWithAllRules;\n}\n\nvar availableModifiers = {\n not: {\n simple: function (fn) { return function (value) { return !fn(value); }; },\n async: function (fn) { return function (value) { return Promise.resolve(fn(value))\n .then(function (result) { return !result; })\n .catch(function () { return true; }); }; },\n },\n\n some: {\n simple: function (fn) { return function (value) {\n return split(value).some(function (item) {\n try {\n return fn(item);\n } catch (ex) {\n return false;\n }\n });\n }; },\n async: function (fn) { return function (value) {\n return Promise.all(\n split(value).map(function (item) {\n try {\n return fn(item).catch(function () { return false; });\n } catch (ex) {\n return false;\n }\n })\n ).then(function (result) { return result.some(Boolean); });\n }; },\n },\n\n every: {\n simple: function (fn) { return function (value) { return value !== false && split(value).every(fn); }; },\n async: function (fn) { return function (value) { return Promise.all(split(value).map(fn)).then(function (result) { return result.every(Boolean); }); }; },\n },\n};\n\nfunction split(value) {\n if (typeof value === 'string') {\n return value.split('');\n }\n return value;\n}\n\nvar availableRules = {\n // Value\n\n equal: function (expected) { return function (value) { return value == expected; }; },\n\n exact: function (expected) { return function (value) { return value === expected; }; },\n\n // Types\n\n number: function (allowInfinite) {\n if ( allowInfinite === void 0 ) allowInfinite = true;\n\n return function (value) { return typeof value === 'number' && (allowInfinite || isFinite(value)); };\n},\n\n integer: function () { return function (value) {\n var isInteger = Number.isInteger || isIntegerPolyfill;\n return isInteger(value);\n }; },\n\n numeric: function () { return function (value) { return !isNaN(parseFloat(value)) && isFinite(value); }; },\n\n string: function () { return testType('string'); },\n\n boolean: function () { return testType('boolean'); },\n\n undefined: function () { return testType('undefined'); },\n\n null: function () { return testType('null'); },\n\n array: function () { return testType('array'); },\n\n object: function () { return testType('object'); },\n\n instanceOf: function (instance) { return function (value) { return value instanceof instance; }; },\n\n // Pattern\n\n pattern: function (expected) { return function (value) { return expected.test(value); }; },\n\n lowercase: function () { return function (value) { return /^([a-z]+\\s*)+$/.test(value); }; },\n\n uppercase: function () { return function (value) { return /^([A-Z]+\\s*)+$/.test(value); }; },\n\n vowel: function () { return function (value) { return /^[aeiou]+$/i.test(value); }; },\n\n consonant: function () { return function (value) { return /^(?=[^aeiou])([a-z]+)$/i.test(value); }; },\n\n // Value at\n\n first: function (expected) { return function (value) { return value[0] == expected; }; },\n\n last: function (expected) { return function (value) { return value[value.length - 1] == expected; }; },\n\n // Length\n\n empty: function () { return function (value) { return value.length === 0; }; },\n\n length: function (min, max) { return function (value) { return value.length >= min && value.length <= (max || min); }; },\n\n minLength: function (min) { return function (value) { return value.length >= min; }; },\n\n maxLength: function (max) { return function (value) { return value.length <= max; }; },\n\n // Range\n\n negative: function () { return function (value) { return value < 0; }; },\n\n positive: function () { return function (value) { return value >= 0; }; },\n\n between: function (a, b) { return function (value) { return value >= a && value <= b; }; },\n\n range: function (a, b) { return function (value) { return value >= a && value <= b; }; },\n\n lessThan: function (n) { return function (value) { return value < n; }; },\n\n lessThanOrEqual: function (n) { return function (value) { return value <= n; }; },\n\n greaterThan: function (n) { return function (value) { return value > n; }; },\n\n greaterThanOrEqual: function (n) { return function (value) { return value >= n; }; },\n\n // Divisible\n\n even: function () { return function (value) { return value % 2 === 0; }; },\n\n odd: function () { return function (value) { return value % 2 !== 0; }; },\n\n includes: function (expected) { return function (value) { return ~value.indexOf(expected); }; },\n\n schema: function (schema) { return testSchema(schema); },\n\n // branching\n\n passesAnyOf: function () {\n var validations = [], len = arguments.length;\n while ( len-- ) validations[ len ] = arguments[ len ];\n\n return function (value) { return validations.some(function (validation) { return validation.test(value); }); };\n},\n\n optional: function (validation, considerTrimmedEmptyString) {\n if ( considerTrimmedEmptyString === void 0 ) considerTrimmedEmptyString = false;\n\n return function (value) {\n if (\n considerTrimmedEmptyString &&\n typeof value === 'string' &&\n value.trim() === ''\n ) {\n return true;\n }\n\n if (value !== undefined && value !== null) { validation.check(value); }\n return true;\n };\n},\n};\n\nfunction testType(expected) {\n return function (value) {\n return (\n (Array.isArray(value) && expected === 'array') ||\n (value === null && expected === 'null') ||\n typeof value === expected\n );\n };\n}\n\nfunction isIntegerPolyfill(value) {\n return (\n typeof value === 'number' && isFinite(value) && Math.floor(value) === value\n );\n}\n\nfunction testSchema(schema) {\n return {\n simple: function (value) {\n var causes = [];\n Object.keys(schema).forEach(function (key) {\n var nestedValidation = schema[key];\n try {\n nestedValidation.check((value || {})[key]);\n } catch (ex) {\n ex.target = key;\n causes.push(ex);\n }\n });\n if (causes.length > 0) {\n throw causes;\n }\n return true;\n },\n async: function (value) {\n var causes = [];\n var nested = Object.keys(schema).map(function (key) {\n var nestedValidation = schema[key];\n return nestedValidation.testAsync((value || {})[key]).catch(function (ex) {\n ex.target = key;\n causes.push(ex);\n });\n });\n return Promise.all(nested).then(function () {\n if (causes.length > 0) {\n throw causes;\n }\n\n return true;\n });\n },\n };\n}\n\nexport default v8n;\n","var e=\"colors\",t=\"sizes\",r=\"space\",n={gap:r,gridGap:r,columnGap:r,gridColumnGap:r,rowGap:r,gridRowGap:r,inset:r,insetBlock:r,insetBlockEnd:r,insetBlockStart:r,insetInline:r,insetInlineEnd:r,insetInlineStart:r,margin:r,marginTop:r,marginRight:r,marginBottom:r,marginLeft:r,marginBlock:r,marginBlockEnd:r,marginBlockStart:r,marginInline:r,marginInlineEnd:r,marginInlineStart:r,padding:r,paddingTop:r,paddingRight:r,paddingBottom:r,paddingLeft:r,paddingBlock:r,paddingBlockEnd:r,paddingBlockStart:r,paddingInline:r,paddingInlineEnd:r,paddingInlineStart:r,top:r,right:r,bottom:r,left:r,scrollMargin:r,scrollMarginTop:r,scrollMarginRight:r,scrollMarginBottom:r,scrollMarginLeft:r,scrollMarginX:r,scrollMarginY:r,scrollMarginBlock:r,scrollMarginBlockEnd:r,scrollMarginBlockStart:r,scrollMarginInline:r,scrollMarginInlineEnd:r,scrollMarginInlineStart:r,scrollPadding:r,scrollPaddingTop:r,scrollPaddingRight:r,scrollPaddingBottom:r,scrollPaddingLeft:r,scrollPaddingX:r,scrollPaddingY:r,scrollPaddingBlock:r,scrollPaddingBlockEnd:r,scrollPaddingBlockStart:r,scrollPaddingInline:r,scrollPaddingInlineEnd:r,scrollPaddingInlineStart:r,fontSize:\"fontSizes\",background:e,backgroundColor:e,backgroundImage:e,borderImage:e,border:e,borderBlock:e,borderBlockEnd:e,borderBlockStart:e,borderBottom:e,borderBottomColor:e,borderColor:e,borderInline:e,borderInlineEnd:e,borderInlineStart:e,borderLeft:e,borderLeftColor:e,borderRight:e,borderRightColor:e,borderTop:e,borderTopColor:e,caretColor:e,color:e,columnRuleColor:e,fill:e,outline:e,outlineColor:e,stroke:e,textDecorationColor:e,fontFamily:\"fonts\",fontWeight:\"fontWeights\",lineHeight:\"lineHeights\",letterSpacing:\"letterSpacings\",blockSize:t,minBlockSize:t,maxBlockSize:t,inlineSize:t,minInlineSize:t,maxInlineSize:t,width:t,minWidth:t,maxWidth:t,height:t,minHeight:t,maxHeight:t,flexBasis:t,gridTemplateColumns:t,gridTemplateRows:t,borderWidth:\"borderWidths\",borderTopWidth:\"borderWidths\",borderRightWidth:\"borderWidths\",borderBottomWidth:\"borderWidths\",borderLeftWidth:\"borderWidths\",borderStyle:\"borderStyles\",borderTopStyle:\"borderStyles\",borderRightStyle:\"borderStyles\",borderBottomStyle:\"borderStyles\",borderLeftStyle:\"borderStyles\",borderRadius:\"radii\",borderTopLeftRadius:\"radii\",borderTopRightRadius:\"radii\",borderBottomRightRadius:\"radii\",borderBottomLeftRadius:\"radii\",boxShadow:\"shadows\",textShadow:\"shadows\",transition:\"transitions\",zIndex:\"zIndices\"},i=(e,t)=>\"function\"==typeof t?{\"()\":Function.prototype.toString.call(t)}:t,o=()=>{const e=Object.create(null);return(t,r,...n)=>{const o=(e=>JSON.stringify(e,i))(t);return o in e?e[o]:e[o]=r(t,...n)}},l=Symbol.for(\"sxs.internal\"),s=(e,t)=>Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)),a=e=>{for(const t in e)return!0;return!1},{hasOwnProperty:c}=Object.prototype,d=e=>e.includes(\"-\")?e:e.replace(/[A-Z]/g,(e=>\"-\"+e.toLowerCase())),g=/\\s+(?![^()]*\\))/,p=e=>t=>e(...\"string\"==typeof t?String(t).split(g):[t]),u={appearance:e=>({WebkitAppearance:e,appearance:e}),backfaceVisibility:e=>({WebkitBackfaceVisibility:e,backfaceVisibility:e}),backdropFilter:e=>({WebkitBackdropFilter:e,backdropFilter:e}),backgroundClip:e=>({WebkitBackgroundClip:e,backgroundClip:e}),boxDecorationBreak:e=>({WebkitBoxDecorationBreak:e,boxDecorationBreak:e}),clipPath:e=>({WebkitClipPath:e,clipPath:e}),content:e=>({content:e.includes('\"')||e.includes(\"'\")||/^([A-Za-z]+\\([^]*|[^]*-quote|inherit|initial|none|normal|revert|unset)$/.test(e)?e:`\"${e}\"`}),hyphens:e=>({WebkitHyphens:e,hyphens:e}),maskImage:e=>({WebkitMaskImage:e,maskImage:e}),maskSize:e=>({WebkitMaskSize:e,maskSize:e}),tabSize:e=>({MozTabSize:e,tabSize:e}),textSizeAdjust:e=>({WebkitTextSizeAdjust:e,textSizeAdjust:e}),userSelect:e=>({WebkitUserSelect:e,userSelect:e}),marginBlock:p(((e,t)=>({marginBlockStart:e,marginBlockEnd:t||e}))),marginInline:p(((e,t)=>({marginInlineStart:e,marginInlineEnd:t||e}))),maxSize:p(((e,t)=>({maxBlockSize:e,maxInlineSize:t||e}))),minSize:p(((e,t)=>({minBlockSize:e,minInlineSize:t||e}))),paddingBlock:p(((e,t)=>({paddingBlockStart:e,paddingBlockEnd:t||e}))),paddingInline:p(((e,t)=>({paddingInlineStart:e,paddingInlineEnd:t||e})))},h=/([\\d.]+)([^]*)/,f=(e,t)=>e.length?e.reduce(((e,r)=>(e.push(...t.map((e=>e.includes(\"&\")?e.replace(/&/g,/[ +>|~]/.test(r)&&/&.*&/.test(e)?`:is(${r})`:r):r+\" \"+e))),e)),[]):t,m=(e,t)=>e in b&&\"string\"==typeof t?t.replace(/^((?:[^]*[^\\w-])?)(fit-content|stretch)((?:[^\\w-][^]*)?)$/,((t,r,n,i)=>r+(\"stretch\"===n?`-moz-available${i};${d(e)}:${r}-webkit-fill-available`:`-moz-fit-content${i};${d(e)}:${r}fit-content`)+i)):String(t),b={blockSize:1,height:1,inlineSize:1,maxBlockSize:1,maxHeight:1,maxInlineSize:1,maxWidth:1,minBlockSize:1,minHeight:1,minInlineSize:1,minWidth:1,width:1},S=e=>e?e+\"-\":\"\",k=(e,t,r)=>e.replace(/([+-])?((?:\\d+(?:\\.\\d*)?|\\.\\d+)(?:[Ee][+-]?\\d+)?)?(\\$|--)([$\\w-]+)/g,((e,n,i,o,l)=>\"$\"==o==!!i?e:(n||\"--\"==o?\"calc(\":\"\")+\"var(--\"+(\"$\"===o?S(t)+(l.includes(\"$\")?\"\":S(r))+l.replace(/\\$/g,\"-\"):l)+\")\"+(n||\"--\"==o?\"*\"+(n||\"\")+(i||\"1\")+\")\":\"\"))),y=/\\s*,\\s*(?![^()]*\\))/,B=Object.prototype.toString,$=(e,t,r,n,i)=>{let o,l,s;const a=(e,t,r)=>{let c,g;const p=e=>{for(c in e){const R=64===c.charCodeAt(0),z=R&&Array.isArray(e[c])?e[c]:[e[c]];for(g of z){const e=/[A-Z]/.test($=c)?$:$.replace(/-[^]/g,(e=>e[1].toUpperCase())),z=\"object\"==typeof g&&g&&g.toString===B&&(!n.utils[e]||!t.length);if(e in n.utils&&!z){const t=n.utils[e];if(t!==l){l=t,p(t(g)),l=null;continue}}else if(e in u){const t=u[e];if(t!==s){s=t,p(t(g)),s=null;continue}}if(R&&(b=c.slice(1)in n.media?\"@media \"+n.media[c.slice(1)]:c,c=b.replace(/\\(\\s*([\\w-]+)\\s*(=|<|<=|>|>=)\\s*([\\w-]+)\\s*(?:(<|<=|>|>=)\\s*([\\w-]+)\\s*)?\\)/g,((e,t,r,n,i,o)=>{const l=h.test(t),s=.0625*(l?-1:1),[a,c]=l?[n,t]:[t,n];return\"(\"+(\"=\"===r[0]?\"\":\">\"===r[0]===l?\"max-\":\"min-\")+a+\":\"+(\"=\"!==r[0]&&1===r.length?c.replace(h,((e,t,n)=>Number(t)+s*(\">\"===r?1:-1)+n)):c)+(i?\") and (\"+(\">\"===i[0]?\"min-\":\"max-\")+a+\":\"+(1===i.length?o.replace(h,((e,t,r)=>Number(t)+s*(\">\"===i?-1:1)+r)):o):\"\")+\")\"}))),z){const e=R?r.concat(c):[...r],n=R?[...t]:f(t,c.split(y));void 0!==o&&i(x(...o)),o=void 0,a(g,n,e)}else void 0===o&&(o=[[],t,r]),c=R||36!==c.charCodeAt(0)?c:`--${S(n.prefix)}${c.slice(1).replace(/\\$/g,\"-\")}`,g=z?g:\"number\"==typeof g?g&&e in I?String(g)+\"px\":String(g):k(m(e,null==g?\"\":g),n.prefix,n.themeMap[e]),o[0].push(`${R?`${c} `:`${d(c)}:`}${g}`)}}var b,$};p(e),void 0!==o&&i(x(...o)),o=void 0};a(e,t,r)},x=(e,t,r)=>`${r.map((e=>`${e}{`)).join(\"\")}${t.length?`${t.join(\",\")}{`:\"\"}${e.join(\";\")}${t.length?\"}\":\"\"}${Array(r.length?r.length+1:0).join(\"}\")}`,I={animationDelay:1,animationDuration:1,backgroundSize:1,blockSize:1,border:1,borderBlock:1,borderBlockEnd:1,borderBlockEndWidth:1,borderBlockStart:1,borderBlockStartWidth:1,borderBlockWidth:1,borderBottom:1,borderBottomLeftRadius:1,borderBottomRightRadius:1,borderBottomWidth:1,borderEndEndRadius:1,borderEndStartRadius:1,borderInlineEnd:1,borderInlineEndWidth:1,borderInlineStart:1,borderInlineStartWidth:1,borderInlineWidth:1,borderLeft:1,borderLeftWidth:1,borderRadius:1,borderRight:1,borderRightWidth:1,borderSpacing:1,borderStartEndRadius:1,borderStartStartRadius:1,borderTop:1,borderTopLeftRadius:1,borderTopRightRadius:1,borderTopWidth:1,borderWidth:1,bottom:1,columnGap:1,columnRule:1,columnRuleWidth:1,columnWidth:1,containIntrinsicSize:1,flexBasis:1,fontSize:1,gap:1,gridAutoColumns:1,gridAutoRows:1,gridTemplateColumns:1,gridTemplateRows:1,height:1,inlineSize:1,inset:1,insetBlock:1,insetBlockEnd:1,insetBlockStart:1,insetInline:1,insetInlineEnd:1,insetInlineStart:1,left:1,letterSpacing:1,margin:1,marginBlock:1,marginBlockEnd:1,marginBlockStart:1,marginBottom:1,marginInline:1,marginInlineEnd:1,marginInlineStart:1,marginLeft:1,marginRight:1,marginTop:1,maxBlockSize:1,maxHeight:1,maxInlineSize:1,maxWidth:1,minBlockSize:1,minHeight:1,minInlineSize:1,minWidth:1,offsetDistance:1,offsetRotate:1,outline:1,outlineOffset:1,outlineWidth:1,overflowClipMargin:1,padding:1,paddingBlock:1,paddingBlockEnd:1,paddingBlockStart:1,paddingBottom:1,paddingInline:1,paddingInlineEnd:1,paddingInlineStart:1,paddingLeft:1,paddingRight:1,paddingTop:1,perspective:1,right:1,rowGap:1,scrollMargin:1,scrollMarginBlock:1,scrollMarginBlockEnd:1,scrollMarginBlockStart:1,scrollMarginBottom:1,scrollMarginInline:1,scrollMarginInlineEnd:1,scrollMarginInlineStart:1,scrollMarginLeft:1,scrollMarginRight:1,scrollMarginTop:1,scrollPadding:1,scrollPaddingBlock:1,scrollPaddingBlockEnd:1,scrollPaddingBlockStart:1,scrollPaddingBottom:1,scrollPaddingInline:1,scrollPaddingInlineEnd:1,scrollPaddingInlineStart:1,scrollPaddingLeft:1,scrollPaddingRight:1,scrollPaddingTop:1,shapeMargin:1,textDecoration:1,textDecorationThickness:1,textIndent:1,textUnderlineOffset:1,top:1,transitionDelay:1,transitionDuration:1,verticalAlign:1,width:1,wordSpacing:1},R=e=>String.fromCharCode(e+(e>25?39:97)),z=e=>(e=>{let t,r=\"\";for(t=Math.abs(e);t>52;t=t/52|0)r=R(t%52)+r;return R(t%52)+r})(((e,t)=>{let r=t.length;for(;r;)e=33*e^t.charCodeAt(--r);return e})(5381,JSON.stringify(e))>>>0),W=[\"themed\",\"global\",\"styled\",\"onevar\",\"resonevar\",\"allvar\",\"inline\"],j=e=>{if(e.href&&!e.href.startsWith(location.origin))return!1;try{return!!e.cssRules}catch(e){return!1}},E=e=>{let t;const r=()=>{const{cssRules:e}=t.sheet;return[].map.call(e,((r,n)=>{const{cssText:i}=r;let o=\"\";if(i.startsWith(\"--sxs\"))return\"\";if(e[n-1]&&(o=e[n-1].cssText).startsWith(\"--sxs\")){if(!r.cssRules.length)return\"\";for(const e in t.rules)if(t.rules[e].group===r)return`--sxs{--sxs:${[...t.rules[e].cache].join(\" \")}}${i}`;return r.cssRules.length?`${o}${i}`:\"\"}return i})).join(\"\")},n=()=>{if(t){const{rules:e,sheet:r}=t;if(!r.deleteRule){for(;3===Object(Object(r.cssRules)[0]).type;)r.cssRules.splice(0,1);r.cssRules=[]}for(const t in e)delete e[t]}const i=Object(e).styleSheets||[];for(const e of i)if(j(e)){for(let i=0,o=e.cssRules;o[i];++i){const l=Object(o[i]);if(1!==l.type)continue;const s=Object(o[i+1]);if(4!==s.type)continue;++i;const{cssText:a}=l;if(!a.startsWith(\"--sxs\"))continue;const c=a.slice(14,-3).trim().split(/\\s+/),d=W[c[0]];d&&(t||(t={sheet:e,reset:n,rules:{},toString:r}),t.rules[d]={group:s,index:i,cache:new Set(c)})}if(t)break}if(!t){const i=(e,t)=>({type:t,cssRules:[],insertRule(e,t){this.cssRules.splice(t,0,i(e,{import:3,undefined:1}[(e.toLowerCase().match(/^@([a-z]+)/)||[])[1]]||4))},get cssText(){return\"@media{}\"===e?`@media{${[].map.call(this.cssRules,(e=>e.cssText)).join(\"\")}}`:e}});t={sheet:e?(e.head||e).appendChild(document.createElement(\"style\")).sheet:i(\"\",\"text/css\"),rules:{},reset:n,toString:r}}const{sheet:o,rules:l}=t;for(let e=W.length-1;e>=0;--e){const t=W[e];if(!l[t]){const r=W[e+1],n=l[r]?l[r].index:o.cssRules.length;o.insertRule(\"@media{}\",n),o.insertRule(`--sxs{--sxs:${e}}`,n),l[t]={group:o.cssRules[n+1],index:n,cache:new Set([e])}}v(l[t])}};return n(),t},v=e=>{const t=e.group;let r=t.cssRules.length;e.apply=e=>{try{t.insertRule(e,r),++r}catch(e){}}},T=Symbol(),w=o(),M=(e,t)=>w(e,(()=>(...r)=>{let n={type:null,composers:new Set};for(const t of r)if(null!=t)if(t[l]){null==n.type&&(n.type=t[l].type);for(const e of t[l].composers)n.composers.add(e)}else t.constructor!==Object||t.$$typeof?null==n.type&&(n.type=t):n.composers.add(C(t,e));return null==n.type&&(n.type=\"span\"),n.composers.size||n.composers.add([\"PJLV\",{},[],[],{},[]]),P(e,n,t)})),C=({variants:e,compoundVariants:t,defaultVariants:r,...n},i)=>{const o=`${S(i.prefix)}c-${z(n)}`,l=[],s=[],d=Object.create(null),g=[];for(const e in r)d[e]=String(r[e]);if(\"object\"==typeof e&&e)for(const t in e){p=d,u=t,c.call(p,u)||(d[t]=\"undefined\");const r=e[t];for(const e in r){const n={[t]:String(e)};\"undefined\"===String(e)&&g.push(t);const i=r[e],o=[n,i,!a(i)];l.push(o)}}var p,u;if(\"object\"==typeof t&&t)for(const e of t){let{css:t,...r}=e;t=\"object\"==typeof t&&t||{};for(const e in r)r[e]=String(r[e]);const n=[r,t,!a(t)];s.push(n)}return[o,n,l,s,d,g]},P=(e,t,r)=>{const[n,i,o,a]=L(t.composers),c=\"function\"==typeof t.type||t.type.$$typeof?(e=>{function t(){for(let r=0;rt.rules[e]={apply:r=>t[T].push([e,r])})),t})(r):null,d=(c||r).rules,g=`.${n}${i.length>1?`:where(.${i.slice(1).join(\".\")})`:\"\"}`,p=l=>{l=\"object\"==typeof l&&l||A;const{css:s,...p}=l,u={};for(const e in o)if(delete p[e],e in l){let t=l[e];\"object\"==typeof t&&t?u[e]={\"@initial\":o[e],...t}:(t=String(t),u[e]=\"undefined\"!==t||a.has(e)?t:o[e])}else u[e]=o[e];const h=new Set([...i]);for(const[n,i,o,l]of t.composers){r.rules.styled.cache.has(n)||(r.rules.styled.cache.add(n),$(i,[`.${n}`],[],e,(e=>{d.styled.apply(e)})));const t=O(o,u,e.media),s=O(l,u,e.media,!0);for(const i of t)if(void 0!==i)for(const[t,o,l]of i){const i=`${n}-${z(o)}-${t}`;h.add(i);const s=(l?r.rules.resonevar:r.rules.onevar).cache,a=l?d.resonevar:d.onevar;s.has(i)||(s.add(i),$(o,[`.${i}`],[],e,(e=>{a.apply(e)})))}for(const t of s)if(void 0!==t)for(const[i,o]of t){const t=`${n}-${z(o)}-${i}`;h.add(t),r.rules.allvar.cache.has(t)||(r.rules.allvar.cache.add(t),$(o,[`.${t}`],[],e,(e=>{d.allvar.apply(e)})))}}if(\"object\"==typeof s&&s){const t=`${n}-i${z(s)}-css`;h.add(t),r.rules.inline.cache.has(t)||(r.rules.inline.cache.add(t),$(s,[`.${t}`],[],e,(e=>{d.inline.apply(e)})))}for(const e of String(l.className||\"\").trim().split(/\\s+/))e&&h.add(e);const f=p.className=[...h].join(\" \");return{type:t.type,className:f,selector:g,props:p,toString:()=>f,deferredInjector:c}};return s(p,{className:n,selector:g,[l]:t,toString:()=>(r.rules.styled.cache.has(n)||p(),n)})},L=e=>{let t=\"\";const r=[],n={},i=[];for(const[o,,,,l,s]of e){\"\"===t&&(t=o),r.push(o),i.push(...s);for(const e in l){const t=l[e];(void 0===n[e]||\"undefined\"!==t||s.includes(t))&&(n[e]=t)}}return[t,r,n,new Set(i)]},O=(e,t,r,n)=>{const i=[];e:for(let[o,l,s]of e){if(s)continue;let e,a=0,c=!1;for(e in o){const n=o[e];let i=t[e];if(i!==n){if(\"object\"!=typeof i||!i)continue e;{let e,t,o=0;for(const l in i){if(n===String(i[l])){if(\"@initial\"!==l){const e=l.slice(1);(t=t||[]).push(e in r?r[e]:l.replace(/^@media ?/,\"\")),c=!0}a+=o,e=!0}++o}if(t&&t.length&&(l={[\"@media \"+t.join(\", \")]:l}),!e)continue e}}}(i[a]=i[a]||[]).push([n?\"cv\":`${e}-${o[e]}`,l,c])}return i},A={},N=o(),D=(e,t)=>N(e,(()=>(...r)=>{const n=()=>{for(let n of r){n=\"object\"==typeof n&&n||{};let r=z(n);if(!t.rules.global.cache.has(r)){if(t.rules.global.cache.add(r),\"@import\"in n){let e=[].indexOf.call(t.sheet.cssRules,t.rules.themed.group)-1;for(let r of[].concat(n[\"@import\"]))r=r.includes('\"')||r.includes(\"'\")?r:`\"${r}\"`,t.sheet.insertRule(`@import ${r};`,e++);delete n[\"@import\"]}$(n,[],[],e,(e=>{t.rules.global.apply(e)}))}}return\"\"};return s(n,{toString:n})})),H=o(),V=(e,t)=>H(e,(()=>r=>{const n=`${S(e.prefix)}k-${z(r)}`,i=()=>{if(!t.rules.global.cache.has(n)){t.rules.global.cache.add(n);const i=[];$(r,[],[],e,(e=>i.push(e)));const o=`@keyframes ${n}{${i.join(\"\")}}`;t.rules.global.apply(o)}return n};return s(i,{get name(){return i()},toString:i})})),G=class{constructor(e,t,r,n){this.token=null==e?\"\":String(e),this.value=null==t?\"\":String(t),this.scale=null==r?\"\":String(r),this.prefix=null==n?\"\":String(n)}get computedValue(){return\"var(\"+this.variable+\")\"}get variable(){return\"--\"+S(this.prefix)+S(this.scale)+this.token}toString(){return this.computedValue}},F=o(),J=(e,t)=>F(e,(()=>(r,n)=>{n=\"object\"==typeof r&&r||Object(n);const i=`.${r=(r=\"string\"==typeof r?r:\"\")||`${S(e.prefix)}t-${z(n)}`}`,o={},l=[];for(const t in n){o[t]={};for(const r in n[t]){const i=`--${S(e.prefix)}${t}-${r}`,s=k(String(n[t][r]),e.prefix,t);o[t][r]=new G(r,s,t,e.prefix),l.push(`${i}:${s}`)}}const s=()=>{if(l.length&&!t.rules.themed.cache.has(r)){t.rules.themed.cache.add(r);const i=`${n===e.theme?\":root,\":\"\"}.${r}{${l.join(\";\")}}`;t.rules.themed.apply(i)}return r};return{...o,get className(){return s()},selector:i,toString:s}})),U=o();import Z from\"react\";var X,Y=o(),q=e=>{const t=(e=>{let t=!1;const r=U(e,(e=>{t=!0;const r=\"prefix\"in(e=\"object\"==typeof e&&e||{})?String(e.prefix):\"\",i=\"object\"==typeof e.media&&e.media||{},o=\"object\"==typeof e.root?e.root||null:globalThis.document||null,l=\"object\"==typeof e.theme&&e.theme||{},s={prefix:r,media:i,theme:l,themeMap:\"object\"==typeof e.themeMap&&e.themeMap||{...n},utils:\"object\"==typeof e.utils&&e.utils||{}},a=E(o),c={css:M(s,a),globalCss:D(s,a),keyframes:V(s,a),createTheme:J(s,a),reset(){a.reset(),c.theme.toString()},theme:{},sheet:a,config:s,prefix:r,getCssText:a.toString,toString:a.toString};return String(c.theme=c.createTheme(l)),c}));return t||r.reset(),r})(e);return t.styled=(({config:e,sheet:t})=>Y(e,(()=>{const r=M(e,t);return(...e)=>{const t=r(...e),n=t[l].type,i=Z.forwardRef(((e,r)=>{const i=e&&e.as||n,{props:o,deferredInjector:l}=t(e);return delete o.as,o.ref=r,l?Z.createElement(Z.Fragment,null,Z.createElement(i,o),Z.createElement(l,null)):Z.createElement(i,o)}));return i.className=t.className,i.displayName=`Styled.${n.displayName||n.name||n}`,i.selector=t.selector,i.toString=()=>t.selector,i[l]=t[l],i}})))(t),t},K=()=>X||(X=q()),Q=(...e)=>K().createTheme(...e),_=(...e)=>K().globalCss(...e),ee=(...e)=>K().keyframes(...e),te=(...e)=>K().css(...e),re=(...e)=>K().styled(...e);export{q as createStitches,Q as createTheme,te as css,n as defaultThemeMap,_ as globalCss,ee as keyframes,re as styled};\n//# sourceMappingUrl=index.map","function clamp(v, min, max) {\n return Math.max(min, Math.min(v, max));\n}\nconst V = {\n toVector(v, fallback) {\n if (v === undefined) v = fallback;\n return Array.isArray(v) ? v : [v, v];\n },\n\n add(v1, v2) {\n return [v1[0] + v2[0], v1[1] + v2[1]];\n },\n\n sub(v1, v2) {\n return [v1[0] - v2[0], v1[1] - v2[1]];\n },\n\n addTo(v1, v2) {\n v1[0] += v2[0];\n v1[1] += v2[1];\n },\n\n subTo(v1, v2) {\n v1[0] -= v2[0];\n v1[1] -= v2[1];\n }\n\n};\n\nfunction rubberband(distance, dimension, constant) {\n if (dimension === 0 || Math.abs(dimension) === Infinity) return Math.pow(distance, constant * 5);\n return distance * dimension * constant / (dimension + constant * distance);\n}\n\nfunction rubberbandIfOutOfBounds(position, min, max, constant = 0.15) {\n if (constant === 0) return clamp(position, min, max);\n if (position < min) return -rubberband(min - position, max - min, constant) + min;\n if (position > max) return +rubberband(position - max, max - min, constant) + max;\n return position;\n}\nfunction computeRubberband(bounds, [Vx, Vy], [Rx, Ry]) {\n const [[X0, X1], [Y0, Y1]] = bounds;\n return [rubberbandIfOutOfBounds(Vx, X0, X1, Rx), rubberbandIfOutOfBounds(Vy, Y0, Y1, Ry)];\n}\n\nexport { V, computeRubberband as c, rubberbandIfOutOfBounds as r };\n","import { V, c as computeRubberband } from './maths-b2a210f4.esm.js';\n\nfunction _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n\nfunction ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n enumerableOnly && (symbols = symbols.filter(function (sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n })), keys.push.apply(keys, symbols);\n }\n\n return keys;\n}\n\nfunction _objectSpread2(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = null != arguments[i] ? arguments[i] : {};\n i % 2 ? ownKeys(Object(source), !0).forEach(function (key) {\n _defineProperty(target, key, source[key]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n\n return target;\n}\n\nconst EVENT_TYPE_MAP = {\n pointer: {\n start: 'down',\n change: 'move',\n end: 'up'\n },\n mouse: {\n start: 'down',\n change: 'move',\n end: 'up'\n },\n touch: {\n start: 'start',\n change: 'move',\n end: 'end'\n },\n gesture: {\n start: 'start',\n change: 'change',\n end: 'end'\n }\n};\n\nfunction capitalize(string) {\n if (!string) return '';\n return string[0].toUpperCase() + string.slice(1);\n}\n\nfunction toHandlerProp(device, action = '', capture = false) {\n const deviceProps = EVENT_TYPE_MAP[device];\n const actionKey = deviceProps ? deviceProps[action] || action : action;\n return 'on' + capitalize(device) + capitalize(actionKey) + (capture ? 'Capture' : '');\n}\nconst pointerCaptureEvents = ['gotpointercapture', 'lostpointercapture'];\nfunction parseProp(prop) {\n let eventKey = prop.substring(2).toLowerCase();\n const passive = !!~eventKey.indexOf('passive');\n if (passive) eventKey = eventKey.replace('passive', '');\n const captureKey = pointerCaptureEvents.includes(eventKey) ? 'capturecapture' : 'capture';\n const capture = !!~eventKey.indexOf(captureKey);\n if (capture) eventKey = eventKey.replace('capture', '');\n return {\n device: eventKey,\n capture,\n passive\n };\n}\nfunction toDomEventType(device, action = '') {\n const deviceProps = EVENT_TYPE_MAP[device];\n const actionKey = deviceProps ? deviceProps[action] || action : action;\n return device + actionKey;\n}\nfunction isTouch(event) {\n return 'touches' in event;\n}\nfunction getPointerType(event) {\n if (isTouch(event)) return 'touch';\n if ('pointerType' in event) return event.pointerType;\n return 'mouse';\n}\n\nfunction getCurrentTargetTouchList(event) {\n return Array.from(event.touches).filter(e => {\n var _event$currentTarget, _event$currentTarget$;\n\n return e.target === event.currentTarget || ((_event$currentTarget = event.currentTarget) === null || _event$currentTarget === void 0 ? void 0 : (_event$currentTarget$ = _event$currentTarget.contains) === null || _event$currentTarget$ === void 0 ? void 0 : _event$currentTarget$.call(_event$currentTarget, e.target));\n });\n}\n\nfunction getTouchList(event) {\n return event.type === 'touchend' || event.type === 'touchcancel' ? event.changedTouches : event.targetTouches;\n}\n\nfunction getValueEvent(event) {\n return isTouch(event) ? getTouchList(event)[0] : event;\n}\n\nfunction distanceAngle(P1, P2) {\n const dx = P2.clientX - P1.clientX;\n const dy = P2.clientY - P1.clientY;\n const cx = (P2.clientX + P1.clientX) / 2;\n const cy = (P2.clientY + P1.clientY) / 2;\n const distance = Math.hypot(dx, dy);\n const angle = -(Math.atan2(dx, dy) * 180) / Math.PI;\n const origin = [cx, cy];\n return {\n angle,\n distance,\n origin\n };\n}\nfunction touchIds(event) {\n return getCurrentTargetTouchList(event).map(touch => touch.identifier);\n}\nfunction touchDistanceAngle(event, ids) {\n const [P1, P2] = Array.from(event.touches).filter(touch => ids.includes(touch.identifier));\n return distanceAngle(P1, P2);\n}\nfunction pointerId(event) {\n const valueEvent = getValueEvent(event);\n return isTouch(event) ? valueEvent.identifier : valueEvent.pointerId;\n}\nfunction pointerValues(event) {\n const valueEvent = getValueEvent(event);\n return [valueEvent.clientX, valueEvent.clientY];\n}\nconst LINE_HEIGHT = 40;\nconst PAGE_HEIGHT = 800;\nfunction wheelValues(event) {\n let {\n deltaX,\n deltaY,\n deltaMode\n } = event;\n\n if (deltaMode === 1) {\n deltaX *= LINE_HEIGHT;\n deltaY *= LINE_HEIGHT;\n } else if (deltaMode === 2) {\n deltaX *= PAGE_HEIGHT;\n deltaY *= PAGE_HEIGHT;\n }\n\n return [deltaX, deltaY];\n}\nfunction scrollValues(event) {\n var _ref, _ref2;\n\n const {\n scrollX,\n scrollY,\n scrollLeft,\n scrollTop\n } = event.currentTarget;\n return [(_ref = scrollX !== null && scrollX !== void 0 ? scrollX : scrollLeft) !== null && _ref !== void 0 ? _ref : 0, (_ref2 = scrollY !== null && scrollY !== void 0 ? scrollY : scrollTop) !== null && _ref2 !== void 0 ? _ref2 : 0];\n}\nfunction getEventDetails(event) {\n const payload = {};\n if ('buttons' in event) payload.buttons = event.buttons;\n\n if ('shiftKey' in event) {\n const {\n shiftKey,\n altKey,\n metaKey,\n ctrlKey\n } = event;\n Object.assign(payload, {\n shiftKey,\n altKey,\n metaKey,\n ctrlKey\n });\n }\n\n return payload;\n}\n\nfunction call(v, ...args) {\n if (typeof v === 'function') {\n return v(...args);\n } else {\n return v;\n }\n}\nfunction noop() {}\nfunction chain(...fns) {\n if (fns.length === 0) return noop;\n if (fns.length === 1) return fns[0];\n return function () {\n let result;\n\n for (const fn of fns) {\n result = fn.apply(this, arguments) || result;\n }\n\n return result;\n };\n}\nfunction assignDefault(value, fallback) {\n return Object.assign({}, fallback, value || {});\n}\n\nconst BEFORE_LAST_KINEMATICS_DELAY = 32;\nclass Engine {\n constructor(ctrl, args, key) {\n this.ctrl = ctrl;\n this.args = args;\n this.key = key;\n\n if (!this.state) {\n this.state = {};\n this.computeValues([0, 0]);\n this.computeInitial();\n if (this.init) this.init();\n this.reset();\n }\n }\n\n get state() {\n return this.ctrl.state[this.key];\n }\n\n set state(state) {\n this.ctrl.state[this.key] = state;\n }\n\n get shared() {\n return this.ctrl.state.shared;\n }\n\n get eventStore() {\n return this.ctrl.gestureEventStores[this.key];\n }\n\n get timeoutStore() {\n return this.ctrl.gestureTimeoutStores[this.key];\n }\n\n get config() {\n return this.ctrl.config[this.key];\n }\n\n get sharedConfig() {\n return this.ctrl.config.shared;\n }\n\n get handler() {\n return this.ctrl.handlers[this.key];\n }\n\n reset() {\n const {\n state,\n shared,\n ingKey,\n args\n } = this;\n shared[ingKey] = state._active = state.active = state._blocked = state._force = false;\n state._step = [false, false];\n state.intentional = false;\n state._movement = [0, 0];\n state._distance = [0, 0];\n state._direction = [0, 0];\n state._delta = [0, 0];\n state._bounds = [[-Infinity, Infinity], [-Infinity, Infinity]];\n state.args = args;\n state.axis = undefined;\n state.memo = undefined;\n state.elapsedTime = 0;\n state.direction = [0, 0];\n state.distance = [0, 0];\n state.overflow = [0, 0];\n state._movementBound = [false, false];\n state.velocity = [0, 0];\n state.movement = [0, 0];\n state.delta = [0, 0];\n state.timeStamp = 0;\n }\n\n start(event) {\n const state = this.state;\n const config = this.config;\n\n if (!state._active) {\n this.reset();\n this.computeInitial();\n state._active = true;\n state.target = event.target;\n state.currentTarget = event.currentTarget;\n state.lastOffset = config.from ? call(config.from, state) : state.offset;\n state.offset = state.lastOffset;\n }\n\n state.startTime = state.timeStamp = event.timeStamp;\n }\n\n computeValues(values) {\n const state = this.state;\n state._values = values;\n state.values = this.config.transform(values);\n }\n\n computeInitial() {\n const state = this.state;\n state._initial = state._values;\n state.initial = state.values;\n }\n\n compute(event) {\n const {\n state,\n config,\n shared\n } = this;\n state.args = this.args;\n let dt = 0;\n\n if (event) {\n state.event = event;\n if (config.preventDefault && event.cancelable) state.event.preventDefault();\n state.type = event.type;\n shared.touches = this.ctrl.pointerIds.size || this.ctrl.touchIds.size;\n shared.locked = !!document.pointerLockElement;\n Object.assign(shared, getEventDetails(event));\n shared.down = shared.pressed = shared.buttons % 2 === 1 || shared.touches > 0;\n dt = event.timeStamp - state.timeStamp;\n state.timeStamp = event.timeStamp;\n state.elapsedTime = state.timeStamp - state.startTime;\n }\n\n if (state._active) {\n const _absoluteDelta = state._delta.map(Math.abs);\n\n V.addTo(state._distance, _absoluteDelta);\n }\n\n if (this.axisIntent) this.axisIntent(event);\n const [_m0, _m1] = state._movement;\n const [t0, t1] = config.threshold;\n const {\n _step,\n values\n } = state;\n\n if (config.hasCustomTransform) {\n if (_step[0] === false) _step[0] = Math.abs(_m0) >= t0 && values[0];\n if (_step[1] === false) _step[1] = Math.abs(_m1) >= t1 && values[1];\n } else {\n if (_step[0] === false) _step[0] = Math.abs(_m0) >= t0 && Math.sign(_m0) * t0;\n if (_step[1] === false) _step[1] = Math.abs(_m1) >= t1 && Math.sign(_m1) * t1;\n }\n\n state.intentional = _step[0] !== false || _step[1] !== false;\n if (!state.intentional) return;\n const movement = [0, 0];\n\n if (config.hasCustomTransform) {\n const [v0, v1] = values;\n movement[0] = _step[0] !== false ? v0 - _step[0] : 0;\n movement[1] = _step[1] !== false ? v1 - _step[1] : 0;\n } else {\n movement[0] = _step[0] !== false ? _m0 - _step[0] : 0;\n movement[1] = _step[1] !== false ? _m1 - _step[1] : 0;\n }\n\n if (this.restrictToAxis && !state._blocked) this.restrictToAxis(movement);\n const previousOffset = state.offset;\n const gestureIsActive = state._active && !state._blocked || state.active;\n\n if (gestureIsActive) {\n state.first = state._active && !state.active;\n state.last = !state._active && state.active;\n state.active = shared[this.ingKey] = state._active;\n\n if (event) {\n if (state.first) {\n if ('bounds' in config) state._bounds = call(config.bounds, state);\n if (this.setup) this.setup();\n }\n\n state.movement = movement;\n this.computeOffset();\n }\n }\n\n const [ox, oy] = state.offset;\n const [[x0, x1], [y0, y1]] = state._bounds;\n state.overflow = [ox < x0 ? -1 : ox > x1 ? 1 : 0, oy < y0 ? -1 : oy > y1 ? 1 : 0];\n state._movementBound[0] = state.overflow[0] ? state._movementBound[0] === false ? state._movement[0] : state._movementBound[0] : false;\n state._movementBound[1] = state.overflow[1] ? state._movementBound[1] === false ? state._movement[1] : state._movementBound[1] : false;\n const rubberband = state._active ? config.rubberband || [0, 0] : [0, 0];\n state.offset = computeRubberband(state._bounds, state.offset, rubberband);\n state.delta = V.sub(state.offset, previousOffset);\n this.computeMovement();\n\n if (gestureIsActive && (!state.last || dt > BEFORE_LAST_KINEMATICS_DELAY)) {\n state.delta = V.sub(state.offset, previousOffset);\n const absoluteDelta = state.delta.map(Math.abs);\n V.addTo(state.distance, absoluteDelta);\n state.direction = state.delta.map(Math.sign);\n state._direction = state._delta.map(Math.sign);\n\n if (!state.first && dt > 0) {\n state.velocity = [absoluteDelta[0] / dt, absoluteDelta[1] / dt];\n }\n }\n }\n\n emit() {\n const state = this.state;\n const shared = this.shared;\n const config = this.config;\n if (!state._active) this.clean();\n if ((state._blocked || !state.intentional) && !state._force && !config.triggerAllEvents) return;\n const memo = this.handler(_objectSpread2(_objectSpread2(_objectSpread2({}, shared), state), {}, {\n [this.aliasKey]: state.values\n }));\n if (memo !== undefined) state.memo = memo;\n }\n\n clean() {\n this.eventStore.clean();\n this.timeoutStore.clean();\n }\n\n}\n\nfunction selectAxis([dx, dy], threshold) {\n const absDx = Math.abs(dx);\n const absDy = Math.abs(dy);\n\n if (absDx > absDy && absDx > threshold) {\n return 'x';\n }\n\n if (absDy > absDx && absDy > threshold) {\n return 'y';\n }\n\n return undefined;\n}\n\nclass CoordinatesEngine extends Engine {\n constructor(...args) {\n super(...args);\n\n _defineProperty(this, \"aliasKey\", 'xy');\n }\n\n reset() {\n super.reset();\n this.state.axis = undefined;\n }\n\n init() {\n this.state.offset = [0, 0];\n this.state.lastOffset = [0, 0];\n }\n\n computeOffset() {\n this.state.offset = V.add(this.state.lastOffset, this.state.movement);\n }\n\n computeMovement() {\n this.state.movement = V.sub(this.state.offset, this.state.lastOffset);\n }\n\n axisIntent(event) {\n const state = this.state;\n const config = this.config;\n\n if (!state.axis && event) {\n const threshold = typeof config.axisThreshold === 'object' ? config.axisThreshold[getPointerType(event)] : config.axisThreshold;\n state.axis = selectAxis(state._movement, threshold);\n }\n\n state._blocked = (config.lockDirection || !!config.axis) && !state.axis || !!config.axis && config.axis !== state.axis;\n }\n\n restrictToAxis(v) {\n if (this.config.axis || this.config.lockDirection) {\n switch (this.state.axis) {\n case 'x':\n v[1] = 0;\n break;\n\n case 'y':\n v[0] = 0;\n break;\n }\n }\n }\n\n}\n\nconst identity = v => v;\nconst DEFAULT_RUBBERBAND = 0.15;\nconst commonConfigResolver = {\n enabled(value = true) {\n return value;\n },\n\n preventDefault(value = false) {\n return value;\n },\n\n triggerAllEvents(value = false) {\n return value;\n },\n\n rubberband(value = 0) {\n switch (value) {\n case true:\n return [DEFAULT_RUBBERBAND, DEFAULT_RUBBERBAND];\n\n case false:\n return [0, 0];\n\n default:\n return V.toVector(value);\n }\n },\n\n from(value) {\n if (typeof value === 'function') return value;\n if (value != null) return V.toVector(value);\n },\n\n transform(value, _k, config) {\n const transform = value || config.shared.transform;\n this.hasCustomTransform = !!transform;\n\n if (process.env.NODE_ENV === 'development') {\n const originalTransform = transform || identity;\n return v => {\n const r = originalTransform(v);\n\n if (!isFinite(r[0]) || !isFinite(r[1])) {\n console.warn(`[@use-gesture]: config.transform() must produce a valid result, but it was: [${r[0]},${[1]}]`);\n }\n\n return r;\n };\n }\n\n return transform || identity;\n },\n\n threshold(value) {\n return V.toVector(value, 0);\n }\n\n};\n\nif (process.env.NODE_ENV === 'development') {\n Object.assign(commonConfigResolver, {\n domTarget(value) {\n if (value !== undefined) {\n throw Error(`[@use-gesture]: \\`domTarget\\` option has been renamed to \\`target\\`.`);\n }\n\n return NaN;\n },\n\n lockDirection(value) {\n if (value !== undefined) {\n throw Error(`[@use-gesture]: \\`lockDirection\\` option has been merged with \\`axis\\`. Use it as in \\`{ axis: 'lock' }\\``);\n }\n\n return NaN;\n },\n\n initial(value) {\n if (value !== undefined) {\n throw Error(`[@use-gesture]: \\`initial\\` option has been renamed to \\`from\\`.`);\n }\n\n return NaN;\n }\n\n });\n}\n\nconst DEFAULT_AXIS_THRESHOLD = 0;\nconst coordinatesConfigResolver = _objectSpread2(_objectSpread2({}, commonConfigResolver), {}, {\n axis(_v, _k, {\n axis\n }) {\n this.lockDirection = axis === 'lock';\n if (!this.lockDirection) return axis;\n },\n\n axisThreshold(value = DEFAULT_AXIS_THRESHOLD) {\n return value;\n },\n\n bounds(value = {}) {\n if (typeof value === 'function') {\n return state => coordinatesConfigResolver.bounds(value(state));\n }\n\n if ('current' in value) {\n return () => value.current;\n }\n\n if (typeof HTMLElement === 'function' && value instanceof HTMLElement) {\n return value;\n }\n\n const {\n left = -Infinity,\n right = Infinity,\n top = -Infinity,\n bottom = Infinity\n } = value;\n return [[left, right], [top, bottom]];\n }\n\n});\n\nconst DISPLACEMENT = 10;\nconst KEYS_DELTA_MAP = {\n ArrowRight: (factor = 1) => [DISPLACEMENT * factor, 0],\n ArrowLeft: (factor = 1) => [-DISPLACEMENT * factor, 0],\n ArrowUp: (factor = 1) => [0, -DISPLACEMENT * factor],\n ArrowDown: (factor = 1) => [0, DISPLACEMENT * factor]\n};\nclass DragEngine extends CoordinatesEngine {\n constructor(...args) {\n super(...args);\n\n _defineProperty(this, \"ingKey\", 'dragging');\n }\n\n reset() {\n super.reset();\n const state = this.state;\n state._pointerId = undefined;\n state._pointerActive = false;\n state._keyboardActive = false;\n state._preventScroll = false;\n state._delayed = false;\n state.swipe = [0, 0];\n state.tap = false;\n state.canceled = false;\n state.cancel = this.cancel.bind(this);\n }\n\n setup() {\n const state = this.state;\n\n if (state._bounds instanceof HTMLElement) {\n const boundRect = state._bounds.getBoundingClientRect();\n\n const targetRect = state.currentTarget.getBoundingClientRect();\n const _bounds = {\n left: boundRect.left - targetRect.left + state.offset[0],\n right: boundRect.right - targetRect.right + state.offset[0],\n top: boundRect.top - targetRect.top + state.offset[1],\n bottom: boundRect.bottom - targetRect.bottom + state.offset[1]\n };\n state._bounds = coordinatesConfigResolver.bounds(_bounds);\n }\n }\n\n cancel() {\n const state = this.state;\n if (state.canceled) return;\n state.canceled = true;\n state._active = false;\n setTimeout(() => {\n this.compute();\n this.emit();\n }, 0);\n }\n\n setActive() {\n this.state._active = this.state._pointerActive || this.state._keyboardActive;\n }\n\n clean() {\n this.pointerClean();\n this.state._pointerActive = false;\n this.state._keyboardActive = false;\n super.clean();\n }\n\n pointerDown(event) {\n const config = this.config;\n const state = this.state;\n if (event.buttons != null && (Array.isArray(config.pointerButtons) ? !config.pointerButtons.includes(event.buttons) : config.pointerButtons !== -1 && config.pointerButtons !== event.buttons)) return;\n this.ctrl.setEventIds(event);\n\n if (config.pointerCapture) {\n event.target.setPointerCapture(event.pointerId);\n }\n\n if (state._pointerActive) return;\n this.start(event);\n this.setupPointer(event);\n state._pointerId = pointerId(event);\n state._pointerActive = true;\n this.computeValues(pointerValues(event));\n this.computeInitial();\n\n if (config.preventScrollAxis && getPointerType(event) !== 'mouse') {\n state._active = false;\n this.setupScrollPrevention(event);\n } else if (config.delay > 0) {\n this.setupDelayTrigger(event);\n\n if (config.triggerAllEvents) {\n this.compute(event);\n this.emit();\n }\n } else {\n this.startPointerDrag(event);\n }\n }\n\n startPointerDrag(event) {\n const state = this.state;\n state._active = true;\n state._preventScroll = true;\n state._delayed = false;\n this.compute(event);\n this.emit();\n }\n\n pointerMove(event) {\n const state = this.state;\n const config = this.config;\n if (!state._pointerActive) return;\n if (state.type === event.type && event.timeStamp === state.timeStamp) return;\n const id = pointerId(event);\n if (state._pointerId !== undefined && id !== state._pointerId) return;\n\n const _values = pointerValues(event);\n\n if (document.pointerLockElement === event.target) {\n state._delta = [event.movementX, event.movementY];\n } else {\n state._delta = V.sub(_values, state._values);\n this.computeValues(_values);\n }\n\n V.addTo(state._movement, state._delta);\n this.compute(event);\n\n if (state._delayed && state.intentional) {\n this.timeoutStore.remove('dragDelay');\n state.active = false;\n this.startPointerDrag(event);\n return;\n }\n\n if (config.preventScrollAxis && !state._preventScroll) {\n if (state.axis) {\n if (state.axis === config.preventScrollAxis || config.preventScrollAxis === 'xy') {\n state._active = false;\n this.clean();\n return;\n } else {\n this.timeoutStore.remove('startPointerDrag');\n this.startPointerDrag(event);\n return;\n }\n } else {\n return;\n }\n }\n\n this.emit();\n }\n\n pointerUp(event) {\n this.ctrl.setEventIds(event);\n\n try {\n if (this.config.pointerCapture && event.target.hasPointerCapture(event.pointerId)) {\n ;\n event.target.releasePointerCapture(event.pointerId);\n }\n } catch (_unused) {\n if (process.env.NODE_ENV === 'development') {\n console.warn(`[@use-gesture]: If you see this message, it's likely that you're using an outdated version of \\`@react-three/fiber\\`. \\n\\nPlease upgrade to the latest version.`);\n }\n }\n\n const state = this.state;\n const config = this.config;\n if (!state._active || !state._pointerActive) return;\n const id = pointerId(event);\n if (state._pointerId !== undefined && id !== state._pointerId) return;\n this.state._pointerActive = false;\n this.setActive();\n this.compute(event);\n const [dx, dy] = state._distance;\n state.tap = dx <= config.tapsThreshold && dy <= config.tapsThreshold;\n\n if (state.tap && config.filterTaps) {\n state._force = true;\n } else {\n const [dirx, diry] = state.direction;\n const [vx, vy] = state.velocity;\n const [mx, my] = state.movement;\n const [svx, svy] = config.swipe.velocity;\n const [sx, sy] = config.swipe.distance;\n const sdt = config.swipe.duration;\n\n if (state.elapsedTime < sdt) {\n if (Math.abs(vx) > svx && Math.abs(mx) > sx) state.swipe[0] = dirx;\n if (Math.abs(vy) > svy && Math.abs(my) > sy) state.swipe[1] = diry;\n }\n }\n\n this.emit();\n }\n\n pointerClick(event) {\n if (!this.state.tap) {\n event.preventDefault();\n event.stopPropagation();\n }\n }\n\n setupPointer(event) {\n const config = this.config;\n const device = config.device;\n\n if (process.env.NODE_ENV === 'development') {\n try {\n if (device === 'pointer' && config.preventScrollDelay === undefined) {\n const currentTarget = 'uv' in event ? event.sourceEvent.currentTarget : event.currentTarget;\n const style = window.getComputedStyle(currentTarget);\n\n if (style.touchAction === 'auto') {\n console.warn(`[@use-gesture]: The drag target has its \\`touch-action\\` style property set to \\`auto\\`. It is recommended to add \\`touch-action: 'none'\\` so that the drag gesture behaves correctly on touch-enabled devices. For more information read this: https://use-gesture.netlify.app/docs/extras/#touch-action.\\n\\nThis message will only show in development mode. It won't appear in production. If this is intended, you can ignore it.`, currentTarget);\n }\n }\n } catch (_unused2) {}\n }\n\n if (config.pointerLock) {\n event.currentTarget.requestPointerLock();\n }\n\n if (!config.pointerCapture) {\n this.eventStore.add(this.sharedConfig.window, device, 'change', this.pointerMove.bind(this));\n this.eventStore.add(this.sharedConfig.window, device, 'end', this.pointerUp.bind(this));\n this.eventStore.add(this.sharedConfig.window, device, 'cancel', this.pointerUp.bind(this));\n }\n }\n\n pointerClean() {\n if (this.config.pointerLock && document.pointerLockElement === this.state.currentTarget) {\n document.exitPointerLock();\n }\n }\n\n preventScroll(event) {\n if (this.state._preventScroll && event.cancelable) {\n event.preventDefault();\n }\n }\n\n setupScrollPrevention(event) {\n persistEvent(event);\n this.eventStore.add(this.sharedConfig.window, 'touch', 'change', this.preventScroll.bind(this), {\n passive: false\n });\n this.eventStore.add(this.sharedConfig.window, 'touch', 'end', this.clean.bind(this));\n this.eventStore.add(this.sharedConfig.window, 'touch', 'cancel', this.clean.bind(this));\n this.timeoutStore.add('startPointerDrag', this.startPointerDrag.bind(this), this.config.preventScrollDelay, event);\n }\n\n setupDelayTrigger(event) {\n this.state._delayed = true;\n this.timeoutStore.add('dragDelay', () => {\n this.state._step = [0, 0];\n this.startPointerDrag(event);\n }, this.config.delay);\n }\n\n keyDown(event) {\n const deltaFn = KEYS_DELTA_MAP[event.key];\n\n if (deltaFn) {\n const state = this.state;\n const factor = event.shiftKey ? 10 : event.altKey ? 0.1 : 1;\n state._delta = deltaFn(factor);\n this.start(event);\n state._keyboardActive = true;\n V.addTo(state._movement, state._delta);\n this.compute(event);\n this.emit();\n }\n }\n\n keyUp(event) {\n if (!(event.key in KEYS_DELTA_MAP)) return;\n this.state._keyboardActive = false;\n this.setActive();\n this.compute(event);\n this.emit();\n }\n\n bind(bindFunction) {\n const device = this.config.device;\n bindFunction(device, 'start', this.pointerDown.bind(this));\n\n if (this.config.pointerCapture) {\n bindFunction(device, 'change', this.pointerMove.bind(this));\n bindFunction(device, 'end', this.pointerUp.bind(this));\n bindFunction(device, 'cancel', this.pointerUp.bind(this));\n bindFunction('lostPointerCapture', '', this.pointerUp.bind(this));\n }\n\n bindFunction('key', 'down', this.keyDown.bind(this));\n bindFunction('key', 'up', this.keyUp.bind(this));\n\n if (this.config.filterTaps) {\n bindFunction('click', '', this.pointerClick.bind(this), {\n capture: true,\n passive: false\n });\n }\n }\n\n}\n\nfunction persistEvent(event) {\n 'persist' in event && typeof event.persist === 'function' && event.persist();\n}\n\nconst isBrowser = typeof window !== 'undefined' && window.document && window.document.createElement;\n\nfunction supportsTouchEvents() {\n return isBrowser && 'ontouchstart' in window;\n}\n\nfunction isTouchScreen() {\n return supportsTouchEvents() || isBrowser && window.navigator.maxTouchPoints > 1;\n}\n\nfunction supportsPointerEvents() {\n return isBrowser && 'onpointerdown' in window;\n}\n\nfunction supportsPointerLock() {\n return isBrowser && 'exitPointerLock' in window.document;\n}\n\nfunction supportsGestureEvents() {\n try {\n return 'constructor' in GestureEvent;\n } catch (e) {\n return false;\n }\n}\n\nconst SUPPORT = {\n isBrowser,\n gesture: supportsGestureEvents(),\n touch: isTouchScreen(),\n touchscreen: isTouchScreen(),\n pointer: supportsPointerEvents(),\n pointerLock: supportsPointerLock()\n};\n\nconst DEFAULT_PREVENT_SCROLL_DELAY = 250;\nconst DEFAULT_DRAG_DELAY = 180;\nconst DEFAULT_SWIPE_VELOCITY = 0.5;\nconst DEFAULT_SWIPE_DISTANCE = 50;\nconst DEFAULT_SWIPE_DURATION = 250;\nconst DEFAULT_DRAG_AXIS_THRESHOLD = {\n mouse: 0,\n touch: 0,\n pen: 8\n};\nconst dragConfigResolver = _objectSpread2(_objectSpread2({}, coordinatesConfigResolver), {}, {\n device(_v, _k, {\n pointer: {\n touch = false,\n lock = false,\n mouse = false\n } = {}\n }) {\n this.pointerLock = lock && SUPPORT.pointerLock;\n if (SUPPORT.touch && touch) return 'touch';\n if (this.pointerLock) return 'mouse';\n if (SUPPORT.pointer && !mouse) return 'pointer';\n if (SUPPORT.touch) return 'touch';\n return 'mouse';\n },\n\n preventScrollAxis(value, _k, {\n preventScroll\n }) {\n this.preventScrollDelay = typeof preventScroll === 'number' ? preventScroll : preventScroll || preventScroll === undefined && value ? DEFAULT_PREVENT_SCROLL_DELAY : undefined;\n if (!SUPPORT.touchscreen || preventScroll === false) return undefined;\n return value ? value : preventScroll !== undefined ? 'y' : undefined;\n },\n\n pointerCapture(_v, _k, {\n pointer: {\n capture = true,\n buttons = 1\n } = {}\n }) {\n this.pointerButtons = buttons;\n return !this.pointerLock && this.device === 'pointer' && capture;\n },\n\n threshold(value, _k, {\n filterTaps = false,\n tapsThreshold = 3,\n axis = undefined\n }) {\n const threshold = V.toVector(value, filterTaps ? tapsThreshold : axis ? 1 : 0);\n this.filterTaps = filterTaps;\n this.tapsThreshold = tapsThreshold;\n return threshold;\n },\n\n swipe({\n velocity = DEFAULT_SWIPE_VELOCITY,\n distance = DEFAULT_SWIPE_DISTANCE,\n duration = DEFAULT_SWIPE_DURATION\n } = {}) {\n return {\n velocity: this.transform(V.toVector(velocity)),\n distance: this.transform(V.toVector(distance)),\n duration\n };\n },\n\n delay(value = 0) {\n switch (value) {\n case true:\n return DEFAULT_DRAG_DELAY;\n\n case false:\n return 0;\n\n default:\n return value;\n }\n },\n\n axisThreshold(value) {\n if (!value) return DEFAULT_DRAG_AXIS_THRESHOLD;\n return _objectSpread2(_objectSpread2({}, DEFAULT_DRAG_AXIS_THRESHOLD), value);\n }\n\n});\n\nif (process.env.NODE_ENV === 'development') {\n Object.assign(dragConfigResolver, {\n useTouch(value) {\n if (value !== undefined) {\n throw Error(`[@use-gesture]: \\`useTouch\\` option has been renamed to \\`pointer.touch\\`. Use it as in \\`{ pointer: { touch: true } }\\`.`);\n }\n\n return NaN;\n },\n\n experimental_preventWindowScrollY(value) {\n if (value !== undefined) {\n throw Error(`[@use-gesture]: \\`experimental_preventWindowScrollY\\` option has been renamed to \\`preventScroll\\`.`);\n }\n\n return NaN;\n },\n\n swipeVelocity(value) {\n if (value !== undefined) {\n throw Error(`[@use-gesture]: \\`swipeVelocity\\` option has been renamed to \\`swipe.velocity\\`. Use it as in \\`{ swipe: { velocity: 0.5 } }\\`.`);\n }\n\n return NaN;\n },\n\n swipeDistance(value) {\n if (value !== undefined) {\n throw Error(`[@use-gesture]: \\`swipeDistance\\` option has been renamed to \\`swipe.distance\\`. Use it as in \\`{ swipe: { distance: 50 } }\\`.`);\n }\n\n return NaN;\n },\n\n swipeDuration(value) {\n if (value !== undefined) {\n throw Error(`[@use-gesture]: \\`swipeDuration\\` option has been renamed to \\`swipe.duration\\`. Use it as in \\`{ swipe: { duration: 250 } }\\`.`);\n }\n\n return NaN;\n }\n\n });\n}\n\nconst SCALE_ANGLE_RATIO_INTENT_DEG = 30;\nconst PINCH_WHEEL_RATIO = 100;\nclass PinchEngine extends Engine {\n constructor(...args) {\n super(...args);\n\n _defineProperty(this, \"ingKey\", 'pinching');\n\n _defineProperty(this, \"aliasKey\", 'da');\n }\n\n init() {\n this.state.offset = [1, 0];\n this.state.lastOffset = [1, 0];\n this.state._pointerEvents = new Map();\n }\n\n reset() {\n super.reset();\n const state = this.state;\n state._touchIds = [];\n state.canceled = false;\n state.cancel = this.cancel.bind(this);\n state.turns = 0;\n }\n\n computeOffset() {\n const {\n type,\n movement,\n lastOffset\n } = this.state;\n\n if (type === 'wheel') {\n this.state.offset = V.add(movement, lastOffset);\n } else {\n this.state.offset = [(1 + movement[0]) * lastOffset[0], movement[1] + lastOffset[1]];\n }\n }\n\n computeMovement() {\n const {\n offset,\n lastOffset\n } = this.state;\n this.state.movement = [offset[0] / lastOffset[0], offset[1] - lastOffset[1]];\n }\n\n axisIntent() {\n const state = this.state;\n const [_m0, _m1] = state._movement;\n\n if (!state.axis) {\n const axisMovementDifference = Math.abs(_m0) * SCALE_ANGLE_RATIO_INTENT_DEG - Math.abs(_m1);\n if (axisMovementDifference < 0) state.axis = 'angle';else if (axisMovementDifference > 0) state.axis = 'scale';\n }\n }\n\n restrictToAxis(v) {\n if (this.config.lockDirection) {\n if (this.state.axis === 'scale') v[1] = 0;else if (this.state.axis === 'angle') v[0] = 0;\n }\n }\n\n cancel() {\n const state = this.state;\n if (state.canceled) return;\n setTimeout(() => {\n state.canceled = true;\n state._active = false;\n this.compute();\n this.emit();\n }, 0);\n }\n\n touchStart(event) {\n this.ctrl.setEventIds(event);\n const state = this.state;\n const ctrlTouchIds = this.ctrl.touchIds;\n\n if (state._active) {\n if (state._touchIds.every(id => ctrlTouchIds.has(id))) return;\n }\n\n if (ctrlTouchIds.size < 2) return;\n this.start(event);\n state._touchIds = Array.from(ctrlTouchIds).slice(0, 2);\n const payload = touchDistanceAngle(event, state._touchIds);\n this.pinchStart(event, payload);\n }\n\n pointerStart(event) {\n if (event.buttons != null && event.buttons % 2 !== 1) return;\n this.ctrl.setEventIds(event);\n event.target.setPointerCapture(event.pointerId);\n const state = this.state;\n const _pointerEvents = state._pointerEvents;\n const ctrlPointerIds = this.ctrl.pointerIds;\n\n if (state._active) {\n if (Array.from(_pointerEvents.keys()).every(id => ctrlPointerIds.has(id))) return;\n }\n\n if (_pointerEvents.size < 2) {\n _pointerEvents.set(event.pointerId, event);\n }\n\n if (state._pointerEvents.size < 2) return;\n this.start(event);\n const payload = distanceAngle(...Array.from(_pointerEvents.values()));\n this.pinchStart(event, payload);\n }\n\n pinchStart(event, payload) {\n const state = this.state;\n state.origin = payload.origin;\n this.computeValues([payload.distance, payload.angle]);\n this.computeInitial();\n this.compute(event);\n this.emit();\n }\n\n touchMove(event) {\n if (!this.state._active) return;\n const payload = touchDistanceAngle(event, this.state._touchIds);\n this.pinchMove(event, payload);\n }\n\n pointerMove(event) {\n const _pointerEvents = this.state._pointerEvents;\n\n if (_pointerEvents.has(event.pointerId)) {\n _pointerEvents.set(event.pointerId, event);\n }\n\n if (!this.state._active) return;\n const payload = distanceAngle(...Array.from(_pointerEvents.values()));\n this.pinchMove(event, payload);\n }\n\n pinchMove(event, payload) {\n const state = this.state;\n const prev_a = state._values[1];\n const delta_a = payload.angle - prev_a;\n let delta_turns = 0;\n if (Math.abs(delta_a) > 270) delta_turns += Math.sign(delta_a);\n this.computeValues([payload.distance, payload.angle - 360 * delta_turns]);\n state.origin = payload.origin;\n state.turns = delta_turns;\n state._movement = [state._values[0] / state._initial[0] - 1, state._values[1] - state._initial[1]];\n this.compute(event);\n this.emit();\n }\n\n touchEnd(event) {\n this.ctrl.setEventIds(event);\n if (!this.state._active) return;\n\n if (this.state._touchIds.some(id => !this.ctrl.touchIds.has(id))) {\n this.state._active = false;\n this.compute(event);\n this.emit();\n }\n }\n\n pointerEnd(event) {\n const state = this.state;\n this.ctrl.setEventIds(event);\n\n try {\n event.target.releasePointerCapture(event.pointerId);\n } catch (_unused) {}\n\n if (state._pointerEvents.has(event.pointerId)) {\n state._pointerEvents.delete(event.pointerId);\n }\n\n if (!state._active) return;\n\n if (state._pointerEvents.size < 2) {\n state._active = false;\n this.compute(event);\n this.emit();\n }\n }\n\n gestureStart(event) {\n if (event.cancelable) event.preventDefault();\n const state = this.state;\n if (state._active) return;\n this.start(event);\n this.computeValues([event.scale, event.rotation]);\n state.origin = [event.clientX, event.clientY];\n this.compute(event);\n this.emit();\n }\n\n gestureMove(event) {\n if (event.cancelable) event.preventDefault();\n if (!this.state._active) return;\n const state = this.state;\n this.computeValues([event.scale, event.rotation]);\n state.origin = [event.clientX, event.clientY];\n const _previousMovement = state._movement;\n state._movement = [event.scale - 1, event.rotation];\n state._delta = V.sub(state._movement, _previousMovement);\n this.compute(event);\n this.emit();\n }\n\n gestureEnd(event) {\n if (!this.state._active) return;\n this.state._active = false;\n this.compute(event);\n this.emit();\n }\n\n wheel(event) {\n const modifierKey = this.config.modifierKey;\n if (modifierKey && !event[modifierKey]) return;\n if (!this.state._active) this.wheelStart(event);else this.wheelChange(event);\n this.timeoutStore.add('wheelEnd', this.wheelEnd.bind(this));\n }\n\n wheelStart(event) {\n this.start(event);\n this.wheelChange(event);\n }\n\n wheelChange(event) {\n const isR3f = ('uv' in event);\n\n if (!isR3f) {\n if (event.cancelable) {\n event.preventDefault();\n }\n\n if (process.env.NODE_ENV === 'development' && !event.defaultPrevented) {\n console.warn(`[@use-gesture]: To properly support zoom on trackpads, try using the \\`target\\` option.\\n\\nThis message will only appear in development mode.`);\n }\n }\n\n const state = this.state;\n state._delta = [-wheelValues(event)[1] / PINCH_WHEEL_RATIO * state.offset[0], 0];\n V.addTo(state._movement, state._delta);\n this.state.origin = [event.clientX, event.clientY];\n this.compute(event);\n this.emit();\n }\n\n wheelEnd() {\n if (!this.state._active) return;\n this.state._active = false;\n this.compute();\n this.emit();\n }\n\n bind(bindFunction) {\n const device = this.config.device;\n\n if (!!device) {\n bindFunction(device, 'start', this[device + 'Start'].bind(this));\n bindFunction(device, 'change', this[device + 'Move'].bind(this));\n bindFunction(device, 'end', this[device + 'End'].bind(this));\n bindFunction(device, 'cancel', this[device + 'End'].bind(this));\n } else {\n bindFunction('wheel', '', this.wheel.bind(this), {\n passive: false\n });\n }\n }\n\n}\n\nconst pinchConfigResolver = _objectSpread2(_objectSpread2({}, commonConfigResolver), {}, {\n device(_v, _k, {\n shared,\n pointer: {\n touch = false\n } = {}\n }) {\n const sharedConfig = shared;\n if (sharedConfig.target && !SUPPORT.touch && SUPPORT.gesture) return 'gesture';\n if (SUPPORT.touch && touch) return 'touch';\n\n if (SUPPORT.touchscreen) {\n if (SUPPORT.pointer) return 'pointer';\n if (SUPPORT.touch) return 'touch';\n }\n },\n\n bounds(_v, _k, {\n scaleBounds = {},\n angleBounds = {}\n }) {\n const _scaleBounds = state => {\n const D = assignDefault(call(scaleBounds, state), {\n min: -Infinity,\n max: Infinity\n });\n return [D.min, D.max];\n };\n\n const _angleBounds = state => {\n const A = assignDefault(call(angleBounds, state), {\n min: -Infinity,\n max: Infinity\n });\n return [A.min, A.max];\n };\n\n if (typeof scaleBounds !== 'function' && typeof angleBounds !== 'function') return [_scaleBounds(), _angleBounds()];\n return state => [_scaleBounds(state), _angleBounds(state)];\n },\n\n threshold(value, _k, config) {\n this.lockDirection = config.axis === 'lock';\n const threshold = V.toVector(value, this.lockDirection ? [0.1, 3] : 0);\n return threshold;\n },\n\n modifierKey(value) {\n if (value === undefined) return 'ctrlKey';\n return value;\n }\n\n});\n\nclass MoveEngine extends CoordinatesEngine {\n constructor(...args) {\n super(...args);\n\n _defineProperty(this, \"ingKey\", 'moving');\n }\n\n move(event) {\n if (this.config.mouseOnly && event.pointerType !== 'mouse') return;\n if (!this.state._active) this.moveStart(event);else this.moveChange(event);\n this.timeoutStore.add('moveEnd', this.moveEnd.bind(this));\n }\n\n moveStart(event) {\n this.start(event);\n this.computeValues(pointerValues(event));\n this.compute(event);\n this.computeInitial();\n this.emit();\n }\n\n moveChange(event) {\n if (!this.state._active) return;\n const values = pointerValues(event);\n const state = this.state;\n state._delta = V.sub(values, state._values);\n V.addTo(state._movement, state._delta);\n this.computeValues(values);\n this.compute(event);\n this.emit();\n }\n\n moveEnd(event) {\n if (!this.state._active) return;\n this.state._active = false;\n this.compute(event);\n this.emit();\n }\n\n bind(bindFunction) {\n bindFunction('pointer', 'change', this.move.bind(this));\n bindFunction('pointer', 'leave', this.moveEnd.bind(this));\n }\n\n}\n\nconst moveConfigResolver = _objectSpread2(_objectSpread2({}, coordinatesConfigResolver), {}, {\n mouseOnly: (value = true) => value\n});\n\nclass ScrollEngine extends CoordinatesEngine {\n constructor(...args) {\n super(...args);\n\n _defineProperty(this, \"ingKey\", 'scrolling');\n }\n\n scroll(event) {\n if (!this.state._active) this.start(event);\n this.scrollChange(event);\n this.timeoutStore.add('scrollEnd', this.scrollEnd.bind(this));\n }\n\n scrollChange(event) {\n if (event.cancelable) event.preventDefault();\n const state = this.state;\n const values = scrollValues(event);\n state._delta = V.sub(values, state._values);\n V.addTo(state._movement, state._delta);\n this.computeValues(values);\n this.compute(event);\n this.emit();\n }\n\n scrollEnd() {\n if (!this.state._active) return;\n this.state._active = false;\n this.compute();\n this.emit();\n }\n\n bind(bindFunction) {\n bindFunction('scroll', '', this.scroll.bind(this));\n }\n\n}\n\nconst scrollConfigResolver = coordinatesConfigResolver;\n\nclass WheelEngine extends CoordinatesEngine {\n constructor(...args) {\n super(...args);\n\n _defineProperty(this, \"ingKey\", 'wheeling');\n }\n\n wheel(event) {\n if (!this.state._active) this.start(event);\n this.wheelChange(event);\n this.timeoutStore.add('wheelEnd', this.wheelEnd.bind(this));\n }\n\n wheelChange(event) {\n const state = this.state;\n state._delta = wheelValues(event);\n V.addTo(state._movement, state._delta);\n const [ox, oy] = state.overflow;\n const [dx, dy] = state._delta;\n const [dirx, diry] = state._direction;\n\n if (ox < 0 && dx > 0 && dirx < 0 || ox > 0 && dx < 0 && dirx > 0) {\n state._movement[0] = state._movementBound[0];\n }\n\n if (oy < 0 && dy > 0 && diry < 0 || oy > 0 && dy < 0 && diry > 0) {\n state._movement[1] = state._movementBound[1];\n }\n\n this.compute(event);\n this.emit();\n }\n\n wheelEnd() {\n if (!this.state._active) return;\n this.state._active = false;\n this.compute();\n this.emit();\n }\n\n bind(bindFunction) {\n bindFunction('wheel', '', this.wheel.bind(this));\n }\n\n}\n\nconst wheelConfigResolver = coordinatesConfigResolver;\n\nclass HoverEngine extends CoordinatesEngine {\n constructor(...args) {\n super(...args);\n\n _defineProperty(this, \"ingKey\", 'hovering');\n }\n\n enter(event) {\n if (this.config.mouseOnly && event.pointerType !== 'mouse') return;\n this.start(event);\n this.computeValues(pointerValues(event));\n this.compute(event);\n this.emit();\n }\n\n leave(event) {\n if (this.config.mouseOnly && event.pointerType !== 'mouse') return;\n const state = this.state;\n if (!state._active) return;\n state._active = false;\n const values = pointerValues(event);\n state._movement = state._delta = V.sub(values, state._values);\n this.computeValues(values);\n this.compute(event);\n state.delta = state.movement;\n this.emit();\n }\n\n bind(bindFunction) {\n bindFunction('pointer', 'enter', this.enter.bind(this));\n bindFunction('pointer', 'leave', this.leave.bind(this));\n }\n\n}\n\nconst hoverConfigResolver = _objectSpread2(_objectSpread2({}, coordinatesConfigResolver), {}, {\n mouseOnly: (value = true) => value\n});\n\nconst EngineMap = new Map();\nconst ConfigResolverMap = new Map();\nfunction registerAction(action) {\n EngineMap.set(action.key, action.engine);\n ConfigResolverMap.set(action.key, action.resolver);\n}\nconst dragAction = {\n key: 'drag',\n engine: DragEngine,\n resolver: dragConfigResolver\n};\nconst hoverAction = {\n key: 'hover',\n engine: HoverEngine,\n resolver: hoverConfigResolver\n};\nconst moveAction = {\n key: 'move',\n engine: MoveEngine,\n resolver: moveConfigResolver\n};\nconst pinchAction = {\n key: 'pinch',\n engine: PinchEngine,\n resolver: pinchConfigResolver\n};\nconst scrollAction = {\n key: 'scroll',\n engine: ScrollEngine,\n resolver: scrollConfigResolver\n};\nconst wheelAction = {\n key: 'wheel',\n engine: WheelEngine,\n resolver: wheelConfigResolver\n};\n\nexport { ConfigResolverMap as C, EngineMap as E, SUPPORT as S, _objectSpread2 as _, _defineProperty as a, touchIds as b, chain as c, toHandlerProp as d, dragAction as e, pinchAction as f, hoverAction as h, isTouch as i, moveAction as m, parseProp as p, registerAction as r, scrollAction as s, toDomEventType as t, wheelAction as w };\n","import { S as SUPPORT, C as ConfigResolverMap, _ as _objectSpread2, a as _defineProperty, t as toDomEventType, i as isTouch, b as touchIds, E as EngineMap, c as chain, p as parseProp, d as toHandlerProp } from './actions-8e12537b.esm.js';\nimport './maths-b2a210f4.esm.js';\n\nfunction _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n\n return target;\n}\n\nfunction _objectWithoutProperties(source, excluded) {\n if (source == null) return {};\n var target = _objectWithoutPropertiesLoose(source, excluded);\n var key, i;\n\n if (Object.getOwnPropertySymbols) {\n var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\n\n for (i = 0; i < sourceSymbolKeys.length; i++) {\n key = sourceSymbolKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;\n target[key] = source[key];\n }\n }\n\n return target;\n}\n\nconst sharedConfigResolver = {\n target(value) {\n if (value) {\n return () => 'current' in value ? value.current : value;\n }\n\n return undefined;\n },\n\n enabled(value = true) {\n return value;\n },\n\n window(value = SUPPORT.isBrowser ? window : undefined) {\n return value;\n },\n\n eventOptions({\n passive = true,\n capture = false\n } = {}) {\n return {\n passive,\n capture\n };\n },\n\n transform(value) {\n return value;\n }\n\n};\n\nconst _excluded = [\"target\", \"eventOptions\", \"window\", \"enabled\", \"transform\"];\nfunction resolveWith(config = {}, resolvers) {\n const result = {};\n\n for (const [key, resolver] of Object.entries(resolvers)) {\n switch (typeof resolver) {\n case 'function':\n if (process.env.NODE_ENV === 'development') {\n const r = resolver.call(result, config[key], key, config);\n if (!Number.isNaN(r)) result[key] = r;\n } else {\n result[key] = resolver.call(result, config[key], key, config);\n }\n\n break;\n\n case 'object':\n result[key] = resolveWith(config[key], resolver);\n break;\n\n case 'boolean':\n if (resolver) result[key] = config[key];\n break;\n }\n }\n\n return result;\n}\nfunction parse(config, gestureKey) {\n const _ref = config,\n {\n target,\n eventOptions,\n window,\n enabled,\n transform\n } = _ref,\n rest = _objectWithoutProperties(_ref, _excluded);\n\n const _config = {\n shared: resolveWith({\n target,\n eventOptions,\n window,\n enabled,\n transform\n }, sharedConfigResolver)\n };\n\n if (gestureKey) {\n const resolver = ConfigResolverMap.get(gestureKey);\n _config[gestureKey] = resolveWith(_objectSpread2({\n shared: _config.shared\n }, rest), resolver);\n } else {\n for (const key in rest) {\n const resolver = ConfigResolverMap.get(key);\n\n if (resolver) {\n _config[key] = resolveWith(_objectSpread2({\n shared: _config.shared\n }, rest[key]), resolver);\n } else if (process.env.NODE_ENV === 'development') {\n if (!['drag', 'pinch', 'scroll', 'wheel', 'move', 'hover'].includes(key)) {\n if (key === 'domTarget') {\n throw Error(`[@use-gesture]: \\`domTarget\\` option has been renamed to \\`target\\`.`);\n }\n\n console.warn(`[@use-gesture]: Unknown config key \\`${key}\\` was used. Please read the documentation for further information.`);\n }\n }\n }\n }\n\n return _config;\n}\n\nclass EventStore {\n constructor(ctrl) {\n _defineProperty(this, \"_listeners\", []);\n\n this._ctrl = ctrl;\n }\n\n add(element, device, action, handler, options) {\n const type = toDomEventType(device, action);\n\n const eventOptions = _objectSpread2(_objectSpread2({}, this._ctrl.config.shared.eventOptions), options);\n\n element.addEventListener(type, handler, eventOptions);\n\n this._listeners.push(() => element.removeEventListener(type, handler, eventOptions));\n }\n\n clean() {\n this._listeners.forEach(remove => remove());\n\n this._listeners = [];\n }\n\n}\n\nclass TimeoutStore {\n constructor() {\n _defineProperty(this, \"_timeouts\", new Map());\n }\n\n add(key, callback, ms = 140, ...args) {\n this.remove(key);\n\n this._timeouts.set(key, window.setTimeout(callback, ms, ...args));\n }\n\n remove(key) {\n const timeout = this._timeouts.get(key);\n\n if (timeout) window.clearTimeout(timeout);\n }\n\n clean() {\n this._timeouts.forEach(timeout => void window.clearTimeout(timeout));\n\n this._timeouts.clear();\n }\n\n}\n\nclass Controller {\n constructor(handlers) {\n _defineProperty(this, \"gestures\", new Set());\n\n _defineProperty(this, \"_targetEventStore\", new EventStore(this));\n\n _defineProperty(this, \"gestureEventStores\", {});\n\n _defineProperty(this, \"gestureTimeoutStores\", {});\n\n _defineProperty(this, \"handlers\", {});\n\n _defineProperty(this, \"config\", {});\n\n _defineProperty(this, \"pointerIds\", new Set());\n\n _defineProperty(this, \"touchIds\", new Set());\n\n _defineProperty(this, \"state\", {\n shared: {\n shiftKey: false,\n metaKey: false,\n ctrlKey: false,\n altKey: false\n }\n });\n\n resolveGestures(this, handlers);\n }\n\n setEventIds(event) {\n if (isTouch(event)) {\n this.touchIds = new Set(touchIds(event));\n } else if ('pointerId' in event) {\n if (event.type === 'pointerup' || event.type === 'pointercancel') this.pointerIds.delete(event.pointerId);else if (event.type === 'pointerdown') this.pointerIds.add(event.pointerId);\n }\n }\n\n applyHandlers(handlers, nativeHandlers) {\n this.handlers = handlers;\n this.nativeHandlers = nativeHandlers;\n }\n\n applyConfig(config, gestureKey) {\n this.config = parse(config, gestureKey);\n }\n\n clean() {\n this._targetEventStore.clean();\n\n for (const key of this.gestures) {\n this.gestureEventStores[key].clean();\n this.gestureTimeoutStores[key].clean();\n }\n }\n\n effect() {\n if (this.config.shared.target) this.bind();\n return () => this._targetEventStore.clean();\n }\n\n bind(...args) {\n const sharedConfig = this.config.shared;\n const eventOptions = sharedConfig.eventOptions;\n const props = {};\n let target;\n\n if (sharedConfig.target) {\n target = sharedConfig.target();\n if (!target) return;\n }\n\n const bindFunction = bindToProps(props, eventOptions, !!target);\n\n if (sharedConfig.enabled) {\n for (const gestureKey of this.gestures) {\n if (this.config[gestureKey].enabled) {\n const Engine = EngineMap.get(gestureKey);\n new Engine(this, args, gestureKey).bind(bindFunction);\n }\n }\n\n for (const eventKey in this.nativeHandlers) {\n bindFunction(eventKey, '', event => this.nativeHandlers[eventKey](_objectSpread2(_objectSpread2({}, this.state.shared), {}, {\n event,\n args\n })), undefined, true);\n }\n }\n\n for (const handlerProp in props) {\n props[handlerProp] = chain(...props[handlerProp]);\n }\n\n if (!target) return props;\n\n for (const handlerProp in props) {\n const {\n device,\n capture,\n passive\n } = parseProp(handlerProp);\n\n this._targetEventStore.add(target, device, '', props[handlerProp], {\n capture,\n passive\n });\n }\n }\n\n}\n\nfunction setupGesture(ctrl, gestureKey) {\n ctrl.gestures.add(gestureKey);\n ctrl.gestureEventStores[gestureKey] = new EventStore(ctrl);\n ctrl.gestureTimeoutStores[gestureKey] = new TimeoutStore();\n}\n\nfunction resolveGestures(ctrl, internalHandlers) {\n if (internalHandlers.drag) setupGesture(ctrl, 'drag');\n if (internalHandlers.wheel) setupGesture(ctrl, 'wheel');\n if (internalHandlers.scroll) setupGesture(ctrl, 'scroll');\n if (internalHandlers.move) setupGesture(ctrl, 'move');\n if (internalHandlers.pinch) setupGesture(ctrl, 'pinch');\n if (internalHandlers.hover) setupGesture(ctrl, 'hover');\n}\n\nconst bindToProps = (props, eventOptions, withPassiveOption) => (device, action, handler, options = {}, isNative = false) => {\n var _options$capture, _options$passive;\n\n const capture = (_options$capture = options.capture) !== null && _options$capture !== void 0 ? _options$capture : eventOptions.capture;\n const passive = (_options$passive = options.passive) !== null && _options$passive !== void 0 ? _options$passive : eventOptions.passive;\n let handlerProp = isNative ? device : toHandlerProp(device, action, capture);\n if (withPassiveOption && passive) handlerProp += 'Passive';\n props[handlerProp] = props[handlerProp] || [];\n props[handlerProp].push(handler);\n};\n\nconst RE_NOT_NATIVE = /^on(Drag|Wheel|Scroll|Move|Pinch|Hover)/;\n\nfunction sortHandlers(_handlers) {\n const native = {};\n const handlers = {};\n const actions = new Set();\n\n for (let key in _handlers) {\n if (RE_NOT_NATIVE.test(key)) {\n actions.add(RegExp.lastMatch);\n handlers[key] = _handlers[key];\n } else {\n native[key] = _handlers[key];\n }\n }\n\n return [handlers, native, actions];\n}\n\nfunction registerGesture(actions, handlers, handlerKey, key, internalHandlers, config) {\n if (!actions.has(handlerKey)) return;\n\n if (!EngineMap.has(key)) {\n if (process.env.NODE_ENV === 'development') {\n console.warn(`[@use-gesture]: You've created a custom handler that that uses the \\`${key}\\` gesture but isn't properly configured.\\n\\nPlease add \\`${key}Action\\` when creating your handler.`);\n }\n\n return;\n }\n\n const startKey = handlerKey + 'Start';\n const endKey = handlerKey + 'End';\n\n const fn = state => {\n let memo = undefined;\n if (state.first && startKey in handlers) handlers[startKey](state);\n if (handlerKey in handlers) memo = handlers[handlerKey](state);\n if (state.last && endKey in handlers) handlers[endKey](state);\n return memo;\n };\n\n internalHandlers[key] = fn;\n config[key] = config[key] || {};\n}\n\nfunction parseMergedHandlers(mergedHandlers, mergedConfig) {\n const [handlers, nativeHandlers, actions] = sortHandlers(mergedHandlers);\n const internalHandlers = {};\n registerGesture(actions, handlers, 'onDrag', 'drag', internalHandlers, mergedConfig);\n registerGesture(actions, handlers, 'onWheel', 'wheel', internalHandlers, mergedConfig);\n registerGesture(actions, handlers, 'onScroll', 'scroll', internalHandlers, mergedConfig);\n registerGesture(actions, handlers, 'onPinch', 'pinch', internalHandlers, mergedConfig);\n registerGesture(actions, handlers, 'onMove', 'move', internalHandlers, mergedConfig);\n registerGesture(actions, handlers, 'onHover', 'hover', internalHandlers, mergedConfig);\n return {\n handlers: internalHandlers,\n config: mergedConfig,\n nativeHandlers\n };\n}\n\nexport { Controller, parseMergedHandlers };\n","import { registerAction, dragAction, pinchAction, wheelAction, scrollAction, moveAction, hoverAction } from '@use-gesture/core/actions';\nexport * from '@use-gesture/core/actions';\nimport React from 'react';\nimport { Controller, parseMergedHandlers } from '@use-gesture/core';\nexport * from '@use-gesture/core/utils';\nexport * from '@use-gesture/core/types';\n\nfunction useRecognizers(handlers, config = {}, gestureKey, nativeHandlers) {\n const ctrl = React.useMemo(() => new Controller(handlers), []);\n ctrl.applyHandlers(handlers, nativeHandlers);\n ctrl.applyConfig(config, gestureKey);\n React.useEffect(ctrl.effect.bind(ctrl));\n React.useEffect(() => {\n return ctrl.clean.bind(ctrl);\n }, []);\n\n if (config.target === undefined) {\n return ctrl.bind.bind(ctrl);\n }\n\n return undefined;\n}\n\nfunction useDrag(handler, config) {\n registerAction(dragAction);\n return useRecognizers({\n drag: handler\n }, config || {}, 'drag');\n}\n\nfunction usePinch(handler, config) {\n registerAction(pinchAction);\n return useRecognizers({\n pinch: handler\n }, config || {}, 'pinch');\n}\n\nfunction useWheel(handler, config) {\n registerAction(wheelAction);\n return useRecognizers({\n wheel: handler\n }, config || {}, 'wheel');\n}\n\nfunction useScroll(handler, config) {\n registerAction(scrollAction);\n return useRecognizers({\n scroll: handler\n }, config || {}, 'scroll');\n}\n\nfunction useMove(handler, config) {\n registerAction(moveAction);\n return useRecognizers({\n move: handler\n }, config || {}, 'move');\n}\n\nfunction useHover(handler, config) {\n registerAction(hoverAction);\n return useRecognizers({\n hover: handler\n }, config || {}, 'hover');\n}\n\nfunction createUseGesture(actions) {\n actions.forEach(registerAction);\n return function useGesture(_handlers, _config) {\n const {\n handlers,\n nativeHandlers,\n config\n } = parseMergedHandlers(_handlers, _config || {});\n return useRecognizers(handlers, config, undefined, nativeHandlers);\n };\n}\n\nfunction useGesture(handlers, config) {\n const hook = createUseGesture([dragAction, pinchAction, scrollAction, wheelAction, moveAction, hoverAction]);\n return hook(handlers, config || {});\n}\n\nexport { createUseGesture, useDrag, useGesture, useHover, useMove, usePinch, useScroll, useWheel };\n","import * as React from 'react';\nimport { useLayoutEffect } from '@radix-ui/react-use-layout-effect';\n\n// We `toString()` to prevent bundlers from trying to `import { useId } from 'react';`\nconst useReactId = (React as any)['useId'.toString()] || (() => undefined);\nlet count = 0;\n\nfunction useId(deterministicId?: string): string {\n const [id, setId] = React.useState(useReactId());\n // React versions older than 18 will have client-side ids only.\n useLayoutEffect(() => {\n if (!deterministicId) setId((reactId) => reactId ?? String(count++));\n }, [deterministicId]);\n return deterministicId || (id ? `radix-${id}` : '');\n}\n\n// DEPRECATED\nfunction IdProvider({ children }: { children: React.ReactNode }) {\n React.useEffect(() => {\n console.warn(ID_PROVIDER_DEPRECATED);\n }, []);\n return <>{children};\n}\n\nconst ID_PROVIDER_DEPRECATED = `Warning: The \\`IdProvider\\` has been deprecated. For details, see https://radix-ui.com/docs/primitives/utilities/id-provider`;\n\nexport { IdProvider, useId };\n","type Measurable = { getBoundingClientRect(): ClientRect };\n\n/**\n * Observes an element's rectangle on screen (getBoundingClientRect)\n * This is useful to track elements on the screen and attach other elements\n * that might be in different layers, etc.\n */\nfunction observeElementRect(\n /** The element whose rect to observe */\n elementToObserve: Measurable,\n /** The callback which will be called when the rect changes */\n callback: CallbackFn\n) {\n const observedData = observedElements.get(elementToObserve);\n\n if (observedData === undefined) {\n // add the element to the map of observed elements with its first callback\n // because this is the first time this element is observed\n observedElements.set(elementToObserve, { rect: {} as ClientRect, callbacks: [callback] });\n\n if (observedElements.size === 1) {\n // start the internal loop once at least 1 element is observed\n rafId = requestAnimationFrame(runLoop);\n }\n } else {\n // only add a callback for this element as it's already observed\n observedData.callbacks.push(callback);\n callback(elementToObserve.getBoundingClientRect());\n }\n\n return () => {\n const observedData = observedElements.get(elementToObserve);\n if (observedData === undefined) return;\n\n // start by removing the callback\n const index = observedData.callbacks.indexOf(callback);\n if (index > -1) {\n observedData.callbacks.splice(index, 1);\n }\n\n if (observedData.callbacks.length === 0) {\n // stop observing this element because there are no\n // callbacks registered for it anymore\n observedElements.delete(elementToObserve);\n\n if (observedElements.size === 0) {\n // stop the internal loop once no elements are observed anymore\n cancelAnimationFrame(rafId);\n }\n }\n };\n}\n\n// ========================================================================\n// module internals\n\ntype CallbackFn = (rect: ClientRect) => void;\n\ntype ObservedData = {\n rect: ClientRect;\n callbacks: Array;\n};\n\nlet rafId: number;\nconst observedElements: Map = new Map();\n\nfunction runLoop() {\n const changedRectsData: Array = [];\n\n // process all DOM reads first (getBoundingClientRect)\n observedElements.forEach((data, element) => {\n const newRect = element.getBoundingClientRect();\n\n // gather all the data for elements whose rects have changed\n if (!rectEquals(data.rect, newRect)) {\n data.rect = newRect;\n changedRectsData.push(data);\n }\n });\n\n // group DOM writes here after the DOM reads (getBoundingClientRect)\n // as DOM writes will most likely happen with the callbacks\n changedRectsData.forEach((data) => {\n data.callbacks.forEach((callback) => callback(data.rect));\n });\n\n rafId = requestAnimationFrame(runLoop);\n}\n// ========================================================================\n\n/**\n * Returns whether 2 rects are equal in values\n */\nfunction rectEquals(rect1: ClientRect, rect2: ClientRect) {\n return (\n rect1.width === rect2.width &&\n rect1.height === rect2.height &&\n rect1.top === rect2.top &&\n rect1.right === rect2.right &&\n rect1.bottom === rect2.bottom &&\n rect1.left === rect2.left\n );\n}\n\nexport { observeElementRect };\nexport type { Measurable };\n","import * as React from 'react';\nimport { Slot } from '@radix-ui/react-slot';\n\nconst NODES = [\n 'a',\n 'button',\n 'div',\n 'h2',\n 'h3',\n 'img',\n 'li',\n 'nav',\n 'p',\n 'span',\n 'svg',\n 'ul',\n] as const;\n\n// Temporary while we await merge of this fix:\n// https://github.com/DefinitelyTyped/DefinitelyTyped/pull/55396\n// prettier-ignore\ntype PropsWithoutRef

= P extends any ? ('ref' extends keyof P ? Pick> : P) : P;\ntype ComponentPropsWithoutRef = PropsWithoutRef<\n React.ComponentProps\n>;\n\ntype Primitives = { [E in typeof NODES[number]]: PrimitiveForwardRefComponent };\ntype PrimitivePropsWithRef = React.ComponentPropsWithRef & {\n asChild?: boolean;\n};\n\ninterface PrimitiveForwardRefComponent\n extends React.ForwardRefExoticComponent> {}\n\n/* -------------------------------------------------------------------------------------------------\n * Primitive\n * -----------------------------------------------------------------------------------------------*/\n\nconst Primitive = NODES.reduce(\n (primitive, node) => ({\n ...primitive,\n [node]: React.forwardRef((props: PrimitivePropsWithRef, forwardedRef: any) => {\n const { asChild, ...primitiveProps } = props;\n const Comp: any = asChild ? Slot : node;\n\n React.useEffect(() => {\n (window as any)[Symbol.for('radix-ui')] = true;\n }, []);\n\n // DEPRECATED\n if ((props as any).as) console.error(AS_ERROR);\n return ;\n }),\n }),\n {} as Primitives\n);\n\n/* -----------------------------------------------------------------------------------------------*/\n\nconst AS_ERROR = `Warning: The \\`as\\` prop has been removed in favour of \\`asChild\\`. For details, see https://radix-ui.com/docs/primitives/overview/styling#changing-the-rendered-element`;\n\nconst Root = Primitive;\n\nexport {\n Primitive,\n //\n Root,\n};\nexport type { ComponentPropsWithoutRef, PrimitivePropsWithRef };\n","import * as React from 'react';\nimport { Primitive } from '@radix-ui/react-primitive';\n\nimport type * as Radix from '@radix-ui/react-primitive';\n\n/* -------------------------------------------------------------------------------------------------\n * VisuallyHidden\n * -----------------------------------------------------------------------------------------------*/\n\nconst NAME = 'VisuallyHidden';\n\ntype VisuallyHiddenElement = React.ElementRef;\ntype PrimitiveSpanProps = Radix.ComponentPropsWithoutRef;\ninterface VisuallyHiddenProps extends PrimitiveSpanProps {}\n\nconst VisuallyHidden = React.forwardRef(\n (props, forwardedRef) => {\n return (\n \n );\n }\n);\n\nVisuallyHidden.displayName = NAME;\n\n/* -----------------------------------------------------------------------------------------------*/\n\nconst Root = VisuallyHidden;\n\nexport {\n VisuallyHidden,\n //\n Root,\n};\nexport type { VisuallyHiddenProps };\n","import * as React from 'react';\nimport ReactDOM from 'react-dom';\nimport { useLayoutEffect } from '@radix-ui/react-use-layout-effect';\nimport { Primitive } from '@radix-ui/react-primitive';\n\nimport type * as Radix from '@radix-ui/react-primitive';\n\nconst MAX_Z_INDEX = 2147483647;\n\n/* -------------------------------------------------------------------------------------------------\n * Portal\n * -----------------------------------------------------------------------------------------------*/\n\nconst PORTAL_NAME = 'Portal';\n\ntype PortalElement = React.ElementRef;\ntype PrimitiveDivProps = Radix.ComponentPropsWithoutRef;\ninterface PortalProps extends PrimitiveDivProps {\n containerRef?: React.RefObject;\n}\n\nconst Portal = React.forwardRef((props, forwardedRef) => {\n const { containerRef, style, ...portalProps } = props;\n const hostElement = containerRef?.current ?? globalThis?.document?.body;\n const [, forceUpdate] = React.useState({});\n\n /**\n * containerRef.current won't be set on first render, so we force a re-render.\n * Because we do this in `useLayoutEffect`, we still avoid a flash.\n */\n useLayoutEffect(() => {\n forceUpdate({});\n }, []);\n\n if (hostElement) {\n return ReactDOM.createPortal(\n ,\n hostElement\n );\n }\n\n // bail out of ssr\n return null;\n});\n\nPortal.displayName = PORTAL_NAME;\n\n/* -------------------------------------------------------------------------------------------------\n * UnstablePortal\n * -----------------------------------------------------------------------------------------------*/\n\nconst UNSTABLE_PORTAL_NAME = 'Portal';\n\ntype UnstablePortalElement = React.ElementRef;\ninterface UnstablePortalProps extends PrimitiveDivProps {\n container?: HTMLElement | null;\n}\n\nconst UnstablePortal = React.forwardRef(\n (props, forwardedRef) => {\n const { container = globalThis?.document?.body, ...portalProps } = props;\n return container\n ? ReactDOM.createPortal(, container)\n : null;\n }\n);\n\nUnstablePortal.displayName = UNSTABLE_PORTAL_NAME;\n\n/* -----------------------------------------------------------------------------------------------*/\n\nconst Root = Portal;\n\nexport {\n Portal,\n UnstablePortal,\n //\n Root,\n};\nexport type { PortalProps, UnstablePortalProps };\n","import * as React from 'react';\nimport { Primitive } from '@radix-ui/react-primitive';\n\nimport type * as Radix from '@radix-ui/react-primitive';\n\n/* -------------------------------------------------------------------------------------------------\n * Arrow\n * -----------------------------------------------------------------------------------------------*/\n\nconst NAME = 'Arrow';\n\ntype ArrowElement = React.ElementRef;\ntype PrimitiveSvgProps = Radix.ComponentPropsWithoutRef;\ninterface ArrowProps extends PrimitiveSvgProps {}\n\nconst Arrow = React.forwardRef((props, forwardedRef) => {\n const { children, width = 10, height = 5, ...arrowProps } = props;\n return (\n \n {/* We use their children if they're slotting to replace the whole svg */}\n {props.asChild ? children : }\n \n );\n});\n\nArrow.displayName = NAME;\n\n/* -----------------------------------------------------------------------------------------------*/\n\nconst Root = Arrow;\n\nexport {\n Arrow,\n //\n Root,\n};\nexport type { ArrowProps };\n","/// \n\nimport * as React from 'react';\n\nfunction useSize(element: HTMLElement | SVGElement | null) {\n const [size, setSize] = React.useState<{ width: number; height: number } | undefined>(undefined);\n\n React.useEffect(() => {\n if (element) {\n const resizeObserver = new ResizeObserver((entries) => {\n if (!Array.isArray(entries)) {\n return;\n }\n\n // Since we only observe the one element, we don't need to loop over the\n // array\n if (!entries.length) {\n return;\n }\n\n const entry = entries[0];\n let width: number;\n let height: number;\n\n if ('borderBoxSize' in entry) {\n const borderSizeEntry = entry['borderBoxSize'];\n // iron out differences between browsers\n const borderSize = Array.isArray(borderSizeEntry) ? borderSizeEntry[0] : borderSizeEntry;\n width = borderSize['inlineSize'];\n height = borderSize['blockSize'];\n } else {\n // for browsers that don't support `borderBoxSize`\n // we calculate a rect ourselves to get the correct border box.\n const rect = element.getBoundingClientRect();\n width = rect.width;\n height = rect.height;\n }\n\n setSize({ width, height });\n });\n\n resizeObserver.observe(element, { box: 'border-box' });\n\n return () => {\n setSize(undefined);\n resizeObserver.unobserve(element);\n };\n }\n return;\n }, [element]);\n\n return size;\n}\n\nexport { useSize };\n","import * as React from 'react';\nimport { observeElementRect } from '@radix-ui/rect';\n\nimport type { Measurable } from '@radix-ui/rect';\n\n/**\n * Use this custom hook to get access to an element's rect (getBoundingClientRect)\n * and observe it along time.\n */\nfunction useRect(measurable: Measurable | null) {\n const [rect, setRect] = React.useState();\n React.useEffect(() => {\n if (measurable) {\n const unobserve = observeElementRect(measurable, setRect);\n return () => {\n setRect(undefined);\n unobserve();\n };\n }\n return;\n }, [measurable]);\n return rect;\n}\n\nexport { useRect };\n","import * as React from 'react';\n\nfunction createContext(\n rootComponentName: string,\n defaultContext?: ContextValueType\n) {\n const Context = React.createContext(defaultContext);\n\n function Provider(props: ContextValueType & { children: React.ReactNode }) {\n const { children, ...context } = props;\n // Only re-memoize when prop values change\n // eslint-disable-next-line react-hooks/exhaustive-deps\n const value = React.useMemo(() => context, Object.values(context)) as ContextValueType;\n return {children};\n }\n\n function useContext(consumerName: string) {\n const context = React.useContext(Context);\n if (context) return context;\n if (defaultContext !== undefined) return defaultContext;\n // if a defaultContext wasn't specified, it's a required context.\n throw new Error(`\\`${consumerName}\\` must be used within \\`${rootComponentName}\\``);\n }\n\n Provider.displayName = rootComponentName + 'Provider';\n return [Provider, useContext] as const;\n}\n\n/* -------------------------------------------------------------------------------------------------\n * createContextScope\n * -----------------------------------------------------------------------------------------------*/\n\ntype Scope = { [scopeName: string]: React.Context[] } | undefined;\ntype ScopeHook = (scope: Scope) => { [__scopeProp: string]: Scope };\ninterface CreateScope {\n scopeName: string;\n (): ScopeHook;\n}\n\nfunction createContextScope(scopeName: string, createContextScopeDeps: CreateScope[] = []) {\n let defaultContexts: any[] = [];\n\n /* -----------------------------------------------------------------------------------------------\n * createContext\n * ---------------------------------------------------------------------------------------------*/\n\n function createContext(\n rootComponentName: string,\n defaultContext?: ContextValueType\n ) {\n const BaseContext = React.createContext(defaultContext);\n const index = defaultContexts.length;\n defaultContexts = [...defaultContexts, defaultContext];\n\n function Provider(\n props: ContextValueType & { scope: Scope; children: React.ReactNode }\n ) {\n const { scope, children, ...context } = props;\n const Context = scope?.[scopeName][index] || BaseContext;\n // Only re-memoize when prop values change\n // eslint-disable-next-line react-hooks/exhaustive-deps\n const value = React.useMemo(() => context, Object.values(context)) as ContextValueType;\n return {children};\n }\n\n function useContext(consumerName: string, scope: Scope) {\n const Context = scope?.[scopeName][index] || BaseContext;\n const context = React.useContext(Context);\n if (context) return context;\n if (defaultContext !== undefined) return defaultContext;\n // if a defaultContext wasn't specified, it's a required context.\n throw new Error(`\\`${consumerName}\\` must be used within \\`${rootComponentName}\\``);\n }\n\n Provider.displayName = rootComponentName + 'Provider';\n return [Provider, useContext] as const;\n }\n\n /* -----------------------------------------------------------------------------------------------\n * createScope\n * ---------------------------------------------------------------------------------------------*/\n\n const createScope: CreateScope = () => {\n const scopeContexts = defaultContexts.map((defaultContext) => {\n return React.createContext(defaultContext);\n });\n return function useScope(scope: Scope) {\n const contexts = scope?.[scopeName] || scopeContexts;\n return React.useMemo(\n () => ({ [`__scope${scopeName}`]: { ...scope, [scopeName]: contexts } }),\n [scope, contexts]\n );\n };\n };\n\n createScope.scopeName = scopeName;\n return [createContext, composeContextScopes(createScope, ...createContextScopeDeps)] as const;\n}\n\n/* -------------------------------------------------------------------------------------------------\n * composeContextScopes\n * -----------------------------------------------------------------------------------------------*/\n\nfunction composeContextScopes(...scopes: CreateScope[]) {\n const baseScope = scopes[0];\n if (scopes.length === 1) return baseScope;\n\n const createScope: CreateScope = () => {\n const scopeHooks = scopes.map((createScope) => ({\n useScope: createScope(),\n scopeName: createScope.scopeName,\n }));\n\n return function useComposedScopes(overrideScopes) {\n const nextScopes = scopeHooks.reduce((nextScopes, { useScope, scopeName }) => {\n // We are calling a hook inside a callback which React warns against to avoid inconsistent\n // renders, however, scoping doesn't have render side effects so we ignore the rule.\n // eslint-disable-next-line react-hooks/rules-of-hooks\n const scopeProps = useScope(overrideScopes);\n const currentScope = scopeProps[`__scope${scopeName}`];\n return { ...nextScopes, ...currentScope };\n }, {});\n\n return React.useMemo(() => ({ [`__scope${baseScope.scopeName}`]: nextScopes }), [nextScopes]);\n };\n };\n\n createScope.scopeName = baseScope.scopeName;\n return createScope;\n}\n\n/* -----------------------------------------------------------------------------------------------*/\n\nexport { createContext, createContextScope };\nexport type { CreateScope, Scope };\n","import * as CSS from 'csstype';\n\nconst SIDE_OPTIONS = ['top', 'right', 'bottom', 'left'] as const;\nconst ALIGN_OPTIONS = ['start', 'center', 'end'] as const;\n\ntype Axis = 'x' | 'y';\ntype Side = typeof SIDE_OPTIONS[number];\ntype Align = typeof ALIGN_OPTIONS[number];\ntype Point = { x: number; y: number };\ntype Size = { width: number; height: number };\n\ntype GetPlacementDataOptions = {\n /** The rect of the anchor we are placing around */\n anchorRect?: ClientRect;\n /** The size of the popper to place */\n popperSize?: Size;\n /** An optional arrow size */\n arrowSize?: Size;\n /** An optional arrow offset (along the side, default: 0) */\n arrowOffset?: number;\n /** The desired side */\n side: Side;\n /** An optional side offset (distance from the side, default: 0) */\n sideOffset?: number;\n /** The desired alignment */\n align: Align;\n /** An optional alignment offset (distance along the side, default: 0) */\n alignOffset?: number;\n /** An option to turn on/off the collision handling (default: true) */\n shouldAvoidCollisions?: boolean;\n /** The rect which represents the boundaries for collision checks */\n collisionBoundariesRect?: ClientRect;\n /** The tolerance used for collisions, ie. if we want them to trigger a bit earlier (default: 0) */\n collisionTolerance?: number;\n};\n\ntype PlacementData = {\n popperStyles: CSS.Properties;\n arrowStyles: CSS.Properties;\n placedSide?: Side;\n placedAlign?: Align;\n};\n\n/**\n * Given all the information necessary to compute it,\n * this function calculates all the necessary placement data.\n *\n * It will return:\n *\n * - the styles to apply to the popper (including a custom property that is useful to set the transform origin in the right place)\n * - the styles to apply to the arrow\n * - the placed side (because it might have changed because of collisions)\n * - the placed align (because it might have changed because of collisions)\n */\nfunction getPlacementData({\n anchorRect,\n popperSize,\n arrowSize,\n arrowOffset = 0,\n side,\n sideOffset = 0,\n align,\n alignOffset = 0,\n shouldAvoidCollisions = true,\n collisionBoundariesRect,\n collisionTolerance = 0,\n}: GetPlacementDataOptions): PlacementData {\n // if we're not ready to do all the measurements yet,\n // we return some good default styles\n if (!anchorRect || !popperSize || !collisionBoundariesRect) {\n return {\n popperStyles: UNMEASURED_POPPER_STYLES,\n arrowStyles: UNMEASURED_ARROW_STYLES,\n };\n }\n\n // pre-compute points for all potential placements\n const allPlacementPoints = getAllPlacementPoints(\n popperSize,\n anchorRect,\n sideOffset,\n alignOffset,\n arrowSize\n );\n\n // get point based on side / align\n const popperPoint = allPlacementPoints[side][align];\n\n // if we don't need to avoid collisions, we can stop here\n if (shouldAvoidCollisions === false) {\n const popperStyles = getPlacementStylesForPoint(popperPoint);\n\n let arrowStyles = UNMEASURED_ARROW_STYLES;\n if (arrowSize) {\n arrowStyles = getPopperArrowStyles({ popperSize, arrowSize, arrowOffset, side, align });\n }\n\n const transformOrigin = getTransformOrigin(popperSize, side, align, arrowOffset, arrowSize);\n\n return {\n popperStyles: {\n ...popperStyles,\n ['--radix-popper-transform-origin' as any]: transformOrigin,\n },\n arrowStyles,\n placedSide: side,\n placedAlign: align,\n };\n }\n\n // create a new rect as if element had been moved to new placement\n const popperRect = DOMRect.fromRect({ ...popperSize, ...popperPoint });\n\n // create a new rect representing the collision boundaries but taking into account any added tolerance\n const collisionBoundariesRectWithTolerance = getContractedRect(\n collisionBoundariesRect,\n collisionTolerance\n );\n\n // check for any collisions in new placement\n const popperCollisions = getCollisions(popperRect, collisionBoundariesRectWithTolerance);\n\n // do all the same calculations for the opposite side\n // this is because we need to check for potential collisions if we were to swap side\n const oppositeSide = getOppositeSide(side);\n const oppositeSidePopperPoint = allPlacementPoints[oppositeSide][align];\n const updatedOppositeSidePopperPoint = DOMRect.fromRect({\n ...popperSize,\n ...oppositeSidePopperPoint,\n });\n const oppositeSidePopperCollisions = getCollisions(\n updatedOppositeSidePopperPoint,\n collisionBoundariesRectWithTolerance\n );\n\n // adjust side accounting for collisions / opposite side collisions\n const placedSide = getSideAccountingForCollisions(\n side,\n popperCollisions,\n oppositeSidePopperCollisions\n );\n\n // adjust alignnment accounting for collisions\n const placedAlign = getAlignAccountingForCollisions(\n popperSize,\n anchorRect,\n side,\n align,\n popperCollisions\n );\n\n const placedPopperPoint = allPlacementPoints[placedSide][placedAlign];\n\n // compute adjusted popper / arrow styles\n const popperStyles = getPlacementStylesForPoint(placedPopperPoint);\n\n let arrowStyles = UNMEASURED_ARROW_STYLES;\n if (arrowSize) {\n arrowStyles = getPopperArrowStyles({\n popperSize,\n arrowSize,\n arrowOffset,\n side: placedSide,\n align: placedAlign,\n });\n }\n\n const transformOrigin = getTransformOrigin(\n popperSize,\n placedSide,\n placedAlign,\n arrowOffset,\n arrowSize\n );\n\n return {\n popperStyles: {\n ...popperStyles,\n ['--radix-popper-transform-origin' as any]: transformOrigin,\n },\n arrowStyles,\n placedSide,\n placedAlign,\n };\n}\n\ntype AllPlacementPoints = Record>;\n\nfunction getAllPlacementPoints(\n popperSize: Size,\n anchorRect: ClientRect,\n sideOffset: number = 0,\n alignOffset: number = 0,\n arrowSize?: Size\n): AllPlacementPoints {\n const arrowBaseToTipLength = arrowSize ? arrowSize.height : 0;\n\n const x = getPopperSlotsForAxis(anchorRect, popperSize, 'x');\n const y = getPopperSlotsForAxis(anchorRect, popperSize, 'y');\n\n const topY = y.before - sideOffset - arrowBaseToTipLength; // prettier-ignore\n const bottomY = y.after + sideOffset + arrowBaseToTipLength; // prettier-ignore\n const leftX = x.before - sideOffset - arrowBaseToTipLength; // prettier-ignore\n const rightX = x.after + sideOffset + arrowBaseToTipLength; // prettier-ignore\n\n // prettier-ignore\n const map: AllPlacementPoints = {\n top: {\n start: { x: x.start + alignOffset, y: topY },\n center: { x: x.center, y: topY },\n end: { x: x.end - alignOffset, y: topY },\n },\n right: {\n start: { x: rightX, y: y.start + alignOffset },\n center: { x: rightX, y: y.center },\n end: { x: rightX, y: y.end - alignOffset },\n },\n bottom: {\n start: { x: x.start + alignOffset, y: bottomY },\n center: { x: x.center, y: bottomY },\n end: { x: x.end - alignOffset, y: bottomY },\n },\n left: {\n start: { x: leftX, y: y.start + alignOffset },\n center: { x: leftX, y: y.center },\n end: { x: leftX, y: y.end - alignOffset },\n },\n };\n\n return map;\n}\n\nfunction getPopperSlotsForAxis(anchorRect: ClientRect, popperSize: Size, axis: Axis) {\n const startSide = axis === 'x' ? 'left' : 'top';\n const anchorStart = anchorRect[startSide];\n\n const dimension = axis === 'x' ? 'width' : 'height';\n const anchorDimension = anchorRect[dimension];\n const popperDimension = popperSize[dimension];\n\n // prettier-ignore\n return {\n before: anchorStart - popperDimension,\n start: anchorStart,\n center: anchorStart + (anchorDimension - popperDimension) / 2,\n end: anchorStart + anchorDimension - popperDimension,\n after: anchorStart + anchorDimension,\n };\n}\n\n/**\n * Gets an adjusted side based on collision information\n */\nfunction getSideAccountingForCollisions(\n /** The side we want to ideally position to */\n side: Side,\n /** The collisions for this given side */\n collisions: Collisions,\n /** The collisions for the opposite side (if we were to swap side) */\n oppositeSideCollisions: Collisions\n): Side {\n const oppositeSide = getOppositeSide(side);\n // in order to prevent premature jumps\n // we only swap side if there's enough space to fit on the opposite side\n return collisions[side] && !oppositeSideCollisions[oppositeSide] ? oppositeSide : side;\n}\n\n/**\n * Gets an adjusted alignment based on collision information\n */\nfunction getAlignAccountingForCollisions(\n /** The size of the popper to place */\n popperSize: Size,\n /** The size of the anchor we are placing around */\n anchorSize: Size,\n /** The final side */\n side: Side,\n /** The desired align */\n align: Align,\n /** The collisions */\n collisions: Collisions\n): Align {\n const isHorizontalSide = side === 'top' || side === 'bottom';\n const startBound = isHorizontalSide ? 'left' : 'top';\n const endBound = isHorizontalSide ? 'right' : 'bottom';\n const dimension = isHorizontalSide ? 'width' : 'height';\n const isAnchorBigger = anchorSize[dimension] > popperSize[dimension];\n\n if (align === 'start' || align === 'center') {\n if ((collisions[startBound] && isAnchorBigger) || (collisions[endBound] && !isAnchorBigger)) {\n return 'end';\n }\n }\n\n if (align === 'end' || align === 'center') {\n if ((collisions[endBound] && isAnchorBigger) || (collisions[startBound] && !isAnchorBigger)) {\n return 'start';\n }\n }\n\n return align;\n}\n\nfunction getPlacementStylesForPoint(point: Point): CSS.Properties {\n const x = Math.round(point.x + window.scrollX);\n const y = Math.round(point.y + window.scrollY);\n return {\n position: 'absolute',\n top: 0,\n left: 0,\n minWidth: 'max-content',\n willChange: 'transform',\n transform: `translate3d(${x}px, ${y}px, 0)`,\n };\n}\n\nfunction getTransformOrigin(\n popperSize: Size,\n side: Side,\n align: Align,\n arrowOffset: number,\n arrowSize?: Size\n): CSS.Properties['transformOrigin'] {\n const isHorizontalSide = side === 'top' || side === 'bottom';\n\n const arrowBaseLength = arrowSize ? arrowSize.width : 0;\n const arrowBaseToTipLength = arrowSize ? arrowSize.height : 0;\n const sideOffset = arrowBaseToTipLength;\n const alignOffset = arrowBaseLength / 2 + arrowOffset;\n\n let x = '';\n let y = '';\n\n if (isHorizontalSide) {\n x = {\n start: `${alignOffset}px`,\n center: 'center',\n end: `${popperSize.width - alignOffset}px`,\n }[align];\n\n y = side === 'top' ? `${popperSize.height + sideOffset}px` : `${-sideOffset}px`;\n } else {\n x = side === 'left' ? `${popperSize.width + sideOffset}px` : `${-sideOffset}px`;\n\n y = {\n start: `${alignOffset}px`,\n center: 'center',\n end: `${popperSize.height - alignOffset}px`,\n }[align];\n }\n\n return `${x} ${y}`;\n}\n\nconst UNMEASURED_POPPER_STYLES: CSS.Properties = {\n // position: 'fixed' here is important because it will take the popper\n // out of the flow so it does not disturb the position of the anchor\n position: 'fixed',\n top: 0,\n left: 0,\n opacity: 0,\n transform: 'translate3d(0, -200%, 0)',\n};\n\nconst UNMEASURED_ARROW_STYLES: CSS.Properties = {\n // given the arrow is nested inside the popper,\n // make sure that it is out of the flow and doesn't hinder then popper's measurement\n position: 'absolute',\n opacity: 0,\n};\n\ntype GetArrowStylesOptions = {\n /** The size of the popper to place */\n popperSize: Size;\n /** The size of the arrow itself */\n arrowSize: Size;\n /** An offset for the arrow along the align axis */\n arrowOffset: number;\n /** The side where the arrow points to */\n side: Side;\n /** The alignment of the arrow along the side */\n align: Align;\n};\n\n/**\n * Computes the styles necessary to position, rotate and align the arrow correctly.\n * It can adjust itself based on anchor/popper size, side/align and an optional offset.\n */\nfunction getPopperArrowStyles({\n popperSize,\n arrowSize,\n arrowOffset,\n side,\n align,\n}: GetArrowStylesOptions): CSS.Properties {\n const popperCenterX = (popperSize.width - arrowSize.width) / 2;\n const popperCenterY = (popperSize.height - arrowSize.width) / 2;\n\n const rotationMap = { top: 0, right: 90, bottom: 180, left: -90 };\n const rotation = rotationMap[side];\n const arrowMaxDimension = Math.max(arrowSize.width, arrowSize.height);\n\n const styles: CSS.Properties = {\n // we make sure we put the arrow inside a 1:1 ratio container\n // this is to make the rotation handling simpler\n // as we do no need to worry about changing the transform-origin\n width: `${arrowMaxDimension}px`,\n height: `${arrowMaxDimension}px`,\n\n // rotate the arrow appropriately\n transform: `rotate(${rotation}deg)`,\n willChange: 'transform',\n\n // position the arrow appropriately\n position: 'absolute',\n [side]: '100%',\n\n // Because the arrow gets rotated (see `transform above`)\n // and we are putting it inside a 1:1 ratio container\n // we need to adjust the CSS direction from `ltr` to `rtl`\n // in some circumstances\n direction: getArrowCssDirection(side, align),\n };\n\n if (side === 'top' || side === 'bottom') {\n if (align === 'start') {\n styles.left = `${arrowOffset}px`;\n }\n if (align === 'center') {\n styles.left = `${popperCenterX}px`;\n }\n if (align === 'end') {\n styles.right = `${arrowOffset}px`;\n }\n }\n\n if (side === 'left' || side === 'right') {\n if (align === 'start') {\n styles.top = `${arrowOffset}px`;\n }\n if (align === 'center') {\n styles.top = `${popperCenterY}px`;\n }\n if (align === 'end') {\n styles.bottom = `${arrowOffset}px`;\n }\n }\n\n return styles;\n}\n\n/**\n * Adjusts the arrow's CSS direction (`ltr` / `rtl`)\n */\nfunction getArrowCssDirection(side: Side, align: Align): CSS.Property.Direction {\n if ((side === 'top' || side === 'right') && align === 'end') {\n return 'rtl';\n }\n\n if ((side === 'bottom' || side === 'left') && align !== 'end') {\n return 'rtl';\n }\n\n return 'ltr';\n}\n\n/**\n * Gets the opposite side of a given side (ie. top => bottom, left => right, …)\n */\nfunction getOppositeSide(side: Side): Side {\n const oppositeSides: Record = {\n top: 'bottom',\n right: 'left',\n bottom: 'top',\n left: 'right',\n };\n return oppositeSides[side];\n}\n\n/**\n * Creates a new rect (`ClientRect`) based on a given one but contracted by\n * a given amout on each side.\n */\nfunction getContractedRect(rect: ClientRect, amount: number) {\n return DOMRect.fromRect({\n width: rect.width - amount * 2,\n height: rect.height - amount * 2,\n x: rect.left + amount,\n y: rect.top + amount,\n });\n}\n\n/**\n * Gets collisions for each side of a rect (top, right, bottom, left)\n */\nfunction getCollisions(\n /** The rect to test collisions against */\n rect: ClientRect,\n /** The rect which represents the boundaries for collision checks */\n collisionBoundariesRect: ClientRect\n) {\n return {\n top: rect.top < collisionBoundariesRect.top,\n right: rect.right > collisionBoundariesRect.right,\n bottom: rect.bottom > collisionBoundariesRect.bottom,\n left: rect.left < collisionBoundariesRect.left,\n };\n}\n\ntype Collisions = ReturnType;\n\nexport { getPlacementData, SIDE_OPTIONS, ALIGN_OPTIONS };\nexport type { Side, Align };\n","import * as React from 'react';\nimport { getPlacementData } from '@radix-ui/popper';\nimport { useComposedRefs } from '@radix-ui/react-compose-refs';\nimport { createContextScope } from '@radix-ui/react-context';\nimport { useRect } from '@radix-ui/react-use-rect';\nimport { useSize } from '@radix-ui/react-use-size';\nimport { Primitive } from '@radix-ui/react-primitive';\nimport * as ArrowPrimitive from '@radix-ui/react-arrow';\n\nimport type * as Radix from '@radix-ui/react-primitive';\nimport type { Scope } from '@radix-ui/react-context';\nimport type { Side, Align } from '@radix-ui/popper';\nimport type { Measurable } from '@radix-ui/rect';\n\n/* -------------------------------------------------------------------------------------------------\n * Popper\n * -----------------------------------------------------------------------------------------------*/\n\nconst POPPER_NAME = 'Popper';\n\ntype ScopedProps

= P & { __scopePopper?: Scope };\nconst [createPopperContext, createPopperScope] = createContextScope(POPPER_NAME);\n\ntype PopperContextValue = {\n anchor: Measurable | null;\n onAnchorChange(anchor: Measurable | null): void;\n};\nconst [PopperProvider, usePopperContext] = createPopperContext(POPPER_NAME);\n\ninterface PopperProps {\n children?: React.ReactNode;\n}\nconst Popper: React.FC = (props: ScopedProps) => {\n const { __scopePopper, children } = props;\n const [anchor, setAnchor] = React.useState(null);\n return (\n \n {children}\n \n );\n};\n\nPopper.displayName = POPPER_NAME;\n\n/* -------------------------------------------------------------------------------------------------\n * PopperAnchor\n * -----------------------------------------------------------------------------------------------*/\n\nconst ANCHOR_NAME = 'PopperAnchor';\n\ntype PopperAnchorElement = React.ElementRef;\ntype PrimitiveDivProps = Radix.ComponentPropsWithoutRef;\ninterface PopperAnchorProps extends PrimitiveDivProps {\n virtualRef?: React.RefObject;\n}\n\nconst PopperAnchor = React.forwardRef(\n (props: ScopedProps, forwardedRef) => {\n const { __scopePopper, virtualRef, ...anchorProps } = props;\n const context = usePopperContext(ANCHOR_NAME, __scopePopper);\n const ref = React.useRef(null);\n const composedRefs = useComposedRefs(forwardedRef, ref);\n\n React.useEffect(() => {\n // Consumer can anchor the popper to something that isn't\n // a DOM node e.g. pointer position, so we override the\n // `anchorRef` with their virtual ref in this case.\n context.onAnchorChange(virtualRef?.current || ref.current);\n });\n\n return virtualRef ? null : ;\n }\n);\n\nPopperAnchor.displayName = ANCHOR_NAME;\n\n/* -------------------------------------------------------------------------------------------------\n * PopperContent\n * -----------------------------------------------------------------------------------------------*/\n\nconst CONTENT_NAME = 'PopperContent';\n\ntype PopperContentContextValue = {\n arrowStyles: React.CSSProperties;\n onArrowChange(arrow: HTMLSpanElement | null): void;\n onArrowOffsetChange(offset?: number): void;\n};\n\nconst [PopperContentProvider, useContentContext] =\n createPopperContext(CONTENT_NAME);\n\ntype PopperContentElement = React.ElementRef;\ninterface PopperContentProps extends PrimitiveDivProps {\n side?: Side;\n sideOffset?: number;\n align?: Align;\n alignOffset?: number;\n collisionTolerance?: number;\n avoidCollisions?: boolean;\n}\n\nconst PopperContent = React.forwardRef(\n (props: ScopedProps, forwardedRef) => {\n const {\n __scopePopper,\n side = 'bottom',\n sideOffset,\n align = 'center',\n alignOffset,\n collisionTolerance,\n avoidCollisions = true,\n ...contentProps\n } = props;\n\n const context = usePopperContext(CONTENT_NAME, __scopePopper);\n const [arrowOffset, setArrowOffset] = React.useState();\n const anchorRect = useRect(context.anchor);\n const [content, setContent] = React.useState(null);\n const contentSize = useSize(content);\n const [arrow, setArrow] = React.useState(null);\n const arrowSize = useSize(arrow);\n\n const composedRefs = useComposedRefs(forwardedRef, (node) => setContent(node));\n\n const windowSize = useWindowSize();\n const collisionBoundariesRect = windowSize\n ? DOMRect.fromRect({ ...windowSize, x: 0, y: 0 })\n : undefined;\n\n const { popperStyles, arrowStyles, placedSide, placedAlign } = getPlacementData({\n anchorRect,\n popperSize: contentSize,\n arrowSize,\n\n // config\n arrowOffset,\n side,\n sideOffset,\n align,\n alignOffset,\n shouldAvoidCollisions: avoidCollisions,\n collisionBoundariesRect,\n collisionTolerance,\n });\n const isPlaced = placedSide !== undefined;\n\n return (\n

\n \n \n \n
\n );\n }\n);\n\nPopperContent.displayName = CONTENT_NAME;\n\n/* -------------------------------------------------------------------------------------------------\n * PopperArrow\n * -----------------------------------------------------------------------------------------------*/\n\nconst ARROW_NAME = 'PopperArrow';\n\ntype PopperArrowElement = React.ElementRef;\ntype ArrowProps = Radix.ComponentPropsWithoutRef;\ninterface PopperArrowProps extends ArrowProps {\n offset?: number;\n}\n\nconst PopperArrow = React.forwardRef(function PopperArrow(\n props: ScopedProps,\n forwardedRef\n) {\n const { __scopePopper, offset, ...arrowProps } = props;\n const context = useContentContext(ARROW_NAME, __scopePopper);\n const { onArrowOffsetChange } = context;\n\n // send the Arrow's offset up to Popper\n React.useEffect(() => onArrowOffsetChange(offset), [onArrowOffsetChange, offset]);\n\n return (\n \n \n \n \n \n );\n});\n\nPopperArrow.displayName = ARROW_NAME;\n\n/* -----------------------------------------------------------------------------------------------*/\n\nconst WINDOW_RESIZE_DEBOUNCE_WAIT_IN_MS = 100;\n\nfunction useWindowSize() {\n const [windowSize, setWindowSize] = React.useState<{ width: number; height: number } | undefined>(\n undefined\n );\n\n React.useEffect(() => {\n let debounceTimerId: number;\n\n function updateWindowSize() {\n setWindowSize({ width: window.innerWidth, height: window.innerHeight });\n }\n\n function handleResize() {\n window.clearTimeout(debounceTimerId);\n debounceTimerId = window.setTimeout(updateWindowSize, WINDOW_RESIZE_DEBOUNCE_WAIT_IN_MS);\n }\n\n updateWindowSize();\n window.addEventListener('resize', handleResize);\n return () => window.removeEventListener('resize', handleResize);\n }, []);\n\n return windowSize;\n}\n\nconst Root = Popper;\nconst Anchor = PopperAnchor;\nconst Content = PopperContent;\nconst Arrow = PopperArrow;\n\nexport {\n createPopperScope,\n //\n Popper,\n PopperAnchor,\n PopperContent,\n PopperArrow,\n //\n Root,\n Anchor,\n Content,\n Arrow,\n};\nexport type { PopperProps, PopperAnchorProps, PopperContentProps, PopperArrowProps };\n","import * as React from 'react';\nimport { useComposedRefs } from '@radix-ui/react-compose-refs';\nimport { useLayoutEffect } from '@radix-ui/react-use-layout-effect';\nimport { useStateMachine } from './useStateMachine';\n\ninterface PresenceProps {\n present: boolean;\n children: React.ReactElement | ((props: { present: boolean }) => React.ReactElement);\n}\n\nconst Presence: React.FC = (props) => {\n const { present, children } = props;\n const presence = usePresence(present);\n\n const child = (\n typeof children === 'function'\n ? children({ present: presence.isPresent })\n : React.Children.only(children)\n ) as React.ReactElement;\n\n const ref = useComposedRefs(presence.ref, (child as any).ref);\n const forceMount = typeof children === 'function';\n return forceMount || presence.isPresent ? React.cloneElement(child, { ref }) : null;\n};\n\nPresence.displayName = 'Presence';\n\n/* -------------------------------------------------------------------------------------------------\n * usePresence\n * -----------------------------------------------------------------------------------------------*/\n\nfunction usePresence(present: boolean) {\n const [node, setNode] = React.useState();\n const stylesRef = React.useRef({} as any);\n const prevPresentRef = React.useRef(present);\n const prevAnimationNameRef = React.useRef('none');\n const initialState = present ? 'mounted' : 'unmounted';\n const [state, send] = useStateMachine(initialState, {\n mounted: {\n UNMOUNT: 'unmounted',\n ANIMATION_OUT: 'unmountSuspended',\n },\n unmountSuspended: {\n MOUNT: 'mounted',\n ANIMATION_END: 'unmounted',\n },\n unmounted: {\n MOUNT: 'mounted',\n },\n });\n\n React.useEffect(() => {\n const currentAnimationName = getAnimationName(stylesRef.current);\n prevAnimationNameRef.current = state === 'mounted' ? currentAnimationName : 'none';\n }, [state]);\n\n useLayoutEffect(() => {\n const styles = stylesRef.current;\n const wasPresent = prevPresentRef.current;\n const hasPresentChanged = wasPresent !== present;\n\n if (hasPresentChanged) {\n const prevAnimationName = prevAnimationNameRef.current;\n const currentAnimationName = getAnimationName(styles);\n\n if (present) {\n send('MOUNT');\n } else if (currentAnimationName === 'none' || styles?.display === 'none') {\n // If there is no exit animation or the element is hidden, animations won't run\n // so we unmount instantly\n send('UNMOUNT');\n } else {\n /**\n * When `present` changes to `false`, we check changes to animation-name to\n * determine whether an animation has started. We chose this approach (reading\n * computed styles) because there is no `animationrun` event and `animationstart`\n * fires after `animation-delay` has expired which would be too late.\n */\n const isAnimating = prevAnimationName !== currentAnimationName;\n\n if (wasPresent && isAnimating) {\n send('ANIMATION_OUT');\n } else {\n send('UNMOUNT');\n }\n }\n\n prevPresentRef.current = present;\n }\n }, [present, send]);\n\n useLayoutEffect(() => {\n if (node) {\n /**\n * Triggering an ANIMATION_OUT during an ANIMATION_IN will fire an `animationcancel`\n * event for ANIMATION_IN after we have entered `unmountSuspended` state. So, we\n * make sure we only trigger ANIMATION_END for the currently active animation.\n */\n const handleAnimationEnd = (event: AnimationEvent) => {\n const currentAnimationName = getAnimationName(stylesRef.current);\n const isCurrentAnimation = currentAnimationName.includes(event.animationName);\n if (event.target === node && isCurrentAnimation) {\n send('ANIMATION_END');\n }\n };\n const handleAnimationStart = (event: AnimationEvent) => {\n if (event.target === node) {\n // if animation occurred, store its name as the previous animation.\n prevAnimationNameRef.current = getAnimationName(stylesRef.current);\n }\n };\n node.addEventListener('animationstart', handleAnimationStart);\n node.addEventListener('animationcancel', handleAnimationEnd);\n node.addEventListener('animationend', handleAnimationEnd);\n return () => {\n node.removeEventListener('animationstart', handleAnimationStart);\n node.removeEventListener('animationcancel', handleAnimationEnd);\n node.removeEventListener('animationend', handleAnimationEnd);\n };\n }\n }, [node, send]);\n\n return {\n isPresent: ['mounted', 'unmountSuspended'].includes(state),\n ref: React.useCallback((node: HTMLElement) => {\n if (node) stylesRef.current = getComputedStyle(node);\n setNode(node);\n }, []),\n };\n}\n\n/* -----------------------------------------------------------------------------------------------*/\n\nfunction getAnimationName(styles?: CSSStyleDeclaration) {\n return styles?.animationName || 'none';\n}\n\nexport { Presence };\nexport type { PresenceProps };\n","import * as React from 'react';\n\ntype Machine = { [k: string]: { [k: string]: S } };\ntype MachineState = keyof T;\ntype MachineEvent = keyof UnionToIntersection;\n\n// 🤯 https://fettblog.eu/typescript-union-to-intersection/\ntype UnionToIntersection = (T extends any ? (x: T) => any : never) extends (x: infer R) => any\n ? R\n : never;\n\nexport function useStateMachine(\n initialState: MachineState,\n machine: M & Machine>\n) {\n return React.useReducer((state: MachineState, event: MachineEvent): MachineState => {\n const nextState = (machine[state] as any)[event];\n return nextState ?? state;\n }, initialState);\n}\n","import * as React from 'react';\n\nfunction usePrevious(value: T) {\n // The ref object is a generic container whose current property is mutable ...\n // ... and can hold any value, similar to an instance property on a class\n const ref = React.useRef(value);\n\n // Store current value in ref\n React.useEffect(() => {\n ref.current = value;\n }, [value]); // Only re-run if value changes\n\n // Return previous value (happens before update in useEffect above)\n return ref.current;\n}\n\nexport { usePrevious };\n","import * as React from 'react';\n\n/**\n * A custom hook that converts a callback to a ref to avoid triggering re-renders when passed as a\n * prop or avoid re-executing effects when passed as a dependency\n */\nfunction useCallbackRef any>(callback: T | undefined): T {\n const callbackRef = React.useRef(callback);\n\n React.useEffect(() => {\n callbackRef.current = callback;\n });\n\n // https://github.com/facebook/react/issues/19240\n return React.useMemo(() => ((...args) => callbackRef.current?.(...args)) as T, []);\n}\n\nexport { useCallbackRef };\n","function composeEventHandlers(\n originalEventHandler?: (event: E) => void,\n ourEventHandler?: (event: E) => void,\n { checkForDefaultPrevented = true } = {}\n) {\n return function handleEvent(event: E) {\n originalEventHandler?.(event);\n\n if (checkForDefaultPrevented === false || !((event as unknown) as Event).defaultPrevented) {\n return ourEventHandler?.(event);\n }\n };\n}\n\nexport { composeEventHandlers };\n","import * as React from 'react';\nimport { composeEventHandlers } from '@radix-ui/primitive';\nimport { useComposedRefs } from '@radix-ui/react-compose-refs';\nimport { createContextScope } from '@radix-ui/react-context';\nimport { useControllableState } from '@radix-ui/react-use-controllable-state';\nimport { useEscapeKeydown } from '@radix-ui/react-use-escape-keydown';\nimport { usePrevious } from '@radix-ui/react-use-previous';\nimport { useRect } from '@radix-ui/react-use-rect';\nimport { Presence } from '@radix-ui/react-presence';\nimport { Primitive } from '@radix-ui/react-primitive';\nimport * as PopperPrimitive from '@radix-ui/react-popper';\nimport { createPopperScope } from '@radix-ui/react-popper';\nimport { Portal } from '@radix-ui/react-portal';\nimport { Slottable } from '@radix-ui/react-slot';\nimport * as VisuallyHiddenPrimitive from '@radix-ui/react-visually-hidden';\nimport { useId } from '@radix-ui/react-id';\n\nimport type * as Radix from '@radix-ui/react-primitive';\nimport type { Scope } from '@radix-ui/react-context';\n\ntype ScopedProps

= P & { __scopeTooltip?: Scope };\nconst [createTooltipContext, createTooltipScope] = createContextScope('Tooltip', [\n createPopperScope,\n]);\nconst usePopperScope = createPopperScope();\n\n/* -------------------------------------------------------------------------------------------------\n * TooltipProvider\n * -----------------------------------------------------------------------------------------------*/\n\nconst PROVIDER_NAME = 'TooltipProvider';\nconst DEFAULT_DELAY_DURATION = 700;\nconst TOOLTIP_OPEN = 'tooltip.open';\n\ntype TooltipProviderContextValue = {\n isOpenDelayed: boolean;\n delayDuration: number;\n onOpen(): void;\n onClose(): void;\n};\n\nconst [TooltipProviderContextProvider, useTooltipProviderContext] =\n createTooltipContext(PROVIDER_NAME, {\n isOpenDelayed: true,\n delayDuration: DEFAULT_DELAY_DURATION,\n onOpen: () => {},\n onClose: () => {},\n });\n\ninterface TooltipProviderProps {\n /**\n * The duration from when the mouse enters the trigger until the tooltip gets opened.\n * @defaultValue 700\n */\n delayDuration?: number;\n /**\n * How much time a user has to enter another trigger without incurring a delay again.\n * @defaultValue 300\n */\n skipDelayDuration?: number;\n children: React.ReactNode;\n}\n\nconst TooltipProvider: React.FC = (\n props: ScopedProps\n) => {\n const {\n __scopeTooltip,\n delayDuration = DEFAULT_DELAY_DURATION,\n skipDelayDuration = 300,\n children,\n } = props;\n const [isOpenDelayed, setIsOpenDelayed] = React.useState(true);\n const skipDelayTimerRef = React.useRef(0);\n\n React.useEffect(() => {\n const skipDelayTimer = skipDelayTimerRef.current;\n return () => window.clearTimeout(skipDelayTimer);\n }, []);\n\n return (\n {\n window.clearTimeout(skipDelayTimerRef.current);\n setIsOpenDelayed(false);\n }, [])}\n onClose={React.useCallback(() => {\n window.clearTimeout(skipDelayTimerRef.current);\n skipDelayTimerRef.current = window.setTimeout(\n () => setIsOpenDelayed(true),\n skipDelayDuration\n );\n }, [skipDelayDuration])}\n >\n {children}\n \n );\n};\n\nTooltipProvider.displayName = PROVIDER_NAME;\n\n/* -------------------------------------------------------------------------------------------------\n * Tooltip\n * -----------------------------------------------------------------------------------------------*/\n\nconst TOOLTIP_NAME = 'Tooltip';\n\ntype TooltipContextValue = {\n contentId: string;\n open: boolean;\n stateAttribute: 'closed' | 'delayed-open' | 'instant-open';\n trigger: TooltipTriggerElement | null;\n onTriggerChange(trigger: TooltipTriggerElement | null): void;\n onTriggerEnter(): void;\n onOpen(): void;\n onClose(): void;\n};\n\nconst [TooltipContextProvider, useTooltipContext] =\n createTooltipContext(TOOLTIP_NAME);\n\ninterface TooltipProps {\n open?: boolean;\n defaultOpen?: boolean;\n onOpenChange?: (open: boolean) => void;\n\n /**\n * The duration from when the mouse enters the trigger until the tooltip gets opened. This will\n * override the prop with the same name passed to Provider.\n * @defaultValue 700\n */\n delayDuration?: number;\n children?: React.ReactNode;\n}\n\nconst Tooltip: React.FC = (props: ScopedProps) => {\n const {\n __scopeTooltip,\n children,\n open: openProp,\n defaultOpen = false,\n onOpenChange,\n delayDuration: delayDurationProp,\n } = props;\n const context = useTooltipProviderContext(TOOLTIP_NAME, __scopeTooltip);\n const popperScope = usePopperScope(__scopeTooltip);\n const [trigger, setTrigger] = React.useState(null);\n const contentId = useId();\n const openTimerRef = React.useRef(0);\n const delayDuration = delayDurationProp ?? context.delayDuration;\n const wasOpenDelayedRef = React.useRef(false);\n const { onOpen, onClose } = context;\n const [open = false, setOpen] = useControllableState({\n prop: openProp,\n defaultProp: defaultOpen,\n onChange: (open) => {\n if (open) {\n // we dispatch here so `TooltipProvider` isn't required to\n // ensure other tooltips are aware of this one opening.\n document.dispatchEvent(new CustomEvent(TOOLTIP_OPEN));\n onOpen();\n }\n onOpenChange?.(open);\n },\n });\n const stateAttribute = React.useMemo(() => {\n return open ? (wasOpenDelayedRef.current ? 'delayed-open' : 'instant-open') : 'closed';\n }, [open]);\n\n const handleOpen = React.useCallback(() => {\n window.clearTimeout(openTimerRef.current);\n wasOpenDelayedRef.current = false;\n setOpen(true);\n }, [setOpen]);\n\n const handleDelayedOpen = React.useCallback(() => {\n window.clearTimeout(openTimerRef.current);\n openTimerRef.current = window.setTimeout(() => {\n wasOpenDelayedRef.current = true;\n setOpen(true);\n }, delayDuration);\n }, [delayDuration, setOpen]);\n\n React.useEffect(() => {\n return () => window.clearTimeout(openTimerRef.current);\n }, []);\n\n return (\n \n {\n if (context.isOpenDelayed) handleDelayedOpen();\n else handleOpen();\n }, [context.isOpenDelayed, handleDelayedOpen, handleOpen])}\n onOpen={React.useCallback(handleOpen, [handleOpen])}\n onClose={React.useCallback(() => {\n window.clearTimeout(openTimerRef.current);\n setOpen(false);\n onClose();\n }, [setOpen, onClose])}\n >\n {children}\n \n \n );\n};\n\nTooltip.displayName = TOOLTIP_NAME;\n\n/* -------------------------------------------------------------------------------------------------\n * TooltipTrigger\n * -----------------------------------------------------------------------------------------------*/\n\nconst TRIGGER_NAME = 'TooltipTrigger';\n\ntype TooltipTriggerElement = React.ElementRef;\ntype PrimitiveButtonProps = Radix.ComponentPropsWithoutRef;\ninterface TooltipTriggerProps extends PrimitiveButtonProps {}\n\nconst TooltipTrigger = React.forwardRef(\n (props: ScopedProps, forwardedRef) => {\n const { __scopeTooltip, ...triggerProps } = props;\n const context = useTooltipContext(TRIGGER_NAME, __scopeTooltip);\n const popperScope = usePopperScope(__scopeTooltip);\n const composedTriggerRef = useComposedRefs(forwardedRef, context.onTriggerChange);\n const isMouseDownRef = React.useRef(false);\n const handleMouseUp = React.useCallback(() => (isMouseDownRef.current = false), []);\n\n React.useEffect(() => {\n return () => document.removeEventListener('mouseup', handleMouseUp);\n }, [handleMouseUp]);\n\n return (\n \n {\n context.onClose();\n isMouseDownRef.current = true;\n document.addEventListener('mouseup', handleMouseUp, { once: true });\n })}\n onFocus={composeEventHandlers(props.onFocus, () => {\n if (!isMouseDownRef.current) context.onOpen();\n })}\n onBlur={composeEventHandlers(props.onBlur, context.onClose)}\n // Handle anything that the browser considers a click for the element type if\n // not using pointer e.g. Space keyup and Enter keydown\n onClick={composeEventHandlers(props.onClick, context.onClose)}\n />\n \n );\n }\n);\n\nTooltipTrigger.displayName = TRIGGER_NAME;\n\n/* -------------------------------------------------------------------------------------------------\n * TooltipContent\n * -----------------------------------------------------------------------------------------------*/\n\nconst CONTENT_NAME = 'TooltipContent';\n\ntype TooltipContentElement = TooltipContentImplElement;\ninterface TooltipContentProps extends TooltipContentImplProps {\n /**\n * Used to force mounting when more control is needed. Useful when\n * controlling animation with React animation libraries.\n */\n forceMount?: true;\n}\n\nconst TooltipContent = React.forwardRef(\n (props: ScopedProps, forwardedRef) => {\n const { forceMount, ...contentProps } = props;\n const context = useTooltipContext(CONTENT_NAME, props.__scopeTooltip);\n return (\n \n \n \n );\n }\n);\n\ntype TooltipContentImplElement = React.ElementRef;\ntype PopperContentProps = Radix.ComponentPropsWithoutRef;\ninterface TooltipContentImplProps extends PopperContentProps {\n /**\n * A more descriptive label for accessibility purpose\n */\n 'aria-label'?: string;\n\n /**\n * Whether the Tooltip should render in a Portal\n * (default: `true`)\n */\n portalled?: boolean;\n}\n\nconst TooltipContentImpl = React.forwardRef(\n (props: ScopedProps, forwardedRef) => {\n const {\n __scopeTooltip,\n children,\n 'aria-label': ariaLabel,\n portalled = true,\n ...contentProps\n } = props;\n const context = useTooltipContext(CONTENT_NAME, __scopeTooltip);\n const popperScope = usePopperScope(__scopeTooltip);\n const PortalWrapper = portalled ? Portal : React.Fragment;\n const { onClose } = context;\n\n useEscapeKeydown(() => onClose());\n\n React.useEffect(() => {\n // Close this tooltip if another one opens\n document.addEventListener(TOOLTIP_OPEN, onClose);\n return () => document.removeEventListener(TOOLTIP_OPEN, onClose);\n }, [onClose]);\n\n return (\n \n \n \n {children}\n \n {ariaLabel || children}\n \n \n \n );\n }\n);\n\nTooltipContent.displayName = CONTENT_NAME;\n\n/* -------------------------------------------------------------------------------------------------\n * TooltipArrow\n * -----------------------------------------------------------------------------------------------*/\n\nconst ARROW_NAME = 'TooltipArrow';\n\ntype TooltipArrowElement = React.ElementRef;\ntype PopperArrowProps = Radix.ComponentPropsWithoutRef;\ninterface TooltipArrowProps extends PopperArrowProps {}\n\nconst TooltipArrow = React.forwardRef(\n (props: ScopedProps, forwardedRef) => {\n const { __scopeTooltip, ...arrowProps } = props;\n const popperScope = usePopperScope(__scopeTooltip);\n return ;\n }\n);\n\nTooltipArrow.displayName = ARROW_NAME;\n\n/* -----------------------------------------------------------------------------------------------*/\n\nfunction CheckTriggerMoved(props: ScopedProps<{}>) {\n const { __scopeTooltip } = props;\n const context = useTooltipContext('CheckTriggerMoved', __scopeTooltip);\n\n const triggerRect = useRect(context.trigger);\n const triggerLeft = triggerRect?.left;\n const previousTriggerLeft = usePrevious(triggerLeft);\n const triggerTop = triggerRect?.top;\n const previousTriggerTop = usePrevious(triggerTop);\n const handleClose = context.onClose;\n\n React.useEffect(() => {\n // checking if the user has scrolled…\n const hasTriggerMoved =\n (previousTriggerLeft !== undefined && previousTriggerLeft !== triggerLeft) ||\n (previousTriggerTop !== undefined && previousTriggerTop !== triggerTop);\n\n if (hasTriggerMoved) {\n handleClose();\n }\n }, [handleClose, previousTriggerLeft, previousTriggerTop, triggerLeft, triggerTop]);\n\n return null;\n}\n\nconst Provider = TooltipProvider;\nconst Root = Tooltip;\nconst Trigger = TooltipTrigger;\nconst Content = TooltipContent;\nconst Arrow = TooltipArrow;\n\nexport {\n createTooltipScope,\n //\n TooltipProvider,\n Tooltip,\n TooltipTrigger,\n TooltipContent,\n TooltipArrow,\n //\n Provider,\n Root,\n Trigger,\n Content,\n Arrow,\n};\nexport type { TooltipProps, TooltipTriggerProps, TooltipContentProps, TooltipArrowProps };\n","import * as React from 'react';\nimport { useCallbackRef } from '@radix-ui/react-use-callback-ref';\n\n/**\n * Listens for when the escape key is down\n */\nfunction useEscapeKeydown(onEscapeKeyDownProp?: (event: KeyboardEvent) => void) {\n const onEscapeKeyDown = useCallbackRef(onEscapeKeyDownProp);\n\n React.useEffect(() => {\n const handleKeyDown = (event: KeyboardEvent) => {\n if (event.key === 'Escape') {\n onEscapeKeyDown(event);\n }\n };\n document.addEventListener('keydown', handleKeyDown);\n return () => document.removeEventListener('keydown', handleKeyDown);\n }, [onEscapeKeyDown]);\n}\n\nexport { useEscapeKeydown };\n","import React, { createContext, useContext, useRef, useCallback, useState, useEffect } from 'react';\nimport * as P from '@radix-ui/react-portal';\nimport { dequal } from 'dequal/lite';\nimport shallow from 'zustand/shallow';\nimport v8n from 'v8n';\nimport { createStitches } from '@stitches/react';\nimport { useDrag as useDrag$1 } from '@use-gesture/react';\nimport * as RadixTooltip from '@radix-ui/react-tooltip';\nimport { Arrow } from '@radix-ui/react-tooltip';\n\nfunction _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n\n return target;\n}\n\nfunction _objectWithoutProperties(source, excluded) {\n if (source == null) return {};\n var target = _objectWithoutPropertiesLoose(source, excluded);\n var key, i;\n\n if (Object.getOwnPropertySymbols) {\n var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\n\n for (i = 0; i < sourceSymbolKeys.length; i++) {\n key = sourceSymbolKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;\n target[key] = source[key];\n }\n }\n\n return target;\n}\n\nlet LevaErrors;\n\n(function (LevaErrors) {\n LevaErrors[LevaErrors[\"UNSUPPORTED_INPUT\"] = 0] = \"UNSUPPORTED_INPUT\";\n LevaErrors[LevaErrors[\"NO_COMPONENT_FOR_TYPE\"] = 1] = \"NO_COMPONENT_FOR_TYPE\";\n LevaErrors[LevaErrors[\"UNKNOWN_INPUT\"] = 2] = \"UNKNOWN_INPUT\";\n LevaErrors[LevaErrors[\"DUPLICATE_KEYS\"] = 3] = \"DUPLICATE_KEYS\";\n LevaErrors[LevaErrors[\"ALREADY_REGISTERED_TYPE\"] = 4] = \"ALREADY_REGISTERED_TYPE\";\n LevaErrors[LevaErrors[\"CLIPBOARD_ERROR\"] = 5] = \"CLIPBOARD_ERROR\";\n LevaErrors[LevaErrors[\"THEME_ERROR\"] = 6] = \"THEME_ERROR\";\n LevaErrors[LevaErrors[\"PATH_DOESNT_EXIST\"] = 7] = \"PATH_DOESNT_EXIST\";\n LevaErrors[LevaErrors[\"INPUT_TYPE_OVERRIDE\"] = 8] = \"INPUT_TYPE_OVERRIDE\";\n LevaErrors[LevaErrors[\"EMPTY_KEY\"] = 9] = \"EMPTY_KEY\";\n})(LevaErrors || (LevaErrors = {}));\n\nconst ErrorList = {\n [LevaErrors.UNSUPPORTED_INPUT]: (type, path) => [`An input with type \\`${type}\\` input was found at path \\`${path}\\` but it's not supported yet.`],\n [LevaErrors.NO_COMPONENT_FOR_TYPE]: (type, path) => [`Type \\`${type}\\` found at path \\`${path}\\` can't be displayed in panel because no component supports it yet.`],\n [LevaErrors.UNKNOWN_INPUT]: (path, value) => [`input at path \\`${path}\\` is not recognized.`, value],\n [LevaErrors.DUPLICATE_KEYS]: (key, path, prevPath) => [`Key \\`${key}\\` of path \\`${path}\\` already exists at path \\`${prevPath}\\`. Even nested keys need to be unique. Rename one of the keys.`],\n [LevaErrors.ALREADY_REGISTERED_TYPE]: type => [`Type ${type} has already been registered. You can't register a component with the same type.`],\n [LevaErrors.CLIPBOARD_ERROR]: value => [`Error copying the value`, value],\n [LevaErrors.THEME_ERROR]: (category, key) => [`Error accessing the theme \\`${category}.${key}\\` value.`],\n [LevaErrors.PATH_DOESNT_EXIST]: path => [`Error getting the value at path \\`${path}\\`. There is probably an error in your \\`render\\` function.`],\n [LevaErrors.PATH_DOESNT_EXIST]: path => [`Error accessing the value at path \\`${path}\\``],\n [LevaErrors.INPUT_TYPE_OVERRIDE]: (path, type, wrongType) => [`Input at path \\`${path}\\` already exists with type: \\`${type}\\`. Its type cannot be overridden with type \\`${wrongType}\\`.`],\n [LevaErrors.EMPTY_KEY]: () => ['Keys can not be empty, if you want to hide a label use whitespace.']\n};\n\nfunction _log(fn, errorType, ...args) {\n const [message, ...rest] = ErrorList[errorType](...args);\n console[fn]('LEVA: ' + message, ...rest);\n}\n\nconst warn = _log.bind(null, 'warn');\nconst log = _log.bind(null, 'log');\n\nconst _excluded$a = [\"value\"],\n _excluded2$4 = [\"schema\"],\n _excluded3$1 = [\"value\"];\nconst Schemas = [];\nconst Plugins = {};\nfunction getValueType(_ref) {\n let {\n value\n } = _ref,\n settings = _objectWithoutProperties(_ref, _excluded$a);\n\n for (let checker of Schemas) {\n const type = checker(value, settings);\n if (type) return type;\n }\n\n return undefined;\n}\nfunction register(type, _ref2) {\n let {\n schema\n } = _ref2,\n plugin = _objectWithoutProperties(_ref2, _excluded2$4);\n\n if (type in Plugins) {\n warn(LevaErrors.ALREADY_REGISTERED_TYPE, type);\n return;\n }\n\n Schemas.push((value, settings) => schema(value, settings) && type);\n Plugins[type] = plugin;\n}\n\nconst getUniqueType = () => '__CUSTOM__PLUGIN__' + Math.random().toString(36).substr(2, 9);\n\nfunction createInternalPlugin(plugin) {\n return plugin;\n}\nfunction createPlugin(plugin) {\n const type = getUniqueType();\n Plugins[type] = plugin;\n return input => {\n return {\n type,\n __customInput: input\n };\n };\n}\nfunction normalize$3(type, input, path, data) {\n const {\n normalize: _normalize\n } = Plugins[type];\n if (_normalize) return _normalize(input, path, data);\n if (typeof input !== 'object' || !('value' in input)) return {\n value: input\n };\n\n const {\n value\n } = input,\n settings = _objectWithoutProperties(input, _excluded3$1);\n\n return {\n value,\n settings\n };\n}\nfunction sanitize$4(type, value, settings, prevValue, path, store) {\n const {\n sanitize\n } = Plugins[type];\n if (sanitize) return sanitize(value, settings, prevValue, path, store);\n return value;\n}\nfunction format$2(type, value, settings) {\n const {\n format\n } = Plugins[type];\n if (format) return format(value, settings);\n return value;\n}\n\nfunction _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n\nfunction ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n\n if (enumerableOnly) {\n symbols = symbols.filter(function (sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n });\n }\n\n keys.push.apply(keys, symbols);\n }\n\n return keys;\n}\n\nfunction _objectSpread2(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i] != null ? arguments[i] : {};\n\n if (i % 2) {\n ownKeys(Object(source), true).forEach(function (key) {\n _defineProperty(target, key, source[key]);\n });\n } else if (Object.getOwnPropertyDescriptors) {\n Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n } else {\n ownKeys(Object(source)).forEach(function (key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n }\n\n return target;\n}\n\nconst clamp = (x, min, max) => x > max ? max : x < min ? min : x;\nconst pad = (x, pad) => String(x).padStart(pad, '0');\nconst parseNumber = v => {\n if (v === '' || typeof v === 'number') return v;\n\n try {\n const _v = evaluate(v);\n\n if (!isNaN(_v)) return _v;\n } catch (_unused) {}\n\n return parseFloat(v);\n};\nconst log10 = Math.log(10);\nfunction getStep(number) {\n let n = Math.abs(+String(number).replace('.', ''));\n if (n === 0) return 0.01;\n\n while (n !== 0 && n % 10 === 0) n /= 10;\n\n const significantDigits = Math.floor(Math.log(n) / log10) + 1;\n const numberLog = Math.floor(Math.log10(Math.abs(number)));\n const step = Math.pow(10, numberLog - significantDigits);\n return Math.max(step, 0.001);\n}\nconst range = (v, min, max) => {\n if (max === min) return 0;\n\n const _v = clamp(v, min, max);\n\n return (_v - min) / (max - min);\n};\nconst invertedRange = (p, min, max) => p * (max - min) + min;\nconst getUid = () => '_' + Math.random().toString(36).substr(2, 9);\nconst parens = /\\(([0-9+\\-*/^ .]+)\\)/;\nconst exp = /(\\d+(?:\\.\\d+)?) ?\\^ ?(\\d+(?:\\.\\d+)?)/;\nconst mul = /(\\d+(?:\\.\\d+)?) ?\\* ?(\\d+(?:\\.\\d+)?)/;\nconst div = /(\\d+(?:\\.\\d+)?) ?\\/ ?(\\d+(?:\\.\\d+)?)/;\nconst add = /(\\d+(?:\\.\\d+)?) ?\\+ ?(\\d+(?:\\.\\d+)?)/;\nconst sub = /(\\d+(?:\\.\\d+)?) ?- ?(\\d+(?:\\.\\d+)?)/;\nfunction evaluate(expr) {\n if (isNaN(Number(expr))) {\n if (parens.test(expr)) {\n const newExpr = expr.replace(parens, (match, subExpr) => String(evaluate(subExpr)));\n return evaluate(newExpr);\n } else if (exp.test(expr)) {\n const newExpr = expr.replace(exp, (match, base, pow) => String(Math.pow(Number(base), Number(pow))));\n return evaluate(newExpr);\n } else if (mul.test(expr)) {\n const newExpr = expr.replace(mul, (match, a, b) => String(Number(a) * Number(b)));\n return evaluate(newExpr);\n } else if (div.test(expr)) {\n const newExpr = expr.replace(div, (match, a, b) => {\n if (b != 0) return String(Number(a) / Number(b));else throw new Error('Division by zero');\n });\n return evaluate(newExpr);\n } else if (add.test(expr)) {\n const newExpr = expr.replace(add, (match, a, b) => String(Number(a) + Number(b)));\n return evaluate(newExpr);\n } else if (sub.test(expr)) {\n const newExpr = expr.replace(sub, (match, a, b) => String(Number(a) - Number(b)));\n return evaluate(newExpr);\n } else {\n return Number(expr);\n }\n }\n\n return Number(expr);\n}\n\nfunction pick(object, keys) {\n return keys.reduce((obj, key) => {\n if (!!object && object.hasOwnProperty(key)) {\n obj[key] = object[key];\n }\n\n return obj;\n }, {});\n}\nfunction omit(object, keys) {\n const obj = _objectSpread2({}, object);\n\n keys.forEach(k => k in object && delete obj[k]);\n return obj;\n}\nfunction mapArrayToKeys(value, keys) {\n return value.reduce((acc, v, i) => Object.assign(acc, {\n [keys[i]]: v\n }), {});\n}\nfunction isObject(variable) {\n return Object.prototype.toString.call(variable) === '[object Object]';\n}\nconst isEmptyObject = obj => isObject(obj) && Object.keys(obj).length === 0;\n\nlet SpecialInputs;\n\n(function (SpecialInputs) {\n SpecialInputs[\"BUTTON\"] = \"BUTTON\";\n SpecialInputs[\"BUTTON_GROUP\"] = \"BUTTON_GROUP\";\n SpecialInputs[\"MONITOR\"] = \"MONITOR\";\n SpecialInputs[\"FOLDER\"] = \"FOLDER\";\n})(SpecialInputs || (SpecialInputs = {}));\n\nlet LevaInputs;\n\n(function (LevaInputs) {\n LevaInputs[\"SELECT\"] = \"SELECT\";\n LevaInputs[\"IMAGE\"] = \"IMAGE\";\n LevaInputs[\"NUMBER\"] = \"NUMBER\";\n LevaInputs[\"COLOR\"] = \"COLOR\";\n LevaInputs[\"STRING\"] = \"STRING\";\n LevaInputs[\"BOOLEAN\"] = \"BOOLEAN\";\n LevaInputs[\"INTERVAL\"] = \"INTERVAL\";\n LevaInputs[\"VECTOR3D\"] = \"VECTOR3D\";\n LevaInputs[\"VECTOR2D\"] = \"VECTOR2D\";\n})(LevaInputs || (LevaInputs = {}));\n\nconst _excluded$9 = [\"type\", \"__customInput\"],\n _excluded2$3 = [\"render\", \"label\", \"optional\", \"disabled\", \"hint\", \"onChange\", \"onEditStart\", \"onEditEnd\", \"transient\"],\n _excluded3 = [\"type\"];\nfunction parseOptions(_input, key, mergedOptions = {}, customType) {\n var _commonOptions$option, _commonOptions$disabl;\n\n if (typeof _input !== 'object' || Array.isArray(_input)) {\n return {\n type: customType,\n input: _input,\n options: _objectSpread2({\n key,\n label: key,\n optional: false,\n disabled: false\n }, mergedOptions)\n };\n }\n\n if ('__customInput' in _input) {\n const {\n type: _type,\n __customInput\n } = _input,\n options = _objectWithoutProperties(_input, _excluded$9);\n\n return parseOptions(__customInput, key, options, _type);\n }\n\n const {\n render,\n label,\n optional,\n disabled,\n hint,\n onChange,\n onEditStart,\n onEditEnd,\n transient\n } = _input,\n inputWithType = _objectWithoutProperties(_input, _excluded2$3);\n\n const commonOptions = _objectSpread2({\n render,\n key,\n label: label !== null && label !== void 0 ? label : key,\n hint,\n transient: transient !== null && transient !== void 0 ? transient : !!onChange,\n onEditStart,\n onEditEnd,\n disabled,\n optional\n }, mergedOptions);\n\n let {\n type\n } = inputWithType,\n input = _objectWithoutProperties(inputWithType, _excluded3);\n\n type = customType !== null && customType !== void 0 ? customType : type;\n\n if (type in SpecialInputs) {\n return {\n type,\n input,\n options: commonOptions\n };\n }\n\n let computedInput;\n if (customType && isObject(input) && 'value' in input) computedInput = input.value;else computedInput = isEmptyObject(input) ? undefined : input;\n return {\n type,\n input: computedInput,\n options: _objectSpread2(_objectSpread2({}, commonOptions), {}, {\n onChange,\n optional: (_commonOptions$option = commonOptions.optional) !== null && _commonOptions$option !== void 0 ? _commonOptions$option : false,\n disabled: (_commonOptions$disabl = commonOptions.disabled) !== null && _commonOptions$disabl !== void 0 ? _commonOptions$disabl : false\n })\n };\n}\nfunction normalizeInput(_input, key, path, data) {\n const parsedInputAndOptions = parseOptions(_input, key);\n const {\n type,\n input: parsedInput,\n options\n } = parsedInputAndOptions;\n\n if (type) {\n if (type in SpecialInputs) return parsedInputAndOptions;\n return {\n type,\n input: normalize$3(type, parsedInput, path, data),\n options\n };\n }\n\n let inputType = getValueType(parsedInput);\n if (inputType) return {\n type: inputType,\n input: normalize$3(inputType, parsedInput, path, data),\n options\n };\n inputType = getValueType({\n value: parsedInput\n });\n if (inputType) return {\n type: inputType,\n input: normalize$3(inputType, {\n value: parsedInput\n }, path, data),\n options\n };\n return false;\n}\nfunction updateInput(input, newValue, path, store, fromPanel) {\n const {\n value,\n type,\n settings\n } = input;\n input.value = sanitizeValue({\n type,\n value,\n settings\n }, newValue, path, store);\n input.fromPanel = fromPanel;\n}\n\nconst ValueError = function ValueError(message, value, error) {\n this.type = 'LEVA_ERROR';\n this.message = 'LEVA: ' + message;\n this.previousValue = value;\n this.error = error;\n};\n\nfunction sanitizeValue({\n type,\n value,\n settings\n}, newValue, path, store) {\n const _newValue = type !== 'SELECT' && typeof newValue === 'function' ? newValue(value) : newValue;\n\n let sanitizedNewValue;\n\n try {\n sanitizedNewValue = sanitize$4(type, _newValue, settings, value, path, store);\n } catch (e) {\n throw new ValueError(`The value \\`${newValue}\\` did not result in a correct value.`, value, e);\n }\n\n if (dequal(sanitizedNewValue, value)) {\n throw new ValueError(`The value \\`${newValue}\\` did not result in a value update, which remained the same: \\`${value}\\`.\n You can ignore this warning if this is the intended behavior.`, value);\n }\n\n return sanitizedNewValue;\n}\n\nconst debounce = (callback, wait, immediate = false) => {\n let timeout = 0;\n return function () {\n const args = arguments;\n const callNow = immediate && !timeout;\n\n const next = () => callback.apply(this, args);\n\n window.clearTimeout(timeout);\n timeout = window.setTimeout(next, wait);\n if (callNow) next();\n };\n};\n\nconst multiplyStep = event => event.shiftKey ? 5 : event.altKey ? 1 / 5 : 1;\n\nconst _excluded$8 = [\"value\"],\n _excluded2$2 = [\"min\", \"max\"];\nconst schema$3 = o => typeof o === 'number' || typeof o === 'string' && !isNaN(parseFloat(o));\nconst sanitize$3 = (v, {\n min: _min = -Infinity,\n max: _max = Infinity,\n suffix\n}) => {\n const _v = parseFloat(v);\n\n if (v === '' || isNaN(_v)) throw Error('Invalid number');\n const f = clamp(_v, _min, _max);\n return suffix ? f + suffix : f;\n};\nconst format$1 = (v, {\n pad: _pad = 0,\n suffix\n}) => {\n const f = parseFloat(v).toFixed(_pad);\n return suffix ? f + suffix : f;\n};\nconst normalize$2 = _ref => {\n let {\n value\n } = _ref,\n settings = _objectWithoutProperties(_ref, _excluded$8);\n\n const {\n min = -Infinity,\n max = Infinity\n } = settings,\n _settings = _objectWithoutProperties(settings, _excluded2$2);\n\n const _value = clamp(parseFloat(value), min, max);\n\n let suffix;\n\n if (!Number.isFinite(value)) {\n const match = String(value).match(/[A-Z]+/i);\n if (match) suffix = match[0];\n }\n\n let step = settings.step;\n\n if (!step) {\n if (Number.isFinite(min)) {\n if (Number.isFinite(max)) step = +(Math.abs(max - min) / 100).toPrecision(1);else step = +(Math.abs(_value - min) / 100).toPrecision(1);\n } else if (Number.isFinite(max)) step = +(Math.abs(max - _value) / 100).toPrecision(1);\n }\n\n const padStep = step ? getStep(step) * 10 : getStep(_value);\n step = step || padStep / 10;\n const pad = Math.round(clamp(Math.log10(1 / padStep), 0, 2));\n return {\n value: suffix ? _value + suffix : _value,\n settings: _objectSpread2({\n initialValue: _value,\n step,\n pad,\n min,\n max,\n suffix\n }, _settings)\n };\n};\nconst sanitizeStep$1 = (v, {\n step,\n initialValue\n}) => {\n const steps = Math.round((v - initialValue) / step);\n return initialValue + steps * step;\n};\n\nvar props$3 = /*#__PURE__*/Object.freeze({\n __proto__: null,\n schema: schema$3,\n sanitize: sanitize$3,\n format: format$1,\n normalize: normalize$2,\n sanitizeStep: sanitizeStep$1\n});\n\nfunction _extends() {\n _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n\n return _extends.apply(this, arguments);\n}\n\nconst InputContext = createContext({});\nfunction useInputContext() {\n return useContext(InputContext);\n}\nconst ThemeContext = createContext(null);\nconst StoreContext = createContext(null);\nconst PanelSettingsContext = createContext(null);\nfunction useStoreContext() {\n return useContext(StoreContext);\n}\nfunction usePanelSettingsContext() {\n return useContext(PanelSettingsContext);\n}\nfunction LevaStoreProvider({\n children,\n store\n}) {\n return React.createElement(StoreContext.Provider, {\n value: store\n }, children);\n}\n\nconst getDefaultTheme = () => ({\n colors: {\n elevation1: '#292d39',\n elevation2: '#181c20',\n elevation3: '#373c4b',\n accent1: '#0066dc',\n accent2: '#007bff',\n accent3: '#3c93ff',\n highlight1: '#535760',\n highlight2: '#8c92a4',\n highlight3: '#fefefe',\n vivid1: '#ffcc00',\n folderWidgetColor: '$highlight2',\n folderTextColor: '$highlight3',\n toolTipBackground: '$highlight3',\n toolTipText: '$elevation2'\n },\n radii: {\n xs: '2px',\n sm: '3px',\n lg: '10px'\n },\n space: {\n xs: '3px',\n sm: '6px',\n md: '10px',\n rowGap: '7px',\n colGap: '7px'\n },\n fonts: {\n mono: `ui-monospace, SFMono-Regular, Menlo, 'Roboto Mono', monospace`,\n sans: `system-ui, sans-serif`\n },\n fontSizes: {\n root: '11px',\n toolTip: '$root'\n },\n sizes: {\n rootWidth: '280px',\n controlWidth: '160px',\n numberInputMinWidth: '38px',\n scrubberWidth: '8px',\n scrubberHeight: '16px',\n rowHeight: '24px',\n folderTitleHeight: '20px',\n checkboxSize: '16px',\n joystickWidth: '100px',\n joystickHeight: '100px',\n colorPickerWidth: '$controlWidth',\n colorPickerHeight: '100px',\n imagePreviewWidth: '$controlWidth',\n imagePreviewHeight: '100px',\n monitorHeight: '60px',\n titleBarHeight: '39px'\n },\n shadows: {\n level1: '0 0 9px 0 #00000088',\n level2: '0 4px 14px #00000033'\n },\n borderWidths: {\n root: '0px',\n input: '1px',\n focus: '1px',\n hover: '1px',\n active: '1px',\n folder: '1px'\n },\n fontWeights: {\n label: 'normal',\n folder: 'normal',\n button: 'normal'\n }\n});\n\nfunction createStateClass(value, options) {\n const [borderColor, bgColor] = value.split(' ');\n const css = {};\n\n if (borderColor !== 'none') {\n css.boxShadow = `${options.inset ? 'inset ' : ''}0 0 0 $borderWidths${[options.key]} $colors${borderColor !== 'default' && borderColor || options.borderColor}`;\n }\n\n if (bgColor) {\n css.backgroundColor = bgColor;\n }\n\n return css;\n}\n\nconst utils = {\n $inputStyle: () => value => createStateClass(value, {\n key: '$input',\n borderColor: '$highlight1',\n inset: true\n }),\n $focusStyle: () => value => createStateClass(value, {\n key: '$focus',\n borderColor: '$accent2'\n }),\n $hoverStyle: () => value => createStateClass(value, {\n key: '$hover',\n borderColor: '$accent1',\n inset: true\n }),\n $activeStyle: () => value => createStateClass(value, {\n key: '$active',\n borderColor: '$accent1',\n inset: true\n })\n};\nconst {\n styled,\n css,\n createTheme,\n globalCss,\n keyframes\n} = createStitches({\n prefix: 'leva',\n theme: getDefaultTheme(),\n utils: _objectSpread2(_objectSpread2({}, utils), {}, {\n $flex: () => ({\n display: 'flex',\n alignItems: 'center'\n }),\n $flexCenter: () => ({\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center'\n }),\n $reset: () => ({\n outline: 'none',\n fontSize: 'inherit',\n fontWeight: 'inherit',\n color: 'inherit',\n fontFamily: 'inherit',\n border: 'none',\n backgroundColor: 'transparent',\n appearance: 'none'\n }),\n $draggable: () => ({\n touchAction: 'none',\n WebkitUserDrag: 'none',\n userSelect: 'none'\n }),\n $focus: value => ({\n '&:focus': utils.$focusStyle()(value)\n }),\n $focusWithin: value => ({\n '&:focus-within': utils.$focusStyle()(value)\n }),\n $hover: value => ({\n '&:hover': utils.$hoverStyle()(value)\n }),\n $active: value => ({\n '&:active': utils.$activeStyle()(value)\n })\n })\n});\nconst globalStyles = globalCss({\n '.leva__panel__dragged': {\n WebkitUserDrag: 'none',\n userSelect: 'none',\n input: {\n userSelect: 'none'\n },\n '*': {\n cursor: 'ew-resize !important'\n }\n }\n});\n\nfunction mergeTheme(newTheme) {\n const defaultTheme = getDefaultTheme();\n if (!newTheme) return {\n theme: defaultTheme,\n className: ''\n };\n Object.keys(newTheme).forEach(key => {\n Object.assign(defaultTheme[key], newTheme[key]);\n });\n const customTheme = createTheme(defaultTheme);\n return {\n theme: defaultTheme,\n className: customTheme.className\n };\n}\nfunction useTh(category, key) {\n const {\n theme\n } = useContext(ThemeContext);\n\n if (!(category in theme) || !(key in theme[category])) {\n warn(LevaErrors.THEME_ERROR, category, key);\n return '';\n }\n\n let _key = key;\n\n while (true) {\n let value = theme[category][_key];\n if (typeof value === 'string' && value.charAt(0) === '$') _key = value.substr(1);else return value;\n }\n}\n\nconst StyledInput = styled('input', {\n $reset: '',\n padding: '0 $sm',\n width: 0,\n minWidth: 0,\n flex: 1,\n height: '100%',\n variants: {\n levaType: {\n number: {\n textAlign: 'right'\n }\n },\n as: {\n textarea: {\n padding: '$sm'\n }\n }\n }\n});\nconst InnerLabel = styled('div', {\n $draggable: '',\n height: '100%',\n $flexCenter: '',\n position: 'relative',\n padding: '0 $xs',\n fontSize: '0.8em',\n opacity: 0.8,\n cursor: 'default',\n touchAction: 'none',\n [`& + ${StyledInput}`]: {\n paddingLeft: 0\n }\n});\nconst InnerNumberLabel = styled(InnerLabel, {\n cursor: 'ew-resize',\n marginRight: '-$xs',\n textTransform: 'uppercase',\n opacity: 0.3,\n '&:hover': {\n opacity: 1\n },\n variants: {\n dragging: {\n true: {\n backgroundColor: '$accent2',\n opacity: 1\n }\n }\n }\n});\nconst InputContainer = styled('div', {\n $flex: '',\n position: 'relative',\n borderRadius: '$sm',\n overflow: 'hidden',\n color: 'inherit',\n height: '$rowHeight',\n backgroundColor: '$elevation3',\n $inputStyle: '$elevation1',\n $hover: '',\n $focusWithin: '',\n variants: {\n textArea: {\n true: {\n height: 'auto'\n }\n }\n }\n});\n\nconst _excluded$7 = [\"innerLabel\", \"value\", \"onUpdate\", \"onChange\", \"onKeyDown\", \"type\", \"id\", \"inputType\", \"rows\"],\n _excluded2$1 = [\"onUpdate\"];\nfunction ValueInput(_ref) {\n let {\n innerLabel,\n value,\n onUpdate,\n onChange,\n onKeyDown,\n type,\n id,\n inputType = 'text',\n rows = 0\n } = _ref,\n props = _objectWithoutProperties(_ref, _excluded$7);\n\n const {\n id: _id,\n emitOnEditStart,\n emitOnEditEnd,\n disabled\n } = useInputContext();\n const inputId = id || _id;\n const inputRef = useRef(null);\n const isTextArea = rows > 0;\n const asType = isTextArea ? 'textarea' : 'input';\n const update = useCallback(fn => event => {\n const _value = event.currentTarget.value;\n fn(_value);\n }, []);\n React.useEffect(() => {\n const ref = inputRef.current;\n\n const _onUpdate = update(value => {\n onUpdate(value);\n emitOnEditEnd();\n });\n\n ref === null || ref === void 0 ? void 0 : ref.addEventListener('blur', _onUpdate);\n return () => ref === null || ref === void 0 ? void 0 : ref.removeEventListener('blur', _onUpdate);\n }, [update, onUpdate, emitOnEditEnd]);\n const onKeyPress = useCallback(event => {\n if (event.key === 'Enter') {\n update(onUpdate)(event);\n }\n }, [update, onUpdate]);\n const inputProps = Object.assign({\n as: asType\n }, isTextArea ? {\n rows\n } : {}, props);\n return React.createElement(InputContainer, {\n textArea: isTextArea\n }, innerLabel && typeof innerLabel === 'string' ? React.createElement(InnerLabel, null, innerLabel) : innerLabel, React.createElement(StyledInput, _extends({\n levaType: type,\n ref: inputRef,\n id: inputId,\n type: inputType,\n autoComplete: \"off\",\n spellCheck: \"false\",\n value: value,\n onChange: update(onChange),\n onFocus: () => emitOnEditStart(),\n onKeyPress: onKeyPress,\n onKeyDown: onKeyDown,\n disabled: disabled\n }, inputProps)));\n}\nfunction NumberInput(_ref2) {\n let {\n onUpdate\n } = _ref2,\n props = _objectWithoutProperties(_ref2, _excluded2$1);\n\n const _onUpdate = useCallback(v => onUpdate(parseNumber(v)), [onUpdate]);\n\n const onKeyDown = useCallback(event => {\n const dir = event.key === 'ArrowUp' ? 1 : event.key === 'ArrowDown' ? -1 : 0;\n\n if (dir) {\n event.preventDefault();\n const step = event.altKey ? 0.1 : event.shiftKey ? 10 : 1;\n onUpdate(v => parseFloat(v) + dir * step);\n }\n }, [onUpdate]);\n return React.createElement(ValueInput, _extends({}, props, {\n onUpdate: _onUpdate,\n onKeyDown: onKeyDown,\n type: \"number\"\n }));\n}\n\nconst StyledFolder = styled('div', {});\nconst StyledWrapper = styled('div', {\n position: 'relative',\n background: '$elevation2',\n transition: 'height 300ms ease',\n variants: {\n fill: {\n true: {},\n false: {}\n },\n flat: {\n false: {},\n true: {}\n },\n isRoot: {\n true: {},\n false: {\n paddingLeft: '$md',\n '&::after': {\n content: '\"\"',\n position: 'absolute',\n left: 0,\n top: 0,\n width: '$borderWidths$folder',\n height: '100%',\n backgroundColor: '$folderWidgetColor',\n opacity: 0.4,\n transform: 'translateX(-50%)'\n }\n }\n }\n },\n compoundVariants: [{\n isRoot: true,\n fill: false,\n css: {\n overflowY: 'auto',\n maxHeight: 'calc(100vh - 20px - $$titleBarHeight)'\n }\n }, {\n isRoot: true,\n flat: false,\n css: {\n borderRadius: '$lg'\n }\n }]\n});\nconst StyledTitle = styled('div', {\n $flex: '',\n color: '$folderTextColor',\n userSelect: 'none',\n cursor: 'pointer',\n height: '$folderTitleHeight',\n fontWeight: '$folder',\n '> svg': {\n marginLeft: -4,\n marginRight: 4,\n cursor: 'pointer',\n fill: '$folderWidgetColor',\n opacity: 0.6\n },\n '&:hover > svg': {\n fill: '$folderWidgetColor'\n },\n [`&:hover + ${StyledWrapper}::after`]: {\n opacity: 0.6\n },\n [`${StyledFolder}:hover > & + ${StyledWrapper}::after`]: {\n opacity: 0.6\n },\n [`${StyledFolder}:hover > & > svg`]: {\n opacity: 1\n }\n});\nconst StyledContent = styled('div', {\n position: 'relative',\n display: 'grid',\n gridTemplateColumns: '100%',\n rowGap: '$rowGap',\n transition: 'opacity 250ms ease',\n variants: {\n toggled: {\n true: {\n opacity: 1,\n transitionDelay: '250ms'\n },\n false: {\n opacity: 0,\n transitionDelay: '0ms',\n pointerEvents: 'none'\n }\n },\n isRoot: {\n true: {\n '& > div': {\n paddingLeft: '$md',\n paddingRight: '$md'\n },\n '& > div:first-of-type': {\n paddingTop: '$sm'\n },\n '& > div:last-of-type': {\n paddingBottom: '$sm'\n },\n [`> ${StyledFolder}:not(:first-of-type)`]: {\n paddingTop: '$sm',\n marginTop: '$md',\n borderTop: '$borderWidths$folder solid $colors$elevation1'\n }\n }\n }\n }\n});\n\nconst StyledRow = styled('div', {\n position: 'relative',\n zIndex: 100,\n display: 'grid',\n rowGap: '$rowGap',\n gridTemplateRows: 'minmax($sizes$rowHeight, max-content)',\n alignItems: 'center',\n color: '$highlight2',\n [`${StyledContent} > &`]: {\n '&:first-of-type': {\n marginTop: '$rowGap'\n },\n '&:last-of-type': {\n marginBottom: '$rowGap'\n }\n },\n variants: {\n disabled: {\n true: {\n pointerEvents: 'none'\n },\n false: {\n '&:hover,&:focus-within': {\n color: '$highlight3'\n }\n }\n }\n }\n});\nconst StyledInputRow = styled(StyledRow, {\n gridTemplateColumns: 'auto $sizes$controlWidth',\n columnGap: '$colGap'\n});\nconst CopyLabelContainer = styled('div', {\n $flex: '',\n height: '100%',\n position: 'relative',\n overflow: 'hidden',\n '& > div': {\n marginLeft: '$colGap',\n padding: '0 $xs',\n opacity: 0.4\n },\n '& > div:hover': {\n opacity: 0.8\n },\n '& > div > svg': {\n display: 'none',\n cursor: 'pointer',\n width: 13,\n minWidth: 13,\n height: 13,\n backgroundColor: '$elevation2'\n },\n '&:hover > div > svg': {\n display: 'block'\n },\n variants: {\n align: {\n top: {\n height: '100%',\n alignItems: 'flex-start',\n paddingTop: '$sm'\n }\n }\n }\n});\nconst StyledOptionalToggle = styled('input', {\n $reset: '',\n height: 0,\n width: 0,\n opacity: 0,\n margin: 0,\n '& + label': {\n position: 'relative',\n $flexCenter: '',\n height: '100%',\n userSelect: 'none',\n cursor: 'pointer',\n paddingLeft: 2,\n paddingRight: '$sm',\n pointerEvents: 'auto'\n },\n '& + label:after': {\n content: '\"\"',\n width: 6,\n height: 6,\n backgroundColor: '$elevation3',\n borderRadius: '50%',\n $activeStyle: ''\n },\n '&:focus + label:after': {\n $focusStyle: ''\n },\n '& + label:active:after': {\n backgroundColor: '$accent1',\n $focusStyle: ''\n },\n '&:checked + label:after': {\n backgroundColor: '$accent1'\n }\n});\nconst StyledLabel = styled('label', {\n fontWeight: '$label',\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n whiteSpace: 'nowrap',\n '& > svg': {\n display: 'block'\n }\n});\nconst StyledInputWrapper$1 = styled('div', {\n opacity: 1,\n variants: {\n disabled: {\n true: {\n opacity: 0.6,\n pointerEvents: 'none',\n [`& ${StyledLabel}`]: {\n pointerEvents: 'auto'\n }\n }\n }\n }\n});\nconst Overlay = styled('div', {\n position: 'fixed',\n top: 0,\n bottom: 0,\n right: 0,\n left: 0,\n zIndex: 1000,\n userSelect: 'none'\n});\nconst StyledToolTipContent = styled('div', {\n background: '$toolTipBackground',\n fontFamily: '$sans',\n fontSize: '$toolTip',\n padding: '$xs $sm',\n color: '$toolTipText',\n borderRadius: '$xs',\n boxShadow: '$level2',\n maxWidth: 260\n});\nconst ToolTipArrow = styled(Arrow, {\n fill: '$toolTipBackground'\n});\n\nfunction Portal({\n children\n}) {\n const {\n className\n } = useContext(ThemeContext);\n return React.createElement(P.Root, {\n className: className\n }, children);\n}\n\nconst _excluded$6 = [\"align\"];\n\nfunction OptionalToggle() {\n const {\n id,\n disable,\n disabled\n } = useInputContext();\n return React.createElement(React.Fragment, null, React.createElement(StyledOptionalToggle, {\n id: id + '__disable',\n type: \"checkbox\",\n checked: !disabled,\n onChange: () => disable(!disabled)\n }), React.createElement(\"label\", {\n htmlFor: id + '__disable'\n }));\n}\n\nfunction RawLabel(props) {\n const {\n id,\n optional,\n hint\n } = useInputContext();\n const htmlFor = props.htmlFor || (id ? {\n htmlFor: id\n } : null);\n const title = !hint && typeof props.children === 'string' ? {\n title: props.children\n } : null;\n return React.createElement(React.Fragment, null, optional && React.createElement(OptionalToggle, null), hint !== undefined ? React.createElement(RadixTooltip.Root, null, React.createElement(RadixTooltip.Trigger, {\n asChild: true\n }, React.createElement(StyledLabel, _extends({}, htmlFor, props))), React.createElement(RadixTooltip.Content, {\n side: \"top\",\n sideOffset: 2\n }, React.createElement(StyledToolTipContent, null, hint, React.createElement(ToolTipArrow, null)))) : React.createElement(StyledLabel, _extends({}, htmlFor, title, props)));\n}\n\nfunction Label(_ref) {\n let {\n align\n } = _ref,\n props = _objectWithoutProperties(_ref, _excluded$6);\n\n const {\n value,\n label,\n key,\n disabled\n } = useInputContext();\n const {\n hideCopyButton\n } = usePanelSettingsContext();\n const copyEnabled = !hideCopyButton && key !== undefined;\n const [copied, setCopied] = useState(false);\n\n const handleClick = async () => {\n try {\n await navigator.clipboard.writeText(JSON.stringify({\n [key]: value !== null && value !== void 0 ? value : ''\n }));\n setCopied(true);\n } catch (_unused) {\n warn(LevaErrors.CLIPBOARD_ERROR, {\n [key]: value\n });\n }\n };\n\n return React.createElement(CopyLabelContainer, {\n align: align,\n onPointerLeave: () => setCopied(false)\n }, React.createElement(RawLabel, props), copyEnabled && !disabled && React.createElement(\"div\", {\n title: `Click to copy ${typeof label === 'string' ? label : key} value`\n }, !copied ? React.createElement(\"svg\", {\n onClick: handleClick,\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 20 20\",\n fill: \"currentColor\"\n }, React.createElement(\"path\", {\n d: \"M8 3a1 1 0 011-1h2a1 1 0 110 2H9a1 1 0 01-1-1z\"\n }), React.createElement(\"path\", {\n d: \"M6 3a2 2 0 00-2 2v11a2 2 0 002 2h8a2 2 0 002-2V5a2 2 0 00-2-2 3 3 0 01-3 3H9a3 3 0 01-3-3z\"\n })) : React.createElement(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 20 20\",\n fill: \"currentColor\"\n }, React.createElement(\"path\", {\n d: \"M9 2a1 1 0 000 2h2a1 1 0 100-2H9z\"\n }), React.createElement(\"path\", {\n fillRule: \"evenodd\",\n d: \"M4 5a2 2 0 012-2 3 3 0 003 3h2a3 3 0 003-3 2 2 0 012 2v11a2 2 0 01-2 2H6a2 2 0 01-2-2V5zm9.707 5.707a1 1 0 00-1.414-1.414L9 12.586l-1.293-1.293a1 1 0 00-1.414 1.414l2 2a1 1 0 001.414 0l4-4z\",\n clipRule: \"evenodd\"\n }))));\n}\n\nconst _excluded$5 = [\"toggled\"];\nconst Svg = styled('svg', {\n fill: 'currentColor',\n transition: 'transform 350ms ease, fill 250ms ease'\n});\nfunction Chevron(_ref) {\n let {\n toggled\n } = _ref,\n props = _objectWithoutProperties(_ref, _excluded$5);\n\n return React.createElement(Svg, _extends({\n width: \"9\",\n height: \"5\",\n viewBox: \"0 0 9 5\",\n xmlns: \"http://www.w3.org/2000/svg\",\n style: {\n transform: `rotate(${toggled ? 0 : -90}deg)`\n }\n }, props), React.createElement(\"path\", {\n d: \"M3.8 4.4c.4.3 1 .3 1.4 0L8 1.7A1 1 0 007.4 0H1.6a1 1 0 00-.7 1.7l3 2.7z\"\n }));\n}\n\nconst _excluded$4 = [\"input\"];\nfunction Row(_ref) {\n let {\n input\n } = _ref,\n props = _objectWithoutProperties(_ref, _excluded$4);\n\n if (input) return React.createElement(StyledInputRow, props);\n return React.createElement(StyledRow, props);\n}\n\nfunction useInputSetters({\n value,\n type,\n settings,\n setValue\n}) {\n const [displayValue, setDisplayValue] = useState(format$2(type, value, settings));\n const previousValueRef = useRef(value);\n const settingsRef = useRef(settings);\n settingsRef.current = settings;\n const setFormat = useCallback(v => setDisplayValue(format$2(type, v, settingsRef.current)), [type]);\n const onUpdate = useCallback(updatedValue => {\n try {\n setValue(updatedValue);\n } catch (error) {\n const {\n type,\n previousValue\n } = error;\n if (type !== 'LEVA_ERROR') throw error;\n setFormat(previousValue);\n }\n }, [setFormat, setValue]);\n useEffect(() => {\n if (!dequal(value, previousValueRef.current)) {\n setFormat(value);\n }\n\n previousValueRef.current = value;\n }, [value, setFormat]);\n return {\n displayValue,\n onChange: setDisplayValue,\n onUpdate\n };\n}\n\nfunction useDrag(handler, config) {\n const {\n emitOnEditStart,\n emitOnEditEnd\n } = useInputContext();\n return useDrag$1(state => {\n if (state.first) {\n document.body.classList.add('leva__panel__dragged');\n emitOnEditStart === null || emitOnEditStart === void 0 ? void 0 : emitOnEditStart();\n }\n\n const result = handler(state);\n\n if (state.last) {\n document.body.classList.remove('leva__panel__dragged');\n emitOnEditEnd === null || emitOnEditEnd === void 0 ? void 0 : emitOnEditEnd();\n }\n\n return result;\n }, config);\n}\n\nfunction useCanvas2d(fn) {\n const canvas = useRef(null);\n const ctx = useRef(null);\n const hasFired = useRef(false);\n useEffect(() => {\n const handleCanvas = debounce(() => {\n canvas.current.width = canvas.current.offsetWidth * window.devicePixelRatio;\n canvas.current.height = canvas.current.offsetHeight * window.devicePixelRatio;\n fn(canvas.current, ctx.current);\n }, 250);\n window.addEventListener('resize', handleCanvas);\n\n if (!hasFired.current) {\n handleCanvas();\n hasFired.current = true;\n }\n\n return () => window.removeEventListener('resize', handleCanvas);\n }, [fn]);\n useEffect(() => {\n ctx.current = canvas.current.getContext('2d');\n }, []);\n return [canvas, ctx];\n}\n\nfunction useTransform() {\n const ref = useRef(null);\n const local = useRef({\n x: 0,\n y: 0\n });\n const set = useCallback(point => {\n Object.assign(local.current, point);\n if (ref.current) ref.current.style.transform = `translate3d(${local.current.x}px, ${local.current.y}px, 0)`;\n }, []);\n return [ref, set];\n}\n\nconst _excluded$3 = [\"__refCount\"];\n\nconst getInputAtPath = (data, path) => {\n if (!data[path]) return null;\n\n const _data$path = data[path],\n input = _objectWithoutProperties(_data$path, _excluded$3);\n\n return input;\n};\n\nfunction useInput(path) {\n const store = useStoreContext();\n const [state, setState] = useState(getInputAtPath(store.getData(), path));\n const set = useCallback(value => store.setValueAtPath(path, value, true), [path, store]);\n const setSettings = useCallback(settings => store.setSettingsAtPath(path, settings), [path, store]);\n const disable = useCallback(flag => store.disableInputAtPath(path, flag), [path, store]);\n const emitOnEditStart = useCallback(() => store.emitOnEditStart(path), [path, store]);\n const emitOnEditEnd = useCallback(() => store.emitOnEditEnd(path), [path, store]);\n useEffect(() => {\n setState(getInputAtPath(store.getData(), path));\n const unsub = store.useStore.subscribe(s => getInputAtPath(s.data, path), setState, {\n equalityFn: shallow\n });\n return () => unsub();\n }, [store, path]);\n return [state, {\n set,\n setSettings,\n disable,\n storeId: store.storeId,\n emitOnEditStart,\n emitOnEditEnd\n }];\n}\n\nconst RangeGrid = styled('div', {\n variants: {\n hasRange: {\n true: {\n position: 'relative',\n display: 'grid',\n gridTemplateColumns: 'auto $sizes$numberInputMinWidth',\n columnGap: '$colGap',\n alignItems: 'center'\n }\n }\n }\n});\n\nconst Range = styled('div', {\n position: 'relative',\n width: '100%',\n height: 2,\n borderRadius: '$xs',\n backgroundColor: '$elevation1'\n});\nconst Scrubber = styled('div', {\n position: 'absolute',\n width: '$scrubberWidth',\n height: '$scrubberHeight',\n borderRadius: '$xs',\n boxShadow: '0 0 0 2px $colors$elevation2',\n backgroundColor: '$accent2',\n cursor: 'pointer',\n $active: 'none $accent1',\n $hover: 'none $accent3',\n variants: {\n position: {\n left: {\n borderTopRightRadius: 0,\n borderBottomRightRadius: 0,\n transform: 'translateX(calc(-0.5 * ($sizes$scrubberWidth + 4px)))'\n },\n right: {\n borderTopLeftRadius: 0,\n borderBottomLeftRadius: 0,\n transform: 'translateX(calc(0.5 * ($sizes$scrubberWidth + 4px)))'\n }\n }\n }\n});\nconst RangeWrapper = styled('div', {\n position: 'relative',\n $flex: '',\n height: '100%',\n cursor: 'pointer',\n touchAction: 'none'\n});\nconst Indicator = styled('div', {\n position: 'absolute',\n height: '100%',\n backgroundColor: '$accent2'\n});\n\nfunction RangeSlider({\n value,\n min,\n max,\n onDrag,\n step,\n initialValue\n}) {\n const ref = useRef(null);\n const scrubberRef = useRef(null);\n const rangeWidth = useRef(0);\n const scrubberWidth = useTh('sizes', 'scrubberWidth');\n const bind = useDrag(({\n event,\n first,\n xy: [x],\n movement: [mx],\n memo\n }) => {\n if (first) {\n const {\n width,\n left\n } = ref.current.getBoundingClientRect();\n rangeWidth.current = width - parseFloat(scrubberWidth);\n const targetIsScrub = (event === null || event === void 0 ? void 0 : event.target) === scrubberRef.current;\n memo = targetIsScrub ? value : invertedRange((x - left) / width, min, max);\n }\n\n const newValue = memo + invertedRange(mx / rangeWidth.current, 0, max - min);\n onDrag(sanitizeStep$1(newValue, {\n step,\n initialValue\n }));\n return memo;\n });\n const pos = range(value, min, max);\n return React.createElement(RangeWrapper, _extends({\n ref: ref\n }, bind()), React.createElement(Range, null, React.createElement(Indicator, {\n style: {\n left: 0,\n right: `${(1 - pos) * 100}%`\n }\n })), React.createElement(Scrubber, {\n ref: scrubberRef,\n style: {\n left: `calc(${pos} * (100% - ${scrubberWidth}))`\n }\n }));\n}\n\nconst DraggableLabel = React.memo(({\n label,\n onUpdate,\n step,\n innerLabelTrim\n}) => {\n const [dragging, setDragging] = useState(false);\n const bind = useDrag(({\n active,\n delta: [dx],\n event,\n memo: _memo = 0\n }) => {\n setDragging(active);\n _memo += dx / 2;\n\n if (Math.abs(_memo) >= 1) {\n onUpdate(v => parseFloat(v) + Math.floor(_memo) * step * multiplyStep(event));\n _memo = 0;\n }\n\n return _memo;\n });\n return React.createElement(InnerNumberLabel, _extends({\n dragging: dragging,\n title: label.length > 1 ? label : ''\n }, bind()), label.slice(0, innerLabelTrim));\n});\nfunction Number$1({\n label,\n id,\n displayValue,\n onUpdate,\n onChange,\n settings,\n innerLabelTrim = 1\n}) {\n const InnerLabel = innerLabelTrim > 0 && React.createElement(DraggableLabel, {\n label: label,\n step: settings.step,\n onUpdate: onUpdate,\n innerLabelTrim: innerLabelTrim\n });\n return React.createElement(NumberInput, {\n id: id,\n value: String(displayValue),\n onUpdate: onUpdate,\n onChange: onChange,\n innerLabel: InnerLabel\n });\n}\nfunction NumberComponent() {\n const props = useInputContext();\n const {\n label,\n value,\n onUpdate,\n settings,\n id\n } = props;\n const {\n min,\n max\n } = settings;\n const hasRange = max !== Infinity && min !== -Infinity;\n return React.createElement(Row, {\n input: true\n }, React.createElement(Label, null, label), React.createElement(RangeGrid, {\n hasRange: hasRange\n }, hasRange && React.createElement(RangeSlider, _extends({\n value: parseFloat(value),\n onDrag: onUpdate\n }, settings)), React.createElement(Number$1, _extends({}, props, {\n id: id,\n label: \"value\",\n innerLabelTrim: hasRange ? 0 : 1\n }))));\n}\n\nconst {\n sanitizeStep\n} = props$3,\n rest = _objectWithoutProperties(props$3, [\"sanitizeStep\"]);\nvar number = createInternalPlugin(_objectSpread2({\n component: NumberComponent\n}, rest));\n\nconst schema$2 = (_o, s) => v8n().schema({\n options: v8n().passesAnyOf(v8n().object(), v8n().array())\n}).test(s);\nconst sanitize$2 = (value, {\n values\n}) => {\n if (values.indexOf(value) < 0) throw Error(`Selected value doesn't match Select options`);\n return value;\n};\nconst format = (value, {\n values\n}) => {\n return values.indexOf(value);\n};\nconst normalize$1 = input => {\n let {\n value,\n options\n } = input;\n let keys;\n let values;\n\n if (Array.isArray(options)) {\n values = options;\n keys = options.map(o => String(o));\n } else {\n values = Object.values(options);\n keys = Object.keys(options);\n }\n\n if (!('value' in input)) value = values[0];else if (!values.includes(value)) {\n keys.unshift(String(value));\n values.unshift(value);\n }\n if (!Object.values(options).includes(value)) options[String(value)] = value;\n return {\n value,\n settings: {\n keys,\n values\n }\n };\n};\n\nvar props$2 = /*#__PURE__*/Object.freeze({\n __proto__: null,\n schema: schema$2,\n sanitize: sanitize$2,\n format: format,\n normalize: normalize$1\n});\n\nconst SelectContainer = styled('div', {\n $flexCenter: '',\n position: 'relative',\n '> svg': {\n pointerEvents: 'none',\n position: 'absolute',\n right: '$md'\n }\n});\nconst NativeSelect = styled('select', {\n position: 'absolute',\n top: 0,\n left: 0,\n width: '100%',\n height: '100%',\n opacity: 0\n});\nconst PresentationalSelect = styled('div', {\n display: 'flex',\n alignItems: 'center',\n width: '100%',\n height: '$rowHeight',\n backgroundColor: '$elevation3',\n borderRadius: '$sm',\n padding: '0 $sm',\n cursor: 'pointer',\n [`${NativeSelect}:focus + &`]: {\n $focusStyle: ''\n },\n [`${NativeSelect}:hover + &`]: {\n $hoverStyle: ''\n }\n});\n\nfunction Select({\n displayValue,\n value,\n onUpdate,\n id,\n settings,\n disabled\n}) {\n const {\n keys,\n values\n } = settings;\n const lastDisplayedValue = useRef();\n\n if (value === values[displayValue]) {\n lastDisplayedValue.current = keys[displayValue];\n }\n\n return React.createElement(SelectContainer, null, React.createElement(NativeSelect, {\n id: id,\n value: displayValue,\n onChange: e => onUpdate(values[Number(e.currentTarget.value)]),\n disabled: disabled\n }, keys.map((key, index) => React.createElement(\"option\", {\n key: key,\n value: index\n }, key))), React.createElement(PresentationalSelect, null, lastDisplayedValue.current), React.createElement(Chevron, {\n toggled: true\n }));\n}\nfunction SelectComponent() {\n const {\n label,\n value,\n displayValue,\n onUpdate,\n id,\n disabled,\n settings\n } = useInputContext();\n return React.createElement(Row, {\n input: true\n }, React.createElement(Label, null, label), React.createElement(Select, {\n id: id,\n value: value,\n displayValue: displayValue,\n onUpdate: onUpdate,\n settings: settings,\n disabled: disabled\n }));\n}\n\nvar select = createInternalPlugin(_objectSpread2({\n component: SelectComponent\n}, props$2));\n\nconst schema$1 = o => v8n().string().test(o);\nconst sanitize$1 = v => {\n if (typeof v !== 'string') throw Error(`Invalid string`);\n return v;\n};\nconst normalize = ({\n value,\n editable: _editable = true,\n rows: _rows = false\n}) => {\n return {\n value,\n settings: {\n editable: _editable,\n rows: typeof _rows === 'number' ? _rows : _rows ? 5 : 0\n }\n };\n};\n\nvar props$1 = /*#__PURE__*/Object.freeze({\n __proto__: null,\n schema: schema$1,\n sanitize: sanitize$1,\n normalize: normalize\n});\n\nconst _excluded$2 = [\"displayValue\", \"onUpdate\", \"onChange\", \"editable\"];\nconst NonEditableString = styled('div', {\n whiteSpace: 'pre-wrap'\n});\nfunction String$1(_ref) {\n let {\n displayValue,\n onUpdate,\n onChange,\n editable = true\n } = _ref,\n props = _objectWithoutProperties(_ref, _excluded$2);\n\n if (editable) return React.createElement(ValueInput, _extends({\n value: displayValue,\n onUpdate: onUpdate,\n onChange: onChange\n }, props));\n return React.createElement(NonEditableString, null, displayValue);\n}\nfunction StringComponent() {\n const {\n label,\n settings,\n displayValue,\n onUpdate,\n onChange\n } = useInputContext();\n return React.createElement(Row, {\n input: true\n }, React.createElement(Label, null, label), React.createElement(String$1, _extends({\n displayValue: displayValue,\n onUpdate: onUpdate,\n onChange: onChange\n }, settings)));\n}\n\nvar string = createInternalPlugin(_objectSpread2({\n component: StringComponent\n}, props$1));\n\nconst schema = o => v8n().boolean().test(o);\nconst sanitize = v => {\n if (typeof v !== 'boolean') throw Error('Invalid boolean');\n return v;\n};\n\nvar props = /*#__PURE__*/Object.freeze({\n __proto__: null,\n schema: schema,\n sanitize: sanitize\n});\n\nconst StyledInputWrapper = styled('div', {\n position: 'relative',\n $flex: '',\n height: '$rowHeight',\n input: {\n $reset: '',\n height: 0,\n width: 0,\n opacity: 0,\n margin: 0\n },\n label: {\n position: 'relative',\n $flexCenter: '',\n userSelect: 'none',\n cursor: 'pointer',\n height: '$checkboxSize',\n width: '$checkboxSize',\n backgroundColor: '$elevation3',\n borderRadius: '$sm',\n $hover: ''\n },\n 'input:focus + label': {\n $focusStyle: ''\n },\n 'input:focus:checked + label, input:checked + label:hover': {\n $hoverStyle: '$accent3'\n },\n 'input + label:active': {\n backgroundColor: '$accent1'\n },\n 'input:checked + label:active': {\n backgroundColor: '$accent1'\n },\n 'label > svg': {\n display: 'none',\n width: '90%',\n height: '90%',\n stroke: '$highlight3'\n },\n 'input:checked + label': {\n backgroundColor: '$accent2'\n },\n 'input:checked + label > svg': {\n display: 'block'\n }\n});\n\nfunction Boolean({\n value,\n onUpdate,\n id,\n disabled\n}) {\n return React.createElement(StyledInputWrapper, null, React.createElement(\"input\", {\n id: id,\n type: \"checkbox\",\n checked: value,\n onChange: e => onUpdate(e.currentTarget.checked),\n disabled: disabled\n }), React.createElement(\"label\", {\n htmlFor: id\n }, React.createElement(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n fill: \"none\",\n viewBox: \"0 0 24 24\"\n }, React.createElement(\"path\", {\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n strokeWidth: 2,\n d: \"M5 13l4 4L19 7\"\n }))));\n}\nfunction BooleanComponent() {\n const {\n label,\n value,\n onUpdate,\n disabled,\n id\n } = useInputContext();\n return React.createElement(Row, {\n input: true\n }, React.createElement(Label, null, label), React.createElement(Boolean, {\n value: value,\n onUpdate: onUpdate,\n id: id,\n disabled: disabled\n }));\n}\n\nvar boolean = createInternalPlugin(_objectSpread2({\n component: BooleanComponent\n}, props));\n\nconst _excluded$1 = [\"locked\"];\n\nfunction Coordinate({\n value,\n id,\n valueKey,\n settings,\n onUpdate,\n innerLabelTrim\n}) {\n const valueRef = useRef(value[valueKey]);\n valueRef.current = value[valueKey];\n const setValue = useCallback(newValue => onUpdate({\n [valueKey]: sanitizeValue({\n type: 'NUMBER',\n value: valueRef.current,\n settings\n }, newValue)\n }), [onUpdate, settings, valueKey]);\n const number = useInputSetters({\n type: 'NUMBER',\n value: value[valueKey],\n settings,\n setValue\n });\n return React.createElement(Number$1, {\n id: id,\n label: valueKey,\n value: value[valueKey],\n displayValue: number.displayValue,\n onUpdate: number.onUpdate,\n onChange: number.onChange,\n settings: settings,\n innerLabelTrim: innerLabelTrim\n });\n}\n\nconst Container = styled('div', {\n display: 'grid',\n columnGap: '$colGap',\n gridAutoFlow: 'column dense',\n alignItems: 'center',\n variants: {\n withLock: {\n true: {\n gridTemplateColumns: '10px auto',\n '> svg': {\n cursor: 'pointer'\n }\n }\n }\n }\n});\n\nfunction Lock(_ref) {\n let {\n locked\n } = _ref,\n props = _objectWithoutProperties(_ref, _excluded$1);\n\n return React.createElement(\"svg\", _extends({\n width: \"10\",\n height: \"10\",\n viewBox: \"0 0 15 15\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props), locked ? React.createElement(\"path\", {\n d: \"M5 4.63601C5 3.76031 5.24219 3.1054 5.64323 2.67357C6.03934 2.24705 6.64582 1.9783 7.5014 1.9783C8.35745 1.9783 8.96306 2.24652 9.35823 2.67208C9.75838 3.10299 10 3.75708 10 4.63325V5.99999H5V4.63601ZM4 5.99999V4.63601C4 3.58148 4.29339 2.65754 4.91049 1.99307C5.53252 1.32329 6.42675 0.978302 7.5014 0.978302C8.57583 0.978302 9.46952 1.32233 10.091 1.99162C10.7076 2.65557 11 3.57896 11 4.63325V5.99999H12C12.5523 5.99999 13 6.44771 13 6.99999V13C13 13.5523 12.5523 14 12 14H3C2.44772 14 2 13.5523 2 13V6.99999C2 6.44771 2.44772 5.99999 3 5.99999H4ZM3 6.99999H12V13H3V6.99999Z\",\n fill: \"currentColor\",\n fillRule: \"evenodd\",\n clipRule: \"evenodd\"\n }) : React.createElement(\"path\", {\n d: \"M9 3.63601C9 2.76044 9.24207 2.11211 9.64154 1.68623C10.0366 1.26502 10.6432 1 11.5014 1C12.4485 1 13.0839 1.30552 13.4722 1.80636C13.8031 2.23312 14 2.84313 14 3.63325H15C15 2.68242 14.7626 1.83856 14.2625 1.19361C13.6389 0.38943 12.6743 0 11.5014 0C10.4294 0 9.53523 0.337871 8.91218 1.0021C8.29351 1.66167 8 2.58135 8 3.63601V6H1C0.447715 6 0 6.44772 0 7V13C0 13.5523 0.447715 14 1 14H10C10.5523 14 11 13.5523 11 13V7C11 6.44772 10.5523 6 10 6H9V3.63601ZM1 7H10V13H1V7Z\",\n fill: \"currentColor\",\n fillRule: \"evenodd\",\n clipRule: \"evenodd\"\n }));\n}\n\nfunction Vector({\n value,\n onUpdate,\n settings,\n innerLabelTrim\n}) {\n const {\n id,\n setSettings\n } = useInputContext();\n const {\n lock,\n locked\n } = settings;\n return React.createElement(Container, {\n withLock: lock\n }, lock && React.createElement(Lock, {\n locked: locked,\n onClick: () => setSettings({\n locked: !locked\n })\n }), Object.keys(value).map((key, i) => React.createElement(Coordinate, {\n id: i === 0 ? id : `${id}.${key}`,\n key: key,\n valueKey: key,\n value: value,\n settings: settings[key],\n onUpdate: onUpdate,\n innerLabelTrim: innerLabelTrim\n })));\n}\n\nconst normalizeKeyedNumberSettings = (value, settings) => {\n const _settings = {};\n let maxStep = 0;\n let minPad = Infinity;\n Object.entries(value).forEach(([key, v]) => {\n _settings[key] = normalize$2(_objectSpread2({\n value: v\n }, settings[key])).settings;\n maxStep = Math.max(maxStep, _settings[key].step);\n minPad = Math.min(minPad, _settings[key].pad);\n });\n\n for (let key in _settings) {\n const {\n step,\n min,\n max\n } = settings[key] || {};\n\n if (!isFinite(step) && (!isFinite(min) || !isFinite(max))) {\n _settings[key].step = maxStep;\n _settings[key].pad = minPad;\n }\n }\n\n return _settings;\n};\n\nconst _excluded = [\"lock\"],\n _excluded2 = [\"value\"];\nfunction getVectorSchema(dimension) {\n const isVectorArray = v8n().array().length(dimension).every.number();\n\n const isVectorObject = o => {\n if (!o || typeof o !== 'object') return false;\n const values = Object.values(o);\n return values.length === dimension && values.every(v => isFinite(v));\n };\n\n return o => {\n return isVectorArray.test(o) || isVectorObject(o);\n };\n}\nfunction getVectorType(value) {\n return Array.isArray(value) ? 'array' : 'object';\n}\n\nfunction convert(value, format, keys) {\n if (getVectorType(value) === format) return value;\n return format === 'array' ? Object.values(value) : mapArrayToKeys(value, keys);\n}\n\nconst sanitizeVector = (value, settings, previousValue) => {\n const _value = convert(value, 'object', settings.keys);\n\n for (let key in _value) _value[key] = sanitize$3(_value[key], settings[key]);\n\n const _valueKeys = Object.keys(_value);\n\n let newValue = {};\n if (_valueKeys.length === settings.keys.length) newValue = _value;else {\n const _previousValue = convert(previousValue, 'object', settings.keys);\n\n if (_valueKeys.length === 1 && settings.locked) {\n const lockedKey = _valueKeys[0];\n const lockedCoordinate = _value[lockedKey];\n const previousLockedCoordinate = _previousValue[lockedKey];\n const ratio = previousLockedCoordinate !== 0 ? lockedCoordinate / previousLockedCoordinate : 1;\n\n for (let key in _previousValue) {\n if (key === lockedKey) newValue[lockedKey] = lockedCoordinate;else newValue[key] = _previousValue[key] * ratio;\n }\n } else {\n newValue = _objectSpread2(_objectSpread2({}, _previousValue), _value);\n }\n }\n return convert(newValue, settings.format, settings.keys);\n};\nconst formatVector = (value, settings) => convert(value, 'object', settings.keys);\n\nconst isNumberSettings = o => !!o && ('step' in o || 'min' in o || 'max' in o);\n\nfunction normalizeVector(value, settings, defaultKeys = []) {\n const {\n lock = false\n } = settings,\n _settings = _objectWithoutProperties(settings, _excluded);\n\n const format = Array.isArray(value) ? 'array' : 'object';\n const keys = format === 'object' ? Object.keys(value) : defaultKeys;\n\n const _value = convert(value, 'object', keys);\n\n const mergedSettings = isNumberSettings(_settings) ? keys.reduce((acc, k) => Object.assign(acc, {\n [k]: _settings\n }), {}) : _settings;\n const numberSettings = normalizeKeyedNumberSettings(_value, mergedSettings);\n return {\n value: format === 'array' ? value : _value,\n settings: _objectSpread2(_objectSpread2({}, numberSettings), {}, {\n format,\n keys,\n lock,\n locked: false\n })\n };\n}\nfunction getVectorPlugin(defaultKeys) {\n return {\n schema: getVectorSchema(defaultKeys.length),\n normalize: _ref => {\n let {\n value\n } = _ref,\n settings = _objectWithoutProperties(_ref, _excluded2);\n\n return normalizeVector(value, settings, defaultKeys);\n },\n format: (value, settings) => formatVector(value, settings),\n sanitize: (value, settings, prevValue) => sanitizeVector(value, settings, prevValue)\n };\n}\n\nexport { ThemeContext as $, StyledTitle as A, useInputSetters as B, Chevron as C, Plugins as D, InputContext as E, StyledInputWrapper$1 as F, useStoreContext as G, useCanvas2d as H, Indicator as I, useInput as J, log as K, Label as L, StyledWrapper as M, StyledContent as N, Overlay as O, Portal as P, StyledFolder as Q, Row as R, Scrubber as S, StyledInputRow as T, debounce as U, ValueInput as V, globalStyles as W, PanelSettingsContext as X, StoreContext as Y, mergeTheme as Z, _objectSpread2 as _, Vector as a, register as a0, LevaInputs as a1, select as a2, number as a3, string as a4, boolean as a5, LevaStoreProvider as a6, String$1 as a7, Number$1 as a8, Boolean as a9, Select as aa, InnerLabel as ab, pad as ac, evaluate as ad, createPlugin as ae, keyframes as af, getVectorSchema as ag, getVectorType as ah, sanitizeVector as ai, formatVector as aj, normalizeVector as ak, useTransform as b, createInternalPlugin as c, useTh as d, useDrag as e, _extends as f, getVectorPlugin as g, clamp as h, _objectWithoutProperties as i, invertedRange as j, sanitizeStep as k, RangeWrapper as l, multiplyStep as m, normalizeKeyedNumberSettings as n, omit as o, pick as p, Range as q, range as r, styled as s, getUid as t, useInputContext as u, SpecialInputs as v, warn as w, LevaErrors as x, updateInput as y, normalizeInput as z };\n","import * as React from 'react';\nimport { useCallbackRef } from '@radix-ui/react-use-callback-ref';\n\ntype UseControllableStateParams = {\n prop?: T | undefined;\n defaultProp?: T | undefined;\n onChange?: (state: T) => void;\n};\n\ntype SetStateFn = (prevState?: T) => T;\n\nfunction useControllableState({\n prop,\n defaultProp,\n onChange = () => {},\n}: UseControllableStateParams) {\n const [uncontrolledProp, setUncontrolledProp] = useUncontrolledState({ defaultProp, onChange });\n const isControlled = prop !== undefined;\n const value = isControlled ? prop : uncontrolledProp;\n const handleChange = useCallbackRef(onChange);\n\n const setValue: React.Dispatch> = React.useCallback(\n (nextValue) => {\n if (isControlled) {\n const setter = nextValue as SetStateFn;\n const value = typeof nextValue === 'function' ? setter(prop) : nextValue;\n if (value !== prop) handleChange(value as T);\n } else {\n setUncontrolledProp(nextValue);\n }\n },\n [isControlled, prop, setUncontrolledProp, handleChange]\n );\n\n return [value, setValue] as const;\n}\n\nfunction useUncontrolledState({\n defaultProp,\n onChange,\n}: Omit, 'prop'>) {\n const uncontrolledState = React.useState(defaultProp);\n const [value] = uncontrolledState;\n const prevValueRef = React.useRef(value);\n const handleChange = useCallbackRef(onChange);\n\n React.useEffect(() => {\n if (prevValueRef.current !== value) {\n handleChange(value as T);\n prevValueRef.current = value;\n }\n }, [value, prevValueRef, handleChange]);\n\n return uncontrolledState;\n}\n\nexport { useControllableState };\n","var r={grad:.9,turn:360,rad:360/(2*Math.PI)},t=function(r){return\"string\"==typeof r?r.length>0:\"number\"==typeof r},n=function(r,t,n){return void 0===t&&(t=0),void 0===n&&(n=Math.pow(10,t)),Math.round(n*r)/n+0},e=function(r,t,n){return void 0===t&&(t=0),void 0===n&&(n=1),r>n?n:r>t?r:t},u=function(r){return(r=isFinite(r)?r%360:0)>0?r:r+360},a=function(r){return{r:e(r.r,0,255),g:e(r.g,0,255),b:e(r.b,0,255),a:e(r.a)}},o=function(r){return{r:n(r.r),g:n(r.g),b:n(r.b),a:n(r.a,3)}},i=/^#([0-9a-f]{3,8})$/i,s=function(r){var t=r.toString(16);return t.length<2?\"0\"+t:t},h=function(r){var t=r.r,n=r.g,e=r.b,u=r.a,a=Math.max(t,n,e),o=a-Math.min(t,n,e),i=o?a===t?(n-e)/o:a===n?2+(e-t)/o:4+(t-n)/o:0;return{h:60*(i<0?i+6:i),s:a?o/a*100:0,v:a/255*100,a:u}},b=function(r){var t=r.h,n=r.s,e=r.v,u=r.a;t=t/360*6,n/=100,e/=100;var a=Math.floor(t),o=e*(1-n),i=e*(1-(t-a)*n),s=e*(1-(1-t+a)*n),h=a%6;return{r:255*[e,i,o,o,s,e][h],g:255*[s,e,e,i,o,o][h],b:255*[o,o,s,e,e,i][h],a:u}},g=function(r){return{h:u(r.h),s:e(r.s,0,100),l:e(r.l,0,100),a:e(r.a)}},d=function(r){return{h:n(r.h),s:n(r.s),l:n(r.l),a:n(r.a,3)}},f=function(r){return b((n=(t=r).s,{h:t.h,s:(n*=((e=t.l)<50?e:100-e)/100)>0?2*n/(e+n)*100:0,v:e+n,a:t.a}));var t,n,e},c=function(r){return{h:(t=h(r)).h,s:(u=(200-(n=t.s))*(e=t.v)/100)>0&&u<200?n*e/100/(u<=100?u:200-u)*100:0,l:u/2,a:t.a};var t,n,e,u},l=/^hsla?\\(\\s*([+-]?\\d*\\.?\\d+)(deg|rad|grad|turn)?\\s*,\\s*([+-]?\\d*\\.?\\d+)%\\s*,\\s*([+-]?\\d*\\.?\\d+)%\\s*(?:,\\s*([+-]?\\d*\\.?\\d+)(%)?\\s*)?\\)$/i,p=/^hsla?\\(\\s*([+-]?\\d*\\.?\\d+)(deg|rad|grad|turn)?\\s+([+-]?\\d*\\.?\\d+)%\\s+([+-]?\\d*\\.?\\d+)%\\s*(?:\\/\\s*([+-]?\\d*\\.?\\d+)(%)?\\s*)?\\)$/i,v=/^rgba?\\(\\s*([+-]?\\d*\\.?\\d+)(%)?\\s*,\\s*([+-]?\\d*\\.?\\d+)(%)?\\s*,\\s*([+-]?\\d*\\.?\\d+)(%)?\\s*(?:,\\s*([+-]?\\d*\\.?\\d+)(%)?\\s*)?\\)$/i,m=/^rgba?\\(\\s*([+-]?\\d*\\.?\\d+)(%)?\\s+([+-]?\\d*\\.?\\d+)(%)?\\s+([+-]?\\d*\\.?\\d+)(%)?\\s*(?:\\/\\s*([+-]?\\d*\\.?\\d+)(%)?\\s*)?\\)$/i,y={string:[[function(r){var t=i.exec(r);return t?(r=t[1]).length<=4?{r:parseInt(r[0]+r[0],16),g:parseInt(r[1]+r[1],16),b:parseInt(r[2]+r[2],16),a:4===r.length?n(parseInt(r[3]+r[3],16)/255,2):1}:6===r.length||8===r.length?{r:parseInt(r.substr(0,2),16),g:parseInt(r.substr(2,2),16),b:parseInt(r.substr(4,2),16),a:8===r.length?n(parseInt(r.substr(6,2),16)/255,2):1}:null:null},\"hex\"],[function(r){var t=v.exec(r)||m.exec(r);return t?t[2]!==t[4]||t[4]!==t[6]?null:a({r:Number(t[1])/(t[2]?100/255:1),g:Number(t[3])/(t[4]?100/255:1),b:Number(t[5])/(t[6]?100/255:1),a:void 0===t[7]?1:Number(t[7])/(t[8]?100:1)}):null},\"rgb\"],[function(t){var n=l.exec(t)||p.exec(t);if(!n)return null;var e,u,a=g({h:(e=n[1],u=n[2],void 0===u&&(u=\"deg\"),Number(e)*(r[u]||1)),s:Number(n[3]),l:Number(n[4]),a:void 0===n[5]?1:Number(n[5])/(n[6]?100:1)});return f(a)},\"hsl\"]],object:[[function(r){var n=r.r,e=r.g,u=r.b,o=r.a,i=void 0===o?1:o;return t(n)&&t(e)&&t(u)?a({r:Number(n),g:Number(e),b:Number(u),a:Number(i)}):null},\"rgb\"],[function(r){var n=r.h,e=r.s,u=r.l,a=r.a,o=void 0===a?1:a;if(!t(n)||!t(e)||!t(u))return null;var i=g({h:Number(n),s:Number(e),l:Number(u),a:Number(o)});return f(i)},\"hsl\"],[function(r){var n=r.h,a=r.s,o=r.v,i=r.a,s=void 0===i?1:i;if(!t(n)||!t(a)||!t(o))return null;var h=function(r){return{h:u(r.h),s:e(r.s,0,100),v:e(r.v,0,100),a:e(r.a)}}({h:Number(n),s:Number(a),v:Number(o),a:Number(s)});return b(h)},\"hsv\"]]},N=function(r,t){for(var n=0;n=.5},r.prototype.toHex=function(){return r=o(this.rgba),t=r.r,e=r.g,u=r.b,i=(a=r.a)<1?s(n(255*a)):\"\",\"#\"+s(t)+s(e)+s(u)+i;var r,t,e,u,a,i},r.prototype.toRgb=function(){return o(this.rgba)},r.prototype.toRgbString=function(){return r=o(this.rgba),t=r.r,n=r.g,e=r.b,(u=r.a)<1?\"rgba(\"+t+\", \"+n+\", \"+e+\", \"+u+\")\":\"rgb(\"+t+\", \"+n+\", \"+e+\")\";var r,t,n,e,u},r.prototype.toHsl=function(){return d(c(this.rgba))},r.prototype.toHslString=function(){return r=d(c(this.rgba)),t=r.h,n=r.s,e=r.l,(u=r.a)<1?\"hsla(\"+t+\", \"+n+\"%, \"+e+\"%, \"+u+\")\":\"hsl(\"+t+\", \"+n+\"%, \"+e+\"%)\";var r,t,n,e,u},r.prototype.toHsv=function(){return r=h(this.rgba),{h:n(r.h),s:n(r.s),v:n(r.v),a:n(r.a,3)};var r},r.prototype.invert=function(){return w({r:255-(r=this.rgba).r,g:255-r.g,b:255-r.b,a:r.a});var r},r.prototype.saturate=function(r){return void 0===r&&(r=.1),w(M(this.rgba,r))},r.prototype.desaturate=function(r){return void 0===r&&(r=.1),w(M(this.rgba,-r))},r.prototype.grayscale=function(){return w(M(this.rgba,-1))},r.prototype.lighten=function(r){return void 0===r&&(r=.1),w($(this.rgba,r))},r.prototype.darken=function(r){return void 0===r&&(r=.1),w($(this.rgba,-r))},r.prototype.rotate=function(r){return void 0===r&&(r=15),this.hue(this.hue()+r)},r.prototype.alpha=function(r){return\"number\"==typeof r?w({r:(t=this.rgba).r,g:t.g,b:t.b,a:r}):n(this.rgba.a,3);var t},r.prototype.hue=function(r){var t=c(this.rgba);return\"number\"==typeof r?w({h:r,s:t.s,l:t.l,a:t.a}):n(t.h)},r.prototype.isEqual=function(r){return this.toHex()===w(r).toHex()},r}(),w=function(r){return r instanceof j?r:new j(r)},S=[],k=function(r){r.forEach(function(r){S.indexOf(r)<0&&(r(j,y),S.push(r))})},E=function(){return new j({r:255*Math.random(),g:255*Math.random(),b:255*Math.random()})};export{j as Colord,w as colord,k as extend,I as getFormat,E as random};\n","import { useRef } from \"react\";\n\n// Saves incoming handler to the ref in order to avoid \"useCallback hell\"\nexport function useEventCallback(handler?: (value: T) => void): (value: T) => void {\n const callbackRef = useRef(handler);\n const fn = useRef((value: T) => {\n callbackRef.current && callbackRef.current(value);\n });\n callbackRef.current = handler;\n\n return fn.current;\n}\n","// Clamps a value between an upper and lower bound.\n// We use ternary operators because it makes the minified code\n// 2 times shorter then `Math.min(Math.max(a,b),c)`\nexport const clamp = (number: number, min = 0, max = 1): number => {\n return number > max ? max : number < min ? min : number;\n};\n","import React, { useRef, useMemo, useEffect } from \"react\";\n\nimport { useEventCallback } from \"../../hooks/useEventCallback\";\nimport { clamp } from \"../../utils/clamp\";\n\nexport interface Interaction {\n left: number;\n top: number;\n}\n\n// Check if an event was triggered by touch\nconst isTouch = (event: MouseEvent | TouchEvent): event is TouchEvent => \"touches\" in event;\n\n// Finds a proper touch point by its identifier\nconst getTouchPoint = (touches: TouchList, touchId: null | number): Touch => {\n for (let i = 0; i < touches.length; i++) {\n if (touches[i].identifier === touchId) return touches[i];\n }\n return touches[0];\n};\n\n// Finds the proper window object to fix iframe embedding issues\nconst getParentWindow = (node?: HTMLDivElement | null): Window => {\n return (node && node.ownerDocument.defaultView) || self;\n};\n\n// Returns a relative position of the pointer inside the node's bounding box\nconst getRelativePosition = (\n node: HTMLDivElement,\n event: MouseEvent | TouchEvent,\n touchId: null | number\n): Interaction => {\n const rect = node.getBoundingClientRect();\n\n // Get user's pointer position from `touches` array if it's a `TouchEvent`\n const pointer = isTouch(event) ? getTouchPoint(event.touches, touchId) : (event as MouseEvent);\n\n return {\n left: clamp((pointer.pageX - (rect.left + getParentWindow(node).pageXOffset)) / rect.width),\n top: clamp((pointer.pageY - (rect.top + getParentWindow(node).pageYOffset)) / rect.height),\n };\n};\n\n// Browsers introduced an intervention, making touch events passive by default.\n// This workaround removes `preventDefault` call from the touch handlers.\n// https://github.com/facebook/react/issues/19651\nconst preventDefaultMove = (event: MouseEvent | TouchEvent): void => {\n !isTouch(event) && event.preventDefault();\n};\n\n// Prevent mobile browsers from handling mouse events (conflicting with touch ones).\n// If we detected a touch interaction before, we prefer reacting to touch events only.\nconst isInvalid = (event: MouseEvent | TouchEvent, hasTouch: boolean): boolean => {\n return hasTouch && !isTouch(event);\n};\n\ninterface Props {\n onMove: (interaction: Interaction) => void;\n onKey: (offset: Interaction) => void;\n children: React.ReactNode;\n}\n\nconst InteractiveBase = ({ onMove, onKey, ...rest }: Props) => {\n const container = useRef(null);\n const onMoveCallback = useEventCallback(onMove);\n const onKeyCallback = useEventCallback(onKey);\n const touchId = useRef(null);\n const hasTouch = useRef(false);\n\n const [handleMoveStart, handleKeyDown, toggleDocumentEvents] = useMemo(() => {\n const handleMoveStart = ({ nativeEvent }: React.MouseEvent | React.TouchEvent) => {\n const el = container.current;\n if (!el) return;\n\n // Prevent text selection\n preventDefaultMove(nativeEvent);\n\n if (isInvalid(nativeEvent, hasTouch.current) || !el) return;\n\n if (isTouch(nativeEvent)) {\n hasTouch.current = true;\n const changedTouches = nativeEvent.changedTouches || [];\n if (changedTouches.length) touchId.current = changedTouches[0].identifier;\n }\n\n el.focus();\n onMoveCallback(getRelativePosition(el, nativeEvent, touchId.current));\n toggleDocumentEvents(true);\n };\n\n const handleMove = (event: MouseEvent | TouchEvent) => {\n // Prevent text selection\n preventDefaultMove(event);\n\n // If user moves the pointer outside of the window or iframe bounds and release it there,\n // `mouseup`/`touchend` won't be fired. In order to stop the picker from following the cursor\n // after the user has moved the mouse/finger back to the document, we check `event.buttons`\n // and `event.touches`. It allows us to detect that the user is just moving his pointer\n // without pressing it down\n const isDown = isTouch(event) ? event.touches.length > 0 : event.buttons > 0;\n\n if (isDown && container.current) {\n onMoveCallback(getRelativePosition(container.current, event, touchId.current));\n } else {\n toggleDocumentEvents(false);\n }\n };\n\n const handleMoveEnd = () => toggleDocumentEvents(false);\n\n const handleKeyDown = (event: React.KeyboardEvent) => {\n const keyCode = event.which || event.keyCode;\n\n // Ignore all keys except arrow ones\n if (keyCode < 37 || keyCode > 40) return;\n // Do not scroll page by arrow keys when document is focused on the element\n event.preventDefault();\n // Send relative offset to the parent component.\n // We use codes (37←, 38↑, 39→, 40↓) instead of keys ('ArrowRight', 'ArrowDown', etc)\n // to reduce the size of the library\n onKeyCallback({\n left: keyCode === 39 ? 0.05 : keyCode === 37 ? -0.05 : 0,\n top: keyCode === 40 ? 0.05 : keyCode === 38 ? -0.05 : 0,\n });\n };\n\n function toggleDocumentEvents(state?: boolean) {\n const touch = hasTouch.current;\n const el = container.current;\n const parentWindow = getParentWindow(el);\n\n // Add or remove additional pointer event listeners\n const toggleEvent = state ? parentWindow.addEventListener : parentWindow.removeEventListener;\n toggleEvent(touch ? \"touchmove\" : \"mousemove\", handleMove);\n toggleEvent(touch ? \"touchend\" : \"mouseup\", handleMoveEnd);\n }\n\n return [handleMoveStart, handleKeyDown, toggleDocumentEvents];\n }, [onKeyCallback, onMoveCallback]);\n\n // Remove window event listeners before unmounting\n useEffect(() => toggleDocumentEvents, [toggleDocumentEvents]);\n\n return (\n \n );\n};\n\nexport const Interactive = React.memo(InteractiveBase);\n","export const formatClassName = (names: unknown[]): string => names.filter(Boolean).join(\" \");\n","import React from \"react\";\nimport { formatClassName } from \"../../utils/format\";\n\ninterface Props {\n className?: string;\n top?: number;\n left: number;\n color: string;\n}\n\nexport const Pointer = ({ className, color, left, top = 0.5 }: Props): JSX.Element => {\n const nodeClassName = formatClassName([\"react-colorful__pointer\", className]);\n\n const style = {\n top: `${top * 100}%`,\n left: `${left * 100}%`,\n };\n\n return (\n

\n
\n
\n );\n};\n","export const round = (number: number, digits = 0, base = Math.pow(10, digits)): number => {\n return Math.round(base * number) / base;\n};\n","import { round } from \"./round\";\nimport { RgbaColor, RgbColor, HslaColor, HslColor, HsvaColor, HsvColor } from \"../types\";\n\n/**\n * Valid CSS units.\n * https://developer.mozilla.org/en-US/docs/Web/CSS/angle\n */\nconst angleUnits: Record = {\n grad: 360 / 400,\n turn: 360,\n rad: 360 / (Math.PI * 2),\n};\n\nexport const hexToHsva = (hex: string): HsvaColor => rgbaToHsva(hexToRgba(hex));\n\nexport const hexToRgba = (hex: string): RgbaColor => {\n if (hex[0] === \"#\") hex = hex.substr(1);\n\n if (hex.length < 6) {\n return {\n r: parseInt(hex[0] + hex[0], 16),\n g: parseInt(hex[1] + hex[1], 16),\n b: parseInt(hex[2] + hex[2], 16),\n a: 1,\n };\n }\n\n return {\n r: parseInt(hex.substr(0, 2), 16),\n g: parseInt(hex.substr(2, 2), 16),\n b: parseInt(hex.substr(4, 2), 16),\n a: 1,\n };\n};\n\nexport const parseHue = (value: string, unit = \"deg\"): number => {\n return Number(value) * (angleUnits[unit] || 1);\n};\n\nexport const hslaStringToHsva = (hslString: string): HsvaColor => {\n const matcher = /hsla?\\(?\\s*(-?\\d*\\.?\\d+)(deg|rad|grad|turn)?[,\\s]+(-?\\d*\\.?\\d+)%?[,\\s]+(-?\\d*\\.?\\d+)%?,?\\s*[/\\s]*(-?\\d*\\.?\\d+)?(%)?\\s*\\)?/i;\n const match = matcher.exec(hslString);\n\n if (!match) return { h: 0, s: 0, v: 0, a: 1 };\n\n return hslaToHsva({\n h: parseHue(match[1], match[2]),\n s: Number(match[3]),\n l: Number(match[4]),\n a: match[5] === undefined ? 1 : Number(match[5]) / (match[6] ? 100 : 1),\n });\n};\n\nexport const hslStringToHsva = hslaStringToHsva;\n\nexport const hslaToHsva = ({ h, s, l, a }: HslaColor): HsvaColor => {\n s *= (l < 50 ? l : 100 - l) / 100;\n\n return {\n h: h,\n s: s > 0 ? ((2 * s) / (l + s)) * 100 : 0,\n v: l + s,\n a,\n };\n};\n\nexport const hsvaToHex = (hsva: HsvaColor): string => rgbaToHex(hsvaToRgba(hsva));\n\nexport const hsvaToHsla = ({ h, s, v, a }: HsvaColor): HslaColor => {\n const hh = ((200 - s) * v) / 100;\n\n return {\n h: round(h),\n s: round(hh > 0 && hh < 200 ? ((s * v) / 100 / (hh <= 100 ? hh : 200 - hh)) * 100 : 0),\n l: round(hh / 2),\n a: round(a, 2),\n };\n};\n\nexport const hsvaToHslString = (hsva: HsvaColor): string => {\n const { h, s, l } = hsvaToHsla(hsva);\n return `hsl(${h}, ${s}%, ${l}%)`;\n};\n\nexport const hsvaToHsvString = (hsva: HsvaColor): string => {\n const { h, s, v } = roundHsva(hsva);\n return `hsv(${h}, ${s}%, ${v}%)`;\n};\n\nexport const hsvaToHsvaString = (hsva: HsvaColor): string => {\n const { h, s, v, a } = roundHsva(hsva);\n return `hsva(${h}, ${s}%, ${v}%, ${a})`;\n};\n\nexport const hsvaToHslaString = (hsva: HsvaColor): string => {\n const { h, s, l, a } = hsvaToHsla(hsva);\n return `hsla(${h}, ${s}%, ${l}%, ${a})`;\n};\n\nexport const hsvaToRgba = ({ h, s, v, a }: HsvaColor): RgbaColor => {\n h = (h / 360) * 6;\n s = s / 100;\n v = v / 100;\n\n const hh = Math.floor(h),\n b = v * (1 - s),\n c = v * (1 - (h - hh) * s),\n d = v * (1 - (1 - h + hh) * s),\n module = hh % 6;\n\n return {\n r: round([v, c, b, b, d, v][module] * 255),\n g: round([d, v, v, c, b, b][module] * 255),\n b: round([b, b, d, v, v, c][module] * 255),\n a: round(a, 2),\n };\n};\n\nexport const hsvaToRgbString = (hsva: HsvaColor): string => {\n const { r, g, b } = hsvaToRgba(hsva);\n return `rgb(${r}, ${g}, ${b})`;\n};\n\nexport const hsvaToRgbaString = (hsva: HsvaColor): string => {\n const { r, g, b, a } = hsvaToRgba(hsva);\n return `rgba(${r}, ${g}, ${b}, ${a})`;\n};\n\nexport const hsvaStringToHsva = (hsvString: string): HsvaColor => {\n const matcher = /hsva?\\(?\\s*(-?\\d*\\.?\\d+)(deg|rad|grad|turn)?[,\\s]+(-?\\d*\\.?\\d+)%?[,\\s]+(-?\\d*\\.?\\d+)%?,?\\s*[/\\s]*(-?\\d*\\.?\\d+)?(%)?\\s*\\)?/i;\n const match = matcher.exec(hsvString);\n\n if (!match) return { h: 0, s: 0, v: 0, a: 1 };\n\n return roundHsva({\n h: parseHue(match[1], match[2]),\n s: Number(match[3]),\n v: Number(match[4]),\n a: match[5] === undefined ? 1 : Number(match[5]) / (match[6] ? 100 : 1),\n });\n};\n\nexport const hsvStringToHsva = hsvaStringToHsva;\n\nexport const rgbaStringToHsva = (rgbaString: string): HsvaColor => {\n const matcher = /rgba?\\(?\\s*(-?\\d*\\.?\\d+)(%)?[,\\s]+(-?\\d*\\.?\\d+)(%)?[,\\s]+(-?\\d*\\.?\\d+)(%)?,?\\s*[/\\s]*(-?\\d*\\.?\\d+)?(%)?\\s*\\)?/i;\n const match = matcher.exec(rgbaString);\n\n if (!match) return { h: 0, s: 0, v: 0, a: 1 };\n\n return rgbaToHsva({\n r: Number(match[1]) / (match[2] ? 100 / 255 : 1),\n g: Number(match[3]) / (match[4] ? 100 / 255 : 1),\n b: Number(match[5]) / (match[6] ? 100 / 255 : 1),\n a: match[7] === undefined ? 1 : Number(match[7]) / (match[8] ? 100 : 1),\n });\n};\n\nexport const rgbStringToHsva = rgbaStringToHsva;\n\nconst format = (number: number) => {\n const hex = number.toString(16);\n return hex.length < 2 ? \"0\" + hex : hex;\n};\n\nexport const rgbaToHex = ({ r, g, b }: RgbaColor): string => {\n return \"#\" + format(r) + format(g) + format(b);\n};\n\nexport const rgbaToHsva = ({ r, g, b, a }: RgbaColor): HsvaColor => {\n const max = Math.max(r, g, b);\n const delta = max - Math.min(r, g, b);\n\n // prettier-ignore\n const hh = delta\n ? max === r\n ? (g - b) / delta\n : max === g\n ? 2 + (b - r) / delta\n : 4 + (r - g) / delta\n : 0;\n\n return {\n h: round(60 * (hh < 0 ? hh + 6 : hh)),\n s: round(max ? (delta / max) * 100 : 0),\n v: round((max / 255) * 100),\n a,\n };\n};\n\nexport const roundHsva = (hsva: HsvaColor): HsvaColor => ({\n h: round(hsva.h),\n s: round(hsva.s),\n v: round(hsva.v),\n a: round(hsva.a, 2),\n});\n\nexport const rgbaToRgb = ({ r, g, b }: RgbaColor): RgbColor => ({ r, g, b });\n\nexport const hslaToHsl = ({ h, s, l }: HslaColor): HslColor => ({ h, s, l });\n\nexport const hsvaToHsv = (hsva: HsvaColor): HsvColor => {\n const { h, s, v } = roundHsva(hsva);\n return { h, s, v };\n};\n","import React from \"react\";\n\nimport { Interactive, Interaction } from \"./Interactive\";\nimport { Pointer } from \"./Pointer\";\n\nimport { hsvaToHslString } from \"../../utils/convert\";\nimport { formatClassName } from \"../../utils/format\";\nimport { clamp } from \"../../utils/clamp\";\nimport { round } from \"../../utils/round\";\n\ninterface Props {\n className?: string;\n hue: number;\n onChange: (newHue: { h: number }) => void;\n}\n\nconst HueBase = ({ className, hue, onChange }: Props) => {\n const handleMove = (interaction: Interaction) => {\n onChange({ h: 360 * interaction.left });\n };\n\n const handleKey = (offset: Interaction) => {\n // Hue measured in degrees of the color circle ranging from 0 to 360\n onChange({\n h: clamp(hue + offset.left * 360, 0, 360),\n });\n };\n\n const nodeClassName = formatClassName([\"react-colorful__hue\", className]);\n\n return (\n
\n \n \n \n
\n );\n};\n\nexport const Hue = React.memo(HueBase);\n","import React from \"react\";\nimport { Interactive, Interaction } from \"./Interactive\";\nimport { Pointer } from \"./Pointer\";\nimport { HsvaColor } from \"../../types\";\nimport { hsvaToHslString } from \"../../utils/convert\";\nimport { clamp } from \"../../utils/clamp\";\nimport { round } from \"../../utils/round\";\n\ninterface Props {\n hsva: HsvaColor;\n onChange: (newColor: { s: number; v: number }) => void;\n}\n\nconst SaturationBase = ({ hsva, onChange }: Props) => {\n const handleMove = (interaction: Interaction) => {\n onChange({\n s: interaction.left * 100,\n v: 100 - interaction.top * 100,\n });\n };\n\n const handleKey = (offset: Interaction) => {\n // Saturation and brightness always fit into [0, 100] range\n onChange({\n s: clamp(hsva.s + offset.left * 100, 0, 100),\n v: clamp(hsva.v - offset.top * 100, 0, 100),\n });\n };\n\n const containerStyle = {\n backgroundColor: hsvaToHslString({ h: hsva.h, s: 100, v: 100, a: 1 }),\n };\n\n return (\n
\n \n \n \n
\n );\n};\n\nexport const Saturation = React.memo(SaturationBase);\n","import { hexToRgba } from \"./convert\";\nimport { ObjectColor } from \"../types\";\n\nexport const equalColorObjects = (first: ObjectColor, second: ObjectColor): boolean => {\n if (first === second) return true;\n\n for (const prop in first) {\n // The following allows for a type-safe calling of this function (first & second have to be HSL, HSV, or RGB)\n // with type-unsafe iterating over object keys. TS does not allow this without an index (`[key: string]: number`)\n // on an object to define how iteration is normally done. To ensure extra keys are not allowed on our types,\n // we must cast our object to unknown (as RGB demands `r` be a key, while `Record` does not care if\n // there is or not), and then as a type TS can iterate over.\n if (\n ((first as unknown) as Record)[prop] !==\n ((second as unknown) as Record)[prop]\n )\n return false;\n }\n\n return true;\n};\n\nexport const equalColorString = (first: string, second: string): boolean => {\n return first.replace(/\\s/g, \"\") === second.replace(/\\s/g, \"\");\n};\n\nexport const equalHex = (first: string, second: string): boolean => {\n if (first.toLowerCase() === second.toLowerCase()) return true;\n\n // To compare colors like `#FFF` and `ffffff` we convert them into RGB objects\n return equalColorObjects(hexToRgba(first), hexToRgba(second));\n};\n","import { useState, useEffect, useCallback, useRef } from \"react\";\nimport { ColorModel, AnyColor, HsvaColor } from \"../types\";\nimport { equalColorObjects } from \"../utils/compare\";\nimport { useEventCallback } from \"./useEventCallback\";\n\nexport function useColorManipulation(\n colorModel: ColorModel,\n color: T,\n onChange?: (color: T) => void\n): [HsvaColor, (color: Partial) => void] {\n // Save onChange callback in the ref for avoiding \"useCallback hell\"\n const onChangeCallback = useEventCallback(onChange);\n\n // No matter which color model is used (HEX, RGB(A) or HSL(A)),\n // all internal calculations are based on HSVA model\n const [hsva, updateHsva] = useState(() => colorModel.toHsva(color));\n\n // By using this ref we're able to prevent extra updates\n // and the effects recursion during the color conversion\n const cache = useRef({ color, hsva });\n\n // Update local HSVA-value if `color` property value is changed,\n // but only if that's not the same color that we just sent to the parent\n useEffect(() => {\n if (!colorModel.equal(color, cache.current.color)) {\n const newHsva = colorModel.toHsva(color);\n cache.current = { hsva: newHsva, color };\n updateHsva(newHsva);\n }\n }, [color, colorModel]);\n\n // Trigger `onChange` callback only if an updated color is different from cached one;\n // save the new color to the ref to prevent unnecessary updates\n useEffect(() => {\n let newColor;\n if (\n !equalColorObjects(hsva, cache.current.hsva) &&\n !colorModel.equal((newColor = colorModel.fromHsva(hsva)), cache.current.color)\n ) {\n cache.current = { hsva, color: newColor };\n onChangeCallback(newColor);\n }\n }, [hsva, colorModel, onChangeCallback]);\n\n // Merge the current HSVA color object with updated params.\n // For example, when a child component sends `h` or `s` only\n const handleChange = useCallback((params: Partial) => {\n updateHsva((current) => Object.assign({}, current, params));\n }, []);\n\n return [hsva, handleChange];\n}\n","declare const __webpack_nonce__: string | undefined;\nlet nonce: string | undefined;\n\n/**\n * Returns a nonce hash included by Webpack or the one defined manually by developer.\n * https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/nonce\n * https://webpack.js.org/guides/csp/\n */\nexport const getNonce = (): string | undefined => {\n if (nonce) return nonce;\n if (typeof __webpack_nonce__ !== \"undefined\") return __webpack_nonce__;\n return undefined;\n};\n\n/**\n * Signs the style tag with a base64-encoded string (nonce) to conforms to Content Security Policies.\n * This function has to be invoked before any picker is rendered if you aren't using Webpack for CSP.\n */\nexport const setNonce = (hash: string): void => {\n nonce = hash;\n};\n","import { useLayoutEffect, useEffect } from \"react\";\n\n// React currently throws a warning when using useLayoutEffect on the server.\n// To get around it, we can conditionally useEffect on the server (no-op) and\n// useLayoutEffect in the browser.\nexport const useIsomorphicLayoutEffect =\n typeof window !== \"undefined\" ? useLayoutEffect : useEffect;\n","import { RefObject } from \"react\";\n\nimport { useIsomorphicLayoutEffect } from \"./useIsomorphicLayoutEffect\";\nimport { getNonce } from \"../utils/nonce\";\n\n// Bundler is configured to load this as a processed minified CSS-string\nimport styles from \"../css/styles.css\";\n\nconst styleElementMap: Map = new Map();\n\n/**\n * Injects CSS code into the document's \n */\nexport const useStyleSheet = (nodeRef: RefObject): void => {\n useIsomorphicLayoutEffect(() => {\n const parentDocument = nodeRef.current ? nodeRef.current.ownerDocument : document;\n\n if (typeof parentDocument !== \"undefined\" && !styleElementMap.has(parentDocument)) {\n const styleElement = parentDocument.createElement(\"style\");\n styleElement.innerHTML = styles;\n styleElementMap.set(parentDocument, styleElement);\n\n // Conform to CSP rules by setting `nonce` attribute to the inline styles\n const nonce = getNonce();\n if (nonce) styleElement.setAttribute(\"nonce\", nonce);\n\n parentDocument.head.appendChild(styleElement);\n }\n }, []);\n};\n","import React, { useRef } from \"react\";\n\nimport { Hue } from \"./Hue\";\nimport { Saturation } from \"./Saturation\";\n\nimport { ColorModel, ColorPickerBaseProps, AnyColor } from \"../../types\";\nimport { useColorManipulation } from \"../../hooks/useColorManipulation\";\nimport { useStyleSheet } from \"../../hooks/useStyleSheet\";\nimport { formatClassName } from \"../../utils/format\";\n\ninterface Props extends Partial> {\n colorModel: ColorModel;\n}\n\nexport const ColorPicker = ({\n className,\n colorModel,\n color = colorModel.defaultColor,\n onChange,\n ...rest\n}: Props): JSX.Element => {\n const nodeRef = useRef(null);\n useStyleSheet(nodeRef);\n\n const [hsva, updateHsva] = useColorManipulation(colorModel, color, onChange);\n\n const nodeClassName = formatClassName([\"react-colorful\", className]);\n\n return (\n
\n \n \n
\n );\n};\n","import React from \"react\";\n\nimport { Interactive, Interaction } from \"./Interactive\";\nimport { Pointer } from \"./Pointer\";\n\nimport { hsvaToHslaString } from \"../../utils/convert\";\nimport { formatClassName } from \"../../utils/format\";\nimport { clamp } from \"../../utils/clamp\";\nimport { round } from \"../../utils/round\";\nimport { HsvaColor } from \"../../types\";\n\ninterface Props {\n className?: string;\n hsva: HsvaColor;\n onChange: (newAlpha: { a: number }) => void;\n}\n\nexport const Alpha = ({ className, hsva, onChange }: Props): JSX.Element => {\n const handleMove = (interaction: Interaction) => {\n onChange({ a: interaction.left });\n };\n\n const handleKey = (offset: Interaction) => {\n // Alpha always fit into [0, 1] range\n onChange({ a: clamp(hsva.a + offset.left) });\n };\n\n // We use `Object.assign` instead of the spread operator\n // to prevent adding the polyfill (about 150 bytes gzipped)\n const colorFrom = hsvaToHslaString(Object.assign({}, hsva, { a: 0 }));\n const colorTo = hsvaToHslaString(Object.assign({}, hsva, { a: 1 }));\n\n const gradientStyle = {\n backgroundImage: `linear-gradient(90deg, ${colorFrom}, ${colorTo})`,\n };\n\n const nodeClassName = formatClassName([\"react-colorful__alpha\", className]);\n\n return (\n
\n
\n \n \n \n
\n );\n};\n","import React, { useRef } from \"react\";\n\nimport { Hue } from \"./Hue\";\nimport { Saturation } from \"./Saturation\";\nimport { Alpha } from \"./Alpha\";\n\nimport { ColorModel, ColorPickerBaseProps, AnyColor } from \"../../types\";\nimport { useColorManipulation } from \"../../hooks/useColorManipulation\";\nimport { useStyleSheet } from \"../../hooks/useStyleSheet\";\nimport { formatClassName } from \"../../utils/format\";\n\ninterface Props extends Partial> {\n colorModel: ColorModel;\n}\n\nexport const AlphaColorPicker = ({\n className,\n colorModel,\n color = colorModel.defaultColor,\n onChange,\n ...rest\n}: Props): JSX.Element => {\n const nodeRef = useRef(null);\n useStyleSheet(nodeRef);\n\n const [hsva, updateHsva] = useColorManipulation(colorModel, color, onChange);\n\n const nodeClassName = formatClassName([\"react-colorful\", className]);\n\n return (\n
\n \n \n \n
\n );\n};\n","import React from \"react\";\n\nimport { AlphaColorPicker } from \"./common/AlphaColorPicker\";\nimport { ColorModel, ColorPickerBaseProps, RgbaColor } from \"../types\";\nimport { equalColorObjects } from \"../utils/compare\";\nimport { rgbaToHsva, hsvaToRgba } from \"../utils/convert\";\n\nconst colorModel: ColorModel = {\n defaultColor: { r: 0, g: 0, b: 0, a: 1 },\n toHsva: rgbaToHsva,\n fromHsva: hsvaToRgba,\n equal: equalColorObjects,\n};\n\nexport const RgbaColorPicker = (props: Partial>): JSX.Element => (\n \n);\n","import React from \"react\";\n\nimport { ColorPicker } from \"./common/ColorPicker\";\nimport { ColorModel, ColorPickerBaseProps, RgbColor } from \"../types\";\nimport { equalColorObjects } from \"../utils/compare\";\nimport { rgbaToHsva, hsvaToRgba, rgbaToRgb } from \"../utils/convert\";\n\nconst colorModel: ColorModel = {\n defaultColor: { r: 0, g: 0, b: 0 },\n toHsva: ({ r, g, b }) => rgbaToHsva({ r, g, b, a: 1 }),\n fromHsva: (hsva) => rgbaToRgb(hsvaToRgba(hsva)),\n equal: equalColorObjects,\n};\n\nexport const RgbColorPicker = (props: Partial>): JSX.Element => (\n \n);\n","/******************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n var desc = Object.getOwnPropertyDescriptor(m, k);\r\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\r\n desc = { enumerable: true, get: function() { return m[k]; } };\r\n }\r\n Object.defineProperty(o, k2, desc);\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n}\r\n\r\nexport function __spreadArray(to, from, pack) {\r\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n if (ar || !(i in from)) {\r\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n ar[i] = from[i];\r\n }\r\n }\r\n return to.concat(ar || Array.prototype.slice.call(from));\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n}\r\n\r\nexport function __classPrivateFieldIn(state, receiver) {\r\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\r\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\r\n}\r\n","export const COMMON_MIME_TYPES = new Map([\n // https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/MIME_types/Common_types\n ['aac', 'audio/aac'],\n ['abw', 'application/x-abiword'],\n ['arc', 'application/x-freearc'],\n ['avif', 'image/avif'],\n ['avi', 'video/x-msvideo'],\n ['azw', 'application/vnd.amazon.ebook'],\n ['bin', 'application/octet-stream'],\n ['bmp', 'image/bmp'],\n ['bz', 'application/x-bzip'],\n ['bz2', 'application/x-bzip2'],\n ['cda', 'application/x-cdf'],\n ['csh', 'application/x-csh'],\n ['css', 'text/css'],\n ['csv', 'text/csv'],\n ['doc', 'application/msword'],\n ['docx', 'application/vnd.openxmlformats-officedocument.wordprocessingml.document'],\n ['eot', 'application/vnd.ms-fontobject'],\n ['epub', 'application/epub+zip'],\n ['gz', 'application/gzip'],\n ['gif', 'image/gif'],\n ['heic', 'image/heic'],\n ['heif', 'image/heif'],\n ['htm', 'text/html'],\n ['html', 'text/html'],\n ['ico', 'image/vnd.microsoft.icon'],\n ['ics', 'text/calendar'],\n ['jar', 'application/java-archive'],\n ['jpeg', 'image/jpeg'],\n ['jpg', 'image/jpeg'],\n ['js', 'text/javascript'],\n ['json', 'application/json'],\n ['jsonld', 'application/ld+json'],\n ['mid', 'audio/midi'],\n ['midi', 'audio/midi'],\n ['mjs', 'text/javascript'],\n ['mp3', 'audio/mpeg'],\n ['mp4', 'video/mp4'],\n ['mpeg', 'video/mpeg'],\n ['mpkg', 'application/vnd.apple.installer+xml'],\n ['odp', 'application/vnd.oasis.opendocument.presentation'],\n ['ods', 'application/vnd.oasis.opendocument.spreadsheet'],\n ['odt', 'application/vnd.oasis.opendocument.text'],\n ['oga', 'audio/ogg'],\n ['ogv', 'video/ogg'],\n ['ogx', 'application/ogg'],\n ['opus', 'audio/opus'],\n ['otf', 'font/otf'],\n ['png', 'image/png'],\n ['pdf', 'application/pdf'],\n ['php', 'application/x-httpd-php'],\n ['ppt', 'application/vnd.ms-powerpoint'],\n ['pptx', 'application/vnd.openxmlformats-officedocument.presentationml.presentation'],\n ['rar', 'application/vnd.rar'],\n ['rtf', 'application/rtf'],\n ['sh', 'application/x-sh'],\n ['svg', 'image/svg+xml'],\n ['swf', 'application/x-shockwave-flash'],\n ['tar', 'application/x-tar'],\n ['tif', 'image/tiff'],\n ['tiff', 'image/tiff'],\n ['ts', 'video/mp2t'],\n ['ttf', 'font/ttf'],\n ['txt', 'text/plain'],\n ['vsd', 'application/vnd.visio'],\n ['wav', 'audio/wav'],\n ['weba', 'audio/webm'],\n ['webm', 'video/webm'],\n ['webp', 'image/webp'],\n ['woff', 'font/woff'],\n ['woff2', 'font/woff2'],\n ['xhtml', 'application/xhtml+xml'],\n ['xls', 'application/vnd.ms-excel'],\n ['xlsx', 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'],\n ['xml', 'application/xml'],\n ['xul', 'application/vnd.mozilla.xul+xml'],\n ['zip', 'application/zip'],\n ['7z', 'application/x-7z-compressed'],\n\n // Others\n ['mkv', 'video/x-matroska'],\n ['mov', 'video/quicktime'],\n ['msg', 'application/vnd.ms-outlook']\n]);\n\n\nexport function toFileWithPath(file: FileWithPath, path?: string): FileWithPath {\n const f = withMimeType(file);\n if (typeof f.path !== 'string') { // on electron, path is already set to the absolute path\n const {webkitRelativePath} = file as FileWithWebkitPath;\n Object.defineProperty(f, 'path', {\n value: typeof path === 'string'\n ? path\n // If is set,\n // the File will have a {webkitRelativePath} property\n // https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement/webkitdirectory\n : typeof webkitRelativePath === 'string' && webkitRelativePath.length > 0\n ? webkitRelativePath\n : file.name,\n writable: false,\n configurable: false,\n enumerable: true\n });\n }\n\n return f;\n}\n\ninterface DOMFile extends Blob {\n readonly lastModified: number;\n readonly name: string;\n}\n\nexport interface FileWithPath extends DOMFile {\n readonly path?: string;\n}\n\ninterface FileWithWebkitPath extends File {\n readonly webkitRelativePath?: string;\n}\n\nfunction withMimeType(file: FileWithPath) {\n const {name} = file;\n const hasExtension = name && name.lastIndexOf('.') !== -1;\n\n if (hasExtension && !file.type) {\n const ext = name.split('.')\n .pop()!.toLowerCase();\n const type = COMMON_MIME_TYPES.get(ext);\n if (type) {\n Object.defineProperty(file, 'type', {\n value: type,\n writable: false,\n configurable: false,\n enumerable: true\n });\n }\n }\n\n return file;\n}\n","import {FileWithPath, toFileWithPath} from './file';\n\n\nconst FILES_TO_IGNORE = [\n // Thumbnail cache files for macOS and Windows\n '.DS_Store', // macOs\n 'Thumbs.db' // Windows\n];\n\n\n/**\n * Convert a DragEvent's DataTrasfer object to a list of File objects\n * NOTE: If some of the items are folders,\n * everything will be flattened and placed in the same list but the paths will be kept as a {path} property.\n *\n * EXPERIMENTAL: A list of https://developer.mozilla.org/en-US/docs/Web/API/FileSystemHandle objects can also be passed as an arg\n * and a list of File objects will be returned.\n *\n * @param evt\n */\nexport async function fromEvent(evt: Event | any): Promise<(FileWithPath | DataTransferItem)[]> {\n if (isObject(evt) && isDataTransfer(evt)) {\n return getDataTransferFiles(evt.dataTransfer, evt.type);\n } else if (isChangeEvt(evt)) {\n return getInputFiles(evt);\n } else if (Array.isArray(evt) && evt.every(item => 'getFile' in item && typeof item.getFile === 'function')) {\n return getFsHandleFiles(evt)\n }\n return [];\n}\n\nfunction isDataTransfer(value: any): value is DataTransfer {\n return isObject(value.dataTransfer);\n}\n\nfunction isChangeEvt(value: any): value is Event {\n return isObject(value) && isObject(value.target);\n}\n\nfunction isObject(v: any): v is T {\n return typeof v === 'object' && v !== null\n}\n\nfunction getInputFiles(evt: Event) {\n return fromList((evt.target as HTMLInputElement).files).map(file => toFileWithPath(file));\n}\n\n// Ee expect each handle to be https://developer.mozilla.org/en-US/docs/Web/API/FileSystemFileHandle\nasync function getFsHandleFiles(handles: any[]) {\n const files = await Promise.all(handles.map(h => h.getFile()));\n return files.map(file => toFileWithPath(file));\n}\n\n\nasync function getDataTransferFiles(dt: DataTransfer | null, type: string) {\n if (dt === null) {\n return [];\n }\n\n // IE11 does not support dataTransfer.items\n // See https://developer.mozilla.org/en-US/docs/Web/API/DataTransfer/items#Browser_compatibility\n if (dt.items) {\n const items = fromList(dt.items)\n .filter(item => item.kind === 'file');\n // According to https://html.spec.whatwg.org/multipage/dnd.html#dndevents,\n // only 'dragstart' and 'drop' has access to the data (source node)\n if (type !== 'drop') {\n return items;\n }\n const files = await Promise.all(items.map(toFilePromises));\n return noIgnoredFiles(flatten(files));\n }\n\n return noIgnoredFiles(fromList(dt.files)\n .map(file => toFileWithPath(file)));\n}\n\nfunction noIgnoredFiles(files: FileWithPath[]) {\n return files.filter(file => FILES_TO_IGNORE.indexOf(file.name) === -1);\n}\n\n// IE11 does not support Array.from()\n// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/from#Browser_compatibility\n// https://developer.mozilla.org/en-US/docs/Web/API/FileList\n// https://developer.mozilla.org/en-US/docs/Web/API/DataTransferItemList\nfunction fromList(items: DataTransferItemList | FileList | null): T[] {\n if (items === null) {\n return [];\n }\n\n const files = [];\n\n // tslint:disable: prefer-for-of\n for (let i = 0; i < items.length; i++) {\n const file = items[i];\n files.push(file);\n }\n\n return files as any;\n}\n\n// https://developer.mozilla.org/en-US/docs/Web/API/DataTransferItem\nfunction toFilePromises(item: DataTransferItem) {\n if (typeof item.webkitGetAsEntry !== 'function') {\n return fromDataTransferItem(item);\n }\n\n const entry = item.webkitGetAsEntry();\n\n // Safari supports dropping an image node from a different window and can be retrieved using\n // the DataTransferItem.getAsFile() API\n // NOTE: FileSystemEntry.file() throws if trying to get the file\n if (entry && entry.isDirectory) {\n return fromDirEntry(entry) as any;\n }\n\n return fromDataTransferItem(item);\n}\n\nfunction flatten(items: any[]): T[] {\n return items.reduce((acc, files) => [\n ...acc,\n ...(Array.isArray(files) ? flatten(files) : [files])\n ], []);\n}\n\nfunction fromDataTransferItem(item: DataTransferItem) {\n const file = item.getAsFile();\n if (!file) {\n return Promise.reject(`${item} is not a File`);\n }\n const fwp = toFileWithPath(file);\n return Promise.resolve(fwp);\n}\n\n// https://developer.mozilla.org/en-US/docs/Web/API/FileSystemEntry\nasync function fromEntry(entry: any) {\n return entry.isDirectory ? fromDirEntry(entry) : fromFileEntry(entry);\n}\n\n// https://developer.mozilla.org/en-US/docs/Web/API/FileSystemDirectoryEntry\nfunction fromDirEntry(entry: any) {\n const reader = entry.createReader();\n\n return new Promise((resolve, reject) => {\n const entries: Promise[] = [];\n\n function readEntries() {\n // https://developer.mozilla.org/en-US/docs/Web/API/FileSystemDirectoryEntry/createReader\n // https://developer.mozilla.org/en-US/docs/Web/API/FileSystemDirectoryReader/readEntries\n reader.readEntries(async (batch: any[]) => {\n if (!batch.length) {\n // Done reading directory\n try {\n const files = await Promise.all(entries);\n resolve(files);\n } catch (err) {\n reject(err);\n }\n } else {\n const items = Promise.all(batch.map(fromEntry));\n entries.push(items);\n\n // Continue reading\n readEntries();\n }\n }, (err: any) => {\n reject(err);\n });\n }\n\n readEntries();\n });\n}\n\n// https://developer.mozilla.org/en-US/docs/Web/API/FileSystemFileEntry\nasync function fromFileEntry(entry: any) {\n return new Promise((resolve, reject) => {\n entry.file((file: FileWithPath) => {\n const fwp = toFileWithPath(file, entry.fullPath);\n resolve(fwp);\n }, (err: any) => {\n reject(err);\n });\n });\n}\n\n// Infinite type recursion\n// https://github.com/Microsoft/TypeScript/issues/3496#issuecomment-128553540\ninterface FileArray extends Array {}\ntype FileValue = FileWithPath\n | FileArray[];\n","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\nimport accepts from \"attr-accept\"; // Error codes\n\nexport var FILE_INVALID_TYPE = \"file-invalid-type\";\nexport var FILE_TOO_LARGE = \"file-too-large\";\nexport var FILE_TOO_SMALL = \"file-too-small\";\nexport var TOO_MANY_FILES = \"too-many-files\";\nexport var ErrorCode = {\n FileInvalidType: FILE_INVALID_TYPE,\n FileTooLarge: FILE_TOO_LARGE,\n FileTooSmall: FILE_TOO_SMALL,\n TooManyFiles: TOO_MANY_FILES\n}; // File Errors\n\nexport var getInvalidTypeRejectionErr = function getInvalidTypeRejectionErr(accept) {\n accept = Array.isArray(accept) && accept.length === 1 ? accept[0] : accept;\n var messageSuffix = Array.isArray(accept) ? \"one of \".concat(accept.join(\", \")) : accept;\n return {\n code: FILE_INVALID_TYPE,\n message: \"File type must be \".concat(messageSuffix)\n };\n};\nexport var getTooLargeRejectionErr = function getTooLargeRejectionErr(maxSize) {\n return {\n code: FILE_TOO_LARGE,\n message: \"File is larger than \".concat(maxSize, \" \").concat(maxSize === 1 ? \"byte\" : \"bytes\")\n };\n};\nexport var getTooSmallRejectionErr = function getTooSmallRejectionErr(minSize) {\n return {\n code: FILE_TOO_SMALL,\n message: \"File is smaller than \".concat(minSize, \" \").concat(minSize === 1 ? \"byte\" : \"bytes\")\n };\n};\nexport var TOO_MANY_FILES_REJECTION = {\n code: TOO_MANY_FILES,\n message: \"Too many files\"\n}; // Firefox versions prior to 53 return a bogus MIME type for every file drag, so dragovers with\n// that MIME type will always be accepted\n\nexport function fileAccepted(file, accept) {\n var isAcceptable = file.type === \"application/x-moz-file\" || accepts(file, accept);\n return [isAcceptable, isAcceptable ? null : getInvalidTypeRejectionErr(accept)];\n}\nexport function fileMatchSize(file, minSize, maxSize) {\n if (isDefined(file.size)) {\n if (isDefined(minSize) && isDefined(maxSize)) {\n if (file.size > maxSize) return [false, getTooLargeRejectionErr(maxSize)];\n if (file.size < minSize) return [false, getTooSmallRejectionErr(minSize)];\n } else if (isDefined(minSize) && file.size < minSize) return [false, getTooSmallRejectionErr(minSize)];else if (isDefined(maxSize) && file.size > maxSize) return [false, getTooLargeRejectionErr(maxSize)];\n }\n\n return [true, null];\n}\n\nfunction isDefined(value) {\n return value !== undefined && value !== null;\n}\n\nexport function allFilesAccepted(_ref) {\n var files = _ref.files,\n accept = _ref.accept,\n minSize = _ref.minSize,\n maxSize = _ref.maxSize,\n multiple = _ref.multiple,\n maxFiles = _ref.maxFiles;\n\n if (!multiple && files.length > 1 || multiple && maxFiles >= 1 && files.length > maxFiles) {\n return false;\n }\n\n return files.every(function (file) {\n var _fileAccepted = fileAccepted(file, accept),\n _fileAccepted2 = _slicedToArray(_fileAccepted, 1),\n accepted = _fileAccepted2[0];\n\n var _fileMatchSize = fileMatchSize(file, minSize, maxSize),\n _fileMatchSize2 = _slicedToArray(_fileMatchSize, 1),\n sizeMatch = _fileMatchSize2[0];\n\n return accepted && sizeMatch;\n });\n} // React's synthetic events has event.isPropagationStopped,\n// but to remain compatibility with other libs (Preact) fall back\n// to check event.cancelBubble\n\nexport function isPropagationStopped(event) {\n if (typeof event.isPropagationStopped === \"function\") {\n return event.isPropagationStopped();\n } else if (typeof event.cancelBubble !== \"undefined\") {\n return event.cancelBubble;\n }\n\n return false;\n}\nexport function isEvtWithFiles(event) {\n if (!event.dataTransfer) {\n return !!event.target && !!event.target.files;\n } // https://developer.mozilla.org/en-US/docs/Web/API/DataTransfer/types\n // https://developer.mozilla.org/en-US/docs/Web/API/HTML_Drag_and_Drop_API/Recommended_drag_types#file\n\n\n return Array.prototype.some.call(event.dataTransfer.types, function (type) {\n return type === \"Files\" || type === \"application/x-moz-file\";\n });\n}\nexport function isKindFile(item) {\n return _typeof(item) === \"object\" && item !== null && item.kind === \"file\";\n} // allow the entire document to be a drag target\n\nexport function onDocumentDragOver(event) {\n event.preventDefault();\n}\n\nfunction isIe(userAgent) {\n return userAgent.indexOf(\"MSIE\") !== -1 || userAgent.indexOf(\"Trident/\") !== -1;\n}\n\nfunction isEdge(userAgent) {\n return userAgent.indexOf(\"Edge/\") !== -1;\n}\n\nexport function isIeOrEdge() {\n var userAgent = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : window.navigator.userAgent;\n return isIe(userAgent) || isEdge(userAgent);\n}\n/**\n * This is intended to be used to compose event handlers\n * They are executed in order until one of them calls `event.isPropagationStopped()`.\n * Note that the check is done on the first invoke too,\n * meaning that if propagation was stopped before invoking the fns,\n * no handlers will be executed.\n *\n * @param {Function} fns the event hanlder functions\n * @return {Function} the event handler to add to an element\n */\n\nexport function composeEventHandlers() {\n for (var _len = arguments.length, fns = new Array(_len), _key = 0; _key < _len; _key++) {\n fns[_key] = arguments[_key];\n }\n\n return function (event) {\n for (var _len2 = arguments.length, args = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n args[_key2 - 1] = arguments[_key2];\n }\n\n return fns.some(function (fn) {\n if (!isPropagationStopped(event) && fn) {\n fn.apply(void 0, [event].concat(args));\n }\n\n return isPropagationStopped(event);\n });\n };\n}\n/**\n * canUseFileSystemAccessAPI checks if the [File System Access API](https://developer.mozilla.org/en-US/docs/Web/API/File_System_Access_API)\n * is supported by the browser.\n * @returns {boolean}\n */\n\nexport function canUseFileSystemAccessAPI() {\n return \"showOpenFilePicker\" in window;\n}\n/**\n * filePickerOptionsTypes returns the {types} option for https://developer.mozilla.org/en-US/docs/Web/API/window/showOpenFilePicker\n * based on the accept attr (see https://github.com/react-dropzone/attr-accept)\n * E.g: converts ['image/*', 'text/*'] to {'image/*': [], 'text/*': []}\n * @param {string|string[]} accept\n */\n\nexport function filePickerOptionsTypes(accept) {\n accept = typeof accept === \"string\" ? accept.split(\",\") : accept;\n return [{\n description: \"everything\",\n // TODO: Need to handle filtering more elegantly than this!\n accept: Array.isArray(accept) ? // Accept just MIME types as per spec\n // NOTE: accept can be https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input/file#unique_file_type_specifiers\n accept.filter(function (item) {\n return item === \"audio/*\" || item === \"video/*\" || item === \"image/*\" || item === \"text/*\" || /\\w+\\/[-+.\\w]+/g.test(item);\n }).reduce(function (a, b) {\n return _objectSpread(_objectSpread({}, a), {}, _defineProperty({}, b, []));\n }, {}) : {}\n }];\n}\n/**\n * Check if v is an exception caused by aborting a request (e.g window.showOpenFilePicker()).\n *\n * See https://developer.mozilla.org/en-US/docs/Web/API/DOMException.\n * @param {any} v\n * @returns {boolean} True if v is an abort exception.\n */\n\nexport function isAbort(v) {\n return v instanceof DOMException && (v.name === \"AbortError\" || v.code === v.ABORT_ERR);\n}\n/**\n * Check if v is a security error.\n *\n * See https://developer.mozilla.org/en-US/docs/Web/API/DOMException.\n * @param {any} v\n * @returns {boolean} True if v is a security error.\n */\n\nexport function isSecurityError(v) {\n return v instanceof DOMException && (v.name === \"SecurityError\" || v.code === v.SECURITY_ERR);\n}","var _excluded = [\"children\"],\n _excluded2 = [\"open\"],\n _excluded3 = [\"refKey\", \"role\", \"onKeyDown\", \"onFocus\", \"onBlur\", \"onClick\", \"onDragEnter\", \"onDragOver\", \"onDragLeave\", \"onDrop\"],\n _excluded4 = [\"refKey\", \"onChange\", \"onClick\"];\n\nfunction _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }\n\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _iterableToArray(iter) { if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter); }\n\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }\n\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\n/* eslint prefer-template: 0 */\nimport React, { forwardRef, Fragment, useCallback, useEffect, useImperativeHandle, useMemo, useReducer, useRef } from \"react\";\nimport PropTypes from \"prop-types\";\nimport { fromEvent } from \"file-selector\";\nimport { allFilesAccepted, composeEventHandlers, fileAccepted, fileMatchSize, filePickerOptionsTypes, canUseFileSystemAccessAPI, isAbort, isEvtWithFiles, isIeOrEdge, isPropagationStopped, isSecurityError, onDocumentDragOver, TOO_MANY_FILES_REJECTION } from \"./utils/index\";\n/**\n * Convenience wrapper component for the `useDropzone` hook\n *\n * ```jsx\n * \n * {({getRootProps, getInputProps}) => (\n *
\n * \n *

Drag 'n' drop some files here, or click to select files

\n *
\n * )}\n *
\n * ```\n */\n\nvar Dropzone = /*#__PURE__*/forwardRef(function (_ref, ref) {\n var children = _ref.children,\n params = _objectWithoutProperties(_ref, _excluded);\n\n var _useDropzone = useDropzone(params),\n open = _useDropzone.open,\n props = _objectWithoutProperties(_useDropzone, _excluded2);\n\n useImperativeHandle(ref, function () {\n return {\n open: open\n };\n }, [open]); // TODO: Figure out why react-styleguidist cannot create docs if we don't return a jsx element\n\n return /*#__PURE__*/React.createElement(Fragment, null, children(_objectSpread(_objectSpread({}, props), {}, {\n open: open\n })));\n});\nDropzone.displayName = \"Dropzone\"; // Add default props for react-docgen\n\nvar defaultProps = {\n disabled: false,\n getFilesFromEvent: fromEvent,\n maxSize: Infinity,\n minSize: 0,\n multiple: true,\n maxFiles: 0,\n preventDropOnDocument: true,\n noClick: false,\n noKeyboard: false,\n noDrag: false,\n noDragEventsBubbling: false,\n validator: null,\n useFsAccessApi: true\n};\nDropzone.defaultProps = defaultProps;\nDropzone.propTypes = {\n /**\n * Render function that exposes the dropzone state and prop getter fns\n *\n * @param {object} params\n * @param {Function} params.getRootProps Returns the props you should apply to the root drop container you render\n * @param {Function} params.getInputProps Returns the props you should apply to hidden file input you render\n * @param {Function} params.open Open the native file selection dialog\n * @param {boolean} params.isFocused Dropzone area is in focus\n * @param {boolean} params.isFileDialogActive File dialog is opened\n * @param {boolean} params.isDragActive Active drag is in progress\n * @param {boolean} params.isDragAccept Dragged files are accepted\n * @param {boolean} params.isDragReject Some dragged files are rejected\n * @param {File[]} params.draggedFiles Files in active drag\n * @param {File[]} params.acceptedFiles Accepted files\n * @param {FileRejection[]} params.fileRejections Rejected files and why they were rejected\n */\n children: PropTypes.func,\n\n /**\n * Set accepted file types.\n * See https://github.com/okonet/attr-accept for more information.\n * Keep in mind that mime type determination is not reliable across platforms. CSV files,\n * for example, are reported as text/plain under macOS but as application/vnd.ms-excel under\n * Windows. In some cases there might not be a mime type set at all.\n * See: https://github.com/react-dropzone/react-dropzone/issues/276\n */\n accept: PropTypes.oneOfType([PropTypes.string, PropTypes.arrayOf(PropTypes.string)]),\n\n /**\n * Allow drag 'n' drop (or selection from the file dialog) of multiple files\n */\n multiple: PropTypes.bool,\n\n /**\n * If false, allow dropped items to take over the current browser window\n */\n preventDropOnDocument: PropTypes.bool,\n\n /**\n * If true, disables click to open the native file selection dialog\n */\n noClick: PropTypes.bool,\n\n /**\n * If true, disables SPACE/ENTER to open the native file selection dialog.\n * Note that it also stops tracking the focus state.\n */\n noKeyboard: PropTypes.bool,\n\n /**\n * If true, disables drag 'n' drop\n */\n noDrag: PropTypes.bool,\n\n /**\n * If true, stops drag event propagation to parents\n */\n noDragEventsBubbling: PropTypes.bool,\n\n /**\n * Minimum file size (in bytes)\n */\n minSize: PropTypes.number,\n\n /**\n * Maximum file size (in bytes)\n */\n maxSize: PropTypes.number,\n\n /**\n * Maximum accepted number of files\n * The default value is 0 which means there is no limitation to how many files are accepted.\n */\n maxFiles: PropTypes.number,\n\n /**\n * Enable/disable the dropzone\n */\n disabled: PropTypes.bool,\n\n /**\n * Use this to provide a custom file aggregator\n *\n * @param {(DragEvent|Event)} event A drag event or input change event (if files were selected via the file dialog)\n */\n getFilesFromEvent: PropTypes.func,\n\n /**\n * Cb for when closing the file dialog with no selection\n */\n onFileDialogCancel: PropTypes.func,\n\n /**\n * Cb for when opening the file dialog\n */\n onFileDialogOpen: PropTypes.func,\n\n /**\n * Set to true to use the https://developer.mozilla.org/en-US/docs/Web/API/File_System_Access_API\n * to open the file picker instead of using an `` click event.\n */\n useFsAccessApi: PropTypes.bool,\n\n /**\n * Cb for when the `dragenter` event occurs.\n *\n * @param {DragEvent} event\n */\n onDragEnter: PropTypes.func,\n\n /**\n * Cb for when the `dragleave` event occurs\n *\n * @param {DragEvent} event\n */\n onDragLeave: PropTypes.func,\n\n /**\n * Cb for when the `dragover` event occurs\n *\n * @param {DragEvent} event\n */\n onDragOver: PropTypes.func,\n\n /**\n * Cb for when the `drop` event occurs.\n * Note that this callback is invoked after the `getFilesFromEvent` callback is done.\n *\n * Files are accepted or rejected based on the `accept`, `multiple`, `minSize` and `maxSize` props.\n * `accept` must be a valid [MIME type](http://www.iana.org/assignments/media-types/media-types.xhtml) according to [input element specification](https://www.w3.org/wiki/HTML/Elements/input/file) or a valid file extension.\n * If `multiple` is set to false and additional files are dropped,\n * all files besides the first will be rejected.\n * Any file which does not have a size in the [`minSize`, `maxSize`] range, will be rejected as well.\n *\n * Note that the `onDrop` callback will always be invoked regardless if the dropped files were accepted or rejected.\n * If you'd like to react to a specific scenario, use the `onDropAccepted`/`onDropRejected` props.\n *\n * `onDrop` will provide you with an array of [File](https://developer.mozilla.org/en-US/docs/Web/API/File) objects which you can then process and send to a server.\n * For example, with [SuperAgent](https://github.com/visionmedia/superagent) as a http/ajax library:\n *\n * ```js\n * function onDrop(acceptedFiles) {\n * const req = request.post('/upload')\n * acceptedFiles.forEach(file => {\n * req.attach(file.name, file)\n * })\n * req.end(callback)\n * }\n * ```\n *\n * @param {File[]} acceptedFiles\n * @param {FileRejection[]} fileRejections\n * @param {(DragEvent|Event)} event A drag event or input change event (if files were selected via the file dialog)\n */\n onDrop: PropTypes.func,\n\n /**\n * Cb for when the `drop` event occurs.\n * Note that if no files are accepted, this callback is not invoked.\n *\n * @param {File[]} files\n * @param {(DragEvent|Event)} event\n */\n onDropAccepted: PropTypes.func,\n\n /**\n * Cb for when the `drop` event occurs.\n * Note that if no files are rejected, this callback is not invoked.\n *\n * @param {FileRejection[]} fileRejections\n * @param {(DragEvent|Event)} event\n */\n onDropRejected: PropTypes.func,\n\n /**\n * Custom validation function\n * @param {File} file\n * @returns {FileError|FileError[]}\n */\n validator: PropTypes.func\n};\nexport default Dropzone;\n/**\n * A function that is invoked for the `dragenter`,\n * `dragover` and `dragleave` events.\n * It is not invoked if the items are not files (such as link, text, etc.).\n *\n * @callback dragCb\n * @param {DragEvent} event\n */\n\n/**\n * A function that is invoked for the `drop` or input change event.\n * It is not invoked if the items are not files (such as link, text, etc.).\n *\n * @callback dropCb\n * @param {File[]} acceptedFiles List of accepted files\n * @param {FileRejection[]} fileRejections List of rejected files and why they were rejected\n * @param {(DragEvent|Event)} event A drag event or input change event (if files were selected via the file dialog)\n */\n\n/**\n * A function that is invoked for the `drop` or input change event.\n * It is not invoked if the items are files (such as link, text, etc.).\n *\n * @callback dropAcceptedCb\n * @param {File[]} files List of accepted files that meet the given criteria\n * (`accept`, `multiple`, `minSize`, `maxSize`)\n * @param {(DragEvent|Event)} event A drag event or input change event (if files were selected via the file dialog)\n */\n\n/**\n * A function that is invoked for the `drop` or input change event.\n *\n * @callback dropRejectedCb\n * @param {File[]} files List of rejected files that do not meet the given criteria\n * (`accept`, `multiple`, `minSize`, `maxSize`)\n * @param {(DragEvent|Event)} event A drag event or input change event (if files were selected via the file dialog)\n */\n\n/**\n * A function that is used aggregate files,\n * in a asynchronous fashion, from drag or input change events.\n *\n * @callback getFilesFromEvent\n * @param {(DragEvent|Event)} event A drag event or input change event (if files were selected via the file dialog)\n * @returns {(File[]|Promise)}\n */\n\n/**\n * An object with the current dropzone state and some helper functions.\n *\n * @typedef {object} DropzoneState\n * @property {Function} getRootProps Returns the props you should apply to the root drop container you render\n * @property {Function} getInputProps Returns the props you should apply to hidden file input you render\n * @property {Function} open Open the native file selection dialog\n * @property {boolean} isFocused Dropzone area is in focus\n * @property {boolean} isFileDialogActive File dialog is opened\n * @property {boolean} isDragActive Active drag is in progress\n * @property {boolean} isDragAccept Dragged files are accepted\n * @property {boolean} isDragReject Some dragged files are rejected\n * @property {File[]} draggedFiles Files in active drag\n * @property {File[]} acceptedFiles Accepted files\n * @property {FileRejection[]} fileRejections Rejected files and why they were rejected\n */\n\nvar initialState = {\n isFocused: false,\n isFileDialogActive: false,\n isDragActive: false,\n isDragAccept: false,\n isDragReject: false,\n draggedFiles: [],\n acceptedFiles: [],\n fileRejections: []\n};\n/**\n * A React hook that creates a drag 'n' drop area.\n *\n * ```jsx\n * function MyDropzone(props) {\n * const {getRootProps, getInputProps} = useDropzone({\n * onDrop: acceptedFiles => {\n * // do something with the File objects, e.g. upload to some server\n * }\n * });\n * return (\n *
\n * \n *

Drag and drop some files here, or click to select files

\n *
\n * )\n * }\n * ```\n *\n * @function useDropzone\n *\n * @param {object} props\n * @param {string|string[]} [props.accept] Set accepted file types.\n * See https://github.com/okonet/attr-accept for more information.\n * Keep in mind that mime type determination is not reliable across platforms. CSV files,\n * for example, are reported as text/plain under macOS but as application/vnd.ms-excel under\n * Windows. In some cases there might not be a mime type set at all.\n * See: https://github.com/react-dropzone/react-dropzone/issues/276\n * @param {boolean} [props.multiple=true] Allow drag 'n' drop (or selection from the file dialog) of multiple files\n * @param {boolean} [props.preventDropOnDocument=true] If false, allow dropped items to take over the current browser window\n * @param {boolean} [props.noClick=false] If true, disables click to open the native file selection dialog\n * @param {boolean} [props.noKeyboard=false] If true, disables SPACE/ENTER to open the native file selection dialog.\n * Note that it also stops tracking the focus state.\n * @param {boolean} [props.noDrag=false] If true, disables drag 'n' drop\n * @param {boolean} [props.noDragEventsBubbling=false] If true, stops drag event propagation to parents\n * @param {number} [props.minSize=0] Minimum file size (in bytes)\n * @param {number} [props.maxSize=Infinity] Maximum file size (in bytes)\n * @param {boolean} [props.disabled=false] Enable/disable the dropzone\n * @param {getFilesFromEvent} [props.getFilesFromEvent] Use this to provide a custom file aggregator\n * @param {Function} [props.onFileDialogCancel] Cb for when closing the file dialog with no selection\n * @param {boolean} [props.useFsAccessApi] Set to true to use the https://developer.mozilla.org/en-US/docs/Web/API/File_System_Access_API\n * to open the file picker instead of using an `` click event.\n * @param {Function} [props.onFileDialogOpen] Cb for when opening the file dialog\n * @param {dragCb} [props.onDragEnter] Cb for when the `dragenter` event occurs.\n * @param {dragCb} [props.onDragLeave] Cb for when the `dragleave` event occurs\n * @param {dragCb} [props.onDragOver] Cb for when the `dragover` event occurs\n * @param {dropCb} [props.onDrop] Cb for when the `drop` event occurs.\n * Note that this callback is invoked after the `getFilesFromEvent` callback is done.\n *\n * Files are accepted or rejected based on the `accept`, `multiple`, `minSize` and `maxSize` props.\n * `accept` must be a valid [MIME type](http://www.iana.org/assignments/media-types/media-types.xhtml) according to [input element specification](https://www.w3.org/wiki/HTML/Elements/input/file) or a valid file extension.\n * If `multiple` is set to false and additional files are dropped,\n * all files besides the first will be rejected.\n * Any file which does not have a size in the [`minSize`, `maxSize`] range, will be rejected as well.\n *\n * Note that the `onDrop` callback will always be invoked regardless if the dropped files were accepted or rejected.\n * If you'd like to react to a specific scenario, use the `onDropAccepted`/`onDropRejected` props.\n *\n * `onDrop` will provide you with an array of [File](https://developer.mozilla.org/en-US/docs/Web/API/File) objects which you can then process and send to a server.\n * For example, with [SuperAgent](https://github.com/visionmedia/superagent) as a http/ajax library:\n *\n * ```js\n * function onDrop(acceptedFiles) {\n * const req = request.post('/upload')\n * acceptedFiles.forEach(file => {\n * req.attach(file.name, file)\n * })\n * req.end(callback)\n * }\n * ```\n * @param {dropAcceptedCb} [props.onDropAccepted]\n * @param {dropRejectedCb} [props.onDropRejected]\n *\n * @returns {DropzoneState}\n */\n\nexport function useDropzone() {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n var _defaultProps$options = _objectSpread(_objectSpread({}, defaultProps), options),\n accept = _defaultProps$options.accept,\n disabled = _defaultProps$options.disabled,\n getFilesFromEvent = _defaultProps$options.getFilesFromEvent,\n maxSize = _defaultProps$options.maxSize,\n minSize = _defaultProps$options.minSize,\n multiple = _defaultProps$options.multiple,\n maxFiles = _defaultProps$options.maxFiles,\n onDragEnter = _defaultProps$options.onDragEnter,\n onDragLeave = _defaultProps$options.onDragLeave,\n onDragOver = _defaultProps$options.onDragOver,\n onDrop = _defaultProps$options.onDrop,\n onDropAccepted = _defaultProps$options.onDropAccepted,\n onDropRejected = _defaultProps$options.onDropRejected,\n onFileDialogCancel = _defaultProps$options.onFileDialogCancel,\n onFileDialogOpen = _defaultProps$options.onFileDialogOpen,\n useFsAccessApi = _defaultProps$options.useFsAccessApi,\n preventDropOnDocument = _defaultProps$options.preventDropOnDocument,\n noClick = _defaultProps$options.noClick,\n noKeyboard = _defaultProps$options.noKeyboard,\n noDrag = _defaultProps$options.noDrag,\n noDragEventsBubbling = _defaultProps$options.noDragEventsBubbling,\n validator = _defaultProps$options.validator;\n\n var onFileDialogOpenCb = useMemo(function () {\n return typeof onFileDialogOpen === \"function\" ? onFileDialogOpen : noop;\n }, [onFileDialogOpen]);\n var onFileDialogCancelCb = useMemo(function () {\n return typeof onFileDialogCancel === \"function\" ? onFileDialogCancel : noop;\n }, [onFileDialogCancel]);\n var rootRef = useRef(null);\n var inputRef = useRef(null);\n\n var _useReducer = useReducer(reducer, initialState),\n _useReducer2 = _slicedToArray(_useReducer, 2),\n state = _useReducer2[0],\n dispatch = _useReducer2[1];\n\n var isFocused = state.isFocused,\n isFileDialogActive = state.isFileDialogActive,\n draggedFiles = state.draggedFiles;\n var fsAccessApiWorksRef = useRef(typeof window !== \"undefined\" && window.isSecureContext && useFsAccessApi && canUseFileSystemAccessAPI()); // Update file dialog active state when the window is focused on\n\n var onWindowFocus = function onWindowFocus() {\n // Execute the timeout only if the file dialog is opened in the browser\n if (!fsAccessApiWorksRef.current && isFileDialogActive) {\n setTimeout(function () {\n if (inputRef.current) {\n var files = inputRef.current.files;\n\n if (!files.length) {\n dispatch({\n type: \"closeDialog\"\n });\n onFileDialogCancelCb();\n }\n }\n }, 300);\n }\n };\n\n useEffect(function () {\n window.addEventListener(\"focus\", onWindowFocus, false);\n return function () {\n window.removeEventListener(\"focus\", onWindowFocus, false);\n };\n }, [inputRef, isFileDialogActive, onFileDialogCancelCb, fsAccessApiWorksRef]);\n var dragTargetsRef = useRef([]);\n\n var onDocumentDrop = function onDocumentDrop(event) {\n if (rootRef.current && rootRef.current.contains(event.target)) {\n // If we intercepted an event for our instance, let it propagate down to the instance's onDrop handler\n return;\n }\n\n event.preventDefault();\n dragTargetsRef.current = [];\n };\n\n useEffect(function () {\n if (preventDropOnDocument) {\n document.addEventListener(\"dragover\", onDocumentDragOver, false);\n document.addEventListener(\"drop\", onDocumentDrop, false);\n }\n\n return function () {\n if (preventDropOnDocument) {\n document.removeEventListener(\"dragover\", onDocumentDragOver);\n document.removeEventListener(\"drop\", onDocumentDrop);\n }\n };\n }, [rootRef, preventDropOnDocument]);\n var onDragEnterCb = useCallback(function (event) {\n event.preventDefault(); // Persist here because we need the event later after getFilesFromEvent() is done\n\n event.persist();\n stopPropagation(event);\n dragTargetsRef.current = [].concat(_toConsumableArray(dragTargetsRef.current), [event.target]);\n\n if (isEvtWithFiles(event)) {\n Promise.resolve(getFilesFromEvent(event)).then(function (draggedFiles) {\n if (isPropagationStopped(event) && !noDragEventsBubbling) {\n return;\n }\n\n dispatch({\n draggedFiles: draggedFiles,\n isDragActive: true,\n type: \"setDraggedFiles\"\n });\n\n if (onDragEnter) {\n onDragEnter(event);\n }\n });\n }\n }, [getFilesFromEvent, onDragEnter, noDragEventsBubbling]);\n var onDragOverCb = useCallback(function (event) {\n event.preventDefault();\n event.persist();\n stopPropagation(event);\n var hasFiles = isEvtWithFiles(event);\n\n if (hasFiles && event.dataTransfer) {\n try {\n event.dataTransfer.dropEffect = \"copy\";\n } catch (_unused) {}\n /* eslint-disable-line no-empty */\n\n }\n\n if (hasFiles && onDragOver) {\n onDragOver(event);\n }\n\n return false;\n }, [onDragOver, noDragEventsBubbling]);\n var onDragLeaveCb = useCallback(function (event) {\n event.preventDefault();\n event.persist();\n stopPropagation(event); // Only deactivate once the dropzone and all children have been left\n\n var targets = dragTargetsRef.current.filter(function (target) {\n return rootRef.current && rootRef.current.contains(target);\n }); // Make sure to remove a target present multiple times only once\n // (Firefox may fire dragenter/dragleave multiple times on the same element)\n\n var targetIdx = targets.indexOf(event.target);\n\n if (targetIdx !== -1) {\n targets.splice(targetIdx, 1);\n }\n\n dragTargetsRef.current = targets;\n\n if (targets.length > 0) {\n return;\n }\n\n dispatch({\n isDragActive: false,\n type: \"setDraggedFiles\",\n draggedFiles: []\n });\n\n if (isEvtWithFiles(event) && onDragLeave) {\n onDragLeave(event);\n }\n }, [rootRef, onDragLeave, noDragEventsBubbling]);\n var setFiles = useCallback(function (files, event) {\n var acceptedFiles = [];\n var fileRejections = [];\n files.forEach(function (file) {\n var _fileAccepted = fileAccepted(file, accept),\n _fileAccepted2 = _slicedToArray(_fileAccepted, 2),\n accepted = _fileAccepted2[0],\n acceptError = _fileAccepted2[1];\n\n var _fileMatchSize = fileMatchSize(file, minSize, maxSize),\n _fileMatchSize2 = _slicedToArray(_fileMatchSize, 2),\n sizeMatch = _fileMatchSize2[0],\n sizeError = _fileMatchSize2[1];\n\n var customErrors = validator ? validator(file) : null;\n\n if (accepted && sizeMatch && !customErrors) {\n acceptedFiles.push(file);\n } else {\n var errors = [acceptError, sizeError];\n\n if (customErrors) {\n errors = errors.concat(customErrors);\n }\n\n fileRejections.push({\n file: file,\n errors: errors.filter(function (e) {\n return e;\n })\n });\n }\n });\n\n if (!multiple && acceptedFiles.length > 1 || multiple && maxFiles >= 1 && acceptedFiles.length > maxFiles) {\n // Reject everything and empty accepted files\n acceptedFiles.forEach(function (file) {\n fileRejections.push({\n file: file,\n errors: [TOO_MANY_FILES_REJECTION]\n });\n });\n acceptedFiles.splice(0);\n }\n\n dispatch({\n acceptedFiles: acceptedFiles,\n fileRejections: fileRejections,\n type: \"setFiles\"\n });\n\n if (onDrop) {\n onDrop(acceptedFiles, fileRejections, event);\n }\n\n if (fileRejections.length > 0 && onDropRejected) {\n onDropRejected(fileRejections, event);\n }\n\n if (acceptedFiles.length > 0 && onDropAccepted) {\n onDropAccepted(acceptedFiles, event);\n }\n }, [dispatch, multiple, accept, minSize, maxSize, maxFiles, onDrop, onDropAccepted, onDropRejected, validator]);\n var onDropCb = useCallback(function (event) {\n event.preventDefault(); // Persist here because we need the event later after getFilesFromEvent() is done\n\n event.persist();\n stopPropagation(event);\n dragTargetsRef.current = [];\n\n if (isEvtWithFiles(event)) {\n Promise.resolve(getFilesFromEvent(event)).then(function (files) {\n if (isPropagationStopped(event) && !noDragEventsBubbling) {\n return;\n }\n\n setFiles(files, event);\n });\n }\n\n dispatch({\n type: \"reset\"\n });\n }, [getFilesFromEvent, setFiles, noDragEventsBubbling]); // Fn for opening the file dialog programmatically\n\n var openFileDialog = useCallback(function () {\n // No point to use FS access APIs if context is not secure\n // https://developer.mozilla.org/en-US/docs/Web/Security/Secure_Contexts#feature_detection\n if (fsAccessApiWorksRef.current) {\n dispatch({\n type: \"openDialog\"\n });\n onFileDialogOpenCb(); // https://developer.mozilla.org/en-US/docs/Web/API/window/showOpenFilePicker\n\n var opts = {\n multiple: multiple,\n types: filePickerOptionsTypes(accept)\n };\n window.showOpenFilePicker(opts).then(function (handles) {\n return getFilesFromEvent(handles);\n }).then(function (files) {\n setFiles(files, null);\n dispatch({\n type: \"closeDialog\"\n });\n }).catch(function (e) {\n // AbortError means the user canceled\n if (isAbort(e)) {\n onFileDialogCancelCb(e);\n dispatch({\n type: \"closeDialog\"\n });\n } else if (isSecurityError(e)) {\n fsAccessApiWorksRef.current = false; // CORS, so cannot use this API\n // Try using the input\n\n if (inputRef.current) {\n inputRef.current.value = null;\n inputRef.current.click();\n }\n }\n });\n return;\n }\n\n if (inputRef.current) {\n dispatch({\n type: \"openDialog\"\n });\n onFileDialogOpenCb();\n inputRef.current.value = null;\n inputRef.current.click();\n }\n }, [dispatch, onFileDialogOpenCb, onFileDialogCancelCb, useFsAccessApi, setFiles, accept, multiple]); // Cb to open the file dialog when SPACE/ENTER occurs on the dropzone\n\n var onKeyDownCb = useCallback(function (event) {\n // Ignore keyboard events bubbling up the DOM tree\n if (!rootRef.current || !rootRef.current.isEqualNode(event.target)) {\n return;\n }\n\n if (event.key === \" \" || event.key === \"Enter\" || event.keyCode === 32 || event.keyCode === 13) {\n event.preventDefault();\n openFileDialog();\n }\n }, [rootRef, openFileDialog]); // Update focus state for the dropzone\n\n var onFocusCb = useCallback(function () {\n dispatch({\n type: \"focus\"\n });\n }, []);\n var onBlurCb = useCallback(function () {\n dispatch({\n type: \"blur\"\n });\n }, []); // Cb to open the file dialog when click occurs on the dropzone\n\n var onClickCb = useCallback(function () {\n if (noClick) {\n return;\n } // In IE11/Edge the file-browser dialog is blocking, therefore, use setTimeout()\n // to ensure React can handle state changes\n // See: https://github.com/react-dropzone/react-dropzone/issues/450\n\n\n if (isIeOrEdge()) {\n setTimeout(openFileDialog, 0);\n } else {\n openFileDialog();\n }\n }, [noClick, openFileDialog]);\n\n var composeHandler = function composeHandler(fn) {\n return disabled ? null : fn;\n };\n\n var composeKeyboardHandler = function composeKeyboardHandler(fn) {\n return noKeyboard ? null : composeHandler(fn);\n };\n\n var composeDragHandler = function composeDragHandler(fn) {\n return noDrag ? null : composeHandler(fn);\n };\n\n var stopPropagation = function stopPropagation(event) {\n if (noDragEventsBubbling) {\n event.stopPropagation();\n }\n };\n\n var getRootProps = useMemo(function () {\n return function () {\n var _ref2 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},\n _ref2$refKey = _ref2.refKey,\n refKey = _ref2$refKey === void 0 ? \"ref\" : _ref2$refKey,\n role = _ref2.role,\n onKeyDown = _ref2.onKeyDown,\n onFocus = _ref2.onFocus,\n onBlur = _ref2.onBlur,\n onClick = _ref2.onClick,\n onDragEnter = _ref2.onDragEnter,\n onDragOver = _ref2.onDragOver,\n onDragLeave = _ref2.onDragLeave,\n onDrop = _ref2.onDrop,\n rest = _objectWithoutProperties(_ref2, _excluded3);\n\n return _objectSpread(_objectSpread(_defineProperty({\n onKeyDown: composeKeyboardHandler(composeEventHandlers(onKeyDown, onKeyDownCb)),\n onFocus: composeKeyboardHandler(composeEventHandlers(onFocus, onFocusCb)),\n onBlur: composeKeyboardHandler(composeEventHandlers(onBlur, onBlurCb)),\n onClick: composeHandler(composeEventHandlers(onClick, onClickCb)),\n onDragEnter: composeDragHandler(composeEventHandlers(onDragEnter, onDragEnterCb)),\n onDragOver: composeDragHandler(composeEventHandlers(onDragOver, onDragOverCb)),\n onDragLeave: composeDragHandler(composeEventHandlers(onDragLeave, onDragLeaveCb)),\n onDrop: composeDragHandler(composeEventHandlers(onDrop, onDropCb)),\n role: typeof role === \"string\" && role !== \"\" ? role : \"button\"\n }, refKey, rootRef), !disabled && !noKeyboard ? {\n tabIndex: 0\n } : {}), rest);\n };\n }, [rootRef, onKeyDownCb, onFocusCb, onBlurCb, onClickCb, onDragEnterCb, onDragOverCb, onDragLeaveCb, onDropCb, noKeyboard, noDrag, disabled]);\n var onInputElementClick = useCallback(function (event) {\n event.stopPropagation();\n }, []);\n var getInputProps = useMemo(function () {\n return function () {\n var _ref3 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},\n _ref3$refKey = _ref3.refKey,\n refKey = _ref3$refKey === void 0 ? \"ref\" : _ref3$refKey,\n onChange = _ref3.onChange,\n onClick = _ref3.onClick,\n rest = _objectWithoutProperties(_ref3, _excluded4);\n\n var inputProps = _defineProperty({\n accept: accept,\n multiple: multiple,\n type: \"file\",\n style: {\n display: \"none\"\n },\n onChange: composeHandler(composeEventHandlers(onChange, onDropCb)),\n onClick: composeHandler(composeEventHandlers(onClick, onInputElementClick)),\n tabIndex: -1\n }, refKey, inputRef);\n\n return _objectSpread(_objectSpread({}, inputProps), rest);\n };\n }, [inputRef, accept, multiple, onDropCb, disabled]);\n var fileCount = draggedFiles.length;\n var isDragAccept = fileCount > 0 && allFilesAccepted({\n files: draggedFiles,\n accept: accept,\n minSize: minSize,\n maxSize: maxSize,\n multiple: multiple,\n maxFiles: maxFiles\n });\n var isDragReject = fileCount > 0 && !isDragAccept;\n return _objectSpread(_objectSpread({}, state), {}, {\n isDragAccept: isDragAccept,\n isDragReject: isDragReject,\n isFocused: isFocused && !disabled,\n getRootProps: getRootProps,\n getInputProps: getInputProps,\n rootRef: rootRef,\n inputRef: inputRef,\n open: composeHandler(openFileDialog)\n });\n}\n\nfunction reducer(state, action) {\n /* istanbul ignore next */\n switch (action.type) {\n case \"focus\":\n return _objectSpread(_objectSpread({}, state), {}, {\n isFocused: true\n });\n\n case \"blur\":\n return _objectSpread(_objectSpread({}, state), {}, {\n isFocused: false\n });\n\n case \"openDialog\":\n return _objectSpread(_objectSpread({}, initialState), {}, {\n isFileDialogActive: true\n });\n\n case \"closeDialog\":\n return _objectSpread(_objectSpread({}, state), {}, {\n isFileDialogActive: false\n });\n\n case \"setDraggedFiles\":\n /* eslint no-case-declarations: 0 */\n var isDragActive = action.isDragActive,\n draggedFiles = action.draggedFiles;\n return _objectSpread(_objectSpread({}, state), {}, {\n draggedFiles: draggedFiles,\n isDragActive: isDragActive\n });\n\n case \"setFiles\":\n return _objectSpread(_objectSpread({}, state), {}, {\n acceptedFiles: action.acceptedFiles,\n fileRejections: action.fileRejections\n });\n\n case \"reset\":\n return _objectSpread({}, initialState);\n\n default:\n return state;\n }\n}\n\nfunction noop() {}\n\nexport { ErrorCode } from \"./utils\";","import { useReducer, useRef, useDebugValue, useEffect, useLayoutEffect } from 'react';\n\nfunction createStore(createState) {\n let state;\n const listeners = /* @__PURE__ */ new Set();\n const setState = (partial, replace) => {\n const nextState = typeof partial === \"function\" ? partial(state) : partial;\n if (nextState !== state) {\n const previousState = state;\n state = replace ? nextState : Object.assign({}, state, nextState);\n listeners.forEach((listener) => listener(state, previousState));\n }\n };\n const getState = () => state;\n const subscribeWithSelector = (listener, selector = getState, equalityFn = Object.is) => {\n console.warn(\"[DEPRECATED] Please use `subscribeWithSelector` middleware\");\n let currentSlice = selector(state);\n function listenerToAdd() {\n const nextSlice = selector(state);\n if (!equalityFn(currentSlice, nextSlice)) {\n const previousSlice = currentSlice;\n listener(currentSlice = nextSlice, previousSlice);\n }\n }\n listeners.add(listenerToAdd);\n return () => listeners.delete(listenerToAdd);\n };\n const subscribe = (listener, selector, equalityFn) => {\n if (selector || equalityFn) {\n return subscribeWithSelector(listener, selector, equalityFn);\n }\n listeners.add(listener);\n return () => listeners.delete(listener);\n };\n const destroy = () => listeners.clear();\n const api = { setState, getState, subscribe, destroy };\n state = createState(setState, getState, api);\n return api;\n}\n\nconst isSSR = typeof window === \"undefined\" || !window.navigator || /ServerSideRendering|^Deno\\//.test(window.navigator.userAgent);\nconst useIsomorphicLayoutEffect = isSSR ? useEffect : useLayoutEffect;\nfunction create(createState) {\n const api = typeof createState === \"function\" ? createStore(createState) : createState;\n const useStore = (selector = api.getState, equalityFn = Object.is) => {\n const [, forceUpdate] = useReducer((c) => c + 1, 0);\n const state = api.getState();\n const stateRef = useRef(state);\n const selectorRef = useRef(selector);\n const equalityFnRef = useRef(equalityFn);\n const erroredRef = useRef(false);\n const currentSliceRef = useRef();\n if (currentSliceRef.current === void 0) {\n currentSliceRef.current = selector(state);\n }\n let newStateSlice;\n let hasNewStateSlice = false;\n if (stateRef.current !== state || selectorRef.current !== selector || equalityFnRef.current !== equalityFn || erroredRef.current) {\n newStateSlice = selector(state);\n hasNewStateSlice = !equalityFn(currentSliceRef.current, newStateSlice);\n }\n useIsomorphicLayoutEffect(() => {\n if (hasNewStateSlice) {\n currentSliceRef.current = newStateSlice;\n }\n stateRef.current = state;\n selectorRef.current = selector;\n equalityFnRef.current = equalityFn;\n erroredRef.current = false;\n });\n const stateBeforeSubscriptionRef = useRef(state);\n useIsomorphicLayoutEffect(() => {\n const listener = () => {\n try {\n const nextState = api.getState();\n const nextStateSlice = selectorRef.current(nextState);\n if (!equalityFnRef.current(currentSliceRef.current, nextStateSlice)) {\n stateRef.current = nextState;\n currentSliceRef.current = nextStateSlice;\n forceUpdate();\n }\n } catch (error) {\n erroredRef.current = true;\n forceUpdate();\n }\n };\n const unsubscribe = api.subscribe(listener);\n if (api.getState() !== stateBeforeSubscriptionRef.current) {\n listener();\n }\n return unsubscribe;\n }, []);\n const sliceToReturn = hasNewStateSlice ? newStateSlice : currentSliceRef.current;\n useDebugValue(sliceToReturn);\n return sliceToReturn;\n };\n Object.assign(useStore, api);\n useStore[Symbol.iterator] = function() {\n console.warn(\"[useStore, api] = create() is deprecated and will be removed in v4\");\n const items = [useStore, api];\n return {\n next() {\n const done = items.length <= 0;\n return { value: items.shift(), done };\n }\n };\n };\n return useStore;\n}\n\nexport { create as default };\n","var __defProp$1 = Object.defineProperty;\nvar __getOwnPropSymbols$1 = Object.getOwnPropertySymbols;\nvar __hasOwnProp$1 = Object.prototype.hasOwnProperty;\nvar __propIsEnum$1 = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp$1 = (obj, key, value) => key in obj ? __defProp$1(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues$1 = (a, b) => {\n for (var prop in b || (b = {}))\n if (__hasOwnProp$1.call(b, prop))\n __defNormalProp$1(a, prop, b[prop]);\n if (__getOwnPropSymbols$1)\n for (var prop of __getOwnPropSymbols$1(b)) {\n if (__propIsEnum$1.call(b, prop))\n __defNormalProp$1(a, prop, b[prop]);\n }\n return a;\n};\nconst redux = (reducer, initial) => (set, get, api) => {\n api.dispatch = (action) => {\n set((state) => reducer(state, action), false, action);\n return action;\n };\n api.dispatchFromDevtools = true;\n return __spreadValues$1({ dispatch: (...a) => api.dispatch(...a) }, initial);\n};\n\nfunction devtools(fn, options) {\n return (set, get, api) => {\n var _a;\n let didWarnAboutNameDeprecation = false;\n if (typeof options === \"string\" && !didWarnAboutNameDeprecation) {\n console.warn(\"[zustand devtools middleware]: passing `name` as directly will be not allowed in next majorpass the `name` in an object `{ name: ... }` instead\");\n didWarnAboutNameDeprecation = true;\n }\n const devtoolsOptions = options === void 0 ? { name: void 0, anonymousActionType: void 0 } : typeof options === \"string\" ? { name: options } : options;\n if (typeof ((_a = devtoolsOptions == null ? void 0 : devtoolsOptions.serialize) == null ? void 0 : _a.options) !== \"undefined\") {\n console.warn(\"[zustand devtools middleware]: `serialize.options` is deprecated, just use `serialize`\");\n }\n let extensionConnector;\n try {\n extensionConnector = window.__REDUX_DEVTOOLS_EXTENSION__ || window.top.__REDUX_DEVTOOLS_EXTENSION__;\n } catch {\n }\n if (!extensionConnector) {\n if ((import.meta.env && import.meta.env.MODE) !== \"production\" && typeof window !== \"undefined\") {\n console.warn(\"[zustand devtools middleware] Please install/enable Redux devtools extension\");\n }\n return fn(set, get, api);\n }\n let extension = Object.create(extensionConnector.connect(devtoolsOptions));\n let didWarnAboutDevtools = false;\n Object.defineProperty(api, \"devtools\", {\n get: () => {\n if (!didWarnAboutDevtools) {\n console.warn(\"[zustand devtools middleware] `devtools` property on the store is deprecated it will be removed in the next major.\\nYou shouldn't interact with the extension directly. But in case you still want to you can patch `window.__REDUX_DEVTOOLS_EXTENSION__` directly\");\n didWarnAboutDevtools = true;\n }\n return extension;\n },\n set: (value) => {\n if (!didWarnAboutDevtools) {\n console.warn(\"[zustand devtools middleware] `api.devtools` is deprecated, it will be removed in the next major.\\nYou shouldn't interact with the extension directly. But in case you still want to you can patch `window.__REDUX_DEVTOOLS_EXTENSION__` directly\");\n didWarnAboutDevtools = true;\n }\n extension = value;\n }\n });\n let didWarnAboutPrefix = false;\n Object.defineProperty(extension, \"prefix\", {\n get: () => {\n if (!didWarnAboutPrefix) {\n console.warn(\"[zustand devtools middleware] along with `api.devtools`, `api.devtools.prefix` is deprecated.\\nWe no longer prefix the actions/names\" + devtoolsOptions.name === void 0 ? \", pass the `name` option to create a separate instance of devtools for each store.\" : \", because the `name` option already creates a separate instance of devtools for each store.\");\n didWarnAboutPrefix = true;\n }\n return \"\";\n },\n set: () => {\n if (!didWarnAboutPrefix) {\n console.warn(\"[zustand devtools middleware] along with `api.devtools`, `api.devtools.prefix` is deprecated.\\nWe no longer prefix the actions/names\" + devtoolsOptions.name === void 0 ? \", pass the `name` option to create a separate instance of devtools for each store.\" : \", because the `name` option already creates a separate instance of devtools for each store.\");\n didWarnAboutPrefix = true;\n }\n }\n });\n let isRecording = true;\n api.setState = (state, replace, nameOrAction) => {\n set(state, replace);\n if (!isRecording)\n return;\n extension.send(nameOrAction === void 0 ? { type: devtoolsOptions.anonymousActionType || \"anonymous\" } : typeof nameOrAction === \"string\" ? { type: nameOrAction } : nameOrAction, get());\n };\n const setStateFromDevtools = (...a) => {\n const originalIsRecording = isRecording;\n isRecording = false;\n set(...a);\n isRecording = originalIsRecording;\n };\n const initialState = fn(api.setState, get, api);\n extension.init(initialState);\n if (api.dispatchFromDevtools && typeof api.dispatch === \"function\") {\n let didWarnAboutReservedActionType = false;\n const originalDispatch = api.dispatch;\n api.dispatch = (...a) => {\n if (a[0].type === \"__setState\" && !didWarnAboutReservedActionType) {\n console.warn('[zustand devtools middleware] \"__setState\" action type is reserved to set state from the devtools. Avoid using it.');\n didWarnAboutReservedActionType = true;\n }\n originalDispatch(...a);\n };\n }\n extension.subscribe((message) => {\n var _a2;\n switch (message.type) {\n case \"ACTION\":\n if (typeof message.payload !== \"string\") {\n console.error(\"[zustand devtools middleware] Unsupported action format\");\n return;\n }\n return parseJsonThen(message.payload, (action) => {\n if (action.type === \"__setState\") {\n setStateFromDevtools(action.state);\n return;\n }\n if (!api.dispatchFromDevtools)\n return;\n if (typeof api.dispatch !== \"function\")\n return;\n api.dispatch(action);\n });\n case \"DISPATCH\":\n switch (message.payload.type) {\n case \"RESET\":\n setStateFromDevtools(initialState);\n return extension.init(api.getState());\n case \"COMMIT\":\n return extension.init(api.getState());\n case \"ROLLBACK\":\n return parseJsonThen(message.state, (state) => {\n setStateFromDevtools(state);\n extension.init(api.getState());\n });\n case \"JUMP_TO_STATE\":\n case \"JUMP_TO_ACTION\":\n return parseJsonThen(message.state, (state) => {\n setStateFromDevtools(state);\n });\n case \"IMPORT_STATE\": {\n const { nextLiftedState } = message.payload;\n const lastComputedState = (_a2 = nextLiftedState.computedStates.slice(-1)[0]) == null ? void 0 : _a2.state;\n if (!lastComputedState)\n return;\n setStateFromDevtools(lastComputedState);\n extension.send(null, nextLiftedState);\n return;\n }\n case \"PAUSE_RECORDING\":\n return isRecording = !isRecording;\n }\n return;\n }\n });\n return initialState;\n };\n}\nconst parseJsonThen = (stringified, f) => {\n let parsed;\n try {\n parsed = JSON.parse(stringified);\n } catch (e) {\n console.error(\"[zustand devtools middleware] Could not parse the received json\", e);\n }\n if (parsed !== void 0)\n f(parsed);\n};\n\nconst subscribeWithSelector = (fn) => (set, get, api) => {\n const origSubscribe = api.subscribe;\n api.subscribe = (selector, optListener, options) => {\n let listener = selector;\n if (optListener) {\n const equalityFn = (options == null ? void 0 : options.equalityFn) || Object.is;\n let currentSlice = selector(api.getState());\n listener = (state) => {\n const nextSlice = selector(state);\n if (!equalityFn(currentSlice, nextSlice)) {\n const previousSlice = currentSlice;\n optListener(currentSlice = nextSlice, previousSlice);\n }\n };\n if (options == null ? void 0 : options.fireImmediately) {\n optListener(currentSlice, currentSlice);\n }\n }\n return origSubscribe(listener);\n };\n const initialState = fn(set, get, api);\n return initialState;\n};\n\nconst combine = (initialState, create) => (set, get, api) => Object.assign({}, initialState, create(set, get, api));\n\nvar __defProp = Object.defineProperty;\nvar __getOwnPropSymbols = Object.getOwnPropertySymbols;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __propIsEnum = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues = (a, b) => {\n for (var prop in b || (b = {}))\n if (__hasOwnProp.call(b, prop))\n __defNormalProp(a, prop, b[prop]);\n if (__getOwnPropSymbols)\n for (var prop of __getOwnPropSymbols(b)) {\n if (__propIsEnum.call(b, prop))\n __defNormalProp(a, prop, b[prop]);\n }\n return a;\n};\nconst toThenable = (fn) => (input) => {\n try {\n const result = fn(input);\n if (result instanceof Promise) {\n return result;\n }\n return {\n then(onFulfilled) {\n return toThenable(onFulfilled)(result);\n },\n catch(_onRejected) {\n return this;\n }\n };\n } catch (e) {\n return {\n then(_onFulfilled) {\n return this;\n },\n catch(onRejected) {\n return toThenable(onRejected)(e);\n }\n };\n }\n};\nconst persist = (config, baseOptions) => (set, get, api) => {\n let options = __spreadValues({\n getStorage: () => localStorage,\n serialize: JSON.stringify,\n deserialize: JSON.parse,\n partialize: (state) => state,\n version: 0,\n merge: (persistedState, currentState) => __spreadValues(__spreadValues({}, currentState), persistedState)\n }, baseOptions);\n if (options.blacklist || options.whitelist) {\n console.warn(`The ${options.blacklist ? \"blacklist\" : \"whitelist\"} option is deprecated and will be removed in the next version. Please use the 'partialize' option instead.`);\n }\n let hasHydrated = false;\n const hydrationListeners = /* @__PURE__ */ new Set();\n const finishHydrationListeners = /* @__PURE__ */ new Set();\n let storage;\n try {\n storage = options.getStorage();\n } catch (e) {\n }\n if (!storage) {\n return config((...args) => {\n console.warn(`[zustand persist middleware] Unable to update item '${options.name}', the given storage is currently unavailable.`);\n set(...args);\n }, get, api);\n } else if (!storage.removeItem) {\n console.warn(`[zustand persist middleware] The given storage for item '${options.name}' does not contain a 'removeItem' method, which will be required in v4.`);\n }\n const thenableSerialize = toThenable(options.serialize);\n const setItem = () => {\n const state = options.partialize(__spreadValues({}, get()));\n if (options.whitelist) {\n Object.keys(state).forEach((key) => {\n var _a;\n !((_a = options.whitelist) == null ? void 0 : _a.includes(key)) && delete state[key];\n });\n }\n if (options.blacklist) {\n options.blacklist.forEach((key) => delete state[key]);\n }\n let errorInSync;\n const thenable = thenableSerialize({ state, version: options.version }).then((serializedValue) => storage.setItem(options.name, serializedValue)).catch((e) => {\n errorInSync = e;\n });\n if (errorInSync) {\n throw errorInSync;\n }\n return thenable;\n };\n const savedSetState = api.setState;\n api.setState = (state, replace) => {\n savedSetState(state, replace);\n void setItem();\n };\n const configResult = config((...args) => {\n set(...args);\n void setItem();\n }, get, api);\n let stateFromStorage;\n const hydrate = () => {\n var _a;\n if (!storage)\n return;\n hasHydrated = false;\n hydrationListeners.forEach((cb) => cb(get()));\n const postRehydrationCallback = ((_a = options.onRehydrateStorage) == null ? void 0 : _a.call(options, get())) || void 0;\n return toThenable(storage.getItem.bind(storage))(options.name).then((storageValue) => {\n if (storageValue) {\n return options.deserialize(storageValue);\n }\n }).then((deserializedStorageValue) => {\n if (deserializedStorageValue) {\n if (typeof deserializedStorageValue.version === \"number\" && deserializedStorageValue.version !== options.version) {\n if (options.migrate) {\n return options.migrate(deserializedStorageValue.state, deserializedStorageValue.version);\n }\n console.error(`State loaded from storage couldn't be migrated since no migrate function was provided`);\n } else {\n return deserializedStorageValue.state;\n }\n }\n }).then((migratedState) => {\n var _a2;\n stateFromStorage = options.merge(migratedState, (_a2 = get()) != null ? _a2 : configResult);\n set(stateFromStorage, true);\n return setItem();\n }).then(() => {\n postRehydrationCallback == null ? void 0 : postRehydrationCallback(stateFromStorage, void 0);\n hasHydrated = true;\n finishHydrationListeners.forEach((cb) => cb(stateFromStorage));\n }).catch((e) => {\n postRehydrationCallback == null ? void 0 : postRehydrationCallback(void 0, e);\n });\n };\n api.persist = {\n setOptions: (newOptions) => {\n options = __spreadValues(__spreadValues({}, options), newOptions);\n if (newOptions.getStorage) {\n storage = newOptions.getStorage();\n }\n },\n clearStorage: () => {\n var _a;\n (_a = storage == null ? void 0 : storage.removeItem) == null ? void 0 : _a.call(storage, options.name);\n },\n rehydrate: () => hydrate(),\n hasHydrated: () => hasHydrated,\n onHydrate: (cb) => {\n hydrationListeners.add(cb);\n return () => {\n hydrationListeners.delete(cb);\n };\n },\n onFinishHydration: (cb) => {\n finishHydrationListeners.add(cb);\n return () => {\n finishHydrationListeners.delete(cb);\n };\n }\n };\n hydrate();\n return stateFromStorage || configResult;\n};\n\nexport { combine, devtools, persist, redux, subscribeWithSelector };\n","import { p as pick, _ as _objectSpread2, o as omit, s as styled, u as useInputContext, R as Row, L as Label, V as ValueInput, P as Portal, O as Overlay, c as createInternalPlugin, a as Vector, g as getVectorPlugin, b as useTransform, d as useTh, e as useDrag, f as _extends, m as multiplyStep, h as clamp, i as _objectWithoutProperties, n as normalizeKeyedNumberSettings, j as invertedRange, k as sanitizeStep, r as range, l as RangeWrapper, q as Range, I as Indicator, S as Scrubber, t as getUid, v as SpecialInputs, w as warn, x as LevaErrors, y as updateInput, z as normalizeInput, A as StyledTitle, C as Chevron, B as useInputSetters, D as Plugins, E as InputContext, F as StyledInputWrapper, G as useStoreContext, H as useCanvas2d, J as useInput, K as log, M as StyledWrapper, N as StyledContent, Q as StyledFolder, T as StyledInputRow, U as debounce, W as globalStyles, X as PanelSettingsContext, Y as StoreContext, Z as mergeTheme, $ as ThemeContext, a0 as register, a1 as LevaInputs, a2 as select, a3 as number$1, a4 as string, a5 as boolean } from './vector-plugin-a53011d9.esm.js';\nexport { a1 as LevaInputs, a6 as LevaStoreProvider, G as useStoreContext } from './vector-plugin-a53011d9.esm.js';\nimport v8n from 'v8n';\nimport { extend, colord, getFormat } from 'colord';\nimport namesPlugin from 'colord/plugins/names';\nimport { dequal } from 'dequal/lite';\nimport React, { useRef, useMemo, useLayoutEffect, useEffect, useState, useCallback, forwardRef, useImperativeHandle } from 'react';\nimport { RgbaColorPicker, RgbColorPicker } from 'react-colorful';\nimport shallow from 'zustand/shallow';\nimport '@use-gesture/react';\nimport '@radix-ui/react-portal';\nimport '@radix-ui/react-tooltip';\nimport { useDropzone } from 'react-dropzone';\nimport create from 'zustand';\nimport { subscribeWithSelector } from 'zustand/middleware';\nimport ReactDOM from 'react-dom';\nimport merge from 'merge-value';\nimport '@stitches/react';\n\nconst join = (...args) => args.filter(Boolean).join('.');\nfunction getKeyPath(path) {\n const dir = path.split('.');\n return [dir.pop(), dir.join('.') || undefined];\n}\n\nfunction getValuesForPaths(data, paths) {\n return Object.entries(pick(data, paths)).reduce((acc, [, {\n value,\n disabled,\n key\n }]) => {\n acc[key] = disabled ? undefined : value;\n return acc;\n }, {});\n}\n\nfunction useCompareMemoize(value, deep) {\n const ref = useRef();\n const compare = deep ? dequal : shallow;\n\n if (!compare(value, ref.current)) {\n ref.current = value;\n }\n\n return ref.current;\n}\n\nfunction useDeepMemo(fn, deps) {\n return useMemo(fn, useCompareMemoize(deps, true));\n}\n\nfunction useToggle(toggled) {\n const wrapperRef = useRef(null);\n const contentRef = useRef(null);\n const firstRender = useRef(true);\n useLayoutEffect(() => {\n if (!toggled) {\n wrapperRef.current.style.height = '0px';\n wrapperRef.current.style.overflow = 'hidden';\n }\n }, []);\n useEffect(() => {\n if (firstRender.current) {\n firstRender.current = false;\n return;\n }\n\n let timeout;\n const ref = wrapperRef.current;\n\n const fixHeight = () => {\n if (toggled) {\n ref.style.removeProperty('height');\n ref.style.removeProperty('overflow');\n contentRef.current.scrollIntoView({\n behavior: 'smooth',\n block: 'nearest'\n });\n }\n };\n\n ref.addEventListener('transitionend', fixHeight, {\n once: true\n });\n const {\n height\n } = contentRef.current.getBoundingClientRect();\n ref.style.height = height + 'px';\n\n if (!toggled) {\n ref.style.overflow = 'hidden';\n timeout = window.setTimeout(() => ref.style.height = '0px', 50);\n }\n\n return () => {\n ref.removeEventListener('transitionend', fixHeight);\n clearTimeout(timeout);\n };\n }, [toggled]);\n return {\n wrapperRef,\n contentRef\n };\n}\n\nconst useVisiblePaths = store => {\n const [paths, setPaths] = useState(store.getVisiblePaths());\n useEffect(() => {\n setPaths(store.getVisiblePaths());\n const unsub = store.useStore.subscribe(store.getVisiblePaths, setPaths, {\n equalityFn: shallow\n });\n return () => unsub();\n }, [store]);\n return paths;\n};\n\nfunction useValuesForPath(store, paths, initialData) {\n const valuesForPath = store.useStore(s => {\n const data = _objectSpread2(_objectSpread2({}, initialData), s.data);\n\n return getValuesForPaths(data, paths);\n }, shallow);\n return valuesForPath;\n}\n\nfunction usePopin(margin = 3) {\n const popinRef = useRef(null);\n const wrapperRef = useRef(null);\n const [shown, setShow] = useState(false);\n const show = useCallback(() => setShow(true), []);\n const hide = useCallback(() => setShow(false), []);\n useLayoutEffect(() => {\n if (shown) {\n const {\n bottom,\n top,\n left\n } = popinRef.current.getBoundingClientRect();\n const {\n height\n } = wrapperRef.current.getBoundingClientRect();\n const direction = bottom + height > window.innerHeight - 40 ? 'up' : 'down';\n wrapperRef.current.style.position = 'fixed';\n wrapperRef.current.style.zIndex = '10000';\n wrapperRef.current.style.left = left + 'px';\n if (direction === 'down') wrapperRef.current.style.top = bottom + margin + 'px';else wrapperRef.current.style.bottom = window.innerHeight - top + margin + 'px';\n }\n }, [margin, shown]);\n return {\n popinRef,\n wrapperRef,\n shown,\n show,\n hide\n };\n}\n\nextend([namesPlugin]);\nconst convertMap = {\n rgb: 'toRgb',\n hsl: 'toHsl',\n hsv: 'toHsv',\n hex: 'toHex'\n};\nv8n.extend({\n color: () => value => colord(value).isValid()\n});\nconst schema$2 = o => v8n().color().test(o);\n\nfunction convert(color, {\n format,\n hasAlpha,\n isString\n}) {\n const convertFn = convertMap[format] + (isString && format !== 'hex' ? 'String' : '');\n const result = color[convertFn]();\n return typeof result === 'object' && !hasAlpha ? omit(result, ['a']) : result;\n}\n\nconst sanitize$2 = (v, settings) => {\n const color = colord(v);\n if (!color.isValid()) throw Error('Invalid color');\n return convert(color, settings);\n};\nconst format$1 = (v, settings) => {\n return convert(colord(v), _objectSpread2(_objectSpread2({}, settings), {}, {\n isString: true,\n format: 'hex'\n }));\n};\nconst normalize$3 = ({\n value\n}) => {\n const _f = getFormat(value);\n\n const format = _f === 'name' ? 'hex' : _f;\n const hasAlpha = typeof value === 'object' ? 'a' in value : _f === 'hex' && value.length === 8 || /^(rgba)|(hsla)|(hsva)/.test(value);\n const settings = {\n format,\n hasAlpha,\n isString: typeof value === 'string'\n };\n return {\n value: sanitize$2(value, settings),\n settings\n };\n};\n\nvar props$2 = /*#__PURE__*/Object.freeze({\n __proto__: null,\n schema: schema$2,\n sanitize: sanitize$2,\n format: format$1,\n normalize: normalize$3\n});\n\nconst ColorPreview = styled('div', {\n position: 'relative',\n boxSizing: 'border-box',\n borderRadius: '$sm',\n overflow: 'hidden',\n cursor: 'pointer',\n height: '$rowHeight',\n width: '$rowHeight',\n backgroundColor: '#fff',\n backgroundImage: `url('data:image/svg+xml;charset=utf-8,')`,\n $inputStyle: '',\n $hover: '',\n zIndex: 1,\n variants: {\n active: {\n true: {\n $inputStyle: '$accent1'\n }\n }\n },\n '&::before': {\n content: '\"\"',\n position: 'absolute',\n top: 0,\n bottom: 0,\n right: 0,\n left: 0,\n backgroundColor: 'currentColor',\n zIndex: 1\n }\n});\nconst PickerContainer = styled('div', {\n position: 'relative',\n display: 'grid',\n gridTemplateColumns: '$sizes$rowHeight auto',\n columnGap: '$colGap',\n alignItems: 'center'\n});\nconst PickerWrapper = styled('div', {\n width: '$colorPickerWidth',\n height: '$colorPickerHeight',\n '.react-colorful': {\n width: '100%',\n height: '100%',\n boxShadow: '$level2',\n cursor: 'crosshair'\n },\n '.react-colorful__saturation': {\n borderRadius: '$sm $sm 0 0'\n },\n '.react-colorful__alpha, .react-colorful__hue': {\n height: 10\n },\n '.react-colorful__last-control': {\n borderRadius: '0 0 $sm $sm'\n },\n '.react-colorful__pointer': {\n height: 12,\n width: 12\n }\n});\n\nfunction convertToRgb(value, format) {\n return format !== 'rgb' ? colord(value).toRgb() : value;\n}\n\nfunction Color({\n value,\n displayValue,\n settings,\n onUpdate\n}) {\n const {\n emitOnEditStart,\n emitOnEditEnd\n } = useInputContext();\n const {\n format,\n hasAlpha\n } = settings;\n const {\n popinRef,\n wrapperRef,\n shown,\n show,\n hide\n } = usePopin();\n const timer = useRef(0);\n const [initialRgb, setInitialRgb] = useState(() => convertToRgb(value, format));\n const ColorPicker = hasAlpha ? RgbaColorPicker : RgbColorPicker;\n\n const showPicker = () => {\n setInitialRgb(convertToRgb(value, format));\n show();\n emitOnEditStart();\n };\n\n const hidePicker = () => {\n hide();\n emitOnEditEnd();\n window.clearTimeout(timer.current);\n };\n\n const hideAfterDelay = () => {\n timer.current = window.setTimeout(hidePicker, 500);\n };\n\n useEffect(() => {\n return () => window.clearTimeout(timer.current);\n }, []);\n return React.createElement(React.Fragment, null, React.createElement(ColorPreview, {\n ref: popinRef,\n active: shown,\n onClick: () => showPicker(),\n style: {\n color: displayValue\n }\n }), shown && React.createElement(Portal, null, React.createElement(Overlay, {\n onPointerUp: hidePicker\n }), React.createElement(PickerWrapper, {\n ref: wrapperRef,\n onMouseEnter: () => window.clearTimeout(timer.current),\n onMouseLeave: e => e.buttons === 0 && hideAfterDelay()\n }, React.createElement(ColorPicker, {\n color: initialRgb,\n onChange: onUpdate\n }))));\n}\nfunction ColorComponent() {\n const {\n value,\n displayValue,\n label,\n onChange,\n onUpdate,\n settings\n } = useInputContext();\n return React.createElement(Row, {\n input: true\n }, React.createElement(Label, null, label), React.createElement(PickerContainer, null, React.createElement(Color, {\n value: value,\n displayValue: displayValue,\n onChange: onChange,\n onUpdate: onUpdate,\n settings: settings\n }), React.createElement(ValueInput, {\n value: displayValue,\n onChange: onChange,\n onUpdate: onUpdate\n })));\n}\n\nvar color = createInternalPlugin(_objectSpread2({\n component: ColorComponent\n}, props$2));\n\nfunction Vector3dComponent() {\n const {\n label,\n displayValue,\n onUpdate,\n settings\n } = useInputContext();\n return React.createElement(Row, {\n input: true\n }, React.createElement(Label, null, label), React.createElement(Vector, {\n value: displayValue,\n settings: settings,\n onUpdate: onUpdate\n }));\n}\n\nvar vector3d = createInternalPlugin(_objectSpread2({\n component: Vector3dComponent\n}, getVectorPlugin(['x', 'y', 'z'])));\n\nconst JoystickTrigger = styled('div', {\n $flexCenter: '',\n position: 'relative',\n backgroundColor: '$elevation3',\n borderRadius: '$sm',\n cursor: 'pointer',\n height: '$rowHeight',\n width: '$rowHeight',\n touchAction: 'none',\n $draggable: '',\n $hover: '',\n '&:active': {\n cursor: 'none'\n },\n '&::after': {\n content: '\"\"',\n backgroundColor: '$accent2',\n height: 4,\n width: 4,\n borderRadius: 2\n }\n});\nconst JoystickPlayground = styled('div', {\n $flexCenter: '',\n width: '$joystickWidth',\n height: '$joystickHeight',\n borderRadius: '$sm',\n boxShadow: '$level2',\n position: 'fixed',\n zIndex: 10000,\n overflow: 'hidden',\n $draggable: '',\n transform: 'translate(-50%, -50%)',\n variants: {\n isOutOfBounds: {\n true: {\n backgroundColor: '$elevation1'\n },\n false: {\n backgroundColor: '$elevation3'\n }\n }\n },\n '> div': {\n position: 'absolute',\n $flexCenter: '',\n borderStyle: 'solid',\n borderWidth: 1,\n borderColor: '$highlight1',\n backgroundColor: '$elevation3',\n width: '80%',\n height: '80%',\n '&::after,&::before': {\n content: '\"\"',\n position: 'absolute',\n zindex: 10,\n backgroundColor: '$highlight1'\n },\n '&::before': {\n width: '100%',\n height: 1\n },\n '&::after': {\n height: '100%',\n width: 1\n }\n },\n '> span': {\n position: 'relative',\n zindex: 100,\n width: 10,\n height: 10,\n backgroundColor: '$accent2',\n borderRadius: '50%'\n }\n});\n\nfunction Joystick({\n value,\n settings,\n onUpdate\n}) {\n const timeout = useRef();\n const outOfBoundsX = useRef(0);\n const outOfBoundsY = useRef(0);\n const stepMultiplier = useRef(1);\n const [joystickShown, setShowJoystick] = useState(false);\n const [isOutOfBounds, setIsOutOfBounds] = useState(false);\n const [spanRef, set] = useTransform();\n const joystickeRef = useRef(null);\n const playgroundRef = useRef(null);\n useLayoutEffect(() => {\n if (joystickShown) {\n const {\n top,\n left,\n width,\n height\n } = joystickeRef.current.getBoundingClientRect();\n playgroundRef.current.style.left = left + width / 2 + 'px';\n playgroundRef.current.style.top = top + height / 2 + 'px';\n }\n }, [joystickShown]);\n const {\n keys: [v1, v2],\n joystick\n } = settings;\n const yFactor = joystick === 'invertY' ? 1 : -1;\n const {\n [v1]: {\n step: stepV1\n },\n [v2]: {\n step: stepV2\n }\n } = settings;\n const wpx = useTh('sizes', 'joystickWidth');\n const hpx = useTh('sizes', 'joystickHeight');\n const w = parseFloat(wpx) * 0.8 / 2;\n const h = parseFloat(hpx) * 0.8 / 2;\n const startOutOfBounds = useCallback(() => {\n if (timeout.current) return;\n setIsOutOfBounds(true);\n if (outOfBoundsX.current) set({\n x: outOfBoundsX.current * w\n });\n if (outOfBoundsY.current) set({\n y: outOfBoundsY.current * -h\n });\n timeout.current = window.setInterval(() => {\n onUpdate(v => {\n const incX = stepV1 * outOfBoundsX.current * stepMultiplier.current;\n const incY = yFactor * stepV2 * outOfBoundsY.current * stepMultiplier.current;\n return Array.isArray(v) ? {\n [v1]: v[0] + incX,\n [v2]: v[1] + incY\n } : {\n [v1]: v[v1] + incX,\n [v2]: v[v2] + incY\n };\n });\n }, 16);\n }, [w, h, onUpdate, set, stepV1, stepV2, v1, v2, yFactor]);\n const endOutOfBounds = useCallback(() => {\n window.clearTimeout(timeout.current);\n timeout.current = undefined;\n setIsOutOfBounds(false);\n }, []);\n useEffect(() => {\n function setStepMultiplier(event) {\n stepMultiplier.current = multiplyStep(event);\n }\n\n window.addEventListener('keydown', setStepMultiplier);\n window.addEventListener('keyup', setStepMultiplier);\n return () => {\n window.clearTimeout(timeout.current);\n window.removeEventListener('keydown', setStepMultiplier);\n window.removeEventListener('keyup', setStepMultiplier);\n };\n }, []);\n const bind = useDrag(({\n first,\n active,\n delta: [dx, dy],\n movement: [mx, my]\n }) => {\n if (first) setShowJoystick(true);\n\n const _x = clamp(mx, -w, w);\n\n const _y = clamp(my, -h, h);\n\n outOfBoundsX.current = Math.abs(mx) > Math.abs(_x) ? Math.sign(mx - _x) : 0;\n outOfBoundsY.current = Math.abs(my) > Math.abs(_y) ? Math.sign(_y - my) : 0;\n let newX = value[v1];\n let newY = value[v2];\n\n if (active) {\n if (!outOfBoundsX.current) {\n newX += dx * stepV1 * stepMultiplier.current;\n set({\n x: _x\n });\n }\n\n if (!outOfBoundsY.current) {\n newY -= yFactor * dy * stepV2 * stepMultiplier.current;\n set({\n y: _y\n });\n }\n\n if (outOfBoundsX.current || outOfBoundsY.current) startOutOfBounds();else endOutOfBounds();\n onUpdate({\n [v1]: newX,\n [v2]: newY\n });\n } else {\n setShowJoystick(false);\n outOfBoundsX.current = 0;\n outOfBoundsY.current = 0;\n set({\n x: 0,\n y: 0\n });\n endOutOfBounds();\n }\n });\n return React.createElement(JoystickTrigger, _extends({\n ref: joystickeRef\n }, bind()), joystickShown && React.createElement(Portal, null, React.createElement(JoystickPlayground, {\n ref: playgroundRef,\n isOutOfBounds: isOutOfBounds\n }, React.createElement(\"div\", null), React.createElement(\"span\", {\n ref: spanRef\n }))));\n}\n\nconst Container$1 = styled('div', {\n display: 'grid',\n columnGap: '$colGap',\n variants: {\n withJoystick: {\n true: {\n gridTemplateColumns: '$sizes$rowHeight auto'\n },\n false: {\n gridTemplateColumns: 'auto'\n }\n }\n }\n});\nfunction Vector2dComponent() {\n const {\n label,\n displayValue,\n onUpdate,\n settings\n } = useInputContext();\n return React.createElement(Row, {\n input: true\n }, React.createElement(Label, null, label), React.createElement(Container$1, {\n withJoystick: !!settings.joystick\n }, settings.joystick && React.createElement(Joystick, {\n value: displayValue,\n settings: settings,\n onUpdate: onUpdate\n }), React.createElement(Vector, {\n value: displayValue,\n settings: settings,\n onUpdate: onUpdate\n })));\n}\n\nconst _excluded$7 = [\"joystick\"];\nconst plugin = getVectorPlugin(['x', 'y']);\n\nconst normalize$2 = _ref => {\n let {\n joystick = true\n } = _ref,\n input = _objectWithoutProperties(_ref, _excluded$7);\n\n const {\n value,\n settings\n } = plugin.normalize(input);\n return {\n value,\n settings: _objectSpread2(_objectSpread2({}, settings), {}, {\n joystick\n })\n };\n};\n\nvar vector2d = createInternalPlugin(_objectSpread2(_objectSpread2({\n component: Vector2dComponent\n}, plugin), {}, {\n normalize: normalize$2\n}));\n\nconst sanitize$1 = v => {\n if (v === undefined) return undefined;\n\n if (v instanceof File) {\n try {\n return URL.createObjectURL(v);\n } catch (e) {\n return undefined;\n }\n }\n\n if (typeof v === 'string' && v.indexOf('blob:') === 0) return v;\n throw Error(`Invalid image format [undefined | blob | File].`);\n};\nconst schema$1 = (_o, s) => typeof s === 'object' && 'image' in s;\nconst normalize$1 = ({\n image\n}) => {\n return {\n value: image\n };\n};\n\nvar props$1 = /*#__PURE__*/Object.freeze({\n __proto__: null,\n sanitize: sanitize$1,\n schema: schema$1,\n normalize: normalize$1\n});\n\nconst ImageContainer = styled('div', {\n position: 'relative',\n display: 'grid',\n gridTemplateColumns: '$sizes$rowHeight auto 20px',\n columnGap: '$colGap',\n alignItems: 'center'\n});\nconst DropZone = styled('div', {\n $flexCenter: '',\n overflow: 'hidden',\n height: '$rowHeight',\n background: '$elevation3',\n textAlign: 'center',\n color: 'inherit',\n borderRadius: '$sm',\n outline: 'none',\n userSelect: 'none',\n cursor: 'pointer',\n $inputStyle: '',\n $hover: '',\n $focusWithin: '',\n $active: '$accent1 $elevation1',\n variants: {\n isDragAccept: {\n true: {\n $inputStyle: '$accent1',\n backgroundColor: '$elevation1'\n }\n }\n }\n});\nconst ImagePreview = styled('div', {\n boxSizing: 'border-box',\n borderRadius: '$sm',\n height: '$rowHeight',\n width: '$rowHeight',\n $inputStyle: '',\n backgroundSize: 'cover',\n backgroundPosition: 'center',\n variants: {\n hasImage: {\n true: {\n cursor: 'pointer',\n $hover: '',\n $active: ''\n }\n }\n }\n});\nconst ImageLargePreview = styled('div', {\n $flexCenter: '',\n width: '$imagePreviewWidth',\n height: '$imagePreviewHeight',\n borderRadius: '$sm',\n boxShadow: '$level2',\n pointerEvents: 'none',\n $inputStyle: '',\n backgroundSize: 'cover',\n backgroundPosition: 'center'\n});\nconst Instructions = styled('div', {\n fontSize: '0.8em',\n height: '100%',\n padding: '$rowGap $md'\n});\nconst Remove = styled('div', {\n $flexCenter: '',\n top: '0',\n right: '0',\n marginRight: '$sm',\n height: '100%',\n cursor: 'pointer',\n variants: {\n disabled: {\n true: {\n color: '$elevation3',\n cursor: 'default'\n }\n }\n },\n '&::after,&::before': {\n content: '\"\"',\n position: 'absolute',\n height: 2,\n width: 10,\n borderRadius: 1,\n backgroundColor: 'currentColor'\n },\n '&::after': {\n transform: 'rotate(45deg)'\n },\n '&::before': {\n transform: 'rotate(-45deg)'\n }\n});\n\nfunction ImageComponent() {\n const {\n label,\n value,\n onUpdate,\n disabled\n } = useInputContext();\n const {\n popinRef,\n wrapperRef,\n shown,\n show,\n hide\n } = usePopin();\n const onDrop = useCallback(acceptedFiles => {\n if (acceptedFiles.length) onUpdate(acceptedFiles[0]);\n }, [onUpdate]);\n const clear = useCallback(e => {\n e.stopPropagation();\n onUpdate(undefined);\n }, [onUpdate]);\n const {\n getRootProps,\n getInputProps,\n isDragAccept\n } = useDropzone({\n maxFiles: 1,\n accept: 'image/*',\n onDrop,\n disabled\n });\n return React.createElement(Row, {\n input: true\n }, React.createElement(Label, null, label), React.createElement(ImageContainer, null, React.createElement(ImagePreview, {\n ref: popinRef,\n hasImage: !!value,\n onPointerDown: () => !!value && show(),\n onPointerUp: hide,\n style: {\n backgroundImage: value ? `url(${value})` : 'none'\n }\n }), shown && !!value && React.createElement(Portal, null, React.createElement(Overlay, {\n onPointerUp: hide,\n style: {\n cursor: 'pointer'\n }\n }), React.createElement(ImageLargePreview, {\n ref: wrapperRef,\n style: {\n backgroundImage: `url(${value})`\n }\n })), React.createElement(DropZone, getRootProps({\n isDragAccept\n }), React.createElement(\"input\", getInputProps()), React.createElement(Instructions, null, isDragAccept ? 'drop image' : 'click or drop')), React.createElement(Remove, {\n onClick: clear,\n disabled: !value\n })));\n}\n\nvar image = createInternalPlugin(_objectSpread2({\n component: ImageComponent\n}, props$1));\n\nconst number = v8n().number();\nconst schema = (o, s) => v8n().array().length(2).every.number().test(o) && v8n().schema({\n min: number,\n max: number\n}).test(s);\nconst format = v => ({\n min: v[0],\n max: v[1]\n});\nconst sanitize = (value, {\n bounds: [MIN, MAX]\n}, prevValue) => {\n const _newValue = {\n min: prevValue[0],\n max: prevValue[1]\n };\n\n const {\n min,\n max\n } = _objectSpread2(_objectSpread2({}, _newValue), value);\n\n return [clamp(Number(min), MIN, Math.max(MIN, max)), clamp(Number(max), Math.min(MAX, min), MAX)];\n};\nconst normalize = ({\n value,\n min,\n max\n}) => {\n const boundsSettings = {\n min,\n max\n };\n\n const _settings = normalizeKeyedNumberSettings(format(value), {\n min: boundsSettings,\n max: boundsSettings\n });\n\n const bounds = [min, max];\n\n const settings = _objectSpread2(_objectSpread2({}, _settings), {}, {\n bounds\n });\n\n const _value = sanitize(format(value), settings, value);\n\n return {\n value: _value,\n settings\n };\n};\n\nvar props = /*#__PURE__*/Object.freeze({\n __proto__: null,\n schema: schema,\n format: format,\n sanitize: sanitize,\n normalize: normalize\n});\n\nconst _excluded$6 = [\"value\", \"bounds\", \"onDrag\"],\n _excluded2$1 = [\"bounds\"];\nconst Container = styled('div', {\n display: 'grid',\n columnGap: '$colGap',\n gridTemplateColumns: 'auto calc($sizes$numberInputMinWidth * 2 + $space$rowGap)'\n});\n\nfunction IntervalSlider(_ref) {\n let {\n value,\n bounds: [min, max],\n onDrag\n } = _ref,\n settings = _objectWithoutProperties(_ref, _excluded$6);\n\n const ref = useRef(null);\n const minScrubberRef = useRef(null);\n const maxScrubberRef = useRef(null);\n const rangeWidth = useRef(0);\n const scrubberWidth = useTh('sizes', 'scrubberWidth');\n const bind = useDrag(({\n event,\n first,\n xy: [x],\n movement: [mx],\n memo: _memo = {}\n }) => {\n if (first) {\n const {\n width,\n left\n } = ref.current.getBoundingClientRect();\n rangeWidth.current = width - parseFloat(scrubberWidth);\n const targetIsScrub = (event === null || event === void 0 ? void 0 : event.target) === minScrubberRef.current || (event === null || event === void 0 ? void 0 : event.target) === maxScrubberRef.current;\n _memo.pos = invertedRange((x - left) / width, min, max);\n const delta = Math.abs(_memo.pos - value.min) - Math.abs(_memo.pos - value.max);\n _memo.key = delta < 0 || delta === 0 && _memo.pos <= value.min ? 'min' : 'max';\n if (targetIsScrub) _memo.pos = value[_memo.key];\n }\n\n const newValue = _memo.pos + invertedRange(mx / rangeWidth.current, 0, max - min);\n onDrag({\n [_memo.key]: sanitizeStep(newValue, settings[_memo.key])\n });\n return _memo;\n });\n const minStyle = `calc(${range(value.min, min, max)} * (100% - ${scrubberWidth} - 8px) + 4px)`;\n const maxStyle = `calc(${1 - range(value.max, min, max)} * (100% - ${scrubberWidth} - 8px) + 4px)`;\n return React.createElement(RangeWrapper, _extends({\n ref: ref\n }, bind()), React.createElement(Range, null, React.createElement(Indicator, {\n style: {\n left: minStyle,\n right: maxStyle\n }\n })), React.createElement(Scrubber, {\n position: \"left\",\n ref: minScrubberRef,\n style: {\n left: minStyle\n }\n }), React.createElement(Scrubber, {\n position: \"right\",\n ref: maxScrubberRef,\n style: {\n right: maxStyle\n }\n }));\n}\n\nfunction IntervalComponent() {\n const {\n label,\n displayValue,\n onUpdate,\n settings\n } = useInputContext();\n\n const _settings = _objectWithoutProperties(settings, _excluded2$1);\n\n return React.createElement(React.Fragment, null, React.createElement(Row, {\n input: true\n }, React.createElement(Label, null, label), React.createElement(Container, null, React.createElement(IntervalSlider, _extends({\n value: displayValue\n }, settings, {\n onDrag: onUpdate\n })), React.createElement(Vector, {\n value: displayValue,\n settings: _settings,\n onUpdate: onUpdate,\n innerLabelTrim: 0\n }))));\n}\n\nvar interval = createInternalPlugin(_objectSpread2({\n component: IntervalComponent\n}, props));\n\nconst createEventEmitter = () => {\n const listenerMapping = new Map();\n return {\n on: (topic, listener) => {\n let listeners = listenerMapping.get(topic);\n\n if (listeners === undefined) {\n listeners = new Set();\n listenerMapping.set(topic, listeners);\n }\n\n listeners.add(listener);\n },\n off: (topic, listener) => {\n const listeners = listenerMapping.get(topic);\n\n if (listeners === undefined) {\n return;\n }\n\n listeners.delete(listener);\n\n if (listeners.size === 0) {\n listenerMapping.delete(topic);\n }\n },\n emit: (topic, ...args) => {\n const listeners = listenerMapping.get(topic);\n\n if (listeners === undefined) {\n return;\n }\n\n for (const listener of listeners) {\n listener(...args);\n }\n }\n };\n};\n\nconst _excluded$5 = [\"type\", \"value\"],\n _excluded2 = [\"onChange\", \"transient\", \"onEditStart\", \"onEditEnd\"];\nconst Store = function Store() {\n const store = create(subscribeWithSelector(() => ({\n data: {}\n })));\n const eventEmitter = createEventEmitter();\n this.storeId = getUid();\n this.useStore = store;\n const folders = {};\n const orderedPaths = new Set();\n\n this.getVisiblePaths = () => {\n const data = this.getData();\n const paths = Object.keys(data);\n const hiddenFolders = [];\n Object.entries(folders).forEach(([path, settings]) => {\n if (settings.render && paths.some(p => p.indexOf(path) === 0) && !settings.render(this.get)) hiddenFolders.push(path + '.');\n });\n const visiblePaths = [];\n orderedPaths.forEach(path => {\n if (path in data && data[path].__refCount > 0 && hiddenFolders.every(p => path.indexOf(p) === -1) && (!data[path].render || data[path].render(this.get))) visiblePaths.push(path);\n });\n return visiblePaths;\n };\n\n this.setOrderedPaths = newPaths => {\n newPaths.forEach(p => orderedPaths.add(p));\n };\n\n this.orderPaths = paths => {\n this.setOrderedPaths(paths);\n return paths;\n };\n\n this.disposePaths = paths => {\n store.setState(s => {\n const data = s.data;\n paths.forEach(path => {\n if (path in data) {\n const input = data[path];\n input.__refCount--;\n\n if (input.__refCount === 0 && input.type in SpecialInputs) {\n delete data[path];\n }\n }\n });\n return {\n data\n };\n });\n };\n\n this.dispose = () => {\n store.setState(() => {\n return {\n data: {}\n };\n });\n };\n\n this.getFolderSettings = path => {\n return folders[path] || {};\n };\n\n this.getData = () => {\n return store.getState().data;\n };\n\n this.addData = (newData, override) => {\n store.setState(s => {\n const data = s.data;\n Object.entries(newData).forEach(([path, newInputData]) => {\n let input = data[path];\n\n if (!!input) {\n const {\n type,\n value\n } = newInputData,\n rest = _objectWithoutProperties(newInputData, _excluded$5);\n\n if (type !== input.type) {\n warn(LevaErrors.INPUT_TYPE_OVERRIDE, type);\n } else {\n if (input.__refCount === 0 || override) {\n Object.assign(input, rest);\n }\n\n input.__refCount++;\n }\n } else {\n data[path] = _objectSpread2(_objectSpread2({}, newInputData), {}, {\n __refCount: 1\n });\n }\n });\n return {\n data\n };\n });\n };\n\n this.setValueAtPath = (path, value, fromPanel) => {\n store.setState(s => {\n const data = s.data;\n updateInput(data[path], value, path, this, fromPanel);\n return {\n data\n };\n });\n };\n\n this.setSettingsAtPath = (path, settings) => {\n store.setState(s => {\n const data = s.data;\n data[path].settings = _objectSpread2(_objectSpread2({}, data[path].settings), settings);\n return {\n data\n };\n });\n };\n\n this.disableInputAtPath = (path, flag) => {\n store.setState(s => {\n const data = s.data;\n data[path].disabled = flag;\n return {\n data\n };\n });\n };\n\n this.set = (values, fromPanel) => {\n store.setState(s => {\n const data = s.data;\n Object.entries(values).forEach(([path, value]) => {\n try {\n updateInput(data[path], value, undefined, undefined, fromPanel);\n } catch (_unused) {}\n });\n return {\n data\n };\n });\n };\n\n this.getInput = path => {\n try {\n return this.getData()[path];\n } catch (e) {\n warn(LevaErrors.PATH_DOESNT_EXIST, path);\n }\n };\n\n this.get = path => {\n var _this$getInput;\n\n return (_this$getInput = this.getInput(path)) === null || _this$getInput === void 0 ? void 0 : _this$getInput.value;\n };\n\n this.emitOnEditStart = path => {\n eventEmitter.emit(`onEditStart:${path}`, this.get(path), path, _objectSpread2(_objectSpread2({}, this.getInput(path)), {}, {\n get: this.get\n }));\n };\n\n this.emitOnEditEnd = path => {\n eventEmitter.emit(`onEditEnd:${path}`, this.get(path), path, _objectSpread2(_objectSpread2({}, this.getInput(path)), {}, {\n get: this.get\n }));\n };\n\n this.subscribeToEditStart = (path, listener) => {\n const _path = `onEditStart:${path}`;\n eventEmitter.on(_path, listener);\n return () => eventEmitter.off(_path, listener);\n };\n\n this.subscribeToEditEnd = (path, listener) => {\n const _path = `onEditEnd:${path}`;\n eventEmitter.on(_path, listener);\n return () => eventEmitter.off(_path, listener);\n };\n\n const _getDataFromSchema = (schema, rootPath, mappedPaths) => {\n const data = {};\n Object.entries(schema).forEach(([key, rawInput]) => {\n if (key === '') return warn(LevaErrors.EMPTY_KEY);\n let newPath = join(rootPath, key);\n\n if (rawInput.type === SpecialInputs.FOLDER) {\n const newData = _getDataFromSchema(rawInput.schema, newPath, mappedPaths);\n\n Object.assign(data, newData);\n if (!(newPath in folders)) folders[newPath] = rawInput.settings;\n } else if (key in mappedPaths) {\n warn(LevaErrors.DUPLICATE_KEYS, key, newPath, mappedPaths[key].path);\n } else {\n const normalizedInput = normalizeInput(rawInput, key, newPath, data);\n\n if (normalizedInput) {\n const {\n type,\n options,\n input\n } = normalizedInput;\n\n const {\n onChange,\n transient,\n onEditStart,\n onEditEnd\n } = options,\n _options = _objectWithoutProperties(options, _excluded2);\n\n data[newPath] = _objectSpread2(_objectSpread2(_objectSpread2({\n type\n }, _options), input), {}, {\n fromPanel: true\n });\n mappedPaths[key] = {\n path: newPath,\n onChange,\n transient,\n onEditStart,\n onEditEnd\n };\n } else {\n warn(LevaErrors.UNKNOWN_INPUT, newPath, rawInput);\n }\n }\n });\n return data;\n };\n\n this.getDataFromSchema = schema => {\n const mappedPaths = {};\n\n const data = _getDataFromSchema(schema, '', mappedPaths);\n\n return [data, mappedPaths];\n };\n};\nconst levaStore = new Store();\nfunction useCreateStore() {\n return useMemo(() => new Store(), []);\n}\n\nif (process.env.NODE_ENV === 'development' && typeof window !== 'undefined') {\n window.__STORE = levaStore;\n}\n\nconst defaultSettings$2 = {\n collapsed: false\n};\nfunction folder(schema, settings) {\n return {\n type: SpecialInputs.FOLDER,\n schema,\n settings: _objectSpread2(_objectSpread2({}, defaultSettings$2), settings)\n };\n}\n\nconst defaultSettings$1 = {\n disabled: false\n};\nfunction button(onClick, settings) {\n return {\n type: SpecialInputs.BUTTON,\n onClick,\n settings: _objectSpread2(_objectSpread2({}, defaultSettings$1), settings)\n };\n}\n\nfunction buttonGroup(opts) {\n return {\n type: SpecialInputs.BUTTON_GROUP,\n opts\n };\n}\n\nconst defaultSettings = {\n graph: false,\n interval: 100\n};\nfunction monitor(objectOrFn, settings) {\n return {\n type: SpecialInputs.MONITOR,\n objectOrFn,\n settings: _objectSpread2(_objectSpread2({}, defaultSettings), settings)\n };\n}\n\nconst isInput = v => '__levaInput' in v;\nconst buildTree = (paths, filter) => {\n const tree = {};\n\n const _filter = filter ? filter.toLowerCase() : null;\n\n paths.forEach(path => {\n const [valueKey, folderPath] = getKeyPath(path);\n\n if (!_filter || valueKey.toLowerCase().indexOf(_filter) > -1) {\n merge(tree, folderPath, {\n [valueKey]: {\n __levaInput: true,\n path\n }\n });\n }\n });\n return tree;\n};\n\nfunction FolderTitle({\n toggle,\n toggled,\n name\n}) {\n return React.createElement(StyledTitle, {\n onClick: () => toggle()\n }, React.createElement(Chevron, {\n toggled: toggled\n }), React.createElement(\"div\", null, name));\n}\n\nconst _excluded$4 = [\"type\", \"label\", \"path\", \"valueKey\", \"value\", \"settings\", \"setValue\", \"disabled\"];\nfunction ControlInput(_ref) {\n let {\n type,\n label,\n path,\n valueKey,\n value,\n settings,\n setValue,\n disabled\n } = _ref,\n rest = _objectWithoutProperties(_ref, _excluded$4);\n\n const {\n displayValue,\n onChange,\n onUpdate\n } = useInputSetters({\n type,\n value,\n settings,\n setValue\n });\n const Input = Plugins[type].component;\n\n if (!Input) {\n warn(LevaErrors.NO_COMPONENT_FOR_TYPE, type, path);\n return null;\n }\n\n return React.createElement(InputContext.Provider, {\n value: _objectSpread2({\n key: valueKey,\n path,\n id: '' + path,\n label,\n displayValue,\n value,\n onChange,\n onUpdate,\n settings,\n setValue,\n disabled\n }, rest)\n }, React.createElement(StyledInputWrapper, {\n disabled: disabled\n }, React.createElement(Input, null)));\n}\n\nconst StyledButton = styled('button', {\n display: 'block',\n $reset: '',\n fontWeight: '$button',\n height: '$rowHeight',\n borderStyle: 'none',\n borderRadius: '$sm',\n backgroundColor: '$elevation1',\n color: '$highlight1',\n '&:not(:disabled)': {\n color: '$highlight3',\n backgroundColor: '$accent2',\n cursor: 'pointer',\n $hover: '$accent3',\n $active: '$accent3 $accent1',\n $focus: ''\n }\n});\n\nfunction Button({\n onClick,\n settings,\n label\n}) {\n const store = useStoreContext();\n return React.createElement(Row, null, React.createElement(StyledButton, {\n disabled: settings.disabled,\n onClick: () => onClick(store.get)\n }, label));\n}\n\nconst StyledButtonGroup = styled('div', {\n $flex: '',\n justifyContent: 'flex-end',\n gap: '$colGap'\n});\n\nconst StyledButtonGroupButton = styled('button', {\n $reset: '',\n cursor: 'pointer',\n borderRadius: '$xs',\n '&:hover': {\n backgroundColor: '$elevation3'\n }\n});\n\nconst getOpts = ({\n label: _label,\n opts: _opts\n}) => {\n let label = typeof _label === 'string' ? _label.trim() === '' ? null : _label : _label;\n let opts = _opts;\n\n if (typeof _opts.opts === 'object') {\n if (opts.label !== undefined) {\n label = _opts.label;\n }\n\n opts = _opts.opts;\n }\n\n return {\n label,\n opts: opts\n };\n};\n\nfunction ButtonGroup(props) {\n const {\n label,\n opts\n } = getOpts(props);\n const store = useStoreContext();\n return React.createElement(Row, {\n input: !!label\n }, label && React.createElement(Label, null, label), React.createElement(StyledButtonGroup, null, Object.entries(opts).map(([label, onClick]) => React.createElement(StyledButtonGroupButton, {\n key: label,\n onClick: () => onClick(store.get)\n }, label))));\n}\n\nconst Canvas = styled('canvas', {\n height: '$monitorHeight',\n width: '100%',\n display: 'block',\n borderRadius: '$sm'\n});\n\nconst POINTS = 100;\n\nfunction push(arr, val) {\n arr.push(val);\n if (arr.length > POINTS) arr.shift();\n}\n\nconst MonitorCanvas = forwardRef(function ({\n initialValue\n}, ref) {\n const accentColor = useTh('colors', 'highlight3');\n const backgroundColor = useTh('colors', 'elevation2');\n const fillColor = useTh('colors', 'highlight1');\n const [gradientTop, gradientBottom] = useMemo(() => {\n return [colord(fillColor).alpha(0.4).toRgbString(), colord(fillColor).alpha(0.1).toRgbString()];\n }, [fillColor]);\n const points = useRef([initialValue]);\n const min = useRef(initialValue);\n const max = useRef(initialValue);\n const raf = useRef();\n const drawPlot = useCallback((_canvas, _ctx) => {\n if (!_canvas) return;\n const {\n width,\n height\n } = _canvas;\n const path = new Path2D();\n const interval = width / POINTS;\n const verticalPadding = height * 0.05;\n\n for (let i = 0; i < points.current.length; i++) {\n const p = range(points.current[i], min.current, max.current);\n const x = interval * i;\n const y = height - p * (height - verticalPadding * 2) - verticalPadding;\n path.lineTo(x, y);\n }\n\n _ctx.clearRect(0, 0, width, height);\n\n const gradientPath = new Path2D(path);\n gradientPath.lineTo(interval * (points.current.length + 1), height);\n gradientPath.lineTo(0, height);\n gradientPath.lineTo(0, 0);\n\n const gradient = _ctx.createLinearGradient(0, 0, 0, height);\n\n gradient.addColorStop(0.0, gradientTop);\n gradient.addColorStop(1.0, gradientBottom);\n _ctx.fillStyle = gradient;\n\n _ctx.fill(gradientPath);\n\n _ctx.strokeStyle = backgroundColor;\n _ctx.lineJoin = 'round';\n _ctx.lineWidth = 14;\n\n _ctx.stroke(path);\n\n _ctx.strokeStyle = accentColor;\n _ctx.lineWidth = 2;\n\n _ctx.stroke(path);\n }, [accentColor, backgroundColor, gradientTop, gradientBottom]);\n const [canvas, ctx] = useCanvas2d(drawPlot);\n useImperativeHandle(ref, () => ({\n frame: val => {\n if (min.current === undefined || val < min.current) min.current = val;\n if (max.current === undefined || val > max.current) max.current = val;\n push(points.current, val);\n raf.current = requestAnimationFrame(() => drawPlot(canvas.current, ctx.current));\n }\n }), [canvas, ctx, drawPlot]);\n useEffect(() => () => cancelAnimationFrame(raf.current), []);\n return React.createElement(Canvas, {\n ref: canvas\n });\n});\n\nconst parse = val => Number.isFinite(val) ? val.toPrecision(2) : val.toString();\n\nconst MonitorLog = forwardRef(function ({\n initialValue\n}, ref) {\n const [val, set] = useState(parse(initialValue));\n useImperativeHandle(ref, () => ({\n frame: v => set(parse(v))\n }), []);\n return React.createElement(\"div\", null, val);\n});\n\nfunction getValue(o) {\n return typeof o === 'function' ? o() : o.current;\n}\n\nfunction Monitor({\n label,\n objectOrFn,\n settings\n}) {\n const ref = useRef();\n const initialValue = useRef(getValue(objectOrFn));\n useEffect(() => {\n const timeout = window.setInterval(() => {\n var _ref$current;\n\n if (document.hidden) return;\n (_ref$current = ref.current) === null || _ref$current === void 0 ? void 0 : _ref$current.frame(getValue(objectOrFn));\n }, settings.interval);\n return () => window.clearInterval(timeout);\n }, [objectOrFn, settings.interval]);\n return React.createElement(Row, {\n input: true\n }, React.createElement(Label, {\n align: \"top\"\n }, label), settings.graph ? React.createElement(MonitorCanvas, {\n ref: ref,\n initialValue: initialValue.current\n }) : React.createElement(MonitorLog, {\n ref: ref,\n initialValue: initialValue.current\n }));\n}\n\nconst _excluded$3 = [\"type\", \"label\", \"key\"];\nconst specialComponents = {\n [SpecialInputs.BUTTON]: Button,\n [SpecialInputs.BUTTON_GROUP]: ButtonGroup,\n [SpecialInputs.MONITOR]: Monitor\n};\nconst Control = React.memo(({\n path\n}) => {\n const [input, {\n set,\n setSettings,\n disable,\n storeId,\n emitOnEditStart,\n emitOnEditEnd\n }] = useInput(path);\n if (!input) return null;\n\n const {\n type,\n label,\n key\n } = input,\n inputProps = _objectWithoutProperties(input, _excluded$3);\n\n if (type in SpecialInputs) {\n const SpecialInputForType = specialComponents[type];\n return React.createElement(SpecialInputForType, _extends({\n label: label,\n path: path\n }, inputProps));\n }\n\n if (!(type in Plugins)) {\n log(LevaErrors.UNSUPPORTED_INPUT, type, path);\n return null;\n }\n\n return React.createElement(ControlInput, _extends({\n key: storeId + path,\n type: type,\n label: label,\n storeId: storeId,\n path: path,\n valueKey: key,\n setValue: set,\n setSettings: setSettings,\n disable: disable,\n emitOnEditStart: emitOnEditStart,\n emitOnEditEnd: emitOnEditEnd\n }, inputProps));\n});\n\nconst Folder = ({\n name,\n path,\n tree\n}) => {\n const store = useStoreContext();\n const newPath = join(path, name);\n const {\n collapsed,\n color\n } = store.getFolderSettings(newPath);\n const [toggled, setToggle] = useState(!collapsed);\n const folderRef = useRef(null);\n const widgetColor = useTh('colors', 'folderWidgetColor');\n const textColor = useTh('colors', 'folderTextColor');\n useLayoutEffect(() => {\n folderRef.current.style.setProperty('--leva-colors-folderWidgetColor', color || widgetColor);\n folderRef.current.style.setProperty('--leva-colors-folderTextColor', color || textColor);\n }, [color, widgetColor, textColor]);\n return React.createElement(StyledFolder, {\n ref: folderRef\n }, React.createElement(FolderTitle, {\n name: name,\n toggled: toggled,\n toggle: () => setToggle(t => !t)\n }), React.createElement(TreeWrapper, {\n parent: newPath,\n tree: tree,\n toggled: toggled\n }));\n};\n\nconst TreeWrapper = React.memo(({\n isRoot: _isRoot = false,\n fill: _fill = false,\n flat: _flat = false,\n parent,\n tree,\n toggled\n}) => {\n const {\n wrapperRef,\n contentRef\n } = useToggle(toggled);\n return React.createElement(StyledWrapper, {\n ref: wrapperRef,\n isRoot: _isRoot,\n fill: _fill,\n flat: _flat\n }, React.createElement(StyledContent, {\n ref: contentRef,\n isRoot: _isRoot,\n toggled: toggled\n }, Object.entries(tree).map(([key, value]) => isInput(value) ? React.createElement(Control, {\n key: value.path,\n valueKey: value.valueKey,\n path: value.path\n }) : React.createElement(Folder, {\n key: key,\n name: key,\n path: parent,\n tree: value\n }))));\n});\n\nconst StyledRoot = styled('div', {\n position: 'relative',\n fontFamily: '$mono',\n fontSize: '$root',\n color: '$rootText',\n backgroundColor: '$elevation1',\n variants: {\n fill: {\n false: {\n position: 'fixed',\n top: '10px',\n right: '10px',\n zIndex: 1000,\n width: '$rootWidth'\n },\n true: {\n position: 'relative',\n width: '100%'\n }\n },\n flat: {\n false: {\n borderRadius: '$lg',\n boxShadow: '$level1'\n }\n },\n oneLineLabels: {\n true: {\n [`${StyledInputRow}`]: {\n gridTemplateColumns: 'auto',\n gridAutoColumns: 'minmax(max-content, 1fr)',\n gridAutoRows: 'minmax($sizes$rowHeight), auto)',\n rowGap: 0,\n columnGap: 0,\n marginTop: '$rowGap'\n }\n }\n },\n hideTitleBar: {\n true: {\n $$titleBarHeight: '0px'\n },\n false: {\n $$titleBarHeight: '$sizes$titleBarHeight'\n }\n }\n },\n '&,*,*:after,*:before': {\n boxSizing: 'border-box'\n },\n '*::selection': {\n backgroundColor: '$accent2'\n }\n});\n\nconst iconWidth = 40;\nconst Icon = styled('i', {\n $flexCenter: '',\n width: iconWidth,\n userSelect: 'none',\n cursor: 'pointer',\n '> svg': {\n fill: '$highlight1',\n transition: 'transform 350ms ease, fill 250ms ease'\n },\n '&:hover > svg': {\n fill: '$highlight3'\n },\n variants: {\n active: {\n true: {\n '> svg': {\n fill: '$highlight2'\n }\n }\n }\n }\n});\nconst StyledTitleWithFilter = styled('div', {\n display: 'flex',\n alignItems: 'stretch',\n justifyContent: 'space-between',\n height: '$titleBarHeight',\n variants: {\n mode: {\n drag: {\n cursor: 'grab'\n }\n }\n }\n});\nconst FilterWrapper = styled('div', {\n $flex: '',\n position: 'relative',\n width: '100%',\n overflow: 'hidden',\n transition: 'height 250ms ease',\n color: '$highlight3',\n paddingLeft: '$md',\n [`> ${Icon}`]: {\n height: 30\n },\n variants: {\n toggled: {\n true: {\n height: 30\n },\n false: {\n height: 0\n }\n }\n }\n});\nconst StyledFilterInput = styled('input', {\n $reset: '',\n flex: 1,\n position: 'relative',\n height: 30,\n width: '100%',\n backgroundColor: 'transparent',\n fontSize: '10px',\n borderRadius: '$root',\n '&:focus': {},\n '&::placeholder': {\n color: '$highlight2'\n }\n});\nconst TitleContainer = styled('div', {\n touchAction: 'none',\n $flexCenter: '',\n flex: 1,\n '> svg': {\n fill: '$highlight1'\n },\n color: '$highlight1',\n variants: {\n drag: {\n true: {\n $draggable: '',\n '> svg': {\n transition: 'fill 250ms ease'\n },\n '&:hover': {\n color: '$highlight3'\n },\n '&:hover > svg': {\n fill: '$highlight3'\n }\n }\n },\n filterEnabled: {\n false: {\n paddingRight: iconWidth\n }\n }\n }\n});\n\nconst FilterInput = React.forwardRef(({\n setFilter,\n toggle\n}, ref) => {\n const [value, set] = useState('');\n const debouncedOnChange = useMemo(() => debounce(setFilter, 250), [setFilter]);\n\n const clear = () => {\n setFilter('');\n set('');\n };\n\n const _onChange = e => {\n const v = e.currentTarget.value;\n toggle(true);\n set(v);\n };\n\n useEffect(() => {\n debouncedOnChange(value);\n }, [value, debouncedOnChange]);\n return React.createElement(React.Fragment, null, React.createElement(StyledFilterInput, {\n ref: ref,\n value: value,\n placeholder: \"[Open filter with CMD+SHIFT+L]\",\n onPointerDown: e => e.stopPropagation(),\n onChange: _onChange\n }), React.createElement(Icon, {\n onClick: () => clear(),\n style: {\n visibility: value ? 'visible' : 'hidden'\n }\n }, React.createElement(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n height: \"14\",\n width: \"14\",\n viewBox: \"0 0 20 20\",\n fill: \"currentColor\"\n }, React.createElement(\"path\", {\n fillRule: \"evenodd\",\n d: \"M10 18a8 8 0 100-16 8 8 0 000 16zM8.707 7.293a1 1 0 00-1.414 1.414L8.586 10l-1.293 1.293a1 1 0 101.414 1.414L10 11.414l1.293 1.293a1 1 0 001.414-1.414L11.414 10l1.293-1.293a1 1 0 00-1.414-1.414L10 8.586 8.707 7.293z\",\n clipRule: \"evenodd\"\n }))));\n});\nfunction TitleWithFilter({\n setFilter,\n onDrag,\n toggle,\n toggled,\n title,\n drag,\n filterEnabled\n}) {\n const [filterShown, setShowFilter] = useState(false);\n const inputRef = useRef(null);\n useEffect(() => {\n var _inputRef$current, _inputRef$current2;\n\n if (filterShown) (_inputRef$current = inputRef.current) === null || _inputRef$current === void 0 ? void 0 : _inputRef$current.focus();else (_inputRef$current2 = inputRef.current) === null || _inputRef$current2 === void 0 ? void 0 : _inputRef$current2.blur();\n }, [filterShown]);\n const bind = useDrag(({\n offset: [x, y]\n }) => onDrag({\n x,\n y\n }), {\n filterTaps: true\n });\n useEffect(() => {\n const handleShortcut = event => {\n if (event.key === 'L' && event.shiftKey && event.metaKey) {\n setShowFilter(f => !f);\n }\n };\n\n window.addEventListener('keydown', handleShortcut);\n return () => window.removeEventListener('keydown', handleShortcut);\n }, []);\n return React.createElement(React.Fragment, null, React.createElement(StyledTitleWithFilter, {\n mode: drag ? 'drag' : undefined\n }, React.createElement(Icon, {\n active: !toggled,\n onClick: () => toggle()\n }, React.createElement(Chevron, {\n toggled: toggled,\n width: 12,\n height: 8\n })), React.createElement(TitleContainer, _extends({}, drag ? bind() : {}, {\n drag: drag,\n filterEnabled: filterEnabled\n }), title === undefined && drag ? React.createElement(\"svg\", {\n width: \"20\",\n height: \"10\",\n viewBox: \"0 0 28 14\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, React.createElement(\"circle\", {\n cx: \"2\",\n cy: \"2\",\n r: \"2\"\n }), React.createElement(\"circle\", {\n cx: \"14\",\n cy: \"2\",\n r: \"2\"\n }), React.createElement(\"circle\", {\n cx: \"26\",\n cy: \"2\",\n r: \"2\"\n }), React.createElement(\"circle\", {\n cx: \"2\",\n cy: \"12\",\n r: \"2\"\n }), React.createElement(\"circle\", {\n cx: \"14\",\n cy: \"12\",\n r: \"2\"\n }), React.createElement(\"circle\", {\n cx: \"26\",\n cy: \"12\",\n r: \"2\"\n })) : title), filterEnabled && React.createElement(Icon, {\n active: filterShown,\n onClick: () => setShowFilter(f => !f)\n }, React.createElement(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n height: \"20\",\n viewBox: \"0 0 20 20\"\n }, React.createElement(\"path\", {\n d: \"M9 9a2 2 0 114 0 2 2 0 01-4 0z\"\n }), React.createElement(\"path\", {\n fillRule: \"evenodd\",\n d: \"M10 18a8 8 0 100-16 8 8 0 000 16zm1-13a4 4 0 00-3.446 6.032l-2.261 2.26a1 1 0 101.414 1.415l2.261-2.261A4 4 0 1011 5z\",\n clipRule: \"evenodd\"\n })))), React.createElement(FilterWrapper, {\n toggled: filterShown\n }, React.createElement(FilterInput, {\n ref: inputRef,\n setFilter: setFilter,\n toggle: toggle\n })));\n}\n\nconst _excluded$2 = [\"store\", \"hidden\", \"theme\", \"collapsed\"];\nfunction LevaRoot(_ref) {\n let {\n store,\n hidden = false,\n theme,\n collapsed = false\n } = _ref,\n props = _objectWithoutProperties(_ref, _excluded$2);\n\n const themeContext = useDeepMemo(() => mergeTheme(theme), [theme]);\n const [toggled, setToggle] = useState(!collapsed);\n const computedToggled = typeof collapsed === 'object' ? !collapsed.collapsed : toggled;\n const computedSetToggle = useMemo(() => {\n if (typeof collapsed === 'object') {\n return value => {\n if (typeof value === 'function') {\n collapsed.onChange(!value(!collapsed.collapsed));\n } else {\n collapsed.onChange(!value);\n }\n };\n }\n\n return setToggle;\n }, [collapsed]);\n if (!store || hidden) return null;\n return React.createElement(ThemeContext.Provider, {\n value: themeContext\n }, React.createElement(LevaCore, _extends({\n store: store\n }, props, {\n toggled: computedToggled,\n setToggle: computedSetToggle,\n rootClass: themeContext.className\n })));\n}\nconst LevaCore = React.memo(({\n store,\n rootClass,\n fill: _fill = false,\n flat: _flat = false,\n neverHide: _neverHide = false,\n oneLineLabels: _oneLineLabels = false,\n titleBar: _titleBar = {\n title: undefined,\n drag: true,\n filter: true\n },\n hideCopyButton: _hideCopyButton = false,\n toggled,\n setToggle\n}) => {\n var _titleBar$drag, _titleBar$filter;\n\n const paths = useVisiblePaths(store);\n const [filter, setFilter] = useState('');\n const tree = useMemo(() => buildTree(paths, filter), [paths, filter]);\n const [rootRef, set] = useTransform();\n const shouldShow = _neverHide || paths.length > 0;\n const title = typeof _titleBar === 'object' ? _titleBar.title || undefined : undefined;\n const drag = typeof _titleBar === 'object' ? (_titleBar$drag = _titleBar.drag) !== null && _titleBar$drag !== void 0 ? _titleBar$drag : true : true;\n const filterEnabled = typeof _titleBar === 'object' ? (_titleBar$filter = _titleBar.filter) !== null && _titleBar$filter !== void 0 ? _titleBar$filter : true : true;\n globalStyles();\n return React.createElement(PanelSettingsContext.Provider, {\n value: {\n hideCopyButton: _hideCopyButton\n }\n }, React.createElement(StyledRoot, {\n ref: rootRef,\n className: rootClass,\n fill: _fill,\n flat: _flat,\n oneLineLabels: _oneLineLabels,\n hideTitleBar: !_titleBar,\n style: {\n display: shouldShow ? 'block' : 'none'\n }\n }, _titleBar && React.createElement(TitleWithFilter, {\n onDrag: set,\n setFilter: setFilter,\n toggle: flag => setToggle(t => flag !== null && flag !== void 0 ? flag : !t),\n toggled: toggled,\n title: title,\n drag: drag,\n filterEnabled: filterEnabled\n }), shouldShow && React.createElement(StoreContext.Provider, {\n value: store\n }, React.createElement(TreeWrapper, {\n isRoot: true,\n fill: _fill,\n flat: _flat,\n tree: tree,\n toggled: toggled\n }))));\n});\n\nconst _excluded$1 = [\"isRoot\"];\nlet rootInitialized = false;\nlet rootEl = null;\nfunction Leva(_ref) {\n let {\n isRoot = false\n } = _ref,\n props = _objectWithoutProperties(_ref, _excluded$1);\n\n useEffect(() => {\n rootInitialized = true;\n\n if (!isRoot && rootEl) {\n rootEl.remove();\n rootEl = null;\n }\n\n return () => {\n if (!isRoot) rootInitialized = false;\n };\n }, [isRoot]);\n return React.createElement(LevaRoot, _extends({\n store: levaStore\n }, props));\n}\nfunction useRenderRoot(isGlobalPanel) {\n useEffect(() => {\n if (isGlobalPanel && !rootInitialized) {\n if (!rootEl) {\n rootEl = document.getElementById('leva__root') || Object.assign(document.createElement('div'), {\n id: 'leva__root'\n });\n\n if (document.body) {\n document.body.appendChild(rootEl);\n ReactDOM.render(React.createElement(Leva, {\n isRoot: true\n }), rootEl);\n }\n }\n\n rootInitialized = true;\n }\n }, [isGlobalPanel]);\n}\n\nconst _excluded = [\"store\"];\nfunction LevaPanel(_ref) {\n let {\n store\n } = _ref,\n props = _objectWithoutProperties(_ref, _excluded);\n\n const parentStore = useStoreContext();\n\n const _store = store === undefined ? parentStore : store;\n\n return React.createElement(LevaRoot, _extends({\n store: _store\n }, props));\n}\n\nfunction parseArgs(schemaOrFolderName, settingsOrDepsOrSchema, depsOrSettingsOrFolderSettings, depsOrSettings, depsOrUndefined) {\n let schema;\n let folderName = undefined;\n let folderSettings;\n let hookSettings;\n let deps;\n\n if (typeof schemaOrFolderName === 'string') {\n folderName = schemaOrFolderName;\n schema = settingsOrDepsOrSchema;\n\n if (Array.isArray(depsOrSettingsOrFolderSettings)) {\n deps = depsOrSettingsOrFolderSettings;\n } else {\n if (depsOrSettingsOrFolderSettings) {\n if ('store' in depsOrSettingsOrFolderSettings) {\n hookSettings = depsOrSettingsOrFolderSettings;\n deps = depsOrSettings;\n } else {\n folderSettings = depsOrSettingsOrFolderSettings;\n\n if (Array.isArray(depsOrSettings)) {\n deps = depsOrSettings;\n } else {\n hookSettings = depsOrSettings;\n deps = depsOrUndefined;\n }\n }\n }\n }\n } else {\n schema = schemaOrFolderName;\n\n if (Array.isArray(settingsOrDepsOrSchema)) {\n deps = settingsOrDepsOrSchema;\n } else {\n hookSettings = settingsOrDepsOrSchema;\n deps = depsOrSettingsOrFolderSettings;\n }\n }\n\n return {\n schema,\n folderName,\n folderSettings,\n hookSettings,\n deps: deps || []\n };\n}\n\nfunction useControls(schemaOrFolderName, settingsOrDepsOrSchema, depsOrSettingsOrFolderSettings, depsOrSettings, depsOrUndefined) {\n const {\n folderName,\n schema,\n folderSettings,\n hookSettings,\n deps\n } = parseArgs(schemaOrFolderName, settingsOrDepsOrSchema, depsOrSettingsOrFolderSettings, depsOrSettings, depsOrUndefined);\n const schemaIsFunction = typeof schema === 'function';\n const depsChanged = useRef(false);\n const firstRender = useRef(true);\n\n const _schema = useDeepMemo(() => {\n depsChanged.current = true;\n const s = typeof schema === 'function' ? schema() : schema;\n return folderName ? {\n [folderName]: folder(s, folderSettings)\n } : s;\n }, deps);\n\n const isGlobalPanel = !(hookSettings !== null && hookSettings !== void 0 && hookSettings.store);\n useRenderRoot(isGlobalPanel);\n const [store] = useState(() => (hookSettings === null || hookSettings === void 0 ? void 0 : hookSettings.store) || levaStore);\n const [initialData, mappedPaths] = useMemo(() => store.getDataFromSchema(_schema), [store, _schema]);\n const [allPaths, renderPaths, onChangePaths, onEditStartPaths, onEditEndPaths] = useMemo(() => {\n const allPaths = [];\n const renderPaths = [];\n const onChangePaths = {};\n const onEditStartPaths = {};\n const onEditEndPaths = {};\n Object.values(mappedPaths).forEach(({\n path,\n onChange,\n onEditStart,\n onEditEnd,\n transient\n }) => {\n allPaths.push(path);\n\n if (!!onChange) {\n onChangePaths[path] = onChange;\n\n if (!transient) {\n renderPaths.push(path);\n }\n } else {\n renderPaths.push(path);\n }\n\n if (onEditStart) {\n onEditStartPaths[path] = onEditStart;\n }\n\n if (onEditEnd) {\n onEditEndPaths[path] = onEditEnd;\n }\n });\n return [allPaths, renderPaths, onChangePaths, onEditStartPaths, onEditEndPaths];\n }, [mappedPaths]);\n const paths = useMemo(() => store.orderPaths(allPaths), [allPaths, store]);\n const values = useValuesForPath(store, renderPaths, initialData);\n const set = useCallback(values => {\n const _values = Object.entries(values).reduce((acc, [p, v]) => Object.assign(acc, {\n [mappedPaths[p].path]: v\n }), {});\n\n store.set(_values, false);\n }, [store, mappedPaths]);\n useEffect(() => {\n const shouldOverrideSettings = !firstRender.current && depsChanged.current;\n store.addData(initialData, shouldOverrideSettings);\n firstRender.current = false;\n depsChanged.current = false;\n return () => store.disposePaths(paths);\n }, [store, paths, initialData]);\n useEffect(() => {\n const unsubscriptions = [];\n Object.entries(onChangePaths).forEach(([path, onChange]) => {\n onChange(store.get(path), path, _objectSpread2({\n initial: true,\n get: store.get\n }, store.getInput(path)));\n const unsub = store.useStore.subscribe(s => {\n const input = s.data[path];\n const value = input.disabled ? undefined : input.value;\n return [value, input];\n }, ([value, input]) => onChange(value, path, _objectSpread2({\n initial: false,\n get: store.get\n }, input)), {\n equalityFn: shallow\n });\n unsubscriptions.push(unsub);\n });\n return () => unsubscriptions.forEach(unsub => unsub());\n }, [store, onChangePaths]);\n useEffect(() => {\n const unsubscriptions = [];\n Object.entries(onEditStartPaths).forEach(([path, onEditStart]) => unsubscriptions.push(store.subscribeToEditStart(path, onEditStart)));\n Object.entries(onEditEndPaths).forEach(([path, onEditEnd]) => unsubscriptions.push(store.subscribeToEditEnd(path, onEditEnd)));\n return () => unsubscriptions.forEach(unsub => unsub());\n }, [onEditStartPaths, onEditEndPaths, store]);\n if (schemaIsFunction) return [values, set];\n return values;\n}\n\nregister(LevaInputs.SELECT, select);\nregister(LevaInputs.IMAGE, image);\nregister(LevaInputs.NUMBER, number$1);\nregister(LevaInputs.COLOR, color);\nregister(LevaInputs.STRING, string);\nregister(LevaInputs.BOOLEAN, boolean);\nregister(LevaInputs.INTERVAL, interval);\nregister(LevaInputs.VECTOR3D, vector3d);\nregister(LevaInputs.VECTOR2D, vector2d);\n\nexport { Leva, LevaPanel, button, buttonGroup, folder, levaStore, monitor, useControls, useCreateStore };\n","export default function(e,f){var a={white:\"#ffffff\",bisque:\"#ffe4c4\",blue:\"#0000ff\",cadetblue:\"#5f9ea0\",chartreuse:\"#7fff00\",chocolate:\"#d2691e\",coral:\"#ff7f50\",antiquewhite:\"#faebd7\",aqua:\"#00ffff\",azure:\"#f0ffff\",whitesmoke:\"#f5f5f5\",papayawhip:\"#ffefd5\",plum:\"#dda0dd\",blanchedalmond:\"#ffebcd\",black:\"#000000\",gold:\"#ffd700\",goldenrod:\"#daa520\",gainsboro:\"#dcdcdc\",cornsilk:\"#fff8dc\",cornflowerblue:\"#6495ed\",burlywood:\"#deb887\",aquamarine:\"#7fffd4\",beige:\"#f5f5dc\",crimson:\"#dc143c\",cyan:\"#00ffff\",darkblue:\"#00008b\",darkcyan:\"#008b8b\",darkgoldenrod:\"#b8860b\",darkkhaki:\"#bdb76b\",darkgray:\"#a9a9a9\",darkgreen:\"#006400\",darkgrey:\"#a9a9a9\",peachpuff:\"#ffdab9\",darkmagenta:\"#8b008b\",darkred:\"#8b0000\",darkorchid:\"#9932cc\",darkorange:\"#ff8c00\",darkslateblue:\"#483d8b\",gray:\"#808080\",darkslategray:\"#2f4f4f\",darkslategrey:\"#2f4f4f\",deeppink:\"#ff1493\",deepskyblue:\"#00bfff\",wheat:\"#f5deb3\",firebrick:\"#b22222\",floralwhite:\"#fffaf0\",ghostwhite:\"#f8f8ff\",darkviolet:\"#9400d3\",magenta:\"#ff00ff\",green:\"#008000\",dodgerblue:\"#1e90ff\",grey:\"#808080\",honeydew:\"#f0fff0\",hotpink:\"#ff69b4\",blueviolet:\"#8a2be2\",forestgreen:\"#228b22\",lawngreen:\"#7cfc00\",indianred:\"#cd5c5c\",indigo:\"#4b0082\",fuchsia:\"#ff00ff\",brown:\"#a52a2a\",maroon:\"#800000\",mediumblue:\"#0000cd\",lightcoral:\"#f08080\",darkturquoise:\"#00ced1\",lightcyan:\"#e0ffff\",ivory:\"#fffff0\",lightyellow:\"#ffffe0\",lightsalmon:\"#ffa07a\",lightseagreen:\"#20b2aa\",linen:\"#faf0e6\",mediumaquamarine:\"#66cdaa\",lemonchiffon:\"#fffacd\",lime:\"#00ff00\",khaki:\"#f0e68c\",mediumseagreen:\"#3cb371\",limegreen:\"#32cd32\",mediumspringgreen:\"#00fa9a\",lightskyblue:\"#87cefa\",lightblue:\"#add8e6\",midnightblue:\"#191970\",lightpink:\"#ffb6c1\",mistyrose:\"#ffe4e1\",moccasin:\"#ffe4b5\",mintcream:\"#f5fffa\",lightslategray:\"#778899\",lightslategrey:\"#778899\",navajowhite:\"#ffdead\",navy:\"#000080\",mediumvioletred:\"#c71585\",powderblue:\"#b0e0e6\",palegoldenrod:\"#eee8aa\",oldlace:\"#fdf5e6\",paleturquoise:\"#afeeee\",mediumturquoise:\"#48d1cc\",mediumorchid:\"#ba55d3\",rebeccapurple:\"#663399\",lightsteelblue:\"#b0c4de\",mediumslateblue:\"#7b68ee\",thistle:\"#d8bfd8\",tan:\"#d2b48c\",orchid:\"#da70d6\",mediumpurple:\"#9370db\",purple:\"#800080\",pink:\"#ffc0cb\",skyblue:\"#87ceeb\",springgreen:\"#00ff7f\",palegreen:\"#98fb98\",red:\"#ff0000\",yellow:\"#ffff00\",slateblue:\"#6a5acd\",lavenderblush:\"#fff0f5\",peru:\"#cd853f\",palevioletred:\"#db7093\",violet:\"#ee82ee\",teal:\"#008080\",slategray:\"#708090\",slategrey:\"#708090\",aliceblue:\"#f0f8ff\",darkseagreen:\"#8fbc8f\",darkolivegreen:\"#556b2f\",greenyellow:\"#adff2f\",seagreen:\"#2e8b57\",seashell:\"#fff5ee\",tomato:\"#ff6347\",silver:\"#c0c0c0\",sienna:\"#a0522d\",lavender:\"#e6e6fa\",lightgreen:\"#90ee90\",orange:\"#ffa500\",orangered:\"#ff4500\",steelblue:\"#4682b4\",royalblue:\"#4169e1\",turquoise:\"#40e0d0\",yellowgreen:\"#9acd32\",salmon:\"#fa8072\",saddlebrown:\"#8b4513\",sandybrown:\"#f4a460\",rosybrown:\"#bc8f8f\",darksalmon:\"#e9967a\",lightgoldenrodyellow:\"#fafad2\",snow:\"#fffafa\",lightgrey:\"#d3d3d3\",lightgray:\"#d3d3d3\",dimgray:\"#696969\",dimgrey:\"#696969\",olivedrab:\"#6b8e23\",olive:\"#808000\"},r={};for(var d in a)r[a[d]]=d;var l={};e.prototype.toName=function(f){if(!(this.rgba.a||this.rgba.r||this.rgba.g||this.rgba.b))return\"transparent\";var d,i,n=r[this.toHex()];if(n)return n;if(null==f?void 0:f.closest){var o=this.toRgb(),t=1/0,b=\"black\";if(!l.length)for(var c in a)l[c]=new e(a[c]).toRgb();for(var g in a){var u=(d=o,i=l[g],Math.pow(d.r-i.r,2)+Math.pow(d.g-i.g,2)+Math.pow(d.b-i.b,2));u void\n\tonMirrorFront: (mirror: boolean) => void\n}\n\nconst MirrorOptions = ({\n\tmirroredLeft,\n\tmirroredFront,\n\tonMirrorLeft,\n\tonMirrorFront,\n}: MirrorOptionsProps) => {\n\tconst { mirrorLeftRight, mirrorFrontBack } = useControls({\n\t\tmirrorLeftRight: { value: mirroredLeft },\n\t\tmirrorFrontBack: { value: mirroredFront },\n\t})\n\n\tuseEffect(() => {\n\t\tonMirrorLeft(mirrorLeftRight)\n\t}, [mirrorLeftRight, onMirrorLeft])\n\n\tuseEffect(() => {\n\t\tonMirrorFront(mirrorFrontBack)\n\t}, [mirrorFrontBack, onMirrorFront])\n\n\treturn
\n}\n\nexport default MirrorOptions\n","import QRCode from \"qrcode.react\"\nimport { useEffect, useRef, useState } from \"react\"\nimport { useTranslation } from \"react-i18next\"\nimport Button, { ButtonTheme } from \"src/components/button/button\"\nimport { FRONT_BASE_URL } from \"../../constants/constants\"\n\ninterface PatientInformationProps {\n\tcode: string\n\tanamnesis: string\n}\n\nenum PanelState {\n\tnothing = 0,\n\tinfo = 1,\n\tconnection = 2,\n}\n\nconst PatientInformation = ({ code, anamnesis }: PatientInformationProps) => {\n\tconst { t } = useTranslation()\n\n\tconst [panelState, setPanelState] = useState(PanelState.nothing)\n\n\tconst wrapper = useRef(null)\n\n\tuseEffect(() => {\n\t\tconst onHandleClick = (event: MouseEvent) => {\n\t\t\tif (\n\t\t\t\twrapper.current &&\n\t\t\t\tevent.target &&\n\t\t\t\t// @ts-ignore\n\t\t\t\t!wrapper.current.contains(event.target)\n\t\t\t) {\n\t\t\t\tsetPanelState(0)\n\t\t\t}\n\t\t}\n\n\t\tdocument.addEventListener(\"mousedown\", onHandleClick)\n\n\t\treturn () => document.removeEventListener(\"mousedown\", onHandleClick)\n\t}, [])\n\n\treturn (\n\t\t<>\n\t\t\t\n\t\t\t\t
\n\t\t\t\t\t {\n\t\t\t\t\t\t\tsetPanelState((v) => (v === 2 ? 0 : 2))\n\t\t\t\t\t\t}}\n\t\t\t\t\t>\n\t\t\t\t\t\t{panelState === 2 ? t(\"close\") : t(\"reconnect\")}\n\t\t\t\t\t\n\t\t\t\t\t {\n\t\t\t\t\t\t\tsetPanelState((v) => (v === 1 ? 0 : 1))\n\t\t\t\t\t\t}}\n\t\t\t\t\t>\n\t\t\t\t\t\t{panelState === 1 ? t(\"close_info\") : t(\"patient_info\")}\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t{panelState === 1 && (\n\t\t\t\t\t
\n\t\t\t\t\t\t

Anamnese:

\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t)}\n\n\t\t\t\t{panelState === 2 && (\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t)}\n\t\t\t
\n\t\t\t{panelState === 1 && (\n\t\t\t\t
\n\t\t\t)}\n\t\t\n\t)\n}\n\nexport default PatientInformation\n","/*\nAuto-generated by: https://github.com/pmndrs/gltfjsx\n*/\n\nimport { useGLTF } from \"@react-three/drei\"\nimport { forwardRef } from \"react\"\nimport * as THREE from \"three\"\nimport { Group } from \"three\"\nimport { GLTF } from \"three/examples/jsm/loaders/GLTFLoader\"\n\ntype GLTFResult = GLTF & {\n\tnodes: {\n\t\tCube: THREE.Mesh\n\t}\n\tmaterials: {\n\t\tBlue: THREE.MeshStandardMaterial\n\t}\n}\n\nconst ControllerModel = forwardRef((props, ref) => {\n\tconst { nodes, materials } = useGLTF(\n\t\t\"/models/controller.glb\"\n\t) as unknown as GLTFResult\n\n\treturn (\n\t\t\n\t\t\t\n\t\t\n\t)\n})\n\nexport default ControllerModel\n\nuseGLTF.preload(\"/models/controller.glb\")\n","import { useFrame } from \"@react-three/fiber\"\nimport { RefObject, useEffect, useRef } from \"react\"\nimport { Group, Object3D, Raycaster, Vector3 } from \"three\"\nimport ControllerModel from \"../../assets/models/controller\"\nimport { useSensorStore } from \"../../state/stores/sensorStore\"\nimport { degrees_to_radians, lerp } from \"../../utils/math\"\nimport { VectorTuple } from \"../../utils/vector\"\n\ninterface ControllerProps {\n\tstart: VectorTuple\n\tend: VectorTuple\n\tallowRotation?: boolean\n\tbody: RefObject\n}\n\nconst Controller = ({\n\tstart,\n\tend,\n\tallowRotation = true,\n\tbody,\n}: ControllerProps) => {\n\tconst ref = useRef(null)\n\tconst data = useRef([0.5, 0, 0])\n\n\tuseEffect(() =>\n\t\tuseSensorStore.subscribe((state) => {\n\t\t\tif (state.data) {\n\t\t\t\tdata.current = [state.data[0], state.data[1], state.data[2]]\n\t\t\t}\n\t\t})\n\t)\n\n\tuseFrame(() => {\n\t\tif (!ref || !ref.current) return\n\n\t\t// raycast\n\t\tif (body && body.current && ref && ref.current && data && data.current) {\n\t\t\tconst raycaster = new Raycaster()\n\t\t\traycaster.set(\n\t\t\t\tnew Vector3(\n\t\t\t\t\tlerp(end[0], start[0], data.current[0]),\n\t\t\t\t\t1,\n\t\t\t\t\tlerp(end[2], start[2], data.current[0])\n\t\t\t\t),\n\t\t\t\tnew Vector3(0, -1, 0)\n\t\t\t)\n\n\t\t\tconst intersects = raycaster\n\t\t\t\t.intersectObject(body.current, true)\n\t\t\t\t.sort((a, b) => a.distance - b.distance)\n\n\t\t\tif (intersects.length > 0) {\n\t\t\t\tconst intersection = intersects[0]\n\t\t\t\tconst point = intersection.point\n\n\t\t\t\tref.current.position.x = point.x\n\t\t\t\tref.current.position.y = point.y\n\t\t\t\tref.current.position.z = point.z\n\n\t\t\t\tif (allowRotation) {\n\t\t\t\t\tconst beta = Math.atan((end[2] - start[2]) / (end[0] - start[0]))\n\t\t\t\t\tref.current.rotation.y =\n\t\t\t\t\t\t-beta + degrees_to_radians(data.current[2]) + Math.PI / 2\n\t\t\t\t\tref.current.children[0].rotation.x = degrees_to_radians(\n\t\t\t\t\t\tdata.current[1]\n\t\t\t\t\t)\n\t\t\t\t} else {\n\t\t\t\t\tconst beta = Math.atan((end[2] - start[2]) / (end[0] - start[0]))\n\t\t\t\t\tref.current.rotation.y = -beta + Math.PI / 2\n\t\t\t\t\tref.current.children[0].rotation.x = 0\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t})\n\n\treturn \n}\n\nexport default Controller\n","import { Canvas } from \"@react-three/fiber\"\nimport { CSSProperties, Suspense, useRef } from \"react\"\nimport { Mesh, NoToneMapping, sRGBEncoding } from \"three\"\nimport BodyModel from \"../../assets/models/body\"\nimport { VectorTuple } from \"../../utils/vector\"\nimport Environment from \"../environment/environment\"\nimport Controller from \"../models/controller\"\nimport SelectPath from \"../models/selectPath\"\n\ninterface PatientLocationProps {\n\tstart: VectorTuple\n\tend: VectorTuple\n\tstyle?: CSSProperties\n\tshowPath?: boolean\n\tallowRotation?: boolean\n}\n\nconst PatientLocation = ({\n\tstart = [0, 0, 0],\n\tend = [0, 0, 0],\n\tstyle,\n\tshowPath = true,\n\tallowRotation = true,\n}: PatientLocationProps) => {\n\tconst body = useRef(null)\n\n\treturn (\n\t\t {\n\t\t\t\tgl.toneMapping = NoToneMapping\n\t\t\t\tgl.outputEncoding = sRGBEncoding\n\t\t\t}}\n\t\t>\n\t\t\t\n\t\t\t\t\n\n\t\t\t\t\n\n\t\t\t\t\n\n\t\t\t\t{showPath && }\n\t\t\t\n\t\t\n\t)\n}\n\nexport default PatientLocation\n","// @ts-ignore\nimport { stackHelperFactory, VolumeLoader } from \"ami.js\"\nimport {\n\tMutableRefObject,\n\tuseCallback,\n\tuseEffect,\n\tuseRef,\n\tuseState,\n} from \"react\"\nimport * as THREE from \"three\"\nimport { PerspectiveCamera, Scene, Vector3, WebGLRenderer } from \"three\"\nimport { usePatientStore } from \"../../../state/stores/patientStore\"\nimport { useSensorStore } from \"../../../state/stores/sensorStore\"\nimport { degrees_to_radians, map_numbers } from \"../../../utils/math\"\nimport { JsonVector, jsonVectorToTuple } from \"../../../utils/vector\"\nimport MirrorOptions from \"../../mirrorOptions/mirrorOptions\"\nimport UserPatientInformation from \"../../patientInformation/patientInformation\"\nimport PatientLocation from \"../../patientLocation/patientLocation\"\nimport ProgressBar from \"../../progressBar/progressBar\"\nimport SegmentedControl from \"../../segmentedControl/segmentedControl\"\nimport Loading from \"./loading\"\n\ninterface PatientProps {\n\tpatient: Record\n\tcode: string\n\tshowTweaks?: boolean\n}\n\nconst Patient = ({ patient, code, showTweaks = true }: PatientProps) => {\n\tconst threeDContainer = useRef(null)\n\n\tconst mirrorLeftRightRef = useRef(patient.mirrored)\n\tconst mirrorFrontBackRef = useRef(patient.mirroredEnds)\n\n\tconst renderer = useRef(\n\t\tnew WebGLRenderer({\n\t\t\tantialias: true,\n\t\t})\n\t)\n\tconst scene = useRef(new Scene())\n\tconst camera: MutableRefObject =\n\t\tuseRef(null)\n\tconst stackHelper: MutableRefObject = useRef(null)\n\n\tconst _zoom = useRef(0)\n\tconst [zoom, setZoom] = useState(0)\n\n\tconst [isLoading, setIsLoading] = useState(true)\n\n\tconst data = useRef([0, 0, 0])\n\n\tconst position = useRef(null)\n\tconst beta = useRef(null)\n\tconst gamma = useRef(null)\n\n\tuseEffect(() =>\n\t\tuseSensorStore.subscribe((state) => {\n\t\t\tif (\n\t\t\t\tstackHelper.current &&\n\t\t\t\tstate.data &&\n\t\t\t\tposition.current &&\n\t\t\t\tbeta.current &&\n\t\t\t\tgamma.current\n\t\t\t) {\n\t\t\t\tconst worldBBox = stackHelper.current.stack.worldBoundingBox()\n\n\t\t\t\tconst distance = (worldBBox[5] - worldBBox[4]) * 0.05\n\t\t\t\tconst newData = [\n\t\t\t\t\tmap_numbers(\n\t\t\t\t\t\tstate.data[0],\n\t\t\t\t\t\tmirrorFrontBackRef.current ? 1 : 0,\n\t\t\t\t\t\tmirrorFrontBackRef.current ? 0 : 1,\n\t\t\t\t\t\tworldBBox[4] + distance,\n\t\t\t\t\t\tworldBBox[5] - distance\n\t\t\t\t\t),\n\t\t\t\t\tstate.data[1],\n\t\t\t\t\tstate.data[2],\n\t\t\t\t]\n\n\t\t\t\tdata.current = newData\n\t\t\t\tposition.current.textContent = `Position: ${Math.round(newData[0])}`\n\t\t\t\tbeta.current.textContent = `β: ${newData[1]}`\n\t\t\t\tgamma.current.textContent = `γ: ${newData[2]}`\n\t\t\t}\n\t\t})\n\t)\n\n\tconst updateGeometries = useCallback(() => {\n\t\tif (stackHelper.current && camera.current && data.current) {\n\t\t\tlet planeDir = new Vector3(0, 0, mirrorLeftRightRef.current ? 1 : -1)\n\n\t\t\tplaneDir.applyAxisAngle(\n\t\t\t\tnew Vector3(0, 1, 0),\n\t\t\t\tdegrees_to_radians(data.current[2])\n\t\t\t)\n\t\t\tplaneDir.applyAxisAngle(\n\t\t\t\tnew Vector3(1, 0, 0),\n\t\t\t\tdegrees_to_radians(data.current[1])\n\t\t\t)\n\n\t\t\tstackHelper.current.slice.planeDirection = planeDir\n\t\t\tstackHelper.current.slice.planePosition.z = data.current[0]\n\n\t\t\tlet distance = 200\n\t\t\tif (_zoom.current === 1) {\n\t\t\t\tdistance = 150\n\t\t\t} else if (_zoom.current === 2) {\n\t\t\t\tdistance = 100\n\t\t\t}\n\n\t\t\tcamera.current.position.x =\n\t\t\t\tstackHelper.current.slice.planePosition.x + planeDir.x * distance\n\t\t\tcamera.current.position.y =\n\t\t\t\tstackHelper.current.slice.planePosition.y + planeDir.y * distance\n\t\t\tcamera.current.position.z =\n\t\t\t\tstackHelper.current.slice.planePosition.z + planeDir.z * distance\n\n\t\t\tcamera.current.lookAt(stackHelper.current.slice.planePosition)\n\t\t\tcamera.current.updateProjectionMatrix()\n\t\t}\n\t}, [])\n\n\tconst animate = useCallback(() => {\n\t\tupdateGeometries()\n\t\trender()\n\n\t\t// request new frame\n\t\tsetTimeout(() => requestAnimationFrame(animate), 1000 / 30)\n\t}, [updateGeometries])\n\n\tuseEffect(() => {\n\t\tif (!threeDContainer.current) {\n\t\t\treturn\n\t\t}\n\n\t\trenderer.current.setSize(\n\t\t\tthreeDContainer.current.offsetWidth,\n\t\t\tthreeDContainer.current.offsetHeight\n\t\t)\n\t\trenderer.current.setClearColor(\"black\", 1)\n\t\trenderer.current.setPixelRatio(0.5)\n\t\tthreeDContainer.current.appendChild(renderer.current.domElement)\n\n\t\tcamera.current = new PerspectiveCamera(\n\t\t\t45,\n\t\t\tthreeDContainer.current.offsetWidth /\n\t\t\t\tthreeDContainer.current.offsetHeight,\n\t\t\t0.01,\n\t\t\t10000000\n\t\t)\n\t\tcamera.current.up.set(0, -1, 0)\n\n\t\t// @ts-ignore\n\t\tconst loader = new VolumeLoader(threeDContainer.current, ProgressBar)\n\n\t\tlet url = patient.volumeUrl\n\t\tif (url) {\n\t\t\tloader.load(url).then(() => {\n\t\t\t\tconst series = loader.data[0].mergeSeries(loader.data)[0]\n\t\t\t\tconst stack = series.stack[0]\n\t\t\t\t// @ts-ignore\n\t\t\t\tconst StackHelper = stackHelperFactory(THREE)\n\n\t\t\t\tstackHelper.current = new StackHelper(stack)\n\t\t\t\tstackHelper.current.bbox._visible = false\n\t\t\t\tstackHelper.current.border._visible = false\n\t\t\t\tconst centerLPS = stackHelper.current.stack.worldCenter()\n\t\t\t\tstackHelper.current.slice.aabbSpace = \"LPS\"\n\t\t\t\tstackHelper.current.slice.planePosition.x = centerLPS.x\n\t\t\t\tstackHelper.current.slice.planePosition.y = centerLPS.y\n\t\t\t\tstackHelper.current.slice.planePosition.z = centerLPS.z\n\t\t\t\tstackHelper.current.slice.thickness = 0\n\t\t\t\tstackHelper.current.slice.spacing = 1\n\t\t\t\tstackHelper.current.slice.interpolation = 1\n\t\t\t\tscene.current.add(stackHelper.current)\n\t\t\t\tstackHelper.current.slice.planeDirection = new THREE.Vector3(0, 0, 1)\n\n\t\t\t\tif (camera.current) {\n\t\t\t\t\tcamera.current.lookAt(centerLPS.x, centerLPS.y, centerLPS.z)\n\t\t\t\t\tcamera.current.updateProjectionMatrix()\n\t\t\t\t}\n\t\t\t\tanimate()\n\t\t\t})\n\t\t}\n\t}, [threeDContainer, animate, patient.volumeUrl])\n\n\tuseEffect(() =>\n\t\tusePatientStore.subscribe((state) => {\n\t\t\tif (state.mode === \"done\") setIsLoading(false)\n\t\t})\n\t)\n\n\tconst render = () => {\n\t\tif (!camera || !camera.current) return\n\n\t\trenderer.current.render(scene.current, camera.current)\n\t}\n\n\treturn (\n\t\t
\n\t\t\t
\n\t\t\t\t
\n\t\t\t\t\t

\n\t\t\t\t\t\tPosition:\n\t\t\t\t\t

\n\t\t\t\t\t

\n\t\t\t\t\t\tβ:\n\t\t\t\t\t

\n\t\t\t\t\t

\n\t\t\t\t\t\tγ:\n\t\t\t\t\t

\n\t\t\t\t
\n\t\t\t
\n\n\t\t\t\n\n\t\t\t
\n\t\t\t\t

Vergrößern:

\n\t\t\t\t
\n\t\t\t\t\t {\n\t\t\t\t\t\t\t_zoom.current = value\n\t\t\t\t\t\t\tsetZoom(value)\n\t\t\t\t\t\t}}\n\t\t\t\t\t/>\n\t\t\t\t
\n\t\t\t
\n\n\t\t\t\n\n\t\t\t{isLoading && }\n\n\t\t\t{showTweaks && (\n\t\t\t\t\n\t\t\t\t\t\t(mirrorFrontBackRef.current = mirrorFront)\n\t\t\t\t\t}\n\t\t\t\t\tonMirrorLeft={(mirrorLeft) =>\n\t\t\t\t\t\t(mirrorLeftRightRef.current = mirrorLeft)\n\t\t\t\t\t}\n\t\t\t\t/>\n\t\t\t)}\n\n\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t
\n\t)\n}\n\nexport default Patient\n","import moment from \"moment\"\n\ninterface WaitingProps {\n\tstartDate?: Date\n}\n\nconst Waiting = ({ startDate }: WaitingProps) => {\n\treturn (\n\t\t
\n\t\t\t
\n\t\t\t\t

\n\t\t\t\t\tDas Practinar startet  \n\t\t\t\t\t\n\t\t\t\t\t\t{startDate ? moment(startDate).fromNow() : \"…\"}\n\t\t\t\t\t\n\t\t\t\t

\n\t\t\t
\n\t\t
\n\t)\n}\n\nexport default Waiting\n","import { useCommunicationStore } from \"../../../state/stores/communicationStore\";\nimport Participants from \"../../participants/participants\";\nimport UserWaiting from \"../../waiting/waiting\";\n\ninterface PresentationProps {\n\tpractinar: Record | undefined;\n\tuserId: string;\n}\n\nconst Presentation = ({ practinar, userId }: PresentationProps) => {\n\tconst room = useCommunicationStore((state) => state.room);\n\n\treturn (\n\t\t
\n\t\t\t\n\n\t\t\t{room ? (\n\t\t\t\t\n\t\t\t) : (\n\t\t\t\t\n\t\t\t)}\n\t\t
\n\t);\n};\n\nexport default Presentation;\n","import { useEffect, useRef, useState } from \"react\"\nimport { useTranslation } from \"react-i18next\"\nimport { useQuizStore } from \"../../../state/stores/quizStore\"\nimport { useSocketStore } from \"../../../state/stores/socketStore\"\nimport { mapVotes, quizColors, quizLetters } from \"../../../utils/formatQuiz\"\nimport ResponsiveImage from \"../../responsiveImage/responsiveImage\"\n\ninterface QuizProps {\n\tid: string\n\tquestion: string\n\tmultiplePossible: boolean\n\tsolution: number[]\n\tanswers: string[]\n\timageUrl: string\n}\n\nconst Quiz = ({\n\tid,\n\tquestion,\n\tmultiplePossible,\n\tsolution = [],\n\tanswers = [],\n\timageUrl,\n}: QuizProps) => {\n\tconst { t } = useTranslation()\n\n\tconst [selected, select] = useState([])\n\tconst [showResults, setShowResults] = useState(false)\n\tconst [time, setTime] = useState(5)\n\tconst timerRef = useRef()\n\tconst showResultsTimerRef = useRef()\n\tconst _time = useRef(5)\n\n\tconst onVote = useSocketStore((state) => state.emit.quiz.onVotes)\n\tconst votes = useQuizStore((state) => state.votes)\n\tconst showResultsAfterTime = useQuizStore((state) => state.showResults)\n\n\tconst [zoom, setZoom] = useState(false)\n\n\tconst vote = (index: number) => {\n\t\tlet _selected = selected\n\t\tif (_selected.includes(index)) {\n\t\t\t_selected = _selected.filter((v) => v !== index)\n\t\t} else {\n\t\t\tif (multiplePossible) {\n\t\t\t\t_selected = [..._selected, index]\n\t\t\t} else {\n\t\t\t\t_selected = [index]\n\t\t\t}\n\t\t}\n\n\t\tselect(_selected)\n\n\t\tonVote(_selected)\n\t}\n\n\tconst quizId = id\n\tuseEffect(() => {\n\t\tselect([])\n\t}, [quizId])\n\n\tuseEffect(() => {\n\t\tif (showResultsAfterTime) {\n\t\t\tshowResultsTimerRef.current = setTimeout(() => setShowResults(true), 5000)\n\t\t}\n\t}, [showResultsAfterTime])\n\n\tuseEffect(() => {\n\t\tconst countdown = () => {\n\t\t\t_time.current -= 1\n\t\t\tsetTime(_time.current)\n\t\t}\n\n\t\tif (showResultsAfterTime && timerRef.current === undefined) {\n\t\t\t_time.current = 5\n\t\t\ttimerRef.current = setInterval(countdown, 1000)\n\t\t\tsetTime(5)\n\t\t}\n\t}, [showResultsAfterTime])\n\n\tuseEffect(() => {\n\t\treturn () => {\n\t\t\t_time.current = 10\n\t\t}\n\t}, [])\n\n\tuseEffect(() => {\n\t\treturn () => {\n\t\t\tif (showResults) {\n\t\t\t\tsetShowResults(false)\n\t\t\t\tif (timerRef.current) {\n\t\t\t\t\tclearInterval(timerRef.current)\n\t\t\t\t\ttimerRef.current = undefined\n\t\t\t\t}\n\n\t\t\t\tif (showResultsTimerRef.current) {\n\t\t\t\t\tclearTimeout(showResultsTimerRef.current)\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}, [showResults])\n\n\tuseEffect(() => {\n\t\treturn () => {\n\t\t\tif (showResultsAfterTime) {\n\t\t\t\tif (showResults) {\n\t\t\t\t\tsetShowResults(false)\n\t\t\t\t}\n\t\t\t\tif (timerRef.current) {\n\t\t\t\t\tclearInterval(timerRef.current)\n\t\t\t\t\ttimerRef.current = undefined\n\t\t\t\t}\n\n\t\t\t\tif (showResultsTimerRef.current) {\n\t\t\t\t\tclearTimeout(showResultsTimerRef.current)\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}, [showResultsAfterTime, showResults])\n\n\tconst stats = (\n\t\t
\n\t\t\t{mapVotes(answers, votes).map((v: number, i: number) => (\n\t\t\t\t\n\t\t\t\t\t= 20 ? \"white\" : quizColors[i],\n\t\t\t\t\t\t}}\n\t\t\t\t\t>\n\t\t\t\t\t\t{votes[i]}\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t))}\n\t\t
\n\t)\n\n\tconst showTimer = showResultsAfterTime && !showResults\n\n\tlet top\n\tif (imageUrl) {\n\t\ttop = (\n\t\t\t<>\n\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t{question} (\n\t\t\t\t\t\t{multiplePossible ? t(\"multiple_answers\") : t(\"single_answer\")})\n\t\t\t\t\t
\n\t\t\t\t\t{showTimer ? (\n\t\t\t\t\t\t

\n\t\t\t\t\t\t\tAntwortzeit endet in: {time}\n\t\t\t\t\t\t

\n\t\t\t\t\t) : showResults ? null : (\n\t\t\t\t\t\t
\n\t\t\t\t\t)}\n\t\t\t\t
\n\t\t\t\t {\n\t\t\t\t\t\tif (!showResults) {\n\t\t\t\t\t\t\tsetZoom(true)\n\t\t\t\t\t\t}\n\t\t\t\t\t}}\n\t\t\t\t>\n\t\t\t\t\t\n\t\t\t\t\t{!showResults && (\n\t\t\t\t\t\t
Vergrößern
\n\t\t\t\t\t)}\n\t\t\t\t
\n\t\t\t\n\t\t)\n\t} else {\n\t\ttop = (\n\t\t\t
\n\t\t\t\t
\n\t\t\t\t\t{question} (\n\t\t\t\t\t{multiplePossible ? t(\"multiple_answers\") : t(\"single_answer\")})\n\t\t\t\t
\n\t\t\t\t{showTimer ? (\n\t\t\t\t\t

\n\t\t\t\t\t\tAntwortzeit endet in: {time}\n\t\t\t\t\t

\n\t\t\t\t) : (\n\t\t\t\t\t
\n\t\t\t\t)}\n\t\t\t
\n\t\t)\n\t}\n\n\treturn (\n\t\t
\n\t\t\t
\n\t\t\t\t{top}\n\t\t\t
\n\t\t\t
\n\t\t\t\t{showResults ? stats : null}\n\t\t\t\t{showResults ?
: null}\n\t\t\t
\n\t\t\t\n\t\t\t\t{answers.map((v, i) => (\n\t\t\t\t\t vote(i)}\n\t\t\t\t\t>\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t{quizLetters[i]}\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t{showResults && solution.includes(i) && (\n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t{t(\"correct_answer\")}\n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t{answers[i]}\n\t\t\t\t\t\t

\n\t\t\t\t\t
\n\t\t\t\t))}\n\t\t\t
\n\t\t\t{zoom && (\n\t\t\t\t setZoom(false)}\n\t\t\t\t>\n\t\t\t\t\t\n\t\t\t\t\t
Schliessen
\n\t\t\t\t
\n\t\t\t)}\n\t\t\n\t)\n}\n\nexport default Quiz\n","import Logos from \"../../logos/logos\"\n\nconst Sendoff = () => {\n\treturn (\n\t\t
\n\t\t\t

Vielen Dank für ihre Teilnahme!

\n\t\t\t\n\t\t
\n\t)\n}\n\nexport default Sendoff\n","var _path, _path2;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nfunction SvgArrowRight(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 24,\n height: 18,\n viewBox: \"0 0 24 18\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M10 11H13C13.5523 11 14 11.4477 14 12H18V6H14C14 6.55228 13.5523 7 13 7H10H1C0.447715 7 0 7.44772 0 8V10C0 10.5523 0.447715 11 1 11H10Z\",\n fill: \"white\"\n })), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M23.1741 9.74329L15.669 16.4979C15.0254 17.0771 14 16.6204 14 15.7546V2.24536C14 1.37959 15.0254 0.922899 15.669 1.50207L23.1741 8.25671C23.6155 8.65395 23.6155 9.34605 23.1741 9.74329Z\",\n fill: \"white\"\n })));\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgArrowRight);\nexport default __webpack_public_path__ + \"static/media/arrowRight.39a8b04538e331bd6eb09623b07818aa.svg\";\nexport { ForwardRef as ReactComponent };","import { useCallback, useEffect, useState } from \"react\"\nimport { useTranslation } from \"react-i18next\"\nimport { useSettingsStore } from \"../../state/stores/settingsStore\"\nimport CameraSettings from \"../cameraSettings/cameraSettings\"\n\nconst CameraAuth = () => {\n\tconst { t } = useTranslation()\n\n\tconst [showPermissionOverlay, setShowPermissionOverlay] = useState(false)\n\tconst [hasPermissions, setHasPermissions] = useState(false)\n\n\tconst updateDevices = useSettingsStore((state) => state.updateIO)\n\n\tconst checkPermission = useCallback(async () => {\n\t\tlet hasPermissions = false\n\t\tconst devices = await navigator.mediaDevices.enumerateDevices()\n\t\tdevices.forEach((device) => {\n\t\t\tif (device.label && device.label.length > 0) {\n\t\t\t\thasPermissions = true\n\t\t\t}\n\t\t})\n\n\t\tsetHasPermissions(hasPermissions)\n\t\tsetShowPermissionOverlay(!hasPermissions)\n\n\t\tif (hasPermissions) {\n\t\t\tupdateDevices(devices)\n\t\t}\n\t}, [updateDevices])\n\n\tconst askForPermission = useCallback(async () => {\n\t\tawait navigator.mediaDevices.getUserMedia({ audio: true, video: false })\n\n\t\tcheckPermission()\n\t}, [checkPermission])\n\n\tuseEffect(() => {\n\t\tcheckPermission()\n\n\t\taskForPermission()\n\t}, [checkPermission, askForPermission])\n\n\treturn (\n\t\t<>\n\t\t\t{showPermissionOverlay && (\n\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t

{t(\"camera_permission_1\")}

\n\t\t\t\t\t\t

{t(\"camera_permission_2\")}

\n\t\t\t\t\t\t

\n\t\t\t\t\t\t\t{t(\"camera_permission_3\")}\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t{t(\"camera_permission_4\")}\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t

\n\t\t\t\t\t
\n\t\t\t\t
\n\t\t\t)}\n\n\t\t\t{hasPermissions && (\n\t\t\t\t<>\n\t\t\t\t\t

{t(\"camera_settings\")}

\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t)}\n\t\t\n\t)\n}\n\nexport default CameraAuth\n","const Dot = ({ state }: { state: number }) => {\n\treturn (\n\t\t\n\t)\n}\n\nconst Line = ({ state }: { state: number }) => {\n\treturn (\n\t\t\n\t)\n}\n\nconst Step = ({ step = 0 }) => {\n\tlet a = 0,\n\t\tb = 0,\n\t\tc = 0,\n\t\td = 0,\n\t\te = 0,\n\t\tf = 0,\n\t\tg = 0,\n\t\th = 0,\n\t\ti = 0\n\tswitch (step) {\n\t\tcase 0:\n\t\t\ta = 2\n\t\t\tb = 0\n\t\t\tc = 0\n\t\t\td = 0\n\t\t\te = 0\n\t\t\tf = 0\n\t\t\tg = 0\n\t\t\th = 0\n\t\t\ti = 0\n\t\t\tbreak\n\t\tcase 1:\n\t\t\ta = 1\n\t\t\tb = 2\n\t\t\tc = 0\n\t\t\td = 0\n\t\t\te = 0\n\t\t\tf = 1\n\t\t\tg = 0\n\t\t\th = 0\n\t\t\ti = 0\n\t\t\tbreak\n\t\tcase 2:\n\t\t\ta = 1\n\t\t\tb = 1\n\t\t\tc = 2\n\t\t\td = 0\n\t\t\te = 0\n\t\t\tf = 1\n\t\t\tg = 1\n\t\t\th = 0\n\t\t\ti = 0\n\t\t\tbreak\n\t\tcase 3:\n\t\t\ta = 1\n\t\t\tb = 1\n\t\t\tc = 1\n\t\t\td = 2\n\t\t\te = 0\n\t\t\tf = 1\n\t\t\tg = 1\n\t\t\th = 1\n\t\t\ti = 0\n\t\t\tbreak\n\t\tcase 4:\n\t\t\ta = 1\n\t\t\tb = 1\n\t\t\tc = 1\n\t\t\td = 1\n\t\t\te = 2\n\t\t\tf = 1\n\t\t\tg = 1\n\t\t\th = 1\n\t\t\ti = 1\n\t\t\tbreak\n\t\tcase 5:\n\t\t\ta = 1\n\t\t\tb = 1\n\t\t\tc = 1\n\t\t\td = 1\n\t\t\te = 1\n\t\t\tf = 1\n\t\t\tg = 1\n\t\t\th = 1\n\t\t\ti = 1\n\t\t\tbreak\n\n\t\tdefault:\n\t\t\tbreak\n\t}\n\n\treturn (\n\t\t
\n\t\t\t
\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t
\n\t\t
\n\t)\n}\n\nexport default Step\n","import { useEffect, useState } from \"react\"\nimport { useTranslation } from \"react-i18next\"\nimport Button, { ButtonTheme } from \"src/components/button/button\"\n// @ts-ignore\nimport Video from \"../../../assets/videos/chatDemo.mp4\"\nimport { iconForEmote } from \"../../../utils/iconForEmote\"\n\nconst Emote = ({\n\tanimation = false,\n\temote = \"\",\n\theadline = \"\",\n\tsubline = \"\",\n\tdelay = \"\",\n}) => {\n\treturn (\n\t\t\n\t\t\t\n\t\t\t

{headline}

\n\t\t\t

{subline}

\n\t\t\n\t)\n}\n\nconst ChatTutorial = () => {\n\tconst { t } = useTranslation()\n\tconst [animation, animate] = useState(false)\n\n\tuseEffect(() => {\n\t\tsetTimeout(() => animate(true), 2400)\n\t}, [])\n\n\treturn (\n\t\t<>\n\t\t\t
\n\t\t\t\t

Chat emotes

\n\t\t\t\t

{t(\"tutorial_chat_1\")}

\n\t\t\t
\n\n\t\t\t