The repl produces very long URLs, we can shorten them by gzipping the stringified state before converting to base64
backwards compatible, atou checks if the string was gzipped
Example
Before (2156 bytes):
eyJBcHAudnVlIjoiPHNjcmlwdCBzZXR1cD5cblx0aW1wb3J0IEdyb3VwIGZyb20gJy4vR3JvdXAuanMnXG4gIGltcG9ydCBJdGVtIGZyb20gJy4vSXRlbS52dWUnXG4gIGltcG9ydCBXcmFwcGVkSXRlbSBmcm9tICcuL1dyYXBwZWRJdGVtLnZ1ZSdcbjwvc2NyaXB0PlxuXG48dGVtcGxhdGU+XG4gIDxHcm91cD5cbiAgICA8SXRlbT5PbmU8L0l0ZW0+XG4gICAgPEl0ZW0+VHdvPC9JdGVtPlxuICAgIDxJdGVtPlRocmVlPC9JdGVtPlxuICA8L0dyb3VwPlxuXG4gIDxHcm91cD5cbiAgICA8V3JhcHBlZEl0ZW0+T25lPC9XcmFwcGVkSXRlbT5cbiAgICA8V3JhcHBlZEl0ZW0+VHdvPC9XcmFwcGVkSXRlbT5cbiAgICA8V3JhcHBlZEl0ZW0+VGhyZWU8L1dyYXBwZWRJdGVtPlxuICA8L0dyb3VwPlxuPC90ZW1wbGF0ZT4iLCJpbXBvcnQtbWFwLmpzb24iOiJ7XG4gIFwiaW1wb3J0c1wiOiB7XG4gICAgXCJ2dWVcIjogXCJodHRwczovL3NmYy52dWVqcy5vcmcvdnVlLnJ1bnRpbWUuZXNtLWJyb3dzZXIuanNcIixcbiAgICBcInZ1ZS9zZXJ2ZXItcmVuZGVyZXJcIjogXCJodHRwczovL3NmYy52dWVqcy5vcmcvc2VydmVyLXJlbmRlcmVyLmVzbS1icm93c2VyLmpzXCJcbiAgfVxufSIsIkdyb3VwLmpzIjoiaW1wb3J0IHsgcmVmLCBjb21wdXRlZCwgcHJvdmlkZSwgRnJhZ21lbnQsIFN1c3BlbnNlLCBoIH0gZnJvbSAndnVlJ1xuXG5leHBvcnQgZGVmYXVsdCB7XG4gIHNldHVwIChwcm9wcywgeyBzbG90cyB9KSB7XG4gICAgY29uc3QgaXRlbXMgPSByZWYoW10pXG4gICAgZnVuY3Rpb24gcmVnaXN0ZXIgKGlkKSB7XG4gICAgICBpdGVtcy52YWx1ZS5wdXNoKHsgaWQgfSlcbiAgICB9XG5cbiAgICBwcm92aWRlKCdncm91cCcsIHsgcmVnaXN0ZXIsIGl0ZW1zIH0pXG4gICAgXG4gICAgcmV0dXJuICgpID0+IChcbiAgICAgIGgoJ2RpdicsIHsgY2xhc3M6ICdncm91cCcgfSwgW1xuICAgICAgICBoKFN1c3BlbnNlLCBbXG4gICAgICAgICAgaChGcmFnbWVudCwgc2xvdHMuZGVmYXVsdD8uKCkpXG4gICAgICAgIF0pXG4gICAgICBdKVxuICAgIClcbiAgfVxufVxuIiwiSXRlbS52dWUiOiI8c2NyaXB0PlxuICBpbXBvcnQgeyBpbmplY3QsIG5leHRUaWNrIH0gZnJvbSAndnVlJ1xuICBcbiAgbGV0IF9pZCA9IDBcbiAgZnVuY3Rpb24gZ2V0SWQgKCkge1xuICAgIHJldHVybiBfaWQrK1xuICB9XG4gIFxuICBleHBvcnQgZGVmYXVsdCB7XG4gICAgYXN5bmMgc2V0dXAgKCkge1xuICAgICAgY29uc3QgaWQgPSBnZXRJZCgpXG4gICAgICBjb25zdCBncm91cCA9IGluamVjdCgnZ3JvdXAnKVxuICAgICAgXG4gICAgICBncm91cC5yZWdpc3RlcihpZClcbiAgICAgIGF3YWl0IG5leHRUaWNrKClcbiAgICAgIFxuICAgICAgcmV0dXJuIHsgZ3JvdXAgfVxuICAgIH1cbiAgfVxuPC9zY3JpcHQ+XG5cbjx0ZW1wbGF0ZT5cbiAgPGRpdiBjbGFzcz1cIml0ZW1cIj5cbiAgICA8c2xvdCAvPlxuICA8L2Rpdj5cbjwvdGVtcGxhdGU+IiwiV3JhcHBlZEl0ZW0udnVlIjoiPHNjcmlwdCBzZXR1cD5cblx0aW1wb3J0IEl0ZW0gZnJvbSAnLi9JdGVtLnZ1ZSdcbjwvc2NyaXB0PlxuXG48dGVtcGxhdGU+XG4gIDxJdGVtPlxuICAgIDxzbG90IC8+XG4gIDwvSXRlbT5cbjwvdGVtcGxhdGU+In0=
After (832 bytes):
eNqFVE2Pm0AM/SsWl4CWQM8RSdVLqz310JV6WFYVBSchDTOjmSHbCvHf6/ki5KPpJZmx3zzbz8ZD9EmI7NRjtIoKVctWaFCoe7EpWanbTnCp4YvkvYCt5B0sstzesoNalAzAI541dhPAXAzlHPBdVkJgc4Gb2Ty8yF0KJjgryC6OlcaN4SlsWHuki3mz+cqwsMEurC/v/J51L3GOLvLAd0s+y8vFmBvuYGzE/2Fc/GvUOY0in8qN0siptuwqIzRn1JzBwEvvUGW0gsGFKSPSztzLaK+1UKs8V9vaCHpQGZe7nE6Z7Bk1EzNU3fKn5O8KJRGXUTrjyMl4QrmUyBqUKB9xXkFveA3tWLKRSgnjQjX4WRhA4jaFmnei19ikICQ/tQ2m8FlWuw6ZTuFbrwQyRbY9jH5i3IyUDH9bmga3VX/UTgc7sxATk1ApRVBHrhWMSVCp5kxpaEljBWsTP359S5xr27Nat5yRddcqjRLitpkegnuUnaoj6Sh6tY8HaBuidv7RTRCEIuLFzhS8SG2ZjjD1gcMb9yspZckgTmC9gThE28eLpj3Z5/WxUmoFnhDGFF4DyuDOEs3MxnFW0aqQeaE+ZnGSnJFv0zmcktC1klHfwmd5Xgyb2fdMGrAD1hSD2qFf2vrXVZtclUfU8IPUWsMHc52k3qF+bkzpw4UWBH168lk4gnu9BqjUH1aHns9a5bts4tkIcXLpsUqS0+UeWjWBwr81Z6F7ZhqCp3qvWj2VHN+89HUMPtI4zYj9ebTeqOmu4Wv6yMlVRmGNmCZC7tcFwW6WxdUefbTJ/7WnH2U2X2kXuXjHPJnxL/fhD+k=
The repl produces very long URLs, we can shorten them by gzipping the stringified state before converting to base64
backwards compatible,
atou
checks if the string was gzippedExample
Before (2156 bytes): eyJBcHAudnVlIjoiPHNjcmlwdCBzZXR1cD5cblx0aW1wb3J0IEdyb3VwIGZyb20gJy4vR3JvdXAuanMnXG4gIGltcG9ydCBJdGVtIGZyb20gJy4vSXRlbS52dWUnXG4gIGltcG9ydCBXcmFwcGVkSXRlbSBmcm9tICcuL1dyYXBwZWRJdGVtLnZ1ZSdcbjwvc2NyaXB0PlxuXG48dGVtcGxhdGU+XG4gIDxHcm91cD5cbiAgICA8SXRlbT5PbmU8L0l0ZW0+XG4gICAgPEl0ZW0+VHdvPC9JdGVtPlxuICAgIDxJdGVtPlRocmVlPC9JdGVtPlxuICA8L0dyb3VwPlxuXG4gIDxHcm91cD5cbiAgICA8V3JhcHBlZEl0ZW0+T25lPC9XcmFwcGVkSXRlbT5cbiAgICA8V3JhcHBlZEl0ZW0+VHdvPC9XcmFwcGVkSXRlbT5cbiAgICA8V3JhcHBlZEl0ZW0+VGhyZWU8L1dyYXBwZWRJdGVtPlxuICA8L0dyb3VwPlxuPC90ZW1wbGF0ZT4iLCJpbXBvcnQtbWFwLmpzb24iOiJ7XG4gIFwiaW1wb3J0c1wiOiB7XG4gICAgXCJ2dWVcIjogXCJodHRwczovL3NmYy52dWVqcy5vcmcvdnVlLnJ1bnRpbWUuZXNtLWJyb3dzZXIuanNcIixcbiAgICBcInZ1ZS9zZXJ2ZXItcmVuZGVyZXJcIjogXCJodHRwczovL3NmYy52dWVqcy5vcmcvc2VydmVyLXJlbmRlcmVyLmVzbS1icm93c2VyLmpzXCJcbiAgfVxufSIsIkdyb3VwLmpzIjoiaW1wb3J0IHsgcmVmLCBjb21wdXRlZCwgcHJvdmlkZSwgRnJhZ21lbnQsIFN1c3BlbnNlLCBoIH0gZnJvbSAndnVlJ1xuXG5leHBvcnQgZGVmYXVsdCB7XG4gIHNldHVwIChwcm9wcywgeyBzbG90cyB9KSB7XG4gICAgY29uc3QgaXRlbXMgPSByZWYoW10pXG4gICAgZnVuY3Rpb24gcmVnaXN0ZXIgKGlkKSB7XG4gICAgICBpdGVtcy52YWx1ZS5wdXNoKHsgaWQgfSlcbiAgICB9XG5cbiAgICBwcm92aWRlKCdncm91cCcsIHsgcmVnaXN0ZXIsIGl0ZW1zIH0pXG4gICAgXG4gICAgcmV0dXJuICgpID0+IChcbiAgICAgIGgoJ2RpdicsIHsgY2xhc3M6ICdncm91cCcgfSwgW1xuICAgICAgICBoKFN1c3BlbnNlLCBbXG4gICAgICAgICAgaChGcmFnbWVudCwgc2xvdHMuZGVmYXVsdD8uKCkpXG4gICAgICAgIF0pXG4gICAgICBdKVxuICAgIClcbiAgfVxufVxuIiwiSXRlbS52dWUiOiI8c2NyaXB0PlxuICBpbXBvcnQgeyBpbmplY3QsIG5leHRUaWNrIH0gZnJvbSAndnVlJ1xuICBcbiAgbGV0IF9pZCA9IDBcbiAgZnVuY3Rpb24gZ2V0SWQgKCkge1xuICAgIHJldHVybiBfaWQrK1xuICB9XG4gIFxuICBleHBvcnQgZGVmYXVsdCB7XG4gICAgYXN5bmMgc2V0dXAgKCkge1xuICAgICAgY29uc3QgaWQgPSBnZXRJZCgpXG4gICAgICBjb25zdCBncm91cCA9IGluamVjdCgnZ3JvdXAnKVxuICAgICAgXG4gICAgICBncm91cC5yZWdpc3RlcihpZClcbiAgICAgIGF3YWl0IG5leHRUaWNrKClcbiAgICAgIFxuICAgICAgcmV0dXJuIHsgZ3JvdXAgfVxuICAgIH1cbiAgfVxuPC9zY3JpcHQ+XG5cbjx0ZW1wbGF0ZT5cbiAgPGRpdiBjbGFzcz1cIml0ZW1cIj5cbiAgICA8c2xvdCAvPlxuICA8L2Rpdj5cbjwvdGVtcGxhdGU+IiwiV3JhcHBlZEl0ZW0udnVlIjoiPHNjcmlwdCBzZXR1cD5cblx0aW1wb3J0IEl0ZW0gZnJvbSAnLi9JdGVtLnZ1ZSdcbjwvc2NyaXB0PlxuXG48dGVtcGxhdGU+XG4gIDxJdGVtPlxuICAgIDxzbG90IC8+XG4gIDwvSXRlbT5cbjwvdGVtcGxhdGU+In0= After (832 bytes): eNqFVE2Pm0AM/SsWl4CWQM8RSdVLqz310JV6WFYVBSchDTOjmSHbCvHf6/ki5KPpJZmx3zzbz8ZD9EmI7NRjtIoKVctWaFCoe7EpWanbTnCp4YvkvYCt5B0sstzesoNalAzAI541dhPAXAzlHPBdVkJgc4Gb2Ty8yF0KJjgryC6OlcaN4SlsWHuki3mz+cqwsMEurC/v/J51L3GOLvLAd0s+y8vFmBvuYGzE/2Fc/GvUOY0in8qN0siptuwqIzRn1JzBwEvvUGW0gsGFKSPSztzLaK+1UKs8V9vaCHpQGZe7nE6Z7Bk1EzNU3fKn5O8KJRGXUTrjyMl4QrmUyBqUKB9xXkFveA3tWLKRSgnjQjX4WRhA4jaFmnei19ikICQ/tQ2m8FlWuw6ZTuFbrwQyRbY9jH5i3IyUDH9bmga3VX/UTgc7sxATk1ApRVBHrhWMSVCp5kxpaEljBWsTP359S5xr27Nat5yRddcqjRLitpkegnuUnaoj6Sh6tY8HaBuidv7RTRCEIuLFzhS8SG2ZjjD1gcMb9yspZckgTmC9gThE28eLpj3Z5/WxUmoFnhDGFF4DyuDOEs3MxnFW0aqQeaE+ZnGSnJFv0zmcktC1klHfwmd5Xgyb2fdMGrAD1hSD2qFf2vrXVZtclUfU8IPUWsMHc52k3qF+bkzpw4UWBH168lk4gnu9BqjUH1aHns9a5bts4tkIcXLpsUqS0+UeWjWBwr81Z6F7ZhqCp3qvWj2VHN+89HUMPtI4zYj9ebTeqOmu4Wv6yMlVRmGNmCZC7tcFwW6WxdUefbTJ/7WnH2U2X2kXuXjHPJnxL/fhD+k=