public inbox for gcc-prs@sourceware.org help / color / mirror / Atom feed
From: c.williams@swflug.org To: gcc-gnats@gcc.gnu.org Cc: dl@gazeta.ru Subject: other/3051: Internal compiler error compiling Asmutils Date: Mon, 04 Jun 2001 23:26:00 -0000 [thread overview] Message-ID: <20010605062342.28254.qmail@sourceware.cygnus.com> (raw) >Number: 3051 >Category: other >Synopsis: Internal compiler error compiling Asmutils >Confidential: no >Severity: serious >Priority: medium >Responsible: unassigned >State: open >Class: sw-bug >Submitter-Id: net >Arrival-Date: Mon Jun 04 23:26:00 PDT 2001 >Closed-Date: >Last-Modified: >Originator: GCC >Release: 2.96 >Organization: >Environment: Red Hat Linux 7.0 on AMD K6-2 >Description: gcc ver: gcc version 2.96 20000731 (Red Hat Linux 7.0) process begun using gmake, dump: gcc -Wall -O1 -m386 -g -c -o libm.o libm.c libm.c: In function `fmodf': libm.c:224: Internal compiler error in subst_stack_regs_pat, at reg-stack.c:1395 Please submit a full bug report. See <URL: http://www.gnu.org/software/gcc/bugs.html > for instructions. gmake[1]: *** [libm.o] Error 1 gmake[1]: Leaving directory `/root/download/asmutils-0.14/lib' make: *** [all] Error 2 (preprocessed file attached) >How-To-Repeat: Compile section as stand-alone: gcc -Wall -O1 -m386 -g -c -o tst.o tst.c --save-temp #define IEEE754_FMOD(ret,x,y)\ asm("1:\n"\ " fprem\n"\ " fstsw %%ax\n"\ " sahf\n"\ " jp 1b\n":\ "=t"(ret):\ "u"(y),\ "0"(x):\ "eax","st") float fmodf(float x,float y) { register float ret; IEEE754_FMOD(ret,x,y); return ret; } >Fix: >Release-Note: >Audit-Trail: >Unformatted: ----gnatsweb-attachment---- Content-Type: text/x-csrc; name="libm.i" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="libm.i" IyAxICJsaWJtLmMiCiMgMzAgImxpYm0uYyIKdHlwZWRlZiB1bnNpZ25lZCBpbnQgdWludDMyX3Q7 CgoKCiMgNDYgImxpYm0uYyIKZmxvYXQgYWNvc2YoZmxvYXQgeCkKewogIHJlZ2lzdGVyIGZsb2F0 IHJldDsKICBhc20oImZsZAklMFxuIiAiCWZtdWwJJTBcbiIgIglmbGQxXG4iICIJZnN1YnBcbiIg Iglmc3FydFxuIiAiCWZ4Y2gJJSVzdCgxKVxuIiAiCWZwYXRhbiIgOiAiPXQiKHJldCkgOiAiMCIo eCkgOiAic3QoMSkiKTsKICByZXR1cm4gcmV0Owp9Cgpkb3VibGUgYWNvcyhkb3VibGUgeCkKewog IHJlZ2lzdGVyIGRvdWJsZSByZXQ7CiAgYXNtKCJmbGQJJTBcbiIgIglmbXVsCSUwXG4iICIJZmxk MVxuIiAiCWZzdWJwXG4iICIJZnNxcnRcbiIgIglmeGNoCSUlc3QoMSlcbiIgIglmcGF0YW4iIDog Ij10IihyZXQpIDogIjAiKHgpIDogInN0KDEpIik7CiAgcmV0dXJuIHJldDsKfQoKbG9uZyBkb3Vi bGUgYWNvc2wobG9uZyBkb3VibGUgeCkKewogIHJlZ2lzdGVyIGxvbmcgZG91YmxlIHJldDsKICBh c20oImZsZAklMFxuIiAiCWZtdWwJJTBcbiIgIglmbGQxXG4iICIJZnN1YnBcbiIgIglmc3FydFxu IiAiCWZ4Y2gJJSVzdCgxKVxuIiAiCWZwYXRhbiIgOiAiPXQiKHJldCkgOiAiMCIoeCkgOiAic3Qo MSkiKTsKICByZXR1cm4gcmV0Owp9CgoKCiMgODAgImxpYm0uYyIKZmxvYXQgYXNpbmYoZmxvYXQg eCkKewogIHJlZ2lzdGVyIGZsb2F0IHJldDsKICBhc20oImZsZAklMFxuIiAiCWZtdWwJJTBcbiIg IglmbGQxXG4iICIJZnN1YnBcbiIgIglmc3FydFxuIiAiCWZwYXRhbiIgOiAiPXQiKHJldCkgOiAi MCIoeCkgOiAic3QoMSkiKTsKICByZXR1cm4gcmV0Owp9Cgpkb3VibGUgYXNpbihkb3VibGUgeCkK ewogIHJlZ2lzdGVyIGRvdWJsZSByZXQ7CiAgYXNtKCJmbGQJJTBcbiIgIglmbXVsCSUwXG4iICIJ ZmxkMVxuIiAiCWZzdWJwXG4iICIJZnNxcnRcbiIgIglmcGF0YW4iIDogIj10IihyZXQpIDogIjAi KHgpIDogInN0KDEpIik7CiAgcmV0dXJuIHJldDsKfQoKbG9uZyBkb3VibGUgYXNpbmwobG9uZyBk b3VibGUgeCkKewogIHJlZ2lzdGVyIGxvbmcgZG91YmxlIHJldDsKICBhc20oImZsZAklMFxuIiAi CWZtdWwJJTBcbiIgIglmbGQxXG4iICIJZnN1YnBcbiIgIglmc3FydFxuIiAiCWZwYXRhbiIgOiAi PXQiKHJldCkgOiAiMCIoeCkgOiAic3QoMSkiKTsKICByZXR1cm4gcmV0Owp9CgoKCgoKCgoKZmxv YXQgYXRhbjJmKGZsb2F0IHksZmxvYXQgeCkKewogIHJlZ2lzdGVyIGZsb2F0IHJldDsKICBhc20o ImZwYXRhbiIgOiAiPXQiKHJldCk6ICJ1Iih5KSwgIjAiKHgpIDogInN0KDEpIik7CiAgcmV0dXJu IHJldDsKfQoKZG91YmxlIGF0YW4yKGRvdWJsZSB5LGRvdWJsZSB4KQp7CiAgcmVnaXN0ZXIgZG91 YmxlIHJldDsKICBhc20oImZwYXRhbiIgOiAiPXQiKHJldCk6ICJ1Iih5KSwgIjAiKHgpIDogInN0 KDEpIik7CiAgcmV0dXJuIHJldDsKfQoKbG9uZyBkb3VibGUgYXRhbjJsKGxvbmcgZG91YmxlIHks bG9uZyBkb3VibGUgeCkKewogIHJlZ2lzdGVyIGxvbmcgZG91YmxlIHJldDsKICBhc20oImZwYXRh biIgOiAiPXQiKHJldCk6ICJ1Iih5KSwgIjAiKHgpIDogInN0KDEpIik7CiAgcmV0dXJuIHJldDsK fQoKCiMgMTQ3ICJsaWJtLmMiCmZsb2F0IGV4cGYoZmxvYXQgeCkKewogIHJlZ2lzdGVyIGZsb2F0 IHJldDsKICBhc20oImZsZGwyZVxuIiAiCWZ4Y2gJJSVzdCgxKVxuIiAiCWZtdWxwXG4iICIJZnN0 CSUlc3QoMSlcbiIgIglmcm5kaW50XG4iICIJZnN0CSUlc3QoMilcbiIgIglmc3VicnBcbiIgIglm MnhtMVxuIiAiCWZsZDFcbiIgIglmYWRkcFxuIiAiCWZzY2FsZVxuIiAiCWZmcmVlCSUlc3QoMSlc biI6ICI9dCIocmV0KTogIjAiKHgpOiAic3QoMikiKTsKICByZXR1cm4gcmV0Owp9Cgpkb3VibGUg ZXhwKGRvdWJsZSB4KQp7CiAgcmVnaXN0ZXIgZG91YmxlIHJldDsKICBhc20oImZsZGwyZVxuIiAi CWZ4Y2gJJSVzdCgxKVxuIiAiCWZtdWxwXG4iICIJZnN0CSUlc3QoMSlcbiIgIglmcm5kaW50XG4i ICIJZnN0CSUlc3QoMilcbiIgIglmc3VicnBcbiIgIglmMnhtMVxuIiAiCWZsZDFcbiIgIglmYWRk cFxuIiAiCWZzY2FsZVxuIiAiCWZmcmVlCSUlc3QoMSlcbiI6ICI9dCIocmV0KTogIjAiKHgpOiAi c3QoMikiKTsKICByZXR1cm4gcmV0Owp9Cgpsb25nIGRvdWJsZSBleHBsKGxvbmcgZG91YmxlIHgp CnsKICByZWdpc3RlciBsb25nIGRvdWJsZSByZXQ7CiAgYXNtKCJmbGRsMmVcbiIgIglmeGNoCSUl c3QoMSlcbiIgIglmbXVscFxuIiAiCWZzdAklJXN0KDEpXG4iICIJZnJuZGludFxuIiAiCWZzdAkl JXN0KDIpXG4iICIJZnN1YnJwXG4iICIJZjJ4bTFcbiIgIglmbGQxXG4iICIJZmFkZHBcbiIgIglm c2NhbGVcbiIgIglmZnJlZQklJXN0KDEpXG4iOiAiPXQiKHJldCk6ICIwIih4KTogInN0KDIpIik7 CiAgcmV0dXJuIHJldDsKfQoKCgojIDE4NyAibGlibS5jIgpmbG9hdCBleHAxMGYoZmxvYXQgeCkK ewogIHJlZ2lzdGVyIGZsb2F0IHJldDsKICBhc20oImZsZGwydFxuIiAiCWZ4Y2gJJSVzdCgxKVxu IiAiCWZtdWxwXG4iICIJZnN0CSUlc3QoMSlcbiIgIglmcm5kaW50XG4iICIJZnN0CSUlc3QoMilc biIgIglmc3VicnBcbiIgIglmMnhtMVxuIiAiCWZsZDFcbiIgIglmYWRkcFxuIiAiCWZzY2FsZVxu IiAiCWZmcmVlCSUlc3QoMSlcbiI6ICI9dCIocmV0KTogIjAiKHgpOiAic3QoMikiKTsKICByZXR1 cm4gcmV0Owp9Cgpkb3VibGUgZXhwMTAoZG91YmxlIHgpCnsKICByZWdpc3RlciBkb3VibGUgcmV0 OwogIGFzbSgiZmxkbDJ0XG4iICIJZnhjaAklJXN0KDEpXG4iICIJZm11bHBcbiIgIglmc3QJJSVz dCgxKVxuIiAiCWZybmRpbnRcbiIgIglmc3QJJSVzdCgyKVxuIiAiCWZzdWJycFxuIiAiCWYyeG0x XG4iICIJZmxkMVxuIiAiCWZhZGRwXG4iICIJZnNjYWxlXG4iICIJZmZyZWUJJSVzdCgxKVxuIjog Ij10IihyZXQpOiAiMCIoeCk6ICJzdCgyKSIpOwogIHJldHVybiByZXQ7Cn0KCmxvbmcgZG91Ymxl IGV4cDEwbChsb25nIGRvdWJsZSB4KQp7CiAgcmVnaXN0ZXIgbG9uZyBkb3VibGUgcmV0OwogIGFz bSgiZmxkbDJ0XG4iICIJZnhjaAklJXN0KDEpXG4iICIJZm11bHBcbiIgIglmc3QJJSVzdCgxKVxu IiAiCWZybmRpbnRcbiIgIglmc3QJJSVzdCgyKVxuIiAiCWZzdWJycFxuIiAiCWYyeG0xXG4iICIJ ZmxkMVxuIiAiCWZhZGRwXG4iICIJZnNjYWxlXG4iICIJZmZyZWUJJSVzdCgxKVxuIjogIj10Iihy ZXQpOiAiMCIoeCk6ICJzdCgyKSIpOwogIHJldHVybiByZXQ7Cn0KCiMgMjE5ICJsaWJtLmMiCmZs b2F0IGZtb2RmKGZsb2F0IHgsZmxvYXQgeSkKewogIHJlZ2lzdGVyIGZsb2F0IHJldDsKICBhc20o IjE6XG4iICIJZnByZW1cbiIgIglmc3RzdwklJWF4XG4iICIJc2FoZlxuIiAiCWpwICAJMWJcbiI6 ICI9dCIocmV0KTogInUiKHkpLCAiMCIoeCk6ICJlYXgiLCJzdCIpOwogIHJldHVybiByZXQ7Cn0K CmRvdWJsZSBmbW9kKGRvdWJsZSB4LGRvdWJsZSB5KQp7CiAgcmVnaXN0ZXIgZG91YmxlIHJldDsK ICBhc20oIjE6XG4iICIJZnByZW1cbiIgIglmc3RzdwklJWF4XG4iICIJc2FoZlxuIiAiCWpwICAJ MWJcbiI6ICI9dCIocmV0KTogInUiKHkpLCAiMCIoeCk6ICJlYXgiLCJzdCIpOwogIHJldHVybiBy ZXQ7Cn0KCmxvbmcgZG91YmxlIGZtb2RsKGxvbmcgZG91YmxlIHgsbG9uZyBkb3VibGUgeSkKewog IGxvbmcgZG91YmxlIHJldDsKICBhc20oIjE6XG4iICIJZnByZW1cbiIgIglmc3RzdwklJWF4XG4i ICIJc2FoZlxuIiAiCWpwICAJMWJcbiI6ICI9dCIocmV0KTogInUiKHkpLCAiMCIoeCk6ICJlYXgi LCJzdCIpOwogIHJldHVybiByZXQ7Cn0KCgoKIyAyODIgImxpYm0uYyIKZmxvYXQgaHlwb3RmKGZs b2F0IHgsZmxvYXQgeSkKewogIHJlZ2lzdGVyIGZsb2F0IHJldHZhbDsKICBhc20gKCAiZnhhbVxu IiAiCWZuc3Rzd1xuIiAiCW1vdmIJJSVhaCwgJSVjaFxuIiAiCWZ4Y2gJJTJcbiIgIglmbGQJJTBc biIgIglmc3RwCSUwXG4iICIJZnhhbVxuIiAiCWZuc3Rzd1xuIiAiCW1vdmIJJSVhaCwgJSVhbFxu IiAiCW9yYgklJWNoLCAlJWFoXG4iICIJc2FoZlxuIiAiCWpjCTFmXG4iICIJZnhjaAklMlxuIiAi CWZtdWwJJTBcbiIgIglmeGNoXG4iICIJZm11bAklMFxuIiAiCWZhZGRwXG4iICIJZnNxcnRcbiIg IglqbXAJMmZcbiIiMToJYW5kYgkkMHg0NSwgJSVhbFxuIiAiCWNtcGIJJDUsICUlYWxcbiIgIglq ZQkzZlxuIiAiCWFuZGIJJDB4NDUsICUlY2hcbiIgIgljbXBiCSQ1LCAlJWNoXG4iICIJam5lCTRm XG4iICIJZnhjaFxuIiIzOglmc3RwCSUyXG4iICIJZmFic1xuIiAiCWptcAkyZlxuIiI0Ogl0ZXN0 YgkkMSwgJSVhbFxuIiAiCWpuegk1ZlxuIiAiCWZ4Y2hcbiIiNToJZnN0cAklMlxuIiIyOiI6ICI9 dCIocmV0dmFsKSA6ICIwIih4KSwidSIoeSkgOiAiZWF4IiwiZWN4Iiwic3QoMSkiKTsKICByZXR1 cm4gcmV0dmFsOwp9Cgpkb3VibGUgaHlwb3QoZG91YmxlIHgsZG91YmxlIHkpCnsKICByZWdpc3Rl ciBkb3VibGUgcmV0dmFsOwogIGFzbSAoICJmeGFtXG4iICIJZm5zdHN3XG4iICIJbW92YgklJWFo LCAlJWNoXG4iICIJZnhjaAklMlxuIiAiCWZsZAklMFxuIiAiCWZzdHAJJTBcbiIgIglmeGFtXG4i ICIJZm5zdHN3XG4iICIJbW92YgklJWFoLCAlJWFsXG4iICIJb3JiCSUlY2gsICUlYWhcbiIgIglz YWhmXG4iICIJamMJMWZcbiIgIglmeGNoCSUyXG4iICIJZm11bAklMFxuIiAiCWZ4Y2hcbiIgIglm bXVsCSUwXG4iICIJZmFkZHBcbiIgIglmc3FydFxuIiAiCWptcAkyZlxuIiIxOglhbmRiCSQweDQ1 LCAlJWFsXG4iICIJY21wYgkkNSwgJSVhbFxuIiAiCWplCTNmXG4iICIJYW5kYgkkMHg0NSwgJSVj aFxuIiAiCWNtcGIJJDUsICUlY2hcbiIgIglqbmUJNGZcbiIgIglmeGNoXG4iIjM6CWZzdHAJJTJc biIgIglmYWJzXG4iICIJam1wCTJmXG4iIjQ6CXRlc3RiCSQxLCAlJWFsXG4iICIJam56CTVmXG4i ICIJZnhjaFxuIiI1Oglmc3RwCSUyXG4iIjI6IjogIj10IihyZXR2YWwpIDogIjAiKHgpLCJ1Iih5 KSA6ICJlYXgiLCJlY3giLCJzdCgxKSIpOwogIHJldHVybiByZXR2YWw7Cn0KCmxvbmcgZG91Ymxl IGh5cG90bChsb25nIGRvdWJsZSB4LGxvbmcgZG91YmxlIHkpCnsKICByZWdpc3RlciBsb25nIGRv dWJsZSByZXR2YWw7CiAgYXNtICggImZ4YW1cbiIgIglmbnN0c3dcbiIgIgltb3ZiCSUlYWgsICUl Y2hcbiIgIglmeGNoCSUyXG4iICIJZmxkCSUwXG4iICIJZnN0cAklMFxuIiAiCWZ4YW1cbiIgIglm bnN0c3dcbiIgIgltb3ZiCSUlYWgsICUlYWxcbiIgIglvcmIJJSVjaCwgJSVhaFxuIiAiCXNhaGZc biIgIglqYwkxZlxuIiAiCWZ4Y2gJJTJcbiIgIglmbXVsCSUwXG4iICIJZnhjaFxuIiAiCWZtdWwJ JTBcbiIgIglmYWRkcFxuIiAiCWZzcXJ0XG4iICIJam1wCTJmXG4iIjE6CWFuZGIJJDB4NDUsICUl YWxcbiIgIgljbXBiCSQ1LCAlJWFsXG4iICIJamUJM2ZcbiIgIglhbmRiCSQweDQ1LCAlJWNoXG4i ICIJY21wYgkkNSwgJSVjaFxuIiAiCWpuZQk0ZlxuIiAiCWZ4Y2hcbiIiMzoJZnN0cAklMlxuIiAi CWZhYnNcbiIgIglqbXAJMmZcbiIiNDoJdGVzdGIJJDEsICUlYWxcbiIgIglqbnoJNWZcbiIgIglm eGNoXG4iIjU6CWZzdHAJJTJcbiIiMjoiOiAiPXQiKHJldHZhbCkgOiAiMCIoeCksInUiKHkpIDog ImVheCIsImVjeCIsInN0KDEpIik7CiAgcmV0dXJuIHJldHZhbDsKfQoKCgoKCgoKCgoKCgoKZmxv YXQgbG9nZihmbG9hdCB4KQp7CiAgcmVnaXN0ZXIgZmxvYXQgcmV0OwogIGFzbSgiZmxkbG4yXG4i ICIJZnhjaFxuIiAiCWZ5bDJ4IjogIj10IihyZXQpOiAiMCIoeCkpOwogIHJldHVybiByZXQ7Cn0K CmRvdWJsZSBsb2coZG91YmxlIHgpCnsKICByZWdpc3RlciBkb3VibGUgcmV0OwogIGFzbSgiZmxk bG4yXG4iICIJZnhjaFxuIiAiCWZ5bDJ4IjogIj10IihyZXQpOiAiMCIoeCkpOwogIHJldHVybiBy ZXQ7Cn0KCmxvbmcgZG91YmxlIGxvZ2wobG9uZyBkb3VibGUgeCkKewogIHJlZ2lzdGVyIGxvbmcg ZG91YmxlIHJldDsKICBhc20oImZsZGxuMlxuIiAiCWZ4Y2hcbiIgIglmeWwyeCI6ICI9dCIocmV0 KTogIjAiKHgpKTsKICByZXR1cm4gcmV0Owp9CgoKCgoKCgoKZmxvYXQgbG9nMTBmKGZsb2F0IHgp CnsKICByZWdpc3RlciBmbG9hdCByZXQ7CiAgYXNtKCJmbGRsZzJcbiIgIglmeGNoXG4iICIJZnls MngiOiAiPXQiKHJldCk6ICIwIih4KSk7CiAgcmV0dXJuIHJldDsKfQoKZG91YmxlIGxvZzEwKGRv dWJsZSB4KQp7CiAgcmVnaXN0ZXIgZG91YmxlIHJldDsKICBhc20oImZsZGxnMlxuIiAiCWZ4Y2hc biIgIglmeWwyeCI6ICI9dCIocmV0KTogIjAiKHgpKTsKICByZXR1cm4gcmV0Owp9Cgpsb25nIGRv dWJsZSBsb2cxMGwobG9uZyBkb3VibGUgeCkKewogIHJlZ2lzdGVyIGxvbmcgZG91YmxlIHJldDsK ICBhc20oImZsZGxnMlxuIiAiCWZ4Y2hcbiIgIglmeWwyeCI6ICI9dCIocmV0KTogIjAiKHgpKTsK ICByZXR1cm4gcmV0Owp9CgojIDM3NSAibGlibS5jIgpmbG9hdCByZW1haW5kZXJmKGZsb2F0IHgs ZmxvYXQgeSkKewogIHJlZ2lzdGVyIGZsb2F0IHJldDsKICBhc20oIlxuMToJZnByZW0xXG4iICIJ ZnN0c3cJJSVheFxuIiAiCXNhaGZcbiIgIglqcAkxYlxuIiAiCWZzdHAJJTIiIDogIj10IihyZXQp IDogIjAiKHgpLCAidSIoeSk6ICJzdCgxKSIsImVheCIpOwogIHJldHVybiByZXQ7Cn0KCmRvdWJs ZSByZW1haW5kZXIoZG91YmxlIHgsZG91YmxlIHkpCnsKICByZWdpc3RlciBkb3VibGUgcmV0Owog IGFzbSgiXG4xOglmcHJlbTFcbiIgIglmc3RzdwklJWF4XG4iICIJc2FoZlxuIiAiCWpwCTFiXG4i ICIJZnN0cAklMiIgOiAiPXQiKHJldCkgOiAiMCIoeCksICJ1Iih5KTogInN0KDEpIiwiZWF4Iik7 CiAgcmV0dXJuIHJldDsKfQoKbG9uZyBkb3VibGUgcmVtYWluZGVybChsb25nIGRvdWJsZSB4LGxv bmcgZG91YmxlIHkpCnsKICByZWdpc3RlciBsb25nIGRvdWJsZSByZXQ7CiAgYXNtKCJcbjE6CWZw cmVtMVxuIiAiCWZzdHN3CSUlYXhcbiIgIglzYWhmXG4iICIJanAJMWJcbiIgIglmc3RwCSUyIiA6 ICI9dCIocmV0KSA6ICIwIih4KSwgInUiKHkpOiAic3QoMSkiLCJlYXgiKTsKICByZXR1cm4gcmV0 Owp9CgoKCgoKCmZsb2F0IHNxcnRmKGZsb2F0IHgpCnsKICByZWdpc3RlciBmbG9hdCByZXQ7CiAg YXNtKCJmc3FydCIgOiAiPXQiKHJldCk6ICIwIih4KSk7CiAgcmV0dXJuIHJldDsKfQoKZG91Ymxl IHNxcnQoZG91YmxlIHgpCnsKICByZWdpc3RlciBkb3VibGUgcmV0OwogIGFzbSgiZnNxcnQiIDog Ij10IihyZXQpOiAiMCIoeCkpOwogIHJldHVybiByZXQ7Cn0KCmxvbmcgZG91YmxlIHNxcnRsKGxv bmcgZG91YmxlIHgpCnsKICByZWdpc3RlciBsb25nIGRvdWJsZSByZXQ7CiAgYXNtKCJmc3FydCIg OiAiPXQiKHJldCk6ICIwIih4KSk7CiAgcmV0dXJuIHJldDsKfQoKCgoKCgoKZmxvYXQgYXRhbmYo ZmxvYXQgeCkKewogIHJlZ2lzdGVyIGZsb2F0IHJldDsKICBhc20oImZsZDFcbiIgIglmcGF0YW4i OiAiPXQiKHJldCk6ICIwIih4KSk7CiAgcmV0dXJuIHJldDsKfQoKZG91YmxlIGF0YW4oZG91Ymxl IHgpCnsKICByZWdpc3RlciBkb3VibGUgcmV0OwogIGFzbSgiZmxkMVxuIiAiCWZwYXRhbiI6ICI9 dCIocmV0KTogIjAiKHgpKTsKICByZXR1cm4gcmV0Owp9Cgpsb25nIGRvdWJsZSBhdGFubChsb25n IGRvdWJsZSB4KQp7CiAgcmVnaXN0ZXIgbG9uZyBkb3VibGUgcmV0OwogIGFzbSgiZmxkMVxuIiAi CWZwYXRhbiI6ICI9dCIocmV0KTogIjAiKHgpKTsKICByZXR1cm4gcmV0Owp9CgojIDQ2MCAibGli bS5jIgpmbG9hdCBjZWlsZihmbG9hdCB2YWwpCnsKICB1bnNpZ25lZCBpbnQgY3c7CiAgdW5zaWdu ZWQgaW50IG5ld19jdzsKICByZWdpc3RlciBmbG9hdCByZXQ7CiAgYXNtKCJmc3RjdwklMCI6Ij1t Iihjdyk6OiJtZW1vcnkiKTsgbmV3X2N3ID0gKGN3IHwgMHg4MDApICYgMHhmYmZmOyBhc20oImZs ZGN3CSUzXG4iICIJZnJuZGludFxuIiAiCWZsZGN3CSUyIiA6Ij10IihyZXQpIDoiMCIodmFsKSwg Im0iKGN3KSwgIm0iKG5ld19jdykpOwogIHJldHVybiByZXQ7Cn0KCmRvdWJsZSBjZWlsKGRvdWJs ZSB2YWwpCnsKICB1bnNpZ25lZCBpbnQgY3c7CiAgdW5zaWduZWQgaW50IG5ld19jdzsKICByZWdp c3RlciBkb3VibGUgcmV0OwogIGFzbSgiZnN0Y3cJJTAiOiI9bSIoY3cpOjoibWVtb3J5Iik7IG5l d19jdyA9IChjdyB8IDB4ODAwKSAmIDB4ZmJmZjsgYXNtKCJmbGRjdwklM1xuIiAiCWZybmRpbnRc biIgIglmbGRjdwklMiIgOiI9dCIocmV0KSA6IjAiKHZhbCksICJtIihjdyksICJtIihuZXdfY3cp KTsKICByZXR1cm4gcmV0Owp9Cgpsb25nIGRvdWJsZSBjZWlsbChsb25nIGRvdWJsZSB2YWwpCnsK ICB1bnNpZ25lZCBpbnQgY3c7CiAgdW5zaWduZWQgaW50IG5ld19jdzsKICByZWdpc3RlciBsb25n IGRvdWJsZSByZXQ7CiAgYXNtKCJmc3RjdwklMCI6Ij1tIihjdyk6OiJtZW1vcnkiKTsgbmV3X2N3 ID0gKGN3IHwgMHg4MDApICYgMHhmYmZmOyBhc20oImZsZGN3CSUzXG4iICIJZnJuZGludFxuIiAi CWZsZGN3CSUyIiA6Ij10IihyZXQpIDoiMCIodmFsKSwgIm0iKGN3KSwgIm0iKG5ld19jdykpOwog IHJldHVybiByZXQ7Cn0KCmZsb2F0IGNvcHlzaWduZihmbG9hdCB4LGZsb2F0IHkpCnsKICByZXR1 cm4geSA+IDAgPyB4IDogLXg7Cn0KCmRvdWJsZSBjb3B5c2lnbihkb3VibGUgeCxkb3VibGUgeSkK ewogIHJldHVybiB5ID4gMCA/IHggOiAteDsKfQoKbG9uZyBkb3VibGUgY29weXNpZ25sKGxvbmcg ZG91YmxlIHgsbG9uZyBkb3VibGUgeSkKewogIHJldHVybiB5ID4gMCA/IHggOiAteDsKfQoKIyA1 MjEgImxpYm0uYyIKZmxvYXQgY29zZihmbG9hdCB4KQp7CiAgcmVnaXN0ZXIgZmxvYXQgcmV0Owog IGFzbSgiZmNvc1xuIiAiCWZuc3RzdwklJWF4XG4iICIJdGVzdGwJJDB4NDAwLCAlJWVheFxuIiAi CWplCTJmXG4iICIJZmxkcGlcbiIgIglmYWRkCSUwXG4iICIJZnhjaAklJXN0KDEpXG4iIjE6CWZw cmVtMVxuIiAiCWZuc3RzdwklJWF4XG4iICIJdGVzdGwJJDB4NDAwLCAlJWVheFxuIiAiCWpuZQkx YlxuIiAiCWZzdHAJJSVzdCgxKVxuIiAiCSIiZmNvc1xuIiIyOiI6ICI9dCIocmV0KSA6ICIwIih4 KTogInN0KDEpIiwiZWF4Iik7CiAgcmV0dXJuIHJldDsKfQoKZG91YmxlIGNvcyhkb3VibGUgeCkK ewogIHJlZ2lzdGVyIGRvdWJsZSByZXQ7CiAgYXNtKCJmY29zXG4iICIJZm5zdHN3CSUlYXhcbiIg Igl0ZXN0bAkkMHg0MDAsICUlZWF4XG4iICIJamUJMmZcbiIgIglmbGRwaVxuIiAiCWZhZGQJJTBc biIgIglmeGNoCSUlc3QoMSlcbiIiMToJZnByZW0xXG4iICIJZm5zdHN3CSUlYXhcbiIgIgl0ZXN0 bAkkMHg0MDAsICUlZWF4XG4iICIJam5lCTFiXG4iICIJZnN0cAklJXN0KDEpXG4iICIJIiJmY29z XG4iIjI6IjogIj10IihyZXQpIDogIjAiKHgpOiAic3QoMSkiLCJlYXgiKTsKICByZXR1cm4gcmV0 Owp9Cgpsb25nIGRvdWJsZSBjb3NsKGxvbmcgZG91YmxlIHgpCnsKICByZWdpc3RlciBsb25nIGRv dWJsZSByZXQ7CiAgYXNtKCJmY29zXG4iICIJZm5zdHN3CSUlYXhcbiIgIgl0ZXN0bAkkMHg0MDAs ICUlZWF4XG4iICIJamUJMmZcbiIgIglmbGRwaVxuIiAiCWZhZGQJJTBcbiIgIglmeGNoCSUlc3Qo MSlcbiIiMToJZnByZW0xXG4iICIJZm5zdHN3CSUlYXhcbiIgIgl0ZXN0bAkkMHg0MDAsICUlZWF4 XG4iICIJam5lCTFiXG4iICIJZnN0cAklJXN0KDEpXG4iICIJIiJmY29zXG4iIjI6IjogIj10Iihy ZXQpIDogIjAiKHgpOiAic3QoMSkiLCJlYXgiKTsKICByZXR1cm4gcmV0Owp9CgpmbG9hdCBzaW5m KGZsb2F0IHgpCnsKICByZWdpc3RlciBmbG9hdCByZXQ7CiAgYXNtKCJmc2luXG4iICIJZm5zdHN3 CSUlYXhcbiIgIgl0ZXN0bAkkMHg0MDAsICUlZWF4XG4iICIJamUJMmZcbiIgIglmbGRwaVxuIiAi CWZhZGQJJTBcbiIgIglmeGNoCSUlc3QoMSlcbiIiMToJZnByZW0xXG4iICIJZm5zdHN3CSUlYXhc biIgIgl0ZXN0bAkkMHg0MDAsICUlZWF4XG4iICIJam5lCTFiXG4iICIJZnN0cAklJXN0KDEpXG4i ICIJIiJmc2luXG4iIjI6IjogIj10IihyZXQpIDogIjAiKHgpOiAic3QoMSkiLCJlYXgiKTsKICBy ZXR1cm4gcmV0Owp9Cgpkb3VibGUgc2luKGRvdWJsZSB4KQp7CiAgcmVnaXN0ZXIgZG91YmxlIHJl dDsKICBhc20oImZzaW5cbiIgIglmbnN0c3cJJSVheFxuIiAiCXRlc3RsCSQweDQwMCwgJSVlYXhc biIgIglqZQkyZlxuIiAiCWZsZHBpXG4iICIJZmFkZAklMFxuIiAiCWZ4Y2gJJSVzdCgxKVxuIiIx OglmcHJlbTFcbiIgIglmbnN0c3cJJSVheFxuIiAiCXRlc3RsCSQweDQwMCwgJSVlYXhcbiIgIglq bmUJMWJcbiIgIglmc3RwCSUlc3QoMSlcbiIgIgkiImZzaW5cbiIiMjoiOiAiPXQiKHJldCkgOiAi MCIoeCk6ICJzdCgxKSIsImVheCIpOwogIHJldHVybiByZXQ7Cn0KCmxvbmcgZG91YmxlIHNpbmwo bG9uZyBkb3VibGUgeCkKewogIHJlZ2lzdGVyIGxvbmcgZG91YmxlIHJldDsKICBhc20oImZzaW5c biIgIglmbnN0c3cJJSVheFxuIiAiCXRlc3RsCSQweDQwMCwgJSVlYXhcbiIgIglqZQkyZlxuIiAi CWZsZHBpXG4iICIJZmFkZAklMFxuIiAiCWZ4Y2gJJSVzdCgxKVxuIiIxOglmcHJlbTFcbiIgIglm bnN0c3cJJSVheFxuIiAiCXRlc3RsCSQweDQwMCwgJSVlYXhcbiIgIglqbmUJMWJcbiIgIglmc3Rw CSUlc3QoMSlcbiIgIgkiImZzaW5cbiIiMjoiOiAiPXQiKHJldCkgOiAiMCIoeCk6ICJzdCgxKSIs ImVheCIpOwogIHJldHVybiByZXQ7Cn0KCiMgNTgyICJsaWJtLmMiCmZsb2F0IHRhbmYoZmxvYXQg eCkKewogIHJlZ2lzdGVyIGZsb2F0IHJldDsKICBhc20oImZwdGFuXG4iICIJZm5zdHN3CSUlYXhc biIgIgl0ZXN0bAkkMHg0MDAsICUlZWF4XG4iICIJamUJMmZcbiIgIglmbGRwaVxuIiAiCWZhZGQJ JTBcbiIgIglmeGNoCSUlc3QoMSlcbiIiMToJZnByZW0xXG4iICIJZm5zdHN3CSUlYXhcbiIgIgl0 ZXN0bAkkMHg0MDAsICUlZWF4XG4iICIJam5lCTFiXG4iICIJZnN0cAklJXN0KDEpXG4iICIJZnB0 YW5cbiIiMjoJZnN0cAklMCI6ICI9dCIocmV0KSA6ICIwIih4KTogInN0KDEpIiwiZWF4Iik7CiAg cmV0dXJuIHJldDsKfQoKZG91YmxlIHRhbihkb3VibGUgeCkKewogIHJlZ2lzdGVyIGRvdWJsZSBy ZXQ7CiAgYXNtKCJmcHRhblxuIiAiCWZuc3RzdwklJWF4XG4iICIJdGVzdGwJJDB4NDAwLCAlJWVh eFxuIiAiCWplCTJmXG4iICIJZmxkcGlcbiIgIglmYWRkCSUwXG4iICIJZnhjaAklJXN0KDEpXG4i IjE6CWZwcmVtMVxuIiAiCWZuc3RzdwklJWF4XG4iICIJdGVzdGwJJDB4NDAwLCAlJWVheFxuIiAi CWpuZQkxYlxuIiAiCWZzdHAJJSVzdCgxKVxuIiAiCWZwdGFuXG4iIjI6CWZzdHAJJTAiOiAiPXQi KHJldCkgOiAiMCIoeCk6ICJzdCgxKSIsImVheCIpOwogIHJldHVybiByZXQ7Cn0KCmxvbmcgZG91 YmxlIHRhbmwobG9uZyBkb3VibGUgeCkKewogIHJlZ2lzdGVyIGxvbmcgZG91YmxlIHJldDsKICBh c20oImZwdGFuXG4iICIJZm5zdHN3CSUlYXhcbiIgIgl0ZXN0bAkkMHg0MDAsICUlZWF4XG4iICIJ amUJMmZcbiIgIglmbGRwaVxuIiAiCWZhZGQJJTBcbiIgIglmeGNoCSUlc3QoMSlcbiIiMToJZnBy ZW0xXG4iICIJZm5zdHN3CSUlYXhcbiIgIgl0ZXN0bAkkMHg0MDAsICUlZWF4XG4iICIJam5lCTFi XG4iICIJZnN0cAklJXN0KDEpXG4iICIJZnB0YW5cbiIiMjoJZnN0cAklMCI6ICI9dCIocmV0KSA6 ICIwIih4KTogInN0KDEpIiwiZWF4Iik7CiAgcmV0dXJuIHJldDsKfQoKIyA2MjkgImxpYm0uYyIK ZmxvYXQgZXhwMmYoZmxvYXQgeCkKewogIHJlZ2lzdGVyIGZsb2F0IHJldDsKICBhc20oImZ4YW1c biIgIglmc3RzdwklJWF4XG4iICIJbW92YgkkMHg0NSwgJSVkaFxuIiAiCWFuZGIJJSVhaCwgJSVk aFxuIiAiCWNtcGIJJDB4MDUsICUlZGhcbiIgIglqZQkxZlxuIiAiCWZsZAklMFxuIiAiCWZybmRp bnRcbiIgIglmc3VicgklMCwgJSVzdCgxKVxuIiAiCWZ4Y2hcbiIgIglmMnhtMVxuIiAiCWZsZDFc biIgIglmYWRkcFxuIiAiCWZzY2FsZVxuIiAiCWZzdHAJJSVzdCgxKVxuIiAiCWptcAkyZlxuIiIx Ogl0ZXN0bAkkMHgyMDAsICUlZWF4XG4iICIJanoJMmZcbiIgIglmc3RwCSUwXG4iICIJZmxkelxu IiIyOiI6ICI9dCIocmV0KTogIjAiKHgpOiAiZWF4IiwiZWR4Iik7CiAgcmV0dXJuIHJldDsKfQoK ZG91YmxlIGV4cDIoZG91YmxlIHgpCnsKICByZWdpc3RlciBkb3VibGUgcmV0OwogIGFzbSgiZnhh bVxuIiAiCWZzdHN3CSUlYXhcbiIgIgltb3ZiCSQweDQ1LCAlJWRoXG4iICIJYW5kYgklJWFoLCAl JWRoXG4iICIJY21wYgkkMHgwNSwgJSVkaFxuIiAiCWplCTFmXG4iICIJZmxkCSUwXG4iICIJZnJu ZGludFxuIiAiCWZzdWJyCSUwLCAlJXN0KDEpXG4iICIJZnhjaFxuIiAiCWYyeG0xXG4iICIJZmxk MVxuIiAiCWZhZGRwXG4iICIJZnNjYWxlXG4iICIJZnN0cAklJXN0KDEpXG4iICIJam1wCTJmXG4i IjE6CXRlc3RsCSQweDIwMCwgJSVlYXhcbiIgIglqegkyZlxuIiAiCWZzdHAJJTBcbiIgIglmbGR6 XG4iIjI6IjogIj10IihyZXQpOiAiMCIoeCk6ICJlYXgiLCJlZHgiKTsKICByZXR1cm4gcmV0Owp9 Cgpsb25nIGRvdWJsZSBleHAybChsb25nIGRvdWJsZSB4KQp7CiAgcmVnaXN0ZXIgbG9uZyBkb3Vi bGUgcmV0OwogIGFzbSgiZnhhbVxuIiAiCWZzdHN3CSUlYXhcbiIgIgltb3ZiCSQweDQ1LCAlJWRo XG4iICIJYW5kYgklJWFoLCAlJWRoXG4iICIJY21wYgkkMHgwNSwgJSVkaFxuIiAiCWplCTFmXG4i ICIJZmxkCSUwXG4iICIJZnJuZGludFxuIiAiCWZzdWJyCSUwLCAlJXN0KDEpXG4iICIJZnhjaFxu IiAiCWYyeG0xXG4iICIJZmxkMVxuIiAiCWZhZGRwXG4iICIJZnNjYWxlXG4iICIJZnN0cAklJXN0 KDEpXG4iICIJam1wCTJmXG4iIjE6CXRlc3RsCSQweDIwMCwgJSVlYXhcbiIgIglqegkyZlxuIiAi CWZzdHAJJTBcbiIgIglmbGR6XG4iIjI6IjogIj10IihyZXQpOiAiMCIoeCk6ICJlYXgiLCJlZHgi KTsKICByZXR1cm4gcmV0Owp9CgoKCgoKCgoKZmxvYXQgZmRpbWYoZmxvYXQgeCwgZmxvYXQgeSkK ewogIHJlZ2lzdGVyIGZsb2F0IHJldDsKICBhc20oImZzdWJwCSUyXG4iICIJZmFicyI6ICI9dCIo cmV0KTogIjAiKHkpLCAidSIoeCkpOwogIHJldHVybiByZXQ7Cn0KCmRvdWJsZSBmZGltKGRvdWJs ZSB4LCBkb3VibGUgeSkKewogIHJlZ2lzdGVyIGRvdWJsZSByZXQ7CiAgYXNtKCJmc3VicAklMlxu IiAiCWZhYnMiOiAiPXQiKHJldCk6ICIwIih5KSwgInUiKHgpKTsKICByZXR1cm4gcmV0Owp9Cgps b25nIGRvdWJsZSBmZGltbChsb25nIGRvdWJsZSB4LCBsb25nIGRvdWJsZSB5KQp7CiAgcmVnaXN0 ZXIgbG9uZyBkb3VibGUgcmV0OwogIGFzbSgiZnN1YnAJJTJcbiIgIglmYWJzIjogIj10IihyZXQp OiAiMCIoeSksICJ1Iih4KSk7CiAgcmV0dXJuIHJldDsKfQoKaW50IGZpbml0ZWYoZmxvYXQgdmFs KQp7CiAgY29uc3QgdWludDMyX3QgKmNvbnRlbnRzOwogIHJlZ2lzdGVyIHVpbnQzMl90IG1hZ2lj OwogIGNvbnRlbnRzID0gKGNvbnN0IHVpbnQzMl90ICopJnZhbDsKICBtYWdpYyA9IDB4RkY3RkZG RkZMOwogIHJldHVybiAoKG1hZ2ljLWNvbnRlbnRzWzBdKV5tYWdpYykgPj4gMzE7Cn0KCmludCBm aW5pdGUoZG91YmxlIHZhbCkKewogIGNvbnN0IHVpbnQzMl90ICpjb250ZW50czsKICByZWdpc3Rl ciB1aW50MzJfdCBtYWdpYzsKICBjb250ZW50cyA9IChjb25zdCB1aW50MzJfdCAqKSZ2YWw7CiAg bWFnaWMgPSAweEZGRUZGRkZGTDsKICByZXR1cm4gKChtYWdpYy1jb250ZW50c1sxXSlebWFnaWMp ID4+IDMxOwp9CgppbnQgZmluaXRlbChsb25nIGRvdWJsZSB2YWwpCnsKICBjb25zdCB1aW50MzJf dCAqY29udGVudHM7CiAgcmVnaXN0ZXIgdWludDMyX3QgcmV0dmFsOwogIGNvbnRlbnRzID0gKGNv bnN0IHVpbnQzMl90ICopJnZhbDsKICByZXR2YWwgPSAweEZGRkY4MDAwTCB8IGNvbnRlbnRzWzJd OwogIHJldHVybiAoKytyZXR2YWwpID4+IDMxOwp9CgojIDcxNiAibGlibS5jIgpmbG9hdCBmbG9v cmYoZmxvYXQgdmFsKQp7CiAgdW5zaWduZWQgaW50IGN3OwogIHVuc2lnbmVkIGludCBuZXdfY3c7 CiAgcmVnaXN0ZXIgZmxvYXQgcmV0OwogIGFzbSgiZnN0Y3cJJTAiOiI9bSIoY3cpOjoibWVtb3J5 Iik7IG5ld19jdyA9IChjdyB8IDB4NDAwKSAmIDB4ZjdmZjsgYXNtKCJmbGRjdwklM1xuIiAiCWZy bmRpbnRcbiIgIglmbGRjdwklMiIgOiI9dCIocmV0KSA6IjAiKHZhbCksICJtIihjdyksICJtIihu ZXdfY3cpKTsKICByZXR1cm4gcmV0Owp9Cgpkb3VibGUgZmxvb3IoZG91YmxlIHZhbCkKewogIHVu c2lnbmVkIGludCBjdzsKICB1bnNpZ25lZCBpbnQgbmV3X2N3OwogIHJlZ2lzdGVyIGRvdWJsZSBy ZXQ7CiAgYXNtKCJmc3RjdwklMCI6Ij1tIihjdyk6OiJtZW1vcnkiKTsgbmV3X2N3ID0gKGN3IHwg MHg0MDApICYgMHhmN2ZmOyBhc20oImZsZGN3CSUzXG4iICIJZnJuZGludFxuIiAiCWZsZGN3CSUy IiA6Ij10IihyZXQpIDoiMCIodmFsKSwgIm0iKGN3KSwgIm0iKG5ld19jdykpOwogIHJldHVybiBy ZXQ7Cn0KCmxvbmcgZG91YmxlIGZsb29ybChsb25nIGRvdWJsZSB2YWwpCnsKICB1bnNpZ25lZCBp bnQgY3c7CiAgdW5zaWduZWQgaW50IG5ld19jdzsKICByZWdpc3RlciBsb25nIGRvdWJsZSByZXQ7 CiAgYXNtKCJmc3RjdwklMCI6Ij1tIihjdyk6OiJtZW1vcnkiKTsgbmV3X2N3ID0gKGN3IHwgMHg0 MDApICYgMHhmN2ZmOyBhc20oImZsZGN3CSUzXG4iICIJZnJuZGludFxuIiAiCWZsZGN3CSUyIiA6 Ij10IihyZXQpIDoiMCIodmFsKSwgIm0iKGN3KSwgIm0iKG5ld19jdykpOwogIHJldHVybiByZXQ7 Cn0KCgoKZmxvYXQgZm1hZihmbG9hdCB4LGZsb2F0IHksZmxvYXQgeikKewogIHJldHVybiAoKHgq eSkreik7Cn0KCmRvdWJsZSBmbWEoZG91YmxlIHgsZG91YmxlIHksZG91YmxlIHopCnsKICByZXR1 cm4gKCh4KnkpK3opOwp9Cgpsb25nIGRvdWJsZSBmbWFsKGxvbmcgZG91YmxlIHgsbG9uZyBkb3Vi bGUgeSxsb25nIGRvdWJsZSB6KQp7CiAgcmV0dXJuICgoeCp5KSt6KTsKfQoKIyA3NzggImxpYm0u YyIKZmxvYXQgZm1heGYoZmxvYXQgeCwgZmxvYXQgeSkKewogIHJlZ2lzdGVyIGZsb2F0IHJldDsK ICBhc20oImZ4YW1cbiIgIglmbnN0c3dcbiIgIglhbmRiCSQweDQ1LCAlJWFoXG4iICIJZnhjaAkl MlxuIiAiCWNtcGIJJDB4MDEsICUlYWhcbiIgIglqZQkxZlxuIiAiCWZ1Y29tCSUyXG4iICIJZm5z dHN3XG4iICIJc2FoZlxuIiAiCWpuYwkxZlxuIiAiCWZ4Y2gJJTJcbiIiMToJZnN0cAklMiI6ICI9 dCIocmV0KTogIjAiKHkpLCAidSIoeCk6ICJlYXgiLCJzdCgxKSIpOwogIHJldHVybiByZXQ7Cn0K CmRvdWJsZSBmbWF4KGRvdWJsZSB4LCBkb3VibGUgeSkKewogIHJlZ2lzdGVyIGRvdWJsZSByZXQ7 CiAgYXNtKCJmeGFtXG4iICIJZm5zdHN3XG4iICIJYW5kYgkkMHg0NSwgJSVhaFxuIiAiCWZ4Y2gJ JTJcbiIgIgljbXBiCSQweDAxLCAlJWFoXG4iICIJamUJMWZcbiIgIglmdWNvbQklMlxuIiAiCWZu c3Rzd1xuIiAiCXNhaGZcbiIgIglqbmMJMWZcbiIgIglmeGNoCSUyXG4iIjE6CWZzdHAJJTIiOiAi PXQiKHJldCk6ICIwIih5KSwgInUiKHgpOiAiZWF4Iiwic3QoMSkiKTsKICByZXR1cm4gcmV0Owp9 Cgpsb25nIGRvdWJsZSBmbWF4bChsb25nIGRvdWJsZSB4LCBsb25nIGRvdWJsZSB5KQp7CiAgcmVn aXN0ZXIgbG9uZyBkb3VibGUgcmV0OwogIGFzbSgiZnhhbVxuIiAiCWZuc3Rzd1xuIiAiCWFuZGIJ JDB4NDUsICUlYWhcbiIgIglmeGNoCSUyXG4iICIJY21wYgkkMHgwMSwgJSVhaFxuIiAiCWplCTFm XG4iICIJZnVjb20JJTJcbiIgIglmbnN0c3dcbiIgIglzYWhmXG4iICIJam5jCTFmXG4iICIJZnhj aAklMlxuIiIxOglmc3RwCSUyIjogIj10IihyZXQpOiAiMCIoeSksICJ1Iih4KTogImVheCIsInN0 KDEpIik7CiAgcmV0dXJuIHJldDsKfQoKIyA4MTYgImxpYm0uYyIKZmxvYXQgZm1pbmYoZmxvYXQg eCwgZmxvYXQgeSkKewogIHJlZ2lzdGVyIGZsb2F0IHJldDsKICBhc20oImZ4YW1cbiIgIglmbnN0 c3dcbiIgIglhbmRiCSQweDQ1LCAlJWFoXG4iICIJY21wYgkkMHgwMSwgJSVhaFxuIiAiCWplCTFm XG4iICIJZnVjb20JJTJcbiIgIglmbnN0c3dcbiIgIglzYWhmXG4iICIJamMJMmZcbiIiMToJZnhj aAklMlxuIiIyOglmc3RwCSUyXG4iOiAiPXQiKHJldCk6ICIwIih5KSwgInUiKHgpOiAiZWF4Iiwi c3QoMSkiKTsKICByZXR1cm4gcmV0Owp9Cgpkb3VibGUgZm1pbihkb3VibGUgeCwgZG91YmxlIHkp CnsKICByZWdpc3RlciBkb3VibGUgcmV0OwogIGFzbSgiZnhhbVxuIiAiCWZuc3Rzd1xuIiAiCWFu ZGIJJDB4NDUsICUlYWhcbiIgIgljbXBiCSQweDAxLCAlJWFoXG4iICIJamUJMWZcbiIgIglmdWNv bQklMlxuIiAiCWZuc3Rzd1xuIiAiCXNhaGZcbiIgIglqYwkyZlxuIiIxOglmeGNoCSUyXG4iIjI6 CWZzdHAJJTJcbiI6ICI9dCIocmV0KTogIjAiKHkpLCAidSIoeCk6ICJlYXgiLCJzdCgxKSIpOwog IHJldHVybiByZXQ7Cn0KCmxvbmcgZG91YmxlIGZtaW5sKGxvbmcgZG91YmxlIHgsIGxvbmcgZG91 YmxlIHkpCnsKICByZWdpc3RlciBsb25nIGRvdWJsZSByZXQ7CiAgYXNtKCJmeGFtXG4iICIJZm5z dHN3XG4iICIJYW5kYgkkMHg0NSwgJSVhaFxuIiAiCWNtcGIJJDB4MDEsICUlYWhcbiIgIglqZQkx ZlxuIiAiCWZ1Y29tCSUyXG4iICIJZm5zdHN3XG4iICIJc2FoZlxuIiAiCWpjCTJmXG4iIjE6CWZ4 Y2gJJTJcbiIiMjoJZnN0cAklMlxuIjogIj10IihyZXQpOiAiMCIoeSksICJ1Iih4KTogImVheCIs InN0KDEpIik7CiAgcmV0dXJuIHJldDsKfQoKCgoKCgojIDg2NiAibGlibS5jIgpmbG9hdCBmcmV4 cGYoZmxvYXQgeCwgaW50ICplcHRyKQp7CiAgcmVnaXN0ZXIgZmxvYXQgcmV0dmFsOwogIHsgcmVn aXN0ZXIgbG9uZyBkb3VibGUgbWludXNfb25lOyBhc20oImZsZDFcbiIgIglmY2hzIjogIj10Iiht aW51c19vbmUpKTsgKmVwdHIgPSAwOyBhc20oImZ0c3RcbiIgIglmc3RzdwklJWF4XG4iICIJYW5k YgkkMHg0MSwgJSVhaFxuIiAiCXhvcmIJJDB4NDAsICUlYWhcbiIgIglqegkxZlxuIiAiCWZ4dHJh Y3RcbiIgIglmeGNoCSUyXG4iICIJZmlzdHBsCSglMylcbiIgIglmc2NhbGVcbiIgIglpbmNsCSgl MylcbiIiMToJZnN0cAklMiI6ICI9dCIocmV0dmFsKTogIjAiKHgpLCAidSIobWludXNfb25lKSwg InIiKGVwdHIpOiAiZWF4IiwibWVtb3J5Iiwic3QoMSkiKTt9OwogIHJldHVybiByZXR2YWw7Cn0K CmRvdWJsZSBmcmV4cChkb3VibGUgeCwgaW50ICplcHRyKQp7CiAgcmVnaXN0ZXIgZG91YmxlIHJl dHZhbDsKICB7IHJlZ2lzdGVyIGxvbmcgZG91YmxlIG1pbnVzX29uZTsgYXNtKCJmbGQxXG4iICIJ ZmNocyI6ICI9dCIobWludXNfb25lKSk7ICplcHRyID0gMDsgYXNtKCJmdHN0XG4iICIJZnN0c3cJ JSVheFxuIiAiCWFuZGIJJDB4NDEsICUlYWhcbiIgIgl4b3JiCSQweDQwLCAlJWFoXG4iICIJanoJ MWZcbiIgIglmeHRyYWN0XG4iICIJZnhjaAklMlxuIiAiCWZpc3RwbAkoJTMpXG4iICIJZnNjYWxl XG4iICIJaW5jbAkoJTMpXG4iIjE6CWZzdHAJJTIiOiAiPXQiKHJldHZhbCk6ICIwIih4KSwgInUi KG1pbnVzX29uZSksICJyIihlcHRyKTogImVheCIsIm1lbW9yeSIsInN0KDEpIik7fTsKICByZXR1 cm4gcmV0dmFsOwp9Cgpsb25nIGRvdWJsZSBmcmV4cGwobG9uZyBkb3VibGUgeCwgaW50ICplcHRy KQp7CiAgcmVnaXN0ZXIgbG9uZyBkb3VibGUgcmV0dmFsOwogIHsgcmVnaXN0ZXIgbG9uZyBkb3Vi bGUgbWludXNfb25lOyBhc20oImZsZDFcbiIgIglmY2hzIjogIj10IihtaW51c19vbmUpKTsgKmVw dHIgPSAwOyBhc20oImZ0c3RcbiIgIglmc3RzdwklJWF4XG4iICIJYW5kYgkkMHg0MSwgJSVhaFxu IiAiCXhvcmIJJDB4NDAsICUlYWhcbiIgIglqegkxZlxuIiAiCWZ4dHJhY3RcbiIgIglmeGNoCSUy XG4iICIJZmlzdHBsCSglMylcbiIgIglmc2NhbGVcbiIgIglpbmNsCSglMylcbiIiMToJZnN0cAkl MiI6ICI9dCIocmV0dmFsKTogIjAiKHgpLCAidSIobWludXNfb25lKSwgInIiKGVwdHIpOiAiZWF4 IiwibWVtb3J5Iiwic3QoMSkiKTt9OwogIHJldHVybiByZXR2YWw7Cn0KCiMgODk1ICJsaWJtLmMi CmludCBpbG9nYmYoZmxvYXQgeCkKewogIGludCByZXQ7CiAgYXNtKCJmeHRyYWN0XG4iICIJZnN0 cAklMVxuIiAiCWZpc3RwbAklMFxuIiAiCWZ3YWl0IiA6ICI9bSIocmV0KTogInQiKHgpKTsKICBy ZXR1cm4gcmV0Owp9Cgpkb3VibGUgaWxvZ2IoZG91YmxlIHgpCnsKICBpbnQgcmV0OwogIGFzbSgi Znh0cmFjdFxuIiAiCWZzdHAJJTFcbiIgIglmaXN0cGwJJTBcbiIgIglmd2FpdCIgOiAiPW0iKHJl dCk6ICJ0Iih4KSk7CiAgcmV0dXJuIHJldDsKfQoKbG9uZyBkb3VibGUgaWxvZ2JsKGxvbmcgZG91 YmxlIHgpCnsKICBpbnQgcmV0OwogIGFzbSgiZnh0cmFjdFxuIiAiCWZzdHAJJTFcbiIgIglmaXN0 cGwJJTBcbiIgIglmd2FpdCIgOiAiPW0iKHJldCk6ICJ0Iih4KSk7CiAgcmV0dXJuIHJldDsKfQoK CgoKCgoKCmxvbmcgbG9uZyBpbnQgbGxyaW50ZihmbG9hdCB4KQp7CiAgbG9uZyBsb25nIGludCBy ZXQ7CiAgYXNtKCJmaXN0cGxsCSUwXG4iICIJZndhaXQiIDogIj1tIihyZXQpOiAidCIoeCkgOiAi c3QiKTsKICByZXR1cm4gcmV0Owp9Cgpsb25nIGxvbmcgaW50IGxscmludChkb3VibGUgeCkKewog IGxvbmcgbG9uZyBpbnQgcmV0OwogIGFzbSgiZmlzdHBsbAklMFxuIiAiCWZ3YWl0IiA6ICI9bSIo cmV0KTogInQiKHgpIDogInN0Iik7CiAgcmV0dXJuIHJldDsKfQoKbG9uZyBsb25nIGludCBsbHJp bnRsKGxvbmcgZG91YmxlIHgpCnsKICBsb25nIGxvbmcgaW50IHJldDsKICBhc20oImZpc3RwbGwJ JTBcbiIgIglmd2FpdCIgOiAiPW0iKHJldCk6ICJ0Iih4KSA6ICJzdCIpOwogIHJldHVybiByZXQ7 Cn0KIyA5NTQgImxpYm0uYyIKIyA5NjMgImxpYm0uYyIKZmxvYXQgbG9nMXBmKGZsb2F0IHgpCnsK ICByZWdpc3RlciBmbG9hdCByZXR2YWw7CiAgYXNtKCJmbGRsbjJcbiIgIglmeGNoXG4iICIJZmxk MVxuIiAiCWZhZGRwICUlc3QoMSlcbiIgIglmeWwyeCI6ICI9dCIocmV0dmFsKTogIjAiKHgpKTsK ICByZXR1cm4gcmV0dmFsOwp9Cgpkb3VibGUgbG9nMXAoZG91YmxlIHgpCnsKICByZWdpc3RlciBk b3VibGUgcmV0dmFsOwogIGFzbSgiZmxkbG4yXG4iICIJZnhjaFxuIiAiCWZsZDFcbiIgIglmYWRk cCAlJXN0KDEpXG4iICIJZnlsMngiOiAiPXQiKHJldHZhbCk6ICIwIih4KSk7CiAgcmV0dXJuIHJl dHZhbDsKfQoKbG9uZyBkb3VibGUgbG9nMXBsKGxvbmcgZG91YmxlIHgpCnsKICByZWdpc3RlciBs b25nIGRvdWJsZSByZXR2YWw7CiAgYXNtKCJmbGRsbjJcbiIgIglmeGNoXG4iICIJZmxkMVxuIiAi CWZhZGRwICUlc3QoMSlcbiIgIglmeWwyeCI6ICI9dCIocmV0dmFsKTogIjAiKHgpKTsKICByZXR1 cm4gcmV0dmFsOwp9CgoKCgoKCgoKZmxvYXQgbG9nMmYoZmxvYXQgeCkKewogIHJlZ2lzdGVyIGZs b2F0IHJldHZhbDsKICBhc20oImZsZDFcbiIgIglmeGNoXG4iICIJZnlsMngiOiAiPXQiKHJldHZh bCk6ICIwIih4KSk7CiAgcmV0dXJuIHJldHZhbDsKfQoKZG91YmxlIGxvZzIoZG91YmxlIHgpCnsK ICByZWdpc3RlciBkb3VibGUgcmV0dmFsOwogIGFzbSgiZmxkMVxuIiAiCWZ4Y2hcbiIgIglmeWwy eCI6ICI9dCIocmV0dmFsKTogIjAiKHgpKTsKICByZXR1cm4gcmV0dmFsOwp9Cgpsb25nIGRvdWJs ZSBsb2cybChsb25nIGRvdWJsZSB4KQp7CiAgcmVnaXN0ZXIgbG9uZyBkb3VibGUgcmV0dmFsOwog IGFzbSgiZmxkMVxuIiAiCWZ4Y2hcbiIgIglmeWwyeCI6ICI9dCIocmV0dmFsKTogIjAiKHgpKTsK ICByZXR1cm4gcmV0dmFsOwp9CgoKCgoKCgoKZmxvYXQgbG9nYmYoZmxvYXQgeCkKewogIHJlZ2lz dGVyIGZsb2F0IHJldDsKICBhc20oImZ4dHJhY3RcbiIgIglmc3RwCSUwIjogIj10IihyZXQpIDog IjAiKHgpIDogInN0KDEpIik7CiAgcmV0dXJuIHJldDsKfQoKZG91YmxlIGxvZ2IoZG91YmxlIHgp CnsKICByZWdpc3RlciBkb3VibGUgcmV0OwogIGFzbSgiZnh0cmFjdFxuIiAiCWZzdHAJJTAiOiAi PXQiKHJldCkgOiAiMCIoeCkgOiAic3QoMSkiKTsKICByZXR1cm4gcmV0Owp9Cgpsb25nIGRvdWJs ZSBsb2dibChsb25nIGRvdWJsZSB4KQp7CiAgcmVnaXN0ZXIgbG9uZyBkb3VibGUgcmV0OwogIGFz bSgiZnh0cmFjdFxuIiAiCWZzdHAJJTAiOiAiPXQiKHJldCkgOiAiMCIoeCkgOiAic3QoMSkiKTsK ICByZXR1cm4gcmV0Owp9CgoKCgoKCgoKbG9uZyBpbnQgbHJpbnRmKGZsb2F0IHgpCnsKICBsb25n IGludCByZXQ7CiAgYXNtKCJmaXN0cGwJJTBcbiIgIglmd2FpdCIgOiAiPW0iKHJldCk6ICJ0Iih4 KSA6ICJzdCIpOwogIHJldHVybiByZXQ7Cn0KCmxvbmcgaW50IGxyaW50KGRvdWJsZSB4KQp7CiAg bG9uZyBpbnQgcmV0OwogIGFzbSgiZmlzdHBsCSUwXG4iICIJZndhaXQiIDogIj1tIihyZXQpOiAi dCIoeCkgOiAic3QiKTsKICByZXR1cm4gcmV0Owp9Cgpsb25nIGludCBscmludGwobG9uZyBkb3Vi bGUgeCkKewogIGxvbmcgaW50IHJldDsKICBhc20oImZpc3RwbAklMFxuIiAiCWZ3YWl0IiA6ICI9 bSIocmV0KTogInQiKHgpIDogInN0Iik7CiAgcmV0dXJuIHJldDsKfQoKCgoKCgpmbG9hdCByaW50 ZihmbG9hdCB4KQp7CiAgcmVnaXN0ZXIgZmxvYXQgcmV0OwogIGFzbSgiZnJuZGludCI6ICI9dCIo cmV0KSA6ICIwIih4KSk7CiAgcmV0dXJuIHJldDsKfQoKZG91YmxlIHJpbnQoZG91YmxlIHgpCnsK ICByZWdpc3RlciBkb3VibGUgcmV0OwogIGFzbSgiZnJuZGludCI6ICI9dCIocmV0KSA6ICIwIih4 KSk7CiAgcmV0dXJuIHJldDsKfQoKbG9uZyBkb3VibGUgcmludGwobG9uZyBkb3VibGUgeCkKewog IHJlZ2lzdGVyIGxvbmcgZG91YmxlIHJldDsKICBhc20oImZybmRpbnQiOiAiPXQiKHJldCkgOiAi MCIoeCkpOwogIHJldHVybiByZXQ7Cn0KCgoKCgoKCgpmbG9hdCBzY2FsYm5mKGZsb2F0IHgsaW50 IG4pCnsKICByZWdpc3RlciBmbG9hdCByZXQ7CiAgYXNtKCJmc2NhbGUiIDogIj10IihyZXQpIDog IjAiKHgpLCAidSIoKGZsb2F0KW4pOiAic3QiKTsKICByZXR1cm4gcmV0Owp9Cgpkb3VibGUgc2Nh bGJuKGRvdWJsZSB4LGludCBuKQp7CiAgcmVnaXN0ZXIgZG91YmxlIHJldDsKICBhc20oImZzY2Fs ZSIgOiAiPXQiKHJldCkgOiAiMCIoeCksICJ1IigoZG91YmxlKW4pOiAic3QiKTsKICByZXR1cm4g cmV0Owp9Cgpsb25nIGRvdWJsZSBzY2FsYm5sKGxvbmcgZG91YmxlIHgsaW50IG4pCnsKICByZWdp c3RlciBsb25nIGRvdWJsZSByZXQ7CiAgYXNtKCJmc2NhbGUiIDogIj10IihyZXQpIDogIjAiKHgp LCAidSIoKGxvbmcgZG91YmxlKW4pOiAic3QiKTsKICByZXR1cm4gcmV0Owp9CgoKCgoKCmZsb2F0 IHNpZ25pZmljYW5kZihmbG9hdCB4KQp7CiAgZmxvYXQgcmV0OwogIGFzbSgiZnh0cmFjdFxuIiAi CWZzdHAJJSVzdCgxKSI6ICI9dCIocmV0KSA6ICIwIih4KSk7CiAgcmV0dXJuIHJldDsKfQoKZG91 YmxlIHNpZ25pZmljYW5kKGRvdWJsZSB4KQp7CiAgZG91YmxlIHJldDsKICBhc20oImZ4dHJhY3Rc biIgIglmc3RwCSUlc3QoMSkiOiAiPXQiKHJldCkgOiAiMCIoeCkpOwogIHJldHVybiByZXQ7Cn0K CmxvbmcgZG91YmxlIHNpZ25pZmljYW5kbChsb25nIGRvdWJsZSB4KQp7CiAgbG9uZyBkb3VibGUg cmV0OwogIGFzbSgiZnh0cmFjdFxuIiAiCWZzdHAJJSVzdCgxKSI6ICI9dCIocmV0KSA6ICIwIih4 KSk7CiAgcmV0dXJuIHJldDsKfQoKIyAxMTU2ICJsaWJtLmMiCnZvaWQgc2luY29zZihmbG9hdCB4 LGZsb2F0ICpzaW5wdHIsZmxvYXQgKmNvc3B0cikKewogIHsgcmVnaXN0ZXIgbG9uZyBkb3VibGUg c3YsY3Y7IGFzbSgiZnNpbmNvcyI6Ij10IihjdiksIj11Iihzdik6IjAiKHgpOiJzdCIsInN0KDEp Iik7ICpjb3NwdHIgPSBjdjsgKnNpbnB0ciA9IHN2O307Cn0KCnZvaWQgc2luY29zKGRvdWJsZSB4 LGRvdWJsZSAqc2lucHRyLGRvdWJsZSAqY29zcHRyKQp7CiAgeyByZWdpc3RlciBsb25nIGRvdWJs ZSBzdixjdjsgYXNtKCJmc2luY29zIjoiPXQiKGN2KSwiPXUiKHN2KToiMCIoeCk6InN0Iiwic3Qo MSkiKTsgKmNvc3B0ciA9IGN2OyAqc2lucHRyID0gc3Y7fTsKfQoKdm9pZCBzaW5jb3NsKGxvbmcg ZG91YmxlIHgsbG9uZyBkb3VibGUgKnNpbnB0cixsb25nIGRvdWJsZSAqY29zcHRyKQp7CiAgeyBy ZWdpc3RlciBsb25nIGRvdWJsZSBzdixjdjsgYXNtKCJmc2luY29zIjoiPXQiKGN2KSwiPXUiKHN2 KToiMCIoeCk6InN0Iiwic3QoMSkiKTsgKmNvc3B0ciA9IGN2OyAqc2lucHRyID0gc3Y7fTsKfQoK IyAxMTgyICJsaWJtLmMiCmZsb2F0IHRydW5jZihmbG9hdCB4KQp7CiAgcmVnaXN0ZXIgZmxvYXQg cmV0OwogIGludCBpMSxpMjsKICBhc20oImZzdGN3CSUwIjoiPW0iKGkxKTo6Im1lbW9yeSIpOyBp MiA9IGkxIHwgMHhjMDA7IGFzbSgiZmxkY3cJJTNcbiIgIglmcm5kaW50XG4iICIJZmxkY3cJJTIi OiAiPXQiKHJldCkgOiAiMCIoeCksICJtIihpMSksICJtIihpMikpOwogIHJldHVybiByZXQ7Cn0K CmRvdWJsZSB0cnVuYyhkb3VibGUgeCkKewogIHJlZ2lzdGVyIGRvdWJsZSByZXQ7CiAgaW50IGkx LGkyOwogIGFzbSgiZnN0Y3cJJTAiOiI9bSIoaTEpOjoibWVtb3J5Iik7IGkyID0gaTEgfCAweGMw MDsgYXNtKCJmbGRjdwklM1xuIiAiCWZybmRpbnRcbiIgIglmbGRjdwklMiI6ICI9dCIocmV0KSA6 ICIwIih4KSwgIm0iKGkxKSwgIm0iKGkyKSk7CiAgcmV0dXJuIHJldDsKfQoKbG9uZyBkb3VibGUg dHJ1bmNsKGxvbmcgZG91YmxlIHgpCnsKICByZWdpc3RlciBsb25nIGRvdWJsZSByZXQ7CiAgaW50 IGkxLGkyOwogIGFzbSgiZnN0Y3cJJTAiOiI9bSIoaTEpOjoibWVtb3J5Iik7IGkyID0gaTEgfCAw eGMwMDsgYXNtKCJmbGRjdwklM1xuIiAiCWZybmRpbnRcbiIgIglmbGRjdwklMiI6ICI9dCIocmV0 KSA6ICIwIih4KSwgIm0iKGkxKSwgIm0iKGkyKSk7CiAgcmV0dXJuIHJldDsKfQoKCgoKCgpmbG9h dCBmYWJzZihmbG9hdCB4KQp7CiAgcmVnaXN0ZXIgZmxvYXQgcmV0OwogIGFzbSgiZmFicyIgOiAi PXQiKHJldCk6ICIwIih4KSk7CiAgcmV0dXJuIHJldDsKfQoKZG91YmxlIGZhYnMoZG91YmxlIHgp CnsKICByZWdpc3RlciBkb3VibGUgcmV0OwogIGFzbSgiZmFicyIgOiAiPXQiKHJldCk6ICIwIih4 KSk7CiAgcmV0dXJuIHJldDsKfQoKbG9uZyBkb3VibGUgZmFic2wobG9uZyBkb3VibGUgeCkKewog IHJlZ2lzdGVyIGxvbmcgZG91YmxlIHJldDsKICBhc20oImZhYnMiIDogIj10IihyZXQpOiAiMCIo eCkpOwogIHJldHVybiByZXQ7Cn0KCnN0YXRpYyB2b2lkIGZyYWMoIHZvaWQgKQp7CiAgc2hvcnQg Y3cxLGN3MjsKICAgYXNtKCJmbnN0Y3cJJTBcbiIKICAgICAgIglmd2FpdCIKICAgICAgOiI9bSIo Y3cxKSk7CiAgY3cyID0gKGN3MSAmIDB4ZjNmZikgfCAweDA0MDA7CiAgIGFzbSgiZmxkY3cJJTFc biIKICAgICAgIglmbGQJJSVzdFxuIgogICAgICAiCWZybmRpbnRcbiIKICAgICAgIglmbGRjdwkl MFxuIgogICAgICAiCWZ4Y2gJJSVzdCgxKVxuIgogICAgICAiCWZzdWIJJSVzdCgxKSwgJSVzdCIK ICAgICAgOjoibSIoY3cxKSwibSIoY3cyKToibWVtb3J5Iik7Cn0KCnN0YXRpYyB2b2lkIExwb3cy KCB2b2lkICkKewogIGRvdWJsZSBvbmU7CiAgIGFzbSgiZmxkMSI6Ij10IihvbmUpOjoic3QoMSki KTsKICAgYXNtKCJjYWxsCWZyYWNcbiIKICAgICAgIglmMnhtMVxuIgogICAgICAiCWZhZGRsCSUw XG4iCiAgICAgICIJZnNjYWxlXG4iCiAgICAgICIJZnN0cAklJXN0KDEpXG4iCiAgICAgIDo6ICJt IihvbmUpOiAibWVtb3J5Iik7Cn0KCiMgMTMyNCAibGlibS5jIgpmbG9hdCBwb3dmKGZsb2F0IHgs IGZsb2F0IHkpCnsKICByZWdpc3RlciBmbG9hdCByZXR2YWw7CiAgaWYoeCA9PSAoZmxvYXQpMTAu KSB7IGRvdWJsZSBvbmU7IGFzbSgiZmxkMSI6Ij10IihvbmUpOjoic3QoMSkiKTsgYXNtKCJmbGRs MnRcbiIgIglmbXVscFxuIiAiCWNhbGwJZnJhY1xuIiAiCWYyeG0xXG4iICIJZmFkZGwJJTJcbiIg Iglmc2NhbGVcbiIgIglmc3RwCSUlc3QoMSlcbiIgOiI9dCIocmV0dmFsKSA6IjAiKHkpLCAibSIo b25lKSk7fQogIGVsc2UgeyBpbnQgeWludDsgYXNtKCJmdHN0XG4iICIJZm5zdHN3CSUlYXhcbiIg IglzYWhmXG4iICIJamJlCTFmXG4iICIJZnlsMnhcbiIgIgljYWxsCUxwb3cyXG4iICIJam1wCTZm XG4iIjE6CWpiCTRmXG4iICIJZnN0cAklMFxuIiAiCWZ0c3RcbiIgIglmbnN0c3cJJSVheFxuIiAi CXNhaGZcbiIgIglqYQkzZlxuIiAiCWpiCTJmXG4iICIJZnN0cAklMFxuIiAiCWZsZDFcbiIgIglm Y2hzXG4iIjI6CWZzcXJ0XG4iICIJam1wICAgICA2ZlxuIiIzOglmc3RwCSUwXG4iICIJZmxkelxu IiAiCWptcAk2ZlxuIiI0OglmYWJzXG4iICIJZnhjaAklMlxuIiAiCWNhbGwJZnJhY1xuIiAiCWZ0 c3RcbiIgIglmbnN0c3cJJSVheFxuIiAiCWZzdHAJJTBcbiIgIglzYWhmXG4iICIJamUJNWZcbiIg Iglmc3RwCSUwXG4iICIJZmNoc1xuIiAiCWptcAkyYlxuIiI1OglmaXN0bAklM1xuIiAiCWZ4Y2gJ JTJcbiIgIglmeWwyeFxuIiAiCWNhbGwJTHBvdzJcbiIgIglhbmRsCSQxLCAlM1xuIiAiCWp6CTZm XG4iICIJZmNoc1xuIiI2OiIgOiI9dCIocmV0dmFsKSA6IjAiKHgpLCJ1Iih5KSwibSIoeWludCkg OiJlYXgiLCJtZW1vcnkiLCJzdCgxKSIpO30KICByZXR1cm4gcmV0dmFsOwp9Cgpkb3VibGUgcG93 KGRvdWJsZSB4LCBkb3VibGUgeSkKewogIHJlZ2lzdGVyIGRvdWJsZSByZXR2YWw7CiAgaWYoeCA9 PSAoZG91YmxlKTEwLikgeyBkb3VibGUgb25lOyBhc20oImZsZDEiOiI9dCIob25lKTo6InN0KDEp Iik7IGFzbSgiZmxkbDJ0XG4iICIJZm11bHBcbiIgIgljYWxsCWZyYWNcbiIgIglmMnhtMVxuIiAi CWZhZGRsCSUyXG4iICIJZnNjYWxlXG4iICIJZnN0cAklJXN0KDEpXG4iIDoiPXQiKHJldHZhbCkg OiIwIih5KSwgIm0iKG9uZSkpO30KICBlbHNlIHsgaW50IHlpbnQ7IGFzbSgiZnRzdFxuIiAiCWZu c3RzdwklJWF4XG4iICIJc2FoZlxuIiAiCWpiZQkxZlxuIiAiCWZ5bDJ4XG4iICIJY2FsbAlMcG93 MlxuIiAiCWptcAk2ZlxuIiIxOglqYgk0ZlxuIiAiCWZzdHAJJTBcbiIgIglmdHN0XG4iICIJZm5z dHN3CSUlYXhcbiIgIglzYWhmXG4iICIJamEJM2ZcbiIgIglqYgkyZlxuIiAiCWZzdHAJJTBcbiIg IglmbGQxXG4iICIJZmNoc1xuIiIyOglmc3FydFxuIiAiCWptcCAgICAgNmZcbiIiMzoJZnN0cAkl MFxuIiAiCWZsZHpcbiIgIglqbXAJNmZcbiIiNDoJZmFic1xuIiAiCWZ4Y2gJJTJcbiIgIgljYWxs CWZyYWNcbiIgIglmdHN0XG4iICIJZm5zdHN3CSUlYXhcbiIgIglmc3RwCSUwXG4iICIJc2FoZlxu IiAiCWplCTVmXG4iICIJZnN0cAklMFxuIiAiCWZjaHNcbiIgIglqbXAJMmJcbiIiNToJZmlzdGwJ JTNcbiIgIglmeGNoCSUyXG4iICIJZnlsMnhcbiIgIgljYWxsCUxwb3cyXG4iICIJYW5kbAkkMSwg JTNcbiIgIglqegk2ZlxuIiAiCWZjaHNcbiIiNjoiIDoiPXQiKHJldHZhbCkgOiIwIih4KSwidSIo eSksIm0iKHlpbnQpIDoiZWF4IiwibWVtb3J5Iiwic3QoMSkiKTt9CiAgcmV0dXJuIHJldHZhbDsK fQoKbG9uZyBkb3VibGUgcG93bChsb25nIGRvdWJsZSB4LCBsb25nIGRvdWJsZSB5KQp7CiAgcmVn aXN0ZXIgbG9uZyBkb3VibGUgcmV0dmFsOwogIGlmKHggPT0gKGxvbmcgZG91YmxlKTEwLikgeyBk b3VibGUgb25lOyBhc20oImZsZDEiOiI9dCIob25lKTo6InN0KDEpIik7IGFzbSgiZmxkbDJ0XG4i ICIJZm11bHBcbiIgIgljYWxsCWZyYWNcbiIgIglmMnhtMVxuIiAiCWZhZGRsCSUyXG4iICIJZnNj YWxlXG4iICIJZnN0cAklJXN0KDEpXG4iIDoiPXQiKHJldHZhbCkgOiIwIih5KSwgIm0iKG9uZSkp O30KICBlbHNlIHsgaW50IHlpbnQ7IGFzbSgiZnRzdFxuIiAiCWZuc3RzdwklJWF4XG4iICIJc2Fo ZlxuIiAiCWpiZQkxZlxuIiAiCWZ5bDJ4XG4iICIJY2FsbAlMcG93MlxuIiAiCWptcAk2ZlxuIiIx OglqYgk0ZlxuIiAiCWZzdHAJJTBcbiIgIglmdHN0XG4iICIJZm5zdHN3CSUlYXhcbiIgIglzYWhm XG4iICIJamEJM2ZcbiIgIglqYgkyZlxuIiAiCWZzdHAJJTBcbiIgIglmbGQxXG4iICIJZmNoc1xu IiIyOglmc3FydFxuIiAiCWptcCAgICAgNmZcbiIiMzoJZnN0cAklMFxuIiAiCWZsZHpcbiIgIglq bXAJNmZcbiIiNDoJZmFic1xuIiAiCWZ4Y2gJJTJcbiIgIgljYWxsCWZyYWNcbiIgIglmdHN0XG4i ICIJZm5zdHN3CSUlYXhcbiIgIglmc3RwCSUwXG4iICIJc2FoZlxuIiAiCWplCTVmXG4iICIJZnN0 cAklMFxuIiAiCWZjaHNcbiIgIglqbXAJMmJcbiIiNToJZmlzdGwJJTNcbiIgIglmeGNoCSUyXG4i ICIJZnlsMnhcbiIgIgljYWxsCUxwb3cyXG4iICIJYW5kbAkkMSwgJTNcbiIgIglqegk2ZlxuIiAi CWZjaHNcbiIiNjoiIDoiPXQiKHJldHZhbCkgOiIwIih4KSwidSIoeSksIm0iKHlpbnQpIDoiZWF4 IiwibWVtb3J5Iiwic3QoMSkiKTt9CiAgcmV0dXJuIHJldHZhbDsKfQoKZmxvYXQgcG93MTBmKGZs b2F0IHkpCnsKICByZWdpc3RlciBmbG9hdCByZXR2YWw7CiAgeyBkb3VibGUgb25lOyBhc20oImZs ZDEiOiI9dCIob25lKTo6InN0KDEpIik7IGFzbSgiZmxkbDJ0XG4iICIJZm11bHBcbiIgIgljYWxs CWZyYWNcbiIgIglmMnhtMVxuIiAiCWZhZGRsCSUyXG4iICIJZnNjYWxlXG4iICIJZnN0cAklJXN0 KDEpXG4iIDoiPXQiKHJldHZhbCkgOiIwIih5KSwgIm0iKG9uZSkpO30KICByZXR1cm4gcmV0dmFs Owp9Cgpkb3VibGUgcG93MTAoZG91YmxlIHkpCnsKICByZWdpc3RlciBkb3VibGUgcmV0dmFsOwog IHsgZG91YmxlIG9uZTsgYXNtKCJmbGQxIjoiPXQiKG9uZSk6OiJzdCgxKSIpOyBhc20oImZsZGwy dFxuIiAiCWZtdWxwXG4iICIJY2FsbAlmcmFjXG4iICIJZjJ4bTFcbiIgIglmYWRkbAklMlxuIiAi CWZzY2FsZVxuIiAiCWZzdHAJJSVzdCgxKVxuIiA6Ij10IihyZXR2YWwpIDoiMCIoeSksICJtIihv bmUpKTt9CiAgcmV0dXJuIHJldHZhbDsKfQoKbG9uZyBkb3VibGUgcG93MTBsKGxvbmcgZG91Ymxl IHkpCnsKICByZWdpc3RlciBsb25nIGRvdWJsZSByZXR2YWw7CiAgeyBkb3VibGUgb25lOyBhc20o ImZsZDEiOiI9dCIob25lKTo6InN0KDEpIik7IGFzbSgiZmxkbDJ0XG4iICIJZm11bHBcbiIgIglj YWxsCWZyYWNcbiIgIglmMnhtMVxuIiAiCWZhZGRsCSUyXG4iICIJZnNjYWxlXG4iICIJZnN0cAkl JXN0KDEpXG4iIDoiPXQiKHJldHZhbCkgOiIwIih5KSwgIm0iKG9uZSkpO30KICByZXR1cm4gcmV0 dmFsOwp9CgoKCgoKZmxvYXQgY2JydGYgKGZsb2F0IHgpCnsKICBpZiAoeCA+PSAwKQogICAgcmV0 dXJuIHBvd2YgKHgsIDEuMCAvIDMuMCk7CiAgZWxzZQogICAgcmV0dXJuIC1wb3dmICgteCwgMS4w IC8gMy4wKTsKfQoKZG91YmxlIGNicnQgKGRvdWJsZSB4KQp7CiAgaWYgKHggPj0gMCkKICAgIHJl dHVybiBwb3cgKHgsIDEuMCAvIDMuMCk7CiAgZWxzZQogICAgcmV0dXJuIC1wb3cgKC14LCAxLjAg LyAzLjApOwp9Cgpsb25nIGRvdWJsZSBjYnJ0bCAobG9uZyBkb3VibGUgeCkKewogIGlmICh4ID49 IDApCiAgICByZXR1cm4gcG93bCAoeCwgMS4wIC8gMy4wKTsKICBlbHNlCiAgICByZXR1cm4gLXBv d2wgKC14LCAxLjAgLyAzLjApOwp9CgpmbG9hdCBhY29zaGYoZmxvYXQgeCkKewoKICBmbG9hdCBy ZXR2YWw7CiAgYXNtKCJmc3FydCIgOiAiPXQiKHJldHZhbCk6ICIwIih4KngtMSkpOwogIGFzbSgi ZmxkbG4yXG4iICIJZnhjaFxuIiAiCWZ5bDJ4IjogIj10IihyZXR2YWwpOiAiMCIoeCArIHJldHZh bCkpOwogIHJldHVybiByZXR2YWw7Cn0KCmRvdWJsZSBhY29zaChkb3VibGUgeCkKewoKICBkb3Vi bGUgcmV0dmFsOwogIGFzbSgiZnNxcnQiIDogIj10IihyZXR2YWwpOiAiMCIoeCp4LTEpKTsKICBh c20oImZsZGxuMlxuIiAiCWZ4Y2hcbiIgIglmeWwyeCI6ICI9dCIocmV0dmFsKTogIjAiKHggKyBy ZXR2YWwpKTsKICByZXR1cm4gcmV0dmFsOwp9Cgpsb25nIGRvdWJsZSBhY29zaGwobG9uZyBkb3Vi bGUgeCkKewoKICBsb25nIGRvdWJsZSByZXR2YWw7CiAgYXNtKCJmc3FydCIgOiAiPXQiKHJldHZh bCk6ICIwIih4KngtMSkpOwogIGFzbSgiZmxkbG4yXG4iICIJZnhjaFxuIiAiCWZ5bDJ4IjogIj10 IihyZXR2YWwpOiAiMCIoeCArIHJldHZhbCkpOwogIHJldHVybiByZXR2YWw7Cn0KCmZsb2F0IGFz aW5oZihmbG9hdCB4KQp7CgogIGZsb2F0IHJldHZhbDsKICBhc20oImZzcXJ0IiA6ICI9dCIocmV0 dmFsKTogIjAiKHgqeCsxKSk7CiAgaWYoeD4wKSBhc20oImZsZGxuMlxuIiAiCWZ4Y2hcbiIgIglm eWwyeCI6ICI9dCIocmV0dmFsKTogIjAiKHggKyByZXR2YWwpKTsKICBlbHNlCiAgewogICAgYXNt KCJmbGRsbjJcbiIgIglmeGNoXG4iICIJZnlsMngiOiAiPXQiKHJldHZhbCk6ICIwIihyZXR2YWwt eCkpOwogICAgcmV0dmFsID0gLXJldHZhbDsKICB9CiAgcmV0dXJuIHJldHZhbDsKfQoKZG91Ymxl IGFzaW5oKGRvdWJsZSB4KQp7CgogIGRvdWJsZSByZXR2YWw7CiAgYXNtKCJmc3FydCIgOiAiPXQi KHJldHZhbCk6ICIwIih4KngrMSkpOwogIGlmKHg+MCkgYXNtKCJmbGRsbjJcbiIgIglmeGNoXG4i ICIJZnlsMngiOiAiPXQiKHJldHZhbCk6ICIwIih4ICsgcmV0dmFsKSk7CiAgZWxzZQogIHsKICAg IGFzbSgiZmxkbG4yXG4iICIJZnhjaFxuIiAiCWZ5bDJ4IjogIj10IihyZXR2YWwpOiAiMCIocmV0 dmFsLXgpKTsKICAgIHJldHZhbCA9IC1yZXR2YWw7CiAgfQogIHJldHVybiByZXR2YWw7Cn0KCmxv bmcgZG91YmxlIGFzaW5obChsb25nIGRvdWJsZSB4KQp7CgogIGxvbmcgZG91YmxlIHJldHZhbDsK ICBhc20oImZzcXJ0IiA6ICI9dCIocmV0dmFsKTogIjAiKHgqeCsxKSk7CiAgaWYoeD4wKSBhc20o ImZsZGxuMlxuIiAiCWZ4Y2hcbiIgIglmeWwyeCI6ICI9dCIocmV0dmFsKTogIjAiKHggKyByZXR2 YWwpKTsKICBlbHNlCiAgewogICAgYXNtKCJmbGRsbjJcbiIgIglmeGNoXG4iICIJZnlsMngiOiAi PXQiKHJldHZhbCk6ICIwIihyZXR2YWwteCkpOwogICAgcmV0dmFsID0gLXJldHZhbDsKICB9CiAg cmV0dXJuIHJldHZhbDsKfQoKZmxvYXQgYXRhbmhmKGZsb2F0IHgpCnsKCiAgZmxvYXQgcmV0dmFs OwogIGFzbSgiZmxkbG4yXG4iICIJZnhjaFxuIiAiCWZ5bDJ4IjogIj10IihyZXR2YWwpOiAiMCIo KDEreCkvKDEteCkpKTsKICByZXR1cm4gcmV0dmFsLzIuOwp9Cgpkb3VibGUgYXRhbmgoZG91Ymxl IHgpCnsKCiAgZG91YmxlIHJldHZhbDsKICBhc20oImZsZGxuMlxuIiAiCWZ4Y2hcbiIgIglmeWwy eCI6ICI9dCIocmV0dmFsKTogIjAiKCgxK3gpLygxLXgpKSk7CiAgcmV0dXJuIHJldHZhbC8yLjsK fQoKbG9uZyBkb3VibGUgYXRhbmhsKGxvbmcgZG91YmxlIHgpCnsKCiAgbG9uZyBkb3VibGUgcmV0 dmFsOwogIGFzbSgiZmxkbG4yXG4iICIJZnhjaFxuIiAiCWZ5bDJ4IjogIj10IihyZXR2YWwpOiAi MCIoKDEreCkvKDEteCkpKTsKICByZXR1cm4gcmV0dmFsLzIuOwp9CgpmbG9hdCBjb3NoZihmbG9h dCB4KQp7CiAgZmxvYXQgcmV0dmFsOwogIGFzbSgiZmFicyIgOiAiPXQiKHJldHZhbCk6ICIwIih4 KSk7CiAgYXNtKCJmbGRsMmVcbiIgIglmeGNoCSUlc3QoMSlcbiIgIglmbXVscFxuIiAiCWZzdAkl JXN0KDEpXG4iICIJZnJuZGludFxuIiAiCWZzdAklJXN0KDIpXG4iICIJZnN1YnJwXG4iICIJZjJ4 bTFcbiIgIglmbGQxXG4iICIJZmFkZHBcbiIgIglmc2NhbGVcbiIgIglmZnJlZQklJXN0KDEpXG4i OiAiPXQiKHJldHZhbCk6ICIwIihyZXR2YWwpOiAic3QoMikiKTsKICByZXR1cm4gKHJldHZhbCAr IDEuMC9yZXR2YWwpIC8gMi4wOwp9Cgpkb3VibGUgY29zaChkb3VibGUgeCkKewogIGRvdWJsZSBy ZXR2YWw7CiAgYXNtKCJmYWJzIiA6ICI9dCIocmV0dmFsKTogIjAiKHgpKTsKICBhc20oImZsZGwy ZVxuIiAiCWZ4Y2gJJSVzdCgxKVxuIiAiCWZtdWxwXG4iICIJZnN0CSUlc3QoMSlcbiIgIglmcm5k aW50XG4iICIJZnN0CSUlc3QoMilcbiIgIglmc3VicnBcbiIgIglmMnhtMVxuIiAiCWZsZDFcbiIg IglmYWRkcFxuIiAiCWZzY2FsZVxuIiAiCWZmcmVlCSUlc3QoMSlcbiI6ICI9dCIocmV0dmFsKTog IjAiKHJldHZhbCk6ICJzdCgyKSIpOwogIHJldHVybiAocmV0dmFsICsgMS4wL3JldHZhbCkgLyAy LjA7Cn0KCmxvbmcgZG91YmxlIGNvc2hsKGxvbmcgZG91YmxlIHgpCnsKICBsb25nIGRvdWJsZSBy ZXR2YWw7CiAgYXNtKCJmYWJzIiA6ICI9dCIocmV0dmFsKTogIjAiKHgpKTsKICBhc20oImZsZGwy ZVxuIiAiCWZ4Y2gJJSVzdCgxKVxuIiAiCWZtdWxwXG4iICIJZnN0CSUlc3QoMSlcbiIgIglmcm5k aW50XG4iICIJZnN0CSUlc3QoMilcbiIgIglmc3VicnBcbiIgIglmMnhtMVxuIiAiCWZsZDFcbiIg IglmYWRkcFxuIiAiCWZzY2FsZVxuIiAiCWZmcmVlCSUlc3QoMSlcbiI6ICI9dCIocmV0dmFsKTog IjAiKHJldHZhbCk6ICJzdCgyKSIpOwogIHJldHVybiAocmV0dmFsICsgMS4wL3JldHZhbCkgLyAy LjA7Cn0KCmZsb2F0IHNpbmhmKGZsb2F0IHgpCnsKIGlmKHggPj0gMC4wKQogewogICBmbG9hdCBl cG9zOwogICBhc20oImZsZGwyZVxuIiAiCWZ4Y2gJJSVzdCgxKVxuIiAiCWZtdWxwXG4iICIJZnN0 CSUlc3QoMSlcbiIgIglmcm5kaW50XG4iICIJZnN0CSUlc3QoMilcbiIgIglmc3VicnBcbiIgIglm MnhtMVxuIiAiCWZsZDFcbiIgIglmYWRkcFxuIiAiCWZzY2FsZVxuIiAiCWZmcmVlCSUlc3QoMSlc biI6ICI9dCIoZXBvcyk6ICIwIih4KTogInN0KDIpIik7CiAgIHJldHVybiAoZXBvcyAtIDEuMC9l cG9zKSAvIDIuMDsKIH0KIGVsc2UKIHsKICAgZmxvYXQgZW5lZzsKICAgYXNtKCJmbGRsMmVcbiIg IglmeGNoCSUlc3QoMSlcbiIgIglmbXVscFxuIiAiCWZzdAklJXN0KDEpXG4iICIJZnJuZGludFxu IiAiCWZzdAklJXN0KDIpXG4iICIJZnN1YnJwXG4iICIJZjJ4bTFcbiIgIglmbGQxXG4iICIJZmFk ZHBcbiIgIglmc2NhbGVcbiIgIglmZnJlZQklJXN0KDEpXG4iOiAiPXQiKGVuZWcpOiAiMCIoLXgp OiAic3QoMikiKTsKICAgcmV0dXJuICgxLjAvZW5lZyAtIGVuZWcpIC8gMi4wOwogfQp9Cgpkb3Vi bGUgc2luaChkb3VibGUgeCkKewogaWYoeCA+PSAwLjApCiB7CiAgIGRvdWJsZSBlcG9zOwogICBh c20oImZsZGwyZVxuIiAiCWZ4Y2gJJSVzdCgxKVxuIiAiCWZtdWxwXG4iICIJZnN0CSUlc3QoMSlc biIgIglmcm5kaW50XG4iICIJZnN0CSUlc3QoMilcbiIgIglmc3VicnBcbiIgIglmMnhtMVxuIiAi CWZsZDFcbiIgIglmYWRkcFxuIiAiCWZzY2FsZVxuIiAiCWZmcmVlCSUlc3QoMSlcbiI6ICI9dCIo ZXBvcyk6ICIwIih4KTogInN0KDIpIik7CiAgIHJldHVybiAoZXBvcyAtIDEuMC9lcG9zKSAvIDIu MDsKIH0KIGVsc2UKIHsKICAgZG91YmxlIGVuZWc7CiAgIGFzbSgiZmxkbDJlXG4iICIJZnhjaAkl JXN0KDEpXG4iICIJZm11bHBcbiIgIglmc3QJJSVzdCgxKVxuIiAiCWZybmRpbnRcbiIgIglmc3QJ JSVzdCgyKVxuIiAiCWZzdWJycFxuIiAiCWYyeG0xXG4iICIJZmxkMVxuIiAiCWZhZGRwXG4iICIJ ZnNjYWxlXG4iICIJZmZyZWUJJSVzdCgxKVxuIjogIj10IihlbmVnKTogIjAiKC14KTogInN0KDIp Iik7CiAgIHJldHVybiAoMS4wL2VuZWcgLSBlbmVnKSAvIDIuMDsKIH0KfQoKbG9uZyBkb3VibGUg c2luaGwobG9uZyBkb3VibGUgeCkKewogaWYoeCA+PSAwLjApCiB7CiAgIGxvbmcgZG91YmxlIGVw b3M7CiAgIGFzbSgiZmxkbDJlXG4iICIJZnhjaAklJXN0KDEpXG4iICIJZm11bHBcbiIgIglmc3QJ JSVzdCgxKVxuIiAiCWZybmRpbnRcbiIgIglmc3QJJSVzdCgyKVxuIiAiCWZzdWJycFxuIiAiCWYy eG0xXG4iICIJZmxkMVxuIiAiCWZhZGRwXG4iICIJZnNjYWxlXG4iICIJZmZyZWUJJSVzdCgxKVxu IjogIj10IihlcG9zKTogIjAiKHgpOiAic3QoMikiKTsKICAgcmV0dXJuIChlcG9zIC0gMS4wL2Vw b3MpIC8gMi4wOwogfQogZWxzZQogewogICBsb25nIGRvdWJsZSBlbmVnOwogICBhc20oImZsZGwy ZVxuIiAiCWZ4Y2gJJSVzdCgxKVxuIiAiCWZtdWxwXG4iICIJZnN0CSUlc3QoMSlcbiIgIglmcm5k aW50XG4iICIJZnN0CSUlc3QoMilcbiIgIglmc3VicnBcbiIgIglmMnhtMVxuIiAiCWZsZDFcbiIg IglmYWRkcFxuIiAiCWZzY2FsZVxuIiAiCWZmcmVlCSUlc3QoMSlcbiI6ICI9dCIoZW5lZyk6ICIw IigteCk6ICJzdCgyKSIpOwogICByZXR1cm4gKDEuMC9lbmVnIC0gZW5lZykgLyAyLjA7CiB9Cn0K CmZsb2F0IHRhbmhmKGZsb2F0IHgpCnsKICBpZiAoeCA+IDUwKQogICAgcmV0dXJuIDE7CiAgZWxz ZSBpZiAoeCA8IC01MCkKICAgIHJldHVybiAtMTsKICBlbHNlCiAgewogICAgZmxvYXQgZWJpZzsK ICAgIGZsb2F0IGVzbWFsbDsKICAgIGFzbSgiZmxkbDJlXG4iICIJZnhjaAklJXN0KDEpXG4iICIJ Zm11bHBcbiIgIglmc3QJJSVzdCgxKVxuIiAiCWZybmRpbnRcbiIgIglmc3QJJSVzdCgyKVxuIiAi CWZzdWJycFxuIiAiCWYyeG0xXG4iICIJZmxkMVxuIiAiCWZhZGRwXG4iICIJZnNjYWxlXG4iICIJ ZmZyZWUJJSVzdCgxKVxuIjogIj10IihlYmlnKTogIjAiKHgpOiAic3QoMikiKTsKICAgIGVzbWFs bCA9IDEuL2ViaWc7CiAgICByZXR1cm4gKGViaWcgLSBlc21hbGwpIC8gKGViaWcgKyBlc21hbGwp OwogIH0KfQoKZG91YmxlIHRhbmgoZG91YmxlIHgpCnsKICBpZiAoeCA+IDUwKQogICAgcmV0dXJu IDE7CiAgZWxzZSBpZiAoeCA8IC01MCkKICAgIHJldHVybiAtMTsKICBlbHNlCiAgewogICAgZG91 YmxlIGViaWc7CiAgICBkb3VibGUgZXNtYWxsOwogICAgYXNtKCJmbGRsMmVcbiIgIglmeGNoCSUl c3QoMSlcbiIgIglmbXVscFxuIiAiCWZzdAklJXN0KDEpXG4iICIJZnJuZGludFxuIiAiCWZzdAkl JXN0KDIpXG4iICIJZnN1YnJwXG4iICIJZjJ4bTFcbiIgIglmbGQxXG4iICIJZmFkZHBcbiIgIglm c2NhbGVcbiIgIglmZnJlZQklJXN0KDEpXG4iOiAiPXQiKGViaWcpOiAiMCIoeCk6ICJzdCgyKSIp OwogICAgZXNtYWxsID0gMS4vZWJpZzsKICAgIHJldHVybiAoZWJpZyAtIGVzbWFsbCkgLyAoZWJp ZyArIGVzbWFsbCk7CiAgfQp9Cgpsb25nIGRvdWJsZSB0YW5obChsb25nIGRvdWJsZSB4KQp7CiAg aWYgKHggPiA1MCkKICAgIHJldHVybiAxOwogIGVsc2UgaWYgKHggPCAtNTApCiAgICByZXR1cm4g LTE7CiAgZWxzZQogIHsKICAgIGxvbmcgZG91YmxlIGViaWc7CiAgICBsb25nIGRvdWJsZSBlc21h bGw7CiAgICBhc20oImZsZGwyZVxuIiAiCWZ4Y2gJJSVzdCgxKVxuIiAiCWZtdWxwXG4iICIJZnN0 CSUlc3QoMSlcbiIgIglmcm5kaW50XG4iICIJZnN0CSUlc3QoMilcbiIgIglmc3VicnBcbiIgIglm MnhtMVxuIiAiCWZsZDFcbiIgIglmYWRkcFxuIiAiCWZzY2FsZVxuIiAiCWZmcmVlCSUlc3QoMSlc biI6ICI9dCIoZWJpZyk6ICIwIih4KTogInN0KDIpIik7CiAgICBlc21hbGwgPSAxLi9lYmlnOwog ICAgcmV0dXJuIChlYmlnIC0gZXNtYWxsKSAvIChlYmlnICsgZXNtYWxsKTsKICB9Cn0K
next reply other threads:[~2001-06-04 23:26 UTC|newest] Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top 2001-06-04 23:26 c.williams [this message] 2001-12-11 22:51 rodrigc 2001-12-11 22:56 rodrigc 2002-03-02 18:46 Craig Rodrigues
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=20010605062342.28254.qmail@sourceware.cygnus.com \ --to=c.williams@swflug.org \ --cc=dl@gazeta.ru \ --cc=gcc-gnats@gcc.gnu.org \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: linkBe sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).