IyBJbnB1dCBpcyBpbiB0aGUgZm9sbG93aW5nIGZvcm1hdCAoYWxsIGl0ZW1zIHdoaXRlLXNwYWNlIHNlcGFyYXRlZCk6CiMKIyBUaGUgZmlyc3QgdHdvIGl0ZW1zIGFyZSAxIG9yIDAgaW5kaWNhdGluZyBpZiB0aGUgd2lsZG1hdCBjYWxsIGlzIGV4cGVjdGVkIHRvCiMgc3VjY2VlZCBhbmQgaWYgZm5tYXRjaCB3b3JrcyB0aGUgc2FtZSB3YXkgYXMgd2lsZG1hdCwgcmVzcGVjdGl2ZWx5LiAgQWZ0ZXIKIyB0aGF0IGlzIGEgdGV4dCBzdHJpbmcgZm9yIHRoZSBtYXRjaCwgYW5kIGEgcGF0dGVybiBzdHJpbmcuICBTdHJpbmdzIGNhbiBiZQojIHF1b3RlZCAoaWYgZGVzaXJlZCkgaW4gZWl0aGVyIGRvdWJsZSBvciBzaW5nbGUgcXVvdGVzLCBhcyB3ZWxsIGFzIGJhY2t0aWNrcy4KIwojIE1BVENIIEZOTUFUQ0hfU0FNRSAidGV4dCB0byBtYXRjaCIgJ3BhdHRlcm4gdG8gdXNlJwoKIyBCYXNpYyB3aWxkbWF0IGZlYXR1cmVzCjEgMSBmb28JCQlmb28KMCAxIGZvbwkJCWJhcgoxIDEgJycJCQkiIgoxIDEgZm9vCQkJPz8/CjAgMSBmb28JCQk/PwoxIDEgZm9vCQkJKgoxIDEgZm9vCQkJZioKMCAxIGZvbwkJCSpmCjEgMSBmb28JCQkqZm9vKgoxIDEgZm9vYmFyCQkqb2IqYSpyKgoxIDEgYWFhYWFhYWJhYmFiYWIJKmFiCjEgMSBmb28qCQlmb29cKgowIDEgZm9vYmFyCQlmb29cKmJhcgoxIDEgZlxvbwkJZlxcb28KMSAxIGJhbGwJCSpbYWxdPwowIDEgdGVuCQkJW3Rlbl0KMSAxIHRlbgkJCSoqWyF0ZV0KMCAxIHRlbgkJCSoqWyF0ZW5dCjEgMSB0ZW4JCQl0W2EtZ11uCjAgMSB0ZW4JCQl0WyFhLWddbgoxIDEgdG9uCQkJdFshYS1nXW4KMSAxIHRvbgkJCXRbXmEtZ11uCjEgMSBhXWIJCQlhW11dYgoxIDEgYS1iCQkJYVtdLV1iCjEgMSBhXWIJCQlhW10tXWIKMCAxIGFhYgkJCWFbXS1dYgoxIDEgYWFiCQkJYVtdYS1dYgoxIDEgXQkJCV0KCiMgRXh0ZW5kZWQgc2xhc2gtbWF0Y2hpbmcgZmVhdHVyZXMKMCAxIGZvby9iYXovYmFyCQlmb28qYmFyCjEgMSBmb28vYmF6L2JhcgkJZm9vKipiYXIKMCAxIGZvby9iYXIJCWZvbz9iYXIKMCAxIGZvby9iYXIJCWZvb1svXWJhcgowIDEgZm9vL2JhcgkJZlteZWl1XVteZWl1XVteZWl1XVteZWl1XVteZWl1XXIKMSAxIGZvby1iYXIJCWZbXmVpdV1bXmVpdV1bXmVpdV1bXmVpdV1bXmVpdV1yCjAgMSBmb28JCQkqKi9mb28KMSAxIC9mb28JCSoqL2ZvbwoxIDEgYmFyL2Jhei9mb28JCSoqL2ZvbwowIDEgYmFyL2Jhei9mb28JCSovZm9vCjAgMCBmb28vYmFyL2JhegkJKiovYmFyKgoxIDEgZGVlcC9mb28vYmFyL2JhegkqKi9iYXIvKgowIDEgZGVlcC9mb28vYmFyL2Jhei8JKiovYmFyLyoKMSAxIGRlZXAvZm9vL2Jhci9iYXovCSoqL2Jhci8qKgowIDEgZGVlcC9mb28vYmFyCSoqL2Jhci8qCjEgMSBkZWVwL2Zvby9iYXIvCSoqL2Jhci8qKgoxIDEgZm9vL2Jhci9iYXoJCSoqL2JhcioqCjEgMSBmb28vYmFyL2Jhei94CSovYmFyLyoqCjAgMCBkZWVwL2Zvby9iYXIvYmF6L3gJKi9iYXIvKioKMSAxIGRlZXAvZm9vL2Jhci9iYXoveAkqKi9iYXIvKi8qCgojIFZhcmlvdXMgYWRkaXRpb25hbCB0ZXN0cwowIDEgYWNydAkJYVtjLWNdc3QKMSAxIGFjcnQJCWFbYy1jXXJ0CjAgMSBdCQkJWyFdLV0KMSAxIGEJCQlbIV0tXQowIDEgJycJCQlcCjAgMSBcCQkJXAowIDEgL1wJCQkqL1wKMSAxIC9cCQkJKi9cXAoxIDEgZm9vCQkJZm9vCjEgMSBAZm9vCQlAZm9vCjAgMSBmb28JCQlAZm9vCjEgMSBbYWJdCQlcW2FiXQoxIDEgW2FiXQkJW1tdYWJdCjEgMSBbYWJdCQlbWzpdYWJdCjAgMSBbYWJdCQlbWzo6XWFiXQoxIDEgW2FiXQkJW1s6ZGlnaXRdYWJdCjEgMSBbYWJdCQlbXFs6XWFiXQoxIDEgP2E/YgkJXD8/XD9iCjEgMSBhYmMJCQlcYVxiXGMKMCAxIGZvbwkJCScnCjEgMSBmb28vYmFyL2Jhei90bwkqKi90W29dCgojIENoYXJhY3RlciBjbGFzcyB0ZXN0cwoxIDEgYTFCCQlbWzphbHBoYTpdXVtbOmRpZ2l0Ol1dW1s6dXBwZXI6XV0KMCAxIGEJCVtbOmRpZ2l0Ol1bOnVwcGVyOl1bOnNwYWNlOl1dCjEgMSBBCQlbWzpkaWdpdDpdWzp1cHBlcjpdWzpzcGFjZTpdXQoxIDEgMQkJW1s6ZGlnaXQ6XVs6dXBwZXI6XVs6c3BhY2U6XV0KMCAxIDEJCVtbOmRpZ2l0Ol1bOnVwcGVyOl1bOnNwYWNpOl1dCjEgMSAnICcJCVtbOmRpZ2l0Ol1bOnVwcGVyOl1bOnNwYWNlOl1dCjAgMSAuCQlbWzpkaWdpdDpdWzp1cHBlcjpdWzpzcGFjZTpdXQoxIDEgLgkJW1s6ZGlnaXQ6XVs6cHVuY3Q6XVs6c3BhY2U6XV0KMSAxIDUJCVtbOnhkaWdpdDpdXQoxIDEgZgkJW1s6eGRpZ2l0Ol1dCjEgMSBECQlbWzp4ZGlnaXQ6XV0KMSAxIF8JCVtbOmFsbnVtOl1bOmFscGhhOl1bOmJsYW5rOl1bOmNudHJsOl1bOmRpZ2l0Ol1bOmdyYXBoOl1bOmxvd2VyOl1bOnByaW50Ol1bOnB1bmN0Ol1bOnNwYWNlOl1bOnVwcGVyOl1bOnhkaWdpdDpdXQojMSAxIIUJCVteWzphbG51bTpdWzphbHBoYTpdWzpibGFuazpdWzpjbnRybDpdWzpkaWdpdDpdWzpncmFwaDpdWzpsb3dlcjpdWzpwcmludDpdWzpwdW5jdDpdWzpzcGFjZTpdWzp1cHBlcjpdWzp4ZGlnaXQ6XV0KMSAxIH8JCVteWzphbG51bTpdWzphbHBoYTpdWzpibGFuazpdWzpkaWdpdDpdWzpncmFwaDpdWzpsb3dlcjpdWzpwcmludDpdWzpwdW5jdDpdWzpzcGFjZTpdWzp1cHBlcjpdWzp4ZGlnaXQ6XV0KMSAxIC4JCVteWzphbG51bTpdWzphbHBoYTpdWzpibGFuazpdWzpjbnRybDpdWzpkaWdpdDpdWzpsb3dlcjpdWzpzcGFjZTpdWzp1cHBlcjpdWzp4ZGlnaXQ6XV0KMSAxIDUJCVthLWNbOmRpZ2l0Ol14LXpdCjEgMSBiCQlbYS1jWzpkaWdpdDpdeC16XQoxIDEgeQkJW2EtY1s6ZGlnaXQ6XXgtel0KMCAxIHEJCVthLWNbOmRpZ2l0Ol14LXpdCgojIEFkZGl0aW9uYWwgdGVzdHMsIGluY2x1ZGluZyBzb21lIG1hbGZvcm1lZCB3aWxkbWF0cwoxIDEgXQkJW1xcLV5dCjAgMSBbCQlbXFwtXl0KMSAxIC0JCVtcLV9dCjEgMSBdCQlbXF1dCjAgMSBcXQkJW1xdXQowIDEgXAkJW1xdXQowIDEgYWIJCWFbXWIKMCAxIGFbXWIJYVtdYgowIDEgYWJbCQlhYlsKMCAxIGFiCQlbIQowIDEgYWIJCVstCjEgMSAtCQlbLV0KMCAxIC0JCVthLQowIDEgLQkJWyFhLQoxIDEgLQkJWy0tQV0KMSAxIDUJCVstLUFdCjEgMSAnICcJCSdbIC0tXScKMSAxICQJCSdbIC0tXScKMSAxIC0JCSdbIC0tXScKMCAxIDAJCSdbIC0tXScKMSAxIC0JCVstLS1dCjEgMSAtCQlbLS0tLS0tXQowIDEgagkJW2EtZS1uXQoxIDEgLQkJW2EtZS1uXQoxIDEgYQkJWyEtLS0tLS1dCjAgMSBbCQlbXS1hXQoxIDEgXgkJW10tYV0KMCAxIF4JCVshXS1hXQoxIDEgWwkJWyFdLWFdCjEgMSBeCQlbYV5iY10KMSAxIC1iXQkJW2EtXWJdCjAgMSBcCQlbXF0KMSAxIFwJCVtcXF0KMCAxIFwJCVshXFxdCjEgMSBHCQlbQS1cXF0KMCAxIGFhYWJiYgliKmEKMCAxIGFhYmNhYQkqYmEqCjEgMSAsCQlbLF0KMSAxICwJCVtcXCxdCjEgMSBcCQlbXFwsXQoxIDEgLQkJWywtLl0KMCAxICsJCVssLS5dCjAgMSAtLl0JCVssLS5dCjEgMSAyCQlbXDEtXDNdCjEgMSAzCQlbXDEtXDNdCjAgMSA0CQlbXDEtXDNdCjEgMSBcCQlbWy1cXV0KMSAxIFsJCVtbLVxdXQoxIDEgXQkJW1stXF1dCjAgMSAtCQlbWy1cXV0KCiMgVGVzdCByZWN1cnNpb24gYW5kIHRoZSBhYm9ydCBjb2RlICh1c2UgIndpbGR0ZXN0IC1pIiB0byBzZWUgaXRlcmF0aW9uIGNvdW50cykKMSAxIC1hZG9iZS1jb3VyaWVyLWJvbGQtby1ub3JtYWwtLTEyLTEyMC03NS03NS1tLTcwLWlzbzg4NTktMQktKi0qLSotKi0qLSotMTItKi0qLSotbS0qLSotKgowIDEgLWFkb2JlLWNvdXJpZXItYm9sZC1vLW5vcm1hbC0tMTItMTIwLTc1LTc1LVgtNzAtaXNvODg1OS0xCS0qLSotKi0qLSotKi0xMi0qLSotKi1tLSotKi0qCjAgMSAtYWRvYmUtY291cmllci1ib2xkLW8tbm9ybWFsLS0xMi0xMjAtNzUtNzUtLy03MC1pc284ODU5LTEJLSotKi0qLSotKi0qLTEyLSotKi0qLW0tKi0qLSoKMSAxIC9hZG9iZS9jb3VyaWVyL2JvbGQvby9ub3JtYWwvLzEyLzEyMC83NS83NS9tLzcwL2lzbzg4NTkvMQkvKi8qLyovKi8qLyovMTIvKi8qLyovbS8qLyovKgowIDEgL2Fkb2JlL2NvdXJpZXIvYm9sZC9vL25vcm1hbC8vMTIvMTIwLzc1Lzc1L1gvNzAvaXNvODg1OS8xCS8qLyovKi8qLyovKi8xMi8qLyovKi9tLyovKi8qCjEgMSBhYmNkL2FiY2RlZmcvYWJjZGVmZ2hpamsvYWJjZGVmZ2hpamtsbW5vcC50eHQJCSoqLyphKmIqZypuKnQKMCAxIGFiY2QvYWJjZGVmZy9hYmNkZWZnaGlqay9hYmNkZWZnaGlqa2xtbm9wLnR4dHoJCSoqLyphKmIqZypuKnQK