devicely 2.0.6 → 2.0.7
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/bin/devicely.js +1 -1
- package/lib/androidDeviceDetection.js +1 -1
- package/lib/appMappings.js +1 -1
- package/lib/deviceDetection.js +1 -1
- package/lib/devices.js +1 -1
- package/lib/doctor.js +1 -1
- package/lib/executor.js +1 -1
- package/lib/frontend/static/js/main.96600727.js +1 -1
- package/lib/logger.js +1 -1
- package/lib/server.js +1 -1
- package/package.json +1 -1
- package/scripts/shell/android_device_control.sh +49 -0
- package/scripts/shell/connect_android_usb_multi_final.sh +49 -0
- package/scripts/shell/connect_android_wireless.sh +49 -0
- package/scripts/shell/connect_android_wireless_multi_final.sh +49 -0
- package/scripts/shell/connect_ios_usb_multi_final.sh +49 -0
- package/scripts/shell/connect_ios_wireless_multi_final.sh +49 -0
- package/scripts/shell/create_production_scripts.sh +49 -0
- package/scripts/shell/install_uiautomator2.sh +49 -0
- package/scripts/shell/ios_device_control.sh +49 -0
- package/scripts/shell/organize_project.sh +49 -0
- package/scripts/shell/pre-publish-check.sh +49 -0
- package/scripts/shell/publish-to-npm.sh +49 -0
- package/scripts/shell/publish.sh +49 -0
- package/scripts/shell/setup.sh +49 -0
- package/scripts/shell/start.sh +49 -0
- package/scripts/shell/sync-to-npm-package-final.sh +49 -0
- package/scripts/shell/sync-to-npm-package.sh +49 -0
- package/scripts/shell/test-local-package.sh +49 -0
- package/scripts/shell/verify-shell-protection.sh +49 -0
- package/scripts/shell/android_device_control +0 -0
- package/scripts/shell/connect_android_usb +0 -0
- package/scripts/shell/connect_android_usb_multi_final +0 -0
- package/scripts/shell/connect_android_wireless +0 -0
- package/scripts/shell/connect_android_wireless_multi_final +0 -0
- package/scripts/shell/connect_ios_usb +0 -0
- package/scripts/shell/connect_ios_usb_multi_final +0 -0
- package/scripts/shell/connect_ios_wireless_multi_final +0 -0
- package/scripts/shell/create_production_scripts +0 -0
- package/scripts/shell/diagnose_wireless_ios +0 -0
- package/scripts/shell/find_element_coordinates +0 -0
- package/scripts/shell/find_wda +0 -0
- package/scripts/shell/install_uiautomator2 +0 -0
- package/scripts/shell/ios_device_control +0 -0
- package/scripts/shell/organize_project +0 -0
- package/scripts/shell/pre-publish-check +0 -0
- package/scripts/shell/publish +0 -0
- package/scripts/shell/publish-to-npm +0 -0
- package/scripts/shell/setup +0 -0
- package/scripts/shell/setup_android +0 -0
- package/scripts/shell/start +0 -0
- package/scripts/shell/sync-to-npm-package-final +0 -0
- package/scripts/shell/test_android_locators +0 -0
- package/scripts/shell/test_connect +0 -0
- package/scripts/shell/test_device_detection +0 -0
- package/scripts/shell/test_fixes +0 -0
- package/scripts/shell/test_getlocators_fix +0 -0
- package/scripts/shell/test_recording_feature +0 -0
- package/scripts/shell/verify-shell-protection +0 -0
- package/scripts/shell/verify_distribution +0 -0
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
#!/bin/bash
|
|
2
|
+
# Protected Shell Script - Devicely
|
|
3
|
+
# This script is encrypted for code protection
|
|
4
|
+
|
|
5
|
+
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
6
|
+
NODE_BIN="node"
|
|
7
|
+
|
|
8
|
+
# Check if node is available
|
|
9
|
+
if ! command -v node &> /dev/null; then
|
|
10
|
+
echo "Error: Node.js is required to run Devicely"
|
|
11
|
+
exit 1
|
|
12
|
+
fi
|
|
13
|
+
|
|
14
|
+
# Decrypt and execute
|
|
15
|
+
$NODE_BIN -e "
|
|
16
|
+
const crypto = require('crypto');
|
|
17
|
+
const pkg = require('$SCRIPT_DIR/../../package.json');
|
|
18
|
+
|
|
19
|
+
function generateKey() {
|
|
20
|
+
return crypto.createHash('sha256').update(pkg.name + pkg.version).digest();
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
function decrypt(iv, content) {
|
|
24
|
+
const key = generateKey();
|
|
25
|
+
const decipher = crypto.createDecipheriv('aes-256-cbc', key, Buffer.from(iv, 'hex'));
|
|
26
|
+
let decrypted = decipher.update(content, 'hex', 'utf8');
|
|
27
|
+
decrypted += decipher.final('utf8');
|
|
28
|
+
return decrypted;
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
const encrypted = {
|
|
32
|
+
iv: '168552039bdcaa7d3ef135cd7f702456',
|
|
33
|
+
content: '0c321e68432cb25a3665fd6344601fe05afcde34e9d113f2b6abe698cecadfc3f9c96cbc90ddea880fb0b58aefbb8014a8fd2da79c3ff9ab57030edb5c3830efcc86dd9aa54eac3b7d56829ff0147fb9d162fe844fdb6de0e08f095886e13b23137532a1d7cd412a11b4cb8a263003b9cc7afb2aec340117cf5221a6293345043550a0ed47d236fa8f611ac4f52dcc4d4ffef474fd640863cdc391ee9477db4341a4ede36b0aba74b6d470dd010b32a8c0a20904b8a5adc3b10f3c484c6ff6e4957cfd432a1453a784cdeb8b52f347bbdce383c242a4ce16091dde8edefe2c6412110a768681566a4041e8494f8156f387cef865feb8182d1d549ba5d6de90e093b0cdbada3f2f2bd0386fcd590dc5f66c2239ddc635f0fe06327a7c1de4f75992a60e6ae7c675951fb51763123f939fb008ee8974523a70f844b052215a1a61b67abcea3bbb0261efa46f0194bcd195f80a58e655aaa2028141d640d7e950341aaab793abf1f3912515ee4de241cfe478e51d2e7cea1db5385063697b4fe380df42668ca49df2232cfdd9830bf97aab71e839538593067ba57efb3c47046bbb38cdeedda85bd434f9cb8f4cb54a500c1b14ad863e0aa5901c84465aa555d2ac360d363ab173ad569e4cb2832cb75144f243d347a94545f4166f80493b5cdd47743baa517242f82ff6c9001b0d61f37b6e2d9f2046259d178c2725ca8871e42ca86395a0af4d9ba2ee7ffd66f0013100837ef267f964bb3d62cb5025093287da2c7de1c524c1e7c1d8341dc9d173ba20879b544f3f31f10994580a872792d74e64636129639375b7cb9852cc5af091220bdbb96d6d6109b5e414f29a7cc44ec4ae4b41d4c9fa258f2fc17b68e31d799a2063891c7142dbc28215d1f587b319f493f66a06db45b9771c3a1cbfefcc2097ba25d402bb63a632366f5c71de530852858af3b3e69f2c708f32d9e4eb7f1dd54725ca31a05315ab13dd8456677552743710ebb8c95a72dca65a961f19c80c1b31a9c2a2af808c57bc71fdfb80f7e702c4e25fa8d92d1465d68f38975a77b2ebe5603c1bb9c5099a48af5749f4e0c834893758180c0aba710416a1cf9f1ca4f90f8cc776d7e1ff2ae376b1cbe88c41bf0dcf84ca08c3ca8f45c8781c2cf9a50dd8bebca3ce2bf10c4547fc4c8f785db7b9e6e69f6ceb3d6034dd235e5e4637c1e5a07f7be7bf919896d93b7db6a78dd05dcdc92a4574a7318d996858c4f1af4461929876930370cbb9b4f4b59b06d77639abc31b8b0bb40e8ee1d0371bc51567e03387809fb15d5d8502b949b0c7e2e4408ba0dc3cc0d12109c02513ec0a83b31e57328b07b39fab5169a9dafc39c5609b43b404640265795828e2d7e8513642c59d216541a6f6063d2289d62c60a5600a8585ece96e129e796858e08c56fbe56d1ae0206fe9b46a41406203f37a19069dd0eb3710475fed16bd724edc249737b3abedbd54cbfc00ff3bfab005517b70a870405c47a3d550d72ccec93a65b111238fd9d76cbd0be84c767aa069562e7d1c2af966ba4eb6eeff8e518bf5496fa9670de79351599732f4739508c08072527ab3351e03c5e872419b7f3992973b752c0f9247d1e2df715f6d5fda261472397029fd04299755a74b69f1323cc1d8cbf0e043adf702bcfa145e2355f07816e59fda0e006aa2d9593b6a1e95d3449e8c85ac92f81bb29d2650b35f8ccc720b6080012c149e74eb994ccb6342d97243c3008cac5046842903c29a3f53340929f277a4d02b00dee5bac81c7f317cd3e6f85a52c810e37f0d6d714260b8d3cf62f04cb2ccb84dad60e0e7f6d21aeb7752b9a98e520f4fa1ac24ebed08641c7f3cfe8c06f293259e1f202c056ef9a560ab5981580b90fc781256f400c5b8803aec278a436ef45d4d28f427a82cb6cd9c86e4624cb3a7f2bf140fe48ac9b5ce7dcf6e35c52eb09ae8798e8d4dd57a56172a7d3d96a144a447130d24441122fe86a0426f55c12f425599321472a106d90bb7b464b2939b7e4cb545b1decb587203e2117126dbc172d1be36706ce6fb884b2eee6bdb7f51fde8f0ee76f594d438b4c8deecd529098c3f4b794d26ba6c9bb14b9555329d3ca7989974c9a824622febbab266d61912582b66a199ace3259bbd588fa344d26bf22dd20acb277186a8bc5d5cbc7d969dee988fed6a971d2a49248a8c29b876e0792493fc58e92a8ebe6a39156d3a62dce69d75ceace69c80cddc5a9203746274ff5ec84ff7ce0d12e2d84c286d868f1442e4a584063cac00acc1f1a7d68663ca77544896c49c91a2bcbc38f394129accf446da9626911b52f76c88f723c2a92f306e14d671ebb2fec791c9e86da87203b44ea014aeabe88f3b5656e099959043caa0e3c09974a143731c2a9e2f00a5413c71c714fae9103a8a9b633fcbae38fcb507c2b3c8472fe9453084cc0f64d75412399596f72a29c522a65f8cf289a4354b7f48440a4b476e434b808de6f7b9c27218983209bcbe48a3f41bcc95c640b19d71cb8c99d90bed26601e91a14dd8396e9c363817469b579d2830cb1028e96d5bae2b66b232917899ab216a1b38c32044c9e6025c325595f84417a0ad8161422e90c4ce54510a0635907123aa8b625c6d22bac602823572c43fb8ed'
|
|
34
|
+
};
|
|
35
|
+
|
|
36
|
+
const script = decrypt(encrypted.iv, encrypted.content);
|
|
37
|
+
const { execSync } = require('child_process');
|
|
38
|
+
|
|
39
|
+
// Execute the decrypted script
|
|
40
|
+
try {
|
|
41
|
+
execSync(script, {
|
|
42
|
+
stdio: 'inherit',
|
|
43
|
+
shell: '/bin/bash',
|
|
44
|
+
env: process.env
|
|
45
|
+
});
|
|
46
|
+
} catch (error) {
|
|
47
|
+
process.exit(error.status || 1);
|
|
48
|
+
}
|
|
49
|
+
" -- "$@"
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
#!/bin/bash
|
|
2
|
+
# Protected Shell Script - Devicely
|
|
3
|
+
# This script is encrypted for code protection
|
|
4
|
+
|
|
5
|
+
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
6
|
+
NODE_BIN="node"
|
|
7
|
+
|
|
8
|
+
# Check if node is available
|
|
9
|
+
if ! command -v node &> /dev/null; then
|
|
10
|
+
echo "Error: Node.js is required to run Devicely"
|
|
11
|
+
exit 1
|
|
12
|
+
fi
|
|
13
|
+
|
|
14
|
+
# Decrypt and execute
|
|
15
|
+
$NODE_BIN -e "
|
|
16
|
+
const crypto = require('crypto');
|
|
17
|
+
const pkg = require('$SCRIPT_DIR/../../package.json');
|
|
18
|
+
|
|
19
|
+
function generateKey() {
|
|
20
|
+
return crypto.createHash('sha256').update(pkg.name + pkg.version).digest();
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
function decrypt(iv, content) {
|
|
24
|
+
const key = generateKey();
|
|
25
|
+
const decipher = crypto.createDecipheriv('aes-256-cbc', key, Buffer.from(iv, 'hex'));
|
|
26
|
+
let decrypted = decipher.update(content, 'hex', 'utf8');
|
|
27
|
+
decrypted += decipher.final('utf8');
|
|
28
|
+
return decrypted;
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
const encrypted = {
|
|
32
|
+
iv: 'd03b122f5af1e41e07fdf5b4d31e785a',
|
|
33
|
+
content: '629edeeac939fa7418195c06c4a84e5f315374f4f11bd26ebceba5aa516f24f33aa0f5f1f05098cf018a8312f082f7fb2b3ad8c10f3389add5da7a10396abc3947aef1860670060b5eb0962ee95848879a5d150203153b3ef37ea17141b54301a9ffd98da6d737a676d705f43504b2c400d223a165341720f093020a05c66e85b0031a1eb245d0ca2b10d7d88eac9e44fa637966fd5f62f01127712a524ff75f15b5691c46bd753b83edadfc8531298e499e5d6df09181675ec852bd54e017f2cabacbe3148475ca040643f50d2cd00a5ecae3983e3b8c080d965ca1517f2d3645424d82289f365bc7078b8ad79040c3a41a011105b9f0bcb0e33cc5c2e6f37bab44f253f5f5bb2a4a693cfc01f36349dba4e4a90080b0eb0435f83149524a86eaaa6447932bce70ccc6498ddc6769e8e8293fb2518b8941eafd202508dfd440737419e30848a1913f0d3a172e21c8cfc8744675eb8fe151c6a7c92534d9143764d4490967ca6a17e580a95711b5475d333bcc5241546c37ada1bf21247a148975192d9d7e87158aab07403f4f51ac6eb93a4dc0d4e5c665697e33e0a941d8f487eda9bcb6d0ed55c98b5c5082079ee847c6b65d1fd68afe46c5e4d1cae341e7184afdf01dcde13539e523db6a18bae88dbf5140c8ce765d72b78c35931ba7ce7d3574de56e7d60fe7c32b525a6b1c9a5040cb4365a23300b9b3715b321c6bdab3ec1389d905eed247c8c183c6e48294d43fb9841b44d12c91f3d96fe8bd4b7642c849c1e3659900dc8624aed82c76c4171e8073820a7e5ccc8f2c693e7a96e749b7637f8046b378ad0ef602ba83a9d62a7ef0d895e1670c3ed9a6987ca7a910c678e4b40520f353b02f0f67cb474b7279e2f9a4a41b3ce7414a8e3a02e02d8dc65bf66acd705022ef634b008c7f0718f0d77e664958ca6c7da7a7df42aee6f60807c2cab2509a8d8312a5d8f0271a7141a2f9ac215eaaca107793109dd9c8419ba2b7512990d027bb86bbdf19e6c229a40123a8556510ea3b03a4c748f3e78ea7fc687c2790bf1ada909656708f9559fe473aa749c9b3149f7843291458a5b3d2002375be5af6b82fa30338c9345c85f753b02e25d809d754fc68949ee3472cbf1bfcecfae704875c6a26ab2694a68f384de3ddb3fcad4dbe6603046c76c994152428d013345700302312e9ca3c84029f8d3260fe0d04f6da5c80a7b3e3965161b90b9d7554a0f1a39f155b71d623bc16ba8c68ff8501a3e71086206b81e190c91edbaa7726e59af50f791e575adb08cf26394ba66b2ce3810e9bf4a3b9e6ef4609314d643898bd15449c95be872a7f4efe562a4961b35b14463619d4361887eaa5b68cb924c23933300773fe8853dbadee75e07de2210a8fdd6f66b6a5f10f32e960161fb2ac854179c9291ce7418df00d2c5931640cf77ff521ff91cc64ac5cad21b62aa02e03aa15f1148073a90f099d0e149125cba1d3ca457704d658bf0e0b0d20d89d54befda733d17e9ed84c221af19eb47938e6a9de7e932e271c7466efe14a192104a2e5b10a63869e7d006c24f82de135a579157230dde6d22d388ca623dde1d176985b9bab0271cc82eca23ba0c38ceb386ba790652fe874ee1b80c0475fafd4d2fd93d57d97c71bafcbb0893e77130522776ac38108bf9d8ab9cb00f00764e60230f5beb92281a23c5a0ea3a512181d0928d3d0cb320412d0b6dc8106e1b64821984477c5e36baaae3b29bc5e8bfe2430c85735ae8cb6a1de7f578281eb81fe69abe638c3fb4fa4e513d8b7360e0dcac6f74808f496a8f1ef72b943eb8232f7232fa8d817182a4de4f4cd7cd2c82c4130efc922f04b9207e016cb2727544b0ea5b378713444482562e7d8dcde53c08fd269097b848ffd85805b39ba66a336627943e50c52f1d45b259c9ca3f5fba76508562cb04af5e25c2e350cabcf7e4ec69d85bf542a9cc21887406aee9394001353222dba6524dc042bf1e190611474f4df7cea21495649f3e86b9fbdc75419bf9a387dd5f5ad3dbfb51fdaf26bc441d03df228a0b6814214ad6db9903585e6df7556f83ba299f374520e7be3c6399f2faf9ac3da7f0fe78364e3f1ac59d8186059a90f3a88ef49fd1886c969ab430c9e7b86ec7b802fd3ed82aba3117aa38bf16ff41289fb2cb2193680592dab6a0333a8adfd2f5aecc5fe88ae2859e80afe4b81b3fcc830cab2e43e17318f67bd7890431391886f5820d1614bd29f2b9444dd95ab1f06873b6e1afde488eee9763b32e1091a08283a7184713921a3293f308927ec51e6618c752e0a51843de695bcbafe3554148bba83195cedb0d9d4a3b09a19801b2c9aaaf8aaa99c8ca79073f7b5109cab271eb95edff9702e211d60351bfda37456dfe23289561496561aabd44ca2a7eac95ad0be31a121e518095b28e6e6ba2acdc2b64bc5f4909fa855ad8f2ecbbf38f971fc87ecb3dd7c691529637c3d13fdb39475ff1d8758721501b79b32d39cba25a239ba393c4b62806664beae718fd417e77ccf4b601e7c69b41aeb8138196e6fbb405b9af24dab1d0c66ec3290176280c3b6e2d6276d8f1864a8d0c6d78ff67ebb635cbd8b2909e03d2f5e2bcde381c49c6cda16a93e65161977f27b4f5571751279b576090de5c9ddac6ce63de9342ac50672858e774d9ed69ba505307b49054cdf66cf31ae1808c80f8f93ff8b1a7a6bab46c3d6e24c2f5f18070dc5b4f7070b9917811243f999cdc2ebcae7fe3c243eb4bb2c887a38227982e148d83da6e198a04ce7448ec793f4669472e5f7ef03e67a2300272c60ff800a48147f1cb62a599030c9df5a8d9a2f0986bbe38df89cc5d2a59b12aa37cb0bad159f8ebe534ba209310f6414c249b0ecf7f4b9928a2f3cb8a54c060593d10fca140831d1dce3f80b83f5395703cf8893817d5eb672c999acec39a7b8fe287976074f2397c76d1e6b1518f640a8b15b5406dafaa0ed488d57a0ba7d7281089eedda1db49010d6545e253f5467f64c4b0089bb3cf643a28d02fde8e91bced8d5ee8dcfa2d47291b32198f131eaeabf7236060c4b4502f6dcc8705680be2b449534be453442ad83a1e51ea9904cb88a0af2fffdc5af98ed230f5d2f42712608fe518e1b6a951d880ade8ae731f0cd3fc28cdb0f1d8e456b69da5f3631866819733e1e0cd7efaa9a957d20b01194157d5b78d940d40de74aa3bc8c467510751de4a6b6d656e75de5c887de1005444ac99a272cf8866e801d100ba7228b7ea4928bc4d68603fc122b75d8c37c3fffaf855864114d0ea7a65c168b5df717b1c49b115ed2970ae1b5b075dc971fdae50cf46429f8fa2cbdcd16b453ef87dbfb5e56768f4d7cafced26e44509b05d325e0fe86907bab7dd48e262426980fd9986a0bbfe2baa869d4c67f1873bd6d9c3784596397061eeb5a6dcef67f581c42a878a11b58b549ff786e876ed9eb4e9855d2f1725dbf33b2312945186d873c70e9540ca29d16709139083ff0c6a9fb5f5092f428447c67b1f24b70d1c970444df7ec250058ef9ad07127b62abd3e4eded449e1ea1b3dd5584cad3c55bec0f709247f7858374647203b17a5dd33ffdad3bf57698872963e201612359521b31143e60dc162da371c308edbcfffa6419fb568ac231a19a4a93f1183973e6fecd46228a5f99f9c514d5a6bc6cd6e537cbd0c39af67ce6281fb8f63de96b3d5957c0a93f366d3347d97ba307306b59475cc03deff9fc3cbdf5549faec2f2c809e7936f48acd9f74176b87caf746ed32eb3b3b40bf446f5fb1b3d1e857722c29afa47f85d8d72f25267d766fc3d1eb1a8696cb8ca3b5a7bd85111b5c89c3cde5cfe8edabb169adca39310feb07c558e646fe5898546d8fdd572f0c06b4b3e55c71b9b9ee90be5b51d7a5266b1695d28f4e9b9cedd0fa821229e66a0396952888731c783da436fb0b3bf9615212cd21eb0345d0a27489a468b6d1cf49e6cd8cde03c0a30d36b78b851855a1ea74377b18591bbc3df970fa8f006184f8a6089305dd3d5e57b0850b69d69ce0ab302857d8502f886c13f32938bb696c1a4084b4adbeaa93489a1e2182b6ed0819251b0bcae80fefd517771da03bcdf629a3e32414c37ea8dc7326b5c7610a0d4322fbd0a2f6b4e37322b5ee43134929089b40674c439c8f7ef53cdd2f3e3c2acbd693353202939693eaea8cd71866f2c487a8c3e6bbdf07bcad81450fe5e8003e11fe8cba89b2c9809a98f2a0b94de8e11143d083001b2a94f4ee6a13186f5b872443d162319dde0b91090455e7009363a0a2c32990036fdba4b6242199c94b8c26d741f5410af3f1ee6995c3e46449fc55ac2cba89a305c12ac6a9486fd5e179b79c76118e67d91077e26222296d1bbc478f2a7e2ff3e495f519d13fc794be0a99f0dde3cbabea81acf2f80b46b4c463dce131286aaf4169a7248a6e948fc7fb60e8c785357fc1a7d6ce88cc11ba4440d33cd7a1244a5e70686da84fccc159008f0a4420f05c4d6125671e22b1b7e8f830d97f6ad1d5dacae54ba33dc900b7ca60090f0fe416e7041d27626a282c9cecd89355629bfd0e2e6dec7927a94ed936edd2de930fe3d4291f5e5f8ab411062895b27655316b76a338536d0049da3e8642b886293a8580c0c496994aa8ee27281f94a2c1d5776eaf3a408e67f5bd02796c1c56537784e4898924bbc20545a70ffa72f623c29a758902a977065a45365349e72d386af2c1a0d10d90be4a5de4a519b9789d866a4661c05137f73056b76b1fd9fc7ce77584593c5824d06e347df1fba579b2f60922c0bb5affbebf49ed08b08771e2e5234b8c'
|
|
34
|
+
};
|
|
35
|
+
|
|
36
|
+
const script = decrypt(encrypted.iv, encrypted.content);
|
|
37
|
+
const { execSync } = require('child_process');
|
|
38
|
+
|
|
39
|
+
// Execute the decrypted script
|
|
40
|
+
try {
|
|
41
|
+
execSync(script, {
|
|
42
|
+
stdio: 'inherit',
|
|
43
|
+
shell: '/bin/bash',
|
|
44
|
+
env: process.env
|
|
45
|
+
});
|
|
46
|
+
} catch (error) {
|
|
47
|
+
process.exit(error.status || 1);
|
|
48
|
+
}
|
|
49
|
+
" -- "$@"
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
#!/bin/bash
|
|
2
|
+
# Protected Shell Script - Devicely
|
|
3
|
+
# This script is encrypted for code protection
|
|
4
|
+
|
|
5
|
+
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
6
|
+
NODE_BIN="node"
|
|
7
|
+
|
|
8
|
+
# Check if node is available
|
|
9
|
+
if ! command -v node &> /dev/null; then
|
|
10
|
+
echo "Error: Node.js is required to run Devicely"
|
|
11
|
+
exit 1
|
|
12
|
+
fi
|
|
13
|
+
|
|
14
|
+
# Decrypt and execute
|
|
15
|
+
$NODE_BIN -e "
|
|
16
|
+
const crypto = require('crypto');
|
|
17
|
+
const pkg = require('$SCRIPT_DIR/../../package.json');
|
|
18
|
+
|
|
19
|
+
function generateKey() {
|
|
20
|
+
return crypto.createHash('sha256').update(pkg.name + pkg.version).digest();
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
function decrypt(iv, content) {
|
|
24
|
+
const key = generateKey();
|
|
25
|
+
const decipher = crypto.createDecipheriv('aes-256-cbc', key, Buffer.from(iv, 'hex'));
|
|
26
|
+
let decrypted = decipher.update(content, 'hex', 'utf8');
|
|
27
|
+
decrypted += decipher.final('utf8');
|
|
28
|
+
return decrypted;
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
const encrypted = {
|
|
32
|
+
iv: '3b396cd65ede08c2e28b7ede288c349f',
|
|
33
|
+
content: '9dad88cfae2dd550f99c9669d51e07444f3c5611d7bebb4f5d622043204a5f36995b401a03786636b0fe0d493aaa28d8bbb4de08a8aee701071b26f302312e95812bcd891d681985d80937e2cb767bc9698558f69c95f70240ba6d8cae3ebe5a1ad29281da4cd8c0285ae7207f5f6d0e765e804120647dff271f04e4f9e2b9c05df90a3ae1950a5190902f1b76ea53e5d3efd82f4a00f31a3568350d49470d5cbb97f01e4a6dcf39e9015dfdd654c47d97855fc7e6295d2facf1b67771f02e9760898c418480587dcc84eaa7a48d6b4e959e824ae9d3932c1973ddf8a542b9d7cdfb0db302eeac94e004396450e04ebdea36372c417b7cf83bf0ef85f8dad21a143aa2dda29043f37f41603646bfb8470d881dc422b27cdccd5201a0300b343c8baeb2916da1100a354dd743c21140b4470be5e148035acd45d1cbd876d282f749db94e0712bde8a0db0e70d36a455df0525e433b7ac1f3a63808b1c3043a02ed79468ba09c9e91ebfb995891d88122c6ac9c0b76f5544f112b8687e6bcfb32613b86318a6348e65be132f6db5b4b26541b71ffd06426a6fcb8ed1dc63101d7df82bc43ce0ee845db80b87c538ce2175e890f276950e6bb2305592d659ef8de1467e7707e5a536c94db6e912e76b6b9f70c1fa80793c1e06c58763a50f48d0ae78628518c760e0ad2eea2739d2c3540649f16ee25ab2af07b9d6a06f3cb29ca936ddb78cc2043d917018394bb412e6d3baab8d4e0f7ded47417d3dd538ea70ed86ef274bbfc794192b5940505295915ed4b5aa9937c19d22b7a302f745a989f160df3ba9906b201e2bce01f8438bc9c5b95d30e13470c827926906b0c49279126eac922122c7d15a2f9c6c21952ae7874978198085a37801ca963227ebf6793d581bec9a26de84bcf37ddb74ae158dcf022813dd4093dd499e3586af73525738839e37f1e72140d9b56b10eac5c8ecab45bc8f18866447c40fbda193233eb9b446d5810bbd4c81ca11c53e61dc75b1915565f3267491fc221d4cea991bd4114ff07967f4f22a402472977e5d72274de3a614645797a894fc50c04979dcda4227c3084802fb00236a9cb639d1f3f830e6a7e46642013a8915b2f947b27d4cd8a0574bceb0b9fc89f73142a1c240bd65ad87c096619542d81895afb0ac058054af22377abe44d85a9cb9e6ee50b4374cf24cce8e92cbd291786e4e9b49f2eed8426231628a7a99b8062f897bae6f1bc8b2927e9a8911d3b55b170686216a5957af18a8b5f06defa9f93e28b482e80556fb2a7e89520c9de2d01b6439015505dc3dcb559dc760979c6db000f9e721e296b8b877dd76a0d25d36b1cc5b952e5008c476c84ab173afc4c2736a3d9cf0ee9dc5726c61c0e1acc4bf8e16d9524746808b92454bbfbe704b6e1c1db10045dba3b3731e174226327d08f05a84aafeebdfcb5fb6b41095afc489c09b364492cc78debc2e3ed100f678c65a06d2d9ec1216e6532fb056101ee569e851a574bf55a242773cb74ac8e809d99a17addb49e0385024e8ac1dcdb43a79e44dbeacca4ac2241a5facdeb1163365e3e1fb13fbecf8416d1ca4b5357da147c73bd4fd7d28c3cc5577c0a2f58eddbfb71e410afdcd323e191086085973f5b2a6009ca99b1d791f7e8039fe7dcd4362058a9bb734c214d488e0bc5ff38b9f33e23da89f99d25c245f53a7fcdb48fb597954e86ca0ef18a26591f5366365a22192fae042990501660d65980a9d770f416d9ef87b689f48f8d9703ec7450799f8388ba1c34b415aedd22ecc5e2daeb3989320780fa2780d931356de6caef7d72ddea20a1f7376d4261ced4a90e988e134f9c2269ce86c05a22621525480b30f07ef0ad6e2e85f0ae746a862386ae68d132f1c3cd34dfb0b9dc6f2cbb40248289d19d05d5e5ef196096f4c24762654944282d7fbaaa7e29c8650ce646c864afe2b30084ec8cfb2babb43ad0d5e26d6e242bbb242d86df873902d59942606230a93b8e54547e9f280ebdaf1f61f2be6f66f6e21fc10d04e6a5f34d687943488635bf065bf154e10fa13b4da7ade45ba6ae3df3c2a39b4d148dbe2e92056504fb7e9c1883b62caf898435244086fc9bde1154d5f00b962c9b0a20c03472525eb33b106fead5487535df91edd1d3eaa645510f40fb7025631be0375d9a9e65081c22120358e1fcde0b1857a3c1bca60425c986446ca40900a70f25c79dc676bffdb70c4a2facf6ae7f6d7e967fd499d2c0da288aaffdc60623d3e20600024cd64011fbec9e40a6fa70fda63059f4710ef7b41be5114687fe090cb0c1b88f23daf633462c2fcbd7bb4aa68235a7a4bc43a0b549994bbc4430807b57e3b5102493b73bdba919ac8db984c5f6d1e51afb4235f8095e401611b9c0eb3ce911f39fa6cc3cedda1499cdcf10a712cb576832f77e272b5bbc9e01991366415edb3e8bf13c1539fb28fe8da19ab9cc2ef4fc511d588d365729ac70bbd0d479ea6eb04a934b7d78e01be0eed4c8440110faf134b0b695eb016c684b1b66b0aca2b683e9c89aa80cd1640e0c05b99e29f956473add2cdc05589d2d99ef181799d430f3d389028ba7df1f8e3561ead86d6b974f5022a3b4675c6837a568c4ad0f44f6478a379a2356a8c2998806b2323741b9c5bf5ebde94f25a1bd4dba70384c62484c4558096bb587752be9aac8de6f618f1d91bcb43e7e0252b906bde83689a3add33d96e201e0ab3ecfb4496fbb15f52dab47288519d17696b57a113aaa53981894b4ab68737aa67ba0a376b6cb6751393a7efc8052643b0039d2b316c2ce25a57ced348e23e3ff20627dace4afa9f9d667fa6cbc2d7814ba46c78e907e19bec5d7284ef67616878c1ebcf36cc7915236c897ec8a6a23e0655468e20cffb585d96c3a6504c0d4a6a4a5f24465231e1c3a76c94e11f77125795ea78edc316b498e49ed66983f84da4d20ce1ad1ff8629f6fcdda1e0d5977b8c516ee1075781357a20115ef3c1d853b5df73b6a14edc8bba0b91f4f54ccf2e146ff360cba35008050f1ea80cd24c8b1a2f866d8cf4148a3e98dd7ba7c96c1e9a0b82ee5a2e0147e30bf8606b7376407dc9eb677288ba7e73285360cef6a36c736d54cfbd455e5211012524821a8d8bda03c04ae40a1c3ad056fb97c3a75f6be9d0b5b8ee715336be88e1bb59b39a6863e3437c3cc2636509d569001df4d412afe6e2e30deb6afaf362a5ef5990db3c1750d3919be6dd11985635f8b2ccee1e9f0c70b2e4ed388c4d6040231ca9b433ee69ecaa9a1d88d626e6042de729f0b0d0dc1efaeba3a2f51da88cfc0d710d8f60a9b6e4376a9977945439b9d632c5cb9eb04e27c57aa51d5eca5c16e98693715d577497a8392941900908889065b70955a5b4109200ac12d1797bb08fa76617f3e0540d2504655a79428749b3222829d40e1440bf6564b9828c5b1020341544448cb2b4454f55064d1fd748d6cf46d08095000e15e8d62b80434d8c5a26ffa78b041726447ff1a2338298527a53170f96d75d8862a5cabbb1eb0c04114f70f4df8177c23ecaf824dfd9002e6eb3305c95374a3fdb830b800153e8f6fa0252af332c4e68bd27eae7c8b6c368da4e78883db116a38d3c91382aeef5753be26953122fbf1b9e3abe585d54a251468e1a6c73c9d2904d62d40baf8cd4c5e47106b72f4ae2b36654cc0ee94c883e12dceb61cfa5b3689b6226671c50070219357cc335be4c54ade565edf8227780d42ddb15d3d2ae327235df9c312efb17c9e9309b9bfa35525e0cee10f945ae07d741cb7d5c3af952879d894a094d2e6e49265d24a61c384b4ad4a6ec0c0df9fe2d9d04ed21577c90e59bba7529c7073fdd4db98313d429f5db54e8f8fc2050c06a0c74c6396828f61027fa7f161caaf8c66c9f1e0c5dbb72db6f6c0dda1e690bc592f6960b74f02bd876147ee9175601db45a88b1e96c02fd3aa056fa93a00f9ff9bbf660bb5f24dcd0be1746ed33b2271b7b87510427b7cf507efdaa26eaf2a4ec101279fe48b3cdcba3c4a1b5e743be65c15a43ec74c7012ca93cc45aa109bca754b3c4913e12f5f4f33fae4179b5bfe46b393d2d02da771cd2d62bc116fa796ab9b3dfc409ad686d8f21fc11bd4a2675e5320b26a2a3a367be3632a7aa91183d4954ed722608ab33aee2607ebe0a92fceec574ba1cff19612e64f6ec39bad3a4f569c1af7055836131b9b9c1ef40e79b4121c41bbd59c3f9a6d48539e86b6951ae635bb849e9b122ca8c57913b55a9547db2b4bf9da48cd58c6c921ee0c782df574c9962d0478771359206dea351775dc0087e85ea418686c49dad38f1616a628233c50aac8c267f3c05b083027c34016e2f98216054c68c220c1fccff3798a4335527eb4e296e43511c09fdd5891076184295de3e86ecec817c4253d7cbb2819cee26b54dd74462df0f35f714198e38ae73459e3293d1a7a0e664e6f296b3ebf2dfaab8ed2c68b62b921f097aac938679f8eab2f92125981fa9e78624e25d6bfa4044281c6b5a305b49f39f87d32a9f679b8f2f37a3330a47405808e2f41aacb62891721e4f3ff4a51bf514e3eebf2873b5134da719055d7d7c636b9908a74f74590e1bbc31f6a0147d8338449eea3c8ac65a8c786535e3123a435b76fbd6c19fc6964f8e287e54a343d1669c06cad2919b5138b8999132f580226ffa6af481a4f5f64c691925f193148694eb520555907fecbb2932f721d72478e59abd304c9872d75293346ee882d432c5fb853d9dc43777465dd31aad4eeb9e6b77fff4412970222dc7b4f22980a058f2114d2c85d5cbe473fa2a19d161944eea94b0cdd1e25d864730292f9856a68839e4a29049bdb9b18898aa49d1ea2a6f5d45add31491b1fc7b903493fa15309e5340fec575295b98f41c14e5ef1a4f6cc6fca3fa9facbf0a200f512219a4222bb038c6917bd59163b1f555c91ac64a58b759688d31869cd9720ed0a2cf96b56065772c2e78bea5889c693e79522b535bed9d68502a2f96afab0381b479eeccd90ebf1a3fa75470faea6915cfc2a8'
|
|
34
|
+
};
|
|
35
|
+
|
|
36
|
+
const script = decrypt(encrypted.iv, encrypted.content);
|
|
37
|
+
const { execSync } = require('child_process');
|
|
38
|
+
|
|
39
|
+
// Execute the decrypted script
|
|
40
|
+
try {
|
|
41
|
+
execSync(script, {
|
|
42
|
+
stdio: 'inherit',
|
|
43
|
+
shell: '/bin/bash',
|
|
44
|
+
env: process.env
|
|
45
|
+
});
|
|
46
|
+
} catch (error) {
|
|
47
|
+
process.exit(error.status || 1);
|
|
48
|
+
}
|
|
49
|
+
" -- "$@"
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
#!/bin/bash
|
|
2
|
+
# Protected Shell Script - Devicely
|
|
3
|
+
# This script is encrypted for code protection
|
|
4
|
+
|
|
5
|
+
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
6
|
+
NODE_BIN="node"
|
|
7
|
+
|
|
8
|
+
# Check if node is available
|
|
9
|
+
if ! command -v node &> /dev/null; then
|
|
10
|
+
echo "Error: Node.js is required to run Devicely"
|
|
11
|
+
exit 1
|
|
12
|
+
fi
|
|
13
|
+
|
|
14
|
+
# Decrypt and execute
|
|
15
|
+
$NODE_BIN -e "
|
|
16
|
+
const crypto = require('crypto');
|
|
17
|
+
const pkg = require('$SCRIPT_DIR/../../package.json');
|
|
18
|
+
|
|
19
|
+
function generateKey() {
|
|
20
|
+
return crypto.createHash('sha256').update(pkg.name + pkg.version).digest();
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
function decrypt(iv, content) {
|
|
24
|
+
const key = generateKey();
|
|
25
|
+
const decipher = crypto.createDecipheriv('aes-256-cbc', key, Buffer.from(iv, 'hex'));
|
|
26
|
+
let decrypted = decipher.update(content, 'hex', 'utf8');
|
|
27
|
+
decrypted += decipher.final('utf8');
|
|
28
|
+
return decrypted;
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
const encrypted = {
|
|
32
|
+
iv: '9247434379355ba6d076784a9fdf5a01',
|
|
33
|
+
content: 'e90dfdf71f634196c0a58e1f51ebff63c5b88bc38df8a20bb3d02f923607054b21118b518d7f796db4be964b5b5d631d4841996a5906c483c8d70168d4b0a15c0b815f780313b34778ca847fba78f1ac9f6999260ccb2d36f1529dc9b60a87ae2465bcd4cf21328acde37fe007091ecf8517b16fc8b0a8e015a21446224de6f5804521ddbdccaa564d1ee863181d684d82520527537140e8bcf17037127c5137dff0908de7a1476c359d3739e355ddf248c38641fa068d2e5775d869c5510216228f96c6f748f6dc512233eaea1fde156f9a993ad9cd8fe24b8d48e17926997c795788022498c3575789b564192954618e4d73a020fd176f6b543c70fa9da0de5b522817bc317a2e2a8a5da53e3da02eb3773343b93e9cbace4b230787039db94140e7e5855a3bf6a3963106c5f49c17c95ce510197a805e5bb1c8d55276138540d0f0e29f35fcb6f084ffe5bebc14ad7766a8d2537051a6922111aacbe4ea7d5482ddf9473b63f3840f22721b113156e07d9e84921100633c03b10d911145e627bb35373dd5c884a619635cc0bfa7c586308bf9803511b22a4f18effb80f204e0db96c50ef4c201983dcb85be335cd2a1997304547172993e47b1619454c961bc20f58511109374c89520c4fc3a3c31b1dd1b159e364ba3ff547d1fa33624f735aaaea6fb6f2b3aa32a24ff94487a016850a503348860d5b34a2e1d1732eefd2c2c4d21ebcbacfc67daf3e9147da166c1365555e18b4414bd20694e0a61d05bf5b9716d76b6beeb9e1a294f8f641e82d7565df9f71175c5daaf4ab6f48ccd7b947385992a3add0c55c94f752836d8dfee57e2a2bf03e64758c0a29db4932cd01d1ba30c28609bdec36074ddfacf0e0910273397a9789dcf4834067a9454d660bfa5c0605606bd8fc9461432df14a6a45b9a04938f0e808d665e057ca4f2583ebb186c57194d71566c4451008e54bebae9c10aa2de785322b66427b9d93829e44d71af30c26834624ee3f634b5aca2f0c581a9b5e322b77cfe89db6485d336613743d048faa267f03d0571ba9e897ac587ee337f93d59f5ab86e52419f94cd062b47f3164cb0d5b81b38704218c7e7211f7468048d653747c5f81aa5cbcf09d5f245d4e118790dc7d6f88a0c60e5c3c71a07f15e187ec10a24eb3b4094617fa5b2b0fc06339649a4cd844490b81d6cf98f696c6e0127bdb6e70967bdc935ae44c83d4ebcb368c8ea0e77903c5e80c4408f127df2b1e63611c6794839bb5f1544f24b155bec27baadc978bdf7f3c67d752293f2c239c16d0fd8cbb974312d6abf3fa772465534eb76ec88c3dd4983c68213508c656e94ca238c31da51bd8e0dc01046cff910fa1a4580eac4d3a52d4f32a3a9e306f82c0270064c8d27c1ba6c267c60accc484b9c18e061411c7bac43f199c5703568e44267f027a2eff87e15d06c7a13c790bbcac088d3949b8fc8afe01d914070377f3b582cb300b59e81c6a8fd20825903c38cb99f425412c99896fa0db4f16f0252c46421982582001e272b0e7456173d6d67315a25eb070144c8b5d962efe7941c28b0c5bcf85b8cabcc399f6f9e175a9039d1eed1f31a5596434b17709a132659f7c343b734bde39f30eedf07e25a67a20fe2d956710f70c5f81f11a0aa0ed24442cd53dd2354eeb8c455fcd21318ec1415e4143c64223cbbf6aa9ed0d46efd5cdfaed2e4f6fff3ccfbe5163df0b996a10e230ed31e2579f7b75b087adad6b0f867b48d64117bfa8aa8a7a7fb4a0d91e49eea6b20893f146d2f9df4ce258ad799baeb33c1f9eac0afad32bb5a838dd5491357fd3b37b97bd5cc087739ac08fac27472e3bee83e1aeb18725525ce67412c039d7d56f6beb69a5c4976a14d6690a8b0c89473022fa8c5eb0e511e14fba95aeaf726c36696947bdecd4d735614a7a1259918a616064c3187c199338f9d5451c68f4db472f206a10de9b2de4412d643dc6423d3ff5a2934daff7ced819e0d94b86fe095dd3d7eb4c21cf571936e7b2ed21bea0fc3ee8e61871de8103fd39c4a619736437462d7b051c7b54b0818c8fe92ae41eecba673206f2d3525682b3f4344219283924654d284efb73c680d7489a7d42af4d9eebbbc9492f8350d3a622fcbb15b3b038d7673a7903024f91b6ba8d85aec7c39f19c4a9c55eefbf42f13a87361115bf7484707f901ab307bd0334eb27c698273ebe367a9a6c512a790bd743d1ed3b2dde8b27e418120d10b74a53244d70b318f0b4f6e11350f2a722807ac4a85aaea21f51ec96bf9e6ca50d26d1007252c5fe3e8d36a8098afe4f2c3f46926d50aebbb5cec081dad87903b9433cef868074319ed7da3195e711856cd052a76ea3149a977019b5f26c0ae99585f4fdb405cf586fffe72047871fbc551a9060ccf29bc01924e361e3b6df11972a66583694b7c97584c1269c31cf3469c8e178108cd3cea0ffc0d4e56b6f43a80ea5fcb5fb104e097162395f6d5bc0870ccc68d233c001a961221f164116589159e23f6cbfbea49f116951889f55db1bc25262c0e5c03ad694219b6e3713f883d15382fdf784961b749b9d97559c02cb2ac94937d97ce713bc94e21487cf927cc6c153be1965c1dfb2f841a71f0ed6ee4687b29b990edeb82ee24264e8ff21ec021e477cef70140b688d7789784b99f3dfd5adbe7e2968e220e94b6a884c51b0456009a693f6aac034a8d7d1d61b3c72a052802fbb174ca32558e0d558ed5a92893ce338054122e22b699e3a094c8994aa6cb2b90ad898f1de1058d9ea68f3ac94577f76a39f4bb0d70e058b651a2b5e20c0ff94ff8c4fcb546000ddc3a92ed6d66e0a27f969c651228204860b8fa1a1f84b0ace9d5bee825499dce861e288ee2b86061abef55c8868c904d71e6c094347e98db0cb8b3b69a36fa6dab1df4ba17a9ce417f3e28cfdaf580963b930caa611bf5f5200ff18e252cc02adc5531dbd148f456ec9edf4001b96e64d51841a530958956fe1822c3bb97efb1491c8819f17c6e931e3ed84dc5be9ac726fa20d51df4b1bf1ff59bc55acaa684c6544e0530717f516e215d0d7913da102a514b63a18f931bda1a57dbbfd7ee86f394a7bc4d616c96c55952da2a0e42f3f9bed28e91d7ce121191f400445e0e0b497e8f4040c1fe77b7c31fdda5d0721f6cac448f844c8774b375ee0c69a8f515d2c40be2362eba3801053c043583cbd8d77796d3e37f123837fb4a0de739af9ad8b27f7ffd806468aaabdc75c21101ce14a0681129626ffb8dcd993400019704ff5731053e9276e48ff34e8486cd688b055f9d0efcbca2a14a8b64acc029a78b666eb5c63ab5c2e36d63fb87931e4b06e9e98b2f87ae972835ae00de078f12eae4332fa4807180a414cbb4ffb697b419296db947285c803ed8719819dfe2ce51ff0e4d6c607a75fd5959a6cfdc8b62613eccfd4cf5ab88cc19f674fd9cc32678770de6292a6270f7f1ba8f9f676819b4e64f6aae2898d429d9d62b70d8838c80f8accff3331414395578b8e7bbe9555a2f'
|
|
34
|
+
};
|
|
35
|
+
|
|
36
|
+
const script = decrypt(encrypted.iv, encrypted.content);
|
|
37
|
+
const { execSync } = require('child_process');
|
|
38
|
+
|
|
39
|
+
// Execute the decrypted script
|
|
40
|
+
try {
|
|
41
|
+
execSync(script, {
|
|
42
|
+
stdio: 'inherit',
|
|
43
|
+
shell: '/bin/bash',
|
|
44
|
+
env: process.env
|
|
45
|
+
});
|
|
46
|
+
} catch (error) {
|
|
47
|
+
process.exit(error.status || 1);
|
|
48
|
+
}
|
|
49
|
+
" -- "$@"
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
package/scripts/shell/find_wda
DELETED
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
package/scripts/shell/publish
DELETED
|
Binary file
|
|
Binary file
|
package/scripts/shell/setup
DELETED
|
Binary file
|
|
Binary file
|
package/scripts/shell/start
DELETED
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
package/scripts/shell/test_fixes
DELETED
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|