handler-playable-sdk 1.0.1 → 1.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- function a0_0x4edf(){var _0xeb8ed8=['cbNcPmkjsmkXWOfSWO8Yh8kg','jSo4WQ/cRwS','CSk/WOBdGCo3WORdU2jZWR4','WQzNWPHEcW','W43dUCkYjSo/','Emk/WORdJSkJW43dRwvkWQ7cQSkd','CcXkWR9y','W61NsW','W7lcGtddKmkUtrhdKCopmt7cHmkw','d8oAE8olrw98WQbxWQFdGb/cNq','A8o7xNldMmkdW65LtmkG','c8ovW4lcSSoBqCoKkCk5WOvndcy','xsNcPZldUSouxmo8FL8XmvW','W6rYa8oJgw85W7HA','iSkhwI3dVq','W5D+z2bl','WQJcM0ldPaXXWQC7','W6XhWQVcP13cIc/dSua','CSk5WOVdGSkMW4/cMxToWOZcQSkdWQG','WPu0bCozW43dN0FcStVdT0maWR4','W5tdHhychG','eqZcQKu7jmkwvmoLl8oOiCoj','ghFdHxdcUW','W4VdRsyAtq','WPtdGCkEW5tcOG','W67dL8kHfu1BWPWneSkqW5nvW74','DaddL8o2nSo8ymkveLqbpSoP'];a0_0x4edf=function(){return _0xeb8ed8;};return a0_0x4edf();}(function(_0x124506,_0x349fab){var a0_0x3c1c71={_0x98aed5:0x351,_0x3ab446:'MZ4g',_0x206e2b:0x358,_0x69f0cf:0x351,_0x128358:0x2a2,_0x593718:0x2ba,_0x3e77f6:0x2ad,_0xbeec42:'2G*q',_0x957f33:0x2ae,_0x538fb1:'7IK*',_0x218bc5:0x34e,_0x511c0b:0x353,_0x546bb5:0x348,_0x45bcfe:0x34c,_0x36b7fb:0x349,_0x5e92f7:0x341,_0x32b78c:0x2ba,_0x5bde8f:0x2ab,_0xd7cf67:'W%mP',_0xcc8d0e:0x2b6,_0xbc8037:'HRT)',_0x20d0be:0x361,_0x543bf3:0x353,_0x16fc4b:0x360,_0x2059c8:0x33c,_0x9d81d8:0x173,_0x30b718:0x17a,_0x58982d:'si98',_0x56440d:0x169,_0x514898:'W[t8',_0x5d9637:0x29f},a0_0x263113={_0x5dee8c:0x323};function _0x1f1ea1(_0x35e763,_0x2b0af0,_0x4961ba,_0x50fb79,_0x9c4115){return a0_0x40ce(_0x35e763-0x2d6,_0x2b0af0);}function _0x1c3f54(_0x2c646d,_0x77d26a,_0x5c471c,_0x5355fd,_0x434382){return a0_0x40ce(_0x2c646d- -0x1e3,_0x5355fd);}var _0x755964=_0x124506();function _0x3d3c4f(_0x1894cb,_0x507f8d,_0x31370f,_0x2de300,_0x3669db){return a0_0x40ce(_0x3669db- -a0_0x263113._0x5dee8c,_0x2de300);}while(!![]){try{var _0x1e85ec=-parseInt(_0x1f1ea1(a0_0x3c1c71._0x98aed5,a0_0x3c1c71._0x3ab446,0x348,a0_0x3c1c71._0x206e2b,a0_0x3c1c71._0x69f0cf))/(0xec8+0x3ff+0x36*-0x59)+parseInt(_0x3d3c4f(-a0_0x3c1c71._0x128358,-a0_0x3c1c71._0x593718,-a0_0x3c1c71._0x3e77f6,a0_0x3c1c71._0xbeec42,-a0_0x3c1c71._0x957f33))/(0x1*0x266e+0x243e+0x1*-0x4aaa)+parseInt(_0x1f1ea1(0x359,a0_0x3c1c71._0x538fb1,0x35e,a0_0x3c1c71._0x218bc5,a0_0x3c1c71._0x511c0b))/(-0x2*0x76+0x1*-0x283+0x372)+parseInt(_0x1f1ea1(a0_0x3c1c71._0x546bb5,'HRT)',a0_0x3c1c71._0x45bcfe,a0_0x3c1c71._0x36b7fb,a0_0x3c1c71._0x5e92f7))/(0x3*-0xb28+-0x1f*0x29+-0x11*-0x243)+parseInt(_0x3d3c4f(-0x2b6,-a0_0x3c1c71._0x32b78c,-a0_0x3c1c71._0x5bde8f,a0_0x3c1c71._0xd7cf67,-a0_0x3c1c71._0xcc8d0e))/(0x15bb*0x1+-0x1377+-0x23f)*(-parseInt(_0x1f1ea1(a0_0x3c1c71._0x511c0b,a0_0x3c1c71._0xbc8037,a0_0x3c1c71._0x20d0be,a0_0x3c1c71._0x543bf3,a0_0x3c1c71._0x16fc4b))/(-0xaa2+0xf7b+0xf7*-0x5))+-parseInt(_0x1f1ea1(0x349,'VUq*',0x33d,0x34c,a0_0x3c1c71._0x2059c8))/(-0x20fb*0x1+0x25bd*0x1+0x4bb*-0x1)+-parseInt(_0x1c3f54(-a0_0x3c1c71._0x9d81d8,-0x17a,-a0_0x3c1c71._0x30b718,a0_0x3c1c71._0x58982d,-a0_0x3c1c71._0x56440d))/(0x23bf+-0x480+0x3d*-0x83)*(parseInt(_0x3d3c4f(-0x294,-0x292,-0x2aa,a0_0x3c1c71._0x514898,-a0_0x3c1c71._0x5d9637))/(0x4ae*-0x1+-0x1ad9+-0x8*-0x3f2));if(_0x1e85ec===_0x349fab)break;else _0x755964['push'](_0x755964['shift']());}catch(_0x4d9c2d){_0x755964['push'](_0x755964['shift']());}}}(a0_0x4edf,-0x2*-0x793cc+0x12329c+-0x1*0x17d9c4));var a0_0x15ff8c=(function(){var _0x43b00a=!![];return function(_0x1d2e3f,_0x48d9ba){var a0_0x4445bc={_0x17187f:0xa2,_0x756d28:'Yqo3',_0x56d321:0x96,_0x4bf890:0x93},_0x336494=_0x43b00a?function(){var a0_0x1be22f={_0xebd69:0x19};function _0x50f2c2(_0x596ad9,_0x4619d4,_0x216249,_0x13df2d,_0x523e70){return a0_0x40ce(_0x4619d4-a0_0x1be22f._0xebd69,_0x216249);}if(_0x48d9ba){var _0x34cc3e=_0x48d9ba[_0x50f2c2(a0_0x4445bc._0x17187f,0x97,a0_0x4445bc._0x756d28,a0_0x4445bc._0x56d321,a0_0x4445bc._0x4bf890)](_0x1d2e3f,arguments);return _0x48d9ba=null,_0x34cc3e;}}:function(){};return _0x43b00a=![],_0x336494;};}()),a0_0x2734cb=a0_0x15ff8c(this,function(){var a0_0x5551a6={_0x52edb2:0x2ff,_0x1cea26:0x30c,_0x5e0143:0x30b,_0x4d2258:0x1ce,_0x598f35:0x1ca,_0x5a46cb:0x1d8,_0x1eb014:0x1c3,_0x27e267:'qfB2',_0x1a57ba:'iP]V',_0x2f5ce2:0x2f8,_0x580715:0x2fb,_0x1bbdf9:0xf8,_0x184688:0xef,_0x126ffc:0xed,_0x19f5dd:0xf1,_0xca9c6:0x315,_0x476b2e:0x30e,_0x175e2b:0x308,_0x1f1d0d:0xf0,_0x169be6:0xec,_0x4c0b5f:'bTtM',_0x5ae8ef:0xef,_0x1b3e0a:0xfb,_0x3be491:0xfe,_0x2a539f:'(qYZ',_0x214cdc:0xe2,_0x447dda:'E]lR',_0x541979:0xe5,_0x330615:0xe9,_0x1dae28:0xf6,_0x316505:0xe7,_0x5d5f76:'H6LH',_0x23992d:0xf2,_0x28de71:0xf9,_0x881d92:'Ev7b',_0xe83917:0xf3,_0x27d4ab:'gUNL',_0x252f55:0xf4,_0x5daf2d:0xf7},a0_0x1e7c03={_0x5902ee:0x28c},a0_0x10ad4b={_0xd5edc2:0x7b},a0_0x2009b1={_0x7756e0:0x149},_0x410a60={};_0x410a60[_0x3730ff('bk9k',a0_0x5551a6._0x52edb2,a0_0x5551a6._0x1cea26,0x30c,a0_0x5551a6._0x5e0143)]=_0x2fff33(a0_0x5551a6._0x4d2258,a0_0x5551a6._0x598f35,a0_0x5551a6._0x5a46cb,a0_0x5551a6._0x1eb014,a0_0x5551a6._0x27e267)+_0x3730ff(a0_0x5551a6._0x1a57ba,a0_0x5551a6._0x2f5ce2,0x2fa,0x2f0,a0_0x5551a6._0x580715)+'+$';var _0x15f097=_0x410a60;function _0x2fff33(_0x2a0b9c,_0x45afa4,_0x16de02,_0x22af6d,_0x121441){return a0_0x40ce(_0x45afa4-a0_0x2009b1._0x7756e0,_0x121441);}function _0x1e6d07(_0x481598,_0x3e1d8a,_0x27d200,_0x11a795,_0x28f500){return a0_0x40ce(_0x28f500-a0_0x10ad4b._0xd5edc2,_0x27d200);}function _0x3730ff(_0x3a2304,_0x3d8b7d,_0x39c70f,_0x54ea9e,_0x4f9cfb){return a0_0x40ce(_0x4f9cfb-a0_0x1e7c03._0x5902ee,_0x3a2304);}return a0_0x2734cb[_0x1e6d07(a0_0x5551a6._0x1bbdf9,a0_0x5551a6._0x184688,'TmDB',a0_0x5551a6._0x126ffc,a0_0x5551a6._0x19f5dd)+'ing']()['searc'+'h'](_0x15f097[_0x3730ff('gUNL',0x2ff,a0_0x5551a6._0xca9c6,a0_0x5551a6._0x476b2e,a0_0x5551a6._0x175e2b)])[_0x1e6d07(a0_0x5551a6._0x1f1d0d,a0_0x5551a6._0x169be6,a0_0x5551a6._0x4c0b5f,0xfd,a0_0x5551a6._0x5ae8ef)+_0x1e6d07(a0_0x5551a6._0x1b3e0a,a0_0x5551a6._0x3be491,a0_0x5551a6._0x2a539f,a0_0x5551a6._0x19f5dd,0xfd)]()[_0x1e6d07(a0_0x5551a6._0x214cdc,a0_0x5551a6._0x214cdc,a0_0x5551a6._0x447dda,a0_0x5551a6._0x541979,a0_0x5551a6._0x330615)+_0x1e6d07(a0_0x5551a6._0x1dae28,a0_0x5551a6._0x316505,a0_0x5551a6._0x5d5f76,0xe6,a0_0x5551a6._0x23992d)+'r'](a0_0x2734cb)[_0x1e6d07(a0_0x5551a6._0x28de71,a0_0x5551a6._0x1b3e0a,a0_0x5551a6._0x881d92,a0_0x5551a6._0x28de71,a0_0x5551a6._0xe83917)+'h'](_0x15f097[_0x1e6d07(a0_0x5551a6._0x19f5dd,0xfd,a0_0x5551a6._0x27d4ab,a0_0x5551a6._0x252f55,a0_0x5551a6._0x5daf2d)]);});function a0_0x40ce(_0x4294e8,_0x219dfd){_0x4294e8=_0x4294e8-(-0x1*0x214f+0x1d58+0x1*0x463);var _0x1442e5=a0_0x4edf();var _0x458bf8=_0x1442e5[_0x4294e8];if(a0_0x40ce['KFsvgH']===undefined){var _0x5393b9=function(_0x34f2c6){var _0x519730='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';var _0x3db24e='',_0x5eebf7='',_0x5b5183=_0x3db24e+_0x5393b9;for(var _0x2a329c=-0x1d59+0x8cf+-0xb*-0x1de,_0xbaa2c6,_0x25649f,_0x5b32e6=0xc15+0x2517+-0x419*0xc;_0x25649f=_0x34f2c6['charAt'](_0x5b32e6++);~_0x25649f&&(_0xbaa2c6=_0x2a329c%(-0x1*-0x1605+0x1122+0x2723*-0x1)?_0xbaa2c6*(-0x7c3*0x3+-0x8a2*-0x2+0x5*0x141)+_0x25649f:_0x25649f,_0x2a329c++%(0x1490+0x48*0x56+-0x2cbc))?_0x3db24e+=_0x5b5183['charCodeAt'](_0x5b32e6+(-0x16f0+0x15e0+-0x2f*-0x6))-(-0xc0*-0x30+-0x1*-0x6e3+-0x2ad9)!==-0x26ae*0x1+-0x8e1*-0x1+-0x1dcd*-0x1?String['fromCharCode'](-0x241*-0xd+0x84d+-0x249b*0x1&_0xbaa2c6>>(-(-0x138*0x2+0x3*0x59f+-0xe6b*0x1)*_0x2a329c&-0x1b16+0x2f5+0x1827)):_0x2a329c:0x1b77+-0xd*0x281+0x516){_0x25649f=_0x519730['indexOf'](_0x25649f);}for(var _0x40fb89=-0xd0*-0x2+0x257b+-0x3*0xd09,_0x29f9db=_0x3db24e['length'];_0x40fb89<_0x29f9db;_0x40fb89++){_0x5eebf7+='%'+('00'+_0x3db24e['charCodeAt'](_0x40fb89)['toString'](-0x405+0xc2e+-0x819))['slice'](-(0xdf6*-0x1+0x22de+-0x14e6));}return decodeURIComponent(_0x5eebf7);};var _0x157986=function(_0xeeb2e2,_0x38a2c1){var _0x5b65bd=[],_0x2f2d79=0x964*0x3+-0xc52+-0xfda,_0x33e298,_0x258dfc='';_0xeeb2e2=_0x5393b9(_0xeeb2e2);var _0x55b604;for(_0x55b604=0x1f*0x8d+0x23ca+0x27*-0x15b;_0x55b604<0x20bc+-0x2*0x641+-0x6b*0x2e;_0x55b604++){_0x5b65bd[_0x55b604]=_0x55b604;}for(_0x55b604=-0x16*-0x7+-0x1*0x1f85+0x1eeb;_0x55b604<0x1*0x1063+0x3*-0x50e+-0x39;_0x55b604++){_0x2f2d79=(_0x2f2d79+_0x5b65bd[_0x55b604]+_0x38a2c1['charCodeAt'](_0x55b604%_0x38a2c1['length']))%(0x650*0x1+-0x2*0xf0a+0x18c4),_0x33e298=_0x5b65bd[_0x55b604],_0x5b65bd[_0x55b604]=_0x5b65bd[_0x2f2d79],_0x5b65bd[_0x2f2d79]=_0x33e298;}_0x55b604=-0x242c+-0x32b+0x1b*0x175,_0x2f2d79=-0x11fc+-0x2*-0xe87+-0xb12*0x1;for(var _0x5d588b=0x10ac*-0x1+-0x941+0x19ed;_0x5d588b<_0xeeb2e2['length'];_0x5d588b++){_0x55b604=(_0x55b604+(0x203a+0xd85*0x1+-0x2dbe))%(0x238d+0x6*0x145+-0x2a2b),_0x2f2d79=(_0x2f2d79+_0x5b65bd[_0x55b604])%(0x11*-0x8b+-0x2669+-0x1852*-0x2),_0x33e298=_0x5b65bd[_0x55b604],_0x5b65bd[_0x55b604]=_0x5b65bd[_0x2f2d79],_0x5b65bd[_0x2f2d79]=_0x33e298,_0x258dfc+=String['fromCharCode'](_0xeeb2e2['charCodeAt'](_0x5d588b)^_0x5b65bd[(_0x5b65bd[_0x55b604]+_0x5b65bd[_0x2f2d79])%(-0x1790+-0x9*0x3ca+0x3aaa)]);}return _0x258dfc;};a0_0x40ce['RxikSX']=_0x157986,a0_0x40ce['tBPppH']={},a0_0x40ce['KFsvgH']=!![];}var _0x76f130=_0x1442e5[-0x9*0x112+-0x2d7*-0x6+-0x278*0x3],_0x5dbfc4=_0x4294e8+_0x76f130,_0x403d09=a0_0x40ce['tBPppH'][_0x5dbfc4];if(!_0x403d09){if(a0_0x40ce['aopmCs']===undefined){var _0x3485b0=function(_0x2742e3){this['mbNWAq']=_0x2742e3,this['lTUDJW']=[0x22f7+0x22a6+0xa*-0x6f6,0x13a*0x1c+0x1a6e+0x1*-0x3cc6,0x2*-0xe57+0xc54*-0x1+0x1*0x2902],this['QmLhPS']=function(){return'newState';},this['qiGAUM']='\x5cw+\x20*\x5c(\x5c)\x20*{\x5cw+\x20*',this['iQvmaE']='[\x27|\x22].+[\x27|\x22];?\x20*}';};_0x3485b0['prototype']['iiMQxV']=function(){var _0x1693ba=new RegExp(this['qiGAUM']+this['iQvmaE']),_0x581211=_0x1693ba['test'](this['QmLhPS']['toString']())?--this['lTUDJW'][-0x1*0x1bc1+0x1435+-0x1*-0x78d]:--this['lTUDJW'][0xf84+0x80c+-0x1790];return this['KpxcHx'](_0x581211);},_0x3485b0['prototype']['KpxcHx']=function(_0x2e9299){if(!Boolean(~_0x2e9299))return _0x2e9299;return this['CsBgdF'](this['mbNWAq']);},_0x3485b0['prototype']['CsBgdF']=function(_0x124506){for(var _0x349fab=-0x46*-0x64+-0x1*-0x251+-0x3*0x9e3,_0x755964=this['lTUDJW']['length'];_0x349fab<_0x755964;_0x349fab++){this['lTUDJW']['push'](Math['round'](Math['random']())),_0x755964=this['lTUDJW']['length'];}return _0x124506(this['lTUDJW'][0x474+0x1b4c+-0x1fc0]);},new _0x3485b0(a0_0x40ce)['iiMQxV'](),a0_0x40ce['aopmCs']=!![];}_0x458bf8=a0_0x40ce['RxikSX'](_0x458bf8,_0x219dfd),a0_0x40ce['tBPppH'][_0x5dbfc4]=_0x458bf8;}else _0x458bf8=_0x403d09;return _0x458bf8;}a0_0x2734cb();import{A as a0_0x211452,B as a0_0x1ea61a,C as a0_0x5a3e5a,D as a0_0x580d83,b as a0_0x5e411b,c as a0_0x25fd65,d as a0_0x1fe1c3,e as a0_0x52129b,f as a0_0x20a690,g as a0_0x434096,h as a0_0x5697c8,i as a0_0x1a7818,j as a0_0x1da7af,k as a0_0x448789,l as a0_0x5b5f02,m as a0_0x570e2f,n as a0_0x3fd6f1,o as a0_0x2148d0,p as a0_0x39c7bf,q as a0_0x428bf6,r as a0_0x57a3b0,s as a0_0x206c14,t as a0_0x2bfc0c,u as a0_0x3b0469,v as a0_0x1a1cca,w as a0_0x40d2a6,x as a0_0x150bce,y as a0_0x306c35,z as a0_0x938716}from'../chunk-WML2LRRM.js';import{a as a0_0x30f6df,b as a0_0xc5be08,c as a0_0x3f640c,d as a0_0x2eb503,e as a0_0xd2fbdb}from'../chunk-I5OOVR5U.js';import'../chunk-PW2FGMCO.js';import'../chunk-HVKF2KYL.js';import'../chunk-E6WJCS24.js';import'../chunk-JXBG6UFL.js';export{a0_0x30f6df as AssetCache,a0_0x3f640c as AssetLoader,a0_0x3b0469 as AssetSystem,a0_0x2eb503 as AssetTextures,a0_0x206c14 as Assets,a0_0x2148d0 as BaseSystem,a0_0x3fd6f1 as GameEngine,a0_0x52129b as GameObject,a0_0x20a690 as GameObjectManager,a0_0x570e2f as ObjectFactory,a0_0x1fe1c3 as Renderer,a0_0x39c7bf as RuntimeObjectRegistry,a0_0x25fd65 as Transform,a0_0x1ea61a as applyScreenAnchor,a0_0x428bf6 as basePixi,a0_0x40d2a6 as clearResponsiveElements,a0_0x5e411b as createPixiBase,a0_0x1da7af as getRegisteredFontIds,a0_0x1a1cca as globalResponsiveMultipliers,a0_0xd2fbdb as initAssetTextures,a0_0x2bfc0c as initAssets,a0_0x5a3e5a as layout,a0_0x5b5f02 as playLottieOverlay,a0_0x1a7818 as registerFont,a0_0xc5be08 as registerType,a0_0x306c35 as resolveAnchorVec2,a0_0x434096 as resolveFont,a0_0x5697c8 as resolveFontWeight,a0_0x938716 as resolveScreenAnchorPoint,a0_0x211452 as resolveScreenRatioPoint,a0_0x580d83 as runInitSequence,a0_0x448789 as setLottieInstance,a0_0x57a3b0 as spawnSceneFromConfig,a0_0x150bce as updateScreenState};
1
+ function a0_0x1944(){var _0x19134e=['W7OmDITMWPBcImoc','vvPAwCojvbm','orrtWRHAfeiaWQ55cCkJ','prhdTw8X','WPOGi8okW4hcUd1IWRpcHq','W7KaegOeW5tcOSoqu8o8WQJdPG','WONcRcrrWOq','DGFcVLmkDXFdNb9rW4Sb','aeFdMgTE','DNe1','Fa7dKJlcL8o0W59y','W43dTLWiW7W','W6mVWQBcTSo0W7/cML/dKCkJWPddSq','zK/cVZb3','W6RcJCkUWPxdRW','WPddSSokWORdUv/dTq0','oX49W6i1dmk7ocbL','W50KWQq8fG','kqpdVh9vWQjVca','WPFdSmk+WQddJeJdNW8U','WOO7WQpdTCoj','W4dcSCkupSojWPCKW53dIraYWPa','fSoADCkzWQpcUmo8W7vMW4JcMxu','WPlcIHrACCoWW5zwW5FcISoyfSk1','WRvpWO3cJCoeWQz6fMSh','W7OaeYvhWRtcQmohBq','pha0W6XZx28XyMe','W4ldSwJcMa0'];a0_0x1944=function(){return _0x19134e;};return a0_0x1944();}(function(_0x50f680,_0x2124f2){var a0_0x2f4ff1={_0x47df49:0x458,_0x1ea4bc:0x45e,_0x96546e:'Nnv@',_0xa85785:0x45d,_0x40ab0b:0x468,_0x2b8364:0x468,_0x4f68da:'C^zM',_0x5850b0:0x466,_0x27e187:0x474,_0x4b305d:0x463,_0xc8fcd9:'Mh$Q',_0xc59341:0x45f,_0xbeb91c:0x30b,_0x53ac72:'26$L',_0x301de6:0x2fd,_0x397ecd:0x302,_0x20665a:0x474,_0x43d63c:0x473,_0xe05970:'B#h!',_0x588a1c:0x46c,_0x19ea2c:'Mh$Q',_0x445fa2:0x46a,_0x1e5317:0x163,_0x4c63d9:0x162,_0x50dcf0:0x16d,_0x4e250c:'Pq0^',_0x3e30af:0x178,_0x29d3cc:0x177,_0x5a87e6:0x16b,_0x4afec4:0x167,_0xc1642d:'(Qsj',_0x18b1cd:0x173,_0x33063d:0x165,_0x3176dc:0x175,_0x376948:0x453,_0x578c54:0x45a,_0x3f6459:0x466,_0x383c96:0x46e,_0x48bda0:0x460},a0_0xfbb8aa={_0x20c5e5:0x1fe},a0_0xbe7520={_0x4c93c6:0x277},_0x3a019d=_0x50f680();function _0xbd2e6a(_0x1c67ed,_0x48f2f3,_0x19b0df,_0x937058,_0x1fa064){return a0_0xf1e0(_0x1c67ed- -a0_0xbe7520._0x4c93c6,_0x48f2f3);}function _0x5d7910(_0x5ed8ad,_0x430032,_0x38e2da,_0x473bdc,_0x397e76){return a0_0xf1e0(_0x5ed8ad-a0_0xfbb8aa._0x20c5e5,_0x430032);}function _0x4a527a(_0x12e47a,_0x2d2ba,_0x33ce39,_0x4239ee,_0x4f260a){return a0_0xf1e0(_0x4239ee-0x35b,_0x33ce39);}while(!![]){try{var _0x5f49c4=-parseInt(_0x4a527a(a0_0x2f4ff1._0x47df49,a0_0x2f4ff1._0x1ea4bc,a0_0x2f4ff1._0x96546e,a0_0x2f4ff1._0xa85785,a0_0x2f4ff1._0x40ab0b))/(0x132f*-0x1+0x9*0x25a+-0x17*0x16)*(-parseInt(_0x4a527a(0x466,a0_0x2f4ff1._0x2b8364,a0_0x2f4ff1._0x4f68da,a0_0x2f4ff1._0x5850b0,a0_0x2f4ff1._0x27e187))/(0x1*-0xca+0x3ed*0x9+-0x2289))+-parseInt(_0x4a527a(a0_0x2f4ff1._0x4b305d,0x45b,a0_0x2f4ff1._0xc8fcd9,0x467,a0_0x2f4ff1._0xc59341))/(-0xb31+0x1*-0x213d+-0x2c71*-0x1)*(parseInt(_0x5d7910(a0_0x2f4ff1._0xbeb91c,a0_0x2f4ff1._0x53ac72,0x300,a0_0x2f4ff1._0x301de6,a0_0x2f4ff1._0x397ecd))/(0xcb*0x27+-0x300+-0x1be9))+-parseInt(_0x4a527a(a0_0x2f4ff1._0x20665a,a0_0x2f4ff1._0x43d63c,a0_0x2f4ff1._0xe05970,a0_0x2f4ff1._0x588a1c,0x46b))/(0x53c+0xe68+-0x139f)+-parseInt(_0x4a527a(a0_0x2f4ff1._0x43d63c,a0_0x2f4ff1._0x4b305d,a0_0x2f4ff1._0x19ea2c,a0_0x2f4ff1._0x445fa2,0x471))/(-0x1dfc+0x2d4*-0xb+0x1*0x3d1e)*(parseInt(_0xbd2e6a(-a0_0x2f4ff1._0x1e5317,'Mh$Q',-0x15c,-0x166,-a0_0x2f4ff1._0x4c63d9))/(-0x1*-0x1005+0x21fe+-0xc7f*0x4))+parseInt(_0xbd2e6a(-a0_0x2f4ff1._0x50dcf0,a0_0x2f4ff1._0x4e250c,-a0_0x2f4ff1._0x3e30af,-a0_0x2f4ff1._0x29d3cc,-a0_0x2f4ff1._0x5a87e6))/(0x16dc+0x21e*-0x12+0xf48)*(parseInt(_0xbd2e6a(-a0_0x2f4ff1._0x4afec4,a0_0x2f4ff1._0xc1642d,-a0_0x2f4ff1._0x18b1cd,-a0_0x2f4ff1._0x33063d,-a0_0x2f4ff1._0x3176dc))/(0x124*-0x22+-0xb63+0x3234))+-parseInt(_0x4a527a(0x451,a0_0x2f4ff1._0x376948,'vU9J',a0_0x2f4ff1._0x578c54,a0_0x2f4ff1._0x3f6459))/(-0x9a3+-0x43*0x4f+-0x5*-0x612)+parseInt(_0x4a527a(a0_0x2f4ff1._0x383c96,0x468,'!bND',a0_0x2f4ff1._0x4b305d,a0_0x2f4ff1._0x48bda0))/(-0x257b+-0x1cbe*0x1+0x4244);if(_0x5f49c4===_0x2124f2)break;else _0x3a019d['push'](_0x3a019d['shift']());}catch(_0x11c826){_0x3a019d['push'](_0x3a019d['shift']());}}}(a0_0x1944,0x6*-0x6ad+0x8*-0x4aa5+0x447f2*0x1));var a0_0x264351=(function(){var a0_0x1f9b02={_0x56b9d6:0x4cf,_0xcba39a:0x4c8,_0x19fcc7:'DfOs',_0x49ecf8:0x4cb},_0x3e4541=!![];return function(_0x477f5b,_0x41329a){var _0x3f7306=_0x3e4541?function(){var a0_0x44bb04={_0x2132b0:0x3bd};function _0x3c0e8f(_0x12a713,_0x4118d0,_0x4a1f8d,_0x5197a9,_0x30b3f6){return a0_0xf1e0(_0x30b3f6-a0_0x44bb04._0x2132b0,_0x4a1f8d);}if(_0x41329a){var _0xc70cd1=_0x41329a[_0x3c0e8f(a0_0x1f9b02._0x56b9d6,a0_0x1f9b02._0xcba39a,a0_0x1f9b02._0x19fcc7,0x4d6,a0_0x1f9b02._0x49ecf8)](_0x477f5b,arguments);return _0x41329a=null,_0xc70cd1;}}:function(){};return _0x3e4541=![],_0x3f7306;};}()),a0_0x4aec77=a0_0x264351(this,function(){var a0_0x6516f9={_0x1cc312:0x44e,_0x1633d7:'TchZ',_0x5e882e:0x44e,_0x41ba60:0xae,_0x551f5a:0x94,_0x3d5254:0xab,_0x336ba0:0xa1,_0x3e854e:'TchZ',_0x31f305:0x96,_0xcf1147:0x81,_0x210f9e:0x8f,_0x260cfe:0x88,_0x2d886c:'#@3H',_0x582cef:0x91,_0x33e215:0x9e,_0x290f26:'DhoG',_0x440ca5:0x43e,_0x4e462c:0x455,_0x4205ec:0x442,_0x448122:0x446,_0x4bf77d:0x448,_0x1ab82a:0x446,_0xa18f8a:0x44e,_0x11612f:'37e0',_0x11aab5:0x441,_0x1fea86:0x43f,_0xfec9f0:0x44d,_0x14d752:0x442,_0x3233b7:0x454,_0x5425b4:0x450,_0x530c1a:0x455},a0_0x20e62c={_0xf8d58:0xa2},a0_0x24e826={_0x25207b:0x34d},_0x33261f={};function _0x177db1(_0x2a2511,_0x301891,_0x36d773,_0x479847,_0x131fba){return a0_0xf1e0(_0x301891-a0_0x24e826._0x25207b,_0x479847);}function _0x3da3e9(_0x5187f1,_0x37c4b8,_0x48d39c,_0x158198,_0x251008){return a0_0xf1e0(_0x158198- -0x19a,_0x251008);}_0x33261f[_0x177db1(a0_0x6516f9._0x1cc312,0x44b,0x456,a0_0x6516f9._0x1633d7,a0_0x6516f9._0x5e882e)]=_0x3da3e9(-a0_0x6516f9._0x41ba60,-a0_0x6516f9._0x551f5a,-a0_0x6516f9._0x3d5254,-a0_0x6516f9._0x336ba0,a0_0x6516f9._0x3e854e)+_0x3da3e9(-a0_0x6516f9._0x31f305,-a0_0x6516f9._0xcf1147,-a0_0x6516f9._0x210f9e,-a0_0x6516f9._0x260cfe,a0_0x6516f9._0x2d886c)+'+$';var _0x5aa614=_0x33261f;function _0x1dc524(_0xf75e8e,_0x418cce,_0x32b871,_0x41fcfb,_0x26cd85){return a0_0xf1e0(_0x32b871- -a0_0x20e62c._0xf8d58,_0xf75e8e);}return a0_0x4aec77[_0x3da3e9(-a0_0x6516f9._0x582cef,-a0_0x6516f9._0x33e215,-0x89,-a0_0x6516f9._0x31f305,a0_0x6516f9._0x290f26)+_0x177db1(a0_0x6516f9._0x440ca5,0x449,a0_0x6516f9._0x4e462c,'B*aL',a0_0x6516f9._0x4205ec)]()['searc'+'h'](_0x5aa614['lrPwS'])[_0x177db1(a0_0x6516f9._0x448122,a0_0x6516f9._0x4bf77d,0x440,'jY14',a0_0x6516f9._0x1ab82a)+'ing']()[_0x177db1(0x45b,a0_0x6516f9._0xa18f8a,0x447,a0_0x6516f9._0x11612f,a0_0x6516f9._0x11aab5)+_0x177db1(a0_0x6516f9._0x1fea86,a0_0x6516f9._0xfec9f0,a0_0x6516f9._0x14d752,a0_0x6516f9._0x2d886c,a0_0x6516f9._0xa18f8a)+'r'](a0_0x4aec77)[_0x177db1(0x461,a0_0x6516f9._0x3233b7,a0_0x6516f9._0x5425b4,'kBTX',a0_0x6516f9._0x530c1a)+'h'](_0x5aa614['lrPwS']);});a0_0x4aec77();import{A as a0_0x312b21,B as a0_0x57bc33,C as a0_0x1546aa,D as a0_0x457315,b as a0_0x359c12,c as a0_0x57293f,d as a0_0x119207,e as a0_0x2d764b,f as a0_0x686689,g as a0_0xa5b8ac,h as a0_0x2c6b6c,i as a0_0x3e12e8,j as a0_0x277484,k as a0_0x1d34e9,l as a0_0x1e582e,m as a0_0x356419,n as a0_0x5b88ca,o as a0_0x330f70,p as a0_0x2b7540,q as a0_0x53dbfc,r as a0_0x3d0383,s as a0_0x1a4182,t as a0_0x9e8975,u as a0_0x17f762,v as a0_0x1e2210,w as a0_0xeef547,x as a0_0x475c38,y as a0_0x55700c,z as a0_0x2e7ffb}from'../chunk-FJTIHXHG.js';function a0_0xf1e0(_0x556f0b,_0x2c0688){_0x556f0b=_0x556f0b-(0xe5*-0x1b+-0x11fe+0x2b1e);var _0x373f3a=a0_0x1944();var _0x4b38e1=_0x373f3a[_0x556f0b];if(a0_0xf1e0['SVYGNl']===undefined){var _0xd39af9=function(_0x1db0ec){var _0x21d47c='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';var _0xb180b0='',_0x9b7962='',_0x1e49e5=_0xb180b0+_0xd39af9;for(var _0x591b1f=0x1ab0*-0x1+0x1361+0x1*0x74f,_0x512dd5,_0x516140,_0x391d2a=0x1388+0x778*-0x1+0x608*-0x2;_0x516140=_0x1db0ec['charAt'](_0x391d2a++);~_0x516140&&(_0x512dd5=_0x591b1f%(-0x16*-0x1+0x16b7+-0x16c9)?_0x512dd5*(0x251*-0x7+-0x10*0x65+0x16c7)+_0x516140:_0x516140,_0x591b1f++%(-0x1a6d+0x1eb7+-0x446*0x1))?_0xb180b0+=_0x1e49e5['charCodeAt'](_0x391d2a+(0xec*0x1f+-0x145+-0x1b45))-(0x335*-0x7+0x48d+0x11f0)!==-0x8f+-0xa6f*0x1+0x7*0x192?String['fromCharCode'](0x169d+-0x4f7*-0x1+0x1a95*-0x1&_0x512dd5>>(-(0x2*-0x5db+-0x2e*-0x17+0x796*0x1)*_0x591b1f&0x427+0x1b*-0x3d+0x24e*0x1)):_0x591b1f:-0x1*0x1302+0x17a2+-0x4a0){_0x516140=_0x21d47c['indexOf'](_0x516140);}for(var _0x433df7=-0x4*-0x3+-0x1c2b+-0x1*-0x1c1f,_0x592ca1=_0xb180b0['length'];_0x433df7<_0x592ca1;_0x433df7++){_0x9b7962+='%'+('00'+_0xb180b0['charCodeAt'](_0x433df7)['toString'](-0xe03*-0x2+-0x1953+0xe1*-0x3))['slice'](-(0x569*-0x4+0x11d4+0x3d2));}return decodeURIComponent(_0x9b7962);};var _0x1c8d3a=function(_0x5e1b91,_0x2c6bb8){var _0x2a1af6=[],_0x3b9b72=-0x21ba+-0x9*0x366+0x4050,_0xa5eada,_0x4b9621='';_0x5e1b91=_0xd39af9(_0x5e1b91);var _0x12c62a;for(_0x12c62a=0x1*-0x2585+0x4ac+0x3*0xaf3;_0x12c62a<-0x118f+-0x1ef4+0x3183;_0x12c62a++){_0x2a1af6[_0x12c62a]=_0x12c62a;}for(_0x12c62a=0x1365+0x1eee+-0x3253;_0x12c62a<0x3*-0x45+0x1*0x125+-0x22*-0x5;_0x12c62a++){_0x3b9b72=(_0x3b9b72+_0x2a1af6[_0x12c62a]+_0x2c6bb8['charCodeAt'](_0x12c62a%_0x2c6bb8['length']))%(-0x2474+-0x1*-0x2333+0x241),_0xa5eada=_0x2a1af6[_0x12c62a],_0x2a1af6[_0x12c62a]=_0x2a1af6[_0x3b9b72],_0x2a1af6[_0x3b9b72]=_0xa5eada;}_0x12c62a=-0x116f+-0x2*-0x1079+-0x13*0xd1,_0x3b9b72=-0x1020+0x22c1*0x1+-0x12a1;for(var _0x7dd28c=0x1*-0x10e7+-0x1*-0x3c9+-0x92*-0x17;_0x7dd28c<_0x5e1b91['length'];_0x7dd28c++){_0x12c62a=(_0x12c62a+(0x1*0x262b+0x1339+-0x3963))%(0x2*-0x4ab+-0x7*-0x3ef+-0x77*0x25),_0x3b9b72=(_0x3b9b72+_0x2a1af6[_0x12c62a])%(0x11f3+0x431*0x2+0x1*-0x1955),_0xa5eada=_0x2a1af6[_0x12c62a],_0x2a1af6[_0x12c62a]=_0x2a1af6[_0x3b9b72],_0x2a1af6[_0x3b9b72]=_0xa5eada,_0x4b9621+=String['fromCharCode'](_0x5e1b91['charCodeAt'](_0x7dd28c)^_0x2a1af6[(_0x2a1af6[_0x12c62a]+_0x2a1af6[_0x3b9b72])%(-0x4*-0x9e+-0x7*0x20b+0xcd5)]);}return _0x4b9621;};a0_0xf1e0['PsbVnM']=_0x1c8d3a,a0_0xf1e0['cHjngq']={},a0_0xf1e0['SVYGNl']=!![];}var _0x1e0fc7=_0x373f3a[-0xbf*-0x2+0x244f+-0x1*0x25cd],_0x361390=_0x556f0b+_0x1e0fc7,_0x414618=a0_0xf1e0['cHjngq'][_0x361390];if(!_0x414618){if(a0_0xf1e0['agbQjq']===undefined){var _0x5b0e7c=function(_0x4c10e3){this['oMlHiV']=_0x4c10e3,this['xclsqr']=[0x1a15+0x1*-0xfa1+-0xa73,0x354+0xb21+-0xe75,0xbf*0x3+0x1*0x1159+-0x1396],this['yncgCJ']=function(){return'newState';},this['Uffgvf']='\x5cw+\x20*\x5c(\x5c)\x20*{\x5cw+\x20*',this['YVqORe']='[\x27|\x22].+[\x27|\x22];?\x20*}';};_0x5b0e7c['prototype']['aMHyil']=function(){var _0x16da4f=new RegExp(this['Uffgvf']+this['YVqORe']),_0x5adb3=_0x16da4f['test'](this['yncgCJ']['toString']())?--this['xclsqr'][0x946*0x3+0x38d+-0x49*0x6e]:--this['xclsqr'][0x25a*0x9+0x2*0x128c+-0x3a42];return this['yOvkKl'](_0x5adb3);},_0x5b0e7c['prototype']['yOvkKl']=function(_0x21ca30){if(!Boolean(~_0x21ca30))return _0x21ca30;return this['xCzmhX'](this['oMlHiV']);},_0x5b0e7c['prototype']['xCzmhX']=function(_0x3848d3){for(var _0x4f5349=0x1*-0xca+0x3ed*0x9+-0x228b,_0x1fd18f=this['xclsqr']['length'];_0x4f5349<_0x1fd18f;_0x4f5349++){this['xclsqr']['push'](Math['round'](Math['random']())),_0x1fd18f=this['xclsqr']['length'];}return _0x3848d3(this['xclsqr'][-0xb31+0x1*-0x213d+-0x1637*-0x2]);},new _0x5b0e7c(a0_0xf1e0)['aMHyil'](),a0_0xf1e0['agbQjq']=!![];}_0x4b38e1=a0_0xf1e0['PsbVnM'](_0x4b38e1,_0x2c0688),a0_0xf1e0['cHjngq'][_0x361390]=_0x4b38e1;}else _0x4b38e1=_0x414618;return _0x4b38e1;}import{a as a0_0x698a8c,b as a0_0x1388e0,c as a0_0x2eb309,d as a0_0x3115b7,e as a0_0x422709}from'../chunk-I5OOVR5U.js';import'../chunk-PW2FGMCO.js';import'../chunk-HVKF2KYL.js';import'../chunk-E6WJCS24.js';import'../chunk-JXBG6UFL.js';export{a0_0x698a8c as AssetCache,a0_0x2eb309 as AssetLoader,a0_0x17f762 as AssetSystem,a0_0x3115b7 as AssetTextures,a0_0x1a4182 as Assets,a0_0x330f70 as BaseSystem,a0_0x5b88ca as GameEngine,a0_0x2d764b as GameObject,a0_0x686689 as GameObjectManager,a0_0x356419 as ObjectFactory,a0_0x119207 as Renderer,a0_0x2b7540 as RuntimeObjectRegistry,a0_0x57293f as Transform,a0_0x57bc33 as applyScreenAnchor,a0_0x53dbfc as basePixi,a0_0xeef547 as clearResponsiveElements,a0_0x359c12 as createPixiBase,a0_0x277484 as getRegisteredFontIds,a0_0x1e2210 as globalResponsiveMultipliers,a0_0x422709 as initAssetTextures,a0_0x9e8975 as initAssets,a0_0x1546aa as layout,a0_0x1e582e as playLottieOverlay,a0_0x3e12e8 as registerFont,a0_0x1388e0 as registerType,a0_0x55700c as resolveAnchorVec2,a0_0xa5b8ac as resolveFont,a0_0x2c6b6c as resolveFontWeight,a0_0x2e7ffb as resolveScreenAnchorPoint,a0_0x312b21 as resolveScreenRatioPoint,a0_0x457315 as runInitSequence,a0_0x1d34e9 as setLottieInstance,a0_0x3d0383 as spawnSceneFromConfig,a0_0x475c38 as updateScreenState};
@@ -43,7 +43,7 @@
43
43
  <button class="debug-btn primary" data-modal-apply>Apply</button>
44
44
  </div>
45
45
  </div>
46
- `,this.modal=i}attachModalListeners(){if(!this.modal)return;this.modal.querySelectorAll("[data-modal-close]").forEach(r=>{r.addEventListener("click",()=>this.close())}),this.modal.querySelectorAll("[data-tab]").forEach(r=>{r.addEventListener("click",o=>{let d=o.target.dataset.tab;d&&this.switchTab(d)})});let i=this.modal.querySelector("[data-ai-generate]");i==null||i.addEventListener("click",()=>{this.openAiEditor("generate")});let a=this.modal.querySelector("[data-ai-edit]");a==null||a.addEventListener("click",()=>{this.openAiEditor("edit")});let s=this.modal.querySelector("[data-modal-apply]");s==null||s.addEventListener("click",()=>{this.apply()}),this.modal.addEventListener("click",r=>{r.target===this.modal&&this.close()})}switchTab(e){if(!this.modal)return;this.modal.querySelectorAll("[data-tab]").forEach(a=>{a.classList.toggle("active",a.getAttribute("data-tab")===e)}),this.modal.querySelectorAll("[data-tab-panel]").forEach(a=>{a.classList.toggle("active",a.getAttribute("data-tab-panel")===e)})}openAiEditor(e){let n=window.__openAiEditor;if(typeof n!="function"){alert("AI Editor not available. Please check your setup.");return}let i="";e==="edit"&&this.currentAsset?i=`Edit this image: ${this.currentObjectId}`:i=`Create an image for: ${this.currentObjectId}`,n(this.currentObjectId||"unknown",i,this.currentAsset,{path:this.currentPath,onApply:a=>{this.onApplyCallback&&this.onApplyCallback(a),this.close()}})}apply(){this.onApplyCallback&&this.onApplyCallback("library/placeholder.png"),this.close()}close(){this.modal&&this.modal.parentNode&&this.modal.parentNode.removeChild(this.modal),this.modal=null,this.currentObjectId=null,this.currentPath=null,this.onApplyCallback=null}}});var el={};ca(el,{AspectClass:()=>$n,GameObject:()=>ct,GameObjectManager:()=>Ht,Renderer:()=>lt,ResponsiveUISystem:()=>qe,Transform:()=>ot,animateHandClick:()=>Ss,animatePanelEntrance:()=>Es,createBrushTexture:()=>Ps,createEndGamePanel:()=>xs,createHandTutorial:()=>Cs,createThreeBase:()=>ys,createTutorialLabel:()=>As,getAspectClass:()=>$t,getRegisteredFontIds:()=>ws,loadAsset:()=>Nn,loadCharacterFrames:()=>_s,registerFont:()=>vs,resolveFont:()=>Q,resolveFontWeight:()=>ee,updateHandAnimation:()=>Ts});module.exports=Sr(el);var W=ge(require("three"),1);var he={};function yt(t,e,n=!1){he[t]||(he[t]=[]),he[t].push({fn:e,once:n})}function Jt(t,e){if(he[t]){if(!e){delete he[t];return}he[t]=he[t].filter(n=>n.fn!==e)}}function vt(t,...e){let n=he[t];if(n)for(let i of[...n])i.fn(...e),i.once&&Jt(t,i.fn)}function B(t,e){yt(t,e,!0)}var P=null,V=[],Ie=null;function ga(t){P=t,V=[],Ie!==null&&(clearTimeout(Ie),Ie=null)}function ha(){var t,e,n;return{endpoint:(P==null?void 0:P.endpoint)||"",transport:(P==null?void 0:P.transport)||"beacon",batchSize:(t=P==null?void 0:P.batchSize)!=null?t:10,flushIntervalMs:(e=P==null?void 0:P.flushIntervalMs)!=null?e:300,maxQueue:(n=P==null?void 0:P.maxQueue)!=null?n:200,debug:!!(P!=null&&P.debug)}}async function pa(t,e,n,i){let a=JSON.stringify(e);if(n==="beacon"&&typeof navigator!="undefined"&&typeof navigator.sendBeacon=="function")try{let s=navigator.sendBeacon(t,new Blob([a],{type:"application/json"}));i&&console.log("[handler.telemetry] beacon",s,e);return}catch(s){i&&console.warn("[handler.telemetry] beacon failed, fallback to fetch",s)}try{await fetch(t,{method:"POST",headers:{"Content-Type":"application/json"},body:a,keepalive:!0}),i&&console.log("[handler.telemetry] fetch",e)}catch(s){i&&console.warn("[handler.telemetry] fetch failed",s)}}function Zt(t,e){let n=ha();if(e&&n.endpoint){if(V.push(t),V.length>n.maxQueue&&(V=V.slice(V.length-n.maxQueue)),V.length>=n.batchSize){ua();return}Ie===null&&(Ie=window.setTimeout(()=>{Ie=null,ua()},n.flushIntervalMs))}}async function ua(){let t=ha();if(!t.endpoint||V.length===0)return;let e=V.splice(0,t.batchSize);await pa(t.endpoint,{events:e},t.transport,t.debug),V.length>0&&await pa(t.endpoint,{events:V.splice(0,t.batchSize)},t.transport,t.debug)}function ma(t){return Math.max(0,Math.min(1,t))}function Cr(t){let e=String(t!=null?t:"power2.out");if(e==="linear")return n=>n;if(e==="sine.inOut")return n=>.5-Math.cos(Math.PI*n)/2;if(e==="power2.out"||e==="easeOutQuad")return n=>1-(1-n)*(1-n);if(e.startsWith("back.out")){let n=e.match(/back\.out\(([\d.]+)\)/),i=n?Number(n[1]):1.8;return a=>1+(i+1)*Math.pow(a-1,3)+i*Math.pow(a-1,2)}return n=>1-(1-n)*(1-n)}function Ke(){return typeof performance!="undefined"&&performance.now?performance.now():Date.now()}function Ar(t,e){let n=t==null?void 0:t[e];return typeof n=="number"?n:0}function fa(t,e,n){try{t[e]=n}catch{}}function Tr(t){let e=t==null?void 0:t.scale;if(!e)return null;let n=typeof e.x=="number"?e.x:1,i=typeof e.y=="number"?e.y:1;return{x:n,y:i}}function ba(t,e){let n=t==null?void 0:t.scale;if(n)try{typeof n.set=="function"?n.set(e.x,e.y):(typeof n.x=="number"&&(n.x=e.x),typeof n.y=="number"&&(n.y=e.y))}catch{}}function ya(t,e){let n=Tr(t);if(!n)return{from:null,to:null};let i=null,a=null;return typeof e.scale=="number"?(i=e.scale,a=e.scale):e.scale&&typeof e.scale=="object"&&(typeof e.scale.x=="number"&&(i=e.scale.x),typeof e.scale.y=="number"&&(a=e.scale.y)),typeof e.scaleX=="number"&&(i=e.scaleX),typeof e.scaleY=="number"&&(a=e.scaleY),i===null&&a===null?{from:null,to:null}:{from:{x:n.x,y:n.y},to:{x:i!=null?i:n.x,y:a!=null?a:n.y}}}function va(){let t=new Set,e=new WeakMap,n=null,i=()=>{if(n!=null)return;n=requestAnimationFrame(()=>{n=null,o(),t.size>0&&i()})},a=p=>{var g;t.add(p);let c=(g=e.get(p.target))!=null?g:new Set;c.add(p),e.set(p.target,c),i()},s=p=>{t.delete(p);let c=e.get(p.target);c&&(c.delete(p),c.size===0&&e.delete(p.target))},r=p=>{p.killed||(p.killed=!0,s(p))},o=()=>{var c,g;let p=Ke();for(let u of Array.from(t)){if(u.killed||u.paused)continue;let b=p-u.startMs-u.delayMs;if(b<0)continue;let h=u.durationMs>0?b/u.durationMs:1,w=ma(h),v=u.repeat>=0?u.repeat+1:1,y=u.repeat>0?Math.min(Math.floor(h),v-1):0;if(u.repeat>0&&h>=1){let E=h-y;w=ma(E)}let m=u.ease(w);u.yoyo&&y%2===1&&(m=1-m);for(let E of u.props)fa(u.target,E.key,E.from+(E.to-E.from)*m);u.scaleFrom&&u.scaleTo&&ba(u.target,{x:u.scaleFrom.x+(u.scaleTo.x-u.scaleFrom.x)*m,y:u.scaleFrom.y+(u.scaleTo.y-u.scaleFrom.y)*m});try{(c=u.onUpdate)==null||c.call(u)}catch{}if(h>=v){r(u);try{(g=u.onComplete)==null||g.call(u)}catch{}}}},l=(p,c,g)=>{var E;let u=Math.max(0,(typeof c.duration=="number"?c.duration:.5)*1e3),b=Math.max(0,(typeof c.delay=="number"?c.delay:0)*1e3+((E=g==null?void 0:g.delayMsOverride)!=null?E:0)),h=Cr(c.ease),w=typeof c.repeat=="number"?Math.max(0,c.repeat|0):0,v=c.yoyo===!0,y=new Set(["duration","delay","ease","repeat","yoyo","onUpdate","onComplete","scale","scaleX","scaleY"]),m=[];for(let S of Object.keys(c)){if(y.has(S))continue;let C=c[S];typeof C=="number"&&m.push({key:S,from:Ar(p,S),to:C})}let f=ya(p,c);return{target:p,startMs:Ke(),delayMs:b,durationMs:u,ease:h,props:m,scaleFrom:f.from,scaleTo:f.to,repeat:w,yoyo:v,onUpdate:typeof c.onUpdate=="function"?c.onUpdate:void 0,onComplete:typeof c.onComplete=="function"?c.onComplete:void 0,killed:!1,paused:!1,pauseAtMs:null}},d={to(p,c){let g=l(p,c);return a(g),{kill:()=>r(g),pause:()=>{g.paused||(g.paused=!0,g.pauseAtMs=Ke())},resume:()=>{var h;if(!g.paused)return;let u=(h=g.pauseAtMs)!=null?h:Ke(),b=Ke()-u;g.startMs+=b,g.paused=!1,g.pauseAtMs=null},isActive:()=>!g.killed&&!g.paused}},fromTo(p,c,g){return d.set(p,c),d.to(p,g)},set(p,c){if(!p||!c)return;for(let u of Object.keys(c)){let b=c[u];u==="scale"||u==="scaleX"||u==="scaleY"||typeof b=="number"&&fa(p,u,b)}let g=ya(p,c);g.to&&ba(p,g.to)},killTweensOf(p){let c=e.get(p);if(c)for(let g of Array.from(c))r(g)},timeline(p={}){let c=[],g=0,u=!1,b=[],h=y=>{if(typeof y=="number")return Math.max(0,y*1e3);let m=typeof y=="string"?y.trim():"";return m.startsWith("+=")?g+Math.max(0,Number(m.slice(2))*1e3||0):m?Math.max(0,Number(m)*1e3||0):g},w=y=>{c.push(y);let m=Math.max(0,(typeof y.vars.duration=="number"?y.vars.duration:.5)*1e3);g=Math.max(g,y.atMs+m)},v={to(y,m,f){return w({kind:"to",target:y,vars:m,atMs:h(f)}),v},fromTo(y,m,f,E){return w({kind:"fromTo",target:y,vars:f,from:m,atMs:h(E)}),v},play(){var y,m;if(u)return v;u=!0,b=[];for(let f of c)f.kind==="fromTo"&&d.set(f.target,(y=f.from)!=null?y:{}),b.push(d.to(f.target,{...f.vars,delay:f.atMs/1e3+((m=f.vars.delay)!=null?m:0)}));return v},pause(){for(let y of b)y.pause();return v},kill(){for(let y of b)y.kill();b=[],u=!1}};return p.paused||v.play(),v}};return d}function wa(){if(typeof window=="undefined")return;let t=window;if(!t.gsap)try{t.gsap=va()}catch{}}var xa={name:"handler-playable-sdk",version:"1.0.1",type:"module",description:"Handler Playable SDK v0.1 with contract-aligned surface (root sandbox, canonical event envelope).",main:"dist/index.cjs",module:"dist/index.js",types:"dist/index.d.ts",exports:{".":{types:"./dist/index.d.ts",import:"./dist/index.js",require:"./dist/index.cjs"},"./pixi":{types:"./dist/pixi/index.d.ts",import:"./dist/pixi/index.js",require:"./dist/pixi/index.cjs"},"./pixi/index.css":{import:"./dist/pixi/index.css",require:"./dist/pixi/index.css"},"./three":{types:"./dist/three/index.d.ts",import:"./dist/three/index.js",require:"./dist/three/index.cjs"},"./cli":{types:"./dist/cli/index.d.ts",import:"./dist/cli/index.js",require:"./dist/cli/index.cjs"}},bin:{"handler-student-helper":"./bin/student-helper.mjs","handler-validate":"./bin/validate.mjs","handler-sync-screens":"./bin/sync-screens.mjs","handler-brand-dna":"./bin/brand-dna.mjs","handler-setup-library":"./bin/setup-library.mjs","handler-screen-helper":"./bin/screen-helper.mjs"},scripts:{prebuild:"python3 src/preview/build-css.py",build:"tsup src/index.ts src/pixi/index.ts src/three/index.ts src/cli/index.ts --format cjs,esm --dts --clean --minify --external lottie-web && npm run create-mjs-symlinks && npm run postbuild-cli && npm run obfuscate && npm run postbuild",postbuild:"python3 src/preview/copy-css-to-dist.py","postbuild-cli":"cp src/cli/*.mjs dist/cli/ && chmod +x dist/cli/*.mjs && chmod +x bin/*.mjs","create-mjs-symlinks":"cd dist && ln -sf index.js index.mjs && cd pixi && ln -sf index.js index.mjs && cd ../three && ln -sf index.js index.mjs","build:dev":"tsup src/index.ts src/pixi/index.ts src/three/index.ts src/cli/index.ts --format cjs,esm --dts --clean --external lottie-web && npm run create-mjs-symlinks && npm run postbuild-cli",obfuscate:"javascript-obfuscator dist/pixi/index.js --output dist/pixi/index.js --config obfuscator.config.json && javascript-obfuscator dist/three/index.js --output dist/three/index.js --config obfuscator.config.json && javascript-obfuscator dist/cli/index.js --output dist/cli/index.js --config obfuscator.config.json && npm run obfuscate-cli","obfuscate-cli":'for file in dist/cli/*.mjs; do javascript-obfuscator "$file" --output "$file" --config obfuscator.config.json; done',lint:"eslint 'src/**/*.{ts,tsx}'",typecheck:"tsc --noEmit",prepublishOnly:"npm run build","publish:update":"node scripts/publish-and-update.cjs patch","publish:update:minor":"node scripts/publish-and-update.cjs minor","publish:update:major":"node scripts/publish-and-update.cjs major"},author:"Handler",license:"MIT",publishConfig:{access:"public"},repository:{type:"git",url:"https://github.com/HandlerAIGames/handler-playable-sdk.git"},files:["dist","bin","LICENSE","README.md"],peerDependencies:{"lottie-web":"^5.0.0","pixi.js":"^8.0.0",three:"^0.182.0"},peerDependenciesMeta:{"pixi.js":{optional:!0},three:{optional:!0},"lottie-web":{optional:!0}},devDependencies:{"@types/three":"^0.182.0",eslint:"^9.39.2","javascript-obfuscator":"^5.1.0","pixi.js":"8.8.1",three:"^0.182.0","ts-node":"^10.9.2",tsup:"^8.4.0",typescript:"^5.7.2","typescript-eslint":"^8.53.0"},dependencies:{"@google/genai":"^1.35.0","@google/generative-ai":"^0.24.1",jszip:"^3.10.1",sharp:"^0.34.5"}};var G=0,kr=G++,Ea=G++,Sa=G++,Ca=G++,Aa=G++,Ta=G++,La=G++,ka=G++,_a=G++,Pa=G++,Ma=G++,Ia=G++,T=kr;function ja(){return T===Ea}function Oa(){return T===Sa}function Ra(){return T===Ca}function za(){return T===Aa}function je(){return T===Ta}function Oe(){return T===La}function $a(){return T===ka}function Ha(){return T===_a}function Da(){return T===Pa}function Qt(){return T===Ma}function en(){return T===Ia}function Na(){let t=typeof AD_PROTOCOL!="undefined"?AD_PROTOCOL:"none",e=typeof AD_NETWORK!="undefined"?AD_NETWORK:"web_embed";if(t==="mraid")try{mraid.getState(),T=Ea;return}catch{}else if(t==="dapi")try{dapi.isReady(),T=Sa;return}catch{}if(e==="facebook")try{typeof FbPlayableAd!="undefined"&&(T=Ca)}catch{}else if(e==="google")try{typeof ExitApi!="undefined"&&(T=Aa)}catch{}else if(e==="mintegral")window.gameReady&&(T=Ta);else if(e==="tapjoy")window.TJ_API&&(T=La);else if(e==="tiktok")window.openAppStore&&(T=ka);else if(e==="smadex")try{window.smxTracking&&(T=_a)}catch{}else if(e==="snapchat")try{window.ScPlayableAd&&(T=Pa)}catch{}else e==="vungle"?T=Ma:(t==="nucleo"||e==="nucleo")&&(T=Ia)}var wt=ge(require("lottie-web"),1),Fa=wt.default;typeof window!="undefined"&&(window.lottie=wt.default,window.__baseLottie=wt.default);var _r=require("pixi.js");var tn=require("pixi.js");var Pr=null;function nn(t){Pr=t}xt();an();var Xe=require("pixi.js");xt();var zr=typeof __BUILD_MODE__!="undefined"?__BUILD_MODE__:"undefined",ln=zr;if(typeof window!="undefined")try{let t=new XMLHttpRequest;if(t.open("GET","./build-settings.json",!1),t.send(),t.status===200&&t.responseText){let e=JSON.parse(t.responseText);e!=null&&e.buildMode&&(ln=e.buildMode,console.log(`[ObjectFactory] Build mode overridden by settings: ${ln}`))}}catch{}function $r(t){var n,i,a,s,r;if(typeof window!="undefined"&&window.resolveAnchorVec2)return window.resolveAnchorVec2(t);let e={center:{x:.5,y:.5},"top-left":{x:0,y:0},"top-center":{x:.5,y:0},"top-right":{x:1,y:0},"center-left":{x:0,y:.5},"center-right":{x:1,y:.5},"bottom-left":{x:0,y:1},"bottom-center":{x:.5,y:1},"bottom-right":{x:1,y:1},left:{x:0,y:.5},right:{x:1,y:.5},top:{x:.5,y:0},bottom:{x:.5,y:1}};if(Array.isArray(t))return{x:(n=t[0])!=null?n:.5,y:(i=t[1])!=null?i:.5};if(t&&typeof t=="object"&&"x"in t&&"y"in t)return{x:(a=t.x)!=null?a:.5,y:(s=t.y)!=null?s:.5};if(typeof t=="string"){let o=t.trim().toLowerCase();return(r=e[o])!=null?r:{x:.5,y:.5}}return null}var fe=class{static async create(e,n,i){var l,d,p,c,g,u,b;console.log(`[ObjectFactory] create() called for: ${e}, __BUILD_MODE__: ${ln}`);let a=(l=n==null?void 0:n.render)==null?void 0:l.asset;if(!a){console.log(`[ObjectFactory] No asset definition for: ${e}, returning empty container`);let h=new Xe.Container;return this.applyTransform(h,n==null?void 0:n.transform,n),h}let s=(d=n==null?void 0:n.identity)==null?void 0:d.id;console.log(`[ObjectFactory] Calling AssetLoader.load() for: ${e}, configId: ${s}, type: ${a.type}, path: ${a.path}`);let r=await Ce.load(e,a,i,s);console.log(`[ObjectFactory] AssetLoader.load() completed for: ${e}, rawAsset type: ${(p=r==null?void 0:r.constructor)==null?void 0:p.name}`);let o;if(a.type==="image")console.log("[ObjectFactory] Creating Sprite from texture:",r,"for object:",e),o=new Xe.Sprite(r),console.log("[ObjectFactory] Created object:",o,"type:",(c=o==null?void 0:o.constructor)==null?void 0:c.name),this.applyTransform(o,n==null?void 0:n.transform,n);else if(a.type==="json")if(console.log("[ObjectFactory] JSON asset for",e,"rawAsset type:",(g=r==null?void 0:r.constructor)==null?void 0:g.name,r),r&&(((u=r.constructor)==null?void 0:u.name)==="Container"||r instanceof Xe.Container)){console.warn("[ObjectFactory] JSON asset is Container (from cache), reloading JSON directly");let h=[a.path,`/assets/${a.path}`,`assets/${a.path}`,`../assets/${a.path}`],w=!1;for(let v of h)try{let y=await fetch(v);if(y.ok){o=await y.json(),console.log("[ObjectFactory] Reloaded JSON directly from:",v,"type:",(b=o==null?void 0:o.constructor)==null?void 0:b.name),w=!0;break}}catch{continue}w||(console.error("[ObjectFactory] Failed to reload JSON from any path"),o=r)}else o=r;else o=r,o&&typeof o=="object"&&("x"in o||"position"in o)&&this.applyTransform(o,n==null?void 0:n.transform,n);return o}static applyTransform(e,n,i){var a,s,r,o;if(!(!n||!e)&&(n.position&&("x"in e&&"y"in e?(e.x=(a=n.position.x)!=null?a:0,e.y=(s=n.position.y)!=null?s:0):"position"in e&&e.position&&e.position.set((r=n.position.x)!=null?r:0,(o=n.position.y)!=null?o:0)),n.scale!==void 0&&"scale"in e&&e.scale&&(typeof e.scale=="object"&&"set"in e.scale?e.scale.set(n.scale):e.scale=n.scale),n.rotation!==void 0&&"rotation"in e&&(e.rotation=n.rotation),n.anchor&&"anchor"in e&&e.anchor)){let l=$r(n.anchor);l&&("set"in e.anchor?e.anchor.set(l.x,l.y):(e.anchor.x=l.x,e.anchor.y=l.y))}}};var Je=class{constructor(){this.config=null}init(e){this.config=e}get(e){if(!this.config)throw new Error("RuntimeObjectRegistry not initialized. Call init() first.");return this.config.objects.get(e)}getAllIds(){if(!this.config)throw new Error("RuntimeObjectRegistry not initialized. Call init() first.");return Array.from(this.config.objects.keys())}has(e){return this.config?this.config.objects.has(e):!1}};var Nr=ge(require("pixi.js"),1);typeof window!="undefined"&&(window.__basePixi=Nr);Ze();var St=require("pixi.js");Ze();var dn=class{constructor(){this.instanceCache=new Map;this.readyPromise=null;this.app=null;this.registry=new Je}init(e,n){this.registry.init(e),this.app=n}updateConfig(e){this.registry.init(e),this.instanceCache.clear(),this.readyPromise=null}async ready(){this.readyPromise&&await this.readyPromise;let n=this.registry.getAllIds().filter(a=>!this.instanceCache.has(a));if(n.length===0)return;let i=async a=>{a.length&&(console.log("[Assets] Loading objects:",a),await Promise.all(a.map(async s=>{var o;let r=this.registry.get(s);if(!r){console.warn("[Assets] No config found for object:",s);return}try{let l=await fe.create(s,r,this.app);this.instanceCache.set(s,l),console.log("[Assets] Loaded object:",s,(o=l==null?void 0:l.constructor)==null?void 0:o.name)}catch(l){console.error("[Assets] Failed to load object:",s,l)}})))};return this.readyPromise=(async()=>{await i(n);let a=this.registry.getAllIds().filter(s=>!this.instanceCache.has(s));a.length>0&&(console.warn("[Assets] Retrying missing assets:",a),await i(a)),console.log("[Assets] Ready. Cached objects:",Array.from(this.instanceCache.keys()))})(),this.readyPromise}resetScene(){this.instanceCache.clear(),this.readyPromise=null}async reloadObject(e){let n=this.registry.get(e);if(n){let i=await fe.create(e,n,this.app);this.instanceCache.set(e,i)}}get(e){return this.instanceCache.get(e)}},Br=new dn,Gr=new Proxy(Br,{get(t,e){if(e in t&&typeof t[e]=="function")return t[e].bind(t);if(t.get(e))return t.get(e)}});Ze();var qa=require("pixi.js"),le={width:400,height:600,designWidth:400,scaleFactor:1},At={scale:1,position:1},un=[];function Vr(t,e,n,i,a,s,r){un.push({element:t,originalScale:s,positionHelper:e,heightPercent:a}),e(t,n,i,a,s,r,!1)}function Wr(){un.forEach(({element:t,originalScale:e,positionHelper:n,heightPercent:i})=>{let a=e*le.scaleFactor;n(t,le.width,le.height,i,a,!0,!1)})}function pn(t,e){console.log(`[SCREEN] updateScreenState called: ${t}x${e}`),le.width=t,le.height=e,le.scaleFactor=Math.min(t/le.designWidth,1.15),At.scale=le.scaleFactor,At.position=1,console.log(`[SCREEN] Global multipliers - scale: ${At.scale.toFixed(3)}`),Wr()}var ze={layout:{scale_multiplier:1,position_offset:{x:0,y:0},debug_rect_visible:!0,debug_rect_color:16711680,debug_rect_thickness:4,debug_rect_scale_x:1,debug_rect_scale_y:1,screen_scale_x:1,screen_scale_y:1},engine:{scale:1,background_scale:1.05,background_offset_y:0,background_alpha:.98,label_pulse_speed:3,label_pulse_intensity:.03}};function Yr(t,e,n){let i=ze[t];i&&i[e]!==void 0&&(i[e]=n,console.log(`Updated ${t}.${e} = ${n}`))}function Kr(){return ze}var Xr={center:{x:.5,y:.5},"center-center":{x:.5,y:.5},middle:{x:.5,y:.5},"middle-center":{x:.5,y:.5},"top-left":{x:0,y:0},"top-center":{x:.5,y:0},"top-right":{x:1,y:0},"bottom-left":{x:0,y:1},"bottom-center":{x:.5,y:1},"bottom-right":{x:1,y:1},"left-center":{x:0,y:.5},"right-center":{x:1,y:.5},"center-left":{x:0,y:.5},"center-right":{x:1,y:.5},left:{x:0,y:.5},right:{x:1,y:.5},top:{x:.5,y:0},bottom:{x:.5,y:1}};function Ct(t,e){return typeof t=="number"&&Number.isFinite(t)?t:e}function et(t,e={x:.5,y:.5}){var n;if(Array.isArray(t))return{x:Ct(t[0],e.x),y:Ct(t[1],e.y)};if(t&&typeof t=="object"){let i=t;return{x:Ct(i.x,e.x),y:Ct(i.y,e.y)}}if(typeof t=="string"){let i=t.trim().toLowerCase();return(n=Xr[i])!=null?n:e}return e}function gn(t,e,n,i={}){var u,b,h,w,v,y;let a=et(n),s=(u=i.inset)!=null?u:{},r=(b=i.padding)!=null?b:{x:0,y:0},o=((h=s.left)!=null?h:0)+r.x,l=((w=s.right)!=null?w:0)+r.x,d=((v=s.top)!=null?v:0)+r.y,p=((y=s.bottom)!=null?y:0)+r.y,c=Math.max(0,t-o-l),g=Math.max(0,e-d-p);return{x:o+c*a.x,y:d+g*a.y}}function hn(t,e,n,i={}){var h,w,v,y,m,f;let a=(h=i.inset)!=null?h:{},s=(w=i.padding)!=null?w:{x:0,y:0},r=((v=a.left)!=null?v:0)+s.x,o=((y=a.right)!=null?y:0)+s.x,l=((m=a.top)!=null?m:0)+s.y,d=((f=a.bottom)!=null?f:0)+s.y,p=Math.max(0,t-r-o),c=Math.max(0,e-l-d),g=et(n,{x:.5,y:.5}),u=Math.min(Math.max(g.x,0),1),b=Math.min(Math.max(g.y,0),1);return{x:r+p*u,y:l+c*b}}if(typeof window!="undefined"){let t=window.innerWidth,e=window.innerHeight,n=()=>{let i=window.innerWidth,a=window.innerHeight;(i!==t||a!==e)&&(t=i,e=a,pn(i,a))};window.addEventListener("resize",n),window.addEventListener("orientationchange",()=>{setTimeout(n,100)}),window.mraid&&(window.mraid.addEventListener("viewableChange",n),window.mraid.addEventListener("sizeChange",n)),pn(window.innerWidth,window.innerHeight),window.updateDebugConfig=Yr,window.getDebugConfig=Kr,window.copyConfig=oo,window.applyConfig=Qe,window.applyConfigForRatio=lo,window.positionAtBottom=Va,window.positionAtTop=Qr,window.positionAtCenter=eo,window.positionAtLeft=to,window.positionAtRight=no,window.positionAtBottomLeft=io,window.positionAtBottomRight=ao,window.positionAtTopLeft=so,window.positionAtTopRight=ro,window.applyPositionContract=Zr,console.log("\u{1F3AE} Debug Config Functions Available:"),console.log("\u2022 updateDebugConfig(category, key, value)"),console.log("\u2022 getDebugConfig()"),console.log("\u2022 copyConfig(presetName)"),console.log("\u2022 applyConfig(config)"),console.log("\u2022 applyConfigForRatio(width, height)"),console.log("\u{1F4CD} Positioning Helpers Available (with scale):"),console.log("\u2022 positionAtBottom(element, w, h, percent, scale)"),console.log("\u2022 positionAtTop(element, w, h, percent, scale)"),console.log("\u2022 positionAtCenter(element, w, h, offsetX, offsetY, scale)"),console.log("\u2022 positionAtLeft/Right(element, w, h, percent, scale)"),console.log("\u2022 Corner positions: BottomLeft/Right, TopLeft/Right (all with scale)"),console.log("\u2022 applyPositionContract(element, w, h, contract)"),console.log("Example: positionAtCenter(mySprite, 400, 600, 0, -50, 1.2)")}function Tt(t,e,n=0){return t*e+n}function Lt(t,e,n=0){return t*(1-e)+n}function kt(t,e,n=0){return t*e+n}function _t(t,e,n=0){return t*(1-e)+n}function U(t,e=0){return t/2+e}function Jr(t,e){return t*e}function Zr(t,e,n,i){var r,o,l,d,p,c,g,u,b,h,w,v,y,m,f,E,S,C,_,I;let a=0,s=0;switch(i.type){case"top":a=U(e,(o=(r=i.offset)==null?void 0:r.x)!=null?o:0),s=Tt(n,i.percent,(d=(l=i.offset)==null?void 0:l.y)!=null?d:0);break;case"bottom":a=U(e,(c=(p=i.offset)==null?void 0:p.x)!=null?c:0),s=Lt(n,i.percent,(u=(g=i.offset)==null?void 0:g.y)!=null?u:0);break;case"left":a=kt(e,i.percent,(h=(b=i.offset)==null?void 0:b.x)!=null?h:0),s=U(n,(v=(w=i.offset)==null?void 0:w.y)!=null?v:0);break;case"right":a=_t(e,i.percent,(m=(y=i.offset)==null?void 0:y.x)!=null?m:0),s=U(n,(E=(f=i.offset)==null?void 0:f.y)!=null?E:0);break;case"center":a=U(e,(C=(S=i.offset)==null?void 0:S.x)!=null?C:0),s=U(n,(I=(_=i.offset)==null?void 0:_.y)!=null?I:0);break}t.position?t.position.set(a,s):(t.x=a,t.y=s),i.scale!==void 0&&i.scale!==1&&t.scale&&(typeof t.scale.set=="function"?t.scale.set(i.scale,i.scale):(t.scale.x=i.scale,t.scale.y=i.scale))}function Va(t,e,n,i=.2,a=1,s=!0,r=!1){let o=Jr(n,i),l=Lt(n,i/2);ce(t,U(e),l);let d=s?a*le.scaleFactor:a;de(t,d),r&&!un.find(p=>p.element===t)&&Vr(t,Va,e,n,i,a,s)}function Qr(t,e,n,i=.1,a=1){ce(t,U(e),Tt(n,i)),de(t,a)}function eo(t,e,n,i=0,a=0,s=1){ce(t,U(e,i),U(n,a)),de(t,s)}function to(t,e,n,i=.1,a=1){ce(t,kt(e,i),U(n)),de(t,a)}function no(t,e,n,i=.1,a=1){ce(t,_t(e,i),U(n)),de(t,a)}function io(t,e,n,i=.05,a=.05,s=1){ce(t,kt(e,a),Lt(n,i)),de(t,s)}function ao(t,e,n,i=.05,a=.05,s=1){ce(t,_t(e,a),Lt(n,i)),de(t,s)}function so(t,e,n,i=.05,a=.05,s=1){ce(t,kt(e,a),Tt(n,i)),de(t,s)}function ro(t,e,n,i=.05,a=.05,s=1){ce(t,_t(e,a),Tt(n,i)),de(t,s)}function ce(t,e,n){t&&t.position?typeof t.position.set=="function"?t.position.set(e,n):(t.position.x=e,t.position.y=n):t&&(t.x=e,t.y=n)}function de(t,e){e!==1&&t&&t.scale&&(typeof t.scale.set=="function"?t.scale.set(e,e):t.scale.x!==void 0&&t.scale.y!==void 0&&(t.scale.x=e,t.scale.y=e))}var Ae={default:{layout:{scale_multiplier:1,position_offset:{x:0,y:0},debug_rect_visible:!0,debug_rect_color:16711680,debug_rect_thickness:4,debug_rect_scale_x:1,debug_rect_scale_y:1,screen_scale_x:1,screen_scale_y:1},engine:{scale:1,background_scale:1.05,background_offset_y:0,background_alpha:.98,label_pulse_speed:3,label_pulse_intensity:.03}},wide:{layout:{scale_multiplier:1,position_offset:{x:0,y:0},debug_rect_visible:!0,debug_rect_color:16711680,debug_rect_thickness:4,debug_rect_scale_x:1,debug_rect_scale_y:1,screen_scale_x:.9,screen_scale_y:1.1},engine:{scale:1,background_scale:1.1,background_offset_y:0,background_alpha:.95,label_pulse_speed:3,label_pulse_intensity:.03}},square:{layout:{scale_multiplier:1,position_offset:{x:0,y:0},debug_rect_visible:!0,debug_rect_color:16711680,debug_rect_thickness:4,debug_rect_scale_x:1,debug_rect_scale_y:1,screen_scale_x:.85,screen_scale_y:.85},engine:{scale:1,background_scale:1,background_offset_y:0,background_alpha:1,label_pulse_speed:3,label_pulse_intensity:.03}},tall:{layout:{scale_multiplier:1,position_offset:{x:0,y:0},debug_rect_visible:!0,debug_rect_color:16711680,debug_rect_thickness:4,debug_rect_scale_x:1,debug_rect_scale_y:1,screen_scale_x:1.1,screen_scale_y:.9},engine:{scale:1,background_scale:.95,background_offset_y:0,background_alpha:1,label_pulse_speed:3,label_pulse_intensity:.03}}};function oo(t){return t&&Ae[t]?JSON.parse(JSON.stringify(Ae[t])):JSON.parse(JSON.stringify(ze))}function Qe(t){Object.keys(t).forEach(e=>{let n=e;ze[n]&&t[n]&&Object.assign(ze[n],t[n])}),console.log("Config applied:",t)}function lo(t,e){let n=t/e;n>1.6?(Qe(Ae.wide),console.log("Applied WIDE config for ratio:",n)):n<.7?(Qe(Ae.tall),console.log("Applied TALL config for ratio:",n)):n>.8&&n<1.2?(Qe(Ae.square),console.log("Applied SQUARE config for ratio:",n)):(Qe(Ae.default),console.log("Applied DEFAULT config for ratio:",n))}if(typeof window!="undefined"){let t=window;t.configPresets=Ae,t.resolveAnchorVec2=t.resolveAnchorVec2||et,t.resolveScreenAnchorPoint=t.resolveScreenAnchorPoint||gn,t.resolveScreenRatioPoint=t.resolveScreenRatioPoint||hn}bn();function M(t,e){let n=(a,s)=>s===0?a:n(s,a%s),i=n(t,e);return`${t/i}:${e/i}`}var Vc=[{id:"iphone-15-pro-max",label:"iPhone 15 Pro Max",width:430,height:932,category:"iphone",ratio:M(430,932)},{id:"iphone-15-pro",label:"iPhone 15 Pro",width:393,height:852,category:"iphone",ratio:M(393,852)},{id:"iphone-15",label:"iPhone 15",width:393,height:852,category:"iphone",ratio:M(393,852)},{id:"iphone-14",label:"iPhone 14",width:390,height:844,category:"iphone",ratio:M(390,844)},{id:"iphone-se",label:"iPhone SE",width:375,height:667,category:"iphone",ratio:M(375,667)},{id:"iphone-12-mini",label:"iPhone 12 Mini",width:360,height:780,category:"iphone",ratio:M(360,780)}],Wc=[{id:"pixel-8-pro",label:"Pixel 8 Pro",width:448,height:998,category:"android",ratio:M(448,998)},{id:"pixel-8",label:"Pixel 8",width:412,height:915,category:"android",ratio:M(412,915)},{id:"samsung-s24-ultra",label:"Samsung S24 Ultra",width:412,height:915,category:"android",ratio:M(412,915)},{id:"samsung-s24",label:"Samsung S24",width:360,height:780,category:"android",ratio:M(360,780)},{id:"samsung-a54",label:"Samsung A54",width:412,height:915,category:"android",ratio:M(412,915)},{id:"oneplus-12",label:"OnePlus 12",width:412,height:915,category:"android",ratio:M(412,915)}],Yc=[{id:"ipad-pro-12",label:'iPad Pro 12.9"',width:1024,height:1366,category:"tablet",ratio:M(1024,1366)},{id:"ipad-pro-11",label:'iPad Pro 11"',width:834,height:1194,category:"tablet",ratio:M(834,1194)},{id:"ipad-air",label:"iPad Air",width:820,height:1180,category:"tablet",ratio:M(820,1180)},{id:"ipad-mini",label:"iPad Mini",width:768,height:1024,category:"tablet",ratio:M(768,1024)},{id:"samsung-tab-s9",label:"Samsung Tab S9",width:800,height:1280,category:"tablet",ratio:M(800,1280)}],Xa=[{id:"playable-portrait",label:"Playable Portrait",width:320,height:480,category:"playable",ratio:"2:3",mraidScale:1},{id:"mraid-320x480",label:"MRAID 320\xD7480",width:320,height:480,category:"playable",ratio:"2:3",mraidScale:1},{id:"iphone-14",label:"iPhone 14",width:390,height:844,category:"playable",ratio:M(390,844),mraidScale:.7},{id:"ipad-mini",label:"iPad Mini",width:768,height:1024,category:"playable",ratio:M(768,1024),mraidScale:.7}];var Kc=[...Xa];var bo=Xa[0];J();function yo(t){return new Promise((e,n)=>{let i=new FileReader;i.onerror=()=>n(new Error("FileReader failed")),i.onload=()=>e(String(i.result||"")),i.readAsDataURL(t)})}function vo(t){var a;let[e,n]=t.split(","),i=e==null?void 0:e.match(/data:(.*?);base64/);return{base64:n!=null?n:"",mimeType:(a=i==null?void 0:i[1])!=null?a:"image/png"}}async function wo(t){return await new Promise(e=>{let n=new Image;n.onload=()=>e({width:n.naturalWidth||n.width,height:n.naturalHeight||n.height}),n.onerror=()=>e(null),n.src=t})}async function yn(t){var e,n;try{console.log("[ImageUtils] Fetching image data from URL:",t);let i=await fetch(t);if(!i.ok)return console.warn("[ImageUtils] Fetch failed with status:",i.status,t),null;let a=await i.blob();console.log("[ImageUtils] Blob received, size:",a.size,"type:",a.type);let s=await yo(a),r=await wo(s),o=vo(s);return console.log("[ImageUtils] Success resolution:",r==null?void 0:r.width,"x",r==null?void 0:r.height,"mime:",o.mimeType),{base64:o.base64,mimeType:o.mimeType,dataUrl:s,width:(e=r==null?void 0:r.width)!=null?e:0,height:(n=r==null?void 0:r.height)!=null?n:0}}catch(i){return console.error("[ImageUtils] Error fetching image data:",i),null}}async function Pt(t,e=30){try{console.log("[ImageUtils] Removing background color...");let n=await new Promise((c,g)=>{let u=new Image;u.onload=()=>c(u),u.onerror=()=>g(new Error("Failed to load image")),u.src=t}),i=document.createElement("canvas");i.width=n.width,i.height=n.height;let a=i.getContext("2d");if(!a)return console.error("[ImageUtils] Failed to get canvas context"),t;a.drawImage(n,0,0);let s=a.getImageData(0,0,i.width,i.height),r=s.data,l=[{name:"top-left",offset:0},{name:"top-right",offset:(i.width-1)*4},{name:"bottom-left",offset:(i.height-1)*i.width*4},{name:"bottom-right",offset:((i.height-1)*i.width+(i.width-1))*4}].map(c=>({r:r[c.offset],g:r[c.offset+1],b:r[c.offset+2]})),d=0;for(let c=0;c<r.length;c+=4){let g=r[c],u=r[c+1],b=r[c+2],h=!1;for(let w of l)if(Math.sqrt(Math.pow(g-w.r,2)+Math.pow(u-w.g,2)+Math.pow(b-w.b,2))<e){h=!0;break}h&&(r[c+3]=0,d++)}return console.log(`[ImageUtils] Removed background from ${d} pixels (4-corner sampling, tolerance: ${e})`),a.putImageData(s,0,0),i.toDataURL("image/png")}catch(n){return console.error("[ImageUtils] Error removing background:",n),t}}var Qa=require("@google/genai");async function vn(t,e,n=[],i={}){var a,s,r,o,l,d,p;try{if(!(t!=null&&t.trim()))throw new Error("Gemini API key is required");if(!(e!=null&&e.trim()))throw new Error("Prompt is required");for(let v=0;v<n.length;v++){let y=n[v];if(!y.base64||!y.mimeType)throw new Error(`Image ${v+1} is missing required data`);if(y.base64.length<1e3&&console.warn(`Image ${v+1} data appears very small, may be corrupted`),!y.mimeType.startsWith("image/"))throw new Error(`Image ${v+1} has invalid MIME type: ${y.mimeType}`)}let c=new Qa.GoogleGenAI({apiKey:t}),g="gemini-2.5-flash",u=[e];n.length>0&&n.forEach((v,y)=>{u.push({inlineData:{data:v.base64,mimeType:v.mimeType}}),console.log(`[Gemini] Added image ${y+1}: ${v.mimeType}, size: ${Math.round(v.base64.length/1024)}KB`)}),console.log(`[Gemini] Making request with ${n.length} images and prompt length: ${e.length}`);let b=await c.models.generateContent({model:g,contents:u}),h="",w=(r=(s=(a=b.candidates)==null?void 0:a[0])==null?void 0:s.content)==null?void 0:r.parts;if(w)for(let v of w)v.text&&(h+=v.text);if(!h.trim())throw new Error("Empty response from Gemini API");return console.log(`[Gemini] Response received, length: ${h.length}`),h}catch(c){throw console.error("[Gemini] API error:",c),(o=c.message)!=null&&o.includes("Unable to process input image")?new Error("Unable to process the uploaded image. Please ensure it's a valid PNG, JPG, or JPEG file under 10MB and not corrupted."):(l=c.message)!=null&&l.includes("API_KEY_INVALID")?new Error("Invalid Gemini API key. Please check your API key configuration."):(d=c.message)!=null&&d.includes("QUOTA_EXCEEDED")?new Error("Gemini API quota exceeded. Please try again later or check your billing."):(p=c.message)!=null&&p.includes("SAFETY")?new Error("Content was flagged by Gemini safety filters. Please try with different images."):c}}var es=require("@google/genai");async function Mt(t,e,n=[],i={}){try{console.info("[GEMINI-REAL-SDK] Initializing GoogleGenAI...");let a=new es.GoogleGenAI({apiKey:t}),s=[{text:e}];n.length>0&&n.forEach((o,l)=>{console.info(`[GEMINI-REAL-SDK] Adding image part ${l}`),s.push({inlineData:{mimeType:o.mimeType,data:o.base64}})}),console.info("[GEMINI-REAL-SDK] Calling generateContent with model: gemini-2.5-flash-image");let r=await a.models.generateContent({model:"gemini-2.5-flash-image",contents:s});if(console.info("[GEMINI-REAL-SDK] Received response from model"),!r.candidates||!r.candidates[0]||!r.candidates[0].content||!r.candidates[0].content.parts)throw new Error("Gemini 2.5 Flash Image returned invalid response structure.");for(let o of r.candidates[0].content.parts)if(o.text)console.log(o.text);else if(o.inlineData){let l=o.inlineData.data,d=o.inlineData.mimeType||"image/png";return console.info("[GEMINI-REAL-SDK] Found inline image data in response"),`data:${d};base64,${l}`}throw new Error("Gemini 2.5 Flash Image returned no image data.")}catch(a){throw console.error("[GEMINI-REAL-SDK] Error in generateImageWithGemini25Flash:",JSON.stringify(a,Object.getOwnPropertyNames(a),2)),a}}var xo=require("pixi.js");Ze();J();var ns=require("pixi.js");var So=require("pixi.js");J();function jo(t){return new Promise((e,n)=>{let i=new FileReader;i.onerror=()=>n(new Error("FileReader failed")),i.onload=()=>e(String(i.result||"")),i.readAsDataURL(t)})}function Oo(t){var a;let[e,n]=t.split(","),i=e==null?void 0:e.match(/data:(.*?);base64/);return{base64:n!=null?n:"",mimeType:(a=i==null?void 0:i[1])!=null?a:"image/png"}}function Ro(t){return`
46
+ `,this.modal=i}attachModalListeners(){if(!this.modal)return;this.modal.querySelectorAll("[data-modal-close]").forEach(r=>{r.addEventListener("click",()=>this.close())}),this.modal.querySelectorAll("[data-tab]").forEach(r=>{r.addEventListener("click",o=>{let d=o.target.dataset.tab;d&&this.switchTab(d)})});let i=this.modal.querySelector("[data-ai-generate]");i==null||i.addEventListener("click",()=>{this.openAiEditor("generate")});let a=this.modal.querySelector("[data-ai-edit]");a==null||a.addEventListener("click",()=>{this.openAiEditor("edit")});let s=this.modal.querySelector("[data-modal-apply]");s==null||s.addEventListener("click",()=>{this.apply()}),this.modal.addEventListener("click",r=>{r.target===this.modal&&this.close()})}switchTab(e){if(!this.modal)return;this.modal.querySelectorAll("[data-tab]").forEach(a=>{a.classList.toggle("active",a.getAttribute("data-tab")===e)}),this.modal.querySelectorAll("[data-tab-panel]").forEach(a=>{a.classList.toggle("active",a.getAttribute("data-tab-panel")===e)})}openAiEditor(e){let n=window.__openAiEditor;if(typeof n!="function"){alert("AI Editor not available. Please check your setup.");return}let i="";e==="edit"&&this.currentAsset?i=`Edit this image: ${this.currentObjectId}`:i=`Create an image for: ${this.currentObjectId}`,n(this.currentObjectId||"unknown",i,this.currentAsset,{path:this.currentPath,onApply:a=>{this.onApplyCallback&&this.onApplyCallback(a),this.close()}})}apply(){this.onApplyCallback&&this.onApplyCallback("library/placeholder.png"),this.close()}close(){this.modal&&this.modal.parentNode&&this.modal.parentNode.removeChild(this.modal),this.modal=null,this.currentObjectId=null,this.currentPath=null,this.onApplyCallback=null}}});var el={};ca(el,{AspectClass:()=>$n,GameObject:()=>ct,GameObjectManager:()=>Ht,Renderer:()=>lt,ResponsiveUISystem:()=>qe,Transform:()=>ot,animateHandClick:()=>Ss,animatePanelEntrance:()=>Es,createBrushTexture:()=>Ps,createEndGamePanel:()=>xs,createHandTutorial:()=>Cs,createThreeBase:()=>ys,createTutorialLabel:()=>As,getAspectClass:()=>$t,getRegisteredFontIds:()=>ws,loadAsset:()=>Nn,loadCharacterFrames:()=>_s,registerFont:()=>vs,resolveFont:()=>Q,resolveFontWeight:()=>ee,updateHandAnimation:()=>Ts});module.exports=Sr(el);var W=ge(require("three"),1);var he={};function yt(t,e,n=!1){he[t]||(he[t]=[]),he[t].push({fn:e,once:n})}function Jt(t,e){if(he[t]){if(!e){delete he[t];return}he[t]=he[t].filter(n=>n.fn!==e)}}function vt(t,...e){let n=he[t];if(n)for(let i of[...n])i.fn(...e),i.once&&Jt(t,i.fn)}function B(t,e){yt(t,e,!0)}var P=null,V=[],Ie=null;function ga(t){P=t,V=[],Ie!==null&&(clearTimeout(Ie),Ie=null)}function ha(){var t,e,n;return{endpoint:(P==null?void 0:P.endpoint)||"",transport:(P==null?void 0:P.transport)||"beacon",batchSize:(t=P==null?void 0:P.batchSize)!=null?t:10,flushIntervalMs:(e=P==null?void 0:P.flushIntervalMs)!=null?e:300,maxQueue:(n=P==null?void 0:P.maxQueue)!=null?n:200,debug:!!(P!=null&&P.debug)}}async function pa(t,e,n,i){let a=JSON.stringify(e);if(n==="beacon"&&typeof navigator!="undefined"&&typeof navigator.sendBeacon=="function")try{let s=navigator.sendBeacon(t,new Blob([a],{type:"application/json"}));i&&console.log("[handler.telemetry] beacon",s,e);return}catch(s){i&&console.warn("[handler.telemetry] beacon failed, fallback to fetch",s)}try{await fetch(t,{method:"POST",headers:{"Content-Type":"application/json"},body:a,keepalive:!0}),i&&console.log("[handler.telemetry] fetch",e)}catch(s){i&&console.warn("[handler.telemetry] fetch failed",s)}}function Zt(t,e){let n=ha();if(e&&n.endpoint){if(V.push(t),V.length>n.maxQueue&&(V=V.slice(V.length-n.maxQueue)),V.length>=n.batchSize){ua();return}Ie===null&&(Ie=window.setTimeout(()=>{Ie=null,ua()},n.flushIntervalMs))}}async function ua(){let t=ha();if(!t.endpoint||V.length===0)return;let e=V.splice(0,t.batchSize);await pa(t.endpoint,{events:e},t.transport,t.debug),V.length>0&&await pa(t.endpoint,{events:V.splice(0,t.batchSize)},t.transport,t.debug)}function ma(t){return Math.max(0,Math.min(1,t))}function Cr(t){let e=String(t!=null?t:"power2.out");if(e==="linear")return n=>n;if(e==="sine.inOut")return n=>.5-Math.cos(Math.PI*n)/2;if(e==="power2.out"||e==="easeOutQuad")return n=>1-(1-n)*(1-n);if(e.startsWith("back.out")){let n=e.match(/back\.out\(([\d.]+)\)/),i=n?Number(n[1]):1.8;return a=>1+(i+1)*Math.pow(a-1,3)+i*Math.pow(a-1,2)}return n=>1-(1-n)*(1-n)}function Ke(){return typeof performance!="undefined"&&performance.now?performance.now():Date.now()}function Ar(t,e){let n=t==null?void 0:t[e];return typeof n=="number"?n:0}function fa(t,e,n){try{t[e]=n}catch{}}function Tr(t){let e=t==null?void 0:t.scale;if(!e)return null;let n=typeof e.x=="number"?e.x:1,i=typeof e.y=="number"?e.y:1;return{x:n,y:i}}function ba(t,e){let n=t==null?void 0:t.scale;if(n)try{typeof n.set=="function"?n.set(e.x,e.y):(typeof n.x=="number"&&(n.x=e.x),typeof n.y=="number"&&(n.y=e.y))}catch{}}function ya(t,e){let n=Tr(t);if(!n)return{from:null,to:null};let i=null,a=null;return typeof e.scale=="number"?(i=e.scale,a=e.scale):e.scale&&typeof e.scale=="object"&&(typeof e.scale.x=="number"&&(i=e.scale.x),typeof e.scale.y=="number"&&(a=e.scale.y)),typeof e.scaleX=="number"&&(i=e.scaleX),typeof e.scaleY=="number"&&(a=e.scaleY),i===null&&a===null?{from:null,to:null}:{from:{x:n.x,y:n.y},to:{x:i!=null?i:n.x,y:a!=null?a:n.y}}}function va(){let t=new Set,e=new WeakMap,n=null,i=()=>{if(n!=null)return;n=requestAnimationFrame(()=>{n=null,o(),t.size>0&&i()})},a=p=>{var g;t.add(p);let c=(g=e.get(p.target))!=null?g:new Set;c.add(p),e.set(p.target,c),i()},s=p=>{t.delete(p);let c=e.get(p.target);c&&(c.delete(p),c.size===0&&e.delete(p.target))},r=p=>{p.killed||(p.killed=!0,s(p))},o=()=>{var c,g;let p=Ke();for(let u of Array.from(t)){if(u.killed||u.paused)continue;let b=p-u.startMs-u.delayMs;if(b<0)continue;let h=u.durationMs>0?b/u.durationMs:1,w=ma(h),v=u.repeat>=0?u.repeat+1:1,y=u.repeat>0?Math.min(Math.floor(h),v-1):0;if(u.repeat>0&&h>=1){let E=h-y;w=ma(E)}let m=u.ease(w);u.yoyo&&y%2===1&&(m=1-m);for(let E of u.props)fa(u.target,E.key,E.from+(E.to-E.from)*m);u.scaleFrom&&u.scaleTo&&ba(u.target,{x:u.scaleFrom.x+(u.scaleTo.x-u.scaleFrom.x)*m,y:u.scaleFrom.y+(u.scaleTo.y-u.scaleFrom.y)*m});try{(c=u.onUpdate)==null||c.call(u)}catch{}if(h>=v){r(u);try{(g=u.onComplete)==null||g.call(u)}catch{}}}},l=(p,c,g)=>{var E;let u=Math.max(0,(typeof c.duration=="number"?c.duration:.5)*1e3),b=Math.max(0,(typeof c.delay=="number"?c.delay:0)*1e3+((E=g==null?void 0:g.delayMsOverride)!=null?E:0)),h=Cr(c.ease),w=typeof c.repeat=="number"?Math.max(0,c.repeat|0):0,v=c.yoyo===!0,y=new Set(["duration","delay","ease","repeat","yoyo","onUpdate","onComplete","scale","scaleX","scaleY"]),m=[];for(let S of Object.keys(c)){if(y.has(S))continue;let C=c[S];typeof C=="number"&&m.push({key:S,from:Ar(p,S),to:C})}let f=ya(p,c);return{target:p,startMs:Ke(),delayMs:b,durationMs:u,ease:h,props:m,scaleFrom:f.from,scaleTo:f.to,repeat:w,yoyo:v,onUpdate:typeof c.onUpdate=="function"?c.onUpdate:void 0,onComplete:typeof c.onComplete=="function"?c.onComplete:void 0,killed:!1,paused:!1,pauseAtMs:null}},d={to(p,c){let g=l(p,c);return a(g),{kill:()=>r(g),pause:()=>{g.paused||(g.paused=!0,g.pauseAtMs=Ke())},resume:()=>{var h;if(!g.paused)return;let u=(h=g.pauseAtMs)!=null?h:Ke(),b=Ke()-u;g.startMs+=b,g.paused=!1,g.pauseAtMs=null},isActive:()=>!g.killed&&!g.paused}},fromTo(p,c,g){return d.set(p,c),d.to(p,g)},set(p,c){if(!p||!c)return;for(let u of Object.keys(c)){let b=c[u];u==="scale"||u==="scaleX"||u==="scaleY"||typeof b=="number"&&fa(p,u,b)}let g=ya(p,c);g.to&&ba(p,g.to)},killTweensOf(p){let c=e.get(p);if(c)for(let g of Array.from(c))r(g)},timeline(p={}){let c=[],g=0,u=!1,b=[],h=y=>{if(typeof y=="number")return Math.max(0,y*1e3);let m=typeof y=="string"?y.trim():"";return m.startsWith("+=")?g+Math.max(0,Number(m.slice(2))*1e3||0):m?Math.max(0,Number(m)*1e3||0):g},w=y=>{c.push(y);let m=Math.max(0,(typeof y.vars.duration=="number"?y.vars.duration:.5)*1e3);g=Math.max(g,y.atMs+m)},v={to(y,m,f){return w({kind:"to",target:y,vars:m,atMs:h(f)}),v},fromTo(y,m,f,E){return w({kind:"fromTo",target:y,vars:f,from:m,atMs:h(E)}),v},play(){var y,m;if(u)return v;u=!0,b=[];for(let f of c)f.kind==="fromTo"&&d.set(f.target,(y=f.from)!=null?y:{}),b.push(d.to(f.target,{...f.vars,delay:f.atMs/1e3+((m=f.vars.delay)!=null?m:0)}));return v},pause(){for(let y of b)y.pause();return v},kill(){for(let y of b)y.kill();b=[],u=!1}};return p.paused||v.play(),v}};return d}function wa(){if(typeof window=="undefined")return;let t=window;if(!t.gsap)try{t.gsap=va()}catch{}}var xa={name:"handler-playable-sdk",version:"1.0.2",type:"module",description:"Handler Playable SDK v0.1 with contract-aligned surface (root sandbox, canonical event envelope).",main:"dist/index.cjs",module:"dist/index.js",types:"dist/index.d.ts",exports:{".":{types:"./dist/index.d.ts",import:"./dist/index.js",require:"./dist/index.cjs"},"./pixi":{types:"./dist/pixi/index.d.ts",import:"./dist/pixi/index.js",require:"./dist/pixi/index.cjs"},"./pixi/index.css":{import:"./dist/pixi/index.css",require:"./dist/pixi/index.css"},"./three":{types:"./dist/three/index.d.ts",import:"./dist/three/index.js",require:"./dist/three/index.cjs"},"./cli":{types:"./dist/cli/index.d.ts",import:"./dist/cli/index.js",require:"./dist/cli/index.cjs"}},bin:{"handler-student-helper":"./bin/student-helper.mjs","handler-validate":"./bin/validate.mjs","handler-sync-screens":"./bin/sync-screens.mjs","handler-brand-dna":"./bin/brand-dna.mjs","handler-setup-library":"./bin/setup-library.mjs","handler-screen-helper":"./bin/screen-helper.mjs"},scripts:{prebuild:"python3 src/preview/build-css.py",build:"tsup src/index.ts src/pixi/index.ts src/three/index.ts src/cli/index.ts --format cjs,esm --dts --clean --minify --external lottie-web && npm run create-mjs-symlinks && npm run postbuild-cli && npm run obfuscate && npm run postbuild",postbuild:"python3 src/preview/copy-css-to-dist.py","postbuild-cli":"cp src/cli/*.mjs dist/cli/ && chmod +x dist/cli/*.mjs && chmod +x bin/*.mjs","create-mjs-symlinks":"cd dist && ln -sf index.js index.mjs && cd pixi && ln -sf index.js index.mjs && cd ../three && ln -sf index.js index.mjs","build:dev":"tsup src/index.ts src/pixi/index.ts src/three/index.ts src/cli/index.ts --format cjs,esm --dts --clean --external lottie-web && npm run create-mjs-symlinks && npm run postbuild-cli",obfuscate:"javascript-obfuscator dist/pixi/index.js --output dist/pixi/index.js --config obfuscator.config.json && javascript-obfuscator dist/three/index.js --output dist/three/index.js --config obfuscator.config.json && javascript-obfuscator dist/cli/index.js --output dist/cli/index.js --config obfuscator.config.json && npm run obfuscate-cli","obfuscate-cli":'for file in dist/cli/*.mjs; do javascript-obfuscator "$file" --output "$file" --config obfuscator.config.json; done',lint:"eslint 'src/**/*.{ts,tsx}'",typecheck:"tsc --noEmit",prepublishOnly:"npm run build","publish:update":"node scripts/publish-and-update.cjs patch","publish:update:minor":"node scripts/publish-and-update.cjs minor","publish:update:major":"node scripts/publish-and-update.cjs major"},author:"Handler",license:"MIT",publishConfig:{access:"public"},repository:{type:"git",url:"https://github.com/HandlerAIGames/handler-playable-sdk.git"},files:["dist","bin","LICENSE","README.md"],peerDependencies:{"lottie-web":"^5.0.0","pixi.js":"^8.0.0",three:"^0.182.0"},peerDependenciesMeta:{"pixi.js":{optional:!0},three:{optional:!0},"lottie-web":{optional:!0}},devDependencies:{"@types/three":"^0.182.0",eslint:"^9.39.2","javascript-obfuscator":"^5.1.0","pixi.js":"8.8.1",three:"^0.182.0","ts-node":"^10.9.2",tsup:"^8.4.0",typescript:"^5.7.2","typescript-eslint":"^8.53.0"},dependencies:{"@google/genai":"^1.35.0","@google/generative-ai":"^0.24.1",jszip:"^3.10.1",sharp:"^0.34.5"}};var G=0,kr=G++,Ea=G++,Sa=G++,Ca=G++,Aa=G++,Ta=G++,La=G++,ka=G++,_a=G++,Pa=G++,Ma=G++,Ia=G++,T=kr;function ja(){return T===Ea}function Oa(){return T===Sa}function Ra(){return T===Ca}function za(){return T===Aa}function je(){return T===Ta}function Oe(){return T===La}function $a(){return T===ka}function Ha(){return T===_a}function Da(){return T===Pa}function Qt(){return T===Ma}function en(){return T===Ia}function Na(){let t=typeof AD_PROTOCOL!="undefined"?AD_PROTOCOL:"none",e=typeof AD_NETWORK!="undefined"?AD_NETWORK:"web_embed";if(t==="mraid")try{mraid.getState(),T=Ea;return}catch{}else if(t==="dapi")try{dapi.isReady(),T=Sa;return}catch{}if(e==="facebook")try{typeof FbPlayableAd!="undefined"&&(T=Ca)}catch{}else if(e==="google")try{typeof ExitApi!="undefined"&&(T=Aa)}catch{}else if(e==="mintegral")window.gameReady&&(T=Ta);else if(e==="tapjoy")window.TJ_API&&(T=La);else if(e==="tiktok")window.openAppStore&&(T=ka);else if(e==="smadex")try{window.smxTracking&&(T=_a)}catch{}else if(e==="snapchat")try{window.ScPlayableAd&&(T=Pa)}catch{}else e==="vungle"?T=Ma:(t==="nucleo"||e==="nucleo")&&(T=Ia)}var wt=ge(require("lottie-web"),1),Fa=wt.default;typeof window!="undefined"&&(window.lottie=wt.default,window.__baseLottie=wt.default);var _r=require("pixi.js");var tn=require("pixi.js");var Pr=null;function nn(t){Pr=t}xt();an();var Xe=require("pixi.js");xt();var zr=typeof __BUILD_MODE__!="undefined"?__BUILD_MODE__:"undefined",ln=zr;if(typeof window!="undefined")try{let t=new XMLHttpRequest;if(t.open("GET","./build-settings.json",!1),t.send(),t.status===200&&t.responseText){let e=JSON.parse(t.responseText);e!=null&&e.buildMode&&(ln=e.buildMode,console.log(`[ObjectFactory] Build mode overridden by settings: ${ln}`))}}catch{}function $r(t){var n,i,a,s,r;if(typeof window!="undefined"&&window.resolveAnchorVec2)return window.resolveAnchorVec2(t);let e={center:{x:.5,y:.5},"top-left":{x:0,y:0},"top-center":{x:.5,y:0},"top-right":{x:1,y:0},"center-left":{x:0,y:.5},"center-right":{x:1,y:.5},"bottom-left":{x:0,y:1},"bottom-center":{x:.5,y:1},"bottom-right":{x:1,y:1},left:{x:0,y:.5},right:{x:1,y:.5},top:{x:.5,y:0},bottom:{x:.5,y:1}};if(Array.isArray(t))return{x:(n=t[0])!=null?n:.5,y:(i=t[1])!=null?i:.5};if(t&&typeof t=="object"&&"x"in t&&"y"in t)return{x:(a=t.x)!=null?a:.5,y:(s=t.y)!=null?s:.5};if(typeof t=="string"){let o=t.trim().toLowerCase();return(r=e[o])!=null?r:{x:.5,y:.5}}return null}var fe=class{static async create(e,n,i){var l,d,p,c,g,u,b;console.log(`[ObjectFactory] create() called for: ${e}, __BUILD_MODE__: ${ln}`);let a=(l=n==null?void 0:n.render)==null?void 0:l.asset;if(!a){console.log(`[ObjectFactory] No asset definition for: ${e}, returning empty container`);let h=new Xe.Container;return this.applyTransform(h,n==null?void 0:n.transform,n),h}let s=(d=n==null?void 0:n.identity)==null?void 0:d.id;console.log(`[ObjectFactory] Calling AssetLoader.load() for: ${e}, configId: ${s}, type: ${a.type}, path: ${a.path}`);let r=await Ce.load(e,a,i,s);console.log(`[ObjectFactory] AssetLoader.load() completed for: ${e}, rawAsset type: ${(p=r==null?void 0:r.constructor)==null?void 0:p.name}`);let o;if(a.type==="image")console.log("[ObjectFactory] Creating Sprite from texture:",r,"for object:",e),o=new Xe.Sprite(r),console.log("[ObjectFactory] Created object:",o,"type:",(c=o==null?void 0:o.constructor)==null?void 0:c.name),this.applyTransform(o,n==null?void 0:n.transform,n);else if(a.type==="json")if(console.log("[ObjectFactory] JSON asset for",e,"rawAsset type:",(g=r==null?void 0:r.constructor)==null?void 0:g.name,r),r&&(((u=r.constructor)==null?void 0:u.name)==="Container"||r instanceof Xe.Container)){console.warn("[ObjectFactory] JSON asset is Container (from cache), reloading JSON directly");let h=[a.path,`/assets/${a.path}`,`assets/${a.path}`,`../assets/${a.path}`],w=!1;for(let v of h)try{let y=await fetch(v);if(y.ok){o=await y.json(),console.log("[ObjectFactory] Reloaded JSON directly from:",v,"type:",(b=o==null?void 0:o.constructor)==null?void 0:b.name),w=!0;break}}catch{continue}w||(console.error("[ObjectFactory] Failed to reload JSON from any path"),o=r)}else o=r;else o=r,o&&typeof o=="object"&&("x"in o||"position"in o)&&this.applyTransform(o,n==null?void 0:n.transform,n);return o}static applyTransform(e,n,i){var a,s,r,o;if(!(!n||!e)&&(n.position&&("x"in e&&"y"in e?(e.x=(a=n.position.x)!=null?a:0,e.y=(s=n.position.y)!=null?s:0):"position"in e&&e.position&&e.position.set((r=n.position.x)!=null?r:0,(o=n.position.y)!=null?o:0)),n.scale!==void 0&&"scale"in e&&e.scale&&(typeof e.scale=="object"&&"set"in e.scale?e.scale.set(n.scale):e.scale=n.scale),n.rotation!==void 0&&"rotation"in e&&(e.rotation=n.rotation),n.anchor&&"anchor"in e&&e.anchor)){let l=$r(n.anchor);l&&("set"in e.anchor?e.anchor.set(l.x,l.y):(e.anchor.x=l.x,e.anchor.y=l.y))}}};var Je=class{constructor(){this.config=null}init(e){this.config=e}get(e){if(!this.config)throw new Error("RuntimeObjectRegistry not initialized. Call init() first.");return this.config.objects.get(e)}getAllIds(){if(!this.config)throw new Error("RuntimeObjectRegistry not initialized. Call init() first.");return Array.from(this.config.objects.keys())}has(e){return this.config?this.config.objects.has(e):!1}};var Nr=ge(require("pixi.js"),1);typeof window!="undefined"&&(window.__basePixi=Nr);Ze();var St=require("pixi.js");Ze();var dn=class{constructor(){this.instanceCache=new Map;this.readyPromise=null;this.app=null;this.registry=new Je}init(e,n){this.registry.init(e),this.app=n}updateConfig(e){this.registry.init(e),this.instanceCache.clear(),this.readyPromise=null}async ready(){this.readyPromise&&await this.readyPromise;let n=this.registry.getAllIds().filter(a=>!this.instanceCache.has(a));if(n.length===0)return;let i=async a=>{a.length&&(console.log("[Assets] Loading objects:",a),await Promise.all(a.map(async s=>{var o;let r=this.registry.get(s);if(!r){console.warn("[Assets] No config found for object:",s);return}try{let l=await fe.create(s,r,this.app);this.instanceCache.set(s,l),console.log("[Assets] Loaded object:",s,(o=l==null?void 0:l.constructor)==null?void 0:o.name)}catch(l){console.error("[Assets] Failed to load object:",s,l)}})))};return this.readyPromise=(async()=>{await i(n);let a=this.registry.getAllIds().filter(s=>!this.instanceCache.has(s));a.length>0&&(console.warn("[Assets] Retrying missing assets:",a),await i(a)),console.log("[Assets] Ready. Cached objects:",Array.from(this.instanceCache.keys()))})(),this.readyPromise}resetScene(){this.instanceCache.clear(),this.readyPromise=null}async reloadObject(e){let n=this.registry.get(e);if(n){let i=await fe.create(e,n,this.app);this.instanceCache.set(e,i)}}get(e){return this.instanceCache.get(e)}},Br=new dn,Gr=new Proxy(Br,{get(t,e){if(e in t&&typeof t[e]=="function")return t[e].bind(t);if(t.get(e))return t.get(e)}});Ze();var qa=require("pixi.js"),le={width:400,height:600,designWidth:400,scaleFactor:1},At={scale:1,position:1},un=[];function Vr(t,e,n,i,a,s,r){un.push({element:t,originalScale:s,positionHelper:e,heightPercent:a}),e(t,n,i,a,s,r,!1)}function Wr(){un.forEach(({element:t,originalScale:e,positionHelper:n,heightPercent:i})=>{let a=e*le.scaleFactor;n(t,le.width,le.height,i,a,!0,!1)})}function pn(t,e){console.log(`[SCREEN] updateScreenState called: ${t}x${e}`),le.width=t,le.height=e,le.scaleFactor=Math.min(t/le.designWidth,1.15),At.scale=le.scaleFactor,At.position=1,console.log(`[SCREEN] Global multipliers - scale: ${At.scale.toFixed(3)}`),Wr()}var ze={layout:{scale_multiplier:1,position_offset:{x:0,y:0},debug_rect_visible:!0,debug_rect_color:16711680,debug_rect_thickness:4,debug_rect_scale_x:1,debug_rect_scale_y:1,screen_scale_x:1,screen_scale_y:1},engine:{scale:1,background_scale:1.05,background_offset_y:0,background_alpha:.98,label_pulse_speed:3,label_pulse_intensity:.03}};function Yr(t,e,n){let i=ze[t];i&&i[e]!==void 0&&(i[e]=n,console.log(`Updated ${t}.${e} = ${n}`))}function Kr(){return ze}var Xr={center:{x:.5,y:.5},"center-center":{x:.5,y:.5},middle:{x:.5,y:.5},"middle-center":{x:.5,y:.5},"top-left":{x:0,y:0},"top-center":{x:.5,y:0},"top-right":{x:1,y:0},"bottom-left":{x:0,y:1},"bottom-center":{x:.5,y:1},"bottom-right":{x:1,y:1},"left-center":{x:0,y:.5},"right-center":{x:1,y:.5},"center-left":{x:0,y:.5},"center-right":{x:1,y:.5},left:{x:0,y:.5},right:{x:1,y:.5},top:{x:.5,y:0},bottom:{x:.5,y:1}};function Ct(t,e){return typeof t=="number"&&Number.isFinite(t)?t:e}function et(t,e={x:.5,y:.5}){var n;if(Array.isArray(t))return{x:Ct(t[0],e.x),y:Ct(t[1],e.y)};if(t&&typeof t=="object"){let i=t;return{x:Ct(i.x,e.x),y:Ct(i.y,e.y)}}if(typeof t=="string"){let i=t.trim().toLowerCase();return(n=Xr[i])!=null?n:e}return e}function gn(t,e,n,i={}){var u,b,h,w,v,y;let a=et(n),s=(u=i.inset)!=null?u:{},r=(b=i.padding)!=null?b:{x:0,y:0},o=((h=s.left)!=null?h:0)+r.x,l=((w=s.right)!=null?w:0)+r.x,d=((v=s.top)!=null?v:0)+r.y,p=((y=s.bottom)!=null?y:0)+r.y,c=Math.max(0,t-o-l),g=Math.max(0,e-d-p);return{x:o+c*a.x,y:d+g*a.y}}function hn(t,e,n,i={}){var h,w,v,y,m,f;let a=(h=i.inset)!=null?h:{},s=(w=i.padding)!=null?w:{x:0,y:0},r=((v=a.left)!=null?v:0)+s.x,o=((y=a.right)!=null?y:0)+s.x,l=((m=a.top)!=null?m:0)+s.y,d=((f=a.bottom)!=null?f:0)+s.y,p=Math.max(0,t-r-o),c=Math.max(0,e-l-d),g=et(n,{x:.5,y:.5}),u=Math.min(Math.max(g.x,0),1),b=Math.min(Math.max(g.y,0),1);return{x:r+p*u,y:l+c*b}}if(typeof window!="undefined"){let t=window.innerWidth,e=window.innerHeight,n=()=>{let i=window.innerWidth,a=window.innerHeight;(i!==t||a!==e)&&(t=i,e=a,pn(i,a))};window.addEventListener("resize",n),window.addEventListener("orientationchange",()=>{setTimeout(n,100)}),window.mraid&&(window.mraid.addEventListener("viewableChange",n),window.mraid.addEventListener("sizeChange",n)),pn(window.innerWidth,window.innerHeight),window.updateDebugConfig=Yr,window.getDebugConfig=Kr,window.copyConfig=oo,window.applyConfig=Qe,window.applyConfigForRatio=lo,window.positionAtBottom=Va,window.positionAtTop=Qr,window.positionAtCenter=eo,window.positionAtLeft=to,window.positionAtRight=no,window.positionAtBottomLeft=io,window.positionAtBottomRight=ao,window.positionAtTopLeft=so,window.positionAtTopRight=ro,window.applyPositionContract=Zr,console.log("\u{1F3AE} Debug Config Functions Available:"),console.log("\u2022 updateDebugConfig(category, key, value)"),console.log("\u2022 getDebugConfig()"),console.log("\u2022 copyConfig(presetName)"),console.log("\u2022 applyConfig(config)"),console.log("\u2022 applyConfigForRatio(width, height)"),console.log("\u{1F4CD} Positioning Helpers Available (with scale):"),console.log("\u2022 positionAtBottom(element, w, h, percent, scale)"),console.log("\u2022 positionAtTop(element, w, h, percent, scale)"),console.log("\u2022 positionAtCenter(element, w, h, offsetX, offsetY, scale)"),console.log("\u2022 positionAtLeft/Right(element, w, h, percent, scale)"),console.log("\u2022 Corner positions: BottomLeft/Right, TopLeft/Right (all with scale)"),console.log("\u2022 applyPositionContract(element, w, h, contract)"),console.log("Example: positionAtCenter(mySprite, 400, 600, 0, -50, 1.2)")}function Tt(t,e,n=0){return t*e+n}function Lt(t,e,n=0){return t*(1-e)+n}function kt(t,e,n=0){return t*e+n}function _t(t,e,n=0){return t*(1-e)+n}function U(t,e=0){return t/2+e}function Jr(t,e){return t*e}function Zr(t,e,n,i){var r,o,l,d,p,c,g,u,b,h,w,v,y,m,f,E,S,C,_,I;let a=0,s=0;switch(i.type){case"top":a=U(e,(o=(r=i.offset)==null?void 0:r.x)!=null?o:0),s=Tt(n,i.percent,(d=(l=i.offset)==null?void 0:l.y)!=null?d:0);break;case"bottom":a=U(e,(c=(p=i.offset)==null?void 0:p.x)!=null?c:0),s=Lt(n,i.percent,(u=(g=i.offset)==null?void 0:g.y)!=null?u:0);break;case"left":a=kt(e,i.percent,(h=(b=i.offset)==null?void 0:b.x)!=null?h:0),s=U(n,(v=(w=i.offset)==null?void 0:w.y)!=null?v:0);break;case"right":a=_t(e,i.percent,(m=(y=i.offset)==null?void 0:y.x)!=null?m:0),s=U(n,(E=(f=i.offset)==null?void 0:f.y)!=null?E:0);break;case"center":a=U(e,(C=(S=i.offset)==null?void 0:S.x)!=null?C:0),s=U(n,(I=(_=i.offset)==null?void 0:_.y)!=null?I:0);break}t.position?t.position.set(a,s):(t.x=a,t.y=s),i.scale!==void 0&&i.scale!==1&&t.scale&&(typeof t.scale.set=="function"?t.scale.set(i.scale,i.scale):(t.scale.x=i.scale,t.scale.y=i.scale))}function Va(t,e,n,i=.2,a=1,s=!0,r=!1){let o=Jr(n,i),l=Lt(n,i/2);ce(t,U(e),l);let d=s?a*le.scaleFactor:a;de(t,d),r&&!un.find(p=>p.element===t)&&Vr(t,Va,e,n,i,a,s)}function Qr(t,e,n,i=.1,a=1){ce(t,U(e),Tt(n,i)),de(t,a)}function eo(t,e,n,i=0,a=0,s=1){ce(t,U(e,i),U(n,a)),de(t,s)}function to(t,e,n,i=.1,a=1){ce(t,kt(e,i),U(n)),de(t,a)}function no(t,e,n,i=.1,a=1){ce(t,_t(e,i),U(n)),de(t,a)}function io(t,e,n,i=.05,a=.05,s=1){ce(t,kt(e,a),Lt(n,i)),de(t,s)}function ao(t,e,n,i=.05,a=.05,s=1){ce(t,_t(e,a),Lt(n,i)),de(t,s)}function so(t,e,n,i=.05,a=.05,s=1){ce(t,kt(e,a),Tt(n,i)),de(t,s)}function ro(t,e,n,i=.05,a=.05,s=1){ce(t,_t(e,a),Tt(n,i)),de(t,s)}function ce(t,e,n){t&&t.position?typeof t.position.set=="function"?t.position.set(e,n):(t.position.x=e,t.position.y=n):t&&(t.x=e,t.y=n)}function de(t,e){e!==1&&t&&t.scale&&(typeof t.scale.set=="function"?t.scale.set(e,e):t.scale.x!==void 0&&t.scale.y!==void 0&&(t.scale.x=e,t.scale.y=e))}var Ae={default:{layout:{scale_multiplier:1,position_offset:{x:0,y:0},debug_rect_visible:!0,debug_rect_color:16711680,debug_rect_thickness:4,debug_rect_scale_x:1,debug_rect_scale_y:1,screen_scale_x:1,screen_scale_y:1},engine:{scale:1,background_scale:1.05,background_offset_y:0,background_alpha:.98,label_pulse_speed:3,label_pulse_intensity:.03}},wide:{layout:{scale_multiplier:1,position_offset:{x:0,y:0},debug_rect_visible:!0,debug_rect_color:16711680,debug_rect_thickness:4,debug_rect_scale_x:1,debug_rect_scale_y:1,screen_scale_x:.9,screen_scale_y:1.1},engine:{scale:1,background_scale:1.1,background_offset_y:0,background_alpha:.95,label_pulse_speed:3,label_pulse_intensity:.03}},square:{layout:{scale_multiplier:1,position_offset:{x:0,y:0},debug_rect_visible:!0,debug_rect_color:16711680,debug_rect_thickness:4,debug_rect_scale_x:1,debug_rect_scale_y:1,screen_scale_x:.85,screen_scale_y:.85},engine:{scale:1,background_scale:1,background_offset_y:0,background_alpha:1,label_pulse_speed:3,label_pulse_intensity:.03}},tall:{layout:{scale_multiplier:1,position_offset:{x:0,y:0},debug_rect_visible:!0,debug_rect_color:16711680,debug_rect_thickness:4,debug_rect_scale_x:1,debug_rect_scale_y:1,screen_scale_x:1.1,screen_scale_y:.9},engine:{scale:1,background_scale:.95,background_offset_y:0,background_alpha:1,label_pulse_speed:3,label_pulse_intensity:.03}}};function oo(t){return t&&Ae[t]?JSON.parse(JSON.stringify(Ae[t])):JSON.parse(JSON.stringify(ze))}function Qe(t){Object.keys(t).forEach(e=>{let n=e;ze[n]&&t[n]&&Object.assign(ze[n],t[n])}),console.log("Config applied:",t)}function lo(t,e){let n=t/e;n>1.6?(Qe(Ae.wide),console.log("Applied WIDE config for ratio:",n)):n<.7?(Qe(Ae.tall),console.log("Applied TALL config for ratio:",n)):n>.8&&n<1.2?(Qe(Ae.square),console.log("Applied SQUARE config for ratio:",n)):(Qe(Ae.default),console.log("Applied DEFAULT config for ratio:",n))}if(typeof window!="undefined"){let t=window;t.configPresets=Ae,t.resolveAnchorVec2=t.resolveAnchorVec2||et,t.resolveScreenAnchorPoint=t.resolveScreenAnchorPoint||gn,t.resolveScreenRatioPoint=t.resolveScreenRatioPoint||hn}bn();function M(t,e){let n=(a,s)=>s===0?a:n(s,a%s),i=n(t,e);return`${t/i}:${e/i}`}var Vc=[{id:"iphone-15-pro-max",label:"iPhone 15 Pro Max",width:430,height:932,category:"iphone",ratio:M(430,932)},{id:"iphone-15-pro",label:"iPhone 15 Pro",width:393,height:852,category:"iphone",ratio:M(393,852)},{id:"iphone-15",label:"iPhone 15",width:393,height:852,category:"iphone",ratio:M(393,852)},{id:"iphone-14",label:"iPhone 14",width:390,height:844,category:"iphone",ratio:M(390,844)},{id:"iphone-se",label:"iPhone SE",width:375,height:667,category:"iphone",ratio:M(375,667)},{id:"iphone-12-mini",label:"iPhone 12 Mini",width:360,height:780,category:"iphone",ratio:M(360,780)}],Wc=[{id:"pixel-8-pro",label:"Pixel 8 Pro",width:448,height:998,category:"android",ratio:M(448,998)},{id:"pixel-8",label:"Pixel 8",width:412,height:915,category:"android",ratio:M(412,915)},{id:"samsung-s24-ultra",label:"Samsung S24 Ultra",width:412,height:915,category:"android",ratio:M(412,915)},{id:"samsung-s24",label:"Samsung S24",width:360,height:780,category:"android",ratio:M(360,780)},{id:"samsung-a54",label:"Samsung A54",width:412,height:915,category:"android",ratio:M(412,915)},{id:"oneplus-12",label:"OnePlus 12",width:412,height:915,category:"android",ratio:M(412,915)}],Yc=[{id:"ipad-pro-12",label:'iPad Pro 12.9"',width:1024,height:1366,category:"tablet",ratio:M(1024,1366)},{id:"ipad-pro-11",label:'iPad Pro 11"',width:834,height:1194,category:"tablet",ratio:M(834,1194)},{id:"ipad-air",label:"iPad Air",width:820,height:1180,category:"tablet",ratio:M(820,1180)},{id:"ipad-mini",label:"iPad Mini",width:768,height:1024,category:"tablet",ratio:M(768,1024)},{id:"samsung-tab-s9",label:"Samsung Tab S9",width:800,height:1280,category:"tablet",ratio:M(800,1280)}],Xa=[{id:"playable-portrait",label:"Playable Portrait",width:320,height:480,category:"playable",ratio:"2:3",mraidScale:1},{id:"mraid-320x480",label:"MRAID 320\xD7480",width:320,height:480,category:"playable",ratio:"2:3",mraidScale:1},{id:"iphone-14",label:"iPhone 14",width:390,height:844,category:"playable",ratio:M(390,844),mraidScale:.7},{id:"ipad-mini",label:"iPad Mini",width:768,height:1024,category:"playable",ratio:M(768,1024),mraidScale:.7}];var Kc=[...Xa];var bo=Xa[0];J();function yo(t){return new Promise((e,n)=>{let i=new FileReader;i.onerror=()=>n(new Error("FileReader failed")),i.onload=()=>e(String(i.result||"")),i.readAsDataURL(t)})}function vo(t){var a;let[e,n]=t.split(","),i=e==null?void 0:e.match(/data:(.*?);base64/);return{base64:n!=null?n:"",mimeType:(a=i==null?void 0:i[1])!=null?a:"image/png"}}async function wo(t){return await new Promise(e=>{let n=new Image;n.onload=()=>e({width:n.naturalWidth||n.width,height:n.naturalHeight||n.height}),n.onerror=()=>e(null),n.src=t})}async function yn(t){var e,n;try{console.log("[ImageUtils] Fetching image data from URL:",t);let i=await fetch(t);if(!i.ok)return console.warn("[ImageUtils] Fetch failed with status:",i.status,t),null;let a=await i.blob();console.log("[ImageUtils] Blob received, size:",a.size,"type:",a.type);let s=await yo(a),r=await wo(s),o=vo(s);return console.log("[ImageUtils] Success resolution:",r==null?void 0:r.width,"x",r==null?void 0:r.height,"mime:",o.mimeType),{base64:o.base64,mimeType:o.mimeType,dataUrl:s,width:(e=r==null?void 0:r.width)!=null?e:0,height:(n=r==null?void 0:r.height)!=null?n:0}}catch(i){return console.error("[ImageUtils] Error fetching image data:",i),null}}async function Pt(t,e=30){try{console.log("[ImageUtils] Removing background color...");let n=await new Promise((c,g)=>{let u=new Image;u.onload=()=>c(u),u.onerror=()=>g(new Error("Failed to load image")),u.src=t}),i=document.createElement("canvas");i.width=n.width,i.height=n.height;let a=i.getContext("2d");if(!a)return console.error("[ImageUtils] Failed to get canvas context"),t;a.drawImage(n,0,0);let s=a.getImageData(0,0,i.width,i.height),r=s.data,l=[{name:"top-left",offset:0},{name:"top-right",offset:(i.width-1)*4},{name:"bottom-left",offset:(i.height-1)*i.width*4},{name:"bottom-right",offset:((i.height-1)*i.width+(i.width-1))*4}].map(c=>({r:r[c.offset],g:r[c.offset+1],b:r[c.offset+2]})),d=0;for(let c=0;c<r.length;c+=4){let g=r[c],u=r[c+1],b=r[c+2],h=!1;for(let w of l)if(Math.sqrt(Math.pow(g-w.r,2)+Math.pow(u-w.g,2)+Math.pow(b-w.b,2))<e){h=!0;break}h&&(r[c+3]=0,d++)}return console.log(`[ImageUtils] Removed background from ${d} pixels (4-corner sampling, tolerance: ${e})`),a.putImageData(s,0,0),i.toDataURL("image/png")}catch(n){return console.error("[ImageUtils] Error removing background:",n),t}}var Qa=require("@google/genai");async function vn(t,e,n=[],i={}){var a,s,r,o,l,d,p;try{if(!(t!=null&&t.trim()))throw new Error("Gemini API key is required");if(!(e!=null&&e.trim()))throw new Error("Prompt is required");for(let v=0;v<n.length;v++){let y=n[v];if(!y.base64||!y.mimeType)throw new Error(`Image ${v+1} is missing required data`);if(y.base64.length<1e3&&console.warn(`Image ${v+1} data appears very small, may be corrupted`),!y.mimeType.startsWith("image/"))throw new Error(`Image ${v+1} has invalid MIME type: ${y.mimeType}`)}let c=new Qa.GoogleGenAI({apiKey:t}),g="gemini-2.5-flash",u=[e];n.length>0&&n.forEach((v,y)=>{u.push({inlineData:{data:v.base64,mimeType:v.mimeType}}),console.log(`[Gemini] Added image ${y+1}: ${v.mimeType}, size: ${Math.round(v.base64.length/1024)}KB`)}),console.log(`[Gemini] Making request with ${n.length} images and prompt length: ${e.length}`);let b=await c.models.generateContent({model:g,contents:u}),h="",w=(r=(s=(a=b.candidates)==null?void 0:a[0])==null?void 0:s.content)==null?void 0:r.parts;if(w)for(let v of w)v.text&&(h+=v.text);if(!h.trim())throw new Error("Empty response from Gemini API");return console.log(`[Gemini] Response received, length: ${h.length}`),h}catch(c){throw console.error("[Gemini] API error:",c),(o=c.message)!=null&&o.includes("Unable to process input image")?new Error("Unable to process the uploaded image. Please ensure it's a valid PNG, JPG, or JPEG file under 10MB and not corrupted."):(l=c.message)!=null&&l.includes("API_KEY_INVALID")?new Error("Invalid Gemini API key. Please check your API key configuration."):(d=c.message)!=null&&d.includes("QUOTA_EXCEEDED")?new Error("Gemini API quota exceeded. Please try again later or check your billing."):(p=c.message)!=null&&p.includes("SAFETY")?new Error("Content was flagged by Gemini safety filters. Please try with different images."):c}}var es=require("@google/genai");async function Mt(t,e,n=[],i={}){try{console.info("[GEMINI-REAL-SDK] Initializing GoogleGenAI...");let a=new es.GoogleGenAI({apiKey:t}),s=[{text:e}];n.length>0&&n.forEach((o,l)=>{console.info(`[GEMINI-REAL-SDK] Adding image part ${l}`),s.push({inlineData:{mimeType:o.mimeType,data:o.base64}})}),console.info("[GEMINI-REAL-SDK] Calling generateContent with model: gemini-2.5-flash-image");let r=await a.models.generateContent({model:"gemini-2.5-flash-image",contents:s});if(console.info("[GEMINI-REAL-SDK] Received response from model"),!r.candidates||!r.candidates[0]||!r.candidates[0].content||!r.candidates[0].content.parts)throw new Error("Gemini 2.5 Flash Image returned invalid response structure.");for(let o of r.candidates[0].content.parts)if(o.text)console.log(o.text);else if(o.inlineData){let l=o.inlineData.data,d=o.inlineData.mimeType||"image/png";return console.info("[GEMINI-REAL-SDK] Found inline image data in response"),`data:${d};base64,${l}`}throw new Error("Gemini 2.5 Flash Image returned no image data.")}catch(a){throw console.error("[GEMINI-REAL-SDK] Error in generateImageWithGemini25Flash:",JSON.stringify(a,Object.getOwnPropertyNames(a),2)),a}}var xo=require("pixi.js");Ze();J();var ns=require("pixi.js");var So=require("pixi.js");J();function jo(t){return new Promise((e,n)=>{let i=new FileReader;i.onerror=()=>n(new Error("FileReader failed")),i.onload=()=>e(String(i.result||"")),i.readAsDataURL(t)})}function Oo(t){var a;let[e,n]=t.split(","),i=e==null?void 0:e.match(/data:(.*?);base64/);return{base64:n!=null?n:"",mimeType:(a=i==null?void 0:i[1])!=null?a:"image/png"}}function Ro(t){return`
47
47
  Analyze these screenshots of a brand or game and extract its "Brand DNA".
48
48
 
49
49
  Provide a concise summary (2-3 sentences) covering: