@invarn/cli 0.9.195 → 0.9.196
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.
- package/dist/capture/VERSION +1 -0
- package/dist/capture/capture-build.cjs +2 -0
- package/dist/capture/controller.cjs +2 -0
- package/dist/capture/environment.txt +25 -0
- package/dist/capture/index.cjs +1 -0
- package/dist/capture/invarn-agent-0.13.0.aar +0 -0
- package/dist/capture/invarn-init-0.13.0.gradle +114 -0
- package/dist/capture/invarn-instrument-0.13.0.jar +0 -0
- package/dist/capture/verify-apk.cjs +2 -0
- package/dist/invarn.cjs +7 -7
- package/dist/sdk.mjs +7 -7
- package/package.json +2 -1
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
# The §6.3 environment, applied once at bake time. One `adb shell` command per line.
|
|
2
|
+
# This file's sha256 is a fingerprint input: change a line and every snapshot baked from the old file is stale.
|
|
3
|
+
# Lines prefixed `root:` need `adb root`, which only a google_apis image grants; on a playstore image they are
|
|
4
|
+
# skipped and the manifest records that they were. The pinned image is the Play image (§6.3, option C), so none is used.
|
|
5
|
+
# The clock and the timezone are NOT set here: a snapshot resumes at the instant it was saved, so emulib.set_clock sets
|
|
6
|
+
# both at every restore. auto_time and auto_time_zone are off so the guest never corrects itself mid-capture.
|
|
7
|
+
settings put global window_animation_scale 0
|
|
8
|
+
settings put global transition_animation_scale 0
|
|
9
|
+
settings put global animator_duration_scale 0
|
|
10
|
+
settings put global sysui_demo_allowed 1
|
|
11
|
+
am broadcast -a com.android.systemui.demo -e command enter
|
|
12
|
+
am broadcast -a com.android.systemui.demo -e command clock -e hhmm 1200
|
|
13
|
+
am broadcast -a com.android.systemui.demo -e command battery -e level 100 -e plugged false
|
|
14
|
+
am broadcast -a com.android.systemui.demo -e command network -e wifi show -e level 4 -e mobile show -e datatype none
|
|
15
|
+
am broadcast -a com.android.systemui.demo -e command notifications -e visible false
|
|
16
|
+
settings put global auto_time 0
|
|
17
|
+
settings put global auto_time_zone 0
|
|
18
|
+
settings put system font_scale 1.0
|
|
19
|
+
cmd uimode night no
|
|
20
|
+
settings put secure show_ime_with_hard_keyboard 0
|
|
21
|
+
settings put global package_verifier_user_consent -1
|
|
22
|
+
settings put global verifier_verify_adb_installs 0
|
|
23
|
+
# A system app's crash or ANR dialog is a system window the agent cannot see; it covered a capture once in six. Measured
|
|
24
|
+
# on this image: only hide_error_dialogs suppresses it (show_first_crash_dialog* do not).
|
|
25
|
+
settings put global hide_error_dialogs 1
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
var _0x3fe989=_0x5a4d;(function(_0x4a05d9,_0x6b273c){var _0x133953=_0x5a4d,_0x170996=_0x4a05d9();while(!![]){try{var _0x59a183=parseInt(_0x133953(0xcc))/0x1*(-parseInt(_0x133953(0xf6))/0x2)+parseInt(_0x133953(0xb4))/0x3*(parseInt(_0x133953(0xcb))/0x4)+-parseInt(_0x133953(0xee))/0x5*(-parseInt(_0x133953(0xbc))/0x6)+-parseInt(_0x133953(0xf3))/0x7+parseInt(_0x133953(0xd9))/0x8+parseInt(_0x133953(0xd1))/0x9+-parseInt(_0x133953(0xd8))/0xa*(parseInt(_0x133953(0xb3))/0xb);if(_0x59a183===_0x6b273c)break;else _0x170996['push'](_0x170996['shift']());}catch(_0x1e7b99){_0x170996['push'](_0x170996['shift']());}}}(_0x22de,0x9faea));var __importMetaUrl=require(_0x3fe989(0xd5))[_0x3fe989(0xca)](__filename)[_0x3fe989(0xd3)],R=Object[_0x3fe989(0xb1)],L=Object[_0x3fe989(0xc5)],D=Object[_0x3fe989(0xac)],F=Object[_0x3fe989(0xe3)][_0x3fe989(0xb5)],P=(_0x5a0eae,_0x3ed0c4)=>{for(var _0x3ae608 in _0x3ed0c4)R(_0x5a0eae,_0x3ae608,{'get':_0x3ed0c4[_0x3ae608],'enumerable':!0x0});},K=(_0x13b52d,_0x1f3d08,_0xd9b8bb,_0x142475)=>{var _0x5018c8=_0x3fe989;if(_0x1f3d08&&typeof _0x1f3d08==_0x5018c8(0xba)||typeof _0x1f3d08==_0x5018c8(0xea)){for(let _0x2c8125 of D(_0x1f3d08))!F[_0x5018c8(0xa7)](_0x13b52d,_0x2c8125)&&_0x2c8125!==_0xd9b8bb&&R(_0x13b52d,_0x2c8125,{'get':()=>_0x1f3d08[_0x2c8125],'enumerable':!(_0x142475=L(_0x1f3d08,_0x2c8125))||_0x142475[_0x5018c8(0xbe)]});}return _0x13b52d;},M=_0x858307=>K(R({},'__esModule',{'value':!0x0}),_0x858307),nt={};P(nt,{'android':()=>tt,'captureBuild':()=>Y,'controller':()=>Q,'dir':()=>z,'findJdk':()=>rt,'verifyApk':()=>Z,'version':()=>q}),module[_0x3fe989(0xc2)]=M(nt);var d=require(_0x3fe989(0xad)),m=require(_0x3fe989(0xb9)),s=require('node:path'),E=require(_0x3fe989(0xe9)),k=__importMetaUrl?(0x0,s[_0x3fe989(0xe5)])((0x0,E[_0x3fe989(0xa2)])(__importMetaUrl)):__dirname;function B(){var _0x272705=_0x3fe989;for(let _0x2b1dc5=k,_0x350f62=0x0;_0x350f62<0x6;_0x350f62++,_0x2b1dc5=(0x0,s[_0x272705(0xe5)])(_0x2b1dc5))if((0x0,m[_0x272705(0xce)])((0x0,s['join'])(_0x2b1dc5,_0x272705(0xaa))))return _0x2b1dc5;throw new Error('capture\x20toolkit:\x20no\x20VERSION\x20above\x20'+k);}var c=process.env.INVARN_CAPTURE_ROOT?(0x0,s[_0x3fe989(0xf4)])(process.env.INVARN_CAPTURE_ROOT):B(),U=!(0x0,m[_0x3fe989(0xce)])((0x0,s[_0x3fe989(0xa4)])(c,'emulator')),v=(0x0,m[_0x3fe989(0xcf)])((0x0,s[_0x3fe989(0xa4)])(c,'VERSION'),_0x3fe989(0xf0))[_0x3fe989(0xb7)](),ot=U?(0x0,s[_0x3fe989(0xa4)])(c,'environment.txt'):(0x0,s[_0x3fe989(0xa4)])(c,_0x3fe989(0xa5),_0x3fe989(0xe8)),V=()=>process.env.INVARN_DIST||((0x0,m[_0x3fe989(0xce)])((0x0,s[_0x3fe989(0xa4)])(c,'dist',_0x3fe989(0xc7)+v+'.aar'))?(0x0,s['join'])(c,'dist'):c),o=require(_0x3fe989(0xb9)),$=require('node:os'),p=require(_0x3fe989(0xad)),b=require('node:child_process'),S=class extends Error{constructor(_0xa61487,_0x402fa5){var _0x37bc3e=_0x3fe989;super(_0x37bc3e(0xa3)+_0xa61487+_0x37bc3e(0xe7)+_0x402fa5+'\x20seconds'),this['name']=_0x37bc3e(0xd6);}};function T(_0x33a134,_0x570a29=[],{timeout:_0xfa1a10=null,cwd:_0x144c10,env:_0xca802f,binary:_0x3fedbb=!0x1,input:_0x2096a5=null,stdio:_0x653125}={}){return new Promise((_0x4f5d89,_0x20d44f)=>{var _0x4f90c7=_0x5a4d;let _0x464d32;try{_0x464d32=(0x0,b['spawn'])(_0x33a134,_0x570a29,{'cwd':_0x144c10,'env':_0xca802f,'stdio':_0x653125??[_0x2096a5===null?'ignore':_0x4f90c7(0xdc),_0x4f90c7(0xdc),'pipe']});}catch(_0x5de52a){_0x20d44f(_0x5de52a);return;}let _0x433971=[],_0x42abd3=[],_0x5ac3ce=null,_0x3f5525=!0x1,_0x26b50c=!0x1;_0x464d32[_0x4f90c7(0xe0)]?.['on'](_0x4f90c7(0xa9),_0x1dbd7c=>_0x433971[_0x4f90c7(0xe6)](_0x1dbd7c)),_0x464d32[_0x4f90c7(0xd2)]?.['on'](_0x4f90c7(0xa9),_0xf6bc85=>_0x42abd3[_0x4f90c7(0xe6)](_0xf6bc85)),_0x464d32['on']('error',_0x5674da=>{_0x26b50c||(_0x26b50c=!0x0,_0x5ac3ce&&clearTimeout(_0x5ac3ce),_0x20d44f(_0x5674da));}),_0xfa1a10!=null&&(_0x5ac3ce=setTimeout(()=>{_0x3f5525=!0x0;try{_0x464d32['kill']('SIGKILL');}catch{}},_0xfa1a10*0x3e8)),_0x464d32['on'](_0x4f90c7(0xbd),(_0x467919,_0x410f51)=>{var _0x42cafc=_0x4f90c7;if(_0x26b50c)return;if(_0x26b50c=!0x0,_0x5ac3ce&&clearTimeout(_0x5ac3ce),_0x3f5525){_0x20d44f(new S([_0x33a134,..._0x570a29]['join']('\x20'),_0xfa1a10));return;}let _0x4e7858=Buffer[_0x42cafc(0xeb)](_0x433971),_0x315912=Buffer[_0x42cafc(0xeb)](_0x42abd3);_0x4f5d89({'code':_0x467919??(_0x410f51?-0x1:0x0),'stdout':_0x3fedbb?_0x4e7858:_0x4e7858[_0x42cafc(0xb2)](_0x42cafc(0xf0)),'stderr':_0x3fedbb?_0x315912:_0x315912[_0x42cafc(0xb2)]('utf8')});}),_0x2096a5!==null&&_0x464d32[_0x4f90c7(0xa8)]&&_0x464d32['stdin'][_0x4f90c7(0xc6)](_0x2096a5);});}var W=_0x4d6316=>{var _0x344073=_0x3fe989;try{return(0x0,o[_0x344073(0xdb)])(_0x4d6316)[_0x344073(0xb6)]();}catch{return!0x1;}},w=_0x172d96=>{var _0x40d6fa=_0x3fe989;try{return(0x0,o['accessSync'])(_0x172d96,o[_0x40d6fa(0xe4)]['X_OK']),(0x0,o[_0x40d6fa(0xdb)])(_0x172d96)[_0x40d6fa(0xde)]();}catch{return!0x1;}};function _0x5a4d(_0x497aa5,_0x226813){_0x497aa5=_0x497aa5-0xa2;var _0x22dedd=_0x22de();var _0x5a4d42=_0x22dedd[_0x497aa5];if(_0x5a4d['IUOGrl']===undefined){var _0x323859=function(_0x64056a){var _0x174a9d='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';var _0x18db12='',_0x5a0eae='';for(var _0x3ed0c4=0x0,_0x3ae608,_0x13b52d,_0x1f3d08=0x0;_0x13b52d=_0x64056a['charAt'](_0x1f3d08++);~_0x13b52d&&(_0x3ae608=_0x3ed0c4%0x4?_0x3ae608*0x40+_0x13b52d:_0x13b52d,_0x3ed0c4++%0x4)?_0x18db12+=String['fromCharCode'](0xff&_0x3ae608>>(-0x2*_0x3ed0c4&0x6)):0x0){_0x13b52d=_0x174a9d['indexOf'](_0x13b52d);}for(var _0xd9b8bb=0x0,_0x142475=_0x18db12['length'];_0xd9b8bb<_0x142475;_0xd9b8bb++){_0x5a0eae+='%'+('00'+_0x18db12['charCodeAt'](_0xd9b8bb)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x5a0eae);};_0x5a4d['hSrYIu']=_0x323859,_0x5a4d['FjwSvz']={},_0x5a4d['IUOGrl']=!![];}var _0x4c39d5=_0x22dedd[0x0];_0x5a4d['RnjwOX']!==_0x4c39d5&&(_0x5a4d['FjwSvz']={},_0x5a4d['RnjwOX']=_0x4c39d5);var _0x57da8a=_0x5a4d['FjwSvz'][_0x497aa5];return _0x57da8a===undefined?(_0x5a4d42=_0x5a4d['hSrYIu'](_0x5a4d42),_0x5a4d['FjwSvz'][_0x497aa5]=_0x5a4d42):_0x5a4d42=_0x57da8a,_0x5a4d42;}function G(_0x1b054c){var _0xfabfbe=_0x3fe989;let _0x1bffd2=(0x0,p[_0xfabfbe(0xa4)])(_0x1b054c,'release');if(!(0x0,o[_0xfabfbe(0xce)])(_0x1bffd2)||!(0x0,o[_0xfabfbe(0xdb)])(_0x1bffd2)[_0xfabfbe(0xde)]()||!w((0x0,p[_0xfabfbe(0xa4)])(_0x1b054c,'bin',_0xfabfbe(0xc9))))return'';let _0x442afa=(0x0,o[_0xfabfbe(0xcf)])(_0x1bffd2,_0xfabfbe(0xf0))['split']('\x0a')[_0xfabfbe(0xb8)](_0x5ea6ae=>/^JAVA_VERSION="([^"]*)"/[_0xfabfbe(0xc4)](_0x5ea6ae)?.[0x1])[_0xfabfbe(0xc8)](_0x338cfb=>_0x338cfb!==void 0x0)['join']('\x0a');return _0x442afa[_0xfabfbe(0xf1)]('1.')?_0x442afa[_0xfabfbe(0xed)](0x2)[_0xfabfbe(0xe1)](/[._]/)[0x0]:_0x442afa?_0x442afa[_0xfabfbe(0xe1)](/[._+-]/)[0x0]:'';}function _0x22de(){var _0x29ae57=['zw52AxjVBM1LBNqUDhH0','BM9KztP1CMW','zNvUy3rPB24','y29Uy2f0','l3vZCI9SB2nHBc9VChqVB3bLBMPKA0a','C2XPy2u','ntKYntm5me5eD0voCW','CMvHzgrPCLn5BMm','DxrMoa','C3rHCNrZv2L0Aa','DMvYAwz5lwfWAY5JANm','ota4otiXm2fjAgPVrq','CMvZB2X2zq','C29YDa','mZe0mLHnB29dCq','zMLSzvvstfrVugf0Aa','q29TBwfUzcaN','AM9PBG','zw11Bgf0B3i','l2XPyMv4zwmVB3bLBMPKAY5QzgSVq29UDgvUDhmVsg9Tzq','y2fSBa','C3rKAw4','zgf0yq','vKvsu0LptG','Ag9TzwrPCG','z2v0t3DUuhjVCgvYDhLoyw1LCW','BM9KztPWyxrO','lNnKA21HBI9Jyw5KAwrHDgvZl2PHDMe','y2fWDhvYzs1IDwLSzc5JANm','Aw52yxjUlwLUC3rYDw1LBNqT','zgvMAw5LuhjVCgvYDhK','Dg9tDhjPBMC','ndrMref6u0m','m25TtePvrW','AgfZt3DUuhjVCgvYDhK','AxneAxjLy3rVCNK','DhjPBq','BwfW','BM9KztPMCW','B2jQzwn0','l0nVBNrLBNrZl0HVBwu','nK1ZrKntqG','y2XVC2u','zw51BwvYywjSzq','Aw52yxjUlwLUAxqT','l0fWCgXPy2f0Aw9UCY9bBMrYB2LKifn0DwrPBY5HChaVq29UDgvUDhmVAMjYl0nVBNrLBNrZl0HVBwu','l0XPyNjHCNKVsMf2ys9kyxzHvMLYDhvHBe1Hy2HPBMvZ','zxHWB3j0CW','yw5KCM9Pzc1ZDhvKAw8VAMjY','zxHLyW','z2v0t3DUuhjVCgvYDhLezxnJCMLWDg9Y','zw5K','Aw52yxjUlwfNzw50lq','zMLSDgvY','AMf2yq','Cgf0AfrVrMLSzvvsta','ndiYntC5nMvitwLqDa','mZq3Eejvt1nt','lMDYywrSzq','zxHPC3rZu3LUyW','CMvHzezPBgvtEw5J','l3vZCI9SAwjLEgvJl2PHDMfFAg9Tzq','mJe1mJm2ogrJDgXuDq','C3rKzxjY','AhjLzG','q29SBgf0B3i','DxjS','vgLTzw91Dev4CgLYzwq','y29TCgfYzq','mJy4mJqZmgDguhjeta','odCXotu3nLz1tg51sW','l29WDc9OB21LyNjLDY9VChqVB3bLBMPKA0a','C3rHDfn5BMm','CgLWzq','l29WDc9HBMrYB2LKlxn0DwrPBY9QyNi','AxngAwXL','CMvWBgfJzq','C3rKB3v0','C3bSAxq','tgLICMfYEs9kyxzHl0PHDMfwAxj0DwfStwfJAgLUzxm','ChjVDg90ExbL','y29UC3rHBNrZ','zgLYBMfTzq','ChvZAa','jYb0Aw1LzcbVDxqGywz0zxiG'];_0x22de=function(){return _0x29ae57;};return _0x22de();}var X=new Intl[(_0x3fe989(0xd4))]('en');function h(_0xdafe16,_0xee5287=''){var _0x26b724=_0x3fe989;try{return(0x0,o[_0x26b724(0xef)])(_0xdafe16)[_0x26b724(0xc8)](_0x2765b8=>!_0x2765b8[_0x26b724(0xf1)]('.'))[_0x26b724(0xf5)](X[_0x26b724(0xd7)])[_0x26b724(0xb8)](_0x45d29e=>(0x0,p[_0x26b724(0xa4)])(_0xdafe16,_0x45d29e)+_0xee5287);}catch{return[];}}async function C(_0x3254a8){var _0x2fe734=_0x3fe989;let _0x446ecb=String(_0x3254a8),_0x5319dc=_0x144994=>_0x144994&&G(_0x144994)===_0x446ecb;if(_0x5319dc(process.env.JAVA_HOME))return process.env.JAVA_HOME;if(w('/usr/libexec/java_home'))try{let _0x365278=(await T(_0x2fe734(0xd0),['-v',_0x446ecb],{'timeout':0x1e}))['stdout'][_0x2fe734(0xdf)](/\n+$/,'');if(_0x5319dc(_0x365278))return _0x365278;}catch{}if(_0x5319dc(process.env[`INVARN_JDK_${_0x446ecb}`]))return process.env[`INVARN_JDK_${_0x446ecb}`];let _0x3ab6ea=(0x0,$[_0x2fe734(0xab)])(),_0x50c532=[...h(_0x2fe734(0xc1),_0x2fe734(0xbb)),...h((0x0,p[_0x2fe734(0xa4)])(_0x3ab6ea,_0x2fe734(0xe2)),_0x2fe734(0xbb)),_0x2fe734(0xda)+_0x446ecb+_0x2fe734(0xa6),_0x2fe734(0xec)+_0x446ecb+_0x2fe734(0xa6),...h('/usr/lib/jvm'),...h((0x0,p['join'])(_0x3ab6ea,_0x2fe734(0xae))),_0x2fe734(0xc0),(0x0,p[_0x2fe734(0xa4)])(_0x3ab6ea,'Applications/Android\x20Studio.app/Contents/jbr/Contents/Home'),_0x2fe734(0xdd),(0x0,p[_0x2fe734(0xa4)])(_0x3ab6ea,_0x2fe734(0xc3))];for(let _0x59bf67 of _0x50c532)if(W(_0x59bf67)&&_0x5319dc(_0x59bf67))return _0x59bf67;return null;}var q=v,z=c,Q=(0x0,d[_0x3fe989(0xa4)])(c,'controller.cjs'),Y=(0x0,d[_0x3fe989(0xa4)])(c,_0x3fe989(0xaf)),Z=(0x0,d['join'])(c,_0x3fe989(0xf2)),tt=()=>{var _0x5e49e3=_0x3fe989;let _0x4f380d=V();return{'init':(0x0,d[_0x5e49e3(0xa4)])(_0x4f380d,_0x5e49e3(0xbf)+v+_0x5e49e3(0xcd)),'instrument':(0x0,d[_0x5e49e3(0xa4)])(_0x4f380d,_0x5e49e3(0xb0)+v+'.jar'),'agent':(0x0,d[_0x5e49e3(0xa4)])(_0x4f380d,'invarn-agent-'+v+'.aar')};},rt=_0x21aeb0=>C(_0x21aeb0);0x0&&(module['exports']={'android':android,'captureBuild':captureBuild,'controller':controller,'dir':dir,'findJdk':findJdk,'verifyApk':verifyApk,'version':version});
|
|
Binary file
|
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
// Invarn universal instrumentation — passed with `gradle --init-script`. Touches no file in the repo.
|
|
2
|
+
// Inputs, first found wins: -Pinvarn.instrument.jar / -Dinvarn.instrument.jar / $INVARN_INSTRUMENT_JAR
|
|
3
|
+
// -Pinvarn.agent.aar / -Dinvarn.agent.aar / $INVARN_AGENT_AAR
|
|
4
|
+
// -Pinvarn.app.projects / -Dinvarn.app.projects / $INVARN_APP_PROJECTS (optional,
|
|
5
|
+
// comma-separated project paths of the app modules to instrument; default :app)
|
|
6
|
+
// 0.8.2: -D is read off the build's StartParameter first. Gradle 5.1 on JDK 11 reuses a daemon without refreshing its
|
|
7
|
+
// environment OR its JVM system properties (both read null there), but the command line's -D always reach the build.
|
|
8
|
+
def pick = { String prop, String env ->
|
|
9
|
+
gradle.startParameter.projectProperties[prop] ?: gradle.startParameter.systemPropertiesArgs[prop] ?:
|
|
10
|
+
System.getProperty(prop) ?: System.getenv(env)
|
|
11
|
+
}
|
|
12
|
+
def jar = pick('invarn.instrument.jar', 'INVARN_INSTRUMENT_JAR')
|
|
13
|
+
def aar = pick('invarn.agent.aar', 'INVARN_AGENT_AAR')
|
|
14
|
+
def apps = (pick('invarn.app.projects', 'INVARN_APP_PROJECTS') ?: ':app').split(',')*.trim().findAll { it } as Set
|
|
15
|
+
logger.lifecycle("[invarn init] jar=${jar} aar=${aar} apps=${apps}")
|
|
16
|
+
// 0.10.0: a build from a developer's working tree writes nothing into it. With -Dinvarn.build.root (or
|
|
17
|
+
// $INVARN_BUILD_ROOT), every project's build directory (the root build's, every included build's, buildSrc's) moves
|
|
18
|
+
// under it, keyed by the project's directory relative to -Dinvarn.checkout ($INVARN_CHECKOUT), or by its flattened
|
|
19
|
+
// absolute path outside it. Done before the nested-build return below, so an included build is moved too, and before
|
|
20
|
+
// the project's build script runs: a script that sets its own build directory wins, and capture-build.sh reports
|
|
21
|
+
// whatever the build left in the checkout.
|
|
22
|
+
def buildRoot = pick('invarn.build.root', 'INVARN_BUILD_ROOT')
|
|
23
|
+
if (buildRoot) {
|
|
24
|
+
def checkoutDir = pick('invarn.checkout', 'INVARN_CHECKOUT')
|
|
25
|
+
def base = checkoutDir ? new File(checkoutDir).canonicalFile.toPath() : null
|
|
26
|
+
gradle.beforeProject { p ->
|
|
27
|
+
def dir = p.projectDir.canonicalFile.toPath()
|
|
28
|
+
def rel = base != null && dir.startsWith(base) ? base.relativize(dir).toString() : null
|
|
29
|
+
def key = rel == null ? '_abs' + dir.toString().replaceAll('[^A-Za-z0-9._-]', '_') : (rel ?: '_root')
|
|
30
|
+
def to = new File(buildRoot, "projects/${key}/build")
|
|
31
|
+
try { p.layout.buildDirectory.set(to) } catch (Throwable ignored) { p.buildDir = to }
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
if (jar == null || aar == null) {
|
|
35
|
+
// 0.8.2: the root build is the one a capture instruments, so missing inputs there fail it: a skipped root build
|
|
36
|
+
// wrote an uninstrumented APK that looked like a capture build's (Gradle 5.1 on JDK 11 reuses a daemon without
|
|
37
|
+
// refreshing its environment, so $INVARN_* read null; capture-build.sh now also passes them as -D, see pick).
|
|
38
|
+
// Init scripts also run for every included build and buildSrc, where -P is not propagated; those have a parent
|
|
39
|
+
// and keep skipping.
|
|
40
|
+
if (gradle.parent == null) throw new GradleException("[invarn init] inputs missing in the root build (jar=${jar} " +
|
|
41
|
+
"aar=${aar}): pass -Dinvarn.instrument.jar and -Dinvarn.agent.aar (capture-build.sh does), or the env vars")
|
|
42
|
+
logger.lifecycle('[invarn init] inputs missing in this nested build — skipping (normal for included builds and buildSrc)')
|
|
43
|
+
return
|
|
44
|
+
}
|
|
45
|
+
System.setProperty('invarn.agent.aar', aar)
|
|
46
|
+
// The jar goes on the app projects' buildscript classpath and nowhere else. A project's classloader is its
|
|
47
|
+
// parent's plus its own classpath, and Gradle keys every task on the classloader that loaded it: a jar on the
|
|
48
|
+
// root's (or every project's) classpath gives every task in every module a new implementation hash, so an
|
|
49
|
+
// instrumented build reuses nothing from the uninstrumented build of the same checkout and shares no build-cache
|
|
50
|
+
// entries with it. On the app project alone, only the app's own tasks differ, and those differ anyway.
|
|
51
|
+
// The init script has to decide before the project's build script runs, when it cannot yet see which plugins the
|
|
52
|
+
// project applies (an application plugin applied by a convention plugin is invisible in the build file), so the
|
|
53
|
+
// app projects are named. An app project left out of the list, or a listed project that is not an app, is said
|
|
54
|
+
// out loud rather than built uninstrumented.
|
|
55
|
+
def applied = [] as Set
|
|
56
|
+
allprojects { p ->
|
|
57
|
+
if (p.path in apps) {
|
|
58
|
+
p.buildscript.dependencies.add('classpath', p.files(jar))
|
|
59
|
+
p.plugins.withId('com.android.application') {
|
|
60
|
+
p.apply plugin: 'com.invarn.instrument'
|
|
61
|
+
applied << p.path
|
|
62
|
+
p.logger.lifecycle("[invarn init] applied com.invarn.instrument to ${p.path}")
|
|
63
|
+
}
|
|
64
|
+
} else {
|
|
65
|
+
p.plugins.withId('com.android.application') {
|
|
66
|
+
p.logger.warn("[invarn init] ${p.path} applies com.android.application but is not instrumented; " +
|
|
67
|
+
"name it in INVARN_APP_PROJECTS (now ${apps.join(',')}) to capture it")
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
// 0.9.0 (F11, owner 2026-09-26): a minified capture names by Compose's source information, which R8 would delete
|
|
72
|
+
// (0.4.2's redirect keeps it) but which a compiler may never have written: AGP's own Compose setup (Kotlin before 2.0)
|
|
73
|
+
// and some Compose Gradle plugin versions write it for debuggable variants only, so a release had no app-authored name
|
|
74
|
+
// at all (HabitBuilder, Barnee). When the build minifies an instrumented app, every Kotlin compile in it gets the
|
|
75
|
+
// compiler's own option, on the command line of the build: no file changes, and a debug capture is untouched.
|
|
76
|
+
def SOURCE_INFO = ['-P', 'plugin:androidx.compose.compiler.plugins.kotlin:sourceInformation=true']
|
|
77
|
+
gradle.taskGraph.whenReady { graph ->
|
|
78
|
+
def minifying = graph.allTasks.any { it.name ==~ /minify\w+WithR8/ && it.project.path in applied }
|
|
79
|
+
if (!minifying) return
|
|
80
|
+
// A compile that already carries the option is left as it is: newer Compose plugins pass it themselves (on, for a
|
|
81
|
+
// release too: searchlauncher, web-to-app), and the compiler refuses it twice ("Multiple values are not allowed").
|
|
82
|
+
// It is added where nothing passes it: AGP's own Compose setup, and plugin versions that omit it when off (Barnee).
|
|
83
|
+
def COMPOSE = 'androidx.compose.compiler.plugins.kotlin'
|
|
84
|
+
def carries = { t ->
|
|
85
|
+
def args = t.hasProperty('compilerOptions') ? t.compilerOptions.freeCompilerArgs.getOrElse([]) : (t.kotlinOptions.freeCompilerArgs ?: [])
|
|
86
|
+
if (args.any { it.toString().contains("${COMPOSE}:sourceInformation") }) return true
|
|
87
|
+
try { return t.pluginOptions.get().any { c -> (c.allOptions()[COMPOSE] ?: []).any { it.key == 'sourceInformation' } } }
|
|
88
|
+
catch (Exception e) { return false }
|
|
89
|
+
}
|
|
90
|
+
def added = 0, carried = 0
|
|
91
|
+
graph.allTasks.findAll { it.class.name.startsWith('org.jetbrains.kotlin.gradle.tasks.KotlinCompile') }.each { t ->
|
|
92
|
+
if (carries(t)) { carried++; return }
|
|
93
|
+
if (t.hasProperty('compilerOptions')) t.compilerOptions.freeCompilerArgs.addAll(SOURCE_INFO)
|
|
94
|
+
else t.kotlinOptions.freeCompilerArgs += SOURCE_INFO
|
|
95
|
+
added++
|
|
96
|
+
}
|
|
97
|
+
logger.lifecycle("[invarn init] minified: Compose source information added to ${added} Kotlin compiles " +
|
|
98
|
+
"(${carried} carried it already)")
|
|
99
|
+
}
|
|
100
|
+
gradle.projectsEvaluated { g ->
|
|
101
|
+
def missing = apps.findAll { g.rootProject.findProject(it) != null && !(it in applied) }
|
|
102
|
+
if (missing) throw new GradleException("[invarn init] ${missing.join(',')} named in INVARN_APP_PROJECTS " +
|
|
103
|
+
"but did not apply com.android.application, so nothing would be instrumented")
|
|
104
|
+
// 0.8.2: where each instrumented project writes its APKs, for capture-build.sh to verify those and only those (a
|
|
105
|
+
// build can package other APKs, e.g. a template APK another module embeds). A project's directory is not always
|
|
106
|
+
// its path, and its build directory can be moved, so it is read here rather than guessed there.
|
|
107
|
+
if (applied && g.parent == null) {
|
|
108
|
+
// 0.9.0 (T4): the file capture-build.sh named for this build; the old shared name only without one
|
|
109
|
+
def named = gradle.startParameter.systemPropertiesArgs['invarn.app.dirs.file']
|
|
110
|
+
def f = named ? new File(named) : new File(g.gradleUserHomeDir, 'invarn/app-build-dirs.txt')
|
|
111
|
+
f.parentFile.mkdirs()
|
|
112
|
+
f.text = applied.collect { g.rootProject.project(it).layout.buildDirectory.get().asFile.absolutePath }.join('\n') + '\n'
|
|
113
|
+
}
|
|
114
|
+
}
|
|
Binary file
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
const _0x3b4baf=_0x408c;(function(_0x538393,_0x3b155c){const _0x174e9a=_0x408c,_0x2e2fc2=_0x538393();while(!![]){try{const _0x500170=-parseInt(_0x174e9a(0x19a))/0x1+parseInt(_0x174e9a(0x198))/0x2+parseInt(_0x174e9a(0x175))/0x3*(parseInt(_0x174e9a(0x1ac))/0x4)+parseInt(_0x174e9a(0x164))/0x5*(parseInt(_0x174e9a(0x16c))/0x6)+parseInt(_0x174e9a(0x1dc))/0x7+-parseInt(_0x174e9a(0x173))/0x8+parseInt(_0x174e9a(0x1d7))/0x9*(-parseInt(_0x174e9a(0x1bc))/0xa);if(_0x500170===_0x3b155c)break;else _0x2e2fc2['push'](_0x2e2fc2['shift']());}catch(_0x5abda0){_0x2e2fc2['push'](_0x2e2fc2['shift']());}}}(_0x3a3e,0xc01a7));var __importMetaUrl=require('url')[_0x3b4baf(0x15c)](__filename)[_0x3b4baf(0x18a)],A=Object[_0x3b4baf(0x1ad)],Q=Object[_0x3b4baf(0x190)],X=Object['getOwnPropertyNames'],Y=Object[_0x3b4baf(0x1b8)][_0x3b4baf(0x19b)],Z=(_0xf6aff5,_0x3790cd)=>{for(var _0x24a48d in _0x3790cd)A(_0xf6aff5,_0x24a48d,{'get':_0x3790cd[_0x24a48d],'enumerable':!0x0});},tt=(_0x1ee4ae,_0xb8eec1,_0xec053f,_0x2bc0b7)=>{const _0x138cea=_0x3b4baf;if(_0xb8eec1&&typeof _0xb8eec1==_0x138cea(0x1d6)||typeof _0xb8eec1==_0x138cea(0x1a8)){for(let _0x1ba96b of X(_0xb8eec1))!Y[_0x138cea(0x1aa)](_0x1ee4ae,_0x1ba96b)&&_0x1ba96b!==_0xec053f&&A(_0x1ee4ae,_0x1ba96b,{'get':()=>_0xb8eec1[_0x1ba96b],'enumerable':!(_0x2bc0b7=Q(_0xb8eec1,_0x1ba96b))||_0x2bc0b7['enumerable']});}return _0x1ee4ae;},et=_0x41f422=>tt(A({},'__esModule',{'value':!0x0}),_0x41f422),at={};Z(at,{'Dex':()=>j,'HOOKS':()=>S,'compose_runtime':()=>D,'ownership':()=>R,'scan':()=>K,'verify':()=>G}),module[_0x3b4baf(0x170)]=et(at);var P=require(_0x3b4baf(0x182)),F=require(_0x3b4baf(0x178));function $(_0x525273){const _0x2914e9=_0x3b4baf;if(!_0x525273)return[];let _0x315469=String(_0x525273)['split'](/\r\n|[\n\r\x0b\x0c\x1c\x1d\x1e\x85\u2028\u2029]/);return _0x315469[_0x2914e9(0x18d)]&&_0x315469[_0x315469[_0x2914e9(0x18d)]-0x1]===''&&_0x315469[_0x2914e9(0x1a7)](),_0x315469;}function B(_0x1e67a3,_0x2fee62){const _0x14c713=_0x3b4baf;if(_0x1e67a3===_0x2fee62)return 0x0;let _0x2d4813=Array[_0x14c713(0x1db)](String(_0x1e67a3)),_0x487584=Array[_0x14c713(0x1db)](String(_0x2fee62));for(let _0xe975e2=0x0;_0xe975e2<Math['min'](_0x2d4813['length'],_0x487584[_0x14c713(0x18d)]);_0xe975e2++){let _0x265dee=_0x2d4813[_0xe975e2][_0x14c713(0x16e)](0x0),_0x38a557=_0x487584[_0xe975e2]['codePointAt'](0x0);if(_0x265dee!==_0x38a557)return _0x265dee<_0x38a557?-0x1:0x1;}return _0x2d4813[_0x14c713(0x18d)]-_0x487584[_0x14c713(0x18d)];}var nt=(_0x3e4cc9,_0xbc6ca=_0x4a5144=>_0x4a5144)=>[..._0x3e4cc9][_0x3b4baf(0x1a4)]((_0x1601fe,_0x2f9e3f)=>{const _0x385a9d=_0x3b4baf;let _0x19072a=_0xbc6ca(_0x1601fe),_0x149a91=_0xbc6ca(_0x2f9e3f);if(Array[_0x385a9d(0x169)](_0x19072a)){for(let _0xd660f8=0x0;_0xd660f8<_0x19072a[_0x385a9d(0x18d)];_0xd660f8++){let _0x3f8f60=typeof _0x19072a[_0xd660f8]==_0x385a9d(0x191)?_0x19072a[_0xd660f8]-_0x149a91[_0xd660f8]:B(_0x19072a[_0xd660f8],_0x149a91[_0xd660f8]);if(_0x3f8f60)return _0x3f8f60;}return 0x0;}return typeof _0x19072a==_0x385a9d(0x191)?_0x19072a-_0x149a91:B(_0x19072a,_0x149a91);});function z(_0x48faea,_0x480e72){const _0x28339d=_0x3b4baf;let _0x309809='\x22';for(let _0x2b9f2a of String(_0x48faea)){let _0x2e0219=_0x2b9f2a['codePointAt'](0x0);if(_0x2b9f2a==='\x22')_0x309809+='\x5c\x22';else{if(_0x2b9f2a==='\x5c')_0x309809+='\x5c\x5c';else{if(_0x2b9f2a==='\x0a')_0x309809+='\x5cn';else{if(_0x2b9f2a==='\x0d')_0x309809+='\x5cr';else{if(_0x2b9f2a==='\x09')_0x309809+='\x5ct';else{if(_0x2b9f2a==='\x08')_0x309809+='\x5cb';else{if(_0x2b9f2a==='\x0c')_0x309809+='\x5cf';else{if(_0x2e0219<0x20)_0x309809+='\x5cu'+_0x2e0219[_0x28339d(0x153)](0x10)[_0x28339d(0x1d2)](0x4,'0');else{if(_0x480e72&&_0x2e0219>0x7e){if(_0x2e0219>0xffff){let _0xf5ee9c=_0x2e0219-0x10000;_0x309809+='\x5cu'+(0xd800+(_0xf5ee9c>>0xa))[_0x28339d(0x153)](0x10)['padStart'](0x4,'0')+'\x5cu'+(0xdc00+(_0xf5ee9c&0x3ff))[_0x28339d(0x153)](0x10)[_0x28339d(0x1d2)](0x4,'0');}else _0x309809+='\x5cu'+_0x2e0219['toString'](0x10)[_0x28339d(0x1d2)](0x4,'0');}else _0x309809+=_0x2b9f2a;}}}}}}}}}return _0x309809+'\x22';}function _0x408c(_0x119597,_0x305dfa){_0x119597=_0x119597-0x14b;const _0x3a3e42=_0x3a3e();let _0x408c23=_0x3a3e42[_0x119597];if(_0x408c['oHFjFV']===undefined){var _0xe9b957=function(_0x50b8e9){const _0x3ed469='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x156ed0='',_0xf6aff5='';for(let _0x3790cd=0x0,_0x24a48d,_0x1ee4ae,_0xb8eec1=0x0;_0x1ee4ae=_0x50b8e9['charAt'](_0xb8eec1++);~_0x1ee4ae&&(_0x24a48d=_0x3790cd%0x4?_0x24a48d*0x40+_0x1ee4ae:_0x1ee4ae,_0x3790cd++%0x4)?_0x156ed0+=String['fromCharCode'](0xff&_0x24a48d>>(-0x2*_0x3790cd&0x6)):0x0){_0x1ee4ae=_0x3ed469['indexOf'](_0x1ee4ae);}for(let _0xec053f=0x0,_0x2bc0b7=_0x156ed0['length'];_0xec053f<_0x2bc0b7;_0xec053f++){_0xf6aff5+='%'+('00'+_0x156ed0['charCodeAt'](_0xec053f)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0xf6aff5);};_0x408c['FvkzGv']=_0xe9b957,_0x408c['QZNrct']={},_0x408c['oHFjFV']=!![];}const _0x282038=_0x3a3e42[0x0];_0x408c['wmzEpQ']!==_0x282038&&(_0x408c['QZNrct']={},_0x408c['wmzEpQ']=_0x282038);const _0xad3699=_0x408c['QZNrct'][_0x119597];return _0xad3699===undefined?(_0x408c23=_0x408c['FvkzGv'](_0x408c23),_0x408c['QZNrct'][_0x119597]=_0x408c23):_0x408c23=_0xad3699,_0x408c23;}function rt(_0x47f966){const _0x37125a=_0x3b4baf;return Number['isNaN'](_0x47f966)?_0x37125a(0x14b):_0x47f966===0x1/0x0?_0x37125a(0x196):_0x47f966===-0x1/0x0?'-Infinity':JSON[_0x37125a(0x1e2)](_0x47f966);}function q(_0x46144a,{indent:_0x10b289=null,separators:_0xd3432c=null,sortKeys:_0x26ce6c=!0x1,ensureAscii:_0x837404=!0x0}={}){const _0x6c07dc=_0x3b4baf;let [_0x489b99,_0x52d2ce]=_0xd3432c??(_0x10b289===null?[',\x20',':\x20']:[',',':\x20']),_0x177310=_0x10b289===null?null:typeof _0x10b289==_0x6c07dc(0x191)?'\x20'[_0x6c07dc(0x18b)](_0x10b289):_0x10b289,_0x22d4d8=(_0x211eef,_0x446e33)=>{const _0x2bf42c=_0x6c07dc;if(_0x211eef==null)return _0x2bf42c(0x151);if(_0x211eef===!0x0)return _0x2bf42c(0x17c);if(_0x211eef===!0x1)return _0x2bf42c(0x15e);if(typeof _0x211eef==_0x2bf42c(0x191))return rt(_0x211eef);if(typeof _0x211eef==_0x2bf42c(0x18f))return z(_0x211eef,_0x837404);if(Buffer[_0x2bf42c(0x1cf)](_0x211eef))throw new TypeError(_0x2bf42c(0x1a3));let _0xc43a1=_0x177310===null?'':'\x0a'+_0x177310[_0x2bf42c(0x18b)](_0x446e33+0x1),_0x5f1a07=_0x177310===null?'':'\x0a'+_0x177310['repeat'](_0x446e33);if(Array[_0x2bf42c(0x169)](_0x211eef)||_0x211eef instanceof Set){let _0x3d1916=[..._0x211eef];return _0x3d1916[_0x2bf42c(0x18d)]?'['+_0xc43a1+_0x3d1916[_0x2bf42c(0x1c1)](_0x576bec=>_0x22d4d8(_0x576bec,_0x446e33+0x1))[_0x2bf42c(0x1c7)](_0x489b99+_0xc43a1)+_0x5f1a07+']':'[]';}let _0x23b6ed=Object['keys'](_0x211eef)[_0x2bf42c(0x1c8)](_0x1b3f1a=>_0x211eef[_0x1b3f1a]!==void 0x0);return _0x26ce6c&&(_0x23b6ed=nt(_0x23b6ed)),_0x23b6ed[_0x2bf42c(0x18d)]?'{'+_0xc43a1+_0x23b6ed[_0x2bf42c(0x1c1)](_0x205477=>z(_0x205477,_0x837404)+_0x52d2ce+_0x22d4d8(_0x211eef[_0x205477],_0x446e33+0x1))['join'](_0x489b99+_0xc43a1)+_0x5f1a07+'}':'{}';};return _0x22d4d8(_0x46144a,0x0);}var I=require(_0x3b4baf(0x1b6)),C=require(_0x3b4baf(0x188)),N=class extends Error{};function O(_0x57b32e,_0x4b2714,_0x5e1e50){const _0x2fdf15=_0x3b4baf;let _0x45ea86=Buffer['alloc'](_0x5e1e50),_0x513bd6=0x0;for(;_0x513bd6<_0x5e1e50;){let _0x400eb7=(0x0,I['readSync'])(_0x57b32e,_0x45ea86,_0x513bd6,_0x5e1e50-_0x513bd6,_0x4b2714+_0x513bd6);if(!_0x400eb7)break;_0x513bd6+=_0x400eb7;}return _0x513bd6===_0x5e1e50?_0x45ea86:_0x45ea86[_0x2fdf15(0x199)](0x0,_0x513bd6);}var k=class{constructor(_0x10c35a){const _0x228155=_0x3b4baf;this['fd']=(0x0,I['openSync'])(_0x10c35a,'r');try{this[_0x228155(0x16f)]=(0x0,I[_0x228155(0x1b4)])(this['fd'])['size'],this[_0x228155(0x1ce)]=this.#t();}catch(_0x2a2266){throw(0x0,I['closeSync'])(this['fd']),_0x2a2266;}}#t(){const _0x5cc6c4=_0x3b4baf;let _0x4d650f=Math[_0x5cc6c4(0x181)](this[_0x5cc6c4(0x16f)],0x10015),_0x240beb=O(this['fd'],this[_0x5cc6c4(0x16f)]-_0x4d650f,_0x4d650f),_0x123cf8=-0x1;for(let _0xc61cfc=_0x240beb[_0x5cc6c4(0x18d)]-0x16;_0xc61cfc>=0x0;_0xc61cfc--)if(_0x240beb[_0x5cc6c4(0x1b3)](_0xc61cfc)===0x6054b50){_0x123cf8=_0xc61cfc;break;}if(_0x123cf8<0x0)throw new N(_0x5cc6c4(0x14d));let _0x3024ff=_0x240beb[_0x5cc6c4(0x1d4)](_0x123cf8+0xa),_0x11062e=_0x240beb[_0x5cc6c4(0x1b3)](_0x123cf8+0xc),_0x14557c=_0x240beb[_0x5cc6c4(0x1b3)](_0x123cf8+0x10),_0x3db83c=this['size']-_0x4d650f+_0x123cf8;if((_0x3024ff===0xffff||_0x14557c===0xffffffff||_0x11062e===0xffffffff)&&_0x3db83c>=0x14){let _0x11f4a0=O(this['fd'],_0x3db83c-0x14,0x14);if(_0x11f4a0[_0x5cc6c4(0x1b3)](0x0)===0x7064b50){let _0x177136=O(this['fd'],Number(_0x11f4a0['readBigUInt64LE'](0x8)),0x38);_0x177136[_0x5cc6c4(0x1b3)](0x0)===0x6064b50&&(_0x3024ff=Number(_0x177136[_0x5cc6c4(0x155)](0x20)),_0x11062e=Number(_0x177136[_0x5cc6c4(0x155)](0x28)),_0x14557c=Number(_0x177136[_0x5cc6c4(0x155)](0x30)));}}let _0x24d432=O(this['fd'],_0x14557c,_0x11062e),_0x2149c5=new Map(),_0x3f25fa=0x0;for(let _0x121e67=0x0;_0x121e67<_0x3024ff&&_0x3f25fa+0x2e<=_0x24d432[_0x5cc6c4(0x18d)];_0x121e67++){if(_0x24d432[_0x5cc6c4(0x1b3)](_0x3f25fa)!==0x2014b50)throw new N(_0x5cc6c4(0x1cc));let _0x58cc9c=_0x24d432['readUInt16LE'](_0x3f25fa+0x8),_0x11fe9e=_0x24d432[_0x5cc6c4(0x1d4)](_0x3f25fa+0xa),_0x5c9d2b=_0x24d432[_0x5cc6c4(0x1b3)](_0x3f25fa+0x14),_0x2e26c7=_0x24d432[_0x5cc6c4(0x1b3)](_0x3f25fa+0x18),_0x29122d=_0x24d432[_0x5cc6c4(0x1d4)](_0x3f25fa+0x1c),_0x4db747=_0x24d432[_0x5cc6c4(0x1d4)](_0x3f25fa+0x1e),_0x4b3d90=_0x24d432['readUInt16LE'](_0x3f25fa+0x20),_0x5a3e5b=_0x24d432[_0x5cc6c4(0x1b3)](_0x3f25fa+0x2a),_0x358687=_0x24d432['subarray'](_0x3f25fa+0x2e,_0x3f25fa+0x2e+_0x29122d)[_0x5cc6c4(0x153)](_0x58cc9c&0x800?_0x5cc6c4(0x1cd):_0x5cc6c4(0x158)),_0x3ce28b=_0x24d432[_0x5cc6c4(0x199)](_0x3f25fa+0x2e+_0x29122d,_0x3f25fa+0x2e+_0x29122d+_0x4db747);for(let _0x128f81=0x0;_0x128f81+0x4<=_0x3ce28b[_0x5cc6c4(0x18d)];){let _0x2056da=_0x3ce28b[_0x5cc6c4(0x1d4)](_0x128f81),_0x3b5556=_0x3ce28b[_0x5cc6c4(0x1d4)](_0x128f81+0x2);if(_0x2056da===0x1){let _0x587dae=_0x128f81+0x4;_0x2e26c7===0xffffffff&&(_0x2e26c7=Number(_0x3ce28b[_0x5cc6c4(0x155)](_0x587dae)),_0x587dae+=0x8),_0x5c9d2b===0xffffffff&&(_0x5c9d2b=Number(_0x3ce28b['readBigUInt64LE'](_0x587dae)),_0x587dae+=0x8),_0x5a3e5b===0xffffffff&&(_0x5a3e5b=Number(_0x3ce28b['readBigUInt64LE'](_0x587dae)),_0x587dae+=0x8);}_0x128f81+=0x4+_0x3b5556;}_0x2149c5[_0x5cc6c4(0x16d)](_0x358687,{'name':_0x358687,'method':_0x11fe9e,'csize':_0x5c9d2b,'usize':_0x2e26c7,'local':_0x5a3e5b}),_0x3f25fa+=0x2e+_0x29122d+_0x4db747+_0x4b3d90;}return _0x2149c5;}[_0x3b4baf(0x162)](){const _0x335e3f=_0x3b4baf;return[...this[_0x335e3f(0x1ce)]['keys']()];}['read'](_0x419438){const _0x2f28a2=_0x3b4baf;let _0x374c8f=this[_0x2f28a2(0x1ce)]['get'](_0x419438);if(!_0x374c8f){let _0x361293=new Error(_0x2f28a2(0x15b)+_0x419438+_0x2f28a2(0x19f));throw _0x361293[_0x2f28a2(0x1d0)]=!0x0,_0x361293;}let _0x387c60=O(this['fd'],_0x374c8f[_0x2f28a2(0x1e0)],0x1e);if(_0x387c60[_0x2f28a2(0x1b3)](0x0)!==0x4034b50)throw new N('Bad\x20magic\x20number\x20for\x20file\x20header');let _0x4fb43b=_0x374c8f[_0x2f28a2(0x1e0)]+0x1e+_0x387c60['readUInt16LE'](0x1a)+_0x387c60[_0x2f28a2(0x1d4)](0x1c),_0x1ea58a=O(this['fd'],_0x4fb43b,_0x374c8f[_0x2f28a2(0x189)]);if(_0x374c8f[_0x2f28a2(0x18e)]===0x0)return _0x1ea58a;if(_0x374c8f[_0x2f28a2(0x18e)]===0x8)return(0x0,C[_0x2f28a2(0x1ae)])(_0x1ea58a);throw new N('compression\x20type\x20'+_0x374c8f[_0x2f28a2(0x18e)]);}['close'](){const _0x404462=_0x3b4baf;(0x0,I[_0x404462(0x186)])(this['fd']);}},T=_0x3b4baf(0x1a2),S={'nav':['Lcom/invarn/agent/NavHooks;',[_0x3b4baf(0x177)]],'setContent':[_0x3b4baf(0x1b2),[_0x3b4baf(0x1a6),'setContentDefault']],'okhttp':[_0x3b4baf(0x168),[_0x3b4baf(0x17e)]],'sourceInfo':[_0x3b4baf(0x1a1),['sourceInformation','sourceInformationMarkerStart',_0x3b4baf(0x171)]]},ot=new Set([0x71,0x77]),J=new Array(0x100)[_0x3b4baf(0x1c2)](0x1);for(let [i,e,t]of[[0x2,0x2,0x2],[0x3,0x3,0x3],[0x5,0x5,0x2],[0x6,0x6,0x3],[0x8,0x8,0x2],[0x9,0x9,0x3],[0x13,0x13,0x2],[0x14,0x14,0x3],[0x15,0x16,0x2],[0x17,0x17,0x3],[0x18,0x18,0x5],[0x19,0x1a,0x2],[0x1b,0x1b,0x3],[0x1c,0x1c,0x2],[0x1f,0x20,0x2],[0x22,0x23,0x2],[0x24,0x26,0x3],[0x29,0x29,0x2],[0x2a,0x2c,0x3],[0x2d,0x3d,0x2],[0x44,0x6d,0x2],[0x6e,0x72,0x3],[0x74,0x78,0x3],[0x90,0xaf,0x2],[0xd0,0xe2,0x2],[0xfa,0xfb,0x4],[0xfc,0xfd,0x3],[0xfe,0xff,0x2]])for(let n=i;n<=e;n++)J[n]=t;function m(_0x11890d,_0x2ef812){let _0x5e54c3=0x0,_0x11796f=0x0;for(;;){let _0x5e7bb0=_0x11890d[_0x2ef812++];if(_0x5e54c3+=(_0x5e7bb0&0x7f)*0x2**_0x11796f,_0x11796f+=0x7,_0x5e7bb0<0x80)return[_0x5e54c3,_0x2ef812];}}function st(_0x4e866a,_0x441b46){let _0x480d56=0x0,_0x31f7b8=0x0;for(;;){let _0x361cac=_0x4e866a[_0x441b46++];if(_0x480d56+=(_0x361cac&0x7f)*0x2**_0x31f7b8,_0x31f7b8+=0x7,_0x361cac<0x80)return[_0x361cac&0x40?_0x480d56-0x2**_0x31f7b8:_0x480d56,_0x441b46];}}var v=_0x1f9b41=>Buffer['from'](_0x1f9b41,'latin1'),j=class{constructor(_0x54ec6c){const _0x5f134d=_0x3b4baf;this['b']=_0x54ec6c;let _0x3f5379=_0x411a01=>_0x54ec6c[_0x5f134d(0x1b3)](0x38+0x4*_0x411a01);[this[_0x5f134d(0x157)],this[_0x5f134d(0x1e4)],this[_0x5f134d(0x163)],this[_0x5f134d(0x14f)]]=[_0x3f5379(0x0),_0x3f5379(0x1),_0x3f5379(0x2),_0x3f5379(0x3)],[this[_0x5f134d(0x1b1)],this[_0x5f134d(0x1e1)],this[_0x5f134d(0x1a5)],this[_0x5f134d(0x150)]]=[_0x3f5379(0x8),_0x3f5379(0x9),_0x3f5379(0xa),_0x3f5379(0xb)];}['string'](_0x1514fb){const _0x111b71=_0x3b4baf;let _0x29dec8=this['b'][_0x111b71(0x1b3)](this[_0x111b71(0x1e4)]+0x4*_0x1514fb);return[,_0x29dec8]=m(this['b'],_0x29dec8),this['b']['subarray'](_0x29dec8,this['b'][_0x111b71(0x16b)](0x0,_0x29dec8));}['_bsearch'](_0x2718d4,_0xcd1d9){let _0x1a5518=0x0,_0x1edfd9=_0x2718d4;for(;_0x1a5518<_0x1edfd9;){let _0x40b673=_0x1a5518+_0x1edfd9>>0x1;_0xcd1d9(_0x40b673)?_0x1a5518=_0x40b673+0x1:_0x1edfd9=_0x40b673;}return _0x1a5518;}['string_idx'](_0x38db4e){const _0x27715e=_0x3b4baf;let _0x488783=v(_0x38db4e),_0x2c4988=this['_bsearch'](this[_0x27715e(0x157)],_0x5b6853=>Buffer['compare'](this[_0x27715e(0x18f)](_0x5b6853),_0x488783)<0x0);return _0x2c4988<this[_0x27715e(0x157)]&&this[_0x27715e(0x18f)](_0x2c4988)['equals'](_0x488783)?_0x2c4988:null;}[_0x3b4baf(0x152)](_0x227d9d){const _0x3a661b=_0x3b4baf;return this['b'][_0x3a661b(0x1b3)](this[_0x3a661b(0x14f)]+0x4*_0x227d9d);}[_0x3b4baf(0x19e)](_0x415e8c){const _0x13d21b=_0x3b4baf;let _0x1ac526=this['string_idx'](_0x415e8c);if(_0x1ac526===null)return null;let _0x117a33=this[_0x13d21b(0x179)](this[_0x13d21b(0x163)],_0x26f697=>this[_0x13d21b(0x152)](_0x26f697)<_0x1ac526);return _0x117a33<this[_0x13d21b(0x163)]&&this['type_desc_idx'](_0x117a33)===_0x1ac526?_0x117a33:null;}[_0x3b4baf(0x174)](_0x3e51a7){const _0x4c9332=_0x3b4baf;let _0x57cc87=v(_0x3e51a7),_0x475af6=Buffer[_0x4c9332(0x1c4)]([_0x57cc87,Buffer[_0x4c9332(0x1db)]([0xff])]),_0x318d60=_0x1af802=>this['string'](this[_0x4c9332(0x152)](_0x1af802));return[this[_0x4c9332(0x179)](this['type_n'],_0x781fbf=>Buffer[_0x4c9332(0x1b0)](_0x318d60(_0x781fbf),_0x57cc87)<0x0),this[_0x4c9332(0x179)](this['type_n'],_0x38e2ff=>Buffer[_0x4c9332(0x1b0)](_0x318d60(_0x38e2ff),_0x475af6)<0x0)];}[_0x3b4baf(0x18e)](_0x3d23d0){const _0x1c5b7f=_0x3b4baf;let _0x257d81=this[_0x1c5b7f(0x1e1)]+0x8*_0x3d23d0;return[this['b'][_0x1c5b7f(0x1d4)](_0x257d81),this['b']['readUInt16LE'](_0x257d81+0x2),this['b']['readUInt32LE'](_0x257d81+0x4)];}[_0x3b4baf(0x1bd)](_0x75954,_0x4db279){const _0x3c7e9f=_0x3b4baf;let _0x2733b0=this[_0x3c7e9f(0x179)](this[_0x3c7e9f(0x1b1)],_0x43bd1f=>this['method'](_0x43bd1f)[0x0]<_0x75954),_0x62ab64=new Set(_0x4db279[_0x3c7e9f(0x1c1)](_0x32b6fb=>this[_0x3c7e9f(0x156)](_0x32b6fb))[_0x3c7e9f(0x1c8)](_0x4f362a=>_0x4f362a!==null)),_0x3145d7=[];for(;_0x2733b0<this[_0x3c7e9f(0x1b1)]&&this['method'](_0x2733b0)[0x0]===_0x75954;)_0x62ab64['has'](this['method'](_0x2733b0)[0x2])&&_0x3145d7[_0x3c7e9f(0x172)](_0x2733b0),_0x2733b0++;return _0x3145d7;}#t(_0x536784){const _0x1ea8d2=_0x3b4baf;let _0x5679d5=this['cls_off']+0x20*_0x536784;return[this['b'][_0x1ea8d2(0x1b3)](_0x5679d5),this['b'][_0x1ea8d2(0x1b3)](_0x5679d5+0x18)];}*['classes'](_0x1557f=null){let _0x565ac1=this['b'];for(let _0x20e3c6=0x0;_0x20e3c6<this['cls_n'];_0x20e3c6++){let [_0x27a551,_0x3a3e40]=this.#t(_0x20e3c6);if(!_0x3a3e40||_0x1557f&&!_0x1557f(_0x27a551))continue;let _0x5f4784=_0x3a3e40,_0x4288c5,_0x57dce7,_0x32389d,_0x511747;[_0x4288c5,_0x5f4784]=m(_0x565ac1,_0x5f4784),[_0x57dce7,_0x5f4784]=m(_0x565ac1,_0x5f4784),[_0x32389d,_0x5f4784]=m(_0x565ac1,_0x5f4784),[_0x511747,_0x5f4784]=m(_0x565ac1,_0x5f4784);for(let _0x230cfb=0x0;_0x230cfb<_0x4288c5+_0x57dce7;_0x230cfb++)[,_0x5f4784]=m(_0x565ac1,_0x5f4784),[,_0x5f4784]=m(_0x565ac1,_0x5f4784);let _0x51e7a5=[];for(let _0x53e42a of[_0x32389d,_0x511747]){let _0x345f21=0x0;for(let _0x4f5850=0x0;_0x4f5850<_0x53e42a;_0x4f5850++){let _0x7440c7,_0x482dec;[_0x7440c7,_0x5f4784]=m(_0x565ac1,_0x5f4784),[,_0x5f4784]=m(_0x565ac1,_0x5f4784),[_0x482dec,_0x5f4784]=m(_0x565ac1,_0x5f4784),_0x345f21+=_0x7440c7,_0x482dec&&_0x51e7a5['push']([_0x345f21,_0x482dec]);}}yield[_0x27a551,_0x51e7a5];}}[_0x3b4baf(0x1c6)](_0x22ba3d){const _0x231261=_0x3b4baf;let _0x316589=this['b'];for(let _0x439426=0x0;_0x439426<this[_0x231261(0x1a5)];_0x439426++){let [_0x116f56,_0xf020f]=this.#t(_0x439426);if(_0x116f56!==_0x22ba3d)continue;if(!_0xf020f)return[];let _0x5a508f=_0xf020f,_0x3eb4fb,_0x59f5a4,_0x4a7fdb,_0x3e8236;[_0x3eb4fb,_0x5a508f]=m(_0x316589,_0x5a508f),[_0x59f5a4,_0x5a508f]=m(_0x316589,_0x5a508f),[_0x4a7fdb,_0x5a508f]=m(_0x316589,_0x5a508f),[_0x3e8236,_0x5a508f]=m(_0x316589,_0x5a508f);for(let _0xe29edf=0x0;_0xe29edf<_0x3eb4fb+_0x59f5a4;_0xe29edf++)[,_0x5a508f]=m(_0x316589,_0x5a508f),[,_0x5a508f]=m(_0x316589,_0x5a508f);let _0x355d0a=[];for(let _0x14a3cb of[_0x4a7fdb,_0x3e8236]){let _0x439bf4=0x0;for(let _0x52e51a=0x0;_0x52e51a<_0x14a3cb;_0x52e51a++){let _0x5242a0;[_0x5242a0,_0x5a508f]=m(_0x316589,_0x5a508f),[,_0x5a508f]=m(_0x316589,_0x5a508f),[,_0x5a508f]=m(_0x316589,_0x5a508f),_0x439bf4+=_0x5242a0,_0x355d0a['push'](_0x439bf4);}}return _0x355d0a;}return null;}['lands_on'](_0x1935ec,_0x3d15e5){const _0x14affc=_0x3b4baf;let _0x4fd77a=this['b'],_0x13da54=_0x4fd77a['readUInt32LE'](_0x1935ec+0xc),_0x10a860=_0x1935ec+0x10,_0x403b02=_0x10a860+0x2*_0x13da54;if(!(_0x10a860<=_0x3d15e5&&_0x3d15e5<_0x403b02))return null;let _0x156f15=_0x10a860;for(;_0x156f15<_0x3d15e5;){let _0x5a50db=_0x4fd77a[_0x156f15];if(_0x5a50db===0x0&&[0x1,0x2,0x3][_0x14affc(0x1a9)](_0x4fd77a[_0x156f15+0x1])){let _0x257b41=_0x4fd77a[_0x156f15+0x1],_0x46ecef=_0x4fd77a[_0x14affc(0x1d4)](_0x156f15+0x2);if(_0x257b41===0x1)_0x156f15+=0x2*(0x4+_0x46ecef*0x2);else{if(_0x257b41===0x2)_0x156f15+=0x2*(0x2+_0x46ecef*0x4);else{let _0x506612=_0x46ecef,_0x25c93c=_0x4fd77a[_0x14affc(0x1b3)](_0x156f15+0x4);_0x156f15+=0x2*(0x4+Math[_0x14affc(0x159)]((_0x25c93c*_0x506612+0x1)/0x2));}}}else _0x156f15+=0x2*J[_0x5a50db];}return _0x156f15===_0x3d15e5;}};function*it(_0x3792d4){const _0x173aa1=_0x3b4baf;let _0x460d1b=_0x3792d4['b'],_0x148cb5=_0x460d1b[_0x173aa1(0x1b3)](0x34),_0x4d5ba2=_0x460d1b[_0x173aa1(0x1b3)](_0x148cb5);for(let _0x248c92=0x0;_0x248c92<_0x4d5ba2;_0x248c92++){let _0x1e99cf=_0x148cb5+0x4+0xc*_0x248c92,_0x9ff7e3=_0x460d1b[_0x173aa1(0x1d4)](_0x1e99cf),_0x2a2923=_0x460d1b[_0x173aa1(0x1b3)](_0x1e99cf+0x4),_0x8f7e1=_0x460d1b[_0x173aa1(0x1b3)](_0x1e99cf+0x8);if(_0x9ff7e3!==0x2001)continue;let _0x3b70f7=_0x8f7e1;for(let _0x1d7c57=0x0;_0x1d7c57<_0x2a2923;_0x1d7c57++){_0x3b70f7=_0x3b70f7+0x3&-0x4;let _0x3864ac=_0x460d1b[_0x173aa1(0x1d4)](_0x3b70f7+0x6),_0x322698=_0x460d1b[_0x173aa1(0x1b3)](_0x3b70f7+0xc),_0x145519=_0x3b70f7+0x10+0x2*_0x322698;if(_0x3864ac){_0x322698&0x1&&(_0x145519+=0x2),_0x145519+=0x8*_0x3864ac;let _0x2bd299;[_0x2bd299,_0x145519]=m(_0x460d1b,_0x145519);for(let _0x25f2a8=0x0;_0x25f2a8<_0x2bd299;_0x25f2a8++){let _0x4a1bbe;[_0x4a1bbe,_0x145519]=st(_0x460d1b,_0x145519);for(let _0x1ad54b=0x0;_0x1ad54b<Math[_0x173aa1(0x1c3)](_0x4a1bbe);_0x1ad54b++)[,_0x145519]=m(_0x460d1b,_0x145519),[,_0x145519]=m(_0x460d1b,_0x145519);_0x4a1bbe<=0x0&&([,_0x145519]=m(_0x460d1b,_0x145519));}}yield[_0x3b70f7,_0x145519],_0x3b70f7=_0x145519;}return;}}var H=_0x5e5926=>_0x5e5926['namelist']()[_0x3b4baf(0x1c8)](_0xa0923=>/^classes\d*\.dex$/[_0x3b4baf(0x18c)](_0xa0923))[_0x3b4baf(0x1a4)]();function K(_0x20ad44,_0x23203e=!0x1){const _0x3ce18f=_0x3b4baf;let _0x4efaa4=Object[_0x3ce18f(0x167)](Object['keys'](S)[_0x3ce18f(0x1c1)](_0x527031=>[_0x527031,0x0])),_0x5db786=Object['fromEntries'](Object[_0x3ce18f(0x1b7)](S)[_0x3ce18f(0x1c1)](_0x5d6006=>[_0x5d6006,[]])),_0x5d9e0b=!0x1,_0x29504c=new k(_0x20ad44);try{for(let _0x431b38 of H(_0x29504c)){let _0x11a50e=_0x29504c[_0x3ce18f(0x176)](_0x431b38);if(!Object[_0x3ce18f(0x1c5)](S)[_0x3ce18f(0x193)](([_0x1ac3f2])=>_0x11a50e[_0x3ce18f(0x1a9)](v(_0x1ac3f2)))&&!_0x11a50e['includes'](v(T+_0x3ce18f(0x15f))))continue;let _0x1798c2=new j(_0x11a50e),[_0x2565a4,_0x4fbd03]=_0x1798c2[_0x3ce18f(0x174)](T),_0x3b65bd=_0x1798c2[_0x3ce18f(0x19e)]('Lcom/invarn/agent/Agent;'),_0x2aced1=new Map();for(let [_0x4b69aa,[_0xd32470,_0x6a62f3]]of Object['entries'](S)){let _0x4c5fdf=_0x1798c2[_0x3ce18f(0x19e)](_0xd32470);if(_0x4c5fdf!==null){for(let _0x58f451 of _0x1798c2[_0x3ce18f(0x1bd)](_0x4c5fdf,_0x6a62f3))_0x2aced1[_0x3ce18f(0x16d)](_0x58f451,_0x4b69aa);}}let _0x1e6f32=new Set(),_0x4207ed=new Map();if(_0x23203e||_0x2565a4<_0x4fbd03)for(let [_0x536508,_0x394365]of _0x1798c2[_0x3ce18f(0x17b)](_0x23203e?null:_0x4eccc7=>_0x2565a4<=_0x4eccc7&&_0x4eccc7<_0x4fbd03)){if(_0x2565a4<=_0x536508&&_0x536508<_0x4fbd03){for(let [,_0x1ffd7f]of _0x394365)_0x1e6f32['add'](_0x1ffd7f);_0x536508===_0x3b65bd&&(_0x5d9e0b=!0x0);}if(_0x23203e){for(let [_0x5502d4,_0x20777b]of _0x394365)_0x4207ed['set'](_0x20777b,[_0x536508,_0x5502d4]);}}if(!_0x2aced1[_0x3ce18f(0x16f)])continue;let _0x225d47=[];for(let [_0x687aa6,_0x524ed1]of _0x2aced1){let _0x25caed=Buffer[_0x3ce18f(0x1bb)](0x2);_0x25caed[_0x3ce18f(0x1b9)](_0x687aa6);let _0x4e1af7=_0x11a50e[_0x3ce18f(0x16b)](_0x25caed,0x2);for(;_0x4e1af7!==-0x1;)!(_0x4e1af7&0x1)&&ot[_0x3ce18f(0x161)](_0x11a50e[_0x4e1af7-0x2])&&_0x225d47['push']([_0x4e1af7-0x2,_0x524ed1]),_0x4e1af7=_0x11a50e[_0x3ce18f(0x16b)](_0x25caed,_0x4e1af7+0x1);}if(!_0x225d47[_0x3ce18f(0x18d)])continue;_0x225d47[_0x3ce18f(0x1a4)]((_0x3d3116,_0x2fe816)=>_0x3d3116[0x0]-_0x2fe816[0x0]||(_0x3d3116[0x1]<_0x2fe816[0x1]?-0x1:_0x3d3116[0x1]>_0x2fe816[0x1]?0x1:0x0));let _0x2e98da=it(_0x1798c2),_0x31ed57=_0x2e98da[_0x3ce18f(0x184)]()[_0x3ce18f(0x1cb)]??null;for(let [_0x59c2fe,_0x3b1719]of _0x225d47){for(;_0x31ed57&&_0x31ed57[0x1]<=_0x59c2fe;)_0x31ed57=_0x2e98da[_0x3ce18f(0x184)]()[_0x3ce18f(0x1cb)]??null;if(!(!_0x31ed57||_0x31ed57[0x0]>_0x59c2fe||_0x1e6f32[_0x3ce18f(0x161)](_0x31ed57[0x0])||!_0x1798c2[_0x3ce18f(0x154)](_0x31ed57[0x0],_0x59c2fe))&&(_0x4efaa4[_0x3b1719]+=0x1,_0x23203e)){let [_0x59998e,_0x476e70]=_0x4207ed['get'](_0x31ed57[0x0])??[null,null];_0x5db786[_0x3b1719]['push'](_0x59998e!==null?_0x1798c2[_0x3ce18f(0x18f)](_0x1798c2[_0x3ce18f(0x152)](_0x59998e))[_0x3ce18f(0x153)](_0x3ce18f(0x1cd))+'->'+_0x1798c2['string'](_0x1798c2[_0x3ce18f(0x18e)](_0x476e70)[0x2])[_0x3ce18f(0x153)](_0x3ce18f(0x1cd)):_0x431b38+_0x3ce18f(0x1d3)+_0x31ed57[0x0][_0x3ce18f(0x153)](0x10));}}}}finally{_0x29504c[_0x3ce18f(0x195)]();}return[_0x4efaa4,_0x5d9e0b,_0x5db786];}var M=[0x1,0x5,0x0],ft=(_0x522765,_0x4ae24a)=>{for(let _0x4be39a=0x0;_0x4be39a<0x3;_0x4be39a++)if(_0x522765[_0x4be39a]!==_0x4ae24a[_0x4be39a])return _0x522765[_0x4be39a]>_0x4ae24a[_0x4be39a];return!0x1;},ct=(_0x6f1617,_0xafc898)=>_0x6f1617[_0x3b4baf(0x1d5)]((_0x5e7583,_0x43ae4e)=>_0x5e7583===_0xafc898[_0x43ae4e]);function D(_0x348049){const _0x1cf366=_0x3b4baf;let _0x127d4c=new k(_0x348049);try{try{let _0x16d1fc=_0x127d4c['read'](_0x1cf366(0x183))[_0x1cf366(0x153)](_0x1cf366(0x1cd))['trim'](),_0x2f0d2f=/^(\d+)\.(\d+)\.(\d+)(.*)/[_0x1cf366(0x17f)](_0x16d1fc);if(_0x2f0d2f){let _0x3bb520=[+_0x2f0d2f[0x1],+_0x2f0d2f[0x2],+_0x2f0d2f[0x3]],_0x8caba9=ft(_0x3bb520,M)||ct(_0x3bb520,M)&&!_0x2f0d2f[0x4];return{'runtime':_0x16d1fc,'source':_0x1cf366(0x1b5),'supported':_0x8caba9};}}catch(_0x4af2e5){if(!_0x4af2e5['missing'])throw _0x4af2e5;}for(let _0x4a440e of H(_0x127d4c)){let _0x55871e=_0x127d4c[_0x1cf366(0x176)](_0x4a440e);if(!_0x55871e['includes'](v(_0x1cf366(0x17a))))continue;let _0x2d7965=new j(_0x55871e),_0x48ce2b=_0x2d7965[_0x1cf366(0x19e)](_0x1cf366(0x17a)),_0x1544c9=_0x48ce2b!==null?_0x2d7965[_0x1cf366(0x1c6)](_0x48ce2b):null;if(_0x1544c9===null)continue;let _0x4e3b13=_0x1544c9[_0x1cf366(0x193)](_0x9e77de=>_0x2d7965['string'](_0x2d7965[_0x1cf366(0x18e)](_0x9e77de)[0x2])[_0x1cf366(0x14c)](v(_0x1cf366(0x1da))));return{'runtime':_0x4e3b13?_0x1cf366(0x166):_0x1cf366(0x15a),'source':_0x1cf366(0x180),'supported':_0x4e3b13};}return{'runtime':null,'source':null,'supported':null};}finally{_0x127d4c[_0x1cf366(0x195)]();}}function R(_0x1987c4){const _0x2c74eb=_0x3b4baf;let _0x2a9078=new k(_0x1987c4),_0x886baa;try{_0x886baa=new TextDecoder(_0x2c74eb(0x1e3),{'fatal':!0x0})[_0x2c74eb(0x19d)](_0x2a9078[_0x2c74eb(0x176)](_0x2c74eb(0x1af)));}catch(_0x5a2fcd){if(_0x5a2fcd[_0x2c74eb(0x1d0)])return{'present':!0x1};throw _0x5a2fcd;}finally{_0x2a9078[_0x2c74eb(0x195)]();}let _0x11b38f={};for(let _0x22afb6 of $(_0x886baa[_0x2c74eb(0x1de)](_0x2c74eb(0x1ba))[0x0])){let _0x16152b=_0x22afb6[_0x2c74eb(0x16b)]('\x20');_0x16152b>=0x0?_0x11b38f[_0x22afb6['slice'](0x0,_0x16152b)]=_0x22afb6['slice'](_0x16152b+0x1):_0x11b38f[_0x22afb6]='';}let _0x2cc32e=_0x2adcc2=>{const _0x1720cf=_0x2c74eb;if(!/^\s*[+-]?\d+\s*$/['test'](_0x2adcc2))throw new Error(_0x1720cf(0x1d1)+_0x2adcc2+'\x27');return parseInt(_0x2adcc2,0xa);},_0x4c1bff=_0x886baa[_0x2c74eb(0x16b)](_0x2c74eb(0x1ba)),_0x5b3caa=_0x11b38f[_0x2c74eb(0x16a)]??'0',_0x41f881={'present':!0x0,'format':_0x5b3caa?_0x2cc32e(_0x5b3caa):0x0,'complete':_0x11b38f['complete']===_0x2c74eb(0x17c),'unseen':_0x11b38f['unseen']??'','sites':_0x4c1bff>=0x0?_0x2cc32e(_0x886baa[_0x2c74eb(0x1c0)](_0x4c1bff+0x7)[_0x2c74eb(0x1de)]('\x0a')[0x0]):0x0};return _0x2c74eb(0x1ab)in _0x11b38f&&(_0x41f881[_0x2c74eb(0x1ab)]=_0x11b38f[_0x2c74eb(0x1ab)]?_0x2cc32e(_0x11b38f[_0x2c74eb(0x1ab)]):0x0),_0x41f881;}function _0x3a3e(){const _0x4d2e9f=['nKHuANn6Eq','CMvHza','BMf2q29UDhjVBgXLCKnYzwf0zwq','BM9KztPWyxrO','x2jZzwfYy2G','tgfUzhjVAwr4l2nVBxbVC2uVCNvUDgLTzs9dB21WB3nLCJS','y2XHC3nLCW','Dhj1zq','D3jPDgu','yNvPBgrLCKnYzwf0zwq','zxHLyW','zgv4','BwLU','BM9KztP1CMW','tuvuqs1jtKyVyw5KCM9PzhGUy29TCg9Zzs5YDw50Aw1Lx3j1BNrPBwuUDMvYC2LVBG','BMv4Da','DxnHz2u6ihzLCMLMEs1HCgSGpgfWAZ4GwY0TCMvXDwLYzsbUyxySC2v0q29UDgvUDcXVA2H0DhbDifSTlxDOzxjLxqO','y2XVC2vtEw5J','C3rKzxjY','BM9KztP6BgLI','y3nPEMu','AhjLzG','CMvWzwf0','DgvZDa','BgvUz3rO','Bwv0Ag9K','C3rYAw5N','z2v0t3DUuhjVCgvYDhLezxnJCMLWDg9Y','BNvTyMvY','ls1Yzxf1AxjL','C29Tzq','C3rKB3v0','y2XVC2u','sw5MAw5PDhK','y29TCg9Zzq','mtqXnZeZmhfYDLbrrW','C3vIyxjYyxK','mtm5mJG5n1n5Cg1Iuq','AgfZt3DUuhjVCgvYDhK','D2HLCMu','zgvJB2rL','DhLWzv9PzhG','jYbPBIb0AguGyxjJAgL2zq','ls1Yzxf1AxjLpq','tgnVBs9PBNzHCM4VywDLBNqVu291CMnLsw5MBZS','tgnVBs9PBNzHCM4VywDLBNqV','t2jQzwn0ig9Mihr5CguGyNL0zxmGAxmGBM90iePtt04GC2vYAwfSAxPHyMXL','C29YDa','y2XZx24','C2v0q29UDgvUDa','Cg9W','zNvUy3rPB24','Aw5JBhvKzxm','y2fSBa','Ag9Tzxm','mJqYmZy4ofrdqvHjzW','zgvMAw5LuhjVCgvYDhK','Aw5MBgf0zvjHD1n5BMm','yxnZzxrZl2LUDMfYBI9VD25LCNnOAxaUDhH0','y29TCgfYzq','Bwv0Af9U','tgnVBs9PBNzHCM4VywDLBNqVq29TCg9ZzuHVB2TZoW','CMvHzfvjBNqZmKXf','zNn0yxrtEw5J','DMvYC2LVBI1MAwXL','BM9KztPMCW','A2v5CW','ChjVDg90ExbL','D3jPDgvvsw50mtzmrq','cNnPDgvZia','ywXSB2m','mJC3nJq2mgH0swTcBW','Bwv0Ag9KC19VzG','zMLSzvvstfrVugf0Aa','zxHPDa','C2XPy2u','BwfW','zMLSBa','ywjZ','y29Uy2f0','DMfSDwvZ','zgvJBgfYzwrFBwv0Ag9KCW','AM9PBG','zMLSDgvY','BwfPBG','oYbRBM93BJOG','DMfSDwu','qMfKig1Hz2LJig51BwjLCIbMB3iGy2vUDhjHBcbKAxjLy3rVCNK','DxrMoa','zw50CMLLCW','AxncDwzMzxi','BwLZC2LUzW','Aw52ywXPzcbSAxrLCMfSigzVCIbPBNqOktOGjW','CgfKu3rHCNq','qdb4','CMvHzfvjBNqXnKXf','zxzLCNK','B2jQzwn0','owDUuvrQwG','C3vWCg9YDgvK','CNvUDgLTzq','z2v0q3vYCMvUDenVBxbVC2L0Aw9Utg9JywXnyxa','zNjVBq','mti1nti2mxnkDhjQuG','ls13AgvYzq','C3bSAxq','yMfZzw5HBwu','Bg9JywW','Bwv0Af9VzMy','C3rYAw5NAwz5','DxrMltG','C3rYx29MzG','tMfo','zxf1ywXZ','rMLSzsbPCYbUB3qGysb6AxaGzMLSzq','BM93','DhLWzv9VzMy','y2XZx29MzG','BNvSBa','DhLWzv9KzxnJx2LKEa','Dg9tDhjPBMC','BgfUzhnFB24','CMvHzejPz1vjBNq2neXf','C3rYAw5Nx2LKEa','C3rYx24','Bgf0Aw4X','zMXVB3i','pcaXlJu','vgHLCMuGAxmGBM8GAxrLBsbUyw1LzcaN','Cgf0AfrVrMLSzvvsta','ywDLBNq','zMfSC2u','qwDLBNq7','CMvMDxnLza','AgfZ','BMfTzwXPC3q','DhLWzv9U','ntyYmtiZnwvqDeLNua','yxjNDG','pJ0Gms41','zNjVBuvUDhjPzxm','tgnVBs9PBNzHCM4VywDLBNqVshr0CeHVB2TZoW','AxnbCNjHEq','Aw52yxjUlw93BMvYC2HPCa','Aw5KzxHpzG','nMHLuffkDW','C2v0','y29KzvbVAw50qxq','C2L6zq','zxHWB3j0CW','C291CMnLsw5MB3jTyxrPB25nyxjRzxjfBMq','ChvZAa','nJeZmJy0ohf0suz0tq','DhLWzv9WCMvMAxHFCMfUz2u'];_0x3a3e=function(){return _0x4d2e9f;};return _0x3a3e();}function G(_0x8ba9ef,_0x2cd133=[],_0xcdefc7=!0x1){const _0x4bc00c=_0x3b4baf;let _0x3c65af=performance[_0x4bc00c(0x14e)](),[_0x55a104,_0x316b85,_0x4b184f]=K(_0x8ba9ef,_0xcdefc7),_0x3f1b75=[..._0x2cd133[_0x4bc00c(0x1c8)](_0x479ae0=>!_0x55a104[_0x479ae0]),..._0x316b85?[]:[_0x4bc00c(0x15d)]],_0x559940=D(_0x8ba9ef),_0x475f53=_0x559940[_0x4bc00c(0x1d8)]===!0x1?{'reason':_0x4bc00c(0x197),'app':_0x559940[_0x4bc00c(0x1d9)],'agent':M[_0x4bc00c(0x1c7)]('.')}:null,_0x4b1ec0={'apk':_0x8ba9ef,'agent':_0x316b85,'hooks':_0x55a104,'ownership':R(_0x8ba9ef),'compose':_0x559940,'required':_0x2cd133,'missing':_0x3f1b75,'ok':!_0x3f1b75[_0x4bc00c(0x18d)]&&!_0x475f53,'ms':Math['round'](performance['now']()-_0x3c65af)};return _0x475f53&&(_0x4b1ec0[_0x4bc00c(0x160)]=_0x475f53),_0xcdefc7&&(_0x4b1ec0[_0x4bc00c(0x19c)]=_0x4b184f),_0x4b1ec0;}function lt(_0x52c2fd){const _0x38918e=_0x3b4baf;let _0x56f482=[],_0x5d7de4='',_0x22005a=!0x1;for(let _0x7e68df=0x0;_0x7e68df<_0x52c2fd['length'];_0x7e68df++)_0x52c2fd[_0x7e68df]===_0x38918e(0x192)?_0x5d7de4=_0x52c2fd[++_0x7e68df]??'':_0x52c2fd[_0x7e68df]['startsWith'](_0x38918e(0x1a0))?_0x5d7de4=_0x52c2fd[_0x7e68df][_0x38918e(0x1c0)](0xa):_0x52c2fd[_0x7e68df]===_0x38918e(0x1dd)?_0x22005a=!0x0:_0x56f482[_0x38918e(0x172)](_0x52c2fd[_0x7e68df]);_0x56f482['length']!==0x1&&(process[_0x38918e(0x187)][_0x38918e(0x17d)](_0x38918e(0x185)),process[_0x38918e(0x1bf)](0x2));let _0xc3a65e=_0x5d7de4[_0x38918e(0x1de)](',')[_0x38918e(0x1c8)](_0x27d2d1=>_0x27d2d1),_0x6ce1ec=_0xc3a65e[_0x38918e(0x1c8)](_0x4abd5d=>!(_0x4abd5d in S));_0x6ce1ec[_0x38918e(0x18d)]&&(process[_0x38918e(0x187)][_0x38918e(0x17d)]('verify-apk:\x20unknown\x20hook\x20'+JSON[_0x38918e(0x1e2)](_0x6ce1ec)+_0x38918e(0x1ca)+JSON['stringify'](Object[_0x38918e(0x1b7)](S))+'\x0a'),process[_0x38918e(0x1bf)](0x1));let _0x5e8324=G(_0x56f482[0x0],_0xc3a65e,_0x22005a);process[_0x38918e(0x194)][_0x38918e(0x17d)](q(_0x5e8324,{'ensureAscii':!0x0})+'\x0a'),process[_0x38918e(0x1bf)](_0x5e8324['ok']?0x0:0x1);}var ut=/^verify-apk\.(mjs|cjs)$/['test']((0x0,F[_0x3b4baf(0x1df)])(process[_0x3b4baf(0x165)][0x1]||''))&&(__importMetaUrl?(0x0,P[_0x3b4baf(0x1be)])(__importMetaUrl)===process[_0x3b4baf(0x165)][0x1]:require[_0x3b4baf(0x1c9)]===module);ut&<(process[_0x3b4baf(0x165)][_0x3b4baf(0x1c0)](0x2)),0x0&&(module[_0x3b4baf(0x170)]={'Dex':Dex,'HOOKS':HOOKS,'compose_runtime':compose_runtime,'ownership':ownership,'scan':scan,'verify':verify});
|