devicely 2.0.9 → 2.0.10

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.
@@ -29,21 +29,32 @@ function decrypt(iv, content) {
29
29
  }
30
30
 
31
31
  const encrypted = {
32
- iv: 'a59c5dd56cec688aa2bd4d27a56576d4',
33
- content: '1854ae7d8f8329cb67adadb76c0f67441ea96f7457fb8d9a71b2fc5446a17517884025a9032b997c906f17ad34f63ef650d2cbfcd9683dcc11d23cb376b3f390fd13d4fa6ac184ce59058e8c13b623ff3f2ccd35890dc004e0c9a951be64d1800dbaf398052dcba86970cb70a77bb941d3fcf65528b830ac90f21bab568ca6f36aa0dc4ce7340ebe09eefc8e27f5a3648e3b85fac1fd69a3f7205c7f33504856c2611e582fdb6274f88f360d14dfc2bd6f1f0d6d85422fcc8e4b31c9319fa7de3ab3f2104fcea9e4e3cdbe8bdba30ffd7f7f2a87f9a654d9f746491b1225da4a231af0fd05184a9be3c6cc23f40a254e557ff1def21dacf16c555f209e905cc5bc59fd70eb6f1e518f5facfa4a803d8305784294c3d457fb552d0188fb3ce7860c0bc7773a88431f3d9ae8e216a50cc23d0901426e69082597c235c34f88ef4020b80777ae6a9a857f47981d7aa6fe10efd006f81069cd088b319408e92bfc99696bd06cf529a13efdaede65278bebca266e4b471c46ec61822449deaa1b4bb24a42ebe2fe47229ab15fea4b08b4127315e6f7c5cdf285482a3a95a14ef62096133cf2b8bf2e16c61d20a5d914fd8e764a2f1717a98d0bab47e00a3212b7dde6cacb327e2e446a36309ab41c7804415276f85fe4bc4f05639da3bf22690f8208c9c83c31815a40e5ddab38e9b970d48a9b82da6ee1811d71a87987baa4101173065241a401db502e8dfdefab2f9b263979513fe9d12d6e3757d75c418ed303fe7dabf576f3fe600d5a0636d9f32ddbd7effa08a9ed497a3b33c0895a38c39445a7df9bed0713f88d3b88809fb7a53e697f978de27c4cf49aa93507e973c4b32d96fcc9b6fd4eb3a8ff53611440f6b6e78e4794cf0e84a001c5cff2afe6b87223ed7283caa92f3b036a4884b44c0313360b8eb40f2d9011f5150b92fc316a47ab017fadc884ff6e9aee98ac1afff45595ba441753095620657d661d939a2180dad026a9c95a72b8fa7646cab31b97418651544fb237560c327bcaab67a3578286d74e2656f3c40362c5289e7325748a1f67e08de9b38288aed8103bce53495f0f89d0951819bbdf8b95814b4e15e012cef92d2766fa489841a88afafdf860bc5f94a1459cea56eac74f62918df185ba779a1c3585cf8b249e43ccbae62d0a2947ea2fbd37e366d6165fff80297b0117612e260d891a14790f4fe99583ab4d93e5c870fc7c8648c62abe5617fbbf60a67231391f31900928733268018db0d46405a10e202e512494b5c6650b4e1555ce8459a2fcdab7a0ee4853be94448d7f788fa961328e521a2f0957a9346493f478f15db3eeb3f6c85a0aefc283ff14d344b4635c0b1ed9adfa1b739b082acff278e005875c10f8d1f38fd59b9d4ada2494c41ba6b99c0665ae4094eecc12bfa1bee6e3222057fadc873aae83e3de8d3467e981bef0c804c4829897dbe6e867f456a32b03c0b3c931005e28aff278245b902e7966a30fdd5f10ecd4896d7f55bdd83fa66e03685d30ad2c03ec7e631428f5fc0b01b99b827b6166ac5498416120e4faacf2a8cd61fccefc1e4abaf1d7c3344aa2133c2367664b92292d6c6b6153504ed13f12696ef4a3580cd62478377411561a3fd26af5fc479e3313b02c2d045a52552cb77cb333771682fd6a4baf278b9a353ef953ac101de970695a87191eaea62e06e97f804f0869919fd0a10ed2705659c578b4d5481cedcd2a369b2811ebdcc7ebb6c80879ba443a3a7573452823eb106c3c33be2fb2541992d9746680da9fd623c3c0907394a7fc86f239a2cb5c21e7eb859648cda69a0b10353eaa84c4b4289c6ef500e40edb8254e8a598f1d59bf5895f463f280c35baf49928a03c24537556cb312dd2f86c8a0f26683d9199fe4dda4304405b54bb2910008bd3c7e86b2a6fdea8bcecf4cb7cb19e7eaa3db3adb44c284d6a97125bf5ee127dbbf7c8b56ac62add5ecbed4af8693637a37a991c57aadf1ad43df84c54583d1efb2127383cec929fef225ac0f89b74039c7d4f7974676f1e888b3cecdc2d319e41d8ccf8ba08752bd66582644a3c9dd614ab006d3b64b20893482cfdfbbedf47e38756173a385100f03c54b56b3ac1e5b7ba0b67af95651c3effe52adbcb6332faa0d1a011743a63fa2268bc2bae74142ae2663611bbf6ba092d67be3e440ba9dae2b9ac1a657eda7fc89b7f5497a33d1f6b89a5310dff890fe3283b487e852e4f55e35041b721876b4bbe8a8c1d0d011ba3d56a4f69423cb4c1b469b6043df76d1a15872e4b8d942bcaf5bb374bf84c976f305498c37c7adb176ce84d653703e8457fa50eed48160929168480bab6689e33a2a08d151fb414645ad03774aa012ebf3cbbe2e511d6df423364aba9226aa9232576224575990a2afbedfd2492c7e03aa981eae91521f1f57d3693b9269c95277e9a8333376aa21d7ac0e52e315eaa015420638c7fea28cde6e887fecd13af0e2cd72be114783688b1db5bb229480149cd7af9018aa712610357e5a9045af9831f47b8fdbaf58ebb1e58dc933a71c691ac8988c4f6a1d6aa875b16ad6916e8c18d720e96435060376b28999bb629b5b1b145f186285ee1bd79a209f08f0faf722129647a753a37fd929f393f776d4eb1e0b1b10ae0660a54e7cdc1beeb81d95653986dad20b7a1a26412313aded42ac72186aedaade3b3f8a79cd36c43a7af29fe35037567d49db4a26fbd1c6ac780c1ebd480c05771de8c749132ca906d734b9842095665076f524e47c14dbee3af8cc22b98b3d6b8097a62c2de77e75a9a9c344d8911fc32808a272631a43a9524696925cdb506c8a61c92b0d3817f1d0a430e0eccb17bde2c658dd5252f42922dac3d38782527e095f601b67faa4224271e771a14b49429ec5d6703edd0d9ae6fc20900a7bd3ce4dc27f49e76415c721f27813eda94ab9c534b36a234b84010ef680d19bb257a298b1266718cfafc87717269dabcd1bdeb955330a1bd03abff45e0e8b5d98763021acf85a445f4b915bc0e62aaf154cd303d421a0ea888b06c45cc63c97d78870d92f5808c8a7f876ebacc229fcc0761d834c4c850924f86e32c108f8d9e53cad5e7cb510acf6e6ba57b7115e48987da0e5a3a84db34255b87d2c19c71f896f88eaee643ea311119f43ae59f01f3cbaf1fd7b81e873c87ac216590702f8370a187e8378ecdbbc577182bc14919ec337b0a5ba95adc6166c35d9318f901f2339f77223db10bc25281944bad7b67e321e1836f8dfc50b39b788320eb00b01ff884763c03bcad625c7e0d3256a86a58f8fda6659b5d2a8269241e2e9b986a6db6a01d381e69e2db79e9e44c9d41627469dcc664eb49ca59dfa3fb9c1e8b34f2b67a1e351826e96738ee0ed3ddfd63b4c7d0972e5f645340754138cb30379fd69865b316e4cda8d8a419a5c5b03850e07537e9eb15096aaacc4069a63b36823d6c593e039fe2f95d1bd22af92d7a4e4ed056dd7f9f1ef717f25136162fa767f082694a0a69258c064ad91799fa7334c0708119bb0d186a350034cd091b732e9aa10551ac650e78908a098ea32203029ed72a5d13381b3cbbf1995e19d9dbbd8cf5ae785e25b6df9fe577dc36c1a5b517186f836d68090802e08cba93a9b8a62f9f035e72f385998052a19343cbdd8da2183f06f978f13fc008eb40b304702af601bd46325dfcc9dca9fc1dc3d57e1ba18ed74902f68576a8187d94d3af011afc7535d95a224e98805629488e93b9b445fe468cc90b858ee8802088de21136e7dd9aa9cc0de8a6c581b04ea6c77e60ccc38c04c3208af7484106c756f1a9f7e4b2d2accba881286de10b42fa6c36c181ff33e689250e91064ce3fed12ef0eade424483ec564161296cf82f33e3732fc67cea7074629440f5ec6df52e02ca63846289ceb35fea7a8d378d6376dca3eb451eb81ae89c90e90cefa87954c35e6a01925fd2c2384bb3e9fb4c5a5d93e769b04cb6e407e90f94b2df5136c960b56116fc10f184ad043aef420c3139e6ffa9743b8ba9db80157c22540bce1c69adcaa1e422e5b14175dfadea33b26251788b82ec9c6e57d508b9ade938ee0c0cdc78b4295c45d7e99420364b5df8eb0607d7c35605e81653e36231a55798cb0db09775f25835211ca34cd3dd157196c20bac21f26007f336bda3a8a66dbbcecb9f24e47c3f463acee843b1b3b8bcce3fc2fd1c389c02a288e1530dbf7a594b2d7325357559fa1228056bf567c2364305ba3fe375b8725c102267b72acf7887d997cafac541c4706cfac0564c1c1733d6ef3198910e351419c2b4c05d6068c768ed011cfc4faa7afaf199b48915d47b239f85f7b20a64942bb64a17e979829e7a806cc139c7f30de5759b655940159ff297f8d1d929714861b0e863c5c8bc5904b6ec1e973d964dcec2144c6106309bcd0d6fb0b7d9f3cd5927c497474f5c00bc74bcafee0a18f800a18bec7a13bb5c5d88a130d156f4a6359666364c0781cf86e46f69309e7f31ad79a879755e6964b1d1953607e95b69281cc3c4062d1a28e0c7659ae7433e6cd77a294d328b8938a8ed9ab5f05b31310c7f3186417a34deb15378e345a357a3318ec0fd9da74bc8f4f927b84141f018199e9e648e492b694da5825f28bdb6f3d68038bfc27311137b36eb4b16a222b397b8dd13e5abb092632e855c62d2c770ca9e0590a4a2697d455388d1d8af669dc0ac69d083ee1bdd4152abae516b6026675227ecc72eeb2735c521615e9036775a8f3f9394fe582e6f1c4b430d1c31349cc38675daa65b24c75245d'
32
+ iv: '8f858e32f70d45c36256575016e685d5',
33
+ content: '39f87495a75117cb7014f04b28edcd5f6f60e5c4d7f84b2d8088bb63b483e065e066165486228baeeea5ec86ec2ef547e3677ebbc9b4dd6fa7a641b62dad6b933b5b0c46f99d4f68d1d05a981bdc23254a7aea959e784eb062d9482bb1e34e948d3586167d63d922725bfdfb46c6c481927d63b9d03e60c2b49e8853878d268fe94f937829e0ed4c450b8b147b960d6ff9ced3446e463fa57d12edb56ad03a935e98ced6b5500c0cc00aa6da375d6105407ea1f401e962b6a0a11eefe3c539ba6525e84a5a294640fb3e22bcb6830f9fd37945410d82ff038356680cec732be5c89ac4e3093f8580167987bf11b4347f7cdb263579462bb2d99c3bc19a8a702f4cb49ff8189c517894decb439096964c9276fb70b92ff52b0ea2e7bed6363eba2f843123b226910aa8ee01d86a1a5b86c82984a271de09dba29054bc5bc90b76c5d732f23bd077257e5fc72e59f94642f3781d0c851174afaeeb789a84c2c0ce5af13fd074c2c3e54c7029fca69d77e9b6ffd4f703871d135672e1bc1bfde634bf0dc242ebd01569cfcadf87652193151e7062f5aa2b5f82aa55c2b5504c17cff21c7dbdc181c5f63250501024ea02f5683c9f9c0441dd9c55432eff1772d0f984a399ba44e66ff1d05bf552d945bfc13448b28b76378fe805911489241c0b96c7338c8969c5e50e99f6488bd549c5bf8a50553b1e9421e7b028d58bbf692d1184cdb3c42d392d6256b693bff36ad56f305a0cfd3dac9e5c6a76d8d6b35d1e0ee1c397800edfa352e571c54307eaa28e6105aea6ac10026075f729535eb1e84e341d7e3fd827da85c8dae6339f99c2ee27a031b0d0dc2517c238e7d84453468263fb3970a91a583a282de60dd1d8ea1fd212b3d01ddfba0b0222201a60a69a50c3f7c68dc66be573113bec6f23f5fee620843bcd53109397f1280ec3df83321903c1ee7a449b29a2911b150fb329a8374f9bd4c3ac0f171f1b452b2d35e961ab2b1558ab4a37014575ce0a160d198cc17339fbcccfe74cd4ebb76ce9290e0d4f06aca398b8431f5697e11d9598fff9fab9c8c3ecc2b8f5364553d86c3c226cb5a85301198762e50a6a7ef9645448408c8edb620e4a2b80adf33912cd5fd48076894629ec364bb615e3e67f4ea14a0cca34ba040ef08b192d0342d2bf1a1104916a3d4b133b51c923245c591962b8ab073db83fe431961e04ead77d50d624d889c00b55b9db99e0567c57f1861a0a34b74e124aacf201c4822d84d3eb5286f3a79e96fe30e3710846323185d3b6e0f930ea00d547550282e7e7508fe03c9963e09a5e7ddc80ad5f05f612390b30b77d756fb03c297f940c20d7a16d45160037180cb61fe9d7aecdbb261fda2c0362b86241c0a40be0e1e9a55712fe50603c27113b24a917f467f05d56f806e06cc6a80e4127b3f8c90118d7f7fb6925a8050be7157bf0b523d1e3ef3f55ae303dc8f0c574d13fb55b4e0c746aa4204bd99b262ab9aa199167ab035a9bd32154fdc9de893e6394623b07ab3965dbef1448e3473336b00d1222b2b6103e69c2d9223f50f83b2cd020d3aecdcbdbd77bb6eb7e98d6ad5e2c23c5406cce13d4a27f43ec5a8cd2cf59d39bd9f76e6ebd168003088edde4278b940162e3a2c7778d7cedc4d1d89f3e3e934662720c90f42d4d09ce335c50686e1b9e2d462529c151bbed2961823111dcf4b13e54d2f4cd8aff12bb69110c5f39f8b5785329de1cee69d44719d23e65e247279474f22af596ddf37b68aa9a7b12e91b7109cc8179d3735b3b768b937122eebf9c211aa0ecf2725067a047467937092adde919b8524bcdcdf1248eeb8cde076c928483c7de5444efb0ae8c7c17e08ba2aa18a60471c533ac1964179c58001a7ca570ff401e2ab93901cb7832c4c53f248a62932e6c9494bdd03a80d524ac1eb6c110e238e8b4050acc396b71405bdbacc26eeac1843812021f3e1587076cf0ad37f590a9d6779ac15908d26e828bf185ba5e7ae372791c9c0ac32ad4fd9d983e392bc6adc801cc5732d410c615002617569545a3eb8df36c268ff84882499693d0713846f4e860eeb328068068f9d0ca140b7d59e3ea52bb504c29b2b5831ba30a06fa6ce5b48c625362414e3c18bea0cc99e4ac05ae8de9dd622d801a09bf3126b3d000e1b6d90e2d5ba48b4954cfb1cbb57960d3cc02301b9f5e50aa86564137ed26867ce81b7f894ec95e197049484ba0020897483f68c23470ac48685b3f9f59c3f9792fe2ab3aa97c61c6477463a9863c7b131887b6a4446ee1fda3d97a2d455a97dcb9c534ff8850dd9cfc372685cbd41833d104965e7aa0d37a5733fd63d9d68bd597cf90b75bc97307bb390abd37482dfe8aca6097c20b183ac7b617ce1648378a68c1c5766bdfd83314d2c131f2651fef453fbb7001e794554cba6d9bf191d87d3e7c8367e41d245c182ca435bf5a20cade41c4a6f40132ede4b0c6636aabb07cd5a2dc55964dd706b2936ed4c35919e92a0c8cf06900c9f91ca82e2a9dbe5ca3c8b43468e9d013784b25fa85c9494a14c2220e74edd022e42188bd3db0ee2ef7cf1f82cf190246a2eb8924badf2ad15cbf35759776324ed12e8b1b513f4a1c62a5660088d4671d6a154cfe798874e4468e235856a3246738b26a8afe54e9c6b668afedc9a0932f58438129584bf7f32121ef65bf31c7ebc6b8baab4825f1b9bda7d23fcffce12b94c176bf2d392b1cbae3b53d4545b54e2af25117cda76f180df230ef213a09be193699cc09843dbaf6f37c5ada2366f7689a11429360bf6f9907eb7b7eb0a662849bae0e23a3f127c4977aee32a32da9f6c4385f8fe1c6b96a9578139a0bbd59b117353c4f4e7352922d75b6d62e2f949204140bb3a2a42282c5a0a34e481383eabaddb4f8e84675fc210a43f4020dd4d1d334a5b42496b774c17b0b3402a808ea9ffb0e3073af681bd07bef5862d1f4fb14fb6839e0516d0212148d00823aa681a6de6e3135209d4db43e21650d386fc049fb3e242b5a729b6d9b3bcc449e9e2c600ce7820a39805015a73f874cf4b75ebe34177f940080dc985ba6d50ec37c0decb38b72a1b36e7c06fc485501113a15706092276696fbf41fc5a3ab02e683bdb42d0b6da89257c3a36fb86809f92756f244c113006b60d35c8b64499b1f229e8086966d49db8ad9e4044b97cc09837643296dc8cb1f1607cbb1ac4849d9a96602d8da37d0d4c870c6237371208e94d1b3033e56ddfaf98abd25a7c7b03483c22d61901282667b4f0b5cc1281be3b86038a17bccddf62bd5efe42fce4c1644622aced3b5d2515e906f642132ecd8ad94106582da19d1d1ddc7bc419118c59359b80754524591a0c64e245f4bc867c015d85ee93ebef9f34cbaefc08a42a47df596c7e8bac61ca78f6454d7fff3501218c018f13fbfee7430993b2bbd64bab588e8f59357a134662ee3140ef1e60a663d20a9aded5663c318444f9477be9627679c0b92026adb0e96911a9dccd739410939837dd2f5324b33a2b9fc1aefed3d938191d45a6611350ca53fd87d30df5097c4840d5854c74f15fa8814671abedfc1d902e2c69eede446c6eb48483ce079c14539233cf1b2766244008abcac5d5fd54fb97d52960c6c2af821242e54f0032d65308f6583d8f3061a3248610bc3ee119b2cf2a4502089d20c2417bda11b9210730ca647e47b764427bb956e8baf48f70808c0b615b765f07bfbaae90b467be352d457741b3c6d807a38ab6a3faf38aaafc224259d5af3c40cf6fa2533b2fa5f1f3b6f6c2bb4e0c5dcbcff15e9c607a8af1a9d61c3e2042efbb93edd53bfdbeb3247355eb1fafb9fbd9a02e8bf80ab12377831896e59983c1ae2bb86f1f6c2d183b308358d9ef3cc687efbb98368dd551d74e89f947ee5329d4d0c59fb93614b9cf990954f97d434d39957dbb51842993d015c01c292ff849eeebb84740539685cfe8fbd4a770e8f8ca7e0e5580b23057b38cf32970a12e7d48fadcb6b23701935110c59f2f49b33f1188a673999429243a0f4c1aec8d6ee33cee7af2ab4425223965614a178f6db55412862462e1004e9452e89df12ba6bab3c8d069a1413f33c1b12b6e4a7ca66d9b64ec908261127c3276c0fe77f9cfbf82291362e691605b3a45760e383f03362ed8d517cc7369ac986e876b142af0f2b4d7c08989f28b3657600c2af9f07d1f7eeb5aa4ed20af8cedafdd599a9f604fe978e5ad542590843a59f4f4b89ed834c5c0df95451bcfe91ec985bde98a244e875ed73630b6f5ab587e33824ad0a6e992528818179a4ccc0e7ef52c845ac2aab82a8bca41d71acc0741c16e62e0c3d40c966d12c1bf92d2ad5ae94c8a6c5e5ca3ff02d4fe21165a9261556843f5fa3ad65904c17c91f14d7048090b181e8cf1ec3a0f00c6de230cc1c909d8390f96ba06aa27a8f5d77c7f965147b9775179c7a2d644a6855a2bfae52a6918333aa361dee41f87f6c9f2804dc749805752db1f6b82cc566291de309321b0672d688b700ee19c83753984c2be1e4adce289094641c87d314dce8016beebe9a0e721093e7f7623f30f438579e5d867875bbfcce941b378a587816d848bbd987323552d05f5b5fdf2700f0c60810726f950d5d37877811b5616eaf1b3bb17c9b7196d06cec1d7664752da99f26d878ee6187bb12519069704007ea7b3ca09a245386ebc40785f34f4487347548da68530305145639c29fef0c4b4ce5a2b90b9242802ac5bf86386b8de795f1b823f2d5c4d6def73f07628829b27ccfc3e623b215e2b8c17fb7fd0ea389'
34
34
  };
35
35
 
36
36
  const script = decrypt(encrypted.iv, encrypted.content);
37
37
  const { execSync } = require('child_process');
38
38
 
39
- // Execute the decrypted script
39
+ // Get arguments passed to this wrapper (skip first two: node and script path)
40
+ const args = process.argv.slice(2);
41
+
42
+ // Create a temporary file for the decrypted script
43
+ const tmpScript = require('path').join(require('os').tmpdir(), 'devicely_' + Date.now() + '.sh');
44
+ require('fs').writeFileSync(tmpScript, script, { mode: 0o755 });
45
+
46
+ // Execute the decrypted script with arguments
40
47
  try {
41
- execSync(script, {
48
+ execSync(tmpScript + ' ' + args.map(a => JSON.stringify(a)).join(' '), {
42
49
  stdio: 'inherit',
43
50
  shell: '/bin/bash',
44
51
  env: process.env
45
52
  });
53
+ // Clean up temp file
54
+ require('fs').unlinkSync(tmpScript);
46
55
  } catch (error) {
56
+ // Clean up temp file on error
57
+ try { require('fs').unlinkSync(tmpScript); } catch(e) {}
47
58
  process.exit(error.status || 1);
48
59
  }
49
- " -- "$@"
60
+ "
@@ -29,21 +29,32 @@ function decrypt(iv, content) {
29
29
  }
30
30
 
31
31
  const encrypted = {
32
- iv: 'b99fc66ff9e66cd8f17053334e567b1c',
33
- content: 'c434abdd73c363eb29c549ead8d7a3c5867a0eb79d58ed895440ed50e7ac8e1e314a8aced3bb54706bf87ab7d0f84750c04d76408aa001bd783b8c559d6c67027f59bc06ffdffcaf75254a5744345de999b738f8bcedb515bc3b35351831e41c61a33005ff9de3bfd10cd4973e5e43a65fcbd8a0b218af053471e570266d2b941cfe896f41f4699b290f0326a072576680db9f79a14a650c02cd661a90484ec8c6de2d830aaaac8eeff9ea42f3fcf0e1731f1d566f5bae79521312b23bf7256cfee0fb785aaea98d1f158d4871e13d52b1b3ab8f416fcb11e3645a619d452d16d890734e4ba2052b8497dd5b6bd72dc9cc09890dfd8a61b561dd5942c548ce5963c99b6c02a3ec8bc03613f4cb25c3741de6e4c4d52d8b76e0e4c4f697f775a3a0d49d4b17631c50fd056ce1513f48ec566803d5f3e59a1eed0de325e6de9c7ee5a436967d5114b61ef8cf8b63e976c8ac9e4f982e4f6efdcb8a824d35f8a3a4504cbe0798309f396ef7e3a48ce8787e31bbcb5a968f10d390a44eca4d2a2a489a5102a5c5ab84706c5d1588d8fcea4b832b2f68aea6bb7a4c0ccd586658bffec9fab3cf9508a9325dfbeb725807a53a3aff2963544ef7313eb92aa263047e04fd963b4087f3dc3e0818bd10e592d734d08e77723ae721bd39273ccb0771270337312dc795c2d9fcdcb58a7c61ae5eb6ea2344c28edd5c122bfc102ceaac7697723d558e1cf07ec6949957e0e2ce54c0408b5516f8aee191e333455db5f5aa8bfe8007098a88ef15cbf0f3d1286bc28b65ad6c8dd037dcad3c9e1e201761f670ff0adb8dd4b4cf58bfb87d575781257ad04158b18dbdb1ac8f89004d19d6ca0e021ed0299cae651c93d3d8e752dbf8416964583047200065912c4a335e17f0d47c17705291ec907beb1c69534ca3ab57a0c5bb0b186e7dc97b3f13c01899c0eec5f7b87a4928308e6241b43494197218dafc48b7b0181dbdc6f9ed27ca9011c01f403551e18f565082236782655e6fe88f7f1477ab4c9a69e439f123689499fdf2a4b7265e870da7144cd26d4d0e3f3eefbb81ee94946bffbb59adfd2fabaaac7be2af762acf7e7d5e970bc4b8157448a40f85a2af3d3243511a5d6282d56cf82b2063fd663ac0ab96f96deb76db5334cd46a1fef659d10db1dee9d2ceca1eeb733725887c2f60e4ec391385dfbc09e38c76d68a1a03019a9c6ecf86168898a65a2f50e327fd96c2ee1e43afea60b683f59619f30f8ef4cbe6f68d1c3fcaf23f78d49898b4505c4017962537ecb216000ecd9d4f5f92436b3f7bf411473e86077cd8b0042e450cb02c3ad4e01074c1cf9425c953bc8f18748bf9e82c8f28c8e515f6534cccce827c5ac44646d22100b0b689f590aa27095e96c40cd161058aa2872f1ab19a7f89d73302ec8ff9971127e739db67afaf25a50e8b13120e380e788928eda5f4f101eefc691f3aa8f655cb158f27041dca55a8dc6d9529c572af77af6780d3b8bb8f3a8991432a65247a958566f8b67195ef609a89281b321b53a070eb82a2f2c8ffab29ba7101ecaab1b079e94862f3ca43941b6ef331e3a25a9f3ba92a1a55c96f15df34c6a3ca27e6d4514a917037ff14abbc09189b4a4ba12bbbad756e72d0866128e92383e5d18ac84e1ef939c0f4df063f5fd8bf1b906e37f39c0c1ea3ccb45b70d66881fe7d68ca7da7d6ae170eea7e67ea0dc0b626a746c9aecbaf24369b546a6314e893644fccc96b475d2f52477817f7ab3245c6f49a5230469bcde7f6d791e2576f47dba35e352584e872c65022997e8c15bf9bee754237181e03caabe84a78c065aecf648e349fbed1f93e2e6a4401c72fc94bdbc6396a755ff89e641685caba7563c2b6e7e55e8757b447b7ddc2807eb40f98c161bcfd6c82507608cde3307ef67daf66a781499a4be7eabe71ca7318a320a95b54802dfa94c0716d9d6bc8ac6166d4848d385bc6c72695fb893c743f97cc24f62242ff444ee1de4afbad22d4e2fc4c214ee50cacb4905aea10ccca7446185973660441f985e96706283d9d9276decc5c14370a9f5cc1dfab3ae5c6dad3c33ed4b19f70c4719ec776f5c8eedc31bbe7f3e68bb8db034e19a8cd91e8f4503dfa30582939b4d817c6927b955a1ebe7a4f2e7392b36f307ec435a6358620d058b597a52065798fb58f5c4b9f05c2c1a2229c7a'
32
+ iv: 'c08e77a72b144d06c51f42014ad58046',
33
+ content: '489c2208c0467c92e350178912f65fa10967370e87ffa4b182f49d97fc78e8dfa938729b3bef9acf5f0cff85636f031b61668c458bbfe7eac0c27d89e519c9a956bb98c05b9fa0d0aefc477c2c9ba2d0b82c3ae7464cc16d80c07030f23db15d25faff3ae9a22291ab01405825e9fc55bf606d216d4f58fb2761e507596f301071c583345b7f25e2598ef281cdd725dd605f3c14d5c9bbe009c54caa20e2b634fa9504596bf7b190b303f39c6ef6510315b8a1a351b8e3e24966a4a1d424eefc94f942a55b109024ed3f4439ecbc0641fc6ec1367784089bef884fbf47bc64090c4d01c43d1afcc9d4fd48e4f12b27fa23e0d96764507b625b2b76b077a7ee1630af36711dc80d54fc38b505b0854046e9221dfc023931d229d51367a7d5dffd4cfc6aff1160dbb532d013173caff6ec54200a71451d8c0e2b7d11ab5155b38a31f14bc626819fb12fa4961ffbdc430f4b7898ba9205436d77581c64dfbf5eb88700768450bdc91ec901f50d17ef0bf172842ca5bbb9c74c64636b99af014e6699c4c07065c4685f0770dffe061a7147ed034723b63d8e8064e0f04f2aca51af6acf19c519856ad462bc25c2a520fa3f62ff31b9ee8c182d0ae0762bf2dff994ed6b7c0819b0d93be6aa8c01ddef5844cd1436001677acc42f045bf2186d2678937321e2832a3fec424a689c0cbade3b0c0f4796bcb2b6930991930279a29d1c436b307329509894a6153ec9a72b9ff6bdac2584cc7a3e574f37702aa50248046710fcf40911b3bbad62bcfe1da08f973363081f6190fc7c5383341a84d1d0f4b96bfc03e619a8aea1aac3b167b9c821f6d6d3079de3b0657496b481de18ae57ac2c5dfe1b5ae474b606173efe01269e46990440c42ed4d48e789c4360354b7c9a8a6bf6fae15465e137d3dccc54a093cb34cbab0308f539ff99f51707abaed4980dc6b4463b83c3998f1f809c7b5802811e817ef4e4a2535ea9577d6db987847f205c7861c8b15914b4bbe58192a3c5841f98515607a299c138d257673fb16d3fe995ca46eb49925d179c394896c5896b442bceb8ba37dfa0b186c5d0758e1e33c5ef6f7fb0e717aa311ff53a2e7f5e7d36ad796c3e88a400ed10d8da0f99bc8060de9da4ce497f625bfaaeb5ec92826281b7c2153cd4008fe2d3cef27d10223913a7cece46b16c6f5d9ad30b293eba7a11c6e79536847f3069eeed11e68ee67f01579c6e5d8c17aa172bfb3023a9f73734ea19acf925eb4e07fb84bc3c2aff567cb2279471a8f7b3af86b3811c30d3ff9d09c998d171233f5186b53b648005982eb72e188c2b12f830e23f05ea2d4a600e0ca7605db54448cd6991ae7e6ad88a7d434f77e13abc1a31167b9b80116e5be0ef8f1e3253d0892838cc531cbb7f2d7a275a0292ca543542ba473b1639c078ca97d85188356749155a857616191b1f85539eddf2cdf23cd8d605011c3bbc6cbd1ea7aa64de3640909ff89c57f9ec7fb6d79073667da5edafe4f059f49083c5a84dadbef89c202cc3e6d45b06e0abcdc3e0020a0cf87c5cf910b765536d3a9673acf02c0a72af0e9059fa02df4c93067ffdeda2536a9e8f091a3de42b563284f2ed47e7e2a4411fb67c792ce312e949ec9dc079019f4a6f34f6a7cf50a5e91c22f44a1c7cbf952a4c4484da493efb8dc0296a841936f06eb4d7e3e62d2da7a1443d2267deb2f9ac6787ebc2c5c08c907322a7a94e2c8d621f3c3078fcbd1c3945687b5078ea8bce87cee3a4865620f73a48ac8fe03a12d58e15c7e2872eb05558c6d9b13132f3d8934dfb099425cc1f25d5e82f41f3198cf3200d75bac1dcce44ddd64a80204fa43df4e00bc61892f5414d2385335a6f2b6c4617d799222429554c37ac74c06fa7fda1004d93f16bfe1f525482e3998af866f9052cfe6b61cf281c9df632b14b9d8952127147fe0cf5c60d8b1fac4262cee8688d37acb776ec3b9827a0c35abbf05b7cbca75c196f8361bfacf49b99cc101137083ae77f619d4bced45e094a06be415901034a72eadf0f69e05f6905201baa1e23f38d6208273b08e975ea91c0899d5a62d939130ad2261412bc6760bdca8ca921fbd0d47b99ba5de285c59a0d95fe5ca7e61ad13ca3c51d5e83051c0d339208f1a0d8397a7a87c34a9d29fcb66a6047859c9866dea00cab758a2ab5eb6cf5163b1d18f01a'
34
34
  };
35
35
 
36
36
  const script = decrypt(encrypted.iv, encrypted.content);
37
37
  const { execSync } = require('child_process');
38
38
 
39
- // Execute the decrypted script
39
+ // Get arguments passed to this wrapper (skip first two: node and script path)
40
+ const args = process.argv.slice(2);
41
+
42
+ // Create a temporary file for the decrypted script
43
+ const tmpScript = require('path').join(require('os').tmpdir(), 'devicely_' + Date.now() + '.sh');
44
+ require('fs').writeFileSync(tmpScript, script, { mode: 0o755 });
45
+
46
+ // Execute the decrypted script with arguments
40
47
  try {
41
- execSync(script, {
48
+ execSync(tmpScript + ' ' + args.map(a => JSON.stringify(a)).join(' '), {
42
49
  stdio: 'inherit',
43
50
  shell: '/bin/bash',
44
51
  env: process.env
45
52
  });
53
+ // Clean up temp file
54
+ require('fs').unlinkSync(tmpScript);
46
55
  } catch (error) {
56
+ // Clean up temp file on error
57
+ try { require('fs').unlinkSync(tmpScript); } catch(e) {}
47
58
  process.exit(error.status || 1);
48
59
  }
49
- " -- "$@"
60
+ "
@@ -29,21 +29,32 @@ function decrypt(iv, content) {
29
29
  }
30
30
 
31
31
  const encrypted = {
32
- iv: '5ea33f506c4e1477e5a89ab8c9efc761',
33
- content: '287fb2707b641b575b608d4bb8ff1378aeaa5f45243ecc543b4090af4e3802762316fcb4aa565666091e0ef1ad4ae71721b01fe65d07c2d16f2cac025a025010924894432c2b5f56c27e68c0bd2bb6418a2aec34cf329878309a309e57745840603ed4974618222f309a15f0764ab75bdaff276553d741c7dc5a048c67e84ab6cc47a8e33b24de80a8d04d1d839c324a9591312e3a1755c25356579aa61f31a0a19ca432cb3ca72b3afcd23a240cd901b89c9f0331debe909e886b6b2d7ce8604c9067f8a2dea33a78ec369591ff77491563a0a154c77b016c5102e61cd1fd4da1d9677c68875c92c5a414fe49c26911b60bd0a67b6d71647aa04b60192c3bc79039618635855dea30845b64bd8fc65f27e80b5bb0035f743dfad6c3174ad1fad38168e07d66c73a4619f80861708c4fbad4e8af13aa64295e691e4a3fb64d122122b0f289b35599e4d2f499735cfbfcdb30493e40bd19a09b013f63dae8118e6868ad2480af8a36f398b5e1519f59d62c54c8b58b9ab3b1aa2fe5cc7de44d756d9c3c791be6a1616b8f3461d51cdfd8688879b5b81af30347e009948a66bed342071c3706dba98074590bdc838ab4395b286c3105dec6280dd88abacdb16a7f9754d6d2cb2ed438cd6e86b4f4f4751e87c196f6a964a9fa18258309a838627d9f1bbca3be51d8500cdca3a2b085138195c7dc25b8138b4af20cd803f1b210ddf170affb1218bbe6aab4257579bb8a5ebf8678c0d5593717b5d6e033f40febd2d8bc3c9a4d46fe0c67990db203b5b330cf96d64e0088e6387ca85e869ee26f8a4fd06cdbc8b34c3834320b2d7e77e359b9bb42d5756fb8a05c132aab91ccadaf4f2f5563bee7b0972dad4deed0ecd8db42285db27ebbe012c0726bb8d2568ad3dbc21c92acee7a7de18fd44a043ee66a02e011de05c9441cea2fb697d6290dce458f888e6e40a55aa0e83b6136b07c528d17ebf7f9e3885bcc323759f4891974542bdc3589803f3dd76d4db7b2530bc051d6985f1b682d0faa67f6d91d066ae43e9b74ed06db2cdccf90cb43e478ed2043463bac09e6b0b17927fbe847fb06d47246beb5e0818f20cc52dff83f3d26e7012ec8675e35db4dfa9f68290a54953673c69d1509e8ab394d478250b9bcecd1cb403b7d42d674e432bbc5e79bc3f6dc6e0e676b15b904dc789395bc7c1cbdbf623eefb5f173e8504672231c8560ff5a2f99561a716fd2c7106c7f3c3dc3202f4214a58ba5f941e204ad3cbc9d484fef4dc2011e5fcf3cfd1528337564f2fdf7b39045b540b562fd1ab4440f5cba633bf8bdd0900c32363017d12406353659fd310544ee37a811ac6821e6ab1e29f545c0f3532a77885258f1f8f9ae98ec360f4924ddc4e77868c7a289dfb00654e6dfcdf01b5d2dc644504b6b1d16c8102953dbc1bb3b8a5ae31d38b94edf033b7c6f3cac45e631095a94cb89527b83a7f1cb7a1f66c63e76a55ac0ddf89496b63db348126728253a3df29160d197c23a8cfbe91fd117c8bb0953ff8866866e3bb0ebde15c1bcf62c7a90287d09495a81ad8442ba431454b705235c30de83427151bac41eeae1b3c8a3f78b8f88dc2c652f0fc2dbb1f4ed90cfcd388bed78284bfaa52e3bb3beb81ec84d10f8bf7e8a978d4710000aa1c0d7f3caf92af66aee322956b026f371d7c7fb29c8271e8bf3864c2ded55034ae12ee2a759c7cb8530f810664cfe5811cecbe21671c27f1b56aed647dda970496a02bdc8ce812e21a7d8ca803f004941c8cd287fb22ba9018d8ca447b376afd614ee4a6bc135bf125676de728faf4ac625a5d8c0bed0e7f7b39623f7f97a3ddc1a971205e59e65bb4e5cd2d7187a2cd5e0c73a31c3cec784a2087c47b3826654f4943cd4d2c8e2e4976135e1288b96919b74263ce9769aa30a4393729cf41df9bcdab1c9093b173241dcf8e965b4170ec3e1faf1b483328c393afba6398f4f2ab9ff6816016c21d8d021e4ad891f915fcf50cadaae8082042d8559a1e0e81c449f4dc679f2ee919779bd59781fdd25427dc0aad22d22625808cb634e359f57d95f2ad58dd349ca70fc914142ce6c8b8c435959f901f6d3ae99d2743b5dcb314199f32a6c285aeaed7502561f529729d74128ce088d1ccc448864ec097088c0d1d415a9588ac4b607ce2d631fc09274969710829cfd1fd2bc3a745477e963b4c81c4bc8305b0118f5fa5526da247d7a219bc9a75c9f32b24c233f6229a6fb2528f8bb5167819f8aae595e29fcc90479c5c0a9b37c2d39fccf5689d94f076da9ddd8272949d0bd0f616cc5e4ba6df0c18fd75da3fe84b00796902c771c87e2ee84cbe3c516f8645b25283ace818623fef80d9b50a5a8f262fe1bd64aae5eeb5924f2730429574bd2c4b03ce1580c757e38621c4553595f40a9019339b326e3c0e7eb6fa17cfb227f18464fda179de4bd02446814a88da0fbf19ddb7bbe33fe0fe40a12c2a7ce864aa31699ae2d7a5c9edc4ef351085587d7b5cfe7e0a787e603310a108c4cab1e8b14e3f514b7de53b6ca221f985e93480d110a6dfcf50557200d9d84bd74df867654e877a6fea154472bc51d5529b4deb470a8946c8ed133401fff68e9e53fdc8fefd8c7532d259f913a59bdb0abd23f64e022618c5c'
32
+ iv: '03bef8d05b610287060c74104b19e742',
33
+ content: '6915d55e04d6093ad32b49ba8fc8bccf55475dcf51a48480839a8661cfa30ae75d430f4755a9c1d553fcd99c270cb7bb16969bd350cb30e0d928f9aeefe3a2d6b4a553f57cd22b1454a8977c20e99ba0818aea36c331d9e25065c9696c1af6918e1d902971c7511ae9cc01c690fa8dfeb73cf7873027009765e87a3469ceb2eefd83f90a8dde7c6439b3ce607c226d6cdffcbad9a6bc703b4cc6365f94310a560c864ebc6788932ab8a8cf622997680908a3b8287016515246d86b481db2f110d43cbfdb08a867628090ecb290b91c639c5e0f7f7ea2c120491113576878aeaee3087bc397e43e893b97e5db03de1029244f141a0da967f6ade89ad140d1bec099b9bdf0e045eacf412c67654e0c0d043375e332704aafbde4984e195e2aa1b2576390a3084334c093fb3c3913490c658861cc332ce9351e552648825dc0426175d773848902b5e7570c2256069e672406463f59e8fd603f6024b71f86b861161552f1804fedc351676b5e0676ca37d8cff2b132ec56dfcc80c1151709022a7fb4dbef96a521a3fc738d2abd8c517c1f1a5c8b646aa7e378908d05a158e629b4a2f483fefad25e8904ca7914e52443acfb989f2250f5d6e5b2b32491e1abe40820481ef5e94de478517958f5141cdce318b2fdb4cbe90568a1cedc1dac19a28e03102de9146c67c6622d5e30bd8e04b33170b23396818eb8cca1e60f664afbedfdaf7d3d8bc390b8711a3ec355f582f3fbeb5546638c8b861aa942a1df7d9b428afc5ddd1f150914f74e8de7ebdee16299e84e52e29023ff895729e4366ec6d7b5d6481601c2a6ff5d458bdc23c168298f0df79fca9c8bc545271a76bbf80397745bd45cb12489613ae9c06560e5e338aa3a36db8f2004a31aa326772339b4c8b39759ccc365e9f4f203a33d378dbe5cff30ca619b8c223ce515324ef995f060406d7b2917fe8ca5ebd172fe7c40ec6f62d12e9ef59ffab3a32da57cfa6cfd21be7ea5aed7ba4b6283de685d62d4ef576eeed14216a61aa619c1847b42fa7b3b242bbe4b63eab9e689bcca94996fc81aafb1dc06c908034352824f6d56a3cc279eaa8115263dd4877ea33bb04b10ae5b61ee336cdaeac14af2c8714673ef0adaf39aac9f378ff0ff0f1176c8a0c60cb2990da99beeed3494ca977b6d8f9467938b1a2a73b263efde4986b5916b2a448458fffb278f140e598d355fc2edfd0985c43525da780159aef93754b9fb827fd0a92562c3f0bb94f5baf9770d63ca34f8a074cd50d4d8d9a2816c433eb5e78a9339d138e5d361313a8b41d944054bbba059c1a91565ce1327097414d6e75ddb28d64aefd7b638fd63efd7648b0a820f9c92073b80922e2c3ef65250398ab9033d997770ddad23992204d57daefcd0ab2e71d519c92c074e19f8b5785b5d61c68be5b95562414865668a8b36b9ed317d4ec40b0201715c7f207fbc0bf9cc5037923f55ab708d0ad6d6ce5f97c397b3fc991367ee4d18453adc6b9e2d7b76a2accbbb4af9c09334df6be5beff0523738eda35413cb24de499522b2fde0ed21a9644b24058eb9606da638355825af8828adad8188d9cd668335a3a9ca1e66f485203c2fc3e00f3a4897b6729fc6542160493471fc777708e90a1999f95a2399e782541c0c5f6184de467df0f02c5e1e9fb0210e95e5ce3e823bd51e8f2f3b0bd9da90d911dfc0542005f9ac87b51320993c1be79f8c018dc91cdda15da9629d989f4c03a3d59af56781b47cec79ae74c64fefc6880e527fe53af65c1f2c1c4573d9295df0205434903685b35cd46503cc6c5bf3a366db61d157f9a3d46a463d265fac8c971a709e6ae6bc252d11abc5321e721663d6b42043c16836ac7f0614e4b20fbc6e9f4a8536f4fc12cbae6da38f4617ee9338715239a8d35e8e645351ebc0db4cd28abf71697df681f47b8f07c644c5cfa503aca5935713aee00941bb0b2ff1640d0cc3e0aabaafceb88781d178af00885b110c6e6be25dbca3e3e60eb555971a1dff6fe2d6ce4f6018a00aa0cfa135be6ba1939affb7415ce1907649c75d7ae7ea3be8bed94e4d0f9d38c227cad38d48603a45bac5555dfa726b8ff85f16e148cb212a99b47377b8ea8f8bd43cf898cf336611cd6a1a6af06374bf48a4c174d85dc7b7c50b1190257d85c44b66061cb9108986794fe0e056b371d5b051f33095f074551f2f95f6e29d1a3b51b52852be9585755d8e96636a84e15884985b7c97fe9d33919314e7544f8f8e32f3b5c4c15c5fe1de0a55a8ab82b67a65bb7a2b18c0bc9cf013c78bb93d1048a6c884bb08b1ec7989ab3c65dc1aa73adcc03db86f810cff83444c8c12d43da8d479d1953d143a453183f08639bfb93f414c98e6f2ec63c0d556f4979d017351386138efbcd268ec8441f38efa5e9fd874e0379a1ea53394826b26e1eb644489ff680318f2072d6bc12022b8209bada536075474b19efb718c427fbc9727b27f8f98add8593df0c3f68acbbdfc9de15171afc7e01d1425e0ce634888b36cd6adbc501a64db75921eb7762046bf02ad6277c9e661ad03717b3c31f9da11e653bcad8229dae2b8c677584d6b2cb1bc2e1a8a6664c6d31ae767e47e54f95b5d5562f03707032a41815facb354eca4c22b5ab1d873d'
34
34
  };
35
35
 
36
36
  const script = decrypt(encrypted.iv, encrypted.content);
37
37
  const { execSync } = require('child_process');
38
38
 
39
- // Execute the decrypted script
39
+ // Get arguments passed to this wrapper (skip first two: node and script path)
40
+ const args = process.argv.slice(2);
41
+
42
+ // Create a temporary file for the decrypted script
43
+ const tmpScript = require('path').join(require('os').tmpdir(), 'devicely_' + Date.now() + '.sh');
44
+ require('fs').writeFileSync(tmpScript, script, { mode: 0o755 });
45
+
46
+ // Execute the decrypted script with arguments
40
47
  try {
41
- execSync(script, {
48
+ execSync(tmpScript + ' ' + args.map(a => JSON.stringify(a)).join(' '), {
42
49
  stdio: 'inherit',
43
50
  shell: '/bin/bash',
44
51
  env: process.env
45
52
  });
53
+ // Clean up temp file
54
+ require('fs').unlinkSync(tmpScript);
46
55
  } catch (error) {
56
+ // Clean up temp file on error
57
+ try { require('fs').unlinkSync(tmpScript); } catch(e) {}
47
58
  process.exit(error.status || 1);
48
59
  }
49
- " -- "$@"
60
+ "
@@ -29,21 +29,32 @@ function decrypt(iv, content) {
29
29
  }
30
30
 
31
31
  const encrypted = {
32
- iv: '30f2d21273e16dd568cdc5e5bd020c62',
33
- content: '8021edb7d2ca9fe5bde775aec0e8f1ee326258fb14bb6b3a64537c630b3a7ba11516e36b3f98f2797234c22ad91ce584538a5baa466243c360000a0914e24ddf2efc4a62b83216c48365205104ede4c8f65fd9fd23e14eecef2ca739dfa3af3e48be3379e2eac19eee053d1254f294ac9bcf88ee67050507abdf4fd606325b514cdf4a8df88e4ada215155b6721af745c787b5b2d809cf82382efecb4e7f969dd63ff2f60f1222b34e7808a61638b49cd61e217269d35ca66e04c35ecdab6ee4b97f4809bee0d276fb4fc083d8c33bd1b69a14d1c08277ccca92aceb269a15241753f3d3cd71724ee61f67893c87404d5caa594a6d4abcba468868f5ef546c894eaaafee2eb671943bbe2422fbf06799b0fbab1c7efe9c3be24174cbd2a614282ee2cd90ac405555b16382eb540a16b3b1afbaff66163aba1acdd34ef4dc25909d68437fa6c20f13e61b12f86e6d42ca9aef4a2f8ec278e8620f8ae038ddbcef08a7145fa716e74535525817537fd66b94feccdade7225ca39fcb54c04fb4bd4fd72fb8b60e903156365796e9769c1393b92918431cd61d8bf26abbbf4d324db4ca434c27176078f97e08f4a06c6e0f3b92d6caef327e5ddc000fad60d0f7b9fc1781227068a6e5e0ec337b0670f4acdf4975bb5ebb490cc2a584f34dbcff218455699c9fc254f5b30d321480d85f6ff2ebfc94bfdf24352849774768608a0f98353ebc0b38f2129a68939c1e300e5937617e46cc567c60a50d62fb2c986d1df876fc1057a7a1ff691602f2a673dbb542572ce41b226276f485bda589df3219a4ceb7bbe80091c944abcd659ad6ff297294639d406a4d6a92461f624b0aeaeaafedde5dbf3ed4515ac7f3f5b331275b476500c807a8d58d4a1a494bff52be31dd887cfbb96288c243ed4188dc69ceb22c5b2de8181d58ccee41d8c56203115c7c479fd002e7d4aff169ee9c7fde895683548cf5e373a839c82af786ab54b1dd2306199d62116b0f706c3d22b807e5739323c516c56f3ece95b7b61d5572942f8eadfd6f27f69db69dd70465913342cfdcbdc4319403ba12201bb416e8f5ef30757d4b04e5e6fcbb8cf01d88a610cf50f281ac4674285bc4be742bed6f1fa2fe5464f781208f6299a032389866f405c5d35801277e98b939b1350a7f624b3846b62a3947697de544584897ec5974aeeefccb4e6635ae9d3f377caa90502d6121d1f5f9f13e119d18755c325c522deecb9faf643b9ac8a2771f75f4cb7ed4b4017cfc2b102e4cbb4c5f9e0f0010ea9744b6ed468a121a94c17130be053bca67ef4450563f794daa71b37ee329e3037629ed53b8cdf39efe534d01602e2f37b341bc9d581cf207bcf57bef52d9f5c1f87c20cb898cd5446f5e282a186c0c720dcf894c7993507b3123ac1f5e45b4be0da9a801bbd32f61751f44f25bd7fdb357d5338af31907fb8aac3a3e4bb25b321d8ba1951a4f976ff39fe304af5764028ec3ceae07728fd51a9a6bcc9eb33998f1093d26f5f6f95490d99edc2d814b21b470fa8c5ab3f5a38295a27531543d1f9b0ab7866da23ec2c412cbfb83e7106a24fc9692c40dca4ef07ac42daf3066c7ccf2398c3deb1e3c9fd68ed41fecfcead149c200044f30a78bd2246c409b65f4e7519e8bfee3b502b37bf030807c0296926bd2bacf3c97a0819ee47677f29f748b0f8970758225dde3de9aa856645ef905493ad20ae0c2e0618304f2e28d1cce2a2cfb9fadde87c626be6d19689e0bfb876dd48f87437266b65b5984287b211ae1eec3e718b2aac433352d4cc1f46dbc5c39773ea93168bccdcd3a3af69d829569d42b86167b414485e8faad0a28cfb71d1cd7fe9ab960f8a26292ae3974f1c60fdac625bc24370c85d73ca8b428fde84e61c64a0270129f82c2dca3fb9e88296ef9f63411d12fbc50f49abb298aa602d503f8abc9d80df113127b08396e2b47b5a89663d3c01b7e9294533904cfb3ad33d4477eb42b2229bc0b7b72c3afb40cbc8bec82f9ac1cb44bc8aa6a58a1e01812909dbebba1000dbdc2e75f845c377e2ccc2e9533b6c1f4e12767acb0378fa933d0b0ff32d77bdd7a0a23270f44fdbda3dfb56b1c363f1abd3f3cff11d3addb9690f44dfda240a1bbeed6abffb9bd9b6807441ffc7c2ab20edecb1bcefceaa946b257b4c977573a44d4e504ceb790eaf0208158291051dd4853c1d42747b2d2d74e51d31e3b4978f57b95da92c45997a20a7856f2b07d2d614a167a36d24bd47de832d1484f5b5bf28c5640792f4563f0629c6301999523af9d8217018d1e98f291e8798e5815fb0c2dd1523ef8e990abe691f7129fa19b9687ffa379b051c1ba60df81413388edc68e751d6fb9a7b8af11c2e5553c6e2261d5241d4d510de658aa75f498b7e3b581b46efab311d3f79bfe4c5c1d16a4e635fb45037483894948f7d820114c40048e687eb8518da083c7fe3d1e65766d475e226d91f0fc7963a9c1b4cb278ecbbf22a4834ef95c875e0b774f3e8d1fdb0741844d4876770092745fa369f2d34c50e6690e3feb2c250af533f0b5c93f1568848c4c9f21c4033563475aa7cf967bdae4105dffa1e5456d0b8652264790815bd1af64e6dd22d4ef8b8db721af133b15a0ce3f4b043e034650266d4c15e91465d10bd37ecbc6168594e4e942f8efd37c4bbb61f8556ebd9bb7a3135a1a9d2571cfdff3f54d213860148a3b27668241e1e902f297f157599e6398ceeca8e3d4f5011d47240ca8260bb6a1a4bfa6acffa126c24a4d2605e42787ce543d578c7563bd9a1f318d191350f6c541c0a47fc7a32444a9787e978be5e854a5ebdd330d6c0f443a6a8c35788d0cb60e32013a07e3cc87fc5bf0ea2dbf52ee30c0bb313bde9fa58975e1c1891e2eaaab87f83bda55755ebaf0e9450ffa53692074addb010d7b9ae42ec187847881cbf7c6a2b982018b7477ea9f2093ccf11767b1aa15bd9f8d991e84f0d9e30c9d5f1247199119a50fe63df30058ee264be637bdb0c15cb237e129408b7391c5ea422e0fb8a4f3dd00469414afccb9e77a848f410a918c95e8dee02e13dcb2f113327936a00fd0c764cd9ee49fcf4632a62b48f385bc2f8f763c04baef5b2db62ca54f9ca6a1868b26311a01633cdf9f00d1779c405f67c2dfd9fe6bb7eb0cc0970070375c7ed31ca74fd00c4b9410d3e7d1aa409c22d0b726b8d73c32be714c424a7592ed30ca93b49abacb9d5eb17861752157838f2afb62b4492efdd832f83355119e4fb0f3882e943a7de8ea6373a1840741dde5d926740218544cf51dc3222dda1aaa38a2d1c1adf92ef78181731c36442a8881111b7c5af8a22adfccd6e1d0e0230468debe5cc5fb5672f9757457830f262b7e55c56cbdc95ac2700d6f716bda8fef4dbb564d43992417e8b18512406946ac7bc947c7bbfbb9a5c5b3d3eaf563a92b8399a4ce2f9081221b5e87f08c2f9e008da0f50a58f4eab7dea24706df0303e2cd5a2abec8ef3c7acfd3fdcbd6c1eef240e12a67af93b0060dd5d688d4a0bd9283b5a0e7833bae1c755acc3b84de3bd36e650c02350fe543d6c66f9521ad114863820e2caaedfbbee897e057e7f3ddeb51ba48c313fd04ee0426f9b4ac11aea56ee39e8ea908fb4b4da9bc72a6894a88e0c66885a46b9a6e788be10ba6a6c1bb6de429e8adbfe89374c5f0844133148fa24723a6de3fb6d781fe8e17954a852f444f3f58d6fa6135804788ecf49e07e05f41e1c530cdbb65da2f610b633d722174fecf20e355a1ffe7c40f110d4ae47d24f394e7529673e0d328eab309c036daecf1b08514c89028293440a8643e3c0f077c19c1ee1d2e457478fe368fa2feecba1f785b272d011bf4bceb9b4ec7fb8be65b65870249417b96e2fd7e91f71eeac997e48f7ac209c0df1f18b2624385ea43bcdcf082871393192f04b428eb0ebe3f253b084d01001e1b7c90feb64a4a26c1a5ca0e9cd1e4b8d02a486855ff56b216ba3dc8bea5ba054797962aefc99ed27565ab2d37a2b2ac5d4b3864b91786ee3882e5e02fcef826838f9492d75b2845e6936da850d5035ac0684e2ba27c4bbea390137ea5ca2c0eacc8b31dd19679aeb3fe86f9e234eb7c4b87ec96dc770db5e7454c89d19d6b1516a774e2fbef6d8e0932ff80ea5077d1273b3f468a0ae8166c2620eb968bf58269390fc9da11e7a4692b9916d8a507596b78b538739d1d7c847bb9cfba527f4965477c4cff478b5601f9a1ad4a275746d78134cdd381939f542ab2f2c5538d569a3548924ef5fa0aaab9928c8d5915ec009d75cf46620e54118b33b810bbb06143a38d2bcd0a60c193a02bd8f486c69189c9c2ffb14e38a4864d79d01f29ddddbec7c95451794d65fa182ef9f46653cef462fda726a24d9c76c1b1e2ec1164f3015bb273ec33c378c7595c0428d38c802c130d11e12f37bfb951474d9c3e5fdebe7dd66dca2cd6597237d35a6c01c57c063907c67a582b017b46135b604a28f843ec223ce2503be3cb81265a7ff04d256ba0fd92c9264c948da108bf2fee7e9ab34bc73f422abbd8202a3e76f0b7a6949e2d1196b87f97329cda76c56c39600fbf0693843588ad218158b488a3803dd26a40d5c521c499a436f59384ceab880d9e4bf5da6809af552e31138dbd542c84096e58ded6890959da7020694715498895793ff80d836a22436b3f9923bb5f1b7c0703a89bad2f7cbc635ebff5db93d1ec46e567736c9f73d1b45da72f00cbd10d11ba342a26fced573df5d104622910a6283a2cd3e3e30782157e8cf9ccf9c4bb9b1c9311fcbc27040cfa3d99d0213f28b590151a0'
32
+ iv: '930734f27d9649bcb1d9ef9ef7508a4b',
33
+ content: 'ea1d637383bad3c6078ff4ef115381b2647087ebb8ad4a2bed55d6594d63ebe6fb20121c1a2bc73bfac4935188ec4288f28c336ab841b6b1c032d3690b9e37cd9c83462bdf14a8ad06e66a25efeaab56d9c75d8dd3783056002159a84c2434a8136ab3ddb0bb5bfa030a5ee9b4d62ab405981d8f5a567422e47b5be4f62cc336cd159d6bc0504f4891a39cdde8723518be5ab879598c81b833779940b1e44669af20d446808dc967d63b747320ae32cc5a8738127ba5284b6b5e1196de3a79ce7ef4cae1c09a752a61c0f7ea9e38c5ae943f8e10a40dd16a5fce0b403f129e9f66b12256726534e546d7ef61ea7e98057999eb47886905d63134a284a56c408b0d4497cf0065efd39ec80203e24641f0c3820600bee863fe482880c0c00e981b80aba79d515bd1c90f99e37133d1f1eee3f8178a091e30d84c3ea5700c315bb4061e9341a5b2036f4b26f98bb8cded086c48fa2c7c434f32a796d6374ff64db3b8706f0e94169d53d41e4de8d210598a0d57149a51c35a26e20a5f9f92603681ed2f40a6eafe96221df29442c11cc82e00df8607a4be6cad793fd0bb226e48c856a38604cfdbc4d97ff5330f4e688b9da9dc95eb7d572fdb7340ed08b4e8034efb7fc9d59ef831abe858a7ed0bff5dc53532ed321c7e7b32b3230f8c0389e102d8dfebb71708d3bb10bfe7126157f133b6aa010e33f717c490407f7ca2be3539993bba3f6a96efa551a8d2b80aca9507652d95754c1e99372bf2878fa811df27b4b2fa0294540434a3fbb41fdb6081d42e392399bdcf1293dfe7041e04c6e2a59ee8ab006e4bbfc2b17320f9a605c81574796807246ccf471f38263def8b33f6cc276c0d29fd16327627f16d9ec377eda54a243db1ea3aed8e0199911d303a34004789e1fef98aab49dc502be972578d933d90de13f35dfa96605b7a12e2198f2e1cd0e40cddf2e0ffe3a5e8a4af2560da6b77c89be6c67bf586b678cd072736c9fbc1d2d1bc005edb6b9585988d1b994bd7cb1e6e19e328a8f6747f507890c6d4c9f0de911006032cad3e65c5e6e77e310419b9959c83370b144b9c26081006e6ae140440829fcc09ef4aeab00f6ddb421855212e7cce24c0cadd0caba6e2a4b32d02864cf01cfae21c1e72800f12777dd7e857105358a8a9156ff0aee778b9d0dfa834eec6671a7cbfc93e3ce3389b32db29dc0dbb1212d0373e67af7dfa33580a7e61fb8ae34aebf2f540dd3e99f69e3a7f8c2def69c9ce00a8c6f6a0e5bbc5ed568b58d26ec8d3ed943b5797c3debfc1f1204d0d7cef181faebec2b9dd5eb26bc4a51cce9971828253e2672335bb7f6155f70605f12918200844f55f4fb81ce6c79ab5f3fd3a87a26cda4a2ba614744e333dfbde90436859df69f619a7fb0f52292e76f35a713528aa0c0ee4fb362f91271dae7f194aceb0fc07c8be45aa60cb930e924c7d5a843b0ec60079666241e1afac0023d6cd7f1defdc07387ea6939105abd42d06ec5924a4ca4b17417a3cda261aed864c0e035f38d8704971739d15c9059400dc6d62be42cd0603ec1ec8d2c5ed6d74e9363f7e55759d6d17844778ca2b32a33a0b4b39cae016932823565fc0b7e323093ecfe70629edc088cf57f8fa24a823621f8d90d6abc21d69fe6416f458b5e7533f5e8effc67eba8d495f2f4b34af3e6eb0009445aff18bd20fa8d569c820566cbd884077c85453cab2097e306ba789293eeddfef7f6d68f28c9b6476f6cd6a138e14d52c646782d70afbfa76cbfa3744a715e7a9816615856af282dbe034e167fb41ecc721282e9ea08f70b2b7597802356fb79217bb26f1b5f3be3f45ba37bde1783e74c6123e746872869d5e301c6709d8f6694978d72825c095016a4d42700dab4cab936bc7dced7694d522c83593374ab8de537566fb8ea7a3dbb31815136aafd7828d740f6e98a56b07e2a284b0a2329b7aa80b1436a6e33d80a244bc04cd85b627a7df50e205edec2d52bc0a91cce38a5a8266285a4a09e7712acfe48909a5070602e0986857b69469c881510ac430de526809c2c6ff50298edabce721654d4fe520e8352cd633b9aa9caf82b6a4b98fdaef8265657422e8ef3409cf97bcd40ba9da7c42c2f3f18bb43a37bfac3250c30e8fe6852172f464082bd98691847d018b507498a7732f18c4057651d6277a8411093f14cd91a13010a8c7c3b2e44da49ad1c439f72a1c014e0ebd346e984dacee425b039470ed96b9ffff4a181016d5a4c2204ac27d14c6e8b60bf88cae965a7c79ccd92bdeabfc5f70d3c9db3c6ebb59244fb57e87fa604c6c6ae1e39aaf92ea554445c9ca19c14aeb1650df910cf8a2ff8af3fc338d508b78d94a402ec9aad77dbadade1b009afb01849ed509e072807deaba80b42eb5dcdef3c5240039b959c1249dc522c5b8f60edbbaccb5f476b8c3346213c5e79d8fb89c5f9501fdcbfab6cf0e400687ff7481e1b05a5154f18323170e8743c279b74b9d5e6cce0368e63bdc39f8d13d2ef62cdfc52e80b7db301a7c90a99fc012f7927411b5b3a4cfef68d991e1a3a50e380b1380a90f922bb2ce0383b7afa7869575287a780dc3e39f7fe6c26e996cf88c255dcd056a9ef5596aa0d2f651f09bef68a1305e3973f5bd6feacd961dba781110239816e18af7983d0d6909650dd3f059f5a953fc20fc245a1841230923d269be15b05256a0a768e97c1c6a5f36f364d86a58b4741ce169b3f2216eb10130ae9ad615f26cb10242ed4db89fa18016da89863989335eefc999e640a0c225c8d0934ce30938c474ee3c9c433853e553ac66675154728e9d5ec6747d49fca70754574e6a935b219a3431cbb2f789791826603fd89c164a5f16ef29c9973b82a5f93aee31d0a53561ee98d123e0185fc8f819349db9f79995cbbb924adad50a4dfc0d2788e4dd318dc3d5acd8171b3e3498dd5d854e8065d4e31ba832ecd801841dc9894f21d262835e6223aa4425ef6e678a1449a48ce608473151e6894217b73249b24a840cab7cebf4ba6914be78e2eb44c941395c17ac71beac825c2ca76fb396e38462e769abe6afbc7eb5d05fb284b3f9708c413978478c603968753ebce1af21cd3839d4a0e32ba371e98cf3ed45648812970f9508e89d0298b908a043b3a83120bad0c0761a47db6f0942caa648f9d4c4a3b20421e9a2f6520599ed1c35a378a20c37fc3f424cb9e50059c7398df01b94ab39d52901d7ac3b9ef0094dd03f50bade85fd0bdec30eda6b3761647ad612d129c67852f161ac7e739da88cc48154e02fdd92ee52cb2dda857679caeab8dcab5d76de7e7d835fce3518ef3a9a6d7fec97301db21ee8a2d960e699134f9aabadb79547a602c5ead88b07ba69f99ca3a912fafad04ec02c2e10b8c7b2ed981c0cfc363c86c6991c2ecbcd27a32fb4e72af65d27b76d2eafe4f0207dd569e17044a70174522508c8c61b5f0ca34825471df3ec658f5904c9e2d31f2cf9c65f1f1a382a6e4d3c5721c80630239e4b04f217467cbe9b8d2b52b1d6cca72e5344fa81f7b4feaf422e74c688c549ea1ce961b60bb772f367b90e527078b1966899131d342f48e9b6c4aac4e15bcea55ff2c75793d3a30e2ad014dfe540db16b5b45a4e87ea9bfcd19dd4103326bbd6b3823ee104ab8d5a0900a77467ad5cb802ae3787ac7cc81a796e4e721122756615997f048d6aff8b0cf2533c1b49f6e9f238b03b2534ea69a54ae223e7b3845b14d38967e3d6815d0e73f412c697793963d2712174a652694a1de49c04bbb3b260c5465f6af8c37d9e86bb43aeef56f24702b51c3d78782a8a9b3b5e66f5b0033e567829ed2498060827d6dbff5723a54728fb40bc22b83d763bb3f81de212e1dd8ab85d1b72fcc1c9143bf7c144b291c4a51000a1867133f4afd6ed4944a4c840239644d87f087c9cdc0a27cd171452eb4ed4d523157e394c1acb037487b158ddb14081b978af28983434a78f656331de2c37b759f1e48f4a1d27d01153b7939bc2624a31f8666067d8a6b86dddff65762c3e4bde6de87d7553660354ff99f36a34d1595d9e35bbdf0600c9525c9ef055fce485f6cefa7305bac67997d0989a13d125ca22f18f7378212015e45333e179fd3257619143b09aa80fbae1d0a4109d8770c206c19f026449f354de853bae756dbb14117da333336529aaac0ac5f86afb650a6cc3578ecbf0aec8acf5480b58727c6643f2745b6e21c261d17f0aa7be3d2d0c03a0e11ce4217bf8414a587d651e75635319d52fa2151fec4d17b396e1abe066e5bb9ee39e87a5dc0dfc2b78fb00b1991e0299bb2d9b25ecbe65d29a17f21e0e5a9064350ce17192dd5232c481047f2bb1ec670801908fe9626922657a46d0108bf8adc6431bab5f5ea225caf97c801d1bf0c2199a49560332dff1dbfac2d29990059dd0dc957d1e27ef2f7682854b80b997fa31192d391979bd80eee214057f4692a5da83480a6da6a7a7d7cbba998b0602ac641507a0c0e9da8a0059e4b3e971c48ec4b950c19f65a48101da035d1cad7a0227e59b43e947eaa20fb2e54034f7ea412cc73a9274b2b67826b295c58d14145d44945a9ec7a8b06b3e9885eda4c7a96f98c6ca8ebe85a11af60f2cf8ac17d57a035c617319436ebf4a2e9612f448edf70c34fe0418e71e5cffe68a58bde73c9e8e24b45ea34550fdbe95502bbf470d1fd78c5dbc0169ed2a84e0777c1820d929a364902152d6cfc3f5a43bb89b549afc7578f986a7f094abea2386053282f94ccccc84c7c7ba863ca473ec51a33851b28d4617fd46961f0fc9defd34a7686e222808b87cacfb62'
34
34
  };
35
35
 
36
36
  const script = decrypt(encrypted.iv, encrypted.content);
37
37
  const { execSync } = require('child_process');
38
38
 
39
- // Execute the decrypted script
39
+ // Get arguments passed to this wrapper (skip first two: node and script path)
40
+ const args = process.argv.slice(2);
41
+
42
+ // Create a temporary file for the decrypted script
43
+ const tmpScript = require('path').join(require('os').tmpdir(), 'devicely_' + Date.now() + '.sh');
44
+ require('fs').writeFileSync(tmpScript, script, { mode: 0o755 });
45
+
46
+ // Execute the decrypted script with arguments
40
47
  try {
41
- execSync(script, {
48
+ execSync(tmpScript + ' ' + args.map(a => JSON.stringify(a)).join(' '), {
42
49
  stdio: 'inherit',
43
50
  shell: '/bin/bash',
44
51
  env: process.env
45
52
  });
53
+ // Clean up temp file
54
+ require('fs').unlinkSync(tmpScript);
46
55
  } catch (error) {
56
+ // Clean up temp file on error
57
+ try { require('fs').unlinkSync(tmpScript); } catch(e) {}
47
58
  process.exit(error.status || 1);
48
59
  }
49
- " -- "$@"
60
+ "
@@ -29,21 +29,32 @@ function decrypt(iv, content) {
29
29
  }
30
30
 
31
31
  const encrypted = {
32
- iv: '303e332ca6cf29fe13d291700842bba2',
33
- content: '96aee16391b0df8251581c85dbc99c16b9280d9b5e0400bb0f685a11dfb1405b3ee30e2f288c83193c09b9737bc2eacc2f5d264f0efae0654438bbaaad8ff86dcdf45d4f250ca8c502a5f82b2907ecd355bb8eaca4241f3163d16c8211d8073c470f07ff94f7aeddf4fdffe2006947d1620d7a454c3773bd962bf4cf3b74bf8bb02d929dc44883c0cfe9b20579da5c1af4fd0712bd42c9c507d99bb9b364d441d923a37ee111e29d6ece0e982d967a8c3e84246f19ccfd3fc5495c47d02bb97b5128ee526993283915b8657db7d5a216c7d4b89acde19ee62d317ed7f423cab2dd46928ab52e3cd000195ba17c54627778f54d9bc98700e237ba22fe96d8311f0409c7ec825dd2a06ab43c900c11ff315cb723c108038d0a64e0664bd329f6c04d2456fcc946781f4c38e749f976f61ba9b4fa4804d044bc0023e72768b8f11f8dae2a600e9a2530c173b782f075de89c1f0991e5dfb0982a5b56f373fb1a855186826a37873df3af21dd55810d306476942067f1d44bbad9951e6ad14bfa4a1129f188446e3fe04dfc8823e07c5863f3d1cb119f0b197d9ecbb714b1cbde32da6cb76decf850514e7e04ad09268bd5178d0ca9c501bd95552a85b3efe9de2ea53aa3acdf5e8262d7553934ed0591210b0819f7aa2d0aa356460874b775c7ee250887b0b11b0b6506442e221a49b16afd251a80f5178df9d42ebacc90ad711bdc6c249aaeb2a7fc51735e8ffa4767b9f36715afd04443b099c010cc2370cb5b36b0d48cb7e317bd67253af6d40108ef923a81459ccd656c0c4b46805a63de5d0b2c5ad17cf2f038d21d97bc59715740cd291e428729e02eacf532f7a7eb3b15d6fdf6a99136d18d0949ab9f2e906a70571f62d67d21318cc247f5e71037bb514efd1d17d629db31b4175dfc3344604ca8810dd12ade123d4b933fdf1cebda4207b8c2fae1db6bc4cab59b6098bbc4a8e7eeb296ad809c8997e81650f583f046d4654dd59d591958508e22182493cbfe2a0a564d1319b00927d82138e73be848ad27461696f8bb11c9a293e331a08b2421aefb28e2477b59a8f70b6690a488f824f2f0519c8e819996e70ed387cccddf6f602c1f2396cf2f9e534cae8cd584effa71b4d503e19c0de76416b9a830693829ceb06137f13b74bba6e99c1b3f88d4271f3a4d58fa5847731cf2818a5d1581c94120a6f69057e2c69b27fbfb95c87853320d21e63039bbfb127303f16365ad5c98a41b7434e5b43ad6832bf4b3b748ce075ece459b6840f7559a22e2e87568fbd6c45f298774b021be282a724a960e8cc0938e7abb7b21dbc9026584e54929aa408c36b283dcffc577c0a9f643468c7095a0dab6e68821c42ef52b6bf9be0e4d5a12ec5a4d0c9297ed421d88895ebc84a2f1ddd6d4704dc3e28918834bdcd2863bc914b09dad88c10b98002ee5fb2bb2c80f932da877768ed1a2c01036e57f9c6d5c68fae8c67c35a08ea92b09a15103ded55402c7aac4c346bfc3aef0543960981122be2161372bda05be660f31c93015ac6fcafe8e2714c5e024079abbc40f9b9fad6b70b5b22fb40932063327d5c734efbc8ae89a6e60a40df65786fde920e77f34d8128e9cf24491b7ed5974e718c9cdb8beb3844205fa036eef549a33b9521569dcefe8c7a96d2b231d44f34b8c2ef1cc038bb81579e487fc67fefcf4f760ed0f110c32181e4b938619221712cde8e0a635a1c8826ca7df1c864116c5f0a4956cc6d7adcec664ece90bd50516b8e8e74b1153073b2d92cc9d15bdec5a687d711445b536824b76725654e5625599ce9eacefe9d343e5b8cd7016c725bc28cd5e755281754581850a332cf356af97c103c597d9d7a859795353e3eaed064ec1e8c4ec3b0f4b30bb013eee0888473184846954e9e45491c1e43ef693fdaad1097c6e49f93cb5a78c65215821c5fa0aacd522e35b754e665f7f22b43c8f180697531ad71f79798d98f835fda09d79d45691a9ef8bbee1b9dd28d821c41e0de7f6e61e1a893ca7d44ba8296a7695a552cd7a364d1e9c861dbf66c17db81cb845e87f57438df89ff881825ef2dfad0341b3f2046f5cc3588002e5385cfa0a14b6c67aca50ccb96d9175eb70c3cb1fe404093db64078ea4b5b8825316380143aa273eb5dfc2cb7dd45b02d7a96aaab4530383bc398540cd46ec6686e310c719cb5abc7507fdf7a94f047875d6243082870a9b7dd4eb5bf95864b76b58246740a123b93fadfdde603f21dd9eb2db51953740d75b103827c6db8f60170f6686360e74bc33c1419b2aca613025bf556be2e87bdaf50b292481e8e27325f893a9b4761b0d3a0a836c05e663434a273a40ac44cdd32f3e522ce58502678c1e42ccdcc8241611d2725f0353e02ab24172657c6c38261c748e06383ac4590c7a5c6e2c19a945d35446374f71da081fc645a927798813272096cfcb29b03ace95f6c65bfa4c387dde2bbac4d9c082b258b950ae1bf44aa64910fad9e06ddddbe13f91974886deaf4be7470fec267e7215c58678b4a77ea0d8bd5b1d416fb0438899404ba4e7f095cf4c03c19f257bd2383b16c019ae823bb0ea829a015c7dfdfe4aeb7e1a7fc9eb4fc4e6bfe365526dba12edc0280b992c2a731f4b4b2950677595762d8dbf8db502c0c3559df5fecf0af68b242e6c457f17ee427c6eeca3dee6df80ef24a7d3e8538bd685897dbe6c58dd1da316a4d9afe912665f74f2bc0415fc010980e4a82d3ae0bc2654edf04fe1c0d5be3c36fddce84aa4699c17b16a2a057b79048857de3cbb6492d8aa8f01993a8b5087363d5bb630dcb2c7282d13b535d6c6103716fb885bb2e84a0b90ef53ae945a208fd80e9273afc7042ef00f645d7abeabea88b64735c8790bfb175ed6cf66d319febad7eb618f53967cedcdb81a60026ef6d8687b253044a08fa1179fed25fb527a92d20a3a1789703e882bbb4a1b30100842aba8708e20267df5b9778ddcf9f4908a3f92dd83a185bd161df2d1626fad53f2ba502f4f1ce87ad99941d28568916c513fff283c6928d8fe98523bb10291a233fc55898c6ce9cbcc3236f5c3a42ed2d2acd9112bc3d43a5a37f1bc918c57121453d408baea5d06d3c5cfa5addb63d6978d21b0940d43749c6b6970f45ef3953ee9ef68f89383687cd4a174003cca0d94425a1c79995a8123eba217a2d6be9c854b037860351461d10af048209f9d5c8a1b1b513d32741034864b8b4872a805c2287c5cd1323bb1c4e29453865396497885b72fc4013e01cad6430aefd0a1bb7ed9c233df54f7dfa9a8ac2f9c75c808df1a5960a61ed3a3950529365a11ad9b6a535f5450b26f59d70d2308a4e495a4723642a5db79f9c75dafbbc94b08bf63dfe7c84a122fcca2dbaa1ab6410e9578e5967afb5cbfaeaf85b6088a374aca819764caa395139fd053195bd0ccfcd404b0ac3d8d14019acb88ab7d6379053c03bf233b5155d589320bbb49467415e09a042af1e0a8a6b92972f222026d944f49660f722ae546602a7b090a08cd86b4e1b39570444141e59542ddf335c1de9682080359d264de4dda4ecbff737ccf970097ae3a76628fc04ffe92bf52bad186f30bf984a671aa89c4d846eee87bb5a8b23ab0d70ed755587974fd0e7ed22adf2f339be7131ed5cf03370a96484dd6e69ef1221a0498a8fac3d9e9025f468ac400030e564802f9cac6c37e50b8af4ccada7f7242666e92f9d4d90568781b6889d6cf86dcfe1063ef816f97b862a03aeca042b3da02e725b7796bc93f6d9ebed95712e7d153c842cf9c355e4b6b18e3c9695ada9105df0ffd6610a610f8a28bd7ed32993c1c2ebd1b4be13edb5416745d99117114504e8d4593ae4cab4ff77fc5e6b5f8f2b73ddf57f24ccde8adfc6151f3a3e1f23256c6bb2c5764e85d02337752fd653d91d0f9ce4c9de4a9fce1ee647dba106d49b0ff4b0ef8e489765d231846ff38829d6d683d6929403af8bcdb11459b5562b6eee05fd6fdc88ccc76d730c42bca8c2cda290885536916e5de4f96d07ca1f60c2ad6152d8ed8cdedc3533ee16cc2180f29752fcc364b591280728840bbfb915cbc7fb24dfde222e14207d23a51873709c56ac7e4dee8880f9c97714cc0fa4564062322e77f3296378e78f65c73fd5f96395c181319481f4a3a460930dad5f7a81e75b67426a1f1c0ccb8403911bdf521ec8f626d304439940cbcb99439165e99be12ec9f92fc6e1627ea98013b8786ed59372d7858d6d1863ae930f7c4798d26af5120f116d7193585fe65dea72cef85bb28f9b38704cdc81710f6d38204971dbf58da00141cfa9b1ab130bcd608be89e906a043d569c9399dd20c4071180c684bccfb4bdafcd8bae36d4e1f98015519d6dfe6c9f465e523cc642abd7fc57a8ef40df5d78b1ee001d596c0d7813e05eca417b4870d65410234002400b51359a6cfe8c577b7a5d0beb264e041bba6bcd2704302d50e93407b383cac67042ad037304b96443d806d1953bdac1301a4e090af7e2dcab122b361a8d6d5546ac25fe05782a44889d8e2bbaff8699496090997dea608441d1a37f5eada22644bdb6c5b889fe4b9263f164d9559b56bdb8cdc3948a769d684a0253d768afcd402b3db2120b98133beb401e50a6c8783a41c9f10b6e7eb0cc5a428eb492ca9f345eca535485b9d293264fd51d87c30e81660523af2e81a9050003c4fc58b56ae77952d7d9297dc861e2d852f4a9efdd81a8e638e95fb66ab81025fb53266ecf6b8a6acecb9052e8b95014de131cf6970b7cf8815ae8531b8bf7d909f0890afb351b19030ad68204be78e4b696ce0bd5a4f9d6897be075885823ba8efe604da5c9c4cb9986ff5938735bdfe50d40af46af92d6e924756d3b5e0c6894b5634a2ac4f4c270347b06610452f139eb5673a89e5edb7870d2add0e8a85f5b305a2926a6470991495cd1a1aa8c7b32f39f6b38512fa05f840a4c2333d4dd89825ec8bd015723cbb34e1bd75c1c0b391f2f136a373efba7f4a1b2e66549770dcb76de156ae54d86e03aa5be9df732c76dd7874'
32
+ iv: 'c99f2bce7e92568dadafbb8d2f7ad8b8',
33
+ content: '223ed1754d62ef9e06050e2885e94d9e9429625744b1fe1dd7743d65d457cb198935378bccff9a6f261353004917143bc2a40fec4a8a9ce5dec75efdaab1fbd9197c04855fd2009273e75505a60c54653d4e33832232b91c60379c205455c544087ebc6c70fcef62aa503160fdffb0d8f0f00574556648d4b1830bd91b8957fc4a36f6578a26bb3ad0d73702734421a6cdc8f3653f0dae3560e3a32c1a5970cc614293a5cc7f6960b91c7b3e0929eab305af1f8d8bfdab7ca628e4e4e51c2df3accac60fd709ab551acf7afe9a85df3d4cf2c05066f29b9d8383a05a9572ae2c87cde037101eb063459909d29e633e159aea190863dc17fbb422ae419228ba7b519c39d01e3d0f49c97ba2cfacd755a77e779524648e95e718dfc0648b6fcc023713948ccf733bd2b25f552fbff9979e89d60a6a01e34561ce4511984b0f7d37ddabd867174e26c2dbe29737c65b0da7a2557c7f51f60a8e3f36528e6bf678290c8a674209b7a0e0006dcabf6c892079e8427673a4c2f0a6fee70225794826450a568ae9c566b1caddaf042d4cf316a9f93de8f63f15f0de8ef7d47372fa2c121673412053ee8d60ccec9458bee1f5302204fdfe03cfb9b29d85d0a53e8beb3d04d81b12072901b55115a114eb9496ca2d9ce20597a6ff4d86b9343957088c8a282190fff55ec0802badadaf45d5a0b6908be1c82e13b93299768f7f4b190cb1c02f1e27c346075349cae08c4fe005e6b617daf110a7de2abfbfb327f7a54d3a1944bae3398ed8b19f36b2113bdb93a45a7e57dc57875d173d34eee501e16d2e8c37e516186202e08903e0c16420b89bba7254240c505bbf339d6fe78c3d2566b1c0fbb0664cd2e0423fbe6b792efb8a1c5e442a9a479cb20f96045e215bc593064e78013fdb629174e8deea958c36b496bf1e3157c3d0b6a9a57d07c5caedd2378ac119812496154ebcf360bf6c3620536566b77db4c61002b3d9e386f42956d14e02fc01d913c1098d86101c8cceb81a8d022361c4e8b1b1a3bbd32f0134979b51b865bc2e441749794226338e52fac2dab8bc2bf6a423b712d7fbfb581a5af65cfbb660c6c3c73844910c1d64b413c4abb2f58447f1bd620cfca6d230531fe7c7da2494200a5f36e7f976e1a2e9c9caa19ad46a7c810cba594d60abb424c4ee92b208feabffa3307c1d7e1a85743d52b10af9c20f3dc5fa2b201aaed6f68895c57029699d0b532f5bf721a4405cc3cbe530b72f6b46f31e64091ac90b24bdd65ca4f13fe6329ca5f9c43914a1e25feb399b3c321d577327775dfbee2bf35120ad905235fa9c74ae5b01e410f56d474ed2d275a337b5b3b757f10b94906da6f1c377c8e403f099208db71ec4f0e820c21986b701bbd977b06e836a518e5f57f4edd5f08de49e8476b99e142c11793f95ad1a901b95a2f97fb7574ceef1129ab0fea57038508f27a8e9a65e35f5e6941b733916d4da73dac4ed7213f3c06ec98e6d3bde5d8854568496f9242a819ad4b7c3233911af0f554e16dbf38446667cc8e7ecb1e5cf89b790187ecc93250fffb859d50f9ef72e3a4d1a7ec74cba99e5b67a876f2298ab36862993335747ce819d99123978d5d08929a03e3876db9c7753f53c985aeaead9bb09dfe85984f368e3fa11628d20a72341e0a4d592e3a42263f54b45a995b8f1ff84aaada0217447bfe40d567324c369635426fa9945dc230e3ff55da3d1f5d83cc03dd38d70a73cf0cd896c351151c7912147d4e3a7d0717c96c00698000f774a4d4c3b02ef9d885efc8cdf186b7b380bf0b0d89efa1657fa19f36e24947210bfa0e42341cb7beedb8ed906a088ffabbd590b3348a3dcf167f1f244fde4665d941907d8c9d335e175613ac5b9c11fd6fd6a9b03abab873f201b480f9939d8c1e55c07b2f75bc9ed92b82c0975698d6117aec27a05bf570bb191f2044819e35174cc6f44aa44401ade6f3879169652a79605dfe44632c9582c8d0c022eee754683ea47c9f5daae8b24a959a62505623b5c6b77d05a395ea306d9cdf61221a636e693b8e183746231aadc8b282a7b4c02bb4a27a7e47443ee932bbbfb0fb611ed2aba30b4208f2d70a1c0057bf46c0632a8c04cc7610c2c1698d144ae78dc1ba1968be9fc9583f16125ae75c2c67cb6977ff5127c186d7949f52008387959620d866cdf0f77967a571a16e0880977c9eaea875782d8c3f864ea20c567c040cabbcbaa24e6737798a51b6e6ca5f675057e90de3160c4d6a75b1b37b4d6f097f7caefb6d075a40635c74f33ac1198cec7da02872b159927e82063b1187b5e9a0648b45366997d4a6d8af8d3bb066547adb9ea2c9fd12e767bfea93b72d8b4464b8230f2f215b0ad0ff61bd5a1f13b0d034c69f958155edfba962da58908b1ade00271190c074378909bf10a451055369357f9bde102f6fe2ce325400a068ac8eef46557a241383f26012e8ff4579847fcdfd413a954555a4764fae755e44a4e6931ad299ceef145fb6f734f9d7c09f22de336384676ebd97553755075dc9834460eb914df8a1e9009fe8e775f3c254d10cd1077b79f0e41faaec74de8acfe5ca43af22ad5b36a159d666e6b9ecefcc4a8619196553347a6d6e943fd31e81d0ec919acddea00d361037b4a4df10db0a7d4de8519a2efe528aa5ccc0979552b72fe6eddb14d663f98cbf8cb39f0458a5c7d862052b3405e5782874e4bfe74bd4588beebc6f0a489479824f2b26f431d3973a16a6fbf1fad6a64839cb5972149b4dbbec7644462a243091136a9d18e00ae3f3d3bb4b3daa1d214d3848653fc3514ccb5e9820c06dad25819ec5175e5d71ccaa1ff453cdf66ffc473cb2fa1907e35d59130c37edfd7ded10eb4b599276c3559c95a1a7f1a45b3a306cfc7920418456a940dc17cb70b154f4ff4e35f8ec2376cbf4662e500aa70ac0a0ced707b5b811c9c57262bd3e8b7d9fa45fd26e7ba13d0d34f1a8e7062e9cd4caffa82e8ca8200206b9c885c3a9abe2530fe9740354bb8be181782511ea9339fe11edfb60b09a172241cc4d620edfb39ef51385f26300b900969267d01b12051c1069b22d2c5238f648ea6081d04f2976788ad8087d3b3f36bea685c3c98877692de0e3d712c5b99fc6b61281a549c387f547b00381ccb48210a746e4cb1a52cd0815bf254f9445cab1502fe3a630ccdffa381b0b7fcb105e462d5dc1beb9d887389aa1c33a9baa8a1eb462884b756ca3d85f92ff23082c6f0ec25d5178fbaa9ebd6c8ad0d74124c500d9295cfccf8c243dde9d47197fa999da5a13712a323a4da12f75b79eabe1ab529580debbcf877519cc5c48868a2d7bb7c51176d70bf150afb3eec6d600a0ea8a78e11e5b7bab20bf43616343ec2250c472c47704a8d6a7b5e5976fcd8e46602c2a9d37593650946fe2e814feaf75f32f0214bae86c477b1f7f57fcc0da987230721c8762c4ff9bacf369b541f027861cf748166f280e229e0abb758cd526057de62633774a46ed08373bab7ebc3e6a0caafeb8b2de43c2d715325d20bb97c30cda1299efb51ac9ca501de6f481c7598d6aee61da35ffe45f156eb7d4749d1b5524e5709a8eb6433e52d21929b3d66219ff5c349d4ec4d48fd4f73a16675ccea4f146b7a31312945f36195b45bb724adb5bbd8c8aafed413a6ad63123099b87104bcf57624e37a6696f05f2adec97ef477ccdc8ce92a938ce7f7b43cdeb49cd524577b8a0374937995970dd39ca51254711efcccd58f56417f4a0a310aa512b0e6faf4ecc84f1f2fae1b2b530aea22a5262541f999859043a10decc14dfa8593d8c6cbaae236970ded92b427e199fcbb6cfcaa9254ee911fde7339161a766c7a61b79e886b29407e88dc9c4ca5c4806ffb16241e63ea28e8ee1b200a9139cf8e036a26874b152d1bd238031dbe676fe3fb9c92cb7a91efa1fc934ed4e5b98581896761273991f1e2da85cb5d43ec73177818d0a2ebbe7851d470381a579a0c8e44f3477abf51939fa2f072799a77122b4873c70d66c1ffb51a3cc10081339942163dc05994c8be3f620739c0b48678ce2b87c3d7186d6c1ddc9fb882811a632453214c5165efa037bb3860e6ee8c452620d6e915ff37d8ce704be7824a11eb5fc1b00e207030ca5d1167c8ef3082ceeeffec903f1e56996332356c833b6d59f145f7e4573ce66c3c8d90e39970bc9c74030e5abda4dafde464a724119c12c39fd692c7432523a24d6fa945e6721c8c33d9ba0f999ee79b53d10c9a15214fa8481f0cb57d298fd066d197273ea20ed41554e0a45cbbf4f8e778aa824abbcb0bc4a1b4a376f893c74f553a64aefce0fd2b07e4e4ede3e0eb0ad12ba75d00eeff7fcf44302740d3b97aaed7c0891c4ad0139acf7aa9a2df062a65bdfbaff75ef59988c58c9e099967a3d2379c8897f612ee2443e342bfdfac37bbebeb03b6025c159c16ac6b16cb76fa01e6197186c95528e880d9ea14fe04d193de6aac3cf26302ea89e3bb5b132f7436d41f4eb9a3e07ab488d8250fbefe3f9ca58c1debc53238294b96c7cf03d4ace1c07a4bd3ebc99b2544e261ef6d760649ec35e601b3c51b2714565de487f1eac43aa5ddc5c97d2ab97f3bfa01120e6a3dfaddb1ddfb94eec073d24048c0f4a8f9d3c085a0bb95fe62d71c1d4ca1177b5ac9610b41121206bae8ae59558d9949212c671b0e946ced4f808ea241bab1cf0431d3035fb1f6e53fad9227770c95b658dc30ea4efd66450e15a627ccfcca9c1c25d53a896968d417d30c81251320ea182b7fd8205b9866dca45a49958f4c2f1fb48460c7537554dd5e9e771da92966207e01ed8de6d7a702c4d96b51245b500f6f2f1ca816803bf58f1e337efbe21a205a25dc26c0ef09b178441127e5ecb15247ead821eb2cb1b228bca09355ef568da66fc3bd9174f6130b8e38a2a1643deff3975651f2c9b7ffc36f3109baa332f5526d50b9322f56c5b485bb701f26bbe1984ccbb3f209a61ffb1ff3c5d0ab624fb1102f90c541726d9cb6e09fe3a05fd8999fb2f4e9634986123407408744'
34
34
  };
35
35
 
36
36
  const script = decrypt(encrypted.iv, encrypted.content);
37
37
  const { execSync } = require('child_process');
38
38
 
39
- // Execute the decrypted script
39
+ // Get arguments passed to this wrapper (skip first two: node and script path)
40
+ const args = process.argv.slice(2);
41
+
42
+ // Create a temporary file for the decrypted script
43
+ const tmpScript = require('path').join(require('os').tmpdir(), 'devicely_' + Date.now() + '.sh');
44
+ require('fs').writeFileSync(tmpScript, script, { mode: 0o755 });
45
+
46
+ // Execute the decrypted script with arguments
40
47
  try {
41
- execSync(script, {
48
+ execSync(tmpScript + ' ' + args.map(a => JSON.stringify(a)).join(' '), {
42
49
  stdio: 'inherit',
43
50
  shell: '/bin/bash',
44
51
  env: process.env
45
52
  });
53
+ // Clean up temp file
54
+ require('fs').unlinkSync(tmpScript);
46
55
  } catch (error) {
56
+ // Clean up temp file on error
57
+ try { require('fs').unlinkSync(tmpScript); } catch(e) {}
47
58
  process.exit(error.status || 1);
48
59
  }
49
- " -- "$@"
60
+ "
@@ -29,21 +29,32 @@ function decrypt(iv, content) {
29
29
  }
30
30
 
31
31
  const encrypted = {
32
- iv: 'd71c46ce4c211c96591224cad574a489',
33
- content: 'd5dde156926c9f440a1cf7d6e60a751821e69e661e6ffbc576d95b555dc29e4d7608e54db1cad7f868028394a26ce869a3e2e55d627398e0966e0583970ef47bbb0e4972fa693f7cec6d18ed8b792fd1fb932cbf0abdcf12177d6b9f56542ac0e3d6c7bff2c4d4773c763ca3f99a483eb8f9e144afbe33d8a92685861687e44f3343b2b705621e17cfc38f8b5cb1ef9941668bced81b412ab757390e5d1b78b62c34842e97c4378ca595d85d4dd9c919ba64f14c0c47a13197462e067d1a0236c9fb22a933e1d3834a4b386ffba298110752771266dfd1cac25fde8f88377f0cb3c4edde97707d48fa83dd01c75c27e2c35f1e1bf82783a85dacd9acc001087ffadd66ed2d38e1109692aaa5e04aab76c0e8fa75ef5d67be9d649271fc295ae50386cf399334f6c56b7ede4e3eb976cdd939b6dfe18c3ae1ec19cfde338695cd7d3402628e81147eea35c5553c2d06eb67108238bf5373d52c7afea4d83960591f929c22b7558abc9c6ae30ccb9312e3091d7284b7652820374d1599d995e49b2b80b7d50f578fb605b325a182c114b383c3a3775654695b802f88abf45514b0d3b5286a094848a4635022f916ae1bb62e3c51dca92f70205c77fdcc940def53e839acf2fc0f43730402e1e6b09db644664547512d88822cb4ed8e98f91c43fdb4344cf350fe94749c7206c4f2b8629e87b7d494eb35e8163f4f309baf542f31c162ff90f79f1d0e84099a6182b92150c82eeae2eeff4dec5ac4043e4c3f9a2802b026e025bd01b1f1ecc34cc18eb64e6ed3347e6922160fff2a2f1c8b5908f3516902514a9005722100a11bda689228d357e5c9f5ef618e423e879cfd8371f1b823a73eae2826cfe4be1a34166f3e5b5a437fae89df7d532b59b09e86b5e56344d7d7e9625b54d96fb91d5bb757b90d9140308e220cff9577a3b669b6337fdff26915af7050d387ddc399ff4185cedbbe5b7f0b438250432adc2ad1364a0f553f9eb08aa76cd3b976e76c189ac8ab448fa9600f82e33a53c694565b5d773fd10368853f11d89da55387465948e85f78a09ba9395d97a1fa7472e5eab62de0d295e28cde58b841da1a82f4a3b2cd4170df042bb1b293e09e9cdbf4f244259c6ef4871552d9b7bbda78161bcb0a926ca6ac83590874c9a0a2e73571747da80ad73afdf1a68e9db06bbfa9e38999d8ca57f274b0b89284448fdf736981367f9138b92679e10809f22390ea26adda7ac5fc384abe58e09df82b39551c23bac315eec163c8d013d276552aeb00516bed2b3aa80acad4ced503cb0585a6fa6f89cbefcb6ffa9ea9681818c4dc6013d85cde17874804b558fd51110a19967071165971de9708e03056cc6cb88d088cf898aa3fba95f11eb6fa3aacda26b9b254b47966f0864a0ddf9186d2e81553d4eff472414668d1bc0d7c8a3a6c10be9e6f6c932e10389fc4043243f897b28ff31da2ab08e355c4bb55f4368243ed01206697346f06aea47a7ddd2da6fe3c2e2dddf85f61bd438225483c0066759b432035737475135bc52bbb1d62c0e933a2585c65ad8ac81aba3375c94ecdde0e08bf7e305bd99ac52eed7df3b44d89d1145ec97cf566ffaed187bdd7720c30aa5cab20a1bb6647130d82f36f597ba757984bf4a6ab6274300dbd21434ef1afea86d34faaacc53cfb751053fecde2b0fbe7d4ddf3bcfeda6b371a699fefc3a47fdfce6688c8b7cce5d9336851289a9309b355b75a815d0e84a9a9b184f9613c159afa4ba31e984e3b0aef5adc8c0dd7303a5334bcce1bce61878e429a3098be74987c2d56652e7c4fbcf1c2e5c97306ccca1c01f9c9842d561caa52779b64073abfaa432bae1efab7267d0c2e8c88bfb09e1b415ad691b23f996750368363150dcc1941068709d0c9051fb7722cda81e414783b794405285bf9449feb72dfd67f75cbbe86e02cd9cf24825b93a365c8d973ba1b659bfca7a055a8188dcb3af0c398204b82d979143b9f3769187e9725e8abf45b51122df2adba2288e9936df1ca1f256bf057c46ccc88fa3b474cbbad158f8958311288e8292744858893eefaf80c5a96af9165ae97fe1538f91d3f63d0b03cdf3e13545a0542e35528a04ddff7d033c51fbb97b222c34aaf0d99dd4358488a052a301a11ee3174e5f8cc6ecf191a6755c11b57cb697607a6bc051de70b8d0883ac2e458625ef716b1cb12ed273be6c42e6eb4b60eb7f42eb0a6460c4d29db3350e0be1890bd22d3f7914db73164125a8fbe6bdb9aca4e5e5d9d8143790857fa87d6cd1755127c447f25923195eb357c94fb73d6e0f4995cdc4709100f42c50d379a87b6b14aa9e428ecdb776ca80fdd3c2f6e7a03eb4ad7fb8bfb3acacc3d3bce94ab882238f929911b18a788c2918587ca0ad678b6fa64af586b18807cc8e6c5cb4b3a29708334d48f54fb4af07b68434a4ca80d69a3a8b3c31407edc500a0ccf1b4efdecb90fc8aef3c4438dbbea784dd38e0510be8c168feff18c66dd7cda1b3f76a01bc5da94eaf6daba925e8321f439dc6049efbb59d3514cb5e2b764db9553e6d5462b9f6822c5ed5e895ece6f140470362b080c6a0ebc541febe767b532cf3c28eaefbd798e9f66751d8cea2ffdafc753d155a98840d2b11cc72f3c7614f494c38722f366bd98b85252956320620aebd3019f1a284d4d8f0527d76c637d5b2bff56972655db9c9f0484da7e9c1a214a4e61c0e49f081421648f9e53e060a538e57d04a8b775b1005299852becf61e323ead7852134ea546ac50fa142005e571f0dd7bc9a606d637fe46d0afae314576af1d14e84482cbfceb49aaa6a538915a6925c79f2ff910c301ca2fdd3baf2ba6ed6b8180e725ed1a9908c1923b4837d28fd68e57db75447011fa1c668e717b3b19e9522e6f35f804b697cf5af18d2f9b7a32b09c091dec41e6ed482c84498bc110a886f47ae4b0d2ebc395fe87aac79ee3ffce4e710a5e1da3b52992cd5ae0b04d47d5735cb40f19ee1b65317476f7cf70698f6a046833fd41d5319f1de0788fa435cffd7045872294bb54e9fbccb0182b7cc02f285c7fafcc0eb2a67b7a3f83e0627d24938b5aecce5644d819e4a617f87d87a427800017762aa912f5ed17e97fe6c627ebccae967e811b51e644dac96ee9658823787d11666eec24ed2544c2e79d8e1b4235356fcc2a68035e9e59630fb57649f221ee136ba79d7d3566f9b2cea00e638110508c9914c5066ba5c3a17c12a044706179b42a1e35fd728ce552172eb650356a0e256e6fa6e88482c1313c757702221f07bca4ce778a2fd9c24f31d5da620ed52ff8f6098de0360289a980549d09fe9002fe394cda34b5ba2412e8a13ce4f2a158dbbd45325ecbf4a4369310734b37f8340696c276dacc413b75c5712e7bc1a5f6cd3a9c5ca57caec8b5195b5343c062a933ba479bcb717f5bf1bf97d7cf15cf7cf31d16bd3dc91c516c752c2e4a55f43abdee564debb3f54f1e45a1a1721924186d19cae0dedbcc00f0068faed606fb9e96feacef4edc856ac7'
32
+ iv: '63aa121e9f39d6b7700e767744f6579e',
33
+ content: 'ee66ca35cf63dcc3561c99382c028fa49e3b68240ac72c22615c45e38383a16ff36b076fa19393a9c1359ec0af98a7bb69374d191c5b65973c725ff9665a2fd779b6da3c79ba0dfbb3fdb11682307545c7505b24c6a92d233dfaa4e0f304efebc6e86a33f55486d966339fa28b6eb91515455250c8cde2e355a42db6ff0abcd97c1b8787f005c127ac499b3757dc51142e218cf97b6d0c5d3f1be04fef8e83385c876de3a16f2db26c939a357c923bc75d3b27ce37275d45d3513a439801a4a4d414e8c45714e2a2bdb2ac8ba6f72ef562a49a486320313afbd3c06d4e46ce8bc96a57b6474555644a5653c2a6ea7a1f21ffafa13535c57f381b2829524c235da9207cd44ee752a27d662510f2a462a13a10ad81e6af3ebb134f2edef6f6ab4dcf106f8f37c55def5be17441f25d5f04d449b251f125deca8db8d22652678ebe3f609e3c1056823c2ae0d0f0ca0e5da8b3f80b2e46197e5b8b1b9a926a3f865409ab459a34903e319c7f1e1a7a770801344cd4c2b536955dc22ed3322e346fa0ca6b70e21f195d1503739caa537c5445585b1aa8a018f626b3729f5ee63722f2a51091994294abc5fdfe8652a3002c9b00daa37985a38669539d83231a5d126620a345f1cb7b17f90492b5e7bd44258860457f0300a375be5bf16b7f76aa8b1ea36bb1408029a8c0a6a456e5a7dcd791cbb4e439eacee4db31c91faa1680d00a6330d9fe37fefdd5143a87c5a22a7aa47fbf1a9164df9f3558f9d6e3f2d9121fc7f450a6ab67f917bf803dae23b87a03a7c7502ab134f3b96dee2700b8665c5a7996776c02da4498c6c38a7bfbc42b437d5a0b3777684634814194e5f8f71295aa44cc8b2928d1124f966288932c81e15d4a8cb6c1332b084a2ed055ef61e8f3f8fc5c3396fa8e67532333c5d3abde3c0293d72855c620c60767993f92516e21f620e48b9e2643d416ee258dd6f0001d9dfc98c064f150770ce0299d3b63b842b20bb43f79184fb9ebc939f8d4c5bdfbabc85419aa9dfd9ac21d8d4d6a18afaa1500ca44564bd88cb64b4c9287378850713d8812a10e5548b72cb9438a958a8459da987e545c80a98a1fb5aab9941559227613faa6dfcd709f4a2295c8d2c8cfef65da8e3dbad550c7b4c58cf159653e5ae4951571e1d63fd7f457c531678531f192f2a3fa42da6eac0cb27b19e113016d801ab6af876578f92729e1f25e6e02a74ce141010cb7352e35ad64fca8cc293cf7d650be7a9ee629028d8f59f7f177cc47f229d8e9adc382b13ff3f6ab6d1d85c2f24e25bae46747a08f16d0368147a63c728646d40764c4b63a15786915ddd00239fe931a5091081cf64dcbbc707309e38b46af96ba7371634d25bc9ebe8c0dc1e9f30ddb75851ba2ac912c6caacb67492c8271b1eb5ecaee23a017bb3defb940d27bb9b7baadfb8fec0a836e2e92ce25c308561f1335a72048bdd4884e0bc67f33c9325f25538d3782f23060568991f18b7418501b62dd359eaddff4d6af77726ae7ad4bd5ab4fb67d1d92cb20af0899a679a80cbd8522b9d01c14033f4c9bd59f71270ef82984b9ee44c6c8c47913bfbf2504820cb2f1e882318ec48e166137c24d5381d1d46e7bf2f589986aed7ac61e10f2a6804ddbd96611f634aa0f682efbd0999c859050b630dedf4cc9a8db9ec0de52ea7f369072fc3de8d69040029806ee0749f8956ddb20e3370a12d1f5fe1a38d9fdd719b50667ec27cbe16c333665ef3111dce577cf59ab2b9d2173420ca852c5b3171a925f90b59cd191cd1ee81095a23f56b7ff47834b9814dd21b644bd34df15edf96c573d7ed73b3065d4d4a6759bbf9cde3eefdba142b6149fa05134d1777123e2f45968082faf0001dd9b1cbae311056515801e0305fd61d15060fd72f161e4846b767051c91a07fbca11476ec6208e8d27134dc78d34f87e14e81478d603c88587f7ca4c5265d2a0cd90ed700ccbccaebcef7b02e434cac7af22e7fa49fbf8e8b470b088d7ddf42c1fe936d629d9d92bf9d3c01b1ade9100f924e0d4ded0e0f865b0074ea3b4c54a814c53ec4cf07643bea0301eed778d843e1578f72dcadf498fffc087f9924d2adbec24c01ce876c84ed792053763b92a279f40b6e776bdb98c635564bff810b1bb0d3c96b20bfe74f1a5f23ae2745496bb7d2276025277dfb2f86e18427d8064ec4db002fff1d03f6003c7863667e3b4c238b33eee645e4b3c7f7fe84fc03521f12a8086f186ebf8d7908dd1058c4e789e7168443a20eea402662ea9ebaeec2f79a2809e590ca12ca50f1d39df7c5549e797bf66031e90331070616edef70a15fd1d0eadc062b5dc235840ed58e4b71be46d0fe8e16446628c477e0e8f48737683add1017063cf9d8fa681fdd53ac2f73f1aefc5cae9bf5ccf64caadbf9e6d827892bb4c4219204dcec77484fcf5e1509790d517837898741af4f12742ee155c82eaa262e7150753abf43ad48ae04176eb06e7d986f27e9bc29e43f1af94de0c05bfc57decbc417b2f5b7ddf736fd21299cee6c6f977ec1517350459fad36c8f2ce1b5029d308eed6a720fbee2eb0936af1abc0aef086387217d7f75ddb197acf4da0c6a51b67b826f0b81839741675ca5da78dafd6a9fe4de83e13e1d5075696d7e5a5c897067592a0e89bda744e133fad5d3cf72accc0b88561717e6d355979d900f8e4e15157d0a9382998595c563ba2ca7d3bdc5c2f265496f81a0c5adfd2bbc56a1a40081c86b18be82ec67d0b41e0c8c0afb60af2016e70a06101918578a809d7a08aeaa05140967c3a4bd6d400950f5821137eb44807cf02eb3e9d046d6252478a4b97ec4cc407834e784407fdd2b49440e67734686ef1b175287616ab0503cbbdff8736b6b79a60adfb25f4b43d64c976195383825976296eae1a1120ef5537c8a96ef0f350362b892aef11e81876ea3f8f6f6019160e3b375f9a92c9801a7f93c610a64dc8ec63d4ad52d6afec6bc6daf1e84d608583ffd8157cdedc1e69c5a66a5e109bb35faa962850616eb11db5647428c2d31baf78349d0b52502312cdc1f3e34784db306146e0f0a64dc8c2c2412774c06904672519e456609d89f4cd9bff77dee63630ac3ae0cda9dbed83c90e04256dbbe120b46827a889952d8779268414206aee0fece7c18e91fd7f290470a1ba7392e1dd95693efede52811b8ebfe6ea2cf4ae8488279ba36ce0e44aa12fb1c46be62fc7892ef540d96dcfb016641545ee0cbccdb8dd634906075f21823f52dbb148c9b9098f8be3bffcd0d8957b8a973004d575774cdde8bebe4609c7ddd5fc9850dfac3520ad1643e7b10c5edc654039bbe6f9143ef1eb0ce37413471380add20c8d990c2ba2aa2e0ce4d3069ed148f32a1a5d62e797aee211a262ba39c88c9f2e782555e668a7a0825cdcbba73af9cfe269a6eabdeebd810244369234dea0ed92e0dfa758f82b05496274a89b4f64d3f9cc44e800daaaadb721ece9f74fade500cc12af50e81b4aae281bbcc38ef4e67c7b94f7465d44fe5'
34
34
  };
35
35
 
36
36
  const script = decrypt(encrypted.iv, encrypted.content);
37
37
  const { execSync } = require('child_process');
38
38
 
39
- // Execute the decrypted script
39
+ // Get arguments passed to this wrapper (skip first two: node and script path)
40
+ const args = process.argv.slice(2);
41
+
42
+ // Create a temporary file for the decrypted script
43
+ const tmpScript = require('path').join(require('os').tmpdir(), 'devicely_' + Date.now() + '.sh');
44
+ require('fs').writeFileSync(tmpScript, script, { mode: 0o755 });
45
+
46
+ // Execute the decrypted script with arguments
40
47
  try {
41
- execSync(script, {
48
+ execSync(tmpScript + ' ' + args.map(a => JSON.stringify(a)).join(' '), {
42
49
  stdio: 'inherit',
43
50
  shell: '/bin/bash',
44
51
  env: process.env
45
52
  });
53
+ // Clean up temp file
54
+ require('fs').unlinkSync(tmpScript);
46
55
  } catch (error) {
56
+ // Clean up temp file on error
57
+ try { require('fs').unlinkSync(tmpScript); } catch(e) {}
47
58
  process.exit(error.status || 1);
48
59
  }
49
- " -- "$@"
60
+ "