Advertisement
jrubimf

Untitled

Nov 12th, 2019
115
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 17.86 KB | None | 0 0
  1. local = {'\27','\76','\117','\97','\81','\0','\1','\4','\4','\4','\8','\0','\13','\0',
  2. '\0','\0','\64','\69','\99','\110','\114','\121','\112','\116','\46','\108','\117','\97','\0','\3','\0','\0','\0','\8','\0',
  3. '\0','\0','\0','\0','\0','\2','\4','\0','\0','\0','\5','\0','\0','\0','\65','\64','\0','\0','\28','\64','\0','\1','\30','\0',
  4. '\128','\0','\2','\0','\0','\0','\4','\6','\0','\0','\0','\112','\114','\105','\110','\116','\0','\4','\18','\0','\0','\0',
  5. '\67','\97','\110','\32','\121','\111','\117','\32','\115','\101','\101','\32','\116','\104','\105','\115','\63','\0','\0',
  6. '\0','\0','\0','\4','\0','\0','\0','\6','\0','\0','\0','\6','\0','\0','\0','\6','\0','\0','\0','\8','\0','\0','\0','\0','\0',
  7. '\0','\0','\0','\0','\0','\0'}
  8.  
  9. local IlIIlIlIIIlllIlIlIIlIlIlIlIIIlIIIII = {
  10. "ABC", "ABx", "ABC", "ABC",
  11. "ABC", "ABx", "ABC", "ABx",
  12. "ABC", "ABC", "ABC", "ABC",
  13. "ABC", "ABC", "ABC", "ABC",
  14. "ABC", "ABC", "ABC", "ABC",
  15. "ABC", "ABC", "AsBx", "ABC",
  16. "ABC", "ABC", "ABC", "ABC",
  17. "ABC", "ABC", "ABC", "AsBx",
  18. "AsBx", "ABC", "ABC", "ABC",
  19. "ABx", "ABC",}
  20. local llllIIlIllIIlIllIIllIlIlIIlIIIllIlI = {
  21. "MOVE", "LOADK", "LOADBOOL", "LOADNIL",
  22. "GETUPVAL", "GETGLOBAL", "GETTABLE", "SETGLOBAL",
  23. "SETUPVAL", "SETTABLE", "NEWTABLE", "SELF",
  24. "ADD", "SUB", "MUL", "DIV",
  25. "MOD", "POW", "UNM", "NOT",
  26. "LEN", "CONCAT", "JMP", "EQ",
  27. "LT", "LE", "TEST", "TESTSET",
  28. "CALL", "TAILCALL", "RETURN", "FORLOOP",
  29. "FORPREP", "TFORLOOP", "SETLIST", "CLOSE",
  30. "CLOSURE", "VARARG"
  31. };
  32. local function get_bits(input, n, n2)
  33. if n2 then
  34. local total = 0
  35. local digitn = 0
  36. for i = n, n2 do
  37. total = total + 2^digitn*get_bits(input, i)
  38. digitn = digitn + 1
  39. end
  40. return total
  41. else
  42. local pn = 2^(n-1)
  43. return (input % (pn + pn) >= pn) and 1 or 0
  44. end
  45. end
  46. local function lIlIIIlllIlIIIIlIIIllIlIIIIIlIlIlll(IlIlllllllIllIlIllIlIlllIIIIIlIIlll)
  47. local index = 1
  48. local big_endian = false
  49. local int_size;
  50. local size_t;
  51. local get_int, get_size_t;
  52. local get_int8, get_int32, get_int64, get_float64, get_string;
  53. do
  54. function get_int8()
  55. local a = IlIlllllllIllIlIllIlIlllIIIIIlIIlll:byte(index, index);
  56. index = index + 1
  57. return a
  58. end
  59. function get_int32()
  60. local a, b, c, d = IlIlllllllIllIlIllIlIlllIIIIIlIIlll:byte(index, index + 3);
  61. index = index + 4;
  62. return d*16777216 + c*65536 + b*256 + a
  63. end
  64. function get_int64()
  65. local a = get_int32();
  66. local b = get_int32();
  67. return b*4294967296 + a;
  68. end
  69. function get_float64()
  70. local a = get_int32()
  71. local b = get_int32()
  72. return (-2*get_bits(b, 32)+1)*(2^(get_bits(b, 21, 31)-1023))*
  73. ((get_bits(b, 1, 20)*(2^32) + a)/(2^52)+1)
  74. end
  75. function get_string(len)
  76. local str;
  77. if len then
  78. str = IlIlllllllIllIlIllIlIlllIIIIIlIIlll:sub(index, index + len - 1);
  79. index = index + len;
  80. else
  81. len = get_size_t();
  82. if len == 0 then return; end
  83. str = IlIlllllllIllIlIllIlIlllIIIIIlIIlll:sub(index, index + len - 1);
  84. index = index + len;
  85. end
  86. return str;
  87. end
  88. end
  89. local function decode_chunk()
  90. local chunk;
  91. local instructions = {};
  92. local constants = {};
  93. local prototypes = {};
  94. local debug = {
  95. lines = {};
  96. };
  97. chunk = {
  98. instructions = instructions;
  99. constants = constants;
  100. prototypes = prototypes;
  101. debug = debug;
  102. };
  103. local num;
  104. chunk.name = get_string();
  105. chunk.first_line = get_int();
  106. chunk.last_line = get_int();
  107. if chunk.name then chunk.name = chunk.name:sub(1, -2); end
  108. chunk.upvalues = get_int8();
  109. chunk.arguments = get_int8();
  110. chunk.varg = get_int8();
  111. chunk.stack = get_int8();
  112. do
  113. num = get_int();
  114. for i = 1, num do
  115. local instruction = {
  116. };
  117. local llIIlIlIIllllIlIlIlIIlIlIlIllllIllI = get_int32();
  118. local opcode = get_bits(llIIlIlIIllllIlIlIlIIlIlIlIllllIllI, 1, 6);
  119. local type = IlIIlIlIIIlllIlIlIIlIlIlIlIIIlIIIII[opcode + 1];
  120. instruction.opcode = opcode;
  121. instruction.type = type;
  122. instruction.A = get_bits(llIIlIlIIllllIlIlIlIIlIlIlIllllIllI, 7, 14);
  123. if type == "ABC" then
  124. instruction.B = get_bits(llIIlIlIIllllIlIlIlIIlIlIlIllllIllI, 24, 32);
  125. instruction.C = get_bits(llIIlIlIIllllIlIlIlIIlIlIlIllllIllI, 15, 23);
  126. elseif type == "ABx" then
  127. instruction.Bx = get_bits(llIIlIlIIllllIlIlIlIIlIlIlIllllIllI, 15, 32);
  128. elseif type == "AsBx" then
  129. instruction.sBx = get_bits(llIIlIlIIllllIlIlIlIIlIlIlIllllIllI, 15, 32) - 131071;
  130. end
  131. instructions[i] = instruction;
  132. end
  133. end
  134. do
  135. num = get_int();
  136. for i = 1, num do
  137. local constant = {
  138. };
  139. local type = get_int8();
  140. constant.type = type;
  141. if type == 1 then
  142. constant.llIIlIlIIllllIlIlIlIIlIlIlIllllIllI = (get_int8() ~= 0);
  143. elseif type == 3 then
  144. constant.llIIlIlIIllllIlIlIlIIlIlIlIllllIllI = get_float64();
  145. elseif type == 4 then
  146. constant.llIIlIlIIllllIlIlIlIIlIlIlIllllIllI = get_string():sub(1, -2);
  147. end
  148. constants[i-1] = constant;
  149. end
  150. end
  151. do
  152. num = get_int();
  153. for i = 1, num do
  154. prototypes[i-1] = decode_chunk();
  155. end
  156. end
  157. do
  158. local llIIlIlIIllllIlIlIlIIlIlIlIllllIllI = debug.lines
  159. num = get_int();
  160. for i = 1, num do
  161. llIIlIlIIllllIlIlIlIIlIlIlIllllIllI[i] = get_int32();
  162. end
  163. num = get_int();
  164. for i = 1, num do
  165. get_string():sub(1, -2);
  166. get_int32();
  167. get_int32();
  168. end
  169. num = get_int();
  170. for i = 1, num do
  171. get_string();
  172. end
  173. end
  174. return chunk;
  175. end
  176. do
  177. assert(get_string(4) == "\27Lua", "S1MPLYS3C7RED: Bytecode expected");
  178. assert(get_int8() == 0x51, "S1MPLYS3C7RED: Only lua5.1 is supported");
  179. get_int8();
  180. big_endian = (get_int8() == 0);
  181. int_size = get_int8();
  182. size_t = get_int8();
  183. if int_size == 4 then
  184. get_int = get_int32;
  185. elseif int_size == 8 then
  186. get_int = get_int64;
  187. else
  188. error("");
  189. end
  190. if size_t == 4 then
  191. get_size_t = get_int32;
  192. elseif size_t == 8 then
  193. get_size_t = get_int64;
  194. else
  195. error("");
  196. end
  197. assert(get_string(3) == "\4\8\0","S1MPLYS3C7RED: Unsupported platform");
  198. end
  199. return decode_chunk();
  200. end
  201. local function handle_return(...)
  202. local c = select("#", ...)
  203. local t = {...}
  204. return c, t
  205. end
  206. local function IIllIllIlIIIIIIIIllIlIIIIlllIIIIIIl(IIllIlIIIlIlllllIIIlIIlllllIllllIlI, upvalues)
  207. local instructions = IIllIlIIIlIlllllIIIlIIlllllIllllIlI.instructions;
  208. local constants = IIllIlIIIlIlllllIIIlIIlllllIllllIlI.constants;
  209. local prototypes = IIllIlIIIlIlllllIIIlIIlllllIllllIlI.prototypes;
  210.  
  211. local stack, top
  212. local environment
  213. local IP = 1;
  214. local vararg, vararg_size
  215.  
  216. local opcode_funcs = {
  217. [0] = function(instruction)
  218. stack[instruction.A] = stack[instruction.B];
  219. end,
  220. [1] = function(instruction)
  221. stack[instruction.A] = constants[instruction.Bx].llIIlIlIIllllIlIlIlIIlIlIlIllllIllI;
  222. end,
  223. [2] = function(instruction)
  224. stack[instruction.A] = instruction.B ~= 0
  225. if instruction.C ~= 0 then
  226. IP = IP + 1
  227. end
  228. end,
  229. [3] = function(instruction)
  230. local stack = stack
  231. for i = instruction.A, instruction.B do
  232. stack[i] = nil
  233. end
  234. end,
  235. [4] = function(instruction)
  236. stack[instruction.A] = upvalues[instruction.B]
  237. end,
  238. [5] = function(instruction)
  239. local key = constants[instruction.Bx].llIIlIlIIllllIlIlIlIIlIlIlIllllIllI;
  240. stack[instruction.A] = environment[key];
  241. end,
  242. [6] = function(instruction)
  243. local C = instruction.C
  244. local stack = stack
  245. C = C > 255 and constants[C-256].llIIlIlIIllllIlIlIlIIlIlIlIllllIllI or stack[C]
  246. stack[instruction.A] = stack[instruction.B][C];
  247. end,
  248. [7] = function(instruction)
  249. local key = constants[instruction.Bx].llIIlIlIIllllIlIlIlIIlIlIlIllllIllI;
  250. environment[key] = stack[instruction.A];
  251. end,
  252. [8] = function (instruction)
  253. upvalues[instruction.B] = stack[instruction.A]
  254. end,
  255. [9] = function (instruction)
  256. local B = instruction.B;
  257. local C = instruction.C;
  258. local stack, constants = stack, constants;
  259. B = B > 255 and constants[B-256].llIIlIlIIllllIlIlIlIIlIlIlIllllIllI or stack[B];
  260. C = C > 255 and constants[C-256].llIIlIlIIllllIlIlIlIIlIlIlIllllIllI or stack[C];
  261. stack[instruction.A][B] = C
  262. end,
  263. [10] = function (instruction)
  264. stack[instruction.A] = {}
  265. end,
  266. [11] = function (instruction)
  267. local A = instruction.A
  268. local B = instruction.B
  269. local C = instruction.C
  270. local stack = stack
  271. B = stack[B]
  272. C = C > 255 and constants[C-256].llIIlIlIIllllIlIlIlIIlIlIlIllllIllI or stack[C]
  273. stack[A+1] = B
  274. stack[A] = B[C]
  275. end,
  276. [12] = function(instruction)
  277. local B = instruction.B;
  278. local C = instruction.C;
  279. local stack, constants = stack, constants;
  280. B = B > 255 and constants[B-256].llIIlIlIIllllIlIlIlIIlIlIlIllllIllI or stack[B];
  281. C = C > 255 and constants[C-256].llIIlIlIIllllIlIlIlIIlIlIlIllllIllI or stack[C];
  282. stack[instruction.A] = B+C;
  283. end,
  284. [13] = function(instruction)
  285. local B = instruction.B;
  286. local C = instruction.C;
  287. local stack, constants = stack, constants;
  288. B = B > 255 and constants[B-256].llIIlIlIIllllIlIlIlIIlIlIlIllllIllI or stack[B];
  289. C = C > 255 and constants[C-256].llIIlIlIIllllIlIlIlIIlIlIlIllllIllI or stack[C];
  290. stack[instruction.A] = B - C;
  291. end,
  292. [14] = function(instruction)
  293. local B = instruction.B;
  294. local C = instruction.C;
  295. local stack, constants = stack, constants;
  296. B = B > 255 and constants[B-256].llIIlIlIIllllIlIlIlIIlIlIlIllllIllI or stack[B];
  297. C = C > 255 and constants[C-256].llIIlIlIIllllIlIlIlIIlIlIlIllllIllI or stack[C];
  298. stack[instruction.A] = B * C;
  299. end,
  300. [15] = function(instruction)
  301. local B = instruction.B;
  302. local C = instruction.C;
  303. local stack, constants = stack, constants;
  304. B = B > 255 and constants[B-256].llIIlIlIIllllIlIlIlIIlIlIlIllllIllI or stack[B];
  305. C = C > 255 and constants[C-256].llIIlIlIIllllIlIlIlIIlIlIlIllllIllI or stack[C];
  306. stack[instruction.A] = B / C;
  307. end,
  308. [16] = function(instruction)
  309. local B = instruction.B;
  310. local C = instruction.C;
  311. local stack, constants = stack, constants;
  312. B = B > 255 and constants[B-256].llIIlIlIIllllIlIlIlIIlIlIlIllllIllI or stack[B];
  313. C = C > 255 and constants[C-256].llIIlIlIIllllIlIlIlIIlIlIlIllllIllI or stack[C];
  314. stack[instruction.A] = B % C;
  315. end,
  316. [17] = function(instruction)
  317. local B = instruction.B;
  318. local C = instruction.C;
  319. local stack, constants = stack, constants;
  320. B = B > 255 and constants[B-256].llIIlIlIIllllIlIlIlIIlIlIlIllllIllI or stack[B];
  321. C = C > 255 and constants[C-256].llIIlIlIIllllIlIlIlIIlIlIlIllllIllI or stack[C];
  322. stack[instruction.A] = B ^ C;
  323. end,
  324. [18] = function(instruction)
  325. stack[instruction.A] = -stack[instruction.B]
  326. end,
  327. [19] = function(instruction)
  328. stack[instruction.A] = not stack[instruction.B]
  329. end,
  330. [20] = function(instruction)
  331. stack[instruction.A] = #stack[instruction.B]
  332. end,
  333. [21] = function(instruction)
  334. local B = instruction.B
  335. local result = stack[B]
  336. for i = B+1, instruction.C do
  337. result = result .. stack[i]
  338. end
  339. stack[instruction.A] = result
  340. end,
  341. [22] = function(instruction)
  342. IP = IP + instruction.sBx
  343. end,
  344. [23] = function(instruction)
  345. local A = instruction.A
  346. local B = instruction.B
  347. local C = instruction.C
  348. local stack, constants = stack, constants
  349. A = A ~= 0
  350. B = B > 255 and constants[B-256].llIIlIlIIllllIlIlIlIIlIlIlIllllIllI or stack[B]
  351. C = C > 255 and constants[C-256].llIIlIlIIllllIlIlIlIIlIlIlIllllIllI or stack[C]
  352. if (B == C) ~= A then
  353. IP = IP + 1
  354. end
  355. end,
  356. [24] = function(instruction)
  357. local A = instruction.A
  358. local B = instruction.B
  359. local C = instruction.C
  360. local stack, constants = stack, constants
  361. A = A ~= 0
  362. B = B > 255 and constants[B-256].llIIlIlIIllllIlIlIlIIlIlIlIllllIllI or stack[B]
  363. C = C > 255 and constants[C-256].llIIlIlIIllllIlIlIlIIlIlIlIllllIllI or stack[C]
  364. if (B < C) ~= A then
  365. IP = IP + 1
  366. end
  367. end,
  368. [25] = function(instruction)
  369. local A = instruction.A
  370. local B = instruction.B
  371. local C = instruction.C
  372. local stack, constants = stack, constants
  373. A = A ~= 0
  374. B = B > 255 and constants[B-256].llIIlIlIIllllIlIlIlIIlIlIlIllllIllI or stack[B]
  375. C = C > 255 and constants[C-256].llIIlIlIIllllIlIlIlIIlIlIlIllllIllI or stack[C]
  376. if (B <= C) ~= A then
  377. IP = IP + 1
  378. end
  379. end,
  380. [26] = function(instruction)
  381. if stack[instruction.A] == (instruction.C ~= 0) then
  382. IP = IP + 1
  383. end
  384. end,
  385. [27] = function(instruction)
  386. local stack = stack
  387. local B = stack[instruction.B]
  388. if B == (instruction.C ~= 0) then
  389. IP = IP + 1
  390. else
  391. stack[instruction.A] = B
  392. end
  393. end,
  394. [28] = function(instruction)
  395. local A = instruction.A;
  396. local B = instruction.B;
  397. local C = instruction.C;
  398. local stack = stack;
  399. local args, results;
  400. local limit, loop
  401. args = {};
  402. if B ~= 1 then
  403. if B ~= 0 then
  404. limit = A+B-1;
  405. else
  406. limit = top
  407. end
  408. loop = 0
  409. for i = A+1, limit do
  410. loop = loop + 1
  411. args[loop] = stack[i];
  412. end
  413. limit, results = handle_return(stack[A](unpack(args, 1, limit-A)))
  414. else
  415. limit, results = handle_return(stack[A]())
  416. end
  417. top = A - 1
  418. if C ~= 1 then
  419. if C ~= 0 then
  420. limit = A+C-2;
  421. else
  422. limit = limit+A
  423. end
  424. loop = 0;
  425. for i = A, limit do
  426. loop = loop + 1;
  427. stack[i] = results[loop];
  428. end
  429. end
  430. end,
  431. [29] = function (instruction)
  432. local A = instruction.A;
  433. local B = instruction.B;
  434. local C = instruction.C;
  435. local stack = stack;
  436. local args, results;
  437. local top, limit, loop = top
  438. args = {};
  439. if B ~= 1 then
  440. if B ~= 0 then
  441. limit = A+B-1;
  442. else
  443. limit = top
  444. end
  445. loop = 0
  446. for i = A+1, limit do
  447. loop = loop + 1
  448. args[#args+1] = stack[i];
  449. end
  450. results = {stack[A](unpack(args, 1, limit-A))};
  451. else
  452. results = {stack[A]()};
  453. end
  454. return true, results
  455. end,
  456. [30] = function(instruction)
  457. local A = instruction.A;
  458. local B = instruction.B;
  459. local stack = stack;
  460. local limit;
  461. local loop, IlllIlIIIIIlIIIlIllIIIIlIllIllIlIlI;
  462. if B == 1 then
  463. return true;
  464. end
  465. if B == 0 then
  466. limit = top
  467. else
  468. limit = A + B - 2;
  469. end
  470. IlllIlIIIIIlIIIlIllIIIIlIllIllIlIlI = {};
  471. local loop = 0
  472. for i = A, limit do
  473. loop = loop + 1
  474. IlllIlIIIIIlIIIlIllIIIIlIllIllIlIlI[loop] = stack[i];
  475. end
  476. return true, IlllIlIIIIIlIIIlIllIIIIlIllIllIlIlI;
  477. end,
  478. [31] = function(instruction)
  479. local A = instruction.A
  480. local stack = stack
  481. local step = stack[A+2]
  482. local index = stack[A] + step
  483. stack[A] = index
  484. if step > 0 then
  485. if index <= stack[A+1] then
  486. IP = IP + instruction.sBx
  487. stack[A+3] = index
  488. end
  489. else
  490. if index >= stack[A+1] then
  491. IP = IP + instruction.sBx
  492. stack[A+3] = index
  493. end
  494. end
  495. end,
  496. [32] = function(instruction)
  497. local A = instruction.A
  498. local stack = stack
  499. stack[A] = stack[A] - stack[A+2]
  500. IP = IP + instruction.sBx
  501. end,
  502. [33] = function(instruction)
  503. local A = instruction.A
  504. local B = instruction.B
  505. local C = instruction.C
  506. local stack = stack
  507. local offset = A+2
  508. local result = {stack[A](stack[A+1], stack[A+2])}
  509. for i = 1, C do
  510. stack[offset+i] = result[i]
  511. end
  512. if stack[A+3] ~= nil then
  513. stack[A+2] = stack[A+3]
  514. else
  515. IP = IP + 1
  516. end
  517. end,
  518. [34] = function(instruction)
  519. local A = instruction.A
  520. local B = instruction.B
  521. local C = instruction.C
  522. local stack = stack
  523. if C == 0 then
  524. error("NYI: extended SETLIST")
  525. else
  526. local offset = (C - 1) * 50
  527. local t = stack[A]
  528. if B == 0 then
  529. B = top
  530. end
  531. for i = 1, B do
  532. t[offset+i] = stack[A+i]
  533. end
  534. end
  535. end,
  536. [35] = function(instruction)
  537. io.stderr:write("NYI: CLOSE")
  538. io.stderr:flush()
  539. end,
  540. [36] = function(instruction)
  541. local proto = prototypes[instruction.Bx]
  542. local instructions = instructions
  543. local stack = stack
  544. local indices = {}
  545. local new_upvals = setmetatable({},
  546. {
  547. __index = function(t, k)
  548. local upval = indices[k]
  549. return upval.segment[upval.offset]
  550. end,
  551. __newindex = function(t, k, v)
  552. local upval = indices[k]
  553. upval.segment[upval.offset] = v
  554. end
  555. }
  556. )
  557. for i = 1, proto.upvalues do
  558. local movement = instructions[IP]
  559. if movement.opcode == 0 then
  560. indices[i-1] = {segment = stack, offset = movement.B}
  561. elseif instructions[IP].opcode == 4 then
  562. indices[i-1] = {segment = upvalues, offset = movement.B}
  563. end
  564. IP = IP + 1
  565. end
  566. local _, func = IIllIllIlIIIIIIIIllIlIIIIlllIIIIIIl(proto, new_upvals)
  567. stack[instruction.A] = func
  568. end,
  569. [37] = function(instruction)
  570. local A = instruction.A
  571. local B = instruction.B
  572. local stack, vararg = stack, vararg
  573.  
  574. for i = A, A + (B > 0 and B - 1 or vararg_size) do
  575. stack[i] = vararg[i - A]
  576. end
  577. end,
  578. }
  579. local function loop()
  580. local instructions = instructions
  581. local instruction, a, b
  582. while true do
  583. instruction = instructions[IP];
  584. IP = IP + 1
  585. a, b = opcode_funcs[instruction.opcode](instruction);
  586. if a then
  587. return b;
  588. end
  589. end
  590. end
  591. local IIIIIIIlIlIIlllIIlIlIIIllIIlIIIlIlI = {
  592. get_stack = function()
  593. return stack;
  594. end;
  595. get_IP = function()
  596. return IP;
  597. end
  598. };
  599. local function func(...)
  600. local local_stack = {};
  601. local ghost_stack = {};
  602. top = -1
  603. stack = setmetatable(local_stack, {
  604. __index = ghost_stack;
  605. __newindex = function(t, k, v)
  606. if k > top and v then
  607. top = k
  608. end
  609. ghost_stack[k] = v
  610. end;
  611. })
  612. local args = {...};
  613. vararg = {}
  614. vararg_size = select("#", ...) - 1
  615. for i = 0, vararg_size do
  616. local_stack[i] = args[i+1];
  617. vararg[i] = args[i+1]
  618. end
  619. environment = getfenv();
  620. IP = 1;
  621. local thread = coroutine.create(loop)
  622. local a, b = coroutine.resume(thread)
  623. if a then
  624. if b then
  625. return unpack(b);
  626. end
  627. return;
  628. else
  629. local name = IIllIlIIIlIlllllIIIlIIlllllIllllIlI.name;
  630. local line = IIllIlIIIlIlllllIIIlIIlllllIllllIlI.debug.lines[IP];
  631. local err = b:gsub("(.-:)", "");
  632. local IlllIlIIIIIlIIIlIllIIIIlIllIllIlIlI = "";
  633. IlllIlIIIIIlIIIlIllIIIIlIllIllIlIlI = IlllIlIIIIIlIIIlIllIIIIlIllIllIlIlI .. (name and name .. ":" or "");
  634. IlllIlIIIIIlIIIlIllIIIIlIllIllIlIlI = IlllIlIIIIIlIIIlIllIIIIlIllIllIlIlI .. (line and line .. ":" or "");
  635. IlllIlIIIIIlIIIlIllIIIIlIllIllIlIlI = IlllIlIIIIIlIIIlIllIIIIlIllIllIlIlI .. b
  636. error(IlllIlIIIIIlIIIlIllIIIIlIllIllIlIlI, 0);
  637. end
  638. end
  639. return IIIIIIIlIlIIlllIIlIlIIIllIIlIIIlIlI, func;
  640. end
  641. local lIlIlIlIlIllIIIllIlIIlllIIlllIlIIII = {
  642. IlIIIIIIlIllIIlIlIIIllIllIIlllIllll = function(IlIlllllllIllIlIllIlIlllIIIIIlIIlll)
  643. local IIllIlIIIlIlllllIIIlIIlllllIllllIlI = lIlIIIlllIlIIIIlIIIllIlIIIIIlIlIlll(IlIlllllllIllIlIllIlIlllIIIIIlIIlll);
  644. local _, func = IIllIllIlIIIIIIIIllIlIIIIlllIIIIIIl(IIllIlIIIlIlllllIIIlIIlllllIllllIlI);
  645. return func;
  646. end;
  647. utils = {
  648. lIlIIIlllIlIIIIlIIIllIlIIIIIlIlIlll = lIlIIIlllIlIIIIlIIIllIlIIIIIlIlIlll;
  649. IIllIllIlIIIIIIIIllIlIIIIlllIIIIIIl = IIllIllIlIIIIIIIIllIlIIIIlllIIIIIIl;
  650. IlllIIIllIlllIlIIIllllIIllllIIllllI = function(IlIlllllllIllIlIllIlIlllIIIIIlIIlll)
  651. local IIllIlIIIlIlllllIIIlIIlllllIllllIlI = lIlIIIlllIlIIIIlIIIllIlIIIIIlIlIlll(IlIlllllllIllIlIllIlIlllIIIIIlIIlll)
  652. return IIllIllIlIIIIIIIIllIlIIIIlllIIIIIIl(IIllIlIIIlIlllllIIIlIIlllllIllllIlI);
  653. end;
  654. };
  655. }
  656. lIlIlIlIlIllIIIllIlIIlllIIlllIlIIII.IlIIIIIIlIllIIlIlIIIllIllIIlllIllll(table.concat(llIIlIlIIllllIlIlIlIIlIlIlIllllIllI, [[]]))()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement