cubing 0.34.6 → 0.35.1

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.
Files changed (109) hide show
  1. package/dist/esm/alg/index.js +1 -1
  2. package/dist/esm/bluetooth/index.js +6 -6
  3. package/dist/esm/bluetooth/index.js.map +3 -3
  4. package/dist/esm/{chunk-YUBK6NHL.js → chunk-ALNR2DLK.js} +34 -18
  5. package/dist/esm/chunk-ALNR2DLK.js.map +7 -0
  6. package/dist/esm/{chunk-KJUHIZ2G.js → chunk-EV25IJFC.js} +2 -2
  7. package/dist/esm/{chunk-KJUHIZ2G.js.map → chunk-EV25IJFC.js.map} +1 -1
  8. package/dist/esm/{chunk-P6GSDAYY.js → chunk-IN66QSRW.js} +2 -2
  9. package/dist/esm/{chunk-P6GSDAYY.js.map → chunk-IN66QSRW.js.map} +0 -0
  10. package/dist/esm/{chunk-HBJNS3VF.js → chunk-KLI2E737.js} +2 -2
  11. package/dist/esm/{chunk-HBJNS3VF.js.map → chunk-KLI2E737.js.map} +0 -0
  12. package/dist/esm/{chunk-XNFY5XVP.js → chunk-LS3POB3Y.js} +8 -12
  13. package/dist/esm/chunk-LS3POB3Y.js.map +7 -0
  14. package/dist/esm/{chunk-WN53PIUG.js → chunk-M4VSKPYT.js} +6 -6
  15. package/dist/esm/{chunk-WN53PIUG.js.map → chunk-M4VSKPYT.js.map} +1 -1
  16. package/dist/esm/{chunk-P7STLPTG.js → chunk-NHLJDRPU.js} +3 -3
  17. package/dist/esm/{chunk-P7STLPTG.js.map → chunk-NHLJDRPU.js.map} +0 -0
  18. package/dist/esm/{chunk-STXBFKP7.js → chunk-UMKR43AG.js} +2 -2
  19. package/dist/esm/{chunk-STXBFKP7.js.map → chunk-UMKR43AG.js.map} +0 -0
  20. package/dist/esm/{chunk-RMIAXF22.js → chunk-VDU7G35J.js} +52 -10
  21. package/dist/esm/chunk-VDU7G35J.js.map +7 -0
  22. package/dist/esm/{chunk-ELZ5WICP.js → chunk-VZP3KFTU.js} +6 -6
  23. package/dist/esm/chunk-VZP3KFTU.js.map +7 -0
  24. package/dist/esm/{chunk-JXIKYWF4.js → chunk-YNKPRDB4.js} +16 -16
  25. package/dist/esm/chunk-YNKPRDB4.js.map +7 -0
  26. package/dist/esm/{chunk-DFZ2CYSE.js → chunk-Z6WT2ASL.js} +4 -7
  27. package/dist/esm/{chunk-DFZ2CYSE.js.map → chunk-Z6WT2ASL.js.map} +2 -2
  28. package/dist/esm/{chunk-SXI3BVQT.js → chunk-ZMT2VR3H.js} +4 -4
  29. package/dist/esm/chunk-ZMT2VR3H.js.map +7 -0
  30. package/dist/esm/kpuzzle/index.js +2 -2
  31. package/dist/esm/notation/index.js +2 -2
  32. package/dist/esm/protocol/index.js +4 -4
  33. package/dist/esm/puzzle-geometry/index.js +1 -1
  34. package/dist/esm/puzzle-geometry/index.js.map +1 -1
  35. package/dist/esm/puzzles/index.js +4 -4
  36. package/dist/esm/puzzles-dynamic-megaminx-QPQBRZVY.js +224 -0
  37. package/dist/esm/puzzles-dynamic-megaminx-QPQBRZVY.js.map +7 -0
  38. package/dist/esm/{puzzles-dynamic-side-events-T2YVO2CD.js → puzzles-dynamic-side-events-D2VNVUXH.js} +62 -60
  39. package/dist/esm/puzzles-dynamic-side-events-D2VNVUXH.js.map +7 -0
  40. package/dist/esm/scramble/index.js +9 -9
  41. package/dist/esm/search/index.js +9 -9
  42. package/dist/esm/{search-dynamic-sgs-side-events-RBT77KLU.js → search-dynamic-sgs-side-events-RABA64EP.js} +6 -6
  43. package/dist/esm/{search-dynamic-sgs-side-events-RBT77KLU.js.map → search-dynamic-sgs-side-events-RABA64EP.js.map} +0 -0
  44. package/dist/esm/{search-dynamic-sgs-unofficial-XVCNTLBX.js → search-dynamic-sgs-unofficial-MQH2M2GS.js} +7 -7
  45. package/dist/esm/{search-dynamic-sgs-unofficial-XVCNTLBX.js.map → search-dynamic-sgs-unofficial-MQH2M2GS.js.map} +2 -2
  46. package/dist/esm/{search-dynamic-solve-3x3x3-QAWYKBYP.js → search-dynamic-solve-3x3x3-VY7R3CDP.js} +2 -2
  47. package/dist/esm/{search-dynamic-solve-3x3x3-QAWYKBYP.js.map → search-dynamic-solve-3x3x3-VY7R3CDP.js.map} +2 -2
  48. package/dist/esm/{search-dynamic-solve-4x4x4-6D3X6JPU.js → search-dynamic-solve-4x4x4-LWU4NFY4.js} +8 -8
  49. package/dist/esm/search-dynamic-solve-4x4x4-LWU4NFY4.js.map +7 -0
  50. package/dist/esm/{search-dynamic-solve-fto-L5CX2BTQ.js → search-dynamic-solve-fto-JJ32OJVM.js} +2 -2
  51. package/dist/esm/{search-dynamic-solve-fto-L5CX2BTQ.js.map → search-dynamic-solve-fto-JJ32OJVM.js.map} +1 -1
  52. package/dist/esm/{search-dynamic-solve-kilominx-ACTR53H2.js → search-dynamic-solve-kilominx-5GTXKEAX.js} +3 -3
  53. package/dist/esm/search-dynamic-solve-kilominx-5GTXKEAX.js.map +7 -0
  54. package/dist/esm/{search-dynamic-solve-master_tetraminx-4R5R7LC5.js → search-dynamic-solve-master_tetraminx-UF5FKJW6.js} +2 -2
  55. package/dist/esm/{search-dynamic-solve-master_tetraminx-4R5R7LC5.js.map → search-dynamic-solve-master_tetraminx-UF5FKJW6.js.map} +1 -1
  56. package/dist/esm/{search-dynamic-solve-sq1-CBPKRTVA.js → search-dynamic-solve-sq1-S6V3FTO2.js} +2 -2
  57. package/dist/esm/{search-dynamic-solve-sq1-CBPKRTVA.js.map → search-dynamic-solve-sq1-S6V3FTO2.js.map} +1 -1
  58. package/dist/esm/search-worker-inside-generated-string-PTO7TGLZ.js +4328 -0
  59. package/dist/esm/search-worker-inside-generated-string-PTO7TGLZ.js.map +7 -0
  60. package/dist/esm/search-worker-js-entry-GOZHBDMZ.js +17 -0
  61. package/dist/esm/search-worker-js-entry-GOZHBDMZ.js.map +7 -0
  62. package/dist/esm/{search-worker-ts-entry-JODGBUUR.js → search-worker-ts-entry-GRGPJCWU.js} +4 -4
  63. package/dist/esm/search-worker-ts-entry-GRGPJCWU.js.map +7 -0
  64. package/dist/esm/stream/index.js +1 -1
  65. package/dist/esm/twisty/index.js +17 -28
  66. package/dist/esm/twisty/index.js.map +2 -2
  67. package/dist/esm/{twisty-dynamic-3d-ANH7V4CU.js → twisty-dynamic-3d-G5CFOW3T.js} +6 -6
  68. package/dist/esm/{twisty-dynamic-3d-ANH7V4CU.js.map → twisty-dynamic-3d-G5CFOW3T.js.map} +1 -1
  69. package/dist/esm/{twsearch-T6KOUE6W.js → twsearch-H72D4ZDN.js} +6 -5
  70. package/dist/esm/twsearch-H72D4ZDN.js.map +7 -0
  71. package/dist/esm/twsearch-VUC3P72V-BNSTYRDR.js +3155 -0
  72. package/dist/esm/twsearch-VUC3P72V-BNSTYRDR.js.map +7 -0
  73. package/dist/types/{Alg-8b4e9255.d.ts → Alg-c6770822.d.ts} +6 -6
  74. package/dist/types/{KState-0da22515.d.ts → KState-fa1880c8.d.ts} +17 -17
  75. package/dist/types/{TwizzleLink-f790571d.d.ts → TwizzleLink-9873b9f1.d.ts} +82 -61
  76. package/dist/types/alg/index.d.ts +5 -5
  77. package/dist/types/bluetooth/index.d.ts +6 -6
  78. package/dist/types/{bluetooth-puzzle-62e2b423.d.ts → bluetooth-puzzle-1cb7db76.d.ts} +2 -2
  79. package/dist/types/kpuzzle/index.d.ts +2 -2
  80. package/dist/types/notation/index.d.ts +1 -1
  81. package/dist/types/{outside-074a0f79.d.ts → outside-f29a27bc.d.ts} +2 -2
  82. package/dist/types/parseAlg-d2c83795.d.ts +9 -0
  83. package/dist/types/protocol/index.d.ts +3 -3
  84. package/dist/types/puzzle-geometry/index.d.ts +3 -3
  85. package/dist/types/puzzles/index.d.ts +5 -5
  86. package/dist/types/scramble/index.d.ts +3 -3
  87. package/dist/types/search/index.d.ts +3 -3
  88. package/dist/types/stream/index.d.ts +5 -5
  89. package/dist/types/twisty/index.d.ts +5 -5
  90. package/package.json +23 -23
  91. package/src/README.md +10 -0
  92. package/dist/esm/chunk-ELZ5WICP.js.map +0 -7
  93. package/dist/esm/chunk-JXIKYWF4.js.map +0 -7
  94. package/dist/esm/chunk-RMIAXF22.js.map +0 -7
  95. package/dist/esm/chunk-SXI3BVQT.js.map +0 -7
  96. package/dist/esm/chunk-XNFY5XVP.js.map +0 -7
  97. package/dist/esm/chunk-YUBK6NHL.js.map +0 -7
  98. package/dist/esm/puzzles-dynamic-side-events-T2YVO2CD.js.map +0 -7
  99. package/dist/esm/search-dynamic-solve-4x4x4-6D3X6JPU.js.map +0 -7
  100. package/dist/esm/search-dynamic-solve-kilominx-ACTR53H2.js.map +0 -7
  101. package/dist/esm/search-worker-inside-generated-string-A5J72AEN.js +0 -4068
  102. package/dist/esm/search-worker-inside-generated-string-A5J72AEN.js.map +0 -7
  103. package/dist/esm/search-worker-js-entry-6JKK757U.js +0 -17
  104. package/dist/esm/search-worker-js-entry-6JKK757U.js.map +0 -7
  105. package/dist/esm/search-worker-ts-entry-JODGBUUR.js.map +0 -7
  106. package/dist/esm/twsearch-PTN3QM26-XSTDBYFP.js +0 -3163
  107. package/dist/esm/twsearch-PTN3QM26-XSTDBYFP.js.map +0 -7
  108. package/dist/esm/twsearch-T6KOUE6W.js.map +0 -7
  109. package/dist/types/parseAlg-2dd4194b.d.ts +0 -9
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../src/cubing/vendor/cstimer/src/js/lib/mathlib.ts", "../../src/cubing/vendor/cstimer/src/js/scramble/444-solver.ts"],
4
- "sourcesContent": ["const Cnk: number[][] = [];\nconst fact = [1];\nfor (let i = 0; i < 32; ++i) {\n Cnk[i] = [];\n for (let j = 0; j < 32; ++j) {\n Cnk[i][j] = 0;\n }\n}\nfor (let i = 0; i < 32; ++i) {\n Cnk[i][0] = Cnk[i][i] = 1;\n fact[i + 1] = fact[i] * (i + 1);\n for (let j = 1; j < i; ++j) {\n Cnk[i][j] = Cnk[i - 1][j - 1] + Cnk[i - 1][j];\n }\n}\n\nfunction circle(arr: number[], ...moreArgs: number[]) {\n const length = moreArgs.length;\n const temp = arr[moreArgs[length - 1]];\n for (let i = length; i > 0; i--) {\n arr[moreArgs[i]] = arr[moreArgs[i - 1]];\n }\n arr[moreArgs[0]] = temp;\n return circle;\n}\n\nfunction set8Perm(arr: number[], idx: number, n?: number, even?: number) {\n n = (n || 8) - 1;\n let val = 0x76543210;\n let prt = 0;\n even ??= 0;\n if (even < 0) {\n idx <<= 1;\n }\n for (let i = 0; i < n; ++i) {\n const p = fact[n - i];\n let v = ~~(idx / p);\n prt ^= v;\n idx %= p;\n v <<= 2;\n arr[i] = (val >> v) & 7;\n const m = (1 << v) - 1;\n val = (val & m) + ((val >> 4) & ~m);\n }\n if (even < 0 && (prt & 1) !== 0) {\n arr[n] = arr[n - 1];\n arr[n - 1] = val & 7;\n } else {\n arr[n] = val & 7;\n }\n return arr;\n}\n\nexport { Cnk, set8Perm, circle };\n", "// @ts-nocheck\n\nimport { Alg } from \"../../../../../alg\";\nimport { random333Scramble as getRandomScramble333 } from \"../../../../../search/inside/solve/puzzles/3x3x3\";\nimport { circle, Cnk, set8Perm } from \"../lib/mathlib\";\nimport { randomUIntBelow } from \"random-uint-below\";\nimport { mustBeInsideWorker } from \"../../../../../search/inside/inside-worker\";\n\nfunction createArray(length1: number, length2?: number) {\n const result = new Array<number[]>(length1);\n if (length2 !== undefined) {\n for (let i = 0; i < length1; i++) {\n result[i] = new Array(length2);\n }\n }\n return result;\n}\n\nlet _: any;\nconst seedTable: Record<number, any> = {};\nconst CM$ = {};\nconst Q$Object = 0;\nconst Q$Serializable = 30;\nconst Q$Center1 = 21;\nconst Q$CornerCube = 22;\nconst Q$Edge3 = 23;\nconst Q$FullCube_0 = 24;\nconst Q$FullCube_$1 = 25;\nconst Q$Comparable = 34;\nconst Q$Search_0 = 26;\nconst Q$Object_$1 = 40;\n\nfunction newSeed(id: number) {\n return new seedTable[id]();\n}\n\nfunction defineSeed(\n id: number,\n superSeed: number,\n castableTypeMap: any, // TODO\n ...moreArgs: any[]\n) {\n let seed = seedTable[id];\n if (seed && !seed.___clazz$) {\n _ = seed.prototype;\n } else {\n !seed && (seed = seedTable[id] = function () {});\n _ = seed.prototype = superSeed < 0 ? {} : newSeed(superSeed);\n _.castableTypeMap$ = castableTypeMap;\n }\n for (const arg of moreArgs) {\n arg.prototype = _;\n }\n if (seed.___clazz$) {\n _.___clazz$ = seed.___clazz$;\n seed.___clazz$ = null;\n }\n}\n\nfunction makeCastMap(a: number[]) {\n const result: Record<number, number> = {};\n for (let i_0 = 0, c = a.length; i_0 < c; ++i_0) {\n result[a[i_0]] = 1;\n }\n return result;\n}\n\ndefineSeed(1, -1, CM$);\n\n_.value = null;\n\nfunction Array_0() {}\n\nfunction createFrom(a: any, length_0: number) {\n const result = createFromSeed(0, length_0);\n initValues(a.___clazz$, a.castableTypeMap$, a.queryId$, result);\n return result;\n}\n\nfunction createFromSeed(seedType: number, length_0: number) {\n const array = new Array(length_0);\n if (seedType === 3) {\n for (let i_0 = 0; i_0 < length_0; ++i_0) {\n const value = {\n m: 0,\n l: 0,\n h: 0,\n };\n value.l = value.m = value.h = 0;\n array[i_0] = value;\n }\n } else if (seedType > 0) {\n const value = [null, 0, false][seedType];\n for (let i_0 = 0; i_0 < length_0; ++i_0) {\n array[i_0] = value;\n }\n }\n return array;\n}\n\nfunction initDim(arrayClass, castableTypeMap, queryId, length_0, seedType) {\n const result = createFromSeed(seedType, length_0);\n initValues(arrayClass, castableTypeMap, queryId, result);\n return result;\n}\n\nfunction initValues(arrayClass, castableTypeMap, queryId, array) {\n $clinit_Array$ExpandoWrapper();\n wrapArray(array, expandoNames_0, expandoValues_0);\n array.___clazz$ = arrayClass;\n array.castableTypeMap$ = castableTypeMap;\n array.queryId$ = queryId;\n return array;\n}\n\nfunction setCheck(array, index, value) {\n return (array[index] = value);\n}\n\ndefineSeed(73, 1, {}, Array_0);\n_.queryId$ = 0;\n\nlet ran$clinit_Array$ExpandoWrapper = false;\nfunction $clinit_Array$ExpandoWrapper() {\n if (ran$clinit_Array$ExpandoWrapper) {\n return;\n }\n ran$clinit_Array$ExpandoWrapper = true;\n expandoNames_0 = [];\n expandoValues_0 = [];\n initExpandos(new Array_0(), expandoNames_0, expandoValues_0);\n}\n\nfunction initExpandos(protoType, expandoNames, expandoValues) {\n let i_0 = 0;\n let value;\n for (const name_0 in protoType) {\n // rome-ignore lint/nursery/noConditionalAssignment: <explanation>\n if ((value = protoType[name_0])) {\n expandoNames[i_0] = name_0;\n expandoValues[i_0] = value;\n ++i_0;\n }\n }\n}\n\nfunction wrapArray(array, expandoNames, expandoValues) {\n $clinit_Array$ExpandoWrapper();\n for (let i_0 = 0, c = expandoNames.length; i_0 < c; ++i_0) {\n array[expandoNames[i_0]] = expandoValues[i_0];\n }\n}\n\nlet expandoNames_0;\nlet expandoValues_0;\n\nfunction canCast(src, dstId) {\n return src.castableTypeMap$ && !!src.castableTypeMap$[dstId];\n}\n\nfunction instanceOf(src, dstId) {\n return src !== null && canCast(src, dstId);\n}\n\nlet ran$clinit_Center1 = false;\nfunction $clinit_Center1() {\n if (ran$clinit_Center1) {\n return false;\n }\n ran$clinit_Center1 = true;\n ctsmv = createArray(15582, 36);\n sym2raw = createArray(15582);\n csprun = createArray(15582);\n symmult = createArray(48, 48);\n symmove = createArray(48, 36);\n syminv = createArray(48);\n finish_0 = createArray(48);\n}\n\nfunction $$init_1(this$static) {\n this$static.ct = createArray(24);\n}\n\nfunction $equals(this$static, obj) {\n let c;\n let i_0;\n if (instanceOf(obj, Q$Center1)) {\n c = obj;\n for (i_0 = 0; i_0 < 24; ++i_0) {\n if (this$static.ct[i_0] !== c.ct[i_0]) {\n return false;\n }\n }\n return true;\n }\n return false;\n}\n\nfunction $get_1(this$static) {\n let i_0;\n let idx;\n let r;\n idx = 0;\n r = 8;\n for (i_0 = 23; i_0 >= 0; --i_0) {\n this$static.ct[i_0] === 1 && (idx += Cnk[i_0][r--]);\n }\n return idx;\n}\n\nfunction $getsym(this$static) {\n let cord;\n let j;\n if (raw2sym !== null) {\n return raw2sym[$get_1(this$static)];\n }\n for (j = 0; j < 48; ++j) {\n cord = raw2sym_0($get_1(this$static));\n if (cord !== -1) {\n return cord * 64 + j;\n }\n $rot(this$static, 0);\n j % 2 === 1 && $rot(this$static, 1);\n j % 8 === 7 && $rot(this$static, 2);\n j % 16 === 15 && $rot(this$static, 3);\n }\n}\n\nfunction $move(this$static, m_0) {\n const key = m_0 % 3;\n m_0 = ~~(m_0 / 3);\n switch (m_0) {\n case 0: {\n swap(this$static.ct, 0, 1, 2, 3, key);\n break;\n }\n case 1: {\n swap(this$static.ct, 16, 17, 18, 19, key);\n break;\n }\n case 2: {\n swap(this$static.ct, 8, 9, 10, 11, key);\n break;\n }\n case 3: {\n swap(this$static.ct, 4, 5, 6, 7, key);\n break;\n }\n case 4: {\n swap(this$static.ct, 20, 21, 22, 23, key);\n break;\n }\n case 5: {\n swap(this$static.ct, 12, 13, 14, 15, key);\n break;\n }\n case 6: {\n swap(this$static.ct, 0, 1, 2, 3, key);\n swap(this$static.ct, 8, 20, 12, 16, key);\n swap(this$static.ct, 9, 21, 13, 17, key);\n break;\n }\n case 7: {\n swap(this$static.ct, 16, 17, 18, 19, key);\n swap(this$static.ct, 1, 15, 5, 9, key);\n swap(this$static.ct, 2, 12, 6, 10, key);\n break;\n }\n case 8: {\n swap(this$static.ct, 8, 9, 10, 11, key);\n swap(this$static.ct, 2, 19, 4, 21, key);\n swap(this$static.ct, 3, 16, 5, 22, key);\n break;\n }\n case 9: {\n swap(this$static.ct, 4, 5, 6, 7, key);\n swap(this$static.ct, 10, 18, 14, 22, key);\n swap(this$static.ct, 11, 19, 15, 23, key);\n break;\n }\n case 10: {\n swap(this$static.ct, 20, 21, 22, 23, key);\n swap(this$static.ct, 0, 8, 4, 14, key);\n swap(this$static.ct, 3, 11, 7, 13, key);\n break;\n }\n case 11: {\n swap(this$static.ct, 12, 13, 14, 15, key);\n swap(this$static.ct, 1, 20, 7, 18, key);\n swap(this$static.ct, 0, 23, 6, 17, key);\n }\n }\n}\n\nfunction $rot(this$static, r) {\n switch (r) {\n case 0: {\n $move(this$static, 19);\n $move(this$static, 28);\n break;\n }\n case 1: {\n $move(this$static, 21);\n $move(this$static, 32);\n break;\n }\n case 2: {\n swap(this$static.ct, 0, 3, 1, 2, 1);\n swap(this$static.ct, 8, 11, 9, 10, 1);\n swap(this$static.ct, 4, 7, 5, 6, 1);\n swap(this$static.ct, 12, 15, 13, 14, 1);\n swap(this$static.ct, 16, 19, 21, 22, 1);\n swap(this$static.ct, 17, 18, 20, 23, 1);\n break;\n }\n case 3: {\n $move(this$static, 18);\n $move(this$static, 29);\n $move(this$static, 24);\n $move(this$static, 35);\n }\n }\n}\n\nfunction $rotate(this$static, r) {\n let j;\n for (j = 0; j < r; ++j) {\n $rot(this$static, 0);\n j % 2 === 1 && $rot(this$static, 1);\n j % 8 === 7 && $rot(this$static, 2);\n j % 16 === 15 && $rot(this$static, 3);\n }\n}\n\nfunction $set_0(this$static, idx) {\n let i_0;\n let r;\n r = 8;\n for (i_0 = 23; i_0 >= 0; --i_0) {\n this$static.ct[i_0] = 0;\n if (idx >= Cnk[i_0][r]) {\n idx -= Cnk[i_0][r--];\n this$static.ct[i_0] = 1;\n }\n }\n}\n\nfunction $set_1(this$static, c) {\n let i_0;\n for (i_0 = 0; i_0 < 24; ++i_0) {\n this$static.ct[i_0] = c.ct[i_0];\n }\n}\n\nfunction Center1_0() {\n let i_0;\n $$init_1(this);\n for (i_0 = 0; i_0 < 8; ++i_0) {\n this.ct[i_0] = 1;\n }\n for (i_0 = 8; i_0 < 24; ++i_0) {\n this.ct[i_0] = 0;\n }\n}\n\nfunction Center1_1(c, urf) {\n let i_0;\n $$init_1(this);\n for (i_0 = 0; i_0 < 24; ++i_0) {\n this.ct[i_0] = ~~(c.ct[i_0] / 2) === urf ? 1 : 0;\n }\n}\n\nfunction Center1_2(ct) {\n let i_0;\n $$init_1(this);\n for (i_0 = 0; i_0 < 24; ++i_0) {\n this.ct[i_0] = ct[i_0];\n }\n}\n\nfunction createMoveTable() {\n let i_0;\n let m_0;\n const c = new Center1_0();\n const d = new Center1_0();\n for (i_0 = 0; i_0 < 15582; ++i_0) {\n $set_0(d, sym2raw[i_0]);\n for (m_0 = 0; m_0 < 36; ++m_0) {\n $set_1(c, d);\n $move(c, m_0);\n ctsmv[i_0][m_0] = $getsym(c);\n }\n }\n}\n\nfunction createPrun() {\n let check;\n let depth;\n let done;\n let i_0;\n let idx;\n let inv;\n let m_0;\n let select;\n fill_0(csprun);\n csprun[0] = 0;\n depth = 0;\n done = 1;\n while (done !== 15582) {\n inv = depth > 4;\n select = inv ? -1 : depth;\n check = inv ? depth : -1;\n ++depth;\n for (i_0 = 0; i_0 < 15582; ++i_0) {\n if (csprun[i_0] !== select) {\n continue;\n }\n for (m_0 = 0; m_0 < 27; ++m_0) {\n idx = ~~ctsmv[i_0][m_0] >>> 6;\n if (csprun[idx] !== check) {\n continue;\n }\n ++done;\n if (inv) {\n csprun[i_0] = depth;\n break;\n } else {\n csprun[idx] = depth;\n }\n }\n }\n }\n}\n\nfunction getSolvedSym(cube) {\n let check;\n let i_0;\n let j;\n const c = new Center1_2(cube.ct);\n for (j = 0; j < 48; ++j) {\n check = true;\n for (i_0 = 0; i_0 < 24; ++i_0) {\n if (c.ct[i_0] !== ~~(i_0 / 4)) {\n check = false;\n break;\n }\n }\n if (check) {\n return j;\n }\n $rot(c, 0);\n j % 2 === 1 && $rot(c, 1);\n j % 8 === 7 && $rot(c, 2);\n j % 16 === 15 && $rot(c, 3);\n }\n return -1;\n}\n\nfunction initSym_0() {\n let i_0;\n let j;\n let k_0;\n const c = new Center1_0();\n for (i_0 = 0; i_0 < 24; ++i_0) {\n c.ct[i_0] = i_0;\n }\n const d = new Center1_2(c.ct);\n const e = new Center1_2(c.ct);\n const f = new Center1_2(c.ct);\n for (i_0 = 0; i_0 < 48; ++i_0) {\n for (j = 0; j < 48; ++j) {\n for (k_0 = 0; k_0 < 48; ++k_0) {\n if ($equals(c, d)) {\n symmult[i_0][j] = k_0;\n k_0 === 0 && (syminv[i_0] = j);\n }\n $rot(d, 0);\n k_0 % 2 === 1 && $rot(d, 1);\n k_0 % 8 === 7 && $rot(d, 2);\n k_0 % 16 === 15 && $rot(d, 3);\n }\n $rot(c, 0);\n j % 2 === 1 && $rot(c, 1);\n j % 8 === 7 && $rot(c, 2);\n j % 16 === 15 && $rot(c, 3);\n }\n $rot(c, 0);\n i_0 % 2 === 1 && $rot(c, 1);\n i_0 % 8 === 7 && $rot(c, 2);\n i_0 % 16 === 15 && $rot(c, 3);\n }\n for (i_0 = 0; i_0 < 48; ++i_0) {\n $set_1(c, e);\n $rotate(c, syminv[i_0]);\n for (j = 0; j < 36; ++j) {\n $set_1(d, c);\n $move(d, j);\n $rotate(d, i_0);\n for (k_0 = 0; k_0 < 36; ++k_0) {\n $set_1(f, e);\n $move(f, k_0);\n if ($equals(f, d)) {\n symmove[i_0][j] = k_0;\n break;\n }\n }\n }\n }\n $set_0(c, 0);\n for (i_0 = 0; i_0 < 48; ++i_0) {\n finish_0[syminv[i_0]] = $get_1(c);\n $rot(c, 0);\n i_0 % 2 === 1 && $rot(c, 1);\n i_0 % 8 === 7 && $rot(c, 2);\n i_0 % 16 === 15 && $rot(c, 3);\n }\n}\n\nfunction initSym2Raw() {\n let count;\n let i_0;\n let idx;\n let j;\n const c = new Center1_0();\n const occ = createArray(22984);\n for (i_0 = 0; i_0 < 22984; i_0++) {\n occ[i_0] = 0;\n }\n count = 0;\n for (i_0 = 0; i_0 < 735471; ++i_0) {\n if ((occ[~~i_0 >>> 5] & (1 << (i_0 & 31))) === 0) {\n $set_0(c, i_0);\n for (j = 0; j < 48; ++j) {\n idx = $get_1(c);\n occ[~~idx >>> 5] |= 1 << (idx & 31);\n raw2sym !== null && (raw2sym[idx] = (count << 6) | syminv[j]);\n $rot(c, 0);\n j % 2 === 1 && $rot(c, 1);\n j % 8 === 7 && $rot(c, 2);\n j % 16 === 15 && $rot(c, 3);\n }\n sym2raw[count++] = i_0;\n }\n }\n}\n\nfunction raw2sym_0(n) {\n const m_0 = binarySearch_0(sym2raw, n);\n return m_0 >= 0 ? m_0 : -1;\n}\n\ndefineSeed(153, 1, makeCastMap([Q$Center1]), Center1_0, Center1_1, Center1_2);\n\nlet csprun;\nlet ctsmv;\nlet finish_0;\nlet raw2sym = null;\nlet sym2raw;\nlet syminv;\nlet symmove;\nlet symmult;\n\nlet ran$clinit_Center2 = false;\nfunction $clinit_Center2() {\n if (ran$clinit_Center2) {\n return;\n }\n ran$clinit_Center2 = true;\n rlmv = createArray(70, 28);\n ctmv = createArray(6435, 28);\n rlrot = createArray(70, 16);\n ctrot = createArray(6435, 16);\n ctprun = createArray(450450);\n pmv = [\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0,\n 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0,\n ];\n}\n\nfunction $getct(this$static) {\n let i_0;\n let idx;\n let r;\n idx = 0;\n r = 8;\n for (i_0 = 14; i_0 >= 0; --i_0) {\n this$static.ct[i_0] !== this$static.ct[15] && (idx += Cnk[i_0][r--]);\n }\n return idx;\n}\n\nfunction $getrl(this$static) {\n let i_0;\n let idx;\n let r;\n idx = 0;\n r = 4;\n for (i_0 = 6; i_0 >= 0; --i_0) {\n this$static.rl[i_0] !== this$static.rl[7] && (idx += Cnk[i_0][r--]);\n }\n return idx * 2 + this$static.parity;\n}\n\nfunction $move_0(this$static, m_0) {\n this$static.parity ^= pmv[m_0];\n const key = m_0 % 3;\n m_0 = ~~(m_0 / 3);\n switch (m_0) {\n case 0: {\n swap(this$static.ct, 0, 1, 2, 3, key);\n break;\n }\n case 1: {\n swap(this$static.rl, 0, 1, 2, 3, key);\n break;\n }\n case 2: {\n swap(this$static.ct, 8, 9, 10, 11, key);\n break;\n }\n case 3: {\n swap(this$static.ct, 4, 5, 6, 7, key);\n break;\n }\n case 4: {\n swap(this$static.rl, 4, 5, 6, 7, key);\n break;\n }\n case 5: {\n swap(this$static.ct, 12, 13, 14, 15, key);\n break;\n }\n case 6: {\n swap(this$static.ct, 0, 1, 2, 3, key);\n swap(this$static.rl, 0, 5, 4, 1, key);\n swap(this$static.ct, 8, 9, 12, 13, key);\n break;\n }\n case 7: {\n swap(this$static.rl, 0, 1, 2, 3, key);\n swap(this$static.ct, 1, 15, 5, 9, key);\n swap(this$static.ct, 2, 12, 6, 10, key);\n break;\n }\n case 8: {\n swap(this$static.ct, 8, 9, 10, 11, key);\n swap(this$static.rl, 0, 3, 6, 5, key);\n swap(this$static.ct, 3, 2, 5, 4, key);\n break;\n }\n case 9: {\n swap(this$static.ct, 4, 5, 6, 7, key);\n swap(this$static.rl, 3, 2, 7, 6, key);\n swap(this$static.ct, 11, 10, 15, 14, key);\n break;\n }\n case 10: {\n swap(this$static.rl, 4, 5, 6, 7, key);\n swap(this$static.ct, 0, 8, 4, 14, key);\n swap(this$static.ct, 3, 11, 7, 13, key);\n break;\n }\n case 11: {\n swap(this$static.ct, 12, 13, 14, 15, key);\n swap(this$static.rl, 1, 4, 7, 2, key);\n swap(this$static.ct, 1, 0, 7, 6, key);\n }\n }\n}\n\nfunction $rot_0(this$static, r) {\n switch (r) {\n case 0: {\n $move_0(this$static, 19);\n $move_0(this$static, 28);\n break;\n }\n case 1: {\n $move_0(this$static, 21);\n $move_0(this$static, 32);\n break;\n }\n case 2: {\n swap(this$static.ct, 0, 3, 1, 2, 1);\n swap(this$static.ct, 8, 11, 9, 10, 1);\n swap(this$static.ct, 4, 7, 5, 6, 1);\n swap(this$static.ct, 12, 15, 13, 14, 1);\n swap(this$static.rl, 0, 3, 5, 6, 1);\n swap(this$static.rl, 1, 2, 4, 7, 1);\n }\n }\n}\n\nfunction $set_2(this$static, c, edgeParity) {\n let i_0;\n for (i_0 = 0; i_0 < 16; ++i_0) {\n this$static.ct[i_0] = ~~(c.ct[i_0] / 2);\n }\n for (i_0 = 0; i_0 < 8; ++i_0) {\n this$static.rl[i_0] = c.ct[i_0 + 16];\n }\n this$static.parity = edgeParity;\n}\n\nfunction $setct(this$static, idx) {\n let i_0;\n let r;\n r = 8;\n this$static.ct[15] = 0;\n for (i_0 = 14; i_0 >= 0; --i_0) {\n if (idx >= Cnk[i_0][r]) {\n idx -= Cnk[i_0][r--];\n this$static.ct[i_0] = 1;\n } else {\n this$static.ct[i_0] = 0;\n }\n }\n}\n\nfunction $setrl(this$static, idx) {\n let i_0;\n let r;\n this$static.parity = idx & 1;\n idx >>>= 1;\n r = 4;\n this$static.rl[7] = 0;\n for (i_0 = 6; i_0 >= 0; --i_0) {\n if (idx >= Cnk[i_0][r]) {\n idx -= Cnk[i_0][r--];\n this$static.rl[i_0] = 1;\n } else {\n this$static.rl[i_0] = 0;\n }\n }\n}\n\nfunction Center2_0() {\n this.rl = createArray(8);\n this.ct = createArray(16);\n}\n\nfunction init_3() {\n let ct;\n let ctx;\n let depth;\n let done;\n let i_0;\n let idx;\n let j;\n let m_0;\n let rl;\n let rlx;\n const c = new Center2_0();\n for (i_0 = 0; i_0 < 70; ++i_0) {\n for (m_0 = 0; m_0 < 28; ++m_0) {\n $setrl(c, i_0);\n $move_0(c, move2std[m_0]);\n rlmv[i_0][m_0] = $getrl(c);\n }\n }\n for (i_0 = 0; i_0 < 70; ++i_0) {\n $setrl(c, i_0);\n for (j = 0; j < 16; ++j) {\n rlrot[i_0][j] = $getrl(c);\n $rot_0(c, 0);\n j % 2 === 1 && $rot_0(c, 1);\n j % 8 === 7 && $rot_0(c, 2);\n }\n }\n for (i_0 = 0; i_0 < 6435; ++i_0) {\n $setct(c, i_0);\n for (j = 0; j < 16; ++j) {\n ctrot[i_0][j] = $getct(c) & 65535;\n $rot_0(c, 0);\n j % 2 === 1 && $rot_0(c, 1);\n j % 8 === 7 && $rot_0(c, 2);\n }\n }\n for (i_0 = 0; i_0 < 6435; ++i_0) {\n for (m_0 = 0; m_0 < 28; ++m_0) {\n $setct(c, i_0);\n $move_0(c, move2std[m_0]);\n ctmv[i_0][m_0] = $getct(c) & 65535;\n }\n }\n fill_0(ctprun);\n ctprun[0] =\n ctprun[18] =\n ctprun[28] =\n ctprun[46] =\n ctprun[54] =\n ctprun[56] =\n 0;\n depth = 0;\n done = 6;\n\n while (done !== 450450) {\n const inv = depth > 6;\n const select = inv ? -1 : depth;\n const check = inv ? depth : -1;\n ++depth;\n for (i_0 = 0; i_0 < 450450; ++i_0) {\n if (ctprun[i_0] !== select) {\n continue;\n }\n ct = ~~(i_0 / 70);\n rl = i_0 % 70;\n for (m_0 = 0; m_0 < 23; ++m_0) {\n ctx = ctmv[ct][m_0];\n rlx = rlmv[rl][m_0];\n idx = ctx * 70 + rlx;\n if (ctprun[idx] !== check) {\n continue;\n }\n ++done;\n if (inv) {\n ctprun[i_0] = depth;\n break;\n } else {\n ctprun[idx] = depth;\n }\n }\n }\n }\n}\n\ndefineSeed(154, 1, {}, Center2_0);\n_.parity = 0;\nlet ctmv;\nlet ctprun;\nlet ctrot;\nlet pmv;\nlet rlmv;\nlet rlrot;\n\nlet ran$clinit_Center3 = false;\nfunction $clinit_Center3() {\n if (ran$clinit_Center3) {\n return;\n }\n ran$clinit_Center3 = true;\n ctmove = createArray(29400, 20);\n pmove = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1];\n prun_0 = createArray(29400);\n rl2std = [0, 9, 14, 23, 27, 28, 41, 42, 46, 55, 60, 69];\n std2rl = createArray(70);\n}\n\nfunction $getct_0(this$static) {\n let i_0;\n let idx;\n let idxrl;\n let r;\n idx = 0;\n r = 4;\n for (i_0 = 6; i_0 >= 0; --i_0) {\n this$static.ud[i_0] !== this$static.ud[7] && (idx += Cnk[i_0][r--]);\n }\n idx *= 35;\n r = 4;\n for (i_0 = 6; i_0 >= 0; --i_0) {\n this$static.fb[i_0] !== this$static.fb[7] && (idx += Cnk[i_0][r--]);\n }\n idx *= 12;\n const check = this$static.fb[7] ^ this$static.ud[7];\n idxrl = 0;\n r = 4;\n for (i_0 = 7; i_0 >= 0; --i_0) {\n this$static.rl[i_0] !== check && (idxrl += Cnk[i_0][r--]);\n }\n return this$static.parity + 2 * (idx + std2rl[idxrl]);\n}\n\nfunction $move_1(this$static, i_0) {\n this$static.parity ^= pmove[i_0];\n switch (i_0) {\n case 0:\n case 1:\n case 2: {\n swap(this$static.ud, 0, 1, 2, 3, i_0 % 3);\n break;\n }\n case 3: {\n swap(this$static.rl, 0, 1, 2, 3, 1);\n break;\n }\n case 4:\n case 5:\n case 6: {\n swap(this$static.fb, 0, 1, 2, 3, (i_0 - 1) % 3);\n break;\n }\n case 7:\n case 8:\n case 9: {\n swap(this$static.ud, 4, 5, 6, 7, (i_0 - 1) % 3);\n break;\n }\n case 10: {\n swap(this$static.rl, 4, 5, 6, 7, 1);\n break;\n }\n case 11:\n case 12:\n case 13: {\n swap(this$static.fb, 4, 5, 6, 7, (i_0 + 1) % 3);\n break;\n }\n case 14: {\n swap(this$static.ud, 0, 1, 2, 3, 1);\n swap(this$static.rl, 0, 5, 4, 1, 1);\n swap(this$static.fb, 0, 5, 4, 1, 1);\n break;\n }\n case 15: {\n swap(this$static.rl, 0, 1, 2, 3, 1);\n swap(this$static.fb, 1, 4, 7, 2, 1);\n swap(this$static.ud, 1, 6, 5, 2, 1);\n break;\n }\n case 16: {\n swap(this$static.fb, 0, 1, 2, 3, 1);\n swap(this$static.ud, 3, 2, 5, 4, 1);\n swap(this$static.rl, 0, 3, 6, 5, 1);\n break;\n }\n case 17: {\n swap(this$static.ud, 4, 5, 6, 7, 1);\n swap(this$static.rl, 3, 2, 7, 6, 1);\n swap(this$static.fb, 3, 2, 7, 6, 1);\n break;\n }\n case 18: {\n swap(this$static.rl, 4, 5, 6, 7, 1);\n swap(this$static.fb, 0, 3, 6, 5, 1);\n swap(this$static.ud, 0, 3, 4, 7, 1);\n break;\n }\n case 19: {\n swap(this$static.fb, 4, 5, 6, 7, 1);\n swap(this$static.ud, 0, 7, 6, 1, 1);\n swap(this$static.rl, 1, 4, 7, 2, 1);\n }\n }\n}\n\nfunction $set_3(this$static, c, eXc_parity) {\n let i_0;\n const parity =\n (c.ct[0] > c.ct[8] ? 1 : 0) ^\n (c.ct[8] > c.ct[16] ? 1 : 0) ^\n (c.ct[0] > c.ct[16] ? 1 : 0)\n ? 1\n : 0;\n for (i_0 = 0; i_0 < 8; ++i_0) {\n this$static.ud[i_0] = (c.ct[i_0] & 1) ^ 1;\n this$static.fb[i_0] = (c.ct[i_0 + 8] & 1) ^ 1;\n this$static.rl[i_0] = (c.ct[i_0 + 16] & 1) ^ 1 ^ parity;\n }\n this$static.parity = parity ^ eXc_parity;\n}\n\nfunction $setct_0(this$static, idx) {\n let i_0;\n let idxfb;\n let idxrl;\n let r;\n this$static.parity = idx & 1;\n idx >>>= 1;\n idxrl = rl2std[idx % 12];\n idx = ~~(idx / 12);\n r = 4;\n for (i_0 = 7; i_0 >= 0; --i_0) {\n this$static.rl[i_0] = 0;\n if (idxrl >= Cnk[i_0][r]) {\n idxrl -= Cnk[i_0][r--];\n this$static.rl[i_0] = 1;\n }\n }\n idxfb = idx % 35;\n idx = ~~(idx / 35);\n r = 4;\n this$static.fb[7] = 0;\n for (i_0 = 6; i_0 >= 0; --i_0) {\n if (idxfb >= Cnk[i_0][r]) {\n idxfb -= Cnk[i_0][r--];\n this$static.fb[i_0] = 1;\n } else {\n this$static.fb[i_0] = 0;\n }\n }\n r = 4;\n this$static.ud[7] = 0;\n for (i_0 = 6; i_0 >= 0; --i_0) {\n if (idx >= Cnk[i_0][r]) {\n idx -= Cnk[i_0][r--];\n this$static.ud[i_0] = 1;\n } else {\n this$static.ud[i_0] = 0;\n }\n }\n}\n\nfunction Center3_0() {\n this.ud = createArray(8);\n this.rl = createArray(8);\n this.fb = createArray(8);\n}\n\nfunction init_4() {\n let depth;\n let done;\n let i_0;\n let m_0;\n for (i_0 = 0; i_0 < 12; ++i_0) {\n std2rl[rl2std[i_0]] = i_0;\n }\n const c = new Center3_0();\n for (i_0 = 0; i_0 < 29400; ++i_0) {\n for (m_0 = 0; m_0 < 20; ++m_0) {\n $setct_0(c, i_0);\n $move_1(c, m_0);\n ctmove[i_0][m_0] = $getct_0(c) & 65535;\n }\n }\n fill_0(prun_0);\n prun_0[0] = 0;\n depth = 0;\n done = 1;\n while (done !== 29400) {\n for (i_0 = 0; i_0 < 29400; ++i_0) {\n if (prun_0[i_0] !== depth) {\n continue;\n }\n for (m_0 = 0; m_0 < 17; ++m_0) {\n if (prun_0[ctmove[i_0][m_0]] === -1) {\n prun_0[ctmove[i_0][m_0]] = depth + 1;\n ++done;\n }\n }\n }\n ++depth;\n }\n}\n\ndefineSeed(155, 1, {}, Center3_0);\n_.parity = 0;\nlet ctmove;\nlet pmove;\nlet prun_0;\nlet rl2std;\nlet std2rl;\n\nfunction $copy_1(this$static, c) {\n let i_0;\n for (i_0 = 0; i_0 < 24; ++i_0) {\n this$static.ct[i_0] = c.ct[i_0];\n }\n}\n\nfunction $move_2(this$static, m_0) {\n const key = m_0 % 3;\n m_0 = ~~(m_0 / 3);\n switch (m_0) {\n case 0: {\n swap(this$static.ct, 0, 1, 2, 3, key);\n break;\n }\n case 1: {\n swap(this$static.ct, 16, 17, 18, 19, key);\n break;\n }\n case 2: {\n swap(this$static.ct, 8, 9, 10, 11, key);\n break;\n }\n case 3: {\n swap(this$static.ct, 4, 5, 6, 7, key);\n break;\n }\n case 4: {\n swap(this$static.ct, 20, 21, 22, 23, key);\n break;\n }\n case 5: {\n swap(this$static.ct, 12, 13, 14, 15, key);\n break;\n }\n case 6: {\n swap(this$static.ct, 0, 1, 2, 3, key);\n swap(this$static.ct, 8, 20, 12, 16, key);\n swap(this$static.ct, 9, 21, 13, 17, key);\n break;\n }\n case 7: {\n swap(this$static.ct, 16, 17, 18, 19, key);\n swap(this$static.ct, 1, 15, 5, 9, key);\n swap(this$static.ct, 2, 12, 6, 10, key);\n break;\n }\n case 8: {\n swap(this$static.ct, 8, 9, 10, 11, key);\n swap(this$static.ct, 2, 19, 4, 21, key);\n swap(this$static.ct, 3, 16, 5, 22, key);\n break;\n }\n case 9: {\n swap(this$static.ct, 4, 5, 6, 7, key);\n swap(this$static.ct, 10, 18, 14, 22, key);\n swap(this$static.ct, 11, 19, 15, 23, key);\n break;\n }\n case 10: {\n swap(this$static.ct, 20, 21, 22, 23, key);\n swap(this$static.ct, 0, 8, 4, 14, key);\n swap(this$static.ct, 3, 11, 7, 13, key);\n break;\n }\n case 11: {\n swap(this$static.ct, 12, 13, 14, 15, key);\n swap(this$static.ct, 1, 20, 7, 18, key);\n swap(this$static.ct, 0, 23, 6, 17, key);\n }\n }\n}\n\nfunction CenterCube_0() {\n let i_0;\n this.ct = createArray(24);\n for (i_0 = 0; i_0 < 24; ++i_0) {\n this.ct[i_0] = ~~(i_0 / 4);\n }\n}\n\nfunction CenterCube_1() {\n let i_0;\n let m_0;\n let t;\n CenterCube_0.call(this);\n for (i_0 = 0; i_0 < 23; ++i_0) {\n t = i_0 + randomUIntBelow(24 - i_0);\n if (this.ct[t] !== this.ct[i_0]) {\n m_0 = this.ct[i_0];\n this.ct[i_0] = this.ct[t];\n this.ct[t] = m_0;\n }\n }\n}\n\ndefineSeed(156, 1, {}, CenterCube_0, CenterCube_1);\n\nlet ran$clinit_CornerCube = false;\nfunction $clinit_CornerCube() {\n if (ran$clinit_CornerCube) {\n return;\n }\n ran$clinit_CornerCube = true;\n moveCube_0 = createArray(18);\n initMove_0();\n}\n\nfunction $$init_2(this$static) {\n this$static.cp = [0, 1, 2, 3, 4, 5, 6, 7];\n this$static.co = [0, 0, 0, 0, 0, 0, 0, 0];\n}\n\nfunction $copy_2(this$static, c) {\n let i_0;\n for (i_0 = 0; i_0 < 8; ++i_0) {\n this$static.cp[i_0] = c.cp[i_0];\n this$static.co[i_0] = c.co[i_0];\n }\n}\n\nfunction $move_3(this$static, idx) {\n !this$static.temps && (this$static.temps = new CornerCube_0());\n CornMult_0(this$static, moveCube_0[idx], this$static.temps);\n $copy_2(this$static, this$static.temps);\n}\n\nfunction $setTwist_0(this$static, idx) {\n let i_0;\n let twst;\n twst = 0;\n for (i_0 = 6; i_0 >= 0; --i_0) {\n twst += this$static.co[i_0] = idx % 3;\n idx = ~~(idx / 3);\n }\n this$static.co[7] = (15 - twst) % 3;\n}\n\nfunction CornMult_0(a, b, prod) {\n let corn;\n let ori;\n let oriA;\n let oriB;\n for (corn = 0; corn < 8; ++corn) {\n prod.cp[corn] = a.cp[b.cp[corn]];\n oriA = a.co[b.cp[corn]];\n oriB = b.co[corn];\n ori = oriA;\n ori = ori + (oriA < 3 ? oriB : 6 - oriB);\n ori = ori % 3;\n (oriA >= 3 ? 1 : 0) ^ (oriB >= 3 ? 1 : 0) && (ori = ori + 3);\n prod.co[corn] = ori;\n }\n}\n\nfunction CornerCube_0() {\n $$init_2(this);\n}\n\nfunction CornerCube_1(cperm, twist) {\n $$init_2(this);\n set8Perm(this.cp, cperm);\n $setTwist_0(this, twist);\n}\n\nfunction CornerCube_2() {\n CornerCube_1.call(this, randomUIntBelow(40320), randomUIntBelow(2187));\n}\n\nfunction initMove_0() {\n let a;\n let p_0;\n moveCube_0[0] = new CornerCube_1(15120, 0);\n moveCube_0[3] = new CornerCube_1(21021, 1494);\n moveCube_0[6] = new CornerCube_1(8064, 1236);\n moveCube_0[9] = new CornerCube_1(9, 0);\n moveCube_0[12] = new CornerCube_1(1230, 412);\n moveCube_0[15] = new CornerCube_1(224, 137);\n for (a = 0; a < 18; a += 3) {\n for (p_0 = 0; p_0 < 2; ++p_0) {\n moveCube_0[a + p_0 + 1] = new CornerCube_0();\n CornMult_0(moveCube_0[a + p_0], moveCube_0[a], moveCube_0[a + p_0 + 1]);\n }\n }\n}\n\ndefineSeed(\n 157,\n 1,\n makeCastMap([Q$CornerCube]),\n CornerCube_0,\n CornerCube_1,\n CornerCube_2,\n);\n_.temps = null;\nlet moveCube_0;\n\nlet ran$clinit_Edge3 = false;\nfunction $clinit_Edge3() {\n if (ran$clinit_Edge3) {\n return;\n }\n ran$clinit_Edge3 = true;\n eprun = createArray(1937880);\n sym2raw_0 = createArray(1538);\n symstate = createArray(1538);\n raw2sym_1 = createArray(11880);\n syminv_0 = [0, 1, 6, 3, 4, 5, 2, 7];\n mvrot = createArray(160, 12);\n mvroto = createArray(160, 12);\n factX = [\n 1, 1, 1, 3, 12, 60, 360, 2520, 20160, 181440, 1814400, 19958400, 239500800,\n ];\n FullEdgeMap = [0, 2, 4, 6, 1, 3, 7, 5, 8, 9, 10, 11];\n}\n\nfunction $circlex(this$static, a, b, c, d) {\n const temp = this$static.edgeo[d];\n this$static.edgeo[d] = this$static.edge[c];\n this$static.edge[c] = this$static.edgeo[b];\n this$static.edgeo[b] = this$static.edge[a];\n this$static.edge[a] = temp;\n}\n\nfunction $get_2(this$static, end) {\n let i_0;\n let idx;\n let v;\n let valh;\n let vall;\n this$static.isStd || $std(this$static);\n idx = 0;\n vall = 1985229328;\n valh = 47768;\n for (i_0 = 0; i_0 < end; ++i_0) {\n v = this$static.edge[i_0] << 2;\n idx *= 12 - i_0;\n if (v >= 32) {\n idx += (valh >> (v - 32)) & 15;\n valh -= 4368 << (v - 32);\n } else {\n idx += (vall >> v) & 15;\n valh -= 4369;\n vall -= 286331152 << v;\n }\n }\n return idx;\n}\n\nfunction $getsym_0(this$static) {\n let symcord1x;\n const cord1x = $get_2(this$static, 4);\n symcord1x = raw2sym_1[cord1x];\n const symx = symcord1x & 7;\n symcord1x >>= 3;\n $rotate_0(this$static, symx);\n const cord2x = $get_2(this$static, 10) % 20160;\n return symcord1x * 20160 + cord2x;\n}\n\nfunction $move_4(this$static, i_0) {\n this$static.isStd = false;\n switch (i_0) {\n case 0: {\n circle(this$static.edge, 0, 4, 1, 5);\n circle(this$static.edgeo, 0, 4, 1, 5);\n break;\n }\n case 1: {\n $swap_0(this$static.edge, 0, 4, 1, 5);\n $swap_0(this$static.edgeo, 0, 4, 1, 5);\n break;\n }\n case 2: {\n circle(this$static.edge, 0, 5, 1, 4);\n circle(this$static.edgeo, 0, 5, 1, 4);\n break;\n }\n case 3: {\n $swap_0(this$static.edge, 5, 10, 6, 11);\n $swap_0(this$static.edgeo, 5, 10, 6, 11);\n break;\n }\n case 4: {\n circle(this$static.edge, 0, 11, 3, 8);\n circle(this$static.edgeo, 0, 11, 3, 8);\n break;\n }\n case 5: {\n $swap_0(this$static.edge, 0, 11, 3, 8);\n $swap_0(this$static.edgeo, 0, 11, 3, 8);\n break;\n }\n case 6: {\n circle(this$static.edge, 0, 8, 3, 11);\n circle(this$static.edgeo, 0, 8, 3, 11);\n break;\n }\n case 7: {\n circle(this$static.edge, 2, 7, 3, 6);\n circle(this$static.edgeo, 2, 7, 3, 6);\n break;\n }\n case 8: {\n $swap_0(this$static.edge, 2, 7, 3, 6);\n $swap_0(this$static.edgeo, 2, 7, 3, 6);\n break;\n }\n case 9: {\n circle(this$static.edge, 2, 6, 3, 7);\n circle(this$static.edgeo, 2, 6, 3, 7);\n break;\n }\n case 10: {\n $swap_0(this$static.edge, 4, 8, 7, 9);\n $swap_0(this$static.edgeo, 4, 8, 7, 9);\n break;\n }\n case 11: {\n circle(this$static.edge, 1, 9, 2, 10);\n circle(this$static.edgeo, 1, 9, 2, 10);\n break;\n }\n case 12: {\n $swap_0(this$static.edge, 1, 9, 2, 10);\n $swap_0(this$static.edgeo, 1, 9, 2, 10);\n break;\n }\n case 13: {\n circle(this$static.edge, 1, 10, 2, 9);\n circle(this$static.edgeo, 1, 10, 2, 9);\n break;\n }\n case 14: {\n $swap_0(this$static.edge, 0, 4, 1, 5);\n $swap_0(this$static.edgeo, 0, 4, 1, 5);\n circle(this$static.edge, 9, 11);\n circle(this$static.edgeo, 8, 10);\n break;\n }\n case 15: {\n $swap_0(this$static.edge, 5, 10, 6, 11);\n $swap_0(this$static.edgeo, 5, 10, 6, 11);\n circle(this$static.edge, 1, 3);\n circle(this$static.edgeo, 0, 2);\n break;\n }\n case 16: {\n $swap_0(this$static.edge, 0, 11, 3, 8);\n $swap_0(this$static.edgeo, 0, 11, 3, 8);\n circle(this$static.edge, 5, 7);\n circle(this$static.edgeo, 4, 6);\n break;\n }\n case 17: {\n $swap_0(this$static.edge, 2, 7, 3, 6);\n $swap_0(this$static.edgeo, 2, 7, 3, 6);\n circle(this$static.edge, 8, 10);\n circle(this$static.edgeo, 9, 11);\n break;\n }\n case 18: {\n $swap_0(this$static.edge, 4, 8, 7, 9);\n $swap_0(this$static.edgeo, 4, 8, 7, 9);\n circle(this$static.edge, 0, 2);\n circle(this$static.edgeo, 1, 3);\n break;\n }\n case 19: {\n $swap_0(this$static.edge, 1, 9, 2, 10);\n $swap_0(this$static.edgeo, 1, 9, 2, 10);\n circle(this$static.edge, 4, 6);\n circle(this$static.edgeo, 5, 7);\n }\n }\n}\n\nfunction $rot_1(this$static, r) {\n this$static.isStd = false;\n switch (r) {\n case 0: {\n $move_4(this$static, 14);\n $move_4(this$static, 17);\n break;\n }\n case 1: {\n $circlex(this$static, 11, 5, 10, 6);\n $circlex(this$static, 5, 10, 6, 11);\n $circlex(this$static, 1, 2, 3, 0);\n $circlex(this$static, 4, 9, 7, 8);\n $circlex(this$static, 8, 4, 9, 7);\n $circlex(this$static, 0, 1, 2, 3);\n break;\n }\n case 2: {\n $swapx(this$static, 4, 5);\n $swapx(this$static, 5, 4);\n $swapx(this$static, 11, 8);\n $swapx(this$static, 8, 11);\n $swapx(this$static, 7, 6);\n $swapx(this$static, 6, 7);\n $swapx(this$static, 9, 10);\n $swapx(this$static, 10, 9);\n $swapx(this$static, 1, 1);\n $swapx(this$static, 0, 0);\n $swapx(this$static, 3, 3);\n $swapx(this$static, 2, 2);\n }\n }\n}\n\nfunction $rotate_0(this$static, r) {\n while (r >= 2) {\n r -= 2;\n $rot_1(this$static, 1);\n $rot_1(this$static, 2);\n }\n r !== 0 && $rot_1(this$static, 0);\n}\n\nfunction $set_4(this$static, idx) {\n let i_0;\n let p_0;\n let parity;\n let v;\n let vall;\n let valh;\n vall = 0x76543210;\n valh = 0xba98;\n parity = 0;\n for (i_0 = 0; i_0 < 11; ++i_0) {\n p_0 = factX[11 - i_0];\n v = ~~(idx / p_0);\n idx = idx % p_0;\n parity ^= v;\n v <<= 2;\n if (v >= 32) {\n v = v - 32;\n this$static.edge[i_0] = (valh >> v) & 15;\n const m = (1 << v) - 1;\n valh = (valh & m) + ((valh >> 4) & ~m);\n } else {\n this$static.edge[i_0] = (vall >> v) & 15;\n const m = (1 << v) - 1;\n vall = (vall & m) + ((vall >>> 4) & ~m) + (valh << 28);\n valh = valh >> 4;\n }\n }\n if ((parity & 1) === 0) {\n this$static.edge[11] = vall;\n } else {\n this$static.edge[11] = this$static.edge[10];\n this$static.edge[10] = vall;\n }\n for (i_0 = 0; i_0 < 12; ++i_0) {\n this$static.edgeo[i_0] = i_0;\n }\n this$static.isStd = true;\n}\n\nfunction $set_5(this$static, e) {\n let i_0;\n for (i_0 = 0; i_0 < 12; ++i_0) {\n this$static.edge[i_0] = e.edge[i_0];\n this$static.edgeo[i_0] = e.edgeo[i_0];\n }\n this$static.isStd = e.isStd;\n}\n\nfunction $set_6(this$static, c) {\n let i_0;\n let parity;\n let s;\n let t;\n this$static.temp === null && (this$static.temp = createArray(12));\n for (i_0 = 0; i_0 < 12; ++i_0) {\n this$static.temp[i_0] = i_0;\n this$static.edge[i_0] = c.ep[FullEdgeMap[i_0] + 12] % 12;\n }\n parity = 1;\n for (i_0 = 0; i_0 < 12; ++i_0) {\n while (this$static.edge[i_0] !== i_0) {\n t = this$static.edge[i_0];\n this$static.edge[i_0] = this$static.edge[t];\n this$static.edge[t] = t;\n s = this$static.temp[i_0];\n this$static.temp[i_0] = this$static.temp[t];\n this$static.temp[t] = s;\n parity ^= 1;\n }\n }\n for (i_0 = 0; i_0 < 12; ++i_0) {\n this$static.edge[i_0] = this$static.temp[c.ep[FullEdgeMap[i_0]] % 12];\n }\n return parity;\n}\n\nfunction $std(this$static) {\n let i_0;\n this$static.temp === null && (this$static.temp = createArray(12));\n for (i_0 = 0; i_0 < 12; ++i_0) {\n this$static.temp[this$static.edgeo[i_0]] = i_0;\n }\n for (i_0 = 0; i_0 < 12; ++i_0) {\n this$static.edge[i_0] = this$static.temp[this$static.edge[i_0]];\n this$static.edgeo[i_0] = i_0;\n }\n this$static.isStd = true;\n}\n\nfunction $swap_0(arr, a, b, c, d) {\n let temp;\n temp = arr[a];\n arr[a] = arr[c];\n arr[c] = temp;\n temp = arr[b];\n arr[b] = arr[d];\n arr[d] = temp;\n}\n\nfunction $swapx(this$static, x, y) {\n const temp = this$static.edge[x];\n this$static.edge[x] = this$static.edgeo[y];\n this$static.edgeo[y] = temp;\n}\n\nfunction Edge3_0() {\n this.edge = createArray(12);\n this.edgeo = createArray(12);\n}\n\nfunction createPrun_0() {\n let chk;\n let cord1;\n let cord1x;\n let cord2;\n let cord2x;\n let dep1m3;\n let depm3;\n let depth;\n let end;\n let find_0;\n let i_0;\n let i_;\n let idx;\n let idxx;\n let inv;\n let j;\n let m_0;\n let symState;\n let symcord1;\n let symcord1x;\n let symx;\n let val;\n const e = new Edge3_0();\n const f = new Edge3_0();\n const g = new Edge3_0();\n fill_0(eprun);\n depth = 0;\n done_0 = 1;\n setPruning_0(eprun, 0, 0);\n // var start = +new Date;\n while (done_0 !== 31006080) {\n inv = depth > 9;\n depm3 = depth % 3;\n dep1m3 = (depth + 1) % 3;\n find_0 = inv ? 3 : depm3;\n chk = inv ? depm3 : 3;\n if (depth >= 9) {\n break;\n }\n for (i_ = 0; i_ < 31006080; i_ += 16) {\n val = eprun[~~i_ >> 4];\n if (!inv && val === -1) {\n continue;\n }\n for (i_0 = i_, end = i_ + 16; i_0 < end; ++i_0, val >>= 2) {\n if ((val & 3) !== find_0) {\n continue;\n }\n symcord1 = ~~(i_0 / 20160);\n cord1 = sym2raw_0[symcord1];\n cord2 = i_0 % 20160;\n $set_4(e, cord1 * 20160 + cord2);\n for (m_0 = 0; m_0 < 17; ++m_0) {\n cord1x = getmvrot(e.edge, m_0 << 3, 4);\n symcord1x = raw2sym_1[cord1x];\n symx = symcord1x & 7;\n symcord1x >>= 3;\n cord2x = getmvrot(e.edge, (m_0 << 3) | symx, 10) % 20160;\n idx = symcord1x * 20160 + cord2x;\n if (getPruning_0(eprun, idx) !== chk) {\n continue;\n }\n setPruning_0(eprun, inv ? i_0 : idx, dep1m3);\n ++done_0;\n if (inv) {\n break;\n }\n symState = symstate[symcord1x];\n if (symState === 1) {\n continue;\n }\n $set_5(f, e);\n $move_4(f, m_0);\n $rotate_0(f, symx);\n for (j = 1; (symState = (~~symState >> 1) & 65535) !== 0; ++j) {\n if ((symState & 1) !== 1) {\n continue;\n }\n $set_5(g, f);\n $rotate_0(g, j);\n idxx = symcord1x * 20160 + ($get_2(g, 10) % 20160);\n if (getPruning_0(eprun, idxx) === chk) {\n setPruning_0(eprun, idxx, dep1m3);\n ++done_0;\n }\n }\n }\n }\n }\n ++depth;\n // console.log(depth + '\\t' + done_0 + '\\t' + (+new Date - start));\n }\n}\n\nfunction getPruning_0(table, index) {\n return (table[index >> 4] >> ((index & 15) << 1)) & 3;\n}\n\nfunction getmvrot(ep, mrIdx, end) {\n let i_0;\n let idx;\n let v;\n let valh;\n let vall;\n const movo = mvroto[mrIdx];\n const mov = mvrot[mrIdx];\n idx = 0;\n vall = 1985229328;\n valh = 47768;\n for (i_0 = 0; i_0 < end; ++i_0) {\n v = movo[ep[mov[i_0]]] << 2;\n idx *= 12 - i_0;\n if (v >= 32) {\n idx += (valh >> (v - 32)) & 15;\n valh -= 4368 << (v - 32);\n } else {\n idx += (vall >> v) & 15;\n valh -= 4369;\n vall -= 286331152 << v;\n }\n }\n return idx;\n}\n\nfunction getprun(edge) {\n let cord1;\n let cord1x;\n let cord2;\n let cord2x;\n let depm3;\n let depth;\n let idx;\n let m_0;\n let symcord1;\n let symcord1x;\n let symx;\n const e = new Edge3_0();\n depth = 0;\n depm3 = getPruning_0(eprun, edge);\n if (depm3 === 3) {\n return 10;\n }\n while (edge !== 0) {\n depm3 === 0 ? (depm3 = 2) : --depm3;\n symcord1 = ~~(edge / 20160);\n cord1 = sym2raw_0[symcord1];\n cord2 = edge % 20160;\n $set_4(e, cord1 * 20160 + cord2);\n for (m_0 = 0; m_0 < 17; ++m_0) {\n cord1x = getmvrot(e.edge, m_0 << 3, 4);\n symcord1x = raw2sym_1[cord1x];\n symx = symcord1x & 7;\n symcord1x >>= 3;\n cord2x = getmvrot(e.edge, (m_0 << 3) | symx, 10) % 20160;\n idx = symcord1x * 20160 + cord2x;\n if (getPruning_0(eprun, idx) === depm3) {\n ++depth;\n edge = idx;\n break;\n }\n }\n }\n return depth;\n}\n\nfunction getprun_0(edge, prun) {\n const depm3 = getPruning_0(eprun, edge);\n if (depm3 === 3) {\n return 10;\n }\n return (((0x49249249 << depm3) >> prun) & 3) + prun - 1;\n // (depm3 - prun + 16) % 3 + prun - 1;\n}\n\nfunction initMvrot() {\n let i_0;\n let m_0;\n let r;\n const e = new Edge3_0();\n for (m_0 = 0; m_0 < 20; ++m_0) {\n for (r = 0; r < 8; ++r) {\n $set_4(e, 0);\n $move_4(e, m_0);\n $rotate_0(e, r);\n for (i_0 = 0; i_0 < 12; ++i_0) {\n mvrot[(m_0 << 3) | r][i_0] = e.edge[i_0];\n }\n $std(e);\n for (i_0 = 0; i_0 < 12; ++i_0) {\n mvroto[(m_0 << 3) | r][i_0] = e.temp[i_0];\n }\n }\n }\n}\n\nfunction initRaw2Sym() {\n let count;\n let i_0;\n let idx;\n let j;\n const e = new Edge3_0();\n const occ = createArray(1485);\n for (i_0 = 0; i_0 < 1485; i_0++) {\n occ[i_0] = 0;\n }\n count = 0;\n for (i_0 = 0; i_0 < 11880; ++i_0) {\n if ((occ[~~i_0 >>> 3] & (1 << (i_0 & 7))) === 0) {\n $set_4(e, i_0 * factX[8]);\n for (j = 0; j < 8; ++j) {\n idx = $get_2(e, 4);\n idx === i_0 && (symstate[count] = (symstate[count] | (1 << j)) & 65535);\n occ[~~idx >> 3] = occ[~~idx >> 3] | (1 << (idx & 7));\n raw2sym_1[idx] = (count << 3) | syminv_0[j];\n $rot_1(e, 0);\n if (j % 2 === 1) {\n $rot_1(e, 1);\n $rot_1(e, 2);\n }\n }\n sym2raw_0[count++] = i_0;\n }\n }\n}\n\nfunction setPruning_0(table, index, value) {\n table[index >> 4] ^= (3 ^ value) << ((index & 15) << 1);\n}\n\ndefineSeed(158, 1, makeCastMap([Q$Edge3]), Edge3_0);\n_.isStd = true;\n_.temp = null;\nlet FullEdgeMap;\nlet done_0 = 0;\nlet eprun;\nlet factX;\nlet mvrot;\nlet mvroto;\nlet raw2sym_1;\nlet sym2raw_0;\nlet syminv_0;\nlet symstate;\n\nlet ran$clinit_EdgeCube = false;\nfunction $clinit_EdgeCube() {\n if (ran$clinit_EdgeCube) {\n return;\n }\n ran$clinit_EdgeCube = true;\n}\n\nfunction $checkEdge(this$static) {\n let ck;\n let i_0;\n let parity;\n ck = 0;\n parity = false;\n for (i_0 = 0; i_0 < 12; ++i_0) {\n ck |= 1 << this$static.ep[i_0];\n parity = parity !== this$static.ep[i_0] >= 12;\n }\n ck &= ~~ck >> 12;\n return ck === 0 && !parity;\n}\n\nfunction $copy_3(this$static, c) {\n let i_0;\n for (i_0 = 0; i_0 < 24; ++i_0) {\n this$static.ep[i_0] = c.ep[i_0];\n }\n}\n\nfunction $move_5(this$static, m_0) {\n const key = m_0 % 3;\n m_0 = ~~(m_0 / 3);\n switch (m_0) {\n case 0: {\n swap(this$static.ep, 0, 1, 2, 3, key);\n swap(this$static.ep, 12, 13, 14, 15, key);\n break;\n }\n case 1: {\n swap(this$static.ep, 11, 15, 10, 19, key);\n swap(this$static.ep, 23, 3, 22, 7, key);\n break;\n }\n case 2: {\n swap(this$static.ep, 0, 11, 6, 8, key);\n swap(this$static.ep, 12, 23, 18, 20, key);\n break;\n }\n case 3: {\n swap(this$static.ep, 4, 5, 6, 7, key);\n swap(this$static.ep, 16, 17, 18, 19, key);\n break;\n }\n case 4: {\n swap(this$static.ep, 1, 20, 5, 21, key);\n swap(this$static.ep, 13, 8, 17, 9, key);\n break;\n }\n case 5: {\n swap(this$static.ep, 2, 9, 4, 10, key);\n swap(this$static.ep, 14, 21, 16, 22, key);\n break;\n }\n case 6: {\n swap(this$static.ep, 0, 1, 2, 3, key);\n swap(this$static.ep, 12, 13, 14, 15, key);\n swap(this$static.ep, 9, 22, 11, 20, key);\n break;\n }\n case 7: {\n swap(this$static.ep, 11, 15, 10, 19, key);\n swap(this$static.ep, 23, 3, 22, 7, key);\n swap(this$static.ep, 2, 16, 6, 12, key);\n break;\n }\n case 8: {\n swap(this$static.ep, 0, 11, 6, 8, key);\n swap(this$static.ep, 12, 23, 18, 20, key);\n swap(this$static.ep, 3, 19, 5, 13, key);\n break;\n }\n case 9: {\n swap(this$static.ep, 4, 5, 6, 7, key);\n swap(this$static.ep, 16, 17, 18, 19, key);\n swap(this$static.ep, 8, 23, 10, 21, key);\n break;\n }\n case 10: {\n swap(this$static.ep, 1, 20, 5, 21, key);\n swap(this$static.ep, 13, 8, 17, 9, key);\n swap(this$static.ep, 14, 0, 18, 4, key);\n break;\n }\n case 11: {\n swap(this$static.ep, 2, 9, 4, 10, key);\n swap(this$static.ep, 14, 21, 16, 22, key);\n swap(this$static.ep, 7, 15, 1, 17, key);\n }\n }\n}\n\nfunction EdgeCube_0() {\n let i_0;\n this.ep = createArray(24);\n for (i_0 = 0; i_0 < 24; ++i_0) {\n this.ep[i_0] = i_0;\n }\n}\n\nfunction EdgeCube_1() {\n let i_0;\n let m_0;\n let t;\n EdgeCube_0.call(this);\n for (i_0 = 0; i_0 < 23; ++i_0) {\n t = i_0 + randomUIntBelow(24 - i_0);\n if (t !== i_0) {\n m_0 = this.ep[i_0];\n this.ep[i_0] = this.ep[t];\n this.ep[t] = m_0;\n }\n }\n}\n\ndefineSeed(159, 1, {}, EdgeCube_0, EdgeCube_1);\n\nlet ran$clinit_FullCube_0 = false;\nfunction $clinit_FullCube_0() {\n if (ran$clinit_FullCube_0) {\n return;\n }\n ran$clinit_FullCube_0 = true;\n move2rot = [35, 1, 34, 2, 4, 6, 22, 5, 19];\n}\n\nfunction $$init_3(this$static) {\n this$static.moveBuffer = createArray(60);\n}\n\nfunction $compareTo_1(this$static, c) {\n return this$static.value - c.value;\n}\n\nfunction $copy_4(this$static, c) {\n let i_0;\n $copy_3(this$static.edge, c.edge);\n $copy_1(this$static.center, c.center);\n $copy_2(this$static.corner, c.corner);\n this$static.value = c.value;\n this$static.add1 = c.add1;\n this$static.length1 = c.length1;\n this$static.length2 = c.length2;\n this$static.length3 = c.length3;\n this$static.sym = c.sym;\n for (i_0 = 0; i_0 < 60; ++i_0) {\n this$static.moveBuffer[i_0] = c.moveBuffer[i_0];\n }\n this$static.moveLength = c.moveLength;\n this$static.edgeAvail = c.edgeAvail;\n this$static.centerAvail = c.centerAvail;\n this$static.cornerAvail = c.cornerAvail;\n}\n\nfunction $getCenter(this$static) {\n while (this$static.centerAvail < this$static.moveLength) {\n $move_2(\n this$static.center,\n this$static.moveBuffer[this$static.centerAvail++],\n );\n }\n return this$static.center;\n}\n\nfunction $getCorner(this$static) {\n while (this$static.cornerAvail < this$static.moveLength) {\n $move_3(\n this$static.corner,\n this$static.moveBuffer[this$static.cornerAvail++] % 18,\n );\n }\n return this$static.corner;\n}\n\nfunction $getEdge(this$static) {\n while (this$static.edgeAvail < this$static.moveLength) {\n $move_5(this$static.edge, this$static.moveBuffer[this$static.edgeAvail++]);\n }\n return this$static.edge;\n}\n\nfunction $getMoveString(this$static) {\n let i_0;\n let idx;\n let move;\n let rot;\n let sb;\n let sym;\n const fixedMoves = new Array(\n this$static.moveLength - (this$static.add1 ? 2 : 0),\n );\n idx = 0;\n for (i_0 = 0; i_0 < this$static.length1; ++i_0) {\n fixedMoves[idx++] = this$static.moveBuffer[i_0];\n }\n sym = this$static.sym;\n for (\n i_0 = this$static.length1 + (this$static.add1 ? 2 : 0);\n i_0 < this$static.moveLength;\n ++i_0\n ) {\n if (symmove[sym][this$static.moveBuffer[i_0]] >= 27) {\n fixedMoves[idx++] = symmove[sym][this$static.moveBuffer[i_0]] - 9;\n rot = move2rot[symmove[sym][this$static.moveBuffer[i_0]] - 27];\n sym = symmult[sym][rot];\n } else {\n fixedMoves[idx++] = symmove[sym][this$static.moveBuffer[i_0]];\n }\n }\n const finishSym = symmult[syminv[sym]][getSolvedSym($getCenter(this$static))];\n sb = \"\";\n sym = finishSym;\n for (i_0 = idx - 1; i_0 >= 0; --i_0) {\n move = fixedMoves[i_0];\n move = ~~(move / 3) * 3 + (2 - (move % 3));\n if (symmove[sym][move] >= 27) {\n sb = `${sb}${move2str_1[symmove[sym][move] - 9]} `;\n rot = move2rot[symmove[sym][move] - 27];\n sym = symmult[sym][rot];\n } else {\n sb = `${sb}${move2str_1[symmove[sym][move]]} `;\n }\n }\n return sb;\n}\n\nfunction $move_6(this$static, m_0) {\n this$static.moveBuffer[this$static.moveLength++] = m_0;\n return;\n}\n\nfunction FullCube_3() {\n $$init_3(this);\n this.edge = new EdgeCube_0();\n this.center = new CenterCube_0();\n this.corner = new CornerCube_0();\n}\n\nfunction FullCube_4(c) {\n FullCube_3.call(this);\n $copy_4(this, c);\n}\n\nfunction FullCube_5() {\n $$init_3(this);\n this.edge = new EdgeCube_1();\n this.center = new CenterCube_1();\n this.corner = new CornerCube_2();\n}\n\ndefineSeed(\n 160,\n 1,\n makeCastMap([Q$FullCube_0, Q$Comparable]),\n FullCube_3,\n FullCube_4,\n FullCube_5,\n);\n_.compareTo$ = function compareTo_1(c) {\n return $compareTo_1(this, c);\n};\n_.add1 = false;\n_.center = null;\n_.centerAvail = 0;\n_.corner = null;\n_.cornerAvail = 0;\n_.edge = null;\n_.edgeAvail = 0;\n_.length1 = 0;\n_.length2 = 0;\n_.length3 = 0;\n_.moveLength = 0;\n_.sym = 0;\n_.value = 0;\nlet move2rot;\n\nfunction $compare(c1, c2) {\n return c2.value - c1.value;\n}\n\nfunction $compare_0(c1, c2) {\n return $compare(c1, c2);\n}\n\nfunction FullCube$ValueComparator_0() {}\n\ndefineSeed(161, 1, {}, FullCube$ValueComparator_0);\n_.compare = function compare(c1, c2) {\n return $compare_0(c1, c2);\n};\n\nlet ran$clinit_Moves = false;\nfunction $clinit_Moves() {\n if (ran$clinit_Moves) {\n return;\n }\n ran$clinit_Moves = true;\n let i_0;\n let j;\n move2str_1 = [\n \"U \",\n \"U2 \",\n \"U' \",\n \"R \",\n \"R2 \",\n \"R' \",\n \"F \",\n \"F2 \",\n \"F' \",\n \"D \",\n \"D2 \",\n \"D' \",\n \"L \",\n \"L2 \",\n \"L' \",\n \"B \",\n \"B2 \",\n \"B' \",\n \"Uw \",\n \"Uw2\",\n \"Uw'\",\n \"Rw \",\n \"Rw2\",\n \"Rw'\",\n \"Fw \",\n \"Fw2\",\n \"Fw'\",\n \"Dw \",\n \"Dw2\",\n \"Dw'\",\n \"Lw \",\n \"Lw2\",\n \"Lw'\",\n \"Bw \",\n \"Bw2\",\n \"Bw'\",\n ];\n move2std = [\n 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 19, 21, 22,\n 23, 25, 28, 30, 31, 32, 34, 36,\n ];\n move3std = [\n 0, 1, 2, 4, 6, 7, 8, 9, 10, 11, 13, 15, 16, 17, 19, 22, 25, 28, 31, 34, 36,\n ];\n std2move = createArray(37);\n std3move = createArray(37);\n ckmv = createArray(37, 36);\n ckmv2_0 = createArray(29, 28);\n ckmv3 = createArray(21, 20);\n skipAxis = createArray(36);\n skipAxis2 = createArray(28);\n skipAxis3 = createArray(20);\n for (i_0 = 0; i_0 < 29; ++i_0) {\n std2move[move2std[i_0]] = i_0;\n }\n for (i_0 = 0; i_0 < 21; ++i_0) {\n std3move[move3std[i_0]] = i_0;\n }\n for (i_0 = 0; i_0 < 36; ++i_0) {\n for (j = 0; j < 36; ++j) {\n ckmv[i_0][j] =\n ~~(i_0 / 3) === ~~(j / 3) ||\n (~~(i_0 / 3) % 3 === ~~(j / 3) % 3 && i_0 > j);\n }\n ckmv[36][i_0] = false;\n }\n for (i_0 = 0; i_0 < 29; ++i_0) {\n for (j = 0; j < 28; ++j) {\n ckmv2_0[i_0][j] = ckmv[move2std[i_0]][move2std[j]];\n }\n }\n for (i_0 = 0; i_0 < 21; ++i_0) {\n for (j = 0; j < 20; ++j) {\n ckmv3[i_0][j] = ckmv[move3std[i_0]][move3std[j]];\n }\n }\n for (i_0 = 0; i_0 < 36; ++i_0) {\n skipAxis[i_0] = 36;\n for (j = i_0; j < 36; ++j) {\n if (!ckmv[i_0][j]) {\n skipAxis[i_0] = j - 1;\n break;\n }\n }\n }\n for (i_0 = 0; i_0 < 28; ++i_0) {\n skipAxis2[i_0] = 28;\n for (j = i_0; j < 28; ++j) {\n if (!ckmv2_0[i_0][j]) {\n skipAxis2[i_0] = j - 1;\n break;\n }\n }\n }\n for (i_0 = 0; i_0 < 20; ++i_0) {\n skipAxis3[i_0] = 20;\n for (j = i_0; j < 20; ++j) {\n if (!ckmv3[i_0][j]) {\n skipAxis3[i_0] = j - 1;\n break;\n }\n }\n }\n}\n\nlet ckmv;\nlet ckmv2_0;\nlet ckmv3;\nlet move2std;\nlet move2str_1;\nlet move3std;\nlet skipAxis;\nlet skipAxis2;\nlet skipAxis3;\nlet std2move;\nlet std3move;\n\nfunction $doSearch(this$static) {\n let MAX_LENGTH2;\n let MAX_LENGTH3;\n let ct;\n let edge;\n let eparity;\n let i_0;\n let index;\n let length12;\n let length123;\n let prun;\n let s2ct;\n let s2rl;\n this$static.solution = \"\";\n const ud = $getsym(new Center1_1($getCenter(this$static.c), 0));\n const fb = $getsym(new Center1_1($getCenter(this$static.c), 1));\n const rl = $getsym(new Center1_1($getCenter(this$static.c), 2));\n const udprun = csprun[~~ud >> 6];\n const fbprun = csprun[~~fb >> 6];\n const rlprun = csprun[~~rl >> 6];\n this$static.p1SolsCnt = 0;\n this$static.arr2idx = 0;\n $clear(this$static.p1sols.heap);\n for (\n this$static.length1 =\n (udprun < fbprun ? udprun : fbprun) < rlprun\n ? udprun < fbprun\n ? udprun\n : fbprun\n : rlprun;\n this$static.length1 < 100;\n ++this$static.length1\n ) {\n if (\n (rlprun <= this$static.length1 &&\n $search1(\n this$static,\n ~~rl >>> 6,\n rl & 63,\n this$static.length1,\n -1,\n 0,\n )) ||\n (udprun <= this$static.length1 &&\n $search1(\n this$static,\n ~~ud >>> 6,\n ud & 63,\n this$static.length1,\n -1,\n 0,\n )) ||\n (fbprun <= this$static.length1 &&\n $search1(this$static, ~~fb >>> 6, fb & 63, this$static.length1, -1, 0))\n ) {\n break;\n }\n }\n const p1SolsArr = $toArray_1(\n this$static.p1sols,\n initDim(\n _3Lcs_threephase_FullCube_2_classLit,\n makeCastMap([Q$FullCube_$1, Q$Serializable, Q$Object_$1]),\n Q$FullCube_0,\n 0,\n 0,\n ),\n );\n\n p1SolsArr.sort(function (a, b) {\n return a.value - b.value;\n });\n MAX_LENGTH2 = 9;\n do {\n OUT: for (length12 = p1SolsArr[0].value; length12 < 100; ++length12) {\n for (i_0 = 0; i_0 < p1SolsArr.length; ++i_0) {\n if (p1SolsArr[i_0].value > length12) {\n break;\n }\n if (length12 - p1SolsArr[i_0].length1 > MAX_LENGTH2) {\n continue;\n }\n $copy_4(this$static.c1, p1SolsArr[i_0]);\n $set_2(\n this$static.ct2,\n $getCenter(this$static.c1),\n parity_0($getEdge(this$static.c1).ep),\n );\n s2ct = $getct(this$static.ct2);\n s2rl = $getrl(this$static.ct2);\n this$static.length1 = p1SolsArr[i_0].length1;\n this$static.length2 = length12 - p1SolsArr[i_0].length1;\n if ($search2(this$static, s2ct, s2rl, this$static.length2, 28, 0)) {\n break OUT;\n }\n }\n }\n ++MAX_LENGTH2;\n } while (length12 === 100);\n this$static.arr2.sort(function (a, b) {\n return a.value - b.value;\n });\n index = 0;\n MAX_LENGTH3 = 13;\n do {\n OUT2: for (\n length123 = this$static.arr2[0].value;\n length123 < 100;\n ++length123\n ) {\n for (i_0 = 0; i_0 < Math.min(this$static.arr2idx, 100); ++i_0) {\n if (this$static.arr2[i_0].value > length123) {\n break;\n }\n if (\n length123 -\n this$static.arr2[i_0].length1 -\n this$static.arr2[i_0].length2 >\n MAX_LENGTH3\n ) {\n continue;\n }\n eparity = $set_6(this$static.e12, $getEdge(this$static.arr2[i_0]));\n $set_3(\n this$static.ct3,\n $getCenter(this$static.arr2[i_0]),\n eparity ^ parity_0($getCorner(this$static.arr2[i_0]).cp),\n );\n ct = $getct_0(this$static.ct3);\n edge = $get_2(this$static.e12, 10);\n prun = getprun($getsym_0(this$static.e12));\n if (\n prun <=\n length123 -\n this$static.arr2[i_0].length1 -\n this$static.arr2[i_0].length2 &&\n $search3(\n this$static,\n edge,\n ct,\n prun,\n length123 -\n this$static.arr2[i_0].length1 -\n this$static.arr2[i_0].length2,\n 20,\n 0,\n )\n ) {\n index = i_0;\n break OUT2;\n }\n }\n }\n ++MAX_LENGTH3;\n } while (length123 === 100);\n const solcube = new FullCube_4(this$static.arr2[index]);\n this$static.length1 = solcube.length1;\n this$static.length2 = solcube.length2;\n const length_0 = length123 - this$static.length1 - this$static.length2;\n for (i_0 = 0; i_0 < length_0; ++i_0) {\n $move_6(solcube, move3std[this$static.move3[i_0]]);\n }\n this$static.solution = $getMoveString(solcube);\n}\n\nfunction $init2_0(this$static, sym) {\n let i_0;\n let next;\n $copy_4(this$static.c1, this$static.c);\n for (i_0 = 0; i_0 < this$static.length1; ++i_0) {\n $move_6(this$static.c1, this$static.move1[i_0]);\n }\n switch (finish_0[sym]) {\n case 0: {\n $move_6(this$static.c1, 24);\n $move_6(this$static.c1, 35);\n this$static.move1[this$static.length1] = 24;\n this$static.move1[this$static.length1 + 1] = 35;\n this$static.add1 = true;\n sym = 19;\n break;\n }\n case 12869: {\n $move_6(this$static.c1, 18);\n $move_6(this$static.c1, 29);\n this$static.move1[this$static.length1] = 18;\n this$static.move1[this$static.length1 + 1] = 29;\n this$static.add1 = true;\n sym = 34;\n break;\n }\n case 735470: {\n this$static.add1 = false;\n sym = 0;\n }\n }\n $set_2(\n this$static.ct2,\n $getCenter(this$static.c1),\n parity_0($getEdge(this$static.c1).ep),\n );\n const s2ct = $getct(this$static.ct2);\n const s2rl = $getrl(this$static.ct2);\n const ctp = ctprun[s2ct * 70 + s2rl];\n this$static.c1.value = ctp + this$static.length1;\n this$static.c1.length1 = this$static.length1;\n this$static.c1.add1 = this$static.add1;\n this$static.c1.sym = sym;\n ++this$static.p1SolsCnt;\n if (this$static.p1sols.heap.size < 500) {\n next = new FullCube_4(this$static.c1);\n } else {\n next = $poll(this$static.p1sols);\n next.value > this$static.c1.value && $copy_4(next, this$static.c1);\n }\n $add(this$static.p1sols, next);\n return this$static.p1SolsCnt === 10000;\n}\n\nfunction $init3(this$static) {\n let i_0;\n $copy_4(this$static.c2, this$static.c1);\n for (i_0 = 0; i_0 < this$static.length2; ++i_0) {\n $move_6(this$static.c2, this$static.move2[i_0]);\n }\n if (!$checkEdge($getEdge(this$static.c2))) {\n return false;\n }\n const eparity = $set_6(this$static.e12, $getEdge(this$static.c2));\n $set_3(\n this$static.ct3,\n $getCenter(this$static.c2),\n eparity ^ parity_0($getCorner(this$static.c2).cp),\n );\n const ct = $getct_0(this$static.ct3);\n $get_2(this$static.e12, 10);\n const prun = getprun($getsym_0(this$static.e12));\n !this$static.arr2[this$static.arr2idx]\n ? (this$static.arr2[this$static.arr2idx] = new FullCube_4(this$static.c2))\n : $copy_4(this$static.arr2[this$static.arr2idx], this$static.c2);\n this$static.arr2[this$static.arr2idx].value =\n this$static.length1 + this$static.length2 + Math.max(prun, prun_0[ct]);\n this$static.arr2[this$static.arr2idx].length2 = this$static.length2;\n ++this$static.arr2idx;\n return this$static.arr2idx === this$static.arr2.length;\n}\n\nfunction $randomState(this$static) {\n init_5();\n this$static.c = new FullCube_5();\n $doSearch(this$static);\n return this$static.solution;\n}\n\nfunction $search1(this$static, ct, sym, maxl, lm, depth) {\n let axis;\n let ctx;\n let m_0;\n let power;\n let prun;\n let symx;\n if (ct === 0) {\n return maxl === 0 && $init2_0(this$static, sym);\n }\n for (axis = 0; axis < 27; axis += 3) {\n if (axis === lm || axis === lm - 9 || axis === lm - 18) {\n continue;\n }\n for (power = 0; power < 3; ++power) {\n m_0 = axis + power;\n ctx = ctsmv[ct][symmove[sym][m_0]];\n prun = csprun[~~ctx >>> 6];\n if (prun >= maxl) {\n if (prun > maxl) {\n break;\n }\n continue;\n }\n symx = symmult[sym][ctx & 63];\n ctx >>>= 6;\n this$static.move1[depth] = m_0;\n if ($search1(this$static, ctx, symx, maxl - 1, axis, depth + 1)) {\n return true;\n }\n }\n }\n return false;\n}\n\nfunction $search2(this$static, ct, rl, maxl, lm, depth) {\n let ctx;\n let m_0;\n let prun;\n let rlx;\n if (ct === 0 && ctprun[rl] === 0) {\n return maxl === 0 && $init3(this$static);\n }\n for (m_0 = 0; m_0 < 23; ++m_0) {\n if (ckmv2_0[lm][m_0]) {\n m_0 = skipAxis2[m_0];\n continue;\n }\n ctx = ctmv[ct][m_0];\n rlx = rlmv[rl][m_0];\n prun = ctprun[ctx * 70 + rlx];\n if (prun >= maxl) {\n prun > maxl && (m_0 = skipAxis2[m_0]);\n continue;\n }\n this$static.move2[depth] = move2std[m_0];\n if ($search2(this$static, ctx, rlx, maxl - 1, m_0, depth + 1)) {\n return true;\n }\n }\n return false;\n}\n\nfunction $search3(this$static, edge, ct, prun, maxl, lm, depth) {\n let cord1x;\n let cord2x;\n let ctx;\n let edgex;\n let m_0;\n let prun1;\n let prunx;\n let symcord1x;\n let symx;\n if (maxl === 0) {\n return edge === 0 && ct === 0;\n }\n $set_4(this$static.tempe[depth], edge);\n for (m_0 = 0; m_0 < 17; ++m_0) {\n if (ckmv3[lm][m_0]) {\n m_0 = skipAxis3[m_0];\n continue;\n }\n ctx = ctmove[ct][m_0];\n prun1 = prun_0[ctx];\n if (prun1 >= maxl) {\n prun1 > maxl && m_0 < 14 && (m_0 = skipAxis3[m_0]);\n continue;\n }\n edgex = getmvrot(this$static.tempe[depth].edge, m_0 << 3, 10);\n cord1x = ~~(edgex / 20160);\n symcord1x = raw2sym_1[cord1x];\n symx = symcord1x & 7;\n symcord1x >>= 3;\n cord2x =\n getmvrot(this$static.tempe[depth].edge, (m_0 << 3) | symx, 10) % 20160;\n prunx = getprun_0(symcord1x * 20160 + cord2x, prun);\n if (prunx >= maxl) {\n prunx > maxl && m_0 < 14 && (m_0 = skipAxis3[m_0]);\n continue;\n }\n if ($search3(this$static, edgex, ctx, prunx, maxl - 1, m_0, depth + 1)) {\n this$static.move3[depth] = m_0;\n return true;\n }\n }\n return false;\n}\n\nfunction Search_4() {\n let i_0;\n this.p1sols = new PriorityQueue_0(new FullCube$ValueComparator_0());\n this.move1 = createArray(15);\n this.move2 = createArray(20);\n this.move3 = createArray(20);\n this.c1 = new FullCube_3();\n this.c2 = new FullCube_3();\n this.ct2 = new Center2_0();\n this.ct3 = new Center3_0();\n this.e12 = new Edge3_0();\n this.tempe = createArray(20);\n this.arr2 = createArray(100);\n for (i_0 = 0; i_0 < 20; ++i_0) {\n this.tempe[i_0] = new Edge3_0();\n }\n}\n\nfunction init_5() {\n if (inited_2) {\n return;\n }\n initSym_0();\n raw2sym = createArray(735471);\n initSym2Raw();\n createMoveTable();\n raw2sym = null;\n createPrun();\n init_3();\n init_4();\n initMvrot();\n initRaw2Sym();\n createPrun_0();\n inited_2 = true;\n}\n\ndefineSeed(163, 1, makeCastMap([Q$Search_0]), Search_4);\n_.add1 = false;\n_.arr2idx = 0;\n_.c = null;\n_.length1 = 0;\n_.length2 = 0;\n_.p1SolsCnt = 0;\n_.solution = \"\";\nlet inited_2 = false;\n\nlet ran$clinit_Util_0 = false;\nfunction $clinit_Util_0() {\n if (ran$clinit_Util_0) {\n return;\n }\n ran$clinit_Util_0 = true;\n}\n\nfunction parity_0(arr) {\n let i_0;\n let j;\n let len;\n let parity;\n parity = 0;\n for (i_0 = 0, len = arr.length; i_0 < len; ++i_0) {\n for (j = i_0; j < len; ++j) {\n arr[i_0] > arr[j] && (parity ^= 1);\n }\n }\n return parity;\n}\n\nfunction swap(arr, a, b, c, d, key) {\n let temp;\n switch (key) {\n case 0: {\n temp = arr[d];\n arr[d] = arr[c];\n arr[c] = arr[b];\n arr[b] = arr[a];\n arr[a] = temp;\n return;\n }\n case 1: {\n temp = arr[a];\n arr[a] = arr[c];\n arr[c] = temp;\n temp = arr[b];\n arr[b] = arr[d];\n arr[d] = temp;\n return;\n }\n case 2: {\n temp = arr[a];\n arr[a] = arr[b];\n arr[b] = arr[c];\n arr[c] = arr[d];\n arr[d] = temp;\n return;\n }\n }\n}\n\nfunction Class_0() {}\n\nfunction createForArray(packageName, className, seedId, componentType) {\n const clazz = new Class_0();\n clazz.typeName = packageName + className;\n isInstantiable(seedId !== 0 ? -seedId : 0) &&\n setClassLiteral(seedId !== 0 ? -seedId : 0, clazz);\n clazz.modifiers = 4;\n clazz.superclass = Ljava_lang_Object_2_classLit;\n clazz.componentType = componentType;\n return clazz;\n}\n\nfunction createForClass(packageName, className, seedId, superclass) {\n const clazz = new Class_0();\n clazz.typeName = packageName + className;\n isInstantiable(seedId) && setClassLiteral(seedId, clazz);\n clazz.superclass = superclass;\n return clazz;\n}\n\nfunction getSeedFunction(clazz) {\n const func = seedTable[clazz.seedId];\n clazz = null;\n return func;\n}\n\nfunction isInstantiable(seedId) {\n return typeof seedId === \"number\" && seedId > 0;\n}\n\nfunction setClassLiteral(seedId, clazz) {\n let proto;\n clazz.seedId = seedId;\n if (seedId === 2) {\n proto = String.prototype;\n } else {\n if (seedId > 0) {\n let seed = getSeedFunction(clazz);\n if (seed) {\n proto = seed.prototype;\n } else {\n seed = seedTable[seedId] = function () {};\n seed.___clazz$ = clazz;\n return;\n }\n } else {\n return;\n }\n }\n proto.___clazz$ = clazz;\n}\n\n_.val$outerIter = null;\n\nfunction $add(this$static, o) {\n if ($offer(this$static, o)) {\n return true;\n }\n}\n\nfunction $$init_6(this$static) {\n this$static.array = initDim(\n _3Ljava_lang_Object_2_classLit,\n makeCastMap([Q$Serializable, Q$Object_$1]),\n Q$Object,\n 0,\n 0,\n );\n}\n\nfunction $add_0(this$static, o) {\n setCheck(this$static.array, this$static.size++, o);\n return true;\n}\n\nfunction $clear(this$static) {\n this$static.array = initDim(\n _3Ljava_lang_Object_2_classLit,\n makeCastMap([Q$Serializable, Q$Object_$1]),\n Q$Object,\n 0,\n 0,\n );\n this$static.size = 0;\n}\n\nfunction $get_4(this$static, index) {\n return this$static.array[index];\n}\n\nfunction $remove_0(this$static, index) {\n const previous = this$static.array[index];\n splice_0(this$static.array, index, 1);\n --this$static.size;\n return previous;\n}\n\nfunction $set_7(this$static, index, o) {\n const previous = this$static.array[index];\n setCheck(this$static.array, index, o);\n return previous;\n}\n\nfunction $toArray_0(this$static, out) {\n let i_0;\n out.length < this$static.size && (out = createFrom(out, this$static.size));\n for (i_0 = 0; i_0 < this$static.size; ++i_0) {\n setCheck(out, i_0, this$static.array[i_0]);\n }\n out.length > this$static.size && setCheck(out, this$static.size, null);\n return out;\n}\n\nfunction ArrayList_1() {\n $$init_6(this);\n this.array.length = 500;\n}\n\nfunction splice_0(array, index, deleteCount) {\n array.splice(index, deleteCount);\n}\n_.size = 0;\n\nfunction binarySearch_0(sortedArray, key) {\n let high;\n let low;\n let mid;\n let midVal;\n low = 0;\n high = sortedArray.length - 1;\n while (low <= high) {\n mid = low + (~~(high - low) >> 1);\n midVal = sortedArray[mid];\n if (midVal < key) {\n low = mid + 1;\n } else if (midVal > key) {\n high = mid - 1;\n } else {\n return mid;\n }\n }\n return -low - 1;\n}\n\nfunction fill_0(a) {\n fill_1(a, a.length);\n}\n\nfunction fill_1(a, toIndex) {\n let i_0;\n for (i_0 = 0; i_0 < toIndex; ++i_0) {\n a[i_0] = -1;\n }\n}\n\nfunction $mergeHeaps(this$static, node) {\n let smallestChild;\n let leftChild;\n let rightChild;\n let smallestChild_0;\n const heapSize = this$static.heap.size;\n const value = $get_4(this$static.heap, node);\n while (node * 2 + 1 < heapSize) {\n smallestChild =\n ((leftChild = 2 * node + 1),\n (rightChild = leftChild + 1),\n (smallestChild_0 = leftChild),\n rightChild < heapSize &&\n $compare_0(\n $get_4(this$static.heap, rightChild),\n $get_4(this$static.heap, leftChild),\n ) < 0 &&\n (smallestChild_0 = rightChild),\n smallestChild_0);\n if ($compare_0(value, $get_4(this$static.heap, smallestChild)) < 0) {\n break;\n }\n $set_7(this$static.heap, node, $get_4(this$static.heap, smallestChild));\n node = smallestChild;\n }\n $set_7(this$static.heap, node, value);\n}\n\nfunction $offer(this$static, e) {\n let childNode;\n let node;\n node = this$static.heap.size;\n $add_0(this$static.heap, e);\n while (node > 0) {\n childNode = node;\n node = ~~((node - 1) / 2);\n if ($compare_0($get_4(this$static.heap, node), e) <= 0) {\n $set_7(this$static.heap, childNode, e);\n return true;\n }\n $set_7(this$static.heap, childNode, $get_4(this$static.heap, node));\n }\n $set_7(this$static.heap, node, e);\n return true;\n}\n\nfunction $poll(this$static) {\n if (this$static.heap.size === 0) {\n return null;\n }\n const value = $get_4(this$static.heap, 0);\n $removeAtIndex(this$static);\n return value;\n}\n\nfunction $removeAtIndex(this$static) {\n const lastValue = $remove_0(this$static.heap, this$static.heap.size - 1);\n if (0 < this$static.heap.size) {\n $set_7(this$static.heap, 0, lastValue);\n $mergeHeaps(this$static, 0);\n }\n}\n\nfunction $toArray_1(this$static, a) {\n return $toArray_0(this$static.heap, a);\n}\n\nfunction PriorityQueue_0(cmp) {\n this.heap = new ArrayList_1();\n this.cmp = cmp;\n}\n\ndefineSeed(239, 1, {}, PriorityQueue_0);\n_.cmp = null;\n_.heap = null;\n\nconst Ljava_lang_Object_2_classLit = createForClass(\n \"java.lang.\",\n \"Object\",\n 1,\n null,\n);\nconst _3Ljava_lang_Object_2_classLit = createForArray(\n \"[Ljava.lang.\",\n \"Object;\",\n 356,\n Ljava_lang_Object_2_classLit,\n);\nconst Lcs_threephase_FullCube_2_classLit = createForClass(\n \"cs.threephase.\",\n \"FullCube\",\n 160,\n Ljava_lang_Object_2_classLit,\n);\nconst _3Lcs_threephase_FullCube_2_classLit = createForArray(\n \"[Lcs.threephase.\",\n \"FullCube;\",\n 381,\n Lcs_threephase_FullCube_2_classLit,\n);\n\nlet searcher;\n\nlet raninit = false;\nfunction init() {\n if (raninit) {\n return;\n }\n raninit = true;\n $clinit_Moves();\n $clinit_Util_0();\n $clinit_Center1();\n $clinit_Center2();\n $clinit_Center3();\n $clinit_Edge3();\n $clinit_CornerCube();\n $clinit_EdgeCube();\n $clinit_FullCube_0();\n searcher = new Search_4();\n}\n\nexport function initialize(): void {\n init();\n init_5();\n}\n\nexport async function random444Scramble(): Promise<Alg> {\n mustBeInsideWorker();\n init();\n const suffix = Alg.fromString($randomState(searcher));\n return (await getRandomScramble333()).concat(suffix);\n}\n"],
5
- "mappings": "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",
6
- "names": []
7
- }
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../src/cubing/vendor/xyzzy/kilosolver.js"],
4
- "sourcesContent": ["/* kilosolver.js - A kilominx solver\nversion 0.7 (2021-04-03)\nCopyright (c) 2016, 2020, 2021\n\nFrom https://torchlight.github.io/kiloscrambler.html\nOriginally MIT licensed, added to `cubing.js` under the GPL license by permission from the author (@torchlight/xyzzy).\n\nThis is a port of the kilominx solver originally written in Python with a few minor optimisations.\n\nHow to run this:\n(0) Save this file somewhere.\n(1) Install any JavaScript shell and run it with this file.\n(2) Type stuff into the shell.\n\n(or just use the HTML interface! it exists now!)\n\nThere is currently not much of a public interface. Useful stuff:\ncache_all_tables()\n to generate all the lookup tables\nprint_move_sequence(generate_random_state_scramble())\n to get a random-state scramble\nprint_move_sequence(generate_hybrid_scramble())\n to get a hybrid random-move scramble\n\nFor the full solver (used in the random-state scrambler), a few hundred megabytes of RAM may be used\nfor the lookup tables, which will also take roughly a minute to generate. Once generated, each solve\ntakes roughly 0.08 second.\n\nThe hybrid scrambler uses much smaller lookup tables that take less memory and are generated faster,\nbut produces somewhat longer scramble sequences and isn't fully random-state. It should nevertheless\nbe good enough for non-competition purposes.\n\nOn the to-do list:\n- optimise the heck out of the lookup table generation\n- a GUI for the solver\n- optimise the solver with colour neutrality and NISS(tm) techniques\n- throw all the global variables into a namespace\n\nCompatibility notes:\nThis code makes fairly heavy use of ES6 syntactic sugar because writing code in JavaScript's already\nan exercise in masochism and I'm not going to make my life harder by restricting myself to ES5. Some\nof the features used are:\n- let, const\n- destructuring assignment\n- for-of\n- arrow functions\n- 'use strict'\n\nAny web browser from 2016 or later should support all of these; the code has been tested only on the\nlatest versions of Firefox and Chrome, as well as a somewhat outdated SpiderMonkey shell, but should\nalso work with recent versions of Edge, Safari, etc.\n*/\n\n\"use strict\";\n\nimport { Alg } from \"../../alg\";\nimport { randomUIntBelow } from \"random-uint-below\";\n\nlet PHASE4_THRESHOLD = 7;\n// change this to 8 to make the individual solves faster, at the cost of slower initialisation\n\nfunction counter(A) {\n let counts = [];\n for (let a of A) {\n counts[a] = (counts[a] || 0) + 1;\n }\n return counts;\n}\n\n/* Combinatoric functions */\n\nfunction factorial(n) {\n if (n < 2) {\n return n;\n }\n let f = 1;\n for (let i = 2; i <= n; i++) {\n f *= i;\n }\n return f;\n}\n\nfunction C(n, k) {\n if (k < 0 || k > n) {\n return 0;\n }\n if (k === 0 || k === n) {\n return 1;\n }\n let c = 1;\n for (let i = 0; i < k; i++) {\n c = ((c * (n - i)) / (i + 1)) | 0;\n }\n return c;\n}\n\nfunction permutation_to_index(perm) {\n perm = perm.slice();\n let n = perm.length;\n let f = factorial(n - 1);\n let ind = 0;\n while (n > 1) {\n n--;\n // invariant: f === factorial(n)\n // also, perm stores meaningful values up to perm[n]\n let e = perm[0];\n ind += e * f;\n for (let i = 0; i < n; i++) {\n let x = perm[i + 1];\n perm[i] = x - (x > e);\n }\n f /= n;\n }\n return ind;\n}\n\nfunction index_to_permutation(ind, n) {\n let perm = [];\n let f = factorial(n - 1);\n for (let i = 0; i < n; i++) {\n perm[i] = (ind / f) | 0;\n ind %= f;\n f /= n - 1 - i;\n }\n for (let i = n - 2; i >= 0; i--) {\n for (let j = i + 1; j < n; j++) {\n perm[j] += +(perm[j] >= perm[i]);\n }\n }\n return perm;\n}\n\nfunction permutation_parity(A) {\n let n = A.length;\n let parity = 0;\n for (let i = 0; i < n - 1; i++) {\n for (let j = i; j < n; j++) {\n if (A[i] > A[j]) {\n parity ^= 1;\n }\n }\n }\n return parity;\n}\n\nfunction index_to_evenpermutation(ind, n) {\n let perm = [];\n let f = factorial(n - 1) / 2;\n let parity = 0;\n for (let i = 0; i < n - 1; i++) {\n perm[i] = (ind / f) | 0;\n ind %= f;\n f /= n - 1 - i;\n }\n perm[n - 1] = 0;\n for (let i = n - 2; i >= 0; i--) {\n for (let j = i + 1; j < n; j++) {\n if (perm[j] >= perm[i]) {\n perm[j]++;\n } else {\n parity ^= 1;\n }\n }\n }\n if (parity === 1) {\n [perm[n - 2], perm[n - 1]] = [perm[n - 1], perm[n - 2]];\n }\n return perm;\n}\n\nfunction evenpermutation_to_index(perm) {\n return permutation_to_index(perm) >> 1;\n}\n\nlet [evenpermutation10_to_index, index_to_evenpermutation10] = (() => {\n let index_in_set_bits = new Int8Array(1024 * 10);\n let look_up_set_bits = new Int8Array(1024 * 10);\n for (let i = 0; i < 1024; i++) {\n for (let j = 0, counter = 0; j < 10; j++) {\n if (((i >>> j) & 1) === 0) {\n continue;\n }\n index_in_set_bits[(j << 10) | i] = counter;\n look_up_set_bits[(counter << 10) | i] = j;\n counter++;\n }\n }\n\n function evenpermutation10_to_index(perm) {\n let unused = 0x3ff; // track which values in 0..9 haven't been used so far\n let f = 181440; // = 9!/2\n let ind = 0;\n for (let i = 0; i < 8; i++) {\n let v = perm[i];\n ind += index_in_set_bits[unused | (v << 10)] * f;\n unused &= ~(1 << v);\n f /= 9 - i;\n }\n return ind;\n }\n\n // note: this is *not* a drop-in replacement for index_to_evenpermutation!\n function index_to_evenpermutation10(ind, perm) {\n let unused = 0x3ff;\n let f = 181440; // = 9!/2\n let parity = 0;\n for (let i = 0; i < 8; i++) {\n let a = (ind / f) | 0;\n ind -= a * f;\n parity ^= a & 1;\n let v = look_up_set_bits[unused | (a << 10)];\n perm[i] = v;\n unused &= ~(1 << v);\n f /= 9 - i;\n }\n // the last two elements are uniquely determined by the other ten\n perm[8] = look_up_set_bits[unused | (parity << 10)];\n perm[9] = look_up_set_bits[unused | ((parity ^ 1) << 10)];\n return perm;\n }\n\n return [evenpermutation10_to_index, index_to_evenpermutation10];\n})();\n\nfunction comb_to_index(l) {\n let bits = l.length;\n let ones = 0;\n for (let i = 0; i < bits; i++) {\n ones += +(l[i] === 1);\n }\n let zeros = bits - ones;\n if (zeros === 0 || ones === 0 || bits === 1) {\n return 0;\n }\n let b = C(bits - 1, ones);\n let ind = 0;\n for (let i = 0; zeros > 0 && ones > 0 && bits > 1; i++) {\n bits--;\n if (l[i] === 0) {\n b = (b * --zeros) / bits;\n } else {\n // l[i] === 1\n ind += b;\n b = (b * ones--) / bits;\n }\n }\n return ind;\n}\n\nfunction index_to_comb(ind, ones, bits) {\n let zeros = bits - ones;\n let b = C(bits - 1, ones);\n let l = [];\n let n = bits - 1;\n for (let i = 0; i < n; i++) {\n bits--;\n if (ind < b) {\n l.push(0);\n b = (b * --zeros) / bits;\n } else {\n l.push(1);\n ind -= b;\n b = (b * ones--) / bits;\n }\n }\n l.push(ones);\n return l;\n}\n\nfunction compose(A, B) {\n let C = [];\n for (let i = 0; i < B.length; i++) {\n C[i] = A[B[i]];\n }\n return C;\n}\n\nfunction compose_o(A, B) {\n // note: we hardcode the modulus to 3 here, because ~optimisations~\n // (unnecessary abstraction is bad, actually)\n let p = compose(A[0], B[0]);\n let o = [];\n let n = B[0].length;\n for (let i = 0; i < n; i++) {\n o[i] = (A[1][B[0][i]] + B[1][i]) % 3;\n }\n return [p, o];\n}\n\nfunction permutation_from_cycle(cycle, n) {\n let perm = [];\n for (let i = 0; i < n; i++) {\n perm[i] = i;\n }\n for (let i = 0; i < cycle.length; i++) {\n perm[cycle[i]] = cycle[(i + 1) % cycle.length];\n }\n return perm;\n}\n\nfunction unsparsify_list(d, n) {\n let l = Array(n).fill(0);\n for (let k in d) {\n l[k] = d[k];\n }\n return l;\n}\n\n/* The basic moves */\n\nconst move_U = [\n permutation_from_cycle([0, 1, 2, 3, 4], 20),\n unsparsify_list({}, 20),\n];\nconst move_R = [\n permutation_from_cycle([4, 3, 11, 12, 13], 20),\n unsparsify_list({ 4: 2, 3: 1, 11: 1, 12: 1, 13: 1 }, 20),\n];\nconst move_F = [\n permutation_from_cycle([3, 2, 9, 10, 11], 20),\n unsparsify_list({ 3: 2, 2: 1, 9: 1, 10: 1, 11: 1 }, 20),\n];\nconst move_L = [\n permutation_from_cycle([2, 1, 7, 8, 9], 20),\n unsparsify_list({ 2: 2, 1: 1, 7: 1, 8: 1, 9: 1 }, 20),\n];\nlet move_BL = [\n permutation_from_cycle([1, 0, 5, 6, 7], 20),\n unsparsify_list({ 1: 2, 0: 1, 5: 1, 6: 1, 7: 1 }, 20),\n];\nlet move_BR = [\n permutation_from_cycle([0, 4, 13, 14, 5], 20),\n unsparsify_list({ 0: 2, 4: 1, 13: 1, 14: 1, 5: 1 }, 20),\n];\nlet move_x2 = [\n [15, 16, 17, 18, 19, 10, 9, 8, 7, 6, 5, 14, 13, 12, 11, 0, 1, 2, 3, 4],\n unsparsify_list({}, 20),\n];\nlet move_y = [\n [1, 2, 3, 4, 0, 7, 8, 9, 10, 11, 12, 13, 14, 5, 6, 19, 15, 16, 17, 18],\n unsparsify_list({}, 20),\n];\nlet move_rot = [\n [9, 10, 11, 3, 2, 8, 16, 15, 19, 12, 13, 4, 0, 1, 7, 14, 18, 17, 6, 5],\n [2, 0, 1, 2, 1, 2, 2, 0, 1, 1, 1, 1, 0, 2, 2, 1, 2, 1, 2, 0],\n];\n\nconst moves = [move_U, move_R, move_F, move_L, move_BL, move_BR, move_x2];\nconst move_names = [\"U\", \"R\", \"F\", \"L\", \"BL\", \"BR\", \"x2\"];\n\nlet id = compose_o(move_x2, move_x2);\n\nlet moves_full = [];\nfor (let i = 0; i < moves.length; i++) {\n moves_full[i] = [id];\n for (let j = 1; j < 5; j++) {\n moves_full[i][j] = compose_o(moves_full[i][j - 1], moves[i]);\n }\n}\n\nfunction random_state() {\n let p = [0];\n for (let i = 1; i < 20; i++) {\n let r = randomUIntBelow(i + 1);\n p[i] = p[r];\n p[r] = i;\n }\n if (permutation_parity(p) === 1) {\n [p[0], p[1]] = [p[1], p[0]];\n }\n let o = Array(20).fill(0);\n for (let i = 0; i < 19; i++) {\n o[i] = randomUIntBelow(3);\n o[19] += 3 - o[i];\n }\n o[19] %= 3;\n return [p, o];\n}\n\n/* Human interface stuff */\n\nfunction stringify_move_sequence(move_sequence) {\n let suffixes = [\"0\", \"\", \"2\", \"2'\", \"'\"];\n let s = move_sequence.map(([m, r]) => move_names[m] + suffixes[r]);\n return s.join(\" \");\n}\n\nfunction print_move_sequence(move_sequence) {\n console.log(stringify_move_sequence(move_sequence));\n}\n\nfunction apply_move_sequence(state, move_sequence) {\n for (let [m, r] of move_sequence) {\n for (let i = 0; i < r; i++) {\n state = compose_o(state, moves[m]);\n }\n }\n return state;\n}\n\nfunction generate_random_state_scramble() {\n return solve(random_state());\n}\n\nfunction generate_random_move_scramble(M, N) {\n M = M || 6;\n N = N || 6;\n // total number of moves = (M+1)(N+1)-1\n let move_sequence = [];\n for (let i = 0; i <= M; i++) {\n let last = -1;\n let lastlast = -1;\n for (let j = 0; j < N; j++) {\n let m;\n while (true) {\n m = Math.floor(Math.random() * 6);\n // don't output stuff like U2 U\n if (m === last) {\n continue;\n }\n // U move never commutes with the others\n else if (m === 0) {\n break;\n }\n // don't output stuff like L R L because L and R commute\n else if (m === lastlast && ((m - last) * (m - last)) % 5 === 4) {\n continue;\n } else {\n break;\n }\n }\n // make 144-deg moves twice as likely as 72-deg moves\n move_sequence.push([m, 1 + Math.round(Math.random() * 3)]);\n [last, lastlast] = [m, last];\n }\n // flip after every set of moves on the hemisphere except the last because that would be\n // kind of pointless\n if (i < M) {\n move_sequence.push([6, 1]);\n }\n }\n return move_sequence;\n}\n\n/* a brief note on analysing random-move scrambles\n\nLet M = num flips and N = num moves between flips.\n\nTracking just corner orientation is pretty much useless to determine if a scramble is good, at least\nfor the choice of CO reference used in the solver (<U,flip,(R'FRF')3>); even M=1, N=8 is good enough\nto randomise the CO, despite leaving a bunch of obvious blocks.\n\nInstead, we can track the location of, say, the white pieces. There are C(20, 5) combinations, so we\njust try out a million random-move scrambles and do a chi-squared test. (Except I don't have a stats\npackage installed, so this is just a qualitative approximation.)\n\nM=4, N=5 (29 moves): +2.7 stddev\nM=3, N=8 (35 moves): +15.7 stddev\nM=5, N=5 (35 moves): -0.1 stddev\nM=4, N=7 (39 moves): +3.8 stddev\nM=5, N=6 (41 moves): -0.4 stddev\nM=4, N=8 (44 moves): +2.2 stddev\n\n(the 95% confidence interval for these estimated values should be taken to be +-2, as usual)\n\nObviously we get closer to a uniform distribution with more moves, but we also want the scrambles to\nbe of a reasonable length. M=5, N=6 seems to be a good tradeoff.\n\nThis is until you realise that the five grey pieces are effectively scrambled with M reduced by one,\nso we compensate for that by using M=6, N=6, which gives 48-move scrambles.\n\nasdsadsf\n\n(tl;dr: use the hybrid scrambler if you can stomach 0.3-second initialisation; don't use this)\n*/\n\n/* GUI stuff\n\nThe create_svg_template function returns an <svg> element with the facelets laid out neatly as a net\nand the draw_state function fills in the colours given a state.\n\nThe input to the latter function does not have to be an <svg> element returned by the former, but it\nmust contain an element for each of the 60 facelets, with class 'loc%d_%d' % (i, j), where i is from\n0 to 19 and j is either 0, 1 or 2.\n\nj = 0 corresponds to the reference facelet (the one closest to perpendicular to the U-D axis), j = 1\ncorresponds to the one clockwise from the reference, and j = 2 corresponds to the one anticlockwise.\n\nOther than the loc%d_%d classes, the facelet <polygon> elements also have the .facelet class and the\nface outline <polygon> elements have the .face class, and may be customised with CSS. For example:\n\n.face {stroke-linejoin: miter; stroke-width: 0.1;}\n\nThis can be used to make the corners sharp and the face outlines thicker; you get the idea.\n\nTODO: figure out a sane way to handle changing colour scheme on the fly\n(maybe tag the facelets with a separate class for each colour in addition to setting the fill)\n*/\n\n// colours copied from Kit's modded version of the Python scrambler, but with pale yellow made a bit\n// darker.\nlet default_colour_scheme = {\n U: \"#ffffff\", // U (white)\n L: \"#57007f\", // L (purple)\n F: \"#007f0e\", // F (green)\n R: \"#ff0000\", // R (red)\n BR: \"#0026ff\", // BR (blue)\n BL: \"#ffd800\", // BL (yellow)\n DBR: \"#ff82b8\", // DBR (pink)\n DB: \"#00ff21\", // DB (light green)\n DBL: \"#ff6a00\", // DBL (orange)\n DFL: \"#0094ff\", // DFL (light blue)\n DFR: \"#ffff77\", // DFR (pale yellow)\n D: \"#808080\", // D (grey)\n};\n\nlet face_names = [\n \"U\",\n \"L\",\n \"F\",\n \"R\",\n \"BR\",\n \"BL\",\n \"DBR\",\n \"DB\",\n \"DBL\",\n \"DFL\",\n \"DFR\",\n \"D\",\n];\n\n// return the face on which the loc_ori piece lies\nfunction map_piece_to_face(loc, ori) {\n ori = ((ori % 3) + 3) % 3;\n let face = [\n [\"U\", \"BL\", \"BR\"],\n [\"U\", \"L\", \"BL\"],\n [\"U\", \"F\", \"L\"],\n [\"U\", \"R\", \"F\"],\n [\"U\", \"BR\", \"R\"],\n [\"DB\", \"BR\", \"BL\"],\n [\"BL\", \"DBL\", \"DB\"],\n [\"DBL\", \"BL\", \"L\"],\n [\"L\", \"DFL\", \"DBL\"],\n [\"DFL\", \"L\", \"F\"],\n [\"F\", \"DFR\", \"DFL\"],\n [\"DFR\", \"F\", \"R\"],\n [\"R\", \"DBR\", \"DFR\"],\n [\"DBR\", \"R\", \"BR\"],\n [\"BR\", \"DB\", \"DBR\"],\n [\"D\", \"DFL\", \"DFR\"],\n [\"D\", \"DBL\", \"DFL\"],\n [\"D\", \"DB\", \"DBL\"],\n [\"D\", \"DBR\", \"DB\"],\n [\"D\", \"DFR\", \"DBR\"],\n ][loc][ori];\n return face;\n}\n\n// how much to rotate a facelet (divided by 18 degrees) and where to draw it\nlet rotation_amounts = [\n [0, 3, 7],\n [8, 1, 5],\n [6, 9, 3],\n [4, 7, 1],\n [2, 5, 9],\n [0, 9, 1],\n [9, 0, 2],\n [2, 7, 9],\n [7, 2, 4],\n [4, 5, 7],\n [5, 4, 6],\n [6, 3, 5],\n [3, 6, 8],\n [8, 1, 3],\n [1, 8, 0],\n [5, 8, 2],\n [3, 6, 0],\n [1, 4, 8],\n [9, 2, 6],\n [7, 0, 4],\n];\nlet translation_amounts;\n{\n let A = Math.sin(Math.PI / 5);\n let B = Math.cos(Math.PI / 10);\n let C = Math.cos(Math.PI / 5);\n let D = Math.sin(Math.PI / 10);\n translation_amounts = {\n U: [0, 0],\n L: [-A - B, C - D],\n F: [0, 2 * C],\n R: [A + B, C - D],\n BR: [B, -1 - D],\n BL: [-B, -1 - D],\n DBR: [2 * A + 2 * B, 0],\n DB: [3 * A + 3 * B, -C - D],\n DBL: [4 * A + 4 * B, 0],\n DFL: [3 * A + 4 * B, 1 + C],\n DFR: [3 * A + 2 * B, 1 + C],\n D: [3 * A + 3 * B, C - D],\n };\n // trigonometry :(\n}\n\nfunction create_svg_template(state, colour_scheme) {\n state = state || id;\n colour_scheme = colour_scheme || default_colour_scheme;\n let svgns = \"http://www.w3.org/2000/svg\";\n let root = document.createElementNS(svgns, \"svg\");\n root.setAttribute(\"viewBox\", \"-2.590 -2.218 9.796 4.936\");\n /*\n\tlong diagonal = 1\n\tshort side = sin(pi/5)\n\tlong side = cos(pi/5)\n\tdiagonal of pentagon = 2cos(pi/10)\n\tviewbox size calculations and stuff:\n\tleftmost: -(2cos(pi/10) + sin(pi/5)) = -2.490\n\trightmost: 4sin(pi/5) + 5cos(pi/10) = 7.106\n\ttopmost: -(2cos(pi/5)^2 + cos(pi/5)) = -2.118\n\tbottommost: 2cos(pi/5)+1 = 2.618\n\tthe aspect ratio is almost exactly 2, which is pretty convenient.\n\t*/\n root.setAttribute(\"width\", \"12em\");\n root.setAttribute(\"height\", \"6em\");\n\n // create a polygon for each facelet\n let points = \"0,0 -0.475528,-0.654508 0,-1 0.475528,-0.654508\";\n // 0.4755 = sin(pi/5)cos(pi/5) and 0.6545 = cos(pi/5)^2\n for (let i = 0; i < 20; i++) {\n for (let j = 0; j < 3; j++) {\n let face = map_piece_to_face(i, j);\n let el = document.createElementNS(svgns, \"polygon\");\n let [translate_x, translate_y] = translation_amounts[face];\n let theta = rotation_amounts[i][j] * 36;\n el.setAttribute(\"class\", `facelet loc${i}_${j}`);\n el.setAttribute(\"points\", points);\n el.setAttribute(\n \"transform\",\n `translate(${translate_x},${translate_y}) rotate(${theta})`,\n );\n el.setAttribute(\n \"fill\",\n colour_scheme[map_piece_to_face(state[0][i], state[1][i] + j)],\n );\n el.setAttribute(\"stroke\", \"currentColor\");\n el.setAttribute(\"stroke-linejoin\", \"round\");\n el.setAttribute(\"stroke-width\", \"0.03\");\n root.appendChild(el);\n }\n }\n\n // create a polygon for each face to serve as an outline\n let face_points = \"\";\n for (let i = 0; i < 5; i++) {\n face_points += `${Math.sin((Math.PI * 2 * i) / 5)},${-Math.cos(\n (Math.PI * 2 * i) / 5,\n )} `;\n }\n for (let face of face_names) {\n let el = document.createElementNS(svgns, \"polygon\");\n let [translate_x, translate_y] = translation_amounts[face];\n let theta = face === \"U\" || (face[0] === \"D\" && face !== \"D\") ? 0 : 180;\n el.setAttribute(\"points\", face_points);\n el.setAttribute(\n \"transform\",\n `translate(${translate_x},${translate_y}) rotate(${theta})`,\n );\n el.setAttribute(\"class\", \"face\");\n el.setAttribute(\"fill\", \"none\");\n el.setAttribute(\"stroke\", \"currentColor\");\n el.setAttribute(\"stroke-linejoin\", \"round\");\n el.setAttribute(\"stroke-width\", \"0.05\");\n root.appendChild(el);\n }\n\n return root;\n}\n\nfunction draw_state(svgel, state, colour_scheme) {\n colour_scheme = colour_scheme || default_colour_scheme;\n if (!svgel) {\n return create_svg_template(state, colour_scheme);\n }\n for (let i = 0; i < 20; i++) {\n for (let j = 0; j < 3; j++) {\n let el = svgel.querySelector(`.loc${i}_${j}`);\n el.setAttribute(\n \"fill\",\n colour_scheme[map_piece_to_face(state[0][i], state[1][i] + j)],\n );\n }\n }\n return svgel;\n}\n\n/* Solver logic\n\nFor scrambling purposes, we have these two options:\n(i) generate a random state, solve it, then invert the solution\n(ii) generate a random state, solve it, return the solution as is\n\nThe former has a caveat that \"solve\" really means \"solve into the scramble orientation\". If we solve\ninto an arbitrary orientation, the result is a random-modulo-orientation state, in that the scramble\nhas the same relative positions of pieces as the random state, but possibly with the wrong colours.\n\nThe latter works here because the kilominx states form a group and taking the inverse doesn't affect\nthe randomness, and we do have the freedom to solve into any orientation. Since the WCA regs specify\nthat scrambled puzzles are delivered to the competitor in an arbitrary orientation, we may take this\nto be equivalent to right-composing with a random rotation, and this would \"cancel out\" any rotation\nshowing up at the end of the solution.\n\nSolving to orientations other than white-top-green-front saves a few moves (~2.2 moves by testing 10\norientations out of 60), but it's also proportionally slower for marginal gain.\n\nPhases used:\n\nPhase 1: get the five grey corners out of the U layer (6-gen), then rotate.\n\nPhase 2: form the U layer out of the grey corners (6-gen), then rotate.\n\nPhase 3: solve five more corners at the back/left to reduce to <U,R,F> (6-gen).\n\nPhase 4: finish last three faces (3-gen).\n\nPhase 1 is a skip (all five grey corners are already not on the D layer) ~19% of the time, and takes\njust one flip ~18% of the time, so there's a ~37% chance this step is basically trivial. With colour\nneutrality, this could be something like 99.9% trivial.\n\nPhases 2 and 3 make use of the same permutation/orientation move tables. Ideally, we'd use only one,\nbut it would be kinda terrible for a web app to eat hundreds of megabytes of memory. Luckily for us,\nIDA* settles these phases quickly enough that it doesn't really matter. Unluckily for us, this makes\nthe code a bit more complicated.\n\nPhase 4 is the problematic one, with 35.7 billion states. We use three pruning tables:\n- orientation (3^9 = 19683 states)\n- permutation (10!/2 = 1814400 states)\n- list of states up to 7 moves (3565896 states)\n\nWe don't even need to store the actual distances for the almost-solved states; we just let IDA* work\nits magic with the other pruning tables. Basically, if a state is in the list, the heuristic reports\na lower bound of 0, and if it's not, it reports a lower bound of 8.\n*/\n\nfunction solve_phase1(state) {\n // we don't care about orientation.\n let p = state[0];\n // x < 15 tests if a piece is non-grey.\n if (p.slice(15, 20).every((x) => x < 15)) {\n return [];\n }\n if (p.slice(0, 5).every((x) => x < 15)) {\n return [[6, 1]];\n }\n let flags = p.map((x) => x >= 15);\n let depth = 0;\n let sol;\n while (sol === undefined) {\n depth++;\n sol = search_phase1(flags, depth, -1);\n }\n sol.push([6, 1]);\n return sol;\n}\n\nfunction search_phase1(flags, depth, last) {\n if (depth === 0) {\n if (flags.slice(0, 5).some((x) => x)) {\n return;\n }\n return [];\n }\n for (let move_index = 0; move_index < 6; move_index++) {\n if (move_index === last) {\n continue;\n }\n for (let r = 1; r < 5; r++) {\n let new_flags = compose(flags, moves_full[move_index][r][0]);\n let sol = search_phase1(new_flags, depth - 1, move_index);\n if (sol !== undefined) {\n return [[move_index, r]].concat(sol);\n }\n }\n }\n return;\n}\n\nfunction index_phase2(state) {\n let p = state[0].slice(0, 15);\n let o = state[1];\n let index_c = comb_to_index(p.map((x) => +(x >= 15)));\n let index_o = 243 * index_c;\n for (let i = 0, j = 0; i < 15; i++) {\n if (p[i] < 15) {\n continue;\n }\n index_o += o[i] * Math.pow(3, j);\n // as it so happens, my JS shell is too outdated and doesn't support **\n j++;\n }\n let index_p = 0;\n for (let i = 0; i < 5; i++) {\n index_p += p.indexOf(15 + i) * Math.pow(15, i);\n }\n return [index_o, index_p];\n}\n\nfunction solve_phase2(state) {\n let mtables = [\n generate_phase23_orientation_mtable(),\n generate_phase23_permutation_mtable(),\n ];\n let ptables = [\n generate_phase2_orientation_ptable(),\n generate_phase2_permutation_ptable(),\n ];\n return ida_solve(index_phase2(state), mtables, ptables).concat([[6, 1]]);\n}\n\nfunction index_phase3(state) {\n let pieces = [5, 6, 7, 8, 14];\n let p = state[0].slice(0, 15);\n let o = state[1];\n let index_c = comb_to_index(p.map((x) => +(pieces.indexOf(x) !== -1)));\n let index_o = 243 * index_c;\n for (let i = 0, j = 0; i < 15; i++) {\n if (pieces.indexOf(p[i]) === -1) {\n continue;\n }\n index_o += o[i] * Math.pow(3, j);\n j++;\n }\n let index_p = 0;\n for (let i = 0; i < 5; i++) {\n index_p += p.indexOf(pieces[i]) * Math.pow(15, i);\n }\n return [index_o, index_p];\n}\n\nfunction solve_phase3(state) {\n let mtables = [\n generate_phase23_orientation_mtable(),\n generate_phase23_permutation_mtable(),\n ];\n let ptables = [\n generate_phase3_orientation_ptable(),\n generate_phase3_permutation_ptable(),\n ];\n return ida_solve(index_phase3(state), mtables, ptables);\n}\n\nfunction index_phase4(state) {\n let p = state[0].slice(0, 14);\n let o = state[1];\n let index_o = 0;\n let perm = [];\n let j = 0;\n for (let i of [0, 1, 2, 3, 4, 9, 10, 11, 12, 13]) {\n if (i !== 13) {\n index_o += o[i] * Math.pow(3, j);\n }\n perm[j] = p[i] < 5 ? p[i] : p[i] - 4;\n j++;\n }\n return [index_o, evenpermutation_to_index(perm)];\n}\n\nfunction solve_phase4(state) {\n let mtables = [\n generate_phase4_orientation_mtable(),\n generate_phase4_permutation_mtable(),\n ];\n let ptables = [\n generate_phase4_orientation_ptable(),\n generate_phase4_permutation_ptable(),\n ];\n return ida_solve(index_phase4(state), mtables, ptables);\n}\n\nfunction solve_phase4_fast(state) {\n return phase4_ida_solve(index_phase4(state));\n}\n\nfunction solve(state) {\n let sol = [];\n for (let solver of [\n solve_phase1,\n solve_phase2,\n solve_phase3,\n solve_phase4_fast,\n ]) {\n //console.log(`solving with ${solver.name}`);\n let phase_sol = solver(state);\n state = apply_move_sequence(state, phase_sol);\n //console.log(`solution: ${stringify_move_sequence(phase_sol)}`);\n sol = sol.concat(phase_sol);\n }\n return sol;\n}\n\nfunction cn_solve(state) {\n // Solve with partial colour neutrality. We don't want to check all 120 cases, so we look only\n // at <y, flip>-neutrality, which has 10 cases.\n let sol_lengths = [];\n let shortest_sol;\n let shortest_sol_length = 999999;\n for (let x = 0; x < 2; x++) {\n for (let y = 0; y < 5; y++) {\n let sol = solve(state);\n sol_lengths.push(sol.length);\n if (shortest_sol_length > sol.length) {\n shortest_sol_length = sol.length;\n shortest_sol = sol;\n }\n state = compose_o(move_y, state);\n }\n state = compose_o(move_x2, state);\n }\n console.log(`solution lengths: ${sol_lengths.join(\", \")}`);\n return shortest_sol;\n}\n\nconst tables = {};\n\nfunction generate_phase23_orientation_mtable() {\n if (tables.phase23om) {\n return tables.phase23om;\n }\n const C15_5 = C(15, 5);\n const THREE = [1, 3, 9, 27, 81, 243];\n let phase23om = Array(C(15, 5) * THREE[5]);\n tables.phase23om = phase23om;\n for (let i = 0; i < C15_5; i++) {\n let comb = index_to_comb(i, 5, 15).concat(Array(5).fill(0));\n let new_comb_indices = [];\n for (let move_index = 0; move_index < 6; move_index++) {\n let new_comb = compose(comb, moves[move_index][0]).slice(0, 15);\n new_comb_indices[move_index] = comb_to_index(new_comb);\n }\n for (let j = 0; j < THREE[5]; j++) {\n phase23om[j + 243 * i] = [];\n let orient_full = [];\n for (let k = 0, l = 0; k < 20; k++) {\n if (comb[k] === 1) {\n orient_full[k] = ((j / THREE[l]) | 0) % 3;\n l++;\n } else {\n orient_full[k] = 99; // some irrelevant garbage value\n }\n }\n for (let move_index = 0; move_index < 6; move_index++) {\n let move = moves[move_index];\n let new_orient_full = [];\n for (let k = 0; k < 15; k++) {\n new_orient_full[k] = orient_full[move[0][k]] + move[1][k];\n }\n let new_orient = new_orient_full.filter((x) => x < 10); // get rid of garbage\n let J = 0;\n for (let k = 0; k < 5; k++) {\n J += (new_orient[k] % 3) * THREE[k];\n }\n phase23om[j + 243 * i][move_index] =\n J + 243 * new_comb_indices[move_index];\n }\n }\n }\n return phase23om;\n}\n\nfunction generate_phase2_orientation_ptable() {\n if (tables.phase2op) {\n return tables.phase2op;\n }\n let mtable = generate_phase23_orientation_mtable();\n return (tables.phase2op = bfs(mtable, [243 * 3002]));\n}\n\nfunction generate_phase3_orientation_ptable() {\n if (tables.phase3op) {\n return tables.phase3op;\n }\n let mtable = generate_phase23_orientation_mtable();\n return (tables.phase3op = bfs(mtable, [243 * 246]));\n}\n\nfunction generate_phase23_permutation_mtable() {\n if (tables.phase23pm) {\n return tables.phase23pm;\n }\n const FIFTEEN = [\n 1,\n 15,\n 225,\n Math.pow(15, 3),\n Math.pow(15, 4),\n Math.pow(15, 5),\n ];\n let phase23pm = Array(FIFTEEN[5]);\n let single = Array(15);\n for (let i = 0; i < 15; i++) {\n single[i] = Array(6);\n for (let move_index = 0; move_index < 6; move_index++) {\n single[i][move_index] = moves[move_index][0].indexOf(i);\n }\n }\n let locations = [0, 0, 0, 0, 0];\n for (let ind = 0; ind < FIFTEEN[5]; ind++) {\n phase23pm[ind] = Array(6);\n for (let move_index = 0; move_index < 6; move_index++) {\n let new_ind = 0;\n for (let i = 0; i < 5; i++) {\n new_ind += single[locations[i]][move_index] * FIFTEEN[i];\n }\n phase23pm[ind][move_index] = new_ind;\n }\n locations[0]++;\n for (let i = 0; i < 4; i++) {\n if (locations[i] === 15) {\n locations[i] = 0;\n locations[i + 1]++;\n }\n }\n }\n return (tables.phase23pm = phase23pm);\n}\n\nfunction generate_phase2_permutation_ptable() {\n if (tables.phase2pp) {\n return tables.phase2pp;\n }\n let mtable = generate_phase23_permutation_mtable();\n return (tables.phase2pp = bfs(mtable, [213090]));\n}\n\nfunction generate_phase3_permutation_ptable() {\n if (tables.phase3pp) {\n return tables.phase3pp;\n }\n let mtable = generate_phase23_permutation_mtable();\n return (tables.phase3pp = bfs(mtable, [737420]));\n}\n\nfunction generate_phase4_orientation_mtable() {\n if (tables.phase4om) {\n return tables.phase4om;\n }\n const THREE = [1, 3, 9, 27, 81, 243, 729, 2187, 6561, 19683, 59049];\n let mtable = Array(THREE[9]);\n for (let i = 0; i < THREE[9]; i++) {\n let o = Array(14).fill(0);\n for (let j = 0; j < 9; j++) {\n let J = j < 5 ? j : j + 4;\n o[J] = ((i / THREE[j]) | 0) % 3;\n o[13] -= o[J];\n }\n o[13] = (o[13] + 999) % 3;\n mtable[i] = [];\n for (let move_index = 0; move_index < 3; move_index++) {\n let move = moves[move_index];\n let new_o = [0, 1, 2, 3, 4, 9, 10, 11, 12, 13].map(\n (i) => o[move[0][i]] + move[1][i],\n );\n let new_i = 0;\n for (let j = 0; j < 9; j++) {\n new_i += (new_o[j] % 3) * THREE[j];\n }\n mtable[i][move_index] = new_i;\n }\n }\n return (tables.phase4om = mtable);\n}\n\nfunction generate_phase4_permutation_mtable() {\n if (tables.phase4pm) {\n return tables.phase4pm;\n }\n const HALFFACT10 = factorial(10) / 2;\n const n = 10;\n let pre = [0, 1, 2, 3, 4, -1, -1, -1, -1, 5, 6, 7, 8, 9];\n let post = [0, 1, 2, 3, 4, 9, 10, 11, 12, 13];\n let move_permutations = [\n compose(pre, compose(move_U[0], post)),\n compose(pre, compose(move_R[0], post)),\n compose(pre, compose(move_F[0], post)),\n ];\n let mtable = Array(HALFFACT10);\n let perm = Array(10);\n for (let i = 0; i < HALFFACT10; i++) {\n index_to_evenpermutation10(i, perm);\n mtable[i] = [];\n for (let move_index = 0; move_index < 3; move_index++) {\n let new_perm = compose(perm, move_permutations[move_index]);\n mtable[i][move_index] = evenpermutation10_to_index(new_perm);\n }\n }\n return (tables.phase4pm = mtable);\n}\n\nfunction generate_phase4_orientation_ptable() {\n if (tables.phase4op) {\n return tables.phase4op;\n }\n let mtable = generate_phase4_orientation_mtable();\n return (tables.phase4op = bfs(mtable, [0]));\n}\n\nfunction generate_phase4_permutation_ptable() {\n if (tables.phase4pp) {\n return tables.phase4pp;\n }\n let mtable = generate_phase4_permutation_mtable();\n return (tables.phase4pp = bfs(mtable, [0]));\n}\n\nfunction generate_phase4_near_ptable_list(threshold) {\n if (tables.phase4np_list && tables.phase4np_list.threshold === threshold) {\n return tables.phase4np_list;\n }\n let mtables = [\n generate_phase4_orientation_mtable(),\n generate_phase4_permutation_mtable(),\n ];\n let base = Math.pow(3, 9);\n let states = [0];\n populate(threshold, [0, 0], -1);\n function populate(depth, state, last) {\n states.push(state[0] + base * state[1]);\n if (depth === 0) {\n return;\n }\n let new_state = [];\n for (let move_index = 0; move_index < 3; move_index++) {\n if (move_index === last) {\n continue;\n }\n new_state[0] = state[0];\n new_state[1] = state[1];\n for (let r = 1; r < 5; r++) {\n new_state[0] = mtables[0][new_state[0]][move_index];\n new_state[1] = mtables[1][new_state[1]][move_index];\n populate(depth - 1, new_state, move_index);\n }\n }\n return;\n }\n states.sort((x, y) => x - y);\n let unique_states = [];\n let last = -1;\n for (let state of states) {\n if (state !== last) {\n unique_states.push((last = state));\n }\n }\n unique_states.threshold = threshold;\n return (tables.phase4np_list = unique_states);\n}\n\nfunction binary_search(A, x) {\n let lo = 0;\n let hi = A.length - 1;\n while (hi - lo > 1) {\n // invariants: hi - lo >= 2; x > A[lo-1]; x < A[hi+1]\n let mid = (lo + hi) >> 1; // lo < mid < hi\n if (x > A[mid]) {\n lo = mid + 1;\n } else {\n hi = mid;\n }\n }\n return x === A[lo] || x === A[hi];\n}\n\nfunction cache_all_tables() {\n let time = +new Date();\n let splits = [time];\n console.log(\"generating phase 2/3 move tables...\");\n generate_phase23_orientation_mtable();\n generate_phase23_permutation_mtable();\n splits.push(+new Date());\n console.log(\n `done ${(\n (splits[splits.length - 1] - splits[splits.length - 2]) /\n 1e3\n ).toFixed(3)}`,\n );\n\n console.log(\"generating phase 2 pruning tables...\");\n generate_phase2_orientation_ptable();\n generate_phase2_permutation_ptable();\n splits.push(+new Date());\n console.log(\n `done ${(\n (splits[splits.length - 1] - splits[splits.length - 2]) /\n 1e3\n ).toFixed(3)}`,\n );\n\n console.log(\"generating phase 3 pruning tables...\");\n generate_phase3_orientation_ptable();\n generate_phase3_permutation_ptable();\n splits.push(+new Date());\n console.log(\n `done ${(\n (splits[splits.length - 1] - splits[splits.length - 2]) /\n 1e3\n ).toFixed(3)}`,\n );\n\n console.log(\"generating phase 4 move tables...\");\n generate_phase4_orientation_mtable();\n generate_phase4_permutation_mtable();\n splits.push(+new Date());\n console.log(\n `done ${(\n (splits[splits.length - 1] - splits[splits.length - 2]) /\n 1e3\n ).toFixed(3)}`,\n );\n\n console.log(\"generating phase 4 pruning tables...\");\n generate_phase4_orientation_ptable();\n generate_phase4_permutation_ptable();\n splits.push(+new Date());\n console.log(\n `done ${(\n (splits[splits.length - 1] - splits[splits.length - 2]) /\n 1e3\n ).toFixed(3)}`,\n );\n\n console.log(\"generating phase 4 bonus pruning table...\");\n generate_phase4_near_ptable_list(PHASE4_THRESHOLD);\n splits.push(+new Date());\n console.log(\n `done ${(\n (splits[splits.length - 1] - splits[splits.length - 2]) /\n 1e3\n ).toFixed(3)}`,\n );\n\n console.log(\n `total elapsed: ${((splits[splits.length - 1] - splits[0]) / 1000).toFixed(\n 3,\n )}`,\n );\n}\n\nfunction bfs(mtable, goal_states) {\n let N = mtable.length;\n let nmoves = mtable[0].length;\n let ptable = Array(N).fill(-1);\n for (let state of goal_states) {\n ptable[state] = 0;\n }\n let depth = 0;\n let done = false;\n while (!done) {\n done = true;\n for (let state = 0; state < N; state++) {\n if (ptable[state] !== depth) {\n continue;\n }\n for (let move_index = 0; move_index < nmoves; move_index++) {\n let new_state = mtable[state][move_index];\n while (new_state !== state) {\n if (ptable[new_state] === -1) {\n done = false;\n ptable[new_state] = depth + 1;\n }\n new_state = mtable[new_state][move_index];\n }\n }\n }\n depth++;\n }\n return ptable;\n}\n\nfunction ida_solve(indices, mtables, ptables) {\n let ncoords = indices.length;\n let bound = 0;\n for (let i = 0; i < ncoords; i++) {\n bound = Math.max(bound, ptables[i][indices[i]]);\n }\n while (true) {\n let path = ida_search(indices, mtables, ptables, bound, -1);\n if (path !== undefined) {\n return path;\n }\n bound++;\n }\n}\n\nfunction ida_search(indices, mtables, ptables, bound, last) {\n let ncoords = indices.length;\n let nmoves = mtables[0][0].length;\n let heuristic = 0;\n for (let i = 0; i < ncoords; i++) {\n heuristic = Math.max(heuristic, ptables[i][indices[i]]);\n }\n if (heuristic > bound) {\n return;\n }\n if (bound === 0 || heuristic === 0) {\n return [];\n }\n for (let m = 0; m < nmoves; m++) {\n if (m === last) {\n continue;\n }\n let new_indices = indices.slice();\n for (let c = 0; c < ncoords; c++) {\n new_indices[c] = mtables[c][indices[c]][m];\n }\n let r = 1;\n while (indices.some((_, i) => indices[i] !== new_indices[i])) {\n let subpath = ida_search(new_indices, mtables, ptables, bound - 1, m);\n if (subpath !== undefined) {\n return [[m, r]].concat(subpath);\n }\n for (let c = 0; c < ncoords; c++) {\n new_indices[c] = mtables[c][new_indices[c]][m];\n }\n r++;\n }\n }\n return;\n}\n\nfunction phase4_ida_solve(indices) {\n let mtable_o = generate_phase4_orientation_mtable();\n let mtable_p = generate_phase4_permutation_mtable();\n let ptable_o = generate_phase4_orientation_ptable();\n let ptable_p = generate_phase4_permutation_ptable();\n let ptable_n = generate_phase4_near_ptable_list(PHASE4_THRESHOLD);\n let bound = Math.max(ptable_o[indices[0]], ptable_p[indices[1]]);\n while (true) {\n let path = phase4_ida_search(\n indices,\n bound,\n -1,\n mtable_o,\n mtable_p,\n ptable_o,\n ptable_p,\n ptable_n,\n );\n if (path !== undefined) {\n return path;\n }\n bound++;\n }\n}\n\nfunction phase4_ida_search(\n indices,\n bound,\n last,\n mtable_o,\n mtable_p,\n ptable_o,\n ptable_p,\n ptable_n,\n) {\n let heuristic = Math.max(ptable_o[indices[0]], ptable_p[indices[1]]);\n if (heuristic > bound) {\n return;\n }\n if (\n heuristic <= PHASE4_THRESHOLD &&\n !binary_search(ptable_n, indices[0] + 19683 * indices[1])\n ) {\n heuristic = PHASE4_THRESHOLD + 1;\n }\n if (heuristic > bound) {\n return;\n }\n if (bound === 0 || heuristic === 0) {\n return [];\n }\n for (let m = 0; m < 3; m++) {\n if (m === last) {\n continue;\n }\n let new_indices = indices.slice();\n for (let r = 1; r < 5; r++) {\n new_indices[0] = mtable_o[new_indices[0]][m];\n new_indices[1] = mtable_p[new_indices[1]][m];\n let subpath = phase4_ida_search(\n new_indices,\n bound - 1,\n m,\n mtable_o,\n mtable_p,\n ptable_o,\n ptable_p,\n ptable_n,\n );\n if (subpath !== undefined) {\n return [[m, r]].concat(subpath);\n }\n }\n }\n return;\n}\n\nfunction* phase4_ida_solve_gen(indices) {\n let mtable_o = generate_phase4_orientation_mtable();\n let mtable_p = generate_phase4_permutation_mtable();\n let ptable_o = generate_phase4_orientation_ptable();\n let ptable_p = generate_phase4_permutation_ptable();\n let ptable_n = generate_phase4_near_ptable_list(PHASE4_THRESHOLD);\n let bound = Math.max(ptable_o[indices[0]], ptable_p[indices[1]]);\n while (true) {\n yield* phase4_ida_search_gen(\n indices,\n bound,\n -1,\n mtable_o,\n mtable_p,\n ptable_o,\n ptable_p,\n ptable_n,\n );\n bound++;\n }\n}\n\nfunction* phase4_ida_search_gen(\n indices,\n bound,\n last,\n mtable_o,\n mtable_p,\n ptable_o,\n ptable_p,\n ptable_n,\n) {\n let heuristic = Math.max(ptable_o[indices[0]], ptable_p[indices[1]]);\n if (heuristic > bound) {\n return;\n }\n if (\n heuristic <= PHASE4_THRESHOLD &&\n !binary_search(ptable_n, indices[0] + 19683 * indices[1])\n ) {\n heuristic = PHASE4_THRESHOLD + 1;\n }\n if (heuristic > bound) {\n return;\n }\n if (bound === 0 || heuristic === 0) {\n yield [];\n }\n for (let m = 0; m < 3; m++) {\n if (m === last) {\n continue;\n }\n let new_indices = indices.slice();\n for (let r = 1; r < 5; r++) {\n new_indices[0] = mtable_o[new_indices[0]][m];\n new_indices[1] = mtable_p[new_indices[1]][m];\n let subpath_gen = phase4_ida_search_gen(\n new_indices,\n bound - 1,\n m,\n mtable_o,\n mtable_p,\n ptable_o,\n ptable_p,\n ptable_n,\n );\n while (true) {\n let { value: subpath, done } = subpath_gen.next();\n if (done) {\n break;\n }\n yield [[m, r]].concat(subpath);\n }\n }\n }\n}\n\n/* Additional solving logic for the hybrid scrambler\n\nRather than being a purely random-move or random-state scramble (the former isn't random enough, but\nthe latter is too slow), we fully randomise the locations of the white pieces and of the grey pieces\nthen apply a bunch of random moves afterwards.\n\nThis is in the sense that the C(20,10,5,5) = 46558512 possible combinations of where the white, grey\nand E-slice pieces are (without distinguishing between the white pieces, etc.) are equally likely.\n\nCorner orientation is effectively randomised by doing at least 8 random moves on each hemisphere, so\nfor all intents and purposes, this should be as good as a random-state scramble.\n*/\n\nfunction generate_hs_mtable() {\n if (tables.hsm) {\n return tables.hsm;\n }\n const C20_5 = C(20, 5); // = 15504\n let mtable = Array(C20_5);\n for (let i = 0; i < C20_5; i++) {\n mtable[i] = Array(7);\n let comb = index_to_comb(i, 5, 20);\n for (let m = 0; m < 7; m++) {\n let new_comb = compose(comb, moves[m][0]);\n mtable[i][m] = comb_to_index(new_comb);\n }\n }\n return (tables.hsm = mtable);\n}\n\nfunction generate_hs_u_ptable() {\n if (tables.hsup) {\n return tables.hsup;\n }\n let mtable = generate_hs_mtable();\n return (tables.hsup = bfs(mtable, [15503]));\n}\n\nfunction generate_hs_d_ptable() {\n if (tables.hsdp) {\n return tables.hsdp;\n }\n let mtable = generate_hs_mtable();\n return (tables.hsdp = bfs(mtable, [0]));\n}\n\nfunction index_hs(state) {\n let p = state[0];\n return [\n comb_to_index(p.map((x) => +(x < 5))),\n comb_to_index(p.map((x) => +(x >= 15))),\n ];\n}\n\n// this is too unpredictably slow\n// (obv we could generate a full pruning table, but that defeats the purpose of fast initialisation)\nfunction solve_hs(state) {\n let mtables = Array(2).fill(generate_hs_mtable());\n let ptables = [generate_hs_u_ptable(), generate_hs_d_ptable()];\n return ida_solve(index_hs(state), mtables, ptables);\n}\n\n// this gives sequences ~2 moves longer on average, but is way faster\nfunction solve_hs_twophase(state) {\n let mtable = generate_hs_mtable();\n let u_ptable = generate_hs_u_ptable();\n let d_ptable = generate_hs_d_ptable();\n let indices = index_hs(state);\n let sol1;\n /*\n\tif (u_ptable[indices[0]] < d_ptable[indices[1]]) sol1 = ida_solve([indices[0]], [mtable], [u_ptable]);\n\telse sol1 = ida_solve([indices[1]], [mtable], [d_ptable]);\n\t// don't do this because it'd give solutions starting with flip pretty often.\n\t*/\n sol1 = ida_solve([indices[1]], [mtable], [d_ptable]);\n let s1 = apply_move_sequence(state, sol1);\n let sol2 = ida_solve(index_hs(s1), [mtable, mtable], [u_ptable, d_ptable]);\n return sol1.concat(sol2);\n}\n\nfunction generate_hybrid_scramble() {\n let move_sequence = [];\n let sort_seq = solve_hs_twophase(random_state());\n for (let [m, r] of sort_seq) {\n let period = m === 6 ? 2 : 5;\n move_sequence.unshift([m, (period - r) % period]);\n }\n\n // TODO: remove possible move cancellations between the random-state and random-move phases\n return move_sequence.concat(generate_random_move_scramble(2, 9));\n}\n\nfunction generate_fullseparate_mtable() {\n if (tables.fsm) {\n return tables.fsm;\n }\n const C20_10 = C(20, 10); // = 184756\n const C19_9 = C(19, 9); // = 92378\n let moves12 = moves.slice(0, 6);\n moves12 = moves12.concat(\n moves12.map((move) => compose_o(compose_o(move_x2, move), move_x2)),\n );\n // get all 12 face moves by conjugating the six \"top half\" moves with a flip\n let moves15 = moves12.concat([move_x2, move_y, move_rot]);\n let mtable = Array(C20_10 * 2);\n let mtable15 = Array(C20_10 * 2);\n for (let i = 0; i < C20_10; i++) {\n mtable[i * 2] = Array(12);\n mtable[i * 2 + 1] = Array(12);\n mtable15[i * 2] = Array(15);\n mtable15[i * 2 + 1] = Array(15);\n let comb = index_to_comb(i, 10, 20);\n let perm = [];\n for (let j = 0, k = 0; j < 20; j++) {\n if (comb[j] === 0) {\n perm[j] = -1;\n } else {\n perm[j] = k++;\n }\n }\n for (let m = 0; m < 15; m++) {\n let new_perm = compose(perm, moves15[m][0]);\n let new_comb = compose(comb, moves15[m][0]);\n let parity = permutation_parity(new_perm.filter((x) => x >= 0));\n let I = comb_to_index(new_comb);\n mtable15[i * 2][m] = I * 2 + parity;\n mtable15[i * 2 + 1][m] = I * 2 + (parity ^ 1);\n if (m < 12) {\n mtable[i * 2][m] = I * 2 + parity;\n mtable[i * 2 + 1][m] = I * 2 + (parity ^ 1);\n }\n }\n }\n tables.fsm = mtable;\n tables.fsm15 = mtable15;\n return mtable;\n}\n\nfunction generate_fullseparate_ptable() {\n if (tables.fsp) {\n return tables.fsp;\n }\n let mtable = generate_fullseparate_mtable();\n /*\n\tlet separations = [\n\t\t[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],\n\t\t[0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1],\n\t\t[0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1],\n\t\t[0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1],\n\t\t[0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1],\n\t\t[0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 1, 0, 0, 0, 1],\n\t\t[1, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 1].map(x => 1-x),\n\t\t[1, 1, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0].map(x => 1-x),\n\t\t[1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0].map(x => 1-x),\n\t\t[0, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, 0, 0, 0],\n\t];\n\t*/\n let goal_states = [0];\n let l = 1;\n while (true) {\n for (let ind of goal_states) {\n for (let m = 12; m < 15; m++) {\n let new_ind = tables.fsm15[ind][m];\n if (goal_states.indexOf(new_ind) === -1) {\n goal_states.push(new_ind);\n goal_states.sort((x, y) => x - y); // slow but w/e\n }\n }\n }\n if (goal_states.length === l) {\n break;\n }\n l = goal_states.length;\n }\n print(goal_states.toSource());\n return (tables.fsp = bfs5(mtable, goal_states));\n}\n\nfunction bfs5(mtable, goal_states) {\n let N = mtable.length;\n let nmoves = mtable[0].length;\n let ptable = Array(N).fill(-1);\n let queue = goal_states.slice();\n let new_queue = [];\n let depth = 0;\n while (queue.length > 0) {\n new_queue.length = 0;\n for (let state of queue) {\n if (ptable[state] !== -1) {\n continue;\n }\n ptable[state] = depth;\n for (let move_index = 0; move_index < nmoves; move_index++) {\n let new_state = mtable[state][move_index];\n for (let r = 1; r <= 4; r++) {\n if (r === 1 || r === 4) {\n new_queue.push(new_state);\n }\n new_state = mtable[new_state][move_index];\n }\n }\n }\n [queue, new_queue] = [new_queue, queue];\n depth += 1;\n }\n return ptable;\n}\n\nexport function getRandomKilominxScramble() {\n return new Alg(stringify_move_sequence(generate_random_state_scramble()));\n}\n"],
5
- "mappings": "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",
6
- "names": ["evenpermutation10_to_index", "index_to_evenpermutation10", "C", "C", "i", "last"]
7
- }